@fundamental-ngx/core 0.40.4-rc.6 → 0.40.5

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 (814) hide show
  1. package/esm2020/action-bar/action-bar-actions/action-bar-actions.directive.mjs +3 -3
  2. package/esm2020/action-bar/action-bar-back/action-bar-back.directive.mjs +3 -3
  3. package/esm2020/action-bar/action-bar-description/action-bar-description.directive.mjs +3 -3
  4. package/esm2020/action-bar/action-bar-header/action-bar-header.directive.mjs +3 -3
  5. package/esm2020/action-bar/action-bar-mobile/action-bar-mobile.directive.mjs +3 -3
  6. package/esm2020/action-bar/action-bar-title/action-bar-title.component.mjs +3 -3
  7. package/esm2020/action-bar/action-bar.component.mjs +3 -3
  8. package/esm2020/action-bar/action-bar.module.mjs +4 -4
  9. package/esm2020/action-sheet/action-sheet-body/action-sheet-body.component.mjs +3 -3
  10. package/esm2020/action-sheet/action-sheet-control/action-sheet-control.component.mjs +3 -3
  11. package/esm2020/action-sheet/action-sheet-item/action-sheet-item.component.mjs +3 -3
  12. package/esm2020/action-sheet/action-sheet-mobile/action-sheet-mobile.component.mjs +3 -3
  13. package/esm2020/action-sheet/action-sheet-mobile/action-sheet-mobile.module.mjs +4 -4
  14. package/esm2020/action-sheet/action-sheet.component.mjs +3 -3
  15. package/esm2020/action-sheet/action-sheet.module.mjs +4 -4
  16. package/esm2020/action-sheet/deprecated-action-sheet-compact.directive.mjs +3 -3
  17. package/esm2020/alert/alert-service/alert.service.mjs +3 -3
  18. package/esm2020/alert/alert-utils/alert-container.component.mjs +3 -3
  19. package/esm2020/alert/alert.component.mjs +3 -3
  20. package/esm2020/alert/alert.module.mjs +4 -4
  21. package/esm2020/avatar/avatar.component.mjs +3 -3
  22. package/esm2020/avatar/avatar.module.mjs +4 -4
  23. package/esm2020/avatar-group/avatar-group.component.mjs +3 -3
  24. package/esm2020/avatar-group/avatar-group.module.mjs +4 -4
  25. package/esm2020/avatar-group/directives/avatar-group-focusable-avatar.directive.mjs +3 -3
  26. package/esm2020/avatar-group/directives/avatar-group-item.directive.mjs +3 -3
  27. package/esm2020/avatar-group/directives/avatar-group-overflow-body.directive.mjs +3 -3
  28. package/esm2020/avatar-group/directives/avatar-group-overflow-button-text.directive.mjs +3 -3
  29. package/esm2020/avatar-group/directives/avatar-group-overflow-button.directive.mjs +3 -3
  30. package/esm2020/avatar-group/directives/avatar-group-overflow-item.directive.mjs +3 -3
  31. package/esm2020/avatar-group/directives/avatar-group-popover-control.directive.mjs +3 -3
  32. package/esm2020/bar/bar.component.mjs +3 -3
  33. package/esm2020/bar/bar.module.mjs +4 -4
  34. package/esm2020/bar/button-bar/button-bar.component.mjs +3 -3
  35. package/esm2020/bar/deprecated-bar-button-content-density.directive.mjs +3 -3
  36. package/esm2020/bar/deprecated-bar-content-density.directive.mjs +3 -3
  37. package/esm2020/bar/directives/bar-element.directive.mjs +3 -3
  38. package/esm2020/bar/directives/bar-left.directive.mjs +3 -3
  39. package/esm2020/bar/directives/bar-middle.directive.mjs +3 -3
  40. package/esm2020/bar/directives/bar-right.directive.mjs +3 -3
  41. package/esm2020/breadcrumb/breadcrumb-item.component.mjs +3 -3
  42. package/esm2020/breadcrumb/breadcrumb.component.mjs +3 -3
  43. package/esm2020/breadcrumb/breadcrumb.module.mjs +4 -4
  44. package/esm2020/breadcrumb/deprecated-breadcrumbs-compact.directive.mjs +3 -3
  45. package/esm2020/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +3 -3
  46. package/esm2020/busy-indicator/busy-indicator.component.mjs +3 -3
  47. package/esm2020/busy-indicator/busy-indicator.module.mjs +4 -4
  48. package/esm2020/button/base-button.mjs +3 -3
  49. package/esm2020/button/button.component.mjs +3 -3
  50. package/esm2020/button/button.module.mjs +4 -4
  51. package/esm2020/button/deprecated-button-content-density.directive.mjs +3 -3
  52. package/esm2020/calendar/calendar-directives.mjs +3 -3
  53. package/esm2020/calendar/calendar-header/calendar-header.component.mjs +3 -3
  54. package/esm2020/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +3 -3
  55. package/esm2020/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +3 -3
  56. package/esm2020/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +3 -3
  57. package/esm2020/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +3 -3
  58. package/esm2020/calendar/calendar.component.mjs +3 -3
  59. package/esm2020/calendar/calendar.module.mjs +4 -4
  60. package/esm2020/calendar/calendar.service.mjs +3 -3
  61. package/esm2020/calendar/deprecated-calendar-content-density.directive.mjs +3 -3
  62. package/esm2020/calendar/i18n/calendar-i18n-labels.mjs +3 -3
  63. package/esm2020/card/card-content.component.mjs +3 -3
  64. package/esm2020/card/card-counter.directive.mjs +3 -3
  65. package/esm2020/card/card-footer-action-item.directive.mjs +3 -3
  66. package/esm2020/card/card-footer.component.mjs +3 -3
  67. package/esm2020/card/card-header.component.mjs +3 -3
  68. package/esm2020/card/card-loader.component.mjs +3 -3
  69. package/esm2020/card/card-second-subtitle.directive.mjs +3 -3
  70. package/esm2020/card/card-subtitle.directive.mjs +3 -3
  71. package/esm2020/card/card-title.directive.mjs +3 -3
  72. package/esm2020/card/card.component.mjs +3 -3
  73. package/esm2020/card/card.module.mjs +4 -4
  74. package/esm2020/card/deprecated-card-content-density.directive.mjs +3 -3
  75. package/esm2020/card/kpi/card-kpi-analytics-content.directive.mjs +3 -3
  76. package/esm2020/card/kpi/card-kpi-analytics-label.directive.mjs +3 -3
  77. package/esm2020/card/kpi/card-kpi-analytics.directive.mjs +3 -3
  78. package/esm2020/card/kpi/card-kpi-header.component.mjs +3 -3
  79. package/esm2020/card/kpi/card-kpi-scale-icon.directive.mjs +3 -3
  80. package/esm2020/card/kpi/card-kpi-scale-text.directive.mjs +3 -3
  81. package/esm2020/card/kpi/card-kpi-value.directive.mjs +3 -3
  82. package/esm2020/carousel/carousel-item/carousel-item.component.mjs +3 -3
  83. package/esm2020/carousel/carousel-item.directive.mjs +3 -3
  84. package/esm2020/carousel/carousel.component.mjs +3 -3
  85. package/esm2020/carousel/carousel.directive.mjs +3 -3
  86. package/esm2020/carousel/carousel.module.mjs +4 -4
  87. package/esm2020/carousel/carousel.service.mjs +3 -3
  88. package/esm2020/checkbox/checkbox/checkbox.component.mjs +3 -3
  89. package/esm2020/checkbox/checkbox.module.mjs +4 -4
  90. package/esm2020/checkbox/deprecated-checkbox-content-density.directive.mjs +3 -3
  91. package/esm2020/combobox/combobox-mobile/combobox-mobile.component.mjs +3 -3
  92. package/esm2020/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  93. package/esm2020/combobox/combobox.component.mjs +3 -3
  94. package/esm2020/combobox/combobox.module.mjs +4 -4
  95. package/esm2020/combobox/deprecated-combobox-content-density.directive.mjs +3 -3
  96. package/esm2020/combobox/list-group.pipe.mjs +3 -3
  97. package/esm2020/content-density/classes/deprecated-compact.directive.mjs +3 -3
  98. package/esm2020/content-density/classes/deprecated-condensed.directive.mjs +3 -3
  99. package/esm2020/content-density/classes/deprecated-content-density.directive.mjs +3 -3
  100. package/esm2020/content-density/classes/deprecated-cozy.directive.mjs +3 -3
  101. package/esm2020/content-density/content-density.module.mjs +4 -4
  102. package/esm2020/content-density/directives/content-density.directive.mjs +3 -3
  103. package/esm2020/content-density/providers/local-content-density-storage.mjs +3 -3
  104. package/esm2020/content-density/providers/memory-content-density-storage.mjs +3 -3
  105. package/esm2020/content-density/providers/url-content-density-storage.mjs +3 -3
  106. package/esm2020/content-density/services/content-density-observer.service.mjs +3 -3
  107. package/esm2020/content-density/services/deprecated-content-density.service.mjs +3 -3
  108. package/esm2020/content-density/services/global-content-density.service.mjs +3 -3
  109. package/esm2020/date-picker/date-picker.component.mjs +3 -3
  110. package/esm2020/date-picker/date-picker.module.mjs +4 -4
  111. package/esm2020/date-picker/deprecated-date-picker-compact.directive.mjs +3 -3
  112. package/esm2020/datetime/datetime-format.pipes.mjs +9 -9
  113. package/esm2020/datetime/fd-datetime-adapter.mjs +3 -3
  114. package/esm2020/datetime/fd-datetime-pipes.module.mjs +4 -4
  115. package/esm2020/datetime/fd-datetime.module.mjs +8 -8
  116. package/esm2020/datetime-picker/datetime-picker.component.mjs +3 -3
  117. package/esm2020/datetime-picker/datetime-picker.module.mjs +4 -4
  118. package/esm2020/datetime-picker/deprecated-date-time-picker-content-density.directive.mjs +3 -3
  119. package/esm2020/dialog/base/dialog-base.class.mjs +3 -3
  120. package/esm2020/dialog/base/dialog-base.service.mjs +3 -3
  121. package/esm2020/dialog/base/dialog-footer-base.class.mjs +3 -3
  122. package/esm2020/dialog/base/dialog-header-base.class.mjs +3 -3
  123. package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -3
  124. package/esm2020/dialog/dialog-close-button/dialog-close-button.component.mjs +3 -3
  125. package/esm2020/dialog/dialog-container/dialog-container.component.mjs +3 -3
  126. package/esm2020/dialog/dialog-default/dialog-default.component.mjs +3 -3
  127. package/esm2020/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  128. package/esm2020/dialog/dialog-footer-button/dialog-footer-button.component.mjs +3 -3
  129. package/esm2020/dialog/dialog-header/dialog-header.component.mjs +3 -3
  130. package/esm2020/dialog/dialog-service/dialog.service.mjs +3 -3
  131. package/esm2020/dialog/dialog.component.mjs +3 -3
  132. package/esm2020/dialog/dialog.module.mjs +4 -4
  133. package/esm2020/dialog/directives/dialog-decisive-button.directive.mjs +3 -3
  134. package/esm2020/dialog/directives/dialog-title.directive.mjs +3 -3
  135. package/esm2020/dialog/utils/dialog-config.class.mjs +3 -3
  136. package/esm2020/dialog/utils/dialog-overlay.container.mjs +3 -3
  137. package/esm2020/dialog/utils/dialog-ref.class.mjs +3 -3
  138. package/esm2020/dynamic-page/deprecated-dynamic-page-compact.directive.mjs +3 -3
  139. package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
  140. package/esm2020/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  141. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-base-actions.mjs +3 -3
  142. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.mjs +3 -3
  143. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +3 -3
  144. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.mjs +4 -4
  145. package/esm2020/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
  146. package/esm2020/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.mjs +3 -3
  147. package/esm2020/dynamic-page/dynamic-page-wrapper.directive.mjs +3 -3
  148. package/esm2020/dynamic-page/dynamic-page.component.mjs +3 -3
  149. package/esm2020/dynamic-page/dynamic-page.config.mjs +3 -3
  150. package/esm2020/dynamic-page/dynamic-page.module.mjs +4 -4
  151. package/esm2020/dynamic-page/dynamic-page.service.mjs +3 -3
  152. package/esm2020/dynamic-side-content/dynamic-side-content-main.component.mjs +3 -3
  153. package/esm2020/dynamic-side-content/dynamic-side-content-side.component.mjs +3 -3
  154. package/esm2020/dynamic-side-content/dynamic-side-content.component.mjs +3 -3
  155. package/esm2020/dynamic-side-content/dynamic-side-content.module.mjs +4 -4
  156. package/esm2020/facets/content/facet-content.component.mjs +3 -3
  157. package/esm2020/facets/facet/facet.component.mjs +3 -3
  158. package/esm2020/facets/facet-group.component.mjs +3 -3
  159. package/esm2020/facets/facet.module.mjs +4 -4
  160. package/esm2020/feed-input/directives/feed-input-avatar.directive.mjs +3 -3
  161. package/esm2020/feed-input/directives/feed-input-button.directive.mjs +3 -3
  162. package/esm2020/feed-input/directives/feed-input-textarea.directive.mjs +3 -3
  163. package/esm2020/feed-input/feed-input.component.mjs +3 -3
  164. package/esm2020/feed-input/feed-input.module.mjs +4 -4
  165. package/esm2020/feed-list-item/components/feed-list-action/feed-list-action.component.mjs +3 -3
  166. package/esm2020/feed-list-item/components/feed-list-avatar/feed-list-avatar.component.mjs +3 -3
  167. package/esm2020/feed-list-item/components/feed-list-footer/feed-list-footer.component.mjs +3 -3
  168. package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +3 -3
  169. package/esm2020/feed-list-item/components/list/feed-list.component.mjs +3 -3
  170. package/esm2020/feed-list-item/directives/byline.directive.mjs +3 -3
  171. package/esm2020/feed-list-item/feed-list-item.module.mjs +4 -4
  172. package/esm2020/file-uploader/deprecated-file-uploader-content-density.directive.mjs +3 -3
  173. package/esm2020/file-uploader/directives/file-uploader-dragndrop.directive.mjs +3 -3
  174. package/esm2020/file-uploader/directives/file-uploader-select.directive.mjs +3 -3
  175. package/esm2020/file-uploader/file-uploader.component.mjs +3 -3
  176. package/esm2020/file-uploader/file-uploader.module.mjs +4 -4
  177. package/esm2020/file-uploader/file-uploader.service.mjs +3 -3
  178. package/esm2020/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.mjs +3 -3
  179. package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +6 -6
  180. package/esm2020/fixed-card-layout/fixed-card-layout.module.mjs +4 -4
  181. package/esm2020/flexible-column-layout/flexible-column-layout.component.mjs +3 -3
  182. package/esm2020/flexible-column-layout/flexible-column-layout.module.mjs +4 -4
  183. package/esm2020/form/fieldset/fieldset.component.mjs +3 -3
  184. package/esm2020/form/fieldset/fieldset.module.mjs +4 -4
  185. package/esm2020/form/form-control/deprecated-form-control-content-density.directive.mjs +3 -3
  186. package/esm2020/form/form-control/form-control.component.mjs +3 -3
  187. package/esm2020/form/form-control/form-control.module.mjs +4 -4
  188. package/esm2020/form/form-control/input-form-control.directive.mjs +3 -3
  189. package/esm2020/form/form-control/textarea-form-control.directive.mjs +3 -3
  190. package/esm2020/form/form-group/form-group.component.mjs +3 -3
  191. package/esm2020/form/form-group/form-group.module.mjs +4 -4
  192. package/esm2020/form/form-header/form-header.component.mjs +3 -3
  193. package/esm2020/form/form-header/form-header.module.mjs +4 -4
  194. package/esm2020/form/form-input-message-group/form-input-message-group.component.mjs +3 -3
  195. package/esm2020/form/form-input-message-group/form-input-message-group.module.mjs +4 -4
  196. package/esm2020/form/form-item/form-item.component.mjs +3 -3
  197. package/esm2020/form/form-item/form-item.module.mjs +4 -4
  198. package/esm2020/form/form-label/form-label.component.mjs +3 -3
  199. package/esm2020/form/form-label/form-label.module.mjs +4 -4
  200. package/esm2020/form/form-legend/form-legend.directive.mjs +3 -3
  201. package/esm2020/form/form-legend/form-legend.module.mjs +4 -4
  202. package/esm2020/form/form-message/form-message.component.mjs +3 -3
  203. package/esm2020/form/form-message/form-message.module.mjs +4 -4
  204. package/esm2020/form/form-message/popover-form-message.service.mjs +3 -3
  205. package/esm2020/form/form.module.mjs +4 -4
  206. package/esm2020/formatted-text/formatted-text.component.mjs +3 -3
  207. package/esm2020/formatted-text/formatted-text.module.mjs +4 -4
  208. package/esm2020/fundamental-ngx.module.mjs +4 -4
  209. package/esm2020/grid-list/components/grid-list/grid-list-base.component.mjs +3 -3
  210. package/esm2020/grid-list/components/grid-list/grid-list.component.mjs +3 -3
  211. package/esm2020/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.mjs +3 -3
  212. package/esm2020/grid-list/components/grid-list-footer/grid-list-footer.component.mjs +3 -3
  213. package/esm2020/grid-list/components/grid-list-group-header/grid-list-group-header.component.mjs +3 -3
  214. package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
  215. package/esm2020/grid-list/components/grid-list-item-footer-bar/grid-list-item-footer-bar.component.mjs +3 -3
  216. package/esm2020/grid-list/components/grid-list-item-toolbar/grid-list-item-toolbar.component.mjs +3 -3
  217. package/esm2020/grid-list/components/grid-list-more-btn/grid-list-more-btn.component.mjs +3 -3
  218. package/esm2020/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.mjs +3 -3
  219. package/esm2020/grid-list/components/grid-list-title-bar/grid-list-title-bar.directive.mjs +3 -3
  220. package/esm2020/grid-list/components/grid-list-title-bar-spacer/grid-list-title-bar-spacer.component.mjs +6 -6
  221. package/esm2020/grid-list/directives/grid-list-item-body.directive.mjs +3 -3
  222. package/esm2020/grid-list/directives/grid-list-item-image.directive.mjs +3 -3
  223. package/esm2020/grid-list/grid-list.module.mjs +4 -4
  224. package/esm2020/icon/icon.component.mjs +3 -3
  225. package/esm2020/icon/icon.module.mjs +4 -4
  226. package/esm2020/illustrated-message/components/illustrated-message-actions/illustrated-message-actions.component.mjs +3 -3
  227. package/esm2020/illustrated-message/components/illustrated-message-figcaption/illustrated-message-figcaption.component.mjs +3 -3
  228. package/esm2020/illustrated-message/directives/illustrated-message-text/illustrated-message-text.directive.mjs +3 -3
  229. package/esm2020/illustrated-message/directives/illustrated-message-title/illustrated-message-title.directive.mjs +3 -3
  230. package/esm2020/illustrated-message/illustrated-message.component.mjs +3 -3
  231. package/esm2020/illustrated-message/illustrated-message.module.mjs +4 -4
  232. package/esm2020/infinite-scroll/infinite-scroll.directive.mjs +3 -3
  233. package/esm2020/infinite-scroll/infinite-scroll.module.mjs +4 -4
  234. package/esm2020/info-label/info-label.component.mjs +3 -3
  235. package/esm2020/info-label/info-label.module.mjs +4 -4
  236. package/esm2020/inline-help/inline-help.directive.mjs +4 -11
  237. package/esm2020/inline-help/inline-help.module.mjs +4 -4
  238. package/esm2020/input-group/deprecated-input-group-compact.directive.mjs +3 -3
  239. package/esm2020/input-group/input-group-directives.mjs +12 -12
  240. package/esm2020/input-group/input-group.component.mjs +3 -3
  241. package/esm2020/input-group/input-group.module.mjs +4 -4
  242. package/esm2020/layout-grid/directives/layout-grid-col.directive.mjs +3 -3
  243. package/esm2020/layout-grid/directives/layout-grid-row.directive.mjs +3 -3
  244. package/esm2020/layout-grid/layout-grid.component.mjs +3 -3
  245. package/esm2020/layout-grid/layout-grid.module.mjs +4 -4
  246. package/esm2020/layout-panel/layout-panel-actions/layout-panel-actions.component.mjs +3 -3
  247. package/esm2020/layout-panel/layout-panel-body/layout-panel-body.component.mjs +3 -3
  248. package/esm2020/layout-panel/layout-panel-description/layout-panel-description.component.mjs +3 -3
  249. package/esm2020/layout-panel/layout-panel-filters/layout-panel-filters.component.mjs +3 -3
  250. package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +3 -3
  251. package/esm2020/layout-panel/layout-panel-head/layout-panel-head.component.mjs +3 -3
  252. package/esm2020/layout-panel/layout-panel-header/layout-panel-header.component.mjs +3 -3
  253. package/esm2020/layout-panel/layout-panel-title/layout-panel-title.directive.mjs +3 -3
  254. package/esm2020/layout-panel/layout-panel.component.mjs +3 -3
  255. package/esm2020/layout-panel/layout-panel.module.mjs +4 -4
  256. package/esm2020/link/link.component.mjs +3 -3
  257. package/esm2020/link/link.module.mjs +4 -4
  258. package/esm2020/list/deprecated-list-content-density,directive.mjs +3 -3
  259. package/esm2020/list/directives/byline/list-byline-left.directive.mjs +3 -3
  260. package/esm2020/list/directives/byline/list-byline-right.directive.mjs +3 -3
  261. package/esm2020/list/directives/byline/list-byline.directive.mjs +3 -3
  262. package/esm2020/list/directives/byline/list-content.directive.mjs +3 -3
  263. package/esm2020/list/directives/byline/list-thumbnail.directive.mjs +3 -3
  264. package/esm2020/list/directives/list-footer.directive.mjs +3 -3
  265. package/esm2020/list/directives/list-group-header.directive.mjs +3 -3
  266. package/esm2020/list/directives/list-icon.directive.mjs +3 -3
  267. package/esm2020/list/directives/list-link.directive.mjs +3 -3
  268. package/esm2020/list/directives/list-navigation-item-arrow.directive.mjs +7 -13
  269. package/esm2020/list/directives/list-navigation-item-text.directive.mjs +3 -3
  270. package/esm2020/list/directives/list-secondary.directive.mjs +3 -3
  271. package/esm2020/list/directives/list-title-text.directive.mjs +3 -3
  272. package/esm2020/list/directives/list-title.directive.mjs +3 -3
  273. package/esm2020/list/list-focus-item.model.mjs +3 -3
  274. package/esm2020/list/list-item/list-item.component.mjs +3 -3
  275. package/esm2020/list/list-message.directive.mjs +3 -3
  276. package/esm2020/list/list-navigation-item/list-navigation-item.component.mjs +5 -10
  277. package/esm2020/list/list.component.mjs +3 -3
  278. package/esm2020/list/list.module.mjs +4 -4
  279. package/esm2020/menu/directives/deprecated-menu-compact.directive.mjs +3 -3
  280. package/esm2020/menu/directives/menu-addon.directive.mjs +3 -3
  281. package/esm2020/menu/directives/menu-interactive.directive.mjs +3 -3
  282. package/esm2020/menu/directives/menu-shortcut.directive.mjs +3 -3
  283. package/esm2020/menu/directives/menu-title.directive.mjs +3 -3
  284. package/esm2020/menu/directives/menu-trigger.directive.mjs +3 -3
  285. package/esm2020/menu/menu-item/menu-item.component.mjs +6 -6
  286. package/esm2020/menu/menu-keyboard.service.mjs +3 -3
  287. package/esm2020/menu/menu-mobile/menu-mobile.component.mjs +3 -3
  288. package/esm2020/menu/menu-mobile/menu-mobile.module.mjs +4 -4
  289. package/esm2020/menu/menu-separator/menu-separator.component.mjs +3 -3
  290. package/esm2020/menu/menu.component.mjs +3 -3
  291. package/esm2020/menu/menu.module.mjs +4 -4
  292. package/esm2020/menu/services/menu.service.mjs +3 -3
  293. package/esm2020/message-box/directives/message-box-decisive-button.directive.mjs +3 -3
  294. package/esm2020/message-box/message-box-body/message-box-body.component.mjs +3 -3
  295. package/esm2020/message-box/message-box-container/message-box-container.component.mjs +3 -3
  296. package/esm2020/message-box/message-box-default/message-box-default.component.mjs +3 -3
  297. package/esm2020/message-box/message-box-footer/message-box-footer.component.mjs +3 -3
  298. package/esm2020/message-box/message-box-footer-button/message-box-footer-button.component.mjs +3 -3
  299. package/esm2020/message-box/message-box-header/message-box-header.component.mjs +3 -3
  300. package/esm2020/message-box/message-box-semantic-icon/message-box-semantic-icon.component.mjs +3 -3
  301. package/esm2020/message-box/message-box.component.mjs +3 -3
  302. package/esm2020/message-box/message-box.module.mjs +4 -4
  303. package/esm2020/message-box/services/message-box.service.mjs +3 -3
  304. package/esm2020/message-box/utils/message-box-config.class.mjs +3 -3
  305. package/esm2020/message-box/utils/message-box-ref.class.mjs +3 -3
  306. package/esm2020/message-page/message-page-actions/message-page-actions.component.mjs +3 -3
  307. package/esm2020/message-page/message-page-more/message-page-more.component.mjs +3 -3
  308. package/esm2020/message-page/message-page-subtitle/message-page-subtitle.component.mjs +3 -3
  309. package/esm2020/message-page/message-page-title/message-page-title.component.mjs +3 -3
  310. package/esm2020/message-page/message-page.component.mjs +3 -3
  311. package/esm2020/message-page/message-page.module.mjs +4 -4
  312. package/esm2020/message-strip/message-strip.component.mjs +3 -3
  313. package/esm2020/message-strip/message-strip.module.mjs +4 -4
  314. package/esm2020/message-toast/message-toast-service/message-toast.service.mjs +3 -3
  315. package/esm2020/message-toast/message-toast-utils/message-toast-container.component.mjs +3 -3
  316. package/esm2020/message-toast/message-toast.component.mjs +3 -3
  317. package/esm2020/message-toast/message-toast.module.mjs +4 -4
  318. package/esm2020/micro-process-flow/components/micro-process-flow/deprecated-micro-process-flow-content-density.directive.mjs +3 -3
  319. package/esm2020/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +3 -3
  320. package/esm2020/micro-process-flow/components/micro-process-flow-icon/micro-process-flow-icon.component.mjs +3 -3
  321. package/esm2020/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.mjs +3 -3
  322. package/esm2020/micro-process-flow/micro-process-flow-focusable-item.directive.mjs +3 -3
  323. package/esm2020/micro-process-flow/micro-process-flow-intermediary-item.directive.mjs +3 -3
  324. package/esm2020/micro-process-flow/micro-process-flow.module.mjs +4 -4
  325. package/esm2020/multi-combobox/base-multi-combobox.class.mjs +3 -3
  326. package/esm2020/multi-combobox/mobile/mobile-multi-combobox.component.mjs +3 -3
  327. package/esm2020/multi-combobox/mobile/mobile-multi-combobox.module.mjs +4 -4
  328. package/esm2020/multi-combobox/multi-combobox-config.mjs +3 -3
  329. package/esm2020/multi-combobox/multi-combobox.component.mjs +6 -11
  330. package/esm2020/multi-combobox/multi-combobox.module.mjs +4 -4
  331. package/esm2020/multi-input/deprecated-multi-input-compact.directive.mjs +3 -3
  332. package/esm2020/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
  333. package/esm2020/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  334. package/esm2020/multi-input/multi-input.component.mjs +3 -3
  335. package/esm2020/multi-input/multi-input.module.mjs +4 -4
  336. package/esm2020/nested-list/deprecated-nested-list-compact.directive.mjs +3 -3
  337. package/esm2020/nested-list/nested-content/nested-list-content.directive.mjs +3 -3
  338. package/esm2020/nested-list/nested-item/nested-item.directive.mjs +3 -3
  339. package/esm2020/nested-list/nested-link/nested-link.directive.mjs +3 -3
  340. package/esm2020/nested-list/nested-list/nested-list.directive.mjs +3 -3
  341. package/esm2020/nested-list/nested-list-directives.mjs +12 -12
  342. package/esm2020/nested-list/nested-list-keyboard.service.mjs +3 -3
  343. package/esm2020/nested-list/nested-list-popover/nested-list-popover.component.mjs +3 -3
  344. package/esm2020/nested-list/nested-list-state.service.mjs +3 -3
  345. package/esm2020/nested-list/nested-list.module.mjs +4 -4
  346. package/esm2020/nested-list/prepared-nested-list/prepared-nested-list.component.mjs +3 -3
  347. package/esm2020/notification/directives/notification-footer-content.directive.mjs +3 -3
  348. package/esm2020/notification/directives/notification-indicator.directive.mjs +3 -3
  349. package/esm2020/notification/directives/notification-limit-description.directive.mjs +3 -3
  350. package/esm2020/notification/directives/notification-limit-title.directive.mjs +3 -3
  351. package/esm2020/notification/directives/notification-paragraph.directive.mjs +3 -3
  352. package/esm2020/notification/directives/notification-separator.directive.mjs +3 -3
  353. package/esm2020/notification/directives/notification-title.directive.mjs +3 -3
  354. package/esm2020/notification/notification/notification.component.mjs +3 -3
  355. package/esm2020/notification/notification-actions/notification-actions.component.mjs +3 -3
  356. package/esm2020/notification/notification-body/notification-body.component.mjs +3 -3
  357. package/esm2020/notification/notification-content/notification-content.component.mjs +3 -3
  358. package/esm2020/notification/notification-footer/notification-footer.component.mjs +3 -3
  359. package/esm2020/notification/notification-group/notification-group.component.mjs +3 -3
  360. package/esm2020/notification/notification-group-header/notification-group-header.component.mjs +3 -3
  361. package/esm2020/notification/notification-group-list/notification-group-list.component.mjs +3 -3
  362. package/esm2020/notification/notification-header/notification-header.component.mjs +3 -3
  363. package/esm2020/notification/notification-limit/notification-limit.component.mjs +3 -3
  364. package/esm2020/notification/notification-service/notification.service.mjs +3 -3
  365. package/esm2020/notification/notification-utils/notification-container.mjs +3 -3
  366. package/esm2020/notification/notification-utils/notification-group-base.mjs +3 -3
  367. package/esm2020/notification/notification.module.mjs +4 -4
  368. package/esm2020/object-identifier/object-identifier.component.mjs +3 -3
  369. package/esm2020/object-identifier/object-identifier.module.mjs +4 -4
  370. package/esm2020/object-marker/object-marker.component.mjs +3 -3
  371. package/esm2020/object-marker/object-marker.module.mjs +4 -4
  372. package/esm2020/object-number/object-number.component.mjs +3 -3
  373. package/esm2020/object-number/object-number.module.mjs +4 -4
  374. package/esm2020/object-status/object-status.component.mjs +3 -3
  375. package/esm2020/object-status/object-status.module.mjs +4 -4
  376. package/esm2020/overflow-layout/directives/overflow-expand.directive.mjs +3 -3
  377. package/esm2020/overflow-layout/directives/overflow-item-container-ref.directive.mjs +3 -3
  378. package/esm2020/overflow-layout/directives/overflow-item-ref.directive.mjs +3 -3
  379. package/esm2020/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +3 -3
  380. package/esm2020/overflow-layout/directives/overflow-layout-item-container.directive.mjs +3 -3
  381. package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +3 -3
  382. package/esm2020/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +3 -3
  383. package/esm2020/overflow-layout/overflow-layout.component.mjs +3 -3
  384. package/esm2020/overflow-layout/overflow-layout.module.mjs +4 -4
  385. package/esm2020/overflow-layout/overflow-layout.service.mjs +22 -18
  386. package/esm2020/pagination/deprecated-pagination-compact.directive.mjs +3 -3
  387. package/esm2020/pagination/pagination.component.mjs +3 -3
  388. package/esm2020/pagination/pagination.module.mjs +4 -4
  389. package/esm2020/pagination/pagination.service.mjs +3 -3
  390. package/esm2020/panel/deprecated-panel-compact.directive.mjs +3 -3
  391. package/esm2020/panel/panel-content/panel-content.directive.mjs +3 -3
  392. package/esm2020/panel/panel-title/panel-title.directive.mjs +3 -3
  393. package/esm2020/panel/panel.component.mjs +3 -3
  394. package/esm2020/panel/panel.module.mjs +4 -4
  395. package/esm2020/popover/base/base-popover.class.mjs +4 -8
  396. package/esm2020/popover/popover-body/popover-body-directives/popover-body-footer.directive.mjs +3 -3
  397. package/esm2020/popover/popover-body/popover-body-directives/popover-body-header.directive.mjs +3 -3
  398. package/esm2020/popover/popover-body/popover-body.component.mjs +5 -9
  399. package/esm2020/popover/popover-container/popover-container.directive.mjs +3 -3
  400. package/esm2020/popover/popover-control/popover-control.component.mjs +3 -3
  401. package/esm2020/popover/popover-mobile/popover-mobile.component.mjs +3 -3
  402. package/esm2020/popover/popover-mobile/popover-mobile.module.mjs +4 -4
  403. package/esm2020/popover/popover-service/popover.service.mjs +4 -6
  404. package/esm2020/popover/popover-trigger.directive.mjs +3 -3
  405. package/esm2020/popover/popover.component.mjs +3 -3
  406. package/esm2020/popover/popover.module.mjs +4 -4
  407. package/esm2020/product-switch/product-switch/product-switch.component.mjs +3 -3
  408. package/esm2020/product-switch/product-switch-body/product-switch-body.component.mjs +3 -3
  409. package/esm2020/product-switch/product-switch.module.mjs +4 -4
  410. package/esm2020/progress-indicator/progress-indicator.component.mjs +3 -3
  411. package/esm2020/progress-indicator/progress-indicator.module.mjs +4 -4
  412. package/esm2020/quick-view/quick-view/quick-view.component.mjs +3 -3
  413. package/esm2020/quick-view/quick-view-group/quick-view-group.component.mjs +3 -3
  414. package/esm2020/quick-view/quick-view-group-item/quick-view-group-item.component.mjs +3 -3
  415. package/esm2020/quick-view/quick-view-group-item-content/quick-view-group-item-content-element.directive.mjs +3 -3
  416. package/esm2020/quick-view/quick-view-group-item-content/quick-view-group-item-content.component.mjs +3 -3
  417. package/esm2020/quick-view/quick-view-group-item-label/quick-view-group-item-label.component.mjs +3 -3
  418. package/esm2020/quick-view/quick-view-group-title/quick-view-group-title.component.mjs +3 -3
  419. package/esm2020/quick-view/quick-view-subheader/quick-view-subheader.component.mjs +3 -3
  420. package/esm2020/quick-view/quick-view-subheader-subtitle/quick-view-subheader-subtitle.component.mjs +3 -3
  421. package/esm2020/quick-view/quick-view-subheader-title/quick-view-subheader-title.component.mjs +3 -3
  422. package/esm2020/quick-view/quick-view-title/quick-view-title.component.mjs +3 -3
  423. package/esm2020/quick-view/quick-view.module.mjs +4 -4
  424. package/esm2020/radio/deprecated-radio-button-compact.directive.mjs +3 -3
  425. package/esm2020/radio/radio-button/radio-button.component.mjs +3 -3
  426. package/esm2020/radio/radio.module.mjs +4 -4
  427. package/esm2020/rating-indicator/components/rating-indicator.component.mjs +3 -3
  428. package/esm2020/rating-indicator/pipes/rating-star-label.pipe.mjs +3 -3
  429. package/esm2020/rating-indicator/rating-indicator.module.mjs +4 -4
  430. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +3 -3
  431. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +3 -3
  432. package/esm2020/resizable-card-layout/resizable-card-layout.module.mjs +4 -4
  433. package/esm2020/scroll-spy/scroll-spy.directive.mjs +3 -3
  434. package/esm2020/scroll-spy/scroll-spy.module.mjs +4 -4
  435. package/esm2020/scrollbar/scrollbar.directive.mjs +3 -3
  436. package/esm2020/scrollbar/scrollbar.module.mjs +4 -4
  437. package/esm2020/segmented-button/segmented-button.component.mjs +3 -3
  438. package/esm2020/segmented-button/segmented-button.module.mjs +4 -4
  439. package/esm2020/select/deprecated-select-compact.directive.mjs +3 -3
  440. package/esm2020/select/option/option.component.mjs +3 -3
  441. package/esm2020/select/select-key-manager.service.mjs +3 -3
  442. package/esm2020/select/select-mobile/select-mobile.component.mjs +3 -3
  443. package/esm2020/select/select-mobile/select-mobile.module.mjs +4 -4
  444. package/esm2020/select/select.component.mjs +6 -7
  445. package/esm2020/select/select.module.mjs +4 -4
  446. package/esm2020/shared/services/value-state-message.service.mjs +3 -3
  447. package/esm2020/shellbar/deprecated-shellbar-compact.directive.mjs +3 -3
  448. package/esm2020/shellbar/product-menu/product-menu.component.mjs +3 -3
  449. package/esm2020/shellbar/shellbar-action/shellbar-action.component.mjs +3 -3
  450. package/esm2020/shellbar/shellbar-actions/shellbar-actions.component.mjs +3 -3
  451. package/esm2020/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +3 -3
  452. package/esm2020/shellbar/shellbar-logo/shellbar-logo.component.mjs +3 -3
  453. package/esm2020/shellbar/shellbar-sidenav.directive.mjs +3 -3
  454. package/esm2020/shellbar/shellbar-subtitle/shellbar-subtitle.component.mjs +3 -3
  455. package/esm2020/shellbar/shellbar-title/shellbar-title.component.mjs +3 -3
  456. package/esm2020/shellbar/shellbar.component.mjs +3 -3
  457. package/esm2020/shellbar/shellbar.module.mjs +4 -4
  458. package/esm2020/shellbar/user-menu/shellbar-user-menu.component.mjs +3 -3
  459. package/esm2020/side-navigation/side-navigation-main.directive.mjs +3 -3
  460. package/esm2020/side-navigation/side-navigation-utility.directive.mjs +3 -3
  461. package/esm2020/side-navigation/side-navigation.component.mjs +3 -3
  462. package/esm2020/side-navigation/side-navigation.module.mjs +4 -4
  463. package/esm2020/skeleton/components/skeleton.component.mjs +3 -3
  464. package/esm2020/skeleton/skeleton.module.mjs +4 -4
  465. package/esm2020/slider/deprecated-slider-cozy.directive.mjs +3 -3
  466. package/esm2020/slider/slider-position.directive.mjs +3 -3
  467. package/esm2020/slider/slider.component.mjs +3 -3
  468. package/esm2020/slider/slider.module.mjs +4 -4
  469. package/esm2020/split-button/deprecated-split-button-compact.directive.mjs +3 -3
  470. package/esm2020/split-button/split-button-utils/split-button.directives.mjs +3 -3
  471. package/esm2020/split-button/split-button.component.mjs +3 -3
  472. package/esm2020/split-button/split-button.module.mjs +4 -4
  473. package/esm2020/splitter/splitter-pagination/splitter-pagination.component.mjs +3 -3
  474. package/esm2020/splitter/splitter-pane-container/splitter-pane-container.component.mjs +6 -6
  475. package/esm2020/splitter/splitter-resizer/splitter-resizer.component.mjs +3 -3
  476. package/esm2020/splitter/splitter-split-pane/splitter-split-pane.component.mjs +3 -3
  477. package/esm2020/splitter/splitter.component.mjs +3 -3
  478. package/esm2020/splitter/splitter.module.mjs +4 -4
  479. package/esm2020/status-indicator/status-indicator.component.mjs +3 -3
  480. package/esm2020/status-indicator/status-indicator.module.mjs +4 -4
  481. package/esm2020/step-input/deprecated-step-input-compact.directive.mjs +3 -3
  482. package/esm2020/step-input/step-input.component.mjs +3 -3
  483. package/esm2020/step-input/step-input.module.mjs +4 -4
  484. package/esm2020/switch/deprecated-switch-compact.directive.mjs +3 -3
  485. package/esm2020/switch/switch.component.mjs +3 -3
  486. package/esm2020/switch/switch.module.mjs +4 -4
  487. package/esm2020/table/deprecated-table-compact.directive.mjs +3 -3
  488. package/esm2020/table/deprecated-table-condensed.directive.mjs +3 -3
  489. package/esm2020/table/directives/table-body.directive.mjs +3 -3
  490. package/esm2020/table/directives/table-cell.directive.mjs +3 -3
  491. package/esm2020/table/directives/table-fixed.directive.mjs +3 -3
  492. package/esm2020/table/directives/table-footer.directive.mjs +3 -3
  493. package/esm2020/table/directives/table-header.directive.mjs +3 -3
  494. package/esm2020/table/directives/table-icon.directive.mjs +3 -3
  495. package/esm2020/table/directives/table-inner.directive.mjs +3 -3
  496. package/esm2020/table/directives/table-popover.directive.mjs +3 -3
  497. package/esm2020/table/directives/table-responsive-wrapper.directive.mjs +3 -3
  498. package/esm2020/table/directives/table-row.directive.mjs +3 -3
  499. package/esm2020/table/directives/table-status-indicator.directive.mjs +3 -3
  500. package/esm2020/table/directives/table-text.directive.mjs +3 -3
  501. package/esm2020/table/table-wrapper.component.mjs +3 -3
  502. package/esm2020/table/table.component.mjs +3 -3
  503. package/esm2020/table/table.module.mjs +7 -8
  504. package/esm2020/tabs/deprecated-tabs-compact.directive.mjs +3 -3
  505. package/esm2020/tabs/tab-item/tab-item.directive.mjs +3 -3
  506. package/esm2020/tabs/tab-item-expand/tab-item-expand.component.mjs +3 -3
  507. package/esm2020/tabs/tab-link/tab-link.directive.mjs +3 -3
  508. package/esm2020/tabs/tab-list.component.mjs +3 -3
  509. package/esm2020/tabs/tab-nav/tab-nav.component.mjs +3 -3
  510. package/esm2020/tabs/tab-panel/tab-panel.component.mjs +3 -3
  511. package/esm2020/tabs/tab-utils/tab-directives.mjs +30 -30
  512. package/esm2020/tabs/tabs.module.mjs +4 -4
  513. package/esm2020/text/text.component.mjs +3 -3
  514. package/esm2020/text/text.module.mjs +4 -4
  515. package/esm2020/theming/theming.module.mjs +4 -4
  516. package/esm2020/theming/theming.service.mjs +3 -3
  517. package/esm2020/tile/directives/numeric-content.directives.mjs +27 -27
  518. package/esm2020/tile/directives/tile.directives.mjs +69 -69
  519. package/esm2020/tile/tile.component.mjs +3 -3
  520. package/esm2020/tile/tile.module.mjs +4 -4
  521. package/esm2020/time/deprecated-time-content-density.directive.mjs +3 -3
  522. package/esm2020/time/i18n/time-i18n.mjs +3 -3
  523. package/esm2020/time/time-column/time-column.component.mjs +3 -3
  524. package/esm2020/time/time.component.mjs +3 -3
  525. package/esm2020/time/time.module.mjs +4 -4
  526. package/esm2020/time-picker/deprecated-timepicker-compact.directive.mjs +3 -3
  527. package/esm2020/time-picker/time-picker.component.mjs +3 -3
  528. package/esm2020/time-picker/time-picker.module.mjs +4 -4
  529. package/esm2020/timeline/components/timeline-node/timeline-node.component.mjs +3 -3
  530. package/esm2020/timeline/components/timeline-node-body/timeline-node-body.component.mjs +3 -3
  531. package/esm2020/timeline/components/timeline-node-footer/timeline-node-footer.component.mjs +3 -3
  532. package/esm2020/timeline/components/timeline-node-header/timeline-node-header-info/timeline-node-header-info.component.mjs +3 -3
  533. package/esm2020/timeline/components/timeline-node-header/timeline-node-header.component.mjs +3 -3
  534. package/esm2020/timeline/directives/class-bindings/timeline-header-info-sub-title.directive.mjs +3 -3
  535. package/esm2020/timeline/directives/class-bindings/timeline-node-header-info-text.directive.mjs +3 -3
  536. package/esm2020/timeline/directives/class-bindings/timeline-node-header-info-title.directive.mjs +3 -3
  537. package/esm2020/timeline/directives/timeline-first-list-outlet.directive.mjs +3 -3
  538. package/esm2020/timeline/directives/timeline-node-def.directive.mjs +3 -3
  539. package/esm2020/timeline/directives/timeline-second-list-outlet.directive.mjs +3 -3
  540. package/esm2020/timeline/services/timeline-position-control.service.mjs +3 -3
  541. package/esm2020/timeline/timeline.component.mjs +3 -3
  542. package/esm2020/timeline/timeline.module.mjs +4 -4
  543. package/esm2020/title/title.component.mjs +3 -3
  544. package/esm2020/title/title.module.mjs +4 -4
  545. package/esm2020/token/deprecated-tokenizer-content-density.directive.mjs +3 -3
  546. package/esm2020/token/token-input.directive.mjs +3 -3
  547. package/esm2020/token/token.component.mjs +3 -3
  548. package/esm2020/token/token.module.mjs +4 -4
  549. package/esm2020/token/tokenizer.component.mjs +3 -3
  550. package/esm2020/toolbar/deprecated-toolbar-size.directive.mjs +3 -3
  551. package/esm2020/toolbar/public_api.mjs +4 -3
  552. package/esm2020/toolbar/toolbar-form-label.directive.mjs +3 -3
  553. package/esm2020/toolbar/toolbar-item.directive.mjs +8 -43
  554. package/esm2020/toolbar/toolbar-label.directive.mjs +3 -3
  555. package/esm2020/toolbar/toolbar-overflow-button-menu.directive.mjs +3 -3
  556. package/esm2020/toolbar/toolbar-overflow-button.directive.mjs +3 -3
  557. package/esm2020/toolbar/toolbar-overflow-group.directive.mjs +27 -0
  558. package/esm2020/toolbar/toolbar-overflow-priority.directive.mjs +29 -0
  559. package/esm2020/toolbar/toolbar-separator.component.mjs +3 -3
  560. package/esm2020/toolbar/toolbar-spacer.component.mjs +47 -0
  561. package/esm2020/toolbar/toolbar.component.mjs +277 -159
  562. package/esm2020/toolbar/toolbar.module.mjs +19 -12
  563. package/esm2020/tree/tree-child.component.mjs +3 -3
  564. package/esm2020/tree/tree.component.mjs +3 -3
  565. package/esm2020/tree/tree.module.mjs +4 -4
  566. package/esm2020/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +3 -3
  567. package/esm2020/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +3 -3
  568. package/esm2020/upload-collection/upload-collection-item.directive.mjs +3 -3
  569. package/esm2020/upload-collection/upload-collection-simple.directives.mjs +21 -21
  570. package/esm2020/upload-collection/upload-collection.component.mjs +3 -3
  571. package/esm2020/upload-collection/upload-collection.module.mjs +4 -4
  572. package/esm2020/vertical-navigation/vertical-navigation-group-header.directive.mjs +3 -3
  573. package/esm2020/vertical-navigation/vertical-navigation-main-navigation.component.mjs +3 -3
  574. package/esm2020/vertical-navigation/vertical-navigation.component.mjs +3 -3
  575. package/esm2020/vertical-navigation/vertical-navigation.module.mjs +4 -4
  576. package/esm2020/wizard/deprecated-wizard-compact.directive.mjs +3 -3
  577. package/esm2020/wizard/wizard-content/wizard-content.component.mjs +3 -3
  578. package/esm2020/wizard/wizard-navigation/wizard-navigation.component.mjs +3 -3
  579. package/esm2020/wizard/wizard-next-step/wizard-next-step.component.mjs +3 -3
  580. package/esm2020/wizard/wizard-progress-bar/wizard-progress-bar.directive.mjs +3 -3
  581. package/esm2020/wizard/wizard-step/wizard-step.component.mjs +3 -3
  582. package/esm2020/wizard/wizard-step-indicator/wizard-step-indicator.component.mjs +3 -3
  583. package/esm2020/wizard/wizard.component.mjs +3 -3
  584. package/esm2020/wizard/wizard.module.mjs +4 -4
  585. package/esm2020/wizard/wizard.service.mjs +3 -3
  586. package/fesm2015/fundamental-ngx-core-action-bar.mjs +25 -25
  587. package/fesm2015/fundamental-ngx-core-action-sheet.mjs +26 -26
  588. package/fesm2015/fundamental-ngx-core-alert.mjs +13 -13
  589. package/fesm2015/fundamental-ngx-core-avatar-group.mjs +28 -28
  590. package/fesm2015/fundamental-ngx-core-avatar.mjs +7 -7
  591. package/fesm2015/fundamental-ngx-core-bar.mjs +28 -28
  592. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +13 -13
  593. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +10 -10
  594. package/fesm2015/fundamental-ngx-core-button.mjs +13 -13
  595. package/fesm2015/fundamental-ngx-core-calendar.mjs +34 -34
  596. package/fesm2015/fundamental-ngx-core-card.mjs +58 -58
  597. package/fesm2015/fundamental-ngx-core-carousel.mjs +19 -19
  598. package/fesm2015/fundamental-ngx-core-checkbox.mjs +10 -10
  599. package/fesm2015/fundamental-ngx-core-combobox.mjs +20 -20
  600. package/fesm2015/fundamental-ngx-core-content-density.mjs +37 -37
  601. package/fesm2015/fundamental-ngx-core-date-picker.mjs +10 -10
  602. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +10 -10
  603. package/fesm2015/fundamental-ngx-core-datetime.mjs +24 -24
  604. package/fesm2015/fundamental-ngx-core-dialog.mjs +58 -58
  605. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +44 -44
  606. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  607. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
  608. package/fesm2015/fundamental-ngx-core-facets.mjs +13 -13
  609. package/fesm2015/fundamental-ngx-core-feed-input.mjs +16 -16
  610. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +22 -22
  611. package/fesm2015/fundamental-ngx-core-file-uploader.mjs +19 -19
  612. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +13 -13
  613. package/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
  614. package/fesm2015/fundamental-ngx-core-form.mjs +79 -79
  615. package/fesm2015/fundamental-ngx-core-formatted-text.mjs +7 -7
  616. package/fesm2015/fundamental-ngx-core-grid-list.mjs +48 -48
  617. package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
  618. package/fesm2015/fundamental-ngx-core-icon.mjs +7 -7
  619. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +19 -19
  620. package/fesm2015/fundamental-ngx-core-infinite-scroll.mjs +7 -7
  621. package/fesm2015/fundamental-ngx-core-info-label.mjs +7 -7
  622. package/fesm2015/fundamental-ngx-core-inline-help.mjs +7 -14
  623. package/fesm2015/fundamental-ngx-core-inline-help.mjs.map +1 -1
  624. package/fesm2015/fundamental-ngx-core-input-group.mjs +22 -22
  625. package/fesm2015/fundamental-ngx-core-layout-grid.mjs +13 -13
  626. package/fesm2015/fundamental-ngx-core-layout-panel.mjs +31 -31
  627. package/fesm2015/fundamental-ngx-core-link.mjs +7 -7
  628. package/fesm2015/fundamental-ngx-core-list.mjs +67 -79
  629. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  630. package/fesm2015/fundamental-ngx-core-menu.mjs +47 -47
  631. package/fesm2015/fundamental-ngx-core-message-box.mjs +40 -40
  632. package/fesm2015/fundamental-ngx-core-message-page.mjs +19 -19
  633. package/fesm2015/fundamental-ngx-core-message-strip.mjs +7 -7
  634. package/fesm2015/fundamental-ngx-core-message-toast.mjs +13 -13
  635. package/fesm2015/fundamental-ngx-core-micro-process-flow.mjs +22 -22
  636. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +23 -28
  637. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  638. package/fesm2015/fundamental-ngx-core-multi-input.mjs +17 -17
  639. package/fesm2015/fundamental-ngx-core-nested-list.mjs +43 -43
  640. package/fesm2015/fundamental-ngx-core-notification.mjs +64 -64
  641. package/fesm2015/fundamental-ngx-core-object-identifier.mjs +7 -7
  642. package/fesm2015/fundamental-ngx-core-object-marker.mjs +7 -7
  643. package/fesm2015/fundamental-ngx-core-object-number.mjs +7 -7
  644. package/fesm2015/fundamental-ngx-core-object-status.mjs +7 -7
  645. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +49 -45
  646. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  647. package/fesm2015/fundamental-ngx-core-pagination.mjs +13 -13
  648. package/fesm2015/fundamental-ngx-core-panel.mjs +16 -16
  649. package/fesm2015/fundamental-ngx-core-popover.mjs +39 -49
  650. package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
  651. package/fesm2015/fundamental-ngx-core-product-switch.mjs +10 -10
  652. package/fesm2015/fundamental-ngx-core-progress-indicator.mjs +7 -7
  653. package/fesm2015/fundamental-ngx-core-quick-view.mjs +37 -37
  654. package/fesm2015/fundamental-ngx-core-radio.mjs +10 -10
  655. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +10 -10
  656. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs +10 -10
  657. package/fesm2015/fundamental-ngx-core-scroll-spy.mjs +7 -7
  658. package/fesm2015/fundamental-ngx-core-scrollbar.mjs +7 -7
  659. package/fesm2015/fundamental-ngx-core-segmented-button.mjs +7 -7
  660. package/fesm2015/fundamental-ngx-core-select.mjs +24 -25
  661. package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  662. package/fesm2015/fundamental-ngx-core-shared.mjs +3 -3
  663. package/fesm2015/fundamental-ngx-core-shellbar.mjs +37 -37
  664. package/fesm2015/fundamental-ngx-core-side-navigation.mjs +13 -13
  665. package/fesm2015/fundamental-ngx-core-skeleton.mjs +7 -7
  666. package/fesm2015/fundamental-ngx-core-slider.mjs +13 -13
  667. package/fesm2015/fundamental-ngx-core-split-button.mjs +13 -13
  668. package/fesm2015/fundamental-ngx-core-splitter.mjs +22 -22
  669. package/fesm2015/fundamental-ngx-core-status-indicator.mjs +7 -7
  670. package/fesm2015/fundamental-ngx-core-step-input.mjs +10 -10
  671. package/fesm2015/fundamental-ngx-core-switch.mjs +10 -10
  672. package/fesm2015/fundamental-ngx-core-table.mjs +55 -55
  673. package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  674. package/fesm2015/fundamental-ngx-core-tabs.mjs +55 -55
  675. package/fesm2015/fundamental-ngx-core-text.mjs +7 -7
  676. package/fesm2015/fundamental-ngx-core-theming.mjs +7 -7
  677. package/fesm2015/fundamental-ngx-core-tile.mjs +103 -103
  678. package/fesm2015/fundamental-ngx-core-time-picker.mjs +10 -10
  679. package/fesm2015/fundamental-ngx-core-time.mjs +16 -16
  680. package/fesm2015/fundamental-ngx-core-timeline.mjs +43 -43
  681. package/fesm2015/fundamental-ngx-core-title.mjs +7 -7
  682. package/fesm2015/fundamental-ngx-core-token.mjs +16 -16
  683. package/fesm2015/fundamental-ngx-core-toolbar.mjs +416 -276
  684. package/fesm2015/fundamental-ngx-core-toolbar.mjs.map +1 -1
  685. package/fesm2015/fundamental-ngx-core-tree.mjs +10 -10
  686. package/fesm2015/fundamental-ngx-core-upload-collection.mjs +37 -37
  687. package/fesm2015/fundamental-ngx-core-vertical-navigation.mjs +13 -13
  688. package/fesm2015/fundamental-ngx-core-wizard.mjs +31 -31
  689. package/fesm2015/fundamental-ngx-core.mjs +4 -4
  690. package/fesm2020/fundamental-ngx-core-action-bar.mjs +25 -25
  691. package/fesm2020/fundamental-ngx-core-action-sheet.mjs +26 -26
  692. package/fesm2020/fundamental-ngx-core-alert.mjs +13 -13
  693. package/fesm2020/fundamental-ngx-core-avatar-group.mjs +28 -28
  694. package/fesm2020/fundamental-ngx-core-avatar.mjs +7 -7
  695. package/fesm2020/fundamental-ngx-core-bar.mjs +28 -28
  696. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +13 -13
  697. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +10 -10
  698. package/fesm2020/fundamental-ngx-core-button.mjs +13 -13
  699. package/fesm2020/fundamental-ngx-core-calendar.mjs +34 -34
  700. package/fesm2020/fundamental-ngx-core-card.mjs +58 -58
  701. package/fesm2020/fundamental-ngx-core-carousel.mjs +19 -19
  702. package/fesm2020/fundamental-ngx-core-checkbox.mjs +10 -10
  703. package/fesm2020/fundamental-ngx-core-combobox.mjs +20 -20
  704. package/fesm2020/fundamental-ngx-core-content-density.mjs +37 -37
  705. package/fesm2020/fundamental-ngx-core-date-picker.mjs +10 -10
  706. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +10 -10
  707. package/fesm2020/fundamental-ngx-core-datetime.mjs +24 -24
  708. package/fesm2020/fundamental-ngx-core-dialog.mjs +58 -58
  709. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +44 -44
  710. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  711. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
  712. package/fesm2020/fundamental-ngx-core-facets.mjs +13 -13
  713. package/fesm2020/fundamental-ngx-core-feed-input.mjs +16 -16
  714. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +22 -22
  715. package/fesm2020/fundamental-ngx-core-file-uploader.mjs +19 -19
  716. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +13 -13
  717. package/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
  718. package/fesm2020/fundamental-ngx-core-form.mjs +79 -79
  719. package/fesm2020/fundamental-ngx-core-formatted-text.mjs +7 -7
  720. package/fesm2020/fundamental-ngx-core-grid-list.mjs +48 -48
  721. package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
  722. package/fesm2020/fundamental-ngx-core-icon.mjs +7 -7
  723. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +19 -19
  724. package/fesm2020/fundamental-ngx-core-infinite-scroll.mjs +7 -7
  725. package/fesm2020/fundamental-ngx-core-info-label.mjs +7 -7
  726. package/fesm2020/fundamental-ngx-core-inline-help.mjs +7 -14
  727. package/fesm2020/fundamental-ngx-core-inline-help.mjs.map +1 -1
  728. package/fesm2020/fundamental-ngx-core-input-group.mjs +22 -22
  729. package/fesm2020/fundamental-ngx-core-layout-grid.mjs +13 -13
  730. package/fesm2020/fundamental-ngx-core-layout-panel.mjs +31 -31
  731. package/fesm2020/fundamental-ngx-core-link.mjs +7 -7
  732. package/fesm2020/fundamental-ngx-core-list.mjs +67 -78
  733. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  734. package/fesm2020/fundamental-ngx-core-menu.mjs +47 -47
  735. package/fesm2020/fundamental-ngx-core-message-box.mjs +40 -40
  736. package/fesm2020/fundamental-ngx-core-message-page.mjs +19 -19
  737. package/fesm2020/fundamental-ngx-core-message-strip.mjs +7 -7
  738. package/fesm2020/fundamental-ngx-core-message-toast.mjs +13 -13
  739. package/fesm2020/fundamental-ngx-core-micro-process-flow.mjs +22 -22
  740. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +22 -27
  741. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  742. package/fesm2020/fundamental-ngx-core-multi-input.mjs +17 -17
  743. package/fesm2020/fundamental-ngx-core-nested-list.mjs +43 -43
  744. package/fesm2020/fundamental-ngx-core-notification.mjs +64 -64
  745. package/fesm2020/fundamental-ngx-core-object-identifier.mjs +7 -7
  746. package/fesm2020/fundamental-ngx-core-object-marker.mjs +7 -7
  747. package/fesm2020/fundamental-ngx-core-object-number.mjs +7 -7
  748. package/fesm2020/fundamental-ngx-core-object-status.mjs +7 -7
  749. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +49 -45
  750. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  751. package/fesm2020/fundamental-ngx-core-pagination.mjs +13 -13
  752. package/fesm2020/fundamental-ngx-core-panel.mjs +16 -16
  753. package/fesm2020/fundamental-ngx-core-popover.mjs +39 -49
  754. package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
  755. package/fesm2020/fundamental-ngx-core-product-switch.mjs +10 -10
  756. package/fesm2020/fundamental-ngx-core-progress-indicator.mjs +7 -7
  757. package/fesm2020/fundamental-ngx-core-quick-view.mjs +37 -37
  758. package/fesm2020/fundamental-ngx-core-radio.mjs +10 -10
  759. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +10 -10
  760. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs +10 -10
  761. package/fesm2020/fundamental-ngx-core-scroll-spy.mjs +7 -7
  762. package/fesm2020/fundamental-ngx-core-scrollbar.mjs +7 -7
  763. package/fesm2020/fundamental-ngx-core-segmented-button.mjs +7 -7
  764. package/fesm2020/fundamental-ngx-core-select.mjs +24 -25
  765. package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  766. package/fesm2020/fundamental-ngx-core-shared.mjs +3 -3
  767. package/fesm2020/fundamental-ngx-core-shellbar.mjs +37 -37
  768. package/fesm2020/fundamental-ngx-core-side-navigation.mjs +13 -13
  769. package/fesm2020/fundamental-ngx-core-skeleton.mjs +7 -7
  770. package/fesm2020/fundamental-ngx-core-slider.mjs +13 -13
  771. package/fesm2020/fundamental-ngx-core-split-button.mjs +13 -13
  772. package/fesm2020/fundamental-ngx-core-splitter.mjs +22 -22
  773. package/fesm2020/fundamental-ngx-core-status-indicator.mjs +7 -7
  774. package/fesm2020/fundamental-ngx-core-step-input.mjs +10 -10
  775. package/fesm2020/fundamental-ngx-core-switch.mjs +10 -10
  776. package/fesm2020/fundamental-ngx-core-table.mjs +55 -55
  777. package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  778. package/fesm2020/fundamental-ngx-core-tabs.mjs +55 -55
  779. package/fesm2020/fundamental-ngx-core-text.mjs +7 -7
  780. package/fesm2020/fundamental-ngx-core-theming.mjs +7 -7
  781. package/fesm2020/fundamental-ngx-core-tile.mjs +103 -103
  782. package/fesm2020/fundamental-ngx-core-time-picker.mjs +10 -10
  783. package/fesm2020/fundamental-ngx-core-time.mjs +16 -16
  784. package/fesm2020/fundamental-ngx-core-timeline.mjs +43 -43
  785. package/fesm2020/fundamental-ngx-core-title.mjs +7 -7
  786. package/fesm2020/fundamental-ngx-core-token.mjs +16 -16
  787. package/fesm2020/fundamental-ngx-core-toolbar.mjs +416 -275
  788. package/fesm2020/fundamental-ngx-core-toolbar.mjs.map +1 -1
  789. package/fesm2020/fundamental-ngx-core-tree.mjs +10 -10
  790. package/fesm2020/fundamental-ngx-core-upload-collection.mjs +37 -37
  791. package/fesm2020/fundamental-ngx-core-vertical-navigation.mjs +13 -13
  792. package/fesm2020/fundamental-ngx-core-wizard.mjs +31 -31
  793. package/fesm2020/fundamental-ngx-core.mjs +4 -4
  794. package/fundamental-ngx-core-v0.40.5.tgz +0 -0
  795. package/grid-list/components/grid-list-title-bar-spacer/grid-list-title-bar-spacer.component.d.ts +2 -2
  796. package/inline-help/inline-help.directive.d.ts +0 -2
  797. package/list/directives/list-navigation-item-arrow.directive.d.ts +0 -6
  798. package/overflow-layout/overflow-layout.service.d.ts +4 -4
  799. package/package.json +4 -4
  800. package/popover/base/base-popover.class.d.ts +0 -4
  801. package/popover/popover-body/popover-body.component.d.ts +0 -4
  802. package/schematics/add-dependencies/index.js +4 -4
  803. package/table/table.module.d.ts +1 -2
  804. package/toolbar/public_api.d.ts +3 -2
  805. package/toolbar/toolbar-item.directive.d.ts +2 -20
  806. package/toolbar/toolbar-overflow-group.directive.d.ts +14 -0
  807. package/toolbar/toolbar-overflow-priority.directive.d.ts +17 -0
  808. package/toolbar/{toolbar-spacer.directive.d.ts → toolbar-spacer.component.d.ts} +3 -3
  809. package/toolbar/toolbar.component.d.ts +70 -33
  810. package/toolbar/toolbar.module.d.ts +9 -8
  811. package/esm2020/toolbar/abstract-toolbar-item.class.mjs +0 -3
  812. package/esm2020/toolbar/toolbar-spacer.directive.mjs +0 -45
  813. package/fundamental-ngx-core-v0.40.4-rc.6.tgz +0 -0
  814. package/toolbar/abstract-toolbar-item.class.d.ts +0 -8
