@tilde-nlp/ngx-translate 7.0.19 → 7.0.21

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 (47) hide show
  1. package/assets/icons/icons.d.ts +2 -0
  2. package/assets/icons/index.d.ts +1 -0
  3. package/esm2022/assets/icons/icons.mjs +11 -0
  4. package/esm2022/assets/icons/index.mjs +2 -0
  5. package/esm2022/lib/i18n/de.mjs +1 -45
  6. package/esm2022/lib/i18n/en.mjs +10 -48
  7. package/esm2022/lib/i18n/et.mjs +1 -45
  8. package/esm2022/lib/i18n/fi.mjs +1 -45
  9. package/esm2022/lib/i18n/lt.mjs +1 -45
  10. package/esm2022/lib/i18n/lv.mjs +11 -49
  11. package/esm2022/lib/i18n/pl.mjs +1 -45
  12. package/esm2022/lib/modules/tld-common/models/configs/tld-llm-config.model.mjs +1 -1
  13. package/esm2022/lib/modules/tld-common/services/tld-translate-config.service.mjs +1 -3
  14. package/esm2022/lib/modules/tld-document/download-button/download-button.component.mjs +6 -4
  15. package/esm2022/lib/modules/tld-document/tld-document.module.mjs +12 -4
  16. package/esm2022/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.mjs +3 -3
  17. package/esm2022/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.mjs +62 -22
  18. package/esm2022/lib/modules/tld-text/tld-text.module.mjs +8 -4
  19. package/esm2022/lib/modules/tld-tooltip/tld-tooltip.module.mjs +3 -7
  20. package/esm2022/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.mjs +4 -11
  21. package/esm2022/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.mjs +3 -3
  22. package/esm2022/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.mjs +7 -15
  23. package/esm2022/lib/tld-translate.component.mjs +8 -4
  24. package/esm2022/lib/tld-translate.module.mjs +2 -8
  25. package/fesm2022/tilde-nlp-ngx-translate.mjs +123 -387
  26. package/fesm2022/tilde-nlp-ngx-translate.mjs.map +1 -1
  27. package/lib/i18n/de.d.ts +0 -44
  28. package/lib/i18n/en.d.ts +6 -44
  29. package/lib/i18n/et.d.ts +0 -44
  30. package/lib/i18n/fi.d.ts +0 -44
  31. package/lib/i18n/lt.d.ts +0 -44
  32. package/lib/i18n/lv.d.ts +6 -44
  33. package/lib/i18n/pl.d.ts +0 -44
  34. package/lib/modules/tld-common/models/configs/tld-llm-config.model.d.ts +0 -4
  35. package/lib/modules/tld-document/tld-document.module.d.ts +3 -1
  36. package/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.d.ts +11 -1
  37. package/lib/modules/tld-text/tld-text.module.d.ts +2 -1
  38. package/lib/modules/tld-tooltip/tld-tooltip.module.d.ts +1 -1
  39. package/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.d.ts +0 -1
  40. package/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.d.ts +2 -5
  41. package/lib/tld-translate.component.d.ts +3 -2
  42. package/package.json +1 -1
  43. package/src/assets/webcomponent/styles.css +1 -1
  44. package/src/assets/webcomponent/tilde-translate-box.js +2 -2
  45. package/src/styles/styles.scss +2 -6
  46. package/esm2022/lib/factories/llm-service-configuration.factory.mjs +0 -9
  47. package/lib/factories/llm-service-configuration.factory.d.ts +0 -3
@@ -7,6 +7,7 @@ import { availableLanguages } from './i18n/available-languages';
7
7
  import { languageMenuVersion } from './modules/tld-common/models';
8
8
  import { OpenedMenu } from './modules/tld-tooltip/translation-system-picker/models/opened-menu';
9
9
  import { TldTranslateBodyComponent } from './tld-translate-body/tld-translate-body.component';
10
+ import * as icons from '../assets/icons';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@ngx-translate/core";
12
13
  import * as i2 from "./modules/tld-document/services/tld-translate-file.service";
@@ -37,6 +38,7 @@ export class TldTranslateComponent {
37
38
  wtwQueryService;
38
39
  systemPickerService;
39
40
  terminologyService;
41
+ iconService;
40
42
  onError = new EventEmitter();
41
43
  onSystemChange = new EventEmitter();
42
44
  tldTranslateBody;
@@ -85,7 +87,7 @@ export class TldTranslateComponent {
85
87
  languageMenuV1 = languageMenuVersion.V1;
86
88
  languageMenuV2 = languageMenuVersion.V2;
87
89
  destroy$ = new Subject();
88
- constructor(translate, translateFileService, translateTextService, configService, alerts, translateButtonService, tldSystem, audioService, voiceProcessingService, wtwQueryService, systemPickerService, terminologyService) {
90
+ constructor(translate, translateFileService, translateTextService, configService, alerts, translateButtonService, tldSystem, audioService, voiceProcessingService, wtwQueryService, systemPickerService, terminologyService, iconService) {
89
91
  this.translate = translate;
90
92
  this.translateFileService = translateFileService;
91
93
  this.translateTextService = translateTextService;
@@ -98,6 +100,7 @@ export class TldTranslateComponent {
98
100
  this.wtwQueryService = wtwQueryService;
99
101
  this.systemPickerService = systemPickerService;
100
102
  this.terminologyService = terminologyService;
103
+ this.iconService = iconService;
101
104
  }
102
105
  changeAuth(authOptions) {
103
106
  this.configService.coreConfig.isAuth = authOptions.isAuth;
@@ -109,6 +112,7 @@ export class TldTranslateComponent {
109
112
  this.tldSystem.init(this.tldSystem.getLastUsedSystem() ?? this.configService.coreConfig.defaultSystemId);
110
113
  }
111
114
  ngOnInit() {
115
+ this.iconService.registerIcons(icons);
112
116
  this.removeMessagesOnClear();
113
117
  this.tldSystem.getLoadedSystems().pipe(takeUntil(this.destroy$)).subscribe((res) => {
114
118
  if (!res.length) {
@@ -240,7 +244,7 @@ export class TldTranslateComponent {
240
244
  this.messages.push(message);
241
245
  }
242
246
  }
243
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateComponent, deps: [{ token: i1.TranslateService }, { token: i2.TldTranslateFileService }, { token: i3.TldTranslateTextService }, { token: i4.TldTranslateConfigService }, { token: i5.AlertService }, { token: i6.TldTranslateButtonService }, { token: i4.TldTranslateSystemManagementService }, { token: i7.AudioRecordService }, { token: i7.TldVoiceInputService }, { token: i8.WtwLinkParamsService }, { token: i9.TranslationSystemPickerService }, { token: i5.TerminologyService }], target: i0.ɵɵFactoryTarget.Component });
247
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TldTranslateComponent, deps: [{ token: i1.TranslateService }, { token: i2.TldTranslateFileService }, { token: i3.TldTranslateTextService }, { token: i4.TldTranslateConfigService }, { token: i5.AlertService }, { token: i6.TldTranslateButtonService }, { token: i4.TldTranslateSystemManagementService }, { token: i7.AudioRecordService }, { token: i7.TldVoiceInputService }, { token: i8.WtwLinkParamsService }, { token: i9.TranslationSystemPickerService }, { token: i5.TerminologyService }, { token: i5.IconService }], target: i0.ɵɵFactoryTarget.Component });
244
248
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TldTranslateComponent, selector: "tld-translate", outputs: { onError: "onError", onSystemChange: "onSystemChange" }, viewQueries: [{ propertyName: "tldTranslateBody", first: true, predicate: TldTranslateBodyComponent, descendants: true }], ngImport: i0, template: "<div fxLayout=\"column\" class=\"h-100 tld-translate\"\r\n [ngClass.lt-md]=\"'tld-translate-tablet tld-default-border-bottom'\"\r\n [ngClass.lt-sm]=\"'tld-translate-mobile tld-default-border-bottom'\"\r\n [class.tld-translate-multiple-files-active]=\"isMultipleFilesActive\">\r\n <div class=\"tld-translate-wrapper tld-default-border\" fxLayout=\"column\" fxFlex>\r\n <div class=\"tld-translate-switcher-wrapper tld-default-border-bottom\">\r\n <tld-translate-switcher *ngIf=\"switcherOptions && languageMenuVersion === languageMenuV1\"\r\n [disabled]=\"actionButtonDisabled\" [isCollectionsActivated]=\"isCollectionsActivated\" [settings]=\"switcherOptions\"\r\n [maxDisplayedLanguages]=\"maxDisplayedLanguages\" [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\"\r\n [buttonDisabled]=\"actionButtonDisabled\" [hideLangMenuLabels]=\"hideLangMenuLabels\"\r\n (onDomainChange)=\"systemChange($event)\" (onActionClick)=\"translateButtonClick()\"\r\n (onLanguageSwap)=\"swapLanguages()\" (onSourceLanguageChange)=\"sourceLanguageChange($event)\"\r\n (onTargetLanguageChange)=\"targetLanguageChange($event)\" [loader]=\"actionButtonLoader\" [showTranslateButton]=\"showTranslateButton\">\r\n </tld-translate-switcher>\r\n <tld-translation-system-picker *ngIf=\"languageMenuVersion===languageMenuV2\"\r\n [isCollectionsActivated]=\"isCollectionsActivated\"></tld-translation-system-picker>\r\n </div>\r\n <div *ngIf=\"messages.length\" class=\"message-wrapper\">\r\n <lib-tld-notification-message [inline]=\"true\" *ngFor=\"let message of messages; let ix = index\" [message]=\"message\"\r\n (closeClicked)=\"removeMessage(ix)\">\r\n </lib-tld-notification-message>\r\n </div>\r\n <div fxFlex style=\"position: relative;\">\r\n <tld-translate-body fxFlex fxLayoutAlign=\"column\" [attr.source-language]=\"sourceLanguage\"\r\n [attr.target-language]=\"targetLanguage\"></tld-translate-body>\r\n <tld-translation-system-picker-dropdown [ngClass.xs]=\"'mobile'\" *ngIf=\"systemPickerDropdownVisible\">\r\n </tld-translation-system-picker-dropdown>\r\n </div>\r\n </div>\r\n</div>", styles: [".tld-translate-wrapper{overflow:hidden;background:#fff;box-shadow:0 3.2px 7.2px #00000021}.tld-translate-switcher-wrapper{padding:.5em .2em}.h-100{height:100%}tld-translation-system-picker-dropdown{z-index:2}tld-translation-system-picker-dropdown:not(.mobile){position:absolute;width:100%;height:100%}tld-translation-system-picker-dropdown.mobile{position:fixed;top:0;left:0;width:100vw;height:100vh}.tld-translate-tablet .message-wrapper,.tld-translate-mobile .message-wrapper{padding:0}.message-wrapper{padding:16px 16px 0}lib-tld-notification-message:not(:first-child){margin-top:4px}:host ::ng-deep .notification-message{margin-bottom:0!important}\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.TldTranslateSwitcherComponent, selector: "tld-translate-switcher", inputs: ["buttonDisabled", "showTranslateButton", "hideOnSmallScreens", "disabled", "hideLangMenuLabels", "maxDisplayedLanguages", "collections", "showDomainsWithLanguageName", "isCollectionsActivated", "useParentWidth", "loader", "settings"], outputs: ["onDomainChange", "onActionClick", "onSourceLanguageChange", "onTargetLanguageChange", "onLanguageSwap", "onVendorChange"] }, { kind: "component", type: i12.TranslationSystemPickerComponent, selector: "tld-translation-system-picker", inputs: ["isCollectionsActivated"] }, { kind: "component", type: i13.TranslationSystemPickerDropdownComponent, selector: "tld-translation-system-picker-dropdown" }, { kind: "component", type: i5.NotificationMessageComponent, selector: "lib-tld-notification-message", inputs: ["message", "inline"], outputs: ["buttonClicked", "closeClicked", "linkClicked"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i15.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i16.TldTranslateBodyComponent, selector: "tld-translate-body" }], animations: [
245
249
  trigger('openCloseAnimation', [
246
250
  transition(':enter', [
@@ -262,7 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
262
266
  transition(':leave', animate(500, style({ height: 0 })))
263
267
  ])
264
268
  ], template: "<div fxLayout=\"column\" class=\"h-100 tld-translate\"\r\n [ngClass.lt-md]=\"'tld-translate-tablet tld-default-border-bottom'\"\r\n [ngClass.lt-sm]=\"'tld-translate-mobile tld-default-border-bottom'\"\r\n [class.tld-translate-multiple-files-active]=\"isMultipleFilesActive\">\r\n <div class=\"tld-translate-wrapper tld-default-border\" fxLayout=\"column\" fxFlex>\r\n <div class=\"tld-translate-switcher-wrapper tld-default-border-bottom\">\r\n <tld-translate-switcher *ngIf=\"switcherOptions && languageMenuVersion === languageMenuV1\"\r\n [disabled]=\"actionButtonDisabled\" [isCollectionsActivated]=\"isCollectionsActivated\" [settings]=\"switcherOptions\"\r\n [maxDisplayedLanguages]=\"maxDisplayedLanguages\" [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\"\r\n [buttonDisabled]=\"actionButtonDisabled\" [hideLangMenuLabels]=\"hideLangMenuLabels\"\r\n (onDomainChange)=\"systemChange($event)\" (onActionClick)=\"translateButtonClick()\"\r\n (onLanguageSwap)=\"swapLanguages()\" (onSourceLanguageChange)=\"sourceLanguageChange($event)\"\r\n (onTargetLanguageChange)=\"targetLanguageChange($event)\" [loader]=\"actionButtonLoader\" [showTranslateButton]=\"showTranslateButton\">\r\n </tld-translate-switcher>\r\n <tld-translation-system-picker *ngIf=\"languageMenuVersion===languageMenuV2\"\r\n [isCollectionsActivated]=\"isCollectionsActivated\"></tld-translation-system-picker>\r\n </div>\r\n <div *ngIf=\"messages.length\" class=\"message-wrapper\">\r\n <lib-tld-notification-message [inline]=\"true\" *ngFor=\"let message of messages; let ix = index\" [message]=\"message\"\r\n (closeClicked)=\"removeMessage(ix)\">\r\n </lib-tld-notification-message>\r\n </div>\r\n <div fxFlex style=\"position: relative;\">\r\n <tld-translate-body fxFlex fxLayoutAlign=\"column\" [attr.source-language]=\"sourceLanguage\"\r\n [attr.target-language]=\"targetLanguage\"></tld-translate-body>\r\n <tld-translation-system-picker-dropdown [ngClass.xs]=\"'mobile'\" *ngIf=\"systemPickerDropdownVisible\">\r\n </tld-translation-system-picker-dropdown>\r\n </div>\r\n </div>\r\n</div>", styles: [".tld-translate-wrapper{overflow:hidden;background:#fff;box-shadow:0 3.2px 7.2px #00000021}.tld-translate-switcher-wrapper{padding:.5em .2em}.h-100{height:100%}tld-translation-system-picker-dropdown{z-index:2}tld-translation-system-picker-dropdown:not(.mobile){position:absolute;width:100%;height:100%}tld-translation-system-picker-dropdown.mobile{position:fixed;top:0;left:0;width:100vw;height:100vh}.tld-translate-tablet .message-wrapper,.tld-translate-mobile .message-wrapper{padding:0}.message-wrapper{padding:16px 16px 0}lib-tld-notification-message:not(:first-child){margin-top:4px}:host ::ng-deep .notification-message{margin-bottom:0!important}\n"] }]
265
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.TldTranslateFileService }, { type: i3.TldTranslateTextService }, { type: i4.TldTranslateConfigService }, { type: i5.AlertService }, { type: i6.TldTranslateButtonService }, { type: i4.TldTranslateSystemManagementService }, { type: i7.AudioRecordService }, { type: i7.TldVoiceInputService }, { type: i8.WtwLinkParamsService }, { type: i9.TranslationSystemPickerService }, { type: i5.TerminologyService }], propDecorators: { onError: [{
269
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.TldTranslateFileService }, { type: i3.TldTranslateTextService }, { type: i4.TldTranslateConfigService }, { type: i5.AlertService }, { type: i6.TldTranslateButtonService }, { type: i4.TldTranslateSystemManagementService }, { type: i7.AudioRecordService }, { type: i7.TldVoiceInputService }, { type: i8.WtwLinkParamsService }, { type: i9.TranslationSystemPickerService }, { type: i5.TerminologyService }, { type: i5.IconService }], propDecorators: { onError: [{
266
270
  type: Output
267
271
  }], onSystemChange: [{
268
272
  type: Output
@@ -270,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
270
274
  type: ViewChild,
271
275
  args: [TldTranslateBodyComponent]
272
276
  }] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUFpRCx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2hFLE9BQU8sRUFBZ0IsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU1oRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFFaEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9COUYsTUFBTSxPQUFPLHFCQUFxQjtJQW9FSDtJQUNWO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE5RVQsT0FBTyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3JELGNBQWMsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUU5QyxnQkFBZ0Is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Q0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQzt3R0FwUVUscUJBQXFCOzRGQUFyQixxQkFBcUIsMEtBSXJCLHlCQUF5QixnREN6Q3RDLGtxRUE2Qk0sMG1JRExRO1lBQ1YsT0FBTyxDQUFDLG9CQUFvQixFQUFFO2dCQUU1QixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUM7aUJBQ2IsQ0FBQztnQkFFRixVQUFVLENBQUMsUUFBUSxFQUNqQixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsQ0FBQztTQUNIOzs0RkFFVSxxQkFBcUI7a0JBakJqQyxTQUFTOytCQUNFLGVBQWUsY0FHYjt3QkFDVixPQUFPLENBQUMsb0JBQW9CLEVBQUU7NEJBRTVCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDYixDQUFDOzRCQUVGLFVBQVUsQ0FBQyxRQUFRLEVBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDdEMsQ0FBQztxQkFDSDttZkFHUyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRStCLGdCQUFnQjtzQkFBckQsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBOb3RpZmljYXRpb25NZXNzYWdlLCBOb3RpZmljYXRpb25NZXNzYWdlVHlwZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgYXZhaWxhYmxlTGFuZ3VhZ2VzIH0gZnJvbSAnLi9pMThuL2F2YWlsYWJsZS1sYW5ndWFnZXMnO1xyXG5pbXBvcnQgeyBBdWRpb1JlY29yZFNlcnZpY2UsIFRsZFZvaWNlSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1hdWRpby9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUJ1dHRvblNlcnZpY2UgfSBmcm9tICcuL21vZHVsZXMvdGxkLWNvbW1vbi9jb21wb25lbnRzL3RyYW5zbGF0ZS1idXR0b24vdGxkLXRyYW5zbGF0ZS1idXR0b24uc2VydmljZSc7XHJcbmltcG9ydCB7IElBdXRoT3B0aW9ucywgbGFuZ3VhZ2VNZW51VmVyc2lvbiB9IGZyb20gJy4vbW9kdWxlcy90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLCBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1jb21tb24vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBXdHdMaW5rUGFyYW1zU2VydmljZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtY29tbW9uL3NlcnZpY2VzL3d0dy1saW5rLXBhcmFtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlRmlsZVNlcnZpY2UgfSBmcm9tICcuL21vZHVsZXMvdGxkLWRvY3VtZW50L3NlcnZpY2VzL3RsZC10cmFuc2xhdGUtZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlVGV4dFNlcnZpY2UgfSBmcm9tICcuL21vZHVsZXMvdGxkLXRleHQvc2VydmljZXMvdGxkLXRyYW5zbGF0ZS10ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU3dpdGNoZXJUcmFuc2xhdGlvbk9wdGlvbnMgfSBmcm9tICcuL21vZHVsZXMvdGxkLXRvb2x0aXAvbW9kZWxzL3N3aXRjaGVyLW9wdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBPcGVuZWRNZW51IH0gZnJvbSAnLi9tb2R1bGVzL3RsZC10b29sdGlwL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXIvbW9kZWxzL29wZW5lZC1tZW51JztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TeXN0ZW1QaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC10b29sdGlwL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXIvc2VydmljZXMvdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQm9keUNvbXBvbmVudCB9IGZyb20gJy4vdGxkLXRyYW5zbGF0ZS1ib2R5L3RsZC10cmFuc2xhdGUtYm9keS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXJtaW5vbG9neVNlcnZpY2UgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0bGQtdHJhbnNsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ29wZW5DbG9zZUFuaW1hdGlvbicsIFtcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogMCB9KSxcclxuICAgICAgICBhbmltYXRlKDUwMClcclxuICAgICAgXSksXHJcblxyXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLFxyXG4gICAgICAgIGFuaW1hdGUoNTAwLCBzdHlsZSh7IGhlaWdodDogMCB9KSkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgb25FcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25TeXN0ZW1DaGFuZ2U6IEV2ZW50RW1pdHRlcjxBY3RpdmVEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aXZlRGF0YT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChUbGRUcmFuc2xhdGVCb2R5Q29tcG9uZW50KSB0bGRUcmFuc2xhdGVCb2R5OiBUbGRUcmFuc2xhdGVCb2R5Q29tcG9uZW50O1xyXG5cclxuICBhY3RpdmVTeXN0ZW1PYmo6IEFjdGl2ZURhdGE7XHJcbiAgbWVzc2FnZXM6IE5vdGlmaWNhdGlvbk1lc3NhZ2VbXSA9IFtdO1xyXG5cclxuICBzd2l0Y2hlck9wdGlvbnM6IElTd2l0Y2hlclRyYW5zbGF0aW9uT3B0aW9ucztcclxuXHJcbiAgZ2V0IGFjdGlvbkJ1dHRvbkxvYWRlcigpIHsgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuaXNUcmFuc2xhdGluZzsgfVxyXG5cclxuICBnZXQgc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLnNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBtYXhEaXNwbGF5ZWRMYW5ndWFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXM7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBub1N5c3RlbXNFcnJvcjogTm90aWZpY2F0aW9uTWVzc2FnZSA9IHsgYm9keTogXCJUTERfVFJBTlNMQVRFLkVSUk9SX05PX1NZU1RFTVNfTE9BREVEXCIsIHR5cGU6IE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlLkVSUk9SLCBoaWRlQ2xvc2U6IHRydWUgfTtcclxuXHJcbiAgZ2V0IGFjdGlvbkJ1dHRvbkRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlRmlsZVNlcnZpY2UuZGlzYWJsZVRyYW5zbGF0ZUJ1dHRvblxyXG4gICAgICB8fCB0aGlzLmF1ZGlvU2VydmljZS5pc1JlY29yZGluZ1xyXG4gICAgICB8fCB0aGlzLnZvaWNlUHJvY2Vzc2luZ1NlcnZpY2UuaXNQcm9jZXNzaW5nXHJcbiAgICAgIHx8IHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuaXNEaWN0YXRpbmdcclxuICB9XHJcblxyXG4gIGdldCBzaG93VHJhbnNsYXRlQnV0dG9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS50ZXh0Q29uZmlnLnNob3dUcmFuc2xhdGVCdXR0b24gJiYgIXRoaXMudHJhbnNsYXRlRmlsZVNlcnZpY2UubXVsdGlwbGVGaWxlVXBsb2FkQWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgLy8gdGhpcyBwYXJhbSBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIG1heCBoZWlnaHQgaWYgbXVsdGlwbGUgZmlsZSBjb21wb25lbnQgaXMgYWN0aXZlLCBzaW5jZSB0aGVyZSBzaG91bGRuJ3QgYmUgbWF4IGhlaWdodCBpbiB0aGF0IGNhc2UuXHJcbiAgZ2V0IGlzTXVsdGlwbGVGaWxlc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnRsZFRyYW5zbGF0ZUJvZHk/Lm11bHRpcGxlRmlsZXNVcGxvYWRlZDtcclxuICB9XHJcblxyXG4gIGdldCBoaWRlTGFuZ01lbnVMYWJlbHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlPy5jb3JlQ29uZmlnLmhpZGVMYW5nTWVudUxhYmVscztcclxuICB9XHJcblxyXG4gIGdldCBpc0NvbGxlY3Rpb25zQWN0aXZhdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZT8udGVybUNvbmZpZz8uaXNDb2xsZWN0aW9uc0FjdGl2YXRlZDtcclxuICB9XHJcblxyXG4gIGdldCBzb3VyY2VMYW5ndWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN5c3RlbU9iaj8uc291cmNlTGFuZy5sYW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRhcmdldExhbmd1YWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlU3lzdGVtT2JqPy50YXJnZXRMYW5nLmxhbmc7XHJcbiAgfVxyXG5cclxuICBnZXQgc3lzdGVtUGlja2VyRHJvcGRvd25WaXNpYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5vcGVuZWRNZW51ICE9PSBPcGVuZWRNZW51Lk5PTkU7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFuZ3VhZ2VNZW51VmVyc2lvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZz8ubGFuZ3VhZ2VNZW51VmVyc2lvbjtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGxhbmd1YWdlTWVudVYxID0gbGFuZ3VhZ2VNZW51VmVyc2lvbi5WMTtcclxuICByZWFkb25seSBsYW5ndWFnZU1lbnVWMiA9IGxhbmd1YWdlTWVudVZlcnNpb24uVjI7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlRmlsZVNlcnZpY2U6IFRsZFRyYW5zbGF0ZUZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVUZXh0U2VydmljZTogVGxkVHJhbnNsYXRlVGV4dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0czogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVCdXR0b25TZXJ2aWNlOiBUbGRUcmFuc2xhdGVCdXR0b25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0bGRTeXN0ZW06IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdWRpb1NlcnZpY2U6IEF1ZGlvUmVjb3JkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdm9pY2VQcm9jZXNzaW5nU2VydmljZTogVGxkVm9pY2VJbnB1dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHd0d1F1ZXJ5U2VydmljZTogV3R3TGlua1BhcmFtc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5c3RlbVBpY2tlclNlcnZpY2U6IFRyYW5zbGF0aW9uU3lzdGVtUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVybWlub2xvZ3lTZXJ2aWNlOiBUZXJtaW5vbG9neVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGNoYW5nZUF1dGgoYXV0aE9wdGlvbnM6IElBdXRoT3B0aW9ucykge1xyXG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvcmVDb25maWcuaXNBdXRoID0gYXV0aE9wdGlvbnMuaXNBdXRoO1xyXG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLnRlcm1Db25maWcuY2FuQ3JlYXRlQ29sbGVjdGlvbiA9IGF1dGhPcHRpb25zLmNhbkNyZWF0ZVRlcm1Db2xsZWN0aW9uO1xyXG4gICAgdGhpcy50cmFuc2xhdGVGaWxlU2VydmljZS5jbGVhcigpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplV2lkZ2V0KCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplV2lkZ2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uaW5pdCh0aGlzLnRsZFN5c3RlbS5nZXRMYXN0VXNlZFN5c3RlbSgpID8/IHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLmRlZmF1bHRTeXN0ZW1JZCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucmVtb3ZlTWVzc2FnZXNPbkNsZWFyKCk7XHJcblxyXG4gICAgdGhpcy50bGRTeXN0ZW0uZ2V0TG9hZGVkU3lzdGVtcygpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAoIXJlcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2godGhpcy5ub1N5c3RlbXNFcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLmRlYnVnKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGF2YWlsYWJsZUxhbmd1YWdlcykge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnNldFRyYW5zbGF0aW9uKGtleSwgYXZhaWxhYmxlTGFuZ3VhZ2VzW2tleV0sIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplV2lkZ2V0KCk7XHJcblxyXG4gICAgdGhpcy50bGRTeXN0ZW0uZ2V0QWN0aXZlRGF0YSgpLnBpcGUoXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsOiBBY3RpdmVEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVTeXN0ZW1PYmogPSB2YWw7XHJcbiAgICAgICAgaWYgKCF2YWwpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub25TeXN0ZW1DaGFuZ2UuZW1pdCh2YWwpO1xyXG5cclxuICAgICAgICB0aGlzLnN3aXRjaGVyT3B0aW9ucyA9IHtcclxuICAgICAgICAgIGRvbWFpbnM6IHZhbC5kb21haW5zLFxyXG4gICAgICAgICAgc291cmNlOiB7IGNvZGU6IHZhbC5zb3VyY2VMYW5nLmxhbmcsIHN5c3RlbUlkOiB2YWwuc3lzdGVtSWQgfSxcclxuICAgICAgICAgIHNvdXJjZUxhbmd1YWdlTGlzdDogdmFsLnNvdXJjZUxhbmdMaXN0LFxyXG4gICAgICAgICAgc3lzdGVtSWQ6IHZhbC5zeXN0ZW1JZCxcclxuICAgICAgICAgIHN3YXBBY3RpdmU6IHZhbC5zd2FwTGFuZ0FjdGl2ZSxcclxuICAgICAgICAgIHRhcmdldDogeyBjb2RlOiB2YWwudGFyZ2V0TGFuZy5sYW5nLCBzeXN0ZW1JZDogdmFsLnN5c3RlbUlkIH0sXHJcbiAgICAgICAgICB0YXJnZXRMYW5ndWFnZUxpc3Q6IHZhbC50YXJnZXRMYW5nTGlzdCxcclxuICAgICAgICAgIHZlbmRvcnM6IHZhbC52ZW5kb3JzLFxyXG4gICAgICAgICAgbGFuZ3VhZ2VJZDogdmFsLmxhbmd1YWdlSWRcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnNvdXJjZUNoYW5nZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnN3YXBTeXN0ZW1zKSB7XHJcbiAgICAgICAgICB0aGlzLnN3YXBMYW5ndWFnZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlQnV0dG9uU2VydmljZS5nZXRBY3Rpb25DbGljaygpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVCdXR0b25DbGljaygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnd0d1F1ZXJ5U2VydmljZS5xdWVyeSgpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocXVlcnk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMuZm9yRWFjaChtc2cgPT4ge1xyXG4gICAgICAgICAgbXNnLmxvY2FsaXphdGlvblBhcmFtcy5xdWVyeVN0cmluZyA9IHF1ZXJ5XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWxlcnRzLmdldE1lc3NhZ2VzKCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBOb3RpZmljYXRpb25NZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgbWVzc2FnZS5sb2NhbGl6YXRpb25QYXJhbXMucXVlcnlTdHJpbmcgPSB0aGlzLnd0d1F1ZXJ5U2VydmljZS5kZWZhdWx0UXVlcnlTdHJpbmc7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2U/LmRlbGV0ZSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVFeGlzdGluZ01lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBOb3RpZmljYXRpb25NZXNzYWdlVHlwZS5FUlJPUikge1xyXG4gICAgICAgICAgdGhpcy5vbkVycm9yLmVtaXQobWVzc2FnZS5lcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgdGhpcy5hZGRNZXNzYWdlKG1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBjb25zdCBhcHBOYW1lS2V5ID0gXCJBUFBfTkFNRVwiO1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc3RyZWFtKFthcHBOYW1lS2V5XSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbnMpID0+IHtcclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5hcHBOYW1lID0gdHJhbnNsYXRpb25zW2FwcE5hbWVLZXldO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRlcm1pbm9sb2d5U2VydmljZS5nZXRSZXRyYW5zbGF0ZVNpZ25hbCgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50cmFuc2xhdGVGaWxlU2VydmljZS5maWxlTmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlQnV0dG9uQ2xpY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTWVzc2FnZShpeDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VzLnNwbGljZShpeCwgMSk7XHJcbiAgfVxyXG5cclxuICBzd2FwTGFuZ3VhZ2VzKCkge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uc3dhcFN5c3RlbUxhbmd1YWdlcygpO1xyXG4gIH1cclxuXHJcbiAgc291cmNlTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uY2hhbmdlTGFuZ3VhZ2UobGFuZ3VhZ2UsIHRoaXMuc3dpdGNoZXJPcHRpb25zLnRhcmdldC5jb2RlKTtcclxuICB9XHJcblxyXG4gIHN5c3RlbUNoYW5nZShzeXN0ZW1JZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRsZFN5c3RlbS5jaGFuZ2VTeXN0ZW0oc3lzdGVtSWQpO1xyXG4gIH1cclxuXHJcbiAgdGFyZ2V0TGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uY2hhbmdlTGFuZ3VhZ2UodGhpcy5zd2l0Y2hlck9wdGlvbnMuc291cmNlLmNvZGUsIGxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIHRyYW5zbGF0ZUJ1dHRvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMudHJhbnNsYXRlRmlsZVNlcnZpY2UudHJhbnNsYXRpb25GaWxlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZUZpbGVTZXJ2aWNlLnRyYW5zbGF0ZUJ1dHRvbkNsaWNrKHRoaXMuYWN0aXZlU3lzdGVtT2JqKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLm9uVHJhbnNsYXRlQnV0dG9uQ2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZU1lc3NhZ2VzT25DbGVhcigpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlRmlsZVNlcnZpY2Uub25DbGVhcigpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgICB9KVxyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2Uub25DbGVhcigpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQobnVsbClcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRXhpc3RpbmdNZXNzYWdlKG1lc3NhZ2U6IE5vdGlmaWNhdGlvbk1lc3NhZ2UpOiB2b2lkIHtcclxuICAgIGRlbGV0ZSBtZXNzYWdlLmRlbGV0ZTtcclxuICAgIGNvbnN0IGRlbGV0ZU1zZ1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpO1xyXG4gICAgY29uc3QgbXNnID0gdGhpcy5tZXNzYWdlcy5maW5kKChleGlzdGluZ01zZykgPT4gXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KGV4aXN0aW5nTXNnKSA9PT0gZGVsZXRlTXNnU3RyaW5nKTtcclxuICAgICAgXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubWVzc2FnZXMuaW5kZXhPZihtc2cpO1xyXG5cclxuICAgIGlmIChpbmRleCA8IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVtb3ZlTWVzc2FnZShpbmRleCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZE1lc3NhZ2UobWVzc2FnZTogTm90aWZpY2F0aW9uTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgLy8gcHVzaGluZyBvbmx5IFwib25lIG9mXCIgbWVzc2FnZSBpbiBhcnJheSwgc28gc2NyZWVuIGlzIG5vdCBzcGFtbWVkIHdpdGggbWVzc2FnZXNcclxuICAgIGNvbnN0IGRlbGV0ZU1zZ1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UubG9jYWxpemF0aW9uUGFyYW1zKTtcclxuICAgIGNvbnN0IGV4aXN0aW5nTWVzc2FnZSA9IHRoaXMubWVzc2FnZXMuZmluZChtc2cgPT4gbXNnLnRpdGxlID09PSBtZXNzYWdlLnRpdGxlXHJcbiAgICAgICYmIG1zZy50eXBlID09PSBtZXNzYWdlLnR5cGVcclxuICAgICAgJiYgbWVzc2FnZS5ib2R5ID09PSBtc2cuYm9keVxyXG4gICAgICAmJiBKU09OLnN0cmluZ2lmeShtc2cubG9jYWxpemF0aW9uUGFyYW1zKSA9PT0gZGVsZXRlTXNnU3RyaW5nKTtcclxuICAgIGlmICghZXhpc3RpbmdNZXNzYWdlKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZXMucHVzaChtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiaC0xMDAgdGxkLXRyYW5zbGF0ZVwiXHJcbiAgW25nQ2xhc3MubHQtbWRdPVwiJ3RsZC10cmFuc2xhdGUtdGFibGV0IHRsZC1kZWZhdWx0LWJvcmRlci1ib3R0b20nXCJcclxuICBbbmdDbGFzcy5sdC1zbV09XCIndGxkLXRyYW5zbGF0ZS1tb2JpbGUgdGxkLWRlZmF1bHQtYm9yZGVyLWJvdHRvbSdcIlxyXG4gIFtjbGFzcy50bGQtdHJhbnNsYXRlLW11bHRpcGxlLWZpbGVzLWFjdGl2ZV09XCJpc011bHRpcGxlRmlsZXNBY3RpdmVcIj5cclxuICA8ZGl2IGNsYXNzPVwidGxkLXRyYW5zbGF0ZS13cmFwcGVyIHRsZC1kZWZhdWx0LWJvcmRlclwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4PlxyXG4gICAgPGRpdiBjbGFzcz1cInRsZC10cmFuc2xhdGUtc3dpdGNoZXItd3JhcHBlciB0bGQtZGVmYXVsdC1ib3JkZXItYm90dG9tXCI+XHJcbiAgICAgIDx0bGQtdHJhbnNsYXRlLXN3aXRjaGVyICpuZ0lmPVwic3dpdGNoZXJPcHRpb25zICYmIGxhbmd1YWdlTWVudVZlcnNpb24gPT09IGxhbmd1YWdlTWVudVYxXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uQnV0dG9uRGlzYWJsZWRcIiBbaXNDb2xsZWN0aW9uc0FjdGl2YXRlZF09XCJpc0NvbGxlY3Rpb25zQWN0aXZhdGVkXCIgW3NldHRpbmdzXT1cInN3aXRjaGVyT3B0aW9uc1wiXHJcbiAgICAgICAgW21heERpc3BsYXllZExhbmd1YWdlc109XCJtYXhEaXNwbGF5ZWRMYW5ndWFnZXNcIiBbc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lXT1cInNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZVwiXHJcbiAgICAgICAgW2J1dHRvbkRpc2FibGVkXT1cImFjdGlvbkJ1dHRvbkRpc2FibGVkXCIgW2hpZGVMYW5nTWVudUxhYmVsc109XCJoaWRlTGFuZ01lbnVMYWJlbHNcIlxyXG4gICAgICAgIChvbkRvbWFpbkNoYW5nZSk9XCJzeXN0ZW1DaGFuZ2UoJGV2ZW50KVwiIChvbkFjdGlvbkNsaWNrKT1cInRyYW5zbGF0ZUJ1dHRvbkNsaWNrKClcIlxyXG4gICAgICAgIChvbkxhbmd1YWdlU3dhcCk9XCJzd2FwTGFuZ3VhZ2VzKClcIiAob25Tb3VyY2VMYW5ndWFnZUNoYW5nZSk9XCJzb3VyY2VMYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAob25UYXJnZXRMYW5ndWFnZUNoYW5nZSk9XCJ0YXJnZXRMYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCIgW2xvYWRlcl09XCJhY3Rpb25CdXR0b25Mb2FkZXJcIiBbc2hvd1RyYW5zbGF0ZUJ1dHRvbl09XCJzaG93VHJhbnNsYXRlQnV0dG9uXCI+XHJcbiAgICAgIDwvdGxkLXRyYW5zbGF0ZS1zd2l0Y2hlcj5cclxuICAgICAgPHRsZC10cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyICpuZ0lmPVwibGFuZ3VhZ2VNZW51VmVyc2lvbj09PWxhbmd1YWdlTWVudVYyXCJcclxuICAgICAgICBbaXNDb2xsZWN0aW9uc0FjdGl2YXRlZF09XCJpc0NvbGxlY3Rpb25zQWN0aXZhdGVkXCI+PC90bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VzLmxlbmd0aFwiIGNsYXNzPVwibWVzc2FnZS13cmFwcGVyXCI+XHJcbiAgICAgIDxsaWItdGxkLW5vdGlmaWNhdGlvbi1tZXNzYWdlIFtpbmxpbmVdPVwidHJ1ZVwiICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzOyBsZXQgaXggPSBpbmRleFwiIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxyXG4gICAgICAgIChjbG9zZUNsaWNrZWQpPVwicmVtb3ZlTWVzc2FnZShpeClcIj5cclxuICAgICAgPC9saWItdGxkLW5vdGlmaWNhdGlvbi1tZXNzYWdlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4RmxleCBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgPHRsZC10cmFuc2xhdGUtYm9keSBmeEZsZXggZnhMYXlvdXRBbGlnbj1cImNvbHVtblwiIFthdHRyLnNvdXJjZS1sYW5ndWFnZV09XCJzb3VyY2VMYW5ndWFnZVwiXHJcbiAgICAgICAgW2F0dHIudGFyZ2V0LWxhbmd1YWdlXT1cInRhcmdldExhbmd1YWdlXCI+PC90bGQtdHJhbnNsYXRlLWJvZHk+XHJcbiAgICAgIDx0bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93biBbbmdDbGFzcy54c109XCInbW9iaWxlJ1wiICpuZ0lmPVwic3lzdGVtUGlja2VyRHJvcGRvd25WaXNpYmxlXCI+XHJcbiAgICAgIDwvdGxkLXRyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUE4RCx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2hFLE9BQU8sRUFBZ0IsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU1oRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFFaEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFHOUYsT0FBTyxLQUFLLEtBQUssTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJ6QyxNQUFNLE9BQU8scUJBQXFCO0lBb0VIO0lBQ1Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBL0VULE9BQU8sR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNyRCxj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c0JBQXJELFNBQVM7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2ZURhdGEsIEFsZXJ0U2VydmljZSwgSWNvblNlcnZpY2UsIE5vdGlmaWNhdGlvbk1lc3NhZ2UsIE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBhdmFpbGFibGVMYW5ndWFnZXMgfSBmcm9tICcuL2kxOG4vYXZhaWxhYmxlLWxhbmd1YWdlcyc7XHJcbmltcG9ydCB7IEF1ZGlvUmVjb3JkU2VydmljZSwgVGxkVm9pY2VJbnB1dFNlcnZpY2UgfSBmcm9tICcuL21vZHVsZXMvdGxkLWF1ZGlvL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQnV0dG9uU2VydmljZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtY29tbW9uL2NvbXBvbmVudHMvdHJhbnNsYXRlLWJ1dHRvbi90bGQtdHJhbnNsYXRlLWJ1dHRvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUF1dGhPcHRpb25zLCBsYW5ndWFnZU1lbnVWZXJzaW9uIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1jb21tb24vbW9kZWxzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsIFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZXMvdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFd0d0xpbmtQYXJhbXNTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1jb21tb24vc2VydmljZXMvd3R3LWxpbmstcGFyYW1zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVGaWxlU2VydmljZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtZG9jdW1lbnQvc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVUZXh0U2VydmljZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtdGV4dC9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IElTd2l0Y2hlclRyYW5zbGF0aW9uT3B0aW9ucyB9IGZyb20gJy4vbW9kdWxlcy90bGQtdG9vbHRpcC9tb2RlbHMvc3dpdGNoZXItb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IE9wZW5lZE1lbnUgfSBmcm9tICcuL21vZHVsZXMvdGxkLXRvb2x0aXAvdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci9tb2RlbHMvb3BlbmVkLW1lbnUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblN5c3RlbVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL21vZHVsZXMvdGxkLXRvb2x0aXAvdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci9zZXJ2aWNlcy90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi90bGQtdHJhbnNsYXRlLWJvZHkvdGxkLXRyYW5zbGF0ZS1ib2R5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRlcm1pbm9sb2d5U2VydmljZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcblxyXG5pbXBvcnQgKiBhcyBpY29ucyBmcm9tICcuLi9hc3NldHMvaWNvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0bGQtdHJhbnNsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ29wZW5DbG9zZUFuaW1hdGlvbicsIFtcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogMCB9KSxcclxuICAgICAgICBhbmltYXRlKDUwMClcclxuICAgICAgXSksXHJcblxyXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLFxyXG4gICAgICAgIGFuaW1hdGUoNTAwLCBzdHlsZSh7IGhlaWdodDogMCB9KSkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgb25FcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25TeXN0ZW1DaGFuZ2U6IEV2ZW50RW1pdHRlcjxBY3RpdmVEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aXZlRGF0YT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChUbGRUcmFuc2xhdGVCb2R5Q29tcG9uZW50KSB0bGRUcmFuc2xhdGVCb2R5OiBUbGRUcmFuc2xhdGVCb2R5Q29tcG9uZW50O1xyXG5cclxuICBhY3RpdmVTeXN0ZW1PYmo6IEFjdGl2ZURhdGE7XHJcbiAgbWVzc2FnZXM6IE5vdGlmaWNhdGlvbk1lc3NhZ2VbXSA9IFtdO1xyXG5cclxuICBzd2l0Y2hlck9wdGlvbnM6IElTd2l0Y2hlclRyYW5zbGF0aW9uT3B0aW9ucztcclxuXHJcbiAgZ2V0IGFjdGlvbkJ1dHRvbkxvYWRlcigpIHsgcmV0dXJuIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuaXNUcmFuc2xhdGluZzsgfVxyXG5cclxuICBnZXQgc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLnNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBtYXhEaXNwbGF5ZWRMYW5ndWFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXM7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBub1N5c3RlbXNFcnJvcjogTm90aWZpY2F0aW9uTWVzc2FnZSA9IHsgYm9keTogXCJUTERfVFJBTlNMQVRFLkVSUk9SX05PX1NZU1RFTVNfTE9BREVEXCIsIHR5cGU6IE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlLkVSUk9SLCBoaWRlQ2xvc2U6IHRydWUgfTtcclxuXHJcbiAgZ2V0IGFjdGlvbkJ1dHRvbkRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlRmlsZVNlcnZpY2UuZGlzYWJsZVRyYW5zbGF0ZUJ1dHRvblxyXG4gICAgICB8fCB0aGlzLmF1ZGlvU2VydmljZS5pc1JlY29yZGluZ1xyXG4gICAgICB8fCB0aGlzLnZvaWNlUHJvY2Vzc2luZ1NlcnZpY2UuaXNQcm9jZXNzaW5nXHJcbiAgICAgIHx8IHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2UuaXNEaWN0YXRpbmdcclxuICB9XHJcblxyXG4gIGdldCBzaG93VHJhbnNsYXRlQnV0dG9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS50ZXh0Q29uZmlnLnNob3dUcmFuc2xhdGVCdXR0b24gJiYgIXRoaXMudHJhbnNsYXRlRmlsZVNlcnZpY2UubXVsdGlwbGVGaWxlVXBsb2FkQWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgLy8gdGhpcyBwYXJhbSBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIG1heCBoZWlnaHQgaWYgbXVsdGlwbGUgZmlsZSBjb21wb25lbnQgaXMgYWN0aXZlLCBzaW5jZSB0aGVyZSBzaG91bGRuJ3QgYmUgbWF4IGhlaWdodCBpbiB0aGF0IGNhc2UuXHJcbiAgZ2V0IGlzTXVsdGlwbGVGaWxlc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnRsZFRyYW5zbGF0ZUJvZHk/Lm11bHRpcGxlRmlsZXNVcGxvYWRlZDtcclxuICB9XHJcblxyXG4gIGdldCBoaWRlTGFuZ01lbnVMYWJlbHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlPy5jb3JlQ29uZmlnLmhpZGVMYW5nTWVudUxhYmVscztcclxuICB9XHJcblxyXG4gIGdldCBpc0NvbGxlY3Rpb25zQWN0aXZhdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZT8udGVybUNvbmZpZz8uaXNDb2xsZWN0aW9uc0FjdGl2YXRlZDtcclxuICB9XHJcblxyXG4gIGdldCBzb3VyY2VMYW5ndWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN5c3RlbU9iaj8uc291cmNlTGFuZy5sYW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRhcmdldExhbmd1YWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlU3lzdGVtT2JqPy50YXJnZXRMYW5nLmxhbmc7XHJcbiAgfVxyXG5cclxuICBnZXQgc3lzdGVtUGlja2VyRHJvcGRvd25WaXNpYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5vcGVuZWRNZW51ICE9PSBPcGVuZWRNZW51Lk5PTkU7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFuZ3VhZ2VNZW51VmVyc2lvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZz8ubGFuZ3VhZ2VNZW51VmVyc2lvbjtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGxhbmd1YWdlTWVudVYxID0gbGFuZ3VhZ2VNZW51VmVyc2lvbi5WMTtcclxuICByZWFkb25seSBsYW5ndWFnZU1lbnVWMiA9IGxhbmd1YWdlTWVudVZlcnNpb24uVjI7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlRmlsZVNlcnZpY2U6IFRsZFRyYW5zbGF0ZUZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVUZXh0U2VydmljZTogVGxkVHJhbnNsYXRlVGV4dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0czogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVCdXR0b25TZXJ2aWNlOiBUbGRUcmFuc2xhdGVCdXR0b25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0bGRTeXN0ZW06IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdWRpb1NlcnZpY2U6IEF1ZGlvUmVjb3JkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdm9pY2VQcm9jZXNzaW5nU2VydmljZTogVGxkVm9pY2VJbnB1dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHd0d1F1ZXJ5U2VydmljZTogV3R3TGlua1BhcmFtc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5c3RlbVBpY2tlclNlcnZpY2U6IFRyYW5zbGF0aW9uU3lzdGVtUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVybWlub2xvZ3lTZXJ2aWNlOiBUZXJtaW5vbG9neVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgY2hhbmdlQXV0aChhdXRoT3B0aW9uczogSUF1dGhPcHRpb25zKSB7XHJcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5pc0F1dGggPSBhdXRoT3B0aW9ucy5pc0F1dGg7XHJcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UudGVybUNvbmZpZy5jYW5DcmVhdGVDb2xsZWN0aW9uID0gYXV0aE9wdGlvbnMuY2FuQ3JlYXRlVGVybUNvbGxlY3Rpb247XHJcbiAgICB0aGlzLnRyYW5zbGF0ZUZpbGVTZXJ2aWNlLmNsZWFyKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVXaWRnZXQoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVXaWRnZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRsZFN5c3RlbS5pbml0KHRoaXMudGxkU3lzdGVtLmdldExhc3RVc2VkU3lzdGVtKCkgPz8gdGhpcy5jb25maWdTZXJ2aWNlLmNvcmVDb25maWcuZGVmYXVsdFN5c3RlbUlkKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5pY29uU2VydmljZS5yZWdpc3Rlckljb25zKGljb25zKTtcclxuICAgIHRoaXMucmVtb3ZlTWVzc2FnZXNPbkNsZWFyKCk7XHJcblxyXG4gICAgdGhpcy50bGRTeXN0ZW0uZ2V0TG9hZGVkU3lzdGVtcygpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAoIXJlcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2godGhpcy5ub1N5c3RlbXNFcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLmRlYnVnKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGF2YWlsYWJsZUxhbmd1YWdlcykge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnNldFRyYW5zbGF0aW9uKGtleSwgYXZhaWxhYmxlTGFuZ3VhZ2VzW2tleV0sIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplV2lkZ2V0KCk7XHJcblxyXG4gICAgdGhpcy50bGRTeXN0ZW0uZ2V0QWN0aXZlRGF0YSgpLnBpcGUoXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsOiBBY3RpdmVEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVTeXN0ZW1PYmogPSB2YWw7XHJcbiAgICAgICAgaWYgKCF2YWwpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub25TeXN0ZW1DaGFuZ2UuZW1pdCh2YWwpO1xyXG5cclxuICAgICAgICB0aGlzLnN3aXRjaGVyT3B0aW9ucyA9IHtcclxuICAgICAgICAgIGRvbWFpbnM6IHZhbC5kb21haW5zLFxyXG4gICAgICAgICAgc291cmNlOiB7IGNvZGU6IHZhbC5zb3VyY2VMYW5nLmxhbmcsIHN5c3RlbUlkOiB2YWwuc3lzdGVtSWQgfSxcclxuICAgICAgICAgIHNvdXJjZUxhbmd1YWdlTGlzdDogdmFsLnNvdXJjZUxhbmdMaXN0LFxyXG4gICAgICAgICAgc3lzdGVtSWQ6IHZhbC5zeXN0ZW1JZCxcclxuICAgICAgICAgIHN3YXBBY3RpdmU6IHZhbC5zd2FwTGFuZ0FjdGl2ZSxcclxuICAgICAgICAgIHRhcmdldDogeyBjb2RlOiB2YWwudGFyZ2V0TGFuZy5sYW5nLCBzeXN0ZW1JZDogdmFsLnN5c3RlbUlkIH0sXHJcbiAgICAgICAgICB0YXJnZXRMYW5ndWFnZUxpc3Q6IHZhbC50YXJnZXRMYW5nTGlzdCxcclxuICAgICAgICAgIHZlbmRvcnM6IHZhbC52ZW5kb3JzLFxyXG4gICAgICAgICAgbGFuZ3VhZ2VJZDogdmFsLmxhbmd1YWdlSWRcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLnNvdXJjZUNoYW5nZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnN3YXBTeXN0ZW1zKSB7XHJcbiAgICAgICAgICB0aGlzLnN3YXBMYW5ndWFnZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlQnV0dG9uU2VydmljZS5nZXRBY3Rpb25DbGljaygpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVCdXR0b25DbGljaygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnd0d1F1ZXJ5U2VydmljZS5xdWVyeSgpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocXVlcnk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMuZm9yRWFjaChtc2cgPT4ge1xyXG4gICAgICAgICAgbXNnLmxvY2FsaXphdGlvblBhcmFtcy5xdWVyeVN0cmluZyA9IHF1ZXJ5XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWxlcnRzLmdldE1lc3NhZ2VzKCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBOb3RpZmljYXRpb25NZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgbWVzc2FnZS5sb2NhbGl6YXRpb25QYXJhbXMucXVlcnlTdHJpbmcgPSB0aGlzLnd0d1F1ZXJ5U2VydmljZS5kZWZhdWx0UXVlcnlTdHJpbmc7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2U/LmRlbGV0ZSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVFeGlzdGluZ01lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBOb3RpZmljYXRpb25NZXNzYWdlVHlwZS5FUlJPUikge1xyXG4gICAgICAgICAgdGhpcy5vbkVycm9yLmVtaXQobWVzc2FnZS5lcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgdGhpcy5hZGRNZXNzYWdlKG1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBjb25zdCBhcHBOYW1lS2V5ID0gXCJBUFBfTkFNRVwiO1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc3RyZWFtKFthcHBOYW1lS2V5XSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbnMpID0+IHtcclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5hcHBOYW1lID0gdHJhbnNsYXRpb25zW2FwcE5hbWVLZXldO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRlcm1pbm9sb2d5U2VydmljZS5nZXRSZXRyYW5zbGF0ZVNpZ25hbCgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50cmFuc2xhdGVGaWxlU2VydmljZS5maWxlTmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlQnV0dG9uQ2xpY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTWVzc2FnZShpeDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VzLnNwbGljZShpeCwgMSk7XHJcbiAgfVxyXG5cclxuICBzd2FwTGFuZ3VhZ2VzKCkge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uc3dhcFN5c3RlbUxhbmd1YWdlcygpO1xyXG4gIH1cclxuXHJcbiAgc291cmNlTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uY2hhbmdlTGFuZ3VhZ2UobGFuZ3VhZ2UsIHRoaXMuc3dpdGNoZXJPcHRpb25zLnRhcmdldC5jb2RlKTtcclxuICB9XHJcblxyXG4gIHN5c3RlbUNoYW5nZShzeXN0ZW1JZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRsZFN5c3RlbS5jaGFuZ2VTeXN0ZW0oc3lzdGVtSWQpO1xyXG4gIH1cclxuXHJcbiAgdGFyZ2V0TGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uY2hhbmdlTGFuZ3VhZ2UodGhpcy5zd2l0Y2hlck9wdGlvbnMuc291cmNlLmNvZGUsIGxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIHRyYW5zbGF0ZUJ1dHRvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMudHJhbnNsYXRlRmlsZVNlcnZpY2UudHJhbnNsYXRpb25GaWxlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZUZpbGVTZXJ2aWNlLnRyYW5zbGF0ZUJ1dHRvbkNsaWNrKHRoaXMuYWN0aXZlU3lzdGVtT2JqKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVRleHRTZXJ2aWNlLm9uVHJhbnNsYXRlQnV0dG9uQ2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZU1lc3NhZ2VzT25DbGVhcigpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlRmlsZVNlcnZpY2Uub25DbGVhcigpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgICB9KVxyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlVGV4dFNlcnZpY2Uub25DbGVhcigpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQobnVsbClcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRXhpc3RpbmdNZXNzYWdlKG1lc3NhZ2U6IE5vdGlmaWNhdGlvbk1lc3NhZ2UpOiB2b2lkIHtcclxuICAgIGRlbGV0ZSBtZXNzYWdlLmRlbGV0ZTtcclxuICAgIGNvbnN0IGRlbGV0ZU1zZ1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpO1xyXG4gICAgY29uc3QgbXNnID0gdGhpcy5tZXNzYWdlcy5maW5kKChleGlzdGluZ01zZykgPT4gXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KGV4aXN0aW5nTXNnKSA9PT0gZGVsZXRlTXNnU3RyaW5nKTtcclxuICAgICAgXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubWVzc2FnZXMuaW5kZXhPZihtc2cpO1xyXG5cclxuICAgIGlmIChpbmRleCA8IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVtb3ZlTWVzc2FnZShpbmRleCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZE1lc3NhZ2UobWVzc2FnZTogTm90aWZpY2F0aW9uTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgLy8gcHVzaGluZyBvbmx5IFwib25lIG9mXCIgbWVzc2FnZSBpbiBhcnJheSwgc28gc2NyZWVuIGlzIG5vdCBzcGFtbWVkIHdpdGggbWVzc2FnZXNcclxuICAgIGNvbnN0IGRlbGV0ZU1zZ1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UubG9jYWxpemF0aW9uUGFyYW1zKTtcclxuICAgIGNvbnN0IGV4aXN0aW5nTWVzc2FnZSA9IHRoaXMubWVzc2FnZXMuZmluZChtc2cgPT4gbXNnLnRpdGxlID09PSBtZXNzYWdlLnRpdGxlXHJcbiAgICAgICYmIG1zZy50eXBlID09PSBtZXNzYWdlLnR5cGVcclxuICAgICAgJiYgbWVzc2FnZS5ib2R5ID09PSBtc2cuYm9keVxyXG4gICAgICAmJiBKU09OLnN0cmluZ2lmeShtc2cubG9jYWxpemF0aW9uUGFyYW1zKSA9PT0gZGVsZXRlTXNnU3RyaW5nKTtcclxuICAgIGlmICghZXhpc3RpbmdNZXNzYWdlKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZXMucHVzaChtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiaC0xMDAgdGxkLXRyYW5zbGF0ZVwiXHJcbiAgW25nQ2xhc3MubHQtbWRdPVwiJ3RsZC10cmFuc2xhdGUtdGFibGV0IHRsZC1kZWZhdWx0LWJvcmRlci1ib3R0b20nXCJcclxuICBbbmdDbGFzcy5sdC1zbV09XCIndGxkLXRyYW5zbGF0ZS1tb2JpbGUgdGxkLWRlZmF1bHQtYm9yZGVyLWJvdHRvbSdcIlxyXG4gIFtjbGFzcy50bGQtdHJhbnNsYXRlLW11bHRpcGxlLWZpbGVzLWFjdGl2ZV09XCJpc011bHRpcGxlRmlsZXNBY3RpdmVcIj5cclxuICA8ZGl2IGNsYXNzPVwidGxkLXRyYW5zbGF0ZS13cmFwcGVyIHRsZC1kZWZhdWx0LWJvcmRlclwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4PlxyXG4gICAgPGRpdiBjbGFzcz1cInRsZC10cmFuc2xhdGUtc3dpdGNoZXItd3JhcHBlciB0bGQtZGVmYXVsdC1ib3JkZXItYm90dG9tXCI+XHJcbiAgICAgIDx0bGQtdHJhbnNsYXRlLXN3aXRjaGVyICpuZ0lmPVwic3dpdGNoZXJPcHRpb25zICYmIGxhbmd1YWdlTWVudVZlcnNpb24gPT09IGxhbmd1YWdlTWVudVYxXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uQnV0dG9uRGlzYWJsZWRcIiBbaXNDb2xsZWN0aW9uc0FjdGl2YXRlZF09XCJpc0NvbGxlY3Rpb25zQWN0aXZhdGVkXCIgW3NldHRpbmdzXT1cInN3aXRjaGVyT3B0aW9uc1wiXHJcbiAgICAgICAgW21heERpc3BsYXllZExhbmd1YWdlc109XCJtYXhEaXNwbGF5ZWRMYW5ndWFnZXNcIiBbc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lXT1cInNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZVwiXHJcbiAgICAgICAgW2J1dHRvbkRpc2FibGVkXT1cImFjdGlvbkJ1dHRvbkRpc2FibGVkXCIgW2hpZGVMYW5nTWVudUxhYmVsc109XCJoaWRlTGFuZ01lbnVMYWJlbHNcIlxyXG4gICAgICAgIChvbkRvbWFpbkNoYW5nZSk9XCJzeXN0ZW1DaGFuZ2UoJGV2ZW50KVwiIChvbkFjdGlvbkNsaWNrKT1cInRyYW5zbGF0ZUJ1dHRvbkNsaWNrKClcIlxyXG4gICAgICAgIChvbkxhbmd1YWdlU3dhcCk9XCJzd2FwTGFuZ3VhZ2VzKClcIiAob25Tb3VyY2VMYW5ndWFnZUNoYW5nZSk9XCJzb3VyY2VMYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAob25UYXJnZXRMYW5ndWFnZUNoYW5nZSk9XCJ0YXJnZXRMYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCIgW2xvYWRlcl09XCJhY3Rpb25CdXR0b25Mb2FkZXJcIiBbc2hvd1RyYW5zbGF0ZUJ1dHRvbl09XCJzaG93VHJhbnNsYXRlQnV0dG9uXCI+XHJcbiAgICAgIDwvdGxkLXRyYW5zbGF0ZS1zd2l0Y2hlcj5cclxuICAgICAgPHRsZC10cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyICpuZ0lmPVwibGFuZ3VhZ2VNZW51VmVyc2lvbj09PWxhbmd1YWdlTWVudVYyXCJcclxuICAgICAgICBbaXNDb2xsZWN0aW9uc0FjdGl2YXRlZF09XCJpc0NvbGxlY3Rpb25zQWN0aXZhdGVkXCI+PC90bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VzLmxlbmd0aFwiIGNsYXNzPVwibWVzc2FnZS13cmFwcGVyXCI+XHJcbiAgICAgIDxsaWItdGxkLW5vdGlmaWNhdGlvbi1tZXNzYWdlIFtpbmxpbmVdPVwidHJ1ZVwiICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzOyBsZXQgaXggPSBpbmRleFwiIFttZXNzYWdlXT1cIm1lc3NhZ2VcIlxyXG4gICAgICAgIChjbG9zZUNsaWNrZWQpPVwicmVtb3ZlTWVzc2FnZShpeClcIj5cclxuICAgICAgPC9saWItdGxkLW5vdGlmaWNhdGlvbi1tZXNzYWdlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4RmxleCBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgPHRsZC10cmFuc2xhdGUtYm9keSBmeEZsZXggZnhMYXlvdXRBbGlnbj1cImNvbHVtblwiIFthdHRyLnNvdXJjZS1sYW5ndWFnZV09XCJzb3VyY2VMYW5ndWFnZVwiXHJcbiAgICAgICAgW2F0dHIudGFyZ2V0LWxhbmd1YWdlXT1cInRhcmdldExhbmd1YWdlXCI+PC90bGQtdHJhbnNsYXRlLWJvZHk+XHJcbiAgICAgIDx0bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93biBbbmdDbGFzcy54c109XCInbW9iaWxlJ1wiICpuZ0lmPVwic3lzdGVtUGlja2VyRHJvcGRvd25WaXNpYmxlXCI+XHJcbiAgICAgIDwvdGxkLXRyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -4,7 +4,7 @@ import { NgModule } from '@angular/core';
4
4
  import { FlexLayoutModule } from '@ngbracket/ngx-layout';
5
5
  import { FormsModule } from '@angular/forms';
6
6
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
7
- import { ALERT_CONFIGURATION_TOKEN, CloseButtonModule, LLM_CONFIGURATION_TOKEN, NotificationMessageModule, } from '@tilde-nlp/ngx-common';
7
+ import { ALERT_CONFIGURATION_TOKEN, CloseButtonModule, NotificationMessageModule, } from '@tilde-nlp/ngx-common';
8
8
  import { alertServiceConfigurationFactory } from './factories/alert-service-configuration.factory';
9
9
  import { TLD_TRANSLATE_CONFIG_TOKEN } from './injection-tokens';
10
10
  import { TldCommonModule } from './modules/tld-common';
@@ -14,7 +14,6 @@ import { TldTextModule } from './modules/tld-text';
14
14
  import { TldTooltipModule } from './modules/tld-tooltip';
15
15
  import { TldTranslateBodyComponent } from './tld-translate-body/tld-translate-body.component';
16
16
  import { TldTranslateComponent } from './tld-translate.component';
17
- import { llmServiceConfiguration } from './factories/llm-service-configuration.factory';
18
17
  import * as i0 from "@angular/core";
19
18
  export class TldTranslateModule {
20
19
  static forRoot(configuration) {
@@ -24,11 +23,6 @@ export class TldTranslateModule {
24
23
  useFactory: alertServiceConfigurationFactory,
25
24
  deps: [TldTranslateConfigService],
26
25
  },
27
- {
28
- provide: LLM_CONFIGURATION_TOKEN,
29
- useFactory: llmServiceConfiguration,
30
- deps: [TldTranslateConfigService],
31
- }
32
26
  ];
33
27
  if (configuration) {
34
28
  providers.push({
@@ -86,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
86
80
  providers: [TranslateService],
87
81
  }]
88
82
  }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvdGxkLXRyYW5zbGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFDTix5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2Qix5QkFBeUIsR0FDekIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQW9CeEYsTUFBTSxPQUFPLGtCQUFrQjtJQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLGFBQW1DO1FBQ2pELE1BQU0sU0FBUyxHQUFlO1lBQzdCO2dCQUNDLE9BQU8sRUFBRSx5QkFBeUI7Z0JBQ2xDLFVBQVUsRUFBRSxnQ0FBZ0M7Z0JBQzVDLElBQUksRUFBRSxDQUFDLHlCQUF5QixDQUFDO2FBQ2pDO1lBQ0Q7Z0JBQ0MsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsVUFBVSxFQUFFLHVCQUF1QjtnQkFDbkMsSUFBSSxFQUFFLENBQUMseUJBQXlCLENBQUM7YUFDakM7U0FDRCxDQUFDO1FBRUYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNkLE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFFBQVEsRUFBRSxhQUFhO2FBQ3ZCLENBQUMsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ04sUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixTQUFTO1NBQ1QsQ0FBQztJQUNILENBQUM7d0dBMUJXLGtCQUFrQjt5R0FBbEIsa0JBQWtCLGlCQWpCZix5QkFBeUIsRUFBRSxxQkFBcUIsYUFHOUQsWUFBWTtZQUNaLGVBQWU7WUFDZixXQUFXO1lBQ1gsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQix5QkFBeUI7WUFDekIsaUJBQWlCO1lBQ2pCLGdCQUFnQixhQVpQLHFCQUFxQjt5R0FnQm5CLGtCQUFrQixhQUZuQixDQUFDLGdCQUFnQixDQUFDLFlBWjVCLFlBQVk7WUFDWixlQUFlO1lBQ2YsV0FBVztZQUNYLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIseUJBQXlCO1lBQ3pCLGlCQUFpQjtZQUNqQixnQkFBZ0I7OzRGQUlMLGtCQUFrQjtrQkFsQjlCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMseUJBQXlCLEVBQUUscUJBQXFCLENBQUM7b0JBQ2hFLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxPQUFPLEVBQUU7d0JBQ1IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLHlCQUF5Qjt3QkFDekIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7cUJBQ2hCO29CQUNELFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaXBib2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHtcclxuXHRBTEVSVF9DT05GSUdVUkFUSU9OX1RPS0VOLFxyXG5cdENsb3NlQnV0dG9uTW9kdWxlLFxyXG5cdExMTV9DT05GSUdVUkFUSU9OX1RPS0VOLFxyXG5cdE5vdGlmaWNhdGlvbk1lc3NhZ2VNb2R1bGUsXHJcbn0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgYWxlcnRTZXJ2aWNlQ29uZmlndXJhdGlvbkZhY3RvcnkgfSBmcm9tICcuL2ZhY3Rvcmllcy9hbGVydC1zZXJ2aWNlLWNvbmZpZ3VyYXRpb24uZmFjdG9yeSc7XHJcbmltcG9ydCB7IFRMRF9UUkFOU0xBVEVfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgVGxkQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1jb21tb24nO1xyXG5pbXBvcnQgeyBJVGxkVHJhbnNsYXRlQ29uZmlnIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1jb21tb24vbW9kZWxzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVGxkRG9jdW1lbnRNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvdGxkLWRvY3VtZW50JztcclxuaW1wb3J0IHsgVGxkVGV4dE1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtdGV4dCc7XHJcbmltcG9ydCB7IFRsZFRvb2x0aXBNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvdGxkLXRvb2x0aXAnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi90bGQtdHJhbnNsYXRlLWJvZHkvdGxkLXRyYW5zbGF0ZS1ib2R5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBsbG1TZXJ2aWNlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZmFjdG9yaWVzL2xsbS1zZXJ2aWNlLWNvbmZpZ3VyYXRpb24uZmFjdG9yeSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG5cdGRlY2xhcmF0aW9uczogW1RsZFRyYW5zbGF0ZUJvZHlDb21wb25lbnQsIFRsZFRyYW5zbGF0ZUNvbXBvbmVudF0sXHJcblx0ZXhwb3J0czogW1RsZFRyYW5zbGF0ZUNvbXBvbmVudF0sXHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0VHJhbnNsYXRlTW9kdWxlLFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRDbGlwYm9hcmRNb2R1bGUsXHJcblx0XHRUbGRDb21tb25Nb2R1bGUsXHJcblx0XHRUbGRUZXh0TW9kdWxlLFxyXG5cdFx0VGxkRG9jdW1lbnRNb2R1bGUsXHJcblx0XHRUbGRUb29sdGlwTW9kdWxlLFxyXG5cdFx0Tm90aWZpY2F0aW9uTWVzc2FnZU1vZHVsZSxcclxuXHRcdENsb3NlQnV0dG9uTW9kdWxlLFxyXG5cdFx0RmxleExheW91dE1vZHVsZSxcclxuXHRdLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZVNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVHJhbnNsYXRlTW9kdWxlIHtcclxuXHRzdGF0aWMgZm9yUm9vdChjb25maWd1cmF0aW9uPzogSVRsZFRyYW5zbGF0ZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8VGxkVHJhbnNsYXRlTW9kdWxlPiB7XHJcblx0XHRjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwcm92aWRlOiBBTEVSVF9DT05GSUdVUkFUSU9OX1RPS0VOLFxyXG5cdFx0XHRcdHVzZUZhY3Rvcnk6IGFsZXJ0U2VydmljZUNvbmZpZ3VyYXRpb25GYWN0b3J5LFxyXG5cdFx0XHRcdGRlcHM6IFtUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlXSxcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHByb3ZpZGU6IExMTV9DT05GSUdVUkFUSU9OX1RPS0VOLFxyXG5cdFx0XHRcdHVzZUZhY3Rvcnk6IGxsbVNlcnZpY2VDb25maWd1cmF0aW9uLFxyXG5cdFx0XHRcdGRlcHM6IFtUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlXSxcclxuXHRcdFx0fVxyXG5cdFx0XTtcclxuXHJcblx0XHRpZiAoY29uZmlndXJhdGlvbikge1xyXG5cdFx0XHRwcm92aWRlcnMucHVzaCh7XHJcblx0XHRcdFx0cHJvdmlkZTogVExEX1RSQU5TTEFURV9DT05GSUdfVE9LRU4sXHJcblx0XHRcdFx0dXNlVmFsdWU6IGNvbmZpZ3VyYXRpb24sXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB7XHJcblx0XHRcdG5nTW9kdWxlOiBUbGRUcmFuc2xhdGVNb2R1bGUsXHJcblx0XHRcdHByb3ZpZGVycyxcclxuXHRcdH07XHJcblx0fVxyXG59XHJcbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvdGxkLXRyYW5zbGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFDTix5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLHlCQUF5QixHQUN6QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBb0JsRSxNQUFNLE9BQU8sa0JBQWtCO0lBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBbUM7UUFDakQsTUFBTSxTQUFTLEdBQWU7WUFDN0I7Z0JBQ0MsT0FBTyxFQUFFLHlCQUF5QjtnQkFDbEMsVUFBVSxFQUFFLGdDQUFnQztnQkFDNUMsSUFBSSxFQUFFLENBQUMseUJBQXlCLENBQUM7YUFDakM7U0FDRCxDQUFDO1FBRUYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNkLE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFFBQVEsRUFBRSxhQUFhO2FBQ3ZCLENBQUMsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ04sUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixTQUFTO1NBQ1QsQ0FBQztJQUNILENBQUM7d0dBckJXLGtCQUFrQjt5R0FBbEIsa0JBQWtCLGlCQWpCZix5QkFBeUIsRUFBRSxxQkFBcUIsYUFHOUQsWUFBWTtZQUNaLGVBQWU7WUFDZixXQUFXO1lBQ1gsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQix5QkFBeUI7WUFDekIsaUJBQWlCO1lBQ2pCLGdCQUFnQixhQVpQLHFCQUFxQjt5R0FnQm5CLGtCQUFrQixhQUZuQixDQUFDLGdCQUFnQixDQUFDLFlBWjVCLFlBQVk7WUFDWixlQUFlO1lBQ2YsV0FBVztZQUNYLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIseUJBQXlCO1lBQ3pCLGlCQUFpQjtZQUNqQixnQkFBZ0I7OzRGQUlMLGtCQUFrQjtrQkFsQjlCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMseUJBQXlCLEVBQUUscUJBQXFCLENBQUM7b0JBQ2hFLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxPQUFPLEVBQUU7d0JBQ1IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLHlCQUF5Qjt3QkFDekIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7cUJBQ2hCO29CQUNELFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaXBib2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHtcclxuXHRBTEVSVF9DT05GSUdVUkFUSU9OX1RPS0VOLFxyXG5cdENsb3NlQnV0dG9uTW9kdWxlLFxyXG5cdE5vdGlmaWNhdGlvbk1lc3NhZ2VNb2R1bGUsXHJcbn0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgYWxlcnRTZXJ2aWNlQ29uZmlndXJhdGlvbkZhY3RvcnkgfSBmcm9tICcuL2ZhY3Rvcmllcy9hbGVydC1zZXJ2aWNlLWNvbmZpZ3VyYXRpb24uZmFjdG9yeSc7XHJcbmltcG9ydCB7IFRMRF9UUkFOU0xBVEVfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgVGxkQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1jb21tb24nO1xyXG5pbXBvcnQgeyBJVGxkVHJhbnNsYXRlQ29uZmlnIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1jb21tb24vbW9kZWxzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVGxkRG9jdW1lbnRNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvdGxkLWRvY3VtZW50JztcclxuaW1wb3J0IHsgVGxkVGV4dE1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtdGV4dCc7XHJcbmltcG9ydCB7IFRsZFRvb2x0aXBNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvdGxkLXRvb2x0aXAnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi90bGQtdHJhbnNsYXRlLWJvZHkvdGxkLXRyYW5zbGF0ZS1ib2R5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vdGxkLXRyYW5zbGF0ZS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRkZWNsYXJhdGlvbnM6IFtUbGRUcmFuc2xhdGVCb2R5Q29tcG9uZW50LCBUbGRUcmFuc2xhdGVDb21wb25lbnRdLFxyXG5cdGV4cG9ydHM6IFtUbGRUcmFuc2xhdGVDb21wb25lbnRdLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdFRyYW5zbGF0ZU1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0Q2xpcGJvYXJkTW9kdWxlLFxyXG5cdFx0VGxkQ29tbW9uTW9kdWxlLFxyXG5cdFx0VGxkVGV4dE1vZHVsZSxcclxuXHRcdFRsZERvY3VtZW50TW9kdWxlLFxyXG5cdFx0VGxkVG9vbHRpcE1vZHVsZSxcclxuXHRcdE5vdGlmaWNhdGlvbk1lc3NhZ2VNb2R1bGUsXHJcblx0XHRDbG9zZUJ1dHRvbk1vZHVsZSxcclxuXHRcdEZsZXhMYXlvdXRNb2R1bGUsXHJcblx0XSxcclxuXHRwcm92aWRlcnM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZU1vZHVsZSB7XHJcblx0c3RhdGljIGZvclJvb3QoY29uZmlndXJhdGlvbj86IElUbGRUcmFuc2xhdGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFRsZFRyYW5zbGF0ZU1vZHVsZT4ge1xyXG5cdFx0Y29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0cHJvdmlkZTogQUxFUlRfQ09ORklHVVJBVElPTl9UT0tFTixcclxuXHRcdFx0XHR1c2VGYWN0b3J5OiBhbGVydFNlcnZpY2VDb25maWd1cmF0aW9uRmFjdG9yeSxcclxuXHRcdFx0XHRkZXBzOiBbVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZV0sXHJcblx0XHRcdH0sXHJcblx0XHRdO1xyXG5cclxuXHRcdGlmIChjb25maWd1cmF0aW9uKSB7XHJcblx0XHRcdHByb3ZpZGVycy5wdXNoKHtcclxuXHRcdFx0XHRwcm92aWRlOiBUTERfVFJBTlNMQVRFX0NPTkZJR19UT0tFTixcclxuXHRcdFx0XHR1c2VWYWx1ZTogY29uZmlndXJhdGlvbixcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0bmdNb2R1bGU6IFRsZFRyYW5zbGF0ZU1vZHVsZSxcclxuXHRcdFx0cHJvdmlkZXJzLFxyXG5cdFx0fTtcclxuXHR9XHJcbn1cclxuIl19