@agorapulse/ui-components 17.4.9 → 17.4.10

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.
@@ -26,6 +26,7 @@ export declare class AvatarComponent implements OnInit {
26
26
  set profilePicture(profilePicture: string | undefined);
27
27
  set showInitials(showInitials: boolean);
28
28
  alt: string;
29
+ youtubeAvatarMode: boolean;
29
30
  roundedAvatar: boolean;
30
31
  youtubeAvatar: boolean;
31
32
  set rounded(rounded: boolean);
@@ -44,6 +45,6 @@ export declare class AvatarComponent implements OnInit {
44
45
  ngOnInit(): void;
45
46
  onImageError(): void;
46
47
  static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, never>;
47
- static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "ap-avatar", never, { "alternativeText": { "alias": "alternativeText"; "required": false; }; "anonymous": { "alias": "anonymous"; "required": false; }; "username": { "alias": "username"; "required": false; }; "network": { "alias": "network"; "required": false; }; "online": { "alias": "online"; "required": false; }; "profilePicture": { "alias": "profilePicture"; "required": false; }; "showInitials": { "alias": "showInitials"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
48
+ static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "ap-avatar", never, { "alternativeText": { "alias": "alternativeText"; "required": false; }; "anonymous": { "alias": "anonymous"; "required": false; }; "username": { "alias": "username"; "required": false; }; "network": { "alias": "network"; "required": false; }; "online": { "alias": "online"; "required": false; }; "profilePicture": { "alias": "profilePicture"; "required": false; }; "showInitials": { "alias": "showInitials"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; "youtubeAvatarMode": { "alias": "youtubeAvatarMode"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
48
49
  static ngAcceptInputType_rounded: unknown;
49
50
  }
@@ -75,7 +75,7 @@ export class AutocompleteComponent {
75
75
  this.resultsLoadingSignal.set(false);
76
76
  }
77
77
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
78
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: AutocompleteComponent, isStandalone: true, selector: "ap-autocomplete", inputs: { placeholder: "placeholder", label: "label", inputId: "inputId", loadingText: "loadingText", notFoundText: "notFoundText", searchFn: "searchFn", trackByFn: "trackByFn", disabled: "disabled", optionLabel: "optionLabel", optionCaption: "optionCaption", optionImageUrl: "optionImageUrl", optionValue: "optionValue", optionTextTemplate: "optionTextTemplate" }, outputs: { selectOption: "selectOption" }, viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"input-autocomplete-wrapper\">\n <ap-form-field\n #formField\n #trigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin>\n <label [for]=\"inputId\">\n {{ label }}\n </label>\n <ap-input-group>\n <ap-symbol symbolId=\"search\" />\n <input\n apInput\n [id]=\"inputId\"\n [disabled]=\"disabledSignal()\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"searchTerm$.next($event)\" />\n </ap-input-group>\n </ap-form-field>\n <div class=\"search-results-wrapper\">\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayWidth]=\"inputWidthSignal()\"\n [cdkConnectedOverlayOpen]=\"showResultsSignal()\">\n <div class=\"ap-autocomplete-search-results\">\n @if (resultsLoadingSignal()) {\n <div class=\"ap-autocomplete-search-results-loading\">\n <ap-loader [diameter]=\"30\" />\n <span class=\"search-results-loading-label\">{{ loadingText }}</span>\n </div>\n } @else {\n @if (searchResultsSignal()?.length) {\n @for (option of searchResultsSignal(); track trackByFn($index, option)) {\n <div\n class=\"ap-autocomplete-search-results-item\"\n tabindex=\"0\"\n (keydown.enter)=\"onSelectOption(option)\"\n (click)=\"onSelectOption(option)\">\n @if (!optionTextTemplate) {\n @if (!optionLabel || !option[optionLabel]) {\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"option\">\n {{ option }}\n </span>\n </div>\n }\n @if (optionLabel && option[optionLabel]) {\n <div\n class=\"option\"\n [class.with-caption]=\"optionLabel && optionCaption && option[optionCaption]\">\n @if (!optionLabel) {\n <span class=\"item\">\n {{ option }}\n </span>\n }\n @if (optionImageUrl) {\n <ap-avatar\n [size]=\"24\"\n [showInitials]=\"true\"\n [username]=\"optionLabel ? option[optionLabel] : option\"\n [profilePicture]=\"option[optionImageUrl]\" />\n }\n @if (optionLabel && option[optionLabel]) {\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"option[optionLabel]\">\n {{ option[optionLabel] }}\n </span>\n </div>\n @if (optionCaption && option[optionCaption]) {\n <span\n class=\"caption\"\n [title]=\"option[optionCaption]\">\n {{ option[optionCaption] }}\n </span>\n }\n </div>\n }\n </div>\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"optionTextTemplate; context: { option: option }\" />\n }\n </div>\n }\n } @else {\n <div class=\"ap-autocomplete-search-results-not-found\">\n {{ notFoundText }}\n </div>\n }\n }\n </div>\n </ng-template>\n </div>\n</div>\n", styles: ["ap-autocomplete{display:block}ap-autocomplete .input-autocomplete-wrapper{display:flex;flex-direction:column}ap-autocomplete .search-results-wrapper{position:relative}.ap-autocomplete-search-results{width:100%;display:flex;flex-direction:column;border-radius:var(--ref-border-radius-sm);box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color);margin-top:var(--ref-spacing-xxxs);max-height:250px;overflow:auto}.ap-autocomplete-search-results-loading{display:flex;padding:var(--ref-spacing-sm) 0;flex-direction:column;justify-content:center;align-items:center;gap:var(--ref-spacing-xs)}.ap-autocomplete-search-results-loading .search-results-loading-label{font-style:italic;font-size:var(--ref-font-size-sm);color:var(--ref-color-grey-80)}.ap-autocomplete-search-results-not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm);font-style:italic;font-size:var(--ref-font-size-sm);color:var(--ref-color-grey-80);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ap-autocomplete-search-results-item{padding:var(--ref-spacing-xxs) var(--ref-spacing-sm)}.ap-autocomplete-search-results-item .option{display:flex;align-items:center;font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);color:var(--comp-select-one-line-text-color);line-height:var(--comp-select-one-line-text-line-height);font-family:var(--comp-select-one-line-text-font-family);gap:var(--ref-spacing-xs);min-height:24px}.ap-autocomplete-search-results-item .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ap-autocomplete-search-results-item .option .texts{flex:1;overflow:auto}.ap-autocomplete-search-results-item .option .texts .first-line{display:flex}.ap-autocomplete-search-results-item .option .texts .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ap-autocomplete-search-results-item .option.with-caption .texts{display:flex;flex-direction:column}.ap-autocomplete-search-results-item .option.with-caption .texts .label{color:var(--comp-select-two-line-title-text-color);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);font-weight:var(--comp-select-two-line-title-text-font-weight)}.ap-autocomplete-search-results-item .option.with-caption .texts .caption{color:var(--comp-select-two-line-caption-text-color);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);font-weight:var(--comp-select-two-line-caption-text-font-weight);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ap-autocomplete-search-results-item:hover{cursor:pointer;background-color:var(--ref-color-electric-blue-10)}.ap-autocomplete-search-results-item:active{background-color:var(--ref-color-electric-blue-20)}.ap-autocomplete-search-results-item:focus{background-color:var(--ref-color-electric-blue-20)}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "component", type: FormFieldComponent, selector: "ap-form-field" }, { kind: "component", type: InputGroupComponent, selector: "ap-input-group", inputs: ["symbolPosition"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: LoaderComponent, selector: "ap-loader", inputs: ["color", "diameter"] }, { kind: "directive", type: InputDirective, selector: "[apInput]" }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["alternativeText", "anonymous", "username", "network", "online", "profilePicture", "showInitials", "alt", "rounded", "size"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
78
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: AutocompleteComponent, isStandalone: true, selector: "ap-autocomplete", inputs: { placeholder: "placeholder", label: "label", inputId: "inputId", loadingText: "loadingText", notFoundText: "notFoundText", searchFn: "searchFn", trackByFn: "trackByFn", disabled: "disabled", optionLabel: "optionLabel", optionCaption: "optionCaption", optionImageUrl: "optionImageUrl", optionValue: "optionValue", optionTextTemplate: "optionTextTemplate" }, outputs: { selectOption: "selectOption" }, viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"input-autocomplete-wrapper\">\n <ap-form-field\n #formField\n #trigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin>\n <label [for]=\"inputId\">\n {{ label }}\n </label>\n <ap-input-group>\n <ap-symbol symbolId=\"search\" />\n <input\n apInput\n [id]=\"inputId\"\n [disabled]=\"disabledSignal()\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"searchTerm$.next($event)\" />\n </ap-input-group>\n </ap-form-field>\n <div class=\"search-results-wrapper\">\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayWidth]=\"inputWidthSignal()\"\n [cdkConnectedOverlayOpen]=\"showResultsSignal()\">\n <div class=\"ap-autocomplete-search-results\">\n @if (resultsLoadingSignal()) {\n <div class=\"ap-autocomplete-search-results-loading\">\n <ap-loader [diameter]=\"30\" />\n <span class=\"search-results-loading-label\">{{ loadingText }}</span>\n </div>\n } @else {\n @if (searchResultsSignal()?.length) {\n @for (option of searchResultsSignal(); track trackByFn($index, option)) {\n <div\n class=\"ap-autocomplete-search-results-item\"\n tabindex=\"0\"\n (keydown.enter)=\"onSelectOption(option)\"\n (click)=\"onSelectOption(option)\">\n @if (!optionTextTemplate) {\n @if (!optionLabel || !option[optionLabel]) {\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"option\">\n {{ option }}\n </span>\n </div>\n }\n @if (optionLabel && option[optionLabel]) {\n <div\n class=\"option\"\n [class.with-caption]=\"optionLabel && optionCaption && option[optionCaption]\">\n @if (!optionLabel) {\n <span class=\"item\">\n {{ option }}\n </span>\n }\n @if (optionImageUrl) {\n <ap-avatar\n [size]=\"24\"\n [showInitials]=\"true\"\n [username]=\"optionLabel ? option[optionLabel] : option\"\n [profilePicture]=\"option[optionImageUrl]\" />\n }\n @if (optionLabel && option[optionLabel]) {\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"option[optionLabel]\">\n {{ option[optionLabel] }}\n </span>\n </div>\n @if (optionCaption && option[optionCaption]) {\n <span\n class=\"caption\"\n [title]=\"option[optionCaption]\">\n {{ option[optionCaption] }}\n </span>\n }\n </div>\n }\n </div>\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"optionTextTemplate; context: { option: option }\" />\n }\n </div>\n }\n } @else {\n <div class=\"ap-autocomplete-search-results-not-found\">\n {{ notFoundText }}\n </div>\n }\n }\n </div>\n </ng-template>\n </div>\n</div>\n", styles: ["ap-autocomplete{display:block}ap-autocomplete .input-autocomplete-wrapper{display:flex;flex-direction:column}ap-autocomplete .search-results-wrapper{position:relative}.ap-autocomplete-search-results{width:100%;display:flex;flex-direction:column;border-radius:var(--ref-border-radius-sm);box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color);margin-top:var(--ref-spacing-xxxs);max-height:250px;overflow:auto}.ap-autocomplete-search-results-loading{display:flex;padding:var(--ref-spacing-sm) 0;flex-direction:column;justify-content:center;align-items:center;gap:var(--ref-spacing-xs)}.ap-autocomplete-search-results-loading .search-results-loading-label{font-style:italic;font-size:var(--ref-font-size-sm);color:var(--ref-color-grey-80)}.ap-autocomplete-search-results-not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm);font-style:italic;font-size:var(--ref-font-size-sm);color:var(--ref-color-grey-80);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ap-autocomplete-search-results-item{padding:var(--ref-spacing-xxs) var(--ref-spacing-sm)}.ap-autocomplete-search-results-item .option{display:flex;align-items:center;font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);color:var(--comp-select-one-line-text-color);line-height:var(--comp-select-one-line-text-line-height);font-family:var(--comp-select-one-line-text-font-family);gap:var(--ref-spacing-xs);min-height:24px}.ap-autocomplete-search-results-item .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ap-autocomplete-search-results-item .option .texts{flex:1;overflow:auto}.ap-autocomplete-search-results-item .option .texts .first-line{display:flex}.ap-autocomplete-search-results-item .option .texts .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ap-autocomplete-search-results-item .option.with-caption .texts{display:flex;flex-direction:column}.ap-autocomplete-search-results-item .option.with-caption .texts .label{color:var(--comp-select-two-line-title-text-color);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);font-weight:var(--comp-select-two-line-title-text-font-weight)}.ap-autocomplete-search-results-item .option.with-caption .texts .caption{color:var(--comp-select-two-line-caption-text-color);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);font-weight:var(--comp-select-two-line-caption-text-font-weight);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ap-autocomplete-search-results-item:hover{cursor:pointer;background-color:var(--ref-color-electric-blue-10)}.ap-autocomplete-search-results-item:active{background-color:var(--ref-color-electric-blue-20)}.ap-autocomplete-search-results-item:focus{background-color:var(--ref-color-electric-blue-20)}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "component", type: FormFieldComponent, selector: "ap-form-field" }, { kind: "component", type: InputGroupComponent, selector: "ap-input-group", inputs: ["symbolPosition"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: LoaderComponent, selector: "ap-loader", inputs: ["color", "diameter"] }, { kind: "directive", type: InputDirective, selector: "[apInput]" }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["alternativeText", "anonymous", "username", "network", "online", "profilePicture", "showInitials", "alt", "youtubeAvatarMode", "rounded", "size"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
79
79
  }
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AutocompleteComponent, decorators: [{
81
81
  type: Component,
@@ -122,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
122
122
  }], selectOption: [{
123
123
  type: Output
124
124
  }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hdXRvY29tcGxldGUvc3JjL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYXV0b2NvbXBsZXRlL3NyYy9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUs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LCttQkFDWCxlQUFlLHFGQUNmLGNBQWMsc0RBQ2QsZUFBZSw0TEFDZixhQUFhOzsyRkFLUixxQkFBcUI7a0JBbEJqQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsaUJBQWlCLGNBRWYsSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTtxQkFDaEIsaUJBRWMsaUJBQWlCLENBQUMsSUFBSTt3REFHNUIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDcUIsUUFBUTtzQkFBbEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ08sUUFBUTtzQkFBcEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFd0MsU0FBUztzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUc1QyxZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1hbmltYXRpb25zJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgSW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgU3ltYm9sQ29tcG9uZW50LCBTeW1ib2xSZWdpc3RyeSwgYXBTZWFyY2ggfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBpbmplY3QsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmcm9tRXZlbnQsIHNraXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtYXV0b2NvbXBsZXRlJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgU3ltYm9sQ29tcG9uZW50LFxuICAgICAgICBGb3JtRmllbGRDb21wb25lbnQsXG4gICAgICAgIElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgICAgIElucHV0RGlyZWN0aXZlLFxuICAgICAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgc3RyaW5nPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlYXJjaC4uLic7XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSBpbnB1dElkID0gJyc7XG4gICAgQElucHV0KCkgbG9hZGluZ1RleHQgPSAnTG9hZGluZyBJdGVtcyc7XG4gICAgQElucHV0KCkgbm90Rm91bmRUZXh0ID0gJ05vIHJlc3VsdCBmb3VuZCc7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2VhcmNoRm4hOiAodGVybTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPFRbXT47XG4gICAgQElucHV0KCkgdHJhY2tCeUZuOiAoaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gVCB8IFRba2V5b2YgVF0gPSAoXzogbnVtYmVyLCBpdGVtOiBUKSA9PiBpdGVtO1xuICAgIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkU2lnbmFsLnNldCh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9wdGlvbkNhcHRpb24/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uSW1hZ2VVcmw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uVGV4dFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb246IFQgfT47XG5cbiAgICBAVmlld0NoaWxkKCdmb3JtRmllbGQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZm9ybUZpZWxkITogRWxlbWVudFJlZjxGb3JtRmllbGRDb21wb25lbnQ+O1xuXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0T3B0aW9uOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlZFNpZ25hbCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcmVhZG9ubHkgc3ltYm9sUmVnaXN0cnk6IFN5bWJvbFJlZ2lzdHJ5ID0gaW5qZWN0KFN5bWJvbFJlZ2lzdHJ5KTtcbiAgICByZWFkb25seSBzZWFyY2hUZXJtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcmVhZG9ubHkgc2VhcmNoVGVybVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuc2VhcmNoVGVybSQpO1xuICAgIHJlYWRvbmx5IHNob3dSZXN1bHRzU2lnbmFsID0gc2lnbmFsKGZhbHNlKTtcbiAgICByZWFkb25seSByZXN1bHRzTG9hZGluZ1NpZ25hbCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0c1NpZ25hbCA9IHRvU2lnbmFsPGFueVtdPihcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtJC5waXBlKFxuICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNob3dSZXN1bHRzU2lnbmFsLnNldChmYWxzZSkpLFxuICAgICAgICAgICAgZmlsdGVyKHRlcm0gPT4gdGVybS5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNob3dSZXN1bHRzU2lnbmFsLnNldCh0cnVlKSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZXN1bHRzTG9hZGluZ1NpZ25hbC5zZXQodHJ1ZSkpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKHRlcm0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEZuKHRlcm0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZXN1bHRzTG9hZGluZ1NpZ25hbC5zZXQoZmFsc2UpKVxuICAgICAgICApXG4gICAgKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcmVhZG9ubHkgaW5wdXRXaWR0aFNpZ25hbCA9IHNpZ25hbCgwKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5LnJlZ2lzdGVyU3ltYm9scyhbYXBTZWFyY2hdKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0V2lkdGhTaWduYWwuc2V0KCh0aGlzLmZvcm1GaWVsZC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRXaWR0aCk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RPcHRpb24ob3B0aW9uOiBUKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiB0aGlzLm9wdGlvblZhbHVlICYmIG9wdGlvblt0aGlzLm9wdGlvblZhbHVlXSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb24uZW1pdChvcHRpb25bdGhpcy5vcHRpb25WYWx1ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb24uZW1pdChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXRBdXRvY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0QXV0b2NvbXBsZXRlKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoJycpO1xuICAgICAgICB0aGlzLnNob3dSZXN1bHRzU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMucmVzdWx0c0xvYWRpbmdTaWduYWwuc2V0KGZhbHNlKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtYXV0b2NvbXBsZXRlLXdyYXBwZXJcIj5cbiAgICA8YXAtZm9ybS1maWVsZFxuICAgICAgICAjZm9ybUZpZWxkXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgIGNka092ZXJsYXlPcmlnaW4+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWRcIj5cbiAgICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxhcC1pbnB1dC1ncm91cD5cbiAgICAgICAgICAgIDxhcC1zeW1ib2wgc3ltYm9sSWQ9XCJzZWFyY2hcIiAvPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgYXBJbnB1dFxuICAgICAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hUZXJtU2lnbmFsKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFRlcm0kLm5leHQoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvYXAtaW5wdXQtZ3JvdXA+XG4gICAgPC9hcC1mb3JtLWZpZWxkPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtcmVzdWx0cy13cmFwcGVyXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cImlucHV0V2lkdGhTaWduYWwoKVwiXG4gICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwic2hvd1Jlc3VsdHNTaWduYWwoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwLWF1dG9jb21wbGV0ZS1zZWFyY2gtcmVzdWx0c1wiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVzdWx0c0xvYWRpbmdTaWduYWwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXAtYXV0b2NvbXBsZXRlLXNlYXJjaC1yZXN1bHRzLWxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1sb2FkZXIgW2RpYW1ldGVyXT1cIjMwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VhcmNoLXJlc3VsdHMtbG9hZGluZy1sYWJlbFwiPnt7IGxvYWRpbmdUZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChzZWFyY2hSZXN1bHRzU2lnbmFsKCk/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHNlYXJjaFJlc3VsdHNTaWduYWwoKTsgdHJhY2sgdHJhY2tCeUZuKCRpbmRleCwgb3B0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hdXRvY29tcGxldGUtc2VhcmNoLXJlc3VsdHMtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uU2VsZWN0T3B0aW9uKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RPcHRpb24ob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFvcHRpb25UZXh0VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIW9wdGlvbkxhYmVsIHx8ICFvcHRpb25bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb25MYWJlbCAmJiBvcHRpb25bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53aXRoLWNhcHRpb25dPVwib3B0aW9uTGFiZWwgJiYgb3B0aW9uQ2FwdGlvbiAmJiBvcHRpb25bb3B0aW9uQ2FwdGlvbl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghb3B0aW9uTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uSW1hZ2VVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlcm5hbWVdPVwib3B0aW9uTGFiZWwgPyBvcHRpb25bb3B0aW9uTGFiZWxdIDogb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwib3B0aW9uW29wdGlvbkltYWdlVXJsXVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb25MYWJlbCAmJiBvcHRpb25bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlyc3QtbGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb25DYXB0aW9uICYmIG9wdGlvbltvcHRpb25DYXB0aW9uXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJvcHRpb25bb3B0aW9uQ2FwdGlvbl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbltvcHRpb25DYXB0aW9uXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGV4dFRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogb3B0aW9uIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwLWF1dG9jb21wbGV0ZS1zZWFyY2gtcmVzdWx0cy1ub3QtZm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBub3RGb3VuZFRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hdXRvY29tcGxldGUvc3JjL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYXV0b2NvbXBsZXRlL3NyYy9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUs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LCttQkFDWCxlQUFlLHFGQUNmLGNBQWMsc0RBQ2QsZUFBZSxpTkFDZixhQUFhOzsyRkFLUixxQkFBcUI7a0JBbEJqQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsaUJBQWlCLGNBRWYsSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTtxQkFDaEIsaUJBRWMsaUJBQWlCLENBQUMsSUFBSTt3REFHNUIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDcUIsUUFBUTtzQkFBbEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ08sUUFBUTtzQkFBcEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFd0MsU0FBUztzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUc1QyxZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1hbmltYXRpb25zJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgSW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgU3ltYm9sQ29tcG9uZW50LCBTeW1ib2xSZWdpc3RyeSwgYXBTZWFyY2ggfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBpbmplY3QsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmcm9tRXZlbnQsIHNraXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtYXV0b2NvbXBsZXRlJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgU3ltYm9sQ29tcG9uZW50LFxuICAgICAgICBGb3JtRmllbGRDb21wb25lbnQsXG4gICAgICAgIElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgICAgIElucHV0RGlyZWN0aXZlLFxuICAgICAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgc3RyaW5nPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlYXJjaC4uLic7XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSBpbnB1dElkID0gJyc7XG4gICAgQElucHV0KCkgbG9hZGluZ1RleHQgPSAnTG9hZGluZyBJdGVtcyc7XG4gICAgQElucHV0KCkgbm90Rm91bmRUZXh0ID0gJ05vIHJlc3VsdCBmb3VuZCc7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2VhcmNoRm4hOiAodGVybTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPFRbXT47XG4gICAgQElucHV0KCkgdHJhY2tCeUZuOiAoaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gVCB8IFRba2V5b2YgVF0gPSAoXzogbnVtYmVyLCBpdGVtOiBUKSA9PiBpdGVtO1xuICAgIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkU2lnbmFsLnNldCh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9wdGlvbkNhcHRpb24/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uSW1hZ2VVcmw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uVGV4dFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb246IFQgfT47XG5cbiAgICBAVmlld0NoaWxkKCdmb3JtRmllbGQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZm9ybUZpZWxkITogRWxlbWVudFJlZjxGb3JtRmllbGRDb21wb25lbnQ+O1xuXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0T3B0aW9uOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlZFNpZ25hbCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcmVhZG9ubHkgc3ltYm9sUmVnaXN0cnk6IFN5bWJvbFJlZ2lzdHJ5ID0gaW5qZWN0KFN5bWJvbFJlZ2lzdHJ5KTtcbiAgICByZWFkb25seSBzZWFyY2hUZXJtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcmVhZG9ubHkgc2VhcmNoVGVybVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuc2VhcmNoVGVybSQpO1xuICAgIHJlYWRvbmx5IHNob3dSZXN1bHRzU2lnbmFsID0gc2lnbmFsKGZhbHNlKTtcbiAgICByZWFkb25seSByZXN1bHRzTG9hZGluZ1NpZ25hbCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0c1NpZ25hbCA9IHRvU2lnbmFsPGFueVtdPihcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtJC5waXBlKFxuICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNob3dSZXN1bHRzU2lnbmFsLnNldChmYWxzZSkpLFxuICAgICAgICAgICAgZmlsdGVyKHRlcm0gPT4gdGVybS5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNob3dSZXN1bHRzU2lnbmFsLnNldCh0cnVlKSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZXN1bHRzTG9hZGluZ1NpZ25hbC5zZXQodHJ1ZSkpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKHRlcm0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEZuKHRlcm0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZXN1bHRzTG9hZGluZ1NpZ25hbC5zZXQoZmFsc2UpKVxuICAgICAgICApXG4gICAgKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcmVhZG9ubHkgaW5wdXRXaWR0aFNpZ25hbCA9IHNpZ25hbCgwKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5LnJlZ2lzdGVyU3ltYm9scyhbYXBTZWFyY2hdKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0V2lkdGhTaWduYWwuc2V0KCh0aGlzLmZvcm1GaWVsZC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRXaWR0aCk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RPcHRpb24ob3B0aW9uOiBUKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiB0aGlzLm9wdGlvblZhbHVlICYmIG9wdGlvblt0aGlzLm9wdGlvblZhbHVlXSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb24uZW1pdChvcHRpb25bdGhpcy5vcHRpb25WYWx1ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb24uZW1pdChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXRBdXRvY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0QXV0b2NvbXBsZXRlKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoJycpO1xuICAgICAgICB0aGlzLnNob3dSZXN1bHRzU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMucmVzdWx0c0xvYWRpbmdTaWduYWwuc2V0KGZhbHNlKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtYXV0b2NvbXBsZXRlLXdyYXBwZXJcIj5cbiAgICA8YXAtZm9ybS1maWVsZFxuICAgICAgICAjZm9ybUZpZWxkXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgIGNka092ZXJsYXlPcmlnaW4+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWRcIj5cbiAgICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxhcC1pbnB1dC1ncm91cD5cbiAgICAgICAgICAgIDxhcC1zeW1ib2wgc3ltYm9sSWQ9XCJzZWFyY2hcIiAvPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgYXBJbnB1dFxuICAgICAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hUZXJtU2lnbmFsKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFRlcm0kLm5leHQoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvYXAtaW5wdXQtZ3JvdXA+XG4gICAgPC9hcC1mb3JtLWZpZWxkPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtcmVzdWx0cy13cmFwcGVyXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cImlucHV0V2lkdGhTaWduYWwoKVwiXG4gICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwic2hvd1Jlc3VsdHNTaWduYWwoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwLWF1dG9jb21wbGV0ZS1zZWFyY2gtcmVzdWx0c1wiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVzdWx0c0xvYWRpbmdTaWduYWwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXAtYXV0b2NvbXBsZXRlLXNlYXJjaC1yZXN1bHRzLWxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1sb2FkZXIgW2RpYW1ldGVyXT1cIjMwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VhcmNoLXJlc3VsdHMtbG9hZGluZy1sYWJlbFwiPnt7IGxvYWRpbmdUZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChzZWFyY2hSZXN1bHRzU2lnbmFsKCk/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHNlYXJjaFJlc3VsdHNTaWduYWwoKTsgdHJhY2sgdHJhY2tCeUZuKCRpbmRleCwgb3B0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hdXRvY29tcGxldGUtc2VhcmNoLXJlc3VsdHMtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uU2VsZWN0T3B0aW9uKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RPcHRpb24ob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFvcHRpb25UZXh0VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIW9wdGlvbkxhYmVsIHx8ICFvcHRpb25bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb25MYWJlbCAmJiBvcHRpb25bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53aXRoLWNhcHRpb25dPVwib3B0aW9uTGFiZWwgJiYgb3B0aW9uQ2FwdGlvbiAmJiBvcHRpb25bb3B0aW9uQ2FwdGlvbl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghb3B0aW9uTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uSW1hZ2VVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlcm5hbWVdPVwib3B0aW9uTGFiZWwgPyBvcHRpb25bb3B0aW9uTGFiZWxdIDogb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwib3B0aW9uW29wdGlvbkltYWdlVXJsXVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb25MYWJlbCAmJiBvcHRpb25bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlyc3QtbGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb25DYXB0aW9uICYmIG9wdGlvbltvcHRpb25DYXB0aW9uXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJvcHRpb25bb3B0aW9uQ2FwdGlvbl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbltvcHRpb25DYXB0aW9uXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGV4dFRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogb3B0aW9uIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwLWF1dG9jb21wbGV0ZS1zZWFyY2gtcmVzdWx0cy1ub3QtZm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBub3RGb3VuZFRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -94,6 +94,7 @@ export class AvatarComponent {
94
94
  this.showInitials$.next(showInitials);
95
95
  }
96
96
  alt = '';
97
+ youtubeAvatarMode = false;
97
98
  roundedAvatar = true;
98
99
  youtubeAvatar = false;
99
100
  set rounded(rounded) {
@@ -197,11 +198,11 @@ export class AvatarComponent {
197
198
  this.imageError$.next(true);
198
199
  }
199
200
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.SymbolRegistry }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
200
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: AvatarComponent, isStandalone: true, selector: "ap-avatar", inputs: { alternativeText: "alternativeText", anonymous: "anonymous", username: "username", network: "network", online: "online", profilePicture: "profilePicture", showInitials: "showInitials", alt: "alt", rounded: ["rounded", "rounded", booleanAttribute], size: "size" }, host: { properties: { "class.rounded-avatar": "this.roundedAvatar", "class.youtube-avatar": "this.youtubeAvatar" } }, ngImport: i0, template: "<ng-container\n *ngrxLet=\"{\n displayProfilePicture: displayProfilePicture$,\n displaySingleNeutralSvg: displaySingleNeutralSvg$,\n displayInitials: displayInitials$,\n displayAnonymous: displayAnonymous$,\n displayOnline: displayOnline$,\n displayNetwork: displayNetwork$,\n initials: initials$,\n profilePicture: profilePicture$,\n size: size$,\n network: network$,\n socialNetwork: socialNetwork$\n } as avatarViewModel\">\n @if (avatarViewModel.displayProfilePicture) {\n @if (avatarViewModel.network !== 'youtube') {\n <img\n [src]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n } @else {\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n }\n }\n @if (avatarViewModel.displaySingleNeutralSvg) {\n <div class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\" />\n </div>\n }\n\n @if (avatarViewModel.displayAnonymous) {\n <div class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\" />\n </div>\n }\n @if (avatarViewModel.displayOnline) {\n <div class=\"online\"></div>\n }\n @if (avatarViewModel.displayNetwork && avatarViewModel.network && avatarViewModel.network !== 'youtube') {\n <div\n class=\"network\"\n [class.social-network]=\"avatarViewModel.socialNetwork\"\n [ngClass]=\"avatarViewModel.network\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n </div>\n }\n\n @if (avatarViewModel.displayInitials) {\n <div class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\n }\n</ng-container>\n", styles: ["ap-avatar{display:flex;justify-content:center;align-items:center;height:var(--ap-avatar-size);min-height:var(--ap-avatar-size);max-height:var(--ap-avatar-size);width:var(--ap-avatar-size);min-width:var(--ap-avatar-size);max-width:var(--ap-avatar-size);border-radius:var(--sys-border-radius-sm);background:var(--ref-color-grey-40);box-sizing:border-box;position:relative;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar.rounded-avatar{border-radius:100%}ap-avatar.rounded-avatar img,ap-avatar.rounded-avatar .no-profile-picture,ap-avatar.rounded-avatar .anonymous{border-radius:100%}ap-avatar.youtube-avatar{box-shadow:unset;background:unset}ap-avatar.youtube-avatar ap-symbol .svg.youtube-official{position:relative;top:unset!important;left:unset!important;width:104.35%!important;height:unset!important}ap-avatar img{overflow:hidden;border-radius:var(--sys-border-radius-sm);box-sizing:border-box}ap-avatar .no-profile-picture,ap-avatar .anonymous{display:flex;justify-content:center;align-items:center;background:var(--ref-color-grey-40);border-radius:var(--sys-border-radius-sm)}ap-avatar .no-profile-picture ap-symbol,ap-avatar .anonymous ap-symbol{color:var(--ref-color-white);width:var(--ap-avatar-symbol-size);min-width:var(--ap-avatar-symbol-size);max-width:var(--ap-avatar-symbol-size);height:var(--ap-avatar-symbol-size);min-height:var(--ap-avatar-symbol-size);max-height:var(--ap-avatar-symbol-size)}ap-avatar .anonymous{margin-top:7%}ap-avatar .online{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-online-icon-size);max-height:var(--ap-avatar-online-icon-size);width:var(--ap-avatar-online-icon-size);min-width:var(--ap-avatar-online-icon-size);max-width:var(--ap-avatar-online-icon-size);border-radius:100%;overflow:hidden;background:var(--ref-color-grey-40);box-sizing:border-box;border:1px solid var(--ref-color-white);bottom:0;right:0;background:var(--ref-color-green-100)}ap-avatar .initials{font-weight:var(--ref-font-weight-bold);font-size:var(--ap-avatar-initials-size);line-height:var(--ref-font-line-height-xl);font-family:Averta;color:var(--ref-color-white)}ap-avatar .network{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-network-size);max-height:var(--ap-avatar-network-size);width:var(--ap-avatar-network-size);min-width:var(--ap-avatar-network-size);max-width:var(--ap-avatar-network-size);overflow:hidden;box-sizing:border-box;bottom:0;right:0;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar .network.social-network{border-radius:100%}ap-avatar .network.instagram{border-radius:28%}ap-avatar .network.linkedin{border-radius:6%}ap-avatar .network.googleMyBusiness,ap-avatar .network.google{box-shadow:none;border-radius:unset}ap-avatar .network ap-symbol img{border-radius:0;border:none}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
201
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: AvatarComponent, isStandalone: true, selector: "ap-avatar", inputs: { alternativeText: "alternativeText", anonymous: "anonymous", username: "username", network: "network", online: "online", profilePicture: "profilePicture", showInitials: "showInitials", alt: "alt", youtubeAvatarMode: "youtubeAvatarMode", rounded: ["rounded", "rounded", booleanAttribute], size: "size" }, host: { properties: { "class.rounded-avatar": "this.roundedAvatar", "class.youtube-avatar": "this.youtubeAvatar" } }, ngImport: i0, template: "<ng-container\n *ngrxLet=\"{\n displayProfilePicture: displayProfilePicture$,\n displaySingleNeutralSvg: displaySingleNeutralSvg$,\n displayInitials: displayInitials$,\n displayAnonymous: displayAnonymous$,\n displayOnline: displayOnline$,\n displayNetwork: displayNetwork$,\n initials: initials$,\n profilePicture: profilePicture$,\n size: size$,\n network: network$,\n socialNetwork: socialNetwork$\n } as avatarViewModel\">\n @if (avatarViewModel.displayProfilePicture) {\n @if (avatarViewModel.network !== 'youtube' || youtubeAvatarMode) {\n <img\n [src]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n } @else {\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n }\n }\n @if (avatarViewModel.displaySingleNeutralSvg) {\n <div class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\" />\n </div>\n }\n\n @if (avatarViewModel.displayAnonymous) {\n <div class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\" />\n </div>\n }\n @if (avatarViewModel.displayOnline) {\n <div class=\"online\"></div>\n }\n @if (avatarViewModel.displayNetwork && avatarViewModel.network && avatarViewModel.network !== 'youtube') {\n <div\n class=\"network\"\n [class.social-network]=\"avatarViewModel.socialNetwork\"\n [ngClass]=\"avatarViewModel.network\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n </div>\n }\n\n @if (avatarViewModel.displayInitials) {\n <div class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\n }\n</ng-container>\n", styles: ["ap-avatar{display:flex;justify-content:center;align-items:center;height:var(--ap-avatar-size);min-height:var(--ap-avatar-size);max-height:var(--ap-avatar-size);width:var(--ap-avatar-size);min-width:var(--ap-avatar-size);max-width:var(--ap-avatar-size);border-radius:var(--sys-border-radius-sm);background:var(--ref-color-grey-40);box-sizing:border-box;position:relative;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar.rounded-avatar{border-radius:100%}ap-avatar.rounded-avatar img,ap-avatar.rounded-avatar .no-profile-picture,ap-avatar.rounded-avatar .anonymous{border-radius:100%}ap-avatar.youtube-avatar{box-shadow:unset;background:unset}ap-avatar.youtube-avatar ap-symbol .svg.youtube-official{position:relative;top:unset!important;left:unset!important;width:104.35%!important;height:unset!important}ap-avatar img{overflow:hidden;border-radius:var(--sys-border-radius-sm);box-sizing:border-box}ap-avatar .no-profile-picture,ap-avatar .anonymous{display:flex;justify-content:center;align-items:center;background:var(--ref-color-grey-40);border-radius:var(--sys-border-radius-sm)}ap-avatar .no-profile-picture ap-symbol,ap-avatar .anonymous ap-symbol{color:var(--ref-color-white);width:var(--ap-avatar-symbol-size);min-width:var(--ap-avatar-symbol-size);max-width:var(--ap-avatar-symbol-size);height:var(--ap-avatar-symbol-size);min-height:var(--ap-avatar-symbol-size);max-height:var(--ap-avatar-symbol-size)}ap-avatar .anonymous{margin-top:7%}ap-avatar .online{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-online-icon-size);max-height:var(--ap-avatar-online-icon-size);width:var(--ap-avatar-online-icon-size);min-width:var(--ap-avatar-online-icon-size);max-width:var(--ap-avatar-online-icon-size);border-radius:100%;overflow:hidden;background:var(--ref-color-grey-40);box-sizing:border-box;border:1px solid var(--ref-color-white);bottom:0;right:0;background:var(--ref-color-green-100)}ap-avatar .initials{font-weight:var(--ref-font-weight-bold);font-size:var(--ap-avatar-initials-size);line-height:var(--ref-font-line-height-xl);font-family:Averta;color:var(--ref-color-white)}ap-avatar .network{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-network-size);max-height:var(--ap-avatar-network-size);width:var(--ap-avatar-network-size);min-width:var(--ap-avatar-network-size);max-width:var(--ap-avatar-network-size);overflow:hidden;box-sizing:border-box;bottom:0;right:0;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar .network.social-network{border-radius:100%}ap-avatar .network.instagram{border-radius:28%}ap-avatar .network.linkedin{border-radius:6%}ap-avatar .network.googleMyBusiness,ap-avatar .network.google{box-shadow:none;border-radius:unset}ap-avatar .network ap-symbol img{border-radius:0;border:none}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
201
202
  }
202
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AvatarComponent, decorators: [{
203
204
  type: Component,
204
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-avatar', standalone: true, imports: [NgOptimizedImage, SymbolComponent, LetDirective, NgClass], encapsulation: ViewEncapsulation.None, template: "<ng-container\n *ngrxLet=\"{\n displayProfilePicture: displayProfilePicture$,\n displaySingleNeutralSvg: displaySingleNeutralSvg$,\n displayInitials: displayInitials$,\n displayAnonymous: displayAnonymous$,\n displayOnline: displayOnline$,\n displayNetwork: displayNetwork$,\n initials: initials$,\n profilePicture: profilePicture$,\n size: size$,\n network: network$,\n socialNetwork: socialNetwork$\n } as avatarViewModel\">\n @if (avatarViewModel.displayProfilePicture) {\n @if (avatarViewModel.network !== 'youtube') {\n <img\n [src]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n } @else {\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n }\n }\n @if (avatarViewModel.displaySingleNeutralSvg) {\n <div class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\" />\n </div>\n }\n\n @if (avatarViewModel.displayAnonymous) {\n <div class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\" />\n </div>\n }\n @if (avatarViewModel.displayOnline) {\n <div class=\"online\"></div>\n }\n @if (avatarViewModel.displayNetwork && avatarViewModel.network && avatarViewModel.network !== 'youtube') {\n <div\n class=\"network\"\n [class.social-network]=\"avatarViewModel.socialNetwork\"\n [ngClass]=\"avatarViewModel.network\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n </div>\n }\n\n @if (avatarViewModel.displayInitials) {\n <div class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\n }\n</ng-container>\n", styles: ["ap-avatar{display:flex;justify-content:center;align-items:center;height:var(--ap-avatar-size);min-height:var(--ap-avatar-size);max-height:var(--ap-avatar-size);width:var(--ap-avatar-size);min-width:var(--ap-avatar-size);max-width:var(--ap-avatar-size);border-radius:var(--sys-border-radius-sm);background:var(--ref-color-grey-40);box-sizing:border-box;position:relative;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar.rounded-avatar{border-radius:100%}ap-avatar.rounded-avatar img,ap-avatar.rounded-avatar .no-profile-picture,ap-avatar.rounded-avatar .anonymous{border-radius:100%}ap-avatar.youtube-avatar{box-shadow:unset;background:unset}ap-avatar.youtube-avatar ap-symbol .svg.youtube-official{position:relative;top:unset!important;left:unset!important;width:104.35%!important;height:unset!important}ap-avatar img{overflow:hidden;border-radius:var(--sys-border-radius-sm);box-sizing:border-box}ap-avatar .no-profile-picture,ap-avatar .anonymous{display:flex;justify-content:center;align-items:center;background:var(--ref-color-grey-40);border-radius:var(--sys-border-radius-sm)}ap-avatar .no-profile-picture ap-symbol,ap-avatar .anonymous ap-symbol{color:var(--ref-color-white);width:var(--ap-avatar-symbol-size);min-width:var(--ap-avatar-symbol-size);max-width:var(--ap-avatar-symbol-size);height:var(--ap-avatar-symbol-size);min-height:var(--ap-avatar-symbol-size);max-height:var(--ap-avatar-symbol-size)}ap-avatar .anonymous{margin-top:7%}ap-avatar .online{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-online-icon-size);max-height:var(--ap-avatar-online-icon-size);width:var(--ap-avatar-online-icon-size);min-width:var(--ap-avatar-online-icon-size);max-width:var(--ap-avatar-online-icon-size);border-radius:100%;overflow:hidden;background:var(--ref-color-grey-40);box-sizing:border-box;border:1px solid var(--ref-color-white);bottom:0;right:0;background:var(--ref-color-green-100)}ap-avatar .initials{font-weight:var(--ref-font-weight-bold);font-size:var(--ap-avatar-initials-size);line-height:var(--ref-font-line-height-xl);font-family:Averta;color:var(--ref-color-white)}ap-avatar .network{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-network-size);max-height:var(--ap-avatar-network-size);width:var(--ap-avatar-network-size);min-width:var(--ap-avatar-network-size);max-width:var(--ap-avatar-network-size);overflow:hidden;box-sizing:border-box;bottom:0;right:0;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar .network.social-network{border-radius:100%}ap-avatar .network.instagram{border-radius:28%}ap-avatar .network.linkedin{border-radius:6%}ap-avatar .network.googleMyBusiness,ap-avatar .network.google{box-shadow:none;border-radius:unset}ap-avatar .network ap-symbol img{border-radius:0;border:none}\n"] }]
205
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-avatar', standalone: true, imports: [NgOptimizedImage, SymbolComponent, LetDirective, NgClass], encapsulation: ViewEncapsulation.None, template: "<ng-container\n *ngrxLet=\"{\n displayProfilePicture: displayProfilePicture$,\n displaySingleNeutralSvg: displaySingleNeutralSvg$,\n displayInitials: displayInitials$,\n displayAnonymous: displayAnonymous$,\n displayOnline: displayOnline$,\n displayNetwork: displayNetwork$,\n initials: initials$,\n profilePicture: profilePicture$,\n size: size$,\n network: network$,\n socialNetwork: socialNetwork$\n } as avatarViewModel\">\n @if (avatarViewModel.displayProfilePicture) {\n @if (avatarViewModel.network !== 'youtube' || youtubeAvatarMode) {\n <img\n [src]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n } @else {\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n }\n }\n @if (avatarViewModel.displaySingleNeutralSvg) {\n <div class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\" />\n </div>\n }\n\n @if (avatarViewModel.displayAnonymous) {\n <div class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\" />\n </div>\n }\n @if (avatarViewModel.displayOnline) {\n <div class=\"online\"></div>\n }\n @if (avatarViewModel.displayNetwork && avatarViewModel.network && avatarViewModel.network !== 'youtube') {\n <div\n class=\"network\"\n [class.social-network]=\"avatarViewModel.socialNetwork\"\n [ngClass]=\"avatarViewModel.network\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n </div>\n }\n\n @if (avatarViewModel.displayInitials) {\n <div class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\n }\n</ng-container>\n", styles: ["ap-avatar{display:flex;justify-content:center;align-items:center;height:var(--ap-avatar-size);min-height:var(--ap-avatar-size);max-height:var(--ap-avatar-size);width:var(--ap-avatar-size);min-width:var(--ap-avatar-size);max-width:var(--ap-avatar-size);border-radius:var(--sys-border-radius-sm);background:var(--ref-color-grey-40);box-sizing:border-box;position:relative;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar.rounded-avatar{border-radius:100%}ap-avatar.rounded-avatar img,ap-avatar.rounded-avatar .no-profile-picture,ap-avatar.rounded-avatar .anonymous{border-radius:100%}ap-avatar.youtube-avatar{box-shadow:unset;background:unset}ap-avatar.youtube-avatar ap-symbol .svg.youtube-official{position:relative;top:unset!important;left:unset!important;width:104.35%!important;height:unset!important}ap-avatar img{overflow:hidden;border-radius:var(--sys-border-radius-sm);box-sizing:border-box}ap-avatar .no-profile-picture,ap-avatar .anonymous{display:flex;justify-content:center;align-items:center;background:var(--ref-color-grey-40);border-radius:var(--sys-border-radius-sm)}ap-avatar .no-profile-picture ap-symbol,ap-avatar .anonymous ap-symbol{color:var(--ref-color-white);width:var(--ap-avatar-symbol-size);min-width:var(--ap-avatar-symbol-size);max-width:var(--ap-avatar-symbol-size);height:var(--ap-avatar-symbol-size);min-height:var(--ap-avatar-symbol-size);max-height:var(--ap-avatar-symbol-size)}ap-avatar .anonymous{margin-top:7%}ap-avatar .online{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-online-icon-size);max-height:var(--ap-avatar-online-icon-size);width:var(--ap-avatar-online-icon-size);min-width:var(--ap-avatar-online-icon-size);max-width:var(--ap-avatar-online-icon-size);border-radius:100%;overflow:hidden;background:var(--ref-color-grey-40);box-sizing:border-box;border:1px solid var(--ref-color-white);bottom:0;right:0;background:var(--ref-color-green-100)}ap-avatar .initials{font-weight:var(--ref-font-weight-bold);font-size:var(--ap-avatar-initials-size);line-height:var(--ref-font-line-height-xl);font-family:Averta;color:var(--ref-color-white)}ap-avatar .network{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-network-size);max-height:var(--ap-avatar-network-size);width:var(--ap-avatar-network-size);min-width:var(--ap-avatar-network-size);max-width:var(--ap-avatar-network-size);overflow:hidden;box-sizing:border-box;bottom:0;right:0;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar .network.social-network{border-radius:100%}ap-avatar .network.instagram{border-radius:28%}ap-avatar .network.linkedin{border-radius:6%}ap-avatar .network.googleMyBusiness,ap-avatar .network.google{box-shadow:none;border-radius:unset}ap-avatar .network ap-symbol img{border-radius:0;border:none}\n"] }]
205
206
  }], ctorParameters: () => [{ type: i1.SymbolRegistry }, { type: i0.ElementRef }], propDecorators: { alternativeText: [{
206
207
  type: Input
207
208
  }], anonymous: [{
@@ -218,6 +219,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
218
219
  type: Input
219
220
  }], alt: [{
220
221
  type: Input
222
+ }], youtubeAvatarMode: [{
223
+ type: Input
221
224
  }], roundedAvatar: [{
222
225
  type: HostBinding,
223
226
  args: ['class.rounded-avatar']
@@ -232,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
232
235
  }], size: [{
233
236
  type: Input
234
237
  }] } });
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hdmF0YXIvc3JjL2F2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYXZhdGFyL3NyYy9hdmF0YXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFFZixrQkFBa0IsRUFDbEIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixTQUFTLEVBQ1QsV0FBVyxFQUNYLGlCQUFpQixHQUNwQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsS0FBSyxFQUVMLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFJM0UsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNMLE1BQU0sMkJBQTJCLEdBQTBDLENBQUMsVUFBVSxFQUFF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dUJBQUMsc0JBQXNCO2dCQU0vQixPQUFPO3NCQUhWLEtBQUs7dUJBQUM7d0JBQ0gsU0FBUyxFQUFFLGdCQUFnQjtxQkFDOUI7Z0JBUUcsSUFBSTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgU3ltYm9sUmVnaXN0cnksXG4gICAgYXBGYWNlYm9va09mZmljaWFsLFxuICAgIGFwR29vZ2xlTXlCdXNpbmVzc09mZmljaWFsLFxuICAgIGFwTGlua2VkaW5PZmZpY2lhbCxcbiAgICBhcFBpbnRlcmVzdE9mZmljaWFsLFxuICAgIGFwTnNUaHJlYWRzTG9nbyxcbiAgICBhcFNob3dUaGVhdGVyTWFza0hhcHB5LFxuICAgIGFwU2luZ2xlTmV1dHJhbCxcbiAgICBhcFRpa3Rva09mZmljaWFsLFxuICAgIGFwV2ViQmxvZ3MsXG4gICAgYXBXZWJOZXdzLFxuICAgIGFwWE9mZmljaWFsLFxuICAgIGFwWW91dHViZU9mZmljaWFsLFxufSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHtOZ0NsYXNzLCBOZ09wdGltaXplZEltYWdlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMZXREaXJlY3RpdmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEF2YXRhclNpemUgPSA1NiB8IDQ4IHwgNDAgfCAzNiB8IDMyIHwgMjQgfCAxNjtcblxuZXhwb3J0IGNvbnN0IEFWQVRBUl9ORVRXT1JLX0FSUkFZID0gWydmYWNlYm9vaycsICdsaW5rZWRpbicsICd0d2l0dGVyJywgJ1gnLCAneW91dHViZScsICdnb29nbGVNeUJ1c2luZXNzJywgJ2dvb2dsZScsICdpbnN0YWdyYW0nLCAndGhyZWFkcycsICd0aWt0b2snLCAncGludGVyZXN0JywgJ3dlYkJsb2cnLCAnd2ViTmV3cyddO1xuY29uc3QgUk9VTkRfQk9SREVSX0FWQVRBUl9ORVRXT1JLOiB0eXBlb2YgQVZBVEFSX05FVFdPUktfQVJSQVlbbnVtYmVyXVtdID0gWydmYWNlYm9vaycsICd0d2l0dGVyJywgJ3lvdXR1YmUnLCAndGlrdG9rJywgJ1gnLCAncGludGVyZXN0JywgJ3dlYkJsb2cnLCAnd2ViTmV3cycsICd0aHJlYWRzJ107XG5leHBvcnQgdHlwZSBBdmF0YXJOZXR3b3JrID0gdHlwZW9mIEFWQVRBUl9ORVRXT1JLX0FSUkFZW251bWJlcl07XG5cbmNvbnN0IG9ubGluZUljb25TaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMTYsXG4gICAgNDg6IDEyLFxuICAgIDQwOiAxMixcbiAgICAzNjogOCxcbiAgICAzMjogOCxcbiAgICAyNDogNixcbiAgICAxNjogNixcbn07XG5cbmNvbnN0IHN5bWJvbFNpemVCeUF2YXRhclNpemU6IFJlY29yZDxBdmF0YXJTaXplLCBudW1iZXI+ID0ge1xuICAgIDU2OiAyOCxcbiAgICA0ODogMjQsXG4gICAgNDA6IDIwLFxuICAgIDM2OiAxOCxcbiAgICAzMjogMTYsXG4gICAgMjQ6IDEyLFxuICAgIDE2OiA4LFxufTtcblxuY29uc3QgbmV0d29ya1NpemVCeUF2YXRhclNpemU6IFJlY29yZDxBdmF0YXJTaXplLCBudW1iZXI+ID0ge1xuICAgIDU2OiAxNixcbiAgICA0ODogMTYsXG4gICAgNDA6IDE2LFxuICAgIDM2OiAxNixcbiAgICAzMjogMTIsXG4gICAgMjQ6IDEyLFxuICAgIDE2OiA4LFxufTtcblxuY29uc3QgaW5pdGlhbFNpemVCeUF2YXRhclNpemU6IFJlY29yZDxBdmF0YXJTaXplLCBudW1iZXI+ID0ge1xuICAgIDU2OiAyOCxcbiAgICA0ODogMjQsXG4gICAgNDA6IDIyLFxuICAgIDM2OiAxOCxcbiAgICAzMjogMTgsXG4gICAgMjQ6IDE0LFxuICAgIDE2OiAxMCxcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtYXZhdGFyJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ09wdGltaXplZEltYWdlLCBTeW1ib2xDb21wb25lbnQsIExldERpcmVjdGl2ZSwgTmdDbGFzc10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICByZWFkb25seSBuZXR3b3JrU3ltYm9sQnlOZXR3b3JrOiBSZWNvcmQ8QXZhdGFyTmV0d29yaywgc3RyaW5nPiA9IHtcbiAgICAgICAgZmFjZWJvb2s6ICdmYWNlYm9vay1vZmZpY2lhbCcsXG4gICAgICAgIGluc3RhZ3JhbTogJ2luc3RhZ3JhbS1vZmZpY2lhbCcsXG4gICAgICAgIFg6ICd4LW9mZmljaWFsJyxcbiAgICAgICAgdHdpdHRlcjogJ3gtb2ZmaWNpYWwnLFxuICAgICAgICBsaW5rZWRpbjogJ2xpbmtlZGluLW9mZmljaWFsJyxcbiAgICAgICAgdGlrdG9rOiAndGlrdG9rLW9mZmljaWFsJyxcbiAgICAgICAgeW91dHViZTogJ3lvdXR1YmUtb2ZmaWNpYWwnLFxuICAgICAgICBwaW50ZXJlc3Q6ICdwaW50ZXJlc3Qtb2ZmaWNpYWwnLFxuICAgICAgICB0aHJlYWRzOiAnbnMtdGhyZWFkcy1sb2dvJyxcbiAgICAgICAgZ29vZ2xlTXlCdXNpbmVzczogJ2dvb2dsZS1teS1idXNpbmVzcy1vZmZpY2lhbCcsXG4gICAgICAgIGdvb2dsZTogJ2dvb2dsZS1teS1idXNpbmVzcy1vZmZpY2lhbCcsXG4gICAgICAgIHdlYk5ld3M6ICd3ZWItbmV3cycsXG4gICAgICAgIHdlYkJsb2c6ICd3ZWItYmxvZ3MnLFxuICAgIH07XG5cbiAgICBzaXplJDogQmVoYXZpb3JTdWJqZWN0PEF2YXRhclNpemU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdmF0YXJTaXplPig0MCk7XG4gICAgcHJvZmlsZVBpY3R1cmUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPignJyk7XG4gICAgbmV0d29yayQ6IEJlaGF2aW9yU3ViamVjdDxBdmF0YXJOZXR3b3JrIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXZhdGFyTmV0d29yayB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHByaXZhdGUgYWx0ZXJuYXRpdmVUZXh0JDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIHByaXZhdGUgYW5vbnltb3VzJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSB1c2VybmFtZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIG9ubGluZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgc2hvd0luaXRpYWxzJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSByb3VuZGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICAgIEBJbnB1dCgpIHNldCBhbHRlcm5hdGl2ZVRleHQoYWx0ZXJuYXRpdmVUZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZVRleHQkLm5leHQoYWx0ZXJuYXRpdmVUZXh0KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYW5vbnltb3VzKGFub255bW91czogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFub255bW91cyQubmV4dChhbm9ueW1vdXMpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCB1c2VybmFtZSh1c2VybmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudXNlcm5hbWUkLm5leHQodXNlcm5hbWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBuZXR3b3JrKG5ldHdvcms6IEF2YXRhck5ldHdvcmsgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5uZXR3b3JrJC5uZXh0KG5ldHdvcmspO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1hcC1hdmF0YXItbmV0d29yay1zaXplJywgYCR7bmV0d29ya1NpemVCeUF2YXRhclNpemVbdGhpcy5zaXplJC52YWx1ZV19cHhgKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgb25saW5lKG9ubGluZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLm9ubGluZSQubmV4dChvbmxpbmUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBwcm9maWxlUGljdHVyZShwcm9maWxlUGljdHVyZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucHJvZmlsZVBpY3R1cmUkLm5leHQocHJvZmlsZVBpY3R1cmUpO1xuICAgICAgICB0aGlzLmltYWdlRXJyb3IkLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzaG93SW5pdGlhbHMoc2hvd0luaXRpYWxzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2hvd0luaXRpYWxzJC5uZXh0KHNob3dJbml0aWFscyk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGFsdCA9ICcnO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yb3VuZGVkLWF2YXRhcicpXG4gICAgcm91bmRlZEF2YXRhciA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnlvdXR1YmUtYXZhdGFyJylcbiAgICB5b3V0dWJlQXZhdGFyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoe1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgfSlcbiAgICBzZXQgcm91bmRlZChyb3VuZGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMucm91bmRlZEF2YXRhciA9IHJvdW5kZWQ7XG4gICAgICAgIHRoaXMucm91bmRlZCQubmV4dChyb3VuZGVkKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIC0gbWlncmF0ZSB0byBzaWduYWwgaW5wdXQgYW5kIHJlbW92ZSBzaXplIGlucHV0XG4gICAgQElucHV0KClcbiAgICBzZXQgc2l6ZShzaXplOiBBdmF0YXJTaXplIHwgYCR7QXZhdGFyU2l6ZX1gKSB7XG4gICAgICAgIHRoaXMuc2l6ZSQubmV4dCgrc2l6ZSBhcyBBdmF0YXJTaXplKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXAtYXZhdGFyLXNpemUnLCBgJHtzaXplfXB4YCk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFwLWF2YXRhci1zeW1ib2wtc2l6ZScsIGAke3N5bWJvbFNpemVCeUF2YXRhclNpemVbc2l6ZV19cHhgKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXAtYXZhdGFyLW9ubGluZS1pY29uLXNpemUnLCBgJHtvbmxpbmVJY29uU2l6ZUJ5QXZhdGFyU2l6ZVtzaXplXX1weGApO1xuICAgIH1cblxuICAgIGRpc3BsYXlQcm9maWxlUGljdHVyZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigpO1xuICAgIGRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheUluaXRpYWxzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheUFub255bW91cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigpO1xuICAgIGRpc3BsYXlOZXR3b3JrJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheU9ubGluZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigpO1xuICAgIGltYWdlRXJyb3IkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBpbml0aWFscyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKTtcbiAgICBpbml0aWFsc0F2YWlsYWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XG4gICAgc29jaWFsTmV0d29yayQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBzeW1ib2xSZWdpc3RyeTogU3ltYm9sUmVnaXN0cnksXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICAgICkge1xuICAgICAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5LnJlZ2lzdGVyU3ltYm9scyhbXG4gICAgICAgICAgICBhcFNpbmdsZU5ldXRyYWwsXG4gICAgICAgICAgICBhcFNob3dUaGVhdGVyTWFza0hhcHB5LFxuICAgICAgICAgICAgYXBGYWNlYm9va09mZmljaWFsLFxuICAgICAgICAgICAgYXBMaW5rZWRpbk9mZmljaWFsLFxuICAgICAgICAgICAgYXBZb3V0dWJlT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFRpa3Rva09mZmljaWFsLFxuICAgICAgICAgICAgYXBHb29nbGVNeUJ1c2luZXNzT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFBpbnRlcmVzdE9mZmljaWFsLFxuICAgICAgICAgICAgYXBOc1RocmVhZHNMb2dvLFxuICAgICAgICAgICAgYXBYT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFdlYkJsb2dzLFxuICAgICAgICAgICAgYXBXZWJOZXdzLFxuICAgICAgICBdKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXAtYXZhdGFyLXNpemUnLCBgNDBweGApO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1hcC1hdmF0YXItc3ltYm9sLXNpemUnLCBgJHtzeW1ib2xTaXplQnlBdmF0YXJTaXplW3RoaXMuc2l6ZSQudmFsdWVdfXB4YCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbHNBdmFpbGFibGUkID0gdGhpcy51c2VybmFtZSQucGlwZShcbiAgICAgICAgICAgIG1hcCh1c2VybmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhdXNlcm5hbWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheVByb2ZpbGVQaWN0dXJlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucHJvZmlsZVBpY3R1cmUkLCB0aGlzLmFub255bW91cyQsIHRoaXMuaW1hZ2VFcnJvciQsIHRoaXMuc2hvd0luaXRpYWxzJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtwcm9maWxlUGljdHVyZSwgYW5vbnltb3VzLCBpbWFnZUVycm9yXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIXByb2ZpbGVQaWN0dXJlICYmICFhbm9ueW1vdXMgJiYgIWltYWdlRXJyb3I7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheUluaXRpYWxzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zaG93SW5pdGlhbHMkLFxuICAgICAgICAgICAgdGhpcy5hbm9ueW1vdXMkLFxuICAgICAgICAgICAgdGhpcy5pbml0aWFsc0F2YWlsYWJsZSQsXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcm9maWxlUGljdHVyZSQsXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtzaG93SW5pdGlhbHMsIGFub255bW91cywgaW5pdGlhbHNBdmFpbGFibGUsIGRpc3BsYXlQcm9maWxlUGljdHVyZV0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hvd0luaXRpYWxzICYmICFhbm9ueW1vdXMgJiYgaW5pdGlhbHNBdmFpbGFibGUgJiYgIWRpc3BsYXlQcm9maWxlUGljdHVyZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5U2luZ2xlTmV1dHJhbFN2ZyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZVBpY3R1cmUkLFxuICAgICAgICAgICAgdGhpcy5pbWFnZUVycm9yJCxcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbHNBdmFpbGFibGUkLFxuICAgICAgICAgICAgdGhpcy5zaG93SW5pdGlhbHMkLFxuICAgICAgICAgICAgdGhpcy5hbm9ueW1vdXMkLFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW5pdGlhbHMkLFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UHJvZmlsZVBpY3R1cmUkLFxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbcHJvZmlsZVBpY3R1cmUsIGltYWdlRXJyb3IsIGluaXRpYWxzQXZhaWxhYmxlLCBzaG93SW5pdGlhbHMsIGFub255bW91cywgZGlzcGxheUluaXRpYWxzLCBkaXNwbGF5UHJvZmlsZVBpY3R1cmVdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgKCFwcm9maWxlUGljdHVyZSB8fCBpbWFnZUVycm9yIHx8ICFpbml0aWFsc0F2YWlsYWJsZSB8fCAoaW5pdGlhbHNBdmFpbGFibGUgJiYgIXNob3dJbml0aWFscykpICYmXG4gICAgICAgICAgICAgICAgICAgICFhbm9ueW1vdXMgJiZcbiAgICAgICAgICAgICAgICAgICAgIWRpc3BsYXlJbml0aWFscyAmJlxuICAgICAgICAgICAgICAgICAgICAhZGlzcGxheVByb2ZpbGVQaWN0dXJlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5QW5vbnltb3VzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuYW5vbnltb3VzJCwgdGhpcy5yb3VuZGVkJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFthbm9ueW1vdXMsIHJvdW5kZWRdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFub255bW91cyAmJiByb3VuZGVkO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlPbmxpbmUkID0gY29tYmluZUxhdGVzdChbdGhpcy5vbmxpbmUkLCB0aGlzLnJvdW5kZWQkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW29ubGluZSwgcm91bmRlZF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb25saW5lICYmIHJvdW5kZWQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheU5ldHdvcmskID0gY29tYmluZUxhdGVzdChbdGhpcy5uZXR3b3JrJCwgdGhpcy5yb3VuZGVkJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtuZXR3b3JrLCByb3VuZGVkXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIW5ldHdvcmsgJiYgcm91bmRlZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zb2NpYWxOZXR3b3JrJCA9IHRoaXMubmV0d29yayQucGlwZShtYXAobmV0d29yayA9PiB7XG4gICAgICAgICAgICBpZiAoIW5ldHdvcmspIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXR3b3JrID09PSAneW91dHViZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnlvdXR1YmVBdmF0YXIgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gUk9VTkRfQk9SREVSX0FWQVRBUl9ORVRXT1JLLmluZGV4T2YobmV0d29yaykgPiAtMTtcbiAgICAgICAgfSkpO1xuXG5cbiAgICAgICAgdGhpcy5pbml0aWFscyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRpc3BsYXlJbml0aWFscyQsIHRoaXMudXNlcm5hbWUkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2Rpc3BsYXlJbml0aWFscywgdXNlcm5hbWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKChkaXNwbGF5SW5pdGlhbHMgJiYgIXVzZXJuYW1lKSB8fCAhZGlzcGxheUluaXRpYWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgICAgICctLWFwLWF2YXRhci1pbml0aWFscy1zaXplJyxcbiAgICAgICAgICAgICAgICAgICAgYCR7aW5pdGlhbFNpemVCeUF2YXRhclNpemVbdGhpcy5zaXplJC52YWx1ZV19cHhgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lcyA9IHVzZXJuYW1lPy5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lc1swXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX1gO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkltYWdlRXJyb3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2VFcnJvciQubmV4dCh0cnVlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICAgKm5ncnhMZXQ9XCJ7XG4gICAgICAgIGRpc3BsYXlQcm9maWxlUGljdHVyZTogZGlzcGxheVByb2ZpbGVQaWN0dXJlJCxcbiAgICAgICAgZGlzcGxheVNpbmdsZU5ldXRyYWxTdmc6IGRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnJCxcbiAgICAgICAgZGlzcGxheUluaXRpYWxzOiBkaXNwbGF5SW5pdGlhbHMkLFxuICAgICAgICBkaXNwbGF5QW5vbnltb3VzOiBkaXNwbGF5QW5vbnltb3VzJCxcbiAgICAgICAgZGlzcGxheU9ubGluZTogZGlzcGxheU9ubGluZSQsXG4gICAgICAgIGRpc3BsYXlOZXR3b3JrOiBkaXNwbGF5TmV0d29yayQsXG4gICAgICAgIGluaXRpYWxzOiBpbml0aWFscyQsXG4gICAgICAgIHByb2ZpbGVQaWN0dXJlOiBwcm9maWxlUGljdHVyZSQsXG4gICAgICAgIHNpemU6IHNpemUkLFxuICAgICAgICBuZXR3b3JrOiBuZXR3b3JrJCxcbiAgICAgICAgc29jaWFsTmV0d29yazogc29jaWFsTmV0d29yayRcbiAgICB9IGFzIGF2YXRhclZpZXdNb2RlbFwiPlxuICAgIEBpZiAoYXZhdGFyVmlld01vZGVsLmRpc3BsYXlQcm9maWxlUGljdHVyZSkge1xuICAgICAgICBAaWYgKGF2YXRhclZpZXdNb2RlbC5uZXR3b3JrICE9PSAneW91dHViZScpIHtcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cImF2YXRhclZpZXdNb2RlbC5wcm9maWxlUGljdHVyZVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cImF2YXRhclZpZXdNb2RlbC5zaXplXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cImF2YXRhclZpZXdNb2RlbC5zaXplXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImFsdFwiXG4gICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YXAtc3ltYm9sIFtzeW1ib2xJZF09XCJuZXR3b3JrU3ltYm9sQnlOZXR3b3JrW2F2YXRhclZpZXdNb2RlbC5uZXR3b3JrXVwiIC8+XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGlmIChhdmF0YXJWaWV3TW9kZWwuZGlzcGxheVNpbmdsZU5ldXRyYWxTdmcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXByb2ZpbGUtcGljdHVyZVwiPlxuICAgICAgICAgICAgPGFwLXN5bWJvbCBzeW1ib2xJZD1cInNpbmdsZS1uZXV0cmFsXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChhdmF0YXJWaWV3TW9kZWwuZGlzcGxheUFub255bW91cykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYW5vbnltb3VzXCI+XG4gICAgICAgICAgICA8YXAtc3ltYm9sIHN5bWJvbElkPVwic2hvdy10aGVhdGVyLW1hc2staGFwcHlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChhdmF0YXJWaWV3TW9kZWwuZGlzcGxheU9ubGluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwib25saW5lXCI+PC9kaXY+XG4gICAgfVxuICAgIEBpZiAoYXZhdGFyVmlld01vZGVsLmRpc3BsYXlOZXR3b3JrICYmIGF2YXRhclZpZXdNb2RlbC5uZXR3b3JrICYmIGF2YXRhclZpZXdNb2RlbC5uZXR3b3JrICE9PSAneW91dHViZScpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJuZXR3b3JrXCJcbiAgICAgICAgICAgIFtjbGFzcy5zb2NpYWwtbmV0d29ya109XCJhdmF0YXJWaWV3TW9kZWwuc29jaWFsTmV0d29ya1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJhdmF0YXJWaWV3TW9kZWwubmV0d29ya1wiPlxuICAgICAgICAgICAgPGFwLXN5bWJvbCBbc3ltYm9sSWRdPVwibmV0d29ya1N5bWJvbEJ5TmV0d29ya1thdmF0YXJWaWV3TW9kZWwubmV0d29ya11cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGF2YXRhclZpZXdNb2RlbC5kaXNwbGF5SW5pdGlhbHMpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImluaXRpYWxzXCI+XG4gICAgICAgICAgICB7eyBhdmF0YXJWaWV3TW9kZWwuaW5pdGlhbHMgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9uZy1jb250YWluZXI+XG4iXX0=
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hdmF0YXIvc3JjL2F2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYXZhdGFyL3NyYy9hdmF0YXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFFZixrQkFBa0IsRUFDbEIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixTQUFTLEVBQ1QsV0FBVyxFQUNYLGlCQUFpQixHQUNwQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsS0FBSyxFQUVMLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFJM0UsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNMLE1BQU0sMkJBQTJCLEdBQTBDLENBQUMsVUFBVSxFQUFF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YUFBYTtzQkFEWixXQUFXO3VCQUFDLHNCQUFzQjtnQkFJbkMsYUFBYTtzQkFEWixXQUFXO3VCQUFDLHNCQUFzQjtnQkFNL0IsT0FBTztzQkFIVixLQUFLO3VCQUFDO3dCQUNILFNBQVMsRUFBRSxnQkFBZ0I7cUJBQzlCO2dCQVFHLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgU3ltYm9sQ29tcG9uZW50LFxuICAgIFN5bWJvbFJlZ2lzdHJ5LFxuICAgIGFwRmFjZWJvb2tPZmZpY2lhbCxcbiAgICBhcEdvb2dsZU15QnVzaW5lc3NPZmZpY2lhbCxcbiAgICBhcExpbmtlZGluT2ZmaWNpYWwsXG4gICAgYXBQaW50ZXJlc3RPZmZpY2lhbCxcbiAgICBhcE5zVGhyZWFkc0xvZ28sXG4gICAgYXBTaG93VGhlYXRlck1hc2tIYXBweSxcbiAgICBhcFNpbmdsZU5ldXRyYWwsXG4gICAgYXBUaWt0b2tPZmZpY2lhbCxcbiAgICBhcFdlYkJsb2dzLFxuICAgIGFwV2ViTmV3cyxcbiAgICBhcFhPZmZpY2lhbCxcbiAgICBhcFlvdXR1YmVPZmZpY2lhbCxcbn0gZnJvbSAnQGFnb3JhcHVsc2UvdWktc3ltYm9sJztcbmltcG9ydCB7TmdDbGFzcywgTmdPcHRpbWl6ZWRJbWFnZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJTaXplID0gNTYgfCA0OCB8IDQwIHwgMzYgfCAzMiB8IDI0IHwgMTY7XG5cbmV4cG9ydCBjb25zdCBBVkFUQVJfTkVUV09SS19BUlJBWSA9IFsnZmFjZWJvb2snLCAnbGlua2VkaW4nLCAndHdpdHRlcicsICdYJywgJ3lvdXR1YmUnLCAnZ29vZ2xlTXlCdXNpbmVzcycsICdnb29nbGUnLCAnaW5zdGFncmFtJywgJ3RocmVhZHMnLCAndGlrdG9rJywgJ3BpbnRlcmVzdCcsICd3ZWJCbG9nJywgJ3dlYk5ld3MnXTtcbmNvbnN0IFJPVU5EX0JPUkRFUl9BVkFUQVJfTkVUV09SSzogdHlwZW9mIEFWQVRBUl9ORVRXT1JLX0FSUkFZW251bWJlcl1bXSA9IFsnZmFjZWJvb2snLCAndHdpdHRlcicsICd5b3V0dWJlJywgJ3Rpa3RvaycsICdYJywgJ3BpbnRlcmVzdCcsICd3ZWJCbG9nJywgJ3dlYk5ld3MnLCAndGhyZWFkcyddO1xuZXhwb3J0IHR5cGUgQXZhdGFyTmV0d29yayA9IHR5cGVvZiBBVkFUQVJfTkVUV09SS19BUlJBWVtudW1iZXJdO1xuXG5jb25zdCBvbmxpbmVJY29uU2l6ZUJ5QXZhdGFyU2l6ZTogUmVjb3JkPEF2YXRhclNpemUsIG51bWJlcj4gPSB7XG4gICAgNTY6IDE2LFxuICAgIDQ4OiAxMixcbiAgICA0MDogMTIsXG4gICAgMzY6IDgsXG4gICAgMzI6IDgsXG4gICAgMjQ6IDYsXG4gICAgMTY6IDYsXG59O1xuXG5jb25zdCBzeW1ib2xTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMjgsXG4gICAgNDg6IDI0LFxuICAgIDQwOiAyMCxcbiAgICAzNjogMTgsXG4gICAgMzI6IDE2LFxuICAgIDI0OiAxMixcbiAgICAxNjogOCxcbn07XG5cbmNvbnN0IG5ldHdvcmtTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMTYsXG4gICAgNDg6IDE2LFxuICAgIDQwOiAxNixcbiAgICAzNjogMTYsXG4gICAgMzI6IDEyLFxuICAgIDI0OiAxMixcbiAgICAxNjogOCxcbn07XG5cbmNvbnN0IGluaXRpYWxTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMjgsXG4gICAgNDg6IDI0LFxuICAgIDQwOiAyMixcbiAgICAzNjogMTgsXG4gICAgMzI6IDE4LFxuICAgIDI0OiAxNCxcbiAgICAxNjogMTAsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2FwLWF2YXRhcicsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdPcHRpbWl6ZWRJbWFnZSwgU3ltYm9sQ29tcG9uZW50LCBMZXREaXJlY3RpdmUsIE5nQ2xhc3NdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgbmV0d29ya1N5bWJvbEJ5TmV0d29yazogUmVjb3JkPEF2YXRhck5ldHdvcmssIHN0cmluZz4gPSB7XG4gICAgICAgIGZhY2Vib29rOiAnZmFjZWJvb2stb2ZmaWNpYWwnLFxuICAgICAgICBpbnN0YWdyYW06ICdpbnN0YWdyYW0tb2ZmaWNpYWwnLFxuICAgICAgICBYOiAneC1vZmZpY2lhbCcsXG4gICAgICAgIHR3aXR0ZXI6ICd4LW9mZmljaWFsJyxcbiAgICAgICAgbGlua2VkaW46ICdsaW5rZWRpbi1vZmZpY2lhbCcsXG4gICAgICAgIHRpa3RvazogJ3Rpa3Rvay1vZmZpY2lhbCcsXG4gICAgICAgIHlvdXR1YmU6ICd5b3V0dWJlLW9mZmljaWFsJyxcbiAgICAgICAgcGludGVyZXN0OiAncGludGVyZXN0LW9mZmljaWFsJyxcbiAgICAgICAgdGhyZWFkczogJ25zLXRocmVhZHMtbG9nbycsXG4gICAgICAgIGdvb2dsZU15QnVzaW5lc3M6ICdnb29nbGUtbXktYnVzaW5lc3Mtb2ZmaWNpYWwnLFxuICAgICAgICBnb29nbGU6ICdnb29nbGUtbXktYnVzaW5lc3Mtb2ZmaWNpYWwnLFxuICAgICAgICB3ZWJOZXdzOiAnd2ViLW5ld3MnLFxuICAgICAgICB3ZWJCbG9nOiAnd2ViLWJsb2dzJyxcbiAgICB9O1xuXG4gICAgc2l6ZSQ6IEJlaGF2aW9yU3ViamVjdDxBdmF0YXJTaXplPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXZhdGFyU2l6ZT4oNDApO1xuICAgIHByb2ZpbGVQaWN0dXJlJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oJycpO1xuICAgIG5ldHdvcmskOiBCZWhhdmlvclN1YmplY3Q8QXZhdGFyTmV0d29yayB8IHVuZGVmaW5lZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF2YXRhck5ldHdvcmsgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBwcml2YXRlIGFsdGVybmF0aXZlVGV4dCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIGFub255bW91cyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgdXNlcm5hbWUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcHJpdmF0ZSBvbmxpbmUkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIHNob3dJbml0aWFscyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgcm91bmRlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICBASW5wdXQoKSBzZXQgYWx0ZXJuYXRpdmVUZXh0KGFsdGVybmF0aXZlVGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVUZXh0JC5uZXh0KGFsdGVybmF0aXZlVGV4dCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGFub255bW91cyhhbm9ueW1vdXM6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5hbm9ueW1vdXMkLm5leHQoYW5vbnltb3VzKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdXNlcm5hbWUodXNlcm5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVzZXJuYW1lJC5uZXh0KHVzZXJuYW1lKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbmV0d29yayhuZXR3b3JrOiBBdmF0YXJOZXR3b3JrIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMubmV0d29yayQubmV4dChuZXR3b3JrKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXAtYXZhdGFyLW5ldHdvcmstc2l6ZScsIGAke25ldHdvcmtTaXplQnlBdmF0YXJTaXplW3RoaXMuc2l6ZSQudmFsdWVdfXB4YCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG9ubGluZShvbmxpbmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5vbmxpbmUkLm5leHQob25saW5lKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcHJvZmlsZVBpY3R1cmUocHJvZmlsZVBpY3R1cmU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnByb2ZpbGVQaWN0dXJlJC5uZXh0KHByb2ZpbGVQaWN0dXJlKTtcbiAgICAgICAgdGhpcy5pbWFnZUVycm9yJC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hvd0luaXRpYWxzKHNob3dJbml0aWFsczogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNob3dJbml0aWFscyQubmV4dChzaG93SW5pdGlhbHMpO1xuICAgIH1cbiAgICBASW5wdXQoKSBhbHQgPSAnJztcblxuICAgIEBJbnB1dCgpIHlvdXR1YmVBdmF0YXJNb2RlID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvdW5kZWQtYXZhdGFyJylcbiAgICByb3VuZGVkQXZhdGFyID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MueW91dHViZS1hdmF0YXInKVxuICAgIHlvdXR1YmVBdmF0YXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7XG4gICAgICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICB9KVxuICAgIHNldCByb3VuZGVkKHJvdW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5yb3VuZGVkQXZhdGFyID0gcm91bmRlZDtcbiAgICAgICAgdGhpcy5yb3VuZGVkJC5uZXh0KHJvdW5kZWQpO1xuICAgIH1cblxuICAgIC8vIFRPRE8gLSBtaWdyYXRlIHRvIHNpZ25hbCBpbnB1dCBhbmQgcmVtb3ZlIHNpemUgaW5wdXRcbiAgICBASW5wdXQoKVxuICAgIHNldCBzaXplKHNpemU6IEF2YXRhclNpemUgfCBgJHtBdmF0YXJTaXplfWApIHtcbiAgICAgICAgdGhpcy5zaXplJC5uZXh0KCtzaXplIGFzIEF2YXRhclNpemUpO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1hcC1hdmF0YXItc2l6ZScsIGAke3NpemV9cHhgKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXAtYXZhdGFyLXN5bWJvbC1zaXplJywgYCR7c3ltYm9sU2l6ZUJ5QXZhdGFyU2l6ZVtzaXplXX1weGApO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1hcC1hdmF0YXItb25saW5lLWljb24tc2l6ZScsIGAke29ubGluZUljb25TaXplQnlBdmF0YXJTaXplW3NpemVdfXB4YCk7XG4gICAgfVxuXG4gICAgZGlzcGxheVByb2ZpbGVQaWN0dXJlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheVNpbmdsZU5ldXRyYWxTdmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKTtcbiAgICBkaXNwbGF5SW5pdGlhbHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKTtcbiAgICBkaXNwbGF5QW5vbnltb3VzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheU5ldHdvcmskOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKTtcbiAgICBkaXNwbGF5T25saW5lJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgaW1hZ2VFcnJvciQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIGluaXRpYWxzJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gbmV3IE9ic2VydmFibGU8c3RyaW5nPigpO1xuICAgIGluaXRpYWxzQXZhaWxhYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG9mKGZhbHNlKTtcbiAgICBzb2NpYWxOZXR3b3JrJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG9mKGZhbHNlKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHN5bWJvbFJlZ2lzdHJ5OiBTeW1ib2xSZWdpc3RyeSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3ltYm9sUmVnaXN0cnkucmVnaXN0ZXJTeW1ib2xzKFtcbiAgICAgICAgICAgIGFwU2luZ2xlTmV1dHJhbCxcbiAgICAgICAgICAgIGFwU2hvd1RoZWF0ZXJNYXNrSGFwcHksXG4gICAgICAgICAgICBhcEZhY2Vib29rT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcExpbmtlZGluT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFlvdXR1YmVPZmZpY2lhbCxcbiAgICAgICAgICAgIGFwVGlrdG9rT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcEdvb2dsZU15QnVzaW5lc3NPZmZpY2lhbCxcbiAgICAgICAgICAgIGFwUGludGVyZXN0T2ZmaWNpYWwsXG4gICAgICAgICAgICBhcE5zVGhyZWFkc0xvZ28sXG4gICAgICAgICAgICBhcFhPZmZpY2lhbCxcbiAgICAgICAgICAgIGFwV2ViQmxvZ3MsXG4gICAgICAgICAgICBhcFdlYk5ld3MsXG4gICAgICAgIF0pO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1hcC1hdmF0YXItc2l6ZScsIGA0MHB4YCk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFwLWF2YXRhci1zeW1ib2wtc2l6ZScsIGAke3N5bWJvbFNpemVCeUF2YXRhclNpemVbdGhpcy5zaXplJC52YWx1ZV19cHhgKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWFsc0F2YWlsYWJsZSQgPSB0aGlzLnVzZXJuYW1lJC5waXBlKFxuICAgICAgICAgICAgbWFwKHVzZXJuYW1lID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISF1c2VybmFtZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5UHJvZmlsZVBpY3R1cmUkID0gY29tYmluZUxhdGVzdChbdGhpcy5wcm9maWxlUGljdHVyZSQsIHRoaXMuYW5vbnltb3VzJCwgdGhpcy5pbWFnZUVycm9yJCwgdGhpcy5zaG93SW5pdGlhbHMkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Byb2ZpbGVQaWN0dXJlLCBhbm9ueW1vdXMsIGltYWdlRXJyb3JdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhcHJvZmlsZVBpY3R1cmUgJiYgIWFub255bW91cyAmJiAhaW1hZ2VFcnJvcjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5SW5pdGlhbHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnNob3dJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmFub255bW91cyQsXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxzQXZhaWxhYmxlJCxcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVByb2ZpbGVQaWN0dXJlJCxcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Nob3dJbml0aWFscywgYW5vbnltb3VzLCBpbml0aWFsc0F2YWlsYWJsZSwgZGlzcGxheVByb2ZpbGVQaWN0dXJlXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzaG93SW5pdGlhbHMgJiYgIWFub255bW91cyAmJiBpbml0aWFsc0F2YWlsYWJsZSAmJiAhZGlzcGxheVByb2ZpbGVQaWN0dXJlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5wcm9maWxlUGljdHVyZSQsXG4gICAgICAgICAgICB0aGlzLmltYWdlRXJyb3IkLFxuICAgICAgICAgICAgdGhpcy5pbml0aWFsc0F2YWlsYWJsZSQsXG4gICAgICAgICAgICB0aGlzLnNob3dJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmFub255bW91cyQsXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcm9maWxlUGljdHVyZSQsXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtwcm9maWxlUGljdHVyZSwgaW1hZ2VFcnJvciwgaW5pdGlhbHNBdmFpbGFibGUsIHNob3dJbml0aWFscywgYW5vbnltb3VzLCBkaXNwbGF5SW5pdGlhbHMsIGRpc3BsYXlQcm9maWxlUGljdHVyZV0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAoIXByb2ZpbGVQaWN0dXJlIHx8IGltYWdlRXJyb3IgfHwgIWluaXRpYWxzQXZhaWxhYmxlIHx8IChpbml0aWFsc0F2YWlsYWJsZSAmJiAhc2hvd0luaXRpYWxzKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWFub255bW91cyAmJlxuICAgICAgICAgICAgICAgICAgICAhZGlzcGxheUluaXRpYWxzICYmXG4gICAgICAgICAgICAgICAgICAgICFkaXNwbGF5UHJvZmlsZVBpY3R1cmVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlBbm9ueW1vdXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5hbm9ueW1vdXMkLCB0aGlzLnJvdW5kZWQkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2Fub255bW91cywgcm91bmRlZF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW5vbnltb3VzICYmIHJvdW5kZWQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheU9ubGluZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9ubGluZSQsIHRoaXMucm91bmRlZCRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbb25saW5lLCByb3VuZGVkXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBvbmxpbmUgJiYgcm91bmRlZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5TmV0d29yayQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm5ldHdvcmskLCB0aGlzLnJvdW5kZWQkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW25ldHdvcmssIHJvdW5kZWRdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhbmV0d29yayAmJiByb3VuZGVkO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNvY2lhbE5ldHdvcmskID0gdGhpcy5uZXR3b3JrJC5waXBlKG1hcChuZXR3b3JrID0+IHtcbiAgICAgICAgICAgIGlmICghbmV0d29yaykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ldHdvcmsgPT09ICd5b3V0dWJlJykge1xuICAgICAgICAgICAgICAgIHRoaXMueW91dHViZUF2YXRhciA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBST1VORF9CT1JERVJfQVZBVEFSX05FVFdPUksuaW5kZXhPZihuZXR3b3JrKSA+IC0xO1xuICAgICAgICB9KSk7XG5cblxuICAgICAgICB0aGlzLmluaXRpYWxzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGlzcGxheUluaXRpYWxzJCwgdGhpcy51c2VybmFtZSRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbZGlzcGxheUluaXRpYWxzLCB1c2VybmFtZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoKGRpc3BsYXlJbml0aWFscyAmJiAhdXNlcm5hbWUpIHx8ICFkaXNwbGF5SW5pdGlhbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgJy0tYXAtYXZhdGFyLWluaXRpYWxzLXNpemUnLFxuICAgICAgICAgICAgICAgICAgICBgJHtpbml0aWFsU2l6ZUJ5QXZhdGFyU2l6ZVt0aGlzLnNpemUkLnZhbHVlXX1weGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gdXNlcm5hbWU/LnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWVzWzBdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfWA7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uSW1hZ2VFcnJvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZUVycm9yJC5uZXh0KHRydWUpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgICAqbmdyeExldD1cIntcbiAgICAgICAgZGlzcGxheVByb2ZpbGVQaWN0dXJlOiBkaXNwbGF5UHJvZmlsZVBpY3R1cmUkLFxuICAgICAgICBkaXNwbGF5U2luZ2xlTmV1dHJhbFN2ZzogZGlzcGxheVNpbmdsZU5ldXRyYWxTdmckLFxuICAgICAgICBkaXNwbGF5SW5pdGlhbHM6IGRpc3BsYXlJbml0aWFscyQsXG4gICAgICAgIGRpc3BsYXlBbm9ueW1vdXM6IGRpc3BsYXlBbm9ueW1vdXMkLFxuICAgICAgICBkaXNwbGF5T25saW5lOiBkaXNwbGF5T25saW5lJCxcbiAgICAgICAgZGlzcGxheU5ldHdvcms6IGRpc3BsYXlOZXR3b3JrJCxcbiAgICAgICAgaW5pdGlhbHM6IGluaXRpYWxzJCxcbiAgICAgICAgcHJvZmlsZVBpY3R1cmU6IHByb2ZpbGVQaWN0dXJlJCxcbiAgICAgICAgc2l6ZTogc2l6ZSQsXG4gICAgICAgIG5ldHdvcms6IG5ldHdvcmskLFxuICAgICAgICBzb2NpYWxOZXR3b3JrOiBzb2NpYWxOZXR3b3JrJFxuICAgIH0gYXMgYXZhdGFyVmlld01vZGVsXCI+XG4gICAgQGlmIChhdmF0YXJWaWV3TW9kZWwuZGlzcGxheVByb2ZpbGVQaWN0dXJlKSB7XG4gICAgICAgIEBpZiAoYXZhdGFyVmlld01vZGVsLm5ldHdvcmsgIT09ICd5b3V0dWJlJyB8fCB5b3V0dWJlQXZhdGFyTW9kZSkge1xuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiYXZhdGFyVmlld01vZGVsLnByb2ZpbGVQaWN0dXJlXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiYXZhdGFyVmlld01vZGVsLnNpemVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiYXZhdGFyVmlld01vZGVsLnNpemVcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwiYWx0XCJcbiAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25JbWFnZUVycm9yKClcIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxhcC1zeW1ib2wgW3N5bWJvbElkXT1cIm5ldHdvcmtTeW1ib2xCeU5ldHdvcmtbYXZhdGFyVmlld01vZGVsLm5ldHdvcmtdXCIgLz5cbiAgICAgICAgfVxuICAgIH1cbiAgICBAaWYgKGF2YXRhclZpZXdNb2RlbC5kaXNwbGF5U2luZ2xlTmV1dHJhbFN2Zykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcHJvZmlsZS1waWN0dXJlXCI+XG4gICAgICAgICAgICA8YXAtc3ltYm9sIHN5bWJvbElkPVwic2luZ2xlLW5ldXRyYWxcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGF2YXRhclZpZXdNb2RlbC5kaXNwbGF5QW5vbnltb3VzKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbm9ueW1vdXNcIj5cbiAgICAgICAgICAgIDxhcC1zeW1ib2wgc3ltYm9sSWQ9XCJzaG93LXRoZWF0ZXItbWFzay1oYXBweVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGF2YXRhclZpZXdNb2RlbC5kaXNwbGF5T25saW5lKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvbmxpbmVcIj48L2Rpdj5cbiAgICB9XG4gICAgQGlmIChhdmF0YXJWaWV3TW9kZWwuZGlzcGxheU5ldHdvcmsgJiYgYXZhdGFyVmlld01vZGVsLm5ldHdvcmsgJiYgYXZhdGFyVmlld01vZGVsLm5ldHdvcmsgIT09ICd5b3V0dWJlJykge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm5ldHdvcmtcIlxuICAgICAgICAgICAgW2NsYXNzLnNvY2lhbC1uZXR3b3JrXT1cImF2YXRhclZpZXdNb2RlbC5zb2NpYWxOZXR3b3JrXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImF2YXRhclZpZXdNb2RlbC5uZXR3b3JrXCI+XG4gICAgICAgICAgICA8YXAtc3ltYm9sIFtzeW1ib2xJZF09XCJuZXR3b3JrU3ltYm9sQnlOZXR3b3JrW2F2YXRhclZpZXdNb2RlbC5uZXR3b3JrXVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoYXZhdGFyVmlld01vZGVsLmRpc3BsYXlJbml0aWFscykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5pdGlhbHNcIj5cbiAgICAgICAgICAgIHt7IGF2YXRhclZpZXdNb2RlbC5pbml0aWFscyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==