kwikid-forms 0.6.51 → 0.7.0

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.
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { Component, EventEmitter, Input, Output } from "@angular/core";
3
- import { checkObjectKeyExists, checkObjectPathExists, isNull, isUndefined, logMethod, mergeObjects, setValueToObjectPath } from "kwikid-toolkit";
3
+ import { checkObjectKeyExists, checkObjectPathExists, getObjectDeepCopy, isNull, isUndefined, logMethod, mergeObjects, setValueToObjectPath } from "kwikid-toolkit";
4
4
  import { getLanguage, updateLanguage } from "../config-converter/config-converter.helper";
5
5
  import { EFormType } from "../renderer.definitions";
6
6
  import { ELogEventType } from "./forms-list.definitions";
@@ -16,6 +16,7 @@ export class KwikIDFormsListComponent {
16
16
  this.stepConfig = {};
17
17
  this.activeFormConfig = {};
18
18
  this.formsList = [];
19
+ this.reduxData = {};
19
20
  this.formsListCompleted = [];
20
21
  this.isMobileView = false;
21
22
  this.isUnsavedData = false;
@@ -32,9 +33,10 @@ export class KwikIDFormsListComponent {
32
33
  this.selectedForm = selectedForm;
33
34
  }
34
35
  ngOnInit() {
35
- var _a, _b;
36
+ var _a, _b, _c;
37
+ this.reduxData = (_a = this.reduxData) !== null && _a !== void 0 ? _a : {};
36
38
  this.loading = true;
37
- this.setSelectedForm((_b = (_a = this.activeFormConfig) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : "");
39
+ this.setSelectedForm((_c = (_b = this.activeFormConfig) === null || _b === void 0 ? void 0 : _b.key) !== null && _c !== void 0 ? _c : "");
38
40
  this.stepConfig = this.formatStepConfig(this.stepConfig);
39
41
  this.triggerLogs(ELogEventType.FORM__STEP_CONFIG_LOAD_SUCCESS, {});
40
42
  this.formsList = this.filterHiddenForms(this.formsList);
@@ -45,7 +47,7 @@ export class KwikIDFormsListComponent {
45
47
  this.loading = false;
46
48
  }
47
49
  ngOnChanges(changes) {
48
- var _a, _b;
50
+ var _a, _b, _c;
49
51
  const verifyChange = (key) => {
50
52
  return checkObjectKeyExists(changes, key) && !changes[key].firstChange;
51
53
  };
@@ -53,7 +55,7 @@ export class KwikIDFormsListComponent {
53
55
  this.showFormFields = changes.showFormFields.currentValue;
54
56
  }
55
57
  if (verifyChange("stepConfig")) {
56
- this.stepConfig = changes.stepConfig.currentValue;
58
+ this.stepConfig = this.formatStepConfig(changes.stepConfig.currentValue);
57
59
  }
58
60
  if (verifyChange("isUnsavedData")) {
59
61
  this.isUnsavedData = changes.isUnsavedData.currentValue;
@@ -74,11 +76,22 @@ export class KwikIDFormsListComponent {
74
76
  this.activeFormConfig = changes.activeFormConfig.currentValue;
75
77
  this.setSelectedForm((_b = (_a = this.activeFormConfig) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : "");
76
78
  }
79
+ if (checkObjectKeyExists(changes, "reduxData")) {
80
+ this.reduxData = (_c = changes.reduxData.currentValue) !== null && _c !== void 0 ? _c : {};
81
+ }
82
+ if (checkObjectKeyExists(changes, "userConfig")) {
83
+ this.userConfig = changes.userConfig.currentValue;
84
+ }
77
85
  }
78
86
  triggerLogs(eventType, logs) {
79
87
  this.getLogs.emit(formatEventLogs(eventType, this.stepConfig, logs));
80
88
  }
81
89
  formatStepConfig(stepConfig) {
90
+ var _a;
91
+ stepConfig =
92
+ stepConfig && typeof stepConfig === "object"
93
+ ? getObjectDeepCopy(stepConfig)
94
+ : stepConfig;
82
95
  let stepConfigProperties = {
83
96
  formListProperties: {
84
97
  footer: {
@@ -100,7 +113,7 @@ export class KwikIDFormsListComponent {
100
113
  stepConfig = setValueToObjectPath(stepConfig, "props", stepConfigProperties);
101
114
  }
102
115
  stepConfig.props.formListProperties.footer.submitFormButton.label =
103
- updateLanguage(stepConfig.props.formListProperties.footer.submitFormButton.label, getLanguage());
116
+ updateLanguage(stepConfig.props.formListProperties.footer.submitFormButton.label, getLanguage((_a = this.reduxData) !== null && _a !== void 0 ? _a : {}, this.userConfig));
104
117
  return stepConfig;
105
118
  }
106
119
  filterHiddenForms(formsList) {
@@ -114,11 +127,12 @@ export class KwikIDFormsListComponent {
114
127
  setFormTitles(formsList) {
115
128
  return formsList
116
129
  .map((form) => {
130
+ var _a;
117
131
  if (form.type === EFormType.HTML) {
118
132
  return form; // No modification, just return
119
133
  }
120
134
  if (checkObjectPathExists(form, "props.title")) {
121
- form.props.title = updateLanguage(form.props.title, getLanguage());
135
+ form.props.title = updateLanguage(form.props.title, getLanguage((_a = this.reduxData) !== null && _a !== void 0 ? _a : {}, this.userConfig));
122
136
  }
123
137
  return form; // Return the form regardless of modification
124
138
  })
@@ -178,7 +192,7 @@ export class KwikIDFormsListComponent {
178
192
  }
179
193
  }
180
194
  /** @nocollapse */ KwikIDFormsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
181
- /** @nocollapse */ KwikIDFormsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsListComponent, selector: "kwikid-forms-list", inputs: { showFormFields: "showFormFields", userConfig: "userConfig", stepConfig: "stepConfig", activeFormConfig: "activeFormConfig", formsList: "formsList", formsListCompleted: "formsListCompleted", isMobileView: "isMobileView", isUnsavedData: "isUnsavedData" }, outputs: { getLogs: "getLogs", onClickSetActiveForm: "onClickSetActiveForm", onClickHideFormsList: "onClickHideFormsList", onClickSubmitForms: "onClickSubmitForms" }, usesOnChanges: true, ngImport: i0, template: "<div\n id=\"sidebar-container\"\n *ngIf=\"!loading\"\n>\n <div id=\"sidebar\">\n <div ngClass=\"kwikid-form-header\">\n <div id=\"uf-header\">\n <div id=\"uf-header-logo-container\">\n <img\n id=\"uf-header-logo\"\n src=\"{{ this.userConfig.theme.clientLogo }}\"\n [ngClass]=\"'large-icon'\"\n />\n </div>\n </div>\n <hr />\n </div>\n <div id=\"uf-progress\">\n <div id=\"uf-progress-steps\">\n {{ this.formsListCompleted.length }} / {{ this.formsListLength }} Steps\n Completed\n </div>\n <kwikui-progress-segmented\n [max]=\"this.formsListLength\"\n size=\"m\"\n [value]=\"this.formsListCompleted.length\"\n ></kwikui-progress-segmented>\n </div>\n <div id=\"uf-sections-container\">\n <ng-container *ngFor=\"let form of formsList; let i = index\">\n <ng-container [ngSwitch]=\"form.type\">\n <!-- HTML Content -->\n <ng-container *ngSwitchCase=\"'HTML'\">\n <div [innerHtml]=\"form.props.htmlContent | kwikuiSafeHtml\"></div>\n </ng-container>\n <!-- Type FORM -->\n <ng-container *ngSwitchCase=\"'FORM'\">\n <ng-container\n [ngTemplateOutlet]=\"FORM_BUTTON\"\n [ngTemplateOutletContext]=\"{\n form: form,\n activeFormConfig: activeFormConfig\n }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div id=\"submit-sidebar-btn-container\">\n <kwikui-button\n *ngIf=\"\n !stepConfig.props.formListProperties.footer.submitFormButton.hidden\n \"\n label=\"{{\n stepConfig.props.formListProperties.footer.submitFormButton.label\n }}\"\n type=\"submit\"\n styles=\"width: 100%\"\n (onClick)=\"handleOnSubmitForms($event)\"\n ></kwikui-button>\n </div>\n </div>\n</div>\n\n<ng-template\n #FORM_BUTTON\n let-form=\"form\"\n let-activeFormConfig=\"activeFormConfig\"\n>\n <div\n [class]=\"'uf-section-item'\"\n [class.completed]=\"form.status === 'completed' && !form.disabled\"\n [class.edit]=\"form.status === 'editable' && !form.disabled\"\n [class.locked]=\"form.status === 'locked' && form.disabled\"\n [class.active]=\"\n activeFormConfig !== undefined && form.key === activeFormConfig.key\n \"\n (click)=\"\n form.status === 'locked' && form.disabled\n ? undefined\n : handleOnClickSetActiveForm(form.key)\n \"\n >\n <div class=\"uf-form-section-card-title\">\n {{ form.props.title }}&nbsp;<span *ngIf=\"form?.required\">*</span>\n </div>\n <div class=\"uf-form-section-card-status\">\n <div\n *ngIf=\"form.status === 'completed' && !form.disabled\"\n class=\"uf-form-section-card-status-img completed\"\n >\n <tui-svg src=\"tuiIconCheckLarge\"></tui-svg>\n </div>\n <div\n *ngIf=\"form.status !== 'completed' && !form.disabled\"\n class=\"uf-form-section-card-status-img edit\"\n >\n <tui-svg src=\"tuiIconEdit\"></tui-svg>\n </div>\n <div\n *ngIf=\"form.status !== 'completed' && form.disabled\"\n class=\"uf-form-section-card-status-img locked\"\n >\n <tui-svg src=\"tuiIconLock\"></tui-svg>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: ["#sidebar-container{width:100%;height:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center}#sidebar{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch}.uf-section-item{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;align-content:center;padding:1rem;cursor:pointer;box-shadow:0 1px 3px -1px var(--tui-base-05);border-radius:.5rem;background-color:var(--tui-base-02);position:relative}.uf-section-item>*:not(:last-child){margin-right:1rem}.uf-section-item:hover{box-shadow:0 1px 3px -1px var(--tui-base-08)}#submit-sidebar-btn-container{width:100%;bottom:0px;z-index:1;padding:1rem;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}#submit-sidebar-btn-container>*:not(:last-child){margin-right:1rem}#submit-sidebar-btn-container *{flex-grow:1}#uf-sections-container{display:flex;flex-direction:column;height:100%;padding:1rem;overflow-y:auto}#uf-sections-container>*:not(:last-child){margin-bottom:1rem}.uf-form-section-card{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;border:none;border-radius:8px;background-color:#e9e9e9;height:-moz-fit-content;height:fit-content;min-height:60px;padding:10px 15px;width:100%;max-width:350px;margin:0 auto}.uf-form-section-card>*:not(:last-child){margin-right:.5rem}.uf-section-item.locked{-webkit-user-select:none;user-select:none;cursor:not-allowed}.uf-form-section-card .uf-form-section-card-title{font-size:1.2em;text-align:left;line-height:1.25em}.uf-form-section-card .uf-form-section-card-status{width:30px;height:30px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.uf-form-section-card .uf-form-section-card-status .uf-form-section-card-status-img{width:30px;height:30px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;border-radius:100%;color:#fff;font-weight:bold}.uf-form-section-card-status-img.completed{background-color:var(--tui-success-fill);padding:.25rem;border-radius:50%;color:#fff}.uf-form-section-card-status-img.edit{background-color:var(--tui-error-fill);padding:.25rem;border-radius:50%;color:#fff}.uf-form-section-card-status-img.locked{background-color:var(--tui-neutral-fill);padding:.25rem;border-radius:50%;color:#fff}#uf-progress{display:flex;padding:1rem;flex-direction:column;align-content:center;justify-content:center;align-items:stretch}#uf-progress>*:not(:last-child){margin-bottom:.5rem}#uf-progress-steps{font-size:1em;text-align:right;color:#3d3d3d}.uf-form-section-card-title{font-size:1em;font-weight:bold;color:#000}@media screen and (max-width: 600px){#sidebar-container{max-width:unset}}.kwikid-form-header{height:70px;z-index:6}.kwikid-form-header hr{width:calc(100% - 1rem);margin-left:auto;margin-right:auto}#uf-header{display:flex;flex-direction:row;align-content:center;align-items:center;justify-content:flex-start;padding:10px 20px;width:100%;max-width:calc(400px + 50vw + 2rem);margin:0 auto;height:70px;z-index:1}#uf-header>*:not(:last-child){margin-right:1rem}#uf-header #uf-header-goback-container{display:none}#uf-header #uf-header-goback-container:hover{border-radius:50%;background-color:#d3d3d3}#uf-header #uf-header-goback-container #uf-header-goback{width:100%;height:auto}#uf-header #uf-header-logo-container{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}#uf-header #uf-header-logo-container #uf-header-logo.small-icon{width:100%;height:50px}#uf-header #uf-header-logo-container #uf-header-logo.large-icon{width:100%;height:50px}#uf-header #uf-header-title-container{display:flex;flex-direction:column;justify-content:center;align-items:flex-start}#uf-header #uf-header-title-container>*:not(:last-child){margin-bottom:.5rem}#uf-header #uf-header-title-container #uf-header-title{font-size:1.4em;color:#121212}#uf-header #uf-header-title-container #uf-header-subtitle{font-size:1.2em;color:#121212}\n", "::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i1.KwikUIProgressSegmentedComponent, selector: "kwikui-progress-segmented", inputs: ["colors", "id", "max", "size", "value"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i2.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "kwikuiSafeHtml": i1.KwikUISafeHtmlPipe } });
195
+ /** @nocollapse */ KwikIDFormsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsListComponent, selector: "kwikid-forms-list", inputs: { showFormFields: "showFormFields", userConfig: "userConfig", stepConfig: "stepConfig", activeFormConfig: "activeFormConfig", formsList: "formsList", reduxData: "reduxData", formsListCompleted: "formsListCompleted", isMobileView: "isMobileView", isUnsavedData: "isUnsavedData" }, outputs: { getLogs: "getLogs", onClickSetActiveForm: "onClickSetActiveForm", onClickHideFormsList: "onClickHideFormsList", onClickSubmitForms: "onClickSubmitForms" }, usesOnChanges: true, ngImport: i0, template: "<div\n id=\"sidebar-container\"\n *ngIf=\"!loading\"\n>\n <div id=\"sidebar\">\n <div ngClass=\"kwikid-form-header\">\n <div id=\"uf-header\">\n <div id=\"uf-header-logo-container\">\n <img\n id=\"uf-header-logo\"\n src=\"{{ this.userConfig.theme.clientLogo }}\"\n [ngClass]=\"'large-icon'\"\n />\n </div>\n </div>\n <hr />\n </div>\n <div id=\"uf-progress\">\n <div id=\"uf-progress-steps\">\n {{ this.formsListCompleted.length }} / {{ this.formsListLength }} Steps\n Completed\n </div>\n <kwikui-progress-segmented\n [max]=\"this.formsListLength\"\n size=\"m\"\n [value]=\"this.formsListCompleted.length\"\n ></kwikui-progress-segmented>\n </div>\n <div id=\"uf-sections-container\">\n <ng-container *ngFor=\"let form of formsList; let i = index\">\n <ng-container [ngSwitch]=\"form.type\">\n <!-- HTML Content -->\n <ng-container *ngSwitchCase=\"'HTML'\">\n <div [innerHtml]=\"form.props.htmlContent | kwikuiSafeHtml\"></div>\n </ng-container>\n <!-- Type FORM -->\n <ng-container *ngSwitchCase=\"'FORM'\">\n <ng-container\n [ngTemplateOutlet]=\"FORM_BUTTON\"\n [ngTemplateOutletContext]=\"{\n form: form,\n activeFormConfig: activeFormConfig\n }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div id=\"submit-sidebar-btn-container\">\n <kwikui-button\n *ngIf=\"\n !stepConfig.props.formListProperties.footer.submitFormButton.hidden\n \"\n label=\"{{\n stepConfig.props.formListProperties.footer.submitFormButton.label\n }}\"\n type=\"submit\"\n styles=\"width: 100%\"\n (onClick)=\"handleOnSubmitForms($event)\"\n ></kwikui-button>\n </div>\n </div>\n</div>\n\n<ng-template\n #FORM_BUTTON\n let-form=\"form\"\n let-activeFormConfig=\"activeFormConfig\"\n>\n <div\n [class]=\"'uf-section-item'\"\n [class.completed]=\"form.status === 'completed' && !form.disabled\"\n [class.edit]=\"form.status === 'editable' && !form.disabled\"\n [class.locked]=\"form.status === 'locked' && form.disabled\"\n [class.active]=\"\n activeFormConfig !== undefined && form.key === activeFormConfig.key\n \"\n (click)=\"\n form.status === 'locked' && form.disabled\n ? undefined\n : handleOnClickSetActiveForm(form.key)\n \"\n >\n <div class=\"uf-form-section-card-title\">\n {{ form.props.title }}&nbsp;<span *ngIf=\"form?.required\">*</span>\n </div>\n <div class=\"uf-form-section-card-status\">\n <div\n *ngIf=\"form.status === 'completed' && !form.disabled\"\n class=\"uf-form-section-card-status-img completed\"\n >\n <tui-svg src=\"tuiIconCheckLarge\"></tui-svg>\n </div>\n <div\n *ngIf=\"form.status !== 'completed' && !form.disabled\"\n class=\"uf-form-section-card-status-img edit\"\n >\n <tui-svg src=\"tuiIconEdit\"></tui-svg>\n </div>\n <div\n *ngIf=\"form.status !== 'completed' && form.disabled\"\n class=\"uf-form-section-card-status-img locked\"\n >\n <tui-svg src=\"tuiIconLock\"></tui-svg>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: ["#sidebar-container{width:100%;height:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center}#sidebar{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch}.uf-section-item{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;align-content:center;padding:1rem;cursor:pointer;box-shadow:0 1px 3px -1px var(--tui-base-05);border-radius:.5rem;background-color:var(--tui-base-02);position:relative}.uf-section-item>*:not(:last-child){margin-right:1rem}.uf-section-item:hover{box-shadow:0 1px 3px -1px var(--tui-base-08)}#submit-sidebar-btn-container{width:100%;bottom:0px;z-index:1;padding:1rem;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}#submit-sidebar-btn-container>*:not(:last-child){margin-right:1rem}#submit-sidebar-btn-container *{flex-grow:1}#uf-sections-container{display:flex;flex-direction:column;height:100%;padding:1rem;overflow-y:auto}#uf-sections-container>*:not(:last-child){margin-bottom:1rem}.uf-form-section-card{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;border:none;border-radius:8px;background-color:#e9e9e9;height:-moz-fit-content;height:fit-content;min-height:60px;padding:10px 15px;width:100%;max-width:350px;margin:0 auto}.uf-form-section-card>*:not(:last-child){margin-right:.5rem}.uf-section-item.locked{-webkit-user-select:none;user-select:none;cursor:not-allowed}.uf-form-section-card .uf-form-section-card-title{font-size:1.2em;text-align:left;line-height:1.25em}.uf-form-section-card .uf-form-section-card-status{width:30px;height:30px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.uf-form-section-card .uf-form-section-card-status .uf-form-section-card-status-img{width:30px;height:30px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;border-radius:100%;color:#fff;font-weight:bold}.uf-form-section-card-status-img.completed{background-color:var(--tui-success-fill);padding:.25rem;border-radius:50%;color:#fff}.uf-form-section-card-status-img.edit{background-color:var(--tui-error-fill);padding:.25rem;border-radius:50%;color:#fff}.uf-form-section-card-status-img.locked{background-color:var(--tui-neutral-fill);padding:.25rem;border-radius:50%;color:#fff}#uf-progress{display:flex;padding:1rem;flex-direction:column;align-content:center;justify-content:center;align-items:stretch}#uf-progress>*:not(:last-child){margin-bottom:.5rem}#uf-progress-steps{font-size:1em;text-align:right;color:#3d3d3d}.uf-form-section-card-title{font-size:1em;font-weight:bold;color:#000}@media screen and (max-width: 600px){#sidebar-container{max-width:unset}}.kwikid-form-header{height:70px;z-index:6}.kwikid-form-header hr{width:calc(100% - 1rem);margin-left:auto;margin-right:auto}#uf-header{display:flex;flex-direction:row;align-content:center;align-items:center;justify-content:flex-start;padding:10px 20px;width:100%;max-width:calc(400px + 50vw + 2rem);margin:0 auto;height:70px;z-index:1}#uf-header>*:not(:last-child){margin-right:1rem}#uf-header #uf-header-goback-container{display:none}#uf-header #uf-header-goback-container:hover{border-radius:50%;background-color:#d3d3d3}#uf-header #uf-header-goback-container #uf-header-goback{width:100%;height:auto}#uf-header #uf-header-logo-container{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}#uf-header #uf-header-logo-container #uf-header-logo.small-icon{width:100%;height:50px}#uf-header #uf-header-logo-container #uf-header-logo.large-icon{width:100%;height:50px}#uf-header #uf-header-title-container{display:flex;flex-direction:column;justify-content:center;align-items:flex-start}#uf-header #uf-header-title-container>*:not(:last-child){margin-bottom:.5rem}#uf-header #uf-header-title-container #uf-header-title{font-size:1.4em;color:#121212}#uf-header #uf-header-title-container #uf-header-subtitle{font-size:1.2em;color:#121212}\n", "::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i1.KwikUIProgressSegmentedComponent, selector: "kwikui-progress-segmented", inputs: ["colors", "id", "max", "size", "value"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i2.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "kwikuiSafeHtml": i1.KwikUISafeHtmlPipe } });
182
196
  __decorate([
183
197
  logMethod
184
198
  ], KwikIDFormsListComponent.prototype, "ngOnChanges", null);
@@ -223,6 +237,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
223
237
  type: Input
224
238
  }], formsList: [{
225
239
  type: Input
240
+ }], reduxData: [{
241
+ type: Input
226
242
  }], formsListCompleted: [{
227
243
  type: Input
228
244
  }], isMobileView: [{
@@ -238,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
238
254
  }], onClickSubmitForms: [{
239
255
  type: Output
240
256
  }], ngOnChanges: [], triggerLogs: [], formatStepConfig: [], filterHiddenForms: [], setFormTitles: [], findFormsListLength: [], checkIsAllFormsCompleted: [], handleOnClickSetActiveForm: [], handleOnSubmitForms: [] } });
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3Jtcy1saXN0L2Zvcm1zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybXMtbGlzdC9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixvQkFBb0IsRUFDckIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGNBQWMsRUFDZixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQU90RCxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBT0UsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFHekIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUdyQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBR3JCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUczQixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBR3RCLHVCQUFrQixHQUFVLEVBQUUsQ0FBQztRQUcvQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztR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O3dFQWdCVDtBQUdEO0lBREMsU0FBUzswRUF1QlQ7QUFHRDtJQURDLFNBQVM7bUVBVVQ7NEZBdFBVLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDN0Q7OEJBR0MsY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU07Z0JBSVAsb0JBQW9CO3NCQURuQixNQUFNO2dCQUlQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFtQ1AsV0FBVyxNQWtDWCxXQUFXLE1BS1gsZ0JBQWdCLE1BMkNoQixpQkFBaUIsTUFVakIsYUFBYSxNQW1CYixtQkFBbUIsTUFjbkIsd0JBQXdCLE1Ba0J4QiwwQkFBMEIsTUF5QjFCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgY2hlY2tPYmplY3RLZXlFeGlzdHMsXG4gIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyxcbiAgaXNOdWxsLFxuICBpc1VuZGVmaW5lZCxcbiAgbG9nTWV0aG9kLFxuICBtZXJnZU9iamVjdHMsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGFuZ3VhZ2UsXG4gIHVwZGF0ZUxhbmd1YWdlXG59IGZyb20gXCIuLi9jb25maWctY29udmVydGVyL2NvbmZpZy1jb252ZXJ0ZXIuaGVscGVyXCI7XG5pbXBvcnQgeyBFRm9ybVR5cGUgfSBmcm9tIFwiLi4vcmVuZGVyZXIuZGVmaW5pdGlvbnNcIjtcbmltcG9ydCB7IEVMb2dFdmVudFR5cGUgfSBmcm9tIFwiLi9mb3Jtcy1saXN0LmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBmb3JtYXRFdmVudExvZ3MgfSBmcm9tIFwiLi9mb3Jtcy1saXN0LmhlbHBlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWZvcm1zLWxpc3RcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9mb3Jtcy1saXN0LmNvbXBvbmVudC5zY3NzXCIsIFwiLi4vc2hhcmVkLnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBzaG93Rm9ybUZpZWxkczogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgc3RlcENvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgZm9ybXNMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1zTGlzdENvbXBsZXRlZDogYW55W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBpc1Vuc2F2ZWREYXRhID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIGdldExvZ3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tTZXRBY3RpdmVGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrSGlkZUZvcm1zTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1N1Ym1pdEZvcm1zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRGb3JtID0gXCJcIjtcblxuICBzZXRTZWxlY3RlZEZvcm0oc2VsZWN0ZWRGb3JtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRm9ybSA9IHNlbGVjdGVkRm9ybTtcbiAgfVxuXG4gIGZvcm1zTGlzdExlbmd0aCA9IDA7XG5cbiAgaXNBbGxGb3Jtc0NvbXBsZXRlZCA9IHRydWU7XG5cbiAgbG9hZGluZyA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLnNldFNlbGVjdGVkRm9ybSh0aGlzLmFjdGl2ZUZvcm1Db25maWc/LmtleSA/PyBcIlwiKTtcblxuICAgIHRoaXMuc3RlcENvbmZpZyA9IHRoaXMuZm9ybWF0U3RlcENvbmZpZyh0aGlzLnN0ZXBDb25maWcpO1xuXG4gICAgdGhpcy50cmlnZ2VyTG9ncyhFTG9nRXZlbnRUeXBlLkZPUk1fX1NURVBfQ09ORklHX0xPQURfU1VDQ0VTUywge30pO1xuXG4gICAgdGhpcy5mb3Jtc0xpc3QgPSB0aGlzLmZpbHRlckhpZGRlbkZvcm1zKHRoaXMuZm9ybXNMaXN0KTtcbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuc2V0Rm9ybVRpdGxlcyh0aGlzLmZvcm1zTGlzdCk7XG4gICAgdGhpcy5mb3Jtc0xpc3RMZW5ndGggPSB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpO1xuICAgIHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCA9IHRoaXMuY2hlY2tJc0FsbEZvcm1zQ29tcGxldGVkKHRoaXMuZm9ybXNMaXN0KTtcblxuICAgIHRoaXMudHJpZ2dlckxvZ3MoRUxvZ0V2ZW50VHlwZS5GT1JNX19MSVNUX0xPQURfU1VDQ0VTUywge30pO1xuXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB2ZXJpZnlDaGFuZ2UgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjaGVja09iamVjdEtleUV4aXN0cyhjaGFuZ2VzLCBrZXkpICYmICFjaGFuZ2VzW2tleV0uZmlyc3RDaGFuZ2U7XG4gICAgfTtcbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwic2hvd0Zvcm1GaWVsZHNcIikpIHtcbiAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBjaGFuZ2VzLnNob3dGb3JtRmllbGRzLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInN0ZXBDb25maWdcIikpIHtcbiAgICAgIHRoaXMuc3RlcENvbmZpZyA9IGNoYW5nZXMuc3RlcENvbmZpZy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJpc1Vuc2F2ZWREYXRhXCIpKSB7XG4gICAgICB0aGlzLmlzVW5zYXZlZERhdGEgPSBjaGFuZ2VzLmlzVW5zYXZlZERhdGEuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZm9ybXNMaXN0XCIpKSB7XG4gICAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuZmlsdGVySGlkZGVuRm9ybXModGhpcy5mb3Jtc0xpc3QpO1xuICAgICAgdGhpcy5mb3Jtc0xpc3QgPSB0aGlzLnNldEZvcm1UaXRsZXModGhpcy5mb3Jtc0xpc3QpO1xuICAgICAgdGhpcy5mb3Jtc0xpc3RMZW5ndGggPSB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpO1xuICAgICAgdGhpcy5pc0FsbEZvcm1zQ29tcGxldGVkID0gdGhpcy5jaGVja0lzQWxsRm9ybXNDb21wbGV0ZWQodGhpcy5mb3Jtc0xpc3QpO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiaXNNb2JpbGVWaWV3XCIpKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IGNoYW5nZXMuaXNNb2JpbGVWaWV3LmN1cnJlbnRWYWx1ZTtcblxuICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlVmlldykge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkRm9ybShcIlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImFjdGl2ZUZvcm1Db25maWdcIikpIHtcbiAgICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IGNoYW5nZXMuYWN0aXZlRm9ybUNvbmZpZy5jdXJyZW50VmFsdWU7XG5cbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRGb3JtKHRoaXMuYWN0aXZlRm9ybUNvbmZpZz8ua2V5ID8/IFwiXCIpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgdHJpZ2dlckxvZ3MoZXZlbnRUeXBlOiBFTG9nRXZlbnRUeXBlLCBsb2dzOiBhbnkpIHtcbiAgICB0aGlzLmdldExvZ3MuZW1pdChmb3JtYXRFdmVudExvZ3MoZXZlbnRUeXBlLCB0aGlzLnN0ZXBDb25maWcsIGxvZ3MpKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZm9ybWF0U3RlcENvbmZpZyhzdGVwQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGxldCBzdGVwQ29uZmlnUHJvcGVydGllcyA9IHtcbiAgICAgIGZvcm1MaXN0UHJvcGVydGllczoge1xuICAgICAgICBmb290ZXI6IHtcbiAgICAgICAgICBzdWJtaXRGb3JtQnV0dG9uOiB7XG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgbGFiZWw6IFwiU3VibWl0XCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGlzTnVsbChzdGVwQ29uZmlnKSB8fCBpc1VuZGVmaW5lZChzdGVwQ29uZmlnKSkge1xuICAgICAgc3RlcENvbmZpZyA9IHNldFZhbHVlVG9PYmplY3RQYXRoKHt9LCBcInByb3BzXCIsIHN0ZXBDb25maWdQcm9wZXJ0aWVzKTtcbiAgICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHN0ZXBDb25maWcsIFwicHJvcHNcIikpIHtcbiAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICBzdGVwQ29uZmlnUHJvcGVydGllcyxcbiAgICAgICAgc3RlcENvbmZpZy5wcm9wc1xuICAgICAgKTtcblxuICAgICAgc3RlcENvbmZpZyA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICBzdGVwQ29uZmlnLFxuICAgICAgICBcInByb3BzXCIsXG4gICAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGVwQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIHN0ZXBDb25maWcsXG4gICAgICAgIFwicHJvcHNcIixcbiAgICAgICAgc3RlcENvbmZpZ1Byb3BlcnRpZXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc3RlcENvbmZpZy5wcm9wcy5mb3JtTGlzdFByb3BlcnRpZXMuZm9vdGVyLnN1Ym1pdEZvcm1CdXR0b24ubGFiZWwgPVxuICAgICAgdXBkYXRlTGFuZ3VhZ2UoXG4gICAgICAgIHN0ZXBDb25maWcucHJvcHMuZm9ybUxpc3RQcm9wZXJ0aWVzLmZvb3Rlci5zdWJtaXRGb3JtQnV0dG9uLmxhYmVsLFxuICAgICAgICBnZXRMYW5ndWFnZSgpXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHN0ZXBDb25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbHRlckhpZGRlbkZvcm1zKGZvcm1zTGlzdDogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGZvcm1zTGlzdC5maWx0ZXIoKGZvcm0pID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICByZXR1cm4gIWZvcm0uaGlkZGVuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBzZXRGb3JtVGl0bGVzKGZvcm1zTGlzdDogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGZvcm1zTGlzdFxuICAgICAgLm1hcCgoZm9ybSkgPT4ge1xuICAgICAgICBpZiAoZm9ybS50eXBlID09PSBFRm9ybVR5cGUuSFRNTCkge1xuICAgICAgICAgIHJldHVybiBmb3JtOyAvLyBObyBtb2RpZmljYXRpb24sIGp1c3QgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmb3JtLCBcInByb3BzLnRpdGxlXCIpKSB7XG4gICAgICAgICAgZm9ybS5wcm9wcy50aXRsZSA9IHVwZGF0ZUxhbmd1YWdlKGZvcm0ucHJvcHMudGl0bGUsIGdldExhbmd1YWdlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtOyAvLyBSZXR1cm4gdGhlIGZvcm0gcmVnYXJkbGVzcyBvZiBtb2RpZmljYXRpb25cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoZm9ybSkgPT5cbiAgICAgICAgICBmb3JtLnR5cGUgPT09IEVGb3JtVHlwZS5IVE1MIHx8XG4gICAgICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKGZvcm0sIFwicHJvcHMudGl0bGVcIilcbiAgICAgICk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbmRGb3Jtc0xpc3RMZW5ndGgoZm9ybXNMaXN0OiBhbnlbXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGZvcm1zTGlzdC5maWx0ZXIoKGZvcm0pID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcInR5cGVcIikpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBmb3JtLnR5cGUgIT09IEVGb3JtVHlwZS5IVE1MICYmXG4gICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikgJiZcbiAgICAgICAgICAhZm9ybS5oaWRkZW5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSAmJiAhZm9ybS5oaWRkZW47XG4gICAgfSkubGVuZ3RoO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjaGVja0lzQWxsRm9ybXNDb21wbGV0ZWQoZm9ybXNMaXN0OiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBpc0FsbEZvcm1zQ29tcGxldGVkID0gdHJ1ZTtcblxuICAgIGZvciAoY29uc3QgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcInR5cGVcIikpIHtcbiAgICAgICAgaWYgKGZvcm0udHlwZSAhPT0gRUZvcm1UeXBlLkhUTUwpIHtcbiAgICAgICAgICBpZiAoZm9ybS5zdGF0dXMgIT09IFwiY29tcGxldGVkXCIpIHtcbiAgICAgICAgICAgIGlzQWxsRm9ybXNDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0FsbEZvcm1zQ29tcGxldGVkO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShzZWxlY3RlZEZvcm06IHN0cmluZykge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3IHx8XG4gICAgICAoIXRoaXMuaXNNb2JpbGVWaWV3ICYmIHRoaXMuc2VsZWN0ZWRGb3JtICE9PSBzZWxlY3RlZEZvcm0pIHx8XG4gICAgICAodGhpcy5pc0FsbEZvcm1zQ29tcGxldGVkICYmICF0aGlzLnNob3dGb3JtRmllbGRzKVxuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWc/LnByb3BlcnRpZXM/LmlzVW5zYXZlZERhdGFBbGVydEVuYWJsZWQgJiZcbiAgICAgICAgdGhpcy5pc1Vuc2F2ZWREYXRhICYmXG4gICAgICAgICF3aW5kb3cuY29uZmlybShcIllvdSBoYXZlIHVuc2F2ZWQgZGF0YS4gUHJvY2VlZD9cIilcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnRyaWdnZXJMb2dzKEVMb2dFdmVudFR5cGUuRk9STV9fRk9STV9PUEVOX0JVVFRPTl9DTElDSywge1xuICAgICAgICBmb3JtX2tleTogc2VsZWN0ZWRGb3JtLFxuICAgICAgICBmb3JtX2xhYmVsOlxuICAgICAgICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZz8udGl0bGUgPz8gdGhpcy5hY3RpdmVGb3JtQ29uZmlnPy5wcm9wcz8udGl0bGVcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybSA9IHNlbGVjdGVkRm9ybTtcbiAgICAgIHRoaXMub25DbGlja1NldEFjdGl2ZUZvcm0uZW1pdChzZWxlY3RlZEZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25TdWJtaXRGb3JtcyhlOiBhbnkpIHtcbiAgICAvKipcbiAgICAgKiBQT1NUIEFDVElPTlNcbiAgICAgKiAxLiBBUEkgQ2FsbHMuXG4gICAgICogMi4gUHJldmlldyBvZiBhbGwgZmlsbGVkIGRhdGEuXG4gICAgICogMy4gVVJMIFJlZGlyZWN0aW9uIG9yIG5ldyBvcGVuaW5nIG9mIFVSTCBpbiBleHRlcm5hbCB0YWIuXG4gICAgICovXG5cbiAgICB0aGlzLm9uQ2xpY2tTdWJtaXRGb3Jtcy5lbWl0KGUpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGlkPVwic2lkZWJhci1jb250YWluZXJcIlxuICAqbmdJZj1cIiFsb2FkaW5nXCJcbj5cbiAgPGRpdiBpZD1cInNpZGViYXJcIj5cbiAgICA8ZGl2IG5nQ2xhc3M9XCJrd2lraWQtZm9ybS1oZWFkZXJcIj5cbiAgICAgIDxkaXYgaWQ9XCJ1Zi1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBpZD1cInVmLWhlYWRlci1sb2dvLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGlkPVwidWYtaGVhZGVyLWxvZ29cIlxuICAgICAgICAgICAgc3JjPVwie3sgdGhpcy51c2VyQ29uZmlnLnRoZW1lLmNsaWVudExvZ28gfX1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2xhcmdlLWljb24nXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cInVmLXByb2dyZXNzXCI+XG4gICAgICA8ZGl2IGlkPVwidWYtcHJvZ3Jlc3Mtc3RlcHNcIj5cbiAgICAgICAge3sgdGhpcy5mb3Jtc0xpc3RDb21wbGV0ZWQubGVuZ3RoIH19IC8ge3sgdGhpcy5mb3Jtc0xpc3RMZW5ndGggfX0gU3RlcHNcbiAgICAgICAgQ29tcGxldGVkXG4gICAgICA8L2Rpdj5cbiAgICAgIDxrd2lrdWktcHJvZ3Jlc3Mtc2VnbWVudGVkXG4gICAgICAgIFttYXhdPVwidGhpcy5mb3Jtc0xpc3RMZW5ndGhcIlxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIFt2YWx1ZV09XCJ0aGlzLmZvcm1zTGlzdENvbXBsZXRlZC5sZW5ndGhcIlxuICAgICAgPjwva3dpa3VpLXByb2dyZXNzLXNlZ21lbnRlZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwidWYtc2VjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmb3JtLnR5cGVcIj5cbiAgICAgICAgICA8IS0tIEhUTUwgQ29udGVudCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSFRNTCdcIj5cbiAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJmb3JtLnByb3BzLmh0bWxDb250ZW50IHwga3dpa3VpU2FmZUh0bWxcIj48L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIFR5cGUgRk9STSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInRk9STSdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiRk9STV9CVVRUT05cIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgICAgICAgICAgYWN0aXZlRm9ybUNvbmZpZzogYWN0aXZlRm9ybUNvbmZpZ1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJzdWJtaXQtc2lkZWJhci1idG4tY29udGFpbmVyXCI+XG4gICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFzdGVwQ29uZmlnLnByb3BzLmZvcm1MaXN0UHJvcGVydGllcy5mb290ZXIuc3VibWl0Rm9ybUJ1dHRvbi5oaWRkZW5cbiAgICAgICAgXCJcbiAgICAgICAgbGFiZWw9XCJ7e1xuICAgICAgICAgIHN0ZXBDb25maWcucHJvcHMuZm9ybUxpc3RQcm9wZXJ0aWVzLmZvb3Rlci5zdWJtaXRGb3JtQnV0dG9uLmxhYmVsXG4gICAgICAgIH19XCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIHN0eWxlcz1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25TdWJtaXRGb3JtcygkZXZlbnQpXCJcbiAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjRk9STV9CVVRUT05cbiAgbGV0LWZvcm09XCJmb3JtXCJcbiAgbGV0LWFjdGl2ZUZvcm1Db25maWc9XCJhY3RpdmVGb3JtQ29uZmlnXCJcbj5cbiAgPGRpdlxuICAgIFtjbGFzc109XCIndWYtc2VjdGlvbi1pdGVtJ1wiXG4gICAgW2NsYXNzLmNvbXBsZXRlZF09XCJmb3JtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcgJiYgIWZvcm0uZGlzYWJsZWRcIlxuICAgIFtjbGFzcy5lZGl0XT1cImZvcm0uc3RhdHVzID09PSAnZWRpdGFibGUnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICBbY2xhc3MubG9ja2VkXT1cImZvcm0uc3RhdHVzID09PSAnbG9ja2VkJyAmJiBmb3JtLmRpc2FibGVkXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgYWN0aXZlRm9ybUNvbmZpZyAhPT0gdW5kZWZpbmVkICYmIGZvcm0ua2V5ID09PSBhY3RpdmVGb3JtQ29uZmlnLmtleVxuICAgIFwiXG4gICAgKGNsaWNrKT1cIlxuICAgICAgZm9ybS5zdGF0dXMgPT09ICdsb2NrZWQnICYmIGZvcm0uZGlzYWJsZWRcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShmb3JtLmtleSlcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXRpdGxlXCI+XG4gICAgICB7eyBmb3JtLnByb3BzLnRpdGxlIH19Jm5ic3A7PHNwYW4gKm5nSWY9XCJmb3JtPy5yZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1c1wiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImZvcm0uc3RhdHVzID09PSAnY29tcGxldGVkJyAmJiAhZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBjb21wbGV0ZWRcIlxuICAgICAgPlxuICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uQ2hlY2tMYXJnZVwiPjwvdHVpLXN2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImZvcm0uc3RhdHVzICE9PSAnY29tcGxldGVkJyAmJiAhZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBlZGl0XCJcbiAgICAgID5cbiAgICAgICAgPHR1aS1zdmcgc3JjPVwidHVpSWNvbkVkaXRcIj48L3R1aS1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJmb3JtLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgJiYgZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBsb2NrZWRcIlxuICAgICAgPlxuICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uTG9ja1wiPjwvdHVpLXN2Zz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3Jtcy1saXN0L2Zvcm1zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybXMtbGlzdC9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLFdBQVcsRUFDWCxjQUFjLEVBQ2YsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFPdEQsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQU9FLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBR3pCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFHckIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUdyQixxQkFBZ0IsR0FBUSxFQUFFLENBQUM7UUFHM0IsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUd0QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBR3BCLHVCQUFrQixHQUFVLEVBQUUsQ0FBQztRQUcvQixpQkFBWSxHQUFH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QURSLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sT0FBTztzQkFETixNQUFNO2dCQUlQLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixNQUFNO2dCQXFDUCxXQUFXLE1Bd0NYLFdBQVcsTUFLWCxnQkFBZ0IsTUFnRGhCLGlCQUFpQixNQVVqQixhQUFhLE1Bc0JiLG1CQUFtQixNQWNuQix3QkFBd0IsTUFrQnhCLDBCQUEwQixNQXlCMUIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBnZXRPYmplY3REZWVwQ29weSxcbiAgaXNOdWxsLFxuICBpc1VuZGVmaW5lZCxcbiAgbG9nTWV0aG9kLFxuICBtZXJnZU9iamVjdHMsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgZ2V0TGFuZ3VhZ2UsXG4gIHVwZGF0ZUxhbmd1YWdlXG59IGZyb20gXCIuLi9jb25maWctY29udmVydGVyL2NvbmZpZy1jb252ZXJ0ZXIuaGVscGVyXCI7XG5pbXBvcnQgeyBFRm9ybVR5cGUgfSBmcm9tIFwiLi4vcmVuZGVyZXIuZGVmaW5pdGlvbnNcIjtcbmltcG9ydCB7IEVMb2dFdmVudFR5cGUgfSBmcm9tIFwiLi9mb3Jtcy1saXN0LmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBmb3JtYXRFdmVudExvZ3MgfSBmcm9tIFwiLi9mb3Jtcy1saXN0LmhlbHBlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWZvcm1zLWxpc3RcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9mb3Jtcy1saXN0LmNvbXBvbmVudC5zY3NzXCIsIFwiLi4vc2hhcmVkLnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBzaG93Rm9ybUZpZWxkczogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgc3RlcENvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgZm9ybXNMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHJlZHV4RGF0YTogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgZm9ybXNMaXN0Q29tcGxldGVkOiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGlzVW5zYXZlZERhdGEgPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgZ2V0TG9nczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1NldEFjdGl2ZUZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tIaWRlRm9ybXNMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrU3VibWl0Rm9ybXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzZWxlY3RlZEZvcm0gPSBcIlwiO1xuXG4gIHNldFNlbGVjdGVkRm9ybShzZWxlY3RlZEZvcm06IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRGb3JtID0gc2VsZWN0ZWRGb3JtO1xuICB9XG5cbiAgZm9ybXNMaXN0TGVuZ3RoID0gMDtcblxuICBpc0FsbEZvcm1zQ29tcGxldGVkID0gdHJ1ZTtcblxuICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWR1eERhdGEgPSB0aGlzLnJlZHV4RGF0YSA/PyB7fTtcblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLnNldFNlbGVjdGVkRm9ybSh0aGlzLmFjdGl2ZUZvcm1Db25maWc/LmtleSA/PyBcIlwiKTtcblxuICAgIHRoaXMuc3RlcENvbmZpZyA9IHRoaXMuZm9ybWF0U3RlcENvbmZpZyh0aGlzLnN0ZXBDb25maWcpO1xuXG4gICAgdGhpcy50cmlnZ2VyTG9ncyhFTG9nRXZlbnRUeXBlLkZPUk1fX1NURVBfQ09ORklHX0xPQURfU1VDQ0VTUywge30pO1xuXG4gICAgdGhpcy5mb3Jtc0xpc3QgPSB0aGlzLmZpbHRlckhpZGRlbkZvcm1zKHRoaXMuZm9ybXNMaXN0KTtcbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuc2V0Rm9ybVRpdGxlcyh0aGlzLmZvcm1zTGlzdCk7XG4gICAgdGhpcy5mb3Jtc0xpc3RMZW5ndGggPSB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpO1xuICAgIHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCA9IHRoaXMuY2hlY2tJc0FsbEZvcm1zQ29tcGxldGVkKHRoaXMuZm9ybXNMaXN0KTtcblxuICAgIHRoaXMudHJpZ2dlckxvZ3MoRUxvZ0V2ZW50VHlwZS5GT1JNX19MSVNUX0xPQURfU1VDQ0VTUywge30pO1xuXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB2ZXJpZnlDaGFuZ2UgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjaGVja09iamVjdEtleUV4aXN0cyhjaGFuZ2VzLCBrZXkpICYmICFjaGFuZ2VzW2tleV0uZmlyc3RDaGFuZ2U7XG4gICAgfTtcbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwic2hvd0Zvcm1GaWVsZHNcIikpIHtcbiAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBjaGFuZ2VzLnNob3dGb3JtRmllbGRzLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInN0ZXBDb25maWdcIikpIHtcbiAgICAgIHRoaXMuc3RlcENvbmZpZyA9IHRoaXMuZm9ybWF0U3RlcENvbmZpZyhjaGFuZ2VzLnN0ZXBDb25maWcuY3VycmVudFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImlzVW5zYXZlZERhdGFcIikpIHtcbiAgICAgIHRoaXMuaXNVbnNhdmVkRGF0YSA9IGNoYW5nZXMuaXNVbnNhdmVkRGF0YS5jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJmb3Jtc0xpc3RcIikpIHtcbiAgICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy5maWx0ZXJIaWRkZW5Gb3Jtcyh0aGlzLmZvcm1zTGlzdCk7XG4gICAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuc2V0Rm9ybVRpdGxlcyh0aGlzLmZvcm1zTGlzdCk7XG4gICAgICB0aGlzLmZvcm1zTGlzdExlbmd0aCA9IHRoaXMuZmluZEZvcm1zTGlzdExlbmd0aCh0aGlzLmZvcm1zTGlzdCk7XG4gICAgICB0aGlzLmlzQWxsRm9ybXNDb21wbGV0ZWQgPSB0aGlzLmNoZWNrSXNBbGxGb3Jtc0NvbXBsZXRlZCh0aGlzLmZvcm1zTGlzdCk7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJpc01vYmlsZVZpZXdcIikpIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gY2hhbmdlcy5pc01vYmlsZVZpZXcuY3VycmVudFZhbHVlO1xuXG4gICAgICBpZiAoIXRoaXMuaXNNb2JpbGVWaWV3KSB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRGb3JtKFwiXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiYWN0aXZlRm9ybUNvbmZpZ1wiKSkge1xuICAgICAgdGhpcy5hY3RpdmVGb3JtQ29uZmlnID0gY2hhbmdlcy5hY3RpdmVGb3JtQ29uZmlnLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgdGhpcy5zZXRTZWxlY3RlZEZvcm0odGhpcy5hY3RpdmVGb3JtQ29uZmlnPy5rZXkgPz8gXCJcIik7XG4gICAgfVxuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhjaGFuZ2VzLCBcInJlZHV4RGF0YVwiKSkge1xuICAgICAgdGhpcy5yZWR1eERhdGEgPSBjaGFuZ2VzLnJlZHV4RGF0YS5jdXJyZW50VmFsdWUgPz8ge307XG4gICAgfVxuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhjaGFuZ2VzLCBcInVzZXJDb25maWdcIikpIHtcbiAgICAgIHRoaXMudXNlckNvbmZpZyA9IGNoYW5nZXMudXNlckNvbmZpZy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICB0cmlnZ2VyTG9ncyhldmVudFR5cGU6IEVMb2dFdmVudFR5cGUsIGxvZ3M6IGFueSkge1xuICAgIHRoaXMuZ2V0TG9ncy5lbWl0KGZvcm1hdEV2ZW50TG9ncyhldmVudFR5cGUsIHRoaXMuc3RlcENvbmZpZywgbG9ncykpO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmb3JtYXRTdGVwQ29uZmlnKHN0ZXBDb25maWc6IGFueSk6IGFueSB7XG4gICAgc3RlcENvbmZpZyA9XG4gICAgICBzdGVwQ29uZmlnICYmIHR5cGVvZiBzdGVwQ29uZmlnID09PSBcIm9iamVjdFwiXG4gICAgICAgID8gZ2V0T2JqZWN0RGVlcENvcHkoc3RlcENvbmZpZylcbiAgICAgICAgOiBzdGVwQ29uZmlnO1xuXG4gICAgbGV0IHN0ZXBDb25maWdQcm9wZXJ0aWVzID0ge1xuICAgICAgZm9ybUxpc3RQcm9wZXJ0aWVzOiB7XG4gICAgICAgIGZvb3Rlcjoge1xuICAgICAgICAgIHN1Ym1pdEZvcm1CdXR0b246IHtcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBsYWJlbDogXCJTdWJtaXRcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoaXNOdWxsKHN0ZXBDb25maWcpIHx8IGlzVW5kZWZpbmVkKHN0ZXBDb25maWcpKSB7XG4gICAgICBzdGVwQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoe30sIFwicHJvcHNcIiwgc3RlcENvbmZpZ1Byb3BlcnRpZXMpO1xuICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoc3RlcENvbmZpZywgXCJwcm9wc1wiKSkge1xuICAgICAgc3RlcENvbmZpZ1Byb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzLFxuICAgICAgICBzdGVwQ29uZmlnLnByb3BzXG4gICAgICApO1xuXG4gICAgICBzdGVwQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIHN0ZXBDb25maWcsXG4gICAgICAgIFwicHJvcHNcIixcbiAgICAgICAgc3RlcENvbmZpZ1Byb3BlcnRpZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ZXBDb25maWcgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgc3RlcENvbmZpZyxcbiAgICAgICAgXCJwcm9wc1wiLFxuICAgICAgICBzdGVwQ29uZmlnUHJvcGVydGllc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBzdGVwQ29uZmlnLnByb3BzLmZvcm1MaXN0UHJvcGVydGllcy5mb290ZXIuc3VibWl0Rm9ybUJ1dHRvbi5sYWJlbCA9XG4gICAgICB1cGRhdGVMYW5ndWFnZShcbiAgICAgICAgc3RlcENvbmZpZy5wcm9wcy5mb3JtTGlzdFByb3BlcnRpZXMuZm9vdGVyLnN1Ym1pdEZvcm1CdXR0b24ubGFiZWwsXG4gICAgICAgIGdldExhbmd1YWdlKHRoaXMucmVkdXhEYXRhID8/IHt9LCB0aGlzLnVzZXJDb25maWcpXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHN0ZXBDb25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbHRlckhpZGRlbkZvcm1zKGZvcm1zTGlzdDogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGZvcm1zTGlzdC5maWx0ZXIoKGZvcm0pID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICByZXR1cm4gIWZvcm0uaGlkZGVuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBzZXRGb3JtVGl0bGVzKGZvcm1zTGlzdDogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGZvcm1zTGlzdFxuICAgICAgLm1hcCgoZm9ybSkgPT4ge1xuICAgICAgICBpZiAoZm9ybS50eXBlID09PSBFRm9ybVR5cGUuSFRNTCkge1xuICAgICAgICAgIHJldHVybiBmb3JtOyAvLyBObyBtb2RpZmljYXRpb24sIGp1c3QgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmb3JtLCBcInByb3BzLnRpdGxlXCIpKSB7XG4gICAgICAgICAgZm9ybS5wcm9wcy50aXRsZSA9IHVwZGF0ZUxhbmd1YWdlKFxuICAgICAgICAgICAgZm9ybS5wcm9wcy50aXRsZSxcbiAgICAgICAgICAgIGdldExhbmd1YWdlKHRoaXMucmVkdXhEYXRhID8/IHt9LCB0aGlzLnVzZXJDb25maWcpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybTsgLy8gUmV0dXJuIHRoZSBmb3JtIHJlZ2FyZGxlc3Mgb2YgbW9kaWZpY2F0aW9uXG4gICAgICB9KVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGZvcm0pID0+XG4gICAgICAgICAgZm9ybS50eXBlID09PSBFRm9ybVR5cGUuSFRNTCB8fFxuICAgICAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmb3JtLCBcInByb3BzLnRpdGxlXCIpXG4gICAgICApO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaW5kRm9ybXNMaXN0TGVuZ3RoKGZvcm1zTGlzdDogYW55W10pOiBudW1iZXIge1xuICAgIHJldHVybiBmb3Jtc0xpc3QuZmlsdGVyKChmb3JtKSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJ0eXBlXCIpKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgZm9ybS50eXBlICE9PSBFRm9ybVR5cGUuSFRNTCAmJlxuICAgICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpICYmXG4gICAgICAgICAgIWZvcm0uaGlkZGVuXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikgJiYgIWZvcm0uaGlkZGVuO1xuICAgIH0pLmxlbmd0aDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY2hlY2tJc0FsbEZvcm1zQ29tcGxldGVkKGZvcm1zTGlzdDogYW55W10pOiBib29sZWFuIHtcbiAgICBsZXQgaXNBbGxGb3Jtc0NvbXBsZXRlZCA9IHRydWU7XG5cbiAgICBmb3IgKGNvbnN0IGZvcm0gb2YgZm9ybXNMaXN0KSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJ0eXBlXCIpKSB7XG4gICAgICAgIGlmIChmb3JtLnR5cGUgIT09IEVGb3JtVHlwZS5IVE1MKSB7XG4gICAgICAgICAgaWYgKGZvcm0uc3RhdHVzICE9PSBcImNvbXBsZXRlZFwiKSB7XG4gICAgICAgICAgICBpc0FsbEZvcm1zQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNBbGxGb3Jtc0NvbXBsZXRlZDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oc2VsZWN0ZWRGb3JtOiBzdHJpbmcpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyB8fFxuICAgICAgKCF0aGlzLmlzTW9iaWxlVmlldyAmJiB0aGlzLnNlbGVjdGVkRm9ybSAhPT0gc2VsZWN0ZWRGb3JtKSB8fFxuICAgICAgKHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCAmJiAhdGhpcy5zaG93Rm9ybUZpZWxkcylcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtQ29uZmlnPy5wcm9wZXJ0aWVzPy5pc1Vuc2F2ZWREYXRhQWxlcnRFbmFibGVkICYmXG4gICAgICAgIHRoaXMuaXNVbnNhdmVkRGF0YSAmJlxuICAgICAgICAhd2luZG93LmNvbmZpcm0oXCJZb3UgaGF2ZSB1bnNhdmVkIGRhdGEuIFByb2NlZWQ/XCIpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy50cmlnZ2VyTG9ncyhFTG9nRXZlbnRUeXBlLkZPUk1fX0ZPUk1fT1BFTl9CVVRUT05fQ0xJQ0ssIHtcbiAgICAgICAgZm9ybV9rZXk6IHNlbGVjdGVkRm9ybSxcbiAgICAgICAgZm9ybV9sYWJlbDpcbiAgICAgICAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWc/LnRpdGxlID8/IHRoaXMuYWN0aXZlRm9ybUNvbmZpZz8ucHJvcHM/LnRpdGxlXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZWxlY3RlZEZvcm0gPSBzZWxlY3RlZEZvcm07XG4gICAgICB0aGlzLm9uQ2xpY2tTZXRBY3RpdmVGb3JtLmVtaXQoc2VsZWN0ZWRGb3JtKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uU3VibWl0Rm9ybXMoZTogYW55KSB7XG4gICAgLyoqXG4gICAgICogUE9TVCBBQ1RJT05TXG4gICAgICogMS4gQVBJIENhbGxzLlxuICAgICAqIDIuIFByZXZpZXcgb2YgYWxsIGZpbGxlZCBkYXRhLlxuICAgICAqIDMuIFVSTCBSZWRpcmVjdGlvbiBvciBuZXcgb3BlbmluZyBvZiBVUkwgaW4gZXh0ZXJuYWwgdGFiLlxuICAgICAqL1xuXG4gICAgdGhpcy5vbkNsaWNrU3VibWl0Rm9ybXMuZW1pdChlKTtcbiAgfVxufVxuIiwiPGRpdlxuICBpZD1cInNpZGViYXItY29udGFpbmVyXCJcbiAgKm5nSWY9XCIhbG9hZGluZ1wiXG4+XG4gIDxkaXYgaWQ9XCJzaWRlYmFyXCI+XG4gICAgPGRpdiBuZ0NsYXNzPVwia3dpa2lkLWZvcm0taGVhZGVyXCI+XG4gICAgICA8ZGl2IGlkPVwidWYtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJ1Zi1oZWFkZXItbG9nby1jb250YWluZXJcIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBpZD1cInVmLWhlYWRlci1sb2dvXCJcbiAgICAgICAgICAgIHNyYz1cInt7IHRoaXMudXNlckNvbmZpZy50aGVtZS5jbGllbnRMb2dvIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidsYXJnZS1pY29uJ1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxociAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJ1Zi1wcm9ncmVzc1wiPlxuICAgICAgPGRpdiBpZD1cInVmLXByb2dyZXNzLXN0ZXBzXCI+XG4gICAgICAgIHt7IHRoaXMuZm9ybXNMaXN0Q29tcGxldGVkLmxlbmd0aCB9fSAvIHt7IHRoaXMuZm9ybXNMaXN0TGVuZ3RoIH19IFN0ZXBzXG4gICAgICAgIENvbXBsZXRlZFxuICAgICAgPC9kaXY+XG4gICAgICA8a3dpa3VpLXByb2dyZXNzLXNlZ21lbnRlZFxuICAgICAgICBbbWF4XT1cInRoaXMuZm9ybXNMaXN0TGVuZ3RoXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBbdmFsdWVdPVwidGhpcy5mb3Jtc0xpc3RDb21wbGV0ZWQubGVuZ3RoXCJcbiAgICAgID48L2t3aWt1aS1wcm9ncmVzcy1zZWdtZW50ZWQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cInVmLXNlY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3Jtc0xpc3Q7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZm9ybS50eXBlXCI+XG4gICAgICAgICAgPCEtLSBIVE1MIENvbnRlbnQgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0hUTUwnXCI+XG4gICAgICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwiZm9ybS5wcm9wcy5odG1sQ29udGVudCB8IGt3aWt1aVNhZmVIdG1sXCI+PC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPCEtLSBUeXBlIEZPUk0gLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0ZPUk0nXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkZPUk1fQlVUVE9OXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBmb3JtOiBmb3JtLFxuICAgICAgICAgICAgICAgIGFjdGl2ZUZvcm1Db25maWc6IGFjdGl2ZUZvcm1Db25maWdcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwic3VibWl0LXNpZGViYXItYnRuLWNvbnRhaW5lclwiPlxuICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAhc3RlcENvbmZpZy5wcm9wcy5mb3JtTGlzdFByb3BlcnRpZXMuZm9vdGVyLnN1Ym1pdEZvcm1CdXR0b24uaGlkZGVuXG4gICAgICAgIFwiXG4gICAgICAgIGxhYmVsPVwie3tcbiAgICAgICAgICBzdGVwQ29uZmlnLnByb3BzLmZvcm1MaXN0UHJvcGVydGllcy5mb290ZXIuc3VibWl0Rm9ybUJ1dHRvbi5sYWJlbFxuICAgICAgICB9fVwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBzdHlsZXM9XCJ3aWR0aDogMTAwJVwiXG4gICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uU3VibWl0Rm9ybXMoJGV2ZW50KVwiXG4gICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI0ZPUk1fQlVUVE9OXG4gIGxldC1mb3JtPVwiZm9ybVwiXG4gIGxldC1hY3RpdmVGb3JtQ29uZmlnPVwiYWN0aXZlRm9ybUNvbmZpZ1wiXG4+XG4gIDxkaXZcbiAgICBbY2xhc3NdPVwiJ3VmLXNlY3Rpb24taXRlbSdcIlxuICAgIFtjbGFzcy5jb21wbGV0ZWRdPVwiZm9ybS5zdGF0dXMgPT09ICdjb21wbGV0ZWQnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICBbY2xhc3MuZWRpdF09XCJmb3JtLnN0YXR1cyA9PT0gJ2VkaXRhYmxlJyAmJiAhZm9ybS5kaXNhYmxlZFwiXG4gICAgW2NsYXNzLmxvY2tlZF09XCJmb3JtLnN0YXR1cyA9PT0gJ2xvY2tlZCcgJiYgZm9ybS5kaXNhYmxlZFwiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgIGFjdGl2ZUZvcm1Db25maWcgIT09IHVuZGVmaW5lZCAmJiBmb3JtLmtleSA9PT0gYWN0aXZlRm9ybUNvbmZpZy5rZXlcbiAgICBcIlxuICAgIChjbGljayk9XCJcbiAgICAgIGZvcm0uc3RhdHVzID09PSAnbG9ja2VkJyAmJiBmb3JtLmRpc2FibGVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oZm9ybS5rZXkpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ1Zi1mb3JtLXNlY3Rpb24tY2FyZC10aXRsZVwiPlxuICAgICAge3sgZm9ybS5wcm9wcy50aXRsZSB9fSZuYnNwOzxzcGFuICpuZ0lmPVwiZm9ybT8ucmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ1Zi1mb3JtLXNlY3Rpb24tY2FyZC1zdGF0dXNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJmb3JtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcgJiYgIWZvcm0uZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1cy1pbWcgY29tcGxldGVkXCJcbiAgICAgID5cbiAgICAgICAgPHR1aS1zdmcgc3JjPVwidHVpSWNvbkNoZWNrTGFyZ2VcIj48L3R1aS1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJmb3JtLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgJiYgIWZvcm0uZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1cy1pbWcgZWRpdFwiXG4gICAgICA+XG4gICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25FZGl0XCI+PC90dWktc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZm9ybS5zdGF0dXMgIT09ICdjb21wbGV0ZWQnICYmIGZvcm0uZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1cy1pbWcgbG9ja2VkXCJcbiAgICAgID5cbiAgICAgICAgPHR1aS1zdmcgc3JjPVwidHVpSWNvbkxvY2tcIj48L3R1aS1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,194 @@
1
+ import { checkObjectKeyExists, isNotEmptyValue } from "kwikid-toolkit";
2
+ /**
3
+ * Default when utilityFlags.isEliminateBrowserStorage is not set (undefined).
4
+ * Legacy hosts keep localStorage; set the flag to true for reduxData-only reads.
5
+ */
6
+ export const DEFAULT_FORMS_ELIMINATE_BROWSER_STORAGE = false;
7
+ /**
8
+ * Resolution order must match legacy getLanguage() (config-converter.helper):
9
+ * lng first, selectedLang last — do not reorder without a breaking-change note.
10
+ */
11
+ const DEFAULT_LANGUAGE_KEYS = [
12
+ "lng",
13
+ "lang",
14
+ "Lang",
15
+ "language",
16
+ "currentLang",
17
+ "selectedLang"
18
+ ];
19
+ const STANDARD_LOGICAL_KEYS = ["session_id", "language", "formKey"];
20
+ /** Legacy default: localStorage until host sets utilityFlags.isEliminateBrowserStorage. */
21
+ export const DEFAULT_FORMS_STORAGE_CONFIG = {
22
+ defaultSource: "localStorage",
23
+ session_id: { key: "session_id" },
24
+ language: {
25
+ keys: DEFAULT_LANGUAGE_KEYS,
26
+ fallback: "en"
27
+ },
28
+ formKey: { key: "formKey" }
29
+ };
30
+ function readLocalStorage(key) {
31
+ if (typeof localStorage === "undefined") {
32
+ return null;
33
+ }
34
+ try {
35
+ return localStorage.getItem(key);
36
+ }
37
+ catch (error) {
38
+ return null;
39
+ }
40
+ }
41
+ function readReduxDataScalar(reduxData, key) {
42
+ const value = reduxData[key];
43
+ if (value === undefined || value === null) {
44
+ return null;
45
+ }
46
+ if (typeof value === "string") {
47
+ return value;
48
+ }
49
+ if (typeof value === "number" || typeof value === "boolean") {
50
+ return String(value);
51
+ }
52
+ return null;
53
+ }
54
+ function readReduxDataObject(reduxData, key) {
55
+ const value = reduxData[key];
56
+ if (value === undefined || value === null) {
57
+ return undefined;
58
+ }
59
+ if (typeof value === "string") {
60
+ try {
61
+ return JSON.parse(value);
62
+ }
63
+ catch (error) {
64
+ return value;
65
+ }
66
+ }
67
+ return value;
68
+ }
69
+ function readLocalStorageObject(key) {
70
+ const raw = readLocalStorage(key);
71
+ if (raw === null) {
72
+ return undefined;
73
+ }
74
+ try {
75
+ return JSON.parse(raw);
76
+ }
77
+ catch (error) {
78
+ return raw;
79
+ }
80
+ }
81
+ function readStorageObject(source, reduxData, key) {
82
+ if (source === "reduxData") {
83
+ return readReduxDataObject(reduxData, key);
84
+ }
85
+ return readLocalStorageObject(key);
86
+ }
87
+ function isFormsStorageKeyConfig(entry) {
88
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
89
+ return false;
90
+ }
91
+ return (checkObjectKeyExists(entry, "source") ||
92
+ checkObjectKeyExists(entry, "key") ||
93
+ checkObjectKeyExists(entry, "keys") ||
94
+ checkObjectKeyExists(entry, "fallback"));
95
+ }
96
+ function keyConfigFor(config, logicalKey) {
97
+ const entry = config[logicalKey];
98
+ if (isFormsStorageKeyConfig(entry)) {
99
+ return entry;
100
+ }
101
+ return undefined;
102
+ }
103
+ function sourceForKey(config, logicalKey) {
104
+ var _a, _b, _c, _d;
105
+ return ((_d = (_c = (_b = (_a = keyConfigFor(config, logicalKey)) === null || _a === void 0 ? void 0 : _a.source) !== null && _b !== void 0 ? _b : config.defaultSource) !== null && _c !== void 0 ? _c : DEFAULT_FORMS_STORAGE_CONFIG.defaultSource) !== null && _d !== void 0 ? _d : "localStorage");
106
+ }
107
+ /**
108
+ * Apply utilityFlags.isEliminateBrowserStorage as the single source of truth.
109
+ * When true → reduxData; when false/omitted → localStorage (overrides formsStorage.defaultSource).
110
+ */
111
+ function normalizeFormsStorageConfigSources(config, source) {
112
+ var _a, _b, _c, _d, _e, _f;
113
+ const next = Object.assign(Object.assign({}, config), { defaultSource: source });
114
+ const mergeStandardKey = (logicalKey, base) => {
115
+ const existing = keyConfigFor(config, logicalKey);
116
+ next[logicalKey] = Object.assign(Object.assign(Object.assign({}, base), (existing !== null && existing !== void 0 ? existing : {})), { source });
117
+ };
118
+ mergeStandardKey("session_id", { key: "session_id" });
119
+ mergeStandardKey("formKey", { key: "formKey" });
120
+ mergeStandardKey("language", {
121
+ keys: (_d = (_b = (_a = keyConfigFor(config, "language")) === null || _a === void 0 ? void 0 : _a.keys) !== null && _b !== void 0 ? _b : (_c = DEFAULT_FORMS_STORAGE_CONFIG.language) === null || _c === void 0 ? void 0 : _c.keys) !== null && _d !== void 0 ? _d : DEFAULT_LANGUAGE_KEYS,
122
+ fallback: (_f = (_e = keyConfigFor(config, "language")) === null || _e === void 0 ? void 0 : _e.fallback) !== null && _f !== void 0 ? _f : "en"
123
+ });
124
+ Object.keys(config).forEach((key) => {
125
+ if (key === "defaultSource" || STANDARD_LOGICAL_KEYS.includes(key)) {
126
+ return;
127
+ }
128
+ const entry = config[key];
129
+ if (isFormsStorageKeyConfig(entry)) {
130
+ next[key] = Object.assign(Object.assign({}, entry), { source });
131
+ }
132
+ });
133
+ return next;
134
+ }
135
+ /** Merge userConfig.formsStorage with defaults; map utilityFlags when present. */
136
+ export function resolveFormsStorageConfig(userConfig) {
137
+ var _a;
138
+ const fromUser = userConfig === null || userConfig === void 0 ? void 0 : userConfig.formsStorage;
139
+ const config = Object.assign(Object.assign({}, DEFAULT_FORMS_STORAGE_CONFIG), (fromUser && typeof fromUser === "object" ? fromUser : {}));
140
+ const eliminateFlag = (_a = userConfig === null || userConfig === void 0 ? void 0 : userConfig.utilityFlags) === null || _a === void 0 ? void 0 : _a.isEliminateBrowserStorage;
141
+ const eliminate = typeof eliminateFlag === "boolean"
142
+ ? eliminateFlag
143
+ : DEFAULT_FORMS_ELIMINATE_BROWSER_STORAGE;
144
+ const source = eliminate ? "reduxData" : "localStorage";
145
+ return normalizeFormsStorageConfigSources(config, source);
146
+ }
147
+ /** Resolve a string value for a logical or explicit storage key. */
148
+ export function resolveFormsStorageString(logicalKey, reduxData = {}, config) {
149
+ var _a, _b, _c, _d;
150
+ const resolvedConfig = config !== null && config !== void 0 ? config : DEFAULT_FORMS_STORAGE_CONFIG;
151
+ const keyCfg = keyConfigFor(resolvedConfig, logicalKey);
152
+ const source = sourceForKey(resolvedConfig, logicalKey);
153
+ if ((_a = keyCfg === null || keyCfg === void 0 ? void 0 : keyCfg.keys) === null || _a === void 0 ? void 0 : _a.length) {
154
+ for (const key of keyCfg.keys) {
155
+ const value = source === "reduxData"
156
+ ? readReduxDataScalar(reduxData, key)
157
+ : readLocalStorage(key);
158
+ if (isNotEmptyValue(value)) {
159
+ return value;
160
+ }
161
+ }
162
+ return (_b = keyCfg.fallback) !== null && _b !== void 0 ? _b : null;
163
+ }
164
+ const storageKey = (_c = keyCfg === null || keyCfg === void 0 ? void 0 : keyCfg.key) !== null && _c !== void 0 ? _c : logicalKey;
165
+ const value = source === "reduxData"
166
+ ? readReduxDataScalar(reduxData, storageKey)
167
+ : readLocalStorage(storageKey);
168
+ if (isNotEmptyValue(value)) {
169
+ return value;
170
+ }
171
+ return (_d = keyCfg === null || keyCfg === void 0 ? void 0 : keyCfg.fallback) !== null && _d !== void 0 ? _d : null;
172
+ }
173
+ /**
174
+ * Resolve a structured value (form config blob, eNachForm, etc.).
175
+ * Supports the same logical key / keys[] / key alias config as resolveFormsStorageString.
176
+ */
177
+ export function resolveFormsStorageObject(logicalKey, reduxData = {}, config) {
178
+ var _a, _b;
179
+ const resolvedConfig = config !== null && config !== void 0 ? config : DEFAULT_FORMS_STORAGE_CONFIG;
180
+ const keyCfg = keyConfigFor(resolvedConfig, logicalKey);
181
+ const source = sourceForKey(resolvedConfig, logicalKey);
182
+ if ((_a = keyCfg === null || keyCfg === void 0 ? void 0 : keyCfg.keys) === null || _a === void 0 ? void 0 : _a.length) {
183
+ for (const key of keyCfg.keys) {
184
+ const value = readStorageObject(source, reduxData, key);
185
+ if (value !== undefined && value !== null) {
186
+ return value;
187
+ }
188
+ }
189
+ return undefined;
190
+ }
191
+ const storageKey = (_b = keyCfg === null || keyCfg === void 0 ? void 0 : keyCfg.key) !== null && _b !== void 0 ? _b : logicalKey;
192
+ return readStorageObject(source, reduxData, storageKey);
193
+ }
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtc3RvcmFnZS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9oZWxwZXJzL2Zvcm1zLXN0b3JhZ2UuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt2RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxLQUFLLENBQUM7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixLQUFLO0lBQ0wsTUFBTTtJQUNOLE1BQU07SUFDTixVQUFVO0lBQ1YsYUFBYTtJQUNiLGNBQWM7Q0FDZixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFVLENBQUM7QUFnQzdFLDJGQUEyRjtBQUMzRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBdUI7SUFDOUQsYUFBYSxFQUFFLGNBQWM7SUFDN0IsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRTtJQUNqQyxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLFFBQVEsRUFBRSxJQUFJO0tBQ2Y7SUFDRCxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO0NBQzVCLENBQUM7QUFFRixTQUFTLGdCQUFnQixDQUFDLEdBQVc7SUFDbkMsSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLEVBQUU7UUFDdkMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELElBQUk7UUFDRixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDbEM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBRUQs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LE1BQU0sR0FBSSw0QkFBNEIsQ0FBQztJQUM5RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFeEQsSUFBSSxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLDBDQUFFLE1BQU0sRUFBRTtRQUN4QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDN0IsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4RCxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDekMsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxHQUFHLG1DQUFJLFVBQVUsQ0FBQztJQUM3QyxPQUFPLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNoZWNrT2JqZWN0S2V5RXhpc3RzLCBpc05vdEVtcHR5VmFsdWUgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcblxuLyoqIFdoZXJlIGEgY29uZmlndXJlZCBrZXkgc2hvdWxkIGJlIHJlYWQgZnJvbS4gKi9cbmV4cG9ydCB0eXBlIEZvcm1zU3RvcmFnZVNvdXJjZSA9IFwicmVkdXhEYXRhXCIgfCBcImxvY2FsU3RvcmFnZVwiO1xuXG4vKipcbiAqIERlZmF1bHQgd2hlbiB1dGlsaXR5RmxhZ3MuaXNFbGltaW5hdGVCcm93c2VyU3RvcmFnZSBpcyBub3Qgc2V0ICh1bmRlZmluZWQpLlxuICogTGVnYWN5IGhvc3RzIGtlZXAgbG9jYWxTdG9yYWdlOyBzZXQgdGhlIGZsYWcgdG8gdHJ1ZSBmb3IgcmVkdXhEYXRhLW9ubHkgcmVhZHMuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZPUk1TX0VMSU1JTkFURV9CUk9XU0VSX1NUT1JBR0UgPSBmYWxzZTtcblxuLyoqXG4gKiBSZXNvbHV0aW9uIG9yZGVyIG11c3QgbWF0Y2ggbGVnYWN5IGdldExhbmd1YWdlKCkgKGNvbmZpZy1jb252ZXJ0ZXIuaGVscGVyKTpcbiAqIGxuZyBmaXJzdCwgc2VsZWN0ZWRMYW5nIGxhc3Qg4oCUIGRvIG5vdCByZW9yZGVyIHdpdGhvdXQgYSBicmVha2luZy1jaGFuZ2Ugbm90ZS5cbiAqL1xuY29uc3QgREVGQVVMVF9MQU5HVUFHRV9LRVlTID0gW1xuICBcImxuZ1wiLFxuICBcImxhbmdcIixcbiAgXCJMYW5nXCIsXG4gIFwibGFuZ3VhZ2VcIixcbiAgXCJjdXJyZW50TGFuZ1wiLFxuICBcInNlbGVjdGVkTGFuZ1wiXG5dO1xuXG5jb25zdCBTVEFOREFSRF9MT0dJQ0FMX0tFWVMgPSBbXCJzZXNzaW9uX2lkXCIsIFwibGFuZ3VhZ2VcIiwgXCJmb3JtS2V5XCJdIGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1zU3RvcmFnZUtleUNvbmZpZyB7XG4gIC8qKiBPbWl0IHRvIHVzZSBGb3Jtc1N0b3JhZ2VDb25maWcuZGVmYXVsdFNvdXJjZSAob25lIHNvdXJjZSBwZXIgY2xpZW50KS4gKi9cbiAgc291cmNlPzogRm9ybXNTdG9yYWdlU291cmNlO1xuICAvKiogU3RvcmFnZSBrZXkgKGRlZmF1bHRzIHRvIHRoZSBsb2dpY2FsIGlkIHBhc3NlZCB0byByZXNvbHZlKS4gKi9cbiAga2V5Pzogc3RyaW5nO1xuICAvKiogVHJ5IG11bHRpcGxlIGtleXMgaW4gb3JkZXIgKGUuZy4gbGFuZ3VhZ2UpLiAqL1xuICBrZXlzPzogc3RyaW5nW107XG4gIGZhbGxiYWNrPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhvc3Qgc3VwcGxpZXMgdmlhIHVzZXJDb25maWcuZm9ybXNTdG9yYWdlLCBvciBkZXJpdmVkIGZyb20gdXRpbGl0eUZsYWdzLlxuICogUGVyLWtleSBgc291cmNlYCBpcyBvcHRpb25hbCDigJQgZmFsbHMgYmFjayB0byBkZWZhdWx0U291cmNlIChzYW1lIGlkZWEgYXMgdG9vbGtpdFxuICogQlJPV1NFUl9TVE9SQUdFOiB7IHR5cGUsIGtleSB9IHdpdGggYSBzaW5nbGUgdHlwZSBmb3IgdGhlIGNsaWVudCkuXG4gKiBFeGFtcGxlIChlbGltaW5hdGUgbW9kZSDigJQgc2V0IHZpYSB1dGlsaXR5RmxhZ3Mgb3IgZGVmYXVsdFNvdXJjZSk6XG4gKiB7XG4gKiAgIFwiZGVmYXVsdFNvdXJjZVwiOiBcInJlZHV4RGF0YVwiLFxuICogICBcInNlc3Npb25faWRcIjogeyBcImtleVwiOiBcInNlc3Npb25faWRcIiB9LFxuICogICBcImxhbmd1YWdlXCI6IHsgXCJrZXlzXCI6IFtcImxuZ1wiLCBcImxhbmdcIiwgXCJzZWxlY3RlZExhbmdcIl0sIFwiZmFsbGJhY2tcIjogXCJlblwiIH0sXG4gKiAgIFwiZm9ybUtleVwiOiB7IFwia2V5XCI6IFwiZm9ybUtleVwiIH1cbiAqIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jtc1N0b3JhZ2VDb25maWcge1xuICBkZWZhdWx0U291cmNlPzogRm9ybXNTdG9yYWdlU291cmNlO1xuICBzZXNzaW9uX2lkPzogRm9ybXNTdG9yYWdlS2V5Q29uZmlnO1xuICBsYW5ndWFnZT86IEZvcm1zU3RvcmFnZUtleUNvbmZpZztcbiAgZm9ybUtleT86IEZvcm1zU3RvcmFnZUtleUNvbmZpZztcbiAgW2xvZ2ljYWxLZXk6IHN0cmluZ106IEZvcm1zU3RvcmFnZUtleUNvbmZpZyB8IEZvcm1zU3RvcmFnZVNvdXJjZSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqIExlZ2FjeSBkZWZhdWx0OiBsb2NhbFN0b3JhZ2UgdW50aWwgaG9zdCBzZXRzIHV0aWxpdHlGbGFncy5pc0VsaW1pbmF0ZUJyb3dzZXJTdG9yYWdlLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9STVNfU1RPUkFHRV9DT05GSUc6IEZvcm1zU3RvcmFnZUNvbmZpZyA9IHtcbiAgZGVmYXVsdFNvdXJjZTogXCJsb2NhbFN0b3JhZ2VcIixcbiAgc2Vzc2lvbl9pZDogeyBrZXk6IFwic2Vzc2lvbl9pZFwiIH0sXG4gIGxhbmd1YWdlOiB7XG4gICAga2V5czogREVGQVVMVF9MQU5HVUFHRV9LRVlTLFxuICAgIGZhbGxiYWNrOiBcImVuXCJcbiAgfSxcbiAgZm9ybUtleTogeyBrZXk6IFwiZm9ybUtleVwiIH1cbn07XG5cbmZ1bmN0aW9uIHJlYWRMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZFJlZHV4RGF0YVNjYWxhcihcbiAgcmVkdXhEYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAga2V5OiBzdHJpbmdcbik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB2YWx1ZSA9IHJlZHV4RGF0YVtrZXldO1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlYWRSZWR1eERhdGFPYmplY3QoXG4gIHJlZHV4RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGtleTogc3RyaW5nXG4pOiB1bmtub3duIHtcbiAgY29uc3QgdmFsdWUgPSByZWR1eERhdGFba2V5XTtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHJlYWRMb2NhbFN0b3JhZ2VPYmplY3Qoa2V5OiBzdHJpbmcpOiB1bmtub3duIHtcbiAgY29uc3QgcmF3ID0gcmVhZExvY2FsU3RvcmFnZShrZXkpO1xuICBpZiAocmF3ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gcmF3O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRTdG9yYWdlT2JqZWN0KFxuICBzb3VyY2U6IEZvcm1zU3RvcmFnZVNvdXJjZSxcbiAgcmVkdXhEYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAga2V5OiBzdHJpbmdcbik6IHVua25vd24ge1xuICBpZiAoc291cmNlID09PSBcInJlZHV4RGF0YVwiKSB7XG4gICAgcmV0dXJuIHJlYWRSZWR1eERhdGFPYmplY3QocmVkdXhEYXRhLCBrZXkpO1xuICB9XG5cbiAgcmV0dXJuIHJlYWRMb2NhbFN0b3JhZ2VPYmplY3Qoa2V5KTtcbn1cblxuZnVuY3Rpb24gaXNGb3Jtc1N0b3JhZ2VLZXlDb25maWcoZW50cnk6IHVua25vd24pOiBlbnRyeSBpcyBGb3Jtc1N0b3JhZ2VLZXlDb25maWcge1xuICBpZiAoIWVudHJ5IHx8IHR5cGVvZiBlbnRyeSAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGVudHJ5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZW50cnksIFwic291cmNlXCIpIHx8XG4gICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZW50cnksIFwia2V5XCIpIHx8XG4gICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZW50cnksIFwia2V5c1wiKSB8fFxuICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGVudHJ5LCBcImZhbGxiYWNrXCIpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGtleUNvbmZpZ0ZvcihcbiAgY29uZmlnOiBGb3Jtc1N0b3JhZ2VDb25maWcsXG4gIGxvZ2ljYWxLZXk6IHN0cmluZ1xuKTogRm9ybXNTdG9yYWdlS2V5Q29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZW50cnkgPSBjb25maWdbbG9naWNhbEtleV07XG4gIGlmIChpc0Zvcm1zU3RvcmFnZUtleUNvbmZpZyhlbnRyeSkpIHtcbiAgICByZXR1cm4gZW50cnk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gc291cmNlRm9yS2V5KFxuICBjb25maWc6IEZvcm1zU3RvcmFnZUNvbmZpZyxcbiAgbG9naWNhbEtleTogc3RyaW5nXG4pOiBGb3Jtc1N0b3JhZ2VTb3VyY2Uge1xuICByZXR1cm4gKFxuICAgIGtleUNvbmZpZ0Zvcihjb25maWcsIGxvZ2ljYWxLZXkpPy5zb3VyY2UgPz9cbiAgICBjb25maWcuZGVmYXVsdFNvdXJjZSA/P1xuICAgIERFRkFVTFRfRk9STVNfU1RPUkFHRV9DT05GSUcuZGVmYXVsdFNvdXJjZSA/P1xuICAgIFwibG9jYWxTdG9yYWdlXCJcbiAgKTtcbn1cblxuLyoqXG4gKiBBcHBseSB1dGlsaXR5RmxhZ3MuaXNFbGltaW5hdGVCcm93c2VyU3RvcmFnZSBhcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aC5cbiAqIFdoZW4gdHJ1ZSDihpIgcmVkdXhEYXRhOyB3aGVuIGZhbHNlL29taXR0ZWQg4oaSIGxvY2FsU3RvcmFnZSAob3ZlcnJpZGVzIGZvcm1zU3RvcmFnZS5kZWZhdWx0U291cmNlKS5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRm9ybXNTdG9yYWdlQ29uZmlnU291cmNlcyhcbiAgY29uZmlnOiBGb3Jtc1N0b3JhZ2VDb25maWcsXG4gIHNvdXJjZTogRm9ybXNTdG9yYWdlU291cmNlXG4pOiBGb3Jtc1N0b3JhZ2VDb25maWcge1xuICBjb25zdCBuZXh0OiBGb3Jtc1N0b3JhZ2VDb25maWcgPSB7XG4gICAgLi4uY29uZmlnLFxuICAgIGRlZmF1bHRTb3VyY2U6IHNvdXJjZVxuICB9O1xuXG4gIGNvbnN0IG1lcmdlU3RhbmRhcmRLZXkgPSAoXG4gICAgbG9naWNhbEtleTogc3RyaW5nLFxuICAgIGJhc2U6IEZvcm1zU3RvcmFnZUtleUNvbmZpZ1xuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IGtleUNvbmZpZ0Zvcihjb25maWcsIGxvZ2ljYWxLZXkpO1xuICAgIG5leHRbbG9naWNhbEtleV0gPSB7XG4gICAgICAuLi5iYXNlLFxuICAgICAgLi4uKGV4aXN0aW5nID8/IHt9KSxcbiAgICAgIHNvdXJjZVxuICAgIH07XG4gIH07XG5cbiAgbWVyZ2VTdGFuZGFyZEtleShcInNlc3Npb25faWRcIiwgeyBrZXk6IFwic2Vzc2lvbl9pZFwiIH0pO1xuICBtZXJnZVN0YW5kYXJkS2V5KFwiZm9ybUtleVwiLCB7IGtleTogXCJmb3JtS2V5XCIgfSk7XG4gIG1lcmdlU3RhbmRhcmRLZXkoXCJsYW5ndWFnZVwiLCB7XG4gICAga2V5czpcbiAgICAgIGtleUNvbmZpZ0Zvcihjb25maWcsIFwibGFuZ3VhZ2VcIik/LmtleXMgPz9cbiAgICAgIERFRkFVTFRfRk9STVNfU1RPUkFHRV9DT05GSUcubGFuZ3VhZ2U/LmtleXMgPz9cbiAgICAgIERFRkFVTFRfTEFOR1VBR0VfS0VZUyxcbiAgICBmYWxsYmFjazoga2V5Q29uZmlnRm9yKGNvbmZpZywgXCJsYW5ndWFnZVwiKT8uZmFsbGJhY2sgPz8gXCJlblwiXG4gIH0pO1xuXG4gIE9iamVjdC5rZXlzKGNvbmZpZykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaWYgKGtleSA9PT0gXCJkZWZhdWx0U291cmNlXCIgfHwgU1RBTkRBUkRfTE9HSUNBTF9LRVlTLmluY2x1ZGVzKGtleSBhcyBhbnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnkgPSBjb25maWdba2V5XTtcbiAgICBpZiAoaXNGb3Jtc1N0b3JhZ2VLZXlDb25maWcoZW50cnkpKSB7XG4gICAgICBuZXh0W2tleV0gPSB7IC4uLmVudHJ5LCBzb3VyY2UgfTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBuZXh0O1xufVxuXG4vKiogTWVyZ2UgdXNlckNvbmZpZy5mb3Jtc1N0b3JhZ2Ugd2l0aCBkZWZhdWx0czsgbWFwIHV0aWxpdHlGbGFncyB3aGVuIHByZXNlbnQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZvcm1zU3RvcmFnZUNvbmZpZyh1c2VyQ29uZmlnPzogYW55KTogRm9ybXNTdG9yYWdlQ29uZmlnIHtcbiAgY29uc3QgZnJvbVVzZXIgPSB1c2VyQ29uZmlnPy5mb3Jtc1N0b3JhZ2U7XG4gIGNvbnN0IGNvbmZpZzogRm9ybXNTdG9yYWdlQ29uZmlnID0ge1xuICAgIC4uLkRFRkFVTFRfRk9STVNfU1RPUkFHRV9DT05GSUcsXG4gICAgLi4uKGZyb21Vc2VyICYmIHR5cGVvZiBmcm9tVXNlciA9PT0gXCJvYmplY3RcIiA/IGZyb21Vc2VyIDoge30pXG4gIH07XG5cbiAgY29uc3QgZWxpbWluYXRlRmxhZyA9IHVzZXJDb25maWc/LnV0aWxpdHlGbGFncz8uaXNFbGltaW5hdGVCcm93c2VyU3RvcmFnZTtcbiAgY29uc3QgZWxpbWluYXRlID1cbiAgICB0eXBlb2YgZWxpbWluYXRlRmxhZyA9PT0gXCJib29sZWFuXCJcbiAgICAgID8gZWxpbWluYXRlRmxhZ1xuICAgICAgOiBERUZBVUxUX0ZPUk1TX0VMSU1JTkFURV9CUk9XU0VSX1NUT1JBR0U7XG5cbiAgY29uc3Qgc291cmNlOiBGb3Jtc1N0b3JhZ2VTb3VyY2UgPSBlbGltaW5hdGUgPyBcInJlZHV4RGF0YVwiIDogXCJsb2NhbFN0b3JhZ2VcIjtcblxuICByZXR1cm4gbm9ybWFsaXplRm9ybXNTdG9yYWdlQ29uZmlnU291cmNlcyhjb25maWcsIHNvdXJjZSk7XG59XG5cbi8qKiBSZXNvbHZlIGEgc3RyaW5nIHZhbHVlIGZvciBhIGxvZ2ljYWwgb3IgZXhwbGljaXQgc3RvcmFnZSBrZXkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZvcm1zU3RvcmFnZVN0cmluZyhcbiAgbG9naWNhbEtleTogc3RyaW5nLFxuICByZWR1eERhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sXG4gIGNvbmZpZz86IEZvcm1zU3RvcmFnZUNvbmZpZ1xuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHJlc29sdmVkQ29uZmlnID0gY29uZmlnID8/IERFRkFVTFRfRk9STVNfU1RPUkFHRV9DT05GSUc7XG4gIGNvbnN0IGtleUNmZyA9IGtleUNvbmZpZ0ZvcihyZXNvbHZlZENvbmZpZywgbG9naWNhbEtleSk7XG4gIGNvbnN0IHNvdXJjZSA9IHNvdXJjZUZvcktleShyZXNvbHZlZENvbmZpZywgbG9naWNhbEtleSk7XG5cbiAgaWYgKGtleUNmZz8ua2V5cz8ubGVuZ3RoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5Q2ZnLmtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgc291cmNlID09PSBcInJlZHV4RGF0YVwiXG4gICAgICAgICAgPyByZWFkUmVkdXhEYXRhU2NhbGFyKHJlZHV4RGF0YSwga2V5KVxuICAgICAgICAgIDogcmVhZExvY2FsU3RvcmFnZShrZXkpO1xuICAgICAgaWYgKGlzTm90RW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleUNmZy5mYWxsYmFjayA/PyBudWxsO1xuICB9XG5cbiAgY29uc3Qgc3RvcmFnZUtleSA9IGtleUNmZz8ua2V5ID8/IGxvZ2ljYWxLZXk7XG4gIGNvbnN0IHZhbHVlID1cbiAgICBzb3VyY2UgPT09IFwicmVkdXhEYXRhXCJcbiAgICAgID8gcmVhZFJlZHV4RGF0YVNjYWxhcihyZWR1eERhdGEsIHN0b3JhZ2VLZXkpXG4gICAgICA6IHJlYWRMb2NhbFN0b3JhZ2Uoc3RvcmFnZUtleSk7XG5cbiAgaWYgKGlzTm90RW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIGtleUNmZz8uZmFsbGJhY2sgPz8gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgc3RydWN0dXJlZCB2YWx1ZSAoZm9ybSBjb25maWcgYmxvYiwgZU5hY2hGb3JtLCBldGMuKS5cbiAqIFN1cHBvcnRzIHRoZSBzYW1lIGxvZ2ljYWwga2V5IC8ga2V5c1tdIC8ga2V5IGFsaWFzIGNvbmZpZyBhcyByZXNvbHZlRm9ybXNTdG9yYWdlU3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZvcm1zU3RvcmFnZU9iamVjdChcbiAgbG9naWNhbEtleTogc3RyaW5nLFxuICByZWR1eERhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sXG4gIGNvbmZpZz86IEZvcm1zU3RvcmFnZUNvbmZpZ1xuKTogYW55IHtcbiAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSBjb25maWcgPz8gREVGQVVMVF9GT1JNU19TVE9SQUdFX0NPTkZJRztcbiAgY29uc3Qga2V5Q2ZnID0ga2V5Q29uZmlnRm9yKHJlc29sdmVkQ29uZmlnLCBsb2dpY2FsS2V5KTtcbiAgY29uc3Qgc291cmNlID0gc291cmNlRm9yS2V5KHJlc29sdmVkQ29uZmlnLCBsb2dpY2FsS2V5KTtcblxuICBpZiAoa2V5Q2ZnPy5rZXlzPy5sZW5ndGgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlDZmcua2V5cykge1xuICAgICAgY29uc3QgdmFsdWUgPSByZWFkU3RvcmFnZU9iamVjdChzb3VyY2UsIHJlZHV4RGF0YSwga2V5KTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHN0b3JhZ2VLZXkgPSBrZXlDZmc/LmtleSA/PyBsb2dpY2FsS2V5O1xuICByZXR1cm4gcmVhZFN0b3JhZ2VPYmplY3Qoc291cmNlLCByZWR1eERhdGEsIHN0b3JhZ2VLZXkpO1xufVxuIl19