@skyux/indicators 11.31.0 → 12.0.0-alpha.0

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 (71) hide show
  1. package/documentation.json +878 -866
  2. package/fesm2022/skyux-indicators.mjs +120 -115
  3. package/fesm2022/skyux-indicators.mjs.map +1 -1
  4. package/package.json +13 -17
  5. package/esm2022/index.mjs +0 -38
  6. package/esm2022/lib/modules/alert/alert.component.mjs +0 -133
  7. package/esm2022/lib/modules/alert/alert.module.mjs +0 -32
  8. package/esm2022/lib/modules/chevron/chevron.component.mjs +0 -78
  9. package/esm2022/lib/modules/chevron/chevron.module.mjs +0 -32
  10. package/esm2022/lib/modules/expansion-indicator/expansion-indicator.component.mjs +0 -31
  11. package/esm2022/lib/modules/expansion-indicator/expansion-indicator.module.mjs +0 -19
  12. package/esm2022/lib/modules/illustration/illustration-resolver.service.mjs +0 -13
  13. package/esm2022/lib/modules/illustration/illustration-size.mjs +0 -2
  14. package/esm2022/lib/modules/illustration/illustration.component.mjs +0 -45
  15. package/esm2022/lib/modules/illustration/illustration.module.mjs +0 -16
  16. package/esm2022/lib/modules/key-info/key-info-label.component.mjs +0 -21
  17. package/esm2022/lib/modules/key-info/key-info-layout-type.mjs +0 -2
  18. package/esm2022/lib/modules/key-info/key-info-value.component.mjs +0 -18
  19. package/esm2022/lib/modules/key-info/key-info.component.mjs +0 -30
  20. package/esm2022/lib/modules/key-info/key-info.module.mjs +0 -34
  21. package/esm2022/lib/modules/label/label-type.mjs +0 -2
  22. package/esm2022/lib/modules/label/label.component.mjs +0 -117
  23. package/esm2022/lib/modules/label/label.module.mjs +0 -20
  24. package/esm2022/lib/modules/shared/indicator-description-type.mjs +0 -2
  25. package/esm2022/lib/modules/shared/indicator-icon-type.mjs +0 -2
  26. package/esm2022/lib/modules/shared/indicator-icon-utility.mjs +0 -40
  27. package/esm2022/lib/modules/shared/indicator-icon.mjs +0 -2
  28. package/esm2022/lib/modules/shared/sky-indicators-resources.module.mjs +0 -76
  29. package/esm2022/lib/modules/status-indicator/status-indicator.component.mjs +0 -110
  30. package/esm2022/lib/modules/status-indicator/status-indicator.module.mjs +0 -39
  31. package/esm2022/lib/modules/text-highlight/text-highlight.directive.mjs +0 -152
  32. package/esm2022/lib/modules/text-highlight/text-highlight.module.mjs +0 -18
  33. package/esm2022/lib/modules/tokens/token.component.mjs +0 -120
  34. package/esm2022/lib/modules/tokens/tokens.component.mjs +0 -331
  35. package/esm2022/lib/modules/tokens/tokens.module.mjs +0 -35
  36. package/esm2022/lib/modules/tokens/types/token-selected-event-args.mjs +0 -2
  37. package/esm2022/lib/modules/tokens/types/token.mjs +0 -2
  38. package/esm2022/lib/modules/tokens/types/tokens-message-type.mjs +0 -24
  39. package/esm2022/lib/modules/tokens/types/tokens-message.mjs +0 -2
  40. package/esm2022/lib/modules/wait/wait-adapter.service.mjs +0 -226
  41. package/esm2022/lib/modules/wait/wait-page.component.mjs +0 -19
  42. package/esm2022/lib/modules/wait/wait.component.mjs +0 -173
  43. package/esm2022/lib/modules/wait/wait.module.mjs +0 -16
  44. package/esm2022/lib/modules/wait/wait.service.mjs +0 -159
  45. package/esm2022/skyux-indicators.mjs +0 -5
  46. package/esm2022/testing/legacy/alert-fixture.mjs +0 -70
  47. package/esm2022/testing/legacy/label-fixture.mjs +0 -42
  48. package/esm2022/testing/legacy/wait-fixture.mjs +0 -28
  49. package/esm2022/testing/modules/alert/alert-harness-filters.mjs +0 -2
  50. package/esm2022/testing/modules/alert/alert-harness.mjs +0 -112
  51. package/esm2022/testing/modules/chevron/chevron-harness.mjs +0 -38
  52. package/esm2022/testing/modules/help-inline/help-inline-harness-filters.mjs +0 -2
  53. package/esm2022/testing/modules/help-inline/help-inline-harness.mjs +0 -25
  54. package/esm2022/testing/modules/illustration/illustration-harness-filters.mjs +0 -2
  55. package/esm2022/testing/modules/illustration/illustration-harness.mjs +0 -54
  56. package/esm2022/testing/modules/key-info/key-info-harness-filters.mjs +0 -2
  57. package/esm2022/testing/modules/key-info/key-info-harness.mjs +0 -43
  58. package/esm2022/testing/modules/key-info/key-info-label-harness.mjs +0 -18
  59. package/esm2022/testing/modules/key-info/key-info-value-harness.mjs +0 -18
  60. package/esm2022/testing/modules/label/label-harness-filters.mjs +0 -2
  61. package/esm2022/testing/modules/label/label-harness.mjs +0 -88
  62. package/esm2022/testing/modules/status-indicator/status-indicator-harness-filters.mjs +0 -2
  63. package/esm2022/testing/modules/status-indicator/status-indicator-harness.mjs +0 -119
  64. package/esm2022/testing/modules/tokens/token-harness-filters.mjs +0 -2
  65. package/esm2022/testing/modules/tokens/token-harness.mjs +0 -63
  66. package/esm2022/testing/modules/tokens/tokens-harness-filters.mjs +0 -2
  67. package/esm2022/testing/modules/tokens/tokens-harness.mjs +0 -45
  68. package/esm2022/testing/modules/wait/wait-harness-filters.mjs +0 -2
  69. package/esm2022/testing/modules/wait/wait-harness.mjs +0 -60
  70. package/esm2022/testing/public-api.mjs +0 -15
  71. package/esm2022/testing/skyux-indicators-testing.mjs +0 -5
