@testgorilla/tgo-ui 3.9.5 → 3.10.1

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 (46) hide show
  1. package/README.md +103 -95
  2. package/components/card/card.component.d.ts +9 -2
  3. package/components/icon-label/icon-label.component.d.ts +9 -2
  4. package/components/selectable-card/selectable-card.component.d.ts +34 -0
  5. package/components/selectable-card/selectable-card.component.module.d.ts +10 -0
  6. package/components/side-panel/side-panel.component.d.ts +5 -1
  7. package/components/side-panel/side-panel.model.d.ts +2 -0
  8. package/esm2022/components/ai-feedback/ai-feedback.component.mjs +3 -3
  9. package/esm2022/components/ai-feedback/ai-feedback.model.mjs +1 -1
  10. package/esm2022/components/ai-feedback/ai-feedback.module.mjs +1 -1
  11. package/esm2022/components/alert-banner/alert-banner.component.mjs +1 -1
  12. package/esm2022/components/card/card.component.mjs +13 -4
  13. package/esm2022/components/checklist/checklist.component.mjs +3 -3
  14. package/esm2022/components/checklist/checklist.model.mjs +1 -1
  15. package/esm2022/components/datepicker/datepicker.component.mjs +3 -3
  16. package/esm2022/components/icon/icon.config.mjs +1 -1
  17. package/esm2022/components/icon-label/icon-label.component.mjs +16 -4
  18. package/esm2022/components/progress-bar/progress-bar.component.mjs +1 -1
  19. package/esm2022/components/selectable-card/selectable-card.component.mjs +53 -0
  20. package/esm2022/components/selectable-card/selectable-card.component.module.mjs +20 -0
  21. package/esm2022/components/side-panel/side-panel.animations.mjs +1 -1
  22. package/esm2022/components/side-panel/side-panel.component.mjs +10 -5
  23. package/esm2022/components/side-panel/side-panel.model.mjs +2 -1
  24. package/esm2022/components/side-panel/side-panel.service.mjs +1 -1
  25. package/esm2022/pipes/ui-translate.pipe.mjs +1 -1
  26. package/esm2022/public-api.mjs +4 -1
  27. package/fesm2022/testgorilla-tgo-ui.mjs +106 -16
  28. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  29. package/package.json +1 -1
  30. package/projects/tgo-canopy-ui/assets/i18n/en.json +821 -821
  31. package/projects/tgo-canopy-ui/assets/icons/Switch-tab.svg +3 -3
  32. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-card-filled.svg +10 -10
  33. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-card-in-line.svg +10 -10
  34. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-filled.svg +3 -3
  35. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-in-line.svg +3 -3
  36. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invoice-filled.svg +3 -3
  37. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invoice-in-line.svg +3 -3
  38. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-lock-filled.svg +3 -3
  39. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-lock-in-line.svg +3 -3
  40. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-tab-filled.svg +3 -3
  41. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-tab-in-line.svg +3 -3
  42. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-down-filled.svg +3 -3
  43. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-down-in-line.svg +3 -3
  44. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-up-filled.svg +3 -3
  45. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-up-in-line.svg +3 -3
  46. package/public-api.d.ts +2 -0
package/README.md CHANGED
@@ -1,95 +1,103 @@
1
- # TestGorilla UI Library
2
-
3
- # Test app
4
-
5
- To see the updates of the library in the client app, use commands below from package.json
6
-
7
- - build the updated version of canopy-ui with `build:tgo-ui (ng build tgo-ui)`
8
- - restart the client app with `start:client (ng serve)`
9
-
10
- # Foundations
11
-
12
- - Typography
13
- - Colors
14
-
15
- # Components
16
-
17
- - Alert Bars
18
- - Alert Banner
19
- - Banner Actions
20
- - Snackbar
21
- - Button
22
- - Elevation Shadow
23
- - Dialog
24
- - Confirm Dialog
25
- - Custom Dialog
26
- - File Upload
27
- - Forms
28
- - Checkbox
29
- - Datepicker
30
- - Dropdown
31
- - Input Field
32
- - Radio
33
- - Icon
34
- - Icon + Label
35
- - Logo
36
- - Overflow Menu
37
- - Progress Bar
38
- - Tag
39
- - Tooltip
40
-
41
- # Deprecated
42
-
43
- - Card
44
- - Create Account
45
- - Create Password
46
- - Forgot Password
47
- - Label
48
- - Login
49
- - NavBar
50
- - Navigation
51
- - Paginator
52
- - Table
53
-
54
- ## Visual Regression
55
-
56
- We use Playwright to capture visual differences. The relevant code is in the `visual-tests` folder.
57
-
58
- ### Updating Snapshots
59
-
60
- To ensure consistency with CI, update snapshots using Docker:
61
-
62
- ```
63
- docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:latest /bin/bash
64
- npx playwright install
65
- npx playwright test visual-tests --config 'visual-tests/playwright.config.ts' --update-snapshots
66
- ```
67
-
68
- If you encounter the following error, it can be safely ignored. We need reports in a single directory for CI artifact storage:
69
-
70
- ```
71
- Configuration Error: HTML reporter output folder clashes with the tests output folder:
72
-
73
- html reporter folder: /work/test-results/html-report
74
- test results folder: /work/test-results
75
-
76
- HTML reporter will clear its output directory prior to being generated, which will lead to the artifact loss.
77
- ```
78
-
79
- ### Running Visual Tests
80
-
81
- Use Docker to align screenshots with the same OS:
82
-
83
- ```
84
- docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:latest /bin/bash
85
- npx playwright install
86
- npx playwright test visual-tests --config 'visual-tests/playwright.config.ts'
87
- ```
88
-
89
- ### Running Visual Tests for a single file
90
-
91
- ```
92
- npx playwright test visual-tests --config ‘visual-tests/playwright.config.ts’ -g ‘test_name’
93
- npx playwright test visual-tests/path_to_test_file --config ‘visual-tests/playwright.config.ts’
94
- ```
95
-
1
+ # TestGorilla UI Library
2
+
3
+ # Test app
4
+
5
+ To see the updates of the library in the client app, use commands below from package.json
6
+
7
+ - build the updated version of canopy-ui with `build:tgo-ui (ng build tgo-ui)`
8
+ - restart the client app with `start:client (ng serve)`
9
+
10
+ # Foundations
11
+
12
+ - Typography
13
+ - Colors
14
+
15
+ # Components
16
+
17
+ - Alert Bars
18
+ - Alert Banner
19
+ - Banner Actions
20
+ - Snackbar
21
+ - Button
22
+ - Elevation Shadow
23
+ - Dialog
24
+ - Confirm Dialog
25
+ - Custom Dialog
26
+ - File Upload
27
+ - Forms
28
+ - Checkbox
29
+ - Datepicker
30
+ - Dropdown
31
+ - Input Field
32
+ - Radio
33
+ - Icon
34
+ - Icon + Label
35
+ - Logo
36
+ - Overflow Menu
37
+ - Progress Bar
38
+ - Tag
39
+ - Tooltip
40
+
41
+ # Deprecated
42
+
43
+ - Card
44
+ - Create Account
45
+ - Create Password
46
+ - Forgot Password
47
+ - Label
48
+ - Login
49
+ - NavBar
50
+ - Navigation
51
+ - Paginator
52
+ - Table
53
+
54
+ ## Visual Regression Testing
55
+
56
+ The project uses **Playwright** for visual regression testing to ensure UI components maintain their visual appearance across changes. Visual tests automatically capture screenshots of all Storybook stories and compare them against stored snapshots.
57
+
58
+ ### Commands
59
+
60
+ ```bash
61
+ # Run visual tests
62
+ npm run visual-test
63
+
64
+ # Update snapshots when visual changes are intentional
65
+ npm run visual-test:update-snapshots
66
+ ```
67
+
68
+ ### How It Works
69
+
70
+ 1. **Build Phase**: Storybook is built (`npm run build-storybook`) creating static files
71
+ 2. **Docker Execution**: Tests run in a Linux container using `mcr.microsoft.com/playwright:v1.46.1` for consistency
72
+ 3. **Server Setup**: HTTP server serves Storybook static files on port 4200
73
+ 4. **Test Execution**: Automatically discovers and tests all stories from Storybook's `index.json`
74
+ 5. **Screenshot Comparison**: Compares current screenshots against stored snapshots
75
+
76
+ ### Docker Configuration
77
+
78
+ The system uses Docker Compose with two services:
79
+
80
+ - **visual-tests**: Runs tests and compares with existing snapshots
81
+ - **update-snapshots**: Updates snapshots when visual changes are expected
82
+
83
+ Both services:
84
+ - Use official Microsoft Playwright image (`mcr.microsoft.com/playwright:v1.46.1`)
85
+ - Mount project directory and install dependencies
86
+ - Start HTTP server and wait for Storybook availability
87
+ - Execute tests with Desktop Chrome viewport (1920x1200, 2x device scale)
88
+
89
+ ### Cross-Platform Consistency
90
+
91
+ Visual tests run in Docker to ensure:
92
+ - Consistent font rendering across operating systems
93
+ - Identical browser behavior regardless of host OS
94
+ - Reproducible results in CI/CD environments
95
+ - Linux-based snapshots that match production environments
96
+
97
+ ### Troubleshooting
98
+
99
+ - **Tests failing locally**: Run `npm run visual-test:update-snapshots` if changes are intentional
100
+ - **Font rendering differences**: Always use Docker commands for consistency
101
+ - **Timeout issues**: Server waits up to 60 seconds for Storybook to be ready
102
+ - **Memory issues**: Docker services configured with 4GB heap size
103
+
@@ -53,10 +53,17 @@ export declare class CardComponent implements OnChanges, OnInit {
53
53
  /**
54
54
  * Marks card as readonly. Defaults "false".
55
55
  *
56
- * @type {CardVariant}
56
+ * @type {boolean}
57
57
  * @memberof CardComponent
58
58
  */
59
59
  allowSelect: boolean;
60
+ /**
61
+ * Marks card as focusable. Defaults "true".
62
+ *
63
+ * @type {boolean}
64
+ * @memberof CardComponent
65
+ */
66
+ allowFocus: boolean;
60
67
  /**
61
68
  * Emits when card is being selected
62
69
  */
@@ -71,5 +78,5 @@ export declare class CardComponent implements OnChanges, OnInit {
71
78
  get isSelected(): boolean;
72
79
  selectCard(): void;
73
80
  static ɵfac: i0.ɵɵFactoryDeclaration<CardComponent, [{ optional: true; }, null]>;
74
- static ɵcmp: i0.ɵɵComponentDeclaration<CardComponent, "ui-card", never, { "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "errorsSize": { "alias": "errorsSize"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "allowSelect": { "alias": "allowSelect"; "required": false; }; }, { "cardSelected": "cardSelected"; }, never, ["*"], false, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<CardComponent, "ui-card", never, { "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "errorsSize": { "alias": "errorsSize"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "allowSelect": { "alias": "allowSelect"; "required": false; }; "allowFocus": { "alias": "allowFocus"; "required": false; }; }, { "cardSelected": "cardSelected"; }, never, ["*"], false, never>;
75
82
  }
@@ -1,6 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { IconName, IconSize } from '../../components/icon/icon.model';
3
- import { ApplicationTheme } from "../../models/application-theme.model";
3
+ import { ApplicationTheme } from '../../models/application-theme.model';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class IconLabelComponent implements OnInit {
6
6
  private readonly defaultAppTheme;
@@ -31,6 +31,13 @@ export declare class IconLabelComponent implements OnInit {
31
31
  * @memberof IconLabelComponent
32
32
  */
33
33
  iconColor?: string | undefined;
34
+ /**
35
+ * Indent between icon and label
36
+ *
37
+ * @type {string}
38
+ * @memberof IconLabelComponent
39
+ */
40
+ iconIndent?: string | undefined;
34
41
  /**
35
42
  *
36
43
  * Defines the application theme
@@ -42,5 +49,5 @@ export declare class IconLabelComponent implements OnInit {
42
49
  constructor(defaultAppTheme: ApplicationTheme);
43
50
  ngOnInit(): void;
44
51
  static ɵfac: i0.ɵɵFactoryDeclaration<IconLabelComponent, [{ optional: true; }]>;
45
- static ɵcmp: i0.ɵɵComponentDeclaration<IconLabelComponent, "ui-icon-label", never, { "iconSize": { "alias": "iconSize"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "text": { "alias": "text"; "required": false; }; "iconColor": { "alias": "iconColor"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, {}, never, never, false, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconLabelComponent, "ui-icon-label", never, { "iconSize": { "alias": "iconSize"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "text": { "alias": "text"; "required": false; }; "iconColor": { "alias": "iconColor"; "required": false; }; "iconIndent": { "alias": "iconIndent"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, {}, never, never, false, never>;
46
53
  }
@@ -0,0 +1,34 @@
1
+ import { CardSize } from '../card/card.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SelectableCardComponent {
4
+ /**
5
+ * Card size. Defaults to "medium".
6
+ */
7
+ size: import("@angular/core").InputSignal<CardSize>;
8
+ /**
9
+ * Whether the card is selected (input from parent).
10
+ */
11
+ selected: import("@angular/core").InputSignal<boolean>;
12
+ /**
13
+ * Whether the checkbox is disabled.
14
+ */
15
+ isCheckboxDisabled: import("@angular/core").InputSignal<boolean>;
16
+ /**
17
+ * Event emitted when the card is selected, with the current selected state.
18
+ */
19
+ cardSelected: import("@angular/core").OutputEmitterRef<boolean>;
20
+ /**
21
+ * Internal override for selected state (when user interacts).
22
+ */
23
+ private internalSelectedOverride;
24
+ /**
25
+ * Computed selected state that prioritizes user interaction over input.
26
+ */
27
+ isSelected: import("@angular/core").Signal<boolean>;
28
+ /**
29
+ * Handles card selection, toggles internal state and emits the new value.
30
+ */
31
+ handleSelect(): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<SelectableCardComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectableCardComponent, "ui-selectable-card", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "isCheckboxDisabled": { "alias": "isCheckboxDisabled"; "required": false; "isSignal": true; }; }, { "cardSelected": "cardSelected"; }, never, ["[ui-selectable-card-label]", "[ui-selectable-card-content]"], false, never>;
34
+ }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./selectable-card.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "../card/card.component.module";
5
+ import * as i4 from "../checkbox/checkbox.component.module";
6
+ export declare class SelectableCardComponentModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<SelectableCardComponentModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SelectableCardComponentModule, [typeof i1.SelectableCardComponent], [typeof i2.CommonModule, typeof i3.CardComponentModule, typeof i4.CheckboxComponentModule], [typeof i1.SelectableCardComponent]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<SelectableCardComponentModule>;
10
+ }
@@ -1,5 +1,5 @@
1
1
  import { ElementRef, ViewContainerRef } from '@angular/core';
2
- import { SidePanelAnimationState, SidePanelConfig, SidePanelPosition } from './side-panel.model';
2
+ import { SidePanelAnimationState, SidePanelConfig, SidePanelPosition, SidePanelSize } from './side-panel.model';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SidePanelComponent {
5
5
  sidePanelPosition: import("@angular/core").WritableSignal<SidePanelPosition>;
@@ -8,6 +8,10 @@ export declare class SidePanelComponent {
8
8
  backdrop: import("@angular/core").Signal<ElementRef<HTMLDivElement>>;
9
9
  language: import("@testgorilla/tgo-ui").Language;
10
10
  isOpen: import("@angular/core").WritableSignal<boolean>;
11
+ size: import("@angular/core").WritableSignal<SidePanelSize | undefined>;
12
+ isSmall: import("@angular/core").Signal<boolean>;
13
+ isMedium: import("@angular/core").Signal<boolean>;
14
+ isLarge: import("@angular/core").Signal<boolean>;
11
15
  animation: import("@angular/core").Signal<SidePanelAnimationState.Open | SidePanelAnimationState.ClosedRight | SidePanelAnimationState.ClosedLeft>;
12
16
  private sidePanelService;
13
17
  sidePanelConfig: SidePanelConfig;
@@ -6,6 +6,7 @@ export declare enum SidePanelAnimationState {
6
6
  ClosedRight = "closedRight",
7
7
  ClosedLeft = "closedLeft"
8
8
  }
9
+ export type SidePanelSize = 'small' | 'medium' | 'large';
9
10
  export declare class SidePanelConfig {
10
11
  title: string;
11
12
  position: SidePanelPosition;
@@ -14,6 +15,7 @@ export declare class SidePanelConfig {
14
15
  showCloseButton?: boolean;
15
16
  showHeader?: boolean;
16
17
  panelClass?: string;
18
+ size?: SidePanelSize;
17
19
  }
18
20
  export declare const defaultSidePanelConfig: SidePanelConfig;
19
21
  export declare const SIDE_PANEL_CONFIG: InjectionToken<SidePanelConfig>;
@@ -20,11 +20,11 @@ export class AiFeedbackComponent {
20
20
  this.selectedValue.emit(this.selected());
21
21
  }
22
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AiFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AiFeedbackComponent, selector: "ui-ai-feedback", inputs: { selection: "selection", tooltipPosition: "tooltipPosition" }, outputs: { selectedValue: "selectedValue" }, ngImport: i0, template: "<div class=\"ai-feedback\" [attr.aria-label]=\"'AI_FEEDBACK.TITLE' | uiTranslate\">\n <span>{{ 'AI_FEEDBACK.TITLE' | uiTranslate | async}}</span>\n <div class=\"ai-feedback-buttons\">\n @if(selected() !== optionNo) {\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-up-in-line'\"\n [size]=\"'small'\"\n [tooltipPosition]=\"tooltipPosition\"\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\n [iconFilled]=\"selected() === optionYes\"\n (buttonClickEvent)=\"onSelectionChange(optionYes)\"\n variant=\"icon-button\"\n role=\"button\"\n ></ui-button>\n }\n\n @if(selected() !== optionYes) {\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-down-in-line'\"\n [iconFilled]=\"selected() === optionNo\"\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\n [size]=\"'small'\"\n (buttonClickEvent)=\"onSelectionChange(optionNo)\"\n variant=\"icon-button\"\n role=\"button\"\n ></ui-button>\n }\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.ai-feedback,.ai-feedback-buttons{display:flex;flex-flow:row nowrap;align-items:center}.ai-feedback>span{color:#666;margin-right:16px}.ai-feedback-buttons{justify-content:center}.ai-feedback-buttons>ui-button:first-child{margin-right:8px}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: i2.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AiFeedbackComponent, selector: "ui-ai-feedback", inputs: { selection: "selection", tooltipPosition: "tooltipPosition" }, outputs: { selectedValue: "selectedValue" }, ngImport: i0, template: "<div class=\"ai-feedback\" [attr.aria-label]=\"'AI_FEEDBACK.TITLE' | uiTranslate\">\r\n <span>{{ 'AI_FEEDBACK.TITLE' | uiTranslate | async}}</span>\r\n <div class=\"ai-feedback-buttons\">\r\n @if(selected() !== optionNo) {\r\n <ui-button\r\n [justIcon]=\"true\"\r\n [iconName]=\"'Thumb-up-in-line'\"\r\n [size]=\"'small'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\r\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\r\n [iconFilled]=\"selected() === optionYes\"\r\n (buttonClickEvent)=\"onSelectionChange(optionYes)\"\r\n variant=\"icon-button\"\r\n role=\"button\"\r\n ></ui-button>\r\n }\r\n\r\n @if(selected() !== optionYes) {\r\n <ui-button\r\n [justIcon]=\"true\"\r\n [iconName]=\"'Thumb-down-in-line'\"\r\n [iconFilled]=\"selected() === optionNo\"\r\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\r\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\r\n [size]=\"'small'\"\r\n (buttonClickEvent)=\"onSelectionChange(optionNo)\"\r\n variant=\"icon-button\"\r\n role=\"button\"\r\n ></ui-button>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.ai-feedback,.ai-feedback-buttons{display:flex;flex-flow:row nowrap;align-items:center}.ai-feedback>span{color:#666;margin-right:16px}.ai-feedback-buttons{justify-content:center}.ai-feedback-buttons>ui-button:first-child{margin-right:8px}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: i2.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
24
  }
25
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AiFeedbackComponent, decorators: [{
26
26
  type: Component,
27
- args: [{ selector: 'ui-ai-feedback', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ai-feedback\" [attr.aria-label]=\"'AI_FEEDBACK.TITLE' | uiTranslate\">\n <span>{{ 'AI_FEEDBACK.TITLE' | uiTranslate | async}}</span>\n <div class=\"ai-feedback-buttons\">\n @if(selected() !== optionNo) {\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-up-in-line'\"\n [size]=\"'small'\"\n [tooltipPosition]=\"tooltipPosition\"\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\n [iconFilled]=\"selected() === optionYes\"\n (buttonClickEvent)=\"onSelectionChange(optionYes)\"\n variant=\"icon-button\"\n role=\"button\"\n ></ui-button>\n }\n\n @if(selected() !== optionYes) {\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-down-in-line'\"\n [iconFilled]=\"selected() === optionNo\"\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\n [size]=\"'small'\"\n (buttonClickEvent)=\"onSelectionChange(optionNo)\"\n variant=\"icon-button\"\n role=\"button\"\n ></ui-button>\n }\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.ai-feedback,.ai-feedback-buttons{display:flex;flex-flow:row nowrap;align-items:center}.ai-feedback>span{color:#666;margin-right:16px}.ai-feedback-buttons{justify-content:center}.ai-feedback-buttons>ui-button:first-child{margin-right:8px}\n"] }]
27
+ args: [{ selector: 'ui-ai-feedback', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ai-feedback\" [attr.aria-label]=\"'AI_FEEDBACK.TITLE' | uiTranslate\">\r\n <span>{{ 'AI_FEEDBACK.TITLE' | uiTranslate | async}}</span>\r\n <div class=\"ai-feedback-buttons\">\r\n @if(selected() !== optionNo) {\r\n <ui-button\r\n [justIcon]=\"true\"\r\n [iconName]=\"'Thumb-up-in-line'\"\r\n [size]=\"'small'\"\r\n [tooltipPosition]=\"tooltipPosition\"\r\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\r\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\r\n [iconFilled]=\"selected() === optionYes\"\r\n (buttonClickEvent)=\"onSelectionChange(optionYes)\"\r\n variant=\"icon-button\"\r\n role=\"button\"\r\n ></ui-button>\r\n }\r\n\r\n @if(selected() !== optionYes) {\r\n <ui-button\r\n [justIcon]=\"true\"\r\n [iconName]=\"'Thumb-down-in-line'\"\r\n [iconFilled]=\"selected() === optionNo\"\r\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\r\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\r\n [size]=\"'small'\"\r\n (buttonClickEvent)=\"onSelectionChange(optionNo)\"\r\n variant=\"icon-button\"\r\n role=\"button\"\r\n ></ui-button>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.ai-feedback,.ai-feedback-buttons{display:flex;flex-flow:row nowrap;align-items:center}.ai-feedback>span{color:#666;margin-right:16px}.ai-feedback-buttons{justify-content:center}.ai-feedback-buttons>ui-button:first-child{margin-right:8px}\n"] }]
28
28
  }], propDecorators: { selection: [{
29
29
  type: Input
30
30
  }], tooltipPosition: [{
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
32
32
  }], selectedValue: [{
33
33
  type: Output
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktZmVlZGJhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2FpLWZlZWRiYWNrL2FpLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9haS1mZWVkYmFjay9haS1mZWVkYmFjay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVeEcsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQVdXLG9CQUFlLEdBQW9CLE9BQU8sQ0FBQztRQUUxQyxrQkFBYSxHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUVyRyxhQUFRLEdBQUcsTUFBTSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUNwQyxjQUFTLEdBQXdCLEtBQUssQ0FBQztRQUN2QyxhQUFRLEdBQXdCLElBQUksQ0FBQztLQVEvQztJQWxCQyxJQUFhLFNBQVMsQ0FBQyxTQUE4QjtRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQVVELGlCQUFpQixDQUFDLFNBQThCO1FBQzlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBbEJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDJLQ1ZoQyx3ckNBaUNBOzs0RkR2QmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdsQyxTQUFTO3NCQUFyQixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBaUZlZWRiYWNrU2VsZWN0aW9uIH0gZnJvbSAnLi9haS1mZWVkYmFjay5tb2RlbCc7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktYWktZmVlZGJhY2snLFxuICB0ZW1wbGF0ZVVybDogJy4vYWktZmVlZGJhY2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYWktZmVlZGJhY2suY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWlGZWVkYmFja0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNldCBzZWxlY3Rpb24oc2VsZWN0aW9uOiBBaUZlZWRiYWNrU2VsZWN0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3RlZC5zZXQoc2VsZWN0aW9uIHx8IG51bGwpO1xuICB9XG5cbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSAnYWJvdmUnO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlOiBFdmVudEVtaXR0ZXI8QWlGZWVkYmFja1NlbGVjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFpRmVlZGJhY2tTZWxlY3Rpb24+KCk7XG5cbiAgc2VsZWN0ZWQgPSBzaWduYWw8QWlGZWVkYmFja1NlbGVjdGlvbj4obnVsbCk7XG4gIHJlYWRvbmx5IG9wdGlvblllczogQWlGZWVkYmFja1NlbGVjdGlvbiA9ICd5ZXMnO1xuICByZWFkb25seSBvcHRpb25ObzogQWlGZWVkYmFja1NlbGVjdGlvbiA9ICdubyc7XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uOiBBaUZlZWRiYWNrU2VsZWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnNlbGVjdGVkKCkgPT09IHNlbGVjdGlvbiA/IG51bGwgOiBzZWxlY3Rpb247XG4gICAgdGhpcy5zZWxlY3RlZC5zZXQobmV3VmFsdWUpO1xuXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQodGhpcy5zZWxlY3RlZCgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFpLWZlZWRiYWNrXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQUlfRkVFREJBQ0suVElUTEUnIHwgdWlUcmFuc2xhdGVcIj5cbiAgPHNwYW4+e3sgJ0FJX0ZFRURCQUNLLlRJVExFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fTwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cImFpLWZlZWRiYWNrLWJ1dHRvbnNcIj5cbiAgICBAaWYoc2VsZWN0ZWQoKSAhPT0gb3B0aW9uTm8pIHtcbiAgICAgIDx1aS1idXR0b25cbiAgICAgICAgW2p1c3RJY29uXT1cInRydWVcIlxuICAgICAgICBbaWNvbk5hbWVdPVwiJ1RodW1iLXVwLWluLWxpbmUnXCJcbiAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiKCdDT01NT04uWUVTJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiKCdDT01NT04uWUVTJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgIFtpY29uRmlsbGVkXT1cInNlbGVjdGVkKCkgPT09IG9wdGlvblllc1wiXG4gICAgICAgIChidXR0b25DbGlja0V2ZW50KT1cIm9uU2VsZWN0aW9uQ2hhbmdlKG9wdGlvblllcylcIlxuICAgICAgICB2YXJpYW50PVwiaWNvbi1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgID48L3VpLWJ1dHRvbj5cbiAgICB9XG5cbiAgICBAaWYoc2VsZWN0ZWQoKSAhPT0gb3B0aW9uWWVzKSB7XG4gICAgICA8dWktYnV0dG9uXG4gICAgICAgIFtqdXN0SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgW2ljb25OYW1lXT1cIidUaHVtYi1kb3duLWluLWxpbmUnXCJcbiAgICAgICAgW2ljb25GaWxsZWRdPVwic2VsZWN0ZWQoKSA9PT0gb3B0aW9uTm9cIlxuICAgICAgICBbdG9vbHRpcF09XCIoJ0NPTU1PTi5OTycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cIignQ09NTU9OLk5PJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAoYnV0dG9uQ2xpY2tFdmVudCk9XCJvblNlbGVjdGlvbkNoYW5nZShvcHRpb25ObylcIlxuICAgICAgICB2YXJpYW50PVwiaWNvbi1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgID48L3VpLWJ1dHRvbj5cbiAgICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktZmVlZGJhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2FpLWZlZWRiYWNrL2FpLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9haS1mZWVkYmFjay9haS1mZWVkYmFjay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVeEcsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQVdXLG9CQUFlLEdBQW9CLE9BQU8sQ0FBQztRQUUxQyxrQkFBYSxHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUVyRyxhQUFRLEdBQUcsTUFBTSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUNwQyxjQUFTLEdBQXdCLEtBQUssQ0FBQztRQUN2QyxhQUFRLEdBQXdCLElBQUksQ0FBQztLQVEvQztJQWxCQyxJQUFhLFNBQVMsQ0FBQyxTQUE4QjtRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQVVELGlCQUFpQixDQUFDLFNBQThCO1FBQzlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBbEJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDJLQ1ZoQywwdkNBaUNBOzs0RkR2QmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdsQyxTQUFTO3NCQUFyQixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFpRmVlZGJhY2tTZWxlY3Rpb24gfSBmcm9tICcuL2FpLWZlZWRiYWNrLm1vZGVsJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWFpLWZlZWRiYWNrJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWktZmVlZGJhY2suY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9haS1mZWVkYmFjay5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBaUZlZWRiYWNrQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzZXQgc2VsZWN0aW9uKHNlbGVjdGlvbjogQWlGZWVkYmFja1NlbGVjdGlvbikge1xyXG4gICAgdGhpcy5zZWxlY3RlZC5zZXQoc2VsZWN0aW9uIHx8IG51bGwpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSAnYWJvdmUnO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPEFpRmVlZGJhY2tTZWxlY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxBaUZlZWRiYWNrU2VsZWN0aW9uPigpO1xyXG5cclxuICBzZWxlY3RlZCA9IHNpZ25hbDxBaUZlZWRiYWNrU2VsZWN0aW9uPihudWxsKTtcclxuICByZWFkb25seSBvcHRpb25ZZXM6IEFpRmVlZGJhY2tTZWxlY3Rpb24gPSAneWVzJztcclxuICByZWFkb25seSBvcHRpb25ObzogQWlGZWVkYmFja1NlbGVjdGlvbiA9ICdubyc7XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGlvbjogQWlGZWVkYmFja1NlbGVjdGlvbik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnNlbGVjdGVkKCkgPT09IHNlbGVjdGlvbiA/IG51bGwgOiBzZWxlY3Rpb247XHJcbiAgICB0aGlzLnNlbGVjdGVkLnNldChuZXdWYWx1ZSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQodGhpcy5zZWxlY3RlZCgpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFpLWZlZWRiYWNrXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQUlfRkVFREJBQ0suVElUTEUnIHwgdWlUcmFuc2xhdGVcIj5cclxuICA8c3Bhbj57eyAnQUlfRkVFREJBQ0suVElUTEUnIHwgdWlUcmFuc2xhdGUgfCBhc3luY319PC9zcGFuPlxyXG4gIDxkaXYgY2xhc3M9XCJhaS1mZWVkYmFjay1idXR0b25zXCI+XHJcbiAgICBAaWYoc2VsZWN0ZWQoKSAhPT0gb3B0aW9uTm8pIHtcclxuICAgICAgPHVpLWJ1dHRvblxyXG4gICAgICAgIFtqdXN0SWNvbl09XCJ0cnVlXCJcclxuICAgICAgICBbaWNvbk5hbWVdPVwiJ1RodW1iLXVwLWluLWxpbmUnXCJcclxuICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgICAgW3Rvb2x0aXBdPVwiKCdDT01NT04uWUVTJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgW2FyaWFMYWJlbF09XCIoJ0NPTU1PTi5ZRVMnIHwgdWlUcmFuc2xhdGUgfCBhc3luYykhXCJcclxuICAgICAgICBbaWNvbkZpbGxlZF09XCJzZWxlY3RlZCgpID09PSBvcHRpb25ZZXNcIlxyXG4gICAgICAgIChidXR0b25DbGlja0V2ZW50KT1cIm9uU2VsZWN0aW9uQ2hhbmdlKG9wdGlvblllcylcIlxyXG4gICAgICAgIHZhcmlhbnQ9XCJpY29uLWJ1dHRvblwiXHJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgID48L3VpLWJ1dHRvbj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYoc2VsZWN0ZWQoKSAhPT0gb3B0aW9uWWVzKSB7XHJcbiAgICAgIDx1aS1idXR0b25cclxuICAgICAgICBbanVzdEljb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgW2ljb25OYW1lXT1cIidUaHVtYi1kb3duLWluLWxpbmUnXCJcclxuICAgICAgICBbaWNvbkZpbGxlZF09XCJzZWxlY3RlZCgpID09PSBvcHRpb25Ob1wiXHJcbiAgICAgICAgW3Rvb2x0aXBdPVwiKCdDT01NT04uTk8nIHwgdWlUcmFuc2xhdGUgfCBhc3luYykhXCJcclxuICAgICAgICBbYXJpYUxhYmVsXT1cIignQ09NTU9OLk5PJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXHJcbiAgICAgICAgKGJ1dHRvbkNsaWNrRXZlbnQpPVwib25TZWxlY3Rpb25DaGFuZ2Uob3B0aW9uTm8pXCJcclxuICAgICAgICB2YXJpYW50PVwiaWNvbi1idXR0b25cIlxyXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICA+PC91aS1idXR0b24+XHJcbiAgICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktZmVlZGJhY2subW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvYWktZmVlZGJhY2svYWktZmVlZGJhY2subW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFpRmVlZGJhY2tTZWxlY3Rpb24gPSAneWVzJyB8ICdubycgfCBudWxsO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktZmVlZGJhY2subW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvYWktZmVlZGJhY2svYWktZmVlZGJhY2subW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFpRmVlZGJhY2tTZWxlY3Rpb24gPSAneWVzJyB8ICdubycgfCBudWxsO1xyXG4iXX0=
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
17
17
  exports: [AiFeedbackComponent],
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktZmVlZGJhY2subW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2FpLWZlZWRiYWNrL2FpLWZlZWRiYWNrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBTzVDLE1BQU0sT0FBTyxnQkFBZ0I7K0dBQWhCLGdCQUFnQjtnSEFBaEIsZ0JBQWdCLGlCQUpaLG1CQUFtQixhQUN4QixxQkFBcUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxhQUNqRCxtQkFBbUI7Z0hBRWxCLGdCQUFnQixZQUhqQixxQkFBcUI7OzRGQUdwQixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUM7b0JBQzVELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBaUZlZWRiYWNrQ29tcG9uZW50IH0gZnJvbSAnLi9haS1mZWVkYmFjay5jb21wb25lbnQnO1xuaW1wb3J0IHsgVWlUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdWktdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQubW9kdWxlJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0FpRmVlZGJhY2tDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQnV0dG9uQ29tcG9uZW50TW9kdWxlLCBVaVRyYW5zbGF0ZVBpcGUsIEFzeW5jUGlwZV0sXG4gIGV4cG9ydHM6IFtBaUZlZWRiYWNrQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQWlGZWVkYmFja01vZHVsZSB7fVxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktZmVlZGJhY2subW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2FpLWZlZWRiYWNrL2FpLWZlZWRiYWNrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBTzVDLE1BQU0sT0FBTyxnQkFBZ0I7K0dBQWhCLGdCQUFnQjtnSEFBaEIsZ0JBQWdCLGlCQUpaLG1CQUFtQixhQUN4QixxQkFBcUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxhQUNqRCxtQkFBbUI7Z0hBRWxCLGdCQUFnQixZQUhqQixxQkFBcUI7OzRGQUdwQixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUM7b0JBQzVELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFpRmVlZGJhY2tDb21wb25lbnQgfSBmcm9tICcuL2FpLWZlZWRiYWNrLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3VpLXRyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQubW9kdWxlJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbQWlGZWVkYmFja0NvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW0J1dHRvbkNvbXBvbmVudE1vZHVsZSwgVWlUcmFuc2xhdGVQaXBlLCBBc3luY1BpcGVdLFxyXG4gIGV4cG9ydHM6IFtBaUZlZWRiYWNrQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFpRmVlZGJhY2tNb2R1bGUge31cclxuIl19
@@ -195,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
195
195
  type: HostBinding,
196
196
  args: ['class.display-none']
197
197
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtYmFubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hbGVydC1iYW5uZXIvYWxlcnQtYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hbGVydC1iYW5uZXIvYWxlcnQtYmFubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBZTdELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDNkUsZUFBaUMsRUFDcEcsWUFBMEI7UUFEeUMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ3BHLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBT3BDOzs7Ozs7V0FNRztRQUNNLGNBQVMsR0FBaUIsU0FBUyxDQUFDO1FBRTdDOzs7Ozs7V0FNRztRQUNNLGlCQUFZLEdBQWlCLFFBQVEsQ0FBQztRQVcvQzs7Ozs7V0FLRztRQUNNLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUVyQzs7Ozs7V0FLRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFeEI7Ozs7O1dBS0c7UUFDTSxhQUFRLEdBQUksRUFBRSxDQUFDO1FBU3hCOzs7Ozs7V0FNRztRQUNNLGVBQVUsR0FBb0IsUUFBUSxDQUFDO1FBRWhEOzs7Ozs7O1dBT0c7UUFDTSxxQkFBZ0IsR0FBcUIsT0FBTyxDQUFDO1FB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QkFDbkIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUN2RSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3ZFLENBQUM7cUJBQ0gsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQUk1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9DQUFvQztvRUFlakQsU0FBUztzQkFBakIsS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9PLE9BQU87c0JBQW5CLEtBQUs7Z0JBVUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQVFHLE1BQU07c0JBQWQsS0FBSztnQkFRRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLE9BQU87c0JBQWYsS0FBSztnQkFTRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFRRyxXQUFXO3NCQUFuQixLQUFLO2dCQVNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFTRyxPQUFPO3NCQUFmLEtBQUs7Z0JBU0csS0FBSztzQkFBYixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRU8sZUFBZTtzQkFBM0IsS0FBSztnQkFJaUMsV0FBVztzQkFBakQsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBJY29uTmFtZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaWNvbi9pY29uLm1vZGVsJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWwnO1xuaW1wb3J0IHsgQWxlcnRCYXJUeXBlLCBBbGVydFZhcmlhbnQgfSBmcm9tICcuLi8uLi91dGlscy9hbGVydC1iYXIubW9kZWwnO1xuaW1wb3J0IHsgYWxlcnRCYXJzVXRpbCB9IGZyb20gJy4uLy4uL3V0aWxzL2FsZXJ0LWJhcnMudXRpbHMnO1xuaW1wb3J0IHsgTGlua1RhcmdldFR5cGUgfSBmcm9tICcuL2FsZXJ0LWJhbm5lci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWFsZXJ0LWJhbm5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC1iYW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC1iYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ29wZW5DbG9zZScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFthbmltYXRlKCcwLjJzIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKV0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW2FuaW1hdGUoJzAuMnMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSldKSxcbiAgICBdKSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0QmFubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsZXJ0IEJhbm5lciB0eXBlXG4gICAqXG4gICAqIEB0eXBlIHtBbGVydEJhclR5cGV9XG4gICAqIEBkZWZhdWx0ICdzdWNjZXNzJ1xuICAgKiBAbWVtYmVyb2YgQWxlcnRCYW5uZXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFsZXJ0VHlwZTogQWxlcnRCYXJUeXBlID0gJ3N1Y2Nlc3MnO1xuXG4gIC8qKlxuICAgKiBBbGVydCBCYW5uZXIgdmFyaWFudFxuICAgKlxuICAgKiBAdHlwZSB7QWxlcnRWYXJpYW50fVxuICAgKiBAZGVmYXVsdCAnYmFubmVyJ1xuICAgKiBAbWVtYmVyb2YgQWxlcnRCYW5uZXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFsZXJ0VmFyaWFudDogQWxlcnRWYXJpYW50ID0gJ2Jhbm5lcic7XG5cbiAgLyoqXG4gICAqIEFsZXJ0IGJhbm5lciBtZXNzYWdlXG4gICAqXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IG1lc3NhZ2UobXNnOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9tZXNzYWdlID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobXNnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmNsdWRlIGRpc21taXNzIGJ1dHRvblxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaW5jbHVkZURpc21pc3NCdXR0b24gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIHNoYWRvdyBvciBub3RcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzaGFkb3cgPSBmYWxzZTtcblxuICAvKipcbiAgICogTGluayB0ZXh0IHRoYXQgd2lsbCBhcHBlbmRlZCBhdCB0aGUgZW5kIG9mIG1lc3NhZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgJydcbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsaW5rVGV4dD8gPSAnJztcblxuICAvKipcbiAgICogTGluayB1cmxcbiAgICpcbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsaW5rVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaW5rIHRhcmdldFxuICAgKlxuICAgKiBAdHlwZSB7QHR5cGUge0xpbmtUYXJnZXRUeXBlfX1cbiAgICogQGRlZmF1bHQgJ19ibGFuaydcbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsaW5rVGFyZ2V0PzogTGlua1RhcmdldFR5cGUgPSAnX2JsYW5rJztcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBkZWZhdWx0ICdsaWdodCdcbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogU2V0cyB0aGUgZnVsbCB3aWR0aFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBpc0Z1bGxXaWR0aDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ2xvc2UgYnV0dG9uIHRvb2x0aXBcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJydcbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjbG9zZUJ1dHRvblRvb2x0aXAgPSAnJztcblxuICAvKipcbiAgICogU2hvd3MgaWNvblxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAbWVtYmVyb2YgQWxlcnRCYW5uZXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGhhc0ljb24gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbGVydCBiYW5uZXIgcG9zaXRpb25cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZml4ZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZmllbGQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gc3VibWlzc2lvbi5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhRGVzY3JpYmVkYnkgPSAnJztcblxuICBASW5wdXQoKSBzZXQgc2Vjb25kYXJ5QWxlcnRzKGFsZXJ0czogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9zZWNvbmRhcnlBbGVydHMgPSBhbGVydHMubWFwKGFsZXJ0ID0+IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGFsZXJ0KSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc3BsYXktbm9uZScpIGdldCBpc0Rpc21pc3NlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNtaXNzQWxlcnRCYW5uZXI7XG4gIH1cblxuICBpY29uTmFtZTogSWNvbk5hbWU7XG4gIHZpc2libGUgPSB0cnVlO1xuICBmdWxsV2lkdGg6IGJvb2xlYW47XG4gIHBvc2l0aW9uOiBzdHJpbmc7XG4gIGNzc0NsYXNzOiBzdHJpbmc7XG4gIF9tZXNzYWdlOiBTYWZlSHRtbCA9ICcnO1xuICBfc2Vjb25kYXJ5QWxlcnRzOiBTYWZlSHRtbFtdID0gW107XG4gIGRpc21pc3NBbGVydEJhbm5lciA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQmFubmVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvblxuICAgIGlmIChjaGFuZ2VzWydhbGVydFR5cGUnXSkge1xuICAgICB0aGlzLnVwZGF0ZUJhbm5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQmFubmVyKCk6IHZvaWQge1xuICAgIHRoaXMuaWNvbk5hbWUgPSBhbGVydEJhcnNVdGlsLnNldEljb24odGhpcy5hbGVydFR5cGUpO1xuICAgIHRoaXMucG9zaXRpb24gPSBhbGVydEJhcnNVdGlsLnNldFBvc2l0aW9uKHRoaXMuZml4ZWQpO1xuICAgIHRoaXMuZnVsbFdpZHRoID0gdGhpcy5pc0Z1bGxXaWR0aCA/PyB0aGlzLmFsZXJ0VmFyaWFudCA9PT0gJ2Jhbm5lcic7XG4gICAgdGhpcy5jc3NDbGFzcyA9IGFsZXJ0QmFyc1V0aWwuc2V0Q3NzQ2xhc3ModGhpcy5mdWxsV2lkdGgsIHRoaXMuYWxlcnRUeXBlLCB0aGlzLnBvc2l0aW9uLCB0aGlzLmFsZXJ0VmFyaWFudCk7XG4gIH1cblxuICAvL0hpZGUgc25hY2tiYXIgd2hlbiBkaXNtaXNzIGJ1dHRvbiBpcyBjbGlja2VkXG4gIGRpc21pc3NDbGljaygpIHtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGlzbWlzc0FsZXJ0QmFubmVyID0gdHJ1ZTtcbiAgICB9LCAyMDApO1xuICB9XG59XG4iLCI8ZGl2XG4gIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgW0BvcGVuQ2xvc2VdXG4gICpuZ0lmPVwidmlzaWJsZVwiXG4gIHJvbGU9XCJhbGVydFwiXG4gIGNsYXNzPVwiYWxlcnQtY29udGFpbmVyXCJcbiAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gIFtjbGFzcy5zaGFkb3ddPVwiYWxlcnRWYXJpYW50ID09PSAnY2FsbG91dCcgJiYgc2hhZG93XCJcbiAgW2F0dHIuYXJpYS1saXZlXT1cIihhbGVydFR5cGUgPT09ICdlcnJvcicgfHwgYWxlcnRUeXBlID09PSAnd2FybmluZycpID8gJ2Fzc2VydGl2ZScgOiAncG9saXRlJ1wiXG4gIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Rlc2NyaWJlZGJ5J1wiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWxsZWRieSdcIlxuICBbdGFiSW5kZXhdPVwiMFwiXG4+XG4gIDxzcGFuIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAtOTk5OXB4XCIgaWQ9XCJsYWJlbGxlZGJ5XCI+e3sgKCdBTEVSVF9CQU5ORVIuJyArIChhbGVydFR5cGUgfCB1cHBlcmNhc2UpKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gIDxzcGFuIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiIGlkPVwiZGVzY3JpYmVkYnlcIj57eyBhcmlhRGVzY3JpYmVkYnkgfX08L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJwcmltYXJ5LWFsZXJ0LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhbGVydC10ZXh0XCI+XG4gICAgICBAaWYgKGhhc0ljb24pIHtcbiAgICAgICAgPHVpLWljb24gY2xhc3M9XCJsZWZ0LWljb25cIiBbbmFtZV09XCJpY29uTmFtZVwiIHNpemU9XCIyNFwiIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLWljb24+XG4gICAgICB9XG4gICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIl9tZXNzYWdlXCI+PC9zcGFuPlxuICAgICAgPGEgKm5nSWY9XCIhIWxpbmtUZXh0XCIgW3RhcmdldF09XCJsaW5rVGFyZ2V0XCIgW2hyZWZdPVwibGlua1VybFwiPnt7IGxpbmtUZXh0IH19PC9hPlxuICAgIDwvZGl2PlxuICAgIDx1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiaW5jbHVkZURpc21pc3NCdXR0b24gJiYgYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnXCJcbiAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgIFtqdXN0SWNvbl09XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwiY2xvc2VcIlxuICAgICAgaWNvbk5hbWU9XCJDbG9zZVwiXG4gICAgICAoYnV0dG9uQ2xpY2tFdmVudCk9XCJkaXNtaXNzQ2xpY2soKVwiXG4gICAgPjwvdWktYnV0dG9uPlxuICAgIDx1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiaW5jbHVkZURpc21pc3NCdXR0b24gJiYgYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnICYmIGFsZXJ0VmFyaWFudCAhPT0gJ2NhbGxvdXQnXCJcbiAgICAgIGNsYXNzPVwicmlnaHQtaWNvblwiXG4gICAgICBbdmFyaWFudF09XCInaWNvbi1idXR0b24nXCJcbiAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgW2ljb25OYW1lXT1cIidDbG9zZSdcIlxuICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbanVzdEljb25dPVwidHJ1ZVwiXG4gICAgICBbdG9vbHRpcF09XCIoY2xvc2VCdXR0b25Ub29sdGlwIHx8ICgnQ09NTU9OLkNMT1NFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpKSFcIlxuICAgICAgKGNsaWNrKT1cImRpc21pc3NDbGljaygpXCJcbiAgICA+PC91aS1idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2Vjb25kYXJ5LWFsZXJ0cy1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQtdGV4dFwiICpuZ0Zvcj1cImxldCBhbGVydCBvZiBfc2Vjb25kYXJ5QWxlcnRzXCI+XG4gICAgICA8dWktaWNvbiBjbGFzcz1cImxlZnQtaWNvblwiIFtuYW1lXT1cIidTdG9wLWZpbGxlZCdcIiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCI+PC91aS1pY29uPlxuICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJhbGVydFwiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtYmFubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hbGVydC1iYW5uZXIvYWxlcnQtYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hbGVydC1iYW5uZXIvYWxlcnQtYmFubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBZTdELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDNkUsZUFBaUMsRUFDcEcsWUFBMEI7UUFEeUMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ3BHLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBT3BDOzs7Ozs7V0FNRztRQUNNLGNBQVMsR0FBaUIsU0FBUyxDQUFDO1FBRTdDOzs7Ozs7V0FNRztRQUNNLGlCQUFZLEdBQWlCLFFBQVEsQ0FBQztRQVcvQzs7Ozs7V0FLRztRQUNNLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUVyQzs7Ozs7V0FLRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFeEI7Ozs7O1dBS0c7UUFDTSxhQUFRLEdBQUksRUFBRSxDQUFDO1FBU3hCOzs7Ozs7V0FNRztRQUNNLGVBQVUsR0FBb0IsUUFBUSxDQUFDO1FBRWhEOzs7Ozs7O1dBT0c7UUFDTSxxQkFBZ0IsR0FBcUIsT0FBTyxDQUFDO1FB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QkFDbkIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUN2RSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3ZFLENBQUM7cUJBQ0gsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQUk1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9DQUFvQztvRUFlakQsU0FBUztzQkFBakIsS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9PLE9BQU87c0JBQW5CLEtBQUs7Z0JBVUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQVFHLE1BQU07c0JBQWQsS0FBSztnQkFRRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLE9BQU87c0JBQWYsS0FBSztnQkFTRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFRRyxXQUFXO3NCQUFuQixLQUFLO2dCQVNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFTRyxPQUFPO3NCQUFmLEtBQUs7Z0JBU0csS0FBSztzQkFBYixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRU8sZUFBZTtzQkFBM0IsS0FBSztnQkFJaUMsV0FBVztzQkFBakQsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBIb3N0QmluZGluZyxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pY29uL2ljb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcclxuaW1wb3J0IHsgQWxlcnRCYXJUeXBlLCBBbGVydFZhcmlhbnQgfSBmcm9tICcuLi8uLi91dGlscy9hbGVydC1iYXIubW9kZWwnO1xyXG5pbXBvcnQgeyBhbGVydEJhcnNVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvYWxlcnQtYmFycy51dGlscyc7XHJcbmltcG9ydCB7IExpbmtUYXJnZXRUeXBlIH0gZnJvbSAnLi9hbGVydC1iYW5uZXIubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1hbGVydC1iYW5uZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC1iYW5uZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LWJhbm5lci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ29wZW5DbG9zZScsIFtcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW2FuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFthbmltYXRlKCcwLjJzIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXSksXHJcbiAgICBdKSxcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWxlcnRCYW5uZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXHJcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7XHJcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XHJcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsZXJ0IEJhbm5lciB0eXBlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7QWxlcnRCYXJUeXBlfVxyXG4gICAqIEBkZWZhdWx0ICdzdWNjZXNzJ1xyXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFsZXJ0VHlwZTogQWxlcnRCYXJUeXBlID0gJ3N1Y2Nlc3MnO1xyXG5cclxuICAvKipcclxuICAgKiBBbGVydCBCYW5uZXIgdmFyaWFudFxyXG4gICAqXHJcbiAgICogQHR5cGUge0FsZXJ0VmFyaWFudH1cclxuICAgKiBAZGVmYXVsdCAnYmFubmVyJ1xyXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFsZXJ0VmFyaWFudDogQWxlcnRWYXJpYW50ID0gJ2Jhbm5lcic7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsZXJ0IGJhbm5lciBtZXNzYWdlXHJcbiAgICpcclxuICAgKiBAbWVtYmVyb2YgQWxlcnRCYW5uZXJDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBzZXQgbWVzc2FnZShtc2c6IHN0cmluZykge1xyXG4gICAgdGhpcy5fbWVzc2FnZSA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKG1zZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmNsdWRlIGRpc21taXNzIGJ1dHRvblxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGluY2x1ZGVEaXNtaXNzQnV0dG9uID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5jbHVkZSBzaGFkb3cgb3Igbm90XHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNoYWRvdyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBMaW5rIHRleHQgdGhhdCB3aWxsIGFwcGVuZGVkIGF0IHRoZSBlbmQgb2YgbWVzc2FnZVxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgJydcclxuICAgKiBAbWVtYmVyb2YgQWxlcnRCYW5uZXJDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBsaW5rVGV4dD8gPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogTGluayB1cmxcclxuICAgKlxyXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxpbmtVcmw/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpbmsgdGFyZ2V0XHJcbiAgICpcclxuICAgKiBAdHlwZSB7QHR5cGUge0xpbmtUYXJnZXRUeXBlfX1cclxuICAgKiBAZGVmYXVsdCAnX2JsYW5rJ1xyXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxpbmtUYXJnZXQ/OiBMaW5rVGFyZ2V0VHlwZSA9ICdfYmxhbmsnO1xyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXHJcbiAgICpcclxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cclxuICAgKiBAZGVmYXVsdCAnbGlnaHQnXHJcbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGZ1bGwgd2lkdGhcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlzRnVsbFdpZHRoOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBidXR0b24gdG9vbHRpcFxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAZGVmYXVsdCAnJ1xyXG4gICAqIEBtZW1iZXJvZiBBbGVydEJhbm5lckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNsb3NlQnV0dG9uVG9vbHRpcCA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93cyBpY29uXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQG1lbWJlcm9mIEFsZXJ0QmFubmVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaGFzSWNvbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGFsZXJ0IGJhbm5lciBwb3NpdGlvblxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAbWVtYmVyb2YgQWxlcnRCYW5uZXJDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBmaXhlZCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXHJcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFuIGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkIGZvciBmb3JtIHN1Ym1pc3Npb24uXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgQWxlcnRCYW5uZXJDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhcmlhRGVzY3JpYmVkYnkgPSAnJztcclxuXHJcbiAgQElucHV0KCkgc2V0IHNlY29uZGFyeUFsZXJ0cyhhbGVydHM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9zZWNvbmRhcnlBbGVydHMgPSBhbGVydHMubWFwKGFsZXJ0ID0+IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGFsZXJ0KSk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc3BsYXktbm9uZScpIGdldCBpc0Rpc21pc3NlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRpc21pc3NBbGVydEJhbm5lcjtcclxuICB9XHJcblxyXG4gIGljb25OYW1lOiBJY29uTmFtZTtcclxuICB2aXNpYmxlID0gdHJ1ZTtcclxuICBmdWxsV2lkdGg6IGJvb2xlYW47XHJcbiAgcG9zaXRpb246IHN0cmluZztcclxuICBjc3NDbGFzczogc3RyaW5nO1xyXG4gIF9tZXNzYWdlOiBTYWZlSHRtbCA9ICcnO1xyXG4gIF9zZWNvbmRhcnlBbGVydHM6IFNhZmVIdG1sW10gPSBbXTtcclxuICBkaXNtaXNzQWxlcnRCYW5uZXIgPSBmYWxzZTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUJhbm5lcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvblxyXG4gICAgaWYgKGNoYW5nZXNbJ2FsZXJ0VHlwZSddKSB7XHJcbiAgICAgdGhpcy51cGRhdGVCYW5uZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQmFubmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pY29uTmFtZSA9IGFsZXJ0QmFyc1V0aWwuc2V0SWNvbih0aGlzLmFsZXJ0VHlwZSk7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gYWxlcnRCYXJzVXRpbC5zZXRQb3NpdGlvbih0aGlzLmZpeGVkKTtcclxuICAgIHRoaXMuZnVsbFdpZHRoID0gdGhpcy5pc0Z1bGxXaWR0aCA/PyB0aGlzLmFsZXJ0VmFyaWFudCA9PT0gJ2Jhbm5lcic7XHJcbiAgICB0aGlzLmNzc0NsYXNzID0gYWxlcnRCYXJzVXRpbC5zZXRDc3NDbGFzcyh0aGlzLmZ1bGxXaWR0aCwgdGhpcy5hbGVydFR5cGUsIHRoaXMucG9zaXRpb24sIHRoaXMuYWxlcnRWYXJpYW50KTtcclxuICB9XHJcblxyXG4gIC8vSGlkZSBzbmFja2JhciB3aGVuIGRpc21pc3MgYnV0dG9uIGlzIGNsaWNrZWRcclxuICBkaXNtaXNzQ2xpY2soKSB7XHJcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRpc21pc3NBbGVydEJhbm5lciA9IHRydWU7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XG4gIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcbiAgW0BvcGVuQ2xvc2VdXG4gICpuZ0lmPVwidmlzaWJsZVwiXG4gIHJvbGU9XCJhbGVydFwiXG4gIGNsYXNzPVwiYWxlcnQtY29udGFpbmVyXCJcbiAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gIFtjbGFzcy5zaGFkb3ddPVwiYWxlcnRWYXJpYW50ID09PSAnY2FsbG91dCcgJiYgc2hhZG93XCJcbiAgW2F0dHIuYXJpYS1saXZlXT1cIihhbGVydFR5cGUgPT09ICdlcnJvcicgfHwgYWxlcnRUeXBlID09PSAnd2FybmluZycpID8gJ2Fzc2VydGl2ZScgOiAncG9saXRlJ1wiXG4gIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Rlc2NyaWJlZGJ5J1wiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWxsZWRieSdcIlxuICBbdGFiSW5kZXhdPVwiMFwiXG4+XG4gIDxzcGFuIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAtOTk5OXB4XCIgaWQ9XCJsYWJlbGxlZGJ5XCI+e3sgKCdBTEVSVF9CQU5ORVIuJyArIChhbGVydFR5cGUgfCB1cHBlcmNhc2UpKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gIDxzcGFuIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiIGlkPVwiZGVzY3JpYmVkYnlcIj57eyBhcmlhRGVzY3JpYmVkYnkgfX08L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJwcmltYXJ5LWFsZXJ0LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhbGVydC10ZXh0XCI+XG4gICAgICBAaWYgKGhhc0ljb24pIHtcbiAgICAgICAgPHVpLWljb24gY2xhc3M9XCJsZWZ0LWljb25cIiBbbmFtZV09XCJpY29uTmFtZVwiIHNpemU9XCIyNFwiIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLWljb24+XG4gICAgICB9XG4gICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIl9tZXNzYWdlXCI+PC9zcGFuPlxuICAgICAgPGEgKm5nSWY9XCIhIWxpbmtUZXh0XCIgW3RhcmdldF09XCJsaW5rVGFyZ2V0XCIgW2hyZWZdPVwibGlua1VybFwiPnt7IGxpbmtUZXh0IH19PC9hPlxuICAgIDwvZGl2PlxuICAgIDx1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiaW5jbHVkZURpc21pc3NCdXR0b24gJiYgYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnXCJcbiAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgIFtqdXN0SWNvbl09XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwiY2xvc2VcIlxuICAgICAgaWNvbk5hbWU9XCJDbG9zZVwiXG4gICAgICAoYnV0dG9uQ2xpY2tFdmVudCk9XCJkaXNtaXNzQ2xpY2soKVwiXG4gICAgPjwvdWktYnV0dG9uPlxuICAgIDx1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiaW5jbHVkZURpc21pc3NCdXR0b24gJiYgYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnICYmIGFsZXJ0VmFyaWFudCAhPT0gJ2NhbGxvdXQnXCJcbiAgICAgIGNsYXNzPVwicmlnaHQtaWNvblwiXG4gICAgICBbdmFyaWFudF09XCInaWNvbi1idXR0b24nXCJcbiAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgW2ljb25OYW1lXT1cIidDbG9zZSdcIlxuICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbanVzdEljb25dPVwidHJ1ZVwiXG4gICAgICBbdG9vbHRpcF09XCIoY2xvc2VCdXR0b25Ub29sdGlwIHx8ICgnQ09NTU9OLkNMT1NFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpKSFcIlxuICAgICAgKGNsaWNrKT1cImRpc21pc3NDbGljaygpXCJcbiAgICA+PC91aS1idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2Vjb25kYXJ5LWFsZXJ0cy1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQtdGV4dFwiICpuZ0Zvcj1cImxldCBhbGVydCBvZiBfc2Vjb25kYXJ5QWxlcnRzXCI+XG4gICAgICA8dWktaWNvbiBjbGFzcz1cImxlZnQtaWNvblwiIFtuYW1lXT1cIidTdG9wLWZpbGxlZCdcIiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCI+PC91aS1pY29uPlxuICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJhbGVydFwiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==