@ksremp/ngx-ksremp-app-lib 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -302,7 +302,7 @@ function MfaComponent_div_7_Template(rf, ctx) { if (rf & 1) {
302
302
  } }
303
303
  function MfaComponent_div_8_ion_button_4_Template(rf, ctx) { if (rf & 1) {
304
304
  const _r43 = i0.ɵɵgetCurrentView();
305
- i0.ɵɵelementStart(0, "ion-button", 31);
305
+ i0.ɵɵelementStart(0, "ion-button", 32);
306
306
  i0.ɵɵlistener("keyup.enter", function MfaComponent_div_8_ion_button_4_Template_ion_button_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r42 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r42.signIn()); })("click", function MfaComponent_div_8_ion_button_4_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r44 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r44.signIn()); });
307
307
  i0.ɵɵtext(1);
308
308
  i0.ɵɵpipe(2, "translate");
@@ -313,7 +313,7 @@ function MfaComponent_div_8_ion_button_4_Template(rf, ctx) { if (rf & 1) {
313
313
  } }
314
314
  function MfaComponent_div_8_ion_button_5_Template(rf, ctx) { if (rf & 1) {
315
315
  const _r46 = i0.ɵɵgetCurrentView();
316
- i0.ɵɵelementStart(0, "ion-button", 31);
316
+ i0.ɵɵelementStart(0, "ion-button", 32);
317
317
  i0.ɵɵlistener("keyup.enter", function MfaComponent_div_8_ion_button_5_Template_ion_button_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r45.submit()); })("click", function MfaComponent_div_8_ion_button_5_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r46); const ctx_r47 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r47.submit()); });
318
318
  i0.ɵɵtext(1);
319
319
  i0.ɵɵpipe(2, "translate");
@@ -324,12 +324,12 @@ function MfaComponent_div_8_ion_button_5_Template(rf, ctx) { if (rf & 1) {
324
324
  } }
325
325
  function MfaComponent_div_8_Template(rf, ctx) { if (rf & 1) {
326
326
  const _r49 = i0.ɵɵgetCurrentView();
327
- i0.ɵɵelementStart(0, "div", 29)(1, "ion-button", 26);
327
+ i0.ɵɵelementStart(0, "div", 29)(1, "ion-button", 30);
328
328
  i0.ɵɵlistener("keyup.enter", function MfaComponent_div_8_Template_ion_button_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r48.close(false)); })("click", function MfaComponent_div_8_Template_ion_button_click_1_listener() { i0.ɵɵrestoreView(_r49); const ctx_r50 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r50.close(false)); });
329
329
  i0.ɵɵtext(2);
330
330
  i0.ɵɵpipe(3, "translate");
331
331
  i0.ɵɵelementEnd();
332
- i0.ɵɵtemplate(4, MfaComponent_div_8_ion_button_4_Template, 3, 3, "ion-button", 30)(5, MfaComponent_div_8_ion_button_5_Template, 3, 3, "ion-button", 30);
332
+ i0.ɵɵtemplate(4, MfaComponent_div_8_ion_button_4_Template, 3, 3, "ion-button", 31)(5, MfaComponent_div_8_ion_button_5_Template, 3, 3, "ion-button", 31);
333
333
  i0.ɵɵelementEnd();