@@ -110,9 +110,9 @@ export class SelectKeyManagerService {
110
110
  }
111
111
  }
112
112
  }
113
- SelectKeyManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectKeyManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
114
- SelectKeyManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectKeyManagerService });
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectKeyManagerService, decorators: [{
113
+ SelectKeyManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectKeyManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
114
+ SelectKeyManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectKeyManagerService });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectKeyManagerService, decorators: [{
116
116
  type: Injectable
117
117
  }] });
118
118
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWtleS1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZWxlY3Qvc2VsZWN0LWtleS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU1uSCxNQUFNLE9BQU8sdUJBQXVCO0lBT2hDOzs7T0FHRztJQUNILGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksMEJBQTBCLENBQW1CLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2FBQ3hGLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDO2FBQ3hELHVCQUF1QixFQUFFO2FBQ3pCLHlCQUF5QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQ25FLHVCQUF1QixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FB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RUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7YUFBTSxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMvRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUI7YUFBTTtZQUNILE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDTCxDQUFDOztvSEF0SFEsdUJBQXVCO3dIQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFVQX0FSUk9XLCBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0UsIEhPTUUsIFRBQiwgRU5ELCBFU0NBUEUsIGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuaW1wb3J0IHsgU2VsZWN0SW50ZXJmYWNlIH0gZnJvbSAnLi9zZWxlY3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9wdGlvbnNJbnRlcmZhY2UgfSBmcm9tICcuL29wdGlvbnMuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlbGVjdEtleU1hbmFnZXJTZXJ2aWNlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb21wb25lbnQ6IFNlbGVjdEludGVyZmFjZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2tleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPE9wdGlvbnNJbnRlcmZhY2U+O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCBhIGtleSBtYW5hZ2VyIHRvIGxpc3RlbiB0byBrZXlib2FyZCBldmVudHMgb24gdGhlIG92ZXJsYXkgcGFuZWwuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9pbml0S2V5TWFuYWdlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxPcHRpb25zSW50ZXJmYWNlPih0aGlzLl9jb21wb25lbnQuX29wdGlvbnMpXG4gICAgICAgICAgICAud2l0aFR5cGVBaGVhZCh0aGlzLl9jb21wb25lbnQudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbClcbiAgICAgICAgICAgIC53aXRoVmVydGljYWxPcmllbnRhdGlvbigpXG4gICAgICAgICAgICAud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0aGlzLl9jb21wb25lbnQuX2lzUnRsKCkgPyAncnRsJyA6ICdsdHInKVxuICAgICAgICAgICAgLndpdGhBbGxvd2VkTW9kaWZpZXJLZXlzKFsnc2hpZnRLZXknXSk7XG5cbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci50YWJPdXQucGlwZSh0YWtlVW50aWwodGhpcy5fY29tcG9uZW50Ll9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIC8vIHRhYiBmb2N1cyBmaXggZm9yIG1vYmlsZVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9jb21wb25lbnQubW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIuY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2NvbXBvbmVudC5fZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29tcG9uZW50Ll9pc09wZW4gJiYgdGhpcy5fY29tcG9uZW50Ll9vcHRpb25QYW5lbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbEFjdGl2ZU9wdGlvbkludG9WaWV3KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9jb21wb25lbnQuX2lzT3BlbiAmJiB0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Njcm9sbEFjdGl2ZU9wdGlvbkludG9WaWV3KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVPcHRpb25JbmRleCA9IHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4IHx8IDA7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudC5fb3B0aW9uUGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLl9jb21wb25lbnQuX2dldE9wdGlvblNjcm9sbFBvc2l0aW9uKFxuICAgICAgICAgICAgYWN0aXZlT3B0aW9uSW5kZXgsXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnQuX2dldEl0ZW1IZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudC5fb3B0aW9uUGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3BcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50cyB3aGlsZSB0aGUgc2VsZWN0IGlzIGNsb3NlZC5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2hhbmRsZUNsb3NlZEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNPcGVuS2V5ID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKTtcbiAgICAgICAgY29uc3QgbWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXI7XG5cbiAgICAgICAgLy8gT3BlbiB0aGUgc2VsZWN0IG9uIEFMVCArIGFycm93IGtleSB0byBtYXRjaCB0aGUgbmF0aXZlIDxzZWxlY3Q+XG4gICAgICAgIGlmICghbWFuYWdlci5pc1R5cGluZygpICYmIGlzT3BlbktleSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50cyB0aGUgcGFnZSBmcm9tIHNjcm9sbGluZyBkb3duIHdoZW4gcHJlc3Npbmcgc3BhY2VcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnQub3BlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNseVNlbGVjdGVkT3B0aW9uID0gdGhpcy5fY29tcG9uZW50LnNlbGVjdGVkO1xuXG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtIT01FLCBFTkRdKSkge1xuICAgICAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgSE9NRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLnNldExhc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5fY29tcG9uZW50LnNlbGVjdGVkO1xuXG4gICAgICAgICAgICAvLyBhMTF5IFNpbmNlIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZCwgd2UgbmVlZCB0byBhbm5vdW5jZSBpdC5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbiAmJiBwcmV2aW91c2x5U2VsZWN0ZWRPcHRpb24gIT09IHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50Ll9saXZlQW5ub3VuY2VyLmFubm91bmNlKChzZWxlY3RlZE9wdGlvbiBhcyBPcHRpb25zSW50ZXJmYWNlKS52aWV3VmFsdWUsIDEwMDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMga2V5Ym9hcmQgZXZlbnRzIHdoZW4gdGhlIHNlbGVjdGVkIGlzIG9wZW4uXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2hhbmRsZU9wZW5LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyO1xuICAgICAgICBjb25zdCBpc0Fycm93S2V5ID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtVUF9BUlJPVywgRE9XTl9BUlJPV10pO1xuICAgICAgICBjb25zdCBpc1R5cGluZyA9IG1hbmFnZXIuaXNUeXBpbmcoKTtcblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtIT01FLCBFTkRdKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgSE9NRSkpIHtcbiAgICAgICAgICAgICAgICBtYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYW5hZ2VyLnNldExhc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoKGlzQXJyb3dLZXkgJiYgZXZlbnQuYWx0S2V5KSB8fCBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VTQ0FQRV0pKSB7XG4gICAgICAgICAgICAvLyBDbG9zZSB0aGUgc2VsZWN0IG9uIEFMVCArIGFycm93IGtleSB0byBtYXRjaCB0aGUgbmF0aXZlIDxzZWxlY3Q+XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50LmJsdXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudC5jbG9zZSgpO1xuICAgICAgICAgICAgLy8gV2hlbiB1c2VyIGlzIHR5cGluZyBkbyBub3RoaW5nLFxuICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgdHlwaW5nIHNlcXVlbmNlIGNhbiBpbmNsdWRlIHRoZSBzcGFjZSBrZXkuXG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAhaXNUeXBpbmcgJiZcbiAgICAgICAgICAgIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkgJiZcbiAgICAgICAgICAgIG1hbmFnZXIuYWN0aXZlSXRlbSAmJlxuICAgICAgICAgICAgIWhhc01vZGlmaWVyS2V5KGV2ZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBtYW5hZ2VyLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnQuYmx1cigpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc1R5cGluZyAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1RBQl0pICYmIHRoaXMuX2NvbXBvbmVudC5tb2JpbGUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -77,9 +77,9 @@ export class SelectMobileComponent extends MobileModeBase {
77
77
  });
