@skyux/core 11.39.0 → 12.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/documentation.json +600 -536
  2. package/fesm2022/skyux-core-testing.mjs +26 -26
  3. package/fesm2022/skyux-core-testing.mjs.map +1 -1
  4. package/fesm2022/skyux-core.mjs +188 -188
  5. package/fesm2022/skyux-core.mjs.map +1 -1
  6. package/lib/modules/content-info-provider/content-info-provider.d.ts +0 -3
  7. package/lib/modules/dock/dock.service.d.ts +2 -0
  8. package/package.json +8 -12
  9. package/esm2022/index.mjs +0 -67
  10. package/esm2022/lib/modules/adapter-service/adapter.module.mjs +0 -16
  11. package/esm2022/lib/modules/adapter-service/adapter.service.mjs +0 -205
  12. package/esm2022/lib/modules/adapter-service/focusable-children-options.mjs +0 -2
  13. package/esm2022/lib/modules/affix/affix-auto-fit-context.mjs +0 -12
  14. package/esm2022/lib/modules/affix/affix-config.mjs +0 -2
  15. package/esm2022/lib/modules/affix/affix-horizontal-alignment.mjs +0 -2
  16. package/esm2022/lib/modules/affix/affix-offset-change.mjs +0 -2
  17. package/esm2022/lib/modules/affix/affix-offset.mjs +0 -2
  18. package/esm2022/lib/modules/affix/affix-placement-change.mjs +0 -2
  19. package/esm2022/lib/modules/affix/affix-placement.mjs +0 -2
  20. package/esm2022/lib/modules/affix/affix-position.mjs +0 -2
  21. package/esm2022/lib/modules/affix/affix-rect.mjs +0 -2
  22. package/esm2022/lib/modules/affix/affix-utils.mjs +0 -18
  23. package/esm2022/lib/modules/affix/affix-vertical-alignment.mjs +0 -2
  24. package/esm2022/lib/modules/affix/affix.directive.mjs +0 -116
  25. package/esm2022/lib/modules/affix/affix.module.mjs +0 -18
  26. package/esm2022/lib/modules/affix/affix.service.mjs +0 -48
  27. package/esm2022/lib/modules/affix/affixer.mjs +0 -426
  28. package/esm2022/lib/modules/affix/dom-utils.mjs +0 -126
  29. package/esm2022/lib/modules/breakpoint-observer/breakpoint-observer.mjs +0 -2
  30. package/esm2022/lib/modules/breakpoint-observer/breakpoint-observer.token.mjs +0 -7
  31. package/esm2022/lib/modules/breakpoint-observer/breakpoint-utils.mjs +0 -38
  32. package/esm2022/lib/modules/breakpoint-observer/breakpoint.mjs +0 -6
  33. package/esm2022/lib/modules/breakpoint-observer/container-breakpoint-observer.mjs +0 -64
  34. package/esm2022/lib/modules/breakpoint-observer/media-breakpoint-observer.mjs +0 -58
  35. package/esm2022/lib/modules/breakpoint-observer/provide-breakpoint-observer.mjs +0 -24
  36. package/esm2022/lib/modules/breakpoint-observer/responsive-host.directive.mjs +0 -55
  37. package/esm2022/lib/modules/content-info-provider/content-info-descriptor.mjs +0 -2
  38. package/esm2022/lib/modules/content-info-provider/content-info-provider.mjs +0 -31
  39. package/esm2022/lib/modules/content-info-provider/content-info.mjs +0 -2
  40. package/esm2022/lib/modules/default-input-provider/default-input-provider.mjs +0 -26
  41. package/esm2022/lib/modules/dock/dock-dom-adapter.service.mjs +0 -81
  42. package/esm2022/lib/modules/dock/dock-insert-component-config.mjs +0 -2
  43. package/esm2022/lib/modules/dock/dock-item-config.mjs +0 -2
  44. package/esm2022/lib/modules/dock/dock-item-reference.mjs +0 -2
  45. package/esm2022/lib/modules/dock/dock-item.mjs +0 -31
  46. package/esm2022/lib/modules/dock/dock-location.mjs +0 -19
  47. package/esm2022/lib/modules/dock/dock-options.mjs +0 -2
  48. package/esm2022/lib/modules/dock/dock.component.mjs +0 -101
  49. package/esm2022/lib/modules/dock/dock.module.mjs +0 -15
  50. package/esm2022/lib/modules/dock/dock.service.mjs +0 -97
  51. package/esm2022/lib/modules/dock/sort-by-stack-order.mjs +0 -13
  52. package/esm2022/lib/modules/dynamic-component/dynamic-component-location.mjs +0 -27
  53. package/esm2022/lib/modules/dynamic-component/dynamic-component-options.mjs +0 -2
  54. package/esm2022/lib/modules/dynamic-component/dynamic-component.module.mjs +0 -17
  55. package/esm2022/lib/modules/dynamic-component/dynamic-component.service.mjs +0 -113
  56. package/esm2022/lib/modules/file-reader/file-reader.service.mjs +0 -32
  57. package/esm2022/lib/modules/format/app-format.mjs +0 -18
  58. package/esm2022/lib/modules/help/help-global-options-token.mjs +0 -6
  59. package/esm2022/lib/modules/help/help-global-options.mjs +0 -2
  60. package/esm2022/lib/modules/help/help-open-args.mjs +0 -2
  61. package/esm2022/lib/modules/help/help-update-args.mjs +0 -2
  62. package/esm2022/lib/modules/help/help.service.mjs +0 -20
  63. package/esm2022/lib/modules/id/id.directive.mjs +0 -31
  64. package/esm2022/lib/modules/id/id.module.mjs +0 -16
  65. package/esm2022/lib/modules/id/id.service.mjs +0 -24
  66. package/esm2022/lib/modules/layout-host/layout-host-for-child-args.mjs +0 -2
  67. package/esm2022/lib/modules/layout-host/layout-host.service.mjs +0 -22
  68. package/esm2022/lib/modules/live-announcer/live-announcer.service.mjs +0 -81
  69. package/esm2022/lib/modules/live-announcer/types/live-announcer-args.mjs +0 -2
  70. package/esm2022/lib/modules/live-announcer/types/live-announcer-politeness.mjs +0 -2
  71. package/esm2022/lib/modules/log/log.module.mjs +0 -16
  72. package/esm2022/lib/modules/log/log.service.mjs +0 -148
  73. package/esm2022/lib/modules/log/types/log-deprecation-args.mjs +0 -2
  74. package/esm2022/lib/modules/log/types/log-level-token.mjs +0 -6
  75. package/esm2022/lib/modules/log/types/log-level.mjs +0 -10
  76. package/esm2022/lib/modules/media-query/media-breakpoints.mjs +0 -24
  77. package/esm2022/lib/modules/media-query/media-query-listener.mjs +0 -2
  78. package/esm2022/lib/modules/media-query/media-query.module.mjs +0 -16
  79. package/esm2022/lib/modules/media-query/media-query.service.mjs +0 -82
  80. package/esm2022/lib/modules/mutation/mutation-observer-service.mjs +0 -19
  81. package/esm2022/lib/modules/numeric/numeric-symbol.mjs +0 -2
  82. package/esm2022/lib/modules/numeric/numeric.module.mjs +0 -19
  83. package/esm2022/lib/modules/numeric/numeric.options.mjs +0 -24
  84. package/esm2022/lib/modules/numeric/numeric.pipe.mjs +0 -84
  85. package/esm2022/lib/modules/numeric/numeric.service.mjs +0 -200
  86. package/esm2022/lib/modules/overlay/overlay-adapter.service.mjs +0 -74
  87. package/esm2022/lib/modules/overlay/overlay-config.mjs +0 -2
  88. package/esm2022/lib/modules/overlay/overlay-context.mjs +0 -10
  89. package/esm2022/lib/modules/overlay/overlay-instance.mjs +0 -62
  90. package/esm2022/lib/modules/overlay/overlay-position.mjs +0 -2
  91. package/esm2022/lib/modules/overlay/overlay.component.mjs +0 -203
  92. package/esm2022/lib/modules/overlay/overlay.module.mjs +0 -15
  93. package/esm2022/lib/modules/overlay/overlay.service.mjs +0 -134
  94. package/esm2022/lib/modules/percent-pipe/percent-pipe.module.mjs +0 -19
  95. package/esm2022/lib/modules/percent-pipe/percent.pipe.mjs +0 -56
  96. package/esm2022/lib/modules/resize-observer/resize-observer-media-query.service.mjs +0 -153
  97. package/esm2022/lib/modules/resize-observer/resize-observer.service.mjs +0 -115
  98. package/esm2022/lib/modules/screen-reader-label/screen-reader-label.directive.mjs +0 -66
  99. package/esm2022/lib/modules/scroll-shadow/scroll-shadow-event-args.mjs +0 -2
  100. package/esm2022/lib/modules/scroll-shadow/scroll-shadow.directive.mjs +0 -123
  101. package/esm2022/lib/modules/scrollable-host/scrollable-host.service.mjs +0 -223
  102. package/esm2022/lib/modules/shared/number-format/number-format-utility.mjs +0 -72
  103. package/esm2022/lib/modules/shared/sky-core-resources.module.mjs +0 -34
  104. package/esm2022/lib/modules/stacking-context/stacking-context-token.mjs +0 -6
  105. package/esm2022/lib/modules/stacking-context/stacking-context.mjs +0 -2
  106. package/esm2022/lib/modules/title/set-title-args.mjs +0 -2
  107. package/esm2022/lib/modules/title/title.service.mjs +0 -31
  108. package/esm2022/lib/modules/trim/trim.directive.mjs +0 -64
  109. package/esm2022/lib/modules/trim/trim.module.mjs +0 -16
  110. package/esm2022/lib/modules/ui-config/ui-config.service.mjs +0 -21
  111. package/esm2022/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +0 -2
  112. package/esm2022/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +0 -2
  113. package/esm2022/lib/modules/viewkeeper/viewkeeper-host-options.mjs +0 -10
  114. package/esm2022/lib/modules/viewkeeper/viewkeeper-offset.mjs +0 -2
  115. package/esm2022/lib/modules/viewkeeper/viewkeeper-options.mjs +0 -2
  116. package/esm2022/lib/modules/viewkeeper/viewkeeper.directive.mjs +0 -131
  117. package/esm2022/lib/modules/viewkeeper/viewkeeper.mjs +0 -296
  118. package/esm2022/lib/modules/viewkeeper/viewkeeper.module.mjs +0 -16
  119. package/esm2022/lib/modules/viewkeeper/viewkeeper.service.mjs +0 -39
  120. package/esm2022/lib/modules/window/window-ref.mjs +0 -30
  121. package/esm2022/skyux-core.mjs +0 -5
  122. package/esm2022/testing/legacy/core-testing.module.mjs +0 -32
  123. package/esm2022/testing/legacy/mock-media-query.service.mjs +0 -47
  124. package/esm2022/testing/legacy/mock-ui-config.service.mjs +0 -62
  125. package/esm2022/testing/legacy/resize-observer-mock.mjs +0 -50
  126. package/esm2022/testing/modules/file-reader/file-reader-testing.service.mjs +0 -19
  127. package/esm2022/testing/modules/file-reader/provide-file-reader-testing.mjs +0 -22
  128. package/esm2022/testing/modules/help/help-testing-controller.mjs +0 -28
  129. package/esm2022/testing/modules/help/help-testing.module.mjs +0 -32
  130. package/esm2022/testing/modules/help/help-testing.service.mjs +0 -37
  131. package/esm2022/testing/modules/media-query/breakpoint-observer-testing.mjs +0 -26
  132. package/esm2022/testing/modules/media-query/media-query-testing-controller.mjs +0 -22
  133. package/esm2022/testing/modules/media-query/provide-media-query-testing.mjs +0 -26
  134. package/esm2022/testing/modules/overlay/overlay-harness-filters.mjs +0 -2
  135. package/esm2022/testing/modules/overlay/overlay-harness.mjs +0 -20
  136. package/esm2022/testing/public-api.mjs +0 -15
  137. package/esm2022/testing/shared/component-harness.mjs +0 -13
  138. package/esm2022/testing/shared/harness-filters.mjs +0 -2
  139. package/esm2022/testing/shared/harness-utility.mjs +0 -7
  140. package/esm2022/testing/shared/input-harness.mjs +0 -63
  141. package/esm2022/testing/shared/queryable-component-harness.mjs +0 -43
  142. package/esm2022/testing/skyux-core-testing.mjs +0 -5
  143. package/esm2022/version.mjs +0 -19