334
334
  } if (rf & 2) {
335
335
  const ctx_r4 = i0.ɵɵnextContext();
@@ -536,7 +536,7 @@ export class MfaComponent {
536
536
  } if (rf & 2) {
537
537
  let _t;
538
538
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.otpField = _t.first);
539
- } }, inputs: { user: "user", heading: "heading", requestCode: "requestCode", data: "data", mfaError: "mfaError", hideButtons: "hideButtons", returningUser: "returningUser", display: "display" }, outputs: { clear: "clear", success: "success", error: "error" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 6, consts: [[3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "heading", 2, "padding-left", "10px"], ["style", "padding-left: 10px;", 4, "ngIf"], ["class", "ion-text-center", 4, "ngIf"], ["class", "ion-text-right ion-padding-bottom", 4, "ngIf"], [2, "padding-left", "10px"], [1, "ion-padding-top", "p-formgrid", "p-grid"], [1, "field", "ion-text-left"], ["for", "otpType"], ["optionLabel", "text", "optionValue", "value", 3, "options", "formControl", "onChange"], [1, "ion-padding-top"], [4, "ngIf"], ["for", "authCode", 4, "ngIf"], ["formControlName", "otp", "maxlength", "6", "minlength", "6", "mode", "decimal", "size", "6", "autocomplete", "off", 3, "useGrouping", "inputId", "click", "keyup", "keyup.enter"], ["otpField", ""], [3, "field", "form", "errDef", 4, "ngIf"], ["lines", "none", 4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["for", "authCode"], [3, "field", "form", "errDef"], ["lines", "none"], ["slot", "start", "formControlName", "checked"], [1, "ion-text-wrap"], [2, "color", "var(--ion-color-green)"], ["tabindex", "0", 1, "link", 3, "keyup.enter", "click"], ["tabindex", "0", "shape", "round", "type", "reset", "color", "success", "fill", "outline", 3, "keyup.enter", "click"], [1, "ion-text-center"], ["name", "dots"], [1, "ion-text-right", "ion-padding-bottom"], ["tabindex", "0", "shape", "round", "type", "submit", "color", "success", 3, "keyup.enter", "click", 4, "ngIf"], ["tabindex", "0", "shape", "round", "type", "submit", "color", "success", 3, "keyup.enter", "click"]], template: function MfaComponent_Template(rf, ctx) { if (rf & 1) {
539
+ } }, inputs: { user: "user", heading: "heading", requestCode: "requestCode", data: "data", mfaError: "mfaError", hideButtons: "hideButtons", returningUser: "returningUser", display: "display" }, outputs: { clear: "clear", success: "success", error: "error" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 6, consts: [[3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "heading", 2, "padding-left", "10px"], ["style", "padding-left: 10px;", 4, "ngIf"], ["class", "ion-text-center", 4, "ngIf"], ["class", "ion-text-right ion-padding-bottom", 4, "ngIf"], [2, "padding-left", "10px"], [1, "ion-padding-top", "p-formgrid", "p-grid"], [1, "field", "ion-text-left"], ["for", "otpType"], ["optionLabel", "text", "optionValue", "value", 3, "options", "formControl", "onChange"], [1, "ion-padding-top"], [4, "ngIf"], ["for", "authCode", 4, "ngIf"], ["formControlName", "otp", "maxlength", "6", "minlength", "6", "mode", "decimal", "size", "6", "autocomplete", "off", 3, "useGrouping", "inputId", "click", "keyup", "keyup.enter"], ["otpField", ""], [3, "field", "form", "errDef", 4, "ngIf"], ["lines", "none", 4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["for", "authCode"], [3, "field", "form", "errDef"], ["lines", "none"], ["slot", "start", "formControlName", "checked"], [1, "ion-text-wrap"], [2, "color", "var(--ion-color-green)"], ["tabindex", "0", 1, "link", 3, "keyup.enter", "click"], ["tabindex", "0", "shape", "round", "color", "success", "fill", "outline", 3, "keyup.enter", "click"], [1, "ion-text-center"], ["name", "dots"], [1, "ion-text-right", "ion-padding-bottom"], ["tabindex", "0", "shape", "round", "type", "reset", "color", "success", "fill", "outline", 3, "keyup.enter", "click"], ["tabindex", "0", "shape", "round", "type", "submit", "color", "success", 3, "keyup.enter", "click", 4, "ngIf"], ["tabindex", "0", "shape", "round", "type", "submit", "color", "success", 3, "keyup.enter", "click"]], template: function MfaComponent_Template(rf, ctx) { if (rf & 1) {
540
540
  i0.ɵɵelementStart(0, "form", 0, 1)(2, "h4", 2);
541
541
  i0.ɵɵtext(3);
542
542
  i0.ɵɵelementEnd();
@@ -560,7 +560,7 @@ export class MfaComponent {
560
560
  }
561
561
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MfaComponent, [{
562
562
  type: Component,
563
- args: [{ selector: 'app-mfa', template: "<form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <h4 style=\"padding-left: 10px;\" class=\"heading\">{{ heading ? heading : AccessConfirm}}</h4>\r\n\r\n <div style=\"padding-left: 10px;\" *ngIf=\"!option.value && !returningUser\">\r\n <div class=\"ion-padding-top p-formgrid p-grid\">\r\n <div class=\"field ion-text-left\">\r\n <label for=\"otpType\">{{'mfa.how.send'|translate}}</label>\r\n <p-selectButton [options]=\"options\" optionLabel=\"text\" optionValue=\"value\" [formControl]=\"option\" (onChange)=\"sendOtp($event)\"></p-selectButton>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div style=\"padding-left: 10px;\" *ngIf=\"option.value\">\r\n <div class=\"ion-padding-top\">\r\n <ion-label>\r\n <span *ngIf=\"option.value == 'email' && !returningUser\">{{'mfa.code.sent.email'|translate}}:&nbsp; <b>{{user?.emailId | maskEmail}}</b></span>\r\n <span *ngIf=\"option.value == 'text' && !returningUser\">{{'mfa.code.sent.cell'|translate}}&nbsp; <b>{{user?.cellphoneNo}}</b></span>\r\n <span *ngIf=\"returningUser\">{{'mfa.code.sent.cell'|translate}}&nbsp; <b>{{user?.cellphoneNo}}</b></span>\r\n </ion-label><br/><br/>\r\n <ion-label *ngIf=\"option.value == 'email' && !returningUser\">\r\n {{'mfa.code.sent.junk'|translate}}\r\n </ion-label>\r\n <span *ngIf=\"option.value == 'email' && !returningUser\"><br/><br/></span>\r\n <div class=\"field ion-text-left\">\r\n <label for=\"authCode\" *ngIf=\"!returningUser\">{{'mfa.enter.code'|translate}}</label><br/>\r\n <label for=\"authCode\" *ngIf=\"returningUser\">{{'mfa.enter.code.received'|translate}}</label><br/>\r\n <p-inputNumber (click)=\"hideOptValidator=false\" (keyup)=\"hideOptValidator=false\" #otpField formControlName=\"otp\" maxlength=\"6\" minlength=\"6\" mode=\"decimal\" [useGrouping]=\"false\" size=\"6\" [inputId]=\"'authCode'\" autocomplete=\"off\" (keyup.enter)=\"(!requestCode && option.value) ? signIn() : submit()\">\r\n </p-inputNumber>\r\n <app-error *ngIf=\"!hideOptValidator\" [field]='otp' [form]=\"otpForm\" [errDef]=\"{ \r\n required: AccessRequired,\r\n min: AccessVerify,\r\n max: AccessVerify\r\n }\"></app-error>\r\n </div>\r\n <ion-item lines=\"none\" *ngIf=\"false\">\r\n <ion-checkbox slot=\"start\" formControlName=\"checked\"></ion-checkbox>\r\n <ion-label class=\"ion-text-wrap\">{{'mfa.browser.trust'|translate}}</ion-label>\r\n </ion-item>\r\n </div>\r\n \r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}<br /><br /></mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br/><br /></ion-label>\r\n <ion-label *ngIf=\"!blocked\">\r\n <span *ngIf=\"counter.getValue() != 1 && !returningUser\">\r\n {{'mfa.code.not.received'|translate}} <b>{{counter.getValue()}} second(s)</b>.\r\n </span>\r\n <span *ngIf=\"counter.getValue() == 1 && !returningUser\">\r\n <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode(option.value)\" (click)=\"resendAuthCode(option.value)\" class=\"link\">{{'mfa.get.new.code'|translate}}</a>\r\n </span>\r\n <span *ngIf=\"counter.getValue() == 1 && returningUser\">\r\n <!-- <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode(option.value)\" (click)=\"resendAuthCode(option.value)\" class=\"link\"> {{'mfa.resend.verification.code'|translate}}</a> -->\r\n {{'mfa.resend.verification.code'|translate}}\r\n <!-- <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode('TEX')\" (click)=\"resendAuthCode('TEX')\" class=\"link\"> {{'mfa.option.text'|translate}}</a>\r\n <b> or</b>\r\n <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode('CAL')\" (click)=\"resendAuthCode('CAL')\" class=\"link\"> {{'mfa.option.call'|translate}}</a> -->\r\n\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"reset\" (keyup.enter)=\"resendAuthCode('TEX')\" (click)=\"resendAuthCode('TEX')\" color=\"success\" fill=\"outline\">\r\n {{ 'mfa.option.text' | translate }}\r\n </ion-button>\r\n <b> or </b>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"reset\" (keyup.enter)=\"resendAuthCode('CAL')\" (click)=\"resendAuthCode('CAL')\" color=\"success\" fill=\"outline\">\r\n {{ 'mfa.option.call' | translate }}\r\n </ion-button>\r\n \r\n </span>\r\n </ion-label>\r\n <p *ngIf=\"!returningUser\"><a tabindex=\"0\" class=\"link\" (keyup.enter)=\"showHelp = !showHelp; $event.preventDefault()\" (click)=\"showHelp = !showHelp; $event.preventDefault()\">Can't get to your {{option.value == 'text' ? 'cellphone' : 'email'}}?</a></p>\r\n <!-- <p *ngIf=\"returningUser\"><a tabindex=\"0\" class=\"link\" (keyup.enter)=\"close()\" (click)=\"close()\">Unable to verify</a></p> -->\r\n <p *ngIf=\"showHelp && !returningUser\">\r\n {{'mfa.good.for.time'|translate}}<br/>\r\n or<br/>\r\n If your {{option.value == 'text' ? 'cellphone number' : 'email address'}} has changed call KDOL at 785-575-1460, Monday through Friday from 8 am to 4:30 pm.\r\n </p>\r\n </div>\r\n\r\n <p-footer>\r\n <div *ngIf=\"blocked\" class=\"ion-text-center\">\r\n <ion-spinner name=\"dots\"></ion-spinner>\r\n </div>\r\n <div class=\"ion-text-right ion-padding-bottom\" *ngIf=\"!blocked && !hideButtons\">\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"reset\" (keyup.enter)=\"close(false)\" (click)=\"close(false)\" color=\"success\" fill=\"outline\">\r\n {{'common.close'|translate}}\r\n </ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" (keyup.enter)=\"signIn()\" (click)=\"signIn()\" color=\"success\" *ngIf=\"!requestCode && option.value\">\r\n {{'common.submit'|translate}}\r\n </ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" (keyup.enter)=\"submit()\" (click)=\"submit()\" color=\"success\" *ngIf=\"requestCode && option.value\">\r\n {{'common.submit'|translate}}\r\n </ion-button>\r\n </div>\r\n </p-footer>\r\n</form>", styles: [":host ::ng-deep .panel{box-shadow:none!important}\n"] }]
563
+ args: [{ selector: 'app-mfa', template: "<form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <h4 style=\"padding-left: 10px;\" class=\"heading\">{{ heading ? heading : AccessConfirm}}</h4>\r\n\r\n <div style=\"padding-left: 10px;\" *ngIf=\"!option.value && !returningUser\">\r\n <div class=\"ion-padding-top p-formgrid p-grid\">\r\n <div class=\"field ion-text-left\">\r\n <label for=\"otpType\">{{'mfa.how.send'|translate}}</label>\r\n <p-selectButton [options]=\"options\" optionLabel=\"text\" optionValue=\"value\" [formControl]=\"option\" (onChange)=\"sendOtp($event)\"></p-selectButton>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div style=\"padding-left: 10px;\" *ngIf=\"option.value\">\r\n <div class=\"ion-padding-top\">\r\n <ion-label>\r\n <span *ngIf=\"option.value == 'email' && !returningUser\">{{'mfa.code.sent.email'|translate}}:&nbsp; <b>{{user?.emailId | maskEmail}}</b></span>\r\n <span *ngIf=\"option.value == 'text' && !returningUser\">{{'mfa.code.sent.cell'|translate}}&nbsp; <b>{{user?.cellphoneNo}}</b></span>\r\n <span *ngIf=\"returningUser\">{{'mfa.code.sent.cell'|translate}}&nbsp; <b>{{user?.cellphoneNo}}</b></span>\r\n </ion-label><br/><br/>\r\n <ion-label *ngIf=\"option.value == 'email' && !returningUser\">\r\n {{'mfa.code.sent.junk'|translate}}\r\n </ion-label>\r\n <span *ngIf=\"option.value == 'email' && !returningUser\"><br/><br/></span>\r\n <div class=\"field ion-text-left\">\r\n <label for=\"authCode\" *ngIf=\"!returningUser\">{{'mfa.enter.code'|translate}}</label><br/>\r\n <label for=\"authCode\" *ngIf=\"returningUser\">{{'mfa.enter.code.received'|translate}}</label><br/>\r\n <p-inputNumber (click)=\"hideOptValidator=false\" (keyup)=\"hideOptValidator=false\" #otpField formControlName=\"otp\" maxlength=\"6\" minlength=\"6\" mode=\"decimal\" [useGrouping]=\"false\" size=\"6\" [inputId]=\"'authCode'\" autocomplete=\"off\" (keyup.enter)=\"(!requestCode && option.value) ? signIn() : submit()\">\r\n </p-inputNumber>\r\n <app-error *ngIf=\"!hideOptValidator\" [field]='otp' [form]=\"otpForm\" [errDef]=\"{ \r\n required: AccessRequired,\r\n min: AccessVerify,\r\n max: AccessVerify\r\n }\"></app-error>\r\n </div>\r\n <ion-item lines=\"none\" *ngIf=\"false\">\r\n <ion-checkbox slot=\"start\" formControlName=\"checked\"></ion-checkbox>\r\n <ion-label class=\"ion-text-wrap\">{{'mfa.browser.trust'|translate}}</ion-label>\r\n </ion-item>\r\n </div>\r\n \r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}<br /><br /></mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br/><br /></ion-label>\r\n <ion-label *ngIf=\"!blocked\">\r\n <span *ngIf=\"counter.getValue() != 1 && !returningUser\">\r\n {{'mfa.code.not.received'|translate}} <b>{{counter.getValue()}} second(s)</b>.\r\n </span>\r\n <span *ngIf=\"counter.getValue() == 1 && !returningUser\">\r\n <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode(option.value)\" (click)=\"resendAuthCode(option.value)\" class=\"link\">{{'mfa.get.new.code'|translate}}</a>\r\n </span>\r\n <span *ngIf=\"counter.getValue() == 1 && returningUser\">\r\n <!-- <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode(option.value)\" (click)=\"resendAuthCode(option.value)\" class=\"link\"> {{'mfa.resend.verification.code'|translate}}</a> -->\r\n {{'mfa.resend.verification.code'|translate}}\r\n <!-- <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode('TEX')\" (click)=\"resendAuthCode('TEX')\" class=\"link\"> {{'mfa.option.text'|translate}}</a>\r\n <b> or</b>\r\n <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode('CAL')\" (click)=\"resendAuthCode('CAL')\" class=\"link\"> {{'mfa.option.call'|translate}}</a> -->\r\n\r\n <ion-button tabindex=\"0\" shape=\"round\" (keyup.enter)=\"resendAuthCode('TEX')\" (click)=\"resendAuthCode('TEX')\" color=\"success\" fill=\"outline\">\r\n {{ 'mfa.option.text' | translate }}\r\n </ion-button>\r\n <b> or </b>\r\n <ion-button tabindex=\"0\" shape=\"round\" (keyup.enter)=\"resendAuthCode('CAL')\" (click)=\"resendAuthCode('CAL')\" color=\"success\" fill=\"outline\">\r\n {{ 'mfa.option.call' | translate }}\r\n </ion-button>\r\n \r\n </span>\r\n </ion-label>\r\n <p *ngIf=\"!returningUser\"><a tabindex=\"0\" class=\"link\" (keyup.enter)=\"showHelp = !showHelp; $event.preventDefault()\" (click)=\"showHelp = !showHelp; $event.preventDefault()\">Can't get to your {{option.value == 'text' ? 'cellphone' : 'email'}}?</a></p>\r\n <!-- <p *ngIf=\"returningUser\"><a tabindex=\"0\" class=\"link\" (keyup.enter)=\"close()\" (click)=\"close()\">Unable to verify</a></p> -->\r\n <p *ngIf=\"showHelp && !returningUser\">\r\n {{'mfa.good.for.time'|translate}}<br/>\r\n or<br/>\r\n If your {{option.value == 'text' ? 'cellphone number' : 'email address'}} has changed call KDOL at 785-575-1460, Monday through Friday from 8 am to 4:30 pm.\r\n </p>\r\n </div>\r\n\r\n <p-footer>\r\n <div *ngIf=\"blocked\" class=\"ion-text-center\">\r\n <ion-spinner name=\"dots\"></ion-spinner>\r\n </div>\r\n <div class=\"ion-text-right ion-padding-bottom\" *ngIf=\"!blocked && !hideButtons\">\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"reset\" (keyup.enter)=\"close(false)\" (click)=\"close(false)\" color=\"success\" fill=\"outline\">\r\n {{'common.close'|translate}}\r\n </ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" (keyup.enter)=\"signIn()\" (click)=\"signIn()\" color=\"success\" *ngIf=\"!requestCode && option.value\">\r\n {{'common.submit'|translate}}\r\n </ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" (keyup.enter)=\"submit()\" (click)=\"submit()\" color=\"success\" *ngIf=\"requestCode && option.value\">\r\n {{'common.submit'|translate}}\r\n </ion-button>\r\n </div>\r\n </p-footer>\r\n</form>", styles: [":host ::ng-deep .panel{box-shadow:none!important}\n"] }]
564
564
  }], () => [{ type: i1.LoginService }, { type: i2.UntypedFormBuilder }, { type: i3.UtilService }, { type: i4.NavController }, { type: i5.CaptchaService }, { type: i6.SecurityService }, { type: i7.Router }, { type: i8.TranslateService }], { otpField: [{
565
565
  type: ViewChild,
566
566
  args: ["otpField"]
@@ -588,4 +588,4 @@ export class MfaComponent {
588
588
  type: Output
589
589
  }] }); })();
590
590
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MfaComponent, { className: "MfaComponent", filePath: "lib\\components\\mfa\\mfa.component.ts", lineNumber: 21 }); })();
591
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9tZmEvbWZhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9tZmEvbWZhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUF3QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRixPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNEcEMsOEJBQXlFLGFBQUEsYUFBQSxlQUFBO0lBRzlDLFlBQTRCOztJQUFBLGlCQUFRO0lBQ3pELDBDQUErSDtJQUE3Qiw2S0FBWSxlQUFBLHNCQUFlLENBQUEsSUFBQztJQUFDLGlCQUFpQixFQUFBLEVBQUEsRUFBQTs7O0lBRDNILGVBQTRCO0lBQTVCLDBEQUE0QjtJQUNqQyxlQUFtQjtJQUFuQix3Q0FBbUIsOEJBQUE7OztJQVFuQyw0QkFBd0Q7SUFBQSxZQUEyQzs7SUFBQSx5QkFBRztJQUFBLFlBQTZCOztJQUFBLGlCQUFJLEVBQUE7OztJQUEvRSxlQUEyQztJQUEzQyxrRkFBMkM7SUFBRyxlQUE2QjtJQUE3Qiw0RkFBNkI7OztJQUNuSSw0QkFBdUQ7SUFBQSxZQUF5Qzs7SUFBQSx5QkFBRztJQUFBLFlBQXFCO0lBQUEsaUJBQUksRUFBQTs7O0lBQXJFLGVBQXlDO0lBQXpD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T0FBTztrQkFETixLQUFLO1lBR0ksS0FBSztrQkFBZCxNQUFNO1lBRUcsT0FBTztrQkFBaEIsTUFBTTtZQUVHLEtBQUs7a0JBQWQsTUFBTTs7a0ZBM0NJLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFcnJvck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Vycm9yTW9kZWwnO1xyXG5pbXBvcnQgeyBDb21ib09wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0NvbWJvTW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlck1vZGVsJztcclxuaW1wb3J0IHsgQ2FwdGNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXB0Y2hhL2NhcHRjaGEuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VjdXJpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VjdXJpdHktc2VydmljZS9zZWN1cml0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbWZhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWZhLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZmEuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWZhQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJvdHBGaWVsZFwiKSBvdHBGaWVsZDtcclxuICBwcml2YXRlIFJFU0VORF9DT0RFX0FDVElPTl9OQU1FID0gXCJNRkFfUkVTRU5EX0NPREVcIjtcclxuICBcclxuICBwdWJsaWMgc3VjY2Vzc0R0bHM7XHJcblxyXG4gIHB1YmxpYyBibG9ja2VkOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgaXNDaGVja2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBzaG93SGVscDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgaGlkZU9wdFZhbGlkYXRvciA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICB1c2VyIDogVXNlck1vZGVsO1xyXG5cclxuICAvL0lmIHNwZWNpZmllZCwgaXQgd2lsbCBjaGFuZ2UgdGhlIGRlZmF1bHQgaGVhZGluZyBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIG9uY2Ugc3BlY2lmaWVkIGluIHRoaXMgZmllbGQuXHJcbiAgQElucHV0KCkgaGVhZGluZyA6IHN0cmluZztcclxuXHJcbiAgLy9SZXF1ZXN0IG5ldyBhdXRoY29kZSB3aGVuIGNvbXBvbmVudHMgbG9hZC5cclxuICBASW5wdXQoKVxyXG4gIHJlcXVlc3RDb2RlIDogYm9vbGVhbjtcclxuXHJcbiAgLy9QYXNzIHRoaXMgZGF0YSBhbG9uZyB3aXRoIG91dHB1dCBzbyB0aGF0IGNhbGxpbmcgY29tcG9uZW50IGNhbiB0YWtlIGNhcmUgb2YgaXQuXHJcbiAgQElucHV0KClcclxuICBkYXRhIDogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1mYUVycm9yIDogRXJyb3JNb2RlbDtcclxuXHJcbiAgQElucHV0KClcclxuICBoaWRlQnV0dG9ucyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZXR1cm5pbmdVc2VyOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgZGlzcGxheSA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgY2xlYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgc3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBlcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHB1YmxpYyBvdHBGb3JtIDogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgcHVibGljIGVycm9yRHRscztcclxuXHJcbiAgcHVibGljIHRpbWUgPSA2MFxyXG4gIHB1YmxpYyB0aW1lckludGVydmFsID0gaW50ZXJ2YWwoMTAwMCk7IC8vMXNcclxuICBwdWJsaWMgdGltZXIgPSB0aW1lcig2MDAwMCk7IC8vOTBzXHJcbiAgcHVibGljIGNvdW50RG93biA9IHRoaXMudGltZXJJbnRlcnZhbC5waXBlKHRha2UodGhpcy50aW1lKSk7XHJcbiAgcHVibGljIGNvdW50ZXIgOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XHJcbiAgY291bnRlclN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHVibGljIG9wdGlvbnMgOiBDb21ib09wdGlvbltdID0gW1xyXG4gICAge3ZhbHVlIDogJ3RleHQnLCB0ZXh0IDogJ3RleHQnfSxcclxuICAgIHt2YWx1ZSA6ICdlbWFpbCcsIHRleHQgOiAnZW1haWwnfVxyXG4gIF07XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbHM6IExvZ2luU2VydmljZSwgcHVibGljIGZiIDogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdXRpbDogVXRpbFNlcnZpY2UsIHB1YmxpYyBuYXYgOiBOYXZDb250cm9sbGVyLCBwcml2YXRlIGNzOiBDYXB0Y2hhU2VydmljZSxcclxuICAgICAgICAgICAgICAgcHJpdmF0ZSBzczogU2VjdXJpdHlTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgICAgICAgICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkgeyBcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzLm1mYUVycm9yPy5jdXJyZW50VmFsdWUpe1xyXG4gICAgICB0aGlzLmVycm9yRHRscyA9IHRoaXMubWZhRXJyb3IubXNnO1xyXG4gICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzLmRpc3BsYXkuY3VycmVudFZhbHVlKSB7ICAvLyB3aW5kb3cgb3BlblxyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5jb3VudGVyU3Vic2NyaXB0aW9uKXtcclxuICAgICAgdGhpcy5jb3VudGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSk7XHJcbiAgICB0aGlzLmluaXRpbGl6ZUZvcm0oKTtcclxuICAgIC8vdGhpcy5zZXRDb3VudGRvd24oKTtcclxuICAgIGlmKHRoaXMucmVxdWVzdENvZGUpe1xyXG4gICAgICBsZXQgbWZhT3B0aW9ucyA9IHRoaXMudXNlcj8uc3VwcG9ydGVkTWZhVHlwZXM/LnNwbGl0KFwiLFwiKSB8fCBbJ2VtYWlsJ107XHJcbiAgICAgIGlmKG1mYU9wdGlvbnMubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgLy9hbGxvdyB1c2VyIHRvIGNob29zZSBvdHAgb3B0aW9uXHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICB0aGlzLnJlcXVlc3ROZXdBdXRoQ29kZSgnZW1haWwnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRDb3VudGRvd24oKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoXyA9PiB7XHJcbiAgICAgIHRoaXMub3RwRmllbGQuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfSwgMTAwKVxyXG4gIH1cclxuXHJcbiAgcmVxdWVzdE5ld0F1dGhDb2RlKG90cFR5cGUgOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5ibG9ja2VkID0gdHJ1ZTtcclxuICAgIHRoaXMubHMuZ2V0TmV3QXV0aENvZGUob3RwVHlwZSlcclxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBcIkFjY2VzcyBjb2RlIHNlbnQgc3VjY2Vzc2Z1bGx5LlwiO1xyXG4gICAgICAgICAgdGhpcy5jb3VudGVyLm5leHQoNjApO1xyXG4gICAgICAgICAgdGhpcy5zZXRDb3VudGRvd24oKTtcclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1zZztcclxuICAgICAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2V0Q291bnRkb3duKCl7XHJcbiAgICBpZih0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24pe1xyXG4gICAgICB0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY291bnRlclN1YnNjcmlwdGlvbiA9IHRoaXMuY291bnREb3duLnN1YnNjcmliZSh2YWwgPT57XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudGltZSAtIHZhbDtcclxuICAgICAgdGhpcy5jb3VudGVyLm5leHQodmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbml0aWxpemVGb3JtKCl7XHJcbiAgICBsZXQgbWZhT3B0aW9ucyA9IHRoaXMudXNlcj8uc3VwcG9ydGVkTWZhVHlwZXM/LnNwbGl0KFwiLFwiKSB8fCBbJ2VtYWlsJ107XHJcbiAgICB0aGlzLm90cEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgJ290cCcgOiBbbnVsbCAsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgIFZhbGlkYXRvcnMubWluKDEwMF8wMDApLFZhbGlkYXRvcnMubWF4KDk5OV85OTkpXSldLFxyXG4gICAgICAnY2hlY2tlZCcgOiBbZmFsc2VdLFxyXG4gICAgICAnb3B0aW9uJyA6IFsgbWZhT3B0aW9ucyAmJiBtZmFPcHRpb25zLmxlbmd0aCA+IDEgPyBudWxsIDogbWZhT3B0aW9uc1swXV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90cCgpe1xyXG4gICAgcmV0dXJuIHRoaXMub3RwRm9ybS5nZXQoJ290cCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9wdGlvbigpe1xyXG4gICAgcmV0dXJuIHRoaXMub3RwRm9ybS5nZXQoJ29wdGlvbicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNoZWNrZWQoKXtcclxuICAgIHJldHVybiB0aGlzLm90cEZvcm0uZ2V0KCdjaGVja2VkJyk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSh0cmlnZ2VyRXhpdEFQSSA9IHRydWUpe1xyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhci5lbWl0KHRyaWdnZXJFeGl0QVBJKSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKXtcclxuICAgIHRoaXMuaGlkZU9wdFZhbGlkYXRvciA9IGZhbHNlO1xyXG4gICAgaWYodGhpcy5vdHBGb3JtLmludmFsaWQpe1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLm90cEZvcm0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxzLnNldEF1dGhDb2RlKHRoaXMub3RwLnZhbHVlKTtcclxuICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG4gIFxyXG4gIHNpZ25Jbigpe1xyXG4gICAgdGhpcy5oaWRlT3B0VmFsaWRhdG9yID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLm90cEZvcm0uaW52YWxpZCl7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMub3RwRm9ybSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBhdXRoIDogYW55ID0ge307XHJcbiAgICBhdXRoLnVzZXJJZCA9IHRoaXMudXNlci51c2VybmFtZTtcclxuICAgIGF1dGgucGFzc3dvcmQgPSB0aGlzLnVzZXIucGFzc3dvcmQ7XHJcbiAgICBhdXRoLm90cCA9IHRoaXMub3RwLnZhbHVlO1xyXG4gICAgYXV0aC5sYW5ndWFnZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpO1xyXG4gICAgYXV0aC5pc3RydXN0ZWREZXZpY2UgPSB0aGlzLmNoZWNrZWQudmFsdWUgKyBcIlwiO1xyXG4gICAgdGhpcy5ibG9ja2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xyXG4gICAgdGhpcy5lcnJvckR0bHMgPSBudWxsO1xyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxzLmxvZ2luQW5kQ2hlY2tGb3JNRkEoYXV0aClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXJNb2RlbCA6IFVzZXJNb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgICAgIHRoaXMubHMuc2V0VXNlcih1c2VyTW9kZWwpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgaWYoZXJyLm1zZ1swXS5pbmNsdWRlcyhcIkNsYWltYW50IEFjY291bnQgaXMgTG9ja2VkIC0gT1RQIGF0dGVtcHRzIGV4Y2VlZGVkXCIpKXtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJSZWRpcmVjdGluZyB0byBpZGVudGl0eSBwcm9vZmluZy5cIik7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoJ0NsYWltYW50IEFjY291bnQgaXMgTG9ja2VkIC0gT1RQIGF0dGVtcHRzIGhhcyBleGNlZWRlZCcpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgfVxyXG5cclxuICBzZW5kT3RwKGV2ZW50KXtcclxuICAgIHRoaXMucmVzZW5kQXV0aENvZGUoZXZlbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IEFjY2Vzc1ZlcmlmeSgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdtZmEuYWNjZXNzLnZlcmlmeS5zaXgnKTtcclxuICB9XHJcbiAgZ2V0IEFjY2Vzc1JlcXVpcmVkKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ21mYS5hY2Nlc3MucmVxdWlyZWQnKTtcclxuICB9XHJcblxyXG4gIGdldCBBY2Nlc3NDb25maXJtKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ21mYS5hY2Nlc3MuY29uZmlybScpO1xyXG4gIH1cclxuICByZXNlbmRBdXRoQ29kZShvdHBUeXBlIDogc3RyaW5nKXtcclxuICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xyXG4gICAgdGhpcy5lcnJvckR0bHMgPSBudWxsO1xyXG4gICAgdGhpcy5scy5nZW5lcmF0ZU90cCh0aGlzLnVzZXIudXNlcm5hbWUsIG90cFR5cGUpLnN1YnNjcmliZShcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuYmxvY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gJ0PDs2RpZ28gZGUgYWNjZXNvIGVudmlhZG8gY29ycmVjdGFtZW50ZS4nO1xyXG4gICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSAnQWNjZXNzIGNvZGUgc2VudCBzdWNjZXNzZnVsbHkuJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb3VudGVyLm5leHQoNjApO1xyXG4gICAgICAgIHRoaXMuc2V0Q291bnRkb3duKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcclxuICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwib3RwRm9ybVwiICNvdHBGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgPGg0IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxMHB4O1wiIGNsYXNzPVwiaGVhZGluZ1wiPnt7IGhlYWRpbmcgPyBoZWFkaW5nIDogQWNjZXNzQ29uZmlybX19PC9oND5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDtcIiAqbmdJZj1cIiFvcHRpb24udmFsdWUgJiYgIXJldHVybmluZ1VzZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZy10b3AgcC1mb3JtZ3JpZCBwLWdyaWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGlvbi10ZXh0LWxlZnRcIj5cclxuICAgICAgICA8bGFiZWwgZm9yPVwib3RwVHlwZVwiPnt7J21mYS5ob3cuc2VuZCd8dHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJvcHRpb25zXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJvcHRpb25cIiAob25DaGFuZ2UpPVwic2VuZE90cCgkZXZlbnQpXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDtcIiAqbmdJZj1cIm9wdGlvbi52YWx1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICA8aW9uLWxhYmVsPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9uLnZhbHVlID09ICdlbWFpbCcgJiYgIXJldHVybmluZ1VzZXJcIj57eydtZmEuY29kZS5zZW50LmVtYWlsJ3x0cmFuc2xhdGV9fTombmJzcDsgPGI+e3t1c2VyPy5lbWFpbElkIHwgbWFza0VtYWlsfX08L2I+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9uLnZhbHVlID09ICd0ZXh0JyAmJiAhcmV0dXJuaW5nVXNlclwiPnt7J21mYS5jb2RlLnNlbnQuY2VsbCd8dHJhbnNsYXRlfX0mbmJzcDsgPGI+e3t1c2VyPy5jZWxscGhvbmVOb319PC9iPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInJldHVybmluZ1VzZXJcIj57eydtZmEuY29kZS5zZW50LmNlbGwnfHRyYW5zbGF0ZX19Jm5ic3A7IDxiPnt7dXNlcj8uY2VsbHBob25lTm99fTwvYj48L3NwYW4+XHJcbiAgICAgIDwvaW9uLWxhYmVsPjxici8+PGJyLz5cclxuICAgICAgPGlvbi1sYWJlbCAqbmdJZj1cIm9wdGlvbi52YWx1ZSA9PSAnZW1haWwnICYmICFyZXR1cm5pbmdVc2VyXCI+XHJcbiAgICAgICAge3snbWZhLmNvZGUuc2VudC5qdW5rJ3x0cmFuc2xhdGV9fVxyXG4gICAgICA8L2lvbi1sYWJlbD5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24udmFsdWUgPT0gJ2VtYWlsJyAmJiAhcmV0dXJuaW5nVXNlclwiPjxici8+PGJyLz48L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpb24tdGV4dC1sZWZ0XCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImF1dGhDb2RlXCIgKm5nSWY9XCIhcmV0dXJuaW5nVXNlclwiPnt7J21mYS5lbnRlci5jb2RlJ3x0cmFuc2xhdGV9fTwvbGFiZWw+PGJyLz5cclxuICAgICAgICA8bGFiZWwgZm9yPVwiYXV0aENvZGVcIiAqbmdJZj1cInJldHVybmluZ1VzZXJcIj57eydtZmEuZW50ZXIuY29kZS5yZWNlaXZlZCd8dHJhbnNsYXRlfX08L2xhYmVsPjxici8+XHJcbiAgICAgICAgPHAtaW5wdXROdW1iZXIgKGNsaWNrKT1cImhpZGVPcHRWYWxpZGF0b3I9ZmFsc2VcIiAoa2V5dXApPVwiaGlkZU9wdFZhbGlkYXRvcj1mYWxzZVwiICNvdHBGaWVsZCBmb3JtQ29udHJvbE5hbWU9XCJvdHBcIiBtYXhsZW5ndGg9XCI2XCIgbWlubGVuZ3RoPVwiNlwiIG1vZGU9XCJkZWNpbWFsXCIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgc2l6ZT1cIjZcIiBbaW5wdXRJZF09XCInYXV0aENvZGUnXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXVwLmVudGVyKT1cIighcmVxdWVzdENvZGUgJiYgb3B0aW9uLnZhbHVlKSA/IHNpZ25JbigpIDogc3VibWl0KClcIj5cclxuICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPGFwcC1lcnJvciAqbmdJZj1cIiFoaWRlT3B0VmFsaWRhdG9yXCIgW2ZpZWxkXT0nb3RwJyBbZm9ybV09XCJvdHBGb3JtXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IEFjY2Vzc1JlcXVpcmVkLFxyXG4gICAgICAgICAgbWluOiBBY2Nlc3NWZXJpZnksXHJcbiAgICAgICAgICBtYXg6IEFjY2Vzc1ZlcmlmeVxyXG4gICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiAqbmdJZj1cImZhbHNlXCI+XHJcbiAgICAgICAgPGlvbi1jaGVja2JveCBzbG90PVwic3RhcnRcIiBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2VkXCI+PC9pb24tY2hlY2tib3g+XHJcbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj57eydtZmEuYnJvd3Nlci50cnVzdCd8dHJhbnNsYXRlfX08L2lvbi1sYWJlbD5cclxuICAgICAgPC9pb24taXRlbT5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JEdGxzXCI+e3tlcnJvckR0bHN9fTxiciAvPjxiciAvPjwvbWF0LWVycm9yPlxyXG4gICAgPGlvbi1sYWJlbCAqbmdJZj1cInN1Y2Nlc3NEdGxzXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWdyZWVuKVwiPnt7c3VjY2Vzc0R0bHN9fTxici8+PGJyIC8+PC9pb24tbGFiZWw+XHJcbiAgICA8aW9uLWxhYmVsICpuZ0lmPVwiIWJsb2NrZWRcIj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJjb3VudGVyLmdldFZhbHVlKCkgIT0gMSAmJiAhcmV0dXJuaW5nVXNlclwiPlxyXG4gICAgICAgIHt7J21mYS5jb2RlLm5vdC5yZWNlaXZlZCd8dHJhbnNsYXRlfX0gPGI+e3tjb3VudGVyLmdldFZhbHVlKCl9fSBzZWNvbmQocyk8L2I+LlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiY291bnRlci5nZXRWYWx1ZSgpID09IDEgJiYgIXJldHVybmluZ1VzZXJcIj5cclxuICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgKGtleXVwLmVudGVyKT1cInJlc2VuZEF1dGhDb2RlKG9wdGlvbi52YWx1ZSlcIiAoY2xpY2spPVwicmVzZW5kQXV0aENvZGUob3B0aW9uLnZhbHVlKVwiIGNsYXNzPVwibGlua1wiPnt7J21mYS5nZXQubmV3LmNvZGUnfHRyYW5zbGF0ZX19PC9hPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiY291bnRlci5nZXRWYWx1ZSgpID09IDEgJiYgcmV0dXJuaW5nVXNlclwiPlxyXG4gICAgICAgIDwhLS0gPGEgdGFiaW5kZXg9XCIwXCIgKGtleXVwLmVudGVyKT1cInJlc2VuZEF1dGhDb2RlKG9wdGlvbi52YWx1ZSlcIiAoY2xpY2spPVwicmVzZW5kQXV0aENvZGUob3B0aW9uLnZhbHVlKVwiIGNsYXNzPVwibGlua1wiPiB7eydtZmEucmVzZW5kLnZlcmlmaWNhdGlvbi5jb2RlJ3x0cmFuc2xhdGV9fTwvYT4gLS0+XHJcbiAgICAgICAge3snbWZhLnJlc2VuZC52ZXJpZmljYXRpb24uY29kZSd8dHJhbnNsYXRlfX1cclxuICAgICAgICA8IS0tIDxhIHRhYmluZGV4PVwiMFwiIChrZXl1cC5lbnRlcik9XCJyZXNlbmRBdXRoQ29kZSgnVEVYJylcIiAoY2xpY2spPVwicmVzZW5kQXV0aENvZGUoJ1RFWCcpXCIgY2xhc3M9XCJsaW5rXCI+IHt7J21mYS5vcHRpb24udGV4dCd8dHJhbnNsYXRlfX08L2E+XHJcbiAgICAgICAgPGI+IG9yPC9iPlxyXG4gICAgICAgIDxhIHRhYmluZGV4PVwiMFwiIChrZXl1cC5lbnRlcik9XCJyZXNlbmRBdXRoQ29kZSgnQ0FMJylcIiAoY2xpY2spPVwicmVzZW5kQXV0aENvZGUoJ0NBTCcpXCIgY2xhc3M9XCJsaW5rXCI+IHt7J21mYS5vcHRpb24uY2FsbCd8dHJhbnNsYXRlfX08L2E+IC0tPlxyXG5cclxuICAgICAgICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIjBcIiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInJlc2V0XCIgKGtleXVwLmVudGVyKT1cInJlc2VuZEF1dGhDb2RlKCdURVgnKVwiIChjbGljayk9XCJyZXNlbmRBdXRoQ29kZSgnVEVYJylcIiBjb2xvcj1cInN1Y2Nlc3NcIiBmaWxsPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAge3sgJ21mYS5vcHRpb24udGV4dCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGI+IG9yIDwvYj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIjBcIiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInJlc2V0XCIgKGtleXVwLmVudGVyKT1cInJlc2VuZEF1dGhDb2RlKCdDQUwnKVwiIChjbGljayk9XCJyZXNlbmRBdXRoQ29kZSgnQ0FMJylcIiBjb2xvcj1cInN1Y2Nlc3NcIiBmaWxsPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAge3sgJ21mYS5vcHRpb24uY2FsbCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgXHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvaW9uLWxhYmVsPlxyXG4gICAgPHAgKm5nSWY9XCIhcmV0dXJuaW5nVXNlclwiPjxhIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwibGlua1wiIChrZXl1cC5lbnRlcik9XCJzaG93SGVscCA9ICFzaG93SGVscDsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAoY2xpY2spPVwic2hvd0hlbHAgPSAhc2hvd0hlbHA7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+Q2FuJ3QgZ2V0IHRvIHlvdXIge3tvcHRpb24udmFsdWUgPT0gJ3RleHQnID8gJ2NlbGxwaG9uZScgOiAnZW1haWwnfX0/PC9hPjwvcD5cclxuICAgIDwhLS0gPHAgKm5nSWY9XCJyZXR1cm5pbmdVc2VyXCI+PGEgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJsaW5rXCIgKGtleXVwLmVudGVyKT1cImNsb3NlKClcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlVuYWJsZSB0byB2ZXJpZnk8L2E+PC9wPiAtLT5cclxuICAgIDxwICpuZ0lmPVwic2hvd0hlbHAgJiYgIXJldHVybmluZ1VzZXJcIj5cclxuICAgICAge3snbWZhLmdvb2QuZm9yLnRpbWUnfHRyYW5zbGF0ZX19PGJyLz5cclxuICAgICAgb3I8YnIvPlxyXG4gICAgICBJZiB5b3VyIHt7b3B0aW9uLnZhbHVlID09ICd0ZXh0JyA/ICdjZWxscGhvbmUgbnVtYmVyJyA6ICdlbWFpbCBhZGRyZXNzJ319IGhhcyBjaGFuZ2VkIGNhbGwgS0RPTCBhdCA3ODUtNTc1LTE0NjAsIE1vbmRheSB0aHJvdWdoIEZyaWRheSBmcm9tIDggYW0gdG8gNDozMCBwbS5cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHAtZm9vdGVyPlxyXG4gICAgPGRpdiAqbmdJZj1cImJsb2NrZWRcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtcmlnaHQgaW9uLXBhZGRpbmctYm90dG9tXCIgKm5nSWY9XCIhYmxvY2tlZCAmJiAhaGlkZUJ1dHRvbnNcIj5cclxuICAgICAgPGlvbi1idXR0b24gdGFiaW5kZXg9XCIwXCIgc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJyZXNldFwiIChrZXl1cC5lbnRlcik9XCJjbG9zZShmYWxzZSlcIiAoY2xpY2spPVwiY2xvc2UoZmFsc2UpXCIgY29sb3I9XCJzdWNjZXNzXCIgZmlsbD1cIm91dGxpbmVcIj5cclxuICAgICAgICB7eydjb21tb24uY2xvc2UnfHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgPGlvbi1idXR0b24gIHRhYmluZGV4PVwiMFwiIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGtleXVwLmVudGVyKT1cInNpZ25JbigpXCIgKGNsaWNrKT1cInNpZ25JbigpXCIgY29sb3I9XCJzdWNjZXNzXCIgKm5nSWY9XCIhcmVxdWVzdENvZGUgJiYgb3B0aW9uLnZhbHVlXCI+XHJcbiAgICAgICAge3snY29tbW9uLnN1Ym1pdCd8dHJhbnNsYXRlfX1cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIjBcIiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChrZXl1cC5lbnRlcik9XCJzdWJtaXQoKVwiIChjbGljayk9XCJzdWJtaXQoKVwiIGNvbG9yPVwic3VjY2Vzc1wiICpuZ0lmPVwicmVxdWVzdENvZGUgJiYgb3B0aW9uLnZhbHVlXCI+XHJcbiAgICAgICAge3snY29tbW9uLnN1Ym1pdCd8dHJhbnNsYXRlfX1cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLWZvb3Rlcj5cclxuPC9mb3JtPiJdfQ==
591
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9tZmEvbWZhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9tZmEvbWZhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUF3QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRixPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNEcEMsOEJBQXlFLGFBQUEsYUFBQSxlQUFBO0lBRzlDLFlBQTRCOztJQUFBLGlCQUFRO0lBQ3pELDBDQUErSDtJQUE3Qiw2S0FBWSxlQUFBLHNCQUFlLENBQUEsSUFBQztJQUFDLGlCQUFpQixFQUFBLEVBQUEsRUFBQTs7O0lBRDNILGVBQTRCO0lBQTVCLDBEQUE0QjtJQUNqQyxlQUFtQjtJQUFuQix3Q0FBbUIsOEJBQUE7OztJQVFuQyw0QkFBd0Q7SUFBQSxZQUEyQzs7SUFBQSx5QkFBRztJQUFBLFlBQTZCOztJQUFBLGlCQUFJLEVBQUE7OztJQUEvRSxlQUEyQztJQUEzQyxrRkFBMkM7SUFBRyxlQUE2QjtJQUE3Qiw0RkFBNkI7OztJQUNuSSw0QkFBdUQ7SUFBQSxZQUF5Qzs7SUFBQSx5QkFBRztJQUFBLFlBQXFCO0lBQUEsaUJBQUksRUFBQTs7O0lBQXJFLGVBQXlDO0lBQXpD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T0FBTztrQkFETixLQUFLO1lBR0ksS0FBSztrQkFBZCxNQUFNO1lBRUcsT0FBTztrQkFBaEIsTUFBTTtZQUVHLEtBQUs7a0JBQWQsTUFBTTs7a0ZBM0NJLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFcnJvck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Vycm9yTW9kZWwnO1xyXG5pbXBvcnQgeyBDb21ib09wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0NvbWJvTW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlck1vZGVsJztcclxuaW1wb3J0IHsgQ2FwdGNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXB0Y2hhL2NhcHRjaGEuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VjdXJpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VjdXJpdHktc2VydmljZS9zZWN1cml0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbWZhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWZhLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZmEuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWZhQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJvdHBGaWVsZFwiKSBvdHBGaWVsZDtcclxuICBwcml2YXRlIFJFU0VORF9DT0RFX0FDVElPTl9OQU1FID0gXCJNRkFfUkVTRU5EX0NPREVcIjtcclxuICBcclxuICBwdWJsaWMgc3VjY2Vzc0R0bHM7XHJcblxyXG4gIHB1YmxpYyBibG9ja2VkOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgaXNDaGVja2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBzaG93SGVscDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgaGlkZU9wdFZhbGlkYXRvciA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICB1c2VyIDogVXNlck1vZGVsO1xyXG5cclxuICAvL0lmIHNwZWNpZmllZCwgaXQgd2lsbCBjaGFuZ2UgdGhlIGRlZmF1bHQgaGVhZGluZyBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIG9uY2Ugc3BlY2lmaWVkIGluIHRoaXMgZmllbGQuXHJcbiAgQElucHV0KCkgaGVhZGluZyA6IHN0cmluZztcclxuXHJcbiAgLy9SZXF1ZXN0IG5ldyBhdXRoY29kZSB3aGVuIGNvbXBvbmVudHMgbG9hZC5cclxuICBASW5wdXQoKVxyXG4gIHJlcXVlc3RDb2RlIDogYm9vbGVhbjtcclxuXHJcbiAgLy9QYXNzIHRoaXMgZGF0YSBhbG9uZyB3aXRoIG91dHB1dCBzbyB0aGF0IGNhbGxpbmcgY29tcG9uZW50IGNhbiB0YWtlIGNhcmUgb2YgaXQuXHJcbiAgQElucHV0KClcclxuICBkYXRhIDogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1mYUVycm9yIDogRXJyb3JNb2RlbDtcclxuXHJcbiAgQElucHV0KClcclxuICBoaWRlQnV0dG9ucyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICByZXR1cm5pbmdVc2VyOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgZGlzcGxheSA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgY2xlYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgc3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBlcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHB1YmxpYyBvdHBGb3JtIDogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgcHVibGljIGVycm9yRHRscztcclxuXHJcbiAgcHVibGljIHRpbWUgPSA2MFxyXG4gIHB1YmxpYyB0aW1lckludGVydmFsID0gaW50ZXJ2YWwoMTAwMCk7IC8vMXNcclxuICBwdWJsaWMgdGltZXIgPSB0aW1lcig2MDAwMCk7IC8vOTBzXHJcbiAgcHVibGljIGNvdW50RG93biA9IHRoaXMudGltZXJJbnRlcnZhbC5waXBlKHRha2UodGhpcy50aW1lKSk7XHJcbiAgcHVibGljIGNvdW50ZXIgOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XHJcbiAgY291bnRlclN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHVibGljIG9wdGlvbnMgOiBDb21ib09wdGlvbltdID0gW1xyXG4gICAge3ZhbHVlIDogJ3RleHQnLCB0ZXh0IDogJ3RleHQnfSxcclxuICAgIHt2YWx1ZSA6ICdlbWFpbCcsIHRleHQgOiAnZW1haWwnfVxyXG4gIF07XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbHM6IExvZ2luU2VydmljZSwgcHVibGljIGZiIDogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdXRpbDogVXRpbFNlcnZpY2UsIHB1YmxpYyBuYXYgOiBOYXZDb250cm9sbGVyLCBwcml2YXRlIGNzOiBDYXB0Y2hhU2VydmljZSxcclxuICAgICAgICAgICAgICAgcHJpdmF0ZSBzczogU2VjdXJpdHlTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgICAgICAgICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkgeyBcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzLm1mYUVycm9yPy5jdXJyZW50VmFsdWUpe1xyXG4gICAgICB0aGlzLmVycm9yRHRscyA9IHRoaXMubWZhRXJyb3IubXNnO1xyXG4gICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzLmRpc3BsYXkuY3VycmVudFZhbHVlKSB7ICAvLyB3aW5kb3cgb3BlblxyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5jb3VudGVyU3Vic2NyaXB0aW9uKXtcclxuICAgICAgdGhpcy5jb3VudGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSk7XHJcbiAgICB0aGlzLmluaXRpbGl6ZUZvcm0oKTtcclxuICAgIC8vdGhpcy5zZXRDb3VudGRvd24oKTtcclxuICAgIGlmKHRoaXMucmVxdWVzdENvZGUpe1xyXG4gICAgICBsZXQgbWZhT3B0aW9ucyA9IHRoaXMudXNlcj8uc3VwcG9ydGVkTWZhVHlwZXM/LnNwbGl0KFwiLFwiKSB8fCBbJ2VtYWlsJ107XHJcbiAgICAgIGlmKG1mYU9wdGlvbnMubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgLy9hbGxvdyB1c2VyIHRvIGNob29zZSBvdHAgb3B0aW9uXHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICB0aGlzLnJlcXVlc3ROZXdBdXRoQ29kZSgnZW1haWwnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRDb3VudGRvd24oKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoXyA9PiB7XHJcbiAgICAgIHRoaXMub3RwRmllbGQuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfSwgMTAwKVxyXG4gIH1cclxuXHJcbiAgcmVxdWVzdE5ld0F1dGhDb2RlKG90cFR5cGUgOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5ibG9ja2VkID0gdHJ1ZTtcclxuICAgIHRoaXMubHMuZ2V0TmV3QXV0aENvZGUob3RwVHlwZSlcclxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBcIkFjY2VzcyBjb2RlIHNlbnQgc3VjY2Vzc2Z1bGx5LlwiO1xyXG4gICAgICAgICAgdGhpcy5jb3VudGVyLm5leHQoNjApO1xyXG4gICAgICAgICAgdGhpcy5zZXRDb3VudGRvd24oKTtcclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JEdGxzID0gZXJyLm1zZztcclxuICAgICAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2V0Q291bnRkb3duKCl7XHJcbiAgICBpZih0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24pe1xyXG4gICAgICB0aGlzLmNvdW50ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY291bnRlclN1YnNjcmlwdGlvbiA9IHRoaXMuY291bnREb3duLnN1YnNjcmliZSh2YWwgPT57XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudGltZSAtIHZhbDtcclxuICAgICAgdGhpcy5jb3VudGVyLm5leHQodmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbml0aWxpemVGb3JtKCl7XHJcbiAgICBsZXQgbWZhT3B0aW9ucyA9IHRoaXMudXNlcj8uc3VwcG9ydGVkTWZhVHlwZXM/LnNwbGl0KFwiLFwiKSB8fCBbJ2VtYWlsJ107XHJcbiAgICB0aGlzLm90cEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgJ290cCcgOiBbbnVsbCAsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgIFZhbGlkYXRvcnMubWluKDEwMF8wMDApLFZhbGlkYXRvcnMubWF4KDk5OV85OTkpXSldLFxyXG4gICAgICAnY2hlY2tlZCcgOiBbZmFsc2VdLFxyXG4gICAgICAnb3B0aW9uJyA6IFsgbWZhT3B0aW9ucyAmJiBtZmFPcHRpb25zLmxlbmd0aCA+IDEgPyBudWxsIDogbWZhT3B0aW9uc1swXV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG90cCgpe1xyXG4gICAgcmV0dXJuIHRoaXMub3RwRm9ybS5nZXQoJ290cCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9wdGlvbigpe1xyXG4gICAgcmV0dXJuIHRoaXMub3RwRm9ybS5nZXQoJ29wdGlvbicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNoZWNrZWQoKXtcclxuICAgIHJldHVybiB0aGlzLm90cEZvcm0uZ2V0KCdjaGVja2VkJyk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSh0cmlnZ2VyRXhpdEFQSSA9IHRydWUpe1xyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhci5lbWl0KHRyaWdnZXJFeGl0QVBJKSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKXtcclxuICAgIHRoaXMuaGlkZU9wdFZhbGlkYXRvciA9IGZhbHNlO1xyXG4gICAgaWYodGhpcy5vdHBGb3JtLmludmFsaWQpe1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLm90cEZvcm0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxzLnNldEF1dGhDb2RlKHRoaXMub3RwLnZhbHVlKTtcclxuICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG4gIFxyXG4gIHNpZ25Jbigpe1xyXG4gICAgdGhpcy5oaWRlT3B0VmFsaWRhdG9yID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLm90cEZvcm0uaW52YWxpZCl7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMub3RwRm9ybSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBhdXRoIDogYW55ID0ge307XHJcbiAgICBhdXRoLnVzZXJJZCA9IHRoaXMudXNlci51c2VybmFtZTtcclxuICAgIGF1dGgucGFzc3dvcmQgPSB0aGlzLnVzZXIucGFzc3dvcmQ7XHJcbiAgICBhdXRoLm90cCA9IHRoaXMub3RwLnZhbHVlO1xyXG4gICAgYXV0aC5sYW5ndWFnZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpO1xyXG4gICAgYXV0aC5pc3RydXN0ZWREZXZpY2UgPSB0aGlzLmNoZWNrZWQudmFsdWUgKyBcIlwiO1xyXG4gICAgdGhpcy5ibG9ja2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xyXG4gICAgdGhpcy5lcnJvckR0bHMgPSBudWxsO1xyXG4gICAgdGhpcy51dGlsXHJcbiAgICAgICAgLnNob3dMb2FkZXIoKVxyXG4gICAgICAgIC50aGVuKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxzLmxvZ2luQW5kQ2hlY2tGb3JNRkEoYXV0aClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHVzZXJNb2RlbCA6IFVzZXJNb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgICAgIHRoaXMubHMuc2V0VXNlcih1c2VyTW9kZWwpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgaWYoZXJyLm1zZ1swXS5pbmNsdWRlcyhcIkNsYWltYW50IEFjY291bnQgaXMgTG9ja2VkIC0gT1RQIGF0dGVtcHRzIGV4Y2VlZGVkXCIpKXtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJSZWRpcmVjdGluZyB0byBpZGVudGl0eSBwcm9vZmluZy5cIik7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoJ0NsYWltYW50IEFjY291bnQgaXMgTG9ja2VkIC0gT1RQIGF0dGVtcHRzIGhhcyBleGNlZWRlZCcpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgfVxyXG5cclxuICBzZW5kT3RwKGV2ZW50KXtcclxuICAgIHRoaXMucmVzZW5kQXV0aENvZGUoZXZlbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IEFjY2Vzc1ZlcmlmeSgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdtZmEuYWNjZXNzLnZlcmlmeS5zaXgnKTtcclxuICB9XHJcbiAgZ2V0IEFjY2Vzc1JlcXVpcmVkKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ21mYS5hY2Nlc3MucmVxdWlyZWQnKTtcclxuICB9XHJcblxyXG4gIGdldCBBY2Nlc3NDb25maXJtKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ21mYS5hY2Nlc3MuY29uZmlybScpO1xyXG4gIH1cclxuICByZXNlbmRBdXRoQ29kZShvdHBUeXBlIDogc3RyaW5nKXtcclxuICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xyXG4gICAgdGhpcy5lcnJvckR0bHMgPSBudWxsO1xyXG4gICAgdGhpcy5scy5nZW5lcmF0ZU90cCh0aGlzLnVzZXIudXNlcm5hbWUsIG90cFR5cGUpLnN1YnNjcmliZShcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuYmxvY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gJ0PDs2RpZ28gZGUgYWNjZXNvIGVudmlhZG8gY29ycmVjdGFtZW50ZS4nO1xyXG4gICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSAnQWNjZXNzIGNvZGUgc2VudCBzdWNjZXNzZnVsbHkuJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb3VudGVyLm5leHQoNjApO1xyXG4gICAgICAgIHRoaXMuc2V0Q291bnRkb3duKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDtcclxuICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwib3RwRm9ybVwiICNvdHBGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgPGg0IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxMHB4O1wiIGNsYXNzPVwiaGVhZGluZ1wiPnt7IGhlYWRpbmcgPyBoZWFkaW5nIDogQWNjZXNzQ29uZmlybX19PC9oND5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDtcIiAqbmdJZj1cIiFvcHRpb24udmFsdWUgJiYgIXJldHVybmluZ1VzZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZy10b3AgcC1mb3JtZ3JpZCBwLWdyaWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGlvbi10ZXh0LWxlZnRcIj5cclxuICAgICAgICA8bGFiZWwgZm9yPVwib3RwVHlwZVwiPnt7J21mYS5ob3cuc2VuZCd8dHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJvcHRpb25zXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJvcHRpb25cIiAob25DaGFuZ2UpPVwic2VuZE90cCgkZXZlbnQpXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDtcIiAqbmdJZj1cIm9wdGlvbi52YWx1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICA8aW9uLWxhYmVsPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9uLnZhbHVlID09ICdlbWFpbCcgJiYgIXJldHVybmluZ1VzZXJcIj57eydtZmEuY29kZS5zZW50LmVtYWlsJ3x0cmFuc2xhdGV9fTombmJzcDsgPGI+e3t1c2VyPy5lbWFpbElkIHwgbWFza0VtYWlsfX08L2I+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9uLnZhbHVlID09ICd0ZXh0JyAmJiAhcmV0dXJuaW5nVXNlclwiPnt7J21mYS5jb2RlLnNlbnQuY2VsbCd8dHJhbnNsYXRlfX0mbmJzcDsgPGI+e3t1c2VyPy5jZWxscGhvbmVOb319PC9iPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInJldHVybmluZ1VzZXJcIj57eydtZmEuY29kZS5zZW50LmNlbGwnfHRyYW5zbGF0ZX19Jm5ic3A7IDxiPnt7dXNlcj8uY2VsbHBob25lTm99fTwvYj48L3NwYW4+XHJcbiAgICAgIDwvaW9uLWxhYmVsPjxici8+PGJyLz5cclxuICAgICAgPGlvbi1sYWJlbCAqbmdJZj1cIm9wdGlvbi52YWx1ZSA9PSAnZW1haWwnICYmICFyZXR1cm5pbmdVc2VyXCI+XHJcbiAgICAgICAge3snbWZhLmNvZGUuc2VudC5qdW5rJ3x0cmFuc2xhdGV9fVxyXG4gICAgICA8L2lvbi1sYWJlbD5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24udmFsdWUgPT0gJ2VtYWlsJyAmJiAhcmV0dXJuaW5nVXNlclwiPjxici8+PGJyLz48L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpb24tdGV4dC1sZWZ0XCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImF1dGhDb2RlXCIgKm5nSWY9XCIhcmV0dXJuaW5nVXNlclwiPnt7J21mYS5lbnRlci5jb2RlJ3x0cmFuc2xhdGV9fTwvbGFiZWw+PGJyLz5cclxuICAgICAgICA8bGFiZWwgZm9yPVwiYXV0aENvZGVcIiAqbmdJZj1cInJldHVybmluZ1VzZXJcIj57eydtZmEuZW50ZXIuY29kZS5yZWNlaXZlZCd8dHJhbnNsYXRlfX08L2xhYmVsPjxici8+XHJcbiAgICAgICAgPHAtaW5wdXROdW1iZXIgKGNsaWNrKT1cImhpZGVPcHRWYWxpZGF0b3I9ZmFsc2VcIiAoa2V5dXApPVwiaGlkZU9wdFZhbGlkYXRvcj1mYWxzZVwiICNvdHBGaWVsZCBmb3JtQ29udHJvbE5hbWU9XCJvdHBcIiBtYXhsZW5ndGg9XCI2XCIgbWlubGVuZ3RoPVwiNlwiIG1vZGU9XCJkZWNpbWFsXCIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgc2l6ZT1cIjZcIiBbaW5wdXRJZF09XCInYXV0aENvZGUnXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXVwLmVudGVyKT1cIighcmVxdWVzdENvZGUgJiYgb3B0aW9uLnZhbHVlKSA/IHNpZ25JbigpIDogc3VibWl0KClcIj5cclxuICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPGFwcC1lcnJvciAqbmdJZj1cIiFoaWRlT3B0VmFsaWRhdG9yXCIgW2ZpZWxkXT0nb3RwJyBbZm9ybV09XCJvdHBGb3JtXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IEFjY2Vzc1JlcXVpcmVkLFxyXG4gICAgICAgICAgbWluOiBBY2Nlc3NWZXJpZnksXHJcbiAgICAgICAgICBtYXg6IEFjY2Vzc1ZlcmlmeVxyXG4gICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiAqbmdJZj1cImZhbHNlXCI+XHJcbiAgICAgICAgPGlvbi1jaGVja2JveCBzbG90PVwic3RhcnRcIiBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2VkXCI+PC9pb24tY2hlY2tib3g+XHJcbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj57eydtZmEuYnJvd3Nlci50cnVzdCd8dHJhbnNsYXRlfX08L2lvbi1sYWJlbD5cclxuICAgICAgPC9pb24taXRlbT5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JEdGxzXCI+e3tlcnJvckR0bHN9fTxiciAvPjxiciAvPjwvbWF0LWVycm9yPlxyXG4gICAgPGlvbi1sYWJlbCAqbmdJZj1cInN1Y2Nlc3NEdGxzXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWdyZWVuKVwiPnt7c3VjY2Vzc0R0bHN9fTxici8+PGJyIC8+PC9pb24tbGFiZWw+XHJcbiAgICA8aW9uLWxhYmVsICpuZ0lmPVwiIWJsb2NrZWRcIj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJjb3VudGVyLmdldFZhbHVlKCkgIT0gMSAmJiAhcmV0dXJuaW5nVXNlclwiPlxyXG4gICAgICAgIHt7J21mYS5jb2RlLm5vdC5yZWNlaXZlZCd8dHJhbnNsYXRlfX0gPGI+e3tjb3VudGVyLmdldFZhbHVlKCl9fSBzZWNvbmQocyk8L2I+LlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiY291bnRlci5nZXRWYWx1ZSgpID09IDEgJiYgIXJldHVybmluZ1VzZXJcIj5cclxuICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgKGtleXVwLmVudGVyKT1cInJlc2VuZEF1dGhDb2RlKG9wdGlvbi52YWx1ZSlcIiAoY2xpY2spPVwicmVzZW5kQXV0aENvZGUob3B0aW9uLnZhbHVlKVwiIGNsYXNzPVwibGlua1wiPnt7J21mYS5nZXQubmV3LmNvZGUnfHRyYW5zbGF0ZX19PC9hPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiY291bnRlci5nZXRWYWx1ZSgpID09IDEgJiYgcmV0dXJuaW5nVXNlclwiPlxyXG4gICAgICAgIDwhLS0gPGEgdGFiaW5kZXg9XCIwXCIgKGtleXVwLmVudGVyKT1cInJlc2VuZEF1dGhDb2RlKG9wdGlvbi52YWx1ZSlcIiAoY2xpY2spPVwicmVzZW5kQXV0aENvZGUob3B0aW9uLnZhbHVlKVwiIGNsYXNzPVwibGlua1wiPiB7eydtZmEucmVzZW5kLnZlcmlmaWNhdGlvbi5jb2RlJ3x0cmFuc2xhdGV9fTwvYT4gLS0+XHJcbiAgICAgICAge3snbWZhLnJlc2VuZC52ZXJpZmljYXRpb24uY29kZSd8dHJhbnNsYXRlfX1cclxuICAgICAgICA8IS0tIDxhIHRhYmluZGV4PVwiMFwiIChrZXl1cC5lbnRlcik9XCJyZXNlbmRBdXRoQ29kZSgnVEVYJylcIiAoY2xpY2spPVwicmVzZW5kQXV0aENvZGUoJ1RFWCcpXCIgY2xhc3M9XCJsaW5rXCI+IHt7J21mYS5vcHRpb24udGV4dCd8dHJhbnNsYXRlfX08L2E+XHJcbiAgICAgICAgPGI+IG9yPC9iPlxyXG4gICAgICAgIDxhIHRhYmluZGV4PVwiMFwiIChrZXl1cC5lbnRlcik9XCJyZXNlbmRBdXRoQ29kZSgnQ0FMJylcIiAoY2xpY2spPVwicmVzZW5kQXV0aENvZGUoJ0NBTCcpXCIgY2xhc3M9XCJsaW5rXCI+IHt7J21mYS5vcHRpb24uY2FsbCd8dHJhbnNsYXRlfX08L2E+IC0tPlxyXG5cclxuICAgICAgICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIjBcIiBzaGFwZT1cInJvdW5kXCIgKGtleXVwLmVudGVyKT1cInJlc2VuZEF1dGhDb2RlKCdURVgnKVwiIChjbGljayk9XCJyZXNlbmRBdXRoQ29kZSgnVEVYJylcIiBjb2xvcj1cInN1Y2Nlc3NcIiBmaWxsPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAge3sgJ21mYS5vcHRpb24udGV4dCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPGI+IG9yIDwvYj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIjBcIiBzaGFwZT1cInJvdW5kXCIgKGtleXVwLmVudGVyKT1cInJlc2VuZEF1dGhDb2RlKCdDQUwnKVwiIChjbGljayk9XCJyZXNlbmRBdXRoQ29kZSgnQ0FMJylcIiBjb2xvcj1cInN1Y2Nlc3NcIiBmaWxsPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAge3sgJ21mYS5vcHRpb24uY2FsbCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgXHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvaW9uLWxhYmVsPlxyXG4gICAgPHAgKm5nSWY9XCIhcmV0dXJuaW5nVXNlclwiPjxhIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwibGlua1wiIChrZXl1cC5lbnRlcik9XCJzaG93SGVscCA9ICFzaG93SGVscDsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAoY2xpY2spPVwic2hvd0hlbHAgPSAhc2hvd0hlbHA7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+Q2FuJ3QgZ2V0IHRvIHlvdXIge3tvcHRpb24udmFsdWUgPT0gJ3RleHQnID8gJ2NlbGxwaG9uZScgOiAnZW1haWwnfX0/PC9hPjwvcD5cclxuICAgIDwhLS0gPHAgKm5nSWY9XCJyZXR1cm5pbmdVc2VyXCI+PGEgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJsaW5rXCIgKGtleXVwLmVudGVyKT1cImNsb3NlKClcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlVuYWJsZSB0byB2ZXJpZnk8L2E+PC9wPiAtLT5cclxuICAgIDxwICpuZ0lmPVwic2hvd0hlbHAgJiYgIXJldHVybmluZ1VzZXJcIj5cclxuICAgICAge3snbWZhLmdvb2QuZm9yLnRpbWUnfHRyYW5zbGF0ZX19PGJyLz5cclxuICAgICAgb3I8YnIvPlxyXG4gICAgICBJZiB5b3VyIHt7b3B0aW9uLnZhbHVlID09ICd0ZXh0JyA/ICdjZWxscGhvbmUgbnVtYmVyJyA6ICdlbWFpbCBhZGRyZXNzJ319IGhhcyBjaGFuZ2VkIGNhbGwgS0RPTCBhdCA3ODUtNTc1LTE0NjAsIE1vbmRheSB0aHJvdWdoIEZyaWRheSBmcm9tIDggYW0gdG8gNDozMCBwbS5cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHAtZm9vdGVyPlxyXG4gICAgPGRpdiAqbmdJZj1cImJsb2NrZWRcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtcmlnaHQgaW9uLXBhZGRpbmctYm90dG9tXCIgKm5nSWY9XCIhYmxvY2tlZCAmJiAhaGlkZUJ1dHRvbnNcIj5cclxuICAgICAgPGlvbi1idXR0b24gdGFiaW5kZXg9XCIwXCIgc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJyZXNldFwiIChrZXl1cC5lbnRlcik9XCJjbG9zZShmYWxzZSlcIiAoY2xpY2spPVwiY2xvc2UoZmFsc2UpXCIgY29sb3I9XCJzdWNjZXNzXCIgZmlsbD1cIm91dGxpbmVcIj5cclxuICAgICAgICB7eydjb21tb24uY2xvc2UnfHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgPGlvbi1idXR0b24gIHRhYmluZGV4PVwiMFwiIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGtleXVwLmVudGVyKT1cInNpZ25JbigpXCIgKGNsaWNrKT1cInNpZ25JbigpXCIgY29sb3I9XCJzdWNjZXNzXCIgKm5nSWY9XCIhcmVxdWVzdENvZGUgJiYgb3B0aW9uLnZhbHVlXCI+XHJcbiAgICAgICAge3snY29tbW9uLnN1Ym1pdCd8dHJhbnNsYXRlfX1cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIjBcIiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChrZXl1cC5lbnRlcik9XCJzdWJtaXQoKVwiIChjbGljayk9XCJzdWJtaXQoKVwiIGNvbG9yPVwic3VjY2Vzc1wiICpuZ0lmPVwicmVxdWVzdENvZGUgJiYgb3B0aW9uLnZhbHVlXCI+XHJcbiAgICAgICAge3snY29tbW9uLnN1Ym1pdCd8dHJhbnNsYXRlfX1cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLWZvb3Rlcj5cclxuPC9mb3JtPiJdfQ==
@@ -10188,7 +10188,7 @@ function MfaComponent_div_7_Template(rf, ctx) { if (rf & 1) {
10188
10188
  } }
10189
10189
  function MfaComponent_div_8_ion_button_4_Template(rf, ctx) { if (rf & 1) {
10190
10190
  const _r43 = i0.ɵɵgetCurrentView();
10191
- i0.ɵɵelementStart(0, "ion-button", 31);
10191
+ i0.ɵɵelementStart(0, "ion-button", 32);
10192
10192
  i0.ɵɵlistener("keyup.enter", function MfaComponent_div_8_ion_button_4_Template_ion_button_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r42 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r42.signIn()); })("click", function MfaComponent_div_8_ion_button_4_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r44 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r44.signIn()); });