@@ -1,331 +0,0 @@
1
- import { animate, style, transition, trigger } from '@angular/animations';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChildren, inject, } from '@angular/core';
3
- import { Subject } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
5
- import { SkyTokenComponent } from './token.component';
6
- import { SkyTokensMessageType } from './types/tokens-message-type';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./token.component";
9
- const DISPLAY_WITH_DEFAULT = 'name';
10
- /**
11
- * Creates a container that enables navigation between tokens using keyboard arrow keys.
12
- * This is useful when combined with other components where the <kbd>Tab</kbd> key is
13
- * reserved for other functions, such as the SKY UX Lookup component.
14
- */
15
- export class SkyTokensComponent {
16
- /**
17
- * Whether to disable the tokens list to prevent users from selecting tokens,
18
- * dismissing tokens, or navigating through the list with the arrow keys. When the tokens list
19
- * is disabled, users can still place focus on items in the list using the `Tab` key.
20
- * @default false
21
- */
22
- set disabled(value) {
23
- this.#_disabled = !!value;
24
- }
25
- get disabled() {
26
- return this.#_disabled;
27
- }
28
- /**
29
- * Whether users can remove a token from the list by selecting a token's close button.
30
- * @default true
31
- */
32
- set dismissible(value) {
33
- this.#_dismissible = value !== false;
34
- }
35
- get dismissible() {
36
- return this.#_dismissible;
37
- }
38
- /**
39
- * The token property to display for each item in the tokens list.
40
- * @default "name"
41
- */
42
- set displayWith(value) {
43
- this.#_displayWith = value || DISPLAY_WITH_DEFAULT;
44
- }
45
- get displayWith() {
46
- return this.#_displayWith;
47
- }
48
- /**
49
- * Whether users can place focus on tokens in the list using the `Tab` key.
50
- * This does not affect the ability of users to select tokens, dismiss tokens,
51
- * or navigate through the list with the arrow keys.
52
- * @default true
53
- */
54
- set focusable(value) {
55
- this.#_focusable = value !== false;
56
- }
57
- get focusable() {
58
- return this.#_focusable;
59
- }
60
- /**
61
- * The array of tokens to include in the list.
62
- */
63
- set tokens(value) {
64
- this.#_tokens = value || [];
65
- // The previous behavior was to set `this._tokens = value`, then emit `this._tokens`,
66
- // which would emit `undefined` instead of a default value of `[]` returned by the
67
- // get accessor when set to `undefined`. Emitting `value` instead of `this.#_tokensOrDefault`
68
- // preserves that behavior.
69
- this.tokensChange.emit(value);
70
- }
71
- get tokens() {
72
- return this.#_tokens;
73
- }
74
- /**
75
- * The observable of `SkyTokensMessage` that can place focus on a
76
- * particular token or remove the active token from the list.
77
- */
78
- set messageStream(value) {
79
- this.#_messageStream = value || new Subject();
80
- this.#initMessageStream();
81
- }
82
- get messageStream() {
83
- return this.#_messageStream;
84
- }
85
- get activeIndex() {
86
- return this.#_activeIndex;
87
- }
88
- set activeIndex(value) {
89
- if (value >= this.#_tokens.length) {
90
- value = this.#_tokens.length - 1;
91
- this.focusIndexOverRange.emit();
92
- }
93
- if (value < 0) {
94
- value = 0;
95
- this.focusIndexUnderRange.emit();
96
- }
97
- this.#_activeIndex = value || 0;
98
- }
99
- #_disabled;
100
- #_dismissible;
101
- #_focusable;
102
- #_tokens;
103
- #_displayWith;
104
- #messageStreamSub;
105
- #ngUnsubscribe;
106
- #changeDetector;
107
- #_activeIndex;
108
- #_messageStream;
109
- constructor() {
110
- /**
111
- * Fires when users navigate through the tokens list with the `Tab` key
112
- * and attempt to move past the final token in the list.
113
- */
114
- this.focusIndexOverRange = new EventEmitter();
115
- /**
116
- * Fires when users navigate through the tokens list with the `Tab` key
117
- * and attempt to move before the first token in the list.
118
- */
119
- this.focusIndexUnderRange = new EventEmitter();
120
- /**
121
- * Fires when users select a token in the list. This event emits the selected token.
122
- */
123
- this.tokenSelected = new EventEmitter();
124
- /**
125
- * Fires when the tokens in the list change.
126
- * This event emits an array of the tokens in the updated list.
127
- */
128
- this.tokensChange = new EventEmitter();
129
- /**
130
- * Fires when all animations on the tokens are complete.
131
- * @internal
132
- */
133
- this.tokensRendered = new EventEmitter();
134
- this.#_disabled = false;
135
- this.#_dismissible = true;
136
- this.#_focusable = true;
137
- this.#_tokens = [];
138
- this.#_displayWith = DISPLAY_WITH_DEFAULT;
139
- this.#ngUnsubscribe = new Subject();
140
- this.#changeDetector = inject(ChangeDetectorRef);
141
- this.#_activeIndex = 0;
142
- this.#_messageStream = new Subject();
143
- this.#initMessageStream();
144
- // Angular calls the trackBy function without applying the component instance's scope.
145
- // Use a fat-arrow function so the current component instance's trackWith property can
146
- // be referenced.
147
- this.trackTokenFn = (_index, item) => {
148
- if (this.trackWith) {
149
- return item.value[this.trackWith];
150
- }
151
- return item;
152
- };
153
- }
154
- ngOnDestroy() {
155
- this.#ngUnsubscribe.next();
156
- this.#ngUnsubscribe.complete();
157
- }
158
- onTokenClick(token) {
159
- if (this.disabled) {
160
- return;
161
- }
162
- this.#notifyTokenSelected(token);
163
- }
164
- animationDone() {
165
- this.tokensRendered.emit();
166
- }
167
- onTokenKeyDown(event) {
168
- if (!this.disabled) {
169
- switch (event.key) {
170
- case 'Left':
171
- case 'ArrowLeft':
172
- this.#_messageStream.next({
173
- type: SkyTokensMessageType.FocusPreviousToken,
174
- });
175
- event.preventDefault();
176
- break;
177
- case 'Right':
178
- case 'ArrowRight':
179
- this.#_messageStream.next({
180
- type: SkyTokensMessageType.FocusNextToken,
181
- });
182
- event.preventDefault();
183
- break;
184
- }
185
- }
186
- }
187
- selectToken(token) {
188
- if (!this.disabled) {
189
- this.#notifyTokenSelected(token);
190
- }
191
- }
192
- removeToken(token) {
193
- this.tokens = this.tokens.filter((t) => t !== token);
194
- this.#changeDetector.detectChanges();
195
- }
196
- #focusPreviousToken() {
197
- this.activeIndex--;
198
- this.#focusActiveToken();
199
- }
200
- #focusNextToken() {
201
- this.activeIndex++;
202
- this.#focusActiveToken();
203
- }
204
- #focusLastToken() {
205
- if (this.tokenComponents) {
206
- this.activeIndex = this.tokenComponents.length - 1;
207
- this.#focusActiveToken();
208
- }
209
- }
210
- #focusActiveToken() {
211
- if (this.tokenComponents) {
212
- const tokenComponent = this.tokenComponents.find((_comp, i) => {
213
- return this.activeIndex === i;
214
- });
215
- if (tokenComponent) {
216
- tokenComponent.focusElement();
217
- }
218
- }
219
- }
220
- #removeActiveToken() {
221
- const token = this.tokens[this.activeIndex];
222
- if (token) {
223
- this.removeToken(token);
224
- }
225
- }
226
- #initMessageStream() {
227
- if (this.#messageStreamSub) {
228
- this.#messageStreamSub.unsubscribe();
229
- }
230
- this.#messageStreamSub = this.messageStream
231
- .pipe(takeUntil(this.#ngUnsubscribe))
232
- .subscribe((message) => {
233
- switch (message.type) {
234
- case SkyTokensMessageType.FocusLastToken:
235
- this.#focusLastToken();
236
- break;
237
- case SkyTokensMessageType.FocusActiveToken:
238
- this.#focusActiveToken();
239
- break;
240
- case SkyTokensMessageType.FocusPreviousToken:
241
- this.#focusPreviousToken();
242
- break;
243
- case SkyTokensMessageType.FocusNextToken:
244
- this.#focusNextToken();
245
- break;
246
- case SkyTokensMessageType.RemoveActiveToken:
247
- this.#removeActiveToken();
248
- break;
249
- }
250
- });
251
- }
252
- #notifyTokenSelected(token) {
253
- this.tokenSelected.emit({
254
- token,
255
- });
256
- }
257
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTokensComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
258
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyTokensComponent, selector: "sky-tokens", inputs: { disabled: "disabled", dismissible: "dismissible", displayWith: "displayWith", trackWith: "trackWith", focusable: "focusable", tokens: "tokens", messageStream: "messageStream" }, outputs: { focusIndexOverRange: "focusIndexOverRange", focusIndexUnderRange: "focusIndexUnderRange", tokenSelected: "tokenSelected", tokensChange: "tokensChange", tokensRendered: "tokensRendered" }, viewQueries: [{ propertyName: "tokenComponents", predicate: SkyTokenComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"sky-tokens\"\n [@blockAnimationOnLoad]\n [attr.role]=\"tokens.length ? 'grid' : null\"\n>\n <!--\n The role must use square brackets otherwise Angular sets the native 'role'\n attribute as well as the input attribute of the token, which fails accessibility rules.\n -->\n @for (token of tokens; track trackTokenFn(i, token); let i = $index) {\n <sky-token\n [@.disabled]=\"!trackWith\"\n [@dismiss]\n [disabled]=\"disabled\"\n [dismissible]=\"dismissible\"\n [focusable]=\"focusable\"\n [role]=\"'row'\"\n (@dismiss.done)=\"animationDone()\"\n (dismiss)=\"removeToken(token)\"\n (click)=\"onTokenClick(token)\"\n (keydown)=\"onTokenKeyDown($event)\"\n (keyup.enter)=\"selectToken(token); $event.preventDefault()\"\n (tokenFocus)=\"activeIndex = i\"\n >\n {{ token.value[displayWith] }}\n </sky-token>\n }\n <div class=\"sky-tokens-content\" [attr.role]=\"tokens.length ? 'row' : null\">\n <div [attr.role]=\"tokens.length ? 'gridcell' : null\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.sky-tokens{display:flex;flex-wrap:wrap;align-items:baseline;margin:-2px}.sky-tokens .sky-tokens-content,.sky-tokens ::ng-deep sky-token{flex:0 0 auto;display:inline-flex;padding:2px}.sky-tokens .sky-tokens-content{flex-grow:1;flex-basis:0px}.sky-tokens .sky-tokens-content>div{display:contents}.sky-tokens .sky-tokens-content>div:before{content:\"\\200b\"}\n"], dependencies: [{ kind: "component", type: i1.SkyTokenComponent, selector: "sky-token", inputs: ["disabled", "ariaLabel", "dismissible", "focusable", "role"], outputs: ["dismiss", "tokenFocus"] }], animations: [
259
- trigger('blockAnimationOnLoad', [transition(':enter', [])]),
260
- trigger('dismiss', [
261
- transition(':enter', [
262
- style({
263
- opacity: 0,
264
- width: 0,
265
- }),
266
- animate('150ms ease-in', style({
267
- opacity: 1,
268
- width: '*',
269
- })),
270
- ]),
271
- transition(':leave', [
272
- animate('150ms ease-in', style({
273
- opacity: 0,
274
- width: 0,
275
- })),
276
- ]),
277
- ]),
278
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
279
- }
280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTokensComponent, decorators: [{
281
- type: Component,
282
- args: [{ selector: 'sky-tokens', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
283
- trigger('blockAnimationOnLoad', [transition(':enter', [])]),
284
- trigger('dismiss', [
285
- transition(':enter', [
286
- style({
287
- opacity: 0,
288
- width: 0,
289
- }),
290
- animate('150ms ease-in', style({
291
- opacity: 1,
292
- width: '*',
293
- })),
294
- ]),
295
- transition(':leave', [
296
- animate('150ms ease-in', style({
297
- opacity: 0,
298
- width: 0,
299
- })),
300
- ]),
301
- ]),
302
- ], template: "<div\n class=\"sky-tokens\"\n [@blockAnimationOnLoad]\n [attr.role]=\"tokens.length ? 'grid' : null\"\n>\n <!--\n The role must use square brackets otherwise Angular sets the native 'role'\n attribute as well as the input attribute of the token, which fails accessibility rules.\n -->\n @for (token of tokens; track trackTokenFn(i, token); let i = $index) {\n <sky-token\n [@.disabled]=\"!trackWith\"\n [@dismiss]\n [disabled]=\"disabled\"\n [dismissible]=\"dismissible\"\n [focusable]=\"focusable\"\n [role]=\"'row'\"\n (@dismiss.done)=\"animationDone()\"\n (dismiss)=\"removeToken(token)\"\n (click)=\"onTokenClick(token)\"\n (keydown)=\"onTokenKeyDown($event)\"\n (keyup.enter)=\"selectToken(token); $event.preventDefault()\"\n (tokenFocus)=\"activeIndex = i\"\n >\n {{ token.value[displayWith] }}\n </sky-token>\n }\n <div class=\"sky-tokens-content\" [attr.role]=\"tokens.length ? 'row' : null\">\n <div [attr.role]=\"tokens.length ? 'gridcell' : null\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.sky-tokens{display:flex;flex-wrap:wrap;align-items:baseline;margin:-2px}.sky-tokens .sky-tokens-content,.sky-tokens ::ng-deep sky-token{flex:0 0 auto;display:inline-flex;padding:2px}.sky-tokens .sky-tokens-content{flex-grow:1;flex-basis:0px}.sky-tokens .sky-tokens-content>div{display:contents}.sky-tokens .sky-tokens-content>div:before{content:\"\\200b\"}\n"] }]
303
- }], ctorParameters: () => [], propDecorators: { disabled: [{
304
- type: Input
305
- }], dismissible: [{
306
- type: Input
307
- }], displayWith: [{
308
- type: Input
309
- }], trackWith: [{
310
- type: Input
311
- }], focusable: [{
312
- type: Input
313
- }], tokens: [{
314
- type: Input
315
- }], messageStream: [{
316
- type: Input
317
- }], focusIndexOverRange: [{
318
- type: Output
319
- }], focusIndexUnderRange: [{
320
- type: Output
321
- }], tokenSelected: [{
322
- type: Output
323
- }], tokensChange: [{
324
- type: Output
325
- }], tokensRendered: [{
326
- type: Output
327
- }], tokenComponents: [{
328
- type: ViewChildren,
329
- args: [SkyTokenComponent]
330
- }] } });
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy90b2tlbnMvdG9rZW5zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy90b2tlbnMvdG9rZW5zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sWUFBWSxFQUNaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUVuRSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztBQUVwQzs7OztHQUlHO0FBa0NILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7O09BS0c7SUFDSCxJQUNXLFFBQVEsQ0FBQyxLQUEwQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ1cs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YW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZHJlbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRva2VuQ29tcG9uZW50IH0gZnJvbSAnLi90b2tlbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VG9rZW4gfSBmcm9tICcuL3R5cGVzL3Rva2VuJztcbmltcG9ydCB7IFNreVRva2VuU2VsZWN0ZWRFdmVudEFyZ3MgfSBmcm9tICcuL3R5cGVzL3Rva2VuLXNlbGVjdGVkLWV2ZW50LWFyZ3MnO1xuaW1wb3J0IHsgU2t5VG9rZW5zTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvdG9rZW5zLW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5VG9rZW5zTWVzc2FnZVR5cGUgfSBmcm9tICcuL3R5cGVzL3Rva2Vucy1tZXNzYWdlLXR5cGUnO1xuXG5jb25zdCBESVNQTEFZX1dJVEhfREVGQVVMVCA9ICduYW1lJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29udGFpbmVyIHRoYXQgZW5hYmxlcyBuYXZpZ2F0aW9uIGJldHdlZW4gdG9rZW5zIHVzaW5nIGtleWJvYXJkIGFycm93IGtleXMuXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGNvbWJpbmVkIHdpdGggb3RoZXIgY29tcG9uZW50cyB3aGVyZSB0aGUgPGtiZD5UYWI8L2tiZD4ga2V5IGlzXG4gKiByZXNlcnZlZCBmb3Igb3RoZXIgZnVuY3Rpb25zLCBzdWNoIGFzIHRoZSBTS1kgVVggTG9va3VwIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRva2VucycsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2tlbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2tlbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdibG9ja0FuaW1hdGlvbk9uTG9hZCcsIFt0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXSldKSxcbiAgICB0cmlnZ2VyKCdkaXNtaXNzJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgfSksXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgJzE1MG1zIGVhc2UtaW4nLFxuICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICB3aWR0aDogJyonLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgJzE1MG1zIGVhc2UtaW4nLFxuICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUb2tlbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSB0b2tlbnMgbGlzdCB0byBwcmV2ZW50IHVzZXJzIGZyb20gc2VsZWN0aW5nIHRva2VucyxcbiAgICogZGlzbWlzc2luZyB0b2tlbnMsIG9yIG5hdmlnYXRpbmcgdGhyb3VnaCB0aGUgbGlzdCB3aXRoIHRoZSBhcnJvdyBrZXlzLiBXaGVuIHRoZSB0b2tlbnMgbGlzdFxuICAgKiBpcyBkaXNhYmxlZCwgdXNlcnMgY2FuIHN0aWxsIHBsYWNlIGZvY3VzIG9uIGl0ZW1zIGluIHRoZSBsaXN0IHVzaW5nIHRoZSBgVGFiYCBrZXkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gISF2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHVzZXJzIGNhbiByZW1vdmUgYSB0b2tlbiBmcm9tIHRoZSBsaXN0IGJ5IHNlbGVjdGluZyBhIHRva2VuJ3MgY2xvc2UgYnV0dG9uLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc21pc3NpYmxlKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rpc21pc3NpYmxlID0gdmFsdWUgIT09IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNtaXNzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc21pc3NpYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b2tlbiBwcm9wZXJ0eSB0byBkaXNwbGF5IGZvciBlYWNoIGl0ZW0gaW4gdGhlIHRva2VucyBsaXN0LlxuICAgKiBAZGVmYXVsdCBcIm5hbWVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNwbGF5V2l0aCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rpc3BsYXlXaXRoID0gdmFsdWUgfHwgRElTUExBWV9XSVRIX0RFRkFVTFQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlXaXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNwbGF5V2l0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG9rZW4gcHJvcGVydHkgdGhhdCByZXByZXNlbnRzIHRoZSB0b2tlbidzIHVuaXF1ZSBpZGVudGlmaWVyLiBXaGVuIHRoaXMgcHJvcGVydHlcbiAgICogaXMgc2V0LCBhbmltYXRpb25zIGFyZSBlbmFibGVkIHdoZW4gZGlzbWlzc2luZyB0b2tlbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdHJhY2tXaXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXNlcnMgY2FuIHBsYWNlIGZvY3VzIG9uIHRva2VucyBpbiB0aGUgbGlzdCB1c2luZyB0aGUgYFRhYmAga2V5LlxuICAgKiBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgYWJpbGl0eSBvZiB1c2VycyB0byBzZWxlY3QgdG9rZW5zLCBkaXNtaXNzIHRva2VucyxcbiAgICogb3IgbmF2aWdhdGUgdGhyb3VnaCB0aGUgbGlzdCB3aXRoIHRoZSBhcnJvdyBrZXlzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvY3VzYWJsZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19mb2N1c2FibGUgPSB2YWx1ZSAhPT0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2ZvY3VzYWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXJyYXkgb2YgdG9rZW5zIHRvIGluY2x1ZGUgaW4gdGhlIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRva2Vucyh2YWx1ZTogU2t5VG9rZW5bXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190b2tlbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICAvLyBUaGUgcHJldmlvdXMgYmVoYXZpb3Igd2FzIHRvIHNldCBgdGhpcy5fdG9rZW5zID0gdmFsdWVgLCB0aGVuIGVtaXQgYHRoaXMuX3Rva2Vuc2AsXG4gICAgLy8gd2hpY2ggd291bGQgZW1pdCBgdW5kZWZpbmVkYCBpbnN0ZWFkIG9mIGEgZGVmYXVsdCB2YWx1ZSBvZiBgW11gIHJldHVybmVkIGJ5IHRoZVxuICAgIC8vIGdldCBhY2Nlc3NvciB3aGVuIHNldCB0byBgdW5kZWZpbmVkYC4gRW1pdHRpbmcgYHZhbHVlYCBpbnN0ZWFkIG9mIGB0aGlzLiNfdG9rZW5zT3JEZWZhdWx0YFxuICAgIC8vIHByZXNlcnZlcyB0aGF0IGJlaGF2aW9yLlxuICAgIHRoaXMudG9rZW5zQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCB0b2tlbnMoKTogU2t5VG9rZW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuI190b2tlbnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG9ic2VydmFibGUgb2YgYFNreVRva2Vuc01lc3NhZ2VgIHRoYXQgY2FuIHBsYWNlIGZvY3VzIG9uIGFcbiAgICogcGFydGljdWxhciB0b2tlbiBvciByZW1vdmUgdGhlIGFjdGl2ZSB0b2tlbiBmcm9tIHRoZSBsaXN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZXNzYWdlU3RyZWFtKHZhbHVlOiBTdWJqZWN0PFNreVRva2Vuc01lc3NhZ2U+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX21lc3NhZ2VTdHJlYW0gPSB2YWx1ZSB8fCBuZXcgU3ViamVjdDxTa3lUb2tlbnNNZXNzYWdlPigpO1xuICAgIHRoaXMuI2luaXRNZXNzYWdlU3RyZWFtKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lc3NhZ2VTdHJlYW0oKTogU3ViamVjdDxTa3lUb2tlbnNNZXNzYWdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI19tZXNzYWdlU3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgbmF2aWdhdGUgdGhyb3VnaCB0aGUgdG9rZW5zIGxpc3Qgd2l0aCB0aGUgYFRhYmAga2V5XG4gICAqIGFuZCBhdHRlbXB0IHRvIG1vdmUgcGFzdCB0aGUgZmluYWwgdG9rZW4gaW4gdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZvY3VzSW5kZXhPdmVyUmFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgbmF2aWdhdGUgdGhyb3VnaCB0aGUgdG9rZW5zIGxpc3Qgd2l0aCB0aGUgYFRhYmAga2V5XG4gICAqIGFuZCBhdHRlbXB0IHRvIG1vdmUgYmVmb3JlIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZm9jdXNJbmRleFVuZGVyUmFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IGEgdG9rZW4gaW4gdGhlIGxpc3QuIFRoaXMgZXZlbnQgZW1pdHMgdGhlIHNlbGVjdGVkIHRva2VuLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0b2tlblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUb2tlblNlbGVjdGVkRXZlbnRBcmdzPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB0b2tlbnMgaW4gdGhlIGxpc3QgY2hhbmdlLlxuICAgKiBUaGlzIGV2ZW50IGVtaXRzIGFuIGFycmF5IG9mIHRoZSB0b2tlbnMgaW4gdGhlIHVwZGF0ZWQgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdG9rZW5zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUb2tlbltdPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGFsbCBhbmltYXRpb25zIG9uIHRoZSB0b2tlbnMgYXJlIGNvbXBsZXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdG9rZW5zUmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIGdldCBhY3RpdmVJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfYWN0aXZlSW5kZXg7XG4gIH1cblxuICBwdWJsaWMgc2V0IGFjdGl2ZUluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPj0gdGhpcy4jX3Rva2Vucy5sZW5ndGgpIHtcbiAgICAgIHZhbHVlID0gdGhpcy4jX3Rva2Vucy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5mb2N1c0luZGV4T3ZlclJhbmdlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICB2YWx1ZSA9IDA7XG4gICAgICB0aGlzLmZvY3VzSW5kZXhVbmRlclJhbmdlLmVtaXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfYWN0aXZlSW5kZXggPSB2YWx1ZSB8fCAwO1xuICB9XG5cbiAgcHVibGljIHRyYWNrVG9rZW5GbjogVHJhY2tCeUZ1bmN0aW9uPFNreVRva2VuPjtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG4gICNfZGlzbWlzc2libGUgPSB0cnVlO1xuICAjX2ZvY3VzYWJsZSA9IHRydWU7XG4gICNfdG9rZW5zOiBTa3lUb2tlbltdID0gW107XG4gICNfZGlzcGxheVdpdGggPSBESVNQTEFZX1dJVEhfREVGQVVMVDtcblxuICBAVmlld0NoaWxkcmVuKFNreVRva2VuQ29tcG9uZW50KVxuICBwdWJsaWMgdG9rZW5Db21wb25lbnRzOiBRdWVyeUxpc3Q8U2t5VG9rZW5Db21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gICNtZXNzYWdlU3RyZWFtU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICNfYWN0aXZlSW5kZXggPSAwO1xuICAjX21lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lUb2tlbnNNZXNzYWdlPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2luaXRNZXNzYWdlU3RyZWFtKCk7XG5cbiAgICAvLyBBbmd1bGFyIGNhbGxzIHRoZSB0cmFja0J5IGZ1bmN0aW9uIHdpdGhvdXQgYXBwbHlpbmcgdGhlIGNvbXBvbmVudCBpbnN0YW5jZSdzIHNjb3BlLlxuICAgIC8vIFVzZSBhIGZhdC1hcnJvdyBmdW5jdGlvbiBzbyB0aGUgY3VycmVudCBjb21wb25lbnQgaW5zdGFuY2UncyB0cmFja1dpdGggcHJvcGVydHkgY2FuXG4gICAgLy8gYmUgcmVmZXJlbmNlZC5cbiAgICB0aGlzLnRyYWNrVG9rZW5GbiA9IChfaW5kZXgsIGl0ZW0pOiB1bmtub3duID0+IHtcbiAgICAgIGlmICh0aGlzLnRyYWNrV2l0aCkge1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZVt0aGlzLnRyYWNrV2l0aF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uVG9rZW5DbGljayh0b2tlbjogU2t5VG9rZW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI25vdGlmeVRva2VuU2VsZWN0ZWQodG9rZW4pO1xuICB9XG5cbiAgcHVibGljIGFuaW1hdGlvbkRvbmUoKTogdm9pZCB7XG4gICAgdGhpcy50b2tlbnNSZW5kZXJlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgIHRoaXMuI19tZXNzYWdlU3RyZWFtLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNQcmV2aW91c1Rva2VuLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnUmlnaHQnOlxuICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICB0aGlzLiNfbWVzc2FnZVN0cmVhbS5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6IFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzTmV4dFRva2VuLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdFRva2VuKHRva2VuOiBTa3lUb2tlbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jbm90aWZ5VG9rZW5TZWxlY3RlZCh0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZVRva2VuKHRva2VuOiBTa3lUb2tlbik6IHZvaWQge1xuICAgIHRoaXMudG9rZW5zID0gdGhpcy50b2tlbnMuZmlsdGVyKCh0KSA9PiB0ICE9PSB0b2tlbik7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgI2ZvY3VzUHJldmlvdXNUb2tlbigpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUluZGV4LS07XG4gICAgdGhpcy4jZm9jdXNBY3RpdmVUb2tlbigpO1xuICB9XG5cbiAgI2ZvY3VzTmV4dFRva2VuKCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlSW5kZXgrKztcbiAgICB0aGlzLiNmb2N1c0FjdGl2ZVRva2VuKCk7XG4gIH1cblxuICAjZm9jdXNMYXN0VG9rZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9rZW5Db21wb25lbnRzKSB7XG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gdGhpcy50b2tlbkNvbXBvbmVudHMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuI2ZvY3VzQWN0aXZlVG9rZW4oKTtcbiAgICB9XG4gIH1cblxuICAjZm9jdXNBY3RpdmVUb2tlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b2tlbkNvbXBvbmVudHMpIHtcbiAgICAgIGNvbnN0IHRva2VuQ29tcG9uZW50ID0gdGhpcy50b2tlbkNvbXBvbmVudHMuZmluZChcbiAgICAgICAgKF9jb21wOiBTa3lUb2tlbkNvbXBvbmVudCwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlSW5kZXggPT09IGk7XG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAodG9rZW5Db21wb25lbnQpIHtcbiAgICAgICAgdG9rZW5Db21wb25lbnQuZm9jdXNFbGVtZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3JlbW92ZUFjdGl2ZVRva2VuKCk6IHZvaWQge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnNbdGhpcy5hY3RpdmVJbmRleF07XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aGlzLnJlbW92ZVRva2VuKHRva2VuKTtcbiAgICB9XG4gIH1cblxuICAjaW5pdE1lc3NhZ2VTdHJlYW0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIpIHtcbiAgICAgIHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNtZXNzYWdlU3RyZWFtU3ViID0gdGhpcy5tZXNzYWdlU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBTa3lUb2tlbnNNZXNzYWdlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c0xhc3RUb2tlbjpcbiAgICAgICAgICAgIHRoaXMuI2ZvY3VzTGFzdFRva2VuKCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNBY3RpdmVUb2tlbjpcbiAgICAgICAgICAgIHRoaXMuI2ZvY3VzQWN0aXZlVG9rZW4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c1ByZXZpb3VzVG9rZW46XG4gICAgICAgICAgICB0aGlzLiNmb2N1c1ByZXZpb3VzVG9rZW4oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c05leHRUb2tlbjpcbiAgICAgICAgICAgIHRoaXMuI2ZvY3VzTmV4dFRva2VuKCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgU2t5VG9rZW5zTWVzc2FnZVR5cGUuUmVtb3ZlQWN0aXZlVG9rZW46XG4gICAgICAgICAgICB0aGlzLiNyZW1vdmVBY3RpdmVUb2tlbigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI25vdGlmeVRva2VuU2VsZWN0ZWQodG9rZW46IFNreVRva2VuKTogdm9pZCB7XG4gICAgdGhpcy50b2tlblNlbGVjdGVkLmVtaXQoe1xuICAgICAgdG9rZW4sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdG9rZW5zXCJcbiAgW0BibG9ja0FuaW1hdGlvbk9uTG9hZF1cbiAgW2F0dHIucm9sZV09XCJ0b2tlbnMubGVuZ3RoID8gJ2dyaWQnIDogbnVsbFwiXG4+XG4gIDwhLS1cbiAgICAgIFRoZSByb2xlIG11c3QgdXNlIHNxdWFyZSBicmFja2V0cyBvdGhlcndpc2UgQW5ndWxhciBzZXRzIHRoZSBuYXRpdmUgJ3JvbGUnXG4gICAgICBhdHRyaWJ1dGUgYXMgd2VsbCBhcyB0aGUgaW5wdXQgYXR0cmlidXRlIG9mIHRoZSB0b2tlbiwgd2hpY2ggZmFpbHMgYWNjZXNzaWJpbGl0eSBydWxlcy5cbiAgICAtLT5cbiAgQGZvciAodG9rZW4gb2YgdG9rZW5zOyB0cmFjayB0cmFja1Rva2VuRm4oaSwgdG9rZW4pOyBsZXQgaSA9ICRpbmRleCkge1xuICAgIDxza3ktdG9rZW5cbiAgICAgIFtALmRpc2FibGVkXT1cIiF0cmFja1dpdGhcIlxuICAgICAgW0BkaXNtaXNzXVxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtkaXNtaXNzaWJsZV09XCJkaXNtaXNzaWJsZVwiXG4gICAgICBbZm9jdXNhYmxlXT1cImZvY3VzYWJsZVwiXG4gICAgICBbcm9sZV09XCIncm93J1wiXG4gICAgICAoQGRpc21pc3MuZG9uZSk9XCJhbmltYXRpb25Eb25lKClcIlxuICAgICAgKGRpc21pc3MpPVwicmVtb3ZlVG9rZW4odG9rZW4pXCJcbiAgICAgIChjbGljayk9XCJvblRva2VuQ2xpY2sodG9rZW4pXCJcbiAgICAgIChrZXlkb3duKT1cIm9uVG9rZW5LZXlEb3duKCRldmVudClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cInNlbGVjdFRva2VuKHRva2VuKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgKHRva2VuRm9jdXMpPVwiYWN0aXZlSW5kZXggPSBpXCJcbiAgICA+XG4gICAgICB7eyB0b2tlbi52YWx1ZVtkaXNwbGF5V2l0aF0gfX1cbiAgICA8L3NreS10b2tlbj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwic2t5LXRva2Vucy1jb250ZW50XCIgW2F0dHIucm9sZV09XCJ0b2tlbnMubGVuZ3RoID8gJ3JvdycgOiBudWxsXCI+XG4gICAgPGRpdiBbYXR0ci5yb2xlXT1cInRva2Vucy5sZW5ndGggPyAnZ3JpZGNlbGwnIDogbnVsbFwiPlxuICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,35 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { SkyIdModule, SkyScreenReaderLabelDirective } from '@skyux/core';
4
- import { SkyIconModule } from '@skyux/icon';
5
- import { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';
6
- import { SkyTokenComponent } from './token.component';
7
- import { SkyTokensComponent } from './tokens.component';
8
- import * as i0 from "@angular/core";
9
- export class SkyTokensModule {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTokensModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyTokensModule, declarations: [SkyTokenComponent, SkyTokensComponent], imports: [CommonModule,
12
- SkyIconModule,
13
- SkyIndicatorsResourcesModule,
14
- SkyIdModule,
15
- SkyScreenReaderLabelDirective], exports: [SkyTokenComponent, SkyTokensComponent] }); }
16
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTokensModule, imports: [CommonModule,
17
- SkyIconModule,
18
- SkyIndicatorsResourcesModule,
19
- SkyIdModule] }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTokensModule, decorators: [{
22
- type: NgModule,
23
- args: [{
24
- declarations: [SkyTokenComponent, SkyTokensComponent],
25
- imports: [
26
- CommonModule,
27
- SkyIconModule,
28
- SkyIndicatorsResourcesModule,
29
- SkyIdModule,
30
- SkyScreenReaderLabelDirective,
31
- ],
32
- exports: [SkyTokenComponent, SkyTokensComponent],
33
- }]
34
- }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy90b2tlbnMvdG9rZW5zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBYXhELE1BQU0sT0FBTyxlQUFlOytHQUFmLGVBQWU7Z0hBQWYsZUFBZSxpQkFWWCxpQkFBaUIsRUFBRSxrQkFBa0IsYUFFbEQsWUFBWTtZQUNaLGFBQWE7WUFDYiw0QkFBNEI7WUFDNUIsV0FBVztZQUNYLDZCQUE2QixhQUVyQixpQkFBaUIsRUFBRSxrQkFBa0I7Z0hBRXBDLGVBQWUsWUFSeEIsWUFBWTtZQUNaLGFBQWE7WUFDYiw0QkFBNEI7WUFDNUIsV0FBVzs7NEZBS0YsZUFBZTtrQkFYM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQztvQkFDckQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYiw0QkFBNEI7d0JBQzVCLFdBQVc7d0JBQ1gsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUlkTW9kdWxlLCBTa3lTY3JlZW5SZWFkZXJMYWJlbERpcmVjdGl2ZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5cbmltcG9ydCB7IFNreUluZGljYXRvcnNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWluZGljYXRvcnMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVRva2VuQ29tcG9uZW50IH0gZnJvbSAnLi90b2tlbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VG9rZW5zQ29tcG9uZW50IH0gZnJvbSAnLi90b2tlbnMuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5VG9rZW5Db21wb25lbnQsIFNreVRva2Vuc0NvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lJbmRpY2F0b3JzUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreUlkTW9kdWxlLFxuICAgIFNreVNjcmVlblJlYWRlckxhYmVsRGlyZWN0aXZlLFxuICBdLFxuICBleHBvcnRzOiBbU2t5VG9rZW5Db21wb25lbnQsIFNreVRva2Vuc0NvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRva2Vuc01vZHVsZSB7fVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tc2VsZWN0ZWQtZXZlbnQtYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy90b2tlbnMvdHlwZXMvdG9rZW4tc2VsZWN0ZWQtZXZlbnQtYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5VG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuZXhwb3J0IGludGVyZmFjZSBTa3lUb2tlblNlbGVjdGVkRXZlbnRBcmdzPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdG9rZW4uXG4gICAqL1xuICB0b2tlbj86IFNreVRva2VuPFQ+O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvdG9rZW5zL3R5cGVzL3Rva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGludGVyZmFjZSBTa3lUb2tlbjxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBUaGUgdG9rZW4ncyB2YWx1ZS4gVGhlIGBza3ktdG9rZW5zYCBjb21wb25lbnQgdXNlcyBpdHMgYGRpc3BsYXlXaXRoYFxuICAgKiBwcm9wZXJ0eSB0byBkZXRlcm1pbmUgd2hpY2ggb2YgdGhlIHZhbHVlJ3MgcHJvcGVydGllcyB0byB1c2UgYXMgdGhlIHRva2VuJ3MgbGFiZWwuXG4gICAqL1xuICB2YWx1ZTogVDtcbn1cbiJdfQ==
@@ -1,24 +0,0 @@
1
- export var SkyTokensMessageType;
2
- (function (SkyTokensMessageType) {
3
- /**
4
- * Places focus on the last token in the list.
5
- */
6
- SkyTokensMessageType[SkyTokensMessageType["FocusLastToken"] = 0] = "FocusLastToken";
7
- /**
8
- * Places focus on the token that is currently selected.
9
- */
10
- SkyTokensMessageType[SkyTokensMessageType["FocusActiveToken"] = 1] = "FocusActiveToken";
11
- /**
12
- * Places focus on the token before the currently selected token.
13
- */
14
- SkyTokensMessageType[SkyTokensMessageType["FocusPreviousToken"] = 2] = "FocusPreviousToken";
15
- /**
16
- * Places focus on the token after the currently selected token.
17
- */
18
- SkyTokensMessageType[SkyTokensMessageType["FocusNextToken"] = 3] = "FocusNextToken";
19
- /**
20
- * Removes the token that is currently selected from the list of tokens.
21
- */
22
- SkyTokensMessageType[SkyTokensMessageType["RemoveActiveToken"] = 4] = "RemoveActiveToken";
23
- })(SkyTokensMessageType || (SkyTokensMessageType = {}));
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLW1lc3NhZ2UtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy90b2tlbnMvdHlwZXMvdG9rZW5zLW1lc3NhZ2UtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxvQkF5Qlg7QUF6QkQsV0FBWSxvQkFBb0I7SUFDOUI7O09BRUc7SUFDSCxtRkFBa0IsQ0FBQTtJQUVsQjs7T0FFRztJQUNILHVGQUFvQixDQUFBO0lBRXBCOztPQUVHO0lBQ0gsMkZBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCxtRkFBa0IsQ0FBQTtJQUVsQjs7T0FFRztJQUNILHlGQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUF6Qlcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQXlCL0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTa3lUb2tlbnNNZXNzYWdlVHlwZSB7XG4gIC8qKlxuICAgKiBQbGFjZXMgZm9jdXMgb24gdGhlIGxhc3QgdG9rZW4gaW4gdGhlIGxpc3QuXG4gICAqL1xuICBGb2N1c0xhc3RUb2tlbiA9IDAsXG5cbiAgLyoqXG4gICAqIFBsYWNlcyBmb2N1cyBvbiB0aGUgdG9rZW4gdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuXG4gICAqL1xuICBGb2N1c0FjdGl2ZVRva2VuID0gMSxcblxuICAvKipcbiAgICogUGxhY2VzIGZvY3VzIG9uIHRoZSB0b2tlbiBiZWZvcmUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0b2tlbi5cbiAgICovXG4gIEZvY3VzUHJldmlvdXNUb2tlbiA9IDIsXG5cbiAgLyoqXG4gICAqIFBsYWNlcyBmb2N1cyBvbiB0aGUgdG9rZW4gYWZ0ZXIgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0b2tlbi5cbiAgICovXG4gIEZvY3VzTmV4dFRva2VuID0gMyxcblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgdG9rZW4gdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgZnJvbSB0aGUgbGlzdCBvZiB0b2tlbnMuXG4gICAqL1xuICBSZW1vdmVBY3RpdmVUb2tlbiA9IDQsXG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvdG9rZW5zL3R5cGVzL3Rva2Vucy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUb2tlbnNNZXNzYWdlVHlwZSB9IGZyb20gJy4vdG9rZW5zLW1lc3NhZ2UtdHlwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2t5VG9rZW5zTWVzc2FnZSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBtZXNzYWdlLlxuICAgKi9cbiAgdHlwZT86IFNreVRva2Vuc01lc3NhZ2VUeXBlO1xufVxuIl19