@@ -1,223 +0,0 @@
1
- import { Injectable, Optional } from '@angular/core';
2
- import { Observable, Subject, animationFrameScheduler, concat, fromEvent, of, } from 'rxjs';
3
- import { debounceTime, map, switchMap, takeUntil } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../mutation/mutation-observer-service";
6
- import * as i2 from "../window/window-ref";
7
- import * as i3 from "../resize-observer/resize-observer.service";
8
- function notifySubscribers(subscribers, item) {
9
- for (const subscriber of subscribers) {
10
- subscriber.next(item);
11
- }
12
- }
13
- export class SkyScrollableHostService {
14
- #mutationObserverSvc;
15
- #windowRef;
16
- #resizeObserverSvc;
17
- constructor(mutationObserverSvc, windowRef, resizeObserverSvc) {
18
- this.#mutationObserverSvc = mutationObserverSvc;
19
- this.#resizeObserverSvc = resizeObserverSvc;
20
- this.#windowRef = windowRef;
21
- }
22
- /**
23
- * Returns the given element's current scrollable host
24
- * @param elementRef The element whose scrollable host is being requested
25
- * @returns The current scrollable host
26
- */
27
- getScrollableHost(elementRef) {
28
- return this.#findScrollableHost(elementRef.nativeElement);
29
- }
30
- /**
31
- * Returns an observable which emits the given element's current scrollable host
32
- * @param elementRef The element whose scrollable host is being requested
33
- * @returns An observable which emits the current scrollable host element.
34
- * @internal
35
- */
36
- watchScrollableHost(elementRef) {
37
- const subscribers = [];
38
- let parentMutationObserver;
39
- let documentHiddenElementMutationObserver;
40
- return new Observable((subscriber) => {
41
- subscribers.push(subscriber);
42
- let scrollableHost = this.#findScrollableHost(elementRef.nativeElement);
43
- // Setup mutation observers only once, for all subscribers.
44
- if (subscribers.length === 1) {
45
- parentMutationObserver = this.#mutationObserverSvc.create(() => {
46
- const newScrollableHost = this.#findScrollableHost(elementRef.nativeElement);
47
- // Reset observer if scrollable host changes.
48
- if (newScrollableHost !== scrollableHost &&
49
- this.#isElementVisible(elementRef)) {
50
- scrollableHost = newScrollableHost;
51
- this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
52
- notifySubscribers(subscribers, scrollableHost);
53
- }
54
- });
55
- this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
56
- documentHiddenElementMutationObserver =
57
- this.#mutationObserverSvc.create(() => {
58
- if (scrollableHost && !this.#isElementVisible(elementRef)) {
59
- // If the scrollable host is not visible, set it to undefined and unsubscribe from its mutation changes.
60
- // Then, observe the document element so that a new scrollable host can be found.
61
- scrollableHost = undefined;
62
- this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
63
- notifySubscribers(subscribers, scrollableHost);
64
- }
65
- });
66
- this.#observeDocumentHiddenElementChanges(documentHiddenElementMutationObserver);
67
- }
68
- // Emit the scrollable host to the subscriber.
69
- subscriber.next(scrollableHost);
70
- // Teardown callback for the subscription.
71
- subscriber.add(() => {
72
- const subIndex = subscribers.indexOf(subscriber);
73
- /* istanbul ignore else */
74
- if (subIndex >= 0) {
75
- subscribers.splice(subIndex, 1);
76
- }
77
- if (subscribers.length === 0) {
78
- documentHiddenElementMutationObserver.disconnect();
79
- parentMutationObserver.disconnect();
80
- }
81
- });
82
- });
83
- }
84
- /**
85
- * Returns an observable which emits whenever the element's scrollable host emits a scroll event. The observable will always emit the scroll events from the elements current scrollable host and will update based on any scrollable host changes. The observable will also emit once whenever the scrollable host changes.
86
- * @param elementRef The element whose scrollable host scroll events are being requested
87
- * @returns An observable which emits when the elements scrollable host is scrolled or is changed
88
- */
89
- watchScrollableHostScrollEvents(elementRef) {
90
- const subscribers = [];
91
- let scrollableHost;
92
- let newScrollableHostObservable = new Subject();
93
- let scrollableHostSubscription;
94
- let scrollEventSubscription;
95
- return new Observable((subscriber) => {
96
- subscribers.push(subscriber);
97
- // Setup mutation observers only once, for all subscribers.
98
- if (subscribers.length === 1) {
99
- scrollableHostSubscription = this.watchScrollableHost(elementRef).subscribe((newScrollableHost) => {
100
- newScrollableHostObservable.next();
101
- newScrollableHostObservable.complete();
102
- if (scrollableHost && scrollableHost !== newScrollableHost) {
103
- notifySubscribers(subscribers);
104
- }
105
- scrollableHost = newScrollableHost;
106
- newScrollableHostObservable = new Subject();
107
- // Only subscribe to scroll events if the host element is defined.
108
- /* istanbul ignore else */
109
- if (newScrollableHost) {
110
- scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')
111
- .pipe(takeUntil(newScrollableHostObservable))
112
- .subscribe(() => {
113
- notifySubscribers(subscribers);
114
- });
115
- }
116
- });
117
- }
118
- // Teardown callback for the subscription.
119
- subscriber.add(() => {
120
- const subIndex = subscribers.indexOf(subscriber);
121
- /* istanbul ignore else */
122
- if (subIndex >= 0) {
123
- subscribers.splice(subIndex, 1);
124
- }
125
- if (subscribers.length === 0) {
126
- scrollableHostSubscription.unsubscribe();
127
- scrollEventSubscription.unsubscribe();
128
- newScrollableHostObservable.complete();
129
- }
130
- });
131
- });
132
- }
133
- watchScrollableHostClipPathChanges(elementRef) {
134
- if (!this.#resizeObserverSvc) {
135
- return of('none');
136
- }
137
- return this.watchScrollableHost(elementRef).pipe(switchMap((scrollableHost) => {
138
- if (!this.#resizeObserverSvc ||
139
- !scrollableHost ||
140
- scrollableHost === this.#windowRef.nativeWindow) {
141
- return of('none');
142
- }
143
- return concat([
144
- of(undefined),
145
- this.#resizeObserverSvc.observe({ nativeElement: scrollableHost }),
146
- ]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
147
- const viewportSize = this.#getViewportSize();
148
- const { top, left, width, height } = scrollableHost.getBoundingClientRect();
149
- const right = Math.max(viewportSize.width - left - width, 0);
150
- const bottom = Math.max(viewportSize.height - top - height, 0);
151
- return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
152
- }));
153
- }));
154
- }
155
- #findScrollableHost(element) {
156
- const regex = /(auto|scroll)/;
157
- const windowObj = this.#windowRef.nativeWindow;
158
- const bodyObj = windowObj.document.body;
159
- if (!element) {
160
- return windowObj;
161
- }
162
- let style = windowObj.getComputedStyle(element);
163
- let parent = element;
164
- do {
165
- parent = parent.parentNode;
166
- // Return `window` if the parent element has been removed from the DOM.
167
- if (!(parent instanceof HTMLElement)) {
168
- return windowObj;
169
- }
170
- style = windowObj.getComputedStyle(parent);
171
- } while (!regex.test(style.overflow) &&
172
- !regex.test(style.overflowY) &&
173
- parent !== bodyObj);
174
- if (parent === bodyObj) {
175
- return windowObj;
176
- }
177
- return parent;
178
- }
179
- #observeDocumentHiddenElementChanges(mutationObserver) {
180
- mutationObserver.observe(document.documentElement, {
181
- attributes: true,
182
- attributeFilter: ['class', 'style', 'hidden'],
183
- childList: true,
184
- subtree: true,
185
- });
186
- }
187
- #observeForScrollableHostChanges(element, mutationObserver) {
188
- mutationObserver.disconnect();
189
- const target = element instanceof HTMLElement ? element : document.documentElement;
190
- mutationObserver.observe(target, {
191
- attributes: true,
192
- attributeFilter: ['class', 'style'],
193
- childList: true,
194
- subtree: true,
195
- });
196
- }
197
- /**
198
- * Determines if an element is "visible" in the DOM.
199
- * @see https://stackoverflow.com/a/11639664/6178885
200
- */
201
- #isElementVisible(elementRef) {
202
- return !!elementRef.nativeElement?.offsetParent;
203
- }
204
- #getViewportSize() {
205
- const win = this.#windowRef.nativeWindow;
206
- const docElem = win.document.documentElement;
207
- return {
208
- width: docElem.clientWidth,
209
- height: docElem.clientHeight,
210
- };
211
- }
212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.SkyMutationObserverService }, { token: i2.SkyAppWindowRef }, { token: i3.SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
213
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' }); }
214
- }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyScrollableHostService, decorators: [{
216
- type: Injectable,
217
- args: [{
218
- providedIn: 'root',
219
- }]
220
- }], ctorParameters: () => [{ type: i1.SkyMutationObserverService }, { type: i2.SkyAppWindowRef }, { type: i3.SkyResizeObserverService, decorators: [{
221
- type: Optional
222
- }] }] });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUdQLHVCQUF1QixFQUN2QixNQUFNLEVBQ04sU0FBUyxFQUNULEVBQUUsR0FDSCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFNekUsU0FBUyxpQkFBaUIsQ0FBQyxXQUFrQyxFQUFFLElBQWM7SUFDM0UsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNyQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7QUFDSCxDQUFDO0FBS0QsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxvQkFBb0IsQ0FBNkI7SUFFakQsVUFBVSxDQUFrQjtJQUU1QixrQkFBa0IsQ0FBdUM7SUFFekQsWUFDRSxtQkFBK0MsRUFDL0MsU0FBMEIsRUFDZCxpQkFBNEM7UUFFeEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDO1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLFVBQXNCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxtQkFBbUIsQ0FDeEIsVUFBc0I7UUFFdEIsTUFBTSxXQUFXLEdBQXVDLEVBQUUsQ0FBQztRQUUzRCxJQUFJLHNCQUF3QyxDQUFDO1FBQzdDLElBQUkscUNBQXVELENBQUM7UUFFNUQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25DLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFN0IsSUFBSSxjQUFjLEdBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFckQsMkRBQTJEO1lBQzNELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDN0Isc0JBQXNCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7b0JBQzdELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUNoRCxVQUFVLENBQUMsYUFBYSxDQUN6QixDQUFDO29CQUVGLDZDQUE2QztvQkFDN0MsSUFDRSxpQkFBaUIsS0FBSyxjQUFjO3dCQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQ2xDLENBQUM7d0JBQ0QsY0FBYyxHQUFHLGlCQUFpQixDQUFDO3dCQUVuQyxJQUFJLENBQUMsZ0NBQWdDLENBQ25DLGNBQWMsRUFDZCxzQkFBc0IsQ0FDdkIsQ0FBQzt3QkFFRixpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7b0JBQ2pELENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLGdDQUFnQyxDQUNuQyxjQUFjLEVBQ2Qsc0JBQXNCLENBQ3ZCLENBQUM7Z0JBRUYscUNBQXFDO29CQUNuQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTt3QkFDcEMsSUFBSSxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQzs0QkFDMUQsd0dBQXdHOzRCQUN4RyxpRkFBaUY7NEJBQ2pGLGNBQWMsR0FBRyxTQUFTLENBQUM7NEJBRTNCLElBQUksQ0FBQyxnQ0FBZ0MsQ0FDbkMsY0FBYyxFQUNkLHNCQUFzQixDQUN2QixDQUFDOzRCQUVGLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQzt3QkFDakQsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFTCxJQUFJLENBQUMsb0NBQW9DLENBQ3ZDLHFDQUFxQyxDQUN0QyxDQUFDO1lBQ0osQ0FBQztZQUVELDhDQUE4QztZQUM5QyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRWhDLDBDQUEwQztZQUMxQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFakQsMEJBQTBCO2dCQUMxQixJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7Z0JBRUQsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM3QixxQ0FBcUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDbkQsc0JBQXNCLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3RDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSwrQkFBK0IsQ0FDcEMsVUFBc0I7UUFFdEIsTUFBTSxXQUFXLEdBQXVCLEVBQUUsQ0FBQztRQUUzQyxJQUFJLGNBQW9DLENBQUM7UUFFekMsSUFBSSwyQkFBMkIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3RELElBQUksMEJBQXdDLENBQUM7UUFDN0MsSUFBSSx1QkFBcUMsQ0FBQztRQUUxQyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbkMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUU3QiwyREFBMkQ7WUFDM0QsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QiwwQkFBMEIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQ25ELFVBQVUsQ0FDWCxDQUFDLFNBQVMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7b0JBQ2hDLDJCQUEyQixDQUFDLElBQUksRUFBRSxDQUFDO29CQUNuQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFFdkMsSUFBSSxjQUFjLElBQUksY0FBYyxLQUFLLGlCQUFpQixFQUFFLENBQUM7d0JBQzNELGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNqQyxDQUFDO29CQUVELGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztvQkFDbkMsMkJBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFFNUMsa0VBQWtFO29CQUNsRSwwQkFBMEI7b0JBQzFCLElBQUksaUJBQWlCLEVBQUUsQ0FBQzt3QkFDdEIsdUJBQXVCLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQzs2QkFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDOzZCQUM1QyxTQUFTLENBQUMsR0FBRyxFQUFFOzRCQUNkLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUNqQyxDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELDBDQUEwQztZQUMxQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFakQsMEJBQTBCO2dCQUMxQixJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7Z0JBRUQsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM3QiwwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDekMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3RDLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxrQ0FBa0MsQ0FDdkMsVUFBc0I7UUFFdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzNCLElBQ0UsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO2dCQUN4QixDQUFDLGNBQWM7Z0JBQ2YsY0FBYyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUMvQyxDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztnQkFDWixFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLENBQUM7YUFDbkUsQ0FBQyxDQUFDLElBQUksQ0FDTCxZQUFZLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLEVBQ3hDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FDaEMsY0FDRCxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDL0QsT0FBTyxTQUFTLEdBQUcsTUFBTSxLQUFLLE1BQU0sTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDO1lBQzVELENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQWdDO1FBQ2xELE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQztRQUM5QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUV4QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUVyQixHQUFHLENBQUM7WUFDRixNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQXlCLENBQUM7WUFFMUMsdUVBQXVFO1lBQ3ZFLElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBWSxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBRUQsS0FBSyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDLFFBQ0MsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDM0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDNUIsTUFBTSxLQUFLLE9BQU8sRUFDbEI7UUFFRixJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN2QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELG9DQUFvQyxDQUFDLGdCQUFrQztRQUNyRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUNqRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztZQUM3QyxTQUFTLEVBQUUsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdDQUFnQyxDQUM5QixPQUF5QyxFQUN6QyxnQkFBa0M7UUFFbEMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFOUIsTUFBTSxNQUFNLEdBQ1YsT0FBTyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBRXRFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDL0IsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztZQUNuQyxTQUFTLEVBQUUsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLFVBQXNCO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDO0lBQ2xELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUN6QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUU3QyxPQUFPO1lBQ0wsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQzFCLE1BQU0sRUFBRSxPQUFPLENBQUMsWUFBWTtTQUM3QixDQUFDO0lBQ0osQ0FBQzsrR0FuU1Usd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7NEZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBV0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmliZXIsXG4gIFN1YnNjcmlwdGlvbixcbiAgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsXG4gIGNvbmNhdCxcbiAgZnJvbUV2ZW50LFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnLi4vd2luZG93L3dpbmRvdy1yZWYnO1xuXG5mdW5jdGlvbiBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVyczogU3Vic2NyaWJlcjx1bmtub3duPltdLCBpdGVtPzogdW5rbm93bikge1xuICBmb3IgKGNvbnN0IHN1YnNjcmliZXIgb2Ygc3Vic2NyaWJlcnMpIHtcbiAgICBzdWJzY3JpYmVyLm5leHQoaXRlbSk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVNjcm9sbGFibGVIb3N0U2VydmljZSB7XG4gICNtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZTtcblxuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG5cbiAgI3Jlc2l6ZU9ic2VydmVyU3ZjOiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbXV0YXRpb25PYnNlcnZlclN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgQE9wdGlvbmFsKCkgcmVzaXplT2JzZXJ2ZXJTdmM/OiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMgPSBtdXRhdGlvbk9ic2VydmVyU3ZjO1xuICAgIHRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjID0gcmVzaXplT2JzZXJ2ZXJTdmM7XG4gICAgdGhpcy4jd2luZG93UmVmID0gd2luZG93UmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGdpdmVuIGVsZW1lbnQncyBjdXJyZW50IHNjcm9sbGFibGUgaG9zdFxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgZWxlbWVudCB3aG9zZSBzY3JvbGxhYmxlIGhvc3QgaXMgYmVpbmcgcmVxdWVzdGVkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNjcm9sbGFibGUgaG9zdFxuICAgKi9cbiAgcHVibGljIGdldFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiBIVE1MRWxlbWVudCB8IFdpbmRvdyB7XG4gICAgcmV0dXJuIHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB0aGUgZ2l2ZW4gZWxlbWVudCdzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBpcyBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGhvc3QgZWxlbWVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdChcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApOiBPYnNlcnZhYmxlPEhUTUxFbGVtZW50IHwgV2luZG93PiB7XG4gICAgY29uc3Qgc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8SFRNTEVsZW1lbnQgfCBXaW5kb3c+W10gPSBbXTtcblxuICAgIGxldCBwYXJlbnRNdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuICAgIGxldCBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBzdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuXG4gICAgICBsZXQgc2Nyb2xsYWJsZUhvc3Q6IEhUTUxFbGVtZW50IHwgV2luZG93IHwgdW5kZWZpbmVkID1cbiAgICAgICAgdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgIC8vIFNldHVwIG11dGF0aW9uIG9ic2VydmVycyBvbmx5IG9uY2UsIGZvciBhbGwgc3Vic2NyaWJlcnMuXG4gICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXIgPSB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U2Nyb2xsYWJsZUhvc3QgPSB0aGlzLiNmaW5kU2Nyb2xsYWJsZUhvc3QoXG4gICAgICAgICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIFJlc2V0IG9ic2VydmVyIGlmIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0ICE9PSBzY3JvbGxhYmxlSG9zdCAmJlxuICAgICAgICAgICAgdGhpcy4jaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcblxuICAgICAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXIsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycywgc2Nyb2xsYWJsZUhvc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICBzY3JvbGxhYmxlSG9zdCxcbiAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLFxuICAgICAgICApO1xuXG4gICAgICAgIGRvY3VtZW50SGlkZGVuRWxlbWVudE11dGF0aW9uT2JzZXJ2ZXIgPVxuICAgICAgICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMuY3JlYXRlKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlSG9zdCAmJiAhdGhpcy4jaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmKSkge1xuICAgICAgICAgICAgICAvLyBJZiB0aGUgc2Nyb2xsYWJsZSBob3N0IGlzIG5vdCB2aXNpYmxlLCBzZXQgaXQgdG8gdW5kZWZpbmVkIGFuZCB1bnN1YnNjcmliZSBmcm9tIGl0cyBtdXRhdGlvbiBjaGFuZ2VzLlxuICAgICAgICAgICAgICAvLyBUaGVuLCBvYnNlcnZlIHRoZSBkb2N1bWVudCBlbGVtZW50IHNvIHRoYXQgYSBuZXcgc2Nyb2xsYWJsZSBob3N0IGNhbiBiZSBmb3VuZC5cbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlSG9zdCxcbiAgICAgICAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMoXG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlcixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gRW1pdCB0aGUgc2Nyb2xsYWJsZSBob3N0IHRvIHRoZSBzdWJzY3JpYmVyLlxuICAgICAgc3Vic2NyaWJlci5uZXh0KHNjcm9sbGFibGVIb3N0KTtcblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGVuZXZlciB0aGUgZWxlbWVudCdzIHNjcm9sbGFibGUgaG9zdCBlbWl0cyBhIHNjcm9sbCBldmVudC4gVGhlIG9ic2VydmFibGUgd2lsbCBhbHdheXMgZW1pdCB0aGUgc2Nyb2xsIGV2ZW50cyBmcm9tIHRoZSBlbGVtZW50cyBjdXJyZW50IHNjcm9sbGFibGUgaG9zdCBhbmQgd2lsbCB1cGRhdGUgYmFzZWQgb24gYW55IHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLiBUaGUgb2JzZXJ2YWJsZSB3aWxsIGFsc28gZW1pdCBvbmNlIHdoZW5ldmVyIHRoZSBzY3JvbGxhYmxlIGhvc3QgY2hhbmdlcy5cbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IHNjcm9sbCBldmVudHMgYXJlIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW4gdGhlIGVsZW1lbnRzIHNjcm9sbGFibGUgaG9zdCBpcyBzY3JvbGxlZCBvciBpcyBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdFNjcm9sbEV2ZW50cyhcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBzdWJzY3JpYmVyczogU3Vic2NyaWJlcjx2b2lkPltdID0gW107XG5cbiAgICBsZXQgc2Nyb2xsYWJsZUhvc3Q6IEhUTUxFbGVtZW50IHwgV2luZG93O1xuXG4gICAgbGV0IG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgbGV0IHNjcm9sbGFibGVIb3N0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgbGV0IHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIHN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG5cbiAgICAgIC8vIFNldHVwIG11dGF0aW9uIG9ic2VydmVycyBvbmx5IG9uY2UsIGZvciBhbGwgc3Vic2NyaWJlcnMuXG4gICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHNjcm9sbGFibGVIb3N0U3Vic2NyaXB0aW9uID0gdGhpcy53YXRjaFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICkuc3Vic2NyaWJlKChuZXdTY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5uZXh0KCk7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgc2Nyb2xsYWJsZUhvc3QgIT09IG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgICAgICAgLy8gT25seSBzdWJzY3JpYmUgdG8gc2Nyb2xsIGV2ZW50cyBpZiB0aGUgaG9zdCBlbGVtZW50IGlzIGRlZmluZWQuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAobmV3U2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgICAgICAgIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG5ld1Njcm9sbGFibGVIb3N0LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0Q2xpcFBhdGhDaGFuZ2VzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF0aGlzLiNyZXNpemVPYnNlcnZlclN2Yykge1xuICAgICAgcmV0dXJuIG9mKCdub25lJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMud2F0Y2hTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChzY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjIHx8XG4gICAgICAgICAgIXNjcm9sbGFibGVIb3N0IHx8XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPT09IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3dcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCdub25lJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uY2F0KFtcbiAgICAgICAgICBvZih1bmRlZmluZWQpLFxuICAgICAgICAgIHRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjLm9ic2VydmUoeyBuYXRpdmVFbGVtZW50OiBzY3JvbGxhYmxlSG9zdCB9KSxcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFNpemUgPSB0aGlzLiNnZXRWaWV3cG9ydFNpemUoKTtcbiAgICAgICAgICAgIGNvbnN0IHsgdG9wLCBsZWZ0LCB3aWR0aCwgaGVpZ2h0IH0gPSAoXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0IGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgICApLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBNYXRoLm1heCh2aWV3cG9ydFNpemUud2lkdGggLSBsZWZ0IC0gd2lkdGgsIDApO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gTWF0aC5tYXgodmlld3BvcnRTaXplLmhlaWdodCAtIHRvcCAtIGhlaWdodCwgMCk7XG4gICAgICAgICAgICByZXR1cm4gYGluc2V0KCR7dG9wfXB4ICR7cmlnaHR9cHggJHtib3R0b219cHggJHtsZWZ0fXB4KWA7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICBjb25zdCByZWdleCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgICBjb25zdCB3aW5kb3dPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93O1xuICAgIGNvbnN0IGJvZHlPYmogPSB3aW5kb3dPYmouZG9jdW1lbnQuYm9keTtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHdpbmRvd09iajtcbiAgICB9XG5cbiAgICBsZXQgc3R5bGUgPSB3aW5kb3dPYmouZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBsZXQgcGFyZW50ID0gZWxlbWVudDtcblxuICAgIGRvIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAvLyBSZXR1cm4gYHdpbmRvd2AgaWYgdGhlIHBhcmVudCBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAgaWYgKCEocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlID0gd2luZG93T2JqLmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICB9IHdoaWxlIChcbiAgICAgICFyZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93KSAmJlxuICAgICAgIXJlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3dZKSAmJlxuICAgICAgcGFyZW50ICE9PSBib2R5T2JqXG4gICAgKTtcblxuICAgIGlmIChwYXJlbnQgPT09IGJvZHlPYmopIHtcbiAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfVxuXG4gICNvYnNlcnZlRG9jdW1lbnRIaWRkZW5FbGVtZW50Q2hhbmdlcyhtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZScsICdoaWRkZW4nXSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAjb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCxcbiAgICBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyLFxuICApIHtcbiAgICBtdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblxuICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICBlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBlbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRhcmdldCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZSddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGFuIGVsZW1lbnQgaXMgXCJ2aXNpYmxlXCIgaW4gdGhlIERPTS5cbiAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTE2Mzk2NjQvNjE3ODg4NVxuICAgKi9cbiAgI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8ub2Zmc2V0UGFyZW50O1xuICB9XG5cbiAgI2dldFZpZXdwb3J0U2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHdpbiA9IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3c7XG4gICAgY29uc3QgZG9jRWxlbSA9IHdpbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IGRvY0VsZW0uY2xpZW50V2lkdGgsXG4gICAgICBoZWlnaHQ6IGRvY0VsZW0uY2xpZW50SGVpZ2h0LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,72 +0,0 @@
1
- /* eslint-disable eqeqeq */
2
- // This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old
3
- // behavior of using the `Intl` API for formatting numbers rather than having to register every
4
- // supported locale.
5
- // https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/number_pipe.ts
6
- import { SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
7
- function isNumeric(value) {
8
- return !isNaN(value - parseFloat(value));
9
- }
10
- function parseIntAutoRadix(text) {
11
- const result = parseInt(text, 10);
12
- /* istanbul ignore next */
13
- if (isNaN(result)) {
14
- throw new Error('Invalid integer literal when parsing ' + text);
15
- }
16
- return result;
17
- }
18
- // Need to add the following to classes which contain static methods.
19
- // See: https://github.com/ng-packagr/ng-packagr/issues/641
20
- // @dynamic
21
- export class SkyNumberFormatUtility {
22
- static { this._NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(-(\d+))?)?$/; }
23
- static formatNumber(locale, value, style, digits, currency = null, currencyDisplay = 'code', currencySign) {
24
- if (value == null) {
25
- return null;
26
- }
27
- // Convert strings to numbers
28
- value = typeof value === 'string' && isNumeric(value) ? +value : value;
29
- if (typeof value !== 'number') {
30
- throw Error(`SkyInvalidPipeArgument: '${value}'`);
31
- }
32
- let minInt = undefined;
33
- let minFraction = undefined;
34
- let maxFraction = undefined;
35
- if (style !== SkyIntlNumberFormatStyle.Currency) {
36
- // rely on Intl default for currency
37
- minInt = 1;
38
- minFraction = 0;
39
- maxFraction = 3;
40
- }
41
- if (digits) {
42
- const parts = digits.match(this._NUMBER_FORMAT_REGEXP);
43
- if (parts === null) {
44
- throw new Error(`${digits} is not a valid digit info for number pipes`);
45
- }
46
- /* istanbul ignore else */
47
- if (parts[1] != null) {
48
- // min integer digits
49
- minInt = parseIntAutoRadix(parts[1]);
50
- }
51
- /* istanbul ignore else */
52
- if (parts[3] != null) {
53
- // min fraction digits
54
- minFraction = parseIntAutoRadix(parts[3]);
55
- }
56
- /* istanbul ignore else */
57
- if (parts[5] != null) {
58
- // max fraction digits
59
- maxFraction = parseIntAutoRadix(parts[5]);
60
- }
61
- }
62
- return SkyIntlNumberFormatter.format(value, locale, style, {
63
- minimumIntegerDigits: minInt,
64
- minimumFractionDigits: minFraction,
65
- maximumFractionDigits: maxFraction,
66
- currency: currency,
67
- currencyDisplay: currencyDisplay,
68
- currencySign: currencySign,
69
- });
70
- }
71
- }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZvcm1hdC11dGlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9udW1iZXItZm9ybWF0L251bWJlci1mb3JtYXQtdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsMEZBQTBGO0FBQzFGLCtGQUErRjtBQUMvRixvQkFBb0I7QUFDcEIseUZBQXlGO0FBQ3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvRSxTQUFTLFNBQVMsQ0FBQyxLQUFVO0lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVk7SUFDckMsTUFBTSxNQUFNLEdBQVcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUUxQywwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLDJEQUEyRDtBQUMzRCxXQUFXO0FBQ1gsTUFBTSxPQUFPLHNCQUFzQjthQUNsQiwwQkFBcUIsR0FBRyw2QkFBNkIsQ0FBQztJQUU5RCxNQUFNLENBQUMsWUFBWSxDQUN4QixNQUFjLEVBQ2QsS0FBc0IsRUFDdEIsS0FBK0IsRUFDL0IsTUFBc0IsRUFDdEIsV0FBMEIsSUFBSSxFQUM5QixrQkFBK0QsTUFBTSxFQUNyRSxZQUF3QztRQUV4QyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsS0FBSyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLEtBQUssQ0FBQyw0QkFBNEIsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQXVCLFNBQVMsQ0FBQztRQUMzQyxJQUFJLFdBQVcsR0FBdUIsU0FBUyxDQUFDO1FBQ2hELElBQUksV0FBVyxHQUF1QixTQUFTLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEQsb0NBQW9DO1lBQ3BDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDWCxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRXZELElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsTUFBTSw2Q0FBNkMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHFCQUFxQjtnQkFDckIsTUFBTSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDbkUsb0JBQW9CLEVBQUUsTUFBTTtZQUM1QixxQkFBcUIsRUFBRSxXQUFXO1lBQ2xDLHFCQUFxQixFQUFFLFdBQVc7WUFDbEMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUFFLGVBQWU7WUFDaEMsWUFBWSxFQUFFLFlBQVk7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuLy8gVGhpcyBmaWxlIGlzIG1vc3RseSBwb3J0ZWQgZnJvbSB0aGUgQW5ndWxhciA0LnggTnVtYmVyUGlwZSBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgb2xkXG4vLyBiZWhhdmlvciBvZiB1c2luZyB0aGUgYEludGxgIEFQSSBmb3IgZm9ybWF0dGluZyBudW1iZXJzIHJhdGhlciB0aGFuIGhhdmluZyB0byByZWdpc3RlciBldmVyeVxuLy8gc3VwcG9ydGVkIGxvY2FsZS5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi80LjQueC9wYWNrYWdlcy9jb21tb24vc3JjL3BpcGVzL251bWJlcl9waXBlLnRzXG5pbXBvcnQgeyBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUsIFNreUludGxOdW1iZXJGb3JtYXR0ZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmZ1bmN0aW9uIGlzTnVtZXJpYyh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNOYU4odmFsdWUgLSBwYXJzZUZsb2F0KHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW50QXV0b1JhZGl4KHRleHQ6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHJlc3VsdDogbnVtYmVyID0gcGFyc2VJbnQodGV4dCwgMTApO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChpc05hTihyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgJyArIHRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gTmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBjbGFzc2VzIHdoaWNoIGNvbnRhaW4gc3RhdGljIG1ldGhvZHMuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzY0MVxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBTa3lOdW1iZXJGb3JtYXRVdGlsaXR5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX05VTUJFUl9GT1JNQVRfUkVHRVhQID0gL14oXFxkKyk/XFwuKChcXGQrKSgtKFxcZCspKT8pPyQvO1xuXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0TnVtYmVyKFxuICAgIGxvY2FsZTogc3RyaW5nLFxuICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgc3R5bGU6IFNreUludGxOdW1iZXJGb3JtYXRTdHlsZSxcbiAgICBkaWdpdHM/OiBzdHJpbmcgfCBudWxsLFxuICAgIGN1cnJlbmN5OiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJyB8ICdzeW1ib2wnIHwgJ25hcnJvd1N5bWJvbCcgfCAnbmFtZScgPSAnY29kZScsXG4gICAgY3VycmVuY3lTaWduPzogJ2FjY291bnRpbmcnIHwgJ3N0YW5kYXJkJyxcbiAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgc3RyaW5ncyB0byBudW1iZXJzXG4gICAgdmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIGlzTnVtZXJpYyh2YWx1ZSkgPyArdmFsdWUgOiB2YWx1ZTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgRXJyb3IoYFNreUludmFsaWRQaXBlQXJndW1lbnQ6ICcke3ZhbHVlfSdgKTtcbiAgICB9XG5cbiAgICBsZXQgbWluSW50OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IG1pbkZyYWN0aW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IG1heEZyYWN0aW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHN0eWxlICE9PSBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUuQ3VycmVuY3kpIHtcbiAgICAgIC8vIHJlbHkgb24gSW50bCBkZWZhdWx0IGZvciBjdXJyZW5jeVxuICAgICAgbWluSW50ID0gMTtcbiAgICAgIG1pbkZyYWN0aW9uID0gMDtcbiAgICAgIG1heEZyYWN0aW9uID0gMztcbiAgICB9XG5cbiAgICBpZiAoZGlnaXRzKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGRpZ2l0cy5tYXRjaCh0aGlzLl9OVU1CRVJfRk9STUFUX1JFR0VYUCk7XG5cbiAgICAgIGlmIChwYXJ0cyA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZGlnaXRzfSBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbmZvIGZvciBudW1iZXIgcGlwZXNgKTtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwYXJ0c1sxXSAhPSBudWxsKSB7XG4gICAgICAgIC8vIG1pbiBpbnRlZ2VyIGRpZ2l0c1xuICAgICAgICBtaW5JbnQgPSBwYXJzZUludEF1dG9SYWRpeChwYXJ0c1sxXSk7XG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocGFydHNbM10gIT0gbnVsbCkge1xuICAgICAgICAvLyBtaW4gZnJhY3Rpb24gZGlnaXRzXG4gICAgICAgIG1pbkZyYWN0aW9uID0gcGFyc2VJbnRBdXRvUmFkaXgocGFydHNbM10pO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHBhcnRzWzVdICE9IG51bGwpIHtcbiAgICAgICAgLy8gbWF4IGZyYWN0aW9uIGRpZ2l0c1xuICAgICAgICBtYXhGcmFjdGlvbiA9IHBhcnNlSW50QXV0b1JhZGl4KHBhcnRzWzVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gU2t5SW50bE51bWJlckZvcm1hdHRlci5mb3JtYXQodmFsdWUgYXMgbnVtYmVyLCBsb2NhbGUsIHN0eWxlLCB7XG4gICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogbWluSW50LFxuICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBtaW5GcmFjdGlvbixcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogbWF4RnJhY3Rpb24sXG4gICAgICBjdXJyZW5jeTogY3VycmVuY3ksXG4gICAgICBjdXJyZW5jeURpc3BsYXk6IGN1cnJlbmN5RGlzcGxheSxcbiAgICAgIGN1cnJlbmN5U2lnbjogY3VycmVuY3lTaWduLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,34 +0,0 @@
1
- /* istanbul ignore file */
2
- /**
3
- * NOTICE: DO NOT MODIFY THIS FILE!
4
- * The contents of this file were automatically generated by
5
- * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-core' schematic.
6
- * To update this file, simply rerun the command.
7
- */
8
- import { NgModule } from '@angular/core';
9
- import { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';
10
- import * as i0 from "@angular/core";
11
- const RESOURCES = {
12
- 'EN-US': {
13
- skyux_numeric_billions_symbol: { message: 'B' },
14
- skyux_numeric_millions_symbol: { message: 'M' },
15
- skyux_numeric_thousands_symbol: { message: 'K' },
16
- skyux_numeric_trillions_symbol: { message: 'T' },
17
- },
18
- };
19
- SkyLibResourcesService.addResources(RESOURCES);
20
- /**
21
- * Import into any component library module that needs to use resource strings.
22
- */
23
- export class SkyCoreResourcesModule {
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
25
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreResourcesModule, exports: [SkyI18nModule] }); }
26
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreResourcesModule, imports: [SkyI18nModule] }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreResourcesModule, decorators: [{
29
- type: NgModule,
30
- args: [{
31
- exports: [SkyI18nModule],
32
- }]
33
- }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1AsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQy9DLDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUMvQyw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDaEQsOEJBQThCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0tBQ2pEO0NBQ0YsQ0FBQztBQUVGLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUvQzs7R0FFRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7K0dBQXRCLHNCQUFzQjtnSEFBdEIsc0JBQXNCLFlBRnZCLGFBQWE7Z0hBRVosc0JBQXNCLFlBRnZCLGFBQWE7OzRGQUVaLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbi8qKlxuICogTk9USUNFOiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSFcbiAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieVxuICogdGhlICduZyBnZW5lcmF0ZSBAc2t5dXgvaTE4bjpsaWItcmVzb3VyY2VzLW1vZHVsZSBsaWIvbW9kdWxlcy9zaGFyZWQvc2t5LWNvcmUnIHNjaGVtYXRpYy5cbiAqIFRvIHVwZGF0ZSB0aGlzIGZpbGUsIHNpbXBseSByZXJ1biB0aGUgY29tbWFuZC5cbiAqL1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IFJlY29yZDxzdHJpbmcsIFNreUxpYlJlc291cmNlcz4gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9udW1lcmljX2JpbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnQicgfSxcbiAgICBza3l1eF9udW1lcmljX21pbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnTScgfSxcbiAgICBza3l1eF9udW1lcmljX3Rob3VzYW5kc19zeW1ib2w6IHsgbWVzc2FnZTogJ0snIH0sXG4gICAgc2t5dXhfbnVtZXJpY190cmlsbGlvbnNfc3ltYm9sOiB7IG1lc3NhZ2U6ICdUJyB9LFxuICB9LFxufTtcblxuU2t5TGliUmVzb3VyY2VzU2VydmljZS5hZGRSZXNvdXJjZXMoUkVTT1VSQ0VTKTtcblxuLyoqXG4gKiBJbXBvcnQgaW50byBhbnkgY29tcG9uZW50IGxpYnJhcnkgbW9kdWxlIHRoYXQgbmVlZHMgdG8gdXNlIHJlc291cmNlIHN0cmluZ3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lJMThuTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Q29yZVJlc291cmNlc01vZHVsZSB7fVxuIl19
@@ -1,6 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * @internal
4
- */
5
- export const SKY_STACKING_CONTEXT = new InjectionToken('SkyStackingContext');
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tpbmctY29udGV4dC10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zdGFja2luZy1jb250ZXh0L3N0YWNraW5nLWNvbnRleHQtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUNwRCxvQkFBb0IsQ0FDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVN0YWNraW5nQ29udGV4dCB9IGZyb20gJy4vc3RhY2tpbmctY29udGV4dCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBTS1lfU1RBQ0tJTkdfQ09OVEVYVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTa3lTdGFja2luZ0NvbnRleHQ+KFxuICAnU2t5U3RhY2tpbmdDb250ZXh0Jyxcbik7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tpbmctY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zdGFja2luZy1jb250ZXh0L3N0YWNraW5nLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lTdGFja2luZ0NvbnRleHQge1xuICAvLyBUaGUgei1pbmRleCB0byB1c2UgZm9yIHRoZSBzdGFja2luZyBjb250ZXh0LlxuICB6SW5kZXg6IE9ic2VydmFibGU8bnVtYmVyPjtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXRpdGxlLWFyZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdGl0bGUvc2V0LXRpdGxlLWFyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU2t5QXBwU2V0VGl0bGVBcmdzIHtcbiAgdGl0bGVQYXJ0czogc3RyaW5nW107XG59XG4iXX0=
@@ -1,31 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/platform-browser";
4
- /**
5
- * Provides a method for setting a formatted title on the current window.
6
- */
7
- export class SkyAppTitleService {
8
- #title;
9
- constructor(title) {
10
- this.#title = title;
11
- }
12
- /**
13
- * Sets the title on the current window.
14
- * @param args An array of title parts. The parts will be concatenated with a hyphen between
15
- * each part.
16
- */
17
- setTitle(args) {
18
- if (args?.titleParts) {
19
- this.#title.setTitle(args.titleParts.join(' - '));
20
- }
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppTitleService, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
23
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppTitleService, providedIn: 'root' }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppTitleService, decorators: [{
26
- type: Injectable,
27
- args: [{
28
- providedIn: 'root',
29
- }]
30
- }], ctorParameters: () => [{ type: i1.Title }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy90aXRsZS90aXRsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUszQzs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsTUFBTSxDQUFRO0lBRWQsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQW9DO1FBQ2xELElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7K0dBaEJVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBTa3lBcHBTZXRUaXRsZUFyZ3MgfSBmcm9tICcuL3NldC10aXRsZS1hcmdzJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3Igc2V0dGluZyBhIGZvcm1hdHRlZCB0aXRsZSBvbiB0aGUgY3VycmVudCB3aW5kb3cuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBcHBUaXRsZVNlcnZpY2Uge1xuICAjdGl0bGU6IFRpdGxlO1xuXG4gIGNvbnN0cnVjdG9yKHRpdGxlOiBUaXRsZSkge1xuICAgIHRoaXMuI3RpdGxlID0gdGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdGl0bGUgb24gdGhlIGN1cnJlbnQgd2luZG93LlxuICAgKiBAcGFyYW0gYXJncyBBbiBhcnJheSBvZiB0aXRsZSBwYXJ0cy4gVGhlIHBhcnRzIHdpbGwgYmUgY29uY2F0ZW5hdGVkIHdpdGggYSBoeXBoZW4gYmV0d2VlblxuICAgKiBlYWNoIHBhcnQuXG4gICAqL1xuICBwdWJsaWMgc2V0VGl0bGUoYXJnczogU2t5QXBwU2V0VGl0bGVBcmdzIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKGFyZ3M/LnRpdGxlUGFydHMpIHtcbiAgICAgIHRoaXMuI3RpdGxlLnNldFRpdGxlKGFyZ3MudGl0bGVQYXJ0cy5qb2luKCcgLSAnKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,64 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../mutation/mutation-observer-service";
4
- /**
5
- * Trims whitespace in each text node that is a direct descendent of the current element.
6
- */
7
- export class SkyTrimDirective {
8
- #elRef;
9
- #obs;
10
- constructor(elRef, mutationObs) {
11
- this.#elRef = elRef;
12
- this.#obs = mutationObs.create((mutations) => {
13
- const nodes = [];
14
- // Only trim white space inside direct descendants of the current element.
15
- for (const mutation of mutations) {
16
- if (mutation.target.parentNode === elRef.nativeElement) {
17
- nodes.push(mutation.target);
18
- }
19
- }
20
- this.#trim(nodes);
21
- });
22
- this.#observe();
23
- }
24
- ngOnInit() {
25
- const el = this.#elRef.nativeElement;
26
- this.#trim(Array.from(el.childNodes));
27
- }
28
- ngOnDestroy() {
29
- this.#disconnect();
30
- }
31
- #observe() {
32
- this.#obs.observe(this.#elRef.nativeElement, {
33
- characterData: true,
34
- subtree: true,
35
- });
36
- }
37
- #disconnect() {
38
- this.#obs.disconnect();
39
- }
40
- #trim(nodes) {
41
- // Suspend the MutationObserver so altering the text content of each node
42
- // doesn't retrigger the observe callback.
43
- this.#disconnect();
44
- for (const node of nodes) {
45
- if (node.nodeType === Node.TEXT_NODE && node.textContent) {
46
- const textContent = node.textContent;
47
- const textContentTrimmed = textContent.trim();
48
- if (textContent !== textContentTrimmed) {
49
- node.textContent = textContentTrimmed;
50
- }
51
- }
52
- }
53
- this.#observe();
54
- }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimDirective, deps: [{ token: i0.ElementRef }, { token: i1.SkyMutationObserverService }], target: i0.ɵɵFactoryTarget.Directive }); }
56
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SkyTrimDirective, selector: "[skyTrim]", ngImport: i0 }); }
57
- }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimDirective, decorators: [{
59
- type: Directive,
60
- args: [{
61
- selector: '[skyTrim]',
62
- }]
63
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkyMutationObserverService }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdHJpbS90cmltLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7O0FBSXpFOztHQUVHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQWE7SUFFbkIsSUFBSSxDQUFtQjtJQUV2QixZQUFZLEtBQWlCLEVBQUUsV0FBdUM7UUFDcEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBMkIsRUFBRSxFQUFFO1lBQzdELE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztZQUV6QiwwRUFBMEU7WUFDMUUsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZELEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQXdCLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQzNDLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBYTtRQUNqQix5RUFBeUU7UUFDekUsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDckMsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRTlDLElBQUksV0FBVyxLQUFLLGtCQUFrQixFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDOytHQTdEVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5cbi8qKlxuICogVHJpbXMgd2hpdGVzcGFjZSBpbiBlYWNoIHRleHQgbm9kZSB0aGF0IGlzIGEgZGlyZWN0IGRlc2NlbmRlbnQgb2YgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVRyaW1dJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VHJpbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgI2VsUmVmOiBFbGVtZW50UmVmO1xuXG4gICNvYnM6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoZWxSZWY6IEVsZW1lbnRSZWYsIG11dGF0aW9uT2JzOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSkge1xuICAgIHRoaXMuI2VsUmVmID0gZWxSZWY7XG5cbiAgICB0aGlzLiNvYnMgPSBtdXRhdGlvbk9icy5jcmVhdGUoKG11dGF0aW9uczogTXV0YXRpb25SZWNvcmRbXSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZXM6IE5vZGVbXSA9IFtdO1xuXG4gICAgICAvLyBPbmx5IHRyaW0gd2hpdGUgc3BhY2UgaW5zaWRlIGRpcmVjdCBkZXNjZW5kYW50cyBvZiB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnRhcmdldC5wYXJlbnROb2RlID09PSBlbFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgbm9kZXMucHVzaChtdXRhdGlvbi50YXJnZXQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI3RyaW0obm9kZXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4jb2JzZXJ2ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50O1xuICAgIHRoaXMuI3RyaW0oQXJyYXkuZnJvbShlbC5jaGlsZE5vZGVzKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgI29ic2VydmUoKTogdm9pZCB7XG4gICAgdGhpcy4jb2JzLm9ic2VydmUodGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAjZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNvYnMuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgI3RyaW0obm9kZXM6IE5vZGVbXSk6IHZvaWQge1xuICAgIC8vIFN1c3BlbmQgdGhlIE11dGF0aW9uT2JzZXJ2ZXIgc28gYWx0ZXJpbmcgdGhlIHRleHQgY29udGVudCBvZiBlYWNoIG5vZGVcbiAgICAvLyBkb2Vzbid0IHJldHJpZ2dlciB0aGUgb2JzZXJ2ZSBjYWxsYmFjay5cbiAgICB0aGlzLiNkaXNjb25uZWN0KCk7XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSAmJiBub2RlLnRleHRDb250ZW50KSB7XG4gICAgICAgIGNvbnN0IHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudDtcbiAgICAgICAgY29uc3QgdGV4dENvbnRlbnRUcmltbWVkID0gdGV4dENvbnRlbnQudHJpbSgpO1xuXG4gICAgICAgIGlmICh0ZXh0Q29udGVudCAhPT0gdGV4dENvbnRlbnRUcmltbWVkKSB7XG4gICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IHRleHRDb250ZW50VHJpbW1lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI29ic2VydmUoKTtcbiAgfVxufVxuIl19
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { SkyTrimDirective } from './trim.directive';
3
- import * as i0 from "@angular/core";
4
- export class SkyTrimModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimModule, declarations: [SkyTrimDirective], exports: [SkyTrimDirective] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimModule }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- declarations: [SkyTrimDirective],
13
- exports: [SkyTrimDirective],
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdHJpbS90cmltLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU1wRCxNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWEsaUJBSFQsZ0JBQWdCLGFBQ3JCLGdCQUFnQjtnSEFFZixhQUFhOzs0RkFBYixhQUFhO2tCQUp6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lUcmltRGlyZWN0aXZlIH0gZnJvbSAnLi90cmltLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreVRyaW1EaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbU2t5VHJpbURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRyaW1Nb2R1bGUge31cbiJdfQ==
@@ -1,21 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { of as observableOf } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class SkyUIConfigService {
5
- getConfig(key, defaultConfig) {
6
- return observableOf(defaultConfig);
7
- }
8
- /* istanbul ignore next */
9
- setConfig(key, value) {
10
- return observableOf({});
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyUIConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
13
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyUIConfigService, providedIn: 'root' }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyUIConfigService, decorators: [{
16
- type: Injectable,
17
- args: [{
18
- providedIn: 'root',
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdWktY29uZmlnL3VpLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3RELE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsU0FBUyxDQUFDLEdBQVcsRUFBRSxhQUFtQjtRQUMvQyxPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN0QyxPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQVJVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VUlDb25maWdTZXJ2aWNlIHtcbiAgcHVibGljIGdldENvbmZpZyhrZXk6IHN0cmluZywgZGVmYXVsdENvbmZpZz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG9ic2VydmFibGVPZihkZWZhdWx0Q29uZmlnKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBzZXRDb25maWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBvYnNlcnZhYmxlT2Yoe30pO1xuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1ib3VuZGFyeS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci1ib3VuZGFyeS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lWaWV3a2VlcGVyT2Zmc2V0IH0gZnJvbSAnLi92aWV3a2VlcGVyLW9mZnNldCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB7XG4gIGVsSGVpZ2h0OiBudW1iZXI7XG5cbiAgc3BhY2VyRWw6IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICBzcGFjZXJJZDogc3RyaW5nO1xuXG4gIGJvdW5kYXJ5Qm90dG9tOiBudW1iZXI7XG5cbiAgYm91bmRhcnlPZmZzZXQ6IFNreVZpZXdrZWVwZXJPZmZzZXQ7XG5cbiAgYm91bmRhcnlFbDogSFRNTEVsZW1lbnQ7XG5cbiAgc2Nyb2xsTGVmdDogbnVtYmVyO1xuXG4gIHNjcm9sbFRvcDogbnVtYmVyO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1maXhlZC1zdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLWZpeGVkLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICBlbEZpeGVkTGVmdDogbnVtYmVyO1xuXG4gIGVsRml4ZWRUb3A6IG51bWJlcjtcblxuICBlbEZpeGVkV2lkdGg6IG51bWJlcjtcblxuICBlbENsaXBMZWZ0OiBudW1iZXI7XG5cbiAgZWxDbGlwVG9wOiBudW1iZXI7XG59XG4iXX0=
@@ -1,10 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class SkyViewkeeperHostOptions {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperHostOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperHostOptions }); }
6
- }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperHostOptions, decorators: [{
8
- type: Injectable
9
- }] });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1ob3N0LW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLWhvc3Qtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sd0JBQXdCOytHQUF4Qix3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMgaW1wbGVtZW50cyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB7XG4gIHB1YmxpYyBib3VuZGFyeUVsPzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIGVsPzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIHNjcm9sbGFibGVIb3N0PzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIHNldFdpZHRoPzogYm9vbGVhbjtcblxuICBwdWJsaWMgdmVydGljYWxPZmZzZXQ/OiBudW1iZXI7XG5cbiAgcHVibGljIHZlcnRpY2FsT2Zmc2V0RWw/OiBIVE1MRWxlbWVudDtcblxuICBwdWJsaWMgdmlld3BvcnRNYXJnaW5Ub3A/OiBudW1iZXI7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1vZmZzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLW9mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyT2Zmc2V0IHtcbiAgdG9wOiBudW1iZXI7XG5cbiAgbGVmdDogbnVtYmVyO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgdmlld2tlZXBlciBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IGRlZmluZXMgdGhlIGJvdW5kcyBpbiB3aGljaCB0byBrZWVwIHRoZSBlbGVtZW50IGluIHZpZXcuIFdoZW4gdGhlXG4gICAqIGJvdW5kYXJ5IGVsZW1lbnQgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcsIHRoZSB2aWV3a2VlcGVyIGVsZW1lbnQgd2lsbCBiZSBzY3JvbGxlZFxuICAgKiBvdXQgb2Ygdmlldy5cbiAgICovXG4gIGJvdW5kYXJ5RWw/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8ga2VlcCBpbiB2aWV3LlxuICAgKi9cbiAgZWw/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIHNjcm9sbGFibGUgcGFyZW50IHdoZXJlIHRoZSB2aWV3a2VlcGVyIHJlc2lkZXMuIEl0IHNob3VsZCBsaXN0ZW4gdG8gYW5kIGJlXG4gICAqIHBvc2l0aW9uZWQgd2l0aGluIHRoZSBwYXJlbnQuXG4gICAqL1xuICBzY3JvbGxhYmxlSG9zdD86IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB3aWR0aCBvZiB0aGUgdmlld2tlZXBlciBlbGVtZW50IHRvIHRoZSB3aWR0aCBvZiBpdHNcbiAgICogaG9zdCBlbGVtZW50LiBPdGhlcndpc2UsIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgd2lkdGggc3BlY2lmaWVkLFxuICAgKiB0aGUgZWxlbWVudCB3b3VsZCBjb2xsYXBzZSBob3Jpem9udGFsbHkgYXMgYSByZXN1bHQgb2YgZml4aW5nIHRoZSBlbGVtZW50IHRvIHRoZSB0b3BcbiAgICogb2YgdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgc2V0V2lkdGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXNlcnZlZCBzcGFjZSBpbiBwaXhlbHMgYWJvdmUgdGhlIHZpZXdrZWVwZXIgZWxlbWVudC5cbiAgICovXG4gIHZlcnRpY2FsT2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB1bmRlciB3aGljaCB0aGUgdmlld2tlZXBlciBlbGVtZW50IHNob3VsZCBiZSBmaXhlZC4gVHlwaWNhbGx5IHRoaXMgaXNcbiAgICogYW5vdGhlciB2aWV3a2VlcGVyIGVsZW1lbnQgdGhhdCBpcyBhYm92ZSB0aGUgY3VycmVudCB2aWV3a2VlcGVyIGVsZW1lbnQgaW4gdGhlIHNhbWVcbiAgICogYm91bmRhcnkgZWxlbWVudC5cbiAgICovXG4gIHZlcnRpY2FsT2Zmc2V0RWw/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogUmVzZXJ2ZWQgc3BhY2UgaW4gcGl4ZWxzIGF0IHRoZSB0b3Agb2YgdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgdmlld3BvcnRNYXJnaW5Ub3A/OiBudW1iZXI7XG59XG4iXX0=