/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, EventEmitter, Output, ViewChild } from '@angular/core'; import { ModalDirective } from 'ngx-bootstrap'; import { AppConfigService } from '../app-config/app-config.service'; import { Request } from '../_services/request.service'; import { Common } from '../_services/common.service'; import { FormBuilder, Validators } from '@angular/forms'; import { CustomValidators } from 'ng2-validation'; import { DxDataGridComponent } from 'devextreme-angular'; import * as _ from 'lodash'; import { DateService } from '../_services/date.service'; import { UploadAttachmentComponent } from '../upload-attachment/upload-attachment.component'; import { B2bService } from '../_services/b2b.service'; var Options = /** @class */ (function () { function Options() { } return Options; }()); if (false) { /** * title ที่ต้องการแสดง * @type {?} */ Options.prototype.title; /** * data * @type {?} */ Options.prototype.data; } var ModalStepComponent = /** @class */ (function (_super) { tslib_1.__extends(ModalStepComponent, _super); function ModalStepComponent(appConfigService, request, formBuilder, common, date, b2bService) { var _this = _super.call(this) || this; _this.appConfigService = appConfigService; _this.request = request; _this.formBuilder = formBuilder; _this.common = common; _this.date = date; _this.b2bService = b2bService; _this.onUpdateModal = new EventEmitter(); _this.submitted = false; _this.submittedSend = false; _this.submittedRecieve = false; _this.title = ''; _this.selectList = []; _this.sendList = []; _this.recieveList = []; _this.modalConfig = { ignoreBackdropClick: true }; _this.selectedStep = null; _this.isMore = false; _this.stepData = {}; _this.sendData = {}; _this.recieveData = {}; _this.lastStep = ''; _this.isSend = false; _this.isRecieve = false; _this.isEditSend = false; _this.isEditRecieve = false; _this.tmpData = {}; _this.filteredDepartments = []; _this.departmentList = []; _this.departmentUrl = "/db/ct_ext_department"; _this.causeUrl = "/db/ct_dropdown"; _this.causeFilter = "system_id,eq,23)$and(dropdown_type,like,เรื่องส่งคืน"; _this.tempId = -1; _this.filter_ref_ext_department_id = false; _this.filter_ref_ext_department_id_show = true; _this.config = appConfigService.getConfig(); _this.attachmentUrl = _.get(_this.config, 'apiServers.alfresco.url') || "https://203.154.32.126:2585/api/mfec/Alfresco"; _this.system_id = _.get(_this.config, 'system_id'); return _this; } /** * @return {?} */ ModalStepComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.th = this.common.fnLocalPCalendar('th'); this.recieveForm = this.formBuilder.group({ book_no: ['', [Validators.required]], recv_date: [''], }); this.sendForm = this.formBuilder.group({ send_to: [''], book_no: [''], send_date: [''], is_important: [''], }); this.registerForm = this.formBuilder.group({ name: [''], step_id: ['', Validators.required], step_date: [''], remark: [''], lastStep: [''], moreField: this.formBuilder.array([]), soc_recv_no: [''], soc_recv_date: [''], gtc_recv_no: [''], gtc_recv_date: [''], book_no: [''], book_date: [''], 'for': [''], dept_name: [''], ministry: [''] }); }; /** * @param {?=} options * @return {?} */ ModalStepComponent.prototype.open = /** * @param {?=} options * @return {?} */ function (options) { return tslib_1.__awaiter(this, void 0, void 0, function () { var _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: console.log(options); this.stepData = {}; if (!options) return [3 /*break*/, 2]; this.title = options.title || ''; this.lastStep = options.data.lastStep; this.stepData = JSON.parse(JSON.stringify(options.data)); this.stepData.step_date = this.date.getNow(); delete this.stepData['lastStep']; _a = this; return [4 /*yield*/, this.request.get('/db/ct_step?_where=(category_id,eq,' + options.data.category_id + ')&_sort=seq_no')]; case 1: _a.selectList = _b.sent(); _b.label = 2; case 2: this.uploadAttachment.clearValue(); this.modal.show(); return [2 /*return*/]; } }); }); }; /** * @return {?} */ ModalStepComponent.prototype.f = /** * @return {?} */ function () { return this.registerForm.controls; }; /** * @return {?} */ ModalStepComponent.prototype.fs = /** * @return {?} */ function () { return this.sendForm.controls; }; /** * @return {?} */ ModalStepComponent.prototype.fr = /** * @return {?} */ function () { return this.recieveForm.controls; }; /** * @return {?} */ ModalStepComponent.prototype.closeModal = /** * @return {?} */ function () { this.submitted = false; this.selectList = []; this.sendList = []; this.selectedStep = null; this.isMore = false; this.isSend = false; this.moreField = []; this.stepData = {}; this.lastStep = ''; this.modal.hide(); }; /** * @return {?} */ ModalStepComponent.prototype.closeSendModal = /** * @return {?} */ function () { this.submittedSend = false; this.sendData = {}; this.isEditSend = false; this.tmpData = {}; this.sendModal.hide(); }; /** * @return {?} */ ModalStepComponent.prototype.closeRecieveModal = /** * @return {?} */ function () { this.submittedRecieve = false; this.recieveData = {}; this.isEditRecieve = false; this.tmpData = {}; this.recieveModal.hide(); }; /** * @param {?} modal * @return {?} */ ModalStepComponent.prototype.onYesClick = /** * @param {?} modal * @return {?} */ function (modal) { modal.hide(); }; /** * @param {?} modal * @return {?} */ ModalStepComponent.prototype.onNoClick = /** * @param {?} modal * @return {?} */ function (modal) { modal.hide(); }; /** * @param {?} $event * @return {?} */ ModalStepComponent.prototype.onHidden = /** * @param {?} $event * @return {?} */ function ($event) { console.log('LOG MESSAGE: ModalConfirm -> onHidden -> $event', $event); }; /** * @param {?} value * @return {?} */ ModalStepComponent.prototype.valueSeleteMinistry = /** * @param {?} value * @return {?} */ function (value) { var _this = this; this.filter_ref_ext_department_id_show = false; console.log('value', value); // this.stepData.ministry_id = value && value.id ? value.id : null if (value && value.id) { this.stepData.dept_name = null; this.filter_ref_ext_department_id = "&_where=(ref_ext_department_id,eq," + value.id + ")$and(type,in,2,3,4,5)"; } else { this.filter_ref_ext_department_id = false; } setTimeout(function () { _this.filter_ref_ext_department_id_show = true; }, 50); }; /** * @param {?} value * @return {?} */ ModalStepComponent.prototype.valueSeleteDeptName = /** * @param {?} value * @return {?} */ function (value) { console.log('value', value); this.stepData.code_dept = value && value.id ? value.id : null; }; /** * @return {?} */ ModalStepComponent.prototype.checkExtraField = /** * @return {?} */ function () { return tslib_1.__awaiter(this, void 0, void 0, function () { var i, flag, requireFlag, ct_step_flag, newField, _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: this.stepData.step_id = this.selectedStep.id; this.stepData.step_name = this.selectedStep.name; console.log(this.isMore); this.moreField = []; if (!(this.selectedStep.flag && this.selectedStep.flag !== '')) return [3 /*break*/, 6]; i = 0; _b.label = 1; case 1: if (!(i < this.selectedStep.flag.length)) return [3 /*break*/, 5]; flag = this.selectedStep.flag.charAt(i); requireFlag = this.selectedStep.require_flag ? this.selectedStep.require_flag.charAt(i) : 0; return [4 /*yield*/, this.request.get('/db/ct_step_flag?_where=(flag,eq,' + flag + ')')]; case 2: ct_step_flag = _b.sent(); newField = ct_step_flag[0]; return [4 /*yield*/, this.addField(newField, +requireFlag)]; case 3: _b.sent(); this.moreField.push(newField); console.log(this.f); _b.label = 4; case 4: i++; return [3 /*break*/, 1]; case 5: this.isMore = true; this.isSend = false; this.isRecieve = false; return [3 /*break*/, 9]; case 6: this.isMore = false; if (!(this.selectedStep.type_id === 8 || this.selectedStep.type_id === 13)) return [3 /*break*/, 8]; _a = this; return [4 /*yield*/, this.request.get('/db/ct_ext_department?_sort=name')]; case 7: _a.departmentList = _b.sent(); this.departmentList = this.departmentList.map(function (a) { return a.name; }); this.isSend = true; this.isRecieve = false; // } else if (this.selectedStep.type_id === 9 || this.selectedStep.type_id === 14) { // const data = await this.request.post('/sql/getLastSend', this.stepData); // if (data.resultData && data.resultData.length > 0) { // const ct_step_data_id = data.resultData[0].id; // const ct_sendList = await this.request.get('/db/ct_send?_where=(ct_step_data_id,eq,' + ct_step_data_id + ')'); // for (const ct_send of ct_sendList) { // const recvData: any = { // ct_send_id: ct_send.id, // send_book_no: ct_send.book_no, // send_date: ct_send.send_date, // recv_from: ct_send.send_to, // name: ct_send.name // }; // this.recieveList.push(recvData); // } // } // this.isRecieve = true; // this.isSend = false; return [3 /*break*/, 9]; case 8: this.isSend = false; this.isRecieve = false; _b.label = 9; case 9: return [2 /*return*/]; } }); }); }; /** * @param {?} data * @return {?} */ ModalStepComponent.prototype.getFieldId = /** * @param {?} data * @return {?} */ function (data) { /** @type {?} */ var id = ''; if (data.type === 'text') { id += 'txt'; } else if (data.type === 'datetime') { id += 'txt'; } else { id += 'txt'; } /** @type {?} */ var field = data.field_name.charAt(0).toLocaleUpperCase() + data.field_name.substring(1); id += field; return id; }; /** * @param {?} data * @param {?} required * @return {?} */ ModalStepComponent.prototype.addField = /** * @param {?} data * @param {?} required * @return {?} */ function (data, required) { /** @type {?} */ var control = /** @type {?} */ (this.registerForm.controls['moreField']); /** @type {?} */ var newgroup; this.stepData[data.field_name] = null; if (data.type === 'text') { if (required) { /** @type {?} */ var group = {}; group[data.field_name] = ['', Validators.required]; newgroup = this.formBuilder.group(group); } else { /** @type {?} */ var group = {}; group[data.field_name] = ['']; newgroup = this.formBuilder.group(group); } } else if (data.type === 'datetime') { if (required) { /** @type {?} */ var group = {}; group[data.field_name] = ['', Validators.required, CustomValidators.date]; newgroup = this.formBuilder.group(group); } else { /** @type {?} */ var group = {}; group[data.field_name] = ['']; newgroup = this.formBuilder.group(group); } this.stepData[data.field_name] = this.date.getNow(); } else if (data.type === 'number') { if (required) { /** @type {?} */ var group = {}; group[data.field_name] = [Validators.required]; newgroup = this.formBuilder.group(group); } else { /** @type {?} */ var group = {}; group[data.field_name] = ['']; newgroup = this.formBuilder.group(group); } } else if (data.type === 'special') { if (data.field_name === 'amount') { if (required) { /** @type {?} */ var group = {}; group[data.field_name] = ['', Validators.required]; group['amount_type'] = ['', Validators.required]; newgroup = this.formBuilder.group(group); } else { /** @type {?} */ var group = {}; group[data.field_name] = ['']; group['amount_type'] = ['']; newgroup = this.formBuilder.group(group); } } else if (data.field_name === 'follow') { if (required) { /** @type {?} */ var group = {}; group[data.field_name] = ['', Validators.required]; group['follow_remark'] = ['', Validators.required]; newgroup = this.formBuilder.group(group); } else { /** @type {?} */ var group = {}; group[data.field_name] = ['']; group['follow_remark'] = ['']; newgroup = this.formBuilder.group(group); } } else { if (required) { /** @type {?} */ var group = {}; group[data.field_name] = ['', Validators.required]; newgroup = this.formBuilder.group(group); } else { /** @type {?} */ var group = {}; group[data.field_name] = ['']; newgroup = this.formBuilder.group(group); } } } control.push(newgroup); }; /** * @param {?} i * @param {?} field * @param {?=} validateType * @return {?} */ ModalStepComponent.prototype.getValidateMoreField = /** * @param {?} i * @param {?} field * @param {?=} validateType * @return {?} */ function (i, field, validateType) { /** @type {?} */ var formMoreField = this.f()['moreField']; if (validateType) { formMoreField = formMoreField.controls[i]; formMoreField = formMoreField.controls[field]; if (formMoreField.errors) { return formMoreField.errors[validateType]; } else { return formMoreField.errors; } } else { return formMoreField.errors; } }; /** * @param {?} data * @return {?} */ ModalStepComponent.prototype.getRowIndex = /** * @param {?} data * @return {?} */ function (data) { if (!data.data) { return ''; } /** @type {?} */ var no = data.row.dataIndex + 1; return no; }; /** * @param {?} e * @return {?} */ ModalStepComponent.prototype.onCellPrepared = /** * @param {?} e * @return {?} */ function (e) { if (e.rowType === 'data') { for (var i in e.component.columns) { if (e.column.dataField === e.component.columns[i]) { e.cellElement.accessKey = e.component.columns[i]; } } } }; /** * @return {?} */ ModalStepComponent.prototype.addSend = /** * @return {?} */ function () { this.sendData.send_date = this.date.getNow(); this.sendModal.show(); }; /** * @param {?} data * @return {?} */ ModalStepComponent.prototype.editSend = /** * @param {?} data * @return {?} */ function (data) { this.tmpData = data; this.sendData = JSON.parse(JSON.stringify(data)); // this.sendData.send_date = new Date(this.sendData.send_date); this.isEditSend = true; this.sendModal.show(); }; /** * @param {?} data * @return {?} */ ModalStepComponent.prototype.editRecieve = /** * @param {?} data * @return {?} */ function (data) { this.tmpData = data; this.recieveData = JSON.parse(JSON.stringify(data)); this.recieveData.recv_date = this.recieveData.recv_date ? new Date(this.recieveData.recv_date) : this.recieveData.recv_date; this.isEditRecieve = true; this.recieveModal.show(); }; /** * @param {?} event * @return {?} */ ModalStepComponent.prototype.filterDepartments = /** * @param {?} event * @return {?} */ function (event) { this.filteredDepartments = []; for (var i = 0; i < this.departmentList.length; i++) { /** @type {?} */ var department = this.departmentList[i]; if (department.toLowerCase().indexOf(event.query.toLowerCase()) == 0) { this.filteredDepartments.push(department); } } }; /** * @return {?} */ ModalStepComponent.prototype.onSubmit = /** * @return {?} */ function () { return tslib_1.__awaiter(this, void 0, void 0, function () { var e_1, _a, e_2, _b, postData, data, userData, main, ct_send, ct_recieve, _c, _d, data_1, ct_recieve, _e, _f, data_2, postResponse, stepList; return tslib_1.__generator(this, function (_g) { switch (_g.label) { case 0: this.submitted = true; // ถ้า form ไม่ครบหรือผิดตามเงื่อนไขที่ตั้งไว้จะจบที่ตรงนี้ console.log('this.registerForm.invalid: ', this.registerForm.invalid); if (this.registerForm.invalid) { return [2 /*return*/]; } postData = []; data = _.cloneDeep(this.stepData); data.action = "add"; userData = this.b2bService.getVerifyToken(); data.username = userData.username; if (data.remind_date) data.remind_date = this.date.getNow().add(data.remind_date, 'd').toDate(); delete data["ct_main_id"]; delete data["update_date"]; main = { "ct_step_data": [data] }; postData.push(main); if (this.sendList && this.sendList.length > 0) { ct_send = { "ct_send": [] }; ct_recieve = { "ct_recieve": [] }; try { for (_c = tslib_1.__values(this.sendList), _d = _c.next(); !_d.done; _d = _c.next()) { data_1 = _d.value; data_1.name = data_1.name; data_1.action = "add"; delete data_1.id; ct_send.ct_send.push(data_1); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_d && !_d.done && (_a = _c.return)) _a.call(_c); } finally { if (e_1) throw e_1.error; } } postData.push(ct_send); } if (this.recieveList && this.recieveList.length > 0) { ct_recieve = { "ct_recieve": [] }; try { for (_e = tslib_1.__values(this.recieveList), _f = _e.next(); !_f.done; _f = _e.next()) { data_2 = _f.value; delete data_2['send_book_no']; delete data_2['send_date']; data_2.name = data_2.name; data_2.action = "add"; ct_recieve.ct_recieve.push(data_2); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_f && !_f.done && (_b = _e.return)) _b.call(_e); } finally { if (e_2) throw e_2.error; } } postData.push(ct_recieve); } console.log('postData', postData); return [4 /*yield*/, this.request.post("/ct/main", postData)]; case 1: postResponse = _g.sent(); if (!this.stepData.update_date) return [3 /*break*/, 5]; return [4 /*yield*/, this.getStepList()]; case 2: stepList = _g.sent(); console.log("stepList", stepList); if (!(stepList.length > 0)) return [3 /*break*/, 4]; return [4 /*yield*/, this.request.put("/db/" + this.stepData.ref_table + "/" + this.stepData.ref_id, { status: stepList[0].step_name, status_date: stepList[0].step_date })]; case 3: _g.sent(); this.common.fnCheckResponse(postResponse, this.myModal); _g.label = 4; case 4: return [3 /*break*/, 7]; case 5: return [4 /*yield*/, this.request.put("/db/" + this.stepData.ref_table + "/" + this.stepData.ref_id, { status: this.stepData.step_name })]; case 6: _g.sent(); this.common.fnCheckResponse(postResponse, this.myModal); _g.label = 7; case 7: // }else{ // this.onCreateModal.emit(postData); // } return [2 /*return*/]; } }); }); }; /** * @return {?} */ ModalStepComponent.prototype.getStepList = /** * @return {?} */ function () { return tslib_1.__awaiter(this, void 0, void 0, function () { var filter, data; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: console.log('getStepList'); filter = { filter: { ref_table: "=" + this.stepData.ref_table, ref_id: this.stepData.ref_id, system_id: this.stepData.system_id }, order_by: ["step_date desc"] }; return [4 /*yield*/, this.request.post('/search/ct_step_data', filter)]; case 1: data = _a.sent(); return [2 /*return*/, data.resultData || []]; } }); }); }; /** * @return {?} */ ModalStepComponent.prototype.onClickBack = /** * @return {?} */ function () { this.onUpdateModal.emit(); this.closeModal(); }; /** * @return {?} */ ModalStepComponent.prototype.onSubmitSend = /** * @return {?} */ function () { return tslib_1.__awaiter(this, void 0, void 0, function () { var e_3, _a, tmpList, _b, _c, tmpSend; return tslib_1.__generator(this, function (_d) { this.submittedSend = true; // ถ้า form ไม่ครบหรือผิดตามเงื่อนไขที่ตั้งไว้จะจบที่ตรงนี้ if (this.sendForm.invalid) { return [2 /*return*/]; } if (this.isEditSend) { tmpList = []; try { for (_b = tslib_1.__values(this.sendList), _c = _b.next(); !_c.done; _c = _b.next()) { tmpSend = _c.value; if (tmpSend.id === this.tmpData.id) { tmpList.push(this.sendData); } else { tmpList.push(tmpSend); } } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_3) throw e_3.error; } } this.sendList = tmpList; } else { this.sendData.id = this.tempId; this.tempId--; this.sendList.push(this.sendData); } this.closeSendModal(); return [2 /*return*/]; }); }); }; /** * @return {?} */ ModalStepComponent.prototype.onSubmitRecieve = /** * @return {?} */ function () { return tslib_1.__awaiter(this, void 0, void 0, function () { var e_4, _a, tmpList, _b, _c, tmpSend; return tslib_1.__generator(this, function (_d) { this.submittedSend = true; // ถ้า form ไม่ครบหรือผิดตามเงื่อนไขที่ตั้งไว้จะจบที่ตรงนี้ if (this.recieveForm.invalid) { return [2 /*return*/]; } if (this.isEditRecieve) { tmpList = []; try { for (_b = tslib_1.__values(this.recieveList), _c = _b.next(); !_c.done; _c = _b.next()) { tmpSend = _c.value; if (tmpSend.recv_from === this.tmpData.recv_from) { tmpList.push(this.recieveData); } else { tmpList.push(tmpSend); } } } catch (e_4_1) { e_4 = { error: e_4_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_4) throw e_4.error; } } this.recieveList = tmpList; } else { this.recieveList.push(this.recieveData); } this.closeRecieveModal(); return [2 /*return*/]; }); }); }; /** * @param {?} data * @return {?} */ ModalStepComponent.prototype.isImportant = /** * @param {?} data * @return {?} */ function (data) { return data.is_important ? "สำคัญ" : ""; }; /** * @param {?} data * @return {?} */ ModalStepComponent.prototype.onUploaded = /** * @param {?} data * @return {?} */ function (data) { this.stepData.url = this.attachmentUrl + '/' + data.uuid; this.stepData.uuid = data.uuid; }; /** * @param {?} field * @return {?} */ ModalStepComponent.prototype.checkDisable = /** * @param {?} field * @return {?} */ function (field) { if (this.stepData[field.field_name] !== 'ไม่ทางการ') { return true; } else { return false; } }; /** * @param {?} data * @return {?} */ ModalStepComponent.prototype.getImageLink = /** * @param {?} data * @return {?} */ function (data) { return tslib_1.__awaiter(this, void 0, void 0, function () { var url; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.request.getAttachmentLinkToken(data.url)]; case 1: url = _a.sent(); return [2 /*return*/, url]; } }); }); }; ModalStepComponent.decorators = [ { type: Component, args: [{ selector: 'modal-step', 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
Date is required
\n
Date is invalid
\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
* \u0E01\u0E23\u0E38\u0E13\u0E32\u0E01\u0E23\u0E2D\u0E01
\n
\n
\n
\n
\n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\u0E27\u0E31\u0E19
\n
\n
\n
* \u0E01\u0E23\u0E38\u0E13\u0E32\u0E01\u0E23\u0E2D\u0E01
\n
\n
\n
\n \n \n \n
\n
\n
\n\n
\n
\n
\n
\n \n \n
\n
* \u0E01\u0E23\u0E38\u0E13\u0E32\u0E01\u0E23\u0E2D\u0E01
\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
* \u0E01\u0E23\u0E38\u0E13\u0E32\u0E01\u0E23\u0E2D\u0E01
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E2A\u0E48\u0E07 :\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n {{getRowIndex(data)}}\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E23\u0E31\u0E1A :\n
\n \n
\n
\n \n \n \n \n \n \n \n \n
\n {{getRowIndex(data)}}\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
First Name is required
\n
\n
\n
\n
\n \n
\n \n
\n
First Name is required
\n
\n
\n
\n
\n \n
\n \n
\n
Date is required
\n
Date is invalid
\n
\n
\n
\n
\n \n \u0E2A\u0E33\u0E04\u0E31\u0E0D\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
First Name is required
\n
\n
\n
\n
\n \n
\n \n
\n
Date is required
\n
Date is invalid
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n\n" }] } ]; /** @nocollapse */ ModalStepComponent.ctorParameters = function () { return [ { type: AppConfigService }, { type: Request }, { type: FormBuilder }, { type: Common }, { type: DateService }, { type: B2bService } ]; }; ModalStepComponent.propDecorators = { onUpdateModal: [{ type: Output }], modal: [{ type: ViewChild, args: ['modal',] }], myModal: [{ type: ViewChild, args: ['myModal',] }], sendModal: [{ type: ViewChild, args: ['sendModal',] }], recieveModal: [{ type: ViewChild, args: ['recieveModal',] }], dxDataGridStepSendList: [{ type: ViewChild, args: ['dxDataGridStepSendList',] }], uploadAttachment: [{ type: ViewChild, args: ['uploadAttachment',] }] }; return ModalStepComponent; }(Options)); export { ModalStepComponent }; if (false) { /** @type {?} */ ModalStepComponent.prototype.onUpdateModal; /** @type {?} */ ModalStepComponent.prototype.modal; /** @type {?} */ ModalStepComponent.prototype.myModal; /** @type {?} */ ModalStepComponent.prototype.sendModal; /** @type {?} */ ModalStepComponent.prototype.recieveModal; /** @type {?} */ ModalStepComponent.prototype.dxDataGridStepSendList; /** @type {?} */ ModalStepComponent.prototype.uploadAttachment; /** @type {?} */ ModalStepComponent.prototype.registerForm; /** @type {?} */ ModalStepComponent.prototype.sendForm; /** @type {?} */ ModalStepComponent.prototype.recieveForm; /** @type {?} */ ModalStepComponent.prototype.submitted; /** @type {?} */ ModalStepComponent.prototype.submittedSend; /** @type {?} */ ModalStepComponent.prototype.submittedRecieve; /** @type {?} */ ModalStepComponent.prototype.title; /** @type {?} */ ModalStepComponent.prototype.selectList; /** @type {?} */ ModalStepComponent.prototype.sendList; /** @type {?} */ ModalStepComponent.prototype.recieveList; /** @type {?} */ ModalStepComponent.prototype.modalConfig; /** @type {?} */ ModalStepComponent.prototype.th; /** @type {?} */ ModalStepComponent.prototype.selectedStep; /** @type {?} */ ModalStepComponent.prototype.isMore; /** @type {?} */ ModalStepComponent.prototype.moreField; /** @type {?} */ ModalStepComponent.prototype.config; /** @type {?} */ ModalStepComponent.prototype.stepData; /** @type {?} */ ModalStepComponent.prototype.sendData; /** @type {?} */ ModalStepComponent.prototype.recieveData; /** @type {?} */ ModalStepComponent.prototype.lastStep; /** @type {?} */ ModalStepComponent.prototype.isSend; /** @type {?} */ ModalStepComponent.prototype.isRecieve; /** @type {?} */ ModalStepComponent.prototype.isEditSend; /** @type {?} */ ModalStepComponent.prototype.isEditRecieve; /** @type {?} */ ModalStepComponent.prototype.tmpData; /** @type {?} */ ModalStepComponent.prototype.filteredDepartments; /** @type {?} */ ModalStepComponent.prototype.departmentList; /** @type {?} */ ModalStepComponent.prototype.departmentUrl; /** @type {?} */ ModalStepComponent.prototype.causeUrl; /** @type {?} */ ModalStepComponent.prototype.causeFilter; /** @type {?} */ ModalStepComponent.prototype.tempId; /** @type {?} */ ModalStepComponent.prototype.attachmentUrl; /** @type {?} */ ModalStepComponent.prototype.system_id; /** @type {?} */ ModalStepComponent.prototype.filter_ref_ext_department_id; /** @type {?} */ ModalStepComponent.prototype.filter_ref_ext_department_id_show; /** @type {?} */ ModalStepComponent.prototype.appConfigService; /** @type {?} */ ModalStepComponent.prototype.request; /** @type {?} */ ModalStepComponent.prototype.formBuilder; /** @type {?} */ ModalStepComponent.prototype.common; /** @type {?} */ ModalStepComponent.prototype.date; /** @type {?} */ ModalStepComponent.prototype.b2bService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9zb2MtYXBwLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kYWwtc3RlcC9tb2RhbC1zdGVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUE0QixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBZSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUF3QixVQUFVLEVBQWtCLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzNGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRCxJQUFBOzs7a0JBZEE7SUFtQkMsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7SUFNdUMsOENBQU87SUFnRDNDLDRCQUFvQixnQkFBa0MsRUFBVSxPQUFnQixFQUFVLFdBQXdCLEVBQVMsTUFBYyxFQUFTLElBQWlCLEVBQVMsVUFBc0I7UUFBbE0sWUFDSSxpQkFBTyxTQUlWO1FBTG1CLHNCQUFnQixHQUFoQixnQkFBZ0IsQ0FB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LEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFDLEdBQUcsR0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7S0FDbEM7Ozs7O0lBQ0QseUNBQVk7Ozs7SUFBWixVQUFhLEtBQUs7UUFDZCxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFdBQVcsRUFBQztZQUMvQyxPQUFPLElBQUksQ0FBQztTQUNmO2FBQUk7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNoQjtLQUNKOzs7OztJQUVLLHlDQUFZOzs7O0lBQWxCLFVBQW1CLElBQUk7Ozs7OzRCQUNULHFCQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFBOzt3QkFBekQsR0FBRyxHQUFHLFNBQW1EO3dCQUM3RCxzQkFBTyxHQUFHLEVBQUM7Ozs7S0FDZDs7Z0JBamhCSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLG0zbERBQTBDO2lCQUM3Qzs7OztnQkF0Qk8sZ0JBQWdCO2dCQUNmLE9BQU87Z0JBRVIsV0FBVztnQkFEWCxNQUFNO2dCQU1OLFdBQVc7Z0JBRVgsVUFBVTs7O2dDQWNiLE1BQU07d0JBRU4sU0FBUyxTQUFDLE9BQU87MEJBQ2pCLFNBQVMsU0FBQyxTQUFTOzRCQUNuQixTQUFTLFNBQUMsV0FBVzsrQkFDckIsU0FBUyxTQUFDLGNBQWM7eUNBQ3hCLFNBQVMsU0FBQyx3QkFBd0I7bUNBRWxDLFNBQVMsU0FBQyxrQkFBa0I7OzZCQWxDakM7RUF5QndDLE9BQU87U0FBbEMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01vZGFsT3B0aW9ucywgTW9kYWxEaXJlY3RpdmV9IGZyb20gJ25neC1ib290c3RyYXAnO1xuaW1wb3J0IHtBcHBDb25maWdTZXJ2aWNlfSBmcm9tICcuLi9hcHAtY29uZmlnL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnLi4vX3NlcnZpY2VzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbn0gZnJvbSAnLi4vX3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1BcnJheSwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBBYnN0cmFjdENvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q3VzdG9tVmFsaWRhdG9yc30gZnJvbSAnbmcyLXZhbGlkYXRpb24nO1xuaW1wb3J0IHtEeERhdGFHcmlkQ29tcG9uZW50fSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7RGF0ZVNlcnZpY2V9IGZyb20gJy4uL19zZXJ2aWNlcy9kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHtVcGxvYWRBdHRhY2htZW50Q29tcG9uZW50fSBmcm9tICcuLi91cGxvYWQtYXR0YWNobWVudC91cGxvYWQtYXR0YWNobWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtCMmJTZXJ2aWNlfSBmcm9tICcuLi9fc2VydmljZXMvYjJiLnNlcnZpY2UnO1xuXG5jbGFzcyBPcHRpb25zIHtcbiAgICAvKiogdGl0bGUg4LiX4Li14LmI4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LmB4Liq4LiU4LiHICovXG4gICAgdGl0bGU/OiBTdHJpbmc7XG4gICAgLyoqIGRhdGEgKi9cbiAgICBkYXRhOiBhbnk7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbW9kYWwtc3RlcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFN0ZXBDb21wb25lbnQgZXh0ZW5kcyBPcHRpb25zIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAT3V0cHV0KCkgb25VcGRhdGVNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBAT3V0cHV0KCkgb25DcmVhdGVNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBNb2RhbERpcmVjdGl2ZTtcbiAgICBAVmlld0NoaWxkKCdteU1vZGFsJykgbXlNb2RhbDtcbiAgICBAVmlld0NoaWxkKCdzZW5kTW9kYWwnKSBzZW5kTW9kYWw6IE1vZGFsRGlyZWN0aXZlO1xuICAgIEBWaWV3Q2hpbGQoJ3JlY2lldmVNb2RhbCcpIHJlY2lldmVNb2RhbDogTW9kYWxEaXJlY3RpdmU7XG4gICAgQFZpZXdDaGlsZCgnZHhEYXRhR3JpZFN0ZXBTZW5kTGlzdCcpXG4gICAgZHhEYXRhR3JpZFN0ZXBTZW5kTGlzdDogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCd1cGxvYWRBdHRhY2htZW50JykgdXBsb2FkQXR0YWNobWVudDogVXBsb2FkQXR0YWNobWVudENvbXBvbmVudDtcblxuICAgIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwO1xuICAgIHNlbmRGb3JtOiBGb3JtR3JvdXA7XG4gICAgcmVjaWV2ZUZvcm06IEZvcm1Hcm91cDtcbiAgICBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICBzdWJtaXR0ZWRTZW5kID0gZmFsc2U7XG4gICAgc3VibWl0dGVkUmVjaWV2ZSA9IGZhbHNlO1xuICAgIHRpdGxlOiBhbnkgPSAnJztcbiAgICBzZWxlY3RMaXN0OiBhbnkgPSBbXTtcbiAgICBzZW5kTGlzdDogYW55ID0gW107XG4gICAgcmVjaWV2ZUxpc3Q6IGFueSA9IFtdO1xuICAgIG1vZGFsQ29uZmlnOiBNb2RhbE9wdGlvbnMgPSB7XG4gICAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWVcbiAgICB9O1xuICAgIHRoO1xuICAgIHNlbGVjdGVkU3RlcDogYW55ID0gbnVsbDtcbiAgICBpc01vcmUgPSBmYWxzZTtcbiAgICBtb3JlRmllbGQ6IGFueTtcbiAgICBwdWJsaWMgY29uZmlnOiBhbnk7XG4gICAgc3RlcERhdGE6IGFueSA9IHt9O1xuICAgIHNlbmREYXRhOiBhbnkgPSB7fTtcbiAgICByZWNpZXZlRGF0YTogYW55ID0ge307XG4gICAgbGFzdFN0ZXAgPSAnJztcbiAgICBpc1NlbmQgPSBmYWxzZTtcbiAgICBpc1JlY2lldmUgPSBmYWxzZTtcbiAgICBpc0VkaXRTZW5kID0gZmFsc2U7XG4gICAgaXNFZGl0UmVjaWV2ZSA9IGZhbHNlO1xuICAgIHRtcERhdGE6YW55ID0ge307XG4gICAgZmlsdGVyZWREZXBhcnRtZW50czphbnkgPSBbXTtcbiAgICBkZXBhcnRtZW50TGlzdDphbnkgPSBbXTtcbiAgICBkZXBhcnRtZW50VXJsID0gXCIvZGIvY3RfZXh0X2RlcGFydG1lbnRcIjtcbiAgICBjYXVzZVVybCA9IFwiL2RiL2N0X2Ryb3Bkb3duXCI7XG4gICAgY2F1c2VGaWx0ZXIgPSBcInN5c3RlbV9pZCxlcSwyMykkYW5kKGRyb3Bkb3duX3R5cGUsbGlrZSzguYDguKPguLfguYjguK3guIfguKrguYjguIfguITguLfguJlcIjtcbiAgICB0ZW1wSWQgPSAtMTtcbiAgICBhdHRhY2htZW50VXJsO1xuICAgIHN5c3RlbV9pZDtcbiAgICBmaWx0ZXJfcmVmX2V4dF9kZXBhcnRtZW50X2lkOiBhbnkgPSBmYWxzZTtcbiAgICBmaWx0ZXJfcmVmX2V4dF9kZXBhcnRtZW50X2lkX3Nob3cgPSB0cnVlO1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSwgcHJpdmF0ZSByZXF1ZXN0OiBSZXF1ZXN0LCBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHVibGljIGNvbW1vbjogQ29tbW9uLCBwdWJsaWMgZGF0ZTogRGF0ZVNlcnZpY2UsIHB1YmxpYyBiMmJTZXJ2aWNlOiBCMmJTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY29uZmlnID0gYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50VXJsID0gXy5nZXQodGhpcy5jb25maWcsICdhcGlTZXJ2ZXJzLmFsZnJlc2NvLnVybCcpIHx8IFwiaHR0cHM6Ly8yMDMuMTU0LjMyLjEyNjoyNTg1L2FwaS9tZmVjL0FsZnJlc2NvXCI7XG4gICAgICAgIHRoaXMuc3lzdGVtX2lkID0gXy5nZXQodGhpcy5jb25maWcsICdzeXN0ZW1faWQnKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50aCA9IHRoaXMuY29tbW9uLmZuTG9jYWxQQ2FsZW5kYXIoJ3RoJyk7XG4gICAgICAgIHRoaXMucmVjaWV2ZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGJvb2tfbm86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgIHJlY3ZfZGF0ZTogWycnXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VuZEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIHNlbmRfdG86IFsnJ10sXG4gICAgICAgICAgICBib29rX25vOiBbJyddLFxuICAgICAgICAgICAgc2VuZF9kYXRlOiBbJyddLFxuICAgICAgICAgICAgaXNfaW1wb3J0YW50OiBbJyddLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIG5hbWU6IFsnJ10sXG4gICAgICAgICAgICBzdGVwX2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgc3RlcF9kYXRlOiBbJyddLFxuICAgICAgICAgICAgcmVtYXJrOiBbJyddLFxuICAgICAgICAgICAgbGFzdFN0ZXA6IFsnJ10sXG4gICAgICAgICAgICBtb3JlRmllbGQ6IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pLFxuICAgICAgICAgICAgc29jX3JlY3Zfbm86IFsnJ10sXG4gICAgICAgICAgICBzb2NfcmVjdl9kYXRlOiBbJyddLFxuICAgICAgICAgICAgZ3RjX3JlY3Zfbm86IFsnJ10sXG4gICAgICAgICAgICBndGNfcmVjdl9kYXRlOiBbJyddLFxuICAgICAgICAgICAgYm9va19ubzogWycnXSxcbiAgICAgICAgICAgIGJvb2tfZGF0ZTogWycnXSxcbiAgICAgICAgICAgICdmb3InOiBbJyddLFxuICAgICAgICAgICAgZGVwdF9uYW1lOiBbJyddLFxuICAgICAgICAgICAgbWluaXN0cnk6IFsnJ11cblxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBvcGVuKG9wdGlvbnM/OiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnN0ZXBEYXRhID0ge307XG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gb3B0aW9ucy50aXRsZSB8fCAnJztcbiAgICAgICAgICAgIHRoaXMubGFzdFN0ZXAgPSBvcHRpb25zLmRhdGEubGFzdFN0ZXA7XG4gICAgICAgICAgICB0aGlzLnN0ZXBEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcHRpb25zLmRhdGEpKTtcbiAgICAgICAgICAgIHRoaXMuc3RlcERhdGEuc3RlcF9kYXRlID0gdGhpcy5kYXRlLmdldE5vdygpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuc3RlcERhdGFbJ2xhc3RTdGVwJ107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdExpc3QgPSBhd2FpdCB0aGlzLnJlcXVlc3QuZ2V0KCcvZGIvY3Rfc3RlcD9fd2hlcmU9KGNhdGVnb3J5X2lkLGVxLCcgKyBvcHRpb25zLmRhdGEuY2F0ZWdvcnlfaWQgKyAnKSZfc29ydD1zZXFfbm8nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwbG9hZEF0dGFjaG1lbnQuY2xlYXJWYWx1ZSgpO1xuICAgICAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgICB9XG5cbiAgICBmKCkgeyByZXR1cm4gdGhpcy5yZWdpc3RlckZvcm0uY29udHJvbHM7IH1cbiAgICBmcygpIHsgcmV0dXJuIHRoaXMuc2VuZEZvcm0uY29udHJvbHM7IH1cbiAgICBmcigpIHsgcmV0dXJuIHRoaXMucmVjaWV2ZUZvcm0uY29udHJvbHM7IH1cblxuICAgIGNsb3NlTW9kYWwoKSB7XG4gICAgICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0TGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnNlbmRMaXN0ID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdGVwID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc01vcmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1NlbmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb3JlRmllbGQgPSBbXTtcbiAgICAgICAgdGhpcy5zdGVwRGF0YSA9IHt9O1xuICAgICAgICB0aGlzLmxhc3RTdGVwID0gJyc7XG4gICAgICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICAgIH1cblxuICAgIGNsb3NlU2VuZE1vZGFsKCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZFNlbmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZW5kRGF0YSA9IHt9O1xuICAgICAgICB0aGlzLmlzRWRpdFNlbmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50bXBEYXRhID0ge307XG4gICAgICAgIHRoaXMuc2VuZE1vZGFsLmhpZGUoKTtcbiAgICB9XG5cbiAgICBjbG9zZVJlY2lldmVNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5zdWJtaXR0ZWRSZWNpZXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVjaWV2ZURhdGEgPSB7fTtcbiAgICAgICAgdGhpcy5pc0VkaXRSZWNpZXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG1wRGF0YSA9IHt9O1xuICAgICAgICB0aGlzLnJlY2lldmVNb2RhbC5oaWRlKCk7XG4gICAgfVxuXG4gICAgb25ZZXNDbGljayhtb2RhbCkge1xuICAgICAgICBtb2RhbC5oaWRlKCk7XG4gICAgfVxuXG4gICAgb25Ob0NsaWNrKG1vZGFsKSB7XG4gICAgICAgIG1vZGFsLmhpZGUoKTtcbiAgICB9XG5cbiAgICBvbkhpZGRlbigkZXZlbnQ6IE1vZGFsRGlyZWN0aXZlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdMT0cgTUVTU0FHRTogTW9kYWxDb25maXJtIC0+IG9uSGlkZGVuIC0+ICRldmVudCcsICRldmVudCk7XG5cbiAgICB9XG4gICAgXG4gICAgdmFsdWVTZWxldGVNaW5pc3RyeSh2YWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJfcmVmX2V4dF9kZXBhcnRtZW50X2lkX3Nob3cgPSBmYWxzZTtcbiAgICAgIGNvbnNvbGUubG9nKCd2YWx1ZScsIHZhbHVlKVxuICAgICAgLy8gdGhpcy5zdGVwRGF0YS5taW5pc3RyeV9pZCA9IHZhbHVlICYmIHZhbHVlLmlkID8gdmFsdWUuaWQgOiBudWxsXG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaWQpIHtcbiAgICAgICAgdGhpcy5zdGVwRGF0YS5kZXB0X25hbWUgPSBudWxsXG4gICAgICAgIHRoaXMuZmlsdGVyX3JlZl9leHRfZGVwYXJ0bWVudF9pZCA9IGAmX3doZXJlPShyZWZfZXh0X2RlcGFydG1lbnRfaWQsZXEsJHt2YWx1ZS5pZH0pJGFuZCh0eXBlLGluLDIsMyw0LDUpYFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWx0ZXJfcmVmX2V4dF9kZXBhcnRtZW50X2lkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJfcmVmX2V4dF9kZXBhcnRtZW50X2lkX3Nob3cgPSB0cnVlO1xuICAgICAgfSwgNTApXG5cbiAgICB9XG5cbiAgICB2YWx1ZVNlbGV0ZURlcHROYW1lKHZhbHVlKSB7XG4gICAgICBjb25zb2xlLmxvZygndmFsdWUnLCB2YWx1ZSlcbiAgICAgIHRoaXMuc3RlcERhdGEuY29kZV9kZXB0ID0gdmFsdWUgJiYgdmFsdWUuaWQgPyB2YWx1ZS5pZCA6IG51bGxcbiAgICB9XG5cblxuICAgIGFzeW5jIGNoZWNrRXh0cmFGaWVsZCgpIHtcbiAgICAgICAgdGhpcy5zdGVwRGF0YS5zdGVwX2lkID0gdGhpcy5zZWxlY3RlZFN0ZXAuaWQ7XG4gICAgICAgIHRoaXMuc3RlcERhdGEuc3RlcF9uYW1lID0gdGhpcy5zZWxlY3RlZFN0ZXAubmFtZTtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5pc01vcmUpO1xuICAgICAgICB0aGlzLm1vcmVGaWVsZCA9IFtdO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFN0ZXAuZmxhZyAmJiB0aGlzLnNlbGVjdGVkU3RlcC5mbGFnICE9PSAnJykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkU3RlcC5mbGFnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmxhZyA9IHRoaXMuc2VsZWN0ZWRTdGVwLmZsYWcuY2hhckF0KGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVGbGFnID0gdGhpcy5zZWxlY3RlZFN0ZXAucmVxdWlyZV9mbGFnID8gdGhpcy5zZWxlY3RlZFN0ZXAucmVxdWlyZV9mbGFnLmNoYXJBdChpKSA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgY3Rfc3RlcF9mbGFnID0gYXdhaXQgdGhpcy5yZXF1ZXN0LmdldCgnL2RiL2N0X3N0ZXBfZmxhZz9fd2hlcmU9KGZsYWcsZXEsJyArIGZsYWcgKyAnKScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gY3Rfc3RlcF9mbGFnWzBdO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRkRmllbGQobmV3RmllbGQsICtyZXF1aXJlRmxhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3JlRmllbGQucHVzaChuZXdGaWVsZCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXNNb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNTZW5kID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzUmVjaWV2ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc01vcmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkU3RlcC50eXBlX2lkID09PSA4IHx8IHRoaXMuc2VsZWN0ZWRTdGVwLnR5cGVfaWQgPT09IDEzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXBhcnRtZW50TGlzdCA9IGF3YWl0IHRoaXMucmVxdWVzdC5nZXQoJy9kYi9jdF9leHRfZGVwYXJ0bWVudD9fc29ydD1uYW1lJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXBhcnRtZW50TGlzdCA9IHRoaXMuZGVwYXJ0bWVudExpc3QubWFwKGEgPT4gYS5uYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1JlY2lldmUgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFN0ZXAudHlwZV9pZCA9PT0gOSB8fCB0aGlzLnNlbGVjdGVkU3RlcC50eXBlX2lkID09PSAxNCkge1xuICAgICAgICAgICAgLy8gICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnJlcXVlc3QucG9zdCgnL3NxbC9nZXRMYXN0U2VuZCcsIHRoaXMuc3RlcERhdGEpO1xuICAgICAgICAgICAgLy8gICAgIGlmIChkYXRhLnJlc3VsdERhdGEgJiYgZGF0YS5yZXN1bHREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc3QgY3Rfc3RlcF9kYXRhX2lkID0gZGF0YS5yZXN1bHREYXRhWzBdLmlkO1xuICAgICAgICAgICAgLy8gICAgICAgICBjb25zdCBjdF9zZW5kTGlzdCA9IGF3YWl0IHRoaXMucmVxdWVzdC5nZXQoJy9kYi9jdF9zZW5kP193aGVyZT0oY3Rfc3RlcF9kYXRhX2lkLGVxLCcgKyBjdF9zdGVwX2RhdGFfaWQgKyAnKScpO1xuICAgICAgICAgICAgLy8gICAgICAgICBmb3IgKGNvbnN0IGN0X3NlbmQgb2YgY3Rfc2VuZExpc3QpIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIGNvbnN0IHJlY3ZEYXRhOiBhbnkgPSB7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgY3Rfc2VuZF9pZDogY3Rfc2VuZC5pZCxcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICBzZW5kX2Jvb2tfbm86IGN0X3NlbmQuYm9va19ubyxcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICBzZW5kX2RhdGU6IGN0X3NlbmQuc2VuZF9kYXRlLFxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIHJlY3ZfZnJvbTogY3Rfc2VuZC5zZW5kX3RvLFxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIG5hbWU6IGN0X3NlbmQubmFtZVxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIHRoaXMucmVjaWV2ZUxpc3QucHVzaChyZWN2RGF0YSk7XG4gICAgICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAvLyAgICAgdGhpcy5pc1JlY2lldmUgPSB0cnVlO1xuICAgICAgICAgICAgLy8gICAgIHRoaXMuaXNTZW5kID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNTZW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1JlY2lldmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZpZWxkSWQoZGF0YSkge1xuICAgICAgICBsZXQgaWQgPSAnJztcbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICBpZCArPSAndHh0JztcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09ICdkYXRldGltZScpIHtcbiAgICAgICAgICAgIGlkICs9ICd0eHQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWQgKz0gJ3R4dCc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmllbGQgPSBkYXRhLmZpZWxkX25hbWUuY2hhckF0KDApLnRvTG9jYWxlVXBwZXJDYXNlKCkgKyBkYXRhLmZpZWxkX25hbWUuc3Vic3RyaW5nKDEpO1xuICAgICAgICBpZCArPSBmaWVsZDtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIGFkZEZpZWxkKGRhdGEsIHJlcXVpcmVkKSB7XG4gICAgICAgIGxldCBjb250cm9sOmFueSA9IDxGb3JtQXJyYXk+dGhpcy5yZWdpc3RlckZvcm0uY29udHJvbHNbJ21vcmVGaWVsZCddO1xuICAgICAgICBsZXQgbmV3Z3JvdXA7XG4gICAgICAgIHRoaXMuc3RlcERhdGFbZGF0YS5maWVsZF9uYW1lXSA9IG51bGw7XG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGdyb3VwW2RhdGEuZmllbGRfbmFtZV0gPSBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xuICAgICAgICAgICAgICAgIG5ld2dyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cChncm91cCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwOiBhbnkgPSB7fTtcbiAgICAgICAgICAgICAgICBncm91cFtkYXRhLmZpZWxkX25hbWVdID0gWycnXTtcbiAgICAgICAgICAgICAgICBuZXdncm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PT0gJ2RhdGV0aW1lJykge1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGdyb3VwW2RhdGEuZmllbGRfbmFtZV0gPSBbJycsVmFsaWRhdG9ycy5yZXF1aXJlZCwgQ3VzdG9tVmFsaWRhdG9ycy5kYXRlXTtcbiAgICAgICAgICAgICAgICBuZXdncm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZ3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cDogYW55ID0ge307XG4gICAgICAgICAgICAgICAgZ3JvdXBbZGF0YS5maWVsZF9uYW1lXSA9IFsnJ107XG4gICAgICAgICAgICAgICAgbmV3Z3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RlcERhdGFbZGF0YS5maWVsZF9uYW1lXSA9IHRoaXMuZGF0ZS5nZXROb3coKTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cDogYW55ID0ge307XG4gICAgICAgICAgICAgICAgZ3JvdXBbZGF0YS5maWVsZF9uYW1lXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgICAgICAgICBuZXdncm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZ3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cDogYW55ID0ge307XG4gICAgICAgICAgICAgICAgZ3JvdXBbZGF0YS5maWVsZF9uYW1lXSA9IFsnJ107XG4gICAgICAgICAgICAgICAgbmV3Z3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT09ICdzcGVjaWFsJyl7XG4gICAgICAgICAgICBpZihkYXRhLmZpZWxkX25hbWUgPT09ICdhbW91bnQnKXtcbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBncm91cFtkYXRhLmZpZWxkX25hbWVdID0gWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBbJ2Ftb3VudF90eXBlJ10gPSBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xuICAgICAgICAgICAgICAgICAgICBuZXdncm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZ3JvdXApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwOiBhbnkgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBbZGF0YS5maWVsZF9uYW1lXSA9IFsnJ107XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwWydhbW91bnRfdHlwZSddID0gWycnXTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Z3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGdyb3VwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZSBpZihkYXRhLmZpZWxkX25hbWUgPT09ICdmb2xsb3cnKXtcbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBncm91cFtkYXRhLmZpZWxkX25hbWVdID0gWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBbJ2ZvbGxvd19yZW1hcmsnXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gICAgICAgICAgICAgICAgICAgIG5ld2dyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cChncm91cCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBncm91cFtkYXRhLmZpZWxkX25hbWVdID0gWycnXTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBbJ2ZvbGxvd19yZW1hcmsnXSA9IFsnJ107XG4gICAgICAgICAgICAgICAgICAgIG5ld2dyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cChncm91cCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwOiBhbnkgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBbZGF0YS5maWVsZF9uYW1lXSA9IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gICAgICAgICAgICAgICAgICAgIG5ld2dyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cChncm91cCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBncm91cFtkYXRhLmZpZWxkX25hbWVdID0gWycnXTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Z3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGdyb3VwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250cm9sLnB1c2gobmV3Z3JvdXApO1xuICAgIH1cblxuICAgIGdldFZhbGlkYXRlTW9yZUZpZWxkKGksIGZpZWxkLCB2YWxpZGF0ZVR5cGU/KSB7XG4gICAgICAgIGxldCBmb3JtTW9yZUZpZWxkOiBhbnkgPSB0aGlzLmYoKVsnbW9yZUZpZWxkJ107XG4gICAgICAgIGlmICh2YWxpZGF0ZVR5cGUpIHtcbiAgICAgICAgICAgIGZvcm1Nb3JlRmllbGQgPSBmb3JtTW9yZUZpZWxkLmNvbnRyb2xzW2ldO1xuICAgICAgICAgICAgZm9ybU1vcmVGaWVsZCA9IGZvcm1Nb3JlRmllbGQuY29udHJvbHNbZmllbGRdO1xuICAgICAgICAgICAgaWYgKGZvcm1Nb3JlRmllbGQuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1Nb3JlRmllbGQuZXJyb3JzW3ZhbGlkYXRlVHlwZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtTW9yZUZpZWxkLmVycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtTW9yZUZpZWxkLmVycm9ycztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFJvd0luZGV4KGRhdGEpIHtcbiAgICAgICAgaWYgKCFkYXRhLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBubyA9IGRhdGEucm93LmRhdGFJbmRleCArIDE7XG4gICAgICAgIHJldHVybiBubztcbiAgICB9XG5cbiAgICBvbkNlbGxQcmVwYXJlZChlKSB7XG4gICAgICAgIGlmIChlLnJvd1R5cGUgPT09ICdkYXRhJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpIGluIGUuY29tcG9uZW50LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS5jb2x1bW4uZGF0YUZpZWxkID09PSBlLmNvbXBvbmVudC5jb2x1bW5zW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIGUuY2VsbEVsZW1lbnQuYWNjZXNzS2V5ID0gZS5jb21wb25lbnQuY29sdW1uc1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRTZW5kKCl7XG4gICAgICAgIHRoaXMuc2VuZERhdGEuc2VuZF9kYXRlID0gdGhpcy5kYXRlLmdldE5vdygpO1xuICAgICAgICB0aGlzLnNlbmRNb2RhbC5zaG93KCk7XG4gICAgfVxuXG4gICAgZWRpdFNlbmQoZGF0YSkge1xuICAgICAgICB0aGlzLnRtcERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLnNlbmREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIC8vIHRoaXMuc2VuZERhdGEuc2VuZF9kYXRlID0gbmV3IERhdGUodGhpcy5zZW5kRGF0YS5zZW5kX2RhdGUpO1xuICAgICAgICB0aGlzLmlzRWRpdFNlbmQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbmRNb2RhbC5zaG93KCk7XG4gICAgfVxuXG4gICAgZWRpdFJlY2lldmUoZGF0YSkge1xuICAgICAgICB0aGlzLnRtcERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLnJlY2lldmVEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHRoaXMucmVjaWV2ZURhdGEucmVjdl9kYXRlID0gdGhpcy5yZWNpZXZlRGF0YS5yZWN2X2RhdGUgPyBuZXcgRGF0ZSh0aGlzLnJlY2lldmVEYXRhLnJlY3ZfZGF0ZSkgOiB0aGlzLnJlY2lldmVEYXRhLnJlY3ZfZGF0ZTtcbiAgICAgICAgdGhpcy5pc0VkaXRSZWNpZXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZWNpZXZlTW9kYWwuc2hvdygpO1xuICAgIH1cblxuICAgIGZpbHRlckRlcGFydG1lbnRzKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWREZXBhcnRtZW50cyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGVwYXJ0bWVudExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGRlcGFydG1lbnQgPSB0aGlzLmRlcGFydG1lbnRMaXN0W2ldO1xuICAgICAgICAgICAgaWYgKGRlcGFydG1lbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKGV2ZW50LnF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkRGVwYXJ0bWVudHMucHVzaChkZXBhcnRtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG9uU3VibWl0KCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIC8vIOC4luC5ieC4siBmb3JtIOC5hOC4oeC5iOC4hOC4o+C4muC4q+C4o+C4t+C4reC4nOC4tOC4lOC4leC4suC4oeC5gOC4h+C4t+C5iOC4reC4meC5hOC4guC4l+C4teC5iOC4leC4seC5ieC4h+C5hOC4p+C5ieC4iOC4sOC4iOC4muC4l+C4teC5iOC4leC4o+C4h+C4meC4teC5iVxuICAgICAgICBjb25zb2xlLmxvZygndGhpcy5yZWdpc3RlckZvcm0uaW52YWxpZDogJywgdGhpcy5yZWdpc3RlckZvcm0uaW52YWxpZCk7XG4gICAgICAgIGlmICh0aGlzLnJlZ2lzdGVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBvc3REYXRhID0gW107XG4gICAgICAgIGxldCBkYXRhID0gXy5jbG9uZURlZXAodGhpcy5zdGVwRGF0YSk7XG4gICAgICAgIGRhdGEuYWN0aW9uID0gXCJhZGRcIjtcbiAgICAgICAgbGV0IHVzZXJEYXRhOmFueSA9IHRoaXMuYjJiU2VydmljZS5nZXRWZXJpZnlUb2tlbigpO1xuICAgICAgICBkYXRhLnVzZXJuYW1lID0gdXNlckRhdGEudXNlcm5hbWU7XG4gICAgICAgIGlmKGRhdGEucmVtaW5kX2RhdGUpIGRhdGEucmVtaW5kX2RhdGUgPSB0aGlzLmRhdGUuZ2V0Tm93KCkuYWRkKGRhdGEucmVtaW5kX2RhdGUsICdkJykudG9EYXRlKCk7XG4gICAgICAgIGRlbGV0ZSBkYXRhW1wiY3RfbWFpbl9pZFwiXTtcbiAgICAgICAgZGVsZXRlIGRhdGFbXCJ1cGRhdGVfZGF0ZVwiXTtcbiAgICAgICAgbGV0IG1haW4gPSB7XG4gICAgICAgICAgICBcImN0X3N0ZXBfZGF0YVwiOltkYXRhXVxuICAgICAgICB9XG4gICAgICAgIHBvc3REYXRhLnB1c2gobWFpbik7XG4gICAgICAgIGlmKHRoaXMuc2VuZExpc3QgJiYgdGhpcy5zZW5kTGlzdC5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIGxldCBjdF9zZW5kID0ge1xuICAgICAgICAgICAgICAgIFwiY3Rfc2VuZFwiOltdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGN0X3JlY2lldmUgPSB7XG4gICAgICAgICAgICAgICAgXCJjdF9yZWNpZXZlXCI6W11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IobGV0IGRhdGEgb2YgdGhpcy5zZW5kTGlzdCl7XG4gICAgICAgICAgICAgICAgZGF0YS5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgICAgICAgICAgIGRhdGEuYWN0aW9uID0gXCJhZGRcIjtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YS5pZDtcbiAgICAgICAgICAgICAgICBjdF9zZW5kLmN0X3NlbmQucHVzaChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvc3REYXRhLnB1c2goY3Rfc2VuZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy5yZWNpZXZlTGlzdCAmJiB0aGlzLnJlY2lldmVMaXN0Lmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgbGV0IGN0X3JlY2lldmUgPSB7XG4gICAgICAgICAgICAgICAgXCJjdF9yZWNpZXZlXCI6W11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IobGV0IGRhdGEgb2YgdGhpcy5yZWNpZXZlTGlzdCl7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFbJ3NlbmRfYm9va19ubyddO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhWydzZW5kX2RhdGUnXTtcbiAgICAgICAgICAgICAgICBkYXRhLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgICAgICAgICAgICAgZGF0YS5hY3Rpb24gPSBcImFkZFwiO1xuICAgICAgICAgICAgICAgIGN0X3JlY2lldmUuY3RfcmVjaWV2ZS5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9zdERhdGEucHVzaChjdF9yZWNpZXZlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygncG9zdERhdGEnLHBvc3REYXRhKTtcbiAgICAgICAgLy8gaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xuICAgICAgICBsZXQgcG9zdFJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0LnBvc3QoXCIvY3QvbWFpblwiLHBvc3REYXRhKTtcbiAgICAgICAgaWYodGhpcy5zdGVwRGF0YS51cGRhdGVfZGF0ZSl7XG4gICAgICAgICAgbGV0IHN0ZXBMaXN0ID0gYXdhaXQgdGhpcy5nZXRTdGVwTGlzdCgpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwic3RlcExpc3RcIixzdGVwTGlzdClcbiAgICAgICAgICBpZihzdGVwTGlzdC5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdC5wdXQoXCIvZGIvXCIrdGhpcy5zdGVwRGF0YS5yZWZfdGFibGUrXCIvXCIrdGhpcy5zdGVwRGF0YS5yZWZfaWQse3N0YXR1czpzdGVwTGlzdFswXS5zdGVwX25hbWUsc3RhdHVzX2RhdGU6c3RlcExpc3RbMF0uc3RlcF9kYXRlfSk7XG4gICAgICAgICAgICB0aGlzLmNvbW1vbi5mbkNoZWNrUmVzcG9uc2UocG9zdFJlc3BvbnNlLCB0aGlzLm15TW9kYWwpXG4gICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJlcXVlc3QucHV0KFwiL2RiL1wiK3RoaXMuc3RlcERhdGEucmVmX3RhYmxlK1wiL1wiK3RoaXMuc3RlcERhdGEucmVmX2lkLHtzdGF0dXM6dGhpcy5zdGVwRGF0YS5zdGVwX25hbWV9KTtcbiAgICAgICAgICB0aGlzLmNvbW1vbi5mbkNoZWNrUmVzcG9uc2UocG9zdFJlc3BvbnNlLCB0aGlzLm15TW9kYWwpXG4gICAgICAgIH1cblxuICAgICAgICAvLyB9ZWxzZXtcbiAgICAgICAgLy8gICAgIHRoaXMub25DcmVhdGVNb2RhbC5lbWl0KHBvc3REYXRhKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIGFzeW5jIGdldFN0ZXBMaXN0KCkge1xuICAgICAgICBjb25zb2xlLmxvZygnZ2V0U3RlcExpc3QnKTtcbiAgICAgICAgbGV0IGZpbHRlciA9IHtcbiAgICAgICAgICAgIGZpbHRlcjp7XG4gICAgICAgICAgICAgICAgcmVmX3RhYmxlOlwiPVwiK3RoaXMuc3RlcERhdGEucmVmX3RhYmxlLFxuICAgICAgICAgICAgICAgIHJlZl9pZDp0aGlzLnN0ZXBEYXRhLnJlZl9pZCxcbiAgICAgICAgICAgICAgICBzeXN0ZW1faWQ6dGhpcy5zdGVwRGF0YS5zeXN0ZW1faWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcmRlcl9ieTpbXCJzdGVwX2RhdGUgZGVzY1wiXVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnJlcXVlc3QucG9zdCgnL3NlYXJjaC9jdF9zdGVwX2RhdGEnLCBmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gZGF0YS5yZXN1bHREYXRhIHx8IFtdO1xuICAgIH1cblxuXG4gICAgb25DbGlja0JhY2soKXtcbiAgICAgICAgdGhpcy5vblVwZGF0ZU1vZGFsLmVtaXQoKTtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25TdWJtaXRTZW5kKCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZFNlbmQgPSB0cnVlO1xuICAgICAgICAvLyDguJbguYnguLIgZm9ybSDguYTguKHguYjguITguKPguJrguKvguKPguLfguK3guJzguLTguJTguJXguLLguKHguYDguIfguLfguYjguK3guJnguYTguILguJfguLXguYjguJXguLHguYnguIfguYTguKfguYnguIjguLDguIjguJrguJfguLXguYjguJXguKPguIfguJnguLXguYlcbiAgICAgICAgaWYgKHRoaXMuc2VuZEZvcm0uaW52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdFNlbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRtcExpc3QgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdG1wU2VuZCBvZiB0aGlzLnNlbmRMaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRtcFNlbmQuaWQgPT09IHRoaXMudG1wRGF0YS5pZCkge1xuICAgICAgICAgICAgICAgICAgICB0bXBMaXN0LnB1c2godGhpcy5zZW5kRGF0YSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdG1wTGlzdC5wdXNoKHRtcFNlbmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VuZExpc3QgPSB0bXBMaXN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZW5kRGF0YS5pZCA9IHRoaXMudGVtcElkO1xuICAgICAgICAgICAgdGhpcy50ZW1wSWQtLTtcbiAgICAgICAgICAgIHRoaXMuc2VuZExpc3QucHVzaCh0aGlzLnNlbmREYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlU2VuZE1vZGFsKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25TdWJtaXRSZWNpZXZlKCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZFNlbmQgPSB0cnVlO1xuXG4gICAgICAgIC8vIOC4luC5ieC4siBmb3JtIOC5hOC4oeC5iOC4hOC4o+C4muC4q+C4o+C4t+C4reC4nOC4tOC4lOC4leC4suC4oeC5gOC4h+C4t+C5iOC4reC4meC5hOC4guC4l+C4teC5iOC4leC4seC5ieC4h+C5hOC4p+C5ieC4iOC4sOC4iOC4muC4l+C4teC5iOC4leC4o+C4h+C4meC4teC5iVxuICAgICAgICBpZiAodGhpcy5yZWNpZXZlRm9ybS5pbnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0UmVjaWV2ZSkge1xuICAgICAgICAgICAgY29uc3QgdG1wTGlzdCA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0bXBTZW5kIG9mIHRoaXMucmVjaWV2ZUxpc3QpIHtcbiAgICAgICAgICAgICAgICBpZiAodG1wU2VuZC5yZWN2X2Zyb20gPT09IHRoaXMudG1wRGF0YS5yZWN2X2Zyb20pIHtcbiAgICAgICAgICAgICAgICAgICAgdG1wTGlzdC5wdXNoKHRoaXMucmVjaWV2ZURhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRtcExpc3QucHVzaCh0bXBTZW5kKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlY2lldmVMaXN0ID0gdG1wTGlzdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVjaWV2ZUxpc3QucHVzaCh0aGlzLnJlY2lldmVEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlUmVjaWV2ZU1vZGFsKCk7XG4gICAgfVxuICAgIGlzSW1wb3J0YW50KGRhdGEpe1xuICAgICAgICByZXR1cm4gZGF0YS5pc19pbXBvcnRhbnQ/XCLguKrguLPguITguLHguI1cIjpcIlwiO1xuICAgIH1cbiAgICBvblVwbG9hZGVkKGRhdGEpe1xuICAgICAgICB0aGlzLnN0ZXBEYXRhLnVybCA9IHRoaXMuYXR0YWNobWVudFVybCsnLycrZGF0YS51dWlkO1xuICAgICAgICB0aGlzLnN0ZXBEYXRhLnV1aWQgPSBkYXRhLnV1aWQ7XG4gICAgfVxuICAgIGNoZWNrRGlzYWJsZShmaWVsZCl7XG4gICAgICAgIGlmKHRoaXMuc3RlcERhdGFbZmllbGQuZmllbGRfbmFtZV0gIT09ICfguYTguKHguYjguJfguLLguIfguIHguLLguKMnKXtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdldEltYWdlTGluayhkYXRhKXtcbiAgICAgICAgbGV0IHVybCA9IGF3YWl0IHRoaXMucmVxdWVzdC5nZXRBdHRhY2htZW50TGlua1Rva2VuKGRhdGEudXJsKTtcbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG59XG4iXX0=