78
78
  }
79
79
  }
80
- SelectMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectMobileComponent, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }, { token: SELECT_COMPONENT }, { token: MOBILE_MODE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
81
- SelectMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: SelectMobileComponent, selector: "fd-select-mobile", host: { listeners: { "keydown": "onItemKeydown($event)" } }, viewQueries: [{ propertyName: "_dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog tabindex=\"-1\" [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header\" *ngIf=\"mobileConfig.title\" fd-title>{{ mobileConfig.title }}</h1>\n <button\n role=\"button\"\n *ngIf=\"mobileConfig.hasCloseButton\"\n aria-label=\"close\"\n fd-dialog-close-button\n [mobile]=\"true\"\n (click)=\"_cancel()\"\n ></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"mobileConfig.approveButtonText || mobileConfig.cancelButtonText\">\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"_approve()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"_cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\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: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectMobileComponent, decorators: [{
80
+ SelectMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectMobileComponent, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }, { token: SELECT_COMPONENT }, { token: MOBILE_MODE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
81
+ SelectMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: SelectMobileComponent, selector: "fd-select-mobile", host: { listeners: { "keydown": "onItemKeydown($event)" } }, viewQueries: [{ propertyName: "_dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog tabindex=\"-1\" [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header\" *ngIf=\"mobileConfig.title\" fd-title>{{ mobileConfig.title }}</h1>\n <button\n role=\"button\"\n *ngIf=\"mobileConfig.hasCloseButton\"\n aria-label=\"close\"\n fd-dialog-close-button\n [mobile]=\"true\"\n (click)=\"_cancel()\"\n ></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"mobileConfig.approveButtonText || mobileConfig.cancelButtonText\">\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"_approve()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"_cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\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: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectMobileComponent, decorators: [{
83
83
  type: Component,
84
84
  args: [{ selector: 'fd-select-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog tabindex=\"-1\" [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header\" *ngIf=\"mobileConfig.title\" fd-title>{{ mobileConfig.title }}</h1>\n <button\n role=\"button\"\n *ngIf=\"mobileConfig.hasCloseButton\"\n aria-label=\"close\"\n fd-dialog-close-button\n [mobile]=\"true\"\n (click)=\"_cancel()\"\n ></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"mobileConfig.approveButtonText || mobileConfig.cancelButtonText\">\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"_approve()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"_cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n" }]
85
85
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DialogService }, { type: undefined, decorators: [{
@@ -7,10 +7,10 @@ import { SelectMobileComponent } from './select-mobile.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export class SelectMobileModule {
9
9
  }
10
- SelectMobileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- SelectMobileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: SelectMobileModule, declarations: [SelectMobileComponent], imports: [CommonModule, DialogModule, ButtonModule], exports: [SelectMobileComponent] });
12
- SelectMobileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectMobileModule, providers: [DynamicComponentService], imports: [CommonModule, DialogModule, ButtonModule] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectMobileModule, decorators: [{
10
+ SelectMobileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ SelectMobileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: SelectMobileModule, declarations: [SelectMobileComponent], imports: [CommonModule, DialogModule, ButtonModule], exports: [SelectMobileComponent] });
12
+ SelectMobileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectMobileModule, providers: [DynamicComponentService], imports: [CommonModule, DialogModule, ButtonModule] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectMobileModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  declarations: [SelectMobileComponent],
@@ -12,7 +12,7 @@ import { OptionComponent } from './option/option.component';
12
12
  import { SelectMobileComponent } from './select-mobile/select-mobile.component';
13
13
  import { SelectMobileModule } from './select-mobile/select-mobile.module';
14
14
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
15
- import { ENTER, ESCAPE, SPACE } from '@angular/cdk/keycodes';
15
+ import { ESCAPE } from '@angular/cdk/keycodes';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from "@fundamental-ngx/cdk/utils";
18
18
  import * as i2 from "./select-key-manager.service";
@@ -414,7 +414,7 @@ export class SelectComponent {
414
414
  ? this._keyManagerService._handleOpenKeydown(event)
415
415
  : this._keyManagerService._handleClosedKeydown(event);
416
416
  }
417
- if (KeyUtil.isKeyCode(event, [ESCAPE, ENTER, SPACE])) {
417
+ if (KeyUtil.isKeyCode(event, ESCAPE)) {
418
418
  this._controlElementRef.nativeElement.focus();
419
419
  }
420
420
  }
@@ -450,7 +450,6 @@ export class SelectComponent {
450
450
  if (event.isUserInput && this._isOpen) {
451
451
  this.close();
452
452
  }
453
- this.focus();
454
453
  });
455
454
  // Listen to changes in the internal state of the _options and react accordingly.
456
455
  // Handles cases like the labels of the selected _options changing.
@@ -518,8 +517,8 @@ export class SelectComponent {
518
517
  await this._dynamicComponentService.createDynamicModule(this.selectOptionsListTemplate, SelectMobileModule, SelectMobileComponent, this._viewContainerRef, injector);
519
518
  }
520
519
  }
521
- SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectComponent, deps: [{ token: 'tabindex', attribute: true }, { token: i1.RtlService, optional: true }, { token: i2.SelectKeyManagerService }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }, { token: i1.DynamicComponentService, optional: true }, { token: i3.NgControl, optional: true, self: true }, { token: i0.Injector, optional: true }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component });
522
- SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: SelectComponent, selector: "fd-select", inputs: { controlId: "controlId", state: "state", mobile: "mobile", stateMessage: "stateMessage", disabled: "disabled", required: "required", readonly: "readonly", placeholder: "placeholder", value: "value", extendedBodyTemplate: "extendedBodyTemplate", maxHeight: "maxHeight", glyph: "glyph", closeOnOutsideClick: "closeOnOutsideClick", fillControlMode: "fillControlMode", controlTemplate: "controlTemplate", appendTo: "appendTo", unselectMissingOption: "unselectMissingOption", typeaheadDebounceInterval: "typeaheadDebounceInterval", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", mobileConfig: "mobileConfig", inline: "inline", selectControlClass: "selectControlClass", selectDropdownButtonClass: "selectDropdownButtonClass", compareWith: "compareWith" }, outputs: { isOpenChange: "isOpenChange", valueChange: "valueChange" }, host: { listeners: { "window:resize": "_resizeScrollHandler()", "click": "toggle()", "keydown": "_handleKeydown($event)" }, properties: { "class.fd-select--inline": "inline", "class.fd-select-custom-class": "inline", "class.fd-select-custom-class--mobile": "mobile" }, classAttribute: "fd-select" }, providers: [
520
+ SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectComponent, deps: [{ token: 'tabindex', attribute: true }, { token: i1.RtlService, optional: true }, { token: i2.SelectKeyManagerService }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }, { token: i1.DynamicComponentService, optional: true }, { token: i3.NgControl, optional: true, self: true }, { token: i0.Injector, optional: true }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component });
521
+ SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: SelectComponent, selector: "fd-select", inputs: { controlId: "controlId", state: "state", mobile: "mobile", stateMessage: "stateMessage", disabled: "disabled", required: "required", readonly: "readonly", placeholder: "placeholder", value: "value", extendedBodyTemplate: "extendedBodyTemplate", maxHeight: "maxHeight", glyph: "glyph", closeOnOutsideClick: "closeOnOutsideClick", fillControlMode: "fillControlMode", controlTemplate: "controlTemplate", appendTo: "appendTo", unselectMissingOption: "unselectMissingOption", typeaheadDebounceInterval: "typeaheadDebounceInterval", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", mobileConfig: "mobileConfig", inline: "inline", selectControlClass: "selectControlClass", selectDropdownButtonClass: "selectDropdownButtonClass", compareWith: "compareWith" }, outputs: { isOpenChange: "isOpenChange", valueChange: "valueChange" }, host: { listeners: { "window:resize": "_resizeScrollHandler()", "click": "toggle()", "keydown": "_handleKeydown($event)" }, properties: { "class.fd-select--inline": "inline", "class.fd-select-custom-class": "inline", "class.fd-select-custom-class--mobile": "mobile" }, classAttribute: "fd-select" }, providers: [
523
522
  {
524
523
  provide: SELECT_COMPONENT,
525
524
  useExisting: SelectComponent
@@ -528,7 +527,7 @@ SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
528
527
  SelectKeyManagerService,
529
528
  contentDensityObserverProviders()
530
529
  ], queries: [{ propertyName: "_options", predicate: OptionComponent, descendants: true }], viewQueries: [{ propertyName: "_controlElementRef", first: true, predicate: ["selectControl"], descendants: true }, { propertyName: "selectOptionsListTemplate", first: true, predicate: ["selectOptionsListTemplate"], descendants: true }, { propertyName: "_dialogContainerElementRef", first: true, predicate: ["dialogContainer"], descendants: true }, { propertyName: "_overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "_optionPanel", first: true, predicate: ["optionPanel"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <!-- @deprecated leaving class fd-popover-custom-list to support backwards compatibility-->\n <fd-popover\n additionalBodyClass=\"fd-select-dropdown fd-popover-custom-list\"\n [isOpen]=\"_isOpen\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [disabled]=\"disabled || readonly\"\n [appendTo]=\"appendTo\"\n [closeOnEscapeKey]=\"true\"\n [fillControlMode]=\"fillControlMode\"\n [maxWidth]=\"600\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n >\n <fd-popover-control>\n <ng-container [ngTemplateOutlet]=\"selectInputControlTemplate\"></ng-container>\n </fd-popover-control>\n\n <!-- @deprecated leaving class fd-popover-custom-select-body to support backwards compatibility-->\n <fd-popover-body class=\"fd-popover-custom-select-body\">\n <ng-container [ngTemplateOutlet]=\"selectOptionsListTemplate\"></ng-container>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #selectInputControlTemplate>\n <div\n class=\"fd-select__control\"\n role=\"list\"\n #selectControl\n [class]=\"_selectControlClass\"\n [class.is-active]=\"_isOpen\"\n [class.is-expanded]=\"_isOpen\"\n [class.is-disabled]=\"disabled\"\n [class.is-readonly]=\"readonly\"\n [attr.tabindex]=\"_tabIndex\"\n [attr.id]=\"controlId\"\n [attr.aria-active]=\"_isOpen\"\n aria-live=\"polite\"\n [attr.aria-selected]=\"selected ? selected.selected : null\"\n [attr.aria-expanded]=\"_isOpen\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-controls]=\"controlId + '-list-box'\"\n [attr.aria-haspopup]=\"!(this.readonly || this.disabled)\"\n [attr.aria-required]=\"required\"\n [attr.title]=\"triggerValue\"\n [attr.aria-label]=\"ariaLabel || ('platformSelect.selectOptionLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-activedescendant]=\"_getAriaActiveDescendant()\"\n (focus)=\"_onFocus()\"\n (blur)=\"_onBlur()\"\n >\n <div role=\"listitem\" class=\"fd-select__text-content\" [attr.aria-label]=\"triggerValue\">\n <ng-container\n [ngTemplateOutlet]=\"controlTemplate ? controlTemplate : defaultSelectContent\"\n [ngTemplateOutletContext]=\"{ $implicit: triggerValue, selected: selected }\"\n >\n </ng-container>\n\n <ng-template #defaultSelectContent>\n {{ triggerValue }}\n </ng-template>\n </div>\n <span\n class=\"fd-button fd-button--transparent fd-select__button\"\n [ngClass]=\"selectDropdownButtonClass\"\n [class.is-disabled]=\"disabled\"\n *ngIf=\"!readonly\"\n >\n <fd-icon [glyph]=\"glyph\"></fd-icon>\n </span>\n <!-- <button-->\n <!-- fd-button-->\n <!-- tabindex=\"-1\"-->\n <!-- class=\"fd-button&#45;&#45;transparent fd-select__button {{ selectDropdownButtonClass }}\"-->\n <!-- (click)=\"_buttonClick()\"-->\n <!-- *ngIf=\"!readonly\"-->\n <!-- [disabled]=\"disabled\"-->\n <!-- [glyph]=\"glyph\"-->\n <!-- ></button>-->\n </div>\n</ng-template>\n\n<ng-template #selectOptionsListTemplate>\n <ul\n #optionPanel\n fd-list\n class=\"fd-select-options\"\n role=\"listbox\"\n tabindex=\"-1\"\n [mobileMode]=\"mobile\"\n [dropdownMode]=\"true\"\n [hasMessage]=\"!!stateMessage\"\n [attr.id]=\"controlId + '-list-box'\"\n [style.max-height]=\"maxHeight || calculatedMaxHeight + 'px'\"\n [attr.tooltip]=\"triggerValue\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <ng-content></ng-content>\n </ul>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"selectInputControlTemplate\"></ng-container>\n\n <div #dialogContainer></div>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-select{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:.25rem 0;padding:0;text-shadow:var(--fdSelect_Text_Shadow)}.fd-select:after,.fd-select:before{box-sizing:inherit;font-size:inherit}.fd-select__control{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-moz-appearance:none;-webkit-appearance:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;appearance:none;background:var(--fdSelect_Background, var(--sapField_BackgroundStyle));background-color:var(--fdSelect_Background_Color, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.25rem;justify-content:center;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;min-height:2.25rem;min-width:var(--fdSelect_Min_Width, 2.75rem);outline:none;overflow:hidden;padding:0;text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-select__control:after,.fd-select__control:before{box-sizing:inherit;font-size:inherit}.fd-select__control::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-select__control[dir=rtl]::placeholder,[dir=rtl] .fd-select__control::placeholder{text-indent:.125rem}.fd-select__control::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-select__control::-ms-clear{display:none}.fd-select__control.is-hover,.fd-select__control:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--fdSelect_Hover_Background, var(--sapField_Hover_BackgroundStyle));background-color:var(--fdSelect_Hover_Background_Color, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-select__control.is-focus,.fd-select__control:focus{-webkit-box-shadow:none;background:var(--fdSelect_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-select__control.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-select__control.is-success.is-hover,.fd-select__control.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-select__control.is-success.is-focus,.fd-select__control.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-select__control.is-success.is-focus.is-hover,.fd-select__control.is-success.is-focus:hover,.fd-select__control.is-success:focus.is-hover,.fd-select__control.is-success:focus:hover{box-shadow:none}.fd-select__control.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-select__control.is-error.is-hover,.fd-select__control.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-select__control.is-error.is-focus,.fd-select__control.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-select__control.is-error.is-focus.is-hover,.fd-select__control.is-error.is-focus:hover,.fd-select__control.is-error:focus.is-hover,.fd-select__control.is-error:focus:hover{box-shadow:none}.fd-select__control.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-select__control.is-warning.is-hover,.fd-select__control.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-select__control.is-warning.is-focus,.fd-select__control.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-select__control.is-warning.is-focus.is-hover,.fd-select__control.is-warning.is-focus:hover,.fd-select__control.is-warning:focus.is-hover,.fd-select__control.is-warning:focus:hover{box-shadow:none}.fd-select__control.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-select__control.is-alert.is-hover,.fd-select__control.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-select__control.is-alert.is-focus,.fd-select__control.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-select__control.is-alert.is-focus.is-hover,.fd-select__control.is-alert.is-focus:hover,.fd-select__control.is-alert:focus.is-hover,.fd-select__control.is-alert:focus:hover{box-shadow:none}.fd-select__control.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-select__control.is-information.is-hover,.fd-select__control.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-select__control.is-information.is-focus,.fd-select__control.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-select__control.is-information.is-focus.is-hover,.fd-select__control.is-information.is-focus:hover,.fd-select__control.is-information:focus.is-hover,.fd-select__control.is-information:focus:hover{box-shadow:none}.fd-select__control.is-alert,.fd-select__control.is-error,.fd-select__control.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-select__control.is-alert::placeholder,.fd-select__control.is-error::placeholder,.fd-select__control.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-select__control.is-alert.is-focus,.fd-select__control.is-alert:focus,.fd-select__control.is-error.is-focus,.fd-select__control.is-error:focus,.fd-select__control.is-information.is-focus,.fd-select__control.is-information:focus,.fd-select__control.is-warning.is-focus,.fd-select__control.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-select__control.is-error::placeholder{color:var(--sapField_TextColor)}.fd-select__control.is-disabled,.fd-select__control:disabled,.fd-select__control[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity)}.fd-select__control.is-disabled::placeholder,.fd-select__control:disabled::placeholder,.fd-select__control[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-select__control.is-readonly,.fd-select__control[aria-readonly=true],.fd-select__control[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius)}.fd-select__control.is-readonly::placeholder,.fd-select__control[aria-readonly=true]::placeholder,.fd-select__control[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-select__control.is-readonly.is-hover,.fd-select__control.is-readonly:hover,.fd-select__control[aria-readonly=true].is-hover,.fd-select__control[aria-readonly=true]:hover,.fd-select__control[readonly].is-hover,.fd-select__control[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);box-shadow:none}.fd-select__control.is-readonly.is-focus,.fd-select__control.is-readonly:focus,.fd-select__control[aria-readonly=true].is-focus,.fd-select__control[aria-readonly=true]:focus,.fd-select__control[readonly].is-focus,.fd-select__control[readonly]:focus{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);z-index:5}.fd-select__control .fd-select__button:first-child{border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-select__control .fd-select__button:first-child[dir=rtl],[dir=rtl] .fd-select__control .fd-select__button:first-child{border-left:var(--fdInputGroup_ControlButton_SideBorder);border-right-style:none}.fd-select__control .fd-select__button:first-child.is-hover,.fd-select__control .fd-select__button:first-child:hover{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__button:first-child.is-hover[dir=rtl],.fd-select__control .fd-select__button:first-child:hover[dir=rtl],[dir=rtl] .fd-select__control .fd-select__button:first-child.is-hover,[dir=rtl] .fd-select__control .fd-select__button:first-child:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-select__control .fd-select__button:first-child.is-active,.fd-select__control .fd-select__button:first-child:active{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__button:first-child.is-active[dir=rtl],.fd-select__control .fd-select__button:first-child:active[dir=rtl],[dir=rtl] .fd-select__control .fd-select__button:first-child.is-active,[dir=rtl] .fd-select__control .fd-select__button:first-child:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-select__control .fd-select__button:not(:first-child){border-left:var(--fdInputGroup_ControlButton_SideBorder)}.fd-select__control .fd-select__button:not(:first-child)[dir=rtl],[dir=rtl] .fd-select__control .fd-select__button:not(:first-child){border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-select__control .fd-select__button:not(:first-child).is-hover,.fd-select__control .fd-select__button:not(:first-child):hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__button:not(:first-child).is-hover[dir=rtl],.fd-select__control .fd-select__button:not(:first-child):hover[dir=rtl],[dir=rtl] .fd-select__control .fd-select__button:not(:first-child).is-hover,[dir=rtl] .fd-select__control .fd-select__button:not(:first-child):hover{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__button:not(:first-child).is-active,.fd-select__control .fd-select__button:not(:first-child):active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__button:not(:first-child).is-active[dir=rtl],.fd-select__control .fd-select__button:not(:first-child):active[dir=rtl],[dir=rtl] .fd-select__control .fd-select__button:not(:first-child).is-active,[dir=rtl] .fd-select__control .fd-select__button:not(:first-child):active{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__addon:first-child .fd-select__button{border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-select__control .fd-select__addon:first-child .fd-select__button[dir=rtl],[dir=rtl] .fd-select__control .fd-select__addon:first-child .fd-select__button{border-left:var(--fdInputGroup_ControlButton_SideBorder);border-right-style:none}.fd-select__control .fd-select__addon:first-child .fd-select__button.is-hover,.fd-select__control .fd-select__addon:first-child .fd-select__button:hover{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__addon:first-child .fd-select__button.is-hover[dir=rtl],.fd-select__control .fd-select__addon:first-child .fd-select__button:hover[dir=rtl],[dir=rtl] .fd-select__control .fd-select__addon:first-child .fd-select__button.is-hover,[dir=rtl] .fd-select__control .fd-select__addon:first-child .fd-select__button:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-select__control .fd-select__addon:first-child .fd-select__button.is-active,.fd-select__control .fd-select__addon:first-child .fd-select__button:active{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__addon:first-child .fd-select__button.is-active[dir=rtl],.fd-select__control .fd-select__addon:first-child .fd-select__button:active[dir=rtl],[dir=rtl] .fd-select__control .fd-select__addon:first-child .fd-select__button.is-active,[dir=rtl] .fd-select__control .fd-select__addon:first-child .fd-select__button:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button{border-left:var(--fdInputGroup_ControlButton_SideBorder)}.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button[dir=rtl],[dir=rtl] .fd-select__control .fd-select__addon:not(:first-child) .fd-select__button{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button.is-hover,.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button.is-hover[dir=rtl],.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button:hover[dir=rtl],[dir=rtl] .fd-select__control .fd-select__addon:not(:first-child) .fd-select__button.is-hover,[dir=rtl] .fd-select__control .fd-select__addon:not(:first-child) .fd-select__button:hover{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button.is-active,.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button.is-active[dir=rtl],.fd-select__control .fd-select__addon:not(:first-child) .fd-select__button:active[dir=rtl],[dir=rtl] .fd-select__control .fd-select__addon:not(:first-child) .fd-select__button.is-active,[dir=rtl] .fd-select__control .fd-select__addon:not(:first-child) .fd-select__button:active{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-select__control .fd-select__button{background:var(--fdInput_Group_Button_Background);border:none;border-radius:var(--fdInput_Group_Button_Border_Raduis);color:var(--fdInput_Group_Button_Text_Color);overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:auto!important}.fd-select__control .fd-select__button:before{display:none!important}.fd-select__control .fd-select__button.is-hover,.fd-select__control .fd-select__button:hover{--fdInput_Group_Button_Text_Color:var(--fdInput_Group_Button_Hover_Text_Color);-webkit-box-shadow:var(--fdInput_Group_Button_Box_Shadow);background:var(--fdInput_Group_Button_Hover_Background);box-shadow:var(--fdInput_Group_Button_Box_Shadow)}.fd-select__control .fd-select__button.is-active,.fd-select__control .fd-select__button:active{-webkit-box-shadow:var(--fdInput_Group_Button_Box_Shadow);background:var(--fdInput_Group_Button_Active_Background);box-shadow:var(--fdInput_Group_Button_Box_Shadow);color:var(--fdInput_Group_Button_Active_Text_Color)}.fd-select__control.is-success .fd-select__button.is-active,.fd-select__control.is-success .fd-select__button.is-hover,.fd-select__control.is-success .fd-select__button:active,.fd-select__control.is-success .fd-select__button:hover{box-shadow:var(--fdInput_Group_Button_Success_Active_Box_Shadow)}.fd-select__control.is-success .fd-select__button.is-active,.fd-select__control.is-success .fd-select__button:active{color:var(--fdInput_Group_Button_Success_Active_Text_Color)}.fd-select__control.is-error .fd-select__button.is-active,.fd-select__control.is-error .fd-select__button.is-hover,.fd-select__control.is-error .fd-select__button:active,.fd-select__control.is-error .fd-select__button:hover{box-shadow:var(--fdInput_Group_Button_Error_Active_Box_Shadow)}.fd-select__control.is-error .fd-select__button.is-active,.fd-select__control.is-error .fd-select__button:active{color:var(--fdInput_Group_Button_Error_Active_Text_Color)}.fd-select__control.is-warning .fd-select__button.is-active,.fd-select__control.is-warning .fd-select__button.is-hover,.fd-select__control.is-warning .fd-select__button:active,.fd-select__control.is-warning .fd-select__button:hover{box-shadow:var(--fdInput_Group_Button_Warning_Active_Box_Shadow)}.fd-select__control.is-warning .fd-select__button.is-active,.fd-select__control.is-warning .fd-select__button:active{color:var(--fdInput_Group_Button_Warning_Active_Text_Color)}.fd-select__control.is-alert .fd-select__button.is-active,.fd-select__control.is-alert .fd-select__button.is-hover,.fd-select__control.is-alert .fd-select__button:active,.fd-select__control.is-alert .fd-select__button:hover{box-shadow:var(--fdInput_Group_Button_Warning_Active_Box_Shadow)}.fd-select__control.is-alert .fd-select__button.is-active,.fd-select__control.is-alert .fd-select__button:active{color:var(--fdInput_Group_Button_Warning_Active_Text_Color)}.fd-select__control.is-information .fd-select__button.is-active,.fd-select__control.is-information .fd-select__button.is-hover,.fd-select__control.is-information .fd-select__button:active,.fd-select__control.is-information .fd-select__button:hover{box-shadow:var(--fdInput_Group_Button_Information_Active_Box_Shadow)}.fd-select__control.is-information .fd-select__button.is-active,.fd-select__control.is-information .fd-select__button:active{color:var(--fdInput_Group_Button_Information_Active_Text_Color)}.fd-select__control.is-disabled,.fd-select__control:disabled,.fd-select__control[aria-disabled=true]{pointer-events:none}.fd-select__control .fd-select__button{height:100%;margin-left:.25rem}.fd-select__control .fd-select__button[dir=rtl],[dir=rtl] .fd-select__control .fd-select__button{margin-left:0;margin-right:.25rem}.fd-select__control.is-readonly,.fd-select__control[aria-readonly=true],.fd-select__control[readonly]{cursor:text}.fd-select__control.is-readonly .fd-select__text-content,.fd-select__control[aria-readonly=true] .fd-select__text-content,.fd-select__control[readonly] .fd-select__text-content{--fdSelect_Min_Width:5rem;padding-left:.625rem;padding-right:.625rem}.fd-select__control.is-expanded,.fd-select__control[aria-expanded=true]{box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-select__control.is-expanded .fd-select__button,.fd-select__control[aria-expanded=true] .fd-select__button{--fdInput_Group_Button_Text_Color:var(--sapButton_Active_TextColor);--fdInput_Group_Button_Background:var(--sapField_BackgroundStyle);-webkit-box-shadow:var(--fdInput_Group_Button_Box_Shadow);background-color:var(--sapButton_Selected_Background);border-left-color:var(--fdSelect_Expanded_Button_Border_Left_Color);box-shadow:var(--fdInput_Group_Button_Box_Shadow)}.fd-select__control.is-expanded[dir=rtl] .fd-select__button,.fd-select__control[aria-expanded=true][dir=rtl] .fd-select__button,[dir=rtl] .fd-select__control.is-expanded .fd-select__button,[dir=rtl] .fd-select__control[aria-expanded=true] .fd-select__button{border-left-color:transparent;border-right-color:var(--fdSelect_Expanded_Button_Border_Left_Color)}.fd-select__control.is-expanded.is-focus,.fd-select__control.is-expanded:focus,.fd-select__control[aria-expanded=true].is-focus,.fd-select__control[aria-expanded=true]:focus{box-shadow:none;z-index:5}.fd-select__control.is-expanded.is-hover .fd-select__button,.fd-select__control.is-expanded:hover .fd-select__button,.fd-select__control[aria-expanded=true].is-hover .fd-select__button,.fd-select__control[aria-expanded=true]:hover .fd-select__button{--fdInput_Group_Button_Text_Color:var(--sapButton_Active_TextColor);--fdInput_Group_Button_Background:var(--sapField_BackgroundStyle);-webkit-box-shadow:var(--fdInput_Group_Button_Box_Shadow);background-color:var(--sapButton_Selected_Hover_Background);border-left-color:var(--fdSelect_Expanded_Button_Border_Left_Color_Hover);box-shadow:var(--fdInput_Group_Button_Box_Shadow)}.fd-select__control.is-expanded.is-hover[dir=rtl] .fd-select__button,.fd-select__control.is-expanded:hover[dir=rtl] .fd-select__button,.fd-select__control[aria-expanded=true].is-hover[dir=rtl] .fd-select__button,.fd-select__control[aria-expanded=true]:hover[dir=rtl] .fd-select__button,[dir=rtl] .fd-select__control.is-expanded.is-hover .fd-select__button,[dir=rtl] .fd-select__control.is-expanded:hover .fd-select__button,[dir=rtl] .fd-select__control[aria-expanded=true].is-hover .fd-select__button,[dir=rtl] .fd-select__control[aria-expanded=true]:hover .fd-select__button{border-left-color:transparent;border-right-color:var(--fdSelect_Expanded_Button_Border_Left_Color_Hover)}.fd-select__control.is-success.is-expanded,.fd-select__control.is-success[aria-expanded=true]{box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-select__control.is-success.is-expanded .fd-select__button,.fd-select__control.is-success[aria-expanded=true] .fd-select__button{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapButton_Selected_Background);border-left-color:var(--fdSelect_Expanded_Button_Border_Left_Color);box-shadow:var(--fdInput_Success_Box_Shadow_Hover);color:var(--fdInput_Group_Button_Success_Active_Text_Color)}.fd-select__control.is-success.is-expanded .fd-select__button.is-hover,.fd-select__control.is-success.is-expanded .fd-select__button:hover,.fd-select__control.is-success[aria-expanded=true] .fd-select__button.is-hover,.fd-select__control.is-success[aria-expanded=true] .fd-select__button:hover{color:var(--fdInput_Group_Button_Text_Color)}.fd-select__control.is-success.is-expanded[dir=rtl] .fd-select__button,.fd-select__control.is-success[aria-expanded=true][dir=rtl] .fd-select__button,[dir=rtl] .fd-select__control.is-success.is-expanded .fd-select__button,[dir=rtl] .fd-select__control.is-success[aria-expanded=true] .fd-select__button{border-left-color:transparent;border-right-color:var(--fdSelect_Expanded_Button_Border_Left_Color)}.fd-select__control.is-success.is-expanded.is-focus,.fd-select__control.is-success.is-expanded:focus,.fd-select__control.is-success[aria-expanded=true].is-focus,.fd-select__control.is-success[aria-expanded=true]:focus{box-shadow:none;z-index:5}.fd-select__control.is-error.is-expanded,.fd-select__control.is-error[aria-expanded=true]{box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-select__control.is-error.is-expanded .fd-select__button,.fd-select__control.is-error[aria-expanded=true] .fd-select__button{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapButton_Selected_Background);border-left-color:var(--fdSelect_Expanded_Button_Border_Left_Color);box-shadow:var(--fdInput_Error_Box_Shadow_Hover);color:var(--fdInput_Group_Button_Error_Active_Text_Color)}.fd-select__control.is-error.is-expanded .fd-select__button.is-hover,.fd-select__control.is-error.is-expanded .fd-select__button:hover,.fd-select__control.is-error[aria-expanded=true] .fd-select__button.is-hover,.fd-select__control.is-error[aria-expanded=true] .fd-select__button:hover{color:var(--fdInput_Group_Button_Text_Color)}.fd-select__control.is-error.is-expanded[dir=rtl] .fd-select__button,.fd-select__control.is-error[aria-expanded=true][dir=rtl] .fd-select__button,[dir=rtl] .fd-select__control.is-error.is-expanded .fd-select__button,[dir=rtl] .fd-select__control.is-error[aria-expanded=true] .fd-select__button{border-left-color:transparent;border-right-color:var(--fdSelect_Expanded_Button_Border_Left_Color)}.fd-select__control.is-error.is-expanded.is-focus,.fd-select__control.is-error.is-expanded:focus,.fd-select__control.is-error[aria-expanded=true].is-focus,.fd-select__control.is-error[aria-expanded=true]:focus{box-shadow:none;z-index:5}.fd-select__control.is-warning.is-expanded,.fd-select__control.is-warning[aria-expanded=true]{box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-select__control.is-warning.is-expanded .fd-select__button,.fd-select__control.is-warning[aria-expanded=true] .fd-select__button{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapButton_Selected_Background);border-left-color:var(--fdSelect_Expanded_Button_Border_Left_Color);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);color:var(--fdInput_Group_Button_Warning_Active_Text_Color)}.fd-select__control.is-warning.is-expanded .fd-select__button.is-hover,.fd-select__control.is-warning.is-expanded .fd-select__button:hover,.fd-select__control.is-warning[aria-expanded=true] .fd-select__button.is-hover,.fd-select__control.is-warning[aria-expanded=true] .fd-select__button:hover{color:var(--fdInput_Group_Button_Text_Color)}.fd-select__control.is-warning.is-expanded[dir=rtl] .fd-select__button,.fd-select__control.is-warning[aria-expanded=true][dir=rtl] .fd-select__button,[dir=rtl] .fd-select__control.is-warning.is-expanded .fd-select__button,[dir=rtl] .fd-select__control.is-warning[aria-expanded=true] .fd-select__button{border-left-color:transparent;border-right-color:var(--fdSelect_Expanded_Button_Border_Left_Color)}.fd-select__control.is-warning.is-expanded.is-focus,.fd-select__control.is-warning.is-expanded:focus,.fd-select__control.is-warning[aria-expanded=true].is-focus,.fd-select__control.is-warning[aria-expanded=true]:focus{box-shadow:none;z-index:5}.fd-select__control.is-alert.is-expanded,.fd-select__control.is-alert[aria-expanded=true]{box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-select__control.is-alert.is-expanded .fd-select__button,.fd-select__control.is-alert[aria-expanded=true] .fd-select__button{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapButton_Selected_Background);border-left-color:var(--fdSelect_Expanded_Button_Border_Left_Color);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);color:var(--fdInput_Group_Button_Warning_Active_Text_Color)}.fd-select__control.is-alert.is-expanded .fd-select__button.is-hover,.fd-select__control.is-alert.is-expanded .fd-select__button:hover,.fd-select__control.is-alert[aria-expanded=true] .fd-select__button.is-hover,.fd-select__control.is-alert[aria-expanded=true] .fd-select__button:hover{color:var(--fdInput_Group_Button_Text_Color)}.fd-select__control.is-alert.is-expanded[dir=rtl] .fd-select__button,.fd-select__control.is-alert[aria-expanded=true][dir=rtl] .fd-select__button,[dir=rtl] .fd-select__control.is-alert.is-expanded .fd-select__button,[dir=rtl] .fd-select__control.is-alert[aria-expanded=true] .fd-select__button{border-left-color:transparent;border-right-color:var(--fdSelect_Expanded_Button_Border_Left_Color)}.fd-select__control.is-alert.is-expanded.is-focus,.fd-select__control.is-alert.is-expanded:focus,.fd-select__control.is-alert[aria-expanded=true].is-focus,.fd-select__control.is-alert[aria-expanded=true]:focus{box-shadow:none;z-index:5}.fd-select__control.is-information.is-expanded,.fd-select__control.is-information[aria-expanded=true]{box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-select__control.is-information.is-expanded .fd-select__button,.fd-select__control.is-information[aria-expanded=true] .fd-select__button{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapButton_Selected_Background);border-left-color:var(--fdSelect_Expanded_Button_Border_Left_Color);box-shadow:var(--fdInput_Information_Box_Shadow_Hover);color:var(--fdInput_Group_Button_Information_Active_Text_Color)}.fd-select__control.is-information.is-expanded .fd-select__button.is-hover,.fd-select__control.is-information.is-expanded .fd-select__button:hover,.fd-select__control.is-information[aria-expanded=true] .fd-select__button.is-hover,.fd-select__control.is-information[aria-expanded=true] .fd-select__button:hover{color:var(--fdInput_Group_Button_Text_Color)}.fd-select__control.is-information.is-expanded[dir=rtl] .fd-select__button,.fd-select__control.is-information[aria-expanded=true][dir=rtl] .fd-select__button,[dir=rtl] .fd-select__control.is-information.is-expanded .fd-select__button,[dir=rtl] .fd-select__control.is-information[aria-expanded=true] .fd-select__button{border-left-color:transparent;border-right-color:var(--fdSelect_Expanded_Button_Border_Left_Color)}.fd-select__control.is-information.is-expanded.is-focus,.fd-select__control.is-information.is-expanded:focus,.fd-select__control.is-information[aria-expanded=true].is-focus,.fd-select__control.is-information[aria-expanded=true]:focus{box-shadow:none;z-index:5}.fd-select__text-content{-webkit-box-sizing:border-box;--fdSelect_Min_Width:2.5rem;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--fdSelect_Text_Content_Color, var(--sapTextColor));cursor:pointer;display:var(--fdSelect_Text_Content_Display, inline-block);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:calc(var(--fdSelect_Min_Width) - var(--sapField_BorderWidth) * 2);overflow:hidden;padding:0 0 0 .625rem;text-overflow:ellipsis;white-space:nowrap}.fd-select__text-content:after,.fd-select__text-content:before{box-sizing:inherit;font-size:inherit}.fd-select__text-content[dir=rtl],[dir=rtl] .fd-select__text-content{padding-left:0;padding-right:.625rem}.fd-select[class*=-compact],.fd-select[class*=-condensed],[class*=-compact] .fd-select:not([class*=-cozy]),[class*=-condensed] .fd-select:not([class*=-cozy]){margin:.1875rem 0}.fd-select[class*=-compact] .fd-select__control,.fd-select[class*=-condensed] .fd-select__control,[class*=-compact] .fd-select:not([class*=-cozy]) .fd-select__control,[class*=-condensed] .fd-select:not([class*=-cozy]) .fd-select__control{height:1.625rem;min-height:1.625rem}.fd-select[class*=-compact] .fd-select__control .fd-select__text-content,.fd-select[class*=-condensed] .fd-select__control .fd-select__text-content,[class*=-compact] .fd-select:not([class*=-cozy]) .fd-select__control .fd-select__text-content,[class*=-condensed] .fd-select:not([class*=-cozy]) .fd-select__control .fd-select__text-content{--fdSelect_Min_Width:2.75rem;padding-left:.5rem}.fd-select[class*=-compact] .fd-select__control .fd-select__text-content[dir=rtl],.fd-select[class*=-condensed] .fd-select__control .fd-select__text-content[dir=rtl],[class*=-compact] .fd-select:not([class*=-cozy]) .fd-select__control .fd-select__text-content[dir=rtl],[class*=-condensed] .fd-select:not([class*=-cozy]) .fd-select__control .fd-select__text-content[dir=rtl],[dir=rtl] .fd-select[class*=-compact] .fd-select__control .fd-select__text-content,[dir=rtl] .fd-select[class*=-condensed] .fd-select__control .fd-select__text-content,[dir=rtl] [class*=-compact] .fd-select:not([class*=-cozy]) .fd-select__control .fd-select__text-content,[dir=rtl] [class*=-condensed] .fd-select:not([class*=-cozy]) .fd-select__control .fd-select__text-content{padding-left:0;padding-right:.5rem}.fd-select[class*=-compact] .fd-select__control.is-readonly .fd-select__text-content,.fd-select[class*=-compact] .fd-select__control[aria-readonly=true] .fd-select__text-content,.fd-select[class*=-compact] .fd-select__control[readonly] .fd-select__text-content,.fd-select[class*=-condensed] .fd-select__control.is-readonly .fd-select__text-content,.fd-select[class*=-condensed] .fd-select__control[aria-readonly=true] .fd-select__text-content,.fd-select[class*=-condensed] .fd-select__control[readonly] .fd-select__text-content,[class*=-compact] .fd-select:not([class*=-cozy]) .fd-select__control.is-readonly .fd-select__text-content,[class*=-compact] .fd-select:not([class*=-cozy]) .fd-select__control[aria-readonly=true] .fd-select__text-content,[class*=-compact] .fd-select:not([class*=-cozy]) .fd-select__control[readonly] .fd-select__text-content,[class*=-condensed] .fd-select:not([class*=-cozy]) .fd-select__control.is-readonly .fd-select__text-content,[class*=-condensed] .fd-select:not([class*=-cozy]) .fd-select__control[aria-readonly=true] .fd-select__text-content,[class*=-condensed] .fd-select:not([class*=-cozy]) .fd-select__control[readonly] .fd-select__text-content{padding-left:.5rem;padding-right:.5rem}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-select{display:block;max-width:100%}.fd-select .fd-popover-custom{min-width:100%}.fd-select--inline{display:inline-block}.fd-select .fd-select__control .fd-select__button{position:static}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i6.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i7.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i8.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator"], outputs: ["focusEscapeList"] }, { kind: "directive", type: i8.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "pipe", type: i9.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
531
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectComponent, decorators: [{
530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectComponent, decorators: [{
532
531
  type: Component,
533
532
  args: [{ selector: 'fd-select', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
534
533
  class: 'fd-select',
@@ -652,4 +651,4 @@ export class DeprecatedSelectCSSClasses {
652
651
  };
653
652
  }
654
653
  }
655
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFJVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBRUosV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBK0IsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkgsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQTJCLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7OztBQUc3RCxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFLdkIsTUFBTSx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztBQUUxRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFFM0MscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUV2Qzs7O0dBR0c7QUF5QkgsTUFBTSxPQUFPLGVBQWU7SUEyQ3hCLG1DQUFtQztJQUNuQyxJQUNJLEtBQUssQ0FBQyxRQUFhO1FBQ25CLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQTZJRCxjQUFjO0lBQ2QsSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2FBQ2pFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQThCRCxjQUFjO0lBRWQsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ2QsZ0JBQWdCLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLElBQUksWUFBWTtRQUNaLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEMsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQztTQUN6QztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxVQUFVLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFFBQVE7UUFDUixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLElBQUksYUFBYTtRQUNiLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLENBQ0gsQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNaLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQ1IsbUJBQW1CO2dCQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUI7Z0JBQ3JDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQix1REFBdUQ7WUFDdkQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDLENBQzFGLENBQUM7SUFDTixDQUFDO0lBS0Qsc0VBQXNFO0lBQ3RFLElBQ0ksV0FBVyxDQUFDLEVBQWlDO1FBQzdDLElBQUksT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFO1lBQzFCLE1BQU0sS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQy9CO0lBQ0wsQ0FBQztJQUNELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUN4RCxDQUFDO0lBRUQsY0FBYztJQUNkLFlBQzJCLFNBQWlCLEVBQ1gsV0FBdUIsRUFDbkMsa0JBQTJDLEVBQzNDLGtCQUFxQyxFQUNyQyxpQkFBbUMsRUFDdkIsd0JBQWlELEVBQ3pDLFNBQW9CLEVBQzVCLFNBQW1CLEVBQ3ZDLHVCQUErQztRQVAzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXlCO1FBQzNDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUN2Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ3pDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUN2Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBNVQ1RCx5QkFBeUI7UUFFekIsY0FBUyxHQUFHLGFBQWEsY0FBYyxFQUFFLEVBQUUsQ0FBQztRQU01Qyx1RUFBdUU7UUFFdkUsV0FBTSxHQUFHLEtBQUssQ0FBQztRQU1mLGdEQUFnRDtRQUVoRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLCtCQUErQjtRQUUvQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGdEQUFnRDtRQUVoRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBa0JqQjs7O3FFQUc2RDtRQUU3RCx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFNN0IsaURBQWlEO1FBRWpELFVBQUssR0FBRyxpQkFBaUIsQ0FBQztRQUUxQixrREFBa0Q7UUFFbEQsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRTNCOzs7OztXQUtHO1FBRUgsb0JBQWUsR0FBb0IsVUFBVSxDQUFDO1FBVTlDOzs7O1dBSUc7UUFFSCwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFFN0IsMEhBQTBIO1FBRTFILDhCQUF5QixHQUFHLEdBQUcsQ0FBQztRQVVoQyx3Q0FBd0M7UUFFeEMsaUJBQVksR0FBcUIsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFMUQsZ0NBQWdDO1FBRWhDLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFVZCx5REFBeUQ7UUFFaEQsaUJBQVksR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUzRSxtRUFBbUU7UUFFMUQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO1FBZ0M3Qzs7V0FFRztRQUNILFlBQU8sR0FBRyxLQUFLLENBQUM7UUFjaEIsY0FBYztRQUNkLFNBQUksR0FBRyxLQUFLLENBQUM7UUFLYjs7O1dBR0c7UUFDTSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVN4Qzs7O1dBR0c7UUFDTSw0QkFBdUIsR0FBd0MsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUMvRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBRS9CLE9BQU8sUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQ3pCLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFDbkIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQzlFLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILGNBQWM7UUFDTix5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFFakMsY0FBYztRQUNOLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFRekIsY0FBYztRQUNOLG1CQUFjLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUE2RDFELGNBQWM7UUFDZCxpQkFBWSxHQUFHLENBQUMsRUFBTyxFQUFFLEVBQU8sRUFBVyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQTZFeEQsY0FBYztRQUNkLGFBQVEsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRTFDLGNBQWM7UUFDZCxjQUFTLEdBQUcsR0FBUyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBekN2QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUU7WUFDN0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDckY7YUFBTSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFRRCw0Q0FBNEM7SUFFNUMsTUFBTTtRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsSUFBSTtRQUNBLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzNGLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXBCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQ2hDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxFQUN2RSxFQUFFLENBQ0wsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7SUFDZCxLQUFLLENBQUMsYUFBc0IsS0FBSztRQUM3QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLEtBQUs7UUFDRCxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxhQUE2QixDQUFBLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixJQUFJO1FBQ0EsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsYUFBNkIsQ0FBQSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFFRCxjQUFjO0lBQ2QsZ0JBQWdCLENBQUMsRUFBd0I7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxvQkFBb0IsQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRCw2RUFBNkU7UUFDN0UseUVBQXlFO1FBQ3pFLElBQUksbUJBQW1CLEVBQUU7WUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUMxRTthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3RCLGtGQUFrRjtZQUNsRixnRkFBZ0Y7WUFDaEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RDtRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsY0FBYztJQUNkLFlBQVksQ0FBQyxLQUFVO1FBQ25CLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUF1QixFQUFFLEVBQUU7WUFDdkUsSUFBSTtnQkFDQSx1Q0FBdUM7Z0JBQ3ZDLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3pFO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ1osSUFBSSxTQUFTLEVBQUUsRUFBRTtvQkFDYixtREFBbUQ7b0JBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3ZCO2dCQUNELE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLG1CQUFtQixFQUFFO1lBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDcEQ7UUFFRCxPQUFPLG1CQUFtQixDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO0lBQ2Qsd0JBQXdCLENBQUMsTUFBZTtRQUNwQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLENBQUMsVUFBbUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7SUFDZCx1QkFBdUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzVEO2FBQU0sSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMvRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEU7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLHNCQUFzQjtRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDZCxvQkFBb0I7UUFDaEIsNERBQTREO1FBQzVELHlEQUF5RDtRQUN6RCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsdUJBQXVCO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBRUQsY0FBYztJQUNkLHdCQUF3QixDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxxQkFBNkI7UUFDM0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsWUFBWSxJQUFJLFVBQVUsQ0FBQztRQUNsRyxNQUFNLFlBQVksR0FBRyxXQUFXLEdBQUcsWUFBWSxDQUFDO1FBQ2hELElBQUksWUFBWSxHQUFHLHFCQUFxQixFQUFFO1lBQ3RDLE9BQU8sWUFBWSxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxZQUFZLEdBQUcsWUFBWSxHQUFHLHFCQUFxQixHQUFHLHVCQUF1QixFQUFFO1lBQy9FLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsWUFBWSxHQUFHLHVCQUF1QixHQUFHLFlBQVksQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsT0FBTyxxQkFBcUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztJQUNkLGNBQWM7UUFDViw0Q0FBNEM7UUFDNUMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEdBQUcscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxjQUFjO0lBQ2QseUJBQXlCO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQWtCLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRTFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ2QsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUNMLENBQUM7U0FDTDtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjO0lBQ2QsK0JBQStCO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDNUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFFZCxjQUFjLENBQUMsS0FBb0I7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxPQUFPO2dCQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCx3QkFBd0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDdkcsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7U0FDNUQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxLQUFVLENBQUM7SUFFdkIsY0FBYztJQUNOLGFBQWE7UUFDakIsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRWhELElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEI7WUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxpRkFBaUY7UUFDakYsbUVBQW1FO1FBQ25FLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssU0FBUyxDQUFDLE1BQXVCLEVBQUUsV0FBb0I7UUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3JGLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEM7YUFBTTtZQUNILElBQUksV0FBVyxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqRztZQUNELElBQUksV0FBVyxFQUFFO2dCQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzdEO1NBQ0o7UUFFRCxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixpQkFBaUIsQ0FBQyxVQUFnQjtRQUN0QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixJQUFJLENBQUMsY0FBYztnQkFDZixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFDdkUsQ0FBQyxDQUFFLElBQUksQ0FBQyxRQUE0QixDQUFDLEtBQUs7b0JBQzFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sYUFBYTtRQUNqQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYztJQUNOLGVBQWU7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxjQUFjO0lBQ04sS0FBSyxDQUFDLGdCQUFnQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNkLE9BQU87U0FDVjtRQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDN0IsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzFELE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUztTQUN6QixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxtQkFBbUIsQ0FDbkQsSUFBSSxDQUFDLHlCQUF5QixFQUM5QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsUUFBUSxDQUNYLENBQUM7SUFDTixDQUFDOzs0R0Ezc0JRLGVBQWUsa0JBK1RULFVBQVU7Z0dBL1RoQixlQUFlLHlwQ0FWYjtRQUNQO1lBQ0ksT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixXQUFXLEVBQUUsZUFBZTtTQUMvQjtRQUNELHVCQUF1QixDQUFDLGVBQWUsQ0FBQztRQUN4Qyx1QkFBdUI7UUFDdkIsK0JBQStCLEVBQUU7S0FDcEMsbURBMElnQixlQUFlLDRhQW9CckIsbUJBQW1CLHlIQU1JLFVBQVUsa0RDMVBoRCx1Z0pBdUhBOzJGRC9CYSxlQUFlO2tCQXhCM0IsU0FBUzsrQkFDSSxXQUFXLGlCQUdOLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLFdBQVc7d0JBQ2xCLDJCQUEyQixFQUFFLFFBQVE7d0JBQ3JDLCtFQUErRTt3QkFDL0UsZ0NBQWdDLEVBQUUsUUFBUTt3QkFDMUMsdUZBQXVGO3dCQUN2Rix3Q0FBd0MsRUFBRSxRQUFRO3FCQUNyRCxhQUNVO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxnQkFBZ0I7NEJBQ3pCLFdBQVcsaUJBQWlCO3lCQUMvQjt3QkFDRCx1QkFBdUIsaUJBQWlCO3dCQUN4Qyx1QkFBdUI7d0JBQ3ZCLCtCQUErQixFQUFFO3FCQUNwQzs7MEJBaVVJLFNBQVM7MkJBQUMsVUFBVTs7MEJBQ3BCLFFBQVE7OzBCQUlSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFRO2lGQXpUYixTQUFTO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtGLEtBQUs7c0JBRFIsS0FBSztnQkFnQk4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQVVOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQVNOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFLTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sTUFBTTtzQkFETCxLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS0csWUFBWTtzQkFEcEIsTUFBTTtnQkFLRSxXQUFXO3NCQURuQixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUt2RCxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsZUFBZTtnQkFLMUIseUJBQXlCO3NCQUR4QixTQUFTO3VCQUFDLDJCQUEyQjtnQkFNdEMsMEJBQTBCO3NCQUR6QixTQUFTO3VCQUFDLGlCQUFpQjtnQkFRNUIsV0FBVztzQkFEVixTQUFTO3VCQUFDLG1CQUFtQjtnQkFPOUIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBcUU5QyxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsZUFBZTtnQkErRHpCLFdBQVc7c0JBRGQsS0FBSztnQkFrRk4sTUFBTTtzQkFETCxZQUFZO3VCQUFDLE9BQU87Z0JBbU5yQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQXVJdkMsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNJLGNBQWM7UUFDZCxZQUFPLEdBQUcseUlBQXlJLENBQUM7UUFFcEosY0FBYztRQUNkLGdCQUFXLEdBQUc7WUFDVixJQUFJLEVBQUUscUVBQXFFO1lBQzNFLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7U0FDNUIsQ0FBQztJQUNOLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBkZWZlciwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgS2V5VXRpbCwgTW9kdWxlRGVwcmVjYXRpb24sIE51bGxhYmxlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuXG5pbXBvcnQgeyBTRUxFQ1RfQ09NUE9ORU5ULCBTZWxlY3RJbnRlcmZhY2UgfSBmcm9tICcuL3NlbGVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VsZWN0S2V5TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlbGVjdC1rZXktbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZkT3B0aW9uU2VsZWN0aW9uQ2hhbmdlLCBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL29wdGlvbi9vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdE1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LW1vYmlsZS9zZWxlY3QtbW9iaWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RNb2JpbGVNb2R1bGUgfSBmcm9tICcuL3NlbGVjdC1tb2JpbGUvc2VsZWN0LW1vYmlsZS5tb2R1bGUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRU5URVIsIEVTQ0FQRSwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlcyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxubGV0IHNlbGVjdFVuaXF1ZUlkID0gMDtcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBgaW1wb3J0IHsgRm9ybVN0YXRlcyB9IGZyb20gXCJAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtc1wiYCBpbnN0ZWFkICovXG5leHBvcnQgdHlwZSBTZWxlY3RDb250cm9sU3RhdGUgPSBGb3JtU3RhdGVzO1xuXG5jb25zdCBTRUxFQ1RfSEVBREVSX0lERU5USUZJRVIgPSAnLmZkLWxpc3RfX2dyb3VwLWhlYWRlcic7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RfUEFORUxfTUFYX0hFSUdIVCA9IDI1MDtcblxuLyoqIFRoZSBoZWlnaHQgb2YgdGhlIHNlbGVjdCBpdGVtcyBpbiBgcmVtYCB1bml0cy4gKi9cbmV4cG9ydCBjb25zdCBTRUxFQ1RfSVRFTV9IRUlHSFRfRU0gPSA0O1xuXG4vKipcbiAqIFNlbGVjdCBjb21wb25lbnQgaW50ZW5kZWQgdG8gbWltaWNcbiAqIHRoZSBiZWhhdmlvdXIgb2YgdGhlIG5hdGl2ZSBzZWxlY3QgZWxlbWVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXNlbGVjdCcsXG4gICAgICAgICdbY2xhc3MuZmQtc2VsZWN0LS1pbmxpbmVdJzogJ2lubGluZScsXG4gICAgICAgIC8vIEBkZXByZWNhdGVkIGxlYXZpbmcgY2xhc3MgZmQtc2VsZWN0LWN1c3RvbS1jbGFzcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgJ1tjbGFzcy5mZC1zZWxlY3QtY3VzdG9tLWNsYXNzXSc6ICdpbmxpbmUnLFxuICAgICAgICAvLyBAZGVwcmVjYXRlZCBsZWF2aW5nIGNsYXNzIGZkLXNlbGVjdC1jdXN0b20tY2xhc3MtLW1vYmlsZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgJ1tjbGFzcy5mZC1zZWxlY3QtY3VzdG9tLWNsYXNzLS1tb2JpbGVdJzogJ21vYmlsZSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBTRUxFQ1RfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdENvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICByZWdpc3RlckZvcm1JdGVtQ29udHJvbChTZWxlY3RDb21wb25lbnQpLFxuICAgICAgICBTZWxlY3RLZXlNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQ8VCA9IGFueT5cbiAgICBpbXBsZW1lbnRzXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBTZWxlY3RJbnRlcmZhY2UsXG4gICAgICAgIE9uSW5pdCxcbiAgICAgICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICAgICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICAgICAgT25DaGFuZ2VzLFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBJZCBvZiB0aGUgY29udHJvbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRyb2xJZCA9IGBmZC1zZWxlY3QtJHtzZWxlY3RVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogSG9sZHMgdGhlIGNvbnRyb2wgc3RhdGUgb2Ygc2VsZWN0ICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZTogTnVsbGFibGU8Rm9ybVN0YXRlcz47XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBzaG91bGQgYmUgZGlzcGxheWVkIGluIG1vYmlsZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogSG9sZHMgdGhlIG1lc3NhZ2Ugd2l0aCByZXNwZWN0IHRvIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZU1lc3NhZ2U6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogSWYgaXQgaXMgbWFuZGF0b3J5IGZpZWxkICovXG4gICAgQElucHV0KClcbiAgICByZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBjb21wb25lbnQgaXMgcmVhZG9ubHkuICovXG4gICAgQElucHV0KClcbiAgICByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIFBsYWNlaG9sZGVyIGZvciB0aGUgc2VsZWN0LiBBcHBlYXJzIGluIHRoZSB0cmlnZ2VyYm94IGlmIG5vIG9wdGlvbiBpcyBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogVmFsdWUgb2YgdGhlIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl9pbnRlcm5hbFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWRcbiAgICAgKiBpdCBpcyBoYW5kbGVkIGludGVybmFsbHkgYnkgY29udHJvbFRlbXBsYXRlICE9IG51bGx8dW5kZWZpbmVkIGlzXG4gICAgICogRXF1YWwgYXMgZXh0ZW5kZWRCb2R5VGVtcGxhdGUgYXMgdHJ1ZS5cbiAgICAgKiBXaGV0aGVyIG9wdGlvbiBjb21wb25lbnRzIGNvbnRhaW4gbW9yZSB0aGFuIGJhc2ljIHRleHQuICovXG4gICAgQElucHV0KClcbiAgICBleHRlbmRlZEJvZHlUZW1wbGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIE1heCBoZWlnaHQgb2YgdGhlIHBvcG92ZXIuIEFueSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aWxsIGJlIGFjY2Vzc2libGUgdGhyb3VnaCBzY3JvbGxpbmcuICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQ6IHN0cmluZztcblxuICAgIC8qKiBHbHlwaCB0byBhZGQgaWNvbiBpbiB0aGUgc2VsZWN0IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdseXBoID0gJ3NsaW0tYXJyb3ctZG93bic7XG5cbiAgICAvKiogV2hldGhlciBjbG9zZSB0aGUgcG9wb3ZlciBvbiBvdXRzaWRlIGNsaWNrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbk91dHNpZGVDbGljayA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIFNlbGVjdCBib2R5IHdpZHRoLCB3aGF0ZXZlciBpcyBjaG9zZW4sIHRoZSBib2R5IGhhcyBhIDYwMHB4IGxpbWl0LlxuICAgICAqICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC4gLSBEZWZhdWx0XG4gICAgICogKiBgZXF1YWxgIHdpbGwgYXBwbHkgYSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqICdmaXQtY29udGVudCcgd2lsbCBhcHBseSB3aWR0aCBuZWVkZWQgdG8gcHJvcGVybHkgZGlzcGxheSBpdGVtcyBpbnNpZGUsIGluZGVwZW5kZW50IG9mIGNvbnRyb2wuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxsQ29udHJvbE1vZGU6IFBvcG92ZXJGaWxsTW9kZSA9ICdhdC1sZWFzdCc7XG5cbiAgICAvKiogQ3VzdG9tIHRlbXBsYXRlIHVzZWQgdG8gYnVpbGQgY29udHJvbCBib2R5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udHJvbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIFRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBhcHBlbmRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIG9wdGlvbiBzaG91bGQgYmUgdW5zZWxlY3RlZCBhbmQgdmFsdWUgY2hhbmdlZCB0byB1bmRlZmluZWQsIHdoZW4gdGhlIGN1cnJlbnQgdmFsdWUgaXNcbiAgICAgKiBub3QgcHJlc2VudGVkIGluIG9wdGlvbiBhcnJheS4gU3dpdGNoaW5nIGl0IG9mZiBjYW4gYmUgaGFuZHksIHdoZW4gdGhlcmUgaXMgc29tZSBkZWxheSBiZXR3ZWVuIHByb3ZpZGluZ1xuICAgICAqIHBvc3NpYmxlIG9wdGlvbnMgYW5kIGNob3NlbiB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVuc2VsZWN0TWlzc2luZ09wdGlvbiA9IHRydWU7XG5cbiAgICAvKiogVGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcyBhZnRlciB0aGUgbGFzdCBrZXlkb3duIGJlZm9yZSBmb2N1c2luZyBvciBzZWxlY3Rpbmcgb3B0aW9uIGJhc2VkIG9uIGFscGhhbnVtZXJpYyBrZXlzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCA9IDI1MDtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgY29udHJvbCBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNlbGVjdCBJbnB1dCBNb2JpbGUgQ29uZmlndXJhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlQ29uZmlnOiBNb2JpbGVNb2RlQ29uZmlnID0geyBoYXNDbG9zZUJ1dHRvbjogdHJ1ZSB9O1xuXG4gICAgLyoqIFNob3VsZCBzZWxlY3QgYmUgaW5saW5lZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlubGluZSA9IHRydWU7XG5cbiAgICAvKiogQWRkaXRpb25hbCBjbGFzc25hbWUgZm9yIHRoZSBzZWxlY3QgY29udHJvbCBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0Q29udHJvbENsYXNzOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFkZGl0aW9uYWwgY2xhc3NuYW1lIGZvciB0aGUgc2VsZWN0IGRyb3Bkb3duIGJ1dHRvbiBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0RHJvcGRvd25CdXR0b25DbGFzczogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBvcG92ZXIgb3BlbiBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGlzT3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgb2YgdGhlIHNlbGVjdCBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIF9vcHRpb25zOiBRdWVyeUxpc3Q8T3B0aW9uQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0Q29udHJvbCcpXG4gICAgX2NvbnRyb2xFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gZWxlbWVudCBjb250YWluaW5nIGxpc3Qgb2Ygb3B0aW9ucyAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdE9wdGlvbnNMaXN0VGVtcGxhdGUnKVxuICAgIHNlbGVjdE9wdGlvbnNMaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFJlZmVyZW5jZSB0byByb290IGVsZW1lbnQgZm9yIHRoZSBtb2JpbGUgbW9kZSBkaWFsb2cgKi9cbiAgICBAVmlld0NoaWxkKCdkaWFsb2dDb250YWluZXInKVxuICAgIF9kaWFsb2dDb250YWluZXJFbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogT3ZlcmxheSBwYW5lIGNvbnRhaW5pbmcgdGhlIG9wdGlvbnMuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoQ2RrQ29ubmVjdGVkT3ZlcmxheSlcbiAgICBfb3ZlcmxheURpcjogQ2RrQ29ubmVjdGVkT3ZlcmxheTtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogUmVmZXJlbnQgdG8gdGhlIG9wdGlvbjtzIGNvbnRhaW5lclxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ29wdGlvblBhbmVsJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX29wdGlvblBhbmVsOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFdoZXRoZXIgcG9wb3ZlciBpcyBvcGVuZWRcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2lzT3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFiSW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2xpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbnRlcm5hbFZhbHVlOiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jYWxjdWxhdGVkTWF4SGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ydGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxPcHRpb25Db21wb25lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRyaWdnZXJzIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9zZWxlY3RDb250cm9sQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLnN0YXRlID8gYGlzLSR7dGhpcy5zdGF0ZX1gIDogJycsIHRoaXMuc2VsZWN0Q29udHJvbENsYXNzXVxuICAgICAgICAgICAgLmZpbHRlcigoY2xhc3NOYW1lKSA9PiAhIWNsYXNzTmFtZSlcbiAgICAgICAgICAgIC5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENvbWJpbmVkIHN0cmVhbSBvZiBhbGwgb2YgdGhlIGNoaWxkIG9wdGlvbnMnIGNoYW5nZSBldmVudHMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgX29wdGlvblNlbGVjdGlvbkNoYW5nZXM6IE9ic2VydmFibGU8RmRPcHRpb25TZWxlY3Rpb25DaGFuZ2U+ID0gZGVmZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBfb3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIF9vcHRpb25zPy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgoX29wdGlvbnMpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IG1lcmdlKC4uLl9vcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0aW9uQ2hhbmdlKSkpXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnRyb2xFbGVtRm9udFNpemUgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c2VkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU3RvcmVkIGNhbGN1bGF0ZWQgbWF4SGVpZ2h0IGZyb20gT3B0aW9uIFBhbmVsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbWF4SGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgX3Jlc2l6ZVNjcm9sbEhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhbGN1bGF0ZWRIZWlnaHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSB0aGlzLmRpc2FibGVkID8gLTEgOiAwO1xuICAgIH1cblxuICAgIC8qKiBTZWxlY3RlZCBvcHRpb24uICovXG4gICAgZ2V0IHNlbGVjdGVkKCk6IE9wdGlvbkNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXTtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHNlbGVjdGVkIHZhbHVlIGlmIGFueS4gKi9cbiAgICBnZXQgdHJpZ2dlclZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGVtcHR5VmFsdWUgPSAnICc7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IGVtcHR5VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQudmlld1ZhbHVlIHx8IHRoaXMucGxhY2Vob2xkZXIgfHwgZW1wdHlWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogZXF1YWwgdG8gY2xvc2VcbiAgICAgKiBUZWxscyB0aGUgT3B0aW9uTGlzdCBpZiBpdCdzIGNsb3NhYmxlIGJ5IHNpbXBseSBzZWxlY3RpbmcgdGhlIGl0ZW0gZWl0aGVyIHdpdGggQ0xJQ0sgfCBTUEFDRSB8IEVOVEVSLlxuICAgICAqIFdoZW4gd2UgYXJlIGluIG1vYmlsZSBtb2RlIChtb2JpbGU9dHJ1ZSkgYW5kIGhhdmUgd2UgaGF2ZSBlbmFibGVkIGNvbmZpcm1hdGlvbiBidXR0b25zIHRoZW4gd2VcbiAgICAgKiBkb250IGNsb3NlIG9wdGlvbiBsaXN0LiBXZSBjbG9zZSBvbmx5IGFmdGVyIHdlIGhpdCBjb25maXJtIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBnZXQgY2FuQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMubW9iaWxlICYmIHRoaXMubW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0KTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciBjb250cm9sIGNhbiBiZSBpbnRlcmFjdGVkIHdpdGggKi9cbiAgICBnZXQgaXNJbnRlcmFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB3ZSBjYW4gZW1pdCBhIHZhbHVlLiBUaGV5IGFyZSAzIGRpZmZlcmVudCBwYXRocyB3aGVyZSB3ZSBjYW4gZW1pdCB2YWx1ZTpcbiAgICAgKiAgLSBXZSBhcmUgbm90IGluIG1vYmlsZSBtb2RlIFttb2JpbGVdPWZhbHNlXG4gICAgICogIC0gV2UgYXJlIGluIG1vYmlsZSBtb2RlIFttb2JpbGVdPXRydWUgYW5kIG1vYmlsZSBkaWFsb2cgYXMganVzdCBjbG9zZSBYIGJ1dHRvbiB0byBkaXNtaXNzIGl0XG4gICAgICogIC0gV2UgYXJlIGluIG1vYmlsZSBtb2RlIFttb2JpbGVdPXRydWUgYW5kIG1vYmlsZSBkaWFsb2cgaGFzIEFwcHJvdmVCdXR0b24gYXZhaWxhYmxlIGFuZFxuICAgICAqICBkaWFsb2cgaXMgY2xvc2VkLiAobWVhbmluZyB3ZSBhbHJlYWR5IGNsaWNrZWQgdGhpcyBidXR0b24pXG4gICAgICovXG4gICAgZ2V0IGNhbkVtaXRWYWx1ZUNoYW5nZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLm1vYmlsZSB8fFxuICAgICAgICAgICAgKHRoaXMubW9iaWxlICYmXG4gICAgICAgICAgICAgICAgLy8gQXBwcm92ZSArIENhbmNlbFxuICAgICAgICAgICAgICAgICEhdGhpcy5tb2JpbGVDb25maWcuYXBwcm92ZUJ1dHRvblRleHQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5faXNPcGVuKSB8fFxuICAgICAgICAgICAgLy8gQ2xvc2VCdXR0b24uIEVtaXRzIHdoZW4geW91IGNsaWNrIG9uIHRoZSBvcHRpb24gaXRlbVxuICAgICAgICAgICAgKCEhdGhpcy5tb2JpbGVDb25maWcuaGFzQ2xvc2VCdXR0b24gJiYgISF0aGlzLm1vYmlsZUNvbmZpZy5hcHByb3ZlQnV0dG9uVGV4dCA9PT0gZmFsc2UpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29tcGFyZVdpdGggPSAobzE6IGFueSwgbzI6IGFueSk6IGJvb2xlYW4gPT4gbzEgPT09IG8yO1xuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGNvbXBhcmUgdGhlIG9wdGlvbiB2YWx1ZXMgd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbXBhcmVXaXRoKGZuOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbikge1xuICAgICAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jb21wYXJlV2l0aCA9IGZuO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uTW9kZWwpIHtcbiAgICAgICAgICAgIC8vIEEgZGlmZmVyZW50IGNvbXBhcmF0b3IgbWVhbnMgdGhlIHNlbGVjdGlvbiBjb3VsZCBjaGFuZ2UuXG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGNvbXBhcmVXaXRoKCk6IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb2N1c2VkIHx8IHRoaXMuX2lzT3BlbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjYWxjdWxhdGVkTWF4SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhIZWlnaHQgfHwgdGhpcy5fY2FsY3VsYXRlZE1heEhlaWdodDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAQXR0cmlidXRlKCd0YWJpbmRleCcpIF90YWJJbmRleDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9rZXlNYW5hZ2VyU2VydmljZTogU2VsZWN0S2V5TWFuYWdlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90YWJJbmRleCA9IHBhcnNlSW50KF90YWJJbmRleCwgMTApIHx8IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbW1vbkJlaGF2aW9yKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9pbml0S2V5TWFuYWdlcigpO1xuICAgICAgICB0aGlzLl9zZXR1cE1vYmlsZU1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVnaXN0ZXJFdmVudHNBZnRlckNvbnRlbnRJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWyd0eXBlYWhlYWREZWJvdW5jZUludGVydmFsJ10gJiYgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLndpdGhUeXBlQWhlYWQodGhpcy50eXBlYWhlYWREZWJvdW5jZUludGVydmFsKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJJbmRleCA9IHRoaXMuZGlzYWJsZWQgPyAtMSA6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2NsZWFudXBDb21tb25CZWhhdmlvcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIG9wZW4gc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbnMgdGhlIHNlbGVjdCBwb3BvdmVyIGJvZHkuICovXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSB8fCAhdGhpcy5fb3B0aW9ucyB8fCAhdGhpcy5fZ2V0SXRlbUNvdW50KCkgfHwgdGhpcy5faXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLl9jb250cm9sRWxlbUZvbnRTaXplID0gcGFyc2VJbnQoXG4gICAgICAgICAgICBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2NvbnRyb2xFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmZvbnRTaXplIHx8ICcwJyxcbiAgICAgICAgICAgIDEwXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbihudWxsKTtcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0Q29ycmVjdE9wdGlvbigpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICB0aGlzLl9jb250cm9sRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsb3NlKGZvcmNlQ2xvc2U6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNPcGVuICYmIChmb3JjZUNsb3NlIHx8IHRoaXMuY2xvc2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5faXNSdGwoKSA/ICdydGwnIDogJ2x0cicpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICAodGhpcy5fY29udHJvbEVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEJsdXJzIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIGJsdXIoKTogdm9pZCB7XG4gICAgICAgICh0aGlzLl9jb250cm9sRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmcm9tIENvbnRyb2xWYWx1ZSBBY2Nlc3NvciAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3Rpb25CeVZhbHVlKHZhbHVlOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5fc2VsZWN0VmFsdWUodmFsdWUpO1xuXG4gICAgICAgIC8vIFNoaWZ0IGZvY3VzIHRvIHRoZSBhY3RpdmUgaXRlbS4gTm90ZSB0aGF0IHdlIHNob3VsZG4ndCBkbyB0aGlzIGluIG11bHRpcGxlXG4gICAgICAgIC8vIG1vZGUsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IG9wdGlvbiB0aGUgdXNlciBpbnRlcmFjdGVkIHdpdGggbGFzdC5cbiAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oY29ycmVzcG9uZGluZ09wdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHJlc2V0IHRoZSBoaWdobGlnaHRlZCBvcHRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyB3aGlsZVxuICAgICAgICAgICAgLy8gY2xvc2VkLCBiZWNhdXNlIGRvaW5nIGl0IHdoaWxlIG9wZW4gY2FuIHNoaWZ0IHRoZSB1c2VyJ3MgZm9jdXMgdW5uZWNlc3NhcmlseS5cbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0VmFsdWUodmFsdWU6IGFueSk6IE9wdGlvbkNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdPcHRpb24gPSB0aGlzLl9vcHRpb25zLmZpbmQoKG9wdGlvbjogT3B0aW9uQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIFRyZWF0IG51bGwgYXMgYSBzcGVjaWFsIHJlc2V0IHZhbHVlLlxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udmFsdWUgIT0gbnVsbCAmJiB0aGlzLl9jb21wYXJlV2l0aChvcHRpb24udmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdGlmeSBkZXZlbG9wZXJzIG9mIGVycm9ycyBpbiB0aGVpciBjb21wYXJhdG9yLlxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoY29ycmVzcG9uZGluZ09wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29ycmVzcG9uZGluZ09wdGlvbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVyT3BlbkNoYW5nZUhhbmRsZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaXNPcGVuID8gdGhpcy5vcGVuKCkgOiB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyBfa2V5TWFuYWdlclNlcnZpY2UuICovXG4gICAgX2dldEtleVNlcnZpY2UoKTogU2VsZWN0S2V5TWFuYWdlclNlcnZpY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fa2V5TWFuYWdlclNlcnZpY2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICB0aGlzLl90YWJJbmRleCA9IC0xO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlciAmJiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyICYmICF0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jbGVhbnVwQ29tbW9uQmVoYXZpb3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdGlhbGl6ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgLy8gRGVmZXIgc2V0dGluZyB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIFwiRXhwcmVzc2lvblxuICAgICAgICAvLyBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZFwiIGVycm9ycyBmcm9tIEFuZ3VsYXIuXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0aGlzLm5nQ29udHJvbCA/IHRoaXMubmdDb250cm9sLnZhbHVlIDogdGhpcy5faW50ZXJuYWxWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4cG9zZSBvdXRzaWRlIG9mIHRoaXMgbWl4aW4gdG8gZ2l2ZSBjb21wb25lbnQgYWJpbGl0eVxuICAgICAqIHRvIHVwZGF0ZSBjYWx1Y2xhdGVkTWF4SGVpZ2h0IGlmIG5lZWRlZFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfdXBkYXRlQ2FsY3VsYXRlZEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlZE1heEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAqIDAuNDU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0T3B0aW9uU2Nyb2xsUG9zaXRpb24ob3B0aW9uSW5kZXg6IG51bWJlciwgaXRlbUhlaWdodDogbnVtYmVyLCBjdXJyZW50U2Nyb2xsUG9zaXRpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkhlaWdodCA9IHRoaXMuX29wdGlvbnMuZ2V0KG9wdGlvbkluZGV4KT8uX2dldEh0bWxFbGVtZW50KCkub2Zmc2V0SGVpZ2h0IHx8IGl0ZW1IZWlnaHQ7XG4gICAgICAgIGNvbnN0IG9wdGlvbk9mZnNldCA9IG9wdGlvbkluZGV4ICogb3B0aW9uSGVpZ2h0O1xuICAgICAgICBpZiAob3B0aW9uT2Zmc2V0IDwgY3VycmVudFNjcm9sbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uT2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbk9mZnNldCArIG9wdGlvbkhlaWdodCA+IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiArIFNFTEVDVF9QQU5FTF9NQVhfSEVJR0hUKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgb3B0aW9uT2Zmc2V0IC0gU0VMRUNUX1BBTkVMX01BWF9IRUlHSFQgKyBvcHRpb25IZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50U2Nyb2xsUG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0SXRlbUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICAvLyBhbHNvIGluY2x1ZGUgYm9yZGVyIHdpdGggZGVmYXVsdCB2YWx1ZSAxLlxuICAgICAgICByZXR1cm4gdGhpcy5fY29udHJvbEVsZW1Gb250U2l6ZSAqIFNFTEVDVF9JVEVNX0hFSUdIVF9FTSArIDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdGlhbGl6ZUNvbW1vbkJlaGF2aW9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxPcHRpb25Db21wb25lbnQ+KGZhbHNlKTtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2NvbXBvbmVudCA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ2FsY3VsYXRlZEhlaWdodCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fcnRsU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5fcnRsU2VydmljZS5ydGwuc3Vic2NyaWJlKChydGwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcnRsID0gcnRsO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGwgPT09IHRydWUgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVnaXN0ZXJFdmVudHNBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5hZGRlZC5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5fc2VsZWN0KCkpO1xuICAgICAgICAgICAgZXZlbnQucmVtb3ZlZC5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5fZGVzZWxlY3QoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRPcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLl9pc09wZW5cbiAgICAgICAgICAgICAgICA/IHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9oYW5kbGVPcGVuS2V5ZG93bihldmVudClcbiAgICAgICAgICAgICAgICA6IHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9oYW5kbGVDbG9zZWRLZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFU0NBUEUsIEVOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250cm9sRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlciAmJiB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5pZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYnV0dG9uQ2xpY2soKTogdm9pZCB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldE9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRPckRlc3Ryb3llZCA9IG1lcmdlKHRoaXMuX29wdGlvbnMuY2hhbmdlcywgdGhpcy5fZGVzdHJveSk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9uU2VsZWN0aW9uQ2hhbmdlcy5waXBlKHRha2VVbnRpbChjaGFuZ2VkT3JEZXN0cm95ZWQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblNlbGVjdChldmVudC5zb3VyY2UsIGV2ZW50LmlzVXNlcklucHV0KTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LmlzVXNlcklucHV0ICYmIHRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMaXN0ZW4gdG8gY2hhbmdlcyBpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIF9vcHRpb25zIGFuZCByZWFjdCBhY2NvcmRpbmdseS5cbiAgICAgICAgLy8gSGFuZGxlcyBjYXNlcyBsaWtlIHRoZSBsYWJlbHMgb2YgdGhlIHNlbGVjdGVkIF9vcHRpb25zIGNoYW5naW5nLlxuICAgICAgICBtZXJnZSguLi50aGlzLl9vcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uX3N0YXRlQ2hhbmdlcykpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwoY2hhbmdlZE9yRGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEludm9rZWQgd2hlbiBhbiBvcHRpb24gaXMgY2xpY2tlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vblNlbGVjdChvcHRpb246IE9wdGlvbkNvbXBvbmVudCwgaXNVc2VySW5wdXQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2FzU2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbik7XG4gICAgICAgIGlmICgob3B0aW9uLnZhbHVlID09PSBudWxsIHx8IG9wdGlvbi52YWx1ZSA9PT0gdW5kZWZpbmVkKSAmJiB0aGlzLnVuc2VsZWN0TWlzc2luZ09wdGlvbikge1xuICAgICAgICAgICAgb3B0aW9uLl9kZXNlbGVjdCgpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZWxlY3RDaGFuZ2Uob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3YXNTZWxlY3RlZCAhPT0gb3B0aW9uLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID8gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG9wdGlvbikgOiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdChvcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVXNlcklucHV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShvcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHdhc1NlbGVjdGVkICE9PSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbikgfHwgdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZWxlY3RDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZW1pdFNlbGVjdENoYW5nZShkZWZhdWx0VmFsPzogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhbkVtaXRWYWx1ZUNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQgJiYgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gKHRoaXMuc2VsZWN0ZWQgYXMgT3B0aW9uQ29tcG9uZW50KS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRWYWw7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5faW50ZXJuYWxWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEl0ZW1Db3VudCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9uUGFuZWwgJiYgdGhpcy5faGVhZGVyRWxlbWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5sZW5ndGggKyB0aGlzLl9oZWFkZXJFbGVtZW50cygpLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oZWFkZXJFbGVtZW50cygpOiBOb2RlTGlzdE9mPEVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvblBhbmVsPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoU0VMRUNUX0hFQURFUl9JREVOVElGSUVSKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwTW9iaWxlTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBTRUxFQ1RfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY01vZHVsZShcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0T3B0aW9uc0xpc3RUZW1wbGF0ZSxcbiAgICAgICAgICAgIFNlbGVjdE1vYmlsZU1vZHVsZSxcbiAgICAgICAgICAgIFNlbGVjdE1vYmlsZUNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBpbmplY3RvclxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRTZWxlY3RDU1NDbGFzc2VzIGltcGxlbWVudHMgTW9kdWxlRGVwcmVjYXRpb24ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbWVzc2FnZSA9IGBTZWxlY3QgQ1NTIGNsYXNzZXMgZmQtc2VsZWN0LS1jb21wYWN0LCBmZC1zZWxlY3QtLWNvbXBhY3QtLW1vYmlsZSwgZmQtcG9wb3Zlci1jdXN0b20tc2VsZWN0LWJvZHksIGZkLXBvcG92ZXItY3VzdG9tLWxpc3QgYXJlIGRlcHJlY2F0ZWRgO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhbHRlcm5hdGl2ZSA9IHtcbiAgICAgICAgbmFtZTogJ0luc3BlY3QgdGhlIGVsZW1lbnRzIG9mIHRoZSBTZWxlY3QgY29tcG9uZW50IHRvIHNlZSB0aGUgbmV3IGNsYXNzZXMnLFxuICAgICAgICBsaW5rOiBbJy9jb3JlJywgJ3NlbGVjdCddXG4gICAgfTtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGUgPyBtb2JpbGVUZW1wbGF0ZSA6IGRlc2t0b3BUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Rlc2t0b3BUZW1wbGF0ZT5cbiAgICA8IS0tIEBkZXByZWNhdGVkIGxlYXZpbmcgY2xhc3MgZmQtcG9wb3Zlci1jdXN0b20tbGlzdCB0byBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LS0+XG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXNlbGVjdC1kcm9wZG93biBmZC1wb3BvdmVyLWN1c3RvbS1saXN0XCJcbiAgICAgICAgW2lzT3Blbl09XCJfaXNPcGVuXCJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICAgICAgW2Nsb3NlT25Fc2NhcGVLZXldPVwidHJ1ZVwiXG4gICAgICAgIFtmaWxsQ29udHJvbE1vZGVdPVwiZmlsbENvbnRyb2xNb2RlXCJcbiAgICAgICAgW21heFdpZHRoXT1cIjYwMFwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cIl9wb3BvdmVyT3BlbkNoYW5nZUhhbmRsZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdElucHV0Q29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuXG4gICAgICAgIDwhLS0gQGRlcHJlY2F0ZWQgbGVhdmluZyBjbGFzcyBmZC1wb3BvdmVyLWN1c3RvbS1zZWxlY3QtYm9keSB0byBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LS0+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgY2xhc3M9XCJmZC1wb3BvdmVyLWN1c3RvbS1zZWxlY3QtYm9keVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0SW5wdXRDb250cm9sVGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLXNlbGVjdF9fY29udHJvbFwiXG4gICAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICAgICAgI3NlbGVjdENvbnRyb2xcbiAgICAgICAgW2NsYXNzXT1cIl9zZWxlY3RDb250cm9sQ2xhc3NcIlxuICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cIl9pc09wZW5cIlxuICAgICAgICBbY2xhc3MuaXMtZXhwYW5kZWRdPVwiX2lzT3BlblwiXG4gICAgICAgIFtjbGFzcy5pcy1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5pcy1yZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cIl90YWJJbmRleFwiXG4gICAgICAgIFthdHRyLmlkXT1cImNvbnRyb2xJZFwiXG4gICAgICAgIFthdHRyLmFyaWEtYWN0aXZlXT1cIl9pc09wZW5cIlxuICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInNlbGVjdGVkID8gc2VsZWN0ZWQuc2VsZWN0ZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJfaXNPcGVuXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY29udHJvbElkICsgJy1saXN0LWJveCdcIlxuICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIiEodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKVwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCJ0cmlnZ2VyVmFsdWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCB8fCAoJ3BsYXRmb3JtU2VsZWN0LnNlbGVjdE9wdGlvbkxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJfZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKVwiXG4gICAgICAgIChmb2N1cyk9XCJfb25Gb2N1cygpXCJcbiAgICAgICAgKGJsdXIpPVwiX29uQmx1cigpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgcm9sZT1cImxpc3RpdGVtXCIgY2xhc3M9XCJmZC1zZWxlY3RfX3RleHQtY29udGVudFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidHJpZ2dlclZhbHVlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlID8gY29udHJvbFRlbXBsYXRlIDogZGVmYXVsdFNlbGVjdENvbnRlbnRcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdHJpZ2dlclZhbHVlLCBzZWxlY3RlZDogc2VsZWN0ZWQgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAgICB7eyB0cmlnZ2VyVmFsdWUgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmZC1idXR0b24gZmQtYnV0dG9uLS10cmFuc3BhcmVudCBmZC1zZWxlY3RfX2J1dHRvblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3REcm9wZG93bkJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFyZWFkb25seVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJnbHlwaFwiPjwvZmQtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8IS0tICAgICAgICA8YnV0dG9uLS0+XG4gICAgICAgIDwhLS0gICAgICAgICAgICBmZC1idXR0b24tLT5cbiAgICAgICAgPCEtLSAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIi0tPlxuICAgICAgICA8IS0tICAgICAgICAgICAgY2xhc3M9XCJmZC1idXR0b24mIzQ1OyYjNDU7dHJhbnNwYXJlbnQgZmQtc2VsZWN0X19idXR0b24ge3sgc2VsZWN0RHJvcGRvd25CdXR0b25DbGFzcyB9fVwiLS0+XG4gICAgICAgIDwhLS0gICAgICAgICAgICAoY2xpY2spPVwiX2J1dHRvbkNsaWNrKClcIi0tPlxuICAgICAgICA8IS0tICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIi0tPlxuICAgICAgICA8IS0tICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCItLT5cbiAgICAgICAgPCEtLSAgICAgICAgICAgIFtnbHlwaF09XCJnbHlwaFwiLS0+XG4gICAgICAgIDwhLS0gICAgICAgID48L2J1dHRvbj4tLT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0T3B0aW9uc0xpc3RUZW1wbGF0ZT5cbiAgICA8dWxcbiAgICAgICAgI29wdGlvblBhbmVsXG4gICAgICAgIGZkLWxpc3RcbiAgICAgICAgY2xhc3M9XCJmZC1zZWxlY3Qtb3B0aW9uc1wiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFttb2JpbGVNb2RlXT1cIm1vYmlsZVwiXG4gICAgICAgIFtkcm9wZG93bk1vZGVdPVwidHJ1ZVwiXG4gICAgICAgIFtoYXNNZXNzYWdlXT1cIiEhc3RhdGVNZXNzYWdlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiY29udHJvbElkICsgJy1saXN0LWJveCdcIlxuICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhIZWlnaHQgfHwgY2FsY3VsYXRlZE1heEhlaWdodCArICdweCdcIlxuICAgICAgICBbYXR0ci50b29sdGlwXT1cInRyaWdnZXJWYWx1ZVwiXG4gICAgPlxuICAgICAgICA8bGlcbiAgICAgICAgICAgICpuZ0lmPVwic3RhdGVNZXNzYWdlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3RhdGVNZXNzYWdlXCJcbiAgICAgICAgICAgIGZkLWxpc3QtbWVzc2FnZVxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgIFt0eXBlXT1cInN0YXRlIHx8ICdkZWZhdWx0J1wiXG4gICAgICAgICAgICBbaW5uZXJIdG1sXT1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgID48L2xpPlxuXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2JpbGVUZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdElucHV0Q29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2ICNkaWFsb2dDb250YWluZXI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
654
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLFNBQVMsRUFJVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBRUosV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBK0IsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkgsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVB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QkFRNUIsV0FBVztzQkFEVixTQUFTO3VCQUFDLG1CQUFtQjtnQkFPOUIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBcUU5QyxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsZUFBZTtnQkErRHpCLFdBQVc7c0JBRGQsS0FBSztnQkFrRk4sTUFBTTtzQkFETCxZQUFZO3VCQUFDLE9BQU87Z0JBbU5yQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQXFJdkMsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNJLGNBQWM7UUFDZCxZQUFPLEdBQUcseUlBQXlJLENBQUM7UUFFcEosY0FBYztRQUNkLGdCQUFXLEdBQUc7WUFDVixJQUFJLEVBQUUscUVBQXFFO1lBQzNFLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7U0FDNUIsQ0FBQztJQUNOLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBkZWZlciwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgS2V5VXRpbCwgTW9kdWxlRGVwcmVjYXRpb24sIE51bGxhYmxlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuXG5pbXBvcnQgeyBTRUxFQ1RfQ09NUE9ORU5ULCBTZWxlY3RJbnRlcmZhY2UgfSBmcm9tICcuL3NlbGVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VsZWN0S2V5TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlbGVjdC1rZXktbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZkT3B0aW9uU2VsZWN0aW9uQ2hhbmdlLCBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL29wdGlvbi9vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdE1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LW1vYmlsZS9zZWxlY3QtbW9iaWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RNb2JpbGVNb2R1bGUgfSBmcm9tICcuL3NlbGVjdC1tb2JpbGUvc2VsZWN0LW1vYmlsZS5tb2R1bGUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRVNDQVBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5cbmxldCBzZWxlY3RVbmlxdWVJZCA9IDA7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgYGltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tIFwiQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXNcImAgaW5zdGVhZCAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0Q29udHJvbFN0YXRlID0gRm9ybVN0YXRlcztcblxuY29uc3QgU0VMRUNUX0hFQURFUl9JREVOVElGSUVSID0gJy5mZC1saXN0X19ncm91cC1oZWFkZXInO1xuXG5leHBvcnQgY29uc3QgU0VMRUNUX1BBTkVMX01BWF9IRUlHSFQgPSAyNTA7XG5cbi8qKiBUaGUgaGVpZ2h0IG9mIHRoZSBzZWxlY3QgaXRlbXMgaW4gYHJlbWAgdW5pdHMuICovXG5leHBvcnQgY29uc3QgU0VMRUNUX0lURU1fSEVJR0hUX0VNID0gNDtcblxuLyoqXG4gKiBTZWxlY3QgY29tcG9uZW50IGludGVuZGVkIHRvIG1pbWljXG4gKiB0aGUgYmVoYXZpb3VyIG9mIHRoZSBuYXRpdmUgc2VsZWN0IGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1zZWxlY3QnLFxuICAgICAgICAnW2NsYXNzLmZkLXNlbGVjdC0taW5saW5lXSc6ICdpbmxpbmUnLFxuICAgICAgICAvLyBAZGVwcmVjYXRlZCBsZWF2aW5nIGNsYXNzIGZkLXNlbGVjdC1jdXN0b20tY2xhc3MgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgICAgICdbY2xhc3MuZmQtc2VsZWN0LWN1c3RvbS1jbGFzc10nOiAnaW5saW5lJyxcbiAgICAgICAgLy8gQGRlcHJlY2F0ZWQgbGVhdmluZyBjbGFzcyBmZC1zZWxlY3QtY3VzdG9tLWNsYXNzLS1tb2JpbGUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgICAgICdbY2xhc3MuZmQtc2VsZWN0LWN1c3RvbS1jbGFzcy0tbW9iaWxlXSc6ICdtb2JpbGUnXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogU0VMRUNUX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBTZWxlY3RDb21wb25lbnRcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgICAgU2VsZWN0S2V5TWFuYWdlclNlcnZpY2UsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50PFQgPSBhbnk+XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICAgICAgU2VsZWN0SW50ZXJmYWNlLFxuICAgICAgICBPbkluaXQsXG4gICAgICAgIEFmdGVyVmlld0luaXQsXG4gICAgICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgICAgIE9uQ2hhbmdlcyxcbiAgICAgICAgT25EZXN0cm95LFxuICAgICAgICBGb3JtSXRlbUNvbnRyb2xcbntcbiAgICAvKiogSWQgb2YgdGhlIGNvbnRyb2wuICovXG4gICAgQElucHV0KClcbiAgICBjb250cm9sSWQgPSBgZmQtc2VsZWN0LSR7c2VsZWN0VW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIEhvbGRzIHRoZSBjb250cm9sIHN0YXRlIG9mIHNlbGVjdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGU6IE51bGxhYmxlPEZvcm1TdGF0ZXM+O1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBjb21wb25lbnQgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBtb2JpbGUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEhvbGRzIHRoZSBtZXNzYWdlIHdpdGggcmVzcGVjdCB0byBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBjb21wb25lbnQgaXMgZGlzYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIElmIGl0IGlzIG1hbmRhdG9yeSBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzZWxlY3QgY29tcG9uZW50IGlzIHJlYWRvbmx5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBQbGFjZWhvbGRlciBmb3IgdGhlIHNlbGVjdC4gQXBwZWFycyBpbiB0aGUgdHJpZ2dlcmJveCBpZiBubyBvcHRpb24gaXMgc2VsZWN0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBzZWxlY3QgY29udHJvbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55KSB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5faW50ZXJuYWxWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2ludGVybmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBkZXByZWNhdGVkXG4gICAgICogaXQgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGJ5IGNvbnRyb2xUZW1wbGF0ZSAhPSBudWxsfHVuZGVmaW5lZCBpc1xuICAgICAqIEVxdWFsIGFzIGV4dGVuZGVkQm9keVRlbXBsYXRlIGFzIHRydWUuXG4gICAgICogV2hldGhlciBvcHRpb24gY29tcG9uZW50cyBjb250YWluIG1vcmUgdGhhbiBiYXNpYyB0ZXh0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXh0ZW5kZWRCb2R5VGVtcGxhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBNYXggaGVpZ2h0IG9mIHRoZSBwb3BvdmVyLiBBbnkgb3ZlcmZsb3dpbmcgZWxlbWVudHMgd2lsbCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggc2Nyb2xsaW5nLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4SGVpZ2h0OiBzdHJpbmc7XG5cbiAgICAvKiogR2x5cGggdG8gYWRkIGljb24gaW4gdGhlIHNlbGVjdCBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBnbHlwaCA9ICdzbGltLWFycm93LWRvd24nO1xuXG4gICAgLyoqIFdoZXRoZXIgY2xvc2UgdGhlIHBvcG92ZXIgb24gb3V0c2lkZSBjbGljay4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogUHJlc2V0IG9wdGlvbnMgZm9yIHRoZSBTZWxlY3QgYm9keSB3aWR0aCwgd2hhdGV2ZXIgaXMgY2hvc2VuLCB0aGUgYm9keSBoYXMgYSA2MDBweCBsaW1pdC5cbiAgICAgKiAqIGBhdC1sZWFzdGAgd2lsbCBhcHBseSBhIG1pbmltdW0gd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuIC0gRGVmYXVsdFxuICAgICAqICogYGVxdWFsYCB3aWxsIGFwcGx5IGEgd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuXG4gICAgICogKiAnZml0LWNvbnRlbnQnIHdpbGwgYXBwbHkgd2lkdGggbmVlZGVkIHRvIHByb3Blcmx5IGRpc3BsYXkgaXRlbXMgaW5zaWRlLCBpbmRlcGVuZGVudCBvZiBjb250cm9sLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsbENvbnRyb2xNb2RlOiBQb3BvdmVyRmlsbE1vZGUgPSAnYXQtbGVhc3QnO1xuXG4gICAgLyoqIEN1c3RvbSB0ZW1wbGF0ZSB1c2VkIHRvIGJ1aWxkIGNvbnRyb2wgYm9keS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRyb2xUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBUaGUgZWxlbWVudCB0byB3aGljaCB0aGUgcG9wb3ZlciBzaG91bGQgYmUgYXBwZW5kZWQuICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUbzogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIElmIHRoZSBvcHRpb24gc2hvdWxkIGJlIHVuc2VsZWN0ZWQgYW5kIHZhbHVlIGNoYW5nZWQgdG8gdW5kZWZpbmVkLCB3aGVuIHRoZSBjdXJyZW50IHZhbHVlIGlzXG4gICAgICogbm90IHByZXNlbnRlZCBpbiBvcHRpb24gYXJyYXkuIFN3aXRjaGluZyBpdCBvZmYgY2FuIGJlIGhhbmR5LCB3aGVuIHRoZXJlIGlzIHNvbWUgZGVsYXkgYmV0d2VlbiBwcm92aWRpbmdcbiAgICAgKiBwb3NzaWJsZSBvcHRpb25zIGFuZCBjaG9zZW4gdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB1bnNlbGVjdE1pc3NpbmdPcHRpb24gPSB0cnVlO1xuXG4gICAgLyoqIFRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIgdGhlIGxhc3Qga2V5ZG93biBiZWZvcmUgZm9jdXNpbmcgb3Igc2VsZWN0aW5nIG9wdGlvbiBiYXNlZCBvbiBhbHBoYW51bWVyaWMga2V5cy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwgPSAyNTA7XG5cbiAgICAvKiogQmluZHMgdG8gY29udHJvbCBhcmlhLWxhYmVsbGVkQnkgYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBTZXRzIGNvbnRyb2wgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBTZWxlY3QgSW5wdXQgTW9iaWxlIENvbmZpZ3VyYXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZyA9IHsgaGFzQ2xvc2VCdXR0b246IHRydWUgfTtcblxuICAgIC8qKiBTaG91bGQgc2VsZWN0IGJlIGlubGluZWQuICovXG4gICAgQElucHV0KClcbiAgICBpbmxpbmUgPSB0cnVlO1xuXG4gICAgLyoqIEFkZGl0aW9uYWwgY2xhc3NuYW1lIGZvciB0aGUgc2VsZWN0IGNvbnRyb2wgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdENvbnRyb2xDbGFzczogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBZGRpdGlvbmFsIGNsYXNzbmFtZSBmb3IgdGhlIHNlbGVjdCBkcm9wZG93biBidXR0b24gZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdERyb3Bkb3duQnV0dG9uQ2xhc3M6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIG9wZW4gc3RhdGUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpc09wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIG9mIHRoZSBzZWxlY3QgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihPcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBfb3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdENvbnRyb2wnKVxuICAgIF9jb250cm9sRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogUmVmZXJlbmNlIHRvIGVsZW1lbnQgY29udGFpbmluZyBsaXN0IG9mIG9wdGlvbnMgKi9cbiAgICBAVmlld0NoaWxkKCdzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlJylcbiAgICBzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBSZWZlcmVuY2UgdG8gcm9vdCBlbGVtZW50IGZvciB0aGUgbW9iaWxlIG1vZGUgZGlhbG9nICovXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udGFpbmVyJylcbiAgICBfZGlhbG9nQ29udGFpbmVyRWxlbWVudFJlZjogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIE92ZXJsYXkgcGFuZSBjb250YWluaW5nIHRoZSBvcHRpb25zLlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXkpXG4gICAgX292ZXJsYXlEaXI6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFJlZmVyZW50IHRvIHRoZSBvcHRpb247cyBjb250YWluZXJcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdvcHRpb25QYW5lbCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIF9vcHRpb25QYW5lbDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHBvcG92ZXIgaXMgb3BlbmVkXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9pc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9saXZlQW5ub3VuY2VyOiBMaXZlQW5ub3VuY2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW50ZXJuYWxWYWx1ZTogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FsY3VsYXRlZE1heEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnRsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8T3B0aW9uQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUcmlnZ2VycyB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2VsZWN0Q29udHJvbENsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbdGhpcy5zdGF0ZSA/IGBpcy0ke3RoaXMuc3RhdGV9YCA6ICcnLCB0aGlzLnNlbGVjdENvbnRyb2xDbGFzc11cbiAgICAgICAgICAgIC5maWx0ZXIoKGNsYXNzTmFtZSkgPT4gISFjbGFzc05hbWUpXG4gICAgICAgICAgICAuam9pbignICcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDb21iaW5lZCBzdHJlYW0gb2YgYWxsIG9mIHRoZSBjaGlsZCBvcHRpb25zJyBjaGFuZ2UgZXZlbnRzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IF9vcHRpb25TZWxlY3Rpb25DaGFuZ2VzOiBPYnNlcnZhYmxlPEZkT3B0aW9uU2VsZWN0aW9uQ2hhbmdlPiA9IGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuXG4gICAgICAgIHJldHVybiBfb3B0aW9ucz8uY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKF9vcHRpb25zKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi5fb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGlvbkNoYW5nZSkpKVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb250cm9sRWxlbUZvbnRTaXplID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFN0b3JlZCBjYWxjdWxhdGVkIG1heEhlaWdodCBmcm9tIE9wdGlvbiBQYW5lbFxuICAgICAqL1xuICAgIHByaXZhdGUgX21heEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIF9yZXNpemVTY3JvbGxIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVDYWxjdWxhdGVkSGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gdGhpcy5kaXNhYmxlZCA/IC0xIDogMDtcbiAgICB9XG5cbiAgICAvKiogU2VsZWN0ZWQgb3B0aW9uLiAqL1xuICAgIGdldCBzZWxlY3RlZCgpOiBPcHRpb25Db21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF07XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyBzZWxlY3RlZCB2YWx1ZSBpZiBhbnkuICovXG4gICAgZ2V0IHRyaWdnZXJWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbXB0eVZhbHVlID0gJyAnO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlciB8fCBlbXB0eVZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLnZpZXdWYWx1ZSB8fCB0aGlzLnBsYWNlaG9sZGVyIHx8IGVtcHR5VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIGVxdWFsIHRvIGNsb3NlXG4gICAgICogVGVsbHMgdGhlIE9wdGlvbkxpc3QgaWYgaXQncyBjbG9zYWJsZSBieSBzaW1wbHkgc2VsZWN0aW5nIHRoZSBpdGVtIGVpdGhlciB3aXRoIENMSUNLIHwgU1BBQ0UgfCBFTlRFUi5cbiAgICAgKiBXaGVuIHdlIGFyZSBpbiBtb2JpbGUgbW9kZSAobW9iaWxlPXRydWUpIGFuZCBoYXZlIHdlIGhhdmUgZW5hYmxlZCBjb25maXJtYXRpb24gYnV0dG9ucyB0aGVuIHdlXG4gICAgICogZG9udCBjbG9zZSBvcHRpb24gbGlzdC4gV2UgY2xvc2Ugb25seSBhZnRlciB3ZSBoaXQgY29uZmlybSBidXR0b24uXG4gICAgICovXG4gICAgZ2V0IGNhbkNsb3NlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISh0aGlzLm1vYmlsZSAmJiB0aGlzLm1vYmlsZUNvbmZpZy5hcHByb3ZlQnV0dG9uVGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgY29udHJvbCBjYW4gYmUgaW50ZXJhY3RlZCB3aXRoICovXG4gICAgZ2V0IGlzSW50ZXJhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgd2UgY2FuIGVtaXQgYSB2YWx1ZS4gVGhleSBhcmUgMyBkaWZmZXJlbnQgcGF0aHMgd2hlcmUgd2UgY2FuIGVtaXQgdmFsdWU6XG4gICAgICogIC0gV2UgYXJlIG5vdCBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT1mYWxzZVxuICAgICAqICAtIFdlIGFyZSBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT10cnVlIGFuZCBtb2JpbGUgZGlhbG9nIGFzIGp1c3QgY2xvc2UgWCBidXR0b24gdG8gZGlzbWlzcyBpdFxuICAgICAqICAtIFdlIGFyZSBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT10cnVlIGFuZCBtb2JpbGUgZGlhbG9nIGhhcyBBcHByb3ZlQnV0dG9uIGF2YWlsYWJsZSBhbmRcbiAgICAgKiAgZGlhbG9nIGlzIGNsb3NlZC4gKG1lYW5pbmcgd2UgYWxyZWFkeSBjbGlja2VkIHRoaXMgYnV0dG9uKVxuICAgICAqL1xuICAgIGdldCBjYW5FbWl0VmFsdWVDaGFuZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5tb2JpbGUgfHxcbiAgICAgICAgICAgICh0aGlzLm1vYmlsZSAmJlxuICAgICAgICAgICAgICAgIC8vIEFwcHJvdmUgKyBDYW5jZWxcbiAgICAgICAgICAgICAgICAhIXRoaXMubW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0ICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuX2lzT3BlbikgfHxcbiAgICAgICAgICAgIC8vIENsb3NlQnV0dG9uLiBFbWl0cyB3aGVuIHlvdSBjbGljayBvbiB0aGUgb3B0aW9uIGl0ZW1cbiAgICAgICAgICAgICghIXRoaXMubW9iaWxlQ29uZmlnLmhhc0Nsb3NlQnV0dG9uICYmICEhdGhpcy5tb2JpbGVDb25maWcuYXBwcm92ZUJ1dHRvblRleHQgPT09IGZhbHNlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuID0+IG8xID09PSBvMjtcblxuICAgIC8qKiBGdW5jdGlvbiB0byBjb21wYXJlIHRoZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb21wYXJlV2l0aChmbjogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ2NvbXBhcmVXaXRoYCBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29tcGFyZVdpdGggPSBmbjtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsKSB7XG4gICAgICAgICAgICAvLyBBIGRpZmZlcmVudCBjb21wYXJhdG9yIG1lYW5zIHRoZSBzZWxlY3Rpb24gY291bGQgY2hhbmdlLlxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBjb21wYXJlV2l0aCgpOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJlV2l0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNlZCB8fCB0aGlzLl9pc09wZW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FsY3VsYXRlZE1heEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4SGVpZ2h0IHx8IHRoaXMuX2NhbGN1bGF0ZWRNYXhIZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSBfdGFiSW5kZXg6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfa2V5TWFuYWdlclNlcnZpY2U6IFNlbGVjdEtleU1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSBwYXJzZUludChfdGFiSW5kZXgsIDEwKSB8fCAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVDb21tb25CZWhhdmlvcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5faW5pdEtleU1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5fc2V0dXBNb2JpbGVNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyRXZlbnRzQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1sndHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCddICYmIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci53aXRoVHlwZUFoZWFkKHRoaXMudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgICAgICAgdGhpcy5fdGFiSW5kZXggPSB0aGlzLmRpc2FibGVkID8gLTEgOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9jbGVhbnVwQ29tbW9uQmVoYXZpb3IoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBzZWxlY3QgcG9wb3ZlciBib2R5LiAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkgfHwgIXRoaXMuX29wdGlvbnMgfHwgIXRoaXMuX2dldEl0ZW1Db3VudCgpIHx8IHRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fY29udHJvbEVsZW1Gb250U2l6ZSA9IHBhcnNlSW50KFxuICAgICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9jb250cm9sRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5mb250U2l6ZSB8fCAnMCcsXG4gICAgICAgICAgICAxMFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24obnVsbCk7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgdGhpcy5fY29udHJvbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbG9zZShmb3JjZUNsb3NlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiAoZm9yY2VDbG9zZSB8fCB0aGlzLmNsb3NlKSkge1xuICAgICAgICAgICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2lzUnRsKCkgPyAncnRsJyA6ICdsdHInKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyBzZWxlY3QgY29udHJvbC4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgKHRoaXMuX2NvbnRyb2xFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBCbHVycyBzZWxlY3QgY29udHJvbC4gKi9cbiAgICBibHVyKCk6IHZvaWQge1xuICAgICAgICAodGhpcy5fY29udHJvbEVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gZnJvbSBDb250cm9sVmFsdWUgQWNjZXNzb3IgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0U2VsZWN0aW9uQnlWYWx1ZSh2YWx1ZTogYW55IHwgYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgY29ycmVzcG9uZGluZ09wdGlvbiA9IHRoaXMuX3NlbGVjdFZhbHVlKHZhbHVlKTtcblxuICAgICAgICAvLyBTaGlmdCBmb2N1cyB0byB0aGUgYWN0aXZlIGl0ZW0uIE5vdGUgdGhhdCB3ZSBzaG91bGRuJ3QgZG8gdGhpcyBpbiBtdWx0aXBsZVxuICAgICAgICAvLyBtb2RlLCBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCBvcHRpb24gdGhlIHVzZXIgaW50ZXJhY3RlZCB3aXRoIGxhc3QuXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGNvcnJlc3BvbmRpbmdPcHRpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9pc09wZW4pIHtcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSByZXNldCB0aGUgaGlnaGxpZ2h0ZWQgb3B0aW9uLiBOb3RlIHRoYXQgd2Ugb25seSB3YW50IHRvIGRvIHRoaXMgd2hpbGVcbiAgICAgICAgICAgIC8vIGNsb3NlZCwgYmVjYXVzZSBkb2luZyBpdCB3aGlsZSBvcGVuIGNhbiBzaGlmdCB0aGUgdXNlcidzIGZvY3VzIHVubmVjZXNzYXJpbHkuXG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdFZhbHVlKHZhbHVlOiBhbnkpOiBPcHRpb25Db21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5fb3B0aW9ucy5maW5kKChvcHRpb246IE9wdGlvbkNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyBUcmVhdCBudWxsIGFzIGEgc3BlY2lhbCByZXNldCB2YWx1ZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlICE9IG51bGwgJiYgdGhpcy5fY29tcGFyZVdpdGgob3B0aW9uLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOb3RpZnkgZGV2ZWxvcGVycyBvZiBlcnJvcnMgaW4gdGhlaXIgY29tcGFyYXRvci5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoY29ycmVzcG9uZGluZ09wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KGNvcnJlc3BvbmRpbmdPcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvcnJlc3BvbmRpbmdPcHRpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlzT3BlbiA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgX2tleU1hbmFnZXJTZXJ2aWNlLiAqL1xuICAgIF9nZXRLZXlTZXJ2aWNlKCk6IFNlbGVjdEtleU1hbmFnZXJTZXJ2aWNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oaWdobGlnaHRDb3JyZWN0T3B0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIgJiYgdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlciAmJiAhdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2xlYW51cENvbW1vbkJlaGF2aW9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXRpYWxpemVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIC8vIERlZmVyIHNldHRpbmcgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBcIkV4cHJlc3Npb25cbiAgICAgICAgLy8gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWRcIiBlcnJvcnMgZnJvbSBBbmd1bGFyLlxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5uZ0NvbnRyb2wgPyB0aGlzLm5nQ29udHJvbC52YWx1ZSA6IHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHBvc2Ugb3V0c2lkZSBvZiB0aGlzIG1peGluIHRvIGdpdmUgY29tcG9uZW50IGFiaWxpdHlcbiAgICAgKiB0byB1cGRhdGUgY2FsdWNsYXRlZE1heEhlaWdodCBpZiBuZWVkZWRcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX3VwZGF0ZUNhbGN1bGF0ZWRIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZWRNYXhIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjQ1O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldE9wdGlvblNjcm9sbFBvc2l0aW9uKG9wdGlvbkluZGV4OiBudW1iZXIsIGl0ZW1IZWlnaHQ6IG51bWJlciwgY3VycmVudFNjcm9sbFBvc2l0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBvcHRpb25IZWlnaHQgPSB0aGlzLl9vcHRpb25zLmdldChvcHRpb25JbmRleCk/Ll9nZXRIdG1sRWxlbWVudCgpLm9mZnNldEhlaWdodCB8fCBpdGVtSGVpZ2h0O1xuICAgICAgICBjb25zdCBvcHRpb25PZmZzZXQgPSBvcHRpb25JbmRleCAqIG9wdGlvbkhlaWdodDtcbiAgICAgICAgaWYgKG9wdGlvbk9mZnNldCA8IGN1cnJlbnRTY3JvbGxQb3NpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbk9mZnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25PZmZzZXQgKyBvcHRpb25IZWlnaHQgPiBjdXJyZW50U2Nyb2xsUG9zaXRpb24gKyBTRUxFQ1RfUEFORUxfTUFYX0hFSUdIVCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIG9wdGlvbk9mZnNldCAtIFNFTEVDVF9QQU5FTF9NQVhfSEVJR0hUICsgb3B0aW9uSGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudFNjcm9sbFBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldEl0ZW1IZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gYWxzbyBpbmNsdWRlIGJvcmRlciB3aXRoIGRlZmF1bHQgdmFsdWUgMS5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xFbGVtRm9udFNpemUgKiBTRUxFQ1RfSVRFTV9IRUlHSFRfRU0gKyAxO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXRpYWxpemVDb21tb25CZWhhdmlvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWw8T3B0aW9uQ29tcG9uZW50PihmYWxzZSk7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9jb21wb25lbnQgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhbGN1bGF0ZWRIZWlnaHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1J0bCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLnN1YnNjcmliZSgocnRsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3J0bCA9IHJ0bDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcnRsID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlZ2lzdGVyRXZlbnRzQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgZXZlbnQuYWRkZWQuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uX3NlbGVjdCgpKTtcbiAgICAgICAgICAgIGV2ZW50LnJlbW92ZWQuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uX2Rlc2VsZWN0KCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0T3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy5faXNPcGVuXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5faGFuZGxlT3BlbktleWRvd24oZXZlbnQpXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5faGFuZGxlQ2xvc2VkS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFU0NBUEUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250cm9sRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlciAmJiB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5pZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYnV0dG9uQ2xpY2soKTogdm9pZCB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldE9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRPckRlc3Ryb3llZCA9IG1lcmdlKHRoaXMuX29wdGlvbnMuY2hhbmdlcywgdGhpcy5fZGVzdHJveSk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9uU2VsZWN0aW9uQ2hhbmdlcy5waXBlKHRha2VVbnRpbChjaGFuZ2VkT3JEZXN0cm95ZWQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblNlbGVjdChldmVudC5zb3VyY2UsIGV2ZW50LmlzVXNlcklucHV0KTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LmlzVXNlcklucHV0ICYmIHRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gTGlzdGVuIHRvIGNoYW5nZXMgaW4gdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBfb3B0aW9ucyBhbmQgcmVhY3QgYWNjb3JkaW5nbHkuXG4gICAgICAgIC8vIEhhbmRsZXMgY2FzZXMgbGlrZSB0aGUgbGFiZWxzIG9mIHRoZSBzZWxlY3RlZCBfb3B0aW9ucyBjaGFuZ2luZy5cbiAgICAgICAgbWVyZ2UoLi4udGhpcy5fb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLl9zdGF0ZUNoYW5nZXMpKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKGNoYW5nZWRPckRlc3Ryb3llZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBJbnZva2VkIHdoZW4gYW4gb3B0aW9uIGlzIGNsaWNrZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb25TZWxlY3Qob3B0aW9uOiBPcHRpb25Db21wb25lbnQsIGlzVXNlcklucHV0OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdhc1NlbGVjdGVkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pO1xuICAgICAgICBpZiAoKG9wdGlvbi52YWx1ZSA9PT0gbnVsbCB8fCBvcHRpb24udmFsdWUgPT09IHVuZGVmaW5lZCkgJiYgdGhpcy51bnNlbGVjdE1pc3NpbmdPcHRpb24pIHtcbiAgICAgICAgICAgIG9wdGlvbi5fZGVzZWxlY3QoKTtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0U2VsZWN0Q2hhbmdlKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAod2FzU2VsZWN0ZWQgIT09IG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA/IHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChvcHRpb24pIDogdGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1VzZXJJbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0ob3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh3YXNTZWxlY3RlZCAhPT0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pIHx8IHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0U2VsZWN0Q2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VtaXRTZWxlY3RDaGFuZ2UoZGVmYXVsdFZhbD86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jYW5FbWl0VmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2ludGVybmFsVmFsdWUgPVxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkICYmIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkLmxlbmd0aCAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLnNlbGVjdGVkIGFzIE9wdGlvbkNvbXBvbmVudCkudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0VmFsO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9pbnRlcm5hbFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRJdGVtQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvblBhbmVsICYmIHRoaXMuX2hlYWRlckVsZW1lbnRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMubGVuZ3RoICsgdGhpcy5faGVhZGVyRWxlbWVudHMoKS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGVhZGVyRWxlbWVudHMoKTogTm9kZUxpc3RPZjxFbGVtZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25QYW5lbD8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFNFTEVDVF9IRUFERVJfSURFTlRJRklFUik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXR1cE1vYmlsZU1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogU0VMRUNUX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUR5bmFtaWNNb2R1bGUoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdE9wdGlvbnNMaXN0VGVtcGxhdGUsXG4gICAgICAgICAgICBTZWxlY3RNb2JpbGVNb2R1bGUsXG4gICAgICAgICAgICBTZWxlY3RNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXByZWNhdGVkU2VsZWN0Q1NTQ2xhc3NlcyBpbXBsZW1lbnRzIE1vZHVsZURlcHJlY2F0aW9uIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1lc3NhZ2UgPSBgU2VsZWN0IENTUyBjbGFzc2VzIGZkLXNlbGVjdC0tY29tcGFjdCwgZmQtc2VsZWN0LS1jb21wYWN0LS1tb2JpbGUsIGZkLXBvcG92ZXItY3VzdG9tLXNlbGVjdC1ib2R5LCBmZC1wb3BvdmVyLWN1c3RvbS1saXN0IGFyZSBkZXByZWNhdGVkYDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWx0ZXJuYXRpdmUgPSB7XG4gICAgICAgIG5hbWU6ICdJbnNwZWN0IHRoZSBlbGVtZW50cyBvZiB0aGUgU2VsZWN0IGNvbXBvbmVudCB0byBzZWUgdGhlIG5ldyBjbGFzc2VzJyxcbiAgICAgICAgbGluazogWycvY29yZScsICdzZWxlY3QnXVxuICAgIH07XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlID8gbW9iaWxlVGVtcGxhdGUgOiBkZXNrdG9wVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkZXNrdG9wVGVtcGxhdGU+XG4gICAgPCEtLSBAZGVwcmVjYXRlZCBsZWF2aW5nIGNsYXNzIGZkLXBvcG92ZXItY3VzdG9tLWxpc3QgdG8gc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS0tPlxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgIGFkZGl0aW9uYWxCb2R5Q2xhc3M9XCJmZC1zZWxlY3QtZHJvcGRvd24gZmQtcG9wb3Zlci1jdXN0b20tbGlzdFwiXG4gICAgICAgIFtpc09wZW5dPVwiX2lzT3BlblwiXG4gICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgIFthcHBlbmRUb109XCJhcHBlbmRUb1wiXG4gICAgICAgIFtjbG9zZU9uRXNjYXBlS2V5XT1cInRydWVcIlxuICAgICAgICBbZmlsbENvbnRyb2xNb2RlXT1cImZpbGxDb250cm9sTW9kZVwiXG4gICAgICAgIFttYXhXaWR0aF09XCI2MDBcIlxuICAgICAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJjbG9zZU9uT3V0c2lkZUNsaWNrXCJcbiAgICAgICAgKGlzT3BlbkNoYW5nZSk9XCJfcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RJbnB1dENvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cblxuICAgICAgICA8IS0tIEBkZXByZWNhdGVkIGxlYXZpbmcgY2xhc3MgZmQtcG9wb3Zlci1jdXN0b20tc2VsZWN0LWJvZHkgdG8gc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS0tPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IGNsYXNzPVwiZmQtcG9wb3Zlci1jdXN0b20tc2VsZWN0LWJvZHlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0T3B0aW9uc0xpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdElucHV0Q29udHJvbFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC1zZWxlY3RfX2NvbnRyb2xcIlxuICAgICAgICByb2xlPVwibGlzdFwiXG4gICAgICAgICNzZWxlY3RDb250cm9sXG4gICAgICAgIFtjbGFzc109XCJfc2VsZWN0Q29udHJvbENsYXNzXCJcbiAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJfaXNPcGVuXCJcbiAgICAgICAgW2NsYXNzLmlzLWV4cGFuZGVkXT1cIl9pc09wZW5cIlxuICAgICAgICBbY2xhc3MuaXMtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MuaXMtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJfdGFiSW5kZXhcIlxuICAgICAgICBbYXR0ci5pZF09XCJjb250cm9sSWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZV09XCJfaXNPcGVuXCJcbiAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzZWxlY3RlZCA/IHNlbGVjdGVkLnNlbGVjdGVkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiX2lzT3BlblwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImNvbnRyb2xJZCArICctbGlzdC1ib3gnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCIhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZClcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwidHJpZ2dlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgKCdwbGF0Zm9ybVNlbGVjdC5zZWxlY3RPcHRpb25MYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiX2dldEFyaWFBY3RpdmVEZXNjZW5kYW50KClcIlxuICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXMoKVwiXG4gICAgICAgIChibHVyKT1cIl9vbkJsdXIoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2IHJvbGU9XCJsaXN0aXRlbVwiIGNsYXNzPVwiZmQtc2VsZWN0X190ZXh0LWNvbnRlbnRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRyaWdnZXJWYWx1ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZSA/IGNvbnRyb2xUZW1wbGF0ZSA6IGRlZmF1bHRTZWxlY3RDb250ZW50XCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRyaWdnZXJWYWx1ZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgICAge3sgdHJpZ2dlclZhbHVlIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZmQtYnV0dG9uIGZkLWJ1dHRvbi0tdHJhbnNwYXJlbnQgZmQtc2VsZWN0X19idXR0b25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0RHJvcGRvd25CdXR0b25DbGFzc1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiZ2x5cGhcIj48L2ZkLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPCEtLSAgICAgICAgPGJ1dHRvbi0tPlxuICAgICAgICA8IS0tICAgICAgICAgICAgZmQtYnV0dG9uLS0+XG4gICAgICAgIDwhLS0gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCItLT5cbiAgICAgICAgPCEtLSAgICAgICAgICAgIGNsYXNzPVwiZmQtYnV0dG9uJiM0NTsmIzQ1O3RyYW5zcGFyZW50IGZkLXNlbGVjdF9fYnV0dG9uIHt7IHNlbGVjdERyb3Bkb3duQnV0dG9uQ2xhc3MgfX1cIi0tPlxuICAgICAgICA8IS0tICAgICAgICAgICAgKGNsaWNrKT1cIl9idXR0b25DbGljaygpXCItLT5cbiAgICAgICAgPCEtLSAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRvbmx5XCItLT5cbiAgICAgICAgPCEtLSAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiLS0+XG4gICAgICAgIDwhLS0gICAgICAgICAgICBbZ2x5cGhdPVwiZ2x5cGhcIi0tPlxuICAgICAgICA8IS0tICAgICAgICA+PC9idXR0b24+LS0+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdE9wdGlvbnNMaXN0VGVtcGxhdGU+XG4gICAgPHVsXG4gICAgICAgICNvcHRpb25QYW5lbFxuICAgICAgICBmZC1saXN0XG4gICAgICAgIGNsYXNzPVwiZmQtc2VsZWN0LW9wdGlvbnNcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbbW9iaWxlTW9kZV09XCJtb2JpbGVcIlxuICAgICAgICBbZHJvcGRvd25Nb2RlXT1cInRydWVcIlxuICAgICAgICBbaGFzTWVzc2FnZV09XCIhIXN0YXRlTWVzc2FnZVwiXG4gICAgICAgIFthdHRyLmlkXT1cImNvbnRyb2xJZCArICctbGlzdC1ib3gnXCJcbiAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0IHx8IGNhbGN1bGF0ZWRNYXhIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgW2F0dHIudG9vbHRpcF09XCJ0cmlnZ2VyVmFsdWVcIlxuICAgID5cbiAgICAgICAgPGxpXG4gICAgICAgICAgICAqbmdJZj1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBmZC1saXN0LW1lc3NhZ2VcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICBbdHlwZV09XCJzdGF0ZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICA+PC9saT5cblxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC91bD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RJbnB1dENvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiAjZGlhbG9nQ29udGFpbmVyPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -13,8 +13,8 @@ import { DeprecatedSelectCompactDirective } from './deprecated-select-compact.di
13
13
  import * as i0 from "@angular/core";
14
14
  export class SelectModule {
15
15
  }
16
- SelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- SelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: SelectModule, declarations: [SelectComponent, OptionComponent, DeprecatedSelectCompactDirective], imports: [BusyIndicatorModule,
16
+ SelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
+ SelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: SelectModule, declarations: [SelectComponent, OptionComponent, DeprecatedSelectCompactDirective], imports: [BusyIndicatorModule,
18
18
  CommonModule,
19
19
  PopoverModule,
20
20
  ButtonModule,
@@ -22,7 +22,7 @@ SelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
22
22
  ListModule,
23
23
  ContentDensityModule,
24
24
  I18nModule], exports: [SelectComponent, OptionComponent, DeprecatedSelectCompactDirective, ContentDensityModule] });
25
- SelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectModule, imports: [BusyIndicatorModule,
25
+ SelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectModule, imports: [BusyIndicatorModule,
26
26
  CommonModule,
27
27
  PopoverModule,
28
28
  ButtonModule,
@@ -30,7 +30,7 @@ SelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
30
30
  ListModule,
31
31
  ContentDensityModule,
32
32
  I18nModule, ContentDensityModule] });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: SelectModule, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectModule, decorators: [{
34
34
  type: NgModule,
35
35
  args: [{
36
36
  declarations: [SelectComponent, OptionComponent, DeprecatedSelectCompactDirective],
@@ -22,9 +22,9 @@ export class ValueStateAriaMessageService {
22
22
  this.error = 'Value State Error';
23
23
  }
24
24
  }
25
- ValueStateAriaMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ValueStateAriaMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
- ValueStateAriaMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ValueStateAriaMessageService, providedIn: 'root' });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ValueStateAriaMessageService, decorators: [{
25
+ ValueStateAriaMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ValueStateAriaMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
+ ValueStateAriaMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ValueStateAriaMessageService, providedIn: 'root' });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ValueStateAriaMessageService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{
30
30
  providedIn: 'root'