@eui/components 17.0.0-next.15 → 17.0.0-next.16

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 (213) hide show
  1. package/docs/components/ChartComponent.html +2 -2
  2. package/docs/components/CollapsedBreadcrumbComponent.html +2 -2
  3. package/docs/components/EclMessageWcComponent.html +2 -2
  4. package/docs/components/EuiAccessibleButtonIconComponent.html +2 -2
  5. package/docs/components/EuiAlertComponent.html +2 -2
  6. package/docs/components/EuiAppBreadcrumbComponent.html +2 -2
  7. package/docs/components/EuiAppComponent.html +2 -2
  8. package/docs/components/EuiAppFooterComponent.html +2 -2
  9. package/docs/components/EuiAppHeaderComponent.html +2 -2
  10. package/docs/components/EuiAppSidebarBodyComponent.html +2 -2
  11. package/docs/components/EuiAppSidebarComponent.html +2 -2
  12. package/docs/components/EuiAppSidebarDrawerComponent.html +2 -2
  13. package/docs/components/EuiAppSidebarFooterComponent.html +2 -2
  14. package/docs/components/EuiAppSidebarHeaderComponent.html +2 -2
  15. package/docs/components/EuiAppSidebarHeaderUserProfileComponent.html +2 -2
  16. package/docs/components/EuiAppSidebarMenuComponent.html +2 -2
  17. package/docs/components/EuiAppToolbarComponent.html +2 -2
  18. package/docs/components/EuiAppTopMessageComponent.html +2 -2
  19. package/docs/components/EuiAutocompleteAsyncTestComponent.html +2 -2
  20. package/docs/components/EuiAutocompleteChipsAsyncTestComponent.html +2 -2
  21. package/docs/components/EuiAutocompleteChipsTestComponent.html +2 -2
  22. package/docs/components/EuiAutocompleteComponent.html +2 -2
  23. package/docs/components/EuiAutocompleteTestComponent.html +2 -2
  24. package/docs/components/EuiAvatarBadgeComponent.html +2 -2
  25. package/docs/components/EuiAvatarComponent.html +2 -2
  26. package/docs/components/EuiAvatarIconComponent.html +2 -2
  27. package/docs/components/EuiAvatarImageComponent.html +2 -2
  28. package/docs/components/EuiAvatarListComponent.html +2 -2
  29. package/docs/components/EuiAvatarTextComponent.html +2 -2
  30. package/docs/components/EuiBadgeComponent.html +2 -2
  31. package/docs/components/EuiBlockContentComponent.html +2 -2
  32. package/docs/components/EuiBlockDocumentComponent.html +2 -2
  33. package/docs/components/EuiBreadcrumbComponent.html +2 -2
  34. package/docs/components/EuiBreadcrumbItemComponent.html +2 -2
  35. package/docs/components/EuiButtonComponent.html +2 -2
  36. package/docs/components/EuiButtonGroupComponent.html +2 -2
  37. package/docs/components/EuiButtonsComponent.html +2 -2
  38. package/docs/components/EuiCardComponent.html +2 -2
  39. package/docs/components/EuiCardContentComponent.html +2 -2
  40. package/docs/components/EuiCardFooterActionButtonsComponent.html +2 -2
  41. package/docs/components/EuiCardFooterActionIconsComponent.html +2 -2
  42. package/docs/components/EuiCardFooterComponent.html +2 -2
  43. package/docs/components/EuiCardFooterMenuContentComponent.html +2 -2
  44. package/docs/components/EuiCardHeaderBodyComponent.html +2 -2
  45. package/docs/components/EuiCardHeaderComponent.html +2 -2
  46. package/docs/components/EuiCardHeaderLeftContentComponent.html +2 -2
  47. package/docs/components/EuiCardHeaderRightContentComponent.html +2 -2
  48. package/docs/components/EuiCardHeaderSubtitleComponent.html +2 -2
  49. package/docs/components/EuiCardHeaderTitleComponent.html +2 -2
  50. package/docs/components/EuiCardMediaComponent.html +2 -2
  51. package/docs/components/EuiChipComponent.html +2 -2
  52. package/docs/components/EuiChipListComponent.html +2 -2
  53. package/docs/components/EuiCommonHeaderComponent.html +2 -2
  54. package/docs/components/EuiDashboardButtonComponent.html +2 -2
  55. package/docs/components/EuiDashboardCardComponent.html +2 -2
  56. package/docs/components/EuiDateRangeSelectorComponent.html +2 -2
  57. package/docs/components/EuiDatepickerComponent.html +2 -2
  58. package/docs/components/EuiDialogComponent.html +2 -2
  59. package/docs/components/EuiDialogContainerComponent.html +2 -2
  60. package/docs/components/EuiDimmerComponent.html +2 -2
  61. package/docs/components/EuiDisableContentComponent.html +2 -2
  62. package/docs/components/EuiDiscussionThreadComponent.html +2 -2
  63. package/docs/components/EuiDiscussionThreadItemComponent.html +2 -2
  64. package/docs/components/EuiDropdownComponent.html +2 -2
  65. package/docs/components/EuiDropdownItemComponent.html +2 -2
  66. package/docs/components/EuiEclBannerComponent.html +2 -2
  67. package/docs/components/EuiEclButtonComponent.html +2 -2
  68. package/docs/components/EuiEclCarouselComponent.html +2 -2
  69. package/docs/components/EuiEclCarouselItemComponent.html +2 -2
  70. package/docs/components/EuiEclIconComponent.html +2 -2
  71. package/docs/components/EuiEclMessageComponent.html +2 -2
  72. package/docs/components/EuiEditorComponent.html +2 -2
  73. package/docs/components/EuiEditorCountersComponent.html +2 -2
  74. package/docs/components/EuiEditorHtmlViewComponent.html +2 -2
  75. package/docs/components/EuiEditorImageDialogComponent.html +2 -2
  76. package/docs/components/EuiEditorJsonViewComponent.html +2 -2
  77. package/docs/components/EuiExpandContentComponent.html +2 -2
  78. package/docs/components/EuiFeedbackMessageComponent.html +2 -2
  79. package/docs/components/EuiFieldsetComponent.html +2 -2
  80. package/docs/components/EuiFilePreviewComponent.html +2 -2
  81. package/docs/components/EuiFileUploadComponent.html +2 -2
  82. package/docs/components/EuiFileUploadProgressComponent.html +2 -2
  83. package/docs/components/EuiFooterComponent.html +2 -2
  84. package/docs/components/EuiGrowlComponent.html +2 -2
  85. package/docs/components/EuiHeaderAppComponent.html +2 -2
  86. package/docs/components/EuiHeaderAppNameComponent.html +2 -2
  87. package/docs/components/EuiHeaderAppNameLogoComponent.html +2 -2
  88. package/docs/components/EuiHeaderAppSubtitleComponent.html +2 -2
  89. package/docs/components/EuiHeaderComponent.html +2 -2
  90. package/docs/components/EuiHeaderEnvironmentComponent.html +2 -2
  91. package/docs/components/EuiHeaderLogoComponent.html +2 -2
  92. package/docs/components/EuiHeaderUserProfileComponent.html +2 -2
  93. package/docs/components/EuiIconColorComponent.html +2 -2
  94. package/docs/components/EuiIconComponent.html +2 -2
  95. package/docs/components/EuiIconSvgComponent.html +2 -2
  96. package/docs/components/EuiIconToggleComponent.html +2 -2
  97. package/docs/components/EuiInputCheckboxComponent.html +2 -2
  98. package/docs/components/EuiInputGroupComponent.html +2 -2
  99. package/docs/components/EuiInputNumberComponent.html +2 -2
  100. package/docs/components/EuiInputRadioComponent.html +2 -2
  101. package/docs/components/EuiInputTextComponent.html +2 -2
  102. package/docs/components/EuiLabelComponent.html +2 -2
  103. package/docs/components/EuiLanguageSelectorComponent.html +2 -2
  104. package/docs/components/EuiListComponent.html +2 -2
  105. package/docs/components/EuiListItemComponent.html +2 -2
  106. package/docs/components/EuiMenuComponent.html +2 -2
  107. package/docs/components/EuiMenuItemComponent.html +2 -2
  108. package/docs/components/EuiMessageBoxComponent.html +2 -2
  109. package/docs/components/EuiModalSelectorComponent.html +2 -2
  110. package/docs/components/EuiNotificationItemComponent.html +2 -2
  111. package/docs/components/EuiNotificationItemV2Component.html +2 -2
  112. package/docs/components/EuiNotificationsComponent.html +2 -2
  113. package/docs/components/EuiNotificationsV2Component.html +2 -2
  114. package/docs/components/EuiOverlayBodyComponent.html +2 -2
  115. package/docs/components/EuiOverlayComponent.html +2 -2
  116. package/docs/components/EuiOverlayFooterComponent.html +2 -2
  117. package/docs/components/EuiOverlayHeaderComponent.html +2 -2
  118. package/docs/components/EuiOverlayHeaderTitleComponent.html +2 -2
  119. package/docs/components/EuiPageBreadcrumbComponent.html +2 -2
  120. package/docs/components/EuiPageColumnComponent.html +2 -2
  121. package/docs/components/EuiPageColumnsComponent.html +2 -2
  122. package/docs/components/EuiPageComponent.html +2 -2
  123. package/docs/components/EuiPageContentComponent.html +2 -2
  124. package/docs/components/EuiPageFooterComponent.html +2 -2
  125. package/docs/components/EuiPageHeaderComponent.html +2 -2
  126. package/docs/components/EuiPageHeroHeaderComponent.html +2 -2
  127. package/docs/components/EuiPageTopContentComponent.html +2 -2
  128. package/docs/components/EuiPaginatorComponent.html +2 -2
  129. package/docs/components/EuiPopoverComponent.html +2 -2
  130. package/docs/components/EuiProgressBarComponent.html +2 -2
  131. package/docs/components/EuiProgressCircleComponent.html +2 -2
  132. package/docs/components/EuiResizableComponent.html +2 -2
  133. package/docs/components/EuiSearchComponent.html +2 -2
  134. package/docs/components/EuiSelectComponent.html +2 -2
  135. package/docs/components/EuiSidebarMenuComponent.html +2 -2
  136. package/docs/components/EuiSidebarToggleComponent.html +2 -2
  137. package/docs/components/EuiSlideToggleComponent.html +2 -2
  138. package/docs/components/EuiSlideToggleTestComponent.html +2 -2
  139. package/docs/components/EuiTabComponent.html +2 -2
  140. package/docs/components/EuiTabContentComponent.html +2 -2
  141. package/docs/components/EuiTabLabelComponent.html +2 -2
  142. package/docs/components/EuiTableComponent.html +2 -2
  143. package/docs/components/EuiTableExpandableRowComponent.html +2 -2
  144. package/docs/components/EuiTableFilterComponent.html +2 -2
  145. package/docs/components/EuiTableSelectableHeaderComponent.html +2 -2
  146. package/docs/components/EuiTableSelectableRowComponent.html +2 -2
  147. package/docs/components/EuiTableSortableColComponent.html +2 -2
  148. package/docs/components/EuiTabsComponent.html +2 -2
  149. package/docs/components/EuiTextareaComponent.html +2 -2
  150. package/docs/components/EuiTimebarComponent.html +2 -2
  151. package/docs/components/EuiTimelineComponent.html +2 -2
  152. package/docs/components/EuiTimelineItemComponent.html +2 -2
  153. package/docs/components/EuiTimepickerComponent.html +2 -2
  154. package/docs/components/EuiToolbarAppComponent.html +2 -2
  155. package/docs/components/EuiToolbarCenterComponent.html +2 -2
  156. package/docs/components/EuiToolbarComponent.html +2 -2
  157. package/docs/components/EuiToolbarEnvironmentComponent.html +2 -2
  158. package/docs/components/EuiToolbarItemComponent.html +2 -2
  159. package/docs/components/EuiToolbarItemNotificationsComponent.html +2 -2
  160. package/docs/components/EuiToolbarItemSearchComponent.html +2 -2
  161. package/docs/components/EuiToolbarItemUserProfileComponent.html +2 -2
  162. package/docs/components/EuiToolbarItemsComponent.html +2 -2
  163. package/docs/components/EuiToolbarLogoComponent.html +2 -2
  164. package/docs/components/EuiToolbarMenuComponent.html +2 -2
  165. package/docs/components/EuiTooltipContainerComponent.html +2 -2
  166. package/docs/components/EuiTreeComponent.html +2 -2
  167. package/docs/components/EuiTreeListComponent.html +8 -9
  168. package/docs/components/EuiTreeListItemComponent.html +186 -186
  169. package/docs/components/EuiTreeListItemContentComponent.html +327 -0
  170. package/docs/components/EuiTreeListToolbarComponent.html +1040 -0
  171. package/docs/components/EuiUserProfileCardComponent.html +2 -2
  172. package/docs/components/EuiUserProfileComponent.html +2 -2
  173. package/docs/components/EuiUserProfileMenuComponent.html +2 -2
  174. package/docs/components/EuiUserProfileMenuItemComponent.html +2 -2
  175. package/docs/components/EuiUxTreeComponent.html +2 -2
  176. package/docs/components/EuiUxTreeNodeComponent.html +2 -2
  177. package/docs/components/EuiUxTreeToolbarComponent.html +2 -2
  178. package/docs/components/EuiWizardComponent.html +2 -2
  179. package/docs/components/EuiWizardStepComponent.html +2 -2
  180. package/docs/components/QuillEditorComponent.html +2 -2
  181. package/docs/dependencies.html +2 -2
  182. package/docs/directives/EuiTreeListItemDetailsContentTagDirective.html +1 -1
  183. package/docs/directives/{EuiTreeListItemSubLabelTagDirective.html → EuiTreeListItemLabelTagDirective.html} +3 -3
  184. package/docs/directives/EuiTreeListItemSubContainerContentTagDirective.html +1 -1
  185. package/docs/directives/{EuiTreeListToolbarContentTagDirective.html → EuiUxTreeToolbarButtonsTagDirective.html} +4 -4
  186. package/docs/index.html +2 -2
  187. package/docs/js/menu-wc.js +13 -13
  188. package/docs/js/menu-wc_es5.js +1 -1
  189. package/docs/js/search/search_index.js +2 -2
  190. package/docs/modules/EuiTreeListModule.html +12 -6
  191. package/esm2022/eui-tree-list/eui-tree-list-item.component.mjs +58 -64
  192. package/esm2022/eui-tree-list/eui-tree-list.component.mjs +8 -42
  193. package/esm2022/eui-tree-list/eui-tree-list.module.mjs +30 -18
  194. package/esm2022/eui-tree-list/index.mjs +3 -1
  195. package/esm2022/eui-tree-list/item-content/item-content.component.mjs +17 -0
  196. package/esm2022/eui-tree-list/toolbar/toolbar.component.mjs +129 -0
  197. package/eui-tree-list/eui-tree-list-item.component.d.ts +19 -24
  198. package/eui-tree-list/eui-tree-list-item.component.d.ts.map +1 -1
  199. package/eui-tree-list/eui-tree-list.component.d.ts +4 -9
  200. package/eui-tree-list/eui-tree-list.component.d.ts.map +1 -1
  201. package/eui-tree-list/eui-tree-list.module.d.ts +10 -6
  202. package/eui-tree-list/eui-tree-list.module.d.ts.map +1 -1
  203. package/eui-tree-list/index.d.ts +2 -0
  204. package/eui-tree-list/index.d.ts.map +1 -1
  205. package/eui-tree-list/item-content/item-content.component.d.ts +7 -0
  206. package/eui-tree-list/item-content/item-content.component.d.ts.map +1 -0
  207. package/eui-tree-list/toolbar/toolbar.component.d.ts +44 -0
  208. package/eui-tree-list/toolbar/toolbar.component.d.ts.map +1 -0
  209. package/fesm2022/eui-components-eui-tree-list.mjs +223 -119
  210. package/fesm2022/eui-components-eui-tree-list.mjs.map +1 -1
  211. package/package.json +7 -7
  212. package/docs/directives/EuiTreeListItemCustomContentTagDirective.html +0 -172
  213. package/docs/directives/EuiTreeListItemRightContentTagDirective.html +0 -172