10193
10193
  i0.ɵɵtext(1);
10194
10194
  i0.ɵɵpipe(2, "translate");
@@ -10199,7 +10199,7 @@ function MfaComponent_div_8_ion_button_4_Template(rf, ctx) { if (rf & 1) {
10199
10199
  } }
10200
10200
  function MfaComponent_div_8_ion_button_5_Template(rf, ctx) { if (rf & 1) {
10201
10201
  const _r46 = i0.ɵɵgetCurrentView();
10202
- i0.ɵɵelementStart(0, "ion-button", 31);
10202
+ i0.ɵɵelementStart(0, "ion-button", 32);
10203
10203
  i0.ɵɵlistener("keyup.enter", function MfaComponent_div_8_ion_button_5_Template_ion_button_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r45.submit()); })("click", function MfaComponent_div_8_ion_button_5_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r46); const ctx_r47 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r47.submit()); });
10204
10204
  i0.ɵɵtext(1);
10205
10205
  i0.ɵɵpipe(2, "translate");
@@ -10210,12 +10210,12 @@ function MfaComponent_div_8_ion_button_5_Template(rf, ctx) { if (rf & 1) {
10210
10210
  } }
10211
10211
  function MfaComponent_div_8_Template(rf, ctx) { if (rf & 1) {
10212
10212
  const _r49 = i0.ɵɵgetCurrentView();
10213
- i0.ɵɵelementStart(0, "div", 29)(1, "ion-button", 26);
10213
+ i0.ɵɵelementStart(0, "div", 29)(1, "ion-button", 30);
10214
10214
  i0.ɵɵlistener("keyup.enter", function MfaComponent_div_8_Template_ion_button_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r48.close(false)); })("click", function MfaComponent_div_8_Template_ion_button_click_1_listener() { i0.ɵɵrestoreView(_r49); const ctx_r50 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r50.close(false)); });
