ets-fe-ng-sdk 18.0.17 → 18.0.19

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.
Files changed (25) hide show
  1. package/esm2022/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.mjs +8 -2
  2. package/esm2022/lib/Shared/components/input/input-base.component.mjs +16 -13
  3. package/esm2022/lib/Shared/components/input/input-basic.component.mjs +6 -6
  4. package/esm2022/lib/Shared/components/input/input.service.mjs +46 -40
  5. package/esm2022/lib/Shared/components/input/inputs-pipes.pipe.mjs +2 -4
  6. package/esm2022/lib/Shared/components/input-NgModel/input-ngmodel.component.mjs +23 -8
  7. package/esm2022/lib/Shared/components/table-plain/table-base.component.mjs +4 -3
  8. package/esm2022/lib/Shared/components/toggle-input-form/toggle-input-form.component.mjs +82 -49
  9. package/esm2022/lib/Shared/components/toggle-input-form/toggle-input-form.model.mjs +1 -1
  10. package/esm2022/lib/Shared/models/index.model.mjs +1 -1
  11. package/esm2022/lib/Shared/pipes/utility.pipe.mjs +17 -7
  12. package/esm2022/public-api.mjs +2 -1
  13. package/fesm2022/ets-fe-ng-sdk.mjs +188 -116
  14. package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
  15. package/lib/Shared/components/btn/btn.component.d.ts +3 -3
  16. package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
  17. package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
  18. package/lib/Shared/components/input/input-base.component.d.ts +8 -6
  19. package/lib/Shared/components/input/input.service.d.ts +7 -1
  20. package/lib/Shared/components/input/inputs-pipes.pipe.d.ts +7 -1
  21. package/lib/Shared/components/toggle-input-form/toggle-input-form.component.d.ts +29 -15
  22. package/lib/Shared/components/toggle-input-form/toggle-input-form.model.d.ts +2 -1
  23. package/lib/Shared/models/index.model.d.ts +6 -2
  24. package/package.json +1 -1
  25. package/public-api.d.ts +1 -0
@@ -16,7 +16,13 @@ import * as i1 from "../../input/input.service";
16
16
  import * as i2 from "@angular/forms";
17
17
  export class ListOptionFinderPipe {
18
18
  transform(value, options, valueField, labelField, labelType, optionFormatter) {
19
- const formattedOptions = this.iS.optionsFormatter(options, valueField, optionFormatter, labelType, labelField, false);
19
+ const formattedOptions = this.iS.optionsFormatter(options, {
20
+ valueField: valueField,
21
+ formatter: optionFormatter,
22
+ labelType: labelType,
23
+ labelField: labelField,
24
+ autoPickValueField: false,
25
+ });
20
26
  return formattedOptions?.find((x) => x.value == value)?.label;
21
27
  }
22
28
  constructor(iS) {
@@ -86,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
86
92
  ValueOrXPipe,
87
93
  ], providers: [ListOptionFinderPipe], template: "<loader [loading]=\"computedLoading()\">\n <form>\n <div\n class=\"row row-cols-{{ gridStyle() }} row-cols-md-{{ gridMDStyle() }} row-cols-lg-{{\n gridLGStyle()\n }} row-cols-xxl-{{ gridXXLStyle() }} align-items-center {{ formGridClass() }}\">\n @for (scheme of computedListValue(); track scheme.field) {\n <div class=\"col {{ scheme.cls }} \">\n @switch (true) {\n @case (scheme.type == 'tel') {\n <app-phone-number\n [form]=\"form()\"\n [label]=\"scheme.label\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n [showValidation]=\"scheme.showValidation\"\n [autoPickValueField]=\"scheme.autoPickValueField\"\n [showRequiredTag]=\"scheme.showRequiredTag\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"scheme.countryCode3\"\n #inputTag />\n } \n @default {\n <div class=\"\">\n <div class=\"text-primary\">\n {{ scheme.label }}\n </div>\n <div class=\" \">\n {{ scheme.formattedValue | valueOrX: '-' }}\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n </form>\n</loader>\n\n<ng-template #labelValue let-obj>\n <div class=\"\">\n <div class=\"text-primary\">\n {{ obj.scheme.label }}\n </div>\n <div class=\" \">\n {{ formatValue | functionCaller2: obj.scheme : obj.value | valueOrX: '-' }}\n </div>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep input:not([type=checkbox]),:host ::ng-deep .control-bg-gray.form-control,:host ::ng-deep textarea{border:none!important;background-color:transparent!important;padding:0!important;height:auto!important}\n"] }]
88
94
  }], ctorParameters: () => [] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0ZWQtdmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdGVkLXZhbHVlL2Zvcm0tZ2VuZXJhdGVkLXZhbHVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRlZC12YWx1ZS9mb3JtLWdlbmVyYXRlZC12YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEYsT0FBTyxFQUFtQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDekcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFtQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsZUFB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QUFFLGVBQWUsQ0FBQyxDQUFDO2lCQUM3RSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksZ0JBQWdCO2dCQUNwQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQWUsQ0FBQyxDQUFDO2lCQUN0RCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTztnQkFBRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQWUsQ0FBQyxDQUFDO2lCQUNyRixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDOztnQkFDbkYsT0FBTyxLQUFLLENBQUM7UUFDcEIsQ0FBQyxDQUFDO0lBbENGLENBQUM7OEdBUlUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsbUVBRjNCLENBQUMsb0JBQW9CLENBQUMsaURDckVuQyxpeURBb0RBLG9SRENJLFlBQVksOEJBQ1osV0FBVyxtZEFFWCxlQUFlLHdEQUdmLGVBQWUsdUhBR2Ysb0JBQW9CLHVJQUtwQixZQUFZOzsyRkFJSCwyQkFBMkI7a0JBM0J2QyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBSVA7d0JBQ1AscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLFNBQVM7d0JBQ1QsMEJBQTBCO3dCQUMxQixZQUFZO3FCQUNiLGFBQ1UsQ0FBQyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdTd2l0Y2hEZWZhdWx0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LCBJRm9ybVNjaGVtYSB9IGZyb20gJy4uL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCwgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi4vLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEZ1bmN0aW9uQ2FsbGVyMSxcbiAgRnVuY3Rpb25DYWxsZXIyLFxuICBTdHJDb25jYXRlbmF0b3JQaXBlLFxuICBUb0FueVBpcGUsXG4gIFZhbHVlT3JYUGlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFRleHRDYXNlMkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RleHQtY2FzZS0yL3RleHQtY2FzZS0yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnB1dC9pbnB1dC5zZXJ2aWNlJztcblxuQFBpcGUoeyBuYW1lOiAnbGlzdE9wdGlvbkZpbmRlcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBMaXN0T3B0aW9uRmluZGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7IHg6IHN0cmluZyB9W10sXG4gICAgdmFsdWVGaWVsZDogc3RyaW5nLFxuICAgIGxhYmVsRmllbGQ6IHN0cmluZyxcbiAgICBsYWJlbFR5cGU6IE9wdGlvbkxhYmVsVHlwZSxcbiAgICBvcHRpb25Gb3JtYXR0ZXI6IChpdGVtOiBhbnkpID0+IHN0cmluZyxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRPcHRpb25zID0gdGhpcy5pUy5vcHRpb25zRm9ybWF0dGVyKFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHZhbHVlRmllbGQsXG4gICAgICBvcHRpb25Gb3JtYXR0ZXIsXG4gICAgICBsYWJlbFR5cGUsXG4gICAgICBsYWJlbEZpZWxkLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgICByZXR1cm4gZm9ybWF0dGVkT3B0aW9ucz8uZmluZCgoeCkgPT4geC52YWx1ZSA9PSB2YWx1ZSk/LmxhYmVsO1xuICB9XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpUzogSW5wdXRTZXJ2aWNlKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLWdlbmVyYXRlZC12YWx1ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdlbmVyYXRlZC12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZ2VuZXJhdGVkLXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gIC8vICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMSxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBMaXN0T3B0aW9uRmluZGVyUGlwZSxcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgU3RyQ29uY2F0ZW5hdG9yUGlwZSxcbiAgICBUZXh0Q2FzZTJDb21wb25lbnQsXG4gICAgVG9BbnlQaXBlLFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICAgIFZhbHVlT3JYUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTGlzdE9wdGlvbkZpbmRlclBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtR2VuZXJhdGVkVmFsdWVDb21wb25lbnQ8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IGV4dGVuZHMgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPiB7XG4gIHB1YmxpYyBsaXN0T3B0aW9uRmluZGVyUGlwZSA9IGluamVjdChMaXN0T3B0aW9uRmluZGVyUGlwZSk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICByZWFkb25seSAgY29tcHV0ZWRMaXN0VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZnYgPSB0aGlzLmZvcm1WYWx1ZSgpIHx8IHt9LFxuICAgICAgb3B0aW9uc01hcCA9IHRoaXMub3B0aW9uc01hcCgpO1xuICAgIHJldHVybiB0aGlzLmNvbXB1dGVkRm9ybVNjaGVtYSgpLm1hcCgoZikgPT4gKHtcbiAgICAgIC4uLmYsXG4gICAgICBmb3JtYXR0ZWRWYWx1ZTpcbiAgICAgICAgZi50eXBlID09ICdhdXRvY29tcGxldGUnXG4gICAgICAgICAgPyB0aGlzLmxpc3RPcHRpb25GaW5kZXJQaXBlLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgZnZbZi5maWVsZCBhcyBhbnldLFxuICAgICAgICAgICAgICBmLm9wdGlvbnMgfHwgb3B0aW9uc01hcFtmLmZpZWxkIGFzIHN0cmluZ10sXG4gICAgICAgICAgICAgIGYudmFsdWVGaWVsZCxcbiAgICAgICAgICAgICAgZi5sYWJlbEZpZWxkLFxuICAgICAgICAgICAgICBmLmxhYmVsVHlwZSxcbiAgICAgICAgICAgICAgZi5vcHRpb25Gb3JtYXR0ZXIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiB0aGlzLmZvcm1hdFZhbHVlKGYsIGZ2W2YuZmllbGQgYXMgYW55XSksXG4gICAgfSkpO1xuICB9KTtcbiAgZm9ybWF0VmFsdWUgPSAoXG4gICAgaXRlbTogSUZvcm1TY2hlbWEsXG4gICAgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIsXG4gICk6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgPT4ge1xuICAgIGlmIChpdGVtLmZvcm1hdHRlcikgcmV0dXJuIGl0ZW0uZm9ybWF0dGVyKHRoaXMuZm9ybVZhbHVlKCkgYXMgYW55LCBpdGVtLmZpZWxkKTtcbiAgICBlbHNlIGlmIChpdGVtLm5vRm9ybWF0KSByZXR1cm4gdmFsdWU7XG4gICAgZWxzZSBpZiAoaXRlbS50eXBlID09ICdjaGVja2JveCcgfHwgaXRlbS50eXBlID09ICdjaGVja2VkYm94JykgcmV0dXJuIHZhbHVlID8gJ1llcycgOiAnTm8nO1xuICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZScpXG4gICAgICByZXR1cm4gdGhpcy51dGlsaXR5U2VydmljZS5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUgYXMgc3RyaW5nLCAnRUUsIE1NTU0gZCwgeScpO1xuICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZXRpbWUtbG9jYWwnKVxuICAgICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZnVsbERhdGVUaW1lKHZhbHVlIGFzIHN0cmluZyk7XG4gICAgZWxzZSBpZiAoaXRlbS5zdWJUeXBlID09ICdtb25leScpIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLm1vbmV5UGFyc2VyKHZhbHVlIGFzIHN0cmluZyk7XG4gICAgZWxzZSBpZiAoaXRlbS50eXBlID09ICdudW1iZXInKSByZXR1cm4gdGhpcy51dGlsaXR5U2VydmljZS5udW1iZXJQaXBlLnRyYW5zZm9ybSgrdmFsdWUpO1xuICAgIGVsc2UgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJjb21wdXRlZExvYWRpbmcoKVwiPlxuICA8Zm9ybT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJvdyByb3ctY29scy17eyBncmlkU3R5bGUoKSB9fSByb3ctY29scy1tZC17eyBncmlkTURTdHlsZSgpIH19IHJvdy1jb2xzLWxnLXt7XG4gICAgICAgIGdyaWRMR1N0eWxlKClcbiAgICAgIH19IHJvdy1jb2xzLXh4bC17eyBncmlkWFhMU3R5bGUoKSB9fSBhbGlnbi1pdGVtcy1jZW50ZXIge3sgZm9ybUdyaWRDbGFzcygpIH19XCI+XG4gICAgICBAZm9yIChzY2hlbWUgb2YgY29tcHV0ZWRMaXN0VmFsdWUoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgc2NoZW1lLmNscyB9fSBcIj5cbiAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvblwiXG4gICAgICAgICAgICAgICAgW2NvdW50cnlDb2RlM109XCJzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICB7eyBzY2hlbWUubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIFwiPlxuICAgICAgICAgICAgICAgICAge3sgc2NoZW1lLmZvcm1hdHRlZFZhbHVlIHwgdmFsdWVPclg6ICctJyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2xvYWRlcj5cblxuPG5nLXRlbXBsYXRlICNsYWJlbFZhbHVlIGxldC1vYmo+XG4gIDxkaXYgY2xhc3M9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+XG4gICAgICB7eyBvYmouc2NoZW1lLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIiBcIj5cbiAgICAgIHt7IGZvcm1hdFZhbHVlIHwgZnVuY3Rpb25DYWxsZXIyOiBvYmouc2NoZW1lIDogb2JqLnZhbHVlIHwgdmFsdWVPclg6ICctJyB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0ZWQtdmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdGVkLXZhbHVlL2Zvcm0tZ2VuZXJhdGVkLXZhbHVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRlZC12YWx1ZS9mb3JtLWdlbmVyYXRlZC12YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEYsT0FBTyxFQUFtQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDekcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFtQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsZUFB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ZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdTd2l0Y2hEZWZhdWx0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LCBJRm9ybVNjaGVtYSB9IGZyb20gJy4uL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCwgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi4vLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEZ1bmN0aW9uQ2FsbGVyMSxcbiAgRnVuY3Rpb25DYWxsZXIyLFxuICBTdHJDb25jYXRlbmF0b3JQaXBlLFxuICBUb0FueVBpcGUsXG4gIFZhbHVlT3JYUGlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFRleHRDYXNlMkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RleHQtY2FzZS0yL3RleHQtY2FzZS0yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnB1dC9pbnB1dC5zZXJ2aWNlJztcblxuQFBpcGUoeyBuYW1lOiAnbGlzdE9wdGlvbkZpbmRlcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBMaXN0T3B0aW9uRmluZGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7IHg6IHN0cmluZyB9W10sXG4gICAgdmFsdWVGaWVsZDogc3RyaW5nLFxuICAgIGxhYmVsRmllbGQ6IHN0cmluZyxcbiAgICBsYWJlbFR5cGU6IE9wdGlvbkxhYmVsVHlwZSxcbiAgICBvcHRpb25Gb3JtYXR0ZXI6IChpdGVtOiBhbnkpID0+IHN0cmluZyxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRPcHRpb25zID0gdGhpcy5pUy5vcHRpb25zRm9ybWF0dGVyKG9wdGlvbnMsIHtcbiAgICAgIHZhbHVlRmllbGQ6IHZhbHVlRmllbGQgYXMgYW55LFxuICAgICAgZm9ybWF0dGVyOiBvcHRpb25Gb3JtYXR0ZXIsXG4gICAgICBsYWJlbFR5cGU6IGxhYmVsVHlwZSxcbiAgICAgIGxhYmVsRmllbGQ6IGxhYmVsRmllbGQgYXMgYW55LFxuICAgICAgIGF1dG9QaWNrVmFsdWVGaWVsZDogZmFsc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1hdHRlZE9wdGlvbnM/LmZpbmQoKHgpID0+IHgudmFsdWUgPT0gdmFsdWUpPy5sYWJlbDtcbiAgfVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaVM6IElucHV0U2VydmljZSkge31cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1nZW5lcmF0ZWQtdmFsdWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1nZW5lcmF0ZWQtdmFsdWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWdlbmVyYXRlZC12YWx1ZS5jb21wb25lbnQuc2NzcyddLFxuICAvLyAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGdW5jdGlvbkNhbGxlcjEsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgTGlzdE9wdGlvbkZpbmRlclBpcGUsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFN0ckNvbmNhdGVuYXRvclBpcGUsXG4gICAgVGV4dENhc2UyQ29tcG9uZW50LFxuICAgIFRvQW55UGlwZSxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBWYWx1ZU9yWFBpcGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW0xpc3RPcHRpb25GaW5kZXJQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUdlbmVyYXRlZFZhbHVlQ29tcG9uZW50PFxuICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgIFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICB9ID0gYW55LFxuPiBleHRlbmRzIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cD4ge1xuICBwdWJsaWMgbGlzdE9wdGlvbkZpbmRlclBpcGUgPSBpbmplY3QoTGlzdE9wdGlvbkZpbmRlclBpcGUpO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRMaXN0VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZnYgPSB0aGlzLmZvcm1WYWx1ZSgpIHx8IHt9LFxuICAgICAgb3B0aW9uc01hcCA9IHRoaXMub3B0aW9uc01hcCgpO1xuICAgIHJldHVybiB0aGlzLmNvbXB1dGVkRm9ybVNjaGVtYSgpLm1hcCgoZikgPT4gKHtcbiAgICAgIC4uLmYsXG4gICAgICBmb3JtYXR0ZWRWYWx1ZTpcbiAgICAgICAgZi50eXBlID09ICdhdXRvY29tcGxldGUnXG4gICAgICAgICAgPyB0aGlzLmxpc3RPcHRpb25GaW5kZXJQaXBlLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgZnZbZi5maWVsZCBhcyBhbnldLFxuICAgICAgICAgICAgICBmLm9wdGlvbnMgfHwgb3B0aW9uc01hcFtmLmZpZWxkIGFzIHN0cmluZ10sXG4gICAgICAgICAgICAgIGYudmFsdWVGaWVsZCxcbiAgICAgICAgICAgICAgZi5sYWJlbEZpZWxkLFxuICAgICAgICAgICAgICBmLmxhYmVsVHlwZSxcbiAgICAgICAgICAgICAgZi5vcHRpb25Gb3JtYXR0ZXIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiB0aGlzLmZvcm1hdFZhbHVlKGYsIGZ2W2YuZmllbGQgYXMgYW55XSksXG4gICAgfSkpO1xuICB9KTtcbiAgZm9ybWF0VmFsdWUgPSAoXG4gICAgaXRlbTogSUZvcm1TY2hlbWEsXG4gICAgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIsXG4gICk6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgPT4ge1xuICAgIGlmIChpdGVtLmZvcm1hdHRlcikgcmV0dXJuIGl0ZW0uZm9ybWF0dGVyKHRoaXMuZm9ybVZhbHVlKCkgYXMgYW55LCBpdGVtLmZpZWxkKTtcbiAgICBlbHNlIGlmIChpdGVtLm5vRm9ybWF0KSByZXR1cm4gdmFsdWU7XG4gICAgZWxzZSBpZiAoaXRlbS50eXBlID09ICdjaGVja2JveCcgfHwgaXRlbS50eXBlID09ICdjaGVja2VkYm94JykgcmV0dXJuIHZhbHVlID8gJ1llcycgOiAnTm8nO1xuICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZScpXG4gICAgICByZXR1cm4gdGhpcy51dGlsaXR5U2VydmljZS5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUgYXMgc3RyaW5nLCAnRUUsIE1NTU0gZCwgeScpO1xuICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZXRpbWUtbG9jYWwnKVxuICAgICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZnVsbERhdGVUaW1lKHZhbHVlIGFzIHN0cmluZyk7XG4gICAgZWxzZSBpZiAoaXRlbS5zdWJUeXBlID09ICdtb25leScpIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLm1vbmV5UGFyc2VyKHZhbHVlIGFzIHN0cmluZyk7XG4gICAgZWxzZSBpZiAoaXRlbS50eXBlID09ICdudW1iZXInKSByZXR1cm4gdGhpcy51dGlsaXR5U2VydmljZS5udW1iZXJQaXBlLnRyYW5zZm9ybSgrdmFsdWUpO1xuICAgIGVsc2UgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJjb21wdXRlZExvYWRpbmcoKVwiPlxuICA8Zm9ybT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJvdyByb3ctY29scy17eyBncmlkU3R5bGUoKSB9fSByb3ctY29scy1tZC17eyBncmlkTURTdHlsZSgpIH19IHJvdy1jb2xzLWxnLXt7XG4gICAgICAgIGdyaWRMR1N0eWxlKClcbiAgICAgIH19IHJvdy1jb2xzLXh4bC17eyBncmlkWFhMU3R5bGUoKSB9fSBhbGlnbi1pdGVtcy1jZW50ZXIge3sgZm9ybUdyaWRDbGFzcygpIH19XCI+XG4gICAgICBAZm9yIChzY2hlbWUgb2YgY29tcHV0ZWRMaXN0VmFsdWUoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgc2NoZW1lLmNscyB9fSBcIj5cbiAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvblwiXG4gICAgICAgICAgICAgICAgW2NvdW50cnlDb2RlM109XCJzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICB7eyBzY2hlbWUubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIFwiPlxuICAgICAgICAgICAgICAgICAge3sgc2NoZW1lLmZvcm1hdHRlZFZhbHVlIHwgdmFsdWVPclg6ICctJyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2xvYWRlcj5cblxuPG5nLXRlbXBsYXRlICNsYWJlbFZhbHVlIGxldC1vYmo+XG4gIDxkaXYgY2xhc3M9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+XG4gICAgICB7eyBvYmouc2NoZW1lLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIiBcIj5cbiAgICAgIHt7IGZvcm1hdFZhbHVlIHwgZnVuY3Rpb25DYWxsZXIyOiBvYmouc2NoZW1lIDogb2JqLnZhbHVlIHwgdmFsdWVPclg6ICctJyB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -71,8 +71,15 @@ export class InputBase {
71
71
  });
72
72
  /** FormGroup */
73
73
  this.form = model();
74
+ this.autoPickValueField = input();
75
+ this.labelField = model();
76
+ /**use this to pick a preset value label group for the options */
77
+ this.labelType = model();
78
+ this.optionFormatter = input();
74
79
  /** FormControlName */
75
80
  this.name = model();
81
+ /**use this to choose a field in the option for modeling */
82
+ this.valueField = model();
76
83
  this.prefixSignal = model(null, { alias: 'prefix' });
77
84
  this.miniSignal = model(null, { alias: 'mini' });
78
85
  this.inpClSignal = model('control-bg-gray', { alias: 'inpCl' });
@@ -190,7 +197,13 @@ export class InputBase {
190
197
  this.coloredSignal = input(true, { alias: 'colored' });
191
198
  this.checkedSignal = input(false); //optional checked option for checkboxes
192
199
  this.rawOptionsSignal = signal([]);
193
- this.options = computed(() => this.iS.optionsFormatter(this.rawOptionsSignal(), this.valueField, this.optionFormatter, this.labelType, this.labelField, this.autoPickValueField));
200
+ this.options = computed(() => this.iS.optionsFormatter(this.rawOptionsSignal(), {
201
+ valueField: this.valueField(),
202
+ formatter: this.optionFormatter(),
203
+ labelType: this.labelType(),
204
+ labelField: this.labelField(),
205
+ autoPickValueField: this.autoPickValueField(),
206
+ }));
194
207
  this.optionsMap = computed(() => {
195
208
  const options = this.options();
196
209
  const map = {};
@@ -232,7 +245,7 @@ export class InputBase {
232
245
  this.mchange.emit(value);
233
246
  }
234
247
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: InputBase, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
235
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.1", type: InputBase, isStandalone: true, selector: "ng-component", inputs: { cls: { classPropertyName: "cls", publicName: "cls", isSignal: true, isRequired: false, transformFunction: null }, dontFormatAsInputSignal: { classPropertyName: "dontFormatAsInputSignal", publicName: "dontFormatAsInput", isSignal: true, isRequired: false, transformFunction: null }, duplicateCheckSignal: { classPropertyName: "duplicateCheckSignal", publicName: "duplicateCheck", isSignal: true, isRequired: false, transformFunction: null }, presetValue: { classPropertyName: "presetValue", publicName: "presetValue", isSignal: true, isRequired: false, transformFunction: null }, endLabelSignal: { classPropertyName: "endLabelSignal", publicName: "endLabel", isSignal: true, isRequired: false, transformFunction: null }, endLabelTooltipSignal: { classPropertyName: "endLabelTooltipSignal", publicName: "endLabelTooltip", isSignal: true, isRequired: false, transformFunction: null }, idSignal: { classPropertyName: "idSignal", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, inputContClassSignal: { classPropertyName: "inputContClassSignal", publicName: "inputContClass", isSignal: true, isRequired: false, transformFunction: null }, labelSignal: { classPropertyName: "labelSignal", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, noFormat: { classPropertyName: "noFormat", publicName: "noFormat", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonlySignal: { classPropertyName: "readonlySignal", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, requiredSignal: { classPropertyName: "requiredSignal", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showRequiredTagSignal: { classPropertyName: "showRequiredTagSignal", publicName: "showRequiredTag", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, textareaRowsSignal: { classPropertyName: "textareaRowsSignal", publicName: "textareaRows", isSignal: true, isRequired: false, transformFunction: null }, translateOptions: { classPropertyName: "translateOptions", publicName: "translateOptions", isSignal: true, isRequired: false, transformFunction: null }, setFormattedValue: { classPropertyName: "setFormattedValue", publicName: "setFormattedValue", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, inlineHint: { classPropertyName: "inlineHint", publicName: "inlineHint", isSignal: false, isRequired: false, transformFunction: null }, autoPickValueField: { classPropertyName: "autoPickValueField", publicName: "autoPickValueField", isSignal: false, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: false, isRequired: false, transformFunction: null }, labelType: { classPropertyName: "labelType", publicName: "labelType", isSignal: false, isRequired: false, transformFunction: null }, optionFormatter: { classPropertyName: "optionFormatter", publicName: "optionFormatter", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, _indeterminate: { classPropertyName: "_indeterminate", publicName: "indeterminate", isSignal: false, isRequired: false, transformFunction: null }, maxToday: { classPropertyName: "maxToday", publicName: "maxToday", isSignal: false, isRequired: false, transformFunction: null }, minToday: { classPropertyName: "minToday", publicName: "minToday", isSignal: false, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: false, isRequired: false, transformFunction: null }, prefixSignal: { classPropertyName: "prefixSignal", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, miniSignal: { classPropertyName: "miniSignal", publicName: "mini", isSignal: true, isRequired: false, transformFunction: null }, inpClSignal: { classPropertyName: "inpClSignal", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, showEmptyOptionSignal: { classPropertyName: "showEmptyOptionSignal", publicName: "showEmptyOption", isSignal: true, isRequired: false, transformFunction: null }, showLabelSignal: { classPropertyName: "showLabelSignal", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, showValidationSignal: { classPropertyName: "showValidationSignal", publicName: "showValidation", isSignal: true, isRequired: false, transformFunction: null }, showValidationIconSignal: { classPropertyName: "showValidationIconSignal", publicName: "showValidationIcon", isSignal: true, isRequired: false, transformFunction: null }, smallSignal: { classPropertyName: "smallSignal", publicName: "small", isSignal: true, isRequired: false, transformFunction: null }, showValidationMsgSignal: { classPropertyName: "showValidationMsgSignal", publicName: "showValidationMsg", isSignal: true, isRequired: false, transformFunction: null }, stackedSignal: { classPropertyName: "stackedSignal", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, verbose: { classPropertyName: "verbose", publicName: "verbose", isSignal: true, isRequired: false, transformFunction: null }, checkParentBeforeDisable: { classPropertyName: "checkParentBeforeDisable", publicName: "checkParentBeforeDisable", isSignal: true, isRequired: false, transformFunction: null }, clearOnDisable: { classPropertyName: "clearOnDisable", publicName: "clearOnDisable", isSignal: true, isRequired: false, transformFunction: null }, minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: false, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, maxSignal: { classPropertyName: "maxSignal", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, minSignal: { classPropertyName: "minSignal", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, coloredSignal: { classPropertyName: "coloredSignal", publicName: "colored", isSignal: true, isRequired: false, transformFunction: null }, checkedSignal: { classPropertyName: "checkedSignal", publicName: "checkedSignal", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { form: "formChange", name: "nameChange", prefixSignal: "prefixChange", miniSignal: "miniChange", inpClSignal: "inpClChange", showEmptyOptionSignal: "showEmptyOptionChange", showLabelSignal: "showLabelChange", showValidationSignal: "showValidationChange", showValidationIconSignal: "showValidationIconChange", smallSignal: "smallChange", showValidationMsgSignal: "showValidationMsgChange", checkParentBeforeDisable: "checkParentBeforeDisableChange", maxSignal: "maxChange", minSignal: "minChange", mchange: "mchange", mSelectOptionChange: "mSelectOptionChange" }, viewQueries: [{ propertyName: "dateInputRef", first: true, predicate: DateInputComponent, descendants: true, isSignal: true }], ngImport: i0, template: '', isInline: true }); }
248
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.1", type: InputBase, isStandalone: true, selector: "ng-component", inputs: { cls: { classPropertyName: "cls", publicName: "cls", isSignal: true, isRequired: false, transformFunction: null }, dontFormatAsInputSignal: { classPropertyName: "dontFormatAsInputSignal", publicName: "dontFormatAsInput", isSignal: true, isRequired: false, transformFunction: null }, duplicateCheckSignal: { classPropertyName: "duplicateCheckSignal", publicName: "duplicateCheck", isSignal: true, isRequired: false, transformFunction: null }, presetValue: { classPropertyName: "presetValue", publicName: "presetValue", isSignal: true, isRequired: false, transformFunction: null }, endLabelSignal: { classPropertyName: "endLabelSignal", publicName: "endLabel", isSignal: true, isRequired: false, transformFunction: null }, endLabelTooltipSignal: { classPropertyName: "endLabelTooltipSignal", publicName: "endLabelTooltip", isSignal: true, isRequired: false, transformFunction: null }, idSignal: { classPropertyName: "idSignal", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, inputContClassSignal: { classPropertyName: "inputContClassSignal", publicName: "inputContClass", isSignal: true, isRequired: false, transformFunction: null }, labelSignal: { classPropertyName: "labelSignal", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, noFormat: { classPropertyName: "noFormat", publicName: "noFormat", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonlySignal: { classPropertyName: "readonlySignal", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, requiredSignal: { classPropertyName: "requiredSignal", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showRequiredTagSignal: { classPropertyName: "showRequiredTagSignal", publicName: "showRequiredTag", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, textareaRowsSignal: { classPropertyName: "textareaRowsSignal", publicName: "textareaRows", isSignal: true, isRequired: false, transformFunction: null }, translateOptions: { classPropertyName: "translateOptions", publicName: "translateOptions", isSignal: true, isRequired: false, transformFunction: null }, setFormattedValue: { classPropertyName: "setFormattedValue", publicName: "setFormattedValue", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, inlineHint: { classPropertyName: "inlineHint", publicName: "inlineHint", isSignal: false, isRequired: false, transformFunction: null }, autoPickValueField: { classPropertyName: "autoPickValueField", publicName: "autoPickValueField", isSignal: true, isRequired: false, transformFunction: null }, labelField: { classPropertyName: "labelField", publicName: "labelField", isSignal: true, isRequired: false, transformFunction: null }, labelType: { classPropertyName: "labelType", publicName: "labelType", isSignal: true, isRequired: false, transformFunction: null }, optionFormatter: { classPropertyName: "optionFormatter", publicName: "optionFormatter", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, _indeterminate: { classPropertyName: "_indeterminate", publicName: "indeterminate", isSignal: false, isRequired: false, transformFunction: null }, maxToday: { classPropertyName: "maxToday", publicName: "maxToday", isSignal: false, isRequired: false, transformFunction: null }, minToday: { classPropertyName: "minToday", publicName: "minToday", isSignal: false, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, prefixSignal: { classPropertyName: "prefixSignal", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, miniSignal: { classPropertyName: "miniSignal", publicName: "mini", isSignal: true, isRequired: false, transformFunction: null }, inpClSignal: { classPropertyName: "inpClSignal", publicName: "inpCl", isSignal: true, isRequired: false, transformFunction: null }, showEmptyOptionSignal: { classPropertyName: "showEmptyOptionSignal", publicName: "showEmptyOption", isSignal: true, isRequired: false, transformFunction: null }, showLabelSignal: { classPropertyName: "showLabelSignal", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, showValidationSignal: { classPropertyName: "showValidationSignal", publicName: "showValidation", isSignal: true, isRequired: false, transformFunction: null }, showValidationIconSignal: { classPropertyName: "showValidationIconSignal", publicName: "showValidationIcon", isSignal: true, isRequired: false, transformFunction: null }, smallSignal: { classPropertyName: "smallSignal", publicName: "small", isSignal: true, isRequired: false, transformFunction: null }, showValidationMsgSignal: { classPropertyName: "showValidationMsgSignal", publicName: "showValidationMsg", isSignal: true, isRequired: false, transformFunction: null }, stackedSignal: { classPropertyName: "stackedSignal", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, verbose: { classPropertyName: "verbose", publicName: "verbose", isSignal: true, isRequired: false, transformFunction: null }, checkParentBeforeDisable: { classPropertyName: "checkParentBeforeDisable", publicName: "checkParentBeforeDisable", isSignal: true, isRequired: false, transformFunction: null }, clearOnDisable: { classPropertyName: "clearOnDisable", publicName: "clearOnDisable", isSignal: true, isRequired: false, transformFunction: null }, minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: false, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, _type: { classPropertyName: "_type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, maxSignal: { classPropertyName: "maxSignal", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, minSignal: { classPropertyName: "minSignal", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, coloredSignal: { classPropertyName: "coloredSignal", publicName: "colored", isSignal: true, isRequired: false, transformFunction: null }, checkedSignal: { classPropertyName: "checkedSignal", publicName: "checkedSignal", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { form: "formChange", labelField: "labelFieldChange", labelType: "labelTypeChange", name: "nameChange", valueField: "valueFieldChange", prefixSignal: "prefixChange", miniSignal: "miniChange", inpClSignal: "inpClChange", showEmptyOptionSignal: "showEmptyOptionChange", showLabelSignal: "showLabelChange", showValidationSignal: "showValidationChange", showValidationIconSignal: "showValidationIconChange", smallSignal: "smallChange", showValidationMsgSignal: "showValidationMsgChange", checkParentBeforeDisable: "checkParentBeforeDisableChange", maxSignal: "maxChange", minSignal: "minChange", mchange: "mchange", mSelectOptionChange: "mSelectOptionChange" }, viewQueries: [{ propertyName: "dateInputRef", first: true, predicate: DateInputComponent, descendants: true, isSignal: true }], ngImport: i0, template: '', isInline: true }); }
236
249
  }
237
250
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: InputBase, decorators: [{
238
251
  type: Component,
@@ -242,14 +255,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
242
255
  }]
243
256
  }], ctorParameters: () => [], propDecorators: { inlineHint: [{
244
257
  type: Input
245
- }], autoPickValueField: [{
246
- type: Input
247
- }], labelField: [{
248
- type: Input
249
- }], labelType: [{
250
- type: Input
251
- }], optionFormatter: [{
252
- type: Input
253
258
  }], _indeterminate: [{
254
259
  type: Input,
255
260
  args: ['indeterminate']
@@ -257,8 +262,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
257
262
  type: Input
258
263
  }], minToday: [{
259
264
  type: Input
260
- }], valueField: [{
261
- type: Input
262
265
  }], minLength: [{
263
266
  type: Input
264
267
  }], maxLength: [{
@@ -270,4 +273,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
270
273
  type: Input,
271
274
  args: ['type']
272
275
  }] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEyQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFnQixNQUFNLEVBQUUsR0FBRyxFQUFTLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFLcEUsTUFBTSxPQUFPLFNBQVM7SUF5RHBCLElBQTRCLGNBQWMsQ0FBQyxDQUFVO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQWEsUUFBUSxDQUFDLENBQVU7UUFDOUIsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxJ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O2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWlCLFNBQVM7c0JBQS9CLEtBQUs7dUJBQUMsVUFBVTtnQkFvQkUsS0FBSztzQkFBdkIsS0FBSzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU9wdGlvbiwgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgbWVyZ2UsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIElucHV0QmFzZTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbiAgVENvbnRyb2wgPSBhbnksXG4gIFRPcHRpb24gPSBhbnksXG4+IHtcbiAgcmVhZG9ubHkgZGF0ZUlucHV0UmVmID0gdmlld0NoaWxkPERhdGVJbnB1dENvbXBvbmVudD4oRGF0ZUlucHV0Q29tcG9uZW50KTtcbiAgcmVhZG9ubHkgY2xzID0gaW5wdXQ8c3RyaW5nPihudWxsKTtcbiAgcmVhZG9ubHkgZG9udEZvcm1hdEFzSW5wdXRTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IGFsaWFzOiAnZG9udEZvcm1hdEFzSW5wdXQnIH0pO1xuICByZWFkb25seSBkdXBsaWNhdGVDaGVja1NpZ25hbCA9IGlucHV0PGJvb2xlYW4+KG51bGwsIHsgYWxpYXM6ICdkdXBsaWNhdGVDaGVjaycgfSk7XG4gIHJlYWRvbmx5IHByZXNldFZhbHVlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBlbmRMYWJlbFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2VuZExhYmVsJyB9KTtcbiAgcmVhZG9ubHkgZW5kTGFiZWxUb29sdGlwU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnZW5kTGFiZWxUb29sdGlwJyB9KTtcbiAgcmVhZG9ubHkgaWRTaWduYWwgPSBpbnB1dCgnaWQnICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMCksIHsgYWxpYXM6ICdpZCcgfSk7XG4gIHJlYWRvbmx5IGlucHV0Q29udENsYXNzU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnaW5wdXRDb250Q2xhc3MnIH0pO1xuICByZWFkb25seSBsYWJlbFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2xhYmVsJyB9KTtcbiAgcmVhZG9ubHkgbm9Gb3JtYXQgPSBpbnB1dDxib29sZWFuPihudWxsKTtcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xuICByZWFkb25seSByZWFkb25seVNpZ25hbCA9IGlucHV0PGJvb2xlYW4gfCBudWxsPihudWxsLCB7IGFsaWFzOiAncmVhZG9ubHknIH0pO1xuICByZWFkb25seSByZXF1aXJlZFNpZ25hbCA9IGlucHV0PGJvb2xlYW4gfCBudWxsPihudWxsLCB7IGFsaWFzOiAncmVxdWlyZWQnIH0pO1xuICByZWFkb25seSBzaG93UmVxdWlyZWRUYWdTaWduYWwgPSBpbnB1dDxib29sZWFuPih0cnVlLCB7IGFsaWFzOiAnc2hvd1JlcXVpcmVkVGFnJyB9KTtcbiAgcmVhZG9ubHkgc3VmZml4ID0gaW5wdXQ8c3RyaW5nPihudWxsKTtcbiAgcmVhZG9ubHkgdGV4dGFyZWFSb3dzU2lnbmFsID0gaW5wdXQ8bnVtYmVyPihudWxsLCB7IGFsaWFzOiAndGV4dGFyZWFSb3dzJyB9KTtcbiAgcmVhZG9ubHkgdHJhbnNsYXRlT3B0aW9ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2V0Rm9ybWF0dGVkVmFsdWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWROb0Zvcm1hdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBub0Zvcm1hdCA9IHRoaXMubm9Gb3JtYXQoKSxcbiAgICAgIHR5cGVTaWduYWwgPSB0aGlzLnR5cGVTaWduYWwoKSxcbiAgICAgIHNob3dWYWxpZGF0aW9uU2lnbmFsID0gdGhpcy5zaG93VmFsaWRhdGlvblNpZ25hbCgpLFxuICAgICAgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsID0gdGhpcy5zaG93VmFsaWRhdGlvbkljb25TaWduYWwoKSxcbiAgICAgIGxhYmVsU2lnbmFsID0gdGhpcy5sYWJlbFNpZ25hbCgpO1xuICAgIHJldHVybiBub0Zvcm1hdCA9PSBudWxsXG4gICAgICA/IHR5cGVTaWduYWwgPT0gJ3ZpZXdlcicgfHxcbiAgICAgICAgICBzaG93VmFsaWRhdGlvblNpZ25hbCB8fFxuICAgICAgICAgIHNob3dWYWxpZGF0aW9uSWNvblNpZ25hbCB8fFxuICAgICAgICAgIGxhYmVsU2lnbmFsPy5pbmNsdWRlcygnY29kZScpXG4gICAgICA6IG5vRm9ybWF0O1xuICB9KTtcblxuICAvKiogRm9ybUdyb3VwICovXG4gIHJlYWRvbmx5IGZvcm0gPSBtb2RlbDxcbiAgICBGb3JtR3JvdXA8VEZvcm1Hcm91cD4gfCBGb3JtQ29udHJvbDxUQ29udHJvbD4gfCBBYnN0cmFjdENvbnRyb2w8VENvbnRyb2w+XG4gID4oKTtcblxuICAvKiogU2hvdyB0aGUgaGludCB3aXRob3V0IHRoZSB0b29sdGlwICovXG4gIEBJbnB1dCgpIGlubGluZUhpbnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGF1dG9QaWNrVmFsdWVGaWVsZDogYm9vbGVhbjtcbiAgQElucHV0KCkgbGFiZWxGaWVsZDoga2V5b2YgVE9wdGlvbjtcbiAgQElucHV0KCkgbGFiZWxUeXBlOiBPcHRpb25MYWJlbFR5cGU7IC8vdXNlIHRoaXMgdG8gcGljayBhIHByZXNldCB2YWx1ZSBsYWJlbCBncm91cCBmb3IgdGhlIG9wdGlvbnNcbiAgQElucHV0KCkgb3B0aW9uRm9ybWF0dGVyOiAoaXRlbTogVE9wdGlvbikgPT4gc3RyaW5nO1xuXG4gIC8qKiBGb3JtQ29udHJvbE5hbWUgKi9cbiAgbmFtZSA9IG1vZGVsPGtleW9mIFRGb3JtR3JvdXA+KCk7XG4gIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCdpbmRldGVybWluYXRlJykgc2V0IF9pbmRldGVybWluYXRlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSB2O1xuICAgIGlmICh2KSB0aGlzLmNvbnRyb2woKT8ucGF0Y2hWYWx1ZShmYWxzZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG1heFRvZGF5KHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5tYXhTaWduYWwuc2V0KG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG1pblRvZGF5KHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5taW5TaWduYWwuc2V0KG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSk7XG4gIH1cbiAgQElucHV0KCkgdmFsdWVGaWVsZDoga2V5b2YgVE9wdGlvbjsgLy91c2UgdGhpcyB0byBjaG9vc2UgYSBmaWVsZCBpbiB0aGUgb3B0aW9uIGZvciBtb2RlbGluZ1xuICByZWFkb25seSBwcmVmaXhTaWduYWwgPSBtb2RlbDxzdHJpbmc+KG51bGwsIHsgYWxpYXM6ICdwcmVmaXgnIH0pO1xuICByZWFkb25seSBtaW5pU2lnbmFsID0gbW9kZWw8Ym9vbGVhbj4obnVsbCwgeyBhbGlhczogJ21pbmknIH0pO1xuICByZWFkb25seSBpbnBDbFNpZ25hbCA9IG1vZGVsPHN0cmluZz4oJ2NvbnRyb2wtYmctZ3JheScsIHsgYWxpYXM6ICdpbnBDbCcgfSk7XG4gIHJlYWRvbmx5IHNob3dFbXB0eU9wdGlvblNpZ25hbCA9IG1vZGVsPGJvb2xlYW4+KHRydWUsIHtcbiAgICBhbGlhczogJ3Nob3dFbXB0eU9wdGlvbicsXG4gIH0pO1xuICByZWFkb25seSBzaG93TGFiZWxTaWduYWwgPSBtb2RlbDxib29sZWFuPih0cnVlLCB7XG4gICAgYWxpYXM6ICdzaG93TGFiZWwnLFxuICB9KTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRpb25TaWduYWwgPSBtb2RlbDxib29sZWFuPihmYWxzZSwge1xuICAgIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb24nLFxuICB9KTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsID0gbW9kZWw8Ym9vbGVhbj4obnVsbCwge1xuICAgIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25JY29uJyxcbiAgfSk7XG4gIHJlYWRvbmx5IHNtYWxsU2lnbmFsID0gbW9kZWw8Ym9vbGVhbj4obnVsbCwge1xuICAgIGFsaWFzOiAnc21hbGwnLFxuICB9KTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRpb25Nc2dTaWduYWwgPSBtb2RlbDxib29sZWFuPihmYWxzZSwge1xuICAgIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25Nc2cnLFxuICB9KTtcbiAgcmVhZG9ubHkgc3RhY2tlZFNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KHRydWUsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLFxuICAgIGFsaWFzOiAnc3RhY2tlZCcsXG4gIH0pO1xuICByZWFkb25seSBkZWJ1ZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHZlcmJvc2UgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBjaGVja1BhcmVudEJlZm9yZURpc2FibGUgPSBtb2RlbDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgY2xlYXJPbkRpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlcjtcblxuICBASW5wdXQoJ2Rpc2FibGVkJykgc2V0IF9kaXNhYmxlZCh2OiBib29sZWFuKSB7XG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9sKCk7XG4gICAgaWYgKCFjb250cm9sKVxuICAgICAgdGhpcy5hZGRPbkNvbnRyb2xPYnRhaW5lZEhvb2soJ2Rpc2FibGVkJywgKGNvbnRyb2wpID0+IHRoaXMuZGlzYWJsZUZ1bmMoY29udHJvbCwgdikpO1xuICAgIGVsc2UgdGhpcy5kaXNhYmxlRnVuYyhjb250cm9sLCB2KTtcblxuICAgIC8vIH0sIDEwMDApO1xuICB9XG4gIHByb3RlY3RlZCBkaXNhYmxlRnVuYyA9IChjb250cm9sID0gdGhpcy5jb250cm9sKCksIGRpc2FibGU6IGJvb2xlYW4pID0+IHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5jaGVja1BhcmVudEJlZm9yZURpc2FibGUoKSAmJiBjb250cm9sPy5wYXJlbnQ/LmRpc2FibGVkKSByZXR1cm47XG4gICAgaWYgKGRpc2FibGUpIHtcbiAgICAgIGlmICh0aGlzLmNsZWFyT25EaXNhYmxlKCkpIGNvbnRyb2w/LnJlc2V0KCk7XG4gICAgICBjb250cm9sPy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIGlmIChjb250cm9sPy5kaXNhYmxlZCkgY29udHJvbD8uZW5hYmxlKCk7XG4gIH07XG5cbiAgQElucHV0KCd0eXBlJykgc2V0IF90eXBlKHY6IElucHV0VHlwZSkge1xuICAgIHRoaXMub1R5cGVTaWduYWwuc2V0KHYpO1xuICAgIGlmICh2ID09ICdwZXJjZW50YWdlJykge1xuICAgICAgdGhpcy50eXBlU2lnbmFsLnNldCgnbnVtYmVyJyk7XG4gICAgICB0aGlzLm1heFNpZ25hbC5zZXQoMTAwKTtcbiAgICAgIHRoaXMubWluU2lnbmFsLnNldCgwKTtcbiAgICB9IGVsc2UgdGhpcy50eXBlU2lnbmFsLnNldCh2KTtcbiAgfVxuXG4gIHJlYWRvbmx5IHNob3dQYXNzd29yZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihudWxsKTtcblxuICByZWFkb25seSBkaXNhYmxlZFNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5kaXNhYmxlZDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgb1R5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHR5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlPigndGV4dCcpO1xuICByZWFkb25seSBtYXhTaWduYWwgPSBtb2RlbDxudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihudWxsLCB7IGFsaWFzOiAnbWF4JyB9KTtcbiAgcmVhZG9ubHkgbWluU2lnbmFsID0gbW9kZWw8bnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4obnVsbCwgeyBhbGlhczogJ21pbicgfSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRTaG93TGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2hvd0xhYmVsID0gdGhpcy5zaG93TGFiZWxTaWduYWwoKSxcbiAgICAgIGxhYmVsID0gdGhpcy5sYWJlbFNpZ25hbCgpO1xuICAgIHJldHVybiBzaG93TGFiZWwgJiYgbGFiZWwgIT0gbnVsbDtcbiAgfSk7XG5cbiAgcHVibGljIGlTID0gaW5qZWN0KElucHV0U2VydmljZSk7XG5cbiAgLy8gQFZpZXdDaGlsZCgnZGF0ZUlucHV0JykgZGF0ZUlucHV0UmVmPzogRGF0ZUlucHV0Q29tcG9uZW50O1xuXG4gIHJlYWRvbmx5IGNvbnRyb2wgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHRoaXMuZm9ybSgpIGFzIEZvcm1Hcm91cDxURm9ybUdyb3VwPik/LmNvbnRyb2xzW1xuICAgICAgICB0aGlzLm5hbWUoKSBhcyBrZXlvZiBGb3JtR3JvdXA8VEZvcm1Hcm91cD5bJ2NvbnRyb2xzJ11cbiAgICAgIF0sXG4gICk7XG4gIC8vIHByb3RlY3RlZCBmaXJzdEZldGNoPXRydWVcblxuICByZWFkb25seSBvbkNvbnRyb2xPYnRhaW5lZEVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9sKCk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnY29udHJvbCBvYnRhaW5lZCcsIGNvbnRyb2wpO1xuICAgICAgaWYgKGNvbnRyb2wpIHRoaXMub25Db250cm9sT2J0YWluZWRMaXN0KCkuZm9yRWFjaCgoZnVuYykgPT4gZnVuYyhjb250cm9sKSk7XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICk7XG5cbiAgcmVhZG9ubHkgYWRkT25Db250cm9sT2J0YWluZWRIb29rID0gKFxuICAgIGtleTogc3RyaW5nLFxuICAgIGZ1bmM6IChjb250cm9sOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmNvbnRyb2w+KSA9PiBhbnksXG4gICkgPT4ge1xuICAgIHRoaXMub25Db250cm9sT2J0YWluZWRNYXAudXBkYXRlKChtYXApID0+ICh7IC4uLm1hcCwgW2tleV06IGZ1bmMgfSkpO1xuICB9O1xuXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlcyA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRyb2wpLnBpcGUoXG4gICAgc3RhcnRXaXRoKHRoaXMuY29udHJvbCgpKSxcbiAgICBmaWx0ZXIoKGMpID0+ICEhYyksXG4gICAgc3dpdGNoTWFwKFxuICAgICAgKGMpID0+XG4gICAgICAgIGM/LnZhbHVlQ2hhbmdlcz8ucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoYz8uZ2V0UmF3VmFsdWUoKSksXG4gICAgICAgICAgbWFwKCgpID0+IGM/LmdldFJhd1ZhbHVlKCkpLFxuICAgICAgICApLFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgZm9ybUNoYW5nZWQgPSB0b09ic2VydmFibGUodGhpcy5jb250cm9sKS5waXBlKFxuICAgIHN0YXJ0V2l0aCh0aGlzLmNvbnRyb2woKSksXG4gICAgZmlsdGVyKChjKSA9PiAhIWMpLFxuICAgIHN3aXRjaE1hcCgoYykgPT4gYz8uZXZlbnRzPy5waXBlKCkpLFxuICApO1xuXG4gIHJlYWRvbmx5IGZvcm1GaWVsZE5vdGlmaWVyID0gdG9TaWduYWwodGhpcy5mb3JtQ2hhbmdlZC5waXBlKG1hcCgoKSA9PiBwZXJmb3JtYW5jZS5ub3coKSkpKTtcbiAgcmVhZG9ubHkgdmFsaWRTaWduYWwgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgdGhpcy5mb3JtRmllbGROb3RpZmllcigpO1xuICAgIC8vIGNvbnNvbGUubG9nKCd2YWxpZFNpZ25hbCBub3RpZmllZCcsIHRoaXMuY29udHJvbCgpKTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sKCk/LnZhbGlkO1xuICB9KTtcbiAgcmVhZG9ubHkgaW52YWxpZFNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5pbnZhbGlkO1xuICB9KTtcbiAgcmVhZG9ubHkgdmFsdWVTaWduYWwgPSB0b1NpZ25hbCh0aGlzLnZhbHVlQ2hhbmdlcyk7XG4gIHJlYWRvbmx5IGhhc1ZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZVNpZ25hbCgpPy50b1N0cmluZygpPy50cmltKCk/Lmxlbmd0aCA+IDApO1xuICByZWFkb25seSBpbnZhbGlkQ2hlY2tib3hTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZFNpZ25hbCgpICYmIHRoaXMudHlwZVNpZ25hbCgpID09ICdjaGVja2JveCc7XG4gIH0pO1xuICByZWFkb25seSBkaXJ0eVNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5kaXJ0eTtcbiAgfSk7XG4gIHJlYWRvbmx5IHRvdWNoZWRTaWduYWwgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgdGhpcy5mb3JtRmllbGROb3RpZmllcigpO1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2woKT8udG91Y2hlZDtcbiAgfSk7XG4gIHJlYWRvbmx5IGVycm9yc1NpZ25hbCA9IGNvbXB1dGVkPElPYmplY3RMaXRlcmFsPigoKSA9PiB7XG4gICAgdGhpcy5mb3JtRmllbGROb3RpZmllcigpO1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2woKT8uZXJyb3JzO1xuICB9KTtcbiAgcmVhZG9ubHkgZXJyb3JzU2lnbmFsanNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5lcnJvcnNTaWduYWwoKSB8fCB7fSk7XG4gIH0pO1xuICByZWFkb25seSBwZW5kaW5nU2lnbmFsID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHRoaXMuZm9ybUZpZWxkTm90aWZpZXIoKTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sKCk/LnBlbmRpbmc7XG4gIH0pO1xuICByZWFkb25seSBwcmlzdGluZVNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5wcmlzdGluZTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbnRyb2xSZXF1aXJlZFNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gIH0pO1xuICByZWFkb25seSBpc1JlcXVpcmVkU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXF1aXJlZFNpZ25hbCgpIHx8IHRoaXMuY29udHJvbFJlcXVpcmVkU2lnbmFsKCkpO1xuICByZWFkb25seSBuYW1lU3RyU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uYW1lKCk/LnRvU3RyaW5nKCkpO1xuICByZWFkb25seSBpbnB1dENsYXNzU2lnbmFsID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlTLmlucHV0Q2xhc3MoXG4gICAgICB0aGlzLmlucENsU2lnbmFsKCksXG4gICAgICB0aGlzLmRpcnR5U2lnbmFsKCksXG4gICAgICB0aGlzLnZhbGlkU2lnbmFsKCksXG4gICAgICB0aGlzLmludmFsaWRTaWduYWwoKSxcbiAgICAgIHRoaXMuc2hvd1ZhbGlkYXRpb25TaWduYWwoKSxcbiAgICApLFxuICApO1xuICByZWFkb25seSBjb2xvcmVkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyBhbGlhczogJ2NvbG9yZWQnIH0pO1xuICByZWFkb25seSBjaGVja2VkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvL29wdGlvbmFsIGNoZWNrZWQgb3B0aW9uIGZvciBjaGVja2JveGVzXG4gIHJlYWRvbmx5IHJhd09wdGlvbnNTaWduYWwgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgcmVhZG9ubHkgb3B0aW9ucyA9IGNvbXB1dGVkPElPcHRpb25bXT4oKCkgPT5cbiAgICB0aGlzLmlTLm9wdGlvbnNGb3JtYXR0ZXIoXG4gICAgICB0aGlzLnJhd09wdGlvbnNTaWduYWwoKSxcbiAgICAgIHRoaXMudmFsdWVGaWVsZCBhcyBzdHJpbmcsXG4gICAgICB0aGlzLm9wdGlvbkZvcm1hdHRlcixcbiAgICAgIHRoaXMubGFiZWxUeXBlLFxuICAgICAgdGhpcy5sYWJlbEZpZWxkIGFzIHN0cmluZyxcbiAgICAgIHRoaXMuYXV0b1BpY2tWYWx1ZUZpZWxkLFxuICAgICksXG4gICk7XG4gIHJlYWRvbmx5IG9wdGlvbnNNYXAgPSBjb21wdXRlZDx7IFt2YWx1ZTogc3RyaW5nXTogSU9wdGlvbiB9PigoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuICAgIGNvbnN0IG1hcDogeyBbdmFsdWVLZXk6IHN0cmluZ106IElPcHRpb24gfSA9IHt9O1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBvcHRpb25zKSB7XG4gICAgICBtYXBbSlNPTi5zdHJpbmdpZnkoaXRlbS52YWx1ZSldID0gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkb2VzT3B0aW9uRXhpc3QgPSAodmFsKSA9PiB0aGlzLm9wdGlvbnNNYXAoKVtKU09OLnN0cmluZ2lmeSh2YWwpXTtcbiAgLyoqQWN0aW9ucyB0byBwZXJmb3JtIHdoZW4gYSBuZXcgY29udHJvbCBpcyBjcmVhdGVkICovXG4gIHByb3RlY3RlZCByZWFkb25seSBvbkNvbnRyb2xPYnRhaW5lZE1hcCA9IHNpZ25hbDx7XG4gICAgW2tleTogc3RyaW5nXTogKGNvbnRyb2w6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuY29udHJvbD4pID0+IGFueTtcbiAgfT4oe30pO1xuICAvKipBY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiBhIG5ldyBjb250cm9sIGlzIGNyZWF0ZWQgKi9cbiAgcmVhZG9ubHkgb25Db250cm9sT2J0YWluZWRMaXN0ID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LnZhbHVlcyh0aGlzLm9uQ29udHJvbE9idGFpbmVkTWFwKCkgfHwge30pKTtcbiAgcmVhZG9ubHkgbWNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IG1TZWxlY3RPcHRpb25DaGFuZ2UgPSBvdXRwdXQ8VE9wdGlvbj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmxhYmVsU2lnbmFsKCk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnTGFiZWwgc2V0IHRvIGNvbnRyb2wnKTtcbiAgICAgIC8vIHZhbHVlID0gdGhpcy52YWx1ZVNpZ25hbCgpO1xuICAgICAgaWYgKHRoaXMuY29udHJvbCgpKSB0aGlzLmNvbnRyb2woKS5sYWJlbFZhbHVlID0gbGFiZWw7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgcHJlc2V0VmFsdWUgPSB0aGlzLnByZXNldFZhbHVlKCksXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdjaGVjayBwcmVzZXQnKTtcbiAgICAgIGlmIChwcmVzZXRWYWx1ZSAmJiBvcHRpb25zPy5sZW5ndGggPT0gMSAmJiAhdGhpcy5jb250cm9sKCk/LnZhbHVlKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCgpPy5wYXRjaFZhbHVlKG9wdGlvbnNbMF0udmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3B0aW9uKG9wdGlvbjogSU9wdGlvbikge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgdGhpcy5tU2VsZWN0T3B0aW9uQ2hhbmdlLmVtaXQob3B0aW9uLm9yaWdpbmFsUm93KTtcbiAgfVxuICBkYXRlQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2woKSkgcmV0dXJuO1xuICAgIHRoaXMuY29udHJvbCgpLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgIHRoaXMubWNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIl19
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEyQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFnQixNQUFNLEVBQUUsR0FBRyxFQUFTLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFLcEUsTUFBTSxPQUFPLFNBQVM7SUEwRHBCLElBQTRCLGNBQWMsQ0FBQyxDQUFVO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQWEsUUFBUSxDQUFDLENBQVU7UUFDOUIsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxJ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b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO2lCQUNiO3dEQWdEVSxVQUFVO3NCQUFsQixLQUFLO2dCQVdzQixjQUFjO3NCQUF6QyxLQUFLO3VCQUFDLGVBQWU7Z0JBSVQsUUFBUTtzQkFBcEIsS0FBSztnQkFHTyxRQUFRO3NCQUFwQixLQUFLO2dCQWtDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWlCLFNBQVM7c0JBQS9CLEtBQUs7dUJBQUMsVUFBVTtnQkFvQkUsS0FBSztzQkFBdkIsS0FBSzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU9wdGlvbiwgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgbWVyZ2UsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIElucHV0QmFzZTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbiAgVENvbnRyb2wgPSBhbnksXG4gIFRPcHRpb24gPSBhbnksXG4+IHtcbiAgcmVhZG9ubHkgZGF0ZUlucHV0UmVmID0gdmlld0NoaWxkPERhdGVJbnB1dENvbXBvbmVudD4oRGF0ZUlucHV0Q29tcG9uZW50KTtcbiAgcmVhZG9ubHkgY2xzID0gaW5wdXQ8c3RyaW5nPihudWxsKTtcbiAgcmVhZG9ubHkgZG9udEZvcm1hdEFzSW5wdXRTaWduYWwgPSBpbnB1dDxib29sZWFuPihudWxsLCB7IGFsaWFzOiAnZG9udEZvcm1hdEFzSW5wdXQnIH0pO1xuICByZWFkb25seSBkdXBsaWNhdGVDaGVja1NpZ25hbCA9IGlucHV0PGJvb2xlYW4+KG51bGwsIHsgYWxpYXM6ICdkdXBsaWNhdGVDaGVjaycgfSk7XG4gIHJlYWRvbmx5IHByZXNldFZhbHVlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBlbmRMYWJlbFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2VuZExhYmVsJyB9KTtcbiAgcmVhZG9ubHkgZW5kTGFiZWxUb29sdGlwU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnZW5kTGFiZWxUb29sdGlwJyB9KTtcbiAgcmVhZG9ubHkgaWRTaWduYWwgPSBpbnB1dCgnaWQnICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMCksIHsgYWxpYXM6ICdpZCcgfSk7XG4gIHJlYWRvbmx5IGlucHV0Q29udENsYXNzU2lnbmFsID0gaW5wdXQ8c3RyaW5nPihudWxsLCB7IGFsaWFzOiAnaW5wdXRDb250Q2xhc3MnIH0pO1xuICByZWFkb25seSBsYWJlbFNpZ25hbCA9IGlucHV0PHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2xhYmVsJyB9KTtcbiAgcmVhZG9ubHkgbm9Gb3JtYXQgPSBpbnB1dDxib29sZWFuPihudWxsKTtcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xuICByZWFkb25seSByZWFkb25seVNpZ25hbCA9IGlucHV0PGJvb2xlYW4gfCBudWxsPihudWxsLCB7IGFsaWFzOiAncmVhZG9ubHknIH0pO1xuICByZWFkb25seSByZXF1aXJlZFNpZ25hbCA9IGlucHV0PGJvb2xlYW4gfCBudWxsPihudWxsLCB7IGFsaWFzOiAncmVxdWlyZWQnIH0pO1xuICByZWFkb25seSBzaG93UmVxdWlyZWRUYWdTaWduYWwgPSBpbnB1dDxib29sZWFuPih0cnVlLCB7IGFsaWFzOiAnc2hvd1JlcXVpcmVkVGFnJyB9KTtcbiAgcmVhZG9ubHkgc3VmZml4ID0gaW5wdXQ8c3RyaW5nPihudWxsKTtcbiAgcmVhZG9ubHkgdGV4dGFyZWFSb3dzU2lnbmFsID0gaW5wdXQ8bnVtYmVyPihudWxsLCB7IGFsaWFzOiAndGV4dGFyZWFSb3dzJyB9KTtcbiAgcmVhZG9ubHkgdHJhbnNsYXRlT3B0aW9ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2V0Rm9ybWF0dGVkVmFsdWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWROb0Zvcm1hdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBub0Zvcm1hdCA9IHRoaXMubm9Gb3JtYXQoKSxcbiAgICAgIHR5cGVTaWduYWwgPSB0aGlzLnR5cGVTaWduYWwoKSxcbiAgICAgIHNob3dWYWxpZGF0aW9uU2lnbmFsID0gdGhpcy5zaG93VmFsaWRhdGlvblNpZ25hbCgpLFxuICAgICAgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsID0gdGhpcy5zaG93VmFsaWRhdGlvbkljb25TaWduYWwoKSxcbiAgICAgIGxhYmVsU2lnbmFsID0gdGhpcy5sYWJlbFNpZ25hbCgpO1xuICAgIHJldHVybiBub0Zvcm1hdCA9PSBudWxsXG4gICAgICA/IHR5cGVTaWduYWwgPT0gJ3ZpZXdlcicgfHxcbiAgICAgICAgICBzaG93VmFsaWRhdGlvblNpZ25hbCB8fFxuICAgICAgICAgIHNob3dWYWxpZGF0aW9uSWNvblNpZ25hbCB8fFxuICAgICAgICAgIGxhYmVsU2lnbmFsPy5pbmNsdWRlcygnY29kZScpXG4gICAgICA6IG5vRm9ybWF0O1xuICB9KTtcblxuICAvKiogRm9ybUdyb3VwICovXG4gIHJlYWRvbmx5IGZvcm0gPSBtb2RlbDxcbiAgICBGb3JtR3JvdXA8VEZvcm1Hcm91cD4gfCBGb3JtQ29udHJvbDxUQ29udHJvbD4gfCBBYnN0cmFjdENvbnRyb2w8VENvbnRyb2w+XG4gID4oKTtcblxuICAvKiogU2hvdyB0aGUgaGludCB3aXRob3V0IHRoZSB0b29sdGlwICovXG4gIEBJbnB1dCgpIGlubGluZUhpbnQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGF1dG9QaWNrVmFsdWVGaWVsZCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGxhYmVsRmllbGQgPSBtb2RlbDxrZXlvZiBUT3B0aW9uIHwgKGtleW9mIFRPcHRpb24pW10+KCk7XG4gIC8qKnVzZSB0aGlzIHRvIHBpY2sgYSBwcmVzZXQgdmFsdWUgbGFiZWwgZ3JvdXAgZm9yIHRoZSBvcHRpb25zICovXG4gIHJlYWRvbmx5IGxhYmVsVHlwZSA9IG1vZGVsPE9wdGlvbkxhYmVsVHlwZT4oKTtcbiAgcmVhZG9ubHkgb3B0aW9uRm9ybWF0dGVyID0gaW5wdXQ8KGl0ZW06IFRPcHRpb24pID0+IHN0cmluZz4oKTtcblxuICAvKiogRm9ybUNvbnRyb2xOYW1lICovXG4gIG5hbWUgPSBtb2RlbDxrZXlvZiBURm9ybUdyb3VwPigpO1xuICBpbmRldGVybWluYXRlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnaW5kZXRlcm1pbmF0ZScpIHNldCBfaW5kZXRlcm1pbmF0ZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5pbmRldGVybWluYXRlID0gdjtcbiAgICBpZiAodikgdGhpcy5jb250cm9sKCk/LnBhdGNoVmFsdWUoZmFsc2UpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtYXhUb2RheSh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMubWF4U2lnbmFsLnNldChuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtaW5Ub2RheSh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMubWluU2lnbmFsLnNldChuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpO1xuICB9XG4gIC8qKnVzZSB0aGlzIHRvIGNob29zZSBhIGZpZWxkIGluIHRoZSBvcHRpb24gZm9yIG1vZGVsaW5nICovXG4gIHJlYWRvbmx5IHZhbHVlRmllbGQgPSBtb2RlbDxrZXlvZiBUT3B0aW9uPigpO1xuICByZWFkb25seSBwcmVmaXhTaWduYWwgPSBtb2RlbDxzdHJpbmc+KG51bGwsIHsgYWxpYXM6ICdwcmVmaXgnIH0pO1xuICByZWFkb25seSBtaW5pU2lnbmFsID0gbW9kZWw8Ym9vbGVhbj4obnVsbCwgeyBhbGlhczogJ21pbmknIH0pO1xuICByZWFkb25seSBpbnBDbFNpZ25hbCA9IG1vZGVsPHN0cmluZz4oJ2NvbnRyb2wtYmctZ3JheScsIHsgYWxpYXM6ICdpbnBDbCcgfSk7XG4gIHJlYWRvbmx5IHNob3dFbXB0eU9wdGlvblNpZ25hbCA9IG1vZGVsPGJvb2xlYW4+KHRydWUsIHtcbiAgICBhbGlhczogJ3Nob3dFbXB0eU9wdGlvbicsXG4gIH0pO1xuICByZWFkb25seSBzaG93TGFiZWxTaWduYWwgPSBtb2RlbDxib29sZWFuPih0cnVlLCB7XG4gICAgYWxpYXM6ICdzaG93TGFiZWwnLFxuICB9KTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRpb25TaWduYWwgPSBtb2RlbDxib29sZWFuPihmYWxzZSwge1xuICAgIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb24nLFxuICB9KTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsID0gbW9kZWw8Ym9vbGVhbj4obnVsbCwge1xuICAgIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25JY29uJyxcbiAgfSk7XG4gIHJlYWRvbmx5IHNtYWxsU2lnbmFsID0gbW9kZWw8Ym9vbGVhbj4obnVsbCwge1xuICAgIGFsaWFzOiAnc21hbGwnLFxuICB9KTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRpb25Nc2dTaWduYWwgPSBtb2RlbDxib29sZWFuPihmYWxzZSwge1xuICAgIGFsaWFzOiAnc2hvd1ZhbGlkYXRpb25Nc2cnLFxuICB9KTtcbiAgcmVhZG9ubHkgc3RhY2tlZFNpZ25hbCA9IGlucHV0PGJvb2xlYW4+KHRydWUsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkLFxuICAgIGFsaWFzOiAnc3RhY2tlZCcsXG4gIH0pO1xuICByZWFkb25seSBkZWJ1ZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHZlcmJvc2UgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBjaGVja1BhcmVudEJlZm9yZURpc2FibGUgPSBtb2RlbDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgY2xlYXJPbkRpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlcjtcblxuICBASW5wdXQoJ2Rpc2FibGVkJykgc2V0IF9kaXNhYmxlZCh2OiBib29sZWFuKSB7XG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9sKCk7XG4gICAgaWYgKCFjb250cm9sKVxuICAgICAgdGhpcy5hZGRPbkNvbnRyb2xPYnRhaW5lZEhvb2soJ2Rpc2FibGVkJywgKGNvbnRyb2wpID0+IHRoaXMuZGlzYWJsZUZ1bmMoY29udHJvbCwgdikpO1xuICAgIGVsc2UgdGhpcy5kaXNhYmxlRnVuYyhjb250cm9sLCB2KTtcblxuICAgIC8vIH0sIDEwMDApO1xuICB9XG4gIHByb3RlY3RlZCBkaXNhYmxlRnVuYyA9IChjb250cm9sID0gdGhpcy5jb250cm9sKCksIGRpc2FibGU6IGJvb2xlYW4pID0+IHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5jaGVja1BhcmVudEJlZm9yZURpc2FibGUoKSAmJiBjb250cm9sPy5wYXJlbnQ/LmRpc2FibGVkKSByZXR1cm47XG4gICAgaWYgKGRpc2FibGUpIHtcbiAgICAgIGlmICh0aGlzLmNsZWFyT25EaXNhYmxlKCkpIGNvbnRyb2w/LnJlc2V0KCk7XG4gICAgICBjb250cm9sPy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIGlmIChjb250cm9sPy5kaXNhYmxlZCkgY29udHJvbD8uZW5hYmxlKCk7XG4gIH07XG5cbiAgQElucHV0KCd0eXBlJykgc2V0IF90eXBlKHY6IElucHV0VHlwZSkge1xuICAgIHRoaXMub1R5cGVTaWduYWwuc2V0KHYpO1xuICAgIGlmICh2ID09ICdwZXJjZW50YWdlJykge1xuICAgICAgdGhpcy50eXBlU2lnbmFsLnNldCgnbnVtYmVyJyk7XG4gICAgICB0aGlzLm1heFNpZ25hbC5zZXQoMTAwKTtcbiAgICAgIHRoaXMubWluU2lnbmFsLnNldCgwKTtcbiAgICB9IGVsc2UgdGhpcy50eXBlU2lnbmFsLnNldCh2KTtcbiAgfVxuXG4gIHJlYWRvbmx5IHNob3dQYXNzd29yZFNpZ25hbCA9IHNpZ25hbDxib29sZWFuPihudWxsKTtcblxuICByZWFkb25seSBkaXNhYmxlZFNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5kaXNhYmxlZDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgb1R5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHR5cGVTaWduYWwgPSBzaWduYWw8SW5wdXRUeXBlPigndGV4dCcpO1xuICByZWFkb25seSBtYXhTaWduYWwgPSBtb2RlbDxudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihudWxsLCB7IGFsaWFzOiAnbWF4JyB9KTtcbiAgcmVhZG9ubHkgbWluU2lnbmFsID0gbW9kZWw8bnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4obnVsbCwgeyBhbGlhczogJ21pbicgfSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRTaG93TGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2hvd0xhYmVsID0gdGhpcy5zaG93TGFiZWxTaWduYWwoKSxcbiAgICAgIGxhYmVsID0gdGhpcy5sYWJlbFNpZ25hbCgpO1xuICAgIHJldHVybiBzaG93TGFiZWwgJiYgbGFiZWwgIT0gbnVsbDtcbiAgfSk7XG5cbiAgcHVibGljIGlTID0gaW5qZWN0KElucHV0U2VydmljZSk7XG5cbiAgLy8gQFZpZXdDaGlsZCgnZGF0ZUlucHV0JykgZGF0ZUlucHV0UmVmPzogRGF0ZUlucHV0Q29tcG9uZW50O1xuXG4gIHJlYWRvbmx5IGNvbnRyb2wgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHRoaXMuZm9ybSgpIGFzIEZvcm1Hcm91cDxURm9ybUdyb3VwPik/LmNvbnRyb2xzW1xuICAgICAgICB0aGlzLm5hbWUoKSBhcyBrZXlvZiBGb3JtR3JvdXA8VEZvcm1Hcm91cD5bJ2NvbnRyb2xzJ11cbiAgICAgIF0sXG4gICk7XG4gIC8vIHByb3RlY3RlZCBmaXJzdEZldGNoPXRydWVcblxuICByZWFkb25seSBvbkNvbnRyb2xPYnRhaW5lZEVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9sKCk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnY29udHJvbCBvYnRhaW5lZCcsIGNvbnRyb2wpO1xuICAgICAgaWYgKGNvbnRyb2wpIHRoaXMub25Db250cm9sT2J0YWluZWRMaXN0KCkuZm9yRWFjaCgoZnVuYykgPT4gZnVuYyhjb250cm9sKSk7XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICk7XG5cbiAgcmVhZG9ubHkgYWRkT25Db250cm9sT2J0YWluZWRIb29rID0gKFxuICAgIGtleTogc3RyaW5nLFxuICAgIGZ1bmM6IChjb250cm9sOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmNvbnRyb2w+KSA9PiBhbnksXG4gICkgPT4ge1xuICAgIHRoaXMub25Db250cm9sT2J0YWluZWRNYXAudXBkYXRlKChtYXApID0+ICh7IC4uLm1hcCwgW2tleV06IGZ1bmMgfSkpO1xuICB9O1xuXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlcyA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRyb2wpLnBpcGUoXG4gICAgc3RhcnRXaXRoKHRoaXMuY29udHJvbCgpKSxcbiAgICBmaWx0ZXIoKGMpID0+ICEhYyksXG4gICAgc3dpdGNoTWFwKFxuICAgICAgKGMpID0+XG4gICAgICAgIGM/LnZhbHVlQ2hhbmdlcz8ucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgoYz8uZ2V0UmF3VmFsdWUoKSksXG4gICAgICAgICAgbWFwKCgpID0+IGM/LmdldFJhd1ZhbHVlKCkpLFxuICAgICAgICApLFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgZm9ybUNoYW5nZWQgPSB0b09ic2VydmFibGUodGhpcy5jb250cm9sKS5waXBlKFxuICAgIHN0YXJ0V2l0aCh0aGlzLmNvbnRyb2woKSksXG4gICAgZmlsdGVyKChjKSA9PiAhIWMpLFxuICAgIHN3aXRjaE1hcCgoYykgPT4gYz8uZXZlbnRzPy5waXBlKCkpLFxuICApO1xuXG4gIHJlYWRvbmx5IGZvcm1GaWVsZE5vdGlmaWVyID0gdG9TaWduYWwodGhpcy5mb3JtQ2hhbmdlZC5waXBlKG1hcCgoKSA9PiBwZXJmb3JtYW5jZS5ub3coKSkpKTtcbiAgcmVhZG9ubHkgdmFsaWRTaWduYWwgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgdGhpcy5mb3JtRmllbGROb3RpZmllcigpO1xuICAgIC8vIGNvbnNvbGUubG9nKCd2YWxpZFNpZ25hbCBub3RpZmllZCcsIHRoaXMuY29udHJvbCgpKTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sKCk/LnZhbGlkO1xuICB9KTtcbiAgcmVhZG9ubHkgaW52YWxpZFNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5pbnZhbGlkO1xuICB9KTtcbiAgcmVhZG9ubHkgdmFsdWVTaWduYWwgPSB0b1NpZ25hbCh0aGlzLnZhbHVlQ2hhbmdlcyk7XG4gIHJlYWRvbmx5IGhhc1ZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52YWx1ZVNpZ25hbCgpPy50b1N0cmluZygpPy50cmltKCk/Lmxlbmd0aCA+IDApO1xuICByZWFkb25seSBpbnZhbGlkQ2hlY2tib3hTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZFNpZ25hbCgpICYmIHRoaXMudHlwZVNpZ25hbCgpID09ICdjaGVja2JveCc7XG4gIH0pO1xuICByZWFkb25seSBkaXJ0eVNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5kaXJ0eTtcbiAgfSk7XG4gIHJlYWRvbmx5IHRvdWNoZWRTaWduYWwgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgdGhpcy5mb3JtRmllbGROb3RpZmllcigpO1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2woKT8udG91Y2hlZDtcbiAgfSk7XG4gIHJlYWRvbmx5IGVycm9yc1NpZ25hbCA9IGNvbXB1dGVkPElPYmplY3RMaXRlcmFsPigoKSA9PiB7XG4gICAgdGhpcy5mb3JtRmllbGROb3RpZmllcigpO1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2woKT8uZXJyb3JzO1xuICB9KTtcbiAgcmVhZG9ubHkgZXJyb3JzU2lnbmFsanNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5lcnJvcnNTaWduYWwoKSB8fCB7fSk7XG4gIH0pO1xuICByZWFkb25seSBwZW5kaW5nU2lnbmFsID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHRoaXMuZm9ybUZpZWxkTm90aWZpZXIoKTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sKCk/LnBlbmRpbmc7XG4gIH0pO1xuICByZWFkb25seSBwcmlzdGluZVNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5wcmlzdGluZTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbnRyb2xSZXF1aXJlZFNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICB0aGlzLmZvcm1GaWVsZE5vdGlmaWVyKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCgpPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gIH0pO1xuICByZWFkb25seSBpc1JlcXVpcmVkU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXF1aXJlZFNpZ25hbCgpIHx8IHRoaXMuY29udHJvbFJlcXVpcmVkU2lnbmFsKCkpO1xuICByZWFkb25seSBuYW1lU3RyU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uYW1lKCk/LnRvU3RyaW5nKCkpO1xuICByZWFkb25seSBpbnB1dENsYXNzU2lnbmFsID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlTLmlucHV0Q2xhc3MoXG4gICAgICB0aGlzLmlucENsU2lnbmFsKCksXG4gICAgICB0aGlzLmRpcnR5U2lnbmFsKCksXG4gICAgICB0aGlzLnZhbGlkU2lnbmFsKCksXG4gICAgICB0aGlzLmludmFsaWRTaWduYWwoKSxcbiAgICAgIHRoaXMuc2hvd1ZhbGlkYXRpb25TaWduYWwoKSxcbiAgICApLFxuICApO1xuICByZWFkb25seSBjb2xvcmVkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwgeyBhbGlhczogJ2NvbG9yZWQnIH0pO1xuICByZWFkb25seSBjaGVja2VkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvL29wdGlvbmFsIGNoZWNrZWQgb3B0aW9uIGZvciBjaGVja2JveGVzXG4gIHJlYWRvbmx5IHJhd09wdGlvbnNTaWduYWwgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgcmVhZG9ubHkgb3B0aW9ucyA9IGNvbXB1dGVkPElPcHRpb25bXT4oKCkgPT5cbiAgICB0aGlzLmlTLm9wdGlvbnNGb3JtYXR0ZXIodGhpcy5yYXdPcHRpb25zU2lnbmFsKCksIHtcbiAgICAgIHZhbHVlRmllbGQ6IHRoaXMudmFsdWVGaWVsZCgpLFxuICAgICAgZm9ybWF0dGVyOiB0aGlzLm9wdGlvbkZvcm1hdHRlcigpLFxuICAgICAgbGFiZWxUeXBlOiB0aGlzLmxhYmVsVHlwZSgpLFxuICAgICAgbGFiZWxGaWVsZDogdGhpcy5sYWJlbEZpZWxkKCksXG4gICAgICBhdXRvUGlja1ZhbHVlRmllbGQ6IHRoaXMuYXV0b1BpY2tWYWx1ZUZpZWxkKCksXG4gICAgfSksXG4gICk7XG4gIHJlYWRvbmx5IG9wdGlvbnNNYXAgPSBjb21wdXRlZDx7IFt2YWx1ZTogc3RyaW5nXTogSU9wdGlvbiB9PigoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuICAgIGNvbnN0IG1hcDogeyBbdmFsdWVLZXk6IHN0cmluZ106IElPcHRpb24gfSA9IHt9O1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBvcHRpb25zKSB7XG4gICAgICBtYXBbSlNPTi5zdHJpbmdpZnkoaXRlbS52YWx1ZSldID0gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkb2VzT3B0aW9uRXhpc3QgPSAodmFsKSA9PiB0aGlzLm9wdGlvbnNNYXAoKVtKU09OLnN0cmluZ2lmeSh2YWwpXTtcbiAgLyoqQWN0aW9ucyB0byBwZXJmb3JtIHdoZW4gYSBuZXcgY29udHJvbCBpcyBjcmVhdGVkICovXG4gIHByb3RlY3RlZCByZWFkb25seSBvbkNvbnRyb2xPYnRhaW5lZE1hcCA9IHNpZ25hbDx7XG4gICAgW2tleTogc3RyaW5nXTogKGNvbnRyb2w6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuY29udHJvbD4pID0+IGFueTtcbiAgfT4oe30pO1xuICAvKipBY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiBhIG5ldyBjb250cm9sIGlzIGNyZWF0ZWQgKi9cbiAgcmVhZG9ubHkgb25Db250cm9sT2J0YWluZWRMaXN0ID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LnZhbHVlcyh0aGlzLm9uQ29udHJvbE9idGFpbmVkTWFwKCkgfHwge30pKTtcbiAgcmVhZG9ubHkgbWNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IG1TZWxlY3RPcHRpb25DaGFuZ2UgPSBvdXRwdXQ8VE9wdGlvbj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmxhYmVsU2lnbmFsKCk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnTGFiZWwgc2V0IHRvIGNvbnRyb2wnKTtcbiAgICAgIC8vIHZhbHVlID0gdGhpcy52YWx1ZVNpZ25hbCgpO1xuICAgICAgaWYgKHRoaXMuY29udHJvbCgpKSB0aGlzLmNvbnRyb2woKS5sYWJlbFZhbHVlID0gbGFiZWw7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgcHJlc2V0VmFsdWUgPSB0aGlzLnByZXNldFZhbHVlKCksXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdjaGVjayBwcmVzZXQnKTtcbiAgICAgIGlmIChwcmVzZXRWYWx1ZSAmJiBvcHRpb25zPy5sZW5ndGggPT0gMSAmJiAhdGhpcy5jb250cm9sKCk/LnZhbHVlKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCgpPy5wYXRjaFZhbHVlKG9wdGlvbnNbMF0udmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3B0aW9uKG9wdGlvbjogSU9wdGlvbikge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgdGhpcy5tU2VsZWN0T3B0aW9uQ2hhbmdlLmVtaXQob3B0aW9uLm9yaWdpbmFsUm93KTtcbiAgfVxuICBkYXRlQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2woKSkgcmV0dXJuO1xuICAgIHRoaXMuY29udHJvbCgpLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgIHRoaXMubWNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -47,11 +47,11 @@ export class InputBasicComponent extends InputBase {
47
47
  });
48
48
  }
49
49
  ngOnInit() {
50
- if (this.autoPickValueField) {
51
- if (!this.labelType)
52
- this.labelType = 'cdt';
53
- if (!this.valueField)
54
- this.valueField = 'code';
50
+ if (this.autoPickValueField()) {
51
+ if (!this.labelType())
52
+ this.labelType.set('cdt');
53
+ if (!this.valueField())
54
+ this.valueField.set('code');
55
55
  }
56
56
  if (this.minSignal() == 0 && this.maxSignal() == 100)
57
57
  this.oTypeSignal.set('percentage');
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
163
163
  type: ViewChild,
164
164
  args: ['matSelectTag']
165
165
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFHVCxNQUFNLEVBRU4sS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVduRCxNQUFNLE9BQU8sbUJBT1gsU0FBUSxTQUF3QztJQTJCaEQsc0JBQXNCO0lBQ3RCLElBQTZCLGVBQWUsQ0FBQyxDQUFVO1FBQ3JELElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBc0IsUUFBUSxDQUFDLENBQW1CO1FBQ2hELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUFFLFFBQVEsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBSUQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQXBDRCxpQkFBWSxHQUFZLElBQUksQ0FBQztRQVFwQixtQkFBYyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUUvQyxVQUFLLEdBQVcsR0FBRyxDQUFDO1FBQ3BCLFVBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsVUFBSyxHQUFlLENBQUMsQ0FBQztRQUdyQix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVELGFBQVEsR0FBRyxJQUFJLGFBQWEsRUFBYSxDQUFDO1FBa0J4QyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNoRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsY0FBYyxHQUFlLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUyxFQUFFLFNBQVMsQ0FBQztnQkFDakYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBYSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO2dCQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQWEsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFekYsNERBQTREO1FBQzVELGlEQUFpRDtRQUNqRCx1RUFBdUU7UUFDdkUsUUFBUTtRQUNSLHVCQUF1QjtRQUN2QixxREFBcUQ7SUFDdkQsQ0FBQztJQUVELGVBQWU7UUFDYiwwQkFBMEI7SUFDNUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxVQUEyQixJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQUUsT0FBTztRQUNuQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUF3RDtRQUM3RCxZQUFZO1FBQ1osSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQUUsUUFBUSxDQUFDO1FBQzNCLElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDcEMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7O1lBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNsQyxZQUFZO1lBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQzVELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBQ0QsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDN0IsWUFBWTtnQkFDWixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztxQkFDdkYsSUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSTtvQkFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLFNBQVM7b0JBQzdCLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFFeEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUk7b0JBQy9ELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTO1lBQzdFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQ3JCLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxRQUFRO2dCQUMzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNyRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUN2RSxDQUFDO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakQsV0FBVztJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBQztRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs4R0F4SFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsb3FGQUhuQixjQUFjLDRKQzdCM0IsbXlWQW1TQSx1NUJEclFZLGtCQUFrQjs7MkZBRWpCLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDRSwyQkFBMkIsY0FHekIsSUFBSSxhQUNMLGNBQWMsV0FDaEIsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQzt3REFZeEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ1UsR0FBRztzQkFBbEIsS0FBSzt1QkFBQyxPQUFPO2dCQUNMLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBTXNCLGVBQWU7c0JBQTNDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUdELFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsU0FBUztnQkFNVyxTQUFTO3NCQUFuQyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGQ0lucHV0LCBJbnB1dFR5cGUsIElWYWxpZGF0aW9uTWVzc2FnZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBJbnB1dFByb3ZpZGVycywgSW5wdXRTaGFyZWRNb2R1bGVzIH0gZnJvbSAnLi9pbnB1dC1zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IERhdGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2UgfSBmcm9tICcuL2lucHV0LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IElPcHRpb24sIElucHV0U2VydmljZSB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pbnB1dC1iYXNpYyxhcHAtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IElucHV0UHJvdmlkZXJzLFxuICBpbXBvcnRzOiBbRGF0ZUlucHV0Q29tcG9uZW50LCBJbnB1dFNoYXJlZE1vZHVsZXNdLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dEJhc2ljQ29tcG9uZW50PFxuICAgIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgICB9ID0gYW55LFxuICAgIFRDb250cm9sID0gYW55LFxuICAgIFRPcHRpb24gPSBhbnksXG4gID5cbiAgZXh0ZW5kcyBJbnB1dEJhc2U8VEZvcm1Hcm91cCwgVENvbnRyb2wsIFRPcHRpb24+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nO1xuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoJ2lucHV0JykgaW5wOiBGQ0lucHV0O1xuICBASW5wdXQoKSBjb250ZXh0RGF0YTogYW55O1xuICBASW5wdXQoKSBkZWNpbWFsUG9pbnRzOiBudW1iZXI7XG4gIEBJbnB1dCgpIGZpbGVzOiBGaWxlW107XG4gIEBJbnB1dCgpIGhpZGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyB8IG51bWJlcjtcblxuICBvdmVycmlkZSByZWFkb25seSBjbGVhck9uRGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBASW5wdXQoKSBsYWJlbExpbms6IHN0cmluZztcbiAgQElucHV0KCkgbGJsQ2w6IHN0cmluZyA9ICcyJztcbiAgQElucHV0KCkgbGlnaHQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgb3B0aW9uc0Z1bmM6ICguLi52YWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIEBJbnB1dCgpIHRoZW1lOiBJbnB1dFRoZW1lID0gMTtcbiAgQElucHV0KCkgdm1zOiBJVmFsaWRhdGlvbk1lc3NhZ2VbXTtcbiAgQElucHV0KCkgeHNtYWxsOiBib29sZWFuO1xuICBAT3V0cHV0KCkgbVNlbGVjdGVkT3B0aW9uTGFiZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgb3B0aW9ucyQgPSBuZXcgUmVwbGF5U3ViamVjdDxJT3B0aW9uW10+KCk7XG4gIHZpZXdJbml0ZWQ6IGJvb2xlYW47XG4gIGZvcmNlUGF0Y2hlZDogYm9vbGVhbjtcblxuICAvLyBsYWJlbFZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgnc2V0Q3VycmVudERhdGUnKSBzZXQgX3NldEN1cnJlbnREYXRlKHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5jb250cm9sKCk/LnBhdGNoVmFsdWUobmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pO1xuICB9XG4gIEBJbnB1dCgnb3B0aW9ucycpIHNldCBfb3B0aW9ucyh2OiBUT3B0aW9uW10gfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgdGhpcy5yYXdPcHRpb25zU2lnbmFsLnNldCh2Py5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkgfHwgW10pO1xuICAgIHRoaXMub3B0aW9ucyQubmV4dCh0aGlzLm9wdGlvbnMoKSk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdtYXRTZWxlY3RUYWcnKSBtYXRTZWxlY3Q6IE1hdFNlbGVjdDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSgpICYmIHRoaXMuY29udHJvbCgpICYmIHRoaXMudHlwZVNpZ25hbCgpID09ICdzZWxlY3QnKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCgpLmZvcm1hdHRlZFZhbHVlID0gKDxNYXRPcHRpb24+dGhpcy5tYXRTZWxlY3Q/LnNlbGVjdGVkKT8udmlld1ZhbHVlO1xuICAgICAgICB0aGlzLm1TZWxlY3RlZE9wdGlvbkxhYmVsLmVtaXQoKDxNYXRPcHRpb24+dGhpcy5tYXRTZWxlY3Q/LnNlbGVjdGVkKT8udmlld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9QaWNrVmFsdWVGaWVsZCkge1xuICAgICAgaWYgKCF0aGlzLmxhYmVsVHlwZSkgdGhpcy5sYWJlbFR5cGUgPSAnY2R0JztcbiAgICAgIGlmICghdGhpcy52YWx1ZUZpZWxkKSB0aGlzLnZhbHVlRmllbGQgPSAnY29kZScgYXMgYW55O1xuICAgIH1cbiAgICBpZiAodGhpcy5taW5TaWduYWwoKSA9PSAwICYmIHRoaXMubWF4U2lnbmFsKCkgPT0gMTAwKSB0aGlzLm9UeXBlU2lnbmFsLnNldCgncGVyY2VudGFnZScpO1xuXG4gICAgLy8gaWYgKHRoaXMudHlwZSA9PSAnc2VsZWN0JyB8fCB0aGlzLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpXG4gICAgLy8gICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocikgPT4ge1xuICAgIC8vICAgICB0aGlzLmxhYmVsVmFsdWUgPSB0aGlzLm9wdGlvbnMuZmluZCgoeCkgPT4geC52YWx1ZSA9PSByKT8ubGFiZWw7XG4gICAgLy8gICB9KTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmlkKVxuICAgIC8vIGlmICh0aGlzLmRpc2FibGVkKSB0aGlzLl9kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gdGhpcy52aWV3SW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGRpc2FibGVDb250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuY29udHJvbCgpKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkU2lnbmFsKCkpIHJldHVybjtcbiAgICBjb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIGNoYW5nZShlOiB7IHRhcmdldDogeyBjaGVja2VkPzogYm9vbGVhbjsgdmFsdWU6IGFueSB9IH0gfCBFdmVudCkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIGxldCB2YWw7XG4gICAgaWYgKHRoaXMudHlwZVNpZ25hbCgpID09ICdjaGVja2JveCcpIHtcbiAgICAgIHZhbCA9IGUudGFyZ2V0Py5bJ2NoZWNrZWQnXTtcbiAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKGUudGFyZ2V0Py5bJ2NoZWNrZWQnXSk7XG4gICAgfSBlbHNlIHZhbCA9IHRoaXMuY29udHJvbCgpPy5nZXRSYXdWYWx1ZSgpO1xuICAgIGlmICh0aGlzLnR5cGVTaWduYWwoKSA9PSAnbnVtYmVyJykge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBpZiAodGhpcy5vVHlwZVNpZ25hbCgpID09ICdwZXJjZW50YWdlJyAmJiAhdGhpcy5tYXhTaWduYWwoKSkge1xuICAgICAgICB0aGlzLm1heFNpZ25hbC5zZXQoMTAwKTtcbiAgICAgICAgdGhpcy5taW5TaWduYWwuc2V0KDApO1xuICAgICAgfVxuICAgICAgaWYgKHZhbCAhPSBudWxsICYmIHZhbCAhPSAnJykge1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgaWYgKHRoaXMubWF4U2lnbmFsKCkgJiYgK3ZhbCA+ICt0aGlzLm1heFNpZ25hbCgpKSB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSh0aGlzLm1heFNpZ25hbCgpKTtcbiAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgdGhpcy5taW5TaWduYWwoKSAhPSBudWxsICYmXG4gICAgICAgICAgdGhpcy5taW5TaWduYWwoKSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICArdmFsIDwgK3RoaXMubWluU2lnbmFsKClcbiAgICAgICAgKVxuICAgICAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKHRoaXMubWluU2lnbmFsKCkpO1xuICAgICAgICBpZiAodGhpcy5kZWNpbWFsUG9pbnRzICE9IHVuZGVmaW5lZCAmJiB0aGlzLmRlY2ltYWxQb2ludHMgIT0gbnVsbClcbiAgICAgICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSgrKCt2YWwpLnRvRml4ZWQodGhpcy5kZWNpbWFsUG9pbnRzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLm1heExlbmd0aCAmJiB0aGlzLmNvbnRyb2woKT8udmFsdWU/LnRvU3RyaW5nKCkubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpXG4gICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy50eXBlU2lnbmFsKCkgPT0gJ251bWJlcidcbiAgICAgICAgICA/ICt0aGlzLmNvbnRyb2woKT8uZ2V0UmF3VmFsdWUoKT8udG9TdHJpbmcoKS5zbGljZSgwLCB0aGlzLm1heExlbmd0aClcbiAgICAgICAgICA6IHRoaXMuY29udHJvbCgpPy5nZXRSYXdWYWx1ZSgpPy50b1N0cmluZygpLnNsaWNlKDAsIHRoaXMubWF4TGVuZ3RoKSxcbiAgICAgICk7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5jb250cm9sKCk/LmdldFJhd1ZhbHVlKCkpO1xuICAgIC8vIGRlYnVnZ2VyXG4gIH1cblxuICB1cGxvYWQoZSkge1xuICAgIHRoaXMuZmlsZXMgPSBlLnRhcmdldC5maWxlcztcbiAgICB0aGlzLm1jaGFuZ2UuZW1pdChlKTtcbiAgfVxufVxudHlwZSBJbnB1dFRoZW1lID0gMSB8IDI7XG5leHBvcnQgdHlwZSBPcHRpb25MYWJlbFR5cGUgPVxuICB8ICdhY2QnXG4gIHwgJ2JuaydcbiAgfCAnY2NkJ1xuICB8ICdjZCdcbiAgfCAnY2R0J1xuICB8ICdjZidcbiAgfCAnY2cnXG4gIHwgJ2NsJ1xuICB8ICdjbWQnXG4gIHwgJ2NuJ1xuICB8ICdjdCdcbiAgfCAnY3UnXG4gIHwgJ2dkJ1xuICB8ICdoYSdcbiAgfCAnaWQnXG4gIHwgJ2lmJ1xuICB8ICdpZmwnXG4gIHwgJ2lsJ1xuICB8ICdpdCdcbiAgfCAnbWQnXG4gIHwgJ25hJ1xuICB8ICdwZCdcbiAgfCAncGVwJ1xuICB8ICdwYW0nXG4gIHwgJ25mJ1xuICB8ICd0ZCdcbiAgfCAndGl0bGUnXG4gIHwgJ3VkJ1xuICB8ICd1ZidcbiAgfCAndmwnXG4gIHwgJ3Z2JztcblxuZXhwb3J0IHsgSU9wdGlvbiB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG4iLCI8IS0tIDxkaXY+Zm9ybSgpLmdldFJhd1ZhbHVlOiB7e2ZmfX08L2Rpdj4gLS0+XG5AaWYgKHZlcmJvc2UoKSkge1xuICA8ZGl2PmRpc2FibGVkU2lnbmFsOiB7eyBkaXNhYmxlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+dmFsaWRTaWduYWw6IHt7IHZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5pbnZhbGlkU2lnbmFsOiB7eyBpbnZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj52YWx1ZVNpZ25hbDoge3sgdmFsdWVTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2Pmhhc1ZhbHVlOiB7eyBoYXNWYWx1ZSgpIH19PC9kaXY+XG4gIDxkaXY+ZGlydHlTaWduYWw6IHt7IGRpcnR5U2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj50b3VjaGVkU2lnbmFsOiB7eyB0b3VjaGVkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5lcnJvcnNTaWduYWw6IHt7IGVycm9yc1NpZ25hbGpzb24oKSB9fTwvZGl2PlxuICA8ZGl2PnBlbmRpbmdTaWduYWw6IHt7IHBlbmRpbmdTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2PnJlcXVpcmVkU2lnbmFsOiB7eyByZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+cHJpc3RpbmVTaWduYWw6IHt7IHByaXN0aW5lU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5jb250cm9sUmVxdWlyZWRTaWduYWw6IHt7IGNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+aXNSZXF1aXJlZFNpZ25hbDoge3sgaXNSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJcIj5vbkNvbnRyb2xPYnRhaW5lZExpc3QgTGVuZ3RoOiB7eyBvbkNvbnRyb2xPYnRhaW5lZExpc3QoKS5sZW5ndGggfX08L2Rpdj5cbn1cbjxkaXZcbiAgY2xhc3M9XCIgIGN1c3RvbS1pbnB1dCBhbGlnbi1pdGVtcy1jZW50ZXIge3sgdHlwZVNpZ25hbCgpIH19IGd4LTFcIlxuICBbZm9ybUdyb3VwXT1cImZvcm0oKSB8IHRvQW55XCJcbiAgW25nQ2xhc3NdPVwieyAnZC1mbGV4JzogIXN0YWNrZWRTaWduYWwoKSB9XCI+XG4gIEBpZiAoY29tcHV0ZWRTaG93TGFiZWwoKSkge1xuICAgIDxhcHAtaW5wdXQtbGFiZWxcbiAgICAgIFtjb2xvcmVkXT1cImNvbG9yZWRTaWduYWwoKVwiXG4gICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgW2hpbnRdPVwiaGludFwiXG4gICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICBbaW52YWxpZENoZWNrYm94XT1cImludmFsaWRDaGVja2JveFNpZ25hbCgpXCJcbiAgICAgIFtpc1JlcXVpcmVkXT1cImlzUmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICBbbGFiZWxdPVwibGFiZWxTaWduYWwoKVwiXG4gICAgICBbbGJsQ2xdPVwibGJsQ2xcIlxuICAgICAgW2xpZ2h0XT1cImxpZ2h0XCJcbiAgICAgIFttaW5pXT1cIm1pbmlTaWduYWwoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICd3LTEwMCc6IHN0YWNrZWRTaWduYWwoKSB9XCJcbiAgICAgIFtpbmxpbmVIaW50XT1cImlubGluZUhpbnRcIlxuICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzaG93UmVxdWlyZWRUYWdTaWduYWwoKVwiXG4gICAgICBbc2hvd0xhYmVsXT1cInNob3dMYWJlbFNpZ25hbCgpXCJcbiAgICAgIFtzbWFsbF09XCJzbWFsbFNpZ25hbCgpXCJcbiAgICAgIFtzdGFja2VkXT1cInN0YWNrZWRTaWduYWwoKVwiXG4gICAgICBbdGhlbWVdPVwidGhlbWVcIlxuICAgICAgW3hzbWFsbF09XCJ4c21hbGxcIj48L2FwcC1pbnB1dC1sYWJlbD5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBpbnB1dENvbnRDbGFzc1NpZ25hbCgpIH19IFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGlucHV0LWNvbnRlbnQgdy0xMDBcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbXMtMic6ICFzdGFja2VkU2lnbmFsKCksXG4gICAgICAgIHNob3dWYWxpZGF0aW9uSWNvbjogc2hvd1ZhbGlkYXRpb25TaWduYWwoKSB8fCBzaG93VmFsaWRhdGlvbkljb25TaWduYWwoKSxcbiAgICAgICAgZG9udEZvcm1hdEFzSW5wdXQ6IGRvbnRGb3JtYXRBc0lucHV0U2lnbmFsKClcbiAgICAgIH1cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZT5cbiAgICAgICAgPGRhdGUtaW5wdXRcbiAgICAgICAgICAjZGF0ZUlucHV0XG4gICAgICAgICAgW2RlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cImRhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCJcbiAgICAgICAgICBbaW5wdXRDbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICBbdmFsaWRdPVwidmFsaWRTaWduYWwoKVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwiaW52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2hvd1ZhbGlkYXRpb25TaWduYWwoKVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgQHN3aXRjaCAodHlwZVNpZ25hbCgpKSB7XG4gICAgICAgIDwhLS0gREFURSAtLT5cbiAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIERBVEVUSU1FLUxPQ0FMIC0tPlxuICAgICAgICBAY2FzZSAoJ2RhdGV0aW1lLWxvY2FsJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIENIRUNLQk9YIC0tPlxuICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnY2hlY2tlZGJveCcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWRlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBGSUxFIC0tPlxuICAgICAgICBAY2FzZSAoJ2ZpbGUnKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gRklMRSBCVVRUT04tLT5cbiAgICAgICAgQGNhc2UgKCdmaWxlQnV0dG9uJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCJcbiAgICAgICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgI2ZpbGUgLz5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICAobWNsaWNrKT1cImZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICBpY29uPVwidXBsb2FkXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImZpbGVzID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgdGV4dD1cInt7IHBsYWNlaG9sZGVyKCkgfHwgbGFiZWxTaWduYWwoKSB8fCAnVXBsb2FkJyB9fVwiPjwvYXBwLWJ0bj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFNFTEVDVCAtLT5cbiAgICAgICAgQGNhc2UgKCdzZWxlY3QnKSB7XG4gICAgICAgICAgPCEtLSBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiIC0tPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAjbWF0U2VsZWN0VGFnXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgbmFtZVN0clNpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwie3sgY2xzKCkgfX0ge3sgaW5wdXRDbGFzc1NpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlKHsgdGFyZ2V0OiAkZXZlbnQgfSlcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0VtcHR5T3B0aW9uU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIm51bGxcIiBjbGFzcz1cImVtcHR5LW9wdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IHBsYWNlaG9sZGVyKCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBvcHRpb25zKCk7IHRyYWNrIGl0ZW0uX2lkKSB7XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGVkT3B0aW9uKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIxMDAwXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAjZWxlPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZTogdHJhbnNsYXRlT3B0aW9ucygpIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFRFWFRBUkVBIC0tPlxuICAgICAgICBAY2FzZSAoJ3RleHRhcmVhJykge1xuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLW5vZm9ybWF0XT1cImNvbXB1dGVkTm9Gb3JtYXQoKVwiXG4gICAgICAgICAgICBbcm93c109XCJ0ZXh0YXJlYVJvd3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFJhZGlvIC0tPlxuICAgICAgICBAY2FzZSAoJ3JhZGlvJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2lnbmFsKClcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gVmlld2VyIC0tPlxuICAgICAgICBAY2FzZSAoJ3ZpZXdlcicpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLW5vZm9ybWF0XT1cImNvbXB1dGVkTm9Gb3JtYXQoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFBBU1NXT1JEIC0tPlxuICAgICAgICBAY2FzZSAoJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInt7IHNob3dQYXNzd29yZFNpZ25hbCgpID8gJ3RleHQnIDogJ3Bhc3N3b3JkJyB9fVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFttaW5dPVwibWluU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVTaWduYWwoKVwiIC8+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJwYXNzd29yZC1pY29ucyBwb2ludGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93UGFzc3dvcmRTaWduYWwuc2V0KCFzaG93UGFzc3dvcmRTaWduYWwoKSlcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd1Bhc3N3b3JkU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWUtc2xhc2hcIj48L2k+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBERUZBVUxUIC0tPlxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtcHJlZml4JzogISFwcmVmaXhTaWduYWwoKSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHJlYWRvbmx5U2lnbmFsKCkgfHwgZGlzYWJsZWRTaWduYWwoKVxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgQGlmIChwcmVmaXhTaWduYWwoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJlZml4LXZhbFwiICNwcmVmaXhWYWw+XG4gICAgICAgICAgICAgICAge3sgcHJlZml4U2lnbmFsKCkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImVsZS5pbm5lclRleHRcIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImVsZS5zY3JvbGxXaWR0aCA8PSBlbGUub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgICAjZWxlXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1vdHlwZV09XCJvVHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW21pbl09XCJtaW5TaWduYWwoKVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmIChkaXJ0eVNpZ25hbCgpICYmIChzaG93VmFsaWRhdGlvblNpZ25hbCgpIHx8IHNob3dWYWxpZGF0aW9uSWNvblNpZ25hbCgpKSkge1xuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgdmFsaWQ6IHZhbGlkU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgcGVuZGluZzogcGVuZGluZ1NpZ25hbCgpIH1cIiBjbGFzcz1cInZhbGlkaXR5LWljb25cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBpbnZhbGlkOiBpbnZhbGlkU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPCEtLSA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dFwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwie3tpbnAudHlwZX19XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImlucC5mb3JtQ29udHJvbFwiPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGlucC52bXNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsaWRhdGlvbnx2YWxpZGF0b3I6aW5wLmZvcm1Db250cm9sOmlucC5mb3JtQ29udHJvbD8udmFsdWVcIj5cbiAgICAgICAgICAgIHt7dmFsaWRhdGlvbi5tZXNzYWdlfHZhbGlkYXRpb25Nc2c6aW5wLnByZWZpeDppbnAuc3VmZml4fX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPiAtLT5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGVuZExhYmVsU2lnbmFsKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb2wtYXV0byB0ZXh0LXByaW1hcnkgbXMtMlwiXG4gICAgICAgIChjbGljayk9XCJpUy5sb2coZm9ybSgpKVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cImVuZExhYmVsVG9vbHRpcFNpZ25hbCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmNcIj5cbiAgICAgICAge3sgZW5kTGFiZWxTaWduYWwoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5AaWYgKHNob3dWYWxpZGF0aW9uTXNnU2lnbmFsKCkpIHtcbiAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2VcbiAgICBbbGFiZWxdPVwibGFiZWxTaWduYWwoKVwiXG4gICAgW21pbkxlbmd0aF09XCJtaW5MZW5ndGhcIlxuICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICBbY29udHJvbF09XCJjb250cm9sKClcIiAvPlxufVxuIl19
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFHVCxNQUFNLEVBRU4sS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVduRCxNQUFNLE9BQU8sbUJBT1gsU0FBUSxTQUF3QztJQTJCaEQsc0JBQXNCO0lBQ3RCLElBQTZCLGVBQWUsQ0FBQyxDQUFVO1FBQ3JELElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBc0IsUUFBUSxDQUFDLENBQW1CO1FBQ2hELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUFFLFFBQVEsQ0FBQztRQUMzQixJ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O3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBTXNCLGVBQWU7c0JBQTNDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUdELFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsU0FBUztnQkFNVyxTQUFTO3NCQUFuQyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGQ0lucHV0LCBJbnB1dFR5cGUsIElWYWxpZGF0aW9uTWVzc2FnZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBJbnB1dFByb3ZpZGVycywgSW5wdXRTaGFyZWRNb2R1bGVzIH0gZnJvbSAnLi9pbnB1dC1zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IERhdGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2UgfSBmcm9tICcuL2lucHV0LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IElPcHRpb24sIElucHV0U2VydmljZSB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pbnB1dC1iYXNpYyxhcHAtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IElucHV0UHJvdmlkZXJzLFxuICBpbXBvcnRzOiBbRGF0ZUlucHV0Q29tcG9uZW50LCBJbnB1dFNoYXJlZE1vZHVsZXNdLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dEJhc2ljQ29tcG9uZW50PFxuICAgIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgICB9ID0gYW55LFxuICAgIFRDb250cm9sID0gYW55LFxuICAgIFRPcHRpb24gPSBhbnksXG4gID5cbiAgZXh0ZW5kcyBJbnB1dEJhc2U8VEZvcm1Hcm91cCwgVENvbnRyb2wsIFRPcHRpb24+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nO1xuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoJ2lucHV0JykgaW5wOiBGQ0lucHV0O1xuICBASW5wdXQoKSBjb250ZXh0RGF0YTogYW55O1xuICBASW5wdXQoKSBkZWNpbWFsUG9pbnRzOiBudW1iZXI7XG4gIEBJbnB1dCgpIGZpbGVzOiBGaWxlW107XG4gIEBJbnB1dCgpIGhpZGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyB8IG51bWJlcjtcblxuICBvdmVycmlkZSByZWFkb25seSBjbGVhck9uRGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBASW5wdXQoKSBsYWJlbExpbms6IHN0cmluZztcbiAgQElucHV0KCkgbGJsQ2w6IHN0cmluZyA9ICcyJztcbiAgQElucHV0KCkgbGlnaHQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgb3B0aW9uc0Z1bmM6ICguLi52YWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIEBJbnB1dCgpIHRoZW1lOiBJbnB1dFRoZW1lID0gMTtcbiAgQElucHV0KCkgdm1zOiBJVmFsaWRhdGlvbk1lc3NhZ2VbXTtcbiAgQElucHV0KCkgeHNtYWxsOiBib29sZWFuO1xuICBAT3V0cHV0KCkgbVNlbGVjdGVkT3B0aW9uTGFiZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgb3B0aW9ucyQgPSBuZXcgUmVwbGF5U3ViamVjdDxJT3B0aW9uW10+KCk7XG4gIHZpZXdJbml0ZWQ6IGJvb2xlYW47XG4gIGZvcmNlUGF0Y2hlZDogYm9vbGVhbjtcblxuICAvLyBsYWJlbFZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgnc2V0Q3VycmVudERhdGUnKSBzZXQgX3NldEN1cnJlbnREYXRlKHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikgdGhpcy5jb250cm9sKCk/LnBhdGNoVmFsdWUobmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pO1xuICB9XG4gIEBJbnB1dCgnb3B0aW9ucycpIHNldCBfb3B0aW9ucyh2OiBUT3B0aW9uW10gfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgdGhpcy5yYXdPcHRpb25zU2lnbmFsLnNldCh2Py5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkgfHwgW10pO1xuICAgIHRoaXMub3B0aW9ucyQubmV4dCh0aGlzLm9wdGlvbnMoKSk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdtYXRTZWxlY3RUYWcnKSBtYXRTZWxlY3Q6IE1hdFNlbGVjdDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZSgpICYmIHRoaXMuY29udHJvbCgpICYmIHRoaXMudHlwZVNpZ25hbCgpID09ICdzZWxlY3QnKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCgpLmZvcm1hdHRlZFZhbHVlID0gKDxNYXRPcHRpb24+dGhpcy5tYXRTZWxlY3Q/LnNlbGVjdGVkKT8udmlld1ZhbHVlO1xuICAgICAgICB0aGlzLm1TZWxlY3RlZE9wdGlvbkxhYmVsLmVtaXQoKDxNYXRPcHRpb24+dGhpcy5tYXRTZWxlY3Q/LnNlbGVjdGVkKT8udmlld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9QaWNrVmFsdWVGaWVsZCgpKSB7XG4gICAgICBpZiAoIXRoaXMubGFiZWxUeXBlKCkpIHRoaXMubGFiZWxUeXBlLnNldCgnY2R0Jyk7XG4gICAgICBpZiAoIXRoaXMudmFsdWVGaWVsZCgpKSB0aGlzLnZhbHVlRmllbGQuc2V0KCdjb2RlJyBhcyBhbnkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5taW5TaWduYWwoKSA9PSAwICYmIHRoaXMubWF4U2lnbmFsKCkgPT0gMTAwKSB0aGlzLm9UeXBlU2lnbmFsLnNldCgncGVyY2VudGFnZScpO1xuXG4gICAgLy8gaWYgKHRoaXMudHlwZSA9PSAnc2VsZWN0JyB8fCB0aGlzLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpXG4gICAgLy8gICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocikgPT4ge1xuICAgIC8vICAgICB0aGlzLmxhYmVsVmFsdWUgPSB0aGlzLm9wdGlvbnMuZmluZCgoeCkgPT4geC52YWx1ZSA9PSByKT8ubGFiZWw7XG4gICAgLy8gICB9KTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmlkKVxuICAgIC8vIGlmICh0aGlzLmRpc2FibGVkKSB0aGlzLl9kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gdGhpcy52aWV3SW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGRpc2FibGVDb250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuY29udHJvbCgpKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkU2lnbmFsKCkpIHJldHVybjtcbiAgICBjb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIGNoYW5nZShlOiB7IHRhcmdldDogeyBjaGVja2VkPzogYm9vbGVhbjsgdmFsdWU6IGFueSB9IH0gfCBFdmVudCkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIGxldCB2YWw7XG4gICAgaWYgKHRoaXMudHlwZVNpZ25hbCgpID09ICdjaGVja2JveCcpIHtcbiAgICAgIHZhbCA9IGUudGFyZ2V0Py5bJ2NoZWNrZWQnXTtcbiAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKGUudGFyZ2V0Py5bJ2NoZWNrZWQnXSk7XG4gICAgfSBlbHNlIHZhbCA9IHRoaXMuY29udHJvbCgpPy5nZXRSYXdWYWx1ZSgpO1xuICAgIGlmICh0aGlzLnR5cGVTaWduYWwoKSA9PSAnbnVtYmVyJykge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBpZiAodGhpcy5vVHlwZVNpZ25hbCgpID09ICdwZXJjZW50YWdlJyAmJiAhdGhpcy5tYXhTaWduYWwoKSkge1xuICAgICAgICB0aGlzLm1heFNpZ25hbC5zZXQoMTAwKTtcbiAgICAgICAgdGhpcy5taW5TaWduYWwuc2V0KDApO1xuICAgICAgfVxuICAgICAgaWYgKHZhbCAhPSBudWxsICYmIHZhbCAhPSAnJykge1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgaWYgKHRoaXMubWF4U2lnbmFsKCkgJiYgK3ZhbCA+ICt0aGlzLm1heFNpZ25hbCgpKSB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSh0aGlzLm1heFNpZ25hbCgpKTtcbiAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgdGhpcy5taW5TaWduYWwoKSAhPSBudWxsICYmXG4gICAgICAgICAgdGhpcy5taW5TaWduYWwoKSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICArdmFsIDwgK3RoaXMubWluU2lnbmFsKClcbiAgICAgICAgKVxuICAgICAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKHRoaXMubWluU2lnbmFsKCkpO1xuICAgICAgICBpZiAodGhpcy5kZWNpbWFsUG9pbnRzICE9IHVuZGVmaW5lZCAmJiB0aGlzLmRlY2ltYWxQb2ludHMgIT0gbnVsbClcbiAgICAgICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSgrKCt2YWwpLnRvRml4ZWQodGhpcy5kZWNpbWFsUG9pbnRzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLm1heExlbmd0aCAmJiB0aGlzLmNvbnRyb2woKT8udmFsdWU/LnRvU3RyaW5nKCkubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpXG4gICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy50eXBlU2lnbmFsKCkgPT0gJ251bWJlcidcbiAgICAgICAgICA/ICt0aGlzLmNvbnRyb2woKT8uZ2V0UmF3VmFsdWUoKT8udG9TdHJpbmcoKS5zbGljZSgwLCB0aGlzLm1heExlbmd0aClcbiAgICAgICAgICA6IHRoaXMuY29udHJvbCgpPy5nZXRSYXdWYWx1ZSgpPy50b1N0cmluZygpLnNsaWNlKDAsIHRoaXMubWF4TGVuZ3RoKSxcbiAgICAgICk7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5jb250cm9sKCk/LmdldFJhd1ZhbHVlKCkpO1xuICAgIC8vIGRlYnVnZ2VyXG4gIH1cblxuICB1cGxvYWQoZSkge1xuICAgIHRoaXMuZmlsZXMgPSBlLnRhcmdldC5maWxlcztcbiAgICB0aGlzLm1jaGFuZ2UuZW1pdChlKTtcbiAgfVxufVxudHlwZSBJbnB1dFRoZW1lID0gMSB8IDI7XG5leHBvcnQgdHlwZSBPcHRpb25MYWJlbFR5cGUgPVxuICB8ICdhY2QnXG4gIHwgJ2JuaydcbiAgfCAnY2NkJ1xuICB8ICdjZCdcbiAgfCAnY2R0J1xuICB8ICdjZidcbiAgfCAnY2cnXG4gIHwgJ2NsJ1xuICB8ICdjbWQnXG4gIHwgJ2NuJ1xuICB8ICdjdCdcbiAgfCAnY3UnXG4gIHwgJ2dkJ1xuICB8ICdoYSdcbiAgfCAnaWQnXG4gIHwgJ2lmJ1xuICB8ICdpZmwnXG4gIHwgJ2lsJ1xuICB8ICdpdCdcbiAgfCAnbWQnXG4gIHwgJ25hJ1xuICB8ICdwZCdcbiAgfCAncGVwJ1xuICB8ICdwYW0nXG4gIHwgJ25mJ1xuICB8ICd0ZCdcbiAgfCAndGl0bGUnXG4gIHwgJ3VkJ1xuICB8ICd1ZidcbiAgfCAndmwnXG4gIHwgJ3Z2JztcblxuZXhwb3J0IHsgSU9wdGlvbiB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG4iLCI8IS0tIDxkaXY+Zm9ybSgpLmdldFJhd1ZhbHVlOiB7e2ZmfX08L2Rpdj4gLS0+XG5AaWYgKHZlcmJvc2UoKSkge1xuICA8ZGl2PmRpc2FibGVkU2lnbmFsOiB7eyBkaXNhYmxlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+dmFsaWRTaWduYWw6IHt7IHZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5pbnZhbGlkU2lnbmFsOiB7eyBpbnZhbGlkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj52YWx1ZVNpZ25hbDoge3sgdmFsdWVTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2Pmhhc1ZhbHVlOiB7eyBoYXNWYWx1ZSgpIH19PC9kaXY+XG4gIDxkaXY+ZGlydHlTaWduYWw6IHt7IGRpcnR5U2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj50b3VjaGVkU2lnbmFsOiB7eyB0b3VjaGVkU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5lcnJvcnNTaWduYWw6IHt7IGVycm9yc1NpZ25hbGpzb24oKSB9fTwvZGl2PlxuICA8ZGl2PnBlbmRpbmdTaWduYWw6IHt7IHBlbmRpbmdTaWduYWwoKSB9fTwvZGl2PlxuICA8ZGl2PnJlcXVpcmVkU2lnbmFsOiB7eyByZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+cHJpc3RpbmVTaWduYWw6IHt7IHByaXN0aW5lU2lnbmFsKCkgfX08L2Rpdj5cbiAgPGRpdj5jb250cm9sUmVxdWlyZWRTaWduYWw6IHt7IGNvbnRyb2xSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXY+aXNSZXF1aXJlZFNpZ25hbDoge3sgaXNSZXF1aXJlZFNpZ25hbCgpIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJcIj5vbkNvbnRyb2xPYnRhaW5lZExpc3QgTGVuZ3RoOiB7eyBvbkNvbnRyb2xPYnRhaW5lZExpc3QoKS5sZW5ndGggfX08L2Rpdj5cbn1cbjxkaXZcbiAgY2xhc3M9XCIgIGN1c3RvbS1pbnB1dCBhbGlnbi1pdGVtcy1jZW50ZXIge3sgdHlwZVNpZ25hbCgpIH19IGd4LTFcIlxuICBbZm9ybUdyb3VwXT1cImZvcm0oKSB8IHRvQW55XCJcbiAgW25nQ2xhc3NdPVwieyAnZC1mbGV4JzogIXN0YWNrZWRTaWduYWwoKSB9XCI+XG4gIEBpZiAoY29tcHV0ZWRTaG93TGFiZWwoKSkge1xuICAgIDxhcHAtaW5wdXQtbGFiZWxcbiAgICAgIFtjb2xvcmVkXT1cImNvbG9yZWRTaWduYWwoKVwiXG4gICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgW2hpbnRdPVwiaGludFwiXG4gICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICBbaW52YWxpZENoZWNrYm94XT1cImludmFsaWRDaGVja2JveFNpZ25hbCgpXCJcbiAgICAgIFtpc1JlcXVpcmVkXT1cImlzUmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICBbbGFiZWxdPVwibGFiZWxTaWduYWwoKVwiXG4gICAgICBbbGJsQ2xdPVwibGJsQ2xcIlxuICAgICAgW2xpZ2h0XT1cImxpZ2h0XCJcbiAgICAgIFttaW5pXT1cIm1pbmlTaWduYWwoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICd3LTEwMCc6IHN0YWNrZWRTaWduYWwoKSB9XCJcbiAgICAgIFtpbmxpbmVIaW50XT1cImlubGluZUhpbnRcIlxuICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzaG93UmVxdWlyZWRUYWdTaWduYWwoKVwiXG4gICAgICBbc2hvd0xhYmVsXT1cInNob3dMYWJlbFNpZ25hbCgpXCJcbiAgICAgIFtzbWFsbF09XCJzbWFsbFNpZ25hbCgpXCJcbiAgICAgIFtzdGFja2VkXT1cInN0YWNrZWRTaWduYWwoKVwiXG4gICAgICBbdGhlbWVdPVwidGhlbWVcIlxuICAgICAgW3hzbWFsbF09XCJ4c21hbGxcIj48L2FwcC1pbnB1dC1sYWJlbD5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBpbnB1dENvbnRDbGFzc1NpZ25hbCgpIH19IFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGlucHV0LWNvbnRlbnQgdy0xMDBcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbXMtMic6ICFzdGFja2VkU2lnbmFsKCksXG4gICAgICAgIHNob3dWYWxpZGF0aW9uSWNvbjogc2hvd1ZhbGlkYXRpb25TaWduYWwoKSB8fCBzaG93VmFsaWRhdGlvbkljb25TaWduYWwoKSxcbiAgICAgICAgZG9udEZvcm1hdEFzSW5wdXQ6IGRvbnRGb3JtYXRBc0lucHV0U2lnbmFsKClcbiAgICAgIH1cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZT5cbiAgICAgICAgPGRhdGUtaW5wdXRcbiAgICAgICAgICAjZGF0ZUlucHV0XG4gICAgICAgICAgW2RlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cImRhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCJcbiAgICAgICAgICBbaW5wdXRDbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICBbdmFsaWRdPVwidmFsaWRTaWduYWwoKVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwiaW52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2hvd1ZhbGlkYXRpb25TaWduYWwoKVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgQHN3aXRjaCAodHlwZVNpZ25hbCgpKSB7XG4gICAgICAgIDwhLS0gREFURSAtLT5cbiAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIERBVEVUSU1FLUxPQ0FMIC0tPlxuICAgICAgICBAY2FzZSAoJ2RhdGV0aW1lLWxvY2FsJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIENIRUNLQk9YIC0tPlxuICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnY2hlY2tlZGJveCcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWRlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBGSUxFIC0tPlxuICAgICAgICBAY2FzZSAoJ2ZpbGUnKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gRklMRSBCVVRUT04tLT5cbiAgICAgICAgQGNhc2UgKCdmaWxlQnV0dG9uJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCJcbiAgICAgICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgI2ZpbGUgLz5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICAobWNsaWNrKT1cImZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICBpY29uPVwidXBsb2FkXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImZpbGVzID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgdGV4dD1cInt7IHBsYWNlaG9sZGVyKCkgfHwgbGFiZWxTaWduYWwoKSB8fCAnVXBsb2FkJyB9fVwiPjwvYXBwLWJ0bj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFNFTEVDVCAtLT5cbiAgICAgICAgQGNhc2UgKCdzZWxlY3QnKSB7XG4gICAgICAgICAgPCEtLSBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiIC0tPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAjbWF0U2VsZWN0VGFnXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgbmFtZVN0clNpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwie3sgY2xzKCkgfX0ge3sgaW5wdXRDbGFzc1NpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlKHsgdGFyZ2V0OiAkZXZlbnQgfSlcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0VtcHR5T3B0aW9uU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIm51bGxcIiBjbGFzcz1cImVtcHR5LW9wdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IHBsYWNlaG9sZGVyKCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBvcHRpb25zKCk7IHRyYWNrIGl0ZW0uX2lkKSB7XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGVkT3B0aW9uKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIxMDAwXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAjZWxlPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZTogdHJhbnNsYXRlT3B0aW9ucygpIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFRFWFRBUkVBIC0tPlxuICAgICAgICBAY2FzZSAoJ3RleHRhcmVhJykge1xuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLW5vZm9ybWF0XT1cImNvbXB1dGVkTm9Gb3JtYXQoKVwiXG4gICAgICAgICAgICBbcm93c109XCJ0ZXh0YXJlYVJvd3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFJhZGlvIC0tPlxuICAgICAgICBAY2FzZSAoJ3JhZGlvJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2lnbmFsKClcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gVmlld2VyIC0tPlxuICAgICAgICBAY2FzZSAoJ3ZpZXdlcicpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLW5vZm9ybWF0XT1cImNvbXB1dGVkTm9Gb3JtYXQoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFBBU1NXT1JEIC0tPlxuICAgICAgICBAY2FzZSAoJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInt7IHNob3dQYXNzd29yZFNpZ25hbCgpID8gJ3RleHQnIDogJ3Bhc3N3b3JkJyB9fVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFttaW5dPVwibWluU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVTaWduYWwoKVwiIC8+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJwYXNzd29yZC1pY29ucyBwb2ludGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93UGFzc3dvcmRTaWduYWwuc2V0KCFzaG93UGFzc3dvcmRTaWduYWwoKSlcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd1Bhc3N3b3JkU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWUtc2xhc2hcIj48L2k+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBERUZBVUxUIC0tPlxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdoYXMtcHJlZml4JzogISFwcmVmaXhTaWduYWwoKSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHJlYWRvbmx5U2lnbmFsKCkgfHwgZGlzYWJsZWRTaWduYWwoKVxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgQGlmIChwcmVmaXhTaWduYWwoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJlZml4LXZhbFwiICNwcmVmaXhWYWw+XG4gICAgICAgICAgICAgICAge3sgcHJlZml4U2lnbmFsKCkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImVsZS5pbm5lclRleHRcIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImVsZS5zY3JvbGxXaWR0aCA8PSBlbGUub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgICAjZWxlXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1vdHlwZV09XCJvVHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW21pbl09XCJtaW5TaWduYWwoKVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmIChkaXJ0eVNpZ25hbCgpICYmIChzaG93VmFsaWRhdGlvblNpZ25hbCgpIHx8IHNob3dWYWxpZGF0aW9uSWNvblNpZ25hbCgpKSkge1xuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgdmFsaWQ6IHZhbGlkU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgcGVuZGluZzogcGVuZGluZ1NpZ25hbCgpIH1cIiBjbGFzcz1cInZhbGlkaXR5LWljb25cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBpbnZhbGlkOiBpbnZhbGlkU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPCEtLSA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dFwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwie3tpbnAudHlwZX19XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImlucC5mb3JtQ29udHJvbFwiPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uIG9mIGlucC52bXNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsaWRhdGlvbnx2YWxpZGF0b3I6aW5wLmZvcm1Db250cm9sOmlucC5mb3JtQ29udHJvbD8udmFsdWVcIj5cbiAgICAgICAgICAgIHt7dmFsaWRhdGlvbi5tZXNzYWdlfHZhbGlkYXRpb25Nc2c6aW5wLnByZWZpeDppbnAuc3VmZml4fX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPiAtLT5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGVuZExhYmVsU2lnbmFsKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb2wtYXV0byB0ZXh0LXByaW1hcnkgbXMtMlwiXG4gICAgICAgIChjbGljayk9XCJpUy5sb2coZm9ybSgpKVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cImVuZExhYmVsVG9vbHRpcFNpZ25hbCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmNcIj5cbiAgICAgICAge3sgZW5kTGFiZWxTaWduYWwoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5AaWYgKHNob3dWYWxpZGF0aW9uTXNnU2lnbmFsKCkpIHtcbiAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2VcbiAgICBbbGFiZWxdPVwibGFiZWxTaWduYWwoKVwiXG4gICAgW21pbkxlbmd0aF09XCJtaW5MZW5ndGhcIlxuICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICBbY29udHJvbF09XCJjb250cm9sKClcIiAvPlxufVxuIl19