@skyux/layout 7.0.0-beta.0 → 7.0.0-beta.2

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 (92) hide show
  1. package/documentation.json +1679 -990
  2. package/esm2020/index.mjs +1 -2
  3. package/esm2020/lib/modules/action-button/action-button-adapter-service.mjs +22 -18
  4. package/esm2020/lib/modules/action-button/action-button-container.component.mjs +62 -54
  5. package/esm2020/lib/modules/action-button/action-button-icon.component.mjs +9 -6
  6. package/esm2020/lib/modules/action-button/action-button.component.mjs +10 -6
  7. package/esm2020/lib/modules/back-to-top/back-to-top-adapter.service.mjs +19 -15
  8. package/esm2020/lib/modules/back-to-top/back-to-top.component.mjs +8 -5
  9. package/esm2020/lib/modules/back-to-top/back-to-top.directive.mjs +68 -63
  10. package/esm2020/lib/modules/box/box.component.mjs +1 -1
  11. package/esm2020/lib/modules/card/card.component.mjs +38 -11
  12. package/esm2020/lib/modules/definition-list/definition-list-label.component.mjs +1 -1
  13. package/esm2020/lib/modules/definition-list/definition-list-value.component.mjs +3 -3
  14. package/esm2020/lib/modules/definition-list/definition-list.component.mjs +1 -1
  15. package/esm2020/lib/modules/definition-list/definition-list.service.mjs +1 -1
  16. package/esm2020/lib/modules/description-list/description-list-adapter-service.mjs +26 -22
  17. package/esm2020/lib/modules/description-list/description-list-content.component.mjs +2 -2
  18. package/esm2020/lib/modules/description-list/description-list-description.component.mjs +16 -11
  19. package/esm2020/lib/modules/description-list/description-list-term.component.mjs +1 -1
  20. package/esm2020/lib/modules/description-list/description-list.component.mjs +25 -16
  21. package/esm2020/lib/modules/fluid-grid/column.component.mjs +19 -1
  22. package/esm2020/lib/modules/fluid-grid/fluid-grid.component.mjs +15 -35
  23. package/esm2020/lib/modules/fluid-grid/row.component.mjs +1 -1
  24. package/esm2020/lib/modules/fluid-grid/types/fluid-grid-gutter-size-type.mjs +1 -1
  25. package/esm2020/lib/modules/format/format.component.mjs +34 -26
  26. package/esm2020/lib/modules/inline-delete/inline-delete-adapter.service.mjs +91 -83
  27. package/esm2020/lib/modules/inline-delete/inline-delete.component.mjs +15 -9
  28. package/esm2020/lib/modules/page/page-theme-adapter.service.mjs +14 -8
  29. package/esm2020/lib/modules/page/page.component.mjs +8 -4
  30. package/esm2020/lib/modules/page-summary/page-summary-adapter.service.mjs +1 -1
  31. package/esm2020/lib/modules/page-summary/page-summary.component.mjs +40 -16
  32. package/esm2020/lib/modules/text-expand/text-expand-adapter.service.mjs +8 -10
  33. package/esm2020/lib/modules/text-expand/text-expand-modal-context-token.mjs +6 -0
  34. package/esm2020/lib/modules/text-expand/text-expand-modal-context.mjs +2 -6
  35. package/esm2020/lib/modules/text-expand/text-expand-modal.component.mjs +12 -10
  36. package/esm2020/lib/modules/text-expand/text-expand.component.mjs +188 -127
  37. package/esm2020/lib/modules/text-expand-repeater/text-expand-repeater-adapter.service.mjs +10 -12
  38. package/esm2020/lib/modules/text-expand-repeater/text-expand-repeater.component.mjs +139 -95
  39. package/esm2020/lib/modules/toolbar/toolbar.component.mjs +4 -4
  40. package/esm2020/testing/action-button-fixture.mjs +12 -6
  41. package/esm2020/testing/card-fixture.mjs +19 -16
  42. package/esm2020/testing/page-summary-fixture.mjs +9 -5
  43. package/fesm2015/skyux-layout-testing.mjs +35 -24
  44. package/fesm2015/skyux-layout-testing.mjs.map +1 -1
  45. package/fesm2015/skyux-layout.mjs +866 -673
  46. package/fesm2015/skyux-layout.mjs.map +1 -1
  47. package/fesm2020/skyux-layout-testing.mjs +35 -24
  48. package/fesm2020/skyux-layout-testing.mjs.map +1 -1
  49. package/fesm2020/skyux-layout.mjs +861 -673
  50. package/fesm2020/skyux-layout.mjs.map +1 -1
  51. package/index.d.ts +0 -1
  52. package/lib/modules/action-button/action-button-adapter-service.d.ts +1 -2
  53. package/lib/modules/action-button/action-button-container.component.d.ts +6 -17
  54. package/lib/modules/action-button/action-button-icon.component.d.ts +2 -3
  55. package/lib/modules/action-button/action-button.component.d.ts +3 -3
  56. package/lib/modules/back-to-top/back-to-top-adapter.service.d.ts +1 -4
  57. package/lib/modules/back-to-top/back-to-top.component.d.ts +1 -1
  58. package/lib/modules/back-to-top/back-to-top.directive.d.ts +4 -16
  59. package/lib/modules/box/box.component.d.ts +3 -3
  60. package/lib/modules/card/card.component.d.ts +7 -6
  61. package/lib/modules/definition-list/definition-list-label.component.d.ts +1 -1
  62. package/lib/modules/definition-list/definition-list-value.component.d.ts +1 -1
  63. package/lib/modules/definition-list/definition-list.component.d.ts +2 -2
  64. package/lib/modules/definition-list/definition-list.service.d.ts +2 -2
  65. package/lib/modules/description-list/description-list-adapter-service.d.ts +1 -2
  66. package/lib/modules/description-list/description-list-content.component.d.ts +2 -2
  67. package/lib/modules/description-list/description-list-description.component.d.ts +5 -7
  68. package/lib/modules/description-list/description-list-term.component.d.ts +1 -1
  69. package/lib/modules/description-list/description-list.component.d.ts +6 -7
  70. package/lib/modules/fluid-grid/column.component.d.ts +7 -5
  71. package/lib/modules/fluid-grid/fluid-grid.component.d.ts +3 -9
  72. package/lib/modules/fluid-grid/row.component.d.ts +1 -1
  73. package/lib/modules/fluid-grid/types/fluid-grid-gutter-size-type.d.ts +1 -1
  74. package/lib/modules/format/format.component.d.ts +5 -7
  75. package/lib/modules/inline-delete/inline-delete-adapter.service.d.ts +1 -11
  76. package/lib/modules/inline-delete/inline-delete.component.d.ts +3 -5
  77. package/lib/modules/page/page-theme-adapter.service.d.ts +1 -1
  78. package/lib/modules/page/page.component.d.ts +1 -1
  79. package/lib/modules/page-summary/page-summary.component.d.ts +8 -9
  80. package/lib/modules/text-expand/text-expand-adapter.service.d.ts +3 -4
  81. package/lib/modules/text-expand/text-expand-modal-context-token.d.ts +6 -0
  82. package/lib/modules/text-expand/text-expand-modal-context.d.ts +1 -1
  83. package/lib/modules/text-expand/text-expand.component.d.ts +18 -25
  84. package/lib/modules/text-expand-repeater/text-expand-repeater-adapter.service.d.ts +4 -5
  85. package/lib/modules/text-expand-repeater/text-expand-repeater.component.d.ts +13 -21
  86. package/lib/modules/toolbar/toolbar.component.d.ts +4 -4
  87. package/package.json +9 -9
  88. package/testing/action-button-fixture.d.ts +4 -4
  89. package/testing/card-fixture.d.ts +3 -5
  90. package/testing/page-summary-fixture.d.ts +4 -4
  91. package/esm2020/lib/modules/fluid-grid/fluid-grid-gutter-size.mjs +0 -20
  92. package/lib/modules/fluid-grid/fluid-grid-gutter-size.d.ts +0 -18
@@ -1,10 +1,13 @@
1
+ var _SkyTextExpandComponent_instances, _SkyTextExpandComponent_collapsedText, _SkyTextExpandComponent_newlineCount, _SkyTextExpandComponent_seeMoreText, _SkyTextExpandComponent_seeLessText, _SkyTextExpandComponent_textToShow, _SkyTextExpandComponent__maxExpandedLength, _SkyTextExpandComponent__maxExpandedNewlines, _SkyTextExpandComponent__maxLength, _SkyTextExpandComponent__text, _SkyTextExpandComponent__textEl, _SkyTextExpandComponent_resources, _SkyTextExpandComponent_modalSvc, _SkyTextExpandComponent_textExpandAdapter, _SkyTextExpandComponent_setup, _SkyTextExpandComponent_getNewlineCount, _SkyTextExpandComponent_getTruncatedText, _SkyTextExpandComponent_animateText;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ import { animate, state, style, transition, trigger, } from '@angular/animations';
1
4
  import { Component, ElementRef, Input, ViewChild, } from '@angular/core';
2
5
  import { SkyLibResourcesService } from '@skyux/i18n';
3
6
  import { SkyModalService } from '@skyux/modals';
4
7
  import { forkJoin as observableForkJoin } from 'rxjs';
5
8
  import { take } from 'rxjs/operators';
6
9
  import { SkyTextExpandAdapterService } from './text-expand-adapter.service';
7
- import { SkyTextExpandModalContext } from './text-expand-modal-context';
10
+ import { SKY_TEXT_EXPAND_MODAL_CONTEXT } from './text-expand-modal-context-token';
8
11
  import { SkyTextExpandModalComponent } from './text-expand-modal.component';
9
12
  import * as i0 from "@angular/core";
10
13
  import * as i1 from "@skyux/i18n";
@@ -16,29 +19,69 @@ import * as i4 from "@angular/common";
16
19
  */
17
20
  let nextId = 0;
18
21
  export class SkyTextExpandComponent {
19
- constructor(resources, modalService, textExpandAdapter) {
20
- this.resources = resources;
21
- this.modalService = modalService;
22
- this.textExpandAdapter = textExpandAdapter;
23
- /**
24
- * Specifies the maximum number of text characters to display inline when users select the link
25
- * to expand the full text. If the text exceeds this limit, then the component expands
26
- * the full text in a modal instead.
27
- */
28
- this.maxExpandedLength = 600;
29
- /**
30
- * Specifies the maximum number of newline characters to display inline when users select
31
- * the link to expand the full text. If the text exceeds this limit, then
32
- * the component expands the full text in a modal view instead.
33
- */
34
- this.maxExpandedNewlines = 2;
22
+ constructor(resources, modalSvc, textExpandAdapter) {
23
+ _SkyTextExpandComponent_instances.add(this);
35
24
  /**
36
25
  * Indicates whether to replace newline characters in truncated text with spaces.
37
26
  */
38
27
  this.truncateNewlines = true;
28
+ this.buttonText = '';
39
29
  this.contentSectionId = `sky-text-expand-content-${++nextId}`;
40
- this.isExpanded = false;
41
- this._maxLength = 200;
30
+ this.expandable = false;
31
+ this.isModal = false;
32
+ this.transitionHeight = 1;
33
+ _SkyTextExpandComponent_collapsedText.set(this, '');
34
+ _SkyTextExpandComponent_newlineCount.set(this, 0);
35
+ _SkyTextExpandComponent_seeMoreText.set(this, '');
36
+ _SkyTextExpandComponent_seeLessText.set(this, '');
37
+ _SkyTextExpandComponent_textToShow.set(this, '');
38
+ _SkyTextExpandComponent__maxExpandedLength.set(this, 600);
39
+ _SkyTextExpandComponent__maxExpandedNewlines.set(this, 2);
40
+ _SkyTextExpandComponent__maxLength.set(this, 200);
41
+ _SkyTextExpandComponent__text.set(this, '');
42
+ _SkyTextExpandComponent__textEl.set(this, void 0);
43
+ _SkyTextExpandComponent_resources.set(this, void 0);
44
+ _SkyTextExpandComponent_modalSvc.set(this, void 0);
45
+ _SkyTextExpandComponent_textExpandAdapter.set(this, void 0);
46
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_resources, resources, "f");
47
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_modalSvc, modalSvc, "f");
48
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_textExpandAdapter, textExpandAdapter, "f");
49
+ }
50
+ /**
51
+ * Specifies the maximum number of text characters to display inline when users select the link
52
+ * to expand the full text. If the text exceeds this limit, then the component expands
53
+ * the full text in a modal instead.
54
+ * @default 600
55
+ */
56
+ set maxExpandedLength(value) {
57
+ if (value) {
58
+ __classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedLength, value, "f");
59
+ }
60
+ else {
61
+ __classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedLength, 600, "f");
62
+ }
63
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
64
+ }
65
+ get maxExpandedLength() {
66
+ return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxExpandedLength, "f");
67
+ }
68
+ /**
69
+ * Specifies the maximum number of newline characters to display inline when users select
70
+ * the link to expand the full text. If the text exceeds this limit, then
71
+ * the component expands the full text in a modal view instead.
72
+ * @default 2
73
+ */
74
+ set maxExpandedNewlines(value) {
75
+ if (value) {
76
+ __classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedNewlines, value, "f");
77
+ }
78
+ else {
79
+ __classPrivateFieldSet(this, _SkyTextExpandComponent__maxExpandedNewlines, 2, "f");
80
+ }
81
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
82
+ }
83
+ get maxExpandedNewlines() {
84
+ return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxExpandedNewlines, "f");
42
85
  }
43
86
  /**
44
87
  * Specifies the number of text characters to display before truncating the text.
@@ -47,23 +90,33 @@ export class SkyTextExpandComponent {
47
90
  * @default 200
48
91
  */
49
92
  set maxLength(value) {
50
- this._maxLength = value;
51
- /* istanbul ignore else */
52
- if (this.textEl) {
53
- this.setup(this.expandedText);
93
+ if (value) {
94
+ __classPrivateFieldSet(this, _SkyTextExpandComponent__maxLength, value, "f");
54
95
  }
96
+ else {
97
+ __classPrivateFieldSet(this, _SkyTextExpandComponent__maxLength, 200, "f");
98
+ }
99
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
55
100
  }
56
101
  get maxLength() {
57
- return this._maxLength;
102
+ return __classPrivateFieldGet(this, _SkyTextExpandComponent__maxLength, "f");
58
103
  }
59
104
  /**
60
105
  * Specifies the text to truncate.
61
106
  */
62
107
  set text(value) {
63
- /* istanbul ignore else */
64
- if (this.textEl) {
65
- this.setup(value);
66
- }
108
+ __classPrivateFieldSet(this, _SkyTextExpandComponent__text, value ?? '', "f");
109
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, __classPrivateFieldGet(this, _SkyTextExpandComponent__text, "f"));
110
+ }
111
+ get text() {
112
+ return __classPrivateFieldGet(this, _SkyTextExpandComponent__text, "f");
113
+ }
114
+ set textEl(value) {
115
+ __classPrivateFieldSet(this, _SkyTextExpandComponent__textEl, value, "f");
116
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
117
+ }
118
+ get textEl() {
119
+ return __classPrivateFieldGet(this, _SkyTextExpandComponent__textEl, "f");
67
120
  }
68
121
  textExpand() {
69
122
  if (this.isModal) {
@@ -71,12 +124,12 @@ export class SkyTextExpandComponent {
71
124
  /* istanbul ignore else */
72
125
  /* sanity check */
73
126
  if (!this.isExpanded) {
74
- this.modalService.open(SkyTextExpandModalComponent, [
127
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_modalSvc, "f").open(SkyTextExpandModalComponent, [
75
128
  {
76
- provide: SkyTextExpandModalContext,
129
+ provide: SKY_TEXT_EXPAND_MODAL_CONTEXT,
77
130
  useValue: {
78
131
  header: this.expandModalTitle,
79
- text: this.expandedText,
132
+ text: this.text,
80
133
  },
81
134
  },
82
135
  ]);
@@ -85,40 +138,38 @@ export class SkyTextExpandComponent {
85
138
  else {
86
139
  // Normal View
87
140
  if (!this.isExpanded) {
88
- this.setContainerMaxHeight();
89
- setTimeout(() => {
90
- this.isExpanded = true;
91
- this.animateText(this.collapsedText, this.expandedText, true);
92
- }, 10);
141
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_animateText).call(this, true);
93
142
  }
94
143
  else {
95
- this.setContainerMaxHeight();
96
- setTimeout(() => {
97
- this.isExpanded = false;
98
- this.animateText(this.expandedText, this.collapsedText, false);
99
- }, 10);
144
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_animateText).call(this, false);
100
145
  }
101
146
  }
102
147
  }
103
148
  animationEnd() {
104
- // Ensure the correct text is displayed
105
- this.textExpandAdapter.setText(this.textEl, this.textToShow);
106
- // Set height back to auto so the browser can change the height as needed with window changes
107
- this.textExpandAdapter.setContainerHeight(this.containerEl, undefined);
149
+ if (this.textEl && this.containerEl) {
150
+ // Ensure the correct text is displayed
151
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_textToShow, "f"));
152
+ setTimeout(() => {
153
+ if (this.containerEl) {
154
+ // Set height back to auto so the browser can change the height as needed with window changes
155
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").removeContainerMaxHeight(this.containerEl);
156
+ }
157
+ });
158
+ }
108
159
  }
109
160
  ngAfterContentInit() {
110
161
  observableForkJoin([
111
- this.resources.getString('skyux_text_expand_see_more'),
112
- this.resources.getString('skyux_text_expand_see_less'),
162
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f").getString('skyux_text_expand_see_more'),
163
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f").getString('skyux_text_expand_see_less'),
113
164
  ])
114
165
  .pipe(take(1))
115
166
  .subscribe((resources) => {
116
- this.seeMoreText = resources[0];
117
- this.seeLessText = resources[1];
118
- this.setup(this.expandedText);
167
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_seeMoreText, resources[0], "f");
168
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_seeLessText, resources[1], "f");
169
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_setup).call(this, this.text);
119
170
  /* istanbul ignore else */
120
171
  if (!this.expandModalTitle) {
121
- this.resources
172
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_resources, "f")
122
173
  .getString('skyux_text_expand_modal_title')
123
174
  .pipe(take(1))
124
175
  .subscribe((resource) => {
@@ -127,98 +178,108 @@ export class SkyTextExpandComponent {
127
178
  }
128
179
  });
129
180
  }
130
- setContainerMaxHeight() {
131
- // ensure everything is reset
132
- this.animationEnd();
133
- /* Before animation is kicked off, ensure that a maxHeight exists */
134
- /* Once we have support for angular v4 animations with parameters we can use that instead */
135
- const currentHeight = this.textExpandAdapter.getContainerHeight(this.containerEl);
136
- this.textExpandAdapter.setContainerHeight(this.containerEl, `${currentHeight}px`);
137
- }
138
- setup(value) {
139
- if (value) {
140
- this.newlineCount = this.getNewlineCount(value);
141
- this.collapsedText = this.getTruncatedText(value, this.maxLength);
142
- this.expandedText = value;
143
- if (this.collapsedText !== value) {
144
- this.buttonText = this.seeMoreText;
145
- this.isExpanded = false;
146
- this.expandable = true;
147
- this.isModal =
148
- this.newlineCount > this.maxExpandedNewlines ||
149
- this.expandedText.length > this.maxExpandedLength;
150
- }
151
- else {
152
- this.expandable = false;
153
- }
154
- this.textToShow = this.collapsedText;
181
+ }
182
+ _SkyTextExpandComponent_collapsedText = new WeakMap(), _SkyTextExpandComponent_newlineCount = new WeakMap(), _SkyTextExpandComponent_seeMoreText = new WeakMap(), _SkyTextExpandComponent_seeLessText = new WeakMap(), _SkyTextExpandComponent_textToShow = new WeakMap(), _SkyTextExpandComponent__maxExpandedLength = new WeakMap(), _SkyTextExpandComponent__maxExpandedNewlines = new WeakMap(), _SkyTextExpandComponent__maxLength = new WeakMap(), _SkyTextExpandComponent__text = new WeakMap(), _SkyTextExpandComponent__textEl = new WeakMap(), _SkyTextExpandComponent_resources = new WeakMap(), _SkyTextExpandComponent_modalSvc = new WeakMap(), _SkyTextExpandComponent_textExpandAdapter = new WeakMap(), _SkyTextExpandComponent_instances = new WeakSet(), _SkyTextExpandComponent_setup = function _SkyTextExpandComponent_setup(value) {
183
+ if (value) {
184
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_newlineCount, __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_getNewlineCount).call(this, value), "f");
185
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_collapsedText, __classPrivateFieldGet(this, _SkyTextExpandComponent_instances, "m", _SkyTextExpandComponent_getTruncatedText).call(this, value, this.maxLength), "f");
186
+ if (__classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f") !== value) {
187
+ this.buttonText = __classPrivateFieldGet(this, _SkyTextExpandComponent_seeMoreText, "f");
188
+ this.isExpanded = false;
189
+ this.expandable = true;
190
+ this.isModal =
191
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_newlineCount, "f") > this.maxExpandedNewlines ||
192
+ this.text.length > this.maxExpandedLength;
155
193
  }
156
194
  else {
157
- this.textToShow = '';
158
195
  this.expandable = false;
159
196
  }
160
- this.textExpandAdapter.setText(this.textEl, this.textToShow);
197
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"), "f");
161
198
  }
162
- getNewlineCount(value) {
163
- const matches = value.match(/\n/gi);
164
- if (matches) {
165
- return matches.length;
166
- }
167
- return 0;
199
+ else {
200
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, '', "f");
201
+ this.expandable = false;
168
202
  }
169
- getTruncatedText(value, length) {
170
- let i;
171
- if (this.truncateNewlines) {
172
- value = value.replace(/\n+/gi, ' ');
173
- }
174
- // Jump ahead one character and see if it's a space, and if it isn't,
175
- // back up to the first space and break there so a word doesn't get cut
176
- // in half.
177
- if (length < value.length) {
178
- for (i = length; i > length - 10; i--) {
179
- if (/\s/.test(value.charAt(i))) {
180
- length = i;
181
- break;
182
- }
203
+ if (this.textEl) {
204
+ __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f").setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_textToShow, "f"));
205
+ }
206
+ }, _SkyTextExpandComponent_getNewlineCount = function _SkyTextExpandComponent_getNewlineCount(value) {
207
+ const matches = value.match(/\n/gi);
208
+ if (matches) {
209
+ return matches.length;
210
+ }
211
+ return 0;
212
+ }, _SkyTextExpandComponent_getTruncatedText = function _SkyTextExpandComponent_getTruncatedText(value, length) {
213
+ let i;
214
+ if (this.truncateNewlines) {
215
+ value = value.replace(/\n+/gi, ' ');
216
+ }
217
+ // Jump ahead one character and see if it's a space, and if it isn't,
218
+ // back up to the first space and break there so a word doesn't get cut
219
+ // in half.
220
+ if (length < value.length) {
221
+ for (i = length; i > length - 10; i--) {
222
+ if (/\s/.test(value.charAt(i))) {
223
+ length = i;
224
+ break;
183
225
  }
184
226
  }
185
- return value.substr(0, length);
186
227
  }
187
- animateText(previousText, newText, expanding) {
188
- const adapter = this.textExpandAdapter;
228
+ return value.substring(0, length);
229
+ }, _SkyTextExpandComponent_animateText = function _SkyTextExpandComponent_animateText(expanding) {
230
+ if (this.containerEl && this.textEl) {
231
+ const adapter = __classPrivateFieldGet(this, _SkyTextExpandComponent_textExpandAdapter, "f");
189
232
  const container = this.containerEl;
190
- // Reset max height
191
- adapter.setContainerHeight(container, undefined);
192
- // Measure the current height so we can animate from it.
193
- const currentHeight = adapter.getContainerHeight(container);
194
- this.textToShow = newText;
195
- adapter.setText(this.textEl, this.textToShow);
196
- this.buttonText = expanding ? this.seeLessText : this.seeMoreText;
233
+ if (expanding) {
234
+ adapter.setText(this.textEl, this.text);
235
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, this.text, "f");
236
+ }
237
+ else {
238
+ adapter.setText(this.textEl, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"));
239
+ __classPrivateFieldSet(this, _SkyTextExpandComponent_textToShow, __classPrivateFieldGet(this, _SkyTextExpandComponent_collapsedText, "f"), "f");
240
+ }
241
+ this.buttonText = expanding ? __classPrivateFieldGet(this, _SkyTextExpandComponent_seeLessText, "f") : __classPrivateFieldGet(this, _SkyTextExpandComponent_seeMoreText, "f");
197
242
  // Measure the new height so we can animate to it.
198
243
  const newHeight = adapter.getContainerHeight(container);
199
- /* istanbul ignore if */
200
- if (newHeight < currentHeight) {
201
- // The new text is smaller than the old text, so put the old text back before doing
202
- // the collapse animation to avoid showing a big chunk of whitespace.
203
- adapter.setText(this.textEl, previousText);
244
+ this.transitionHeight = newHeight;
245
+ // Always show all text while animating so that the animation is smooth. The animation callback will set this back if needed.
246
+ if (!expanding) {
247
+ adapter.setText(this.textEl, this.text);
204
248
  }
205
- adapter.setContainerHeight(container, `${currentHeight}px`);
206
- // This timeout is necessary due to the browser needing to pick up the non-auto height being set
207
- // in order to do the transtion in height correctly. Without it the transition does not fire.
208
- setTimeout(() => {
209
- adapter.setContainerHeight(container, `${newHeight}px`);
210
- /* This resets values if the transition does not get kicked off */
211
- setTimeout(() => {
212
- this.animationEnd();
213
- }, 500);
214
- }, 10);
249
+ this.isExpanded = expanding;
215
250
  }
216
- }
251
+ };
217
252
  SkyTextExpandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandComponent, deps: [{ token: i1.SkyLibResourcesService }, { token: i2.SkyModalService }, { token: i3.SkyTextExpandAdapterService }], target: i0.ɵɵFactoryTarget.Component });
218
- SkyTextExpandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTextExpandComponent, selector: "sky-text-expand", inputs: { expandModalTitle: "expandModalTitle", maxExpandedLength: "maxExpandedLength", maxExpandedNewlines: "maxExpandedNewlines", maxLength: "maxLength", text: "text", truncateNewlines: "truncateNewlines" }, providers: [SkyTextExpandAdapterService], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "textEl", first: true, predicate: ["text"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-text-expand-container\"\n (transitionend)=\"animationEnd()\"\n #container\n>\n <span class=\"sky-text-expand-text\" [id]=\"contentSectionId\" #text></span>\n <span class=\"sky-text-expand-ellipsis\" *ngIf=\"!isExpanded && expandable\"\n >...\n </span>\n <button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"sky-btn sky-btn-link-inline sky-text-expand-see-more\"\n [attr.aria-expanded]=\"isModal ? undefined : isExpanded\"\n [attr.aria-controls]=\"isModal ? undefined : contentSectionId\"\n [attr.aria-haspopup]=\"isModal ? 'dialog' : undefined\"\n (click)=\"textExpand()\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [".sky-text-expand-ellipsis{letter-spacing:2px;white-space:nowrap}.sky-text-expand-space{white-space:normal}.sky-text-expand-see-more{white-space:nowrap;margin-left:5px}.sky-text-expand-text{margin:0;white-space:pre-wrap}.sky-text-expand-container{word-break:break-word;word-wrap:break-word;overflow:hidden;height:auto;transition:max-height .25s}.sky-text-expand-modal-content{white-space:pre-line;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
253
+ SkyTextExpandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyTextExpandComponent, selector: "sky-text-expand", inputs: { expandModalTitle: "expandModalTitle", maxExpandedLength: "maxExpandedLength", maxExpandedNewlines: "maxExpandedNewlines", maxLength: "maxLength", text: "text", truncateNewlines: "truncateNewlines" }, providers: [SkyTextExpandAdapterService], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "textEl", first: true, predicate: ["text"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n [@expansionAnimation]=\"{\n value: isExpanded,\n params: { transitionHeight: transitionHeight }\n }\"\n (@expansionAnimation.done)=\"animationEnd()\"\n class=\"sky-text-expand-container\"\n #container\n>\n <span class=\"sky-text-expand-text\" [id]=\"contentSectionId\" #text></span>\n <span class=\"sky-text-expand-ellipsis\" *ngIf=\"!isExpanded && expandable\"\n >...\n </span>\n <button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"sky-btn sky-btn-link-inline sky-text-expand-see-more\"\n [attr.aria-expanded]=\"isModal ? undefined : !!isExpanded\"\n [attr.aria-controls]=\"isModal ? undefined : contentSectionId\"\n [attr.aria-haspopup]=\"isModal ? 'dialog' : undefined\"\n (click)=\"textExpand()\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [".sky-text-expand-ellipsis{letter-spacing:2px;white-space:nowrap}.sky-text-expand-space{white-space:normal}.sky-text-expand-see-more{white-space:nowrap;margin-left:5px}.sky-text-expand-text{margin:0;white-space:pre-wrap}.sky-text-expand-container{word-break:break-word;word-wrap:break-word;overflow:hidden;height:auto}.sky-text-expand-modal-content{white-space:pre-line;word-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
254
+ trigger('expansionAnimation', [
255
+ transition(':enter', []),
256
+ state('true', style({
257
+ maxHeight: '{{transitionHeight}}px',
258
+ }), { params: { transitionHeight: 0 } }),
259
+ state('false', style({
260
+ maxHeight: '{{transitionHeight}}px',
261
+ }), { params: { transitionHeight: 0 } }),
262
+ transition('true => false', animate('250ms ease')),
263
+ transition('false => true', animate('250ms ease')),
264
+ transition('void => *', []),
265
+ ]),
266
+ ] });
219
267
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandComponent, decorators: [{
220
268
  type: Component,
221
- args: [{ selector: 'sky-text-expand', providers: [SkyTextExpandAdapterService], template: "<div\n class=\"sky-text-expand-container\"\n (transitionend)=\"animationEnd()\"\n #container\n>\n <span class=\"sky-text-expand-text\" [id]=\"contentSectionId\" #text></span>\n <span class=\"sky-text-expand-ellipsis\" *ngIf=\"!isExpanded && expandable\"\n >...\n </span>\n <button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"sky-btn sky-btn-link-inline sky-text-expand-see-more\"\n [attr.aria-expanded]=\"isModal ? undefined : isExpanded\"\n [attr.aria-controls]=\"isModal ? undefined : contentSectionId\"\n [attr.aria-haspopup]=\"isModal ? 'dialog' : undefined\"\n (click)=\"textExpand()\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [".sky-text-expand-ellipsis{letter-spacing:2px;white-space:nowrap}.sky-text-expand-space{white-space:normal}.sky-text-expand-see-more{white-space:nowrap;margin-left:5px}.sky-text-expand-text{margin:0;white-space:pre-wrap}.sky-text-expand-container{word-break:break-word;word-wrap:break-word;overflow:hidden;height:auto;transition:max-height .25s}.sky-text-expand-modal-content{white-space:pre-line;word-wrap:break-word}\n"] }]
269
+ args: [{ animations: [
270
+ trigger('expansionAnimation', [
271
+ transition(':enter', []),
272
+ state('true', style({
273
+ maxHeight: '{{transitionHeight}}px',
274
+ }), { params: { transitionHeight: 0 } }),
275
+ state('false', style({
276
+ maxHeight: '{{transitionHeight}}px',
277
+ }), { params: { transitionHeight: 0 } }),
278
+ transition('true => false', animate('250ms ease')),
279
+ transition('false => true', animate('250ms ease')),
280
+ transition('void => *', []),
281
+ ]),
282
+ ], selector: 'sky-text-expand', providers: [SkyTextExpandAdapterService], template: "<div\n [@expansionAnimation]=\"{\n value: isExpanded,\n params: { transitionHeight: transitionHeight }\n }\"\n (@expansionAnimation.done)=\"animationEnd()\"\n class=\"sky-text-expand-container\"\n #container\n>\n <span class=\"sky-text-expand-text\" [id]=\"contentSectionId\" #text></span>\n <span class=\"sky-text-expand-ellipsis\" *ngIf=\"!isExpanded && expandable\"\n >...\n </span>\n <button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"sky-btn sky-btn-link-inline sky-text-expand-see-more\"\n [attr.aria-expanded]=\"isModal ? undefined : !!isExpanded\"\n [attr.aria-controls]=\"isModal ? undefined : contentSectionId\"\n [attr.aria-haspopup]=\"isModal ? 'dialog' : undefined\"\n (click)=\"textExpand()\"\n >\n {{ buttonText }}\n </button>\n</div>\n", styles: [".sky-text-expand-ellipsis{letter-spacing:2px;white-space:nowrap}.sky-text-expand-space{white-space:normal}.sky-text-expand-see-more{white-space:nowrap;margin-left:5px}.sky-text-expand-text{margin:0;white-space:pre-wrap}.sky-text-expand-container{word-break:break-word;word-wrap:break-word;overflow:hidden;height:auto}.sky-text-expand-modal-content{white-space:pre-line;word-wrap:break-word}\n"] }]
222
283
  }], ctorParameters: function () { return [{ type: i1.SkyLibResourcesService }, { type: i2.SkyModalService }, { type: i3.SkyTextExpandAdapterService }]; }, propDecorators: { expandModalTitle: [{
223
284
  type: Input
224
285
  }], maxExpandedLength: [{
@@ -244,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
244
305
  static: true,
245
306
  }]
246
307
  }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7O0FBRTVFOztHQUVHO0FBQ0gsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBUWYsTUFBTSxPQUFPLHNCQUFzQjtJQWlHakMsWUFDVSxTQUFpQyxFQUNqQyxZQUE2QixFQUM3QixpQkFBOEM7UUFGOUMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUE1RnhEOzs7O1dB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QUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lNb2RhbFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcblxuaW1wb3J0IHsgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUZXh0RXhwYW5kQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3RleHQtZXhwYW5kLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RXhwYW5kTW9kYWxDb250ZXh0IH0gZnJvbSAnLi90ZXh0LWV4cGFuZC1tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IFNreVRleHRFeHBhbmRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1leHBhbmQtbW9kYWwuY29tcG9uZW50JztcblxuLyoqXG4gKiBBdXRvLWluY3JlbWVudGluZyBpbnRlZ2VyIHVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIGlkcyBmb3IgdGV4dCBleHBhbmQgY29tcG9uZW50cy5cbiAqL1xubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10ZXh0LWV4cGFuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWV4cGFuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQtZXhwYW5kLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreVRleHRFeHBhbmRBZGFwdGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFeHBhbmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRpdGxlIHRvIGRpc3BsYXkgd2hlbiB0aGUgY29tcG9uZW50IGV4cGFuZHMgdGhlIGZ1bGwgdGV4dCBpbiBhIG1vZGFsLlxuICAgKiBAZGVmYXVsdCBcIkV4cGFuZGVkIHZpZXdcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGV4cGFuZE1vZGFsVGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0ZXh0IGNoYXJhY3RlcnMgdG8gZGlzcGxheSBpbmxpbmUgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGxpbmtcbiAgICogdG8gZXhwYW5kIHRoZSBmdWxsIHRleHQuIElmIHRoZSB0ZXh0IGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlbiB0aGUgY29tcG9uZW50IGV4cGFuZHNcbiAgICogdGhlIGZ1bGwgdGV4dCBpbiBhIG1vZGFsIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RXhwYW5kZWRMZW5ndGggPSA2MDA7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbmV3bGluZSBjaGFyYWN0ZXJzIHRvIGRpc3BsYXkgaW5saW5lIHdoZW4gdXNlcnMgc2VsZWN0XG4gICAqIHRoZSBsaW5rIHRvIGV4cGFuZCB0aGUgZnVsbCB0ZXh0LiBJZiB0aGUgdGV4dCBleGNlZWRzIHRoaXMgbGltaXQsIHRoZW5cbiAgICogdGhlIGNvbXBvbmVudCBleHBhbmRzIHRoZSBmdWxsIHRleHQgaW4gYSBtb2RhbCB2aWV3IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RXhwYW5kZWROZXdsaW5lcyA9IDI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHRleHQgY2hhcmFjdGVycyB0byBkaXNwbGF5IGJlZm9yZSB0cnVuY2F0aW5nIHRoZSB0ZXh0LlxuICAgKiBUbyBhdm9pZCB0cnVuY2F0aW5nIHRleHQgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQsIHRoZSBjb21wb25lbnQgbG9va3MgZm9yIGEgc3BhY2VcbiAgICogaW4gdGhlIDEwIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBsYXN0IGNoYXJhY3Rlci5cbiAgICogQGRlZmF1bHQgMjAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heExlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4TGVuZ3RoID0gdmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnRleHRFbCkge1xuICAgICAgdGhpcy5zZXR1cCh0aGlzLmV4cGFuZGVkVGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4TGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdGV4dCB0byB0cnVuY2F0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy50ZXh0RWwpIHtcbiAgICAgIHRoaXMuc2V0dXAodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXBsYWNlIG5ld2xpbmUgY2hhcmFjdGVycyBpbiB0cnVuY2F0ZWQgdGV4dCB3aXRoIHNwYWNlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cnVuY2F0ZU5ld2xpbmVzID0gdHJ1ZTtcblxuICBwdWJsaWMgYnV0dG9uVGV4dDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb250ZW50U2VjdGlvbklkID0gYHNreS10ZXh0LWV4cGFuZC1jb250ZW50LSR7KytuZXh0SWR9YDtcblxuICBwdWJsaWMgZXhwYW5kYWJsZTogYm9vbGVhbjtcblxuICBwdWJsaWMgaXNFeHBhbmRlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc01vZGFsOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBjb250YWluZXJFbDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd0ZXh0Jywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHRleHRFbDogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIGNvbGxhcHNlZFRleHQ6IHN0cmluZztcblxuICBwcml2YXRlIGV4cGFuZGVkVGV4dDogc3RyaW5nO1xuXG4gIHByaXZhdGUgbmV3bGluZUNvdW50OiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBzZWVNb3JlVGV4dDogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2VlTGVzc1RleHQ6IHN0cmluZztcblxuICBwcml2YXRlIHRleHRUb1Nob3c6IHN0cmluZztcblxuICBwcml2YXRlIF9tYXhMZW5ndGggPSAyMDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IFNreU1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRleHRFeHBhbmRBZGFwdGVyOiBTa3lUZXh0RXhwYW5kQWRhcHRlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyB0ZXh0RXhwYW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTW9kYWwpIHtcbiAgICAgIC8vIE1vZGFsIFZpZXdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgIGlmICghdGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oU2t5VGV4dEV4cGFuZE1vZGFsQ29tcG9uZW50LCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogU2t5VGV4dEV4cGFuZE1vZGFsQ29udGV4dCxcbiAgICAgICAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5leHBhbmRNb2RhbFRpdGxlLFxuICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmV4cGFuZGVkVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vcm1hbCBWaWV3XG4gICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLnNldENvbnRhaW5lck1heEhlaWdodCgpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYW5pbWF0ZVRleHQodGhpcy5jb2xsYXBzZWRUZXh0LCB0aGlzLmV4cGFuZGVkVGV4dCwgdHJ1ZSk7XG4gICAgICAgIH0sIDEwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0Q29udGFpbmVyTWF4SGVpZ2h0KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYW5pbWF0ZVRleHQodGhpcy5leHBhbmRlZFRleHQsIHRoaXMuY29sbGFwc2VkVGV4dCwgZmFsc2UpO1xuICAgICAgICB9LCAxMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFuaW1hdGlvbkVuZCgpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgdGhlIGNvcnJlY3QgdGV4dCBpcyBkaXNwbGF5ZWRcbiAgICB0aGlzLnRleHRFeHBhbmRBZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMudGV4dFRvU2hvdyk7XG4gICAgLy8gU2V0IGhlaWdodCBiYWNrIHRvIGF1dG8gc28gdGhlIGJyb3dzZXIgY2FuIGNoYW5nZSB0aGUgaGVpZ2h0IGFzIG5lZWRlZCB3aXRoIHdpbmRvdyBjaGFuZ2VzXG4gICAgdGhpcy50ZXh0RXhwYW5kQWRhcHRlci5zZXRDb250YWluZXJIZWlnaHQodGhpcy5jb250YWluZXJFbCwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgb2JzZXJ2YWJsZUZvcmtKb2luKFtcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZygnc2t5dXhfdGV4dF9leHBhbmRfc2VlX21vcmUnKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZygnc2t5dXhfdGV4dF9leHBhbmRfc2VlX2xlc3MnKSxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlcykgPT4ge1xuICAgICAgICB0aGlzLnNlZU1vcmVUZXh0ID0gcmVzb3VyY2VzWzBdO1xuICAgICAgICB0aGlzLnNlZUxlc3NUZXh0ID0gcmVzb3VyY2VzWzFdO1xuICAgICAgICB0aGlzLnNldHVwKHRoaXMuZXhwYW5kZWRUZXh0KTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMuZXhwYW5kTW9kYWxUaXRsZSkge1xuICAgICAgICAgIHRoaXMucmVzb3VyY2VzXG4gICAgICAgICAgICAuZ2V0U3RyaW5nKCdza3l1eF90ZXh0X2V4cGFuZF9tb2RhbF90aXRsZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5leHBhbmRNb2RhbFRpdGxlID0gcmVzb3VyY2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRhaW5lck1heEhlaWdodCgpOiB2b2lkIHtcbiAgICAvLyBlbnN1cmUgZXZlcnl0aGluZyBpcyByZXNldFxuICAgIHRoaXMuYW5pbWF0aW9uRW5kKCk7XG4gICAgLyogQmVmb3JlIGFuaW1hdGlvbiBpcyBraWNrZWQgb2ZmLCBlbnN1cmUgdGhhdCBhIG1heEhlaWdodCBleGlzdHMgKi9cbiAgICAvKiBPbmNlIHdlIGhhdmUgc3VwcG9ydCBmb3IgYW5ndWxhciB2NCBhbmltYXRpb25zIHdpdGggcGFyYW1ldGVycyB3ZSBjYW4gdXNlIHRoYXQgaW5zdGVhZCAqL1xuICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB0aGlzLnRleHRFeHBhbmRBZGFwdGVyLmdldENvbnRhaW5lckhlaWdodChcbiAgICAgIHRoaXMuY29udGFpbmVyRWxcbiAgICApO1xuICAgIHRoaXMudGV4dEV4cGFuZEFkYXB0ZXIuc2V0Q29udGFpbmVySGVpZ2h0KFxuICAgICAgdGhpcy5jb250YWluZXJFbCxcbiAgICAgIGAke2N1cnJlbnRIZWlnaHR9cHhgXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXAodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5uZXdsaW5lQ291bnQgPSB0aGlzLmdldE5ld2xpbmVDb3VudCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbGxhcHNlZFRleHQgPSB0aGlzLmdldFRydW5jYXRlZFRleHQodmFsdWUsIHRoaXMubWF4TGVuZ3RoKTtcbiAgICAgIHRoaXMuZXhwYW5kZWRUZXh0ID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5jb2xsYXBzZWRUZXh0ICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ1dHRvblRleHQgPSB0aGlzLnNlZU1vcmVUZXh0O1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5leHBhbmRhYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc01vZGFsID1cbiAgICAgICAgICB0aGlzLm5ld2xpbmVDb3VudCA+IHRoaXMubWF4RXhwYW5kZWROZXdsaW5lcyB8fFxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRUZXh0Lmxlbmd0aCA+IHRoaXMubWF4RXhwYW5kZWRMZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV4cGFuZGFibGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGV4dFRvU2hvdyA9IHRoaXMuY29sbGFwc2VkVGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXh0VG9TaG93ID0gJyc7XG4gICAgICB0aGlzLmV4cGFuZGFibGUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy50ZXh0RXhwYW5kQWRhcHRlci5zZXRUZXh0KHRoaXMudGV4dEVsLCB0aGlzLnRleHRUb1Nob3cpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXdsaW5lQ291bnQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC9cXG4vZ2kpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJ1bmNhdGVkVGV4dCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IGk6IG51bWJlcjtcbiAgICBpZiAodGhpcy50cnVuY2F0ZU5ld2xpbmVzKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZ2ksICcgJyk7XG4gICAgfVxuICAgIC8vIEp1bXAgYWhlYWQgb25lIGNoYXJhY3RlciBhbmQgc2VlIGlmIGl0J3MgYSBzcGFjZSwgYW5kIGlmIGl0IGlzbid0LFxuICAgIC8vIGJhY2sgdXAgdG8gdGhlIGZpcnN0IHNwYWNlIGFuZCBicmVhayB0aGVyZSBzbyBhIHdvcmQgZG9lc24ndCBnZXQgY3V0XG4gICAgLy8gaW4gaGFsZi5cbiAgICBpZiAobGVuZ3RoIDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGkgPiBsZW5ndGggLSAxMDsgaS0tKSB7XG4gICAgICAgIGlmICgvXFxzLy50ZXN0KHZhbHVlLmNoYXJBdChpKSkpIHtcbiAgICAgICAgICBsZW5ndGggPSBpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5zdWJzdHIoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZVRleHQoXG4gICAgcHJldmlvdXNUZXh0OiBzdHJpbmcsXG4gICAgbmV3VGV4dDogc3RyaW5nLFxuICAgIGV4cGFuZGluZzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBjb25zdCBhZGFwdGVyID0gdGhpcy50ZXh0RXhwYW5kQWRhcHRlcjtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lckVsO1xuICAgIC8vIFJlc2V0IG1heCBoZWlnaHRcbiAgICBhZGFwdGVyLnNldENvbnRhaW5lckhlaWdodChjb250YWluZXIsIHVuZGVmaW5lZCk7XG4gICAgLy8gTWVhc3VyZSB0aGUgY3VycmVudCBoZWlnaHQgc28gd2UgY2FuIGFuaW1hdGUgZnJvbSBpdC5cbiAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gYWRhcHRlci5nZXRDb250YWluZXJIZWlnaHQoY29udGFpbmVyKTtcbiAgICB0aGlzLnRleHRUb1Nob3cgPSBuZXdUZXh0O1xuICAgIGFkYXB0ZXIuc2V0VGV4dCh0aGlzLnRleHRFbCwgdGhpcy50ZXh0VG9TaG93KTtcbiAgICB0aGlzLmJ1dHRvblRleHQgPSBleHBhbmRpbmcgPyB0aGlzLnNlZUxlc3NUZXh0IDogdGhpcy5zZWVNb3JlVGV4dDtcbiAgICAvLyBNZWFzdXJlIHRoZSBuZXcgaGVpZ2h0IHNvIHdlIGNhbiBhbmltYXRlIHRvIGl0LlxuICAgIGNvbnN0IG5ld0hlaWdodCA9IGFkYXB0ZXIuZ2V0Q29udGFpbmVySGVpZ2h0KGNvbnRhaW5lcik7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKG5ld0hlaWdodCA8IGN1cnJlbnRIZWlnaHQpIHtcbiAgICAgIC8vIFRoZSBuZXcgdGV4dCBpcyBzbWFsbGVyIHRoYW4gdGhlIG9sZCB0ZXh0LCBzbyBwdXQgdGhlIG9sZCB0ZXh0IGJhY2sgYmVmb3JlIGRvaW5nXG4gICAgICAvLyB0aGUgY29sbGFwc2UgYW5pbWF0aW9uIHRvIGF2b2lkIHNob3dpbmcgYSBiaWcgY2h1bmsgb2Ygd2hpdGVzcGFjZS5cbiAgICAgIGFkYXB0ZXIuc2V0VGV4dCh0aGlzLnRleHRFbCwgcHJldmlvdXNUZXh0KTtcbiAgICB9XG5cbiAgICBhZGFwdGVyLnNldENvbnRhaW5lckhlaWdodChjb250YWluZXIsIGAke2N1cnJlbnRIZWlnaHR9cHhgKTtcbiAgICAvLyBUaGlzIHRpbWVvdXQgaXMgbmVjZXNzYXJ5IGR1ZSB0byB0aGUgYnJvd3NlciBuZWVkaW5nIHRvIHBpY2sgdXAgdGhlIG5vbi1hdXRvIGhlaWdodCBiZWluZyBzZXRcbiAgICAvLyBpbiBvcmRlciB0byBkbyB0aGUgdHJhbnN0aW9uIGluIGhlaWdodCBjb3JyZWN0bHkuIFdpdGhvdXQgaXQgdGhlIHRyYW5zaXRpb24gZG9lcyBub3QgZmlyZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGFkYXB0ZXIuc2V0Q29udGFpbmVySGVpZ2h0KGNvbnRhaW5lciwgYCR7bmV3SGVpZ2h0fXB4YCk7XG4gICAgICAvKiBUaGlzIHJlc2V0cyB2YWx1ZXMgaWYgdGhlIHRyYW5zaXRpb24gZG9lcyBub3QgZ2V0IGtpY2tlZCBvZmYgKi9cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkVuZCgpO1xuICAgICAgfSwgNTAwKTtcbiAgICB9LCAxMCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdGV4dC1leHBhbmQtY29udGFpbmVyXCJcbiAgKHRyYW5zaXRpb25lbmQpPVwiYW5pbWF0aW9uRW5kKClcIlxuICAjY29udGFpbmVyXG4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRleHQtZXhwYW5kLXRleHRcIiBbaWRdPVwiY29udGVudFNlY3Rpb25JZFwiICN0ZXh0Pjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJza3ktdGV4dC1leHBhbmQtZWxsaXBzaXNcIiAqbmdJZj1cIiFpc0V4cGFuZGVkICYmIGV4cGFuZGFibGVcIlxuICAgID4uLi5cbiAgPC9zcGFuPlxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJleHBhbmRhYmxlXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rLWlubGluZSBza3ktdGV4dC1leHBhbmQtc2VlLW1vcmVcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNNb2RhbCA/IHVuZGVmaW5lZCA6IGlzRXhwYW5kZWRcIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNNb2RhbCA/IHVuZGVmaW5lZCA6IGNvbnRlbnRTZWN0aW9uSWRcIlxuICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaXNNb2RhbCA/ICdkaWFsb2cnIDogdW5kZWZpbmVkXCJcbiAgICAoY2xpY2spPVwidGV4dEV4cGFuZCgpXCJcbiAgPlxuICAgIHt7IGJ1dHRvblRleHQgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQvdGV4dC1leHBhbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEQsT0FBTyxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQUU1RTs7R0FFRztBQUNILElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQThCZixNQUFNLE9BQU8sc0JBQXNCO0lBOElqQyxZQUNFLFNBQWlDLEVBQ2pDLFFBQXlCLEVBQ3pCLGlCQUE4Qzs7UUFoRWhEOztXQUVH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TUFBTSxFQUNOLEtBQUssQ0FBQztnQ0FDSixTQUFTLEVBQUUsd0JBQXdCOzZCQUNwQyxDQUFDLEVBQ0YsRUFBRSxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNwQzs0QkFDRCxLQUFLLENBQ0gsT0FBTyxFQUNQLEtBQUssQ0FBQztnQ0FDSixTQUFTLEVBQUUsd0JBQXdCOzZCQUNwQyxDQUFDLEVBQ0YsRUFBRSxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNwQzs0QkFDRCxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzs0QkFDbEQsVUFBVSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQ2xELFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO3lCQUM1QixDQUFDO3FCQUNILFlBQ1MsaUJBQWlCLGFBR2hCLENBQUMsMkJBQTJCLENBQUM7cUxBUWpDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFVSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBcUJLLG1CQUFtQjtzQkFEN0IsS0FBSztnQkFxQkssU0FBUztzQkFEbkIsS0FBSztnQkFrQkssSUFBSTtzQkFEZCxLQUFLO2dCQWNDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFtQkMsV0FBVztzQkFKakIsU0FBUzt1QkFBQyxXQUFXLEVBQUU7d0JBQ3RCLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPVSxNQUFNO3NCQUpoQixTQUFTO3VCQUFDLE1BQU0sRUFBRTt3QkFDakIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHsgU2t5TW9kYWxTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5cbmltcG9ydCB7IGZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VGV4dEV4cGFuZEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi90ZXh0LWV4cGFuZC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0tZX1RFWFRfRVhQQU5EX01PREFMX0NPTlRFWFQgfSBmcm9tICcuL3RleHQtZXhwYW5kLW1vZGFsLWNvbnRleHQtdG9rZW4nO1xuaW1wb3J0IHsgU2t5VGV4dEV4cGFuZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0LWV4cGFuZC1tb2RhbC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEF1dG8taW5jcmVtZW50aW5nIGludGVnZXIgdXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgaWRzIGZvciB0ZXh0IGV4cGFuZCBjb21wb25lbnRzLlxuICovXG5sZXQgbmV4dElkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdleHBhbnNpb25BbmltYXRpb24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXSksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ3RydWUnLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgbWF4SGVpZ2h0OiAne3t0cmFuc2l0aW9uSGVpZ2h0fX1weCcsXG4gICAgICAgIH0pLFxuICAgICAgICB7IHBhcmFtczogeyB0cmFuc2l0aW9uSGVpZ2h0OiAwIH0gfVxuICAgICAgKSxcbiAgICAgIHN0YXRlKFxuICAgICAgICAnZmFsc2UnLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgbWF4SGVpZ2h0OiAne3t0cmFuc2l0aW9uSGVpZ2h0fX1weCcsXG4gICAgICAgIH0pLFxuICAgICAgICB7IHBhcmFtczogeyB0cmFuc2l0aW9uSGVpZ2h0OiAwIH0gfVxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJ3RydWUgPT4gZmFsc2UnLCBhbmltYXRlKCcyNTBtcyBlYXNlJykpLFxuICAgICAgdHJhbnNpdGlvbignZmFsc2UgPT4gdHJ1ZScsIGFuaW1hdGUoJzI1MG1zIGVhc2UnKSksXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXSksXG4gICAgXSksXG4gIF0sXG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZXhwYW5kJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZXhwYW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1leHBhbmQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5VGV4dEV4cGFuZEFkYXB0ZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEV4cGFuZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgdGl0bGUgdG8gZGlzcGxheSB3aGVuIHRoZSBjb21wb25lbnQgZXhwYW5kcyB0aGUgZnVsbCB0ZXh0IGluIGEgbW9kYWwuXG4gICAqIEBkZWZhdWx0IFwiRXhwYW5kZWQgdmlld1wiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZXhwYW5kTW9kYWxUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRleHQgY2hhcmFjdGVycyB0byBkaXNwbGF5IGlubGluZSB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgbGlua1xuICAgKiB0byBleHBhbmQgdGhlIGZ1bGwgdGV4dC4gSWYgdGhlIHRleHQgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGVuIHRoZSBjb21wb25lbnQgZXhwYW5kc1xuICAgKiB0aGUgZnVsbCB0ZXh0IGluIGEgbW9kYWwgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgNjAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heEV4cGFuZGVkTGVuZ3RoKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI19tYXhFeHBhbmRlZExlbmd0aCA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfbWF4RXhwYW5kZWRMZW5ndGggPSA2MDA7XG4gICAgfVxuICAgIHRoaXMuI3NldHVwKHRoaXMudGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heEV4cGFuZGVkTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhFeHBhbmRlZExlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5ld2xpbmUgY2hhcmFjdGVycyB0byBkaXNwbGF5IGlubGluZSB3aGVuIHVzZXJzIHNlbGVjdFxuICAgKiB0aGUgbGluayB0byBleHBhbmQgdGhlIGZ1bGwgdGV4dC4gSWYgdGhlIHRleHQgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGVuXG4gICAqIHRoZSBjb21wb25lbnQgZXhwYW5kcyB0aGUgZnVsbCB0ZXh0IGluIGEgbW9kYWwgdmlldyBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heEV4cGFuZGVkTmV3bGluZXModmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX21heEV4cGFuZGVkTmV3bGluZXMgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX21heEV4cGFuZGVkTmV3bGluZXMgPSAyO1xuICAgIH1cbiAgICB0aGlzLiNzZXR1cCh0aGlzLnRleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXhFeHBhbmRlZE5ld2xpbmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhFeHBhbmRlZE5ld2xpbmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHRleHQgY2hhcmFjdGVycyB0byBkaXNwbGF5IGJlZm9yZSB0cnVuY2F0aW5nIHRoZSB0ZXh0LlxuICAgKiBUbyBhdm9pZCB0cnVuY2F0aW5nIHRleHQgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQsIHRoZSBjb21wb25lbnQgbG9va3MgZm9yIGEgc3BhY2VcbiAgICogaW4gdGhlIDEwIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBsYXN0IGNoYXJhY3Rlci5cbiAgICogQGRlZmF1bHQgMjAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heExlbmd0aCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfbWF4TGVuZ3RoID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI19tYXhMZW5ndGggPSAyMDA7XG4gICAgfVxuICAgIHRoaXMuI3NldHVwKHRoaXMudGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heExlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfbWF4TGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdGV4dCB0byB0cnVuY2F0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RleHQgPSB2YWx1ZSA/PyAnJztcbiAgICB0aGlzLiNzZXR1cCh0aGlzLiNfdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3RleHQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVwbGFjZSBuZXdsaW5lIGNoYXJhY3RlcnMgaW4gdHJ1bmNhdGVkIHRleHQgd2l0aCBzcGFjZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdHJ1bmNhdGVOZXdsaW5lcyA9IHRydWU7XG5cbiAgcHVibGljIGJ1dHRvblRleHQgPSAnJztcblxuICBwdWJsaWMgY29udGVudFNlY3Rpb25JZCA9IGBza3ktdGV4dC1leHBhbmQtY29udGVudC0keysrbmV4dElkfWA7XG5cbiAgcHVibGljIGV4cGFuZGFibGUgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNFeHBhbmRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaXNNb2RhbCA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0cmFuc2l0aW9uSGVpZ2h0ID0gMTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBjb250YWluZXJFbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0ZXh0Jywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgc2V0IHRleHRFbCh2YWx1ZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190ZXh0RWwgPSB2YWx1ZTtcbiAgICB0aGlzLiNzZXR1cCh0aGlzLnRleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXh0RWwoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190ZXh0RWw7XG4gIH1cblxuICAjY29sbGFwc2VkVGV4dCA9ICcnO1xuXG4gICNuZXdsaW5lQ291bnQgPSAwO1xuXG4gICNzZWVNb3JlVGV4dCA9ICcnO1xuXG4gICNzZWVMZXNzVGV4dCA9ICcnO1xuXG4gICN0ZXh0VG9TaG93ID0gJyc7XG5cbiAgI19tYXhFeHBhbmRlZExlbmd0aCA9IDYwMDtcblxuICAjX21heEV4cGFuZGVkTmV3bGluZXMgPSAyO1xuXG4gICNfbWF4TGVuZ3RoID0gMjAwO1xuXG4gICNfdGV4dCA9ICcnO1xuXG4gICNfdGV4dEVsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICNyZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG4gICNtb2RhbFN2YzogU2t5TW9kYWxTZXJ2aWNlO1xuICAjdGV4dEV4cGFuZEFkYXB0ZXI6IFNreVRleHRFeHBhbmRBZGFwdGVyU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgbW9kYWxTdmM6IFNreU1vZGFsU2VydmljZSxcbiAgICB0ZXh0RXhwYW5kQWRhcHRlcjogU2t5VGV4dEV4cGFuZEFkYXB0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI3Jlc291cmNlcyA9IHJlc291cmNlcztcbiAgICB0aGlzLiNtb2RhbFN2YyA9IG1vZGFsU3ZjO1xuICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyID0gdGV4dEV4cGFuZEFkYXB0ZXI7XG4gIH1cblxuICBwdWJsaWMgdGV4dEV4cGFuZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc01vZGFsKSB7XG4gICAgICAvLyBNb2RhbCBWaWV3XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLiNtb2RhbFN2Yy5vcGVuKFNreVRleHRFeHBhbmRNb2RhbENvbXBvbmVudCwgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFNLWV9URVhUX0VYUEFORF9NT0RBTF9DT05URVhULFxuICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLmV4cGFuZE1vZGFsVGl0bGUsXG4gICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vcm1hbCBWaWV3XG4gICAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLiNhbmltYXRlVGV4dCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2FuaW1hdGVUZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYW5pbWF0aW9uRW5kKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRleHRFbCAmJiB0aGlzLmNvbnRhaW5lckVsKSB7XG4gICAgICAvLyBFbnN1cmUgdGhlIGNvcnJlY3QgdGV4dCBpcyBkaXNwbGF5ZWRcbiAgICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI3RleHRUb1Nob3cpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyRWwpIHtcbiAgICAgICAgICAvLyBTZXQgaGVpZ2h0IGJhY2sgdG8gYXV0byBzbyB0aGUgYnJvd3NlciBjYW4gY2hhbmdlIHRoZSBoZWlnaHQgYXMgbmVlZGVkIHdpdGggd2luZG93IGNoYW5nZXNcbiAgICAgICAgICB0aGlzLiN0ZXh0RXhwYW5kQWRhcHRlci5yZW1vdmVDb250YWluZXJNYXhIZWlnaHQodGhpcy5jb250YWluZXJFbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgb2JzZXJ2YWJsZUZvcmtKb2luKFtcbiAgICAgIHRoaXMuI3Jlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZXhwYW5kX3NlZV9tb3JlJyksXG4gICAgICB0aGlzLiNyZXNvdXJjZXMuZ2V0U3RyaW5nKCdza3l1eF90ZXh0X2V4cGFuZF9zZWVfbGVzcycpLFxuICAgIF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2VzKSA9PiB7XG4gICAgICAgIHRoaXMuI3NlZU1vcmVUZXh0ID0gcmVzb3VyY2VzWzBdO1xuICAgICAgICB0aGlzLiNzZWVMZXNzVGV4dCA9IHJlc291cmNlc1sxXTtcbiAgICAgICAgdGhpcy4jc2V0dXAodGhpcy50ZXh0KTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMuZXhwYW5kTW9kYWxUaXRsZSkge1xuICAgICAgICAgIHRoaXMuI3Jlc291cmNlc1xuICAgICAgICAgICAgLmdldFN0cmluZygnc2t5dXhfdGV4dF9leHBhbmRfbW9kYWxfdGl0bGUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwYW5kTW9kYWxUaXRsZSA9IHJlc291cmNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI3NldHVwKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI25ld2xpbmVDb3VudCA9IHRoaXMuI2dldE5ld2xpbmVDb3VudCh2YWx1ZSk7XG4gICAgICB0aGlzLiNjb2xsYXBzZWRUZXh0ID0gdGhpcy4jZ2V0VHJ1bmNhdGVkVGV4dCh2YWx1ZSwgdGhpcy5tYXhMZW5ndGgpO1xuICAgICAgaWYgKHRoaXMuI2NvbGxhcHNlZFRleHQgIT09IHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uVGV4dCA9IHRoaXMuI3NlZU1vcmVUZXh0O1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5leHBhbmRhYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc01vZGFsID1cbiAgICAgICAgICB0aGlzLiNuZXdsaW5lQ291bnQgPiB0aGlzLm1heEV4cGFuZGVkTmV3bGluZXMgfHxcbiAgICAgICAgICB0aGlzLnRleHQubGVuZ3RoID4gdGhpcy5tYXhFeHBhbmRlZExlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy4jdGV4dFRvU2hvdyA9IHRoaXMuI2NvbGxhcHNlZFRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3RleHRUb1Nob3cgPSAnJztcbiAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy50ZXh0RWwpIHtcbiAgICAgIHRoaXMuI3RleHRFeHBhbmRBZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI3RleHRUb1Nob3cpO1xuICAgIH1cbiAgfVxuXG4gICNnZXROZXdsaW5lQ291bnQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC9cXG4vZ2kpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gICNnZXRUcnVuY2F0ZWRUZXh0KHZhbHVlOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaTogbnVtYmVyO1xuICAgIGlmICh0aGlzLnRydW5jYXRlTmV3bGluZXMpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxuKy9naSwgJyAnKTtcbiAgICB9XG4gICAgLy8gSnVtcCBhaGVhZCBvbmUgY2hhcmFjdGVyIGFuZCBzZWUgaWYgaXQncyBhIHNwYWNlLCBhbmQgaWYgaXQgaXNuJ3QsXG4gICAgLy8gYmFjayB1cCB0byB0aGUgZmlyc3Qgc3BhY2UgYW5kIGJyZWFrIHRoZXJlIHNvIGEgd29yZCBkb2Vzbid0IGdldCBjdXRcbiAgICAvLyBpbiBoYWxmLlxuICAgIGlmIChsZW5ndGggPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaSA+IGxlbmd0aCAtIDEwOyBpLS0pIHtcbiAgICAgICAgaWYgKC9cXHMvLnRlc3QodmFsdWUuY2hhckF0KGkpKSkge1xuICAgICAgICAgIGxlbmd0aCA9IGk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgI2FuaW1hdGVUZXh0KGV4cGFuZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lckVsICYmIHRoaXMudGV4dEVsKSB7XG4gICAgICBjb25zdCBhZGFwdGVyID0gdGhpcy4jdGV4dEV4cGFuZEFkYXB0ZXI7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lckVsO1xuICAgICAgaWYgKGV4cGFuZGluZykge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMudGV4dCk7XG4gICAgICAgIHRoaXMuI3RleHRUb1Nob3cgPSB0aGlzLnRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMuI2NvbGxhcHNlZFRleHQpO1xuICAgICAgICB0aGlzLiN0ZXh0VG9TaG93ID0gdGhpcy4jY29sbGFwc2VkVGV4dDtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnV0dG9uVGV4dCA9IGV4cGFuZGluZyA/IHRoaXMuI3NlZUxlc3NUZXh0IDogdGhpcy4jc2VlTW9yZVRleHQ7XG4gICAgICAvLyBNZWFzdXJlIHRoZSBuZXcgaGVpZ2h0IHNvIHdlIGNhbiBhbmltYXRlIHRvIGl0LlxuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gYWRhcHRlci5nZXRDb250YWluZXJIZWlnaHQoY29udGFpbmVyKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvbkhlaWdodCA9IG5ld0hlaWdodDtcbiAgICAgIC8vIEFsd2F5cyBzaG93IGFsbCB0ZXh0IHdoaWxlIGFuaW1hdGluZyBzbyB0aGF0IHRoZSBhbmltYXRpb24gaXMgc21vb3RoLiBUaGUgYW5pbWF0aW9uIGNhbGxiYWNrIHdpbGwgc2V0IHRoaXMgYmFjayBpZiBuZWVkZWQuXG4gICAgICBpZiAoIWV4cGFuZGluZykge1xuICAgICAgICBhZGFwdGVyLnNldFRleHQodGhpcy50ZXh0RWwsIHRoaXMudGV4dCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSBleHBhbmRpbmc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtAZXhwYW5zaW9uQW5pbWF0aW9uXT1cIntcbiAgICB2YWx1ZTogaXNFeHBhbmRlZCxcbiAgICBwYXJhbXM6IHsgdHJhbnNpdGlvbkhlaWdodDogdHJhbnNpdGlvbkhlaWdodCB9XG4gIH1cIlxuICAoQGV4cGFuc2lvbkFuaW1hdGlvbi5kb25lKT1cImFuaW1hdGlvbkVuZCgpXCJcbiAgY2xhc3M9XCJza3ktdGV4dC1leHBhbmQtY29udGFpbmVyXCJcbiAgI2NvbnRhaW5lclxuPlxuICA8c3BhbiBjbGFzcz1cInNreS10ZXh0LWV4cGFuZC10ZXh0XCIgW2lkXT1cImNvbnRlbnRTZWN0aW9uSWRcIiAjdGV4dD48L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRleHQtZXhwYW5kLWVsbGlwc2lzXCIgKm5nSWY9XCIhaXNFeHBhbmRlZCAmJiBleHBhbmRhYmxlXCJcbiAgICA+Li4uXG4gIDwvc3Bhbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwiZXhwYW5kYWJsZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluay1pbmxpbmUgc2t5LXRleHQtZXhwYW5kLXNlZS1tb3JlXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzTW9kYWwgPyB1bmRlZmluZWQgOiAhIWlzRXhwYW5kZWRcIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNNb2RhbCA/IHVuZGVmaW5lZCA6IGNvbnRlbnRTZWN0aW9uSWRcIlxuICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiaXNNb2RhbCA/ICdkaWFsb2cnIDogdW5kZWZpbmVkXCJcbiAgICAoY2xpY2spPVwidGV4dEV4cGFuZCgpXCJcbiAgPlxuICAgIHt7IGJ1dHRvblRleHQgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -1,3 +1,5 @@
1
+ var _SkyTextExpandRepeaterAdapterService_renderer;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { Injectable, RendererFactory2, } from '@angular/core';
2
4
  import * as i0 from "@angular/core";
3
5
  /**
@@ -5,33 +7,29 @@ import * as i0 from "@angular/core";
5
7
  */
6
8
  export class SkyTextExpandRepeaterAdapterService {
7
9
  constructor(rendererFactory) {
8
- this.rendererFactory = rendererFactory;
9
- this.renderer = this.rendererFactory.createRenderer(undefined, undefined);
10
+ _SkyTextExpandRepeaterAdapterService_renderer.set(this, void 0);
11
+ __classPrivateFieldSet(this, _SkyTextExpandRepeaterAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
10
12
  }
11
13
  getItems(elRef) {
12
14
  return elRef.nativeElement.querySelectorAll('.sky-text-expand-repeater-item');
13
15
  }
14
16
  hideItem(item) {
15
- this.renderer.setStyle(item, 'display', 'none');
17
+ __classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").setStyle(item, 'display', 'none');
16
18
  }
17
19
  showItem(item) {
18
- this.renderer.setStyle(item, 'display', 'list-item');
20
+ __classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").removeStyle(item, 'display');
19
21
  }
20
22
  getContainerHeight(containerEl) {
21
23
  return containerEl.nativeElement.offsetHeight;
22
24
  }
23
- setContainerHeight(containerEl, height) {
24
- if (height === undefined) {
25
- this.renderer.removeStyle(containerEl.nativeElement, 'max-height');
26
- }
27
- else {
28
- this.renderer.setStyle(containerEl.nativeElement, 'max-height', height);
29
- }
25
+ removeContainerMaxHeight(containerEl) {
26
+ __classPrivateFieldGet(this, _SkyTextExpandRepeaterAdapterService_renderer, "f").removeStyle(containerEl.nativeElement, 'max-height');
30
27
  }
31
28
  }
29
+ _SkyTextExpandRepeaterAdapterService_renderer = new WeakMap();
32
30
  SkyTextExpandRepeaterAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandRepeaterAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
33
31
  SkyTextExpandRepeaterAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandRepeaterAdapterService });
34
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyTextExpandRepeaterAdapterService, decorators: [{
35
33
  type: Injectable
36
34
  }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQtcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQtcmVwZWF0ZXIvdGV4dC1leHBhbmQtcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEVBRVYsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDOztBQUV2Qjs7R0FFRztBQUVILE1BQU0sT0FBTyxtQ0FBbUM7SUFHOUMsWUFBb0IsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ25ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBaUI7UUFDL0IsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUN6QyxnQ0FBZ0MsQ0FDakMsQ0FBQztJQUNKLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBaUI7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQWlCO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFdBQXVCO1FBQy9DLE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDaEQsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFdBQXVCLEVBQUUsTUFBYztRQUMvRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNwRTthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDOztnSUEvQlUsbUNBQW1DO29JQUFuQyxtQ0FBbUM7MkZBQW5DLG1DQUFtQztrQkFEL0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJGYWN0b3J5Mixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUZXh0RXhwYW5kUmVwZWF0ZXJBZGFwdGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5Mikge1xuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbXMoZWxSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICByZXR1cm4gZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgJy5za3ktdGV4dC1leHBhbmQtcmVwZWF0ZXItaXRlbSdcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGhpZGVJdGVtKGl0ZW06IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpdGVtLCAnZGlzcGxheScsICdub25lJyk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0l0ZW0oaXRlbTogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGl0ZW0sICdkaXNwbGF5JywgJ2xpc3QtaXRlbScpO1xuICB9XG5cbiAgcHVibGljIGdldENvbnRhaW5lckhlaWdodChjb250YWluZXJFbDogRWxlbWVudFJlZikge1xuICAgIHJldHVybiBjb250YWluZXJFbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb250YWluZXJIZWlnaHQoY29udGFpbmVyRWw6IEVsZW1lbnRSZWYsIGhlaWdodDogc3RyaW5nKSB7XG4gICAgaWYgKGhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGNvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQsICdtYXgtaGVpZ2h0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyRWwubmF0aXZlRWxlbWVudCwgJ21heC1oZWlnaHQnLCBoZWlnaHQpO1xuICAgIH1cbiAgfVxufVxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQtcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGliL21vZHVsZXMvdGV4dC1leHBhbmQtcmVwZWF0ZXIvdGV4dC1leHBhbmQtcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFVBQVUsRUFFVixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7O0FBRXZCOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1DQUFtQztJQUc5QyxZQUFZLGVBQWlDO1FBRjdDLGdFQUFxQjtRQUduQix1QkFBQSxJQUFJLGlEQUFhLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFBLENBQUM7SUFDbkUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFpQjtRQUMvQixPQUFRLEtBQUssQ0FBQyxhQUE2QixDQUFDLGdCQUFnQixDQUMxRCxnQ0FBZ0MsQ0FDTixDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBaUI7UUFDL0IsdUJBQUEsSUFBSSxxREFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxRQUFRLENBQUMsSUFBaUI7UUFDL0IsdUJBQUEsSUFBSSxxREFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFdBQXVCO1FBQy9DLE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDaEQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLFdBQXVCO1FBQ3JELHVCQUFBLElBQUkscURBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RSxDQUFDOzs7Z0lBM0JVLG1DQUFtQztvSUFBbkMsbUNBQW1DOzJGQUFuQyxtQ0FBbUM7a0JBRC9DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VGV4dEV4cGFuZFJlcGVhdGVyQWRhcHRlclNlcnZpY2Uge1xuICAjcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICBjb25zdHJ1Y3RvcihyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIpIHtcbiAgICB0aGlzLiNyZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIG51bGwpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1zKGVsUmVmOiBFbGVtZW50UmVmKTogTm9kZUxpc3RPZjxIVE1MRWxlbWVudD4ge1xuICAgIHJldHVybiAoZWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICcuc2t5LXRleHQtZXhwYW5kLXJlcGVhdGVyLWl0ZW0nXG4gICAgKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PjtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlSXRlbShpdGVtOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKGl0ZW0sICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93SXRlbShpdGVtOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZVN0eWxlKGl0ZW0sICdkaXNwbGF5Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udGFpbmVySGVpZ2h0KGNvbnRhaW5lckVsOiBFbGVtZW50UmVmKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY29udGFpbmVyRWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ29udGFpbmVyTWF4SGVpZ2h0KGNvbnRhaW5lckVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGFpbmVyRWwubmF0aXZlRWxlbWVudCwgJ21heC1oZWlnaHQnKTtcbiAgfVxufVxuIl19