10215
10215
  i0.ɵɵtext(2);
10216
10216
  i0.ɵɵpipe(3, "translate");
10217
10217
  i0.ɵɵelementEnd();
10218
- i0.ɵɵtemplate(4, MfaComponent_div_8_ion_button_4_Template, 3, 3, "ion-button", 30)(5, MfaComponent_div_8_ion_button_5_Template, 3, 3, "ion-button", 30);
10218
+ i0.ɵɵtemplate(4, MfaComponent_div_8_ion_button_4_Template, 3, 3, "ion-button", 31)(5, MfaComponent_div_8_ion_button_5_Template, 3, 3, "ion-button", 31);
10219
10219
  i0.ɵɵelementEnd();
10220
10220
  } if (rf & 2) {
10221
10221
  const ctx_r4 = i0.ɵɵnextContext();
@@ -10422,7 +10422,7 @@ class MfaComponent {
10422
10422
  } if (rf & 2) {
10423
10423
  let _t;
10424
10424
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.otpField = _t.first);
10425
- } }, inputs: { user: "user", heading: "heading", requestCode: "requestCode", data: "data", mfaError: "mfaError", hideButtons: "hideButtons", returningUser: "returningUser", display: "display" }, outputs: { clear: "clear", success: "success", error: "error" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 6, consts: [[3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "heading", 2, "padding-left", "10px"], ["style", "padding-left: 10px;", 4, "ngIf"], ["class", "ion-text-center", 4, "ngIf"], ["class", "ion-text-right ion-padding-bottom", 4, "ngIf"], [2, "padding-left", "10px"], [1, "ion-padding-top", "p-formgrid", "p-grid"], [1, "field", "ion-text-left"], ["for", "otpType"], ["optionLabel", "text", "optionValue", "value", 3, "options", "formControl", "onChange"], [1, "ion-padding-top"], [4, "ngIf"], ["for", "authCode", 4, "ngIf"], ["formControlName", "otp", "maxlength", "6", "minlength", "6", "mode", "decimal", "size", "6", "autocomplete", "off", 3, "useGrouping", "inputId", "click", "keyup", "keyup.enter"], ["otpField", ""], [3, "field", "form", "errDef", 4, "ngIf"], ["lines", "none", 4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["for", "authCode"], [3, "field", "form", "errDef"], ["lines", "none"], ["slot", "start", "formControlName", "checked"], [1, "ion-text-wrap"], [2, "color", "var(--ion-color-green)"], ["tabindex", "0", 1, "link", 3, "keyup.enter", "click"], ["tabindex", "0", "shape", "round", "type", "reset", "color", "success", "fill", "outline", 3, "keyup.enter", "click"], [1, "ion-text-center"], ["name", "dots"], [1, "ion-text-right", "ion-padding-bottom"], ["tabindex", "0", "shape", "round", "type", "submit", "color", "success", 3, "keyup.enter", "click", 4, "ngIf"], ["tabindex", "0", "shape", "round", "type", "submit", "color", "success", 3, "keyup.enter", "click"]], template: function MfaComponent_Template(rf, ctx) { if (rf & 1) {
10425
+ } }, inputs: { user: "user", heading: "heading", requestCode: "requestCode", data: "data", mfaError: "mfaError", hideButtons: "hideButtons", returningUser: "returningUser", display: "display" }, outputs: { clear: "clear", success: "success", error: "error" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 6, consts: [[3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "heading", 2, "padding-left", "10px"], ["style", "padding-left: 10px;", 4, "ngIf"], ["class", "ion-text-center", 4, "ngIf"], ["class", "ion-text-right ion-padding-bottom", 4, "ngIf"], [2, "padding-left", "10px"], [1, "ion-padding-top", "p-formgrid", "p-grid"], [1, "field", "ion-text-left"], ["for", "otpType"], ["optionLabel", "text", "optionValue", "value", 3, "options", "formControl", "onChange"], [1, "ion-padding-top"], [4, "ngIf"], ["for", "authCode", 4, "ngIf"], ["formControlName", "otp", "maxlength", "6", "minlength", "6", "mode", "decimal", "size", "6", "autocomplete", "off", 3, "useGrouping", "inputId", "click", "keyup", "keyup.enter"], ["otpField", ""], [3, "field", "form", "errDef", 4, "ngIf"], ["lines", "none", 4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["for", "authCode"], [3, "field", "form", "errDef"], ["lines", "none"], ["slot", "start", "formControlName", "checked"], [1, "ion-text-wrap"], [2, "color", "var(--ion-color-green)"], ["tabindex", "0", 1, "link", 3, "keyup.enter", "click"], ["tabindex", "0", "shape", "round", "color", "success", "fill", "outline", 3, "keyup.enter", "click"], [1, "ion-text-center"], ["name", "dots"], [1, "ion-text-right", "ion-padding-bottom"], ["tabindex", "0", "shape", "round", "type", "reset", "color", "success", "fill", "outline", 3, "keyup.enter", "click"], ["tabindex", "0", "shape", "round", "type", "submit", "color", "success", 3, "keyup.enter", "click", 4, "ngIf"], ["tabindex", "0", "shape", "round", "type", "submit", "color", "success", 3, "keyup.enter", "click"]], template: function MfaComponent_Template(rf, ctx) { if (rf & 1) {
10426
10426
  i0.ɵɵelementStart(0, "form", 0, 1)(2, "h4", 2);
10427
10427
  i0.ɵɵtext(3);
10428
10428
  i0.ɵɵelementEnd();
@@ -10446,7 +10446,7 @@ class MfaComponent {
10446
10446
  }
10447
10447
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MfaComponent, [{
10448
10448
  type: Component,
10449
- args: [{ selector: 'app-mfa', template: "<form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <h4 style=\"padding-left: 10px;\" class=\"heading\">{{ heading ? heading : AccessConfirm}}</h4>\r\n\r\n <div style=\"padding-left: 10px;\" *ngIf=\"!option.value && !returningUser\">\r\n <div class=\"ion-padding-top p-formgrid p-grid\">\r\n <div class=\"field ion-text-left\">\r\n <label for=\"otpType\">{{'mfa.how.send'|translate}}</label>\r\n <p-selectButton [options]=\"options\" optionLabel=\"text\" optionValue=\"value\" [formControl]=\"option\" (onChange)=\"sendOtp($event)\"></p-selectButton>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div style=\"padding-left: 10px;\" *ngIf=\"option.value\">\r\n <div class=\"ion-padding-top\">\r\n <ion-label>\r\n <span *ngIf=\"option.value == 'email' && !returningUser\">{{'mfa.code.sent.email'|translate}}:&nbsp; <b>{{user?.emailId | maskEmail}}</b></span>\r\n <span *ngIf=\"option.value == 'text' && !returningUser\">{{'mfa.code.sent.cell'|translate}}&nbsp; <b>{{user?.cellphoneNo}}</b></span>\r\n <span *ngIf=\"returningUser\">{{'mfa.code.sent.cell'|translate}}&nbsp; <b>{{user?.cellphoneNo}}</b></span>\r\n </ion-label><br/><br/>\r\n <ion-label *ngIf=\"option.value == 'email' && !returningUser\">\r\n {{'mfa.code.sent.junk'|translate}}\r\n </ion-label>\r\n <span *ngIf=\"option.value == 'email' && !returningUser\"><br/><br/></span>\r\n <div class=\"field ion-text-left\">\r\n <label for=\"authCode\" *ngIf=\"!returningUser\">{{'mfa.enter.code'|translate}}</label><br/>\r\n <label for=\"authCode\" *ngIf=\"returningUser\">{{'mfa.enter.code.received'|translate}}</label><br/>\r\n <p-inputNumber (click)=\"hideOptValidator=false\" (keyup)=\"hideOptValidator=false\" #otpField formControlName=\"otp\" maxlength=\"6\" minlength=\"6\" mode=\"decimal\" [useGrouping]=\"false\" size=\"6\" [inputId]=\"'authCode'\" autocomplete=\"off\" (keyup.enter)=\"(!requestCode && option.value) ? signIn() : submit()\">\r\n </p-inputNumber>\r\n <app-error *ngIf=\"!hideOptValidator\" [field]='otp' [form]=\"otpForm\" [errDef]=\"{ \r\n required: AccessRequired,\r\n min: AccessVerify,\r\n max: AccessVerify\r\n }\"></app-error>\r\n </div>\r\n <ion-item lines=\"none\" *ngIf=\"false\">\r\n <ion-checkbox slot=\"start\" formControlName=\"checked\"></ion-checkbox>\r\n <ion-label class=\"ion-text-wrap\">{{'mfa.browser.trust'|translate}}</ion-label>\r\n </ion-item>\r\n </div>\r\n \r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}<br /><br /></mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br/><br /></ion-label>\r\n <ion-label *ngIf=\"!blocked\">\r\n <span *ngIf=\"counter.getValue() != 1 && !returningUser\">\r\n {{'mfa.code.not.received'|translate}} <b>{{counter.getValue()}} second(s)</b>.\r\n </span>\r\n <span *ngIf=\"counter.getValue() == 1 && !returningUser\">\r\n <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode(option.value)\" (click)=\"resendAuthCode(option.value)\" class=\"link\">{{'mfa.get.new.code'|translate}}</a>\r\n </span>\r\n <span *ngIf=\"counter.getValue() == 1 && returningUser\">\r\n <!-- <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode(option.value)\" (click)=\"resendAuthCode(option.value)\" class=\"link\"> {{'mfa.resend.verification.code'|translate}}</a> -->\r\n {{'mfa.resend.verification.code'|translate}}\r\n <!-- <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode('TEX')\" (click)=\"resendAuthCode('TEX')\" class=\"link\"> {{'mfa.option.text'|translate}}</a>\r\n <b> or</b>\r\n <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode('CAL')\" (click)=\"resendAuthCode('CAL')\" class=\"link\"> {{'mfa.option.call'|translate}}</a> -->\r\n\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"reset\" (keyup.enter)=\"resendAuthCode('TEX')\" (click)=\"resendAuthCode('TEX')\" color=\"success\" fill=\"outline\">\r\n {{ 'mfa.option.text' | translate }}\r\n </ion-button>\r\n <b> or </b>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"reset\" (keyup.enter)=\"resendAuthCode('CAL')\" (click)=\"resendAuthCode('CAL')\" color=\"success\" fill=\"outline\">\r\n {{ 'mfa.option.call' | translate }}\r\n </ion-button>\r\n \r\n </span>\r\n </ion-label>\r\n <p *ngIf=\"!returningUser\"><a tabindex=\"0\" class=\"link\" (keyup.enter)=\"showHelp = !showHelp; $event.preventDefault()\" (click)=\"showHelp = !showHelp; $event.preventDefault()\">Can't get to your {{option.value == 'text' ? 'cellphone' : 'email'}}?</a></p>\r\n <!-- <p *ngIf=\"returningUser\"><a tabindex=\"0\" class=\"link\" (keyup.enter)=\"close()\" (click)=\"close()\">Unable to verify</a></p> -->\r\n <p *ngIf=\"showHelp && !returningUser\">\r\n {{'mfa.good.for.time'|translate}}<br/>\r\n or<br/>\r\n If your {{option.value == 'text' ? 'cellphone number' : 'email address'}} has changed call KDOL at 785-575-1460, Monday through Friday from 8 am to 4:30 pm.\r\n </p>\r\n </div>\r\n\r\n <p-footer>\r\n <div *ngIf=\"blocked\" class=\"ion-text-center\">\r\n <ion-spinner name=\"dots\"></ion-spinner>\r\n </div>\r\n <div class=\"ion-text-right ion-padding-bottom\" *ngIf=\"!blocked && !hideButtons\">\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"reset\" (keyup.enter)=\"close(false)\" (click)=\"close(false)\" color=\"success\" fill=\"outline\">\r\n {{'common.close'|translate}}\r\n </ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" (keyup.enter)=\"signIn()\" (click)=\"signIn()\" color=\"success\" *ngIf=\"!requestCode && option.value\">\r\n {{'common.submit'|translate}}\r\n </ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" (keyup.enter)=\"submit()\" (click)=\"submit()\" color=\"success\" *ngIf=\"requestCode && option.value\">\r\n {{'common.submit'|translate}}\r\n </ion-button>\r\n </div>\r\n </p-footer>\r\n</form>", styles: [":host ::ng-deep .panel{box-shadow:none!important}\n"] }]
10449
+ args: [{ selector: 'app-mfa', template: "<form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <h4 style=\"padding-left: 10px;\" class=\"heading\">{{ heading ? heading : AccessConfirm}}</h4>\r\n\r\n <div style=\"padding-left: 10px;\" *ngIf=\"!option.value && !returningUser\">\r\n <div class=\"ion-padding-top p-formgrid p-grid\">\r\n <div class=\"field ion-text-left\">\r\n <label for=\"otpType\">{{'mfa.how.send'|translate}}</label>\r\n <p-selectButton [options]=\"options\" optionLabel=\"text\" optionValue=\"value\" [formControl]=\"option\" (onChange)=\"sendOtp($event)\"></p-selectButton>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div style=\"padding-left: 10px;\" *ngIf=\"option.value\">\r\n <div class=\"ion-padding-top\">\r\n <ion-label>\r\n <span *ngIf=\"option.value == 'email' && !returningUser\">{{'mfa.code.sent.email'|translate}}:&nbsp; <b>{{user?.emailId | maskEmail}}</b></span>\r\n <span *ngIf=\"option.value == 'text' && !returningUser\">{{'mfa.code.sent.cell'|translate}}&nbsp; <b>{{user?.cellphoneNo}}</b></span>\r\n <span *ngIf=\"returningUser\">{{'mfa.code.sent.cell'|translate}}&nbsp; <b>{{user?.cellphoneNo}}</b></span>\r\n </ion-label><br/><br/>\r\n <ion-label *ngIf=\"option.value == 'email' && !returningUser\">\r\n {{'mfa.code.sent.junk'|translate}}\r\n </ion-label>\r\n <span *ngIf=\"option.value == 'email' && !returningUser\"><br/><br/></span>\r\n <div class=\"field ion-text-left\">\r\n <label for=\"authCode\" *ngIf=\"!returningUser\">{{'mfa.enter.code'|translate}}</label><br/>\r\n <label for=\"authCode\" *ngIf=\"returningUser\">{{'mfa.enter.code.received'|translate}}</label><br/>\r\n <p-inputNumber (click)=\"hideOptValidator=false\" (keyup)=\"hideOptValidator=false\" #otpField formControlName=\"otp\" maxlength=\"6\" minlength=\"6\" mode=\"decimal\" [useGrouping]=\"false\" size=\"6\" [inputId]=\"'authCode'\" autocomplete=\"off\" (keyup.enter)=\"(!requestCode && option.value) ? signIn() : submit()\">\r\n </p-inputNumber>\r\n <app-error *ngIf=\"!hideOptValidator\" [field]='otp' [form]=\"otpForm\" [errDef]=\"{ \r\n required: AccessRequired,\r\n min: AccessVerify,\r\n max: AccessVerify\r\n }\"></app-error>\r\n </div>\r\n <ion-item lines=\"none\" *ngIf=\"false\">\r\n <ion-checkbox slot=\"start\" formControlName=\"checked\"></ion-checkbox>\r\n <ion-label class=\"ion-text-wrap\">{{'mfa.browser.trust'|translate}}</ion-label>\r\n </ion-item>\r\n </div>\r\n \r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}<br /><br /></mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br/><br /></ion-label>\r\n <ion-label *ngIf=\"!blocked\">\r\n <span *ngIf=\"counter.getValue() != 1 && !returningUser\">\r\n {{'mfa.code.not.received'|translate}} <b>{{counter.getValue()}} second(s)</b>.\r\n </span>\r\n <span *ngIf=\"counter.getValue() == 1 && !returningUser\">\r\n <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode(option.value)\" (click)=\"resendAuthCode(option.value)\" class=\"link\">{{'mfa.get.new.code'|translate}}</a>\r\n </span>\r\n <span *ngIf=\"counter.getValue() == 1 && returningUser\">\r\n <!-- <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode(option.value)\" (click)=\"resendAuthCode(option.value)\" class=\"link\"> {{'mfa.resend.verification.code'|translate}}</a> -->\r\n {{'mfa.resend.verification.code'|translate}}\r\n <!-- <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode('TEX')\" (click)=\"resendAuthCode('TEX')\" class=\"link\"> {{'mfa.option.text'|translate}}</a>\r\n <b> or</b>\r\n <a tabindex=\"0\" (keyup.enter)=\"resendAuthCode('CAL')\" (click)=\"resendAuthCode('CAL')\" class=\"link\"> {{'mfa.option.call'|translate}}</a> -->\r\n\r\n <ion-button tabindex=\"0\" shape=\"round\" (keyup.enter)=\"resendAuthCode('TEX')\" (click)=\"resendAuthCode('TEX')\" color=\"success\" fill=\"outline\">\r\n {{ 'mfa.option.text' | translate }}\r\n </ion-button>\r\n <b> or </b>\r\n <ion-button tabindex=\"0\" shape=\"round\" (keyup.enter)=\"resendAuthCode('CAL')\" (click)=\"resendAuthCode('CAL')\" color=\"success\" fill=\"outline\">\r\n {{ 'mfa.option.call' | translate }}\r\n </ion-button>\r\n \r\n </span>\r\n </ion-label>\r\n <p *ngIf=\"!returningUser\"><a tabindex=\"0\" class=\"link\" (keyup.enter)=\"showHelp = !showHelp; $event.preventDefault()\" (click)=\"showHelp = !showHelp; $event.preventDefault()\">Can't get to your {{option.value == 'text' ? 'cellphone' : 'email'}}?</a></p>\r\n <!-- <p *ngIf=\"returningUser\"><a tabindex=\"0\" class=\"link\" (keyup.enter)=\"close()\" (click)=\"close()\">Unable to verify</a></p> -->\r\n <p *ngIf=\"showHelp && !returningUser\">\r\n {{'mfa.good.for.time'|translate}}<br/>\r\n or<br/>\r\n If your {{option.value == 'text' ? 'cellphone number' : 'email address'}} has changed call KDOL at 785-575-1460, Monday through Friday from 8 am to 4:30 pm.\r\n </p>\r\n </div>\r\n\r\n <p-footer>\r\n <div *ngIf=\"blocked\" class=\"ion-text-center\">\r\n <ion-spinner name=\"dots\"></ion-spinner>\r\n </div>\r\n <div class=\"ion-text-right ion-padding-bottom\" *ngIf=\"!blocked && !hideButtons\">\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"reset\" (keyup.enter)=\"close(false)\" (click)=\"close(false)\" color=\"success\" fill=\"outline\">\r\n {{'common.close'|translate}}\r\n </ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" (keyup.enter)=\"signIn()\" (click)=\"signIn()\" color=\"success\" *ngIf=\"!requestCode && option.value\">\r\n {{'common.submit'|translate}}\r\n </ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" (keyup.enter)=\"submit()\" (click)=\"submit()\" color=\"success\" *ngIf=\"requestCode && option.value\">\r\n {{'common.submit'|translate}}\r\n </ion-button>\r\n </div>\r\n </p-footer>\r\n</form>", styles: [":host ::ng-deep .panel{box-shadow:none!important}\n"] }]
10450
10450
  }], () => [{ type: LoginService }, { type: i1$6.UntypedFormBuilder }, { type: UtilService }, { type: i1$3.NavController }, { type: CaptchaService }, { type: SecurityService }, { type: i4.Router }, { type: i6$1.TranslateService }], { otpField: [{
10451
10451
  type: ViewChild,
10452
10452
  args: ["otpField"]