kwikid-forms 0.2.6 → 0.2.8
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.
- package/bundles/kwikid-forms.umd.js +21 -9
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/lib/builder/builder.component.js +1 -3
- package/esm2015/lib/renderer/config-converter.helper.js +11 -1
- package/esm2015/lib/renderer/form-view/form-view.component.js +2 -2
- package/esm2015/lib/renderer/forms-list/forms-list.component.js +11 -7
- package/esm2015/lib/renderer/renderer.component.js +2 -2
- package/fesm2015/kwikid-forms.js +22 -10
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
3
|
-
import { checkObjectKeyExists, logMethod, mergeObjects, setValueToObjectPath } from "kwikid-toolkit";
|
|
3
|
+
import { checkObjectKeyExists, logMethod, mergeObjects, setValueToObjectPath, isNull, isUndefined } from "kwikid-toolkit";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "kwikui";
|
|
6
6
|
import * as i2 from "@taiga-ui/core";
|
|
@@ -74,12 +74,17 @@ export class KwikIDFormsListComponent {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
};
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
stepConfig = setValueToObjectPath(stepConfig, "props", stepConfigProperties);
|
|
77
|
+
if (isNull(stepConfig) || isUndefined(stepConfig)) {
|
|
78
|
+
stepConfig = setValueToObjectPath({}, "props", stepConfigProperties);
|
|
80
79
|
}
|
|
81
80
|
else {
|
|
82
|
-
|
|
81
|
+
if (checkObjectKeyExists(stepConfig, "props")) {
|
|
82
|
+
stepConfigProperties = mergeObjects(stepConfigProperties, stepConfig.props);
|
|
83
|
+
stepConfig = setValueToObjectPath(stepConfig, "props", stepConfigProperties);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
stepConfig = setValueToObjectPath(stepConfig, "props", stepConfigProperties);
|
|
87
|
+
}
|
|
83
88
|
}
|
|
84
89
|
return stepConfig;
|
|
85
90
|
}
|
|
@@ -126,7 +131,6 @@ export class KwikIDFormsListComponent {
|
|
|
126
131
|
return isAllFormsCompleted;
|
|
127
132
|
}
|
|
128
133
|
handleOnClickSetActiveForm(selectedForm) {
|
|
129
|
-
console.log(this.isMobileView, this.selectedForm);
|
|
130
134
|
if (this.isMobileView ||
|
|
131
135
|
(!this.isMobileView && this.selectedForm !== selectedForm) ||
|
|
132
136
|
(this.isAllFormsCompleted && !this.showFormFields)) {
|
|
@@ -189,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
189
193
|
}], onClickSubmitForms: [{
|
|
190
194
|
type: Output
|
|
191
195
|
}], ngOnChanges: [], formatStepConfig: [], filterHiddenForms: [], findFormsListLength: [], checkIsAllFormsCompleted: [], handleOnClickSetActiveForm: [], handleOnSubmitForms: [] } });
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3Jtcy1saXN0L2Zvcm1zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybXMtbGlzdC9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNULFlBQVksRUFDWixvQkFBb0IsRUFDckIsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBT3hCLE1BQU0sT0FBTyx3QkFBd0I7SUEwQ25DO1FBeENBLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBR3pCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFHckIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUdyQixxQkFBZ0IsR0FBUSxFQUFFLENBQUM7UUFHM0IsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUd0Qix1QkFBa0IsR0FBVSxFQUFFLENBQUM7UUFHL0IsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFHOUIseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHbEUseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHbEUsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU3QyxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUsxQixvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUU1Qix3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFFcEMsWUFBTyxHQUFZLEtBQUssQ0FBQztJQUVWLENBQUM7SUFWaEIs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QUdEO0lBREMsU0FBUzt3RUFnQlQ7QUFHRDtJQURDLFNBQVM7MEVBV1Q7QUFHRDtJQURDLFNBQVM7bUVBR1Q7NEZBN0xVLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDM0M7MEVBR0MsY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixNQUFNO2dCQUlQLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFJUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBK0JQLFdBQVcsTUE4QlgsZ0JBQWdCLE1BbUNoQixpQkFBaUIsTUFXakIsbUJBQW1CLE1BcUJuQix3QkFBd0IsTUFrQnhCLDBCQUEwQixNQWExQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBsb2dNZXRob2QsXG4gIG1lcmdlT2JqZWN0cyxcbiAgc2V0VmFsdWVUb09iamVjdFBhdGhcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtbGlzdFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2Zvcm1zLWxpc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2Zvcm1zLWxpc3QuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBzaG93Rm9ybUZpZWxkczogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgc3RlcENvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgZm9ybXNMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1zTGlzdENvbXBsZXRlZDogYW55W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBpc01vYmlsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1NldEFjdGl2ZUZvcm06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tIaWRlRm9ybXNMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrU3VibWl0Rm9ybXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzZWxlY3RlZEZvcm06IHN0cmluZyA9IFwiXCI7XG4gIHNldFNlbGVjdGVkRm9ybShzZWxlY3RlZF9mb3JtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRm9ybSA9IHNlbGVjdGVkX2Zvcm07XG4gIH1cblxuICBmb3Jtc0xpc3RMZW5ndGg6IG51bWJlciA9IDA7XG5cbiAgaXNBbGxGb3Jtc0NvbXBsZXRlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5zZXRTZWxlY3RlZEZvcm0odGhpcy5hY3RpdmVGb3JtQ29uZmlnPy5rZXkgPz8gXCJcIik7XG5cbiAgICB0aGlzLnN0ZXBDb25maWcgPSB0aGlzLmZvcm1hdFN0ZXBDb25maWcodGhpcy5zdGVwQ29uZmlnKTtcblxuICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy5maWx0ZXJIaWRkZW5Gb3Jtcyh0aGlzLmZvcm1zTGlzdCk7XG4gICAgdGhpcy5mb3Jtc0xpc3RMZW5ndGggPSB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpO1xuICAgIHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCA9IHRoaXMuY2hlY2tJc0FsbEZvcm1zQ29tcGxldGVkKHRoaXMuZm9ybXNMaXN0KTtcblxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgdmVyaWZ5Q2hhbmdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gY2hlY2tPYmplY3RLZXlFeGlzdHMoY2hhbmdlcywga2V5KSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlO1xuICAgIH07XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInNob3dGb3JtRmllbGRzXCIpKSB7XG4gICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gY2hhbmdlcy5zaG93Rm9ybUZpZWxkcy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJzdGVwQ29uZmlnXCIpKSB7XG4gICAgICB0aGlzLnN0ZXBDb25maWcgPSBjaGFuZ2VzLnN0ZXBDb25maWcuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZm9ybXNMaXN0XCIpKSB7XG4gICAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuZmlsdGVySGlkZGVuRm9ybXModGhpcy5mb3Jtc0xpc3QpO1xuICAgICAgdGhpcy5mb3Jtc0xpc3RMZW5ndGggPSB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpO1xuICAgICAgdGhpcy5pc0FsbEZvcm1zQ29tcGxldGVkID0gdGhpcy5jaGVja0lzQWxsRm9ybXNDb21wbGV0ZWQodGhpcy5mb3Jtc0xpc3QpO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiaXNNb2JpbGVWaWV3XCIpKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IGNoYW5nZXMuaXNNb2JpbGVWaWV3LmN1cnJlbnRWYWx1ZTtcblxuICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlVmlldykge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkRm9ybShcIlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImFjdGl2ZUZvcm1Db25maWdcIikpIHtcbiAgICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IGNoYW5nZXMuYWN0aXZlRm9ybUNvbmZpZy5jdXJyZW50VmFsdWU7XG5cbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRGb3JtKHRoaXMuYWN0aXZlRm9ybUNvbmZpZz8ua2V5ID8/IFwiXCIpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZm9ybWF0U3RlcENvbmZpZyhzdGVwQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGxldCBzdGVwQ29uZmlnUHJvcGVydGllcyA9IHtcbiAgICAgIGZvcm1MaXN0UHJvcGVydGllczoge1xuICAgICAgICBmb290ZXI6IHtcbiAgICAgICAgICBzdWJtaXRGb3JtQnV0dG9uOiB7XG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgbGFiZWw6IFwiU3VibWl0XCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHN0ZXBDb25maWcsIFwicHJvcHNcIikpIHtcbiAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICBzdGVwQ29uZmlnUHJvcGVydGllcyxcbiAgICAgICAgc3RlcENvbmZpZy5wcm9wc1xuICAgICAgKTtcblxuICAgICAgc3RlcENvbmZpZyA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICBzdGVwQ29uZmlnLFxuICAgICAgICBcInByb3BzXCIsXG4gICAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGVwQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIHN0ZXBDb25maWcsXG4gICAgICAgIFwicHJvcHNcIixcbiAgICAgICAgc3RlcENvbmZpZ1Byb3BlcnRpZXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ZXBDb25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbHRlckhpZGRlbkZvcm1zKGZvcm1zTGlzdDogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGZvcm1zTGlzdC5maWx0ZXIoKGZvcm0pID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICBpZiAoIWZvcm0uaGlkZGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZmluZEZvcm1zTGlzdExlbmd0aChmb3Jtc0xpc3Q6IGFueVtdKTogbnVtYmVyIHtcbiAgICBjb25zdCBfZm9ybXNMaXN0ID0gZm9ybXNMaXN0LmZpbHRlcigoZm9ybSkgPT4ge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwidHlwZVwiKSkge1xuICAgICAgICBpZiAoZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICAgICAgaWYgKCFmb3JtLmhpZGRlbikge1xuICAgICAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikpIHtcbiAgICAgICAgaWYgKCFmb3JtLmhpZGRlbikge1xuICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX2Zvcm1zTGlzdC5sZW5ndGg7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGNoZWNrSXNBbGxGb3Jtc0NvbXBsZXRlZChmb3Jtc0xpc3Q6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgbGV0IGlzQWxsRm9ybXNDb21wbGV0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcInR5cGVcIikpIHtcbiAgICAgICAgaWYgKGZvcm0udHlwZSA9PT0gXCJmb3JtXCIpIHtcbiAgICAgICAgICBpZiAoZm9ybS5zdGF0dXMgIT09IFwiY29tcGxldGVkXCIpIHtcbiAgICAgICAgICAgIGlzQWxsRm9ybXNDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0FsbEZvcm1zQ29tcGxldGVkO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShzZWxlY3RlZEZvcm06IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuaXNNb2JpbGVWaWV3LCB0aGlzLnNlbGVjdGVkRm9ybSk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgfHxcbiAgICAgICghdGhpcy5pc01vYmlsZVZpZXcgJiYgdGhpcy5zZWxlY3RlZEZvcm0gIT09IHNlbGVjdGVkRm9ybSkgfHxcbiAgICAgICh0aGlzLmlzQWxsRm9ybXNDb21wbGV0ZWQgJiYgIXRoaXMuc2hvd0Zvcm1GaWVsZHMpXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybSA9IHNlbGVjdGVkRm9ybTtcbiAgICAgIHRoaXMub25DbGlja1NldEFjdGl2ZUZvcm0uZW1pdChzZWxlY3RlZEZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25TdWJtaXRGb3JtcyhlOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2xpY2tTdWJtaXRGb3Jtcy5lbWl0KGUpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGlkPVwic2lkZWJhci1jb250YWluZXJcIlxuICAqbmdJZj1cIiFsb2FkaW5nXCJcbj5cbiAgPGRpdiBpZD1cInNpZGViYXJcIj5cbiAgICA8ZGl2IG5nQ2xhc3M9XCJrd2lraWQtZm9ybS1oZWFkZXJcIj5cbiAgICAgIDxkaXYgaWQ9XCJ1Zi1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBpZD1cInVmLWhlYWRlci1sb2dvLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGlkPVwidWYtaGVhZGVyLWxvZ29cIlxuICAgICAgICAgICAgc3JjPVwie3sgdGhpcy51c2VyQ29uZmlnLnRoZW1lLmNsaWVudExvZ28gfX1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2xhcmdlLWljb24nXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cInVmLXByb2dyZXNzXCI+XG4gICAgICA8ZGl2IGlkPVwidWYtcHJvZ3Jlc3Mtc3RlcHNcIj5cbiAgICAgICAge3sgdGhpcy5mb3Jtc0xpc3RDb21wbGV0ZWQubGVuZ3RoIH19IC8ge3sgdGhpcy5mb3Jtc0xpc3RMZW5ndGggfX0gU3RlcHNcbiAgICAgICAgQ29tcGxldGVkXG4gICAgICA8L2Rpdj5cbiAgICAgIDxrd2lrdWktcHJvZ3Jlc3Mtc2VnbWVudGVkXG4gICAgICAgIFttYXhdPVwidGhpcy5mb3Jtc0xpc3RMZW5ndGhcIlxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIFt2YWx1ZV09XCJ0aGlzLmZvcm1zTGlzdENvbXBsZXRlZC5sZW5ndGhcIlxuICAgICAgPjwva3dpa3VpLXByb2dyZXNzLXNlZ21lbnRlZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwidWYtc2VjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmb3JtLnR5cGVcIj5cbiAgICAgICAgICA8IS0tIEhUTUwgQ29udGVudCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaHRtbCdcIj5cbiAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJmb3JtLnByb3BzLmh0bWxDb250ZW50IHwgc2FmZUh0bWxcIj48L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZm9ybSdcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIid1Zi1zZWN0aW9uLWl0ZW0nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmNvbXBsZXRlZF09XCJmb3JtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcgJiYgIWZvcm0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MuZWRpdF09XCJmb3JtLnN0YXR1cyA9PT0gJ2VkaXRhYmxlJyAmJiAhZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5sb2NrZWRdPVwiZm9ybS5zdGF0dXMgPT09ICdsb2NrZWQnICYmIGZvcm0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICAgICAgICAgIGFjdGl2ZUZvcm1Db25maWcgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIGZvcm0ua2V5ID09PSBhY3RpdmVGb3JtQ29uZmlnLmtleVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgZm9ybS5zdGF0dXMgPT09ICdsb2NrZWQnICYmIGZvcm0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICA6IGhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKGZvcm0ua2V5KVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtLnByb3BzLnRpdGxlIH19Jm5ic3A7PHNwYW4gKm5nSWY9XCJmb3JtPy5yZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICA+Kjwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1Zi1mb3JtLXNlY3Rpb24tY2FyZC1zdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm0uc3RhdHVzID09PSAnY29tcGxldGVkJyAmJiAhZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1cy1pbWcgY29tcGxldGVkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uQ2hlY2tMYXJnZVwiPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm0uc3RhdHVzICE9PSAnY29tcGxldGVkJyAmJiAhZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1cy1pbWcgZWRpdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHR1aS1zdmcgc3JjPVwidHVpSWNvbkVkaXRcIj48L3R1aS1zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgJiYgZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1cy1pbWcgbG9ja2VkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uTG9ja1wiPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwic3VibWl0LXNpZGViYXItYnRuLWNvbnRhaW5lclwiPlxuICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAhc3RlcENvbmZpZy5wcm9wcy5mb3JtTGlzdFByb3BlcnRpZXMuZm9vdGVyLnN1Ym1pdEZvcm1CdXR0b24uaGlkZGVuXG4gICAgICAgIFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgIGlkPVwiXCJcbiAgICAgICAgbGFiZWw9XCJ7e1xuICAgICAgICAgIHN0ZXBDb25maWcucHJvcHMuZm9ybUxpc3RQcm9wZXJ0aWVzLmZvb3Rlci5zdWJtaXRGb3JtQnV0dG9uLmxhYmVsXG4gICAgICAgIH19XCJcbiAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICBjbGFzcz1cIlwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgIGljb249XCJcIlxuICAgICAgICBpY29uUmlnaHQ9XCJcIlxuICAgICAgICBbc2hhcGVdPVwibnVsbFwiXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgc3R5bGVzPVwid2lkdGg6IDEwMCVcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVPblN1Ym1pdEZvcm1zKCRldmVudClcIlxuICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3Jtcy1saXN0L2Zvcm1zLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybXMtbGlzdC9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNULFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPeEIsTUFBTSxPQUFPLHdCQUF3QjtJQTBDbkM7UUF4Q0EsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFHekIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUdyQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBR3JCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUczQixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBR3RCLHVCQUFrQixHQUFVLEVBQUUsQ0FBQztRQUcvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUc5Qix5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRSx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBSzFCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRTVCLHdCQUFtQixHQUFZLElBQUksQ0FBQztRQUVwQyxZQUFPLEdBQVksS0FBSyxD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QTBHQTtBRHhCRTtJQURDLFNBQVM7MkRBNEJUO0FBR0Q7SUFEQyxTQUFTO2dFQXFDVDtBQUdEO0lBREMsU0FBUztpRUFTVDtBQUdEO0lBREMsU0FBUzttRUFtQlQ7QUFHRDtJQURDLFNBQVM7d0VBZ0JUO0FBR0Q7SUFEQyxTQUFTOzBFQVVUO0FBR0Q7SUFEQyxTQUFTO21FQUdUOzRGQWhNVSx3QkFBd0I7a0JBTHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDOzBFQUdDLGNBQWM7c0JBRGIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFJUCxvQkFBb0I7c0JBRG5CLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixNQUFNO2dCQStCUCxXQUFXLE1BOEJYLGdCQUFnQixNQXVDaEIsaUJBQWlCLE1BV2pCLG1CQUFtQixNQXFCbkIsd0JBQXdCLE1Ba0J4QiwwQkFBMEIsTUFZMUIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgbG9nTWV0aG9kLFxuICBtZXJnZU9iamVjdHMsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoLFxuICBpc051bGwsXG4gIGlzVW5kZWZpbmVkXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWZvcm1zLWxpc3RcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9mb3Jtcy1saXN0LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9mb3Jtcy1saXN0LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgc2hvd0Zvcm1GaWVsZHM6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIHVzZXJDb25maWc6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIHN0ZXBDb25maWc6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGFjdGl2ZUZvcm1Db25maWc6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1zTGlzdDogYW55W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IGFueVtdID0gW107XG5cbiAgQElucHV0KClcbiAgaXNNb2JpbGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tTZXRBY3RpdmVGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrSGlkZUZvcm1zTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1N1Ym1pdEZvcm1zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRGb3JtOiBzdHJpbmcgPSBcIlwiO1xuICBzZXRTZWxlY3RlZEZvcm0oc2VsZWN0ZWRfZm9ybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZvcm0gPSBzZWxlY3RlZF9mb3JtO1xuICB9XG5cbiAgZm9ybXNMaXN0TGVuZ3RoOiBudW1iZXIgPSAwO1xuXG4gIGlzQWxsRm9ybXNDb21wbGV0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuc2V0U2VsZWN0ZWRGb3JtKHRoaXMuYWN0aXZlRm9ybUNvbmZpZz8ua2V5ID8/IFwiXCIpO1xuXG4gICAgdGhpcy5zdGVwQ29uZmlnID0gdGhpcy5mb3JtYXRTdGVwQ29uZmlnKHRoaXMuc3RlcENvbmZpZyk7XG5cbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuZmlsdGVySGlkZGVuRm9ybXModGhpcy5mb3Jtc0xpc3QpO1xuICAgIHRoaXMuZm9ybXNMaXN0TGVuZ3RoID0gdGhpcy5maW5kRm9ybXNMaXN0TGVuZ3RoKHRoaXMuZm9ybXNMaXN0KTtcbiAgICB0aGlzLmlzQWxsRm9ybXNDb21wbGV0ZWQgPSB0aGlzLmNoZWNrSXNBbGxGb3Jtc0NvbXBsZXRlZCh0aGlzLmZvcm1zTGlzdCk7XG5cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGNoYW5nZXMsIGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJzaG93Rm9ybUZpZWxkc1wiKSkge1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGNoYW5nZXMuc2hvd0Zvcm1GaWVsZHMuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwic3RlcENvbmZpZ1wiKSkge1xuICAgICAgdGhpcy5zdGVwQ29uZmlnID0gY2hhbmdlcy5zdGVwQ29uZmlnLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImZvcm1zTGlzdFwiKSkge1xuICAgICAgdGhpcy5mb3Jtc0xpc3QgPSB0aGlzLmZpbHRlckhpZGRlbkZvcm1zKHRoaXMuZm9ybXNMaXN0KTtcbiAgICAgIHRoaXMuZm9ybXNMaXN0TGVuZ3RoID0gdGhpcy5maW5kRm9ybXNMaXN0TGVuZ3RoKHRoaXMuZm9ybXNMaXN0KTtcbiAgICAgIHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCA9IHRoaXMuY2hlY2tJc0FsbEZvcm1zQ29tcGxldGVkKHRoaXMuZm9ybXNMaXN0KTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImlzTW9iaWxlVmlld1wiKSkge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBjaGFuZ2VzLmlzTW9iaWxlVmlldy5jdXJyZW50VmFsdWU7XG5cbiAgICAgIGlmICghdGhpcy5pc01vYmlsZVZpZXcpIHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEZvcm0oXCJcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhY3RpdmVGb3JtQ29uZmlnXCIpKSB7XG4gICAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBjaGFuZ2VzLmFjdGl2ZUZvcm1Db25maWcuY3VycmVudFZhbHVlO1xuXG4gICAgICB0aGlzLnNldFNlbGVjdGVkRm9ybSh0aGlzLmFjdGl2ZUZvcm1Db25maWc/LmtleSA/PyBcIlwiKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZvcm1hdFN0ZXBDb25maWcoc3RlcENvbmZpZzogYW55KTogYW55IHtcbiAgICBsZXQgc3RlcENvbmZpZ1Byb3BlcnRpZXMgPSB7XG4gICAgICBmb3JtTGlzdFByb3BlcnRpZXM6IHtcbiAgICAgICAgZm9vdGVyOiB7XG4gICAgICAgICAgc3VibWl0Rm9ybUJ1dHRvbjoge1xuICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGxhYmVsOiBcIlN1Ym1pdFwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChpc051bGwoc3RlcENvbmZpZykgfHwgaXNVbmRlZmluZWQoc3RlcENvbmZpZykpIHtcbiAgICAgIHN0ZXBDb25maWcgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aCh7fSwgXCJwcm9wc1wiLCBzdGVwQ29uZmlnUHJvcGVydGllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhzdGVwQ29uZmlnLCBcInByb3BzXCIpKSB7XG4gICAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgIHN0ZXBDb25maWdQcm9wZXJ0aWVzLFxuICAgICAgICAgIHN0ZXBDb25maWcucHJvcHNcbiAgICAgICAgKTtcblxuICAgICAgICBzdGVwQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgc3RlcENvbmZpZyxcbiAgICAgICAgICBcInByb3BzXCIsXG4gICAgICAgICAgc3RlcENvbmZpZ1Byb3BlcnRpZXNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZXBDb25maWcgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgICBzdGVwQ29uZmlnLFxuICAgICAgICAgIFwicHJvcHNcIixcbiAgICAgICAgICBzdGVwQ29uZmlnUHJvcGVydGllc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGVwQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaWx0ZXJIaWRkZW5Gb3Jtcyhmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBmb3Jtc0xpc3QuZmlsdGVyKChmb3JtKSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikpIHtcbiAgICAgICAgaWYgKCFmb3JtLmhpZGRlbikge1xuICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbmRGb3Jtc0xpc3RMZW5ndGgoZm9ybXNMaXN0OiBhbnlbXSk6IG51bWJlciB7XG4gICAgY29uc3QgX2Zvcm1zTGlzdCA9IGZvcm1zTGlzdC5maWx0ZXIoKGZvcm0pID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcInR5cGVcIikpIHtcbiAgICAgICAgaWYgKGZvcm0udHlwZSA9PT0gXCJmb3JtXCIpIHtcbiAgICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikpIHtcbiAgICAgICAgICAgIGlmICghZm9ybS5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4pIHtcbiAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIF9mb3Jtc0xpc3QubGVuZ3RoO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjaGVja0lzQWxsRm9ybXNDb21wbGV0ZWQoZm9ybXNMaXN0OiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBpc0FsbEZvcm1zQ29tcGxldGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvciAobGV0IGZvcm0gb2YgZm9ybXNMaXN0KSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJ0eXBlXCIpKSB7XG4gICAgICAgIGlmIChmb3JtLnR5cGUgPT09IFwiZm9ybVwiKSB7XG4gICAgICAgICAgaWYgKGZvcm0uc3RhdHVzICE9PSBcImNvbXBsZXRlZFwiKSB7XG4gICAgICAgICAgICBpc0FsbEZvcm1zQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNBbGxGb3Jtc0NvbXBsZXRlZDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oc2VsZWN0ZWRGb3JtOiBzdHJpbmcpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyB8fFxuICAgICAgKCF0aGlzLmlzTW9iaWxlVmlldyAmJiB0aGlzLnNlbGVjdGVkRm9ybSAhPT0gc2VsZWN0ZWRGb3JtKSB8fFxuICAgICAgKHRoaXMuaXNBbGxGb3Jtc0NvbXBsZXRlZCAmJiAhdGhpcy5zaG93Rm9ybUZpZWxkcylcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtID0gc2VsZWN0ZWRGb3JtO1xuICAgICAgdGhpcy5vbkNsaWNrU2V0QWN0aXZlRm9ybS5lbWl0KHNlbGVjdGVkRm9ybSk7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPblN1Ym1pdEZvcm1zKGU6IGFueSkge1xuICAgIHRoaXMub25DbGlja1N1Ym1pdEZvcm1zLmVtaXQoZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgaWQ9XCJzaWRlYmFyLWNvbnRhaW5lclwiXG4gICpuZ0lmPVwiIWxvYWRpbmdcIlxuPlxuICA8ZGl2IGlkPVwic2lkZWJhclwiPlxuICAgIDxkaXYgbmdDbGFzcz1cImt3aWtpZC1mb3JtLWhlYWRlclwiPlxuICAgICAgPGRpdiBpZD1cInVmLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGlkPVwidWYtaGVhZGVyLWxvZ28tY29udGFpbmVyXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgaWQ9XCJ1Zi1oZWFkZXItbG9nb1wiXG4gICAgICAgICAgICBzcmM9XCJ7eyB0aGlzLnVzZXJDb25maWcudGhlbWUuY2xpZW50TG9nbyB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCInbGFyZ2UtaWNvbidcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aHIgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwidWYtcHJvZ3Jlc3NcIj5cbiAgICAgIDxkaXYgaWQ9XCJ1Zi1wcm9ncmVzcy1zdGVwc1wiPlxuICAgICAgICB7eyB0aGlzLmZvcm1zTGlzdENvbXBsZXRlZC5sZW5ndGggfX0gLyB7eyB0aGlzLmZvcm1zTGlzdExlbmd0aCB9fSBTdGVwc1xuICAgICAgICBDb21wbGV0ZWRcbiAgICAgIDwvZGl2PlxuICAgICAgPGt3aWt1aS1wcm9ncmVzcy1zZWdtZW50ZWRcbiAgICAgICAgW21heF09XCJ0aGlzLmZvcm1zTGlzdExlbmd0aFwiXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgW3ZhbHVlXT1cInRoaXMuZm9ybXNMaXN0Q29tcGxldGVkLmxlbmd0aFwiXG4gICAgICA+PC9rd2lrdWktcHJvZ3Jlc3Mtc2VnbWVudGVkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJ1Zi1zZWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXNMaXN0OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZvcm0udHlwZVwiPlxuICAgICAgICAgIDwhLS0gSFRNTCBDb250ZW50IC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidodG1sJ1wiPlxuICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cImZvcm0ucHJvcHMuaHRtbENvbnRlbnQgfCBzYWZlSHRtbFwiPjwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb3JtJ1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3VmLXNlY3Rpb24taXRlbSdcIlxuICAgICAgICAgICAgICBbY2xhc3MuY29tcGxldGVkXT1cImZvcm0uc3RhdHVzID09PSAnY29tcGxldGVkJyAmJiAhZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5lZGl0XT1cImZvcm0uc3RhdHVzID09PSAnZWRpdGFibGUnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmxvY2tlZF09XCJmb3JtLnN0YXR1cyA9PT0gJ2xvY2tlZCcgJiYgZm9ybS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgICAgICAgYWN0aXZlRm9ybUNvbmZpZyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgZm9ybS5rZXkgPT09IGFjdGl2ZUZvcm1Db25maWcua2V5XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBmb3JtLnN0YXR1cyA9PT0gJ2xvY2tlZCcgJiYgZm9ybS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIDogaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oZm9ybS5rZXkpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1Zi1mb3JtLXNlY3Rpb24tY2FyZC10aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm0ucHJvcHMudGl0bGUgfX0mbmJzcDs8c3BhbiAqbmdJZj1cImZvcm0/LnJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgID4qPC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVmLWZvcm0tc2VjdGlvbi1jYXJkLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5zdGF0dXMgPT09ICdjb21wbGV0ZWQnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBjb21wbGV0ZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25DaGVja0xhcmdlXCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5zdGF0dXMgIT09ICdjb21wbGV0ZWQnICYmICFmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBlZGl0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uRWRpdFwiPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm0uc3RhdHVzICE9PSAnY29tcGxldGVkJyAmJiBmb3JtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWYtZm9ybS1zZWN0aW9uLWNhcmQtc3RhdHVzLWltZyBsb2NrZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx0dWktc3ZnIHNyYz1cInR1aUljb25Mb2NrXCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJzdWJtaXQtc2lkZWJhci1idG4tY29udGFpbmVyXCI+XG4gICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFzdGVwQ29uZmlnLnByb3BzLmZvcm1MaXN0UHJvcGVydGllcy5mb290ZXIuc3VibWl0Rm9ybUJ1dHRvbi5oaWRkZW5cbiAgICAgICAgXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgaWQ9XCJcIlxuICAgICAgICBsYWJlbD1cInt7XG4gICAgICAgICAgc3RlcENvbmZpZy5wcm9wcy5mb3JtTGlzdFByb3BlcnRpZXMuZm9vdGVyLnN1Ym1pdEZvcm1CdXR0b24ubGFiZWxcbiAgICAgICAgfX1cIlxuICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgIHN0eWxlcz1cIlwiXG4gICAgICAgIGNsYXNzPVwiXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCJcbiAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgIGljb25SaWdodD1cIlwiXG4gICAgICAgIFtzaGFwZV09XCJudWxsXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBzdHlsZXM9XCJ3aWR0aDogMTAwJVwiXG4gICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uU3VibWl0Rm9ybXMoJGV2ZW50KVwiXG4gICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -504,7 +504,7 @@ export class KwikIDFormsRendererComponent {
|
|
|
504
504
|
}
|
|
505
505
|
}
|
|
506
506
|
/** @nocollapse */ KwikIDFormsRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormsRendererComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
507
|
-
/** @nocollapse */ KwikIDFormsRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsRendererComponent, selector: "kwikid-forms-renderer", inputs: { stepConfig: "stepConfig", userConfig: "userConfig", formsData: "formsData", apiCallResponse: "apiCallResponse" }, outputs: { onClickSubmit: "onClickSubmit", getFormData: "getFormData", onClickApiCall: "onClickApiCall" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div ngClass=\"kwikid-renderer\">\n <div\n ngClass=\"kwikid-layout-container\"\n *ngIf=\"!loading\"\n >\n <div\n ngClass=\"kwikid-sections-container\"\n *ngIf=\"showFormSections\"\n class=\"active\"\n [class.active]=\"showFormSections\"\n [class.mobile]=\"isMobileView\"\n >\n <kwikid-forms-list\n [showFormFields]=\"this.showFormFields\"\n [activeFormConfig]=\"this.activeFormConfig\"\n [userConfig]=\"this.userConfig\"\n [formsList]=\"this.formsList\"\n [stepConfig]=\"this.stepConfig\"\n [formsListCompleted]=\"this.formsListCompleted\"\n [isMobileView]=\"this.isMobileView\"\n (onClickSetActiveForm)=\"this.handleOnClickSetActiveForm($event)\"\n (onClickSubmitForms)=\"this.handleOnClickSubmitForms($event)\"\n ></kwikid-forms-list>\n </div>\n <div\n ngClass=\"kwikid-forms-container\"\n *ngIf=\"\n this.showForm &&\n this.showFormFields &&\n this.activeFormConfig !== undefined\n \"\n [class.active]=\"showFormFields\"\n [class.mobile]=\"isMobileView\"\n [@panelInOut]\n >\n <kwikid-form-view\n [formConfig]=\"this.activeFormConfig\"\n [allFormsData]=\"this.allFormsData\"\n [isMobileView]=\"this.isMobileView\"\n (onClickViewForms)=\"this.handleOnClickViewForms($event)\"\n (onClickSaveForm)=\"this.handleOnClickSaveForm($event)\"\n ></kwikid-form-view>\n </div>\n </div>\n</div>\n<div\n ngClass=\"kwikid-forms-renderer-loader\"\n *ngIf=\"loader\"\n>\n <span class=\"loader\"></span>\n</div>\n<tui-push\n id=\"error-notification\"\n *tuiPush=\"showErrorNotification\"\n heading=\"Please complete the required Forms!\"\n type=\"Error\"\n (close)=\"toggleErrorNotification(false)\"\n>\n <tui-svg\n src=\"
|
|
507
|
+
/** @nocollapse */ KwikIDFormsRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsRendererComponent, selector: "kwikid-forms-renderer", inputs: { stepConfig: "stepConfig", userConfig: "userConfig", formsData: "formsData", apiCallResponse: "apiCallResponse" }, outputs: { onClickSubmit: "onClickSubmit", getFormData: "getFormData", onClickApiCall: "onClickApiCall" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div ngClass=\"kwikid-renderer\">\n <div\n ngClass=\"kwikid-layout-container\"\n *ngIf=\"!loading\"\n >\n <div\n ngClass=\"kwikid-sections-container\"\n *ngIf=\"showFormSections\"\n class=\"active\"\n [class.active]=\"showFormSections\"\n [class.mobile]=\"isMobileView\"\n >\n <kwikid-forms-list\n [showFormFields]=\"this.showFormFields\"\n [activeFormConfig]=\"this.activeFormConfig\"\n [userConfig]=\"this.userConfig\"\n [formsList]=\"this.formsList\"\n [stepConfig]=\"this.stepConfig\"\n [formsListCompleted]=\"this.formsListCompleted\"\n [isMobileView]=\"this.isMobileView\"\n (onClickSetActiveForm)=\"this.handleOnClickSetActiveForm($event)\"\n (onClickSubmitForms)=\"this.handleOnClickSubmitForms($event)\"\n ></kwikid-forms-list>\n </div>\n <div\n ngClass=\"kwikid-forms-container\"\n *ngIf=\"\n this.showForm &&\n this.showFormFields &&\n this.activeFormConfig !== undefined\n \"\n [class.active]=\"showFormFields\"\n [class.mobile]=\"isMobileView\"\n [@panelInOut]\n >\n <kwikid-form-view\n [formConfig]=\"this.activeFormConfig\"\n [allFormsData]=\"this.allFormsData\"\n [isMobileView]=\"this.isMobileView\"\n (onClickViewForms)=\"this.handleOnClickViewForms($event)\"\n (onClickSaveForm)=\"this.handleOnClickSaveForm($event)\"\n ></kwikid-form-view>\n </div>\n </div>\n</div>\n<div\n ngClass=\"kwikid-forms-renderer-loader\"\n *ngIf=\"loader\"\n>\n <span class=\"loader\"></span>\n</div>\n<tui-push\n id=\"error-notification\"\n *tuiPush=\"showErrorNotification\"\n heading=\"Please complete the required Forms!\"\n type=\"Error\"\n (close)=\"toggleErrorNotification(false)\"\n>\n <tui-svg\n src=\"tuiIconXCircle\"\n style=\"color: #fff !important\"\n >\n </tui-svg>\n</tui-push>\n", styles: [":host{position:relative}.kwikid-root{width:100%;height:100%}.kwikid-renderer{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%}.kwikid-layout-container{display:flex;flex-direction:row;padding:0 1rem;height:100%;justify-content:center;align-items:stretch;background:var(--tui-secondary-active);position:relative}.kwikid-sections-container{display:block;width:100%;max-width:400px;height:calc(100% - 2rem);padding:.25rem .5rem 0;border-radius:1rem;background-color:var(--tui-base-01);margin:auto 1rem auto 0;box-shadow:0 0 12px -8px var(--tui-secondary)}.kwikid-sections-container.mobile{position:absolute;top:0;left:0;z-index:5;opacity:1;visibility:visible;transition:all 1s;height:100%;border-radius:0;max-width:unset}.kwikid-forms-container{display:block;width:100%;max-width:50%;margin:auto 0;height:calc(100% - 2rem);padding:.25rem .5rem 0;border-radius:1rem;background-color:var(--tui-base-01);box-shadow:0 0 12px -8px var(--tui-primary)}.kwikid-forms-container.mobile{position:absolute;top:0;left:0;z-index:5;opacity:1;visibility:visible;transition:all 1s;height:100%;border-radius:0;max-width:unset}@media screen and (max-width: 600px){.kwikid-layout-container{padding:0;background:transparent}.kwikid-sections-container{position:absolute;max-width:100%;bottom:-10000px;left:-10000px;opacity:0;padding:0;visibility:hidden}.kwikid-sections-container.active{visibility:visible}.kwikid-sections-container.mobile{height:100%;opacity:1;visibility:visible;transition:all 2s;border-radius:0;box-shadow:none;top:0px;margin:0;position:absolute}.kwikid-forms-container{display:none;max-width:100%;height:100%;padding:0;border-radius:0;box-shadow:none}.kwikid-forms-container.mobile{height:100%;opacity:1;visibility:visible;transition:all 2s;border-radius:0;box-shadow:none;top:0px;margin:0;position:absolute}.kwikid-forms-container.active{display:block}}.kwikid-forms-renderer-loader{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.75);display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;z-index:100}.kwikid-forms-renderer-loader .loader{width:48px;height:48px;border-radius:50%;display:inline-block;position:relative;border:3px solid;border-color:#fff #fff transparent;box-sizing:border-box;animation:rotation 1s linear infinite}.kwikid-forms-renderer-loader .loader:after{content:\"\";box-sizing:border-box;position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;border:3px solid;border-color:transparent var(--tui-primary) var(--tui-primary);width:24px;height:24px;border-radius:50%;animation:rotationBack .5s linear infinite;transform-origin:center center}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotationBack{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.kwikid-forms-renderer-loader .t-loader{display:none!important}#error-notification{background-color:var(--tui-error-fill);color:#fff!important}#error-notification .t-top{color:#fff!important}#error-notification .t-close{color:#fff!important}\n"], components: [{ type: i1.KwikIDFormsListComponent, selector: "kwikid-forms-list", inputs: ["showFormFields", "userConfig", "stepConfig", "activeFormConfig", "formsList", "formsListCompleted", "isMobileView"], outputs: ["onClickSetActiveForm", "onClickHideFormsList", "onClickSubmitForms"] }, { type: i2.KwikIDFormViewComponent, selector: "kwikid-form-view", inputs: ["formConfig", "formData", "isMobileView", "allFormsData"], outputs: ["onClickViewForms", "onClickSaveForm", "onClickApiCall"] }, { type: i3.TuiPushComponent, selector: "tui-push", inputs: ["heading", "type", "timestamp"], outputs: ["close"] }, { type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.TuiPushAlertDirective, selector: "[tuiPush]", inputs: ["tuiPush"] }, { type: i3.TuiPushDirective, selector: "tui-push" }], animations: [
|
|
508
508
|
trigger("panelInOut", [
|
|
509
509
|
transition(":enter", [
|
|
510
510
|
style({ transform: "translateY(100%)" }),
|
|
@@ -593,4 +593,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
593
593
|
}], onClickApiCall: [{
|
|
594
594
|
type: Output
|
|
595
595
|
}], convertFormListConfig: [], assignSequenceNoToForm: [], findCompletedFormsList: [], markFormInFormsListAsCompleted: [], markFormInFormsListAsDisabled: [], filterAllFormsData: [], checkIfFormsStatusCompleted: [], findActiveFormConfig: [], updateFormsList: [], formHide: [], formShow: [], findFormsListLength: [], handleOnClickSetActiveForm: [], handleOnClickSubmitForms: [] } });
|
|
596
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsTUFBTSxFQUNOLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsSUFBSSxFQUNKLG9CQUFvQixFQUNwQixNQUFNLEVBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssU0FBUyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFtQnZELE1BQU0sT0FBTyw0QkFBNEI7SUFrRXZDLFlBQ1UsV0FBdUIsRUFDdkIsR0FBc0I7UUFEdEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsUUFBRyxHQUFILEdB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LENBQUMsWUFBWSxFQUFFOzRCQUNwQixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDYixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQzs2QkFDdkQsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIO2lCQUNGO2lJQUlDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBd0J6QyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU07Z0JBOEdQLHFCQUFxQixNQTRCckIsc0JBQXNCLE1BZ0J0QixzQkFBc0IsTUFpQnRCLDhCQUE4QixNQXlCOUIsNkJBQTZCLE1BaUM3QixrQkFBa0IsTUFzQmxCLDJCQUEyQixNQXFCM0Isb0JBQW9CLE1BWWQsZUFBZSxNQThFckIsUUFBUSxNQU9SLFFBQVEsTUFrQ1IsbUJBQW1CLE1BNkJiLDBCQUEwQixNQXlHMUIsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBBY3Rpb24sXG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBDb25kaXRpb24sXG4gIGlzRW1wdHlWYWx1ZSxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2QsXG4gIFJ1bGUsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoLFxuICBTb3VyY2UsXG4gIFRBY3Rpb24sXG4gIFRSdWxlXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0ICogYXMgY2xvbmVEZWVwIGZyb20gXCJsb2Rhc2gvY2xvbmVEZWVwXCI7XG5pbXBvcnQgeyBFQWN0aW9uS2V5IH0gZnJvbSBcIi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2Zvcm0tdmlldy5hY3Rpb25zLmRlZmluaXRpb25cIjtcbmltcG9ydCB7IFRUcmlnZ2VyIH0gZnJvbSBcIi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2Zvcm0tdmlldy50cmlnZ2Vycy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBFRm9ybXNMaXN0U3RhdHVzIH0gZnJvbSBcIi4vZm9ybXMtbGlzdC9mb3Jtcy1saXN0LmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBFUmVuZGVyZXJBY3Rpb25LZXkgfSBmcm9tIFwiLi9yZW5kZXJlci5hY3Rpb25zLmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9jb25maWctY29udmVydGVyLmhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0Rm9ybUNvbmZpZ0J5S2V5IH0gZnJvbSBcIi4vcmVuZGVyZXIuaGVscGVyXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtcmVuZGVyZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9yZW5kZXJlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vcmVuZGVyZXIuY29tcG9uZW50LnNjc3NcIl0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKFwicGFuZWxJbk91dFwiLCBbXG4gICAgICB0cmFuc2l0aW9uKFwiOmVudGVyXCIsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgxMDAlKVwiIH0pLFxuICAgICAgICBhbmltYXRlKDE1MClcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihcIjpsZWF2ZVwiLCBbXG4gICAgICAgIGFuaW1hdGUoMTAwLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDEwMCUpXCIgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gVGhlIGZpbmFsIHZhbHVlIHNob3VsZCBiZSBwcm92aWRlZCB0byBzZXJ2aWNlLCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGFsbCBjb21wb25lbnRzXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtcIiRldmVudFwiXSlcbiAgd2luZG93UmVzaXplV2F0Y2hlcigpIHtcbiAgICBpZiAodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgNjAwKSB7XG4gICAgICBpZiAodGhpcy5zaG93Rm9ybSkge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNob3dGb3JtKSB7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzdGVwQ29uZmlnOiBhbnk7XG5cbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55O1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1zRGF0YTogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgYXBpQ2FsbFJlc3BvbnNlOiBhbnkgPSB7fTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1N1Ym1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgZ2V0Rm9ybURhdGE6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tBcGlDYWxsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2hvd0Vycm9yTm90aWZpY2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKHNob3cpIHtcbiAgICB0aGlzLnNob3dFcnJvck5vdGlmaWNhdGlvbiA9IHNob3c7XG4gIH1cblxuICBhY3RpdmVGb3JtQ29uZmlnOiBhbnk7XG4gIGFjdGl2ZUZvcm1GaWVsZHM6IGFueVtdO1xuICBhbGxGb3Jtc0RhdGE6IGFueSA9IHt9O1xuICBmb3Jtc0xpc3Q6IGFueVtdID0gW107XG4gIGZvcm1zTGlzdENvbXBsZXRlZDogc3RyaW5nW107XG4gIGlzTW9iaWxlVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIGRpc3BsYXkgZm9ybXMgYW5kIGxpc3QgY29uZGl0aW9uYWxseVxuICBzaG93Rm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93Rm9ybUZpZWxkczogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dGb3JtU2VjdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZvcm1TdGVwS2V5ID0gdGhpcy5zdGVwQ29uZmlnPy5mb3JtPy5rZXkgPz8gdW5kZWZpbmVkO1xuXG4gICAgaWYgKFxuICAgICAgZm9ybVN0ZXBLZXkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzLCBmb3JtU3RlcEtleSlcbiAgICApIHtcbiAgICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzW2Zvcm1TdGVwS2V5XTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzKSkge1xuICAgICAgdGhpcy5mb3Jtc0xpc3QgPSB0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHVzZXJGb3JtRmllbGRzIGRvZXNuJ3QgaGF2ZSBhIGZvcm0gZGVmaW5lZCB3aXRoIGtleTogJHtmb3JtU3RlcEtleX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1zKFwiT05fSU5JVFwiKTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChwcm9wOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjaGFuZ2VzLmhhc093blByb3BlcnR5KHByb3ApICYmICFjaGFuZ2VzW3Byb3BdLmZpcnN0Q2hhbmdlO1xuICAgIH07XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInVzZXJDb25maWdcIikpIHtcbiAgICAgIHRoaXMudXNlckNvbmZpZyA9IGNoYW5nZXMudXNlckNvbmZpZy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZm9ybXNEYXRhXCIpKSB7XG4gICAgICB0aGlzLmZvcm1zRGF0YSA9IGNoYW5nZXMuZm9ybXNEYXRhLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybXMoXCJPTl9DSEFOR0VcIik7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhcGlDYWxsUmVzcG9uc2VcIikpIHtcbiAgICAgIHRoaXMuYXBpQ2FsbFJlc3BvbnNlID0gY2hhbmdlcy5hcGlDYWxsUmVzcG9uc2UuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmZXRjaEZvcm1Db25maWcodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBtZXRob2Q6IFwiR0VUXCIgfSk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGluaXRpYWxpemVGb3JtcyhldmVudFR5cGU6IHN0cmluZykge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcblxuICAgIHRoaXMuYWxsRm9ybXNEYXRhID0gdGhpcy5mb3Jtc0RhdGE7XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUZvcm1zTGlzdCgpO1xuXG4gICAgaWYgKFxuICAgICAgZXZlbnRUeXBlID09PSBcIk9OX0NIQU5HRVwiICYmXG4gICAgICB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpID09PSAxXG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZU9uQ2xpY2tTdWJtaXRGb3JtcyhudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVSZXNpemUodGhpcy5mb3Jtc0xpc3QpO1xuXG4gICAgICBpZiAoaXNOb3RFbXB0eVZhbHVlKHRoaXMuYWN0aXZlRm9ybUNvbmZpZykpIHtcbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuYWN0aXZlRm9ybUNvbmZpZywgXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRm9ybUNvbmZpZy50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybSh0aGlzLmFjdGl2ZUZvcm1Db25maWcua2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybSh0aGlzLmFjdGl2ZUZvcm1Db25maWcua2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGNvbnZlcnRGb3JtTGlzdENvbmZpZyhmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBmb3Jtc0xpc3QubWFwKChmb3JtKSA9PiB7XG4gICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwidHlwZVwiKSkge1xuICAgICAgICBmb3JtLnR5cGUgPSBcImZvcm1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImZvcm1Db250ZW50XCIpKSB7XG4gICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcInByb3BzLnVybFwiLCBmb3JtLmZvcm1Db250ZW50LnVybCk7XG4gICAgICAgIGRlbGV0ZSBmb3JtW1wiZm9ybUNvbnRlbnRcIl1bXCJ1cmxcIl07XG4gICAgICB9XG4gICAgICBpZiAoaXNFbXB0eVZhbHVlKGZvcm0uZm9ybUNvbnRlbnQpKSB7XG4gICAgICAgIGRlbGV0ZSBmb3JtW1wiZm9ybUNvbnRlbnRcIl07XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJ0aXRsZVwiKSkge1xuICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZm9ybSwgXCJwcm9wcy50aXRsZVwiLCBmb3JtLnRpdGxlKTtcbiAgICAgICAgZGVsZXRlIGZvcm1bXCJ0aXRsZVwiXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE5PVEU6IFRvIGJlIGRlcHJlY2F0ZWQuXG4gICAqIFdoeSA/IFdpbGwgYmUgZGlyZWN0bHkgYXNzaWduZWQgd2hpbGUgZXhlY3V0aW5nICdjaGFrcmEnIGZvciBkZWZhdWx0IGZvcm0gY29uZmlnLlxuICAgKiBAcGFyYW0gZm9ybXNMaXN0IGFueVtdXG4gICAqIEBwYXJhbSBmb3Jtc0xpc3RDb21wbGV0ZWQgc3RyaW5nW11cbiAgICogQHJldHVybnMgYW55W11cbiAgICovXG4gIEBsb2dNZXRob2RcbiAgYXNzaWduU2VxdWVuY2VOb1RvRm9ybShmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xuICAgIGxldCBzZXF1ZW5jZU5vID0gMTtcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4gJiYgZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIGZvcm0uc2VxdWVuY2VObyA9IHNlcXVlbmNlTm8rKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZm9ybVtcInNlcXVlbmNlTm9cIl07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybXNMaXN0O1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaW5kQ29tcGxldGVkRm9ybXNMaXN0KGFsbEZvcm1zRGF0YTogYW55KTogc3RyaW5nW10ge1xuICAgIGxldCBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdID0gW107XG5cbiAgICBPYmplY3Qua2V5cyhhbGxGb3Jtc0RhdGEpLm1hcCgoZm9ybUtleSkgPT4ge1xuICAgICAgZm9ybXNMaXN0Q29tcGxldGVkLnB1c2goZm9ybUtleSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm9ybXNMaXN0Q29tcGxldGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE5PVEU6IFRvIGJlIGRlcHJlY2F0ZWQuIFdoeSA/IFdpbGwgYmUgcmVwbGFjZWQgYnkgJ2NoYWtyYScuXG4gICAqIEBwYXJhbSBmb3Jtc0xpc3QgYW55W11cbiAgICogQHBhcmFtIGZvcm1zTGlzdENvbXBsZXRlZCBzdHJpbmdbXVxuICAgKiBAcmV0dXJucyBhbnlbXVxuICAgKi9cbiAgQGxvZ01ldGhvZFxuICBtYXJrRm9ybUluRm9ybXNMaXN0QXNDb21wbGV0ZWQoXG4gICAgZm9ybXNMaXN0OiBhbnlbXSxcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXG4gICk6IGFueVtdIHtcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4gJiYgZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIGlmIChmb3Jtc0xpc3RDb21wbGV0ZWQuaW5jbHVkZXMoZm9ybS5rZXkpKSB7XG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZm9ybSwgXCJzdGF0dXNcIiwgXCJjb21wbGV0ZWRcIik7XG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZm9ybSwgXCJkaXNhYmxlZFwiLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1zTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBOT1RFOiBUbyBiZSBkZXByZWNhdGVkLiBXaHkgPyBXaWxsIGJlIHJlcGxhY2VkIGJ5ICdjaGFrcmEnLlxuICAgKiBAcGFyYW0gZm9ybXNMaXN0IGFueVtdXG4gICAqIEBwYXJhbSBmb3Jtc0xpc3RDb21wbGV0ZWQgc3RyaW5nW11cbiAgICogQHJldHVybnMgYW55W11cbiAgICovXG4gIEBsb2dNZXRob2RcbiAgbWFya0Zvcm1JbkZvcm1zTGlzdEFzRGlzYWJsZWQoXG4gICAgZm9ybXNMaXN0OiBhbnlbXSxcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXG4gICk6IGFueVtdIHtcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4gJiYgZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIGlmIChmb3JtLnN0YXR1cyAhPT0gXCJjb21wbGV0ZWRcIikge1xuICAgICAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiZGVwZW5kZW50T25cIikpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNEZXBlbmRlbnQgPSBmb3JtLmRlcGVuZGVudE9uLmV2ZXJ5KChyOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgZm9ybXNMaXN0Q29tcGxldGVkLmluY2x1ZGVzKHIpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChpc0RlcGVuZGVudCkge1xuICAgICAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcInN0YXR1c1wiLCBcImVkaXRhYmxlXCIpO1xuICAgICAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZm9ybSwgXCJzdGF0dXNcIiwgXCJsb2NrZWRcIik7XG4gICAgICAgICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3RQYXRoKGZvcm0sIFwiZGlzYWJsZWRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcImRlcGVuZGVudE9uXCIsIFtdKTtcbiAgICAgICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3RQYXRoKGZvcm0sIFwic3RhdHVzXCIsIFwiZWRpdGFibGVcIik7XG4gICAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybXNMaXN0O1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaWx0ZXJBbGxGb3Jtc0RhdGEoYWxsRm9ybXNEYXRhOiBhbnksIGZvcm1zTGlzdDogYW55W10pOiBhbnkge1xuICAgIGxldCBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGE6IGFueSA9IHt9O1xuXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikgJiZcbiAgICAgICAgIWZvcm0uaGlkZGVuICYmXG4gICAgICAgIGZvcm0udHlwZSA9PT0gXCJmb3JtXCJcbiAgICAgICkge1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYWxsRm9ybXNEYXRhLCBmb3JtLmtleSkpIHtcbiAgICAgICAgICBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGEgPSB7XG4gICAgICAgICAgICAuLi5jdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGEsXG4gICAgICAgICAgICBbZm9ybS5rZXldOiBhbGxGb3Jtc0RhdGFbZm9ybS5rZXldXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGE7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGNoZWNrSWZGb3Jtc1N0YXR1c0NvbXBsZXRlZChcbiAgICBmb3Jtc0xpc3Q6IGFueSxcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXG4gICk6IGFueSB7XG4gICAgbGV0IGFsbEZvcm1zQ29tcGxldGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvciAoY29uc3QgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICBpZiAoIWZvcm0uaGlkZGVuICYmIGZvcm0udHlwZSA9PT0gXCJmb3JtXCIpIHtcbiAgICAgICAgICBpZiAoZm9ybS5zdGF0dXMgIT09IFwiY29tcGxldGVkXCIpIHtcbiAgICAgICAgICAgIGFsbEZvcm1zQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWxsRm9ybXNDb21wbGV0ZWQ7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbmRBY3RpdmVGb3JtQ29uZmlnKGZvcm1zTGlzdDogYW55W10pOiBhbnkge1xuICAgIGNvbnN0IGFjdGl2ZUZvcm1Db25maWcgPSBmb3Jtc0xpc3QuZmluZCgoZm9ybSkgPT4ge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4gJiYgZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIHJldHVybiBmb3JtLnN0YXR1cyA9PT0gXCJlZGl0YWJsZVwiICYmICFmb3JtLmRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGl2ZUZvcm1Db25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIHVwZGF0ZUZvcm1zTGlzdCgpIHtcbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuY29udmVydEZvcm1MaXN0Q29uZmlnKHRoaXMuZm9ybXNMaXN0KTtcblxuICAgIGZvciAobGV0IGZvcm0gb2YgdGhpcy5mb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJkZWZhdWx0XCIpICYmXG4gICAgICAgIGlzTm90RW1wdHlWYWx1ZShmb3JtLmRlZmF1bHQpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IGZvcm0uZGVmYXVsdC50cmlnZ2VycztcbiAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IGZvcm0uZGVmYXVsdC5ydWxlcztcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSBmb3JtLmRlZmF1bHQuYWN0aW9ucztcblxuICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywge1xuICAgICAgICAgIFVTRVJfQ09ORklHOiB0aGlzLnVzZXJDb25maWcsXG4gICAgICAgICAgRk9STVNfTElTVDogdGhpcy5mb3Jtc0xpc3QsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuYWxsRm9ybXNEYXRhXG4gICAgICAgIH0pLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBGT1JNU19MSVNUOiB0aGlzLmZvcm1zTGlzdCxcbiAgICAgICAgICAgICAgICBBTExfRk9STVNfREFUQTogdGhpcy5hbGxGb3Jtc0RhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy50YWtlQWN0aW9uLmJpbmQodGhpcylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICAgIGZvcm0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuYXNzaWduU2VxdWVuY2VOb1RvRm9ybSh0aGlzLmZvcm1zTGlzdCk7XG5cbiAgICAvKipcbiAgICAgKiBCZWxvdyBjb2RlIGlkZW50aWZpZXMgdGhlIGFsbEZvcm1zRGF0YSByZXF1aXJlZCBmb3IgdGhlIGN1cnJlbnQgVXNlciBGb3JtLlxuICAgICAqIFdoeT8gQmVjYXVzZSBhbGxGb3Jtc0RhdGEgd2lsbCBhY3R1YWxseSBjb250YWluIHRoZSB3aG9sZSBqb3VybmV5J3MgYWxsXG4gICAgICogcG9zc2libGUgVXNlciBGb3JtIHN0ZXBzLiBTbywgaXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGUgZm9ybSBkYXRhIHdoaWNoXG4gICAgICogdGhpcyBwYXJ0aWN1bGFyIFVzZXIgRm9ybSBvbmx5IGhhcyB0byBMT0NBTCBNRVRIT0QgVmFyaWFibGUuXG4gICAgICovXG4gICAgY29uc3QgY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhID0gdGhpcy5maWx0ZXJBbGxGb3Jtc0RhdGEoXG4gICAgICB0aGlzLmFsbEZvcm1zRGF0YSxcbiAgICAgIHRoaXMuZm9ybXNMaXN0XG4gICAgKTtcblxuICAgIHRoaXMuZm9ybXNMaXN0Q29tcGxldGVkID0gdGhpcy5maW5kQ29tcGxldGVkRm9ybXNMaXN0KFxuICAgICAgY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhXG4gICAgKTtcblxuICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy5tYXJrRm9ybUluRm9ybXNMaXN0QXNDb21wbGV0ZWQoXG4gICAgICB0aGlzLmZvcm1zTGlzdCxcbiAgICAgIHRoaXMuZm9ybXNMaXN0Q29tcGxldGVkXG4gICAgKTtcblxuICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy5tYXJrRm9ybUluRm9ybXNMaXN0QXNEaXNhYmxlZChcbiAgICAgIHRoaXMuZm9ybXNMaXN0LFxuICAgICAgdGhpcy5mb3Jtc0xpc3RDb21wbGV0ZWRcbiAgICApO1xuXG4gICAgdGhpcy5mb3Jtc0xpc3QgPSBjbG9uZURlZXAodGhpcy5mb3Jtc0xpc3QpO1xuXG4gICAgdGhpcy5hY3RpdmVGb3JtQ29uZmlnID0gdGhpcy5maW5kQWN0aXZlRm9ybUNvbmZpZyh0aGlzLmZvcm1zTGlzdCk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZvcm1IaWRlKGZvcm1LZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBmb3JtID0gZ2V0Rm9ybUNvbmZpZ0J5S2V5KHRoaXMuZm9ybXNMaXN0LCBmb3JtS2V5KTtcblxuICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcImhpZGRlblwiLCB0cnVlKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZm9ybVNob3coZm9ybUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGZvcm0gPSBnZXRGb3JtQ29uZmlnQnlLZXkodGhpcy5mb3Jtc0xpc3QsIGZvcm1LZXkpO1xuXG4gICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3RQYXRoKGZvcm0sIFwiaGlkZGVuXCIsIGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIHRha2VBY3Rpb24oYWN0aW9uOiBhbnksIG9iamVjdDogYW55KSB7XG4gICAgc3dpdGNoIChhY3Rpb24ua2V5KSB7XG4gICAgICBjYXNlIEVSZW5kZXJlckFjdGlvbktleS5GT1JNX0hJREU6XG4gICAgICAgIHRoaXMuZm9ybUhpZGUoYWN0aW9uLnByb3BzLmZvcm1LZXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRVJlbmRlcmVyQWN0aW9uS2V5LkZPUk1fU0hPVzpcbiAgICAgICAgdGhpcy5mb3JtU2hvdyhhY3Rpb24ucHJvcHMuZm9ybUtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFQWN0aW9uS2V5LlNFVF9WQUxVRTpcbiAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2Uoe1xuICAgICAgICAgIFVTRVJfQ09ORklHOiB0aGlzLnVzZXJDb25maWcsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuZm9ybXNEYXRhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNvdXJjZVZhbHVlID0gYXdhaXQgc291cmNlcy5nZXRWYWx1ZUZyb21Tb3VyY2UoXG4gICAgICAgICAgYWN0aW9uLnByb3BzLnZhbHVlLnNvdXJjZVxuICAgICAgICApO1xuICAgICAgICBzb3VyY2VzLnNldFZhbHVlVG9Tb3VyY2UoYWN0aW9uLnByb3BzLnZhbHVlLmRlc3RpbmF0aW9uLCBzb3VyY2VWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy51c2VyQ29uZmlnID0gc291cmNlcy5vYmplY3QuVVNFUl9DT05GSUc7XG4gICAgICAgIHRoaXMuZm9ybXNEYXRhID0gc291cmNlcy5vYmplY3QuQUxMX0ZPUk1TX0RBVEE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaW5kRm9ybXNMaXN0TGVuZ3RoKGZvcm1zTGlzdDogYW55W10pOiBudW1iZXIge1xuICAgIGNvbnN0IF9mb3Jtc0xpc3QgPSBmb3Jtc0xpc3QuZmlsdGVyKChmb3JtKSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJ0eXBlXCIpKSB7XG4gICAgICAgIGlmIChmb3JtLnR5cGUgPT09IFwiZm9ybVwiKSB7XG4gICAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgICAgICBpZiAoIWZvcm0uaGlkZGVuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICBpZiAoIWZvcm0uaGlkZGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfZm9ybXNMaXN0Lmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWJyYXJ5IEV2ZW50IExpc3RlbmVyc1xuICAgKi9cblxuICAvKipcbiAgICogRm9ybUxpc3QgLSBMaXN0ZW5zIHRvIGV2ZW50IG9mIG9wZW5pbmcgdGhlIEZvcm1WaWV3IG9mIHdoZW4gYW55IGZvcm0gaXMgY2xpY2tlZCBpbiBGb3JtTGlzdFxuICAgKiBAcGFyYW0gc2VsZWN0ZWRGb3JtIHN0cmluZ1xuICAgKi9cbiAgQGxvZ01ldGhvZFxuICBhc3luYyBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShzZWxlY3RlZEZvcm06IHN0cmluZykge1xuICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG5cbiAgICBjb25zdCBhY3RpdmVGb3JtQ29uZmlnID0gdGhpcy5mb3Jtc0xpc3QuZmluZCgoZm9ybSkgPT4ge1xuICAgICAgaWYgKGZvcm0ua2V5ID09PSBzZWxlY3RlZEZvcm0pIHtcbiAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgZm9ybUNvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLCBcInByb3BzXCIpKSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYWN0aXZlRm9ybUNvbmZpZy5wcm9wcywgXCJ1cmxcIikpIHtcbiAgICAgICAgY29uc3QgZm9ybUNvbmZpZ0Zyb21VcmwgPSBhd2FpdCB0aGlzLmZldGNoRm9ybUNvbmZpZyhcbiAgICAgICAgICBhY3RpdmVGb3JtQ29uZmlnLnByb3BzLnVybFxuICAgICAgICApO1xuICAgICAgICBmb3JtQ29uZmlnID0ge1xuICAgICAgICAgIC4uLmFjdGl2ZUZvcm1Db25maWcsXG4gICAgICAgICAgLi4uZm9ybUNvbmZpZ0Zyb21VcmxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLCBcImZpZWxkc1wiKSkge1xuICAgICAgICAgIGZvcm1Db25maWcgPSBhY3RpdmVGb3JtQ29uZmlnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJObyB1cmwgb3IgZmllbGRzIGtleSBpbiBhY3RpdmVGb3JtQ29uZmlnXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLmZvcm1Db250ZW50LCBcInVybFwiKSkge1xuICAgICAgICBjb25zdCBmb3JtQ29uZmlnRnJvbVVybCA9IGF3YWl0IHRoaXMuZmV0Y2hGb3JtQ29uZmlnKFxuICAgICAgICAgIGFjdGl2ZUZvcm1Db25maWcuZm9ybUNvbnRlbnQudXJsXG4gICAgICAgICk7XG4gICAgICAgIGZvcm1Db25maWcgPSB7XG4gICAgICAgICAgLi4uYWN0aXZlRm9ybUNvbmZpZyxcbiAgICAgICAgICAuLi5mb3JtQ29uZmlnRnJvbVVybFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFjdGl2ZUZvcm1Db25maWcsIFwiZmllbGRzXCIpKSB7XG4gICAgICAgICAgZm9ybUNvbmZpZyA9IGFjdGl2ZUZvcm1Db25maWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIk5vIHVybCBvciBmaWVsZHMga2V5IGluIGFjdGl2ZUZvcm1Db25maWdcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc29sZS5sb2coSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmb3JtQ29uZmlnKSkpO1xuXG4gICAgZm9ybUNvbmZpZyA9IG5ldyBDb252ZXJ0ZXIoKS51cGRhdGVGb3JtQ29uZmlnTWlzY2VsbGFuZW91cyhmb3JtQ29uZmlnLCB7XG4gICAgICBmb3Jtc0xpc3RMZW5ndGg6IHRoaXMuZmluZEZvcm1zTGlzdExlbmd0aCh0aGlzLmZvcm1zTGlzdClcbiAgICB9KTtcblxuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IHtcbiAgICAgIC4uLmFjdGl2ZUZvcm1Db25maWcsXG4gICAgICAuLi5mb3JtQ29uZmlnXG4gICAgfTtcblxuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZztcblxuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPj0gNjAwKSB7XG4gICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93Rm9ybSA9IHRydWU7XG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtVmlldyAtIExpc3RlbnMgdG8gZXZlbnQgb2YgZXhlY3V0aW5nIGFuIEFQSSBjYWxsIGZyb20gd2l0aGluIHRoZSBGb3JtVmlldyBhbmQgZW1pdHMgKHJlYWQgYXMgcGFzc2VzKSB0aGUgc2FtZSBldmVudCB0byB0aGUgbGlicmFyeSBjb25zdW1lci5cbiAgICogQHBhcmFtIGUgYW55XG4gICAqL1xuICBoYW5kbGVPbkNsaWNrQXBpQ2FsbChlOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5vbkNsaWNrQXBpQ2FsbC5lbWl0KGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1WaWV3IC0gTGlzdGVucyB0byBldmVudCBvZiBnZXR0aW5nIHRoZSBBY3RpdmUgRm9ybSdzIERhdGEgd2hlbiB0aGUgRm9ybSBpcyBTYXZlZCBhbmQgZW1pdHMgKHJlYWQgYXMgcGFzc2VzKSB0aGUgc2FtZSBldmVudCB0byB0aGUgbGlicmFyeSBjb25zdW1lci5cbiAgICogQHBhcmFtIGUgYW55XG4gICAqL1xuICBoYW5kbGVPbkNsaWNrU2F2ZUZvcm0oZTogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuXG4gICAgdGhpcy5nZXRGb3JtRGF0YS5lbWl0KHtcbiAgICAgIFt0aGlzLmFjdGl2ZUZvcm1Db25maWcua2V5XTogZVtcImRhdGFcIl1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtVmlldyAtIExpc3RlbnMgdG8gZXZlbnQgb2Ygc2hvd2luZyB0aGUgRm9ybXMgTGlzdCBpbiBNb2JpbGUgVmlldy5cbiAgICogQHBhcmFtIGUgYW55XG4gICAqL1xuICBoYW5kbGVPbkNsaWNrVmlld0Zvcm1zKGU6IGFueSkge1xuICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XG4gICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtTGlzdCAtIExpc3RlbnMgdG8gZXZlbnQgb2Ygc3VibWl0dGluZyBhbGwgdGhlIGZvcm1zIGFuZCBtb3Zpbmcgb3V0IG9mIHRoZSBsaWJyYXJ5IGFuZCBhbHNvIGhhbmRsZXMgdGhlIHZhbGlkYXRpb24gb2YgYWxsIHRoZSBmb3Jtcy5cbiAgICogQHBhcmFtIGUgYW55XG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGhhbmRsZU9uQ2xpY2tTdWJtaXRGb3JtcyhlOiBhbnkpIHtcbiAgICBjb25zdCBmb3Jtc0xpc3Q6IGFueVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1zTGlzdCkpO1xuXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWZvcm0uaGlkZGVuICYmXG4gICAgICAgIGZvcm0ucmVxdWlyZWQgJiZcbiAgICAgICAgZm9ybS5zdGF0dXMgIT09IEVGb3Jtc0xpc3RTdGF0dXMuQ09NUExFVEVEXG4gICAgICApIHtcbiAgICAgICAgdGhpcy50b2dnbGVFcnJvck5vdGlmaWNhdGlvbih0cnVlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGVFcnJvck5vdGlmaWNhdGlvbihmYWxzZSk7XG4gICAgICAgIH0sIDMwMDApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vbkNsaWNrU3VibWl0LmVtaXQoZSk7XG4gIH1cblxuICAvKipcbiAgICogTWlzY2VsbGFuZW91cyBNZXRob2RzXG4gICAqL1xuICBoYW5kbGVSZXNpemUoZm9ybXNMaXN0OiBhbnlbXSkge1xuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIGNvbnN0IGlzU2luZ2xlRm9ybSA9IChmb3Jtc0xpc3Q6IGFueVtdKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiBmb3Jtc0xpc3QubGVuZ3RoID09PSAxO1xuICAgICAgfTtcbiAgICAgIGlmICghaXNTaW5nbGVGb3JtKGZvcm1zTGlzdCkpIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dGb3JtID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgbmdDbGFzcz1cImt3aWtpZC1yZW5kZXJlclwiPlxuICA8ZGl2XG4gICAgbmdDbGFzcz1cImt3aWtpZC1sYXlvdXQtY29udGFpbmVyXCJcbiAgICAqbmdJZj1cIiFsb2FkaW5nXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIG5nQ2xhc3M9XCJrd2lraWQtc2VjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICpuZ0lmPVwic2hvd0Zvcm1TZWN0aW9uc1wiXG4gICAgICBjbGFzcz1cImFjdGl2ZVwiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGb3JtU2VjdGlvbnNcIlxuICAgICAgW2NsYXNzLm1vYmlsZV09XCJpc01vYmlsZVZpZXdcIlxuICAgID5cbiAgICAgIDxrd2lraWQtZm9ybXMtbGlzdFxuICAgICAgICBbc2hvd0Zvcm1GaWVsZHNdPVwidGhpcy5zaG93Rm9ybUZpZWxkc1wiXG4gICAgICAgIFthY3RpdmVGb3JtQ29uZmlnXT1cInRoaXMuYWN0aXZlRm9ybUNvbmZpZ1wiXG4gICAgICAgIFt1c2VyQ29uZmlnXT1cInRoaXMudXNlckNvbmZpZ1wiXG4gICAgICAgIFtmb3Jtc0xpc3RdPVwidGhpcy5mb3Jtc0xpc3RcIlxuICAgICAgICBbc3RlcENvbmZpZ109XCJ0aGlzLnN0ZXBDb25maWdcIlxuICAgICAgICBbZm9ybXNMaXN0Q29tcGxldGVkXT1cInRoaXMuZm9ybXNMaXN0Q29tcGxldGVkXCJcbiAgICAgICAgW2lzTW9iaWxlVmlld109XCJ0aGlzLmlzTW9iaWxlVmlld1wiXG4gICAgICAgIChvbkNsaWNrU2V0QWN0aXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKCRldmVudClcIlxuICAgICAgICAob25DbGlja1N1Ym1pdEZvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1N1Ym1pdEZvcm1zKCRldmVudClcIlxuICAgICAgPjwva3dpa2lkLWZvcm1zLWxpc3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgbmdDbGFzcz1cImt3aWtpZC1mb3Jtcy1jb250YWluZXJcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgdGhpcy5zaG93Rm9ybSAmJlxuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzICYmXG4gICAgICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyAhPT0gdW5kZWZpbmVkXG4gICAgICBcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93Rm9ybUZpZWxkc1wiXG4gICAgICBbY2xhc3MubW9iaWxlXT1cImlzTW9iaWxlVmlld1wiXG4gICAgICBbQHBhbmVsSW5PdXRdXG4gICAgPlxuICAgICAgPGt3aWtpZC1mb3JtLXZpZXdcbiAgICAgICAgW2Zvcm1Db25maWddPVwidGhpcy5hY3RpdmVGb3JtQ29uZmlnXCJcbiAgICAgICAgW2FsbEZvcm1zRGF0YV09XCJ0aGlzLmFsbEZvcm1zRGF0YVwiXG4gICAgICAgIFtpc01vYmlsZVZpZXddPVwidGhpcy5pc01vYmlsZVZpZXdcIlxuICAgICAgICAob25DbGlja1ZpZXdGb3Jtcyk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tWaWV3Rm9ybXMoJGV2ZW50KVwiXG4gICAgICAgIChvbkNsaWNrU2F2ZUZvcm0pPVwidGhpcy5oYW5kbGVPbkNsaWNrU2F2ZUZvcm0oJGV2ZW50KVwiXG4gICAgICA+PC9rd2lraWQtZm9ybS12aWV3PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICBuZ0NsYXNzPVwia3dpa2lkLWZvcm1zLXJlbmRlcmVyLWxvYWRlclwiXG4gICpuZ0lmPVwibG9hZGVyXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XG48L2Rpdj5cbjx0dWktcHVzaFxuICBpZD1cImVycm9yLW5vdGlmaWNhdGlvblwiXG4gICp0dWlQdXNoPVwic2hvd0Vycm9yTm90aWZpY2F0aW9uXCJcbiAgaGVhZGluZz1cIlBsZWFzZSBjb21wbGV0ZSB0aGUgcmVxdWlyZWQgRm9ybXMhXCJcbiAgdHlwZT1cIkVycm9yXCJcbiAgKGNsb3NlKT1cInRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKGZhbHNlKVwiXG4+XG4gIDx0dWktc3ZnXG4gICAgc3JjPVwidHVpSWNvbkNhbmNlbFwiXG4gICAgc3R5bGU9XCJjb2xvcjogI2ZmZiAhaW1wb3J0YW50XCJcbiAgPlxuICA8L3R1aS1zdmc+XG48L3R1aS1wdXNoPlxuIl19
|
|
596
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsTUFBTSxFQUNOLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsSUFBSSxFQUNKLG9CQUFvQixFQUNwQixNQUFNLEVBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssU0FBUyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFtQnZELE1BQU0sT0FBTyw0QkFBNEI7SUFrRXZDLFlBQ1UsV0FBdUIsRUFDdkIsR0FBc0I7UUFEdEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsUUFBRyxHQUFILEdB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LENBQUMsWUFBWSxFQUFFOzRCQUNwQixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDYixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQzs2QkFDdkQsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIO2lCQUNGO2lJQUlDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBd0J6QyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU07Z0JBOEdQLHFCQUFxQixNQTRCckIsc0JBQXNCLE1BZ0J0QixzQkFBc0IsTUFpQnRCLDhCQUE4QixNQXlCOUIsNkJBQTZCLE1BaUM3QixrQkFBa0IsTUFzQmxCLDJCQUEyQixNQXFCM0Isb0JBQW9CLE1BWWQsZUFBZSxNQThFckIsUUFBUSxNQU9SLFFBQVEsTUFrQ1IsbUJBQW1CLE1BNkJiLDBCQUEwQixNQXlHMUIsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBBY3Rpb24sXG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBDb25kaXRpb24sXG4gIGlzRW1wdHlWYWx1ZSxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2QsXG4gIFJ1bGUsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoLFxuICBTb3VyY2UsXG4gIFRBY3Rpb24sXG4gIFRSdWxlXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0ICogYXMgY2xvbmVEZWVwIGZyb20gXCJsb2Rhc2gvY2xvbmVEZWVwXCI7XG5pbXBvcnQgeyBFQWN0aW9uS2V5IH0gZnJvbSBcIi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2Zvcm0tdmlldy5hY3Rpb25zLmRlZmluaXRpb25cIjtcbmltcG9ydCB7IFRUcmlnZ2VyIH0gZnJvbSBcIi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2Zvcm0tdmlldy50cmlnZ2Vycy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBFRm9ybXNMaXN0U3RhdHVzIH0gZnJvbSBcIi4vZm9ybXMtbGlzdC9mb3Jtcy1saXN0LmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBFUmVuZGVyZXJBY3Rpb25LZXkgfSBmcm9tIFwiLi9yZW5kZXJlci5hY3Rpb25zLmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9jb25maWctY29udmVydGVyLmhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0Rm9ybUNvbmZpZ0J5S2V5IH0gZnJvbSBcIi4vcmVuZGVyZXIuaGVscGVyXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtcmVuZGVyZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9yZW5kZXJlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vcmVuZGVyZXIuY29tcG9uZW50LnNjc3NcIl0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKFwicGFuZWxJbk91dFwiLCBbXG4gICAgICB0cmFuc2l0aW9uKFwiOmVudGVyXCIsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgxMDAlKVwiIH0pLFxuICAgICAgICBhbmltYXRlKDE1MClcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihcIjpsZWF2ZVwiLCBbXG4gICAgICAgIGFuaW1hdGUoMTAwLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDEwMCUpXCIgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gVGhlIGZpbmFsIHZhbHVlIHNob3VsZCBiZSBwcm92aWRlZCB0byBzZXJ2aWNlLCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGFsbCBjb21wb25lbnRzXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtcIiRldmVudFwiXSlcbiAgd2luZG93UmVzaXplV2F0Y2hlcigpIHtcbiAgICBpZiAodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgNjAwKSB7XG4gICAgICBpZiAodGhpcy5zaG93Rm9ybSkge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNob3dGb3JtKSB7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzdGVwQ29uZmlnOiBhbnk7XG5cbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55O1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1zRGF0YTogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgYXBpQ2FsbFJlc3BvbnNlOiBhbnkgPSB7fTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1N1Ym1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgZ2V0Rm9ybURhdGE6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tBcGlDYWxsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2hvd0Vycm9yTm90aWZpY2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKHNob3cpIHtcbiAgICB0aGlzLnNob3dFcnJvck5vdGlmaWNhdGlvbiA9IHNob3c7XG4gIH1cblxuICBhY3RpdmVGb3JtQ29uZmlnOiBhbnk7XG4gIGFjdGl2ZUZvcm1GaWVsZHM6IGFueVtdO1xuICBhbGxGb3Jtc0RhdGE6IGFueSA9IHt9O1xuICBmb3Jtc0xpc3Q6IGFueVtdID0gW107XG4gIGZvcm1zTGlzdENvbXBsZXRlZDogc3RyaW5nW107XG4gIGlzTW9iaWxlVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIGRpc3BsYXkgZm9ybXMgYW5kIGxpc3QgY29uZGl0aW9uYWxseVxuICBzaG93Rm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93Rm9ybUZpZWxkczogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dGb3JtU2VjdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZvcm1TdGVwS2V5ID0gdGhpcy5zdGVwQ29uZmlnPy5mb3JtPy5rZXkgPz8gdW5kZWZpbmVkO1xuXG4gICAgaWYgKFxuICAgICAgZm9ybVN0ZXBLZXkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzLCBmb3JtU3RlcEtleSlcbiAgICApIHtcbiAgICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzW2Zvcm1TdGVwS2V5XTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzKSkge1xuICAgICAgdGhpcy5mb3Jtc0xpc3QgPSB0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHVzZXJGb3JtRmllbGRzIGRvZXNuJ3QgaGF2ZSBhIGZvcm0gZGVmaW5lZCB3aXRoIGtleTogJHtmb3JtU3RlcEtleX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1zKFwiT05fSU5JVFwiKTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChwcm9wOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjaGFuZ2VzLmhhc093blByb3BlcnR5KHByb3ApICYmICFjaGFuZ2VzW3Byb3BdLmZpcnN0Q2hhbmdlO1xuICAgIH07XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInVzZXJDb25maWdcIikpIHtcbiAgICAgIHRoaXMudXNlckNvbmZpZyA9IGNoYW5nZXMudXNlckNvbmZpZy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZm9ybXNEYXRhXCIpKSB7XG4gICAgICB0aGlzLmZvcm1zRGF0YSA9IGNoYW5nZXMuZm9ybXNEYXRhLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybXMoXCJPTl9DSEFOR0VcIik7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhcGlDYWxsUmVzcG9uc2VcIikpIHtcbiAgICAgIHRoaXMuYXBpQ2FsbFJlc3BvbnNlID0gY2hhbmdlcy5hcGlDYWxsUmVzcG9uc2UuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmZXRjaEZvcm1Db25maWcodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBtZXRob2Q6IFwiR0VUXCIgfSk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGluaXRpYWxpemVGb3JtcyhldmVudFR5cGU6IHN0cmluZykge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcblxuICAgIHRoaXMuYWxsRm9ybXNEYXRhID0gdGhpcy5mb3Jtc0RhdGE7XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUZvcm1zTGlzdCgpO1xuXG4gICAgaWYgKFxuICAgICAgZXZlbnRUeXBlID09PSBcIk9OX0NIQU5HRVwiICYmXG4gICAgICB0aGlzLmZpbmRGb3Jtc0xpc3RMZW5ndGgodGhpcy5mb3Jtc0xpc3QpID09PSAxXG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZU9uQ2xpY2tTdWJtaXRGb3JtcyhudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVSZXNpemUodGhpcy5mb3Jtc0xpc3QpO1xuXG4gICAgICBpZiAoaXNOb3RFbXB0eVZhbHVlKHRoaXMuYWN0aXZlRm9ybUNvbmZpZykpIHtcbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuYWN0aXZlRm9ybUNvbmZpZywgXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRm9ybUNvbmZpZy50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybSh0aGlzLmFjdGl2ZUZvcm1Db25maWcua2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybSh0aGlzLmFjdGl2ZUZvcm1Db25maWcua2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGNvbnZlcnRGb3JtTGlzdENvbmZpZyhmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBmb3Jtc0xpc3QubWFwKChmb3JtKSA9PiB7XG4gICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwidHlwZVwiKSkge1xuICAgICAgICBmb3JtLnR5cGUgPSBcImZvcm1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImZvcm1Db250ZW50XCIpKSB7XG4gICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcInByb3BzLnVybFwiLCBmb3JtLmZvcm1Db250ZW50LnVybCk7XG4gICAgICAgIGRlbGV0ZSBmb3JtW1wiZm9ybUNvbnRlbnRcIl1bXCJ1cmxcIl07XG4gICAgICB9XG4gICAgICBpZiAoaXNFbXB0eVZhbHVlKGZvcm0uZm9ybUNvbnRlbnQpKSB7XG4gICAgICAgIGRlbGV0ZSBmb3JtW1wiZm9ybUNvbnRlbnRcIl07XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJ0aXRsZVwiKSkge1xuICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZm9ybSwgXCJwcm9wcy50aXRsZVwiLCBmb3JtLnRpdGxlKTtcbiAgICAgICAgZGVsZXRlIGZvcm1bXCJ0aXRsZVwiXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE5PVEU6IFRvIGJlIGRlcHJlY2F0ZWQuXG4gICAqIFdoeSA/IFdpbGwgYmUgZGlyZWN0bHkgYXNzaWduZWQgd2hpbGUgZXhlY3V0aW5nICdjaGFrcmEnIGZvciBkZWZhdWx0IGZvcm0gY29uZmlnLlxuICAgKiBAcGFyYW0gZm9ybXNMaXN0IGFueVtdXG4gICAqIEBwYXJhbSBmb3Jtc0xpc3RDb21wbGV0ZWQgc3RyaW5nW11cbiAgICogQHJldHVybnMgYW55W11cbiAgICovXG4gIEBsb2dNZXRob2RcbiAgYXNzaWduU2VxdWVuY2VOb1RvRm9ybShmb3Jtc0xpc3Q6IGFueVtdKTogYW55W10ge1xuICAgIGxldCBzZXF1ZW5jZU5vID0gMTtcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4gJiYgZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIGZvcm0uc2VxdWVuY2VObyA9IHNlcXVlbmNlTm8rKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZm9ybVtcInNlcXVlbmNlTm9cIl07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybXNMaXN0O1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaW5kQ29tcGxldGVkRm9ybXNMaXN0KGFsbEZvcm1zRGF0YTogYW55KTogc3RyaW5nW10ge1xuICAgIGxldCBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdID0gW107XG5cbiAgICBPYmplY3Qua2V5cyhhbGxGb3Jtc0RhdGEpLm1hcCgoZm9ybUtleSkgPT4ge1xuICAgICAgZm9ybXNMaXN0Q29tcGxldGVkLnB1c2goZm9ybUtleSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm9ybXNMaXN0Q29tcGxldGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE5PVEU6IFRvIGJlIGRlcHJlY2F0ZWQuIFdoeSA/IFdpbGwgYmUgcmVwbGFjZWQgYnkgJ2NoYWtyYScuXG4gICAqIEBwYXJhbSBmb3Jtc0xpc3QgYW55W11cbiAgICogQHBhcmFtIGZvcm1zTGlzdENvbXBsZXRlZCBzdHJpbmdbXVxuICAgKiBAcmV0dXJucyBhbnlbXVxuICAgKi9cbiAgQGxvZ01ldGhvZFxuICBtYXJrRm9ybUluRm9ybXNMaXN0QXNDb21wbGV0ZWQoXG4gICAgZm9ybXNMaXN0OiBhbnlbXSxcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXG4gICk6IGFueVtdIHtcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4gJiYgZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIGlmIChmb3Jtc0xpc3RDb21wbGV0ZWQuaW5jbHVkZXMoZm9ybS5rZXkpKSB7XG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZm9ybSwgXCJzdGF0dXNcIiwgXCJjb21wbGV0ZWRcIik7XG4gICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZm9ybSwgXCJkaXNhYmxlZFwiLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1zTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBOT1RFOiBUbyBiZSBkZXByZWNhdGVkLiBXaHkgPyBXaWxsIGJlIHJlcGxhY2VkIGJ5ICdjaGFrcmEnLlxuICAgKiBAcGFyYW0gZm9ybXNMaXN0IGFueVtdXG4gICAqIEBwYXJhbSBmb3Jtc0xpc3RDb21wbGV0ZWQgc3RyaW5nW11cbiAgICogQHJldHVybnMgYW55W11cbiAgICovXG4gIEBsb2dNZXRob2RcbiAgbWFya0Zvcm1JbkZvcm1zTGlzdEFzRGlzYWJsZWQoXG4gICAgZm9ybXNMaXN0OiBhbnlbXSxcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXG4gICk6IGFueVtdIHtcbiAgICBmb3IgKGxldCBmb3JtIG9mIGZvcm1zTGlzdCkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4gJiYgZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIGlmIChmb3JtLnN0YXR1cyAhPT0gXCJjb21wbGV0ZWRcIikge1xuICAgICAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiZGVwZW5kZW50T25cIikpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNEZXBlbmRlbnQgPSBmb3JtLmRlcGVuZGVudE9uLmV2ZXJ5KChyOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgZm9ybXNMaXN0Q29tcGxldGVkLmluY2x1ZGVzKHIpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChpc0RlcGVuZGVudCkge1xuICAgICAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcInN0YXR1c1wiLCBcImVkaXRhYmxlXCIpO1xuICAgICAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZm9ybSwgXCJzdGF0dXNcIiwgXCJsb2NrZWRcIik7XG4gICAgICAgICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3RQYXRoKGZvcm0sIFwiZGlzYWJsZWRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcImRlcGVuZGVudE9uXCIsIFtdKTtcbiAgICAgICAgICAgICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3RQYXRoKGZvcm0sIFwic3RhdHVzXCIsIFwiZWRpdGFibGVcIik7XG4gICAgICAgICAgICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybXNMaXN0O1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaWx0ZXJBbGxGb3Jtc0RhdGEoYWxsRm9ybXNEYXRhOiBhbnksIGZvcm1zTGlzdDogYW55W10pOiBhbnkge1xuICAgIGxldCBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGE6IGFueSA9IHt9O1xuXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJoaWRkZW5cIikgJiZcbiAgICAgICAgIWZvcm0uaGlkZGVuICYmXG4gICAgICAgIGZvcm0udHlwZSA9PT0gXCJmb3JtXCJcbiAgICAgICkge1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYWxsRm9ybXNEYXRhLCBmb3JtLmtleSkpIHtcbiAgICAgICAgICBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGEgPSB7XG4gICAgICAgICAgICAuLi5jdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGEsXG4gICAgICAgICAgICBbZm9ybS5rZXldOiBhbGxGb3Jtc0RhdGFbZm9ybS5rZXldXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50VXNlckZvcm1BbGxGb3Jtc0RhdGE7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGNoZWNrSWZGb3Jtc1N0YXR1c0NvbXBsZXRlZChcbiAgICBmb3Jtc0xpc3Q6IGFueSxcbiAgICBmb3Jtc0xpc3RDb21wbGV0ZWQ6IHN0cmluZ1tdXG4gICk6IGFueSB7XG4gICAgbGV0IGFsbEZvcm1zQ29tcGxldGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvciAoY29uc3QgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICBpZiAoIWZvcm0uaGlkZGVuICYmIGZvcm0udHlwZSA9PT0gXCJmb3JtXCIpIHtcbiAgICAgICAgICBpZiAoZm9ybS5zdGF0dXMgIT09IFwiY29tcGxldGVkXCIpIHtcbiAgICAgICAgICAgIGFsbEZvcm1zQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWxsRm9ybXNDb21wbGV0ZWQ7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZpbmRBY3RpdmVGb3JtQ29uZmlnKGZvcm1zTGlzdDogYW55W10pOiBhbnkge1xuICAgIGNvbnN0IGFjdGl2ZUZvcm1Db25maWcgPSBmb3Jtc0xpc3QuZmluZCgoZm9ybSkgPT4ge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgIGlmICghZm9ybS5oaWRkZW4gJiYgZm9ybS50eXBlID09PSBcImZvcm1cIikge1xuICAgICAgICAgIHJldHVybiBmb3JtLnN0YXR1cyA9PT0gXCJlZGl0YWJsZVwiICYmICFmb3JtLmRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGl2ZUZvcm1Db25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIHVwZGF0ZUZvcm1zTGlzdCgpIHtcbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuY29udmVydEZvcm1MaXN0Q29uZmlnKHRoaXMuZm9ybXNMaXN0KTtcblxuICAgIGZvciAobGV0IGZvcm0gb2YgdGhpcy5mb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJkZWZhdWx0XCIpICYmXG4gICAgICAgIGlzTm90RW1wdHlWYWx1ZShmb3JtLmRlZmF1bHQpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IGZvcm0uZGVmYXVsdC50cmlnZ2VycztcbiAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IGZvcm0uZGVmYXVsdC5ydWxlcztcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSBmb3JtLmRlZmF1bHQuYWN0aW9ucztcblxuICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywge1xuICAgICAgICAgIFVTRVJfQ09ORklHOiB0aGlzLnVzZXJDb25maWcsXG4gICAgICAgICAgRk9STVNfTElTVDogdGhpcy5mb3Jtc0xpc3QsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuYWxsRm9ybXNEYXRhXG4gICAgICAgIH0pLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBGT1JNU19MSVNUOiB0aGlzLmZvcm1zTGlzdCxcbiAgICAgICAgICAgICAgICBBTExfRk9STVNfREFUQTogdGhpcy5hbGxGb3Jtc0RhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy50YWtlQWN0aW9uLmJpbmQodGhpcylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICAgIGZvcm0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuYXNzaWduU2VxdWVuY2VOb1RvRm9ybSh0aGlzLmZvcm1zTGlzdCk7XG5cbiAgICAvKipcbiAgICAgKiBCZWxvdyBjb2RlIGlkZW50aWZpZXMgdGhlIGFsbEZvcm1zRGF0YSByZXF1aXJlZCBmb3IgdGhlIGN1cnJlbnQgVXNlciBGb3JtLlxuICAgICAqIFdoeT8gQmVjYXVzZSBhbGxGb3Jtc0RhdGEgd2lsbCBhY3R1YWxseSBjb250YWluIHRoZSB3aG9sZSBqb3VybmV5J3MgYWxsXG4gICAgICogcG9zc2libGUgVXNlciBGb3JtIHN0ZXBzLiBTbywgaXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGUgZm9ybSBkYXRhIHdoaWNoXG4gICAgICogdGhpcyBwYXJ0aWN1bGFyIFVzZXIgRm9ybSBvbmx5IGhhcyB0byBMT0NBTCBNRVRIT0QgVmFyaWFibGUuXG4gICAgICovXG4gICAgY29uc3QgY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhID0gdGhpcy5maWx0ZXJBbGxGb3Jtc0RhdGEoXG4gICAgICB0aGlzLmFsbEZvcm1zRGF0YSxcbiAgICAgIHRoaXMuZm9ybXNMaXN0XG4gICAgKTtcblxuICAgIHRoaXMuZm9ybXNMaXN0Q29tcGxldGVkID0gdGhpcy5maW5kQ29tcGxldGVkRm9ybXNMaXN0KFxuICAgICAgY3VycmVudFVzZXJGb3JtQWxsRm9ybXNEYXRhXG4gICAgKTtcblxuICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy5tYXJrRm9ybUluRm9ybXNMaXN0QXNDb21wbGV0ZWQoXG4gICAgICB0aGlzLmZvcm1zTGlzdCxcbiAgICAgIHRoaXMuZm9ybXNMaXN0Q29tcGxldGVkXG4gICAgKTtcblxuICAgIHRoaXMuZm9ybXNMaXN0ID0gdGhpcy5tYXJrRm9ybUluRm9ybXNMaXN0QXNEaXNhYmxlZChcbiAgICAgIHRoaXMuZm9ybXNMaXN0LFxuICAgICAgdGhpcy5mb3Jtc0xpc3RDb21wbGV0ZWRcbiAgICApO1xuXG4gICAgdGhpcy5mb3Jtc0xpc3QgPSBjbG9uZURlZXAodGhpcy5mb3Jtc0xpc3QpO1xuXG4gICAgdGhpcy5hY3RpdmVGb3JtQ29uZmlnID0gdGhpcy5maW5kQWN0aXZlRm9ybUNvbmZpZyh0aGlzLmZvcm1zTGlzdCk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGZvcm1IaWRlKGZvcm1LZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBmb3JtID0gZ2V0Rm9ybUNvbmZpZ0J5S2V5KHRoaXMuZm9ybXNMaXN0LCBmb3JtS2V5KTtcblxuICAgIGZvcm0gPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmb3JtLCBcImhpZGRlblwiLCB0cnVlKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZm9ybVNob3coZm9ybUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGZvcm0gPSBnZXRGb3JtQ29uZmlnQnlLZXkodGhpcy5mb3Jtc0xpc3QsIGZvcm1LZXkpO1xuXG4gICAgZm9ybSA9IHNldFZhbHVlVG9PYmplY3RQYXRoKGZvcm0sIFwiaGlkZGVuXCIsIGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIHRha2VBY3Rpb24oYWN0aW9uOiBhbnksIG9iamVjdDogYW55KSB7XG4gICAgc3dpdGNoIChhY3Rpb24ua2V5KSB7XG4gICAgICBjYXNlIEVSZW5kZXJlckFjdGlvbktleS5GT1JNX0hJREU6XG4gICAgICAgIHRoaXMuZm9ybUhpZGUoYWN0aW9uLnByb3BzLmZvcm1LZXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRVJlbmRlcmVyQWN0aW9uS2V5LkZPUk1fU0hPVzpcbiAgICAgICAgdGhpcy5mb3JtU2hvdyhhY3Rpb24ucHJvcHMuZm9ybUtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFQWN0aW9uS2V5LlNFVF9WQUxVRTpcbiAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2Uoe1xuICAgICAgICAgIFVTRVJfQ09ORklHOiB0aGlzLnVzZXJDb25maWcsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuZm9ybXNEYXRhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNvdXJjZVZhbHVlID0gYXdhaXQgc291cmNlcy5nZXRWYWx1ZUZyb21Tb3VyY2UoXG4gICAgICAgICAgYWN0aW9uLnByb3BzLnZhbHVlLnNvdXJjZVxuICAgICAgICApO1xuICAgICAgICBzb3VyY2VzLnNldFZhbHVlVG9Tb3VyY2UoYWN0aW9uLnByb3BzLnZhbHVlLmRlc3RpbmF0aW9uLCBzb3VyY2VWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy51c2VyQ29uZmlnID0gc291cmNlcy5vYmplY3QuVVNFUl9DT05GSUc7XG4gICAgICAgIHRoaXMuZm9ybXNEYXRhID0gc291cmNlcy5vYmplY3QuQUxMX0ZPUk1TX0RBVEE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBmaW5kRm9ybXNMaXN0TGVuZ3RoKGZvcm1zTGlzdDogYW55W10pOiBudW1iZXIge1xuICAgIGNvbnN0IF9mb3Jtc0xpc3QgPSBmb3Jtc0xpc3QuZmlsdGVyKChmb3JtKSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybSwgXCJ0eXBlXCIpKSB7XG4gICAgICAgIGlmIChmb3JtLnR5cGUgPT09IFwiZm9ybVwiKSB7XG4gICAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm0sIFwiaGlkZGVuXCIpKSB7XG4gICAgICAgICAgICBpZiAoIWZvcm0uaGlkZGVuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtLCBcImhpZGRlblwiKSkge1xuICAgICAgICBpZiAoIWZvcm0uaGlkZGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfZm9ybXNMaXN0Lmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWJyYXJ5IEV2ZW50IExpc3RlbmVyc1xuICAgKi9cblxuICAvKipcbiAgICogRm9ybUxpc3QgLSBMaXN0ZW5zIHRvIGV2ZW50IG9mIG9wZW5pbmcgdGhlIEZvcm1WaWV3IG9mIHdoZW4gYW55IGZvcm0gaXMgY2xpY2tlZCBpbiBGb3JtTGlzdFxuICAgKiBAcGFyYW0gc2VsZWN0ZWRGb3JtIHN0cmluZ1xuICAgKi9cbiAgQGxvZ01ldGhvZFxuICBhc3luYyBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShzZWxlY3RlZEZvcm06IHN0cmluZykge1xuICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG5cbiAgICBjb25zdCBhY3RpdmVGb3JtQ29uZmlnID0gdGhpcy5mb3Jtc0xpc3QuZmluZCgoZm9ybSkgPT4ge1xuICAgICAgaWYgKGZvcm0ua2V5ID09PSBzZWxlY3RlZEZvcm0pIHtcbiAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgZm9ybUNvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLCBcInByb3BzXCIpKSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYWN0aXZlRm9ybUNvbmZpZy5wcm9wcywgXCJ1cmxcIikpIHtcbiAgICAgICAgY29uc3QgZm9ybUNvbmZpZ0Zyb21VcmwgPSBhd2FpdCB0aGlzLmZldGNoRm9ybUNvbmZpZyhcbiAgICAgICAgICBhY3RpdmVGb3JtQ29uZmlnLnByb3BzLnVybFxuICAgICAgICApO1xuICAgICAgICBmb3JtQ29uZmlnID0ge1xuICAgICAgICAgIC4uLmFjdGl2ZUZvcm1Db25maWcsXG4gICAgICAgICAgLi4uZm9ybUNvbmZpZ0Zyb21VcmxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLCBcImZpZWxkc1wiKSkge1xuICAgICAgICAgIGZvcm1Db25maWcgPSBhY3RpdmVGb3JtQ29uZmlnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJObyB1cmwgb3IgZmllbGRzIGtleSBpbiBhY3RpdmVGb3JtQ29uZmlnXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLmZvcm1Db250ZW50LCBcInVybFwiKSkge1xuICAgICAgICBjb25zdCBmb3JtQ29uZmlnRnJvbVVybCA9IGF3YWl0IHRoaXMuZmV0Y2hGb3JtQ29uZmlnKFxuICAgICAgICAgIGFjdGl2ZUZvcm1Db25maWcuZm9ybUNvbnRlbnQudXJsXG4gICAgICAgICk7XG4gICAgICAgIGZvcm1Db25maWcgPSB7XG4gICAgICAgICAgLi4uYWN0aXZlRm9ybUNvbmZpZyxcbiAgICAgICAgICAuLi5mb3JtQ29uZmlnRnJvbVVybFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFjdGl2ZUZvcm1Db25maWcsIFwiZmllbGRzXCIpKSB7XG4gICAgICAgICAgZm9ybUNvbmZpZyA9IGFjdGl2ZUZvcm1Db25maWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIk5vIHVybCBvciBmaWVsZHMga2V5IGluIGFjdGl2ZUZvcm1Db25maWdcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc29sZS5sb2coSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmb3JtQ29uZmlnKSkpO1xuXG4gICAgZm9ybUNvbmZpZyA9IG5ldyBDb252ZXJ0ZXIoKS51cGRhdGVGb3JtQ29uZmlnTWlzY2VsbGFuZW91cyhmb3JtQ29uZmlnLCB7XG4gICAgICBmb3Jtc0xpc3RMZW5ndGg6IHRoaXMuZmluZEZvcm1zTGlzdExlbmd0aCh0aGlzLmZvcm1zTGlzdClcbiAgICB9KTtcblxuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IHtcbiAgICAgIC4uLmFjdGl2ZUZvcm1Db25maWcsXG4gICAgICAuLi5mb3JtQ29uZmlnXG4gICAgfTtcblxuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZztcblxuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPj0gNjAwKSB7XG4gICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93Rm9ybSA9IHRydWU7XG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtVmlldyAtIExpc3RlbnMgdG8gZXZlbnQgb2YgZXhlY3V0aW5nIGFuIEFQSSBjYWxsIGZyb20gd2l0aGluIHRoZSBGb3JtVmlldyBhbmQgZW1pdHMgKHJlYWQgYXMgcGFzc2VzKSB0aGUgc2FtZSBldmVudCB0byB0aGUgbGlicmFyeSBjb25zdW1lci5cbiAgICogQHBhcmFtIGUgYW55XG4gICAqL1xuICBoYW5kbGVPbkNsaWNrQXBpQ2FsbChlOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5vbkNsaWNrQXBpQ2FsbC5lbWl0KGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1WaWV3IC0gTGlzdGVucyB0byBldmVudCBvZiBnZXR0aW5nIHRoZSBBY3RpdmUgRm9ybSdzIERhdGEgd2hlbiB0aGUgRm9ybSBpcyBTYXZlZCBhbmQgZW1pdHMgKHJlYWQgYXMgcGFzc2VzKSB0aGUgc2FtZSBldmVudCB0byB0aGUgbGlicmFyeSBjb25zdW1lci5cbiAgICogQHBhcmFtIGUgYW55XG4gICAqL1xuICBoYW5kbGVPbkNsaWNrU2F2ZUZvcm0oZTogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuXG4gICAgdGhpcy5nZXRGb3JtRGF0YS5lbWl0KHtcbiAgICAgIFt0aGlzLmFjdGl2ZUZvcm1Db25maWcua2V5XTogZVtcImRhdGFcIl1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtVmlldyAtIExpc3RlbnMgdG8gZXZlbnQgb2Ygc2hvd2luZyB0aGUgRm9ybXMgTGlzdCBpbiBNb2JpbGUgVmlldy5cbiAgICogQHBhcmFtIGUgYW55XG4gICAqL1xuICBoYW5kbGVPbkNsaWNrVmlld0Zvcm1zKGU6IGFueSkge1xuICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XG4gICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtTGlzdCAtIExpc3RlbnMgdG8gZXZlbnQgb2Ygc3VibWl0dGluZyBhbGwgdGhlIGZvcm1zIGFuZCBtb3Zpbmcgb3V0IG9mIHRoZSBsaWJyYXJ5IGFuZCBhbHNvIGhhbmRsZXMgdGhlIHZhbGlkYXRpb24gb2YgYWxsIHRoZSBmb3Jtcy5cbiAgICogQHBhcmFtIGUgYW55XG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGhhbmRsZU9uQ2xpY2tTdWJtaXRGb3JtcyhlOiBhbnkpIHtcbiAgICBjb25zdCBmb3Jtc0xpc3Q6IGFueVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1zTGlzdCkpO1xuXG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtc0xpc3QpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWZvcm0uaGlkZGVuICYmXG4gICAgICAgIGZvcm0ucmVxdWlyZWQgJiZcbiAgICAgICAgZm9ybS5zdGF0dXMgIT09IEVGb3Jtc0xpc3RTdGF0dXMuQ09NUExFVEVEXG4gICAgICApIHtcbiAgICAgICAgdGhpcy50b2dnbGVFcnJvck5vdGlmaWNhdGlvbih0cnVlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGVFcnJvck5vdGlmaWNhdGlvbihmYWxzZSk7XG4gICAgICAgIH0sIDMwMDApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vbkNsaWNrU3VibWl0LmVtaXQoZSk7XG4gIH1cblxuICAvKipcbiAgICogTWlzY2VsbGFuZW91cyBNZXRob2RzXG4gICAqL1xuICBoYW5kbGVSZXNpemUoZm9ybXNMaXN0OiBhbnlbXSkge1xuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIGNvbnN0IGlzU2luZ2xlRm9ybSA9IChmb3Jtc0xpc3Q6IGFueVtdKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiBmb3Jtc0xpc3QubGVuZ3RoID09PSAxO1xuICAgICAgfTtcbiAgICAgIGlmICghaXNTaW5nbGVGb3JtKGZvcm1zTGlzdCkpIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dGb3JtID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgbmdDbGFzcz1cImt3aWtpZC1yZW5kZXJlclwiPlxuICA8ZGl2XG4gICAgbmdDbGFzcz1cImt3aWtpZC1sYXlvdXQtY29udGFpbmVyXCJcbiAgICAqbmdJZj1cIiFsb2FkaW5nXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIG5nQ2xhc3M9XCJrd2lraWQtc2VjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICpuZ0lmPVwic2hvd0Zvcm1TZWN0aW9uc1wiXG4gICAgICBjbGFzcz1cImFjdGl2ZVwiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGb3JtU2VjdGlvbnNcIlxuICAgICAgW2NsYXNzLm1vYmlsZV09XCJpc01vYmlsZVZpZXdcIlxuICAgID5cbiAgICAgIDxrd2lraWQtZm9ybXMtbGlzdFxuICAgICAgICBbc2hvd0Zvcm1GaWVsZHNdPVwidGhpcy5zaG93Rm9ybUZpZWxkc1wiXG4gICAgICAgIFthY3RpdmVGb3JtQ29uZmlnXT1cInRoaXMuYWN0aXZlRm9ybUNvbmZpZ1wiXG4gICAgICAgIFt1c2VyQ29uZmlnXT1cInRoaXMudXNlckNvbmZpZ1wiXG4gICAgICAgIFtmb3Jtc0xpc3RdPVwidGhpcy5mb3Jtc0xpc3RcIlxuICAgICAgICBbc3RlcENvbmZpZ109XCJ0aGlzLnN0ZXBDb25maWdcIlxuICAgICAgICBbZm9ybXNMaXN0Q29tcGxldGVkXT1cInRoaXMuZm9ybXNMaXN0Q29tcGxldGVkXCJcbiAgICAgICAgW2lzTW9iaWxlVmlld109XCJ0aGlzLmlzTW9iaWxlVmlld1wiXG4gICAgICAgIChvbkNsaWNrU2V0QWN0aXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKCRldmVudClcIlxuICAgICAgICAob25DbGlja1N1Ym1pdEZvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1N1Ym1pdEZvcm1zKCRldmVudClcIlxuICAgICAgPjwva3dpa2lkLWZvcm1zLWxpc3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgbmdDbGFzcz1cImt3aWtpZC1mb3Jtcy1jb250YWluZXJcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgdGhpcy5zaG93Rm9ybSAmJlxuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzICYmXG4gICAgICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyAhPT0gdW5kZWZpbmVkXG4gICAgICBcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93Rm9ybUZpZWxkc1wiXG4gICAgICBbY2xhc3MubW9iaWxlXT1cImlzTW9iaWxlVmlld1wiXG4gICAgICBbQHBhbmVsSW5PdXRdXG4gICAgPlxuICAgICAgPGt3aWtpZC1mb3JtLXZpZXdcbiAgICAgICAgW2Zvcm1Db25maWddPVwidGhpcy5hY3RpdmVGb3JtQ29uZmlnXCJcbiAgICAgICAgW2FsbEZvcm1zRGF0YV09XCJ0aGlzLmFsbEZvcm1zRGF0YVwiXG4gICAgICAgIFtpc01vYmlsZVZpZXddPVwidGhpcy5pc01vYmlsZVZpZXdcIlxuICAgICAgICAob25DbGlja1ZpZXdGb3Jtcyk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tWaWV3Rm9ybXMoJGV2ZW50KVwiXG4gICAgICAgIChvbkNsaWNrU2F2ZUZvcm0pPVwidGhpcy5oYW5kbGVPbkNsaWNrU2F2ZUZvcm0oJGV2ZW50KVwiXG4gICAgICA+PC9rd2lraWQtZm9ybS12aWV3PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICBuZ0NsYXNzPVwia3dpa2lkLWZvcm1zLXJlbmRlcmVyLWxvYWRlclwiXG4gICpuZ0lmPVwibG9hZGVyXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XG48L2Rpdj5cbjx0dWktcHVzaFxuICBpZD1cImVycm9yLW5vdGlmaWNhdGlvblwiXG4gICp0dWlQdXNoPVwic2hvd0Vycm9yTm90aWZpY2F0aW9uXCJcbiAgaGVhZGluZz1cIlBsZWFzZSBjb21wbGV0ZSB0aGUgcmVxdWlyZWQgRm9ybXMhXCJcbiAgdHlwZT1cIkVycm9yXCJcbiAgKGNsb3NlKT1cInRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKGZhbHNlKVwiXG4+XG4gIDx0dWktc3ZnXG4gICAgc3JjPVwidHVpSWNvblhDaXJjbGVcIlxuICAgIHN0eWxlPVwiY29sb3I6ICNmZmYgIWltcG9ydGFudFwiXG4gID5cbiAgPC90dWktc3ZnPlxuPC90dWktcHVzaD5cbiJdfQ==
|