@@ -79,19 +79,19 @@
79
79
  <a href="../components/EuiTreeListItemComponent.html">EuiTreeListItemComponent</a>
80
80
  </li>
81
81
  <li class="list-group-item">
82
- <a href="../directives/EuiTreeListItemCustomContentTagDirective.html">EuiTreeListItemCustomContentTagDirective</a>
82
+ <a href="../components/EuiTreeListItemContentComponent.html">EuiTreeListItemContentComponent</a>
83
83
  </li>
84
84
  <li class="list-group-item">
85
85
  <a href="../directives/EuiTreeListItemDetailsContentTagDirective.html">EuiTreeListItemDetailsContentTagDirective</a>
86
86
  </li>
87
87
  <li class="list-group-item">
88
- <a href="../directives/EuiTreeListItemRightContentTagDirective.html">EuiTreeListItemRightContentTagDirective</a>
88
+ <a href="../directives/EuiTreeListItemLabelTagDirective.html">EuiTreeListItemLabelTagDirective</a>
89
89
  </li>
90
90
  <li class="list-group-item">
91
91
  <a href="../directives/EuiTreeListItemSubContainerContentTagDirective.html">EuiTreeListItemSubContainerContentTagDirective</a>
92
92
  </li>
93
93
  <li class="list-group-item">
94
- <a href="../directives/EuiTreeListItemSubLabelTagDirective.html">EuiTreeListItemSubLabelTagDirective</a>
94
+ <a href="../components/EuiTreeListToolbarComponent.html">EuiTreeListToolbarComponent</a>
95
95
  </li>
96
96
  </ul>
97
97
  </div>
@@ -106,6 +106,12 @@
106
106
  <li class="list-group-item">
107
107
  <a href="../modules/EuiIconModule.html">EuiIconModule</a>
108
108
  </li>
109
+ <li class="list-group-item">
110
+ <a href="../modules/EuiInputGroupModule.html">EuiInputGroupModule</a>
111
+ </li>
112
+ <li class="list-group-item">
113
+ <a href="../modules/EuiInputTextModule.html">EuiInputTextModule</a>
114
+ </li>
109
115
  <li class="list-group-item">
110
116
  <a href="../modules/EuiLabelModule.html">EuiLabelModule</a>
111
117
  </li>
@@ -126,19 +132,19 @@
126
132
  <a href="../components/EuiTreeListItemComponent.html">EuiTreeListItemComponent</a>
127
133
  </li>
128
134
  <li class="list-group-item">
129
- <a href="../directives/EuiTreeListItemCustomContentTagDirective.html">EuiTreeListItemCustomContentTagDirective</a>
135
+ <a href="../components/EuiTreeListItemContentComponent.html">EuiTreeListItemContentComponent</a>
130
136
  </li>
131
137
  <li class="list-group-item">
132
138
  <a href="../directives/EuiTreeListItemDetailsContentTagDirective.html">EuiTreeListItemDetailsContentTagDirective</a>
133
139
  </li>
134
140
  <li class="list-group-item">
135
- <a href="../directives/EuiTreeListItemRightContentTagDirective.html">EuiTreeListItemRightContentTagDirective</a>
141
+ <a href="../directives/EuiTreeListItemLabelTagDirective.html">EuiTreeListItemLabelTagDirective</a>
136
142
  </li>
137
143
  <li class="list-group-item">
138
144
  <a href="../directives/EuiTreeListItemSubContainerContentTagDirective.html">EuiTreeListItemSubContainerContentTagDirective</a>
139
145
  </li>
140
146
  <li class="list-group-item">
141
- <a href="../directives/EuiTreeListItemSubLabelTagDirective.html">EuiTreeListItemSubLabelTagDirective</a>
147
+ <a href="../components/EuiTreeListToolbarComponent.html">EuiTreeListToolbarComponent</a>
142
148
  </li>
143
149
  </ul>
144
150
  </div>
@@ -1,15 +1,20 @@
1
- /* eslint-disable */
2
- import { Component, ContentChild, ContentChildren, Directive, EventEmitter, forwardRef, Host, Inject, Input, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
1
+ import { Component, ContentChild, ContentChildren, Directive, EventEmitter, forwardRef, Host, HostBinding, Inject, Input, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
3
2
  import { EuiTreeListComponent } from './eui-tree-list.component';
4
3
  import { consumeEvent, uniqueId } from '@eui/core';
5
4
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
+ import { EuiTreeListItemContentComponent } from './item-content/item-content.component';
6
+ import { BaseStatesDirective } from '@eui/components/shared';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/router";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@eui/components/eui-icon";
10
- import * as i4 from "@eui/components/eui-label";
11
- import * as i5 from "@eui/components/eui-button";
9
+ import * as i2 from "@eui/components/shared";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@eui/components/eui-icon";
12
+ import * as i5 from "@eui/components/eui-label";
13
+ import * as i6 from "@eui/components/eui-button";
12
14
  export class EuiTreeListItemComponent {
15
+ get cssClasses() {
16
+ return this.getCssClasses();
17
+ }
13
18
  get active() {
14
19
  return this._active;
15
20
  }
@@ -46,11 +51,13 @@ export class EuiTreeListItemComponent {
46
51
  set isVisible(value) {
47
52
  this._isVisible = coerceBooleanProperty(value);
48
53
  }
49
- constructor(treeListComponent, router, elementRef) {
54
+ constructor(treeListComponent, router, elementRef, baseStatesDirective) {
50
55
  this.router = router;
51
56
  this.elementRef = elementRef;
52
- this.subLinks = [];
57
+ this.baseStatesDirective = baseStatesDirective;
58
+ this.tabIndex = '0';
53
59
  this.e2eAttr = 'eui-tree-list-item';
60
+ this.subLinks = [];
54
61
  this.toggled = new EventEmitter();
55
62
  this.isHovered = false;
56
63
  // tree states
@@ -61,9 +68,7 @@ export class EuiTreeListItemComponent {
61
68
  this._expanded = false;
62
69
  this._alwaysExpanded = false;
63
70
  this._isDisplaySubLinksOnHover = false;
64
- // private _hasMarker = false;
65
71
  this._isNavigateOnlyOnLabelClick = false;
66
- // private _isIconRounded = false;
67
72
  this._isVisible = true;
68
73
  this.treeListComponent = treeListComponent;
69
74
  }
@@ -80,9 +85,6 @@ export class EuiTreeListItemComponent {
80
85
  if (this.customContent.length !== 0) {
81
86
  this.hasCustomContent = true;
82
87
  }
83
- // if (this.markerTypeClass && !this.hasMarker) {
84
- // this.hasMarker = true;
85
- // }
86
88
  // make sure that any child tree-list is non-focusable and that it has the role of a WAI-ARIA group:
87
89
  if (this.subTreeList) {
88
90
  this.subTreeList.forEach((subtree) => {
@@ -97,16 +99,6 @@ export class EuiTreeListItemComponent {
97
99
  this.expanded = !this.expanded;
98
100
  this.toggled.next(this);
99
101
  }
100
- navigateToLink(event) {
101
- if (this.linkUrl && !this.isNavigateOnlyOnLabelClick) {
102
- this.router.navigate([this.linkUrl]);
103
- }
104
- }
105
- onLabelClicked(event) {
106
- if (this.linkUrl && this.isNavigateOnlyOnLabelClick) {
107
- this.router.navigate([this.linkUrl]);
108
- }
109
- }
110
102
  onKeyDown(event) {
111
103
  switch (event.keyCode) {
112
104
  case 13: // ENTER
@@ -174,12 +166,6 @@ export class EuiTreeListItemComponent {
174
166
  this.focus();
175
167
  }
176
168
  }
177
- get hasCustomDetailContent() {
178
- return this.customDetailContent;
179
- }
180
- get hasCustomSubContainerContent() {
181
- return this.customSubContainerContent;
182
- }
183
169
  focusOnNextTreeItem() {
184
170
  if (this.expanded && this.subTreeList && this.subTreeList.length > 0) {
185
171
  this.subTreeList.first.focus();
@@ -200,18 +186,43 @@ export class EuiTreeListItemComponent {
200
186
  this.focusable.nativeElement.setAttribute('tabindex', '0');
201
187
  }
202
188
  }
203
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemComponent, deps: [{ token: forwardRef(() => EuiTreeListComponent), host: true }, { token: i1.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
204
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemComponent, selector: "eui-tree-list-item", inputs: { id: "id", label: "label", linkUrl: "linkUrl", subLabel: "subLabel", active: "active", expanded: "expanded", alwaysExpanded: "alwaysExpanded", url: "url", isDisplaySubLinksOnHover: "isDisplaySubLinksOnHover", subLinks: "subLinks", isNavigateOnlyOnLabelClick: "isNavigateOnlyOnLabelClick", e2eAttr: "e2eAttr", isVisible: "isVisible" }, outputs: { toggled: "toggled" }, queries: [{ propertyName: "customSubLabel", first: true, predicate: i0.forwardRef(() => EuiTreeListItemSubLabelTagDirective), descendants: true }, { propertyName: "customDetailContent", first: true, predicate: i0.forwardRef(() => EuiTreeListItemDetailsContentTagDirective), descendants: true }, { propertyName: "customSubContainerContent", first: true, predicate: i0.forwardRef(() => EuiTreeListItemSubContainerContentTagDirective), descendants: true }, { propertyName: "subTreeList", predicate: i0.forwardRef(() => EuiTreeListComponent), descendants: true }, { propertyName: "customContent", predicate: i0.forwardRef(() => EuiTreeListItemCustomContentTagDirective) }], viewQueries: [{ propertyName: "focusable", first: true, predicate: ["focusable"], descendants: true }], ngImport: i0, template: "<div\n class=\"eui-tree-list-item\"\n [class.eui-tree-list-item--active]=\"active\"\n [hidden]=\"!isVisible\"\n attr.data-e2e=\"{{ e2eAttr }}\"\n tabindex=\"0\">\n <div class=\"eui-tree-list-item-header eui-tree-list-item-header\" (click)=\"navigateToLink($event)\">\n <div\n #focusable\n class=\"eui-tree-list-item-header__content\"\n role=\"treeitem\"\n [id]=\"id\"\n (keydown)=\"onKeyDown($event)\"\n attr.aria-label=\"{{ label }} {{ subLabel }}\"\n [attr.aria-expanded]=\"expanded\">\n <ng-template [ngIf]=\"hasCustomContent\">\n <ng-content select=\"euiTreeListItemCustomContent\"></ng-content>\n\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-right-content-sub\">\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </div>\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <button *ngIf=\"hasSub && !alwaysExpanded\" euiButton euiIconButton euiBasicButton euiRounded euiPrimary aria-label=\"Expand - collapse button icon\" (click)=\"toggle($event)\">\n <ng-container *ngIf=\"expanded\">\n <eui-icon-svg icon=\"eui-chevron-up\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n <ng-container *ngIf=\"!expanded\">\n <eui-icon-svg icon=\"eui-chevron-forward\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n </button>\n </div>\n </div>\n </ng-template>\n\n <ng-template [ngIf]=\"!hasCustomContent\">\n <div class=\"eui-u-flex\">\n <span euiLabel *ngIf=\"linkUrl && isNavigateOnlyOnLabelClick; else noLink\">\n {{ label }}\n </span>\n <ng-template #noLink>\n <a euiLabel (click)=\"navigateToLink($event)\">{{label}}</a>\n </ng-template>\n <span euiSublabel *ngIf=\"customSubLabel; else customSubLabel\">\n <ng-content select=\"euiTreeListItemSubLabel\"></ng-content>\n </span>\n <ng-template #customSubLabel>\n <span euiSublabel>\n {{ subLabel }}\n </span>\n </ng-template>\n </div>\n\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-right-content-sub\">\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </div>\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <button *ngIf=\"hasSub && !alwaysExpanded\" euiButton euiIconButton euiBasicButton euiRounded euiPrimary aria-label=\"Expand - collapse button icon\" (click)=\"toggle($event)\">\n <ng-container *ngIf=\"expanded\">\n <eui-icon-svg icon=\"eui-chevron-up\" set=\"eui\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n <ng-container *ngIf=\"!expanded\">\n <eui-icon-svg icon=\"eui-chevron-forward\" set=\"eui\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n </button>\n </div>\n </div>\n </ng-template>\n </div>\n\n <ng-template [ngIf]=\"hasCustomDetailContent\">\n <div class=\"eui-tree-list-item-header__details-content\">\n <ng-content select=\"euiTreeListItemDetailsContent\"></ng-content>\n </div>\n </ng-template>\n\n <ng-template [ngIf]=\"hasCustomSubContainerContent\">\n <ng-content select=\"euiTreeListItemSubContainerContent\"></ng-content>\n </ng-template>\n </div>\n\n <ng-template [ngIf]=\"expanded || alwaysExpanded\">\n <ng-content></ng-content>\n </ng-template>\n</div>\n\n<ng-template #rightContent><ng-content select=\"euiTreeListItemRightContent\"></ng-content></ng-template>\n", styles: [".eui-tree-list-item{border-top:1px solid var(--eui-base-color-grey-15)}.eui-tree-list-item-header{border-left:3px solid transparent;text-decoration:none}.eui-tree-list-item-header:hover,.eui-tree-list-item-header:focus{text-decoration:none}.eui-tree-list-item-header--primary{border-left:5px solid var(--eui-base-color-primary-100)}.eui-tree-list-item-header--info{border-left:5px solid var(--eui-base-color-info-100)}.eui-tree-list-item-header--success{border-left:5px solid var(--eui-base-color-success-100)}.eui-tree-list-item-header--warning{border-left:5px solid var(--eui-base-color-warning-100)}.eui-tree-list-item-header--danger{border-left:5px solid var(--eui-base-color-danger-100)}.eui-tree-list-item-header__content{align-items:center;display:flex;padding:var(--eui-base-spacing-s);font:normal normal 400 1.125rem/1.5rem var(--eui-base-font-family)}.eui-tree-list-item-header__content:active:not([readonly]),.eui-tree-list-item-header__content:focus:not([readonly]){outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:-2px;transition:none}.eui-tree-list-item-header__content [tabindex=\"0\"]:active:not([readonly]),.eui-tree-list-item-header__content [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:-2px;transition:none}.eui-tree-list-item-header__content-right-content{align-items:center;display:flex;flex:0 0 auto;margin-left:auto;margin-right:var(--eui-base-spacing-xs)}.eui-tree-list-item-header__content-right-content-sub{color:var(--eui-base-color-primary-100);margin-right:0;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-tree-list-item-header__content-expand-toggle-wrapper{align-items:center;display:flex;margin-left:var(--eui-base-spacing-s);text-align:center}.eui-tree-list-item-header__content-expand-toggle{color:var(--eui-base-color-grey-80);cursor:pointer;padding:var(--eui-base-spacing-xs)}.eui-tree-list-item-header__content-expand-toggle:hover{box-shadow:var(--eui-base-shadow-1)}.eui-tree-list-item-header__details-content{border-top:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-xs)}.eui-tree-list .eui-tree-list{border-top:1px solid var(--eui-base-color-grey-10)}.eui-tree-list .eui-tree-list .eui-tree-list-item{border-top:0}.eui-tree-list .eui-tree-list .eui-tree-list-item-header__content{color:var(--eui-base-color-grey-90)}.eui-tree-list .eui-tree-list .eui-tree-list-item-header__content-right-content-sub{color:var(--eui-base-color-text)}.eui-tree-list .eui-tree-list .eui-tree-list{padding-left:0}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content{border-bottom:0}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content-right-content-sub{color:var(--eui-base-color-grey-80)}.eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:var(--eui-base-spacing-m)}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(2 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(3 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(4 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(5 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(6 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(7 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(8 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(9 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(10 * var(--eui-base-spacing-m))}.eui-tree-list--no-bullets .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content:before{content:\"\"}euitreelistitemcustomcontent{align-items:center;display:flex;width:100%;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}euitreelistitemsublabel{align-items:center;display:flex}.eui-tree-list-item__hover-content{background-color:var(--eui-base-color-primary-110);height:100%;left:var(--eui-layout-sidebar-width);position:fixed;top:calc(var(--eui-layout-header-height) + var(--eui-layout-nav-height) - 1);width:var(--eui-layout-sidebar-width)}.eui-tree-list--advanced{background-color:var(--eui-base-color-white);display:flex;flex-direction:column;position:relative;width:100%}.eui-tree-list--advanced eui-tree-list-item,.eui-tree-list--advanced .eui-tree-list-item{border-top:1px solid var(--eui-base-color-grey-15);display:flex;flex-direction:column;width:100%}.eui-tree-list--advanced .eui-tree-list-item-header__content{align-items:center;display:flex;padding:var(--eui-base-spacing-2xs)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i4.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
189
+ getCssClasses() {
190
+ return [
191
+ this.baseStatesDirective.getCssClasses('eui-tree-list-item'),
192
+ this.active ? 'eui-tree-list-item--active' : '',
193
+ !this.isVisible ? 'eui-tree-list-item--hidden' : '',
194
+ ]
195
+ .join(' ')
196
+ .trim();
197
+ }
198
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemComponent, deps: [{ token: forwardRef(() => EuiTreeListComponent), host: true }, { token: i1.Router }, { token: i0.ElementRef }, { token: i2.BaseStatesDirective }], target: i0.ɵɵFactoryTarget.Component }); }
199
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemComponent, selector: "eui-tree-list-item", inputs: { e2eAttr: "e2eAttr", id: "id", label: "label", linkUrl: "linkUrl", subLabel: "subLabel", active: "active", expanded: "expanded", alwaysExpanded: "alwaysExpanded", url: "url", isDisplaySubLinksOnHover: "isDisplaySubLinksOnHover", subLinks: "subLinks", isNavigateOnlyOnLabelClick: "isNavigateOnlyOnLabelClick", isVisible: "isVisible" }, outputs: { toggled: "toggled" }, host: { properties: { "class": "this.cssClasses", "attr.tabindex": "this.tabIndex", "attr.data-e2e": "this.e2eAttr" } }, queries: [{ propertyName: "customLabel", first: true, predicate: i0.forwardRef(() => EuiTreeListItemLabelTagDirective), descendants: true }, { propertyName: "customDetailContent", first: true, predicate: i0.forwardRef(() => EuiTreeListItemDetailsContentTagDirective), descendants: true }, { propertyName: "customSubContainerContent", first: true, predicate: i0.forwardRef(() => EuiTreeListItemSubContainerContentTagDirective), descendants: true }, { propertyName: "subTreeList", predicate: i0.forwardRef(() => EuiTreeListComponent), descendants: true }, { propertyName: "customContent", predicate: i0.forwardRef(() => EuiTreeListItemContentComponent) }], viewQueries: [{ propertyName: "focusable", first: true, predicate: ["focusable"], descendants: true }], hostDirectives: [{ directive: i2.BaseStatesDirective, inputs: ["euiPrimary", "euiPrimary", "euiSecondary", "euiSecondary", "euiInfo", "euiInfo", "euiSuccess", "euiSuccess", "euiWarning", "euiWarning", "euiDanger", "euiDanger", "euiAccent", "euiAccent", "euiVariant", "euiVariant"] }], ngImport: i0, template: "<div class=\"eui-tree-list-item-header\">\n <div\n #focusable\n class=\"eui-tree-list-item-header__content\"\n role=\"treeitem\"\n [id]=\"id\"\n (keydown)=\"onKeyDown($event)\"\n attr.aria-label=\"{{ label }} {{ subLabel }}\"\n [attr.aria-expanded]=\"expanded\">\n\n <ng-container *ngIf=\"hasCustomContent; else noCustomContent\">\n <ng-content select=\"eui-tree-list-item-content\"></ng-content>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-container>\n\n <ng-template #noCustomContent>\n <div class=\"eui-u-flex\">\n <eui-label *ngIf=\"!customLabel\">\n {{label}}\n <eui-label *ngIf=\"subLabel\" euiSublabel>{{subLabel}}</eui-label>\n </eui-label>\n\n <eui-label *ngIf=\"customLabel\">\n <div class=\"eui-u-flex\">\n <ng-content select=\"eui-tree-list-item-label\"></ng-content>\n </div>\n </eui-label>\n </div>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"customDetailContent\">\n <div class=\"eui-tree-list-item-header__details-content\">\n <ng-content select=\"eui-tree-list-item-details\"></ng-content>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"customSubContainerContent\">\n <ng-content select=\"eui-tree-list-item-sub-container\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template [ngIf]=\"expanded || alwaysExpanded\">\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #rightContent>\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <button *ngIf=\"hasSub && !alwaysExpanded\" euiButton euiIconButton euiBasicButton euiRounded euiPrimary euiSizeS aria-label=\"Expand - collapse button icon\" (click)=\"toggle($event)\">\n <ng-container *ngIf=\"expanded\">\n <eui-icon-svg icon=\"eui-chevron-up\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n <ng-container *ngIf=\"!expanded\">\n <eui-icon-svg icon=\"eui-chevron-forward\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i5.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
205
200
  }
206
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemComponent, decorators: [{
207
202
  type: Component,
208
- args: [{ selector: 'eui-tree-list-item', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"eui-tree-list-item\"\n [class.eui-tree-list-item--active]=\"active\"\n [hidden]=\"!isVisible\"\n attr.data-e2e=\"{{ e2eAttr }}\"\n tabindex=\"0\">\n <div class=\"eui-tree-list-item-header eui-tree-list-item-header\" (click)=\"navigateToLink($event)\">\n <div\n #focusable\n class=\"eui-tree-list-item-header__content\"\n role=\"treeitem\"\n [id]=\"id\"\n (keydown)=\"onKeyDown($event)\"\n attr.aria-label=\"{{ label }} {{ subLabel }}\"\n [attr.aria-expanded]=\"expanded\">\n <ng-template [ngIf]=\"hasCustomContent\">\n <ng-content select=\"euiTreeListItemCustomContent\"></ng-content>\n\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-right-content-sub\">\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </div>\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <button *ngIf=\"hasSub && !alwaysExpanded\" euiButton euiIconButton euiBasicButton euiRounded euiPrimary aria-label=\"Expand - collapse button icon\" (click)=\"toggle($event)\">\n <ng-container *ngIf=\"expanded\">\n <eui-icon-svg icon=\"eui-chevron-up\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n <ng-container *ngIf=\"!expanded\">\n <eui-icon-svg icon=\"eui-chevron-forward\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n </button>\n </div>\n </div>\n </ng-template>\n\n <ng-template [ngIf]=\"!hasCustomContent\">\n <div class=\"eui-u-flex\">\n <span euiLabel *ngIf=\"linkUrl && isNavigateOnlyOnLabelClick; else noLink\">\n {{ label }}\n </span>\n <ng-template #noLink>\n <a euiLabel (click)=\"navigateToLink($event)\">{{label}}</a>\n </ng-template>\n <span euiSublabel *ngIf=\"customSubLabel; else customSubLabel\">\n <ng-content select=\"euiTreeListItemSubLabel\"></ng-content>\n </span>\n <ng-template #customSubLabel>\n <span euiSublabel>\n {{ subLabel }}\n </span>\n </ng-template>\n </div>\n\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-right-content-sub\">\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </div>\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <button *ngIf=\"hasSub && !alwaysExpanded\" euiButton euiIconButton euiBasicButton euiRounded euiPrimary aria-label=\"Expand - collapse button icon\" (click)=\"toggle($event)\">\n <ng-container *ngIf=\"expanded\">\n <eui-icon-svg icon=\"eui-chevron-up\" set=\"eui\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n <ng-container *ngIf=\"!expanded\">\n <eui-icon-svg icon=\"eui-chevron-forward\" set=\"eui\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n </button>\n </div>\n </div>\n </ng-template>\n </div>\n\n <ng-template [ngIf]=\"hasCustomDetailContent\">\n <div class=\"eui-tree-list-item-header__details-content\">\n <ng-content select=\"euiTreeListItemDetailsContent\"></ng-content>\n </div>\n </ng-template>\n\n <ng-template [ngIf]=\"hasCustomSubContainerContent\">\n <ng-content select=\"euiTreeListItemSubContainerContent\"></ng-content>\n </ng-template>\n </div>\n\n <ng-template [ngIf]=\"expanded || alwaysExpanded\">\n <ng-content></ng-content>\n </ng-template>\n</div>\n\n<ng-template #rightContent><ng-content select=\"euiTreeListItemRightContent\"></ng-content></ng-template>\n", styles: [".eui-tree-list-item{border-top:1px solid var(--eui-base-color-grey-15)}.eui-tree-list-item-header{border-left:3px solid transparent;text-decoration:none}.eui-tree-list-item-header:hover,.eui-tree-list-item-header:focus{text-decoration:none}.eui-tree-list-item-header--primary{border-left:5px solid var(--eui-base-color-primary-100)}.eui-tree-list-item-header--info{border-left:5px solid var(--eui-base-color-info-100)}.eui-tree-list-item-header--success{border-left:5px solid var(--eui-base-color-success-100)}.eui-tree-list-item-header--warning{border-left:5px solid var(--eui-base-color-warning-100)}.eui-tree-list-item-header--danger{border-left:5px solid var(--eui-base-color-danger-100)}.eui-tree-list-item-header__content{align-items:center;display:flex;padding:var(--eui-base-spacing-s);font:normal normal 400 1.125rem/1.5rem var(--eui-base-font-family)}.eui-tree-list-item-header__content:active:not([readonly]),.eui-tree-list-item-header__content:focus:not([readonly]){outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:-2px;transition:none}.eui-tree-list-item-header__content [tabindex=\"0\"]:active:not([readonly]),.eui-tree-list-item-header__content [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:-2px;transition:none}.eui-tree-list-item-header__content-right-content{align-items:center;display:flex;flex:0 0 auto;margin-left:auto;margin-right:var(--eui-base-spacing-xs)}.eui-tree-list-item-header__content-right-content-sub{color:var(--eui-base-color-primary-100);margin-right:0;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-tree-list-item-header__content-expand-toggle-wrapper{align-items:center;display:flex;margin-left:var(--eui-base-spacing-s);text-align:center}.eui-tree-list-item-header__content-expand-toggle{color:var(--eui-base-color-grey-80);cursor:pointer;padding:var(--eui-base-spacing-xs)}.eui-tree-list-item-header__content-expand-toggle:hover{box-shadow:var(--eui-base-shadow-1)}.eui-tree-list-item-header__details-content{border-top:1px solid var(--eui-base-color-grey-10);padding:var(--eui-base-spacing-xs)}.eui-tree-list .eui-tree-list{border-top:1px solid var(--eui-base-color-grey-10)}.eui-tree-list .eui-tree-list .eui-tree-list-item{border-top:0}.eui-tree-list .eui-tree-list .eui-tree-list-item-header__content{color:var(--eui-base-color-grey-90)}.eui-tree-list .eui-tree-list .eui-tree-list-item-header__content-right-content-sub{color:var(--eui-base-color-text)}.eui-tree-list .eui-tree-list .eui-tree-list{padding-left:0}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content{border-bottom:0}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content-right-content-sub{color:var(--eui-base-color-grey-80)}.eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:var(--eui-base-spacing-m)}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(2 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(3 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(4 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(5 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(6 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(7 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(8 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(9 * var(--eui-base-spacing-m))}.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content,.eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list .eui-tree-list-item-header__details-content{margin-left:calc(10 * var(--eui-base-spacing-m))}.eui-tree-list--no-bullets .eui-tree-list .eui-tree-list .eui-tree-list-item-header__content:before{content:\"\"}euitreelistitemcustomcontent{align-items:center;display:flex;width:100%;font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}euitreelistitemsublabel{align-items:center;display:flex}.eui-tree-list-item__hover-content{background-color:var(--eui-base-color-primary-110);height:100%;left:var(--eui-layout-sidebar-width);position:fixed;top:calc(var(--eui-layout-header-height) + var(--eui-layout-nav-height) - 1);width:var(--eui-layout-sidebar-width)}.eui-tree-list--advanced{background-color:var(--eui-base-color-white);display:flex;flex-direction:column;position:relative;width:100%}.eui-tree-list--advanced eui-tree-list-item,.eui-tree-list--advanced .eui-tree-list-item{border-top:1px solid var(--eui-base-color-grey-15);display:flex;flex-direction:column;width:100%}.eui-tree-list--advanced .eui-tree-list-item-header__content{align-items:center;display:flex;padding:var(--eui-base-spacing-2xs)}\n"] }]
203
+ args: [{ selector: 'eui-tree-list-item', encapsulation: ViewEncapsulation.None, hostDirectives: [
204
+ {
205
+ directive: BaseStatesDirective,
206
+ inputs: ['euiPrimary', 'euiSecondary', 'euiInfo', 'euiSuccess', 'euiWarning', 'euiDanger', 'euiAccent', 'euiVariant'],
207
+ },
208
+ ], template: "<div class=\"eui-tree-list-item-header\">\n <div\n #focusable\n class=\"eui-tree-list-item-header__content\"\n role=\"treeitem\"\n [id]=\"id\"\n (keydown)=\"onKeyDown($event)\"\n attr.aria-label=\"{{ label }} {{ subLabel }}\"\n [attr.aria-expanded]=\"expanded\">\n\n <ng-container *ngIf=\"hasCustomContent; else noCustomContent\">\n <ng-content select=\"eui-tree-list-item-content\"></ng-content>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-container>\n\n <ng-template #noCustomContent>\n <div class=\"eui-u-flex\">\n <eui-label *ngIf=\"!customLabel\">\n {{label}}\n <eui-label *ngIf=\"subLabel\" euiSublabel>{{subLabel}}</eui-label>\n </eui-label>\n\n <eui-label *ngIf=\"customLabel\">\n <div class=\"eui-u-flex\">\n <ng-content select=\"eui-tree-list-item-label\"></ng-content>\n </div>\n </eui-label>\n </div>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"customDetailContent\">\n <div class=\"eui-tree-list-item-header__details-content\">\n <ng-content select=\"eui-tree-list-item-details\"></ng-content>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"customSubContainerContent\">\n <ng-content select=\"eui-tree-list-item-sub-container\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template [ngIf]=\"expanded || alwaysExpanded\">\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #rightContent>\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <button *ngIf=\"hasSub && !alwaysExpanded\" euiButton euiIconButton euiBasicButton euiRounded euiPrimary euiSizeS aria-label=\"Expand - collapse button icon\" (click)=\"toggle($event)\">\n <ng-container *ngIf=\"expanded\">\n <eui-icon-svg icon=\"eui-chevron-up\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n <ng-container *ngIf=\"!expanded\">\n <eui-icon-svg icon=\"eui-chevron-forward\" fillColor=\"grey-100\"></eui-icon-svg>\n </ng-container>\n </button>\n </div>\n </div>\n</ng-template>\n" }]
209
209
  }], ctorParameters: () => [{ type: undefined, decorators: [{
210
210
  type: Host
211
211
  }, {
212
212
  type: Inject,
213
213
  args: [forwardRef(() => EuiTreeListComponent)]
214
- }] }, { type: i1.Router }, { type: i0.ElementRef }], propDecorators: { id: [{
214
+ }] }, { type: i1.Router }, { type: i0.ElementRef }, { type: i2.BaseStatesDirective }], propDecorators: { cssClasses: [{
215
+ type: HostBinding,
216
+ args: ['class']
217
+ }], tabIndex: [{
218
+ type: HostBinding,
219
+ args: ['attr.tabindex']
220
+ }], e2eAttr: [{
221
+ type: HostBinding,
222
+ args: ['attr.data-e2e']
223
+ }, {
224
+ type: Input
225
+ }], id: [{
215
226
  type: Input
216
227
  }], label: [{
217
228
  type: Input
@@ -233,8 +244,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
233
244
  type: Input
234
245
  }], isNavigateOnlyOnLabelClick: [{
235
246
  type: Input
236
- }], e2eAttr: [{
237
- type: Input
238
247
  }], toggled: [{
239
248
  type: Output
240
249
  }], isVisible: [{
@@ -242,9 +251,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
242
251
  }], focusable: [{
243
252
  type: ViewChild,
244
253
  args: ['focusable']
245
- }], customSubLabel: [{
254
+ }], customLabel: [{
246
255
  type: ContentChild,
247
- args: [forwardRef(() => EuiTreeListItemSubLabelTagDirective)]
256
+ args: [forwardRef(() => EuiTreeListItemLabelTagDirective)]
248
257
  }], customDetailContent: [{
249
258
  type: ContentChild,
250
259
  args: [forwardRef(() => EuiTreeListItemDetailsContentTagDirective)]
@@ -256,46 +265,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
256
265
  args: [forwardRef(() => EuiTreeListComponent), { descendants: true }]
257
266
  }], customContent: [{
258
267
  type: ContentChildren,
259
- args: [forwardRef(() => EuiTreeListItemCustomContentTagDirective), { descendants: false }]
268
+ args: [forwardRef(() => EuiTreeListItemContentComponent), { descendants: false }]
260
269
  }] } });
261
- export class EuiTreeListItemCustomContentTagDirective {
262
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemCustomContentTagDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
263
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemCustomContentTagDirective, selector: "euiTreeListItemCustomContent", ngImport: i0 }); }
264
- }
265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemCustomContentTagDirective, decorators: [{
266
- type: Directive,
267
- args: [{ selector: 'euiTreeListItemCustomContent' }]
268
- }] });
269
- export class EuiTreeListItemRightContentTagDirective {
270
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemRightContentTagDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
271
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemRightContentTagDirective, selector: "euiTreeListItemRightContent", ngImport: i0 }); }
272
- }
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemRightContentTagDirective, decorators: [{
274
- type: Directive,
275
- args: [{ selector: 'euiTreeListItemRightContent' }]
276
- }] });
277
- export class EuiTreeListItemSubLabelTagDirective {
278
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemSubLabelTagDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
279
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemSubLabelTagDirective, selector: "euiTreeListItemSubLabel", ngImport: i0 }); }
270
+ /* eslint-disable */
271
+ export class EuiTreeListItemLabelTagDirective {
272
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemLabelTagDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
273
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemLabelTagDirective, selector: "eui-tree-list-item-label", ngImport: i0 }); }
280
274
  }
281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemSubLabelTagDirective, decorators: [{
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemLabelTagDirective, decorators: [{
282
276
  type: Directive,
283
- args: [{ selector: 'euiTreeListItemSubLabel' }]
277
+ args: [{ selector: 'eui-tree-list-item-label' }]
284
278
  }] });
285
279
  export class EuiTreeListItemDetailsContentTagDirective {
286
280
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemDetailsContentTagDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
287
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemDetailsContentTagDirective, selector: "euiTreeListItemDetailsContent", ngImport: i0 }); }
281
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemDetailsContentTagDirective, selector: "eui-tree-list-item-details", ngImport: i0 }); }
288
282
  }
289
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemDetailsContentTagDirective, decorators: [{
290
284
  type: Directive,
291
- args: [{ selector: 'euiTreeListItemDetailsContent' }]
285
+ args: [{ selector: 'eui-tree-list-item-details' }]
292
286
  }] });
293
287
  export class EuiTreeListItemSubContainerContentTagDirective {
294
288
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemSubContainerContentTagDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
295
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemSubContainerContentTagDirective, selector: "euiTreeListItemSubContainerContent", ngImport: i0 }); }
289
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: EuiTreeListItemSubContainerContentTagDirective, selector: "eui-tree-list-item-sub-container", ngImport: i0 }); }
296
290
  }
297
291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: EuiTreeListItemSubContainerContentTagDirective, decorators: [{
298
292
  type: Directive,
299
- args: [{ selector: 'euiTreeListItemSubContainerContent' }]
293
+ args: [{ selector: 'eui-tree-list-item-sub-container' }]
300
294
  }] });
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10cmVlLWxpc3QvZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2V1aS10cmVlLWxpc3QvZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBUTVFLE1BQU0sT0FBTyx3QkFBd0I7SUFNakMsSUFDSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFtQjtRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELElBQ0ksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNo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O21CQUFDLEVBQUMsUUFBUSxFQUFFLG9DQUFvQyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXhMaW5rTGVnYWN5IH0gZnJvbSAnQGV1aS9jb3JlJztcblxuaW1wb3J0IHsgRXVpVHJlZUxpc3RDb21wb25lbnQgfSBmcm9tICcuL2V1aS10cmVlLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IGNvbnN1bWVFdmVudCwgdW5pcXVlSWQgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS10cmVlLWxpc3QtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS10cmVlLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVHJlZUxpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxpbmtVcmw6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgIH1cbiAgICBzZXQgYWN0aXZlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDtcbiAgICB9XG4gICAgc2V0IGV4cGFuZGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIGdldCBhbHdheXNFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fsd2F5c0V4cGFuZGVkO1xuICAgIH1cbiAgICBzZXQgYWx3YXlzRXhwYW5kZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9hbHdheXNFeHBhbmRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzRGlzcGxheVN1YkxpbmtzT25Ib3ZlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRGlzcGxheVN1YkxpbmtzT25Ib3ZlcjtcbiAgICB9XG4gICAgc2V0IGlzRGlzcGxheVN1YkxpbmtzT25Ib3Zlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzRGlzcGxheVN1YkxpbmtzT25Ib3ZlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHN1YkxpbmtzOiBVeExpbmtMZWdhY3lbXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNOYXZpZ2F0ZU9ubHlPbkxhYmVsQ2xpY2s7XG4gICAgfVxuICAgIHNldCBpc05hdmlnYXRlT25seU9uTGFiZWxDbGljayh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgQElucHV0KCkgZTJlQXR0ciA9ICdldWktdHJlZS1saXN0LWl0ZW0nO1xuICAgIEBPdXRwdXQoKSB0b2dnbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlUcmVlTGlzdEl0ZW1Db21wb25lbnQ+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Zpc2libGU7XG4gICAgfVxuICAgIHNldCBpc1Zpc2libGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIGlzSG92ZXJlZCA9IGZhbHNlO1xuICAgIHRyZWVMaXN0Q29tcG9uZW50OiBFdWlUcmVlTGlzdENvbXBvbmVudDtcblxuICAgIC8vIHRyZWUgc3RhdGVzXG4gICAgaGFzU3ViID0gZmFsc2U7XG5cbiAgICAvLyBjdXN0b20gY29udGVudFxuICAgIGhhc0N1c3RvbUNvbnRlbnQgPSBmYWxzZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZvY3VzYWJsZScpIGZvY3VzYWJsZTogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0SXRlbVN1YkxhYmVsVGFnRGlyZWN0aXZlKSlcbiAgICBjdXN0b21TdWJMYWJlbDogUXVlcnlMaXN0PEV1aVRyZWVMaXN0SXRlbVN1YkxhYmVsVGFnRGlyZWN0aXZlPjtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpVHJlZUxpc3RJdGVtRGV0YWlsc0NvbnRlbnRUYWdEaXJlY3RpdmUpKVxuICAgIGN1c3RvbURldGFpbENvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1EZXRhaWxzQ29udGVudFRhZ0RpcmVjdGl2ZT47XG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0SXRlbVN1YkNvbnRhaW5lckNvbnRlbnRUYWdEaXJlY3RpdmUpKVxuICAgIGN1c3RvbVN1YkNvbnRhaW5lckNvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1TdWJDb250YWluZXJDb250ZW50VGFnRGlyZWN0aXZlPjtcbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRXVpVHJlZUxpc3RDb21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3ViVHJlZUxpc3Q6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdENvbXBvbmVudD47XG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0SXRlbUN1c3RvbUNvbnRlbnRUYWdEaXJlY3RpdmUpLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxuICAgIGN1c3RvbUNvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1DdXN0b21Db250ZW50VGFnRGlyZWN0aXZlPjtcbiAgICBwcml2YXRlIF9hY3RpdmUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9leHBhbmRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Fsd2F5c0V4cGFuZGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNEaXNwbGF5U3ViTGlua3NPbkhvdmVyID0gZmFsc2U7XG4gICAgLy8gcHJpdmF0ZSBfaGFzTWFya2VyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNOYXZpZ2F0ZU9ubHlPbkxhYmVsQ2xpY2sgPSBmYWxzZTtcbiAgICAvLyBwcml2YXRlIF9pc0ljb25Sb3VuZGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASG9zdCgpIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBFdWlUcmVlTGlzdENvbXBvbmVudCkpIHRyZWVMaXN0Q29tcG9uZW50LFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICAgICkge1xuICAgICAgICB0aGlzLnRyZWVMaXN0Q29tcG9uZW50ID0gdHJlZUxpc3RDb21wb25lbnQgYXMgRXVpVHJlZUxpc3RDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgdHJlZSBpdGVtIGNhbiBiZSBhcmlhLW93bmVkIGJ5IGEgcGFyZW50IHRyZWUgZm9yIFdBSS1BUklBIGF0dHJpYnV0ZXM6XG4gICAgICAgIGlmICghdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5pZCA9IHVuaXF1ZUlkKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR0aW5nIHRyZWUgc3RhdGVzXG4gICAgICAgIGlmICh0aGlzLnN1YlRyZWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5oYXNTdWIgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2tpbmcgaWYgY3VzdG9tQ29udGVudCBzZXRcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQ29udGVudC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaGFzQ3VzdG9tQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiAodGhpcy5tYXJrZXJUeXBlQ2xhc3MgJiYgIXRoaXMuaGFzTWFya2VyKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmhhc01hcmtlciA9IHRydWU7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBhbnkgY2hpbGQgdHJlZS1saXN0IGlzIG5vbi1mb2N1c2FibGUgYW5kIHRoYXQgaXQgaGFzIHRoZSByb2xlIG9mIGEgV0FJLUFSSUEgZ3JvdXA6XG4gICAgICAgIGlmICh0aGlzLnN1YlRyZWVMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLnN1YlRyZWVMaXN0LmZvckVhY2goKHN1YnRyZWU6IEV1aVRyZWVMaXN0Q29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgc3VidHJlZS5kaXNhYmxlRm9jdXMoKTtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlLmFyaWFSb2xlID0gJ2dyb3VwJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICAgICAgICB0aGlzLnRvZ2dsZWQubmV4dCh0aGlzKTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZVRvTGluayhldmVudDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmxpbmtVcmwgJiYgIXRoaXMuaXNOYXZpZ2F0ZU9ubHlPbkxhYmVsQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLmxpbmtVcmxdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGFiZWxDbGlja2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMubGlua1VybCAmJiB0aGlzLmlzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5saW5rVXJsXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQ6IGFueSkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgMTM6IC8vIEVOVEVSXG4gICAgICAgICAgICBjYXNlIDMyOiAvLyBTUEFDRVxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgICAgICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzNzogLy8gQVJST1cgTEVGVFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzODogLy8gQVJST1cgVVBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlTGlzdENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlTGlzdENvbXBvbmVudC5mb2N1c09uUHJldmlvdXNUcmVlSXRlbSh0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlRm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM5OiAvLyBBUlJPVyBSSUdIVFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDQwOiAvLyBBUlJPVyBET1dOXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNPbk5leHRUcmVlSXRlbSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRWaXNpYmxlU3RhdGUoc3RhdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBzdGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5zdWJUcmVlTGlzdCAmJiB0aGlzLnN1YlRyZWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zdWJUcmVlTGlzdC50b0FycmF5KCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0VmlzaWJsZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldEV4cGFuZGVkU3RhdGUoc3RhdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IHN0YXRlO1xuXG4gICAgICAgIGlmICh0aGlzLnN1YlRyZWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zdWJUcmVlTGlzdC50b0FycmF5KCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0RXhwYW5kZWRTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1cygpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzYWJsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudHJlZUxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUxpc3RDb21wb25lbnQuZGlzYWJsZUZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNPbkxhc3RFeHBhbmRlZFRyZWVJdGVtKCkge1xuICAgICAgICBjb25zdCBsYXN0RXhwYW5kZWQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlcl9fY29udGVudCcpO1xuICAgICAgICBpZiAobGFzdEV4cGFuZGVkICYmIGxhc3RFeHBhbmRlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gbGFzdEV4cGFuZGVkW2xhc3RFeHBhbmRlZC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0N1c3RvbURldGFpbENvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbURldGFpbENvbnRlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNDdXN0b21TdWJDb250YWluZXJDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21TdWJDb250YWluZXJDb250ZW50O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb2N1c09uTmV4dFRyZWVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5leHBhbmRlZCAmJiB0aGlzLnN1YlRyZWVMaXN0ICYmIHRoaXMuc3ViVHJlZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zdWJUcmVlTGlzdC5maXJzdC5mb2N1cygpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50cmVlTGlzdENvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJlZUxpc3RDb21wb25lbnQuZm9jdXNPbk5leHRUcmVlSXRlbSh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGlzYWJsZUZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVuYWJsZUZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ2V1aVRyZWVMaXN0SXRlbUN1c3RvbUNvbnRlbnQnfSlcbmV4cG9ydCBjbGFzcyBFdWlUcmVlTGlzdEl0ZW1DdXN0b21Db250ZW50VGFnRGlyZWN0aXZlIHtcbn1cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnZXVpVHJlZUxpc3RJdGVtUmlnaHRDb250ZW50J30pXG5leHBvcnQgY2xhc3MgRXVpVHJlZUxpc3RJdGVtUmlnaHRDb250ZW50VGFnRGlyZWN0aXZlIHtcbn1cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnZXVpVHJlZUxpc3RJdGVtU3ViTGFiZWwnfSlcbmV4cG9ydCBjbGFzcyBFdWlUcmVlTGlzdEl0ZW1TdWJMYWJlbFRhZ0RpcmVjdGl2ZSB7XG59XG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ2V1aVRyZWVMaXN0SXRlbURldGFpbHNDb250ZW50J30pXG5leHBvcnQgY2xhc3MgRXVpVHJlZUxpc3RJdGVtRGV0YWlsc0NvbnRlbnRUYWdEaXJlY3RpdmUge1xufVxuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdldWlUcmVlTGlzdEl0ZW1TdWJDb250YWluZXJDb250ZW50J30pXG5leHBvcnQgY2xhc3MgRXVpVHJlZUxpc3RJdGVtU3ViQ29udGFpbmVyQ29udGVudFRhZ0RpcmVjdGl2ZSB7XG59XG5cbi8qIGVzbGludC1lbmFibGUgKi9cbiIsIjxkaXZcbiAgICBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbVwiXG4gICAgW2NsYXNzLmV1aS10cmVlLWxpc3QtaXRlbS0tYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgW2hpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgICBhdHRyLmRhdGEtZTJlPVwie3sgZTJlQXR0ciB9fVwiXG4gICAgdGFiaW5kZXg9XCIwXCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXIgZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlclwiIChjbGljayk9XCJuYXZpZ2F0ZVRvTGluaygkZXZlbnQpXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICNmb2N1c2FibGVcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlcl9fY29udGVudFwiXG4gICAgICAgICAgICByb2xlPVwidHJlZWl0ZW1cIlxuICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7IGxhYmVsIH19IHt7IHN1YkxhYmVsIH19XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJoYXNDdXN0b21Db250ZW50XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpVHJlZUxpc3RJdGVtQ3VzdG9tQ29udGVudFwiPjwvbmctY29udGVudD5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdHJlZS1saXN0LWl0ZW0taGVhZGVyX19jb250ZW50LXJpZ2h0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2NvbnRlbnQtcmlnaHQtY29udGVudC1zdWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyaWdodENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdHJlZS1saXN0LWl0ZW0taGVhZGVyX19jb250ZW50LWV4cGFuZC10b2dnbGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImhhc1N1YiAmJiAhYWx3YXlzRXhwYW5kZWRcIiBldWlCdXR0b24gZXVpSWNvbkJ1dHRvbiBldWlCYXNpY0J1dHRvbiBldWlSb3VuZGVkIGV1aVByaW1hcnkgYXJpYS1sYWJlbD1cIkV4cGFuZCAtIGNvbGxhcHNlIGJ1dHRvbiBpY29uXCIgKGNsaWNrKT1cInRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLXVwXCIgZmlsbENvbG9yPVwiZ3JleS0xMDBcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWZvcndhcmRcIiBmaWxsQ29sb3I9XCJncmV5LTEwMFwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFoYXNDdXN0b21Db250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS11LWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZXVpTGFiZWwgKm5nSWY9XCJsaW5rVXJsICYmIGlzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrOyBlbHNlIG5vTGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGV1aUxhYmVsIChjbGljayk9XCJuYXZpZ2F0ZVRvTGluaygkZXZlbnQpXCI+e3tsYWJlbH19PC9hPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBldWlTdWJsYWJlbCAqbmdJZj1cImN1c3RvbVN1YkxhYmVsOyBlbHNlIGN1c3RvbVN1YkxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlUcmVlTGlzdEl0ZW1TdWJMYWJlbFwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbVN1YkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZXVpU3VibGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3ViTGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdHJlZS1saXN0LWl0ZW0taGVhZGVyX19jb250ZW50LXJpZ2h0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2NvbnRlbnQtcmlnaHQtY29udGVudC1zdWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyaWdodENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdHJlZS1saXN0LWl0ZW0taGVhZGVyX19jb250ZW50LWV4cGFuZC10b2dnbGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImhhc1N1YiAmJiAhYWx3YXlzRXhwYW5kZWRcIiBldWlCdXR0b24gZXVpSWNvbkJ1dHRvbiBldWlCYXNpY0J1dHRvbiBldWlSb3VuZGVkIGV1aVByaW1hcnkgYXJpYS1sYWJlbD1cIkV4cGFuZCAtIGNvbGxhcHNlIGJ1dHRvbiBpY29uXCIgKGNsaWNrKT1cInRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLXVwXCIgc2V0PVwiZXVpXCIgZmlsbENvbG9yPVwiZ3JleS0xMDBcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWZvcndhcmRcIiBzZXQ9XCJldWlcIiBmaWxsQ29sb3I9XCJncmV5LTEwMFwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImhhc0N1c3RvbURldGFpbENvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdHJlZS1saXN0LWl0ZW0taGVhZGVyX19kZXRhaWxzLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlUcmVlTGlzdEl0ZW1EZXRhaWxzQ29udGVudFwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJoYXNDdXN0b21TdWJDb250YWluZXJDb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlUcmVlTGlzdEl0ZW1TdWJDb250YWluZXJDb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImV4cGFuZGVkIHx8IGFsd2F5c0V4cGFuZGVkXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcmlnaHRDb250ZW50PjxuZy1jb250ZW50IHNlbGVjdD1cImV1aVRyZWVMaXN0SXRlbVJpZ2h0Q29udGVudFwiPjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxuIl19
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10cmVlLWxpc3QvZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2V1aS10cmVlLWxpc3QvZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixJQUFJLEVBQ0osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQWE3RCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDLElBQ1csVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBV0QsSUFDSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFtQjtRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7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a0JBRDFELFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsa0NBQWtDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFV4TGlua0xlZ2FjeSB9IGZyb20gJ0BldWkvY29yZSc7XG5cbmltcG9ydCB7IEV1aVRyZWVMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9ldWktdHJlZS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb25zdW1lRXZlbnQsIHVuaXF1ZUlkIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEV1aVRyZWVMaXN0SXRlbUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2l0ZW0tY29udGVudC9pdGVtLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2VTdGF0ZXNEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktdHJlZS1saXN0LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktdHJlZS1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBCYXNlU3RhdGVzRGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ2V1aVByaW1hcnknLCAnZXVpU2Vjb25kYXJ5JywgJ2V1aUluZm8nLCAnZXVpU3VjY2VzcycsICdldWlXYXJuaW5nJywgJ2V1aURhbmdlcicsICdldWlBY2NlbnQnLCAnZXVpVmFyaWFudCddLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aVRyZWVMaXN0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHB1YmxpYyBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDc3NDbGFzc2VzKCk7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHRhYkluZGV4ID0gJzAnO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWUyZScpXG4gICAgQElucHV0KClcbiAgICBlMmVBdHRyID0gJ2V1aS10cmVlLWxpc3QtaXRlbSc7XG5cbiAgICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbGlua1VybDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YkxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gICAgfVxuICAgIHNldCBhY3RpdmUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkO1xuICAgIH1cbiAgICBzZXQgZXhwYW5kZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9leHBhbmRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFsd2F5c0V4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWx3YXlzRXhwYW5kZWQ7XG4gICAgfVxuICAgIHNldCBhbHdheXNFeHBhbmRlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2Fsd2F5c0V4cGFuZGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgQElucHV0KCkgdXJsOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNEaXNwbGF5U3ViTGlua3NPbkhvdmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNEaXNwbGF5U3ViTGlua3NPbkhvdmVyO1xuICAgIH1cbiAgICBzZXQgaXNEaXNwbGF5U3ViTGlua3NPbkhvdmVyKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNEaXNwbGF5U3ViTGlua3NPbkhvdmVyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgQElucHV0KCkgc3ViTGlua3M6IFV4TGlua0xlZ2FjeVtdID0gW107XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNOYXZpZ2F0ZU9ubHlPbkxhYmVsQ2xpY2soKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc05hdmlnYXRlT25seU9uTGFiZWxDbGljaztcbiAgICB9XG4gICAgc2V0IGlzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNOYXZpZ2F0ZU9ubHlPbkxhYmVsQ2xpY2sgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBAT3V0cHV0KCkgdG9nZ2xlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpVHJlZUxpc3RJdGVtQ29tcG9uZW50PigpO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlO1xuICAgIH1cbiAgICBzZXQgaXNWaXNpYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNWaXNpYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBpc0hvdmVyZWQgPSBmYWxzZTtcbiAgICB0cmVlTGlzdENvbXBvbmVudDogRXVpVHJlZUxpc3RDb21wb25lbnQ7XG5cbiAgICAvLyB0cmVlIHN0YXRlc1xuICAgIGhhc1N1YiA9IGZhbHNlO1xuXG4gICAgLy8gY3VzdG9tIGNvbnRlbnRcbiAgICBoYXNDdXN0b21Db250ZW50ID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdmb2N1c2FibGUnKSBmb2N1c2FibGU6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0SXRlbUxhYmVsVGFnRGlyZWN0aXZlKSlcbiAgICBjdXN0b21MYWJlbDogUXVlcnlMaXN0PEV1aVRyZWVMaXN0SXRlbUxhYmVsVGFnRGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFdWlUcmVlTGlzdEl0ZW1EZXRhaWxzQ29udGVudFRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tRGV0YWlsQ29udGVudDogUXVlcnlMaXN0PEV1aVRyZWVMaXN0SXRlbURldGFpbHNDb250ZW50VGFnRGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFdWlUcmVlTGlzdEl0ZW1TdWJDb250YWluZXJDb250ZW50VGFnRGlyZWN0aXZlKSlcbiAgICBjdXN0b21TdWJDb250YWluZXJDb250ZW50OiBRdWVyeUxpc3Q8RXVpVHJlZUxpc3RJdGVtU3ViQ29udGFpbmVyQ29udGVudFRhZ0RpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRXVpVHJlZUxpc3RDb21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3ViVHJlZUxpc3Q6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdENvbXBvbmVudD47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRXVpVHJlZUxpc3RJdGVtQ29udGVudENvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pXG4gICAgY3VzdG9tQ29udGVudDogUXVlcnlMaXN0PEV1aVRyZWVMaXN0SXRlbUNvbnRlbnRDb21wb25lbnQ+O1xuXG4gICAgcHJpdmF0ZSBfYWN0aXZlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZXhwYW5kZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9hbHdheXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzRGlzcGxheVN1YkxpbmtzT25Ib3ZlciA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASG9zdCgpIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBFdWlUcmVlTGlzdENvbXBvbmVudCkpIHRyZWVMaXN0Q29tcG9uZW50LFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGJhc2VTdGF0ZXNEaXJlY3RpdmU6IEJhc2VTdGF0ZXNEaXJlY3RpdmUsXG4gICAgKSB7XG4gICAgICAgIHRoaXMudHJlZUxpc3RDb21wb25lbnQgPSB0cmVlTGlzdENvbXBvbmVudCBhcyBFdWlUcmVlTGlzdENvbXBvbmVudDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSB0cmVlIGl0ZW0gY2FuIGJlIGFyaWEtb3duZWQgYnkgYSBwYXJlbnQgdHJlZSBmb3IgV0FJLUFSSUEgYXR0cmlidXRlczpcbiAgICAgICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdW5pcXVlSWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNldHRpbmcgdHJlZSBzdGF0ZXNcbiAgICAgICAgaWYgKHRoaXMuc3ViVHJlZUxpc3QubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmhhc1N1YiA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjaGVja2luZyBpZiBjdXN0b21Db250ZW50IHNldFxuICAgICAgICBpZiAodGhpcy5jdXN0b21Db250ZW50Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5oYXNDdXN0b21Db250ZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGFueSBjaGlsZCB0cmVlLWxpc3QgaXMgbm9uLWZvY3VzYWJsZSBhbmQgdGhhdCBpdCBoYXMgdGhlIHJvbGUgb2YgYSBXQUktQVJJQSBncm91cDpcbiAgICAgICAgaWYgKHRoaXMuc3ViVHJlZUxpc3QpIHtcbiAgICAgICAgICAgIHRoaXMuc3ViVHJlZUxpc3QuZm9yRWFjaCgoc3VidHJlZTogRXVpVHJlZUxpc3RDb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlLmRpc2FibGVGb2N1cygpO1xuICAgICAgICAgICAgICAgIHN1YnRyZWUuYXJpYVJvbGUgPSAnZ3JvdXAnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMudG9nZ2xlZC5uZXh0KHRoaXMpO1xuICAgIH1cblxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgMTM6IC8vIEVOVEVSXG4gICAgICAgICAgICBjYXNlIDMyOiAvLyBTUEFDRVxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgICAgICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzNzogLy8gQVJST1cgTEVGVFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzODogLy8gQVJST1cgVVBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlTGlzdENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlTGlzdENvbXBvbmVudC5mb2N1c09uUHJldmlvdXNUcmVlSXRlbSh0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlRm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM5OiAvLyBBUlJPVyBSSUdIVFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDQwOiAvLyBBUlJPVyBET1dOXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNPbk5leHRUcmVlSXRlbSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRWaXNpYmxlU3RhdGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBzdGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5zdWJUcmVlTGlzdCAmJiB0aGlzLnN1YlRyZWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zdWJUcmVlTGlzdC50b0FycmF5KCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0VmlzaWJsZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldEV4cGFuZGVkU3RhdGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IHN0YXRlO1xuXG4gICAgICAgIGlmICh0aGlzLnN1YlRyZWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zdWJUcmVlTGlzdC50b0FycmF5KCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0RXhwYW5kZWRTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzYWJsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudHJlZUxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUxpc3RDb21wb25lbnQuZGlzYWJsZUZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNPbkxhc3RFeHBhbmRlZFRyZWVJdGVtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0RXhwYW5kZWQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlcl9fY29udGVudCcpO1xuICAgICAgICBpZiAobGFzdEV4cGFuZGVkICYmIGxhc3RFeHBhbmRlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gbGFzdEV4cGFuZGVkW2xhc3RFeHBhbmRlZC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZm9jdXNPbk5leHRUcmVlSXRlbSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQgJiYgdGhpcy5zdWJUcmVlTGlzdCAmJiB0aGlzLnN1YlRyZWVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3ViVHJlZUxpc3QuZmlyc3QuZm9jdXMoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHJlZUxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVMaXN0Q29tcG9uZW50LmZvY3VzT25OZXh0VHJlZUl0ZW0odGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRpc2FibGVGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzYWJsZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBlbmFibGVGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzYWJsZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLmJhc2VTdGF0ZXNEaXJlY3RpdmUuZ2V0Q3NzQ2xhc3NlcygnZXVpLXRyZWUtbGlzdC1pdGVtJyksXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA/ICdldWktdHJlZS1saXN0LWl0ZW0tLWFjdGl2ZScgOiAnJyxcbiAgICAgICAgICAgICF0aGlzLmlzVmlzaWJsZSA/ICdldWktdHJlZS1saXN0LWl0ZW0tLWhpZGRlbicgOiAnJyxcbiAgICAgICAgXVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktdHJlZS1saXN0LWl0ZW0tbGFiZWwnIH0pXG5leHBvcnQgY2xhc3MgRXVpVHJlZUxpc3RJdGVtTGFiZWxUYWdEaXJlY3RpdmUge31cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aS10cmVlLWxpc3QtaXRlbS1kZXRhaWxzJyB9KVxuZXhwb3J0IGNsYXNzIEV1aVRyZWVMaXN0SXRlbURldGFpbHNDb250ZW50VGFnRGlyZWN0aXZlIHt9XG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktdHJlZS1saXN0LWl0ZW0tc3ViLWNvbnRhaW5lcicgfSlcbmV4cG9ydCBjbGFzcyBFdWlUcmVlTGlzdEl0ZW1TdWJDb250YWluZXJDb250ZW50VGFnRGlyZWN0aXZlIHt9XG4vKiBlc2xpbnQtZW5hYmxlICovXG4iLCI8ZGl2IGNsYXNzPVwiZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlclwiPlxuICAgIDxkaXZcbiAgICAgICAgI2ZvY3VzYWJsZVxuICAgICAgICBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2NvbnRlbnRcIlxuICAgICAgICByb2xlPVwidHJlZWl0ZW1cIlxuICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7IGxhYmVsIH19IHt7IHN1YkxhYmVsIH19XCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJleHBhbmRlZFwiPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNDdXN0b21Db250ZW50OyBlbHNlIG5vQ3VzdG9tQ29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLXRyZWUtbGlzdC1pdGVtLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmlnaHRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DdXN0b21Db250ZW50PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS11LWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWxhYmVsICpuZ0lmPVwiIWN1c3RvbUxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7bGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWxhYmVsICpuZ0lmPVwic3ViTGFiZWxcIiBldWlTdWJsYWJlbD57e3N1YkxhYmVsfX08L2V1aS1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2V1aS1sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxldWktbGFiZWwgKm5nSWY9XCJjdXN0b21MYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXUtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLXRyZWUtbGlzdC1pdGVtLWxhYmVsXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2V1aS1sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJpZ2h0Q29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbURldGFpbENvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2RldGFpbHMtY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLXRyZWUtbGlzdC1pdGVtLWRldGFpbHNcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVN1YkNvbnRhaW5lckNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLXRyZWUtbGlzdC1pdGVtLXN1Yi1jb250YWluZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImV4cGFuZGVkIHx8IGFsd2F5c0V4cGFuZGVkXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyaWdodENvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2NvbnRlbnQtcmlnaHQtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlcl9fY29udGVudC1leHBhbmQtdG9nZ2xlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJoYXNTdWIgJiYgIWFsd2F5c0V4cGFuZGVkXCIgZXVpQnV0dG9uIGV1aUljb25CdXR0b24gZXVpQmFzaWNCdXR0b24gZXVpUm91bmRlZCBldWlQcmltYXJ5IGV1aVNpemVTIGFyaWEtbGFiZWw9XCJFeHBhbmQgLSBjb2xsYXBzZSBidXR0b24gaWNvblwiIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2hldnJvbi11cFwiIGZpbGxDb2xvcj1cImdyZXktMTAwXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFleHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2hldnJvbi1mb3J3YXJkXCIgZmlsbENvbG9yPVwiZ3JleS0xMDBcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=