@cqa-lib/cqa-ui 1.0.46 → 1.0.47

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 (35) hide show
  1. package/esm2020/lib/action-menu/action-menu.component.mjs +3 -3
  2. package/esm2020/lib/badge/badge.component.mjs +3 -3
  3. package/esm2020/lib/button/button.component.mjs +3 -3
  4. package/esm2020/lib/column-visibility/column-visibility.component.mjs +3 -3
  5. package/esm2020/lib/dashboards/chart-card/chart-card.component.mjs +3 -3
  6. package/esm2020/lib/dashboards/coverage-module-card/coverage-module-card.component.mjs +3 -3
  7. package/esm2020/lib/dashboards/dashboard-header/dashboard-header.component.mjs +3 -3
  8. package/esm2020/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.mjs +3 -3
  9. package/esm2020/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.mjs +3 -3
  10. package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +3 -3
  11. package/esm2020/lib/dashboards/metrics-card/metrics-block.component.mjs +3 -3
  12. package/esm2020/lib/dashboards/metrics-card/metrics-card.component.mjs +3 -3
  13. package/esm2020/lib/dashboards/progress-text-card/progress-text-card.component.mjs +3 -3
  14. package/esm2020/lib/dashboards/test-distribution-card/test-distribution-card.component.mjs +3 -3
  15. package/esm2020/lib/dialog/dialog.component.mjs +3 -3
  16. package/esm2020/lib/dropdown-button/dropdown-button.component.mjs +3 -3
  17. package/esm2020/lib/dynamic-select/dynamic-select-field.component.mjs +3 -3
  18. package/esm2020/lib/empty-state/empty-state.component.mjs +3 -3
  19. package/esm2020/lib/filters/dynamic-filter/dynamic-filter.component.mjs +3 -3
  20. package/esm2020/lib/other-button/other-button.component.mjs +3 -3
  21. package/esm2020/lib/pagination/pagination.component.mjs +3 -3
  22. package/esm2020/lib/search-bar/search-bar.component.mjs +3 -3
  23. package/esm2020/lib/segment-control/segment-control.component.mjs +3 -3
  24. package/esm2020/lib/selected-filters/selected-filters.component.mjs +3 -3
  25. package/esm2020/lib/table/dynamic-table/dynamic-table.component.mjs +3 -3
  26. package/esm2020/lib/table-action-toolbar/table-action-toolbar.component.mjs +3 -3
  27. package/esm2020/lib/templates/table-template.component.mjs +3 -3
  28. package/esm2020/lib/utils/tw-overlay-container.mjs +15 -15
  29. package/fesm2015/cqa-lib-cqa-ui.mjs +68 -68
  30. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  31. package/fesm2020/cqa-lib-cqa-ui.mjs +68 -68
  32. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  33. package/lib/utils/tw-overlay-container.d.ts +5 -5
  34. package/package.json +1 -1
  35. package/styles.css +1 -1
@@ -71,10 +71,10 @@ export class EmptyStateComponent {
71
71
  }
72
72
  }
73
73
  EmptyStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
74
- EmptyStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: EmptyStateComponent, selector: "cqa-empty-state", inputs: { preset: "preset", imageUrl: "imageUrl", title: "title", description: "description", actions: "actions" }, outputs: { actionClick: "actionClick" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"cqa-ui-root\" class=\"cqa-w-full cqa-h-full cqa-min-h-[200px] cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-py-8 cqa-px-4\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-6 cqa-items-center cqa-max-w-md cqa-w-full\">\n <!-- Icon Container -->\n <div *ngIf=\"displayImageUrl\" class=\"cqa-relative cqa-shrink-0 cqa-w-24 cqa-h-24 md:cqa-w-32 md:cqa-h-32\">\n <!-- Main Icon Container with Gradient Background and Shadow -->\n <div class=\"cqa-relative cqa-rounded-3xl cqa-w-full cqa-h-full cqa-shadow-sm\">\n <div class=\"cqa-absolute cqa-inset-0 cqa-bg-gradient-to-br cqa-from-indigo-500 cqa-to-violet-950 cqa-rounded-3xl cqa-opacity-10\"></div>\n <!-- Icon/Image centered inside on top layer - fully opaque -->\n <div class=\"cqa-absolute cqa-inset-0 cqa-flex cqa-items-center cqa-justify-center cqa-rounded-3xl\">\n <div class=\"cqa-w-3/4 cqa-h-3/4 cqa-flex cqa-items-center cqa-justify-center cqa-relative\">\n <img [src]=\"displayImageUrl\" alt=\"\" class=\"cqa-block cqa-max-w-full cqa-max-h-full cqa-w-full cqa-h-full cqa-object-contain\" />\n </div>\n </div>\n </div>\n <!-- Decorative Dots -->\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.815] cqa-hidden md:cqa-block\" style=\"right: -4px; top: -4px; width: 12px; height: 12px; z-index: 20;\"></div>\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.695] cqa-hidden md:cqa-block\" style=\"left: -4px; bottom: -4px; width: 10px; height: 10px; z-index: 20;\"></div>\n </div>\n\n <!-- Content Container -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-items-center cqa-w-full\">\n <!-- Title and Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-items-center cqa-w-full\">\n <!-- Title -->\n <div *ngIf=\"displayTitle\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <h3 class=\"cqa-font-inter cqa-text-base md:cqa-text-lg cqa-font-medium cqa-leading-tight cqa-text-center cqa-text-neutral-900 cqa-px-2\">\n {{ displayTitle }}\n </h3>\n </div>\n <!-- Description -->\n <div *ngIf=\"displayDescription\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <p class=\"cqa-font-inter cqa-font-medium cqa-text-sm cqa-leading-snug cqa-text-center cqa-text-neutral-500 cqa-px-2\">\n {{ displayDescription }}\n </p>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div\n *ngIf=\"displayActions && displayActions.length > 0\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-full cqa-flex-wrap\"\n [ngClass]=\"displayActions.length > 1 ? 'cqa-flex-row cqa-gap-3' : 'cqa-flex-col'\"\n >\n <cqa-button\n *ngFor=\"let action of displayActions\"\n [variant]=\"action.variant || 'filled'\"\n [icon]=\"action.icon\"\n [iconPosition]=\"action.iconPosition || 'start'\"\n [disabled]=\"action.disabled\"\n (clicked)=\"onActionClick(action, $event)\"\n class=\"cqa-w-full md:cqa-w-auto\"\n >\n {{ action.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n</div>\n\n", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
74
+ EmptyStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: EmptyStateComponent, selector: "cqa-empty-state", inputs: { preset: "preset", imageUrl: "imageUrl", title: "title", description: "description", actions: "actions" }, outputs: { actionClick: "actionClick" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-ui-root cqa-w-full cqa-h-full cqa-min-h-[200px] cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-py-8 cqa-px-4\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-6 cqa-items-center cqa-max-w-md cqa-w-full\">\n <!-- Icon Container -->\n <div *ngIf=\"displayImageUrl\" class=\"cqa-relative cqa-shrink-0 cqa-w-24 cqa-h-24 md:cqa-w-32 md:cqa-h-32\">\n <!-- Main Icon Container with Gradient Background and Shadow -->\n <div class=\"cqa-relative cqa-rounded-3xl cqa-w-full cqa-h-full cqa-shadow-sm\">\n <div class=\"cqa-absolute cqa-inset-0 cqa-bg-gradient-to-br cqa-from-indigo-500 cqa-to-violet-950 cqa-rounded-3xl cqa-opacity-10\"></div>\n <!-- Icon/Image centered inside on top layer - fully opaque -->\n <div class=\"cqa-absolute cqa-inset-0 cqa-flex cqa-items-center cqa-justify-center cqa-rounded-3xl\">\n <div class=\"cqa-w-3/4 cqa-h-3/4 cqa-flex cqa-items-center cqa-justify-center cqa-relative\">\n <img [src]=\"displayImageUrl\" alt=\"\" class=\"cqa-block cqa-max-w-full cqa-max-h-full cqa-w-full cqa-h-full cqa-object-contain\" />\n </div>\n </div>\n </div>\n <!-- Decorative Dots -->\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.815] cqa-hidden md:cqa-block\" style=\"right: -4px; top: -4px; width: 12px; height: 12px; z-index: 20;\"></div>\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.695] cqa-hidden md:cqa-block\" style=\"left: -4px; bottom: -4px; width: 10px; height: 10px; z-index: 20;\"></div>\n </div>\n\n <!-- Content Container -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-items-center cqa-w-full\">\n <!-- Title and Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-items-center cqa-w-full\">\n <!-- Title -->\n <div *ngIf=\"displayTitle\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <h3 class=\"cqa-font-inter cqa-text-base md:cqa-text-lg cqa-font-medium cqa-leading-tight cqa-text-center cqa-text-neutral-900 cqa-px-2\">\n {{ displayTitle }}\n </h3>\n </div>\n <!-- Description -->\n <div *ngIf=\"displayDescription\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <p class=\"cqa-font-inter cqa-font-medium cqa-text-sm cqa-leading-snug cqa-text-center cqa-text-neutral-500 cqa-px-2\">\n {{ displayDescription }}\n </p>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div\n *ngIf=\"displayActions && displayActions.length > 0\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-full cqa-flex-wrap\"\n [ngClass]=\"displayActions.length > 1 ? 'cqa-flex-row cqa-gap-3' : 'cqa-flex-col'\"\n >\n <cqa-button\n *ngFor=\"let action of displayActions\"\n [variant]=\"action.variant || 'filled'\"\n [icon]=\"action.icon\"\n [iconPosition]=\"action.iconPosition || 'start'\"\n [disabled]=\"action.disabled\"\n (clicked)=\"onActionClick(action, $event)\"\n class=\"cqa-w-full md:cqa-w-auto\"\n >\n {{ action.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n</div>\n\n", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
75
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: EmptyStateComponent, decorators: [{
76
76
  type: Component,
77
- args: [{ selector: 'cqa-empty-state', template: "<div id=\"cqa-ui-root\" class=\"cqa-w-full cqa-h-full cqa-min-h-[200px] cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-py-8 cqa-px-4\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-6 cqa-items-center cqa-max-w-md cqa-w-full\">\n <!-- Icon Container -->\n <div *ngIf=\"displayImageUrl\" class=\"cqa-relative cqa-shrink-0 cqa-w-24 cqa-h-24 md:cqa-w-32 md:cqa-h-32\">\n <!-- Main Icon Container with Gradient Background and Shadow -->\n <div class=\"cqa-relative cqa-rounded-3xl cqa-w-full cqa-h-full cqa-shadow-sm\">\n <div class=\"cqa-absolute cqa-inset-0 cqa-bg-gradient-to-br cqa-from-indigo-500 cqa-to-violet-950 cqa-rounded-3xl cqa-opacity-10\"></div>\n <!-- Icon/Image centered inside on top layer - fully opaque -->\n <div class=\"cqa-absolute cqa-inset-0 cqa-flex cqa-items-center cqa-justify-center cqa-rounded-3xl\">\n <div class=\"cqa-w-3/4 cqa-h-3/4 cqa-flex cqa-items-center cqa-justify-center cqa-relative\">\n <img [src]=\"displayImageUrl\" alt=\"\" class=\"cqa-block cqa-max-w-full cqa-max-h-full cqa-w-full cqa-h-full cqa-object-contain\" />\n </div>\n </div>\n </div>\n <!-- Decorative Dots -->\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.815] cqa-hidden md:cqa-block\" style=\"right: -4px; top: -4px; width: 12px; height: 12px; z-index: 20;\"></div>\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.695] cqa-hidden md:cqa-block\" style=\"left: -4px; bottom: -4px; width: 10px; height: 10px; z-index: 20;\"></div>\n </div>\n\n <!-- Content Container -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-items-center cqa-w-full\">\n <!-- Title and Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-items-center cqa-w-full\">\n <!-- Title -->\n <div *ngIf=\"displayTitle\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <h3 class=\"cqa-font-inter cqa-text-base md:cqa-text-lg cqa-font-medium cqa-leading-tight cqa-text-center cqa-text-neutral-900 cqa-px-2\">\n {{ displayTitle }}\n </h3>\n </div>\n <!-- Description -->\n <div *ngIf=\"displayDescription\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <p class=\"cqa-font-inter cqa-font-medium cqa-text-sm cqa-leading-snug cqa-text-center cqa-text-neutral-500 cqa-px-2\">\n {{ displayDescription }}\n </p>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div\n *ngIf=\"displayActions && displayActions.length > 0\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-full cqa-flex-wrap\"\n [ngClass]=\"displayActions.length > 1 ? 'cqa-flex-row cqa-gap-3' : 'cqa-flex-col'\"\n >\n <cqa-button\n *ngFor=\"let action of displayActions\"\n [variant]=\"action.variant || 'filled'\"\n [icon]=\"action.icon\"\n [iconPosition]=\"action.iconPosition || 'start'\"\n [disabled]=\"action.disabled\"\n (clicked)=\"onActionClick(action, $event)\"\n class=\"cqa-w-full md:cqa-w-auto\"\n >\n {{ action.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n</div>\n\n", styles: [] }]
77
+ args: [{ selector: 'cqa-empty-state', template: "<div class=\"cqa-ui-root cqa-w-full cqa-h-full cqa-min-h-[200px] cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-py-8 cqa-px-4\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-6 cqa-items-center cqa-max-w-md cqa-w-full\">\n <!-- Icon Container -->\n <div *ngIf=\"displayImageUrl\" class=\"cqa-relative cqa-shrink-0 cqa-w-24 cqa-h-24 md:cqa-w-32 md:cqa-h-32\">\n <!-- Main Icon Container with Gradient Background and Shadow -->\n <div class=\"cqa-relative cqa-rounded-3xl cqa-w-full cqa-h-full cqa-shadow-sm\">\n <div class=\"cqa-absolute cqa-inset-0 cqa-bg-gradient-to-br cqa-from-indigo-500 cqa-to-violet-950 cqa-rounded-3xl cqa-opacity-10\"></div>\n <!-- Icon/Image centered inside on top layer - fully opaque -->\n <div class=\"cqa-absolute cqa-inset-0 cqa-flex cqa-items-center cqa-justify-center cqa-rounded-3xl\">\n <div class=\"cqa-w-3/4 cqa-h-3/4 cqa-flex cqa-items-center cqa-justify-center cqa-relative\">\n <img [src]=\"displayImageUrl\" alt=\"\" class=\"cqa-block cqa-max-w-full cqa-max-h-full cqa-w-full cqa-h-full cqa-object-contain\" />\n </div>\n </div>\n </div>\n <!-- Decorative Dots -->\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.815] cqa-hidden md:cqa-block\" style=\"right: -4px; top: -4px; width: 12px; height: 12px; z-index: 20;\"></div>\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.695] cqa-hidden md:cqa-block\" style=\"left: -4px; bottom: -4px; width: 10px; height: 10px; z-index: 20;\"></div>\n </div>\n\n <!-- Content Container -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-items-center cqa-w-full\">\n <!-- Title and Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-items-center cqa-w-full\">\n <!-- Title -->\n <div *ngIf=\"displayTitle\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <h3 class=\"cqa-font-inter cqa-text-base md:cqa-text-lg cqa-font-medium cqa-leading-tight cqa-text-center cqa-text-neutral-900 cqa-px-2\">\n {{ displayTitle }}\n </h3>\n </div>\n <!-- Description -->\n <div *ngIf=\"displayDescription\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <p class=\"cqa-font-inter cqa-font-medium cqa-text-sm cqa-leading-snug cqa-text-center cqa-text-neutral-500 cqa-px-2\">\n {{ displayDescription }}\n </p>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div\n *ngIf=\"displayActions && displayActions.length > 0\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-full cqa-flex-wrap\"\n [ngClass]=\"displayActions.length > 1 ? 'cqa-flex-row cqa-gap-3' : 'cqa-flex-col'\"\n >\n <cqa-button\n *ngFor=\"let action of displayActions\"\n [variant]=\"action.variant || 'filled'\"\n [icon]=\"action.icon\"\n [iconPosition]=\"action.iconPosition || 'start'\"\n [disabled]=\"action.disabled\"\n (clicked)=\"onActionClick(action, $event)\"\n class=\"cqa-w-full md:cqa-w-auto\"\n >\n {{ action.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n</div>\n\n", styles: [] }]
78
78
  }], propDecorators: { preset: [{
79
79
  type: Input
80
80
  }], imageUrl: [{
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
88
88
  }], actionClick: [{
89
89
  type: Output
90
90
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBdUIsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQWdCM0YsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQVFXLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFFaEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdyRCxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGFBQVEsR0FBdUIsRUFBRSxDQUFDO0tBaUUzQztJQS9EQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsMkJBQTJCO1lBQzNCLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNMLHlDQUF5QztZQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUN4QywwRUFBMEU7UUFDMUUsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwRyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELHNEQUFzRDtRQUN0RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCwyQ0FBMkM7UUFDM0Msd0dBQXdHO1FBQ3hHLGtFQUFrRTtRQUNsRSxrREFBa0Q7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBd0IsRUFBRSxLQUFpQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzs7Z0hBNUVVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHlPQ2pCaEMsZ3ZHQTJEQTsyRkQxQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjs4QkFLbEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlUHJlc2V0S2V5LCBnZXRFbXB0eVN0YXRlUHJlc2V0IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS1wcmVzZXRzLmNvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlTdGF0ZUFjdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiAnZmlsbGVkJyB8ICdvdXRsaW5lZCcgfCAndGV4dCcgfCAnZWxldmF0ZWQnIHwgJ3RvbmFsJztcbiAgaWNvbj86IHN0cmluZztcbiAgaWNvblBvc2l0aW9uPzogJ3N0YXJ0JyB8ICdlbmQnO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZW1wdHktc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW1wdHktc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEVtcHR5U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcmVzZXQ/OiBFbXB0eVN0YXRlUHJlc2V0S2V5O1xuICBASW5wdXQoKSBpbWFnZVVybD86IHN0cmluZzsgLy8gVVJMIGZvciBpbWFnZVxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYWN0aW9uczogRW1wdHlTdGF0ZUFjdGlvbltdID0gW107XG5cbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFbXB0eVN0YXRlQWN0aW9uPigpO1xuXG4gIHByaXZhdGUgX2ltYWdlVXJsPzogc3RyaW5nO1xuICBwcml2YXRlIF90aXRsZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2Rlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfYWN0aW9uczogRW1wdHlTdGF0ZUFjdGlvbltdID0gW107XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXNldCkge1xuICAgICAgLy8gVXNlIHByZXNldCBjb25maWd1cmF0aW9uXG4gICAgICBjb25zdCBwcmVzZXRDb25maWcgPSBnZXRFbXB0eVN0YXRlUHJlc2V0KHRoaXMucHJlc2V0KTtcbiAgICAgIHRoaXMuX3RpdGxlID0gcHJlc2V0Q29uZmlnLnRpdGxlO1xuICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSBwcmVzZXRDb25maWcuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLl9pbWFnZVVybCA9IHRoaXMucmVzb2x2ZUltYWdlUGF0aChwcmVzZXRDb25maWcuaW1hZ2VVcmwpO1xuICAgICAgdGhpcy5fYWN0aW9ucyA9IFsuLi5wcmVzZXRDb25maWcuYWN0aW9uc107XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZSBtYW51YWwgaW5wdXRzIGlmIHByZXNldCBpcyBub3Qgc2V0XG4gICAgICB0aGlzLl90aXRsZSA9IHRoaXMudGl0bGU7XG4gICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHRoaXMuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLl9pbWFnZVVybCA9IHRoaXMuaW1hZ2VVcmwgPyB0aGlzLnJlc29sdmVJbWFnZVBhdGgodGhpcy5pbWFnZVVybCkgOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5hY3Rpb25zO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBpbWFnZSBwYXRoIHRvIHdvcmsgYm90aCBpbiBkZXZlbG9wbWVudCBhbmQgd2hlbiBjb25zdW1lZCBmcm9tIG5vZGVfbW9kdWxlc1xuICAgKiBUcmllcyBtdWx0aXBsZSBwYXRoIHN0cmF0ZWdpZXMgdG8gZmluZCB0aGUgaW1hZ2VcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUltYWdlUGF0aChpbWFnZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gSWYgdGhlIHBhdGggaXMgYWxyZWFkeSBhYnNvbHV0ZSBvciBzdGFydHMgd2l0aCBodHRwL2h0dHBzLCByZXR1cm4gYXMtaXNcbiAgICBpZiAoaW1hZ2VQYXRoLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBpbWFnZVBhdGguc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fCBpbWFnZVBhdGguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICByZXR1cm4gaW1hZ2VQYXRoO1xuICAgIH1cblxuICAgIC8vIElmIHBhdGggYWxyZWFkeSBpbmNsdWRlcyBub2RlX21vZHVsZXMsIHJldHVybiBhcy1pc1xuICAgIGlmIChpbWFnZVBhdGguaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XG4gICAgICByZXR1cm4gaW1hZ2VQYXRoO1xuICAgIH1cblxuICAgIC8vIFN0YW5kYXJkIGFwcHJvYWNoOiByZXR1cm4gdGhlIHBhdGggYXMtaXNcbiAgICAvLyBUaGUgY29uc3VtaW5nIGFwcGxpY2F0aW9uIHNob3VsZCBjb3B5IGFzc2V0cyBmcm9tIG5vZGVfbW9kdWxlcy9AY3FhLWxpYi9jcWEtdWkvc3JjL2xpYi9hc3NldHMvaW1hZ2VzL1xuICAgIC8vIHRvIGl0cyBvd24gYXNzZXRzL2ltYWdlcy8gZm9sZGVyIHZpYSBhbmd1bGFyLmpzb24gY29uZmlndXJhdGlvblxuICAgIC8vIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIEFuZ3VsYXIgbGlicmFyeSBwYXR0ZXJuXG4gICAgcmV0dXJuIGltYWdlUGF0aDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5VGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcmVzZXQgPyB0aGlzLl90aXRsZSA6IHRoaXMudGl0bGU7XG4gIH1cblxuICBnZXQgZGlzcGxheURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJlc2V0ID8gdGhpcy5fZGVzY3JpcHRpb24gOiB0aGlzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlJbWFnZVVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnByZXNldCA/IHRoaXMuX2ltYWdlVXJsIDogdGhpcy5pbWFnZVVybDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5QWN0aW9ucygpOiBFbXB0eVN0YXRlQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnByZXNldCA/IHRoaXMuX2FjdGlvbnMgOiB0aGlzLmFjdGlvbnM7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogRW1wdHlTdGF0ZUFjdGlvbiwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIWFjdGlvbi5kaXNhYmxlZCkge1xuICAgICAgaWYgKGFjdGlvbi5vbkNsaWNrKSB7XG4gICAgICAgIGFjdGlvbi5vbkNsaWNrKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBpZD1cImNxYS11aS1yb290XCIgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLWZ1bGwgY3FhLW1pbi1oLVsyMDBweF0gY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS04IGNxYS1weC00XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC02IGNxYS1pdGVtcy1jZW50ZXIgY3FhLW1heC13LW1kIGNxYS13LWZ1bGxcIj5cbiAgICA8IS0tIEljb24gQ29udGFpbmVyIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5SW1hZ2VVcmxcIiBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtc2hyaW5rLTAgY3FhLXctMjQgY3FhLWgtMjQgbWQ6Y3FhLXctMzIgbWQ6Y3FhLWgtMzJcIj5cbiAgICAgIDwhLS0gTWFpbiBJY29uIENvbnRhaW5lciB3aXRoIEdyYWRpZW50IEJhY2tncm91bmQgYW5kIFNoYWRvdyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLXJvdW5kZWQtM3hsIGNxYS13LWZ1bGwgY3FhLWgtZnVsbCBjcWEtc2hhZG93LXNtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLWluc2V0LTAgY3FhLWJnLWdyYWRpZW50LXRvLWJyIGNxYS1mcm9tLWluZGlnby01MDAgY3FhLXRvLXZpb2xldC05NTAgY3FhLXJvdW5kZWQtM3hsIGNxYS1vcGFjaXR5LTEwXCI+PC9kaXY+XG4gICAgICAgIDwhLS0gSWNvbi9JbWFnZSBjZW50ZXJlZCBpbnNpZGUgb24gdG9wIGxheWVyIC0gZnVsbHkgb3BhcXVlIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1pbnNldC0wIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1yb3VuZGVkLTN4bFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdy0zLzQgY3FhLWgtMy80IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImRpc3BsYXlJbWFnZVVybFwiIGFsdD1cIlwiIGNsYXNzPVwiY3FhLWJsb2NrIGNxYS1tYXgtdy1mdWxsIGNxYS1tYXgtaC1mdWxsIGNxYS13LWZ1bGwgY3FhLWgtZnVsbCBjcWEtb2JqZWN0LWNvbnRhaW5cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBEZWNvcmF0aXZlIERvdHMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWJnLXByaW1hcnktMzAwIGNxYS1vcGFjaXR5LVswLjgxNV0gY3FhLWhpZGRlbiBtZDpjcWEtYmxvY2tcIiBzdHlsZT1cInJpZ2h0OiAtNHB4OyB0b3A6IC00cHg7IHdpZHRoOiAxMnB4OyBoZWlnaHQ6IDEycHg7IHotaW5kZXg6IDIwO1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcm91bmRlZC1mdWxsIGNxYS1iZy1wcmltYXJ5LTMwMCBjcWEtb3BhY2l0eS1bMC42OTVdIGNxYS1oaWRkZW4gbWQ6Y3FhLWJsb2NrXCIgc3R5bGU9XCJsZWZ0OiAtNHB4OyBib3R0b206IC00cHg7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7IHotaW5kZXg6IDIwO1wiPjwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDb250ZW50IENvbnRhaW5lciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtaXRlbXMtY2VudGVyIGNxYS13LWZ1bGxcIj5cbiAgICAgIDwhLS0gVGl0bGUgYW5kIERlc2NyaXB0aW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtdy1mdWxsXCI+XG4gICAgICAgIDwhLS0gVGl0bGUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5VGl0bGVcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS13LWZ1bGxcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1iYXNlIG1kOmNxYS10ZXh0LWxnIGNxYS1mb250LW1lZGl1bSBjcWEtbGVhZGluZy10aWdodCBjcWEtdGV4dC1jZW50ZXIgY3FhLXRleHQtbmV1dHJhbC05MDAgY3FhLXB4LTJcIj5cbiAgICAgICAgICAgIHt7IGRpc3BsYXlUaXRsZSB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIERlc2NyaXB0aW9uIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheURlc2NyaXB0aW9uXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtdy1mdWxsXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjcWEtZm9udC1pbnRlciBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtc20gY3FhLWxlYWRpbmctc251ZyBjcWEtdGV4dC1jZW50ZXIgY3FhLXRleHQtbmV1dHJhbC01MDAgY3FhLXB4LTJcIj5cbiAgICAgICAgICAgIHt7IGRpc3BsYXlEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJkaXNwbGF5QWN0aW9ucyAmJiBkaXNwbGF5QWN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy1mdWxsIGNxYS1mbGV4LXdyYXBcIlxuICAgICAgICBbbmdDbGFzc109XCJkaXNwbGF5QWN0aW9ucy5sZW5ndGggPiAxID8gJ2NxYS1mbGV4LXJvdyBjcWEtZ2FwLTMnIDogJ2NxYS1mbGV4LWNvbCdcIlxuICAgICAgPlxuICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZGlzcGxheUFjdGlvbnNcIlxuICAgICAgICAgIFt2YXJpYW50XT1cImFjdGlvbi52YXJpYW50IHx8ICdmaWxsZWQnXCJcbiAgICAgICAgICBbaWNvbl09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgW2ljb25Qb3NpdGlvbl09XCJhY3Rpb24uaWNvblBvc2l0aW9uIHx8ICdzdGFydCdcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGlja2VkKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS13LWZ1bGwgbWQ6Y3FhLXctYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBhY3Rpb24ubGFiZWwgfX1cbiAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBdUIsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQWdCM0YsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQVFXLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFFaEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdyRCxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGFBQVEsR0FBdUIsRUFBRSxDQUFDO0tBaUUzQztJQS9EQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsMkJBQTJCO1lBQzNCLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNMLHlDQUF5QztZQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUN4QywwRUFBMEU7UUFDMUUsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwRyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELHNEQUFzRDtRQUN0RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCwyQ0FBMkM7UUFDM0Msd0dBQXdHO1FBQ3hHLGtFQUFrRTtRQUNsRSxrREFBa0Q7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBd0IsRUFBRSxLQUFpQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzs7Z0hBNUVVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHlPQ2pCaEMseXVHQTJEQTsyRkQxQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjs4QkFLbEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlUHJlc2V0S2V5LCBnZXRFbXB0eVN0YXRlUHJlc2V0IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS1wcmVzZXRzLmNvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlTdGF0ZUFjdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiAnZmlsbGVkJyB8ICdvdXRsaW5lZCcgfCAndGV4dCcgfCAnZWxldmF0ZWQnIHwgJ3RvbmFsJztcbiAgaWNvbj86IHN0cmluZztcbiAgaWNvblBvc2l0aW9uPzogJ3N0YXJ0JyB8ICdlbmQnO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZW1wdHktc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW1wdHktc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEVtcHR5U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcmVzZXQ/OiBFbXB0eVN0YXRlUHJlc2V0S2V5O1xuICBASW5wdXQoKSBpbWFnZVVybD86IHN0cmluZzsgLy8gVVJMIGZvciBpbWFnZVxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYWN0aW9uczogRW1wdHlTdGF0ZUFjdGlvbltdID0gW107XG5cbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFbXB0eVN0YXRlQWN0aW9uPigpO1xuXG4gIHByaXZhdGUgX2ltYWdlVXJsPzogc3RyaW5nO1xuICBwcml2YXRlIF90aXRsZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2Rlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfYWN0aW9uczogRW1wdHlTdGF0ZUFjdGlvbltdID0gW107XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXNldCkge1xuICAgICAgLy8gVXNlIHByZXNldCBjb25maWd1cmF0aW9uXG4gICAgICBjb25zdCBwcmVzZXRDb25maWcgPSBnZXRFbXB0eVN0YXRlUHJlc2V0KHRoaXMucHJlc2V0KTtcbiAgICAgIHRoaXMuX3RpdGxlID0gcHJlc2V0Q29uZmlnLnRpdGxlO1xuICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSBwcmVzZXRDb25maWcuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLl9pbWFnZVVybCA9IHRoaXMucmVzb2x2ZUltYWdlUGF0aChwcmVzZXRDb25maWcuaW1hZ2VVcmwpO1xuICAgICAgdGhpcy5fYWN0aW9ucyA9IFsuLi5wcmVzZXRDb25maWcuYWN0aW9uc107XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZSBtYW51YWwgaW5wdXRzIGlmIHByZXNldCBpcyBub3Qgc2V0XG4gICAgICB0aGlzLl90aXRsZSA9IHRoaXMudGl0bGU7XG4gICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHRoaXMuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLl9pbWFnZVVybCA9IHRoaXMuaW1hZ2VVcmwgPyB0aGlzLnJlc29sdmVJbWFnZVBhdGgodGhpcy5pbWFnZVVybCkgOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5hY3Rpb25zO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBpbWFnZSBwYXRoIHRvIHdvcmsgYm90aCBpbiBkZXZlbG9wbWVudCBhbmQgd2hlbiBjb25zdW1lZCBmcm9tIG5vZGVfbW9kdWxlc1xuICAgKiBUcmllcyBtdWx0aXBsZSBwYXRoIHN0cmF0ZWdpZXMgdG8gZmluZCB0aGUgaW1hZ2VcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUltYWdlUGF0aChpbWFnZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gSWYgdGhlIHBhdGggaXMgYWxyZWFkeSBhYnNvbHV0ZSBvciBzdGFydHMgd2l0aCBodHRwL2h0dHBzLCByZXR1cm4gYXMtaXNcbiAgICBpZiAoaW1hZ2VQYXRoLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBpbWFnZVBhdGguc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fCBpbWFnZVBhdGguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICByZXR1cm4gaW1hZ2VQYXRoO1xuICAgIH1cblxuICAgIC8vIElmIHBhdGggYWxyZWFkeSBpbmNsdWRlcyBub2RlX21vZHVsZXMsIHJldHVybiBhcy1pc1xuICAgIGlmIChpbWFnZVBhdGguaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XG4gICAgICByZXR1cm4gaW1hZ2VQYXRoO1xuICAgIH1cblxuICAgIC8vIFN0YW5kYXJkIGFwcHJvYWNoOiByZXR1cm4gdGhlIHBhdGggYXMtaXNcbiAgICAvLyBUaGUgY29uc3VtaW5nIGFwcGxpY2F0aW9uIHNob3VsZCBjb3B5IGFzc2V0cyBmcm9tIG5vZGVfbW9kdWxlcy9AY3FhLWxpYi9jcWEtdWkvc3JjL2xpYi9hc3NldHMvaW1hZ2VzL1xuICAgIC8vIHRvIGl0cyBvd24gYXNzZXRzL2ltYWdlcy8gZm9sZGVyIHZpYSBhbmd1bGFyLmpzb24gY29uZmlndXJhdGlvblxuICAgIC8vIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIEFuZ3VsYXIgbGlicmFyeSBwYXR0ZXJuXG4gICAgcmV0dXJuIGltYWdlUGF0aDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5VGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcmVzZXQgPyB0aGlzLl90aXRsZSA6IHRoaXMudGl0bGU7XG4gIH1cblxuICBnZXQgZGlzcGxheURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJlc2V0ID8gdGhpcy5fZGVzY3JpcHRpb24gOiB0aGlzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlJbWFnZVVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnByZXNldCA/IHRoaXMuX2ltYWdlVXJsIDogdGhpcy5pbWFnZVVybDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5QWN0aW9ucygpOiBFbXB0eVN0YXRlQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnByZXNldCA/IHRoaXMuX2FjdGlvbnMgOiB0aGlzLmFjdGlvbnM7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogRW1wdHlTdGF0ZUFjdGlvbiwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIWFjdGlvbi5kaXNhYmxlZCkge1xuICAgICAgaWYgKGFjdGlvbi5vbkNsaWNrKSB7XG4gICAgICAgIGFjdGlvbi5vbkNsaWNrKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290IGNxYS13LWZ1bGwgY3FhLWgtZnVsbCBjcWEtbWluLWgtWzIwMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXB5LTggY3FhLXB4LTRcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTYgY3FhLWl0ZW1zLWNlbnRlciBjcWEtbWF4LXctbWQgY3FhLXctZnVsbFwiPlxuICAgIDwhLS0gSWNvbiBDb250YWluZXIgLS0+XG4gICAgPGRpdiAqbmdJZj1cImRpc3BsYXlJbWFnZVVybFwiIGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS1zaHJpbmstMCBjcWEtdy0yNCBjcWEtaC0yNCBtZDpjcWEtdy0zMiBtZDpjcWEtaC0zMlwiPlxuICAgICAgPCEtLSBNYWluIEljb24gQ29udGFpbmVyIHdpdGggR3JhZGllbnQgQmFja2dyb3VuZCBhbmQgU2hhZG93IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtcm91bmRlZC0zeGwgY3FhLXctZnVsbCBjcWEtaC1mdWxsIGNxYS1zaGFkb3ctc21cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtaW5zZXQtMCBjcWEtYmctZ3JhZGllbnQtdG8tYnIgY3FhLWZyb20taW5kaWdvLTUwMCBjcWEtdG8tdmlvbGV0LTk1MCBjcWEtcm91bmRlZC0zeGwgY3FhLW9wYWNpdHktMTBcIj48L2Rpdj5cbiAgICAgICAgPCEtLSBJY29uL0ltYWdlIGNlbnRlcmVkIGluc2lkZSBvbiB0b3AgbGF5ZXIgLSBmdWxseSBvcGFxdWUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLWluc2V0LTAgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXJvdW5kZWQtM3hsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS13LTMvNCBjcWEtaC0zLzQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiZGlzcGxheUltYWdlVXJsXCIgYWx0PVwiXCIgY2xhc3M9XCJjcWEtYmxvY2sgY3FhLW1heC13LWZ1bGwgY3FhLW1heC1oLWZ1bGwgY3FhLXctZnVsbCBjcWEtaC1mdWxsIGNxYS1vYmplY3QtY29udGFpblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIERlY29yYXRpdmUgRG90cyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctcHJpbWFyeS0zMDAgY3FhLW9wYWNpdHktWzAuODE1XSBjcWEtaGlkZGVuIG1kOmNxYS1ibG9ja1wiIHN0eWxlPVwicmlnaHQ6IC00cHg7IHRvcDogLTRweDsgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDsgei1pbmRleDogMjA7XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWJnLXByaW1hcnktMzAwIGNxYS1vcGFjaXR5LVswLjY5NV0gY3FhLWhpZGRlbiBtZDpjcWEtYmxvY2tcIiBzdHlsZT1cImxlZnQ6IC00cHg7IGJvdHRvbTogLTRweDsgd2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDsgei1pbmRleDogMjA7XCI+PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnRlbnQgQ29udGFpbmVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00IGNxYS1pdGVtcy1jZW50ZXIgY3FhLXctZnVsbFwiPlxuICAgICAgPCEtLSBUaXRsZSBhbmQgRGVzY3JpcHRpb24gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtaXRlbXMtY2VudGVyIGNxYS13LWZ1bGxcIj5cbiAgICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlUaXRsZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLXctZnVsbFwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cImNxYS1mb250LWludGVyIGNxYS10ZXh0LWJhc2UgbWQ6Y3FhLXRleHQtbGcgY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLXRpZ2h0IGNxYS10ZXh0LWNlbnRlciBjcWEtdGV4dC1uZXV0cmFsLTkwMCBjcWEtcHgtMlwiPlxuICAgICAgICAgICAge3sgZGlzcGxheVRpdGxlIH19XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gRGVzY3JpcHRpb24gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5RGVzY3JpcHRpb25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS13LWZ1bGxcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cImNxYS1mb250LWludGVyIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1zbSBjcWEtbGVhZGluZy1zbnVnIGNxYS10ZXh0LWNlbnRlciBjcWEtdGV4dC1uZXV0cmFsLTUwMCBjcWEtcHgtMlwiPlxuICAgICAgICAgICAge3sgZGlzcGxheURlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImRpc3BsYXlBY3Rpb25zICYmIGRpc3BsYXlBY3Rpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LWZ1bGwgY3FhLWZsZXgtd3JhcFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImRpc3BsYXlBY3Rpb25zLmxlbmd0aCA+IDEgPyAnY3FhLWZsZXgtcm93IGNxYS1nYXAtMycgOiAnY3FhLWZsZXgtY29sJ1wiXG4gICAgICA+XG4gICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkaXNwbGF5QWN0aW9uc1wiXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiYWN0aW9uLnZhcmlhbnQgfHwgJ2ZpbGxlZCdcIlxuICAgICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uXCJcbiAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cImFjdGlvbi5pY29uUG9zaXRpb24gfHwgJ3N0YXJ0J1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwib25BY3Rpb25DbGljayhhY3Rpb24sICRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXctZnVsbCBtZDpjcWEtdy1hdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbCB9fVxuICAgICAgICA8L2NxYS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19