UNPKG

sl-questionnaire

Version:
131 lines 20.5 kB
import { __awaiter, __decorate, __generator } from "tslib"; import { Component, Input, ViewChild } from '@angular/core'; import { FormArray, FormBuilder, FormControl, FormGroup, Validators, } from '@angular/forms'; import { ModalTemplate, SuiModalService, TemplateModalConfig, } from 'ng2-semantic-ui-v9'; import { SlTranslateService } from '../services/translate.service'; import * as _ from 'lodash-es'; import { SlUtilsService } from '../services/utils.service'; var MatrixQuestionsComponent = /** @class */ (function () { function MatrixQuestionsComponent(translate, modalService, fb, utils) { this.translate = translate; this.modalService = modalService; this.fb = fb; this.utils = utils; } MatrixQuestionsComponent.prototype.ngOnInit = function () { var _this = this; this.addText = this.translate['frmelmnts'].btn.add; this.submitText = this.translate['frmelmnts'].btn.submit; this.cancelText = this.translate['frmelmnts'].btn.cancel; setTimeout(function () { _this.matrixForm = _this.fb.group({}, Validators.required); _this.questionnaireForm.addControl(_this.question._id, new FormArray([], [Validators.required])); _this.initializeMatrix(); }); }; MatrixQuestionsComponent.prototype.initializeMatrix = function () { var _this = this; var valid = true; if (this.question.value.length) { this.question.value.map(function (v) { var obj = {}; v.forEach(function (ques) { if (!ques.value) return; obj[ques._id] = ques.value; }); _this.questionnaireForm.controls[_this.question._id].push(new FormControl(obj)); if (_.isEmpty(obj)) { valid = false; } }); } if (!valid) this.questionnaireForm.controls[this.question._id].setErrors({ err: 'Matrix reposne not valid', }); }; MatrixQuestionsComponent.prototype.addInstances = function () { this.question.value = this.question.value ? this.question.value : []; this.question.value.push(JSON.parse(JSON.stringify(this.question.instanceQuestions))); this.matrixForm.reset(); this.formAsArray.push(new FormControl([], [Validators.required])); }; MatrixQuestionsComponent.prototype.viewInstance = function (i) { this.matrixForm.reset(); if (this.formAsArray.controls[i].value) { this.matrixForm.patchValue(this.formAsArray.controls[i].value); } var config = new TemplateModalConfig(this.modalTemplate); config.closeResult = 'closed!'; config.context = { questions: this.question.value[i], heading: this.question.instanceIdentifier + " " + (i + 1), index: i, }; this.context = config.context; this.showBadgeAssingModel = true; }; Object.defineProperty(MatrixQuestionsComponent.prototype, "formAsArray", { get: function () { return this.questionnaireForm.controls[this.question._id]; }, enumerable: true, configurable: true }); MatrixQuestionsComponent.prototype.matrixSubmit = function (index) { this.showBadgeAssingModel = false; this.formAsArray.at(index).patchValue(this.matrixForm.value); if (this.matrixForm.invalid) { this.formAsArray.at(index).setErrors({ err: 'Matrix reposne not valid' }); } }; MatrixQuestionsComponent.prototype.deleteInstanceAlert = function (index) { return __awaiter(this, void 0, void 0, function () { var alertMeta, accepted; return __generator(this, function (_a) { alertMeta = { title: this.translate['frmelmnts'].alert.uploadTermsRejected, size: 'mini', bodyType: 'text', data: this.translate['frmelmnts'].lbl.deleteSubmission, buttonClass: 'double-btn', acceptText: this.translate['frmelmnts'].btn.yes, cancelText: this.translate['frmelmnts'].btn.no, }; accepted = this.utils.alert(alertMeta); if (!accepted) { return [2 /*return*/]; } this.question.value.splice(index, 1); this.questionnaireForm.controls[this.question._id].removeAt(index); return [2 /*return*/]; }); }); }; MatrixQuestionsComponent.ctorParameters = function () { return [ { type: SlTranslateService }, { type: SuiModalService }, { type: FormBuilder }, { type: SlUtilsService } ]; }; __decorate([ Input() ], MatrixQuestionsComponent.prototype, "questionnaireForm", void 0); __decorate([ Input() ], MatrixQuestionsComponent.prototype, "question", void 0); __decorate([ ViewChild('modalTemplate') ], MatrixQuestionsComponent.prototype, "modalTemplate", void 0); MatrixQuestionsComponent = __decorate([ Component({ selector: 'sl-matrix-questions', template: "<div class=\"d-flex flex-jc-flex-end\">\n <button class=\"sb-btn sb-btn-normal sb-btn-primary\" (click)=\"addInstances()\">\n {{ addText }}\n {{ question?.instanceIdentifier }}\n </button>\n</div>\n<div\n class=\"ui card student-card\"\n *ngFor=\"let instance of question?.value; let i = index\"\n>\n <div class=\"content flex-jc-space-between\">\n <div (click)=\"viewInstance(i)\" style=\"flex: 1\">\n <span> {{ question?.instanceIdentifier }} {{ i + 1 }}</span>\n <!-- <span class=\"modified\" *ngIf=\"getLastModified(instance)\"\n >Last Modified {{ \"todo\" }}</span\n > -->\n <!-- todo -->\n </div>\n <div>\n <i class=\"trash large icon\" (click)=\"deleteInstanceAlert(i)\"></i>\n </div>\n </div>\n</div>\n\n<sui-modal\n [mustScroll]=\"true\"\n [isClosable]=\"true\"\n [transitionDuration]=\"0\"\n [size]=\"'normal'\"\n class=\"sb-modal\"\n appBodyScroll\n (dismissed)=\"showBadgeAssingModel = false\"\n *ngIf=\"showBadgeAssingModel\"\n #modal\n>\n <!--Header-->\n <div class=\"sb-modal-header\">\n {{ context?.heading }}\n </div>\n <!--/Header-->\n <!--Content-->\n <div class=\"sb-modal-content\">\n <sl-input\n [questions]=\"context.questions\"\n [questionnaireForm]=\"matrixForm\"\n ></sl-input>\n </div>\n <!--/Content-->\n\n <!--Actions-->\n <div class=\"sb-modal-actions\">\n <button\n [disabled]=\"!matrixForm?.valid\"\n type=\"button\"\n (click)=\"matrixSubmit(context.index)\"\n [ngClass]=\"{\n 'sb-btn sb-btn-normal': true,\n 'sb-btn-primary': matrixForm?.valid,\n 'sb-btn-disabled': !matrixForm?.valid\n }\"\n >\n {{ submitText }}\n </button>\n <button\n class=\"sb-btn sb-btn-normal sb-btn-outline-primary\"\n type=\"button\"\n (click)=\"showBadgeAssingModel = false\"\n >\n {{ cancelText }}\n </button>\n </div>\n <!--/Actions-->\n</sui-modal>\n", styles: [".card{width:100%;border-radius:90px}.content{display:flex;flex-direction:row}.ui.card>.content:after,.ui.cards>.card>.content:after{content:none}"] }) ], MatrixQuestionsComponent); return MatrixQuestionsComponent; }()); export { MatrixQuestionsComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LXF1ZXN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9zbC1xdWVzdGlvbm5haXJlLyIsInNvdXJjZXMiOlsibGliL21hdHJpeC1xdWVzdGlvbnMvbWF0cml4LXF1ZXN0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLG1CQUFtQixHQUNwQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVkzRDtJQVdFLGtDQUNVLFNBQTZCLEVBQzlCLFlBQTZCLEVBQzdCLEVBQWUsRUFDZCxLQUFxQjtRQUhyQixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBQzVCLENBQUM7SUFFSiwyQ0FBUSxHQUFSO1FBQUEsaUJBWUM7UUFYQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFH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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtQXJyYXksXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBNb2RhbFRlbXBsYXRlLFxuICBTdWlNb2RhbFNlcnZpY2UsXG4gIFRlbXBsYXRlTW9kYWxDb25maWcsXG59IGZyb20gJ25nMi1zZW1hbnRpYy11aS12OSc7XG5pbXBvcnQgeyBNYXRyaXhRdWVzdGlvbiwgUXVlc3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1ZXN0aW9ubmFpcmUudHlwZSc7XG5pbXBvcnQgeyBTbFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBbGVydE1ldGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2FsZXJ0LnR5cGUnO1xuaW1wb3J0IHsgU2xVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ29udGV4dCB7XG4gIHF1ZXN0aW9uczogUXVlc3Rpb25bXTtcbiAgaGVhZGluZzogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2wtbWF0cml4LXF1ZXN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRyaXgtcXVlc3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0cml4LXF1ZXN0aW9ucy5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1hdHJpeFF1ZXN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGFkZFRleHQ6IHN0cmluZztcbiAgc3VibWl0VGV4dDogc3RyaW5nO1xuICBjYW5jZWxUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBNYXRyaXhRdWVzdGlvbjtcbiAgbWF0cml4Rm9ybTogRm9ybUdyb3VwO1xuICBAVmlld0NoaWxkKCdtb2RhbFRlbXBsYXRlJylcbiAgcHVibGljIG1vZGFsVGVtcGxhdGU6IE1vZGFsVGVtcGxhdGU8SUNvbnRleHQsIHN0cmluZywgc3RyaW5nPjtcbiAgY29udGV4dDogSUNvbnRleHQ7XG4gIHNob3dCYWRnZUFzc2luZ01vZGVsOiBib29sZWFuO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogU2xUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IFN1aU1vZGFsU2VydmljZSxcbiAgICBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdXRpbHM6IFNsVXRpbHNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZFRleHQgPSB0aGlzLnRyYW5zbGF0ZVsnZnJtZWxtbnRzJ10uYnRuLmFkZDtcbiAgICB0aGlzLnN1Ym1pdFRleHQgPSB0aGlzLnRyYW5zbGF0ZVsnZnJtZWxtbnRzJ10uYnRuLnN1Ym1pdDtcbiAgICB0aGlzLmNhbmNlbFRleHQgPSB0aGlzLnRyYW5zbGF0ZVsnZnJtZWxtbnRzJ10uYnRuLmNhbmNlbDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWF0cml4Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe30sIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlRm9ybS5hZGRDb250cm9sKFxuICAgICAgICB0aGlzLnF1ZXN0aW9uLl9pZCxcbiAgICAgICAgbmV3IEZvcm1BcnJheShbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZU1hdHJpeCgpO1xuICAgIH0pO1xuICB9XG4gIGluaXRpYWxpemVNYXRyaXgoKSB7XG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5xdWVzdGlvbi52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsdWUubWFwKCh2KSA9PiB7XG4gICAgICAgIGxldCBvYmogPSB7fTtcbiAgICAgICAgdi5mb3JFYWNoKChxdWVzKSA9PiB7XG4gICAgICAgICAgaWYgKCFxdWVzLnZhbHVlKSByZXR1cm47XG4gICAgICAgICAgb2JqW3F1ZXMuX2lkXSA9IHF1ZXMudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAodGhpcy5xdWVzdGlvbm5haXJlRm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLl9pZF0gYXMgRm9ybUFycmF5KS5wdXNoKFxuICAgICAgICAgIG5ldyBGb3JtQ29udHJvbChvYmopXG4gICAgICAgICk7XG4gICAgICAgIGlmIChfLmlzRW1wdHkob2JqKSkge1xuICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdmFsaWQpXG4gICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVGb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24uX2lkXS5zZXRFcnJvcnMoe1xuICAgICAgICBlcnI6ICdNYXRyaXggcmVwb3NuZSBub3QgdmFsaWQnLFxuICAgICAgfSk7XG4gIH1cblxuICBhZGRJbnN0YW5jZXMoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVzdGlvbi52YWx1ZSA9IHRoaXMucXVlc3Rpb24udmFsdWUgPyB0aGlzLnF1ZXN0aW9uLnZhbHVlIDogW107XG4gICAgdGhpcy5xdWVzdGlvbi52YWx1ZS5wdXNoKFxuICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXN0aW9uLmluc3RhbmNlUXVlc3Rpb25zKSlcbiAgICApO1xuICAgIHRoaXMubWF0cml4Rm9ybS5yZXNldCgpO1xuICAgIHRoaXMuZm9ybUFzQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2woW10sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpO1xuICB9XG5cbiAgdmlld0luc3RhbmNlKGkpOiB2b2lkIHtcbiAgICB0aGlzLm1hdHJpeEZvcm0ucmVzZXQoKTtcbiAgICBpZiAodGhpcy5mb3JtQXNBcnJheS5jb250cm9sc1tpXS52YWx1ZSkge1xuICAgICAgdGhpcy5tYXRyaXhGb3JtLnBhdGNoVmFsdWUodGhpcy5mb3JtQXNBcnJheS5jb250cm9sc1tpXS52YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBUZW1wbGF0ZU1vZGFsQ29uZmlnPElDb250ZXh0LCBzdHJpbmcsIHN0cmluZz4oXG4gICAgICB0aGlzLm1vZGFsVGVtcGxhdGVcbiAgICApO1xuICAgIGNvbmZpZy5jbG9zZVJlc3VsdCA9ICdjbG9zZWQhJztcbiAgICBjb25maWcuY29udGV4dCA9IHtcbiAgICAgIHF1ZXN0aW9uczogdGhpcy5xdWVzdGlvbi52YWx1ZVtpXSxcbiAgICAgIGhlYWRpbmc6IGAke3RoaXMucXVlc3Rpb24uaW5zdGFuY2VJZGVudGlmaWVyfSAke2kgKyAxfWAsXG4gICAgICBpbmRleDogaSxcbiAgICB9O1xuICAgIHRoaXMuY29udGV4dCA9IGNvbmZpZy5jb250ZXh0O1xuICAgIHRoaXMuc2hvd0JhZGdlQXNzaW5nTW9kZWwgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGZvcm1Bc0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXN0aW9ubmFpcmVGb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24uX2lkXSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBtYXRyaXhTdWJtaXQoaW5kZXgpIHtcbiAgICB0aGlzLnNob3dCYWRnZUFzc2luZ01vZGVsID0gZmFsc2U7XG4gICAgdGhpcy5mb3JtQXNBcnJheS5hdChpbmRleCkucGF0Y2hWYWx1ZSh0aGlzLm1hdHJpeEZvcm0udmFsdWUpO1xuICAgIGlmICh0aGlzLm1hdHJpeEZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtQXNBcnJheS5hdChpbmRleCkuc2V0RXJyb3JzKHsgZXJyOiAnTWF0cml4IHJlcG9zbmUgbm90IHZhbGlkJyB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVJbnN0YW5jZUFsZXJ0KGluZGV4KSB7XG4gICAgLy8gbGV0IG1ldGFEYXRhID0gYXdhaXQgdGhpcy5vYnNlcnZhdGlvblV0aWxTZXJ2aWNlLmdldEFsZXJ0TWV0YURhdGEoKTtcbiAgICAvLyBtZXRhRGF0YS5jb250ZW50LmJvZHkuZGF0YSA9XG4gICAgLy8gICB0aGlzLnJlc291cmNlU2VydmljZS5mcm1lbG1udHMubGJsLmRlbGV0ZVN1Ym1pc3Npb247XG4gICAgLy8gbWV0YURhdGEuY29udGVudC5ib2R5LnR5cGUgPSAndGV4dCc7XG4gICAgLy8gbWV0YURhdGEuY29udGVudC50aXRsZSA9IHRoaXMucmVzb3VyY2VTZXJ2aWNlLmZybWVsbW50cy5idG4uZGVsZXRlO1xuICAgIC8vIG1ldGFEYXRhLnNpemUgPSAnbWluaSc7XG4gICAgLy8gbWV0YURhdGEuZm9vdGVyLmJ1dHRvbnMucHVzaCh7XG4gICAgLy8gICB0eXBlOiAnY2FuY2VsJyxcbiAgICAvLyAgIHJldHVyblZhbHVlOiBmYWxzZSxcbiAgICAvLyAgIGJ1dHRvblRleHQ6IHRoaXMucmVzb3VyY2VTZXJ2aWNlLmZybWVsbW50cy5idG4ubm8sXG4gICAgLy8gfSk7XG4gICAgLy8gbWV0YURhdGEuZm9vdGVyLmJ1dHRvbnMucHVzaCh7XG4gICAgLy8gICB0eXBlOiAnYWNjZXB0JyxcbiAgICAvLyAgIHJldHVyblZhbHVlOiB0cnVlLFxuICAgIC8vICAgYnV0dG9uVGV4dDogdGhpcy5yZXNvdXJjZVNlcnZpY2UuZnJtZWxtbnRzLmJ0bi55ZXMsXG4gICAgLy8gfSk7XG4gICAgLy8gbWV0YURhdGEuZm9vdGVyLmNsYXNzTmFtZSA9ICdkb3VibGUtYnRuJztcbiAgICAvLyBjb25zdCBhY2NlcHRlZCA9IGF3YWl0IHRoaXMub2JzZXJ2YXRpb25VdGlsU2VydmljZS5zaG93UG9wdXBBbGVydChtZXRhRGF0YSk7XG4gICAgY29uc3QgYWxlcnRNZXRhOiBBbGVydE1ldGEgPSB7XG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVbJ2ZybWVsbW50cyddLmFsZXJ0LnVwbG9hZFRlcm1zUmVqZWN0ZWQsXG4gICAgICBzaXplOiAnbWluaScsXG4gICAgICBib2R5VHlwZTogJ3RleHQnLFxuICAgICAgZGF0YTogdGhpcy50cmFuc2xhdGVbJ2ZybWVsbW50cyddLmxibC5kZWxldGVTdWJtaXNzaW9uLFxuICAgICAgYnV0dG9uQ2xhc3M6ICdkb3VibGUtYnRuJyxcbiAgICAgIGFjY2VwdFRleHQ6IHRoaXMudHJhbnNsYXRlWydmcm1lbG1udHMnXS5idG4ueWVzLFxuICAgICAgY2FuY2VsVGV4dDogdGhpcy50cmFuc2xhdGVbJ2ZybWVsbW50cyddLmJ0bi5ubyxcbiAgICB9O1xuICAgIGNvbnN0IGFjY2VwdGVkID0gdGhpcy51dGlscy5hbGVydChhbGVydE1ldGEpO1xuICAgIGlmICghYWNjZXB0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnF1ZXN0aW9uLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgKHRoaXMucXVlc3Rpb25uYWlyZUZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5faWRdIGFzIEZvcm1BcnJheSkucmVtb3ZlQXQoXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cbn1cbiJdfQ==