@agorapulse/ui-components 15.1.1 → 15.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/agorapulse-ui-components-15.1.3.tgz +0 -0
  2. package/avatar/avatar.component.d.ts +41 -31
  3. package/esm2020/avatar/avatar.component.mjs +177 -117
  4. package/esm2020/index.mjs +2 -1
  5. package/esm2020/paginator/paginator-button/paginator-button.component.mjs +2 -2
  6. package/esm2020/paginator/paginator.component.mjs +92 -29
  7. package/esm2020/radio/agorapulse-ui-components-radio.mjs +5 -0
  8. package/esm2020/radio/public_api.mjs +3 -0
  9. package/esm2020/radio/radio-control.registry.mjs +104 -0
  10. package/esm2020/radio/radio.component.mjs +199 -0
  11. package/esm2020/stepper/step.model.mjs +1 -1
  12. package/esm2020/stepper/stepper.component.mjs +4 -4
  13. package/fesm2015/agorapulse-ui-components-avatar.mjs +176 -117
  14. package/fesm2015/agorapulse-ui-components-avatar.mjs.map +1 -1
  15. package/fesm2015/agorapulse-ui-components-paginator.mjs +93 -30
  16. package/fesm2015/agorapulse-ui-components-paginator.mjs.map +1 -1
  17. package/fesm2015/agorapulse-ui-components-radio.mjs +306 -0
  18. package/fesm2015/agorapulse-ui-components-radio.mjs.map +1 -0
  19. package/fesm2015/agorapulse-ui-components-stepper.mjs +3 -3
  20. package/fesm2015/agorapulse-ui-components-stepper.mjs.map +1 -1
  21. package/fesm2015/agorapulse-ui-components.mjs +1 -0
  22. package/fesm2015/agorapulse-ui-components.mjs.map +1 -1
  23. package/fesm2020/agorapulse-ui-components-avatar.mjs +176 -116
  24. package/fesm2020/agorapulse-ui-components-avatar.mjs.map +1 -1
  25. package/fesm2020/agorapulse-ui-components-paginator.mjs +93 -30
  26. package/fesm2020/agorapulse-ui-components-paginator.mjs.map +1 -1
  27. package/fesm2020/agorapulse-ui-components-radio.mjs +305 -0
  28. package/fesm2020/agorapulse-ui-components-radio.mjs.map +1 -0
  29. package/fesm2020/agorapulse-ui-components-stepper.mjs +3 -3
  30. package/fesm2020/agorapulse-ui-components-stepper.mjs.map +1 -1
  31. package/fesm2020/agorapulse-ui-components.mjs +1 -0
  32. package/fesm2020/agorapulse-ui-components.mjs.map +1 -1
  33. package/index.d.ts +1 -0
  34. package/package.json +9 -1
  35. package/paginator/paginator.component.d.ts +26 -8
  36. package/radio/index.d.ts +5 -0
  37. package/radio/public_api.d.ts +2 -0
  38. package/radio/radio-control.registry.d.ts +22 -0
  39. package/radio/radio.component.d.ts +57 -0
  40. package/snackbars-thread/component/snackbars-thread.component.d.ts +1 -1
  41. package/stepper/step.model.d.ts +1 -0
  42. package/stepper/stepper.component.d.ts +2 -2
  43. package/agorapulse-ui-components-15.1.1.tgz +0 -0
@@ -1,35 +1,45 @@
1
- import { agorapulseSymbol, SymbolRegistry } from '@agorapulse/ui-symbol';
2
- import { OnChanges, SimpleChanges } from '@angular/core';
1
+ import { SymbolRegistry } from '@agorapulse/ui-symbol';
2
+ import { ElementRef, OnInit } from '@angular/core';
3
+ import { BehaviorSubject, Observable } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
- export declare class AvatarComponent implements OnChanges {
5
+ export type AvatarSize = 56 | 48 | 40 | 36 | 32 | 24 | 16;
6
+ export type AvatarNetwork = 'facebook' | 'instagram' | 'twitter' | 'linkedin' | 'tiktok' | 'youtube' | 'pinterest' | 'googleMyBusiness';
7
+ export declare class AvatarComponent implements OnInit {
5
8
  private symbolRegistry;
6
- border: string;
7
- defaultImageEnabled: boolean;
8
- fallbackSymbolId: agorapulseSymbol;
9
- fallbackSymbolSize: string | 'none' | 'pico' | 'nano' | 'micro' | 'mini' | 'small' | 'medium' | 'normal' | 'large';
10
- imageUrl: string | undefined;
11
- loading: 'auto' | 'lazy' | 'eager';
12
- outerBorderHidden: boolean;
13
- size: 'large' | 'large-normal' | 'large-sm' | 'normal' | 'medium' | 'medium-sm' | 'small' | 'mini' | 'mini-sm' | 'micro' | 'facebook' | 'twitter' | 'linkedin' | 'instagram' | 'youtube' | 'google';
14
- social: 'facebook' | 'instagram' | 'linkedin' | 'tiktok' | 'twitter' | 'youtube' | 'google' | 'pinterest';
15
- username: string;
16
- rounded: boolean;
17
- online: boolean;
18
- imageUrls: string[];
19
- socialSize: string;
20
- socialLogo: agorapulseSymbol;
21
- sizeMap: {
22
- [key: string]: string;
23
- };
24
- sizeMapNumbers: {
25
- [key: string]: number;
26
- };
27
- symbolSizeByAvatarSize: {
28
- [key: string]: string;
29
- };
30
- constructor(symbolRegistry: SymbolRegistry);
31
- ngOnChanges(changes: SimpleChanges): void;
32
- onError(): void;
9
+ private elementRef;
10
+ readonly networkSymbolByNetwork: Record<AvatarNetwork, string>;
11
+ size$: BehaviorSubject<AvatarSize>;
12
+ profilePicture$: BehaviorSubject<string | undefined>;
13
+ network$: BehaviorSubject<AvatarNetwork>;
14
+ private alternativeText$;
15
+ private anonymous$;
16
+ private username$;
17
+ private online$;
18
+ private showInitials$;
19
+ private rounded$;
20
+ set alternativeText(alternativeText: string);
21
+ set anonymous(anonymous: boolean);
22
+ set username(username: string);
23
+ set network(network: AvatarNetwork);
24
+ set online(online: boolean);
25
+ set profilePicture(profilePicture: string | undefined);
26
+ set showInitials(showInitials: boolean);
27
+ alt: string;
28
+ roundedAvatar: boolean;
29
+ set rounded(rounded: boolean);
30
+ set size(size: AvatarSize);
31
+ displayProfilePicture$: Observable<boolean>;
32
+ displaySingleNeutralSvg$: Observable<boolean>;
33
+ displayInitials$: Observable<boolean>;
34
+ displayAnonymous$: Observable<boolean>;
35
+ displayNetwork$: Observable<boolean>;
36
+ displayOnline$: Observable<boolean>;
37
+ imageError$: BehaviorSubject<boolean>;
38
+ initials$: Observable<string>;
39
+ initialsAvailable$: Observable<boolean>;
40
+ constructor(symbolRegistry: SymbolRegistry, elementRef: ElementRef);
41
+ ngOnInit(): void;
42
+ onImageError(): void;
33
43
  static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "ap-avatar", never, { "border": "border"; "defaultImageEnabled": "defaultImageEnabled"; "fallbackSymbolId": "fallbackSymbolId"; "fallbackSymbolSize": "fallbackSymbolSize"; "imageUrl": "imageUrl"; "loading": "loading"; "outerBorderHidden": "outerBorderHidden"; "size": "size"; "social": "social"; "username": "username"; "rounded": "rounded"; "online": "online"; "imageUrls": "imageUrls"; }, {}, never, ["*"], true, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "ap-avatar", never, { "alternativeText": "alternativeText"; "anonymous": "anonymous"; "username": "username"; "network": "network"; "online": "online"; "profilePicture": "profilePicture"; "showInitials": "showInitials"; "alt": "alt"; "rounded": "rounded"; "size": "size"; }, {}, never, never, true, never>;
35
45
  }
@@ -1,152 +1,212 @@
1
- import { apFacebookOfficial, apGoogleMyBusinessOfficial, apLinkedinOfficial, apSingleNeutral, apTiktokOfficial, apTwitterOfficial, apYoutubeOfficial, apPinterestOfficial, SymbolComponent, } from '@agorapulse/ui-symbol';
2
- import { NgForOf, NgIf, SlicePipe } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
1
+ import { apFacebookOfficial, apGoogleMyBusinessOfficial, apLinkedinOfficial, apShowTheaterMaskHappy, apSingleNeutral, apTiktokOfficial, apTwitterOfficial, apYoutubeOfficial, apPinterestOfficial, SymbolComponent, } from '@agorapulse/ui-symbol';
2
+ import { NgForOf, NgIf, NgOptimizedImage } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation, } from '@angular/core';
4
+ import { BehaviorSubject, combineLatest, map, Observable, of } from 'rxjs';
5
+ import { LetModule } from '@ngrx/component';
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "@agorapulse/ui-symbol";
6
- const SizeMap = {
7
- 'large': '64',
8
- 'large-sm': '56',
9
- 'normal': '48',
10
- 'medium': '40',
11
- 'medium-sm': '36',
12
- 'small': '32',
13
- 'mini': '24',
14
- 'mini-sm': '16',
15
- 'micro': '12',
16
- 'facebook': '40',
17
- 'linkedin': '40',
18
- 'instagram': '40',
19
- 'youtube': '40',
20
- 'google': '40',
21
- 'tiktok': '56',
22
- 'twitter': '48'
8
+ import * as i2 from "@ngrx/component";
9
+ const onlineIconSizeByAvatarSize = {
10
+ 56: 16,
11
+ 48: 12,
12
+ 40: 12,
13
+ 36: 8,
14
+ 32: 8,
15
+ 24: 6,
16
+ 16: 6,
23
17
  };
24
- const SizeMapNumbers = {
25
- large: 64,
26
- 'large-sm': 56,
27
- normal: 48,
28
- medium: 40,
29
- 'medium-sm': 36,
30
- small: 32,
31
- mini: 24,
32
- 'mini-sm': 16,
33
- micro: 12,
34
- facebook: 40,
35
- linkedin: 40,
36
- instagram: 40,
37
- youtube: 40,
38
- google: 40,
39
- tiktok: 56,
40
- twitter: 48,
18
+ const symbolSizeByAvatarSize = {
19
+ 56: 28,
20
+ 48: 24,
21
+ 40: 20,
22
+ 36: 18,
23
+ 32: 16,
24
+ 24: 12,
25
+ 16: 8,
41
26
  };
42
- const SymbolSizeByAvatarSize = {
43
- large: 'small',
44
- normal: 'mini',
45
- medium: 'mini',
46
- 'medium-sm': 'mini-sm',
47
- small: 'micro',
48
- mini: 'micro-sm',
49
- 'mini-sm': 'pico',
50
- micro: 'pico',
27
+ const networkSizeByAvatarSize = {
28
+ 56: 16,
29
+ 48: 16,
30
+ 40: 16,
31
+ 36: 16,
32
+ 32: 12,
33
+ 24: 12,
34
+ 16: 8,
35
+ };
36
+ const initialSizeByAvatarSize = {
37
+ 56: 28,
38
+ 48: 24,
39
+ 40: 22,
40
+ 36: 18,
41
+ 32: 18,
42
+ 24: 14,
43
+ 16: 10,
51
44
  };
52
45
  export class AvatarComponent {
53
- constructor(symbolRegistry) {
46
+ set alternativeText(alternativeText) {
47
+ this.alternativeText$.next(alternativeText);
48
+ }
49
+ set anonymous(anonymous) {
50
+ this.anonymous$.next(anonymous);
51
+ }
52
+ set username(username) {
53
+ this.username$.next(username);
54
+ }
55
+ set network(network) {
56
+ this.network$.next(network);
57
+ this.elementRef.nativeElement.style.setProperty('--ap-avatar-network-size', `${networkSizeByAvatarSize[this.size$.value]}px`);
58
+ }
59
+ set online(online) {
60
+ this.online$.next(online);
61
+ }
62
+ set profilePicture(profilePicture) {
63
+ this.profilePicture$.next(profilePicture);
64
+ this.imageError$.next(false);
65
+ }
66
+ set showInitials(showInitials) {
67
+ this.showInitials$.next(showInitials);
68
+ }
69
+ set rounded(rounded) {
70
+ this.roundedAvatar = rounded;
71
+ this.rounded$.next(rounded);
72
+ }
73
+ set size(size) {
74
+ this.size$.next(size);
75
+ this.elementRef.nativeElement.style.setProperty('--ap-avatar-size', `${size}px`);
76
+ this.elementRef.nativeElement.style.setProperty('--ap-avatar-symbol-size', `${symbolSizeByAvatarSize[size]}px`);
77
+ this.elementRef.nativeElement.style.setProperty('--ap-avatar-online-icon-size', `${onlineIconSizeByAvatarSize[size]}px`);
78
+ }
79
+ constructor(symbolRegistry, elementRef) {
54
80
  this.symbolRegistry = symbolRegistry;
55
- this.border = '';
56
- this.defaultImageEnabled = true; // DEPRECATED default avatar if we don't have username
57
- this.fallbackSymbolId = 'single-neutral';
58
- this.fallbackSymbolSize = 'mini';
59
- this.loading = 'auto';
60
- this.outerBorderHidden = false;
61
- this.size = 'medium';
62
- this.rounded = false;
63
- this.online = false;
64
- this.sizeMap = SizeMap;
65
- this.sizeMapNumbers = SizeMapNumbers;
66
- this.symbolSizeByAvatarSize = SymbolSizeByAvatarSize;
81
+ this.elementRef = elementRef;
82
+ this.networkSymbolByNetwork = {
83
+ facebook: 'facebook-official',
84
+ instagram: 'instagram-official',
85
+ twitter: 'twitter-official',
86
+ linkedin: 'linkedin-official',
87
+ tiktok: 'tiktok-official',
88
+ youtube: 'youtube-official',
89
+ pinterest: 'pinterest-official',
90
+ googleMyBusiness: 'google-my-business-official',
91
+ };
92
+ this.size$ = new BehaviorSubject(40);
93
+ this.profilePicture$ = new BehaviorSubject('');
94
+ this.network$ = new BehaviorSubject('facebook');
95
+ this.alternativeText$ = new BehaviorSubject('');
96
+ this.anonymous$ = new BehaviorSubject(false);
97
+ this.username$ = new BehaviorSubject('');
98
+ this.online$ = new BehaviorSubject(false);
99
+ this.showInitials$ = new BehaviorSubject(false);
100
+ this.rounded$ = new BehaviorSubject(false);
101
+ this.displayProfilePicture$ = new Observable();
102
+ this.displaySingleNeutralSvg$ = new Observable();
103
+ this.displayInitials$ = new Observable();
104
+ this.displayAnonymous$ = new Observable();
105
+ this.displayNetwork$ = new Observable();
106
+ this.displayOnline$ = new Observable();
107
+ this.imageError$ = new BehaviorSubject(false);
108
+ this.initials$ = new Observable();
109
+ this.initialsAvailable$ = of(false);
67
110
  this.symbolRegistry.registerSymbols([
68
111
  apSingleNeutral,
112
+ apShowTheaterMaskHappy,
69
113
  apFacebookOfficial,
70
114
  apTwitterOfficial,
115
+ apLinkedinOfficial,
71
116
  apYoutubeOfficial,
72
117
  apTiktokOfficial,
73
- apLinkedinOfficial,
74
118
  apGoogleMyBusinessOfficial,
75
- apPinterestOfficial
119
+ apPinterestOfficial,
76
120
  ]);
121
+ this.elementRef.nativeElement.style.setProperty('--ap-avatar-size', `40px`);
122
+ this.elementRef.nativeElement.style.setProperty('--ap-avatar-symbol-size', `${symbolSizeByAvatarSize[this.size$.value]}px`);
77
123
  }
78
- ngOnChanges(changes) {
79
- if (changes.social?.currentValue || changes.size?.currentValue) {
80
- if (this.social) {
81
- this.socialLogo = this.social === 'google' ? 'google-my-business-official' : `${this.social}-official`;
82
- }
83
- if (this.social === 'google') {
84
- switch (this.size) {
85
- case 'medium-sm':
86
- this.socialSize = '14';
87
- break;
88
- case 'mini':
89
- this.socialSize = '15';
90
- break;
91
- case 'mini-sm':
92
- this.socialSize = '10';
93
- break;
94
- default:
95
- this.socialSize = '19';
96
- }
124
+ ngOnInit() {
125
+ this.initialsAvailable$ = this.username$.pipe(map(username => {
126
+ return !!username;
127
+ }));
128
+ this.displayProfilePicture$ = combineLatest([
129
+ this.profilePicture$,
130
+ this.anonymous$,
131
+ this.imageError$,
132
+ this.showInitials$,
133
+ ]).pipe(map(([profilePicture, anonymous, imageError]) => {
134
+ return !!profilePicture && !anonymous && !imageError;
135
+ }));
136
+ this.displayInitials$ = combineLatest([
137
+ this.showInitials$,
138
+ this.anonymous$,
139
+ this.initialsAvailable$,
140
+ this.displayProfilePicture$,
141
+ ]).pipe(map(([showInitials, anonymous, initialsAvailable, displayProfilePicture]) => {
142
+ return showInitials && !anonymous && initialsAvailable && !displayProfilePicture;
143
+ }));
144
+ this.displaySingleNeutralSvg$ = combineLatest([
145
+ this.profilePicture$,
146
+ this.imageError$,
147
+ this.initialsAvailable$,
148
+ this.showInitials$,
149
+ this.anonymous$,
150
+ this.displayInitials$,
151
+ this.displayProfilePicture$,
152
+ ]).pipe(map(([profilePicture, imageError, initialsAvailable, showInitials, anonymous, displayInitials, displayProfilePicture,]) => {
153
+ return ((!profilePicture || imageError || !initialsAvailable || (initialsAvailable && !showInitials)) &&
154
+ !anonymous &&
155
+ !displayInitials &&
156
+ !displayProfilePicture);
157
+ }));
158
+ this.displayAnonymous$ = combineLatest([this.anonymous$, this.rounded$]).pipe(map(([anonymous, rounded]) => {
159
+ return anonymous && rounded;
160
+ }));
161
+ this.displayOnline$ = combineLatest([this.online$, this.rounded$]).pipe(map(([online, rounded]) => {
162
+ return online && rounded;
163
+ }));
164
+ this.displayNetwork$ = combineLatest([this.network$, this.rounded$]).pipe(map(([network, rounded]) => {
165
+ return !!network && rounded;
166
+ }));
167
+ this.initials$ = combineLatest([this.displayInitials$, this.username$]).pipe(map(([displayInitials, username]) => {
168
+ if (displayInitials && !username) {
169
+ return '';
97
170
  }
98
- else {
99
- switch (this.size) {
100
- case 'medium-sm':
101
- case 'mini':
102
- this.socialSize = '12';
103
- break;
104
- case 'mini-sm':
105
- this.socialSize = '8';
106
- break;
107
- default:
108
- this.socialSize = '16';
109
- }
171
+ this.elementRef.nativeElement.style.setProperty('--ap-avatar-initials-size', `${initialSizeByAvatarSize[this.size$.value]}px`);
172
+ const names = username.split(' ');
173
+ if (names.length === 1) {
174
+ return `${names[0].charAt(0).toUpperCase()}${names[0].charAt(1).toUpperCase()}`;
110
175
  }
111
- }
112
- if (changes.defaultImageEnabled && changes.defaultImageEnabled.currentValue) {
113
- console.warn("'defaultImageEnabled' attribute is deprecated.");
114
- }
176
+ return `${names[0].charAt(0).toUpperCase()}${names[names.length - 1].charAt(0).toUpperCase()}`;
177
+ }));
115
178
  }
116
- onError() {
117
- this.imageUrl = null;
179
+ onImageError() {
180
+ this.imageError$.next(true);
118
181
  }
119
182
  }
120
- AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.SymbolRegistry }], target: i0.ɵɵFactoryTarget.Component });
121
- AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: AvatarComponent, isStandalone: true, selector: "ap-avatar", inputs: { border: "border", defaultImageEnabled: "defaultImageEnabled", fallbackSymbolId: "fallbackSymbolId", fallbackSymbolSize: "fallbackSymbolSize", imageUrl: "imageUrl", loading: "loading", outerBorderHidden: "outerBorderHidden", size: "size", social: "social", username: "username", rounded: "rounded", online: "online", imageUrls: "imageUrls" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ap-avatar-container {{size}}\"\n [style.width]=\"imageUrls ? (imageUrls.length < 4 ? sizeMapNumbers[size] * (imageUrls.length / 3 + 1) + 'px' : sizeMapNumbers[size] * 1.5 + 'px') : sizeMapNumbers[size] + 'px'\">\n <!-- simple avatar -->\n <div *ngIf=\"imageUrl || imageUrls; else noPicture\">\n <img *ngIf=\"imageUrl && !imageUrls\"\n class=\"ap-avatar {{size}}\"\n [class.outer-border]=\"!outerBorderHidden\"\n [class.rounded]=\"rounded\"\n [attr.border]=\"border\"\n [attr.loading]=\"loading\"\n [attr.height]=\"sizeMap[size]\"\n [attr.width]=\"sizeMap[size]\"\n [src]=\"imageUrl\"\n (error)=\"onError()\"/>\n <div *ngIf=\"imageUrls && !imageUrl\"\n class=\"multi-avatar-container\">\n <div *ngFor=\"let url of imageUrls | slice: 0:3; let i = index\">\n <img *ngIf=\"url\" class=\"ap-avatar {{size}} multi\"\n [class.outer-border]=\"!outerBorderHidden\"\n [class.rounded]=\"rounded\"\n [style.z-index]=\"i\"\n [style.left]=\"2 * i * sizeMapNumbers[size] / 3 + 'px'\"\n [attr.border]=\"border\"\n [attr.loading]=\"loading\"\n [attr.height]=\"sizeMap[size]\"\n [attr.width]=\"sizeMap[size]\"\n [src]=\"url\"\n (error)=\"onError()\"/>\n <span *ngIf=\"!url\"\n class=\"ap-avatar ap-avatar-username {{size}} multi\"\n [style.z-index]=\"i\"\n [style.left]=\"2 * i * sizeMapNumbers[size] / 3 + 'px'\"\n [class.outer-border]=\"!outerBorderHidden\"\n [class.rounded]=\"rounded\"\n [attr.border]=\"border\">\n <ng-container *ngIf=\"username; else symbol\">\n {{username.charAt(0).toUpperCase()}}\n </ng-container>\n <ng-template #symbol>\n <ap-symbol\n [size]=\"fallbackSymbolSize\"\n [symbolId]=\"fallbackSymbolId\">\n </ap-symbol>\n </ng-template>\n </span>\n </div>\n </div>\n </div>\n <!-- image with first letter of screen name -->\n <ng-template #noPicture>\n <span\n class=\"ap-avatar ap-avatar-username {{size}}\"\n [class.outer-border]=\"!outerBorderHidden\"\n [class.rounded]=\"rounded\"\n [attr.border]=\"border\">\n <ng-container *ngIf=\"username; else symbol\">\n {{username.charAt(0).toUpperCase()}}\n </ng-container>\n <ng-template #symbol>\n <ap-symbol\n [size]=\"symbolSizeByAvatarSize[size] ?? fallbackSymbolSize\"\n [symbolId]=\"fallbackSymbolId\">\n </ap-symbol>\n </ng-template>\n </span>\n </ng-template>\n\n <div *ngIf=\"social\"\n class=\"social-symbol-wrapper {{social}} {{size}}\">\n <ap-symbol [symbolId]=\"socialLogo\"\n [size]=\"socialSize\">\n </ap-symbol>\n </div>\n <div *ngIf=\"online\" class=\"online-indicator {{size}}\"></div>\n\n</div>\n<label>\n <ng-content></ng-content>\n</label>\n", styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #A566A5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #C7AB82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #F2713C}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #FFD006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94C5AA}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2A9D8F}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78ACD8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525A9E}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6A2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729E}:host{align-items:center;display:inline-flex}label{margin-left:8px}label:empty{display:none}.ap-avatar-container,.ap-avatar-container .multi-avatar-container{position:relative}.ap-avatar-container .multi-avatar-container .multi{position:absolute}.ap-avatar-container.large{height:64px;width:64px}.ap-avatar-container.large-normal{min-height:56px;min-width:56px;height:56px;width:56px}.ap-avatar-container.normal{height:48px;width:48px}.ap-avatar-container.medium{height:40px;width:40px}.ap-avatar-container.medium-sm{height:36px;width:36px}.ap-avatar-container.small{height:32px;width:32px}.ap-avatar-container.mini{height:24px;width:24px}.ap-avatar-container.mini-sm{height:16px;width:16px}.ap-avatar-container.micro{height:12px;width:12px}.ap-avatar-container .ap-avatar.outer-border{box-shadow:0 0 0 1.5px #eaecef}.ap-avatar-container .ap-avatar.large{height:64px;width:64px}.ap-avatar-container .ap-avatar.large-normal{min-height:56px;min-width:56px;height:56px;width:56px}.ap-avatar-container .ap-avatar.normal{height:48px;width:48px}.ap-avatar-container .ap-avatar.medium{height:40px;width:40px}.ap-avatar-container .ap-avatar.medium-sm{height:36px;width:36px}.ap-avatar-container .ap-avatar.small{height:32px;width:32px}.ap-avatar-container .ap-avatar.mini{height:24px;width:24px}.ap-avatar-container .ap-avatar.mini-sm{height:16px;width:16px}.ap-avatar-container .ap-avatar.micro{height:12px;width:12px}.ap-avatar-container .ap-avatar.facebook,.ap-avatar-container .ap-avatar.linkedin,.ap-avatar-container .ap-avatar.youtube,.ap-avatar-container .ap-avatar.instagram,.ap-avatar-container .ap-avatar.google{height:40px;width:40px}.ap-avatar-container .ap-avatar.twitter{height:48px;width:48px}.ap-avatar-container .ap-avatar.tiktok{height:56px;width:56px}.ap-avatar-container .ap-avatar:not(.rounded){border-radius:13%}.ap-avatar-container .ap-avatar-username{display:inline-flex;align-items:center;justify-content:center;background-color:#aeb5c1;color:#fff;font-size:24px}.ap-avatar-container .ap-avatar-username.large{font-size:28px}.ap-avatar-container .ap-avatar-username.medium{font-size:18px}.ap-avatar-container .ap-avatar-username.medium-sm{font-size:16px}.ap-avatar-container .ap-avatar-username.small{font-size:14px}.ap-avatar-container .ap-avatar-username.mini{font-size:12px}.ap-avatar-container .ap-avatar-username.mini-sm{font-size:1px}.ap-avatar-container .social-symbol-wrapper{position:absolute;right:0;bottom:0;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1.5px #eaecef}.ap-avatar-container .social-symbol-wrapper.facebook,.ap-avatar-container .social-symbol-wrapper.twitter,.ap-avatar-container .social-symbol-wrapper.youtube,.ap-avatar-container .social-symbol-wrapper.tiktok,.ap-avatar-container .social-symbol-wrapper,.ap-avatar-container .social-symbol-wrapper pinterest{border-radius:100%}.ap-avatar-container .social-symbol-wrapper.instagram{border-radius:28%}.ap-avatar-container .social-symbol-wrapper.linkedin{border-radius:6%}.ap-avatar-container .social-symbol-wrapper.google{box-shadow:none;right:-3px;bottom:-3px}.ap-avatar-container .social-symbol-wrapper.google ap-symbol{border-radius:0;background-color:transparent}.ap-avatar-container .social-symbol-wrapper ap-symbol{border-radius:100%;background-color:#fff}.ap-avatar-container .social-symbol-wrapper ap-symbol ::ng-deep svg{display:block}.ap-avatar-container .online-indicator{box-shadow:none;background:#45B854;right:0;bottom:0;position:absolute}.ap-avatar-container .online-indicator.large{outline:5px solid white;border-radius:16px;min-height:16px;min-width:16px}.ap-avatar-container .online-indicator.normal{outline:4px solid white;border-radius:12px;min-height:12px;min-width:12px}.ap-avatar-container .online-indicator.medium,.ap-avatar-container .online-indicator.medium-sm,.ap-avatar-container .online-indicator.small{outline:3px solid white;border-radius:8px;min-height:8px;min-width:8px}.ap-avatar-container .online-indicator.mini,.ap-avatar-container .online-indicator.mini-sm{outline:2px solid white;border-radius:6px;min-height:6px;min-width:6px}.ap-avatar-container .online-indicator.micro{outline:1px solid white;border-radius:4px;min-height:4px;min-width:4px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "component", type: SymbolComponent, selector: "ap-symbol[symbolId]", inputs: ["color", "symbolId", "size", "state"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
183
+ AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.SymbolRegistry }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
184
+ AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", 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", size: "size" }, host: { properties: { "class.rounded-avatar": "this.roundedAvatar" } }, 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 } as avatarViewModel\">\n <img\n *ngIf=\"avatarViewModel.displayProfilePicture\"\n [ngSrc]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n <div *ngIf=\"avatarViewModel.displaySingleNeutralSvg\" class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\"></ap-symbol>\n </div>\n\n <div *ngIf=\"avatarViewModel.displayAnonymous\" class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\"></ap-symbol>\n </div>\n <div *ngIf=\"avatarViewModel.displayOnline\" class=\"online\"></div>\n <div\n *ngIf=\"avatarViewModel.displayNetwork\"\n class=\"network\"\n [class.facebook]=\"avatarViewModel.network === 'facebook'\"\n [class.linkedin]=\"avatarViewModel.network === 'linkedin'\"\n [class.twitter]=\"avatarViewModel.network === 'twitter'\"\n [class.youtube]=\"avatarViewModel.network === 'youtube'\"\n [class.googleMyBusiness]=\"avatarViewModel.network === 'googleMyBusiness'\"\n [class.instagram]=\"avatarViewModel.network === 'instagram'\"\n [class.tiktok]=\"avatarViewModel.network === 'tiktok'\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\"></ap-symbol>\n </div>\n\n <div *ngIf=\"avatarViewModel.displayInitials\" class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\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}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 img{overflow:hidden;border-radius:var(--sys-border-radius-sm);border:1px solid var(--ref-color-grey-10);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 .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-20)}ap-avatar .network.facebook,ap-avatar .network.twitter,ap-avatar .network.youtube,ap-avatar .network.tiktok,ap-avatar .network,ap-avatar .network pinterest{border-radius:100%}ap-avatar .network.instagram{border-radius:28%}ap-avatar .network.linkedin{border-radius:6%}ap-avatar .network.googleMyBusiness{box-shadow:none}ap-avatar .network ap-symbol img{border-radius:0;border:none}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "disableOptimizedSrcset", "fill", "src", "srcset"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol[symbolId]", inputs: ["color", "symbolId", "size", "state"] }, { kind: "ngmodule", type: LetModule }, { kind: "directive", type: i2.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
122
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AvatarComponent, decorators: [{
123
186
  type: Component,
124
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-avatar', standalone: true, imports: [NgIf, SlicePipe, SymbolComponent, NgForOf], template: "<div class=\"ap-avatar-container {{size}}\"\n [style.width]=\"imageUrls ? (imageUrls.length < 4 ? sizeMapNumbers[size] * (imageUrls.length / 3 + 1) + 'px' : sizeMapNumbers[size] * 1.5 + 'px') : sizeMapNumbers[size] + 'px'\">\n <!-- simple avatar -->\n <div *ngIf=\"imageUrl || imageUrls; else noPicture\">\n <img *ngIf=\"imageUrl && !imageUrls\"\n class=\"ap-avatar {{size}}\"\n [class.outer-border]=\"!outerBorderHidden\"\n [class.rounded]=\"rounded\"\n [attr.border]=\"border\"\n [attr.loading]=\"loading\"\n [attr.height]=\"sizeMap[size]\"\n [attr.width]=\"sizeMap[size]\"\n [src]=\"imageUrl\"\n (error)=\"onError()\"/>\n <div *ngIf=\"imageUrls && !imageUrl\"\n class=\"multi-avatar-container\">\n <div *ngFor=\"let url of imageUrls | slice: 0:3; let i = index\">\n <img *ngIf=\"url\" class=\"ap-avatar {{size}} multi\"\n [class.outer-border]=\"!outerBorderHidden\"\n [class.rounded]=\"rounded\"\n [style.z-index]=\"i\"\n [style.left]=\"2 * i * sizeMapNumbers[size] / 3 + 'px'\"\n [attr.border]=\"border\"\n [attr.loading]=\"loading\"\n [attr.height]=\"sizeMap[size]\"\n [attr.width]=\"sizeMap[size]\"\n [src]=\"url\"\n (error)=\"onError()\"/>\n <span *ngIf=\"!url\"\n class=\"ap-avatar ap-avatar-username {{size}} multi\"\n [style.z-index]=\"i\"\n [style.left]=\"2 * i * sizeMapNumbers[size] / 3 + 'px'\"\n [class.outer-border]=\"!outerBorderHidden\"\n [class.rounded]=\"rounded\"\n [attr.border]=\"border\">\n <ng-container *ngIf=\"username; else symbol\">\n {{username.charAt(0).toUpperCase()}}\n </ng-container>\n <ng-template #symbol>\n <ap-symbol\n [size]=\"fallbackSymbolSize\"\n [symbolId]=\"fallbackSymbolId\">\n </ap-symbol>\n </ng-template>\n </span>\n </div>\n </div>\n </div>\n <!-- image with first letter of screen name -->\n <ng-template #noPicture>\n <span\n class=\"ap-avatar ap-avatar-username {{size}}\"\n [class.outer-border]=\"!outerBorderHidden\"\n [class.rounded]=\"rounded\"\n [attr.border]=\"border\">\n <ng-container *ngIf=\"username; else symbol\">\n {{username.charAt(0).toUpperCase()}}\n </ng-container>\n <ng-template #symbol>\n <ap-symbol\n [size]=\"symbolSizeByAvatarSize[size] ?? fallbackSymbolSize\"\n [symbolId]=\"fallbackSymbolId\">\n </ap-symbol>\n </ng-template>\n </span>\n </ng-template>\n\n <div *ngIf=\"social\"\n class=\"social-symbol-wrapper {{social}} {{size}}\">\n <ap-symbol [symbolId]=\"socialLogo\"\n [size]=\"socialSize\">\n </ap-symbol>\n </div>\n <div *ngIf=\"online\" class=\"online-indicator {{size}}\"></div>\n\n</div>\n<label>\n <ng-content></ng-content>\n</label>\n", styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #A566A5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #C7AB82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #F2713C}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #FFD006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94C5AA}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2A9D8F}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78ACD8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525A9E}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6A2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729E}:host{align-items:center;display:inline-flex}label{margin-left:8px}label:empty{display:none}.ap-avatar-container,.ap-avatar-container .multi-avatar-container{position:relative}.ap-avatar-container .multi-avatar-container .multi{position:absolute}.ap-avatar-container.large{height:64px;width:64px}.ap-avatar-container.large-normal{min-height:56px;min-width:56px;height:56px;width:56px}.ap-avatar-container.normal{height:48px;width:48px}.ap-avatar-container.medium{height:40px;width:40px}.ap-avatar-container.medium-sm{height:36px;width:36px}.ap-avatar-container.small{height:32px;width:32px}.ap-avatar-container.mini{height:24px;width:24px}.ap-avatar-container.mini-sm{height:16px;width:16px}.ap-avatar-container.micro{height:12px;width:12px}.ap-avatar-container .ap-avatar.outer-border{box-shadow:0 0 0 1.5px #eaecef}.ap-avatar-container .ap-avatar.large{height:64px;width:64px}.ap-avatar-container .ap-avatar.large-normal{min-height:56px;min-width:56px;height:56px;width:56px}.ap-avatar-container .ap-avatar.normal{height:48px;width:48px}.ap-avatar-container .ap-avatar.medium{height:40px;width:40px}.ap-avatar-container .ap-avatar.medium-sm{height:36px;width:36px}.ap-avatar-container .ap-avatar.small{height:32px;width:32px}.ap-avatar-container .ap-avatar.mini{height:24px;width:24px}.ap-avatar-container .ap-avatar.mini-sm{height:16px;width:16px}.ap-avatar-container .ap-avatar.micro{height:12px;width:12px}.ap-avatar-container .ap-avatar.facebook,.ap-avatar-container .ap-avatar.linkedin,.ap-avatar-container .ap-avatar.youtube,.ap-avatar-container .ap-avatar.instagram,.ap-avatar-container .ap-avatar.google{height:40px;width:40px}.ap-avatar-container .ap-avatar.twitter{height:48px;width:48px}.ap-avatar-container .ap-avatar.tiktok{height:56px;width:56px}.ap-avatar-container .ap-avatar:not(.rounded){border-radius:13%}.ap-avatar-container .ap-avatar-username{display:inline-flex;align-items:center;justify-content:center;background-color:#aeb5c1;color:#fff;font-size:24px}.ap-avatar-container .ap-avatar-username.large{font-size:28px}.ap-avatar-container .ap-avatar-username.medium{font-size:18px}.ap-avatar-container .ap-avatar-username.medium-sm{font-size:16px}.ap-avatar-container .ap-avatar-username.small{font-size:14px}.ap-avatar-container .ap-avatar-username.mini{font-size:12px}.ap-avatar-container .ap-avatar-username.mini-sm{font-size:1px}.ap-avatar-container .social-symbol-wrapper{position:absolute;right:0;bottom:0;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1.5px #eaecef}.ap-avatar-container .social-symbol-wrapper.facebook,.ap-avatar-container .social-symbol-wrapper.twitter,.ap-avatar-container .social-symbol-wrapper.youtube,.ap-avatar-container .social-symbol-wrapper.tiktok,.ap-avatar-container .social-symbol-wrapper,.ap-avatar-container .social-symbol-wrapper pinterest{border-radius:100%}.ap-avatar-container .social-symbol-wrapper.instagram{border-radius:28%}.ap-avatar-container .social-symbol-wrapper.linkedin{border-radius:6%}.ap-avatar-container .social-symbol-wrapper.google{box-shadow:none;right:-3px;bottom:-3px}.ap-avatar-container .social-symbol-wrapper.google ap-symbol{border-radius:0;background-color:transparent}.ap-avatar-container .social-symbol-wrapper ap-symbol{border-radius:100%;background-color:#fff}.ap-avatar-container .social-symbol-wrapper ap-symbol ::ng-deep svg{display:block}.ap-avatar-container .online-indicator{box-shadow:none;background:#45B854;right:0;bottom:0;position:absolute}.ap-avatar-container .online-indicator.large{outline:5px solid white;border-radius:16px;min-height:16px;min-width:16px}.ap-avatar-container .online-indicator.normal{outline:4px solid white;border-radius:12px;min-height:12px;min-width:12px}.ap-avatar-container .online-indicator.medium,.ap-avatar-container .online-indicator.medium-sm,.ap-avatar-container .online-indicator.small{outline:3px solid white;border-radius:8px;min-height:8px;min-width:8px}.ap-avatar-container .online-indicator.mini,.ap-avatar-container .online-indicator.mini-sm{outline:2px solid white;border-radius:6px;min-height:6px;min-width:6px}.ap-avatar-container .online-indicator.micro{outline:1px solid white;border-radius:4px;min-height:4px;min-width:4px}\n"] }]
125
- }], ctorParameters: function () { return [{ type: i1.SymbolRegistry }]; }, propDecorators: { border: [{
126
- type: Input
127
- }], defaultImageEnabled: [{
187
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-avatar', standalone: true, imports: [NgIf, NgForOf, NgOptimizedImage, SymbolComponent, LetModule], 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 } as avatarViewModel\">\n <img\n *ngIf=\"avatarViewModel.displayProfilePicture\"\n [ngSrc]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n <div *ngIf=\"avatarViewModel.displaySingleNeutralSvg\" class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\"></ap-symbol>\n </div>\n\n <div *ngIf=\"avatarViewModel.displayAnonymous\" class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\"></ap-symbol>\n </div>\n <div *ngIf=\"avatarViewModel.displayOnline\" class=\"online\"></div>\n <div\n *ngIf=\"avatarViewModel.displayNetwork\"\n class=\"network\"\n [class.facebook]=\"avatarViewModel.network === 'facebook'\"\n [class.linkedin]=\"avatarViewModel.network === 'linkedin'\"\n [class.twitter]=\"avatarViewModel.network === 'twitter'\"\n [class.youtube]=\"avatarViewModel.network === 'youtube'\"\n [class.googleMyBusiness]=\"avatarViewModel.network === 'googleMyBusiness'\"\n [class.instagram]=\"avatarViewModel.network === 'instagram'\"\n [class.tiktok]=\"avatarViewModel.network === 'tiktok'\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\"></ap-symbol>\n </div>\n\n <div *ngIf=\"avatarViewModel.displayInitials\" class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\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}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 img{overflow:hidden;border-radius:var(--sys-border-radius-sm);border:1px solid var(--ref-color-grey-10);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 .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-20)}ap-avatar .network.facebook,ap-avatar .network.twitter,ap-avatar .network.youtube,ap-avatar .network.tiktok,ap-avatar .network,ap-avatar .network pinterest{border-radius:100%}ap-avatar .network.instagram{border-radius:28%}ap-avatar .network.linkedin{border-radius:6%}ap-avatar .network.googleMyBusiness{box-shadow:none}ap-avatar .network ap-symbol img{border-radius:0;border:none}\n"] }]
188
+ }], ctorParameters: function () { return [{ type: i1.SymbolRegistry }, { type: i0.ElementRef }]; }, propDecorators: { alternativeText: [{
128
189
  type: Input
129
- }], fallbackSymbolId: [{
190
+ }], anonymous: [{
130
191
  type: Input
131
- }], fallbackSymbolSize: [{
192
+ }], username: [{
132
193
  type: Input
133
- }], imageUrl: [{
194
+ }], network: [{
134
195
  type: Input
135
- }], loading: [{
196
+ }], online: [{
136
197
  type: Input
137
- }], outerBorderHidden: [{
198
+ }], profilePicture: [{
138
199
  type: Input
139
- }], size: [{
200
+ }], showInitials: [{
140
201
  type: Input
141
- }], social: [{
142
- type: Input
143
- }], username: [{
202
+ }], alt: [{
144
203
  type: Input
204
+ }], roundedAvatar: [{
205
+ type: HostBinding,
206
+ args: ['class.rounded-avatar']
145
207
  }], rounded: [{
146
208
  type: Input
147
- }], online: [{
148
- type: Input
149
- }], imageUrls: [{
209
+ }], size: [{
150
210
  type: Input
151
211
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hdmF0YXIvc3JjL2F2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYXZhdGFyL3NyYy9hdmF0YXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsZUFBZSxHQUVsQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUEyQixNQUFNLGVBQWUsQ0FBQzs7O0FBRWxHLE1BQU0sT0FBTyxHQUE0QjtJQUNyQyxPQUFPLEVBQUUsSUFBSTtJQUNiLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLElBQUk7SUFDZCxXQUFXLEVBQUUsSUFBSTtJQUNqQixPQUFPLEVBQUUsSUFBSTtJQUNiLE1BQU0sRUFBRSxJQUFJO0lBQ1osU0FBUyxFQUFFLElBQUk7SUFDZixPQUFPLEVBQUUsSUFBSTtJQUNiLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxRQUFRLEVBQUUsSUFBSTtJQUNkLFNBQVMsRUFBRSxJQUFJO0NBQ2xCLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBNEI7SUFDNUMsS0FBSyxFQUFFLEVBQUU7SUFD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QUFVLEdBQUcsR0FBRyxDQUFDO3dCQUN0QixNQUFNO29CQUNWO3dCQUNJLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUM5QjthQUNKO1NBQ0o7UUFDRCxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFO1lBQ3pFLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQztTQUNsRTtJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQzs7NEdBNUVRLGVBQWU7Z0dBQWYsZUFBZSwwYkN6RTVCLDQ3R0ErRUEsMmtURFRjLElBQUksd0ZBQUUsU0FBUyw4Q0FBRSxlQUFlLGdIQUFFLE9BQU87MkZBRzFDLGVBQWU7a0JBUjNCLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxXQUFXLGNBRVQsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDO3FHQUkzQyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGFnb3JhcHVsc2VTeW1ib2wsXG4gICAgYXBGYWNlYm9va09mZmljaWFsLFxuICAgIGFwR29vZ2xlTXlCdXNpbmVzc09mZmljaWFsLFxuICAgIGFwTGlua2VkaW5PZmZpY2lhbCxcbiAgICBhcFNpbmdsZU5ldXRyYWwsXG4gICAgYXBUaWt0b2tPZmZpY2lhbCxcbiAgICBhcFR3aXR0ZXJPZmZpY2lhbCxcbiAgICBhcFlvdXR1YmVPZmZpY2lhbCxcbiAgICBhcFBpbnRlcmVzdE9mZmljaWFsLFxuICAgIFN5bWJvbENvbXBvbmVudCxcbiAgICBTeW1ib2xSZWdpc3RyeSxcbn0gZnJvbSAnQGFnb3JhcHVsc2UvdWktc3ltYm9sJztcbmltcG9ydCB7TmdGb3JPZiwgTmdJZiwgU2xpY2VQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgU2l6ZU1hcDoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7XG4gICAgJ2xhcmdlJzogJzY0JyxcbiAgICAnbGFyZ2Utc20nOiAnNTYnLFxuICAgICdub3JtYWwnOiAnNDgnLFxuICAgICdtZWRpdW0nOiAnNDAnLFxuICAgICdtZWRpdW0tc20nOiAnMzYnLFxuICAgICdzbWFsbCc6ICczMicsXG4gICAgJ21pbmknOiAnMjQnLFxuICAgICdtaW5pLXNtJzogJzE2JyxcbiAgICAnbWljcm8nOiAnMTInLFxuICAgICdmYWNlYm9vayc6ICc0MCcsXG4gICAgJ2xpbmtlZGluJzogJzQwJyxcbiAgICAnaW5zdGFncmFtJzogJzQwJyxcbiAgICAneW91dHViZSc6ICc0MCcsXG4gICAgJ2dvb2dsZSc6ICc0MCcsXG4gICAgJ3Rpa3Rvayc6ICc1NicsXG4gICAgJ3R3aXR0ZXInOiAnNDgnXG59O1xuXG5jb25zdCBTaXplTWFwTnVtYmVyczoge1trZXk6IHN0cmluZ106IG51bWJlcn0gPSB7XG4gICAgbGFyZ2U6IDY0LFxuICAgICdsYXJnZS1zbSc6IDU2LFxuICAgIG5vcm1hbDogNDgsXG4gICAgbWVkaXVtOiA0MCxcbiAgICAnbWVkaXVtLXNtJzogMzYsXG4gICAgc21hbGw6IDMyLFxuICAgIG1pbmk6IDI0LFxuICAgICdtaW5pLXNtJzogMTYsXG4gICAgbWljcm86IDEyLFxuICAgIGZhY2Vib29rOiA0MCxcbiAgICBsaW5rZWRpbjogNDAsXG4gICAgaW5zdGFncmFtOiA0MCxcbiAgICB5b3V0dWJlOiA0MCxcbiAgICBnb29nbGU6IDQwLFxuICAgIHRpa3RvazogNTYsXG4gICAgdHdpdHRlcjogNDgsXG59O1xuXG5jb25zdCBTeW1ib2xTaXplQnlBdmF0YXJTaXplOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHtcbiAgICBsYXJnZTogJ3NtYWxsJyxcbiAgICBub3JtYWw6ICdtaW5pJyxcbiAgICBtZWRpdW06ICdtaW5pJyxcbiAgICAnbWVkaXVtLXNtJzogJ21pbmktc20nLFxuICAgIHNtYWxsOiAnbWljcm8nLFxuICAgIG1pbmk6ICdtaWNyby1zbScsXG4gICAgJ21pbmktc20nOiAncGljbycsXG4gICAgbWljcm86ICdwaWNvJyxcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtYXZhdGFyJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBTbGljZVBpcGUsIFN5bWJvbENvbXBvbmVudCwgTmdGb3JPZl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgYm9yZGVyID0gJyc7XG4gICAgQElucHV0KCkgZGVmYXVsdEltYWdlRW5hYmxlZCA9IHRydWU7IC8vIERFUFJFQ0FURUQgZGVmYXVsdCBhdmF0YXIgaWYgd2UgZG9uJ3QgaGF2ZSB1c2VybmFtZVxuICAgIEBJbnB1dCgpIGZhbGxiYWNrU3ltYm9sSWQ6IGFnb3JhcHVsc2VTeW1ib2wgPSAnc2luZ2xlLW5ldXRyYWwnO1xuICAgIEBJbnB1dCgpIGZhbGxiYWNrU3ltYm9sU2l6ZTogc3RyaW5nIHwgJ25vbmUnIHwgJ3BpY28nIHwgJ25hbm8nIHwgJ21pY3JvJyB8ICdtaW5pJyB8ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdub3JtYWwnIHwgJ2xhcmdlJyA9ICdtaW5pJztcbiAgICBASW5wdXQoKSBpbWFnZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGxvYWRpbmc6ICdhdXRvJyB8ICdsYXp5JyB8ICdlYWdlcicgPSAnYXV0byc7XG4gICAgQElucHV0KCkgb3V0ZXJCb3JkZXJIaWRkZW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaXplOlxuICAgICAgICAnbGFyZ2UnIHwgJ2xhcmdlLW5vcm1hbCcgfCAnbGFyZ2Utc20nIHwgJ25vcm1hbCd8ICdtZWRpdW0nIHwgJ21lZGl1bS1zbScgIHwgJ3NtYWxsJyB8ICdtaW5pJyB8ICdtaW5pLXNtJyB8ICdtaWNybycgfFxuICAgICAgICAnZmFjZWJvb2snIHwgJ3R3aXR0ZXInIHwgJ2xpbmtlZGluJyB8ICdpbnN0YWdyYW0nIHwgJ3lvdXR1YmUnIHwgJ2dvb2dsZScgPSAnbWVkaXVtJztcbiAgICBASW5wdXQoKSBzb2NpYWw6ICdmYWNlYm9vaycgfCAnaW5zdGFncmFtJyB8ICdsaW5rZWRpbicgfCAndGlrdG9rJyB8ICd0d2l0dGVyJyB8ICd5b3V0dWJlJyB8ICdnb29nbGUnIHwgJ3BpbnRlcmVzdCc7XG4gICAgQElucHV0KCkgdXNlcm5hbWU6IHN0cmluZzsgLy8gdXNlZCB0byBkaXNwbGF5IGluaXRpYWxzXG4gICAgQElucHV0KCkgcm91bmRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG9ubGluZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGltYWdlVXJsczogc3RyaW5nW107XG5cbiAgICBzb2NpYWxTaXplOiBzdHJpbmc7XG4gICAgc29jaWFsTG9nbzogYWdvcmFwdWxzZVN5bWJvbDtcbiAgICBzaXplTWFwID0gU2l6ZU1hcDtcbiAgICBzaXplTWFwTnVtYmVycyA9IFNpemVNYXBOdW1iZXJzO1xuICAgIHN5bWJvbFNpemVCeUF2YXRhclNpemUgPSBTeW1ib2xTaXplQnlBdmF0YXJTaXplO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzeW1ib2xSZWdpc3RyeTogU3ltYm9sUmVnaXN0cnkpIHtcbiAgICAgICAgdGhpcy5zeW1ib2xSZWdpc3RyeS5yZWdpc3RlclN5bWJvbHMoW1xuICAgICAgICAgICAgYXBTaW5nbGVOZXV0cmFsLFxuICAgICAgICAgICAgYXBGYWNlYm9va09mZmljaWFsLFxuICAgICAgICAgICAgYXBUd2l0dGVyT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFlvdXR1YmVPZmZpY2lhbCxcbiAgICAgICAgICAgIGFwVGlrdG9rT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcExpbmtlZGluT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcEdvb2dsZU15QnVzaW5lc3NPZmZpY2lhbCxcbiAgICAgICAgICAgIGFwUGludGVyZXN0T2ZmaWNpYWxcbiAgICAgICAgXSlcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnNvY2lhbD8uY3VycmVudFZhbHVlIHx8IGNoYW5nZXMuc2l6ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zb2NpYWwpIHtcbiAgICAgICAgICAgICAgIHRoaXMuc29jaWFsTG9nbyA9IHRoaXMuc29jaWFsID09PSAnZ29vZ2xlJyA/ICdnb29nbGUtbXktYnVzaW5lc3Mtb2ZmaWNpYWwnIDogYCR7dGhpcy5zb2NpYWx9LW9mZmljaWFsYCBhcyBhZ29yYXB1bHNlU3ltYm9sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc29jaWFsID09PSAnZ29vZ2xlJykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lZGl1bS1zbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvY2lhbFNpemUgPSAnMTQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ21pbmknOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb2NpYWxTaXplID0gJzE1JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdtaW5pLXNtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29jaWFsU2l6ZSA9ICcxMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29jaWFsU2l6ZSA9ICcxOSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdtZWRpdW0tc20nOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdtaW5pJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29jaWFsU2l6ZSA9ICcxMic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWluaS1zbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvY2lhbFNpemUgPSAnOCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29jaWFsU2l6ZSA9ICcxNic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmRlZmF1bHRJbWFnZUVuYWJsZWQgJiYgY2hhbmdlcy5kZWZhdWx0SW1hZ2VFbmFibGVkLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiJ2RlZmF1bHRJbWFnZUVuYWJsZWQnIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkLlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRXJyb3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2VVcmwgPSBudWxsO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcC1hdmF0YXItY29udGFpbmVyIHt7c2l6ZX19XCJcbiAgICBbc3R5bGUud2lkdGhdPVwiaW1hZ2VVcmxzID8gKGltYWdlVXJscy5sZW5ndGggPCA0ID8gc2l6ZU1hcE51bWJlcnNbc2l6ZV0gKiAoaW1hZ2VVcmxzLmxlbmd0aCAvIDMgKyAxKSArICdweCcgOiBzaXplTWFwTnVtYmVyc1tzaXplXSAqIDEuNSArICdweCcpIDogc2l6ZU1hcE51bWJlcnNbc2l6ZV0gKyAncHgnXCI+XG4gICAgPCEtLSBzaW1wbGUgYXZhdGFyIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJpbWFnZVVybCB8fCBpbWFnZVVybHM7IGVsc2Ugbm9QaWN0dXJlXCI+XG4gICAgICAgIDxpbWcgKm5nSWY9XCJpbWFnZVVybCAmJiAhaW1hZ2VVcmxzXCJcbiAgICAgICAgICAgICBjbGFzcz1cImFwLWF2YXRhciB7e3NpemV9fVwiXG4gICAgICAgICAgICAgW2NsYXNzLm91dGVyLWJvcmRlcl09XCIhb3V0ZXJCb3JkZXJIaWRkZW5cIlxuICAgICAgICAgICAgIFtjbGFzcy5yb3VuZGVkXT1cInJvdW5kZWRcIlxuICAgICAgICAgICAgIFthdHRyLmJvcmRlcl09XCJib3JkZXJcIlxuICAgICAgICAgICAgIFthdHRyLmxvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cInNpemVNYXBbc2l6ZV1cIlxuICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cInNpemVNYXBbc2l6ZV1cIlxuICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmxcIlxuICAgICAgICAgICAgIChlcnJvcik9XCJvbkVycm9yKClcIi8+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbWFnZVVybHMgJiYgIWltYWdlVXJsXCJcbiAgICAgICAgICAgIGNsYXNzPVwibXVsdGktYXZhdGFyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdXJsIG9mIGltYWdlVXJscyB8IHNsaWNlOiAwOjM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwidXJsXCIgY2xhc3M9XCJhcC1hdmF0YXIge3tzaXplfX0gbXVsdGlcIlxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm91dGVyLWJvcmRlcl09XCIhb3V0ZXJCb3JkZXJIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnJvdW5kZWRdPVwicm91bmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbc3R5bGUuei1pbmRleF09XCJpXCJcbiAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIjIgKiBpICogc2l6ZU1hcE51bWJlcnNbc2l6ZV0gLyAzICsgJ3B4J1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5ib3JkZXJdPVwiYm9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgIFthdHRyLmxvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwic2l6ZU1hcFtzaXplXVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJzaXplTWFwW3NpemVdXCJcbiAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkVycm9yKClcIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdXJsXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hdmF0YXIgYXAtYXZhdGFyLXVzZXJuYW1lIHt7c2l6ZX19IG11bHRpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnotaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIjIgKiBpICogc2l6ZU1hcE51bWJlcnNbc2l6ZV0gLyAzICsgJ3B4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5vdXRlci1ib3JkZXJdPVwiIW91dGVyQm9yZGVySGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnJvdW5kZWRdPVwicm91bmRlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmJvcmRlcl09XCJib3JkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXJuYW1lOyBlbHNlIHN5bWJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t1c2VybmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3N5bWJvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJmYWxsYmFja1N5bWJvbFNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzeW1ib2xJZF09XCJmYWxsYmFja1N5bWJvbElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwLXN5bWJvbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBpbWFnZSB3aXRoIGZpcnN0IGxldHRlciBvZiBzY3JlZW4gbmFtZSAtLT5cbiAgICA8bmctdGVtcGxhdGUgI25vUGljdHVyZT5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hdmF0YXIgYXAtYXZhdGFyLXVzZXJuYW1lIHt7c2l6ZX19XCJcbiAgICAgICAgICAgICAgW2NsYXNzLm91dGVyLWJvcmRlcl09XCIhb3V0ZXJCb3JkZXJIaWRkZW5cIlxuICAgICAgICAgICAgICBbY2xhc3Mucm91bmRlZF09XCJyb3VuZGVkXCJcbiAgICAgICAgICAgICAgW2F0dHIuYm9yZGVyXT1cImJvcmRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXJuYW1lOyBlbHNlIHN5bWJvbFwiPlxuICAgICAgICAgICAgICAgIHt7dXNlcm5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3N5bWJvbD5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cInN5bWJvbFNpemVCeUF2YXRhclNpemVbc2l6ZV0gPz8gZmFsbGJhY2tTeW1ib2xTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3N5bWJvbElkXT1cImZhbGxiYWNrU3ltYm9sSWRcIj5cbiAgICAgICAgICAgICAgICA8L2FwLXN5bWJvbD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiAgKm5nSWY9XCJzb2NpYWxcIlxuICAgICAgICAgIGNsYXNzPVwic29jaWFsLXN5bWJvbC13cmFwcGVyIHt7c29jaWFsfX0ge3tzaXplfX1cIj5cbiAgICAgICAgPGFwLXN5bWJvbCBbc3ltYm9sSWRdPVwic29jaWFsTG9nb1wiXG4gICAgICAgICAgICAgICAgICAgW3NpemVdPVwic29jaWFsU2l6ZVwiPlxuICAgICAgICA8L2FwLXN5bWJvbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwib25saW5lXCIgY2xhc3M9XCJvbmxpbmUtaW5kaWNhdG9yIHt7c2l6ZX19XCI+PC9kaXY+XG5cbjwvZGl2PlxuPGxhYmVsPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbGFiZWw+XG4iXX0=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hdmF0YXIvc3JjL2F2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYXZhdGFyL3NyYy9hdmF0YXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGVBQWUsR0FFbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBRUwsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQWExQyxNQUFNLDBCQUEwQixHQUErQjtJQUMzRCxFQUFFLEVBQUUsRUFBRTtJQUNOLEVBQUUsRUFBRSxFQUFFO0lBQ04sRUFBRSxFQUFFLEVBQUU7SUFDTixFQUFFLEVBQUUsQ0FBQztJQUNMLEVBQUUsRUFBRSxDQUFDO0lBQ0wsRUFBRSxFQUFFLENBQUM7SUFDTCxFQUFFLEVBQUUsQ0FBQztDQUNSLENBQUM7QUFFRixNQUFNLHNCQUFzQixHQUErQjtJQUN2RCxFQUFFLEVBQUUsRUFBRTtJQUNOLEVBQUUsRUFBRSxFQUFFO0lB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SUFBSTs4SEF5QnhCLGVBQWU7c0JBQTNCLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFJTyxRQUFRO3NCQUFwQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBUU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxjQUFjO3NCQUExQixLQUFLO2dCQUtPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBR0csR0FBRztzQkFBWCxLQUFLO2dCQUdOLGFBQWE7c0JBRFosV0FBVzt1QkFBQyxzQkFBc0I7Z0JBSS9CLE9BQU87c0JBRFYsS0FBSztnQkFNTyxJQUFJO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBhcEZhY2Vib29rT2ZmaWNpYWwsXG4gICAgYXBHb29nbGVNeUJ1c2luZXNzT2ZmaWNpYWwsXG4gICAgYXBMaW5rZWRpbk9mZmljaWFsLFxuICAgIGFwU2hvd1RoZWF0ZXJNYXNrSGFwcHksXG4gICAgYXBTaW5nbGVOZXV0cmFsLFxuICAgIGFwVGlrdG9rT2ZmaWNpYWwsXG4gICAgYXBUd2l0dGVyT2ZmaWNpYWwsXG4gICAgYXBZb3V0dWJlT2ZmaWNpYWwsXG4gICAgYXBQaW50ZXJlc3RPZmZpY2lhbCxcbiAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgU3ltYm9sUmVnaXN0cnksXG59IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQge05nRm9yT2YsIE5nSWYsIE5nT3B0aW1pemVkSW1hZ2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xldE1vZHVsZX0gZnJvbSAnQG5ncngvY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQXZhdGFyU2l6ZSA9IDU2IHwgNDggfCA0MCB8IDM2IHwgMzIgfCAyNCB8IDE2O1xuZXhwb3J0IHR5cGUgQXZhdGFyTmV0d29yayA9XG4gICAgfCAnZmFjZWJvb2snXG4gICAgfCAnaW5zdGFncmFtJ1xuICAgIHwgJ3R3aXR0ZXInXG4gICAgfCAnbGlua2VkaW4nXG4gICAgfCAndGlrdG9rJ1xuICAgIHwgJ3lvdXR1YmUnXG4gICAgfCAncGludGVyZXN0J1xuICAgIHwgJ2dvb2dsZU15QnVzaW5lc3MnO1xuXG5jb25zdCBvbmxpbmVJY29uU2l6ZUJ5QXZhdGFyU2l6ZTogUmVjb3JkPEF2YXRhclNpemUsIG51bWJlcj4gPSB7XG4gICAgNTY6IDE2LFxuICAgIDQ4OiAxMixcbiAgICA0MDogMTIsXG4gICAgMzY6IDgsXG4gICAgMzI6IDgsXG4gICAgMjQ6IDYsXG4gICAgMTY6IDYsXG59O1xuXG5jb25zdCBzeW1ib2xTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMjgsXG4gICAgNDg6IDI0LFxuICAgIDQwOiAyMCxcbiAgICAzNjogMTgsXG4gICAgMzI6IDE2LFxuICAgIDI0OiAxMixcbiAgICAxNjogOCxcbn07XG5cbmNvbnN0IG5ldHdvcmtTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMTYsXG4gICAgNDg6IDE2LFxuICAgIDQwOiAxNixcbiAgICAzNjogMTYsXG4gICAgMzI6IDEyLFxuICAgIDI0OiAxMixcbiAgICAxNjogOCxcbn07XG5cbmNvbnN0IGluaXRpYWxTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMjgsXG4gICAgNDg6IDI0LFxuICAgIDQwOiAyMixcbiAgICAzNjogMTgsXG4gICAgMzI6IDE4LFxuICAgIDI0OiAxNCxcbiAgICAxNjogMTAsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2FwLWF2YXRhcicsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdGb3JPZiwgTmdPcHRpbWl6ZWRJbWFnZSwgU3ltYm9sQ29tcG9uZW50LCBMZXRNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgbmV0d29ya1N5bWJvbEJ5TmV0d29yazogUmVjb3JkPEF2YXRhck5ldHdvcmssIHN0cmluZz4gPSB7XG4gICAgICAgIGZhY2Vib29rOiAnZmFjZWJvb2stb2ZmaWNpYWwnLFxuICAgICAgICBpbnN0YWdyYW06ICdpbnN0YWdyYW0tb2ZmaWNpYWwnLFxuICAgICAgICB0d2l0dGVyOiAndHdpdHRlci1vZmZpY2lhbCcsXG4gICAgICAgIGxpbmtlZGluOiAnbGlua2VkaW4tb2ZmaWNpYWwnLFxuICAgICAgICB0aWt0b2s6ICd0aWt0b2stb2ZmaWNpYWwnLFxuICAgICAgICB5b3V0dWJlOiAneW91dHViZS1vZmZpY2lhbCcsXG4gICAgICAgIHBpbnRlcmVzdDogJ3BpbnRlcmVzdC1vZmZpY2lhbCcsXG4gICAgICAgIGdvb2dsZU15QnVzaW5lc3M6ICdnb29nbGUtbXktYnVzaW5lc3Mtb2ZmaWNpYWwnLFxuICAgIH07XG5cbiAgICBzaXplJDogQmVoYXZpb3JTdWJqZWN0PEF2YXRhclNpemU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdmF0YXJTaXplPig0MCk7XG4gICAgcHJvZmlsZVBpY3R1cmUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgbmV0d29yayQ6IEJlaGF2aW9yU3ViamVjdDxBdmF0YXJOZXR3b3JrPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXZhdGFyTmV0d29yaz4oJ2ZhY2Vib29rJyk7XG5cbiAgICBwcml2YXRlIGFsdGVybmF0aXZlVGV4dCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIGFub255bW91cyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgdXNlcm5hbWUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcHJpdmF0ZSBvbmxpbmUkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIHNob3dJbml0aWFscyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgcm91bmRlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgQElucHV0KCkgc2V0IGFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFsdGVybmF0aXZlVGV4dCQubmV4dChhbHRlcm5hdGl2ZVRleHQpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBhbm9ueW1vdXMoYW5vbnltb3VzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuYW5vbnltb3VzJC5uZXh0KGFub255bW91cyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHVzZXJuYW1lKHVzZXJuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51c2VybmFtZSQubmV4dCh1c2VybmFtZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG5ldHdvcmsobmV0d29yazogQXZhdGFyTmV0d29yaykge1xuICAgICAgICB0aGlzLm5ldHdvcmskLm5leHQobmV0d29yayk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgJy0tYXAtYXZhdGFyLW5ldHdvcmstc2l6ZScsXG4gICAgICAgICAgICBgJHtuZXR3b3JrU2l6ZUJ5QXZhdGFyU2l6ZVt0aGlzLnNpemUkLnZhbHVlXX1weGBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgb25saW5lKG9ubGluZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLm9ubGluZSQubmV4dChvbmxpbmUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBwcm9maWxlUGljdHVyZShwcm9maWxlUGljdHVyZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucHJvZmlsZVBpY3R1cmUkLm5leHQocHJvZmlsZVBpY3R1cmUpO1xuICAgICAgICB0aGlzLmltYWdlRXJyb3IkLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzaG93SW5pdGlhbHMoc2hvd0luaXRpYWxzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2hvd0luaXRpYWxzJC5uZXh0KHNob3dJbml0aWFscyk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGFsdDogc3RyaW5nO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yb3VuZGVkLWF2YXRhcicpXG4gICAgcm91bmRlZEF2YXRhcjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHJvdW5kZWQocm91bmRlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnJvdW5kZWRBdmF0YXIgPSByb3VuZGVkO1xuICAgICAgICB0aGlzLnJvdW5kZWQkLm5leHQocm91bmRlZCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNpemUoc2l6ZTogQXZhdGFyU2l6ZSkge1xuICAgICAgICB0aGlzLnNpemUkLm5leHQoc2l6ZSk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFwLWF2YXRhci1zaXplJywgYCR7c2l6ZX1weGApO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1hcC1hdmF0YXItc3ltYm9sLXNpemUnLCBgJHtzeW1ib2xTaXplQnlBdmF0YXJTaXplW3NpemVdfXB4YCk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgJy0tYXAtYXZhdGFyLW9ubGluZS1pY29uLXNpemUnLFxuICAgICAgICAgICAgYCR7b25saW5lSWNvblNpemVCeUF2YXRhclNpemVbc2l6ZV19cHhgXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGlzcGxheVByb2ZpbGVQaWN0dXJlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheVNpbmdsZU5ldXRyYWxTdmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKTtcbiAgICBkaXNwbGF5SW5pdGlhbHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKTtcbiAgICBkaXNwbGF5QW5vbnltb3VzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheU5ldHdvcmskOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKTtcbiAgICBkaXNwbGF5T25saW5lJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgaW1hZ2VFcnJvciQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIGluaXRpYWxzJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gbmV3IE9ic2VydmFibGU8c3RyaW5nPigpO1xuICAgIGluaXRpYWxzQXZhaWxhYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG9mKGZhbHNlKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ltYm9sUmVnaXN0cnk6IFN5bWJvbFJlZ2lzdHJ5LCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5zeW1ib2xSZWdpc3RyeS5yZWdpc3RlclN5bWJvbHMoW1xuICAgICAgICAgICAgYXBTaW5nbGVOZXV0cmFsLFxuICAgICAgICAgICAgYXBTaG93VGhlYXRlck1hc2tIYXBweSxcbiAgICAgICAgICAgIGFwRmFjZWJvb2tPZmZpY2lhbCxcbiAgICAgICAgICAgIGFwVHdpdHRlck9mZmljaWFsLFxuICAgICAgICAgICAgYXBMaW5rZWRpbk9mZmljaWFsLFxuICAgICAgICAgICAgYXBZb3V0dWJlT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFRpa3Rva09mZmljaWFsLFxuICAgICAgICAgICAgYXBHb29nbGVNeUJ1c2luZXNzT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFBpbnRlcmVzdE9mZmljaWFsLFxuICAgICAgICBdKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXAtYXZhdGFyLXNpemUnLCBgNDBweGApO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICctLWFwLWF2YXRhci1zeW1ib2wtc2l6ZScsXG4gICAgICAgICAgICBgJHtzeW1ib2xTaXplQnlBdmF0YXJTaXplW3RoaXMuc2l6ZSQudmFsdWVdfXB4YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxzQXZhaWxhYmxlJCA9IHRoaXMudXNlcm5hbWUkLnBpcGUoXG4gICAgICAgICAgICBtYXAodXNlcm5hbWUgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIXVzZXJuYW1lO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlQcm9maWxlUGljdHVyZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZVBpY3R1cmUkLFxuICAgICAgICAgICAgdGhpcy5hbm9ueW1vdXMkLFxuICAgICAgICAgICAgdGhpcy5pbWFnZUVycm9yJCxcbiAgICAgICAgICAgIHRoaXMuc2hvd0luaXRpYWxzJCxcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Byb2ZpbGVQaWN0dXJlLCBhbm9ueW1vdXMsIGltYWdlRXJyb3JdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhcHJvZmlsZVBpY3R1cmUgJiYgIWFub255bW91cyAmJiAhaW1hZ2VFcnJvcjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5SW5pdGlhbHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnNob3dJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmFub255bW91cyQsXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxzQXZhaWxhYmxlJCxcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVByb2ZpbGVQaWN0dXJlJCxcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Nob3dJbml0aWFscywgYW5vbnltb3VzLCBpbml0aWFsc0F2YWlsYWJsZSwgZGlzcGxheVByb2ZpbGVQaWN0dXJlXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzaG93SW5pdGlhbHMgJiYgIWFub255bW91cyAmJiBpbml0aWFsc0F2YWlsYWJsZSAmJiAhZGlzcGxheVByb2ZpbGVQaWN0dXJlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5wcm9maWxlUGljdHVyZSQsXG4gICAgICAgICAgICB0aGlzLmltYWdlRXJyb3IkLFxuICAgICAgICAgICAgdGhpcy5pbml0aWFsc0F2YWlsYWJsZSQsXG4gICAgICAgICAgICB0aGlzLnNob3dJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmFub255bW91cyQsXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcm9maWxlUGljdHVyZSQsXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKFtcbiAgICAgICAgICAgICAgICAgICAgcHJvZmlsZVBpY3R1cmUsXG4gICAgICAgICAgICAgICAgICAgIGltYWdlRXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxzQXZhaWxhYmxlLFxuICAgICAgICAgICAgICAgICAgICBzaG93SW5pdGlhbHMsXG4gICAgICAgICAgICAgICAgICAgIGFub255bW91cyxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUluaXRpYWxzLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5UHJvZmlsZVBpY3R1cmUsXG4gICAgICAgICAgICAgICAgXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgKCFwcm9maWxlUGljdHVyZSB8fCBpbWFnZUVycm9yIHx8ICFpbml0aWFsc0F2YWlsYWJsZSB8fCAoaW5pdGlhbHNBdmFpbGFibGUgJiYgIXNob3dJbml0aWFscykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhYW5vbnltb3VzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhZGlzcGxheUluaXRpYWxzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhZGlzcGxheVByb2ZpbGVQaWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheUFub255bW91cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFub255bW91cyQsIHRoaXMucm91bmRlZCRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbYW5vbnltb3VzLCByb3VuZGVkXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBhbm9ueW1vdXMgJiYgcm91bmRlZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5T25saW5lJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub25saW5lJCwgdGhpcy5yb3VuZGVkJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtvbmxpbmUsIHJvdW5kZWRdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ubGluZSAmJiByb3VuZGVkO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlOZXR3b3JrJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubmV0d29yayQsIHRoaXMucm91bmRlZCRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbbmV0d29yaywgcm91bmRlZF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFuZXR3b3JrICYmIHJvdW5kZWQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbHMkID0gY29tYmluZUxhdGVzdChbdGhpcy5kaXNwbGF5SW5pdGlhbHMkLCB0aGlzLnVzZXJuYW1lJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtkaXNwbGF5SW5pdGlhbHMsIHVzZXJuYW1lXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkaXNwbGF5SW5pdGlhbHMgJiYgIXVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgICAgICctLWFwLWF2YXRhci1pbml0aWFscy1zaXplJyxcbiAgICAgICAgICAgICAgICAgICAgYCR7aW5pdGlhbFNpemVCeUF2YXRhclNpemVbdGhpcy5zaXplJC52YWx1ZV19cHhgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lcyA9IHVzZXJuYW1lLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZXNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtuYW1lc1swXS5jaGFyQXQoMSkudG9VcHBlckNhc2UoKX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZXNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtuYW1lc1tuYW1lcy5sZW5ndGggLSAxXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX1gO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkltYWdlRXJyb3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2VFcnJvciQubmV4dCh0cnVlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICAgKm5ncnhMZXQ9XCJ7XG4gICAgICAgIGRpc3BsYXlQcm9maWxlUGljdHVyZTogZGlzcGxheVByb2ZpbGVQaWN0dXJlJCxcbiAgICAgICAgZGlzcGxheVNpbmdsZU5ldXRyYWxTdmc6IGRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnJCxcbiAgICAgICAgZGlzcGxheUluaXRpYWxzOiBkaXNwbGF5SW5pdGlhbHMkLFxuICAgICAgICBkaXNwbGF5QW5vbnltb3VzOiBkaXNwbGF5QW5vbnltb3VzJCxcbiAgICAgICAgZGlzcGxheU9ubGluZTogZGlzcGxheU9ubGluZSQsXG4gICAgICAgIGRpc3BsYXlOZXR3b3JrOiBkaXNwbGF5TmV0d29yayQsXG4gICAgICAgIGluaXRpYWxzOiBpbml0aWFscyQsXG4gICAgICAgIHByb2ZpbGVQaWN0dXJlOiBwcm9maWxlUGljdHVyZSQsXG4gICAgICAgIHNpemU6IHNpemUkLFxuICAgICAgICBuZXR3b3JrOiBuZXR3b3JrJFxuICAgIH0gYXMgYXZhdGFyVmlld01vZGVsXCI+XG4gICAgPGltZ1xuICAgICAgICAqbmdJZj1cImF2YXRhclZpZXdNb2RlbC5kaXNwbGF5UHJvZmlsZVBpY3R1cmVcIlxuICAgICAgICBbbmdTcmNdPVwiYXZhdGFyVmlld01vZGVsLnByb2ZpbGVQaWN0dXJlXCJcbiAgICAgICAgW3dpZHRoXT1cImF2YXRhclZpZXdNb2RlbC5zaXplXCJcbiAgICAgICAgW2hlaWdodF09XCJhdmF0YXJWaWV3TW9kZWwuc2l6ZVwiXG4gICAgICAgIFthbHRdPVwiYWx0XCJcbiAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCIgLz5cbiAgICA8ZGl2ICpuZ0lmPVwiYXZhdGFyVmlld01vZGVsLmRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnXCIgY2xhc3M9XCJuby1wcm9maWxlLXBpY3R1cmVcIj5cbiAgICAgICAgPGFwLXN5bWJvbCBzeW1ib2xJZD1cInNpbmdsZS1uZXV0cmFsXCI+PC9hcC1zeW1ib2w+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiYXZhdGFyVmlld01vZGVsLmRpc3BsYXlBbm9ueW1vdXNcIiBjbGFzcz1cImFub255bW91c1wiPlxuICAgICAgICA8YXAtc3ltYm9sIHN5bWJvbElkPVwic2hvdy10aGVhdGVyLW1hc2staGFwcHlcIj48L2FwLXN5bWJvbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiYXZhdGFyVmlld01vZGVsLmRpc3BsYXlPbmxpbmVcIiBjbGFzcz1cIm9ubGluZVwiPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJhdmF0YXJWaWV3TW9kZWwuZGlzcGxheU5ldHdvcmtcIlxuICAgICAgICBjbGFzcz1cIm5ldHdvcmtcIlxuICAgICAgICBbY2xhc3MuZmFjZWJvb2tdPVwiYXZhdGFyVmlld01vZGVsLm5ldHdvcmsgPT09ICdmYWNlYm9vaydcIlxuICAgICAgICBbY2xhc3MubGlua2VkaW5dPVwiYXZhdGFyVmlld01vZGVsLm5ldHdvcmsgPT09ICdsaW5rZWRpbidcIlxuICAgICAgICBbY2xhc3MudHdpdHRlcl09XCJhdmF0YXJWaWV3TW9kZWwubmV0d29yayA9PT0gJ3R3aXR0ZXInXCJcbiAgICAgICAgW2NsYXNzLnlvdXR1YmVdPVwiYXZhdGFyVmlld01vZGVsLm5ldHdvcmsgPT09ICd5b3V0dWJlJ1wiXG4gICAgICAgIFtjbGFzcy5nb29nbGVNeUJ1c2luZXNzXT1cImF2YXRhclZpZXdNb2RlbC5uZXR3b3JrID09PSAnZ29vZ2xlTXlCdXNpbmVzcydcIlxuICAgICAgICBbY2xhc3MuaW5zdGFncmFtXT1cImF2YXRhclZpZXdNb2RlbC5uZXR3b3JrID09PSAnaW5zdGFncmFtJ1wiXG4gICAgICAgIFtjbGFzcy50aWt0b2tdPVwiYXZhdGFyVmlld01vZGVsLm5ldHdvcmsgPT09ICd0aWt0b2snXCI+XG4gICAgICAgIDxhcC1zeW1ib2wgW3N5bWJvbElkXT1cIm5ldHdvcmtTeW1ib2xCeU5ldHdvcmtbYXZhdGFyVmlld01vZGVsLm5ldHdvcmtdXCI+PC9hcC1zeW1ib2w+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiYXZhdGFyVmlld01vZGVsLmRpc3BsYXlJbml0aWFsc1wiIGNsYXNzPVwiaW5pdGlhbHNcIj5cbiAgICAgICAge3sgYXZhdGFyVmlld01vZGVsLmluaXRpYWxzIH19XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==