desy-angular 12.0.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/esm2022/lib/desy-angular.module.mjs +10 -9
  2. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +5 -4
  3. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +8 -5
  4. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +11 -6
  5. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +3 -3
  6. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +6 -5
  7. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +5 -4
  8. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +4 -3
  9. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +15 -15
  10. package/esm2022/lib/desy-buttons/interfaces/listbox-item-data.mjs +1 -1
  11. package/esm2022/lib/desy-commons/interfaces/title-data.mjs +1 -1
  12. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +6 -5
  13. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +11 -10
  14. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +10 -9
  15. package/esm2022/lib/desy-forms/components/datepicker/datepicker.component.mjs +190 -0
  16. package/esm2022/lib/desy-forms/components/datepicker/datepicker.pipe.mjs +34 -0
  17. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +4 -3
  18. package/esm2022/lib/desy-forms/components/fieldset/fieldset.component.mjs +5 -4
  19. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +8 -7
  20. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +4 -3
  21. package/esm2022/lib/desy-forms/components/input/input.component.mjs +8 -7
  22. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +11 -10
  23. package/esm2022/lib/desy-forms/components/label/label.component.mjs +4 -3
  24. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +6 -5
  25. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +11 -10
  26. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +7 -6
  27. package/esm2022/lib/desy-forms/components/select/select.component.mjs +8 -7
  28. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +8 -7
  29. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +4 -3
  30. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +13 -12
  31. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +5 -4
  32. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +12 -9
  33. package/esm2022/lib/desy-forms/desy-forms.module.mjs +40 -24
  34. package/esm2022/lib/desy-forms/interfaces/error-message-data.mjs +1 -1
  35. package/esm2022/lib/desy-forms/interfaces/fieldset-data.mjs +1 -1
  36. package/esm2022/lib/desy-forms/interfaces/hint-data.mjs +1 -1
  37. package/esm2022/lib/desy-forms/interfaces/item-checkbox-data.mjs +1 -1
  38. package/esm2022/lib/desy-forms/interfaces/item-date-input-data.mjs +1 -1
  39. package/esm2022/lib/desy-forms/interfaces/item-input-group-data.mjs +1 -1
  40. package/esm2022/lib/desy-forms/interfaces/item-radio-data.mjs +1 -1
  41. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +1 -1
  42. package/esm2022/lib/desy-forms/interfaces/select-item-data.mjs +1 -1
  43. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +4 -3
  44. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +15 -14
  45. package/esm2022/lib/desy-modals/interfaces/dialog-options.mjs +1 -1
  46. package/esm2022/lib/desy-modals/interfaces/modal-options.mjs +1 -1
  47. package/esm2022/lib/desy-modals/services/dialog.service.mjs +2 -2
  48. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +4 -3
  49. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +5 -4
  50. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +4 -2
  51. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +6 -5
  52. package/esm2022/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.mjs +246 -2
  53. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +4 -3
  54. package/esm2022/lib/desy-nav/components/header/header.component.mjs +15 -14
  55. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +1 -1
  56. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +3 -3
  57. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +3 -3
  58. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +6 -5
  59. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +5 -4
  60. package/esm2022/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.mjs +16 -0
  61. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +7 -3
  62. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +8 -5
  63. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +6 -5
  64. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +3 -3
  65. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +280 -31
  66. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +3 -3
  67. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +3 -3
  68. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +6 -5
  69. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +3 -3
  70. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +281 -32
  71. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +3 -3
  72. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +6 -5
  73. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +7 -6
  74. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +8 -3
  75. package/esm2022/lib/desy-nav/desy-nav.module.mjs +6 -5
  76. package/esm2022/lib/desy-nav/interfaces/breadcrumbs.data.mjs +1 -1
  77. package/esm2022/lib/desy-nav/interfaces/error-summary-data.mjs +1 -1
  78. package/esm2022/lib/desy-nav/interfaces/footer-data.mjs +1 -1
  79. package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +2 -1
  80. package/esm2022/lib/desy-nav/interfaces/header-dropdown-data.mjs +1 -1
  81. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +1 -1
  82. package/esm2022/lib/desy-nav/interfaces/header-navigation-item-data.mjs +1 -1
  83. package/esm2022/lib/desy-nav/interfaces/header-subnav-data.mjs +1 -1
  84. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +1 -1
  85. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +1 -1
  86. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +1 -1
  87. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +1 -1
  88. package/esm2022/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +1 -1
  89. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +1 -1
  90. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs +1 -1
  91. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub.mjs +1 -1
  92. package/esm2022/lib/desy-nav/interfaces/menubar-item.mjs +1 -1
  93. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +1 -1
  94. package/esm2022/lib/desy-nav/interfaces/notification-items-data.mjs +1 -1
  95. package/esm2022/lib/desy-nav/interfaces/notification-options.mjs +1 -1
  96. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +22 -22
  97. package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +2 -2
  98. package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +16 -8
  99. package/esm2022/lib/desy-tables/components/table/table.component.mjs +26 -5
  100. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +16 -16
  101. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +12 -7
  102. package/esm2022/lib/desy-tables/interfaces/cell-data.mjs +1 -1
  103. package/esm2022/lib/desy-tables/interfaces/wrapper-data.mjs +1 -1
  104. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +279 -30
  105. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +5 -4
  106. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +4 -3
  107. package/esm2022/lib/desy-views/components/card/card.component.mjs +4 -3
  108. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +13 -4
  109. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +4 -3
  110. package/esm2022/lib/desy-views/components/details/details.component.mjs +4 -3
  111. package/esm2022/lib/desy-views/components/item/item.component.mjs +11 -10
  112. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +280 -32
  113. package/esm2022/lib/desy-views/components/status/status.component.mjs +283 -32
  114. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +286 -37
  115. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +284 -35
  116. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +281 -33
  117. package/esm2022/lib/desy-views/desy-views.module.mjs +27 -32
  118. package/esm2022/lib/desy-views/interfaces/accordion-item.data.mjs +1 -1
  119. package/esm2022/lib/desy-views/interfaces/alert-options.mjs +1 -1
  120. package/esm2022/lib/desy-views/interfaces/description-item.data.mjs +1 -1
  121. package/esm2022/lib/desy-views/interfaces/status-data.mjs +1 -1
  122. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +1 -1
  123. package/esm2022/lib/desy-views/interfaces/tabs-panel-data.mjs +1 -1
  124. package/esm2022/lib/desy-views/interfaces/term-definition.data.mjs +1 -1
  125. package/esm2022/lib/shared/components/accessibility/accessibility-attributes.mjs +78 -0
  126. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +124 -2
  127. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +126 -2
  128. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +126 -2
  129. package/esm2022/lib/shared/components/index.mjs +4 -3
  130. package/esm2022/lib/shared/components/spinner/spinner.component.mjs +329 -0
  131. package/esm2022/lib/shared/directives/accessibility-directive.mjs +52 -0
  132. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +21 -4
  133. package/esm2022/lib/shared/interfaces/accessibility-data.mjs +2 -0
  134. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +2 -2
  135. package/esm2022/lib/shared/shared.module.mjs +12 -7
  136. package/esm2022/lib/shared/sharedExternal.module.mjs +24 -0
  137. package/esm2022/lib/shared/utils/search-utils.mjs +5 -1
  138. package/esm2022/public-api.mjs +5 -2
  139. package/fesm2022/desy-angular.mjs +4273 -965
  140. package/fesm2022/desy-angular.mjs.map +1 -1
  141. package/lib/desy-angular.module.d.ts +2 -1
  142. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +2 -0
  143. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +3 -3
  144. package/lib/desy-buttons/desy-buttons.module.d.ts +3 -3
  145. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +2 -2
  146. package/lib/desy-commons/interfaces/title-data.d.ts +2 -2
  147. package/lib/desy-forms/components/datepicker/datepicker.component.d.ts +31 -0
  148. package/lib/desy-forms/components/datepicker/datepicker.pipe.d.ts +7 -0
  149. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +5 -5
  150. package/lib/desy-forms/components/tree/tree.component.d.ts +5 -4
  151. package/lib/desy-forms/desy-forms.module.d.ts +10 -6
  152. package/lib/desy-forms/interfaces/error-message-data.d.ts +2 -2
  153. package/lib/desy-forms/interfaces/fieldset-data.d.ts +2 -2
  154. package/lib/desy-forms/interfaces/hint-data.d.ts +2 -2
  155. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +3 -3
  156. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +3 -3
  157. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +3 -3
  158. package/lib/desy-forms/interfaces/item-radio-data.d.ts +3 -3
  159. package/lib/desy-forms/interfaces/label-data.d.ts +2 -2
  160. package/lib/desy-forms/interfaces/select-item-data.d.ts +2 -2
  161. package/lib/desy-modals/components/modal/modal.component.d.ts +8 -8
  162. package/lib/desy-modals/interfaces/dialog-options.d.ts +2 -2
  163. package/lib/desy-modals/interfaces/modal-options.d.ts +4 -4
  164. package/lib/desy-modals/services/dialog.service.d.ts +1 -1
  165. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +2 -1
  166. package/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.d.ts +61 -0
  167. package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +1 -1
  168. package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +1 -1
  169. package/lib/desy-nav/components/header-mini/header-mini.component.d.ts +1 -1
  170. package/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.d.ts +8 -0
  171. package/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.d.ts +4 -2
  172. package/lib/desy-nav/components/links-list/links-list.component.d.ts +2 -1
  173. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +2 -2
  174. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +75 -13
  175. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +3 -3
  176. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +3 -3
  177. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +3 -3
  178. package/lib/desy-nav/components/menubar/menubar.component.d.ts +75 -13
  179. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +2 -2
  180. package/lib/desy-nav/components/notification/notification.component.d.ts +2 -2
  181. package/lib/desy-nav/desy-nav.module.d.ts +29 -28
  182. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +2 -2
  183. package/lib/desy-nav/interfaces/error-summary-data.d.ts +2 -2
  184. package/lib/desy-nav/interfaces/footer-data.d.ts +3 -3
  185. package/lib/desy-nav/interfaces/footer-logo.d.ts +1 -0
  186. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +2 -2
  187. package/lib/desy-nav/interfaces/header-mobile-text-data.d.ts +2 -2
  188. package/lib/desy-nav/interfaces/header-navigation-item-data.d.ts +2 -2
  189. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +2 -2
  190. package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +2 -2
  191. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +2 -2
  192. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +2 -2
  193. package/lib/desy-nav/interfaces/menu-navigation.d.ts +2 -2
  194. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +2 -2
  195. package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +2 -2
  196. package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +2 -2
  197. package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +2 -2
  198. package/lib/desy-nav/interfaces/menubar-item.d.ts +3 -3
  199. package/lib/desy-nav/interfaces/nav-item.data.d.ts +2 -2
  200. package/lib/desy-nav/interfaces/notification-items-data.d.ts +2 -2
  201. package/lib/desy-nav/interfaces/notification-options.d.ts +4 -4
  202. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +4 -4
  203. package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +3 -3
  204. package/lib/desy-pagination/desy-pagination.module.d.ts +3 -1
  205. package/lib/desy-tables/components/table/table.component.d.ts +3 -0
  206. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +1 -1
  207. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +1 -0
  208. package/lib/desy-tables/interfaces/cell-data.d.ts +2 -2
  209. package/lib/desy-tables/interfaces/wrapper-data.d.ts +2 -2
  210. package/lib/desy-views/components/accordion/accordion.component.d.ts +75 -13
  211. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +5 -1
  212. package/lib/desy-views/components/item/item.component.d.ts +7 -7
  213. package/lib/desy-views/components/media-object/media-object.component.d.ts +75 -13
  214. package/lib/desy-views/components/status/status.component.d.ts +75 -13
  215. package/lib/desy-views/components/status-item/status-item.component.d.ts +77 -15
  216. package/lib/desy-views/components/tabs/tabs.component.d.ts +77 -15
  217. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +75 -13
  218. package/lib/desy-views/desy-views.module.d.ts +30 -31
  219. package/lib/desy-views/interfaces/accordion-item.data.d.ts +2 -2
  220. package/lib/desy-views/interfaces/alert-options.d.ts +2 -2
  221. package/lib/desy-views/interfaces/description-item.data.d.ts +2 -2
  222. package/lib/desy-views/interfaces/status-data.d.ts +2 -2
  223. package/lib/desy-views/interfaces/tabs-items-data.d.ts +2 -2
  224. package/lib/desy-views/interfaces/tabs-panel-data.d.ts +2 -2
  225. package/lib/desy-views/interfaces/term-definition.data.d.ts +2 -2
  226. package/lib/shared/components/accessibility/accessibility-attributes.d.ts +1 -0
  227. package/lib/shared/components/accessibility/accessibility.component.d.ts +78 -17
  228. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +79 -16
  229. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +79 -16
  230. package/lib/shared/components/index.d.ts +3 -2
  231. package/lib/shared/components/spinner/spinner.component.d.ts +86 -0
  232. package/lib/shared/directives/accessibility-directive.d.ts +16 -0
  233. package/lib/shared/directives/custom-inner-content.directive.d.ts +3 -2
  234. package/lib/shared/interfaces/accessibility-data.d.ts +77 -0
  235. package/lib/shared/shared.module.d.ts +4 -3
  236. package/lib/shared/sharedExternal.module.d.ts +8 -0
  237. package/package.json +2 -2
  238. package/public-api.d.ts +4 -1
  239. package/esm2022/lib/desy-forms/interfaces/accesibility-data.mjs +0 -2
  240. package/esm2022/lib/desy-pagination/interfaces/index.mjs +0 -2
  241. package/esm2022/lib/desy-views/components/spinner/spinner.component.mjs +0 -81
  242. package/esm2022/lib/shared/interfaces/accesibility-data.mjs +0 -2
  243. package/lib/desy-forms/interfaces/accesibility-data.d.ts +0 -15
  244. package/lib/desy-pagination/interfaces/index.d.ts +0 -1
  245. package/lib/desy-views/components/spinner/spinner.component.d.ts +0 -24
  246. package/lib/shared/interfaces/accesibility-data.d.ts +0 -16
@@ -16,13 +16,14 @@ import * as i0 from "@angular/core";
16
16
  import * as i1 from "@angular/forms";
17
17
  import * as i2 from "@angular/common";
18
18
  import * as i3 from "../../../shared/directives/custom-inner-content.directive";
19
- import * as i4 from "../template-driven-wrapper/template-driven-wrapper.component";
20
- import * as i5 from "../hint/hint.component";
21
- import * as i6 from "../error-message/error-message.component";
22
- import * as i7 from "../fieldset/fieldset.component";
23
- import * as i8 from "../input/input.component";
24
- import * as i9 from "../select/select.component";
25
- import * as i10 from "../../../shared/pipes/make-html-list.pipe";
19
+ import * as i4 from "../../../shared/directives/accessibility-directive";
20
+ import * as i5 from "../template-driven-wrapper/template-driven-wrapper.component";
21
+ import * as i6 from "../hint/hint.component";
22
+ import * as i7 from "../error-message/error-message.component";
23
+ import * as i8 from "../fieldset/fieldset.component";
24
+ import * as i9 from "../input/input.component";
25
+ import * as i10 from "../select/select.component";
26
+ import * as i11 from "../../../shared/pipes/make-html-list.pipe";
26
27
  export class InputGroupComponent extends FormFieldComponent {
27
28
  constructor(controlContainer) {
28
29
  super();
@@ -150,7 +151,7 @@ export class InputGroupComponent extends FormFieldComponent {
150
151
  useExisting: forwardRef(() => InputGroupComponent),
151
152
  multi: true
152
153
  }
153
- ], queries: [{ propertyName: "itemsComponents", predicate: InputGroupItemComponent }, { propertyName: "fieldsetComponent", predicate: FieldsetComponent }, { propertyName: "legendComponent", predicate: LegendComponent }], viewQueries: [{ propertyName: "innerHtml", first: true, predicate: ["innerHtml"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\n<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\n<ng-template #itemDivider let-item=\"item\">\n <div role=\"separator\" [ngClass]=\"item.divider.classes\">\n <ng-container *desyCustomInnerContent=\"{ template: getItemDividerTemplate(item), html: getItemDividerHtml(item) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\n \n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\n\n <!-- Reactive forms -->\n <div *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\" \n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div [ngModelGroup]=\"ngModelGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value == undefined ? null:item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n \n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\" \n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div *ngIf=\"!controlContainer\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n\n\n <ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [headingLevel]=\"fieldsetData.headingLevel\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{text: legendData.text, html: legendData.html, classes: legendData.classes, isPageHeading: legendData.isPageHeading}\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n\n <ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n </ng-container>\n </ng-container>\n\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "component", type: i4.TemplateDrivenWrapperComponent, selector: "desy-template-driven-wrapper" }, { kind: "component", type: i5.HintComponent, selector: "desy-hint", inputs: ["id", "classes", "html", "text"] }, { kind: "component", type: i6.ErrorMessageComponent, selector: "desy-error-message", inputs: ["id", "classes", "html", "text", "visuallyHiddenText"] }, { kind: "component", type: i7.FieldsetComponent, selector: "desy-fieldset", inputs: ["describedBy", "errorId", "legendRef", "legendData", "legendText", "classes", "caller", "id", "headingLevel"] }, { kind: "component", type: i8.InputComponent, selector: "desy-input", inputs: ["name", "type", "describedBy", "pattern", "inputmode", "placeholder", "formGroupClasses", "classes", "autocomplete", "maxlength", "errorId", "attributes"] }, { kind: "component", type: i9.SelectComponent, selector: "desy-select", inputs: ["name", "items", "describedBy", "formGroupClasses", "classes"] }, { kind: "pipe", type: i10.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
154
+ ], queries: [{ propertyName: "itemsComponents", predicate: InputGroupItemComponent }, { propertyName: "fieldsetComponent", predicate: FieldsetComponent }, { propertyName: "legendComponent", predicate: LegendComponent }], viewQueries: [{ propertyName: "innerHtml", first: true, predicate: ["innerHtml"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\n<ng-template #itemDivider\n let-item=\"item\">\n <div role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{ template: getItemDividerTemplate(item), html: getItemDividerHtml(item) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\"\n [text]=\"hintText\"\n [id]=\"getHintId()\"></desy-hint>\n\n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\"\n [id]=\"getErrorId()\"></desy-error-message>\n\n <!-- Reactive forms -->\n <div *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div [ngModelGroup]=\"ngModelGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value === undefined ? null : item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div *ngIf=\"!controlContainer\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n\n\n<ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [headingLevel]=\"fieldsetData.headingLevel\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{text: legendData.text, html: legendData.html, classes: legendData.classes, isPageHeading: legendData.isPageHeading}\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n\n <ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n </ng-container>\n</ng-container>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "component", type: i5.TemplateDrivenWrapperComponent, selector: "desy-template-driven-wrapper" }, { kind: "component", type: i6.HintComponent, selector: "desy-hint", inputs: ["id", "classes", "html", "text"] }, { kind: "component", type: i7.ErrorMessageComponent, selector: "desy-error-message", inputs: ["id", "classes", "html", "text", "visuallyHiddenText"] }, { kind: "component", type: i8.FieldsetComponent, selector: "desy-fieldset", inputs: ["describedBy", "errorId", "legendRef", "legendData", "legendText", "classes", "caller", "id", "headingLevel"] }, { kind: "component", type: i9.InputComponent, selector: "desy-input", inputs: ["name", "type", "describedBy", "pattern", "inputmode", "placeholder", "formGroupClasses", "classes", "autocomplete", "maxlength", "errorId", "attributes"] }, { kind: "component", type: i10.SelectComponent, selector: "desy-select", inputs: ["name", "items", "describedBy", "formGroupClasses", "classes"] }, { kind: "pipe", type: i11.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
154
155
  }
155
156
  __decorate([
156
157
  DesyOnInputChange('onExternalChange'),
@@ -176,7 +177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
176
177
  useExisting: forwardRef(() => InputGroupComponent),
177
178
  multi: true
178
179
  }
179
- ], template: "\n<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\n<ng-template #itemDivider let-item=\"item\">\n <div role=\"separator\" [ngClass]=\"item.divider.classes\">\n <ng-container *desyCustomInnerContent=\"{ template: getItemDividerTemplate(item), html: getItemDividerHtml(item) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\n \n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\n\n <!-- Reactive forms -->\n <div *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\" \n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div [ngModelGroup]=\"ngModelGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value == undefined ? null:item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n \n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\" \n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div *ngIf=\"!controlContainer\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\" (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"></desy-input>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n\n\n <ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [headingLevel]=\"fieldsetData.headingLevel\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{text: legendData.text, html: legendData.html, classes: legendData.classes, isPageHeading: legendData.isPageHeading}\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n\n <ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n </ng-container>\n </ng-container>\n\n" }]
180
+ ], template: "<!-- Divider no forma parte del formulario, por lo que es reutilizable en cualquier caso -->\n<ng-template #itemDivider\n let-item=\"item\">\n <div role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{ template: getItemDividerTemplate(item), html: getItemDividerHtml(item) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\"\n [text]=\"hintText\"\n [id]=\"getHintId()\"></desy-hint>\n\n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\"\n [id]=\"getErrorId()\"></desy-error-message>\n\n <!-- Reactive forms -->\n <div *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div [ngModelGroup]=\"ngModelGroup\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value === undefined ? null : item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div *ngIf=\"!controlContainer\"\n [ngClass]=\"classes ? classes : 'flex'\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngTemplateOutlet=\"isSelectItem(item) ? itemSelect : (item.divider ? itemDivider : itemInput); context: {item: item}\"></ng-container>\n <ng-template #itemSelect>\n <desy-select [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [items]=\"getItemSelectOptions(item)\"\n [disabled]=\"item.disabled\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-select>\n </ng-template>\n <ng-template #itemInput>\n <desy-input [id]=\"item.id ? item.id : id + '-' + item.name\"\n [labelRef]=\"getItemLabelRef(item)\"\n [labelData]=\"getItemLabelData(item)\"\n [classes]=\"getItemClasses(item)\"\n [formGroupClasses]=\"item.formGroupClasses\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, $event)\"\n [type]=\"item.type ? item.type : 'text'\"\n [inputmode]=\"item.inputmode\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"item.disabled\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"getItemAriaDescribedBy(item)\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"getErrorId()\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [tabindex]=\"item.tabindex\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autocomplete]=\"item.autocomplete\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [inputmode]=\"item.inputmode\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [placeholder]=\"item.placeholder\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\">\n </desy-input>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n\n\n<ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [headingLevel]=\"fieldsetData.headingLevel\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{text: legendData.text, html: legendData.html, classes: legendData.classes, isPageHeading: legendData.isPageHeading}\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[ getHintId(), getErrorId()] | makeHtmlList:null\"\n role=\"group\"></desy-fieldset>\n\n <ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n </ng-container>\n</ng-container>" }]
180
181
  }], ctorParameters: function () { return [{ type: i1.ControlContainer, decorators: [{
181
182
  type: Optional
182
183
  }] }]; }, propDecorators: { ngModelGroup: [{
@@ -225,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
225
226
  type: ViewChild,
226
227
  args: ['innerHtml', { static: true }]
227
228
  }] } });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1mb3Jtcy9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQUUsWUFBWSxFQUM3QixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxRQUFRLEVBQUUsTUFBTSxFQUNoQixTQUFTLEVBQ1QsV0FBVyxFQUFFLFNBQVMsRUFFdkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFhLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzVGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyx5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QUFmLEtBQUs7Z0JBRzZCLEdBQUc7c0JBQXJDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNTLElBQUk7c0JBQTdDLFdBQVc7dUJBQUMsMkJBQTJCO2dCQUNULGdCQUFnQjtzQkFBOUMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxPQUFPO2dCQUVwQixZQUFZO3NCQUFwQixLQUFLO2dCQUNXLEVBQUU7c0JBQWxCLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFb0MsZUFBZTtzQkFBeEQsZUFBZTt1QkFBQyx1QkFBdUI7Z0JBR0osaUJBQWlCO3NCQUFwRCxlQUFlO3VCQUFDLGlCQUFpQjtnQkFHQSxlQUFlO3NCQUFoRCxlQUFlO3VCQUFDLGVBQWU7Z0JBRVUsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPcHRpb25hbCwgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsXG4gIE9uQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RmllbGRzZXREYXRhLCBMZWdlbmREYXRhLCBJdGVtSW5wdXRHcm91cERhdGEsIExhYmVsRGF0YSwgU2VsZWN0SXRlbURhdGF9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExlZ2VuZENvbXBvbmVudCB9IGZyb20gJy4uL2ZpZWxkc2V0L2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHtJbnB1dEdyb3VwSXRlbUNvbXBvbmVudH0gZnJvbSAnLi9pbnB1dC1ncm91cC1pdGVtL2lucHV0LWdyb3VwLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7RGVzeU9uSW5wdXRDaGFuZ2V9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvcic7XG5pbXBvcnQge0Rlc3lDb250ZW50Q2hpbGR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktY29udGVudC1jaGlsZC5kZWNvcmF0b3InO1xuaW1wb3J0IHtGaWVsZHNldENvbXBvbmVudH0gZnJvbSAnLi4vZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50JztcbmltcG9ydCB7TWFrZUh0bWxMaXN0UGlwZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3BpcGVzL21ha2UtaHRtbC1saXN0LnBpcGUnO1xuaW1wb3J0IHtJbnB1dEdyb3VwSW5wdXRDb21wb25lbnR9IGZyb20gJy4vaW5wdXQtZ3JvdXAtaW5wdXQvaW5wdXQtZ3JvdXAtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7SW5wdXRHcm91cFNlbGVjdENvbXBvbmVudH0gZnJvbSAnLi9pbnB1dC1ncm91cC1zZWxlY3QvaW5wdXQtZ3JvdXAtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge0lucHV0R3JvdXBEaXZpZGVyQ29tcG9uZW50fSBmcm9tICcuL2lucHV0LWdyb3VwLWRpdmlkZXIvaW5wdXQtZ3JvdXAtZGl2aWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktaW5wdXQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0R3JvdXBDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRHcm91cENvbXBvbmVudCBleHRlbmRzIEZvcm1GaWVsZENvbXBvbmVudDxhbnk+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBuZ01vZGVsR3JvdXA6IHN0cmluZztcblxuICBARGVzeU9uSW5wdXRDaGFuZ2UoJ29uRXh0ZXJuYWxDaGFuZ2UnKVxuICBASW5wdXQoKSBpdGVtczogSXRlbUlucHV0R3JvdXBEYXRhW107XG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPEl0ZW1JbnB1dEdyb3VwRGF0YVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8SXRlbUlucHV0R3JvdXBEYXRhW10+KCk7XG5cbiAgQERlc3lPbklucHV0Q2hhbmdlKCdvbkV4dGVybmFsQ2hhbmdlJylcbiAgQElucHV0KCkgbmFtZVByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG5cbiAgLy8gIGZvcm0gZ3JvdXAgY2xhc3MgLSBhc2lnbmFyIGNsYXNlcyBhIGxhIGV0aXF1ZXRhIGRlc3ktaW5wdXQtZ3JvdXBcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jLWZvcm0tZ3JvdXAnKSBjZmcgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmMtZm9ybS1ncm91cC0tZXJyb3InKSBjZmdyOiBib29sZWFuO1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZm9ybUdyb3VwQ2xhc3NlczogYW55O1xuXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWNsYXJlIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGZpZWxkc2V0LCBkaWZlcmVudGVzIGZvcm1hcyBkZSBpbXBsZW1lbnRhciwgZW51bWVyYWRhcyBwb3IgcHJpb3JpZGFkXG4gICAqIDEpIGluY2x1aXIgb2JqZXRvIEZpZWxkc2V0RGF0YSAoaW50ZXJmYXogZXhwdWVzdGEpXG4gICAqIDIpIGluY2x1aXIgdGVtcGxhdGUgbGVnZW5kXG4gICAqIDMpIGluY2x1aXIgbGVnZW5kRGF0YSAtIGluY2x1aXIgdW4gZmllbGRzZXQgY29uIHVuYSBsZWdlbmRhIGNvbiBsb3MgcGFyYW1ldHJvcyBwYXNhZG9zICAoaW50ZXJmYXogZXhwdWVzdGEpXG4gICAqIDQpIGluY2x1aXIgbGVnZW5kVGV4dCAtIGluY2x1aXIgdW4gZmllbGRzZXQgY29uIHVuIHRleHRvIGVuIGxhIGxlZ2VuZGFcbiAgICovXG4gIEBJbnB1dCgpIGZpZWxkc2V0RGF0YTogRmllbGRzZXREYXRhO1xuICBASW5wdXQoKSBsZWdlbmRSZWY6IFRlbXBsYXRlUmVmPExlZ2VuZENvbXBvbmVudD47XG4gIEBJbnB1dCgpIGxlZ2VuZERhdGE6IExlZ2VuZERhdGE7XG4gIEBJbnB1dCgpIGxlZ2VuZFRleHQ6IHN0cmluZztcblxuICBAQ29udGVudENoaWxkcmVuKElucHV0R3JvdXBJdGVtQ29tcG9uZW50KSBpdGVtc0NvbXBvbmVudHM6IFF1ZXJ5TGlzdDxJbnB1dEdyb3VwSXRlbUNvbXBvbmVudD47XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoeyBvblNldENhbGxiYWNrTmFtZTogJ292ZXJyaWRlRmllbGRzZXRQYXJhbXMnfSlcbiAgQENvbnRlbnRDaGlsZHJlbihGaWVsZHNldENvbXBvbmVudCkgZmllbGRzZXRDb21wb25lbnQ6IEZpZWxkc2V0Q29tcG9uZW50O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihMZWdlbmRDb21wb25lbnQpIGxlZ2VuZENvbXBvbmVudDogTGVnZW5kQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ2lubmVySHRtbCcsIHsgc3RhdGljOiB0cnVlIH0pIGlubmVySHRtbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGNvbnRlbnRJbml0ID0gZmFsc2U7XG4gIC8vcHVibGljIG9nRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHVibGljIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jZmdyID0gKHRoaXMuaGFzRXJyb3JzTWVzc2FnZSgpIHx8IHRoaXMuZm9ybUdyb3VwQ2xhc3NlcyA9PT0gJ2MtZm9ybS1ncm91cC0tZXJyb3InKTtcbiAgfVxuXG4gIGdldCBvZ0Zvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50SW5pdCA9IHRydWU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMudmFsdWVbdGhpcy5nZXRJdGVtTmFtZShpdGVtKV07XG4gICAgICAgIGl0ZW0udmFsdWUgPSB2ID8gdiA6IG51bGw7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KHRoaXMuaXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIG9uRXh0ZXJuYWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRJbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0ge307XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMudmFsdWVbdGhpcy5nZXRJdGVtTmFtZShpdGVtKV0gPSBpdGVtLnZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25JbnRlcm5hbENoYW5nZShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEsIGl0ZW1WYWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbU5hbWUgPSB0aGlzLmdldEl0ZW1OYW1lKGl0ZW0pO1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHt9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbHVlW2l0ZW1OYW1lXSAhPT0gaXRlbVZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlW2l0ZW1OYW1lXSA9IGl0ZW1WYWx1ZTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgSW5wdXRHcm91cElucHV0Q29tcG9uZW50IHx8IGl0ZW0gaW5zdGFuY2VvZiBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50KSB7XG4gICAgICAgIGl0ZW0udmFsdWVDaGFuZ2UuZW1pdChpdGVtVmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgICBpdGVtLnZhbHVlID0gaXRlbVZhbHVlO1xuICAgICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodGhpcy5pdGVtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGVGaWVsZHNldFBhcmFtcyhmaWVsZHNldDogRmllbGRzZXRDb21wb25lbnQpOiB2b2lkIHtcbiAgICBmaWVsZHNldC5jYWxsZXIgPSB0aGlzLmlubmVySHRtbDtcbiAgICBmaWVsZHNldC5lcnJvcklkID0gdGhpcy5nZXRFcnJvcklkKCk7XG4gICAgZmllbGRzZXQuZGVzY3JpYmVkQnkgPSBuZXcgTWFrZUh0bWxMaXN0UGlwZSgpLnRyYW5zZm9ybShbdGhpcy5nZXRIaW50SWQoKSwgdGhpcy5nZXRFcnJvcklkKCldLCBudWxsKTtcbiAgICBmaWVsZHNldC5yb2xlID0gJ2dyb3VwJztcbiAgICBmaWVsZHNldC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKlxuICAgKiBNw6l0b2RvcyBwYXJhIHByb3BvcmNpb25hciBkYXRvc1xuICAgKi9cbiAgZ2V0SXRlbXMoKTogSXRlbUlucHV0R3JvdXBEYXRhW10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zQ29tcG9uZW50cyAmJiB0aGlzLml0ZW1zQ29tcG9uZW50cy5sZW5ndGggPyB0aGlzLml0ZW1zQ29tcG9uZW50cy50b0FycmF5KCkgOiB0aGlzLml0ZW1zO1xuICB9XG5cbiAgZ2V0SXRlbUxhYmVsUmVmKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgSW5wdXRHcm91cElucHV0Q29tcG9uZW50IHx8IGl0ZW0gaW5zdGFuY2VvZiBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50ID8gaXRlbS5sYWJlbFJlZiA6IG51bGw7XG4gIH1cblxuICBnZXRJdGVtTGFiZWxEYXRhKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IExhYmVsRGF0YSB7XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWxEYXRhID8gaXRlbS5sYWJlbERhdGEgOiB7IHRleHQ6IGl0ZW0ubGFiZWxUZXh0IH07XG4gIH1cblxuICBoYXNGaWVsZHNldCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5oYXNGaWVsZHNldENvbXBvbmVudCgpIHx8IHRoaXMuaGFzTGVnZW5kQ29tcG9uZW50KCkgfHwgdGhpcy5sZWdlbmRSZWYgfHwgdGhpcy5maWVsZHNldERhdGFcbiAgICAgIHx8ICh0aGlzLmxlZ2VuZERhdGEgJiYgKHRoaXMubGVnZW5kRGF0YS50ZXh0IHx8IHRoaXMubGVnZW5kRGF0YS5odG1sKSkgfHwgdGhpcy5sZWdlbmRUZXh0KTtcbiAgfVxuXG4gIGhhc0ZpZWxkc2V0Q29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmllbGRzZXRDb21wb25lbnQ7XG4gIH1cblxuICBoYXNMZWdlbmRDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5sZWdlbmRDb21wb25lbnQ7XG4gIH1cblxuICBnZXRJdGVtTmFtZShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hbWVQcmVmaXggPyB0aGlzLm5hbWVQcmVmaXggKyAnLScgKyBpdGVtLm5hbWUgOiBpdGVtLm5hbWU7XG4gIH1cblxuICBnZXRJdGVtU2VsZWN0T3B0aW9ucyhpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBTZWxlY3RJdGVtRGF0YVtdIHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIElucHV0R3JvdXBTZWxlY3RDb21wb25lbnQgP1xuICAgICAgaXRlbS5zZWxlY3RJdGVtQ29tcG9uZW50TGlzdC50b0FycmF5KCkgOiBpdGVtLnNlbGVjdEl0ZW1zO1xuICB9XG5cbiAgZ2V0SXRlbURpdmlkZXJUZW1wbGF0ZShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gaXRlbS5kaXZpZGVyIGluc3RhbmNlb2YgSW5wdXRHcm91cERpdmlkZXJDb21wb25lbnQgPyBpdGVtLmRpdmlkZXIuZGl2aWRlckNvbnRlbnQgOiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbURpdmlkZXJIdG1sKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0uZGl2aWRlci5odG1sID8gaXRlbS5kaXZpZGVyLmh0bWwgOiBgPHA+JHsgU3RyaW5nVXRpbHMuZXNjYXBlSHRtbChpdGVtLmRpdmlkZXIudGV4dCkgfTwvcD5gO1xuICB9XG5cbiAgaXNTZWxlY3RJdGVtKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNTZWxlY3RJdGVtcztcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIElucHV0R3JvdXBTZWxlY3RDb21wb25lbnQpIHtcbiAgICAgIGhhc1NlbGVjdEl0ZW1zID0gaXRlbS5zZWxlY3RJdGVtQ29tcG9uZW50TGlzdCAmJiBpdGVtLnNlbGVjdEl0ZW1Db21wb25lbnRMaXN0Lmxlbmd0aCA+IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc1NlbGVjdEl0ZW1zID0gaXRlbS5zZWxlY3RJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0uaXNTZWxlY3QgJiYgaGFzU2VsZWN0SXRlbXM7XG4gIH1cblxuICBoYXNJdGVtTGFiZWwoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKChpdGVtLmxhYmVsRGF0YSAmJiAoaXRlbS5sYWJlbERhdGEudGV4dCB8fCBpdGVtLmxhYmVsRGF0YS5odG1sKSkgfHwgaXRlbS5sYWJlbFRleHQpO1xuICB9XG5cbiAgZ2V0SXRlbUNsYXNzZXMoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogc3RyaW5ne1xuICAgIHJldHVybiBuZXcgTWFrZUh0bWxMaXN0UGlwZSgpLnRyYW5zZm9ybShbJ21iLTAnLCBpdGVtLmNsYXNzZXMsIHRoaXMuaGFzRXJyb3JzTWVzc2FnZSgpID8gJ2JvcmRlci1hbGVydC1iYXNlIHJpbmctMiByaW5nLWFsZXJ0LWJhc2UnIDogbnVsbF0sIG51bGwpO1xuICB9XG5cbiAgZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBzdHJpbmd7XG4gICAgcmV0dXJuIG5ldyBNYWtlSHRtbExpc3RQaXBlKCkudHJhbnNmb3JtKFtpdGVtLmFyaWFEZXNjcmliZWRCeSwgdGhpcy5nZXRFcnJvcklkKCksIHRoaXMuZ2V0SGludElkKCldLCBudWxsKTtcbiAgfVxuXG59XG4iLCJcbjwhLS0gRGl2aWRlciBubyBmb3JtYSBwYXJ0ZSBkZWwgZm9ybXVsYXJpbywgcG9yIGxvIHF1ZSBlcyByZXV0aWxpemFibGUgZW4gY3VhbHF1aWVyIGNhc28gLS0+XG48bmctdGVtcGxhdGUgI2l0ZW1EaXZpZGVyIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IHJvbGU9XCJzZXBhcmF0b3JcIiBbbmdDbGFzc109XCJpdGVtLmRpdmlkZXIuY2xhc3Nlc1wiPlxuICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IHRlbXBsYXRlOiBnZXRJdGVtRGl2aWRlclRlbXBsYXRlKGl0ZW0pLCBodG1sOiBnZXRJdGVtRGl2aWRlckh0bWwoaXRlbSkgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5uZXJIdG1sPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJkZXN5LWhpbnRcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoaW50UmVmXCI+PC9uZy1jb250YWluZXI+XG4gIDxkZXN5LWhpbnQgKm5nSWY9XCIhaGludFJlZiAmJiBoaW50RGF0YVwiXG4gICAgICAgICAgICAgW2lkXT1cImdldEhpbnRJZCgpXCJcbiAgICAgICAgICAgICBbdGV4dF09XCJoaW50RGF0YS50ZXh0XCJcbiAgICAgICAgICAgICBbaHRtbF09XCJoaW50RGF0YS5odG1sXCJcbiAgICAgICAgICAgICBbY2xhc3Nlc109XCJoaW50RGF0YS5jbGFzc2VzXCJcbiAgICAgICAgICAgICBbcm9sZV09XCJoaW50RGF0YS5yb2xlXCJcbiAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImhpbnREYXRhLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJoaW50RGF0YS5hcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJoaW50RGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiaGludERhdGEuYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJoaW50RGF0YS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaGludERhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiaGludERhdGEuYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJoaW50RGF0YS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJoaW50RGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImhpbnREYXRhLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaGludERhdGEuYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaGludERhdGEudGFiaW5kZXhcIj48L2Rlc3ktaGludD5cbiAgPGRlc3ktaGludCAqbmdJZj1cIiFoaW50UmVmICYmICFoaW50RGF0YSAmJiBoaW50VGV4dFwiIFt0ZXh0XT1cImhpbnRUZXh0XCIgW2lkXT1cImdldEhpbnRJZCgpXCI+PC9kZXN5LWhpbnQ+XG4gIFxuICA8bmctY29udGVudCBzZWxlY3Q9XCJkZXN5LWVycm9yLW1lc3NhZ2VcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvck1lc3NhZ2VSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgZXJyb3JNZXNzYWdlRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlRGF0YS50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaHRtbF09XCJlcnJvck1lc3NhZ2VEYXRhLmh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImVycm9yTWVzc2FnZURhdGEuY2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3Zpc3VhbGx5SGlkZGVuVGV4dF09XCJlcnJvck1lc3NhZ2VEYXRhLnZpc3VhbGx5SGlkZGVuVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiZXJyb3JNZXNzYWdlRGF0YS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImVycm9yTWVzc2FnZURhdGEudGFiaW5kZXhcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgIWVycm9yTWVzc2FnZURhdGEgJiYgZXJyb3JNZXNzYWdlVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlVGV4dFwiIFtpZF09XCJnZXRFcnJvcklkKClcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cblxuICA8IS0tIFJlYWN0aXZlIGZvcm1zIC0tPlxuICA8ZGl2ICpuZ0lmPVwiY29udHJvbENvbnRhaW5lciAmJiAhbmdNb2RlbEdyb3VwXCJcbiAgICAgICBbZm9ybUdyb3VwXT1cIm9nRm9ybUdyb3VwXCJcbiAgICAgICBbbmdDbGFzc109XCJjbGFzc2VzID8gY2xhc3NlcyA6ICdmbGV4J1wiXG4gICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlzU2VsZWN0SXRlbShpdGVtKSA/IGl0ZW1TZWxlY3QgOiAoaXRlbS5kaXZpZGVyID8gaXRlbURpdmlkZXIgOiBpdGVtSW5wdXQpOyBjb250ZXh0OiB7aXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVNlbGVjdD5cbiAgICAgICAgPGRlc3ktc2VsZWN0IFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJnZXRJdGVtU2VsZWN0T3B0aW9ucyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG5cbiAgICAgICAgICAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIj48L2Rlc3ktc2VsZWN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbUlucHV0PlxuICAgICAgICA8ZGVzeS1pbnB1dCBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxEYXRhXT1cImdldEl0ZW1MYWJlbERhdGEoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIml0ZW0udHlwZSA/IGl0ZW0udHlwZSA6ICd0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dG1vZGVdPVwiaXRlbS5pbnB1dG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiaXRlbS5wYXR0ZXJuXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG5cbiAgICAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJpdGVtLm1heGxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhSGlkZGVuXT1cIml0ZW0uYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDdXJyZW50XT1cIml0ZW0uYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUVycm9yTWVzc2FnZV09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIj48L2Rlc3ktaW5wdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIFRlbXBsYXRlLWRyaXZlbiBmb3JtcyAtLT5cbiAgPGRlc3ktdGVtcGxhdGUtZHJpdmVuLXdyYXBwZXIgKm5nSWY9XCJjb250cm9sQ29udGFpbmVyICYmIG5nTW9kZWxHcm91cFwiPlxuICAgIDxkaXYgW25nTW9kZWxHcm91cF09XCJuZ01vZGVsR3JvdXBcIlxuICAgICAgICAgW25nQ2xhc3NdPVwiY2xhc3NlcyA/IGNsYXNzZXMgOiAnZmxleCdcIlxuICAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleCA/IHRhYmluZGV4IDogbnVsbFwiPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldEl0ZW1zKCk7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlzU2VsZWN0SXRlbShpdGVtKSA/IGl0ZW1TZWxlY3QgOiAoaXRlbS5kaXZpZGVyID8gaXRlbURpdmlkZXIgOiBpdGVtSW5wdXQpOyBjb250ZXh0OiB7aXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtU2VsZWN0PlxuICAgICAgICAgIDxkZXN5LXNlbGVjdCBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxEYXRhXT1cImdldEl0ZW1MYWJlbERhdGEoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXRlbS52YWx1ZSA9PSB1bmRlZmluZWQgPyBudWxsOml0ZW0udmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkludGVybmFsQ2hhbmdlKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZ2V0SXRlbVNlbGVjdE9wdGlvbnMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG5cbiAgICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiaXRlbS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiPjwvZGVzeS1zZWxlY3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbUlucHV0PlxuICAgICAgICAgIDxkZXN5LWlucHV0IFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxSZWZdPVwiZ2V0SXRlbUxhYmVsUmVmKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxEYXRhXT1cImdldEl0ZW1MYWJlbERhdGEoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwQ2xhc3Nlc109XCJpdGVtLmZvcm1Hcm91cENsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpdGVtLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnRlcm5hbENoYW5nZShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiAndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dG1vZGVdPVwiaXRlbS5pbnB1dG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cIml0ZW0ucGF0dGVyblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIml0ZW0ubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJpdGVtLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiPjwvZGVzeS1pbnB1dD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rlc3ktdGVtcGxhdGUtZHJpdmVuLXdyYXBwZXI+XG5cbiAgPCEtLSBXaXRoIG5nTW9kZWwtLT5cbiAgPGRpdiAqbmdJZj1cIiFjb250cm9sQ29udGFpbmVyXCJcbiAgICAgICBbbmdDbGFzc109XCJjbGFzc2VzID8gY2xhc3NlcyA6ICdmbGV4J1wiXG4gICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlzU2VsZWN0SXRlbShpdGVtKSA/IGl0ZW1TZWxlY3QgOiAoaXRlbS5kaXZpZGVyID8gaXRlbURpdmlkZXIgOiBpdGVtSW5wdXQpOyBjb250ZXh0OiB7aXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVNlbGVjdD5cbiAgICAgICAgPGRlc3ktc2VsZWN0IFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZ2V0SXRlbVNlbGVjdE9wdGlvbnMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXRlbS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW50ZXJuYWxDaGFuZ2UoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJpdGVtLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cIml0ZW0uYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiaXRlbS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJpdGVtLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCI+PC9kZXN5LXNlbGVjdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI2l0ZW1JbnB1dD5cbiAgICAgICAgPGRlc3ktaW5wdXQgW2lkXT1cIml0ZW0uaWQgPyBpdGVtLmlkIDogaWQgKyAnLScgKyBpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxSZWZdPVwiZ2V0SXRlbUxhYmVsUmVmKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwQ2xhc3Nlc109XCJpdGVtLmZvcm1Hcm91cENsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkludGVybmFsQ2hhbmdlKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiAndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpdGVtLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cIml0ZW0ucGF0dGVyblwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuXG4gICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiaXRlbS5tYXhsZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJpdGVtLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJnZXRJdGVtQXJpYURlc2NyaWJlZEJ5KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cIml0ZW0uYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cIml0ZW0uYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJpdGVtLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cIml0ZW0uYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJpdGVtLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCI+PC9kZXN5LWlucHV0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzRmllbGRzZXRDb21wb25lbnQoKVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRlc3ktZmllbGRzZXRcIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc0ZpZWxkc2V0Q29tcG9uZW50KClcIj5cbiAgICA8ZGVzeS1maWVsZHNldCAqbmdJZj1cImZpZWxkc2V0RGF0YVwiXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiZmllbGRzZXREYXRhLmNsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZHNldERhdGEuaWRcIlxuICAgICAgICAgICAgICAgICAgIFtsZWdlbmREYXRhXT1cImZpZWxkc2V0RGF0YS5sZWdlbmRcIlxuICAgICAgICAgICAgICAgICAgIFtoZWFkaW5nTGV2ZWxdPVwiZmllbGRzZXREYXRhLmhlYWRpbmdMZXZlbFwiXG4gICAgICAgICAgICAgICAgICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgICAgICAgICAgICAgICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgW2Rlc2NyaWJlZEJ5XT1cIltmaWVsZHNldERhdGEuZGVzY3JpYmVkQnksIGdldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0Om51bGxcIlxuICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJmaWVsZHNldERhdGEuYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiZmllbGRzZXREYXRhLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJmaWVsZHNldERhdGEuYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJmaWVsZHNldERhdGEuYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cImZpZWxkc2V0RGF0YS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJmaWVsZHNldERhdGEuYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJmaWVsZHNldERhdGEuYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiZmllbGRzZXREYXRhLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJmaWVsZHNldERhdGEuYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZmllbGRzZXREYXRhLnRhYmluZGV4XCI+PC9kZXN5LWZpZWxkc2V0PlxuICAgIDxkZXN5LWZpZWxkc2V0ICpuZ0lmPVwiIWZpZWxkc2V0RGF0YSAmJiBoYXNMZWdlbmRDb21wb25lbnQoKVwiXG4gICAgICAgICAgICAgICAgICAgW2xlZ2VuZFJlZl09XCJsZWdlbmRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgICAgICAgICAgICAgICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgW2Rlc2NyaWJlZEJ5XT1cIlsgZ2V0SGludElkKCksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6bnVsbFwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNsZWdlbmRUZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1sZWdlbmRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGVzeS1maWVsZHNldD5cbiAgICA8ZGVzeS1maWVsZHNldCAqbmdJZj1cIiFmaWVsZHNldERhdGEgJiYgIWhhc0xlZ2VuZENvbXBvbmVudCgpICYmIGxlZ2VuZFJlZlwiXG4gICAgICAgICAgICAgICAgICAgW2xlZ2VuZFJlZl09XCJsZWdlbmRSZWZcIlxuICAgICAgICAgICAgICAgICAgIFtjYWxsZXJdPVwiaW5uZXJIdG1sXCJcbiAgICAgICAgICAgICAgICAgICBbZXJyb3JJZF09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICAgIFtkZXNjcmliZWRCeV09XCJbIGdldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0Om51bGxcIlxuICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiPjwvZGVzeS1maWVsZHNldD5cbiAgICA8ZGVzeS1maWVsZHNldCAqbmdJZj1cIiFmaWVsZHNldERhdGEgJiYgIWhhc0xlZ2VuZENvbXBvbmVudCgpICYmICFsZWdlbmRSZWYgJiYgbGVnZW5kRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgW2xlZ2VuZERhdGFdPVwie3RleHQ6IGxlZ2VuZERhdGEudGV4dCwgaHRtbDogbGVnZW5kRGF0YS5odG1sLCAgY2xhc3NlczogbGVnZW5kRGF0YS5jbGFzc2VzLCBpc1BhZ2VIZWFkaW5nOiBsZWdlbmREYXRhLmlzUGFnZUhlYWRpbmd9XCJcbiAgICAgICAgICAgICAgICAgICBbY2FsbGVyXT1cImlubmVySHRtbFwiXG4gICAgICAgICAgICAgICAgICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICBbZGVzY3JpYmVkQnldPVwiWyBnZXRIaW50SWQoKSwgZ2V0RXJyb3JJZCgpXSB8IG1ha2VIdG1sTGlzdDpudWxsXCJcbiAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JvdXBcIj48L2Rlc3ktZmllbGRzZXQ+XG4gICAgPGRlc3ktZmllbGRzZXQgKm5nSWY9XCIhZmllbGRzZXREYXRhICYmICFoYXNMZWdlbmRDb21wb25lbnQoKSAmJiAhbGVnZW5kUmVmICYmICFsZWdlbmREYXRhICYmIGxlZ2VuZFRleHRcIlxuICAgICAgICAgICAgICAgICAgIFtsZWdlbmRUZXh0XT1cImxlZ2VuZFRleHRcIlxuICAgICAgICAgICAgICAgICAgIFtjYWxsZXJdPVwiaW5uZXJIdG1sXCJcbiAgICAgICAgICAgICAgICAgICBbZXJyb3JJZF09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICAgIFtkZXNjcmliZWRCeV09XCJbIGdldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0Om51bGxcIlxuICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiPjwvZGVzeS1maWVsZHNldD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzRmllbGRzZXQoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVySHRtbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuIl19
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1mb3Jtcy9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQUUsWUFBWSxFQUM3QixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxRQUFRLEVBQUUsTUFBTSxFQUNoQixTQUFTLEVBQ1QsV0FBVyxFQUFFLFNBQVMsRUFFdkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFhLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzVGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyx5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O3NCQUFmLEtBQUs7Z0JBRzZCLEdBQUc7c0JBQXJDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNTLElBQUk7c0JBQTdDLFdBQVc7dUJBQUMsMkJBQTJCO2dCQUNULGdCQUFnQjtzQkFBOUMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxPQUFPO2dCQUVwQixZQUFZO3NCQUFwQixLQUFLO2dCQUNXLEVBQUU7c0JBQWxCLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFb0MsZUFBZTtzQkFBeEQsZUFBZTt1QkFBQyx1QkFBdUI7Z0JBR0osaUJBQWlCO3NCQUFwRCxlQUFlO3VCQUFDLGlCQUFpQjtnQkFHQSxlQUFlO3NCQUFoRCxlQUFlO3VCQUFDLGVBQWU7Z0JBRVUsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPcHRpb25hbCwgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsXG4gIE9uQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RmllbGRzZXREYXRhLCBMZWdlbmREYXRhLCBJdGVtSW5wdXRHcm91cERhdGEsIExhYmVsRGF0YSwgU2VsZWN0SXRlbURhdGF9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExlZ2VuZENvbXBvbmVudCB9IGZyb20gJy4uL2ZpZWxkc2V0L2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHtJbnB1dEdyb3VwSXRlbUNvbXBvbmVudH0gZnJvbSAnLi9pbnB1dC1ncm91cC1pdGVtL2lucHV0LWdyb3VwLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7RGVzeU9uSW5wdXRDaGFuZ2V9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvcic7XG5pbXBvcnQge0Rlc3lDb250ZW50Q2hpbGR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktY29udGVudC1jaGlsZC5kZWNvcmF0b3InO1xuaW1wb3J0IHtGaWVsZHNldENvbXBvbmVudH0gZnJvbSAnLi4vZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50JztcbmltcG9ydCB7TWFrZUh0bWxMaXN0UGlwZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3BpcGVzL21ha2UtaHRtbC1saXN0LnBpcGUnO1xuaW1wb3J0IHtJbnB1dEdyb3VwSW5wdXRDb21wb25lbnR9IGZyb20gJy4vaW5wdXQtZ3JvdXAtaW5wdXQvaW5wdXQtZ3JvdXAtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7SW5wdXRHcm91cFNlbGVjdENvbXBvbmVudH0gZnJvbSAnLi9pbnB1dC1ncm91cC1zZWxlY3QvaW5wdXQtZ3JvdXAtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge0lucHV0R3JvdXBEaXZpZGVyQ29tcG9uZW50fSBmcm9tICcuL2lucHV0LWdyb3VwLWRpdmlkZXIvaW5wdXQtZ3JvdXAtZGl2aWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktaW5wdXQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0R3JvdXBDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRHcm91cENvbXBvbmVudCBleHRlbmRzIEZvcm1GaWVsZENvbXBvbmVudDxhbnk+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBuZ01vZGVsR3JvdXA6IHN0cmluZztcblxuICBARGVzeU9uSW5wdXRDaGFuZ2UoJ29uRXh0ZXJuYWxDaGFuZ2UnKVxuICBASW5wdXQoKSBpdGVtczogSXRlbUlucHV0R3JvdXBEYXRhW107XG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPEl0ZW1JbnB1dEdyb3VwRGF0YVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8SXRlbUlucHV0R3JvdXBEYXRhW10+KCk7XG5cbiAgQERlc3lPbklucHV0Q2hhbmdlKCdvbkV4dGVybmFsQ2hhbmdlJylcbiAgQElucHV0KCkgbmFtZVByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG5cbiAgLy8gIGZvcm0gZ3JvdXAgY2xhc3MgLSBhc2lnbmFyIGNsYXNlcyBhIGxhIGV0aXF1ZXRhIGRlc3ktaW5wdXQtZ3JvdXBcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jLWZvcm0tZ3JvdXAnKSBjZmcgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmMtZm9ybS1ncm91cC0tZXJyb3InKSBjZmdyOiBib29sZWFuO1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZm9ybUdyb3VwQ2xhc3NlczogYW55O1xuXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWNsYXJlIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGZpZWxkc2V0LCBkaWZlcmVudGVzIGZvcm1hcyBkZSBpbXBsZW1lbnRhciwgZW51bWVyYWRhcyBwb3IgcHJpb3JpZGFkXG4gICAqIDEpIGluY2x1aXIgb2JqZXRvIEZpZWxkc2V0RGF0YSAoaW50ZXJmYXogZXhwdWVzdGEpXG4gICAqIDIpIGluY2x1aXIgdGVtcGxhdGUgbGVnZW5kXG4gICAqIDMpIGluY2x1aXIgbGVnZW5kRGF0YSAtIGluY2x1aXIgdW4gZmllbGRzZXQgY29uIHVuYSBsZWdlbmRhIGNvbiBsb3MgcGFyYW1ldHJvcyBwYXNhZG9zICAoaW50ZXJmYXogZXhwdWVzdGEpXG4gICAqIDQpIGluY2x1aXIgbGVnZW5kVGV4dCAtIGluY2x1aXIgdW4gZmllbGRzZXQgY29uIHVuIHRleHRvIGVuIGxhIGxlZ2VuZGFcbiAgICovXG4gIEBJbnB1dCgpIGZpZWxkc2V0RGF0YTogRmllbGRzZXREYXRhO1xuICBASW5wdXQoKSBsZWdlbmRSZWY6IFRlbXBsYXRlUmVmPExlZ2VuZENvbXBvbmVudD47XG4gIEBJbnB1dCgpIGxlZ2VuZERhdGE6IExlZ2VuZERhdGE7XG4gIEBJbnB1dCgpIGxlZ2VuZFRleHQ6IHN0cmluZztcblxuICBAQ29udGVudENoaWxkcmVuKElucHV0R3JvdXBJdGVtQ29tcG9uZW50KSBpdGVtc0NvbXBvbmVudHM6IFF1ZXJ5TGlzdDxJbnB1dEdyb3VwSXRlbUNvbXBvbmVudD47XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoeyBvblNldENhbGxiYWNrTmFtZTogJ292ZXJyaWRlRmllbGRzZXRQYXJhbXMnfSlcbiAgQENvbnRlbnRDaGlsZHJlbihGaWVsZHNldENvbXBvbmVudCkgZmllbGRzZXRDb21wb25lbnQ6IEZpZWxkc2V0Q29tcG9uZW50O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihMZWdlbmRDb21wb25lbnQpIGxlZ2VuZENvbXBvbmVudDogTGVnZW5kQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ2lubmVySHRtbCcsIHsgc3RhdGljOiB0cnVlIH0pIGlubmVySHRtbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGNvbnRlbnRJbml0ID0gZmFsc2U7XG4gIC8vcHVibGljIG9nRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHVibGljIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jZmdyID0gKHRoaXMuaGFzRXJyb3JzTWVzc2FnZSgpIHx8IHRoaXMuZm9ybUdyb3VwQ2xhc3NlcyA9PT0gJ2MtZm9ybS1ncm91cC0tZXJyb3InKTtcbiAgfVxuXG4gIGdldCBvZ0Zvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50SW5pdCA9IHRydWU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMudmFsdWVbdGhpcy5nZXRJdGVtTmFtZShpdGVtKV07XG4gICAgICAgIGl0ZW0udmFsdWUgPSB2ID8gdiA6IG51bGw7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KHRoaXMuaXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIG9uRXh0ZXJuYWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRJbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0ge307XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMudmFsdWVbdGhpcy5nZXRJdGVtTmFtZShpdGVtKV0gPSBpdGVtLnZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25JbnRlcm5hbENoYW5nZShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEsIGl0ZW1WYWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbU5hbWUgPSB0aGlzLmdldEl0ZW1OYW1lKGl0ZW0pO1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHt9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbHVlW2l0ZW1OYW1lXSAhPT0gaXRlbVZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlW2l0ZW1OYW1lXSA9IGl0ZW1WYWx1ZTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgSW5wdXRHcm91cElucHV0Q29tcG9uZW50IHx8IGl0ZW0gaW5zdGFuY2VvZiBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50KSB7XG4gICAgICAgIGl0ZW0udmFsdWVDaGFuZ2UuZW1pdChpdGVtVmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgICBpdGVtLnZhbHVlID0gaXRlbVZhbHVlO1xuICAgICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodGhpcy5pdGVtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGVGaWVsZHNldFBhcmFtcyhmaWVsZHNldDogRmllbGRzZXRDb21wb25lbnQpOiB2b2lkIHtcbiAgICBmaWVsZHNldC5jYWxsZXIgPSB0aGlzLmlubmVySHRtbDtcbiAgICBmaWVsZHNldC5lcnJvcklkID0gdGhpcy5nZXRFcnJvcklkKCk7XG4gICAgZmllbGRzZXQuZGVzY3JpYmVkQnkgPSBuZXcgTWFrZUh0bWxMaXN0UGlwZSgpLnRyYW5zZm9ybShbdGhpcy5nZXRIaW50SWQoKSwgdGhpcy5nZXRFcnJvcklkKCldLCBudWxsKTtcbiAgICBmaWVsZHNldC5yb2xlID0gJ2dyb3VwJztcbiAgICBmaWVsZHNldC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKlxuICAgKiBNw6l0b2RvcyBwYXJhIHByb3BvcmNpb25hciBkYXRvc1xuICAgKi9cbiAgZ2V0SXRlbXMoKTogSXRlbUlucHV0R3JvdXBEYXRhW10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zQ29tcG9uZW50cyAmJiB0aGlzLml0ZW1zQ29tcG9uZW50cy5sZW5ndGggPyB0aGlzLml0ZW1zQ29tcG9uZW50cy50b0FycmF5KCkgOiB0aGlzLml0ZW1zO1xuICB9XG5cbiAgZ2V0SXRlbUxhYmVsUmVmKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgSW5wdXRHcm91cElucHV0Q29tcG9uZW50IHx8IGl0ZW0gaW5zdGFuY2VvZiBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50ID8gaXRlbS5sYWJlbFJlZiA6IG51bGw7XG4gIH1cblxuICBnZXRJdGVtTGFiZWxEYXRhKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IExhYmVsRGF0YSB7XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWxEYXRhID8gaXRlbS5sYWJlbERhdGEgOiB7IHRleHQ6IGl0ZW0ubGFiZWxUZXh0IH07XG4gIH1cblxuICBoYXNGaWVsZHNldCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5oYXNGaWVsZHNldENvbXBvbmVudCgpIHx8IHRoaXMuaGFzTGVnZW5kQ29tcG9uZW50KCkgfHwgdGhpcy5sZWdlbmRSZWYgfHwgdGhpcy5maWVsZHNldERhdGFcbiAgICAgIHx8ICh0aGlzLmxlZ2VuZERhdGEgJiYgKHRoaXMubGVnZW5kRGF0YS50ZXh0IHx8IHRoaXMubGVnZW5kRGF0YS5odG1sKSkgfHwgdGhpcy5sZWdlbmRUZXh0KTtcbiAgfVxuXG4gIGhhc0ZpZWxkc2V0Q29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmllbGRzZXRDb21wb25lbnQ7XG4gIH1cblxuICBoYXNMZWdlbmRDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5sZWdlbmRDb21wb25lbnQ7XG4gIH1cblxuICBnZXRJdGVtTmFtZShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hbWVQcmVmaXggPyB0aGlzLm5hbWVQcmVmaXggKyAnLScgKyBpdGVtLm5hbWUgOiBpdGVtLm5hbWU7XG4gIH1cblxuICBnZXRJdGVtU2VsZWN0T3B0aW9ucyhpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBTZWxlY3RJdGVtRGF0YVtdIHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIElucHV0R3JvdXBTZWxlY3RDb21wb25lbnQgP1xuICAgICAgaXRlbS5zZWxlY3RJdGVtQ29tcG9uZW50TGlzdC50b0FycmF5KCkgOiBpdGVtLnNlbGVjdEl0ZW1zO1xuICB9XG5cbiAgZ2V0SXRlbURpdmlkZXJUZW1wbGF0ZShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gaXRlbS5kaXZpZGVyIGluc3RhbmNlb2YgSW5wdXRHcm91cERpdmlkZXJDb21wb25lbnQgPyBpdGVtLmRpdmlkZXIuZGl2aWRlckNvbnRlbnQgOiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbURpdmlkZXJIdG1sKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0uZGl2aWRlci5odG1sID8gaXRlbS5kaXZpZGVyLmh0bWwgOiBgPHA+JHsgU3RyaW5nVXRpbHMuZXNjYXBlSHRtbChpdGVtLmRpdmlkZXIudGV4dCkgfTwvcD5gO1xuICB9XG5cbiAgaXNTZWxlY3RJdGVtKGl0ZW06IEl0ZW1JbnB1dEdyb3VwRGF0YSk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNTZWxlY3RJdGVtcztcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIElucHV0R3JvdXBTZWxlY3RDb21wb25lbnQpIHtcbiAgICAgIGhhc1NlbGVjdEl0ZW1zID0gaXRlbS5zZWxlY3RJdGVtQ29tcG9uZW50TGlzdCAmJiBpdGVtLnNlbGVjdEl0ZW1Db21wb25lbnRMaXN0Lmxlbmd0aCA+IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc1NlbGVjdEl0ZW1zID0gaXRlbS5zZWxlY3RJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0uaXNTZWxlY3QgJiYgaGFzU2VsZWN0SXRlbXM7XG4gIH1cblxuICBoYXNJdGVtTGFiZWwoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKChpdGVtLmxhYmVsRGF0YSAmJiAoaXRlbS5sYWJlbERhdGEudGV4dCB8fCBpdGVtLmxhYmVsRGF0YS5odG1sKSkgfHwgaXRlbS5sYWJlbFRleHQpO1xuICB9XG5cbiAgZ2V0SXRlbUNsYXNzZXMoaXRlbTogSXRlbUlucHV0R3JvdXBEYXRhKTogc3RyaW5ne1xuICAgIHJldHVybiBuZXcgTWFrZUh0bWxMaXN0UGlwZSgpLnRyYW5zZm9ybShbJ21iLTAnLCBpdGVtLmNsYXNzZXMsIHRoaXMuaGFzRXJyb3JzTWVzc2FnZSgpID8gJ2JvcmRlci1hbGVydC1iYXNlIHJpbmctMiByaW5nLWFsZXJ0LWJhc2UnIDogbnVsbF0sIG51bGwpO1xuICB9XG5cbiAgZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtOiBJdGVtSW5wdXRHcm91cERhdGEpOiBzdHJpbmd7XG4gICAgcmV0dXJuIG5ldyBNYWtlSHRtbExpc3RQaXBlKCkudHJhbnNmb3JtKFtpdGVtLmFyaWFEZXNjcmliZWRCeSwgdGhpcy5nZXRFcnJvcklkKCksIHRoaXMuZ2V0SGludElkKCldLCBudWxsKTtcbiAgfVxuXG59XG4iLCI8IS0tIERpdmlkZXIgbm8gZm9ybWEgcGFydGUgZGVsIGZvcm11bGFyaW8sIHBvciBsbyBxdWUgZXMgcmV1dGlsaXphYmxlIGVuIGN1YWxxdWllciBjYXNvIC0tPlxuPG5nLXRlbXBsYXRlICNpdGVtRGl2aWRlclxuICAgICAgICAgICAgIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IHJvbGU9XCJzZXBhcmF0b3JcIlxuICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uZGl2aWRlci5jbGFzc2VzXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IHRlbXBsYXRlOiBnZXRJdGVtRGl2aWRlclRlbXBsYXRlKGl0ZW0pLCBodG1sOiBnZXRJdGVtRGl2aWRlckh0bWwoaXRlbSkgfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5uZXJIdG1sPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJkZXN5LWhpbnRcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoaW50UmVmXCI+PC9uZy1jb250YWluZXI+XG4gIDxkZXN5LWhpbnQgKm5nSWY9XCIhaGludFJlZiAmJiBoaW50RGF0YVwiXG4gICAgICAgICAgICAgW2lkXT1cImdldEhpbnRJZCgpXCJcbiAgICAgICAgICAgICBbdGV4dF09XCJoaW50RGF0YS50ZXh0XCJcbiAgICAgICAgICAgICBbaHRtbF09XCJoaW50RGF0YS5odG1sXCJcbiAgICAgICAgICAgICBbY2xhc3Nlc109XCJoaW50RGF0YS5jbGFzc2VzXCJcbiAgICAgICAgICAgICBbcm9sZV09XCJoaW50RGF0YS5yb2xlXCJcbiAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImhpbnREYXRhLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJoaW50RGF0YS5hcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJoaW50RGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiaGludERhdGEuYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJoaW50RGF0YS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaGludERhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiaGludERhdGEuYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJoaW50RGF0YS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJoaW50RGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImhpbnREYXRhLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaGludERhdGEuYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaGludERhdGEudGFiaW5kZXhcIj48L2Rlc3ktaGludD5cbiAgPGRlc3ktaGludCAqbmdJZj1cIiFoaW50UmVmICYmICFoaW50RGF0YSAmJiBoaW50VGV4dFwiXG4gICAgICAgICAgICAgW3RleHRdPVwiaGludFRleHRcIlxuICAgICAgICAgICAgIFtpZF09XCJnZXRIaW50SWQoKVwiPjwvZGVzeS1oaW50PlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImRlc3ktZXJyb3ItbWVzc2FnZVwiPjwvbmctY29udGVudD5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVycm9yTWVzc2FnZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICA8ZGVzeS1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIWVycm9yTWVzc2FnZVJlZiAmJiBlcnJvck1lc3NhZ2VEYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJlcnJvck1lc3NhZ2VEYXRhLnRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtodG1sXT1cImVycm9yTWVzc2FnZURhdGEuaHRtbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiZXJyb3JNZXNzYWdlRGF0YS5jbGFzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmlzdWFsbHlIaWRkZW5UZXh0XT1cImVycm9yTWVzc2FnZURhdGEudmlzdWFsbHlIaWRkZW5UZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJlcnJvck1lc3NhZ2VEYXRhLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZXJyb3JNZXNzYWdlRGF0YS50YWJpbmRleFwiPjwvZGVzeS1lcnJvci1tZXNzYWdlPlxuICA8ZGVzeS1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIWVycm9yTWVzc2FnZVJlZiAmJiAhZXJyb3JNZXNzYWdlRGF0YSAmJiBlcnJvck1lc3NhZ2VUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJlcnJvck1lc3NhZ2VUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0RXJyb3JJZCgpXCI+PC9kZXN5LWVycm9yLW1lc3NhZ2U+XG5cbiAgPCEtLSBSZWFjdGl2ZSBmb3JtcyAtLT5cbiAgPGRpdiAqbmdJZj1cImNvbnRyb2xDb250YWluZXIgJiYgIW5nTW9kZWxHcm91cFwiXG4gICAgICAgW2Zvcm1Hcm91cF09XCJvZ0Zvcm1Hcm91cFwiXG4gICAgICAgW25nQ2xhc3NdPVwiY2xhc3NlcyA/IGNsYXNzZXMgOiAnZmxleCdcIlxuICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICAgICBbZGVzeUFwcEFjY2Vzc2liaWxpdHldPVwidGhpc1wiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRJdGVtcygpOyBpbmRleCBhcyBpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNTZWxlY3RJdGVtKGl0ZW0pID8gaXRlbVNlbGVjdCA6IChpdGVtLmRpdmlkZXIgPyBpdGVtRGl2aWRlciA6IGl0ZW1JbnB1dCk7IGNvbnRleHQ6IHtpdGVtOiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNpdGVtU2VsZWN0PlxuICAgICAgICA8ZGVzeS1zZWxlY3QgW2lkXT1cIml0ZW0uaWQgPyBpdGVtLmlkIDogaWQgKyAnLScgKyBpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsUmVmXT1cImdldEl0ZW1MYWJlbFJlZihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxEYXRhXT1cImdldEl0ZW1MYWJlbERhdGEoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cENsYXNzZXNdPVwiaXRlbS5mb3JtR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZ2V0SXRlbU5hbWUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1TZWxlY3RPcHRpb25zKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgICBbYWNjZXNza2V5XT1cIml0ZW0uYWNjZXNza2V5XCJcbiAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICBbY29udGVudGVkaXRhYmxlXT1cIml0ZW0uY29udGVudGVkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBbZW50ZXJrZXloaW50XT1cIml0ZW0uZW50ZXJrZXloaW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICBbc3BlbGxjaGVja109XCJpdGVtLnNwZWxsY2hlY2tcIlxuICAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJpdGVtLmZvclwiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+XG4gICAgICAgIDwvZGVzeS1zZWxlY3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICNpdGVtSW5wdXQ+XG4gICAgICAgIDxkZXN5LWlucHV0IFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsUmVmXT1cImdldEl0ZW1MYWJlbFJlZihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbERhdGFdPVwiZ2V0SXRlbUxhYmVsRGF0YShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cENsYXNzZXNdPVwiaXRlbS5mb3JtR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZ2V0SXRlbU5hbWUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaXRlbS50eXBlID8gaXRlbS50eXBlIDogJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJpdGVtLnBhdHRlcm5cIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJpdGVtLm1heGxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImdldEl0ZW1BcmlhRGVzY3JpYmVkQnkoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhSGlkZGVuXT1cIml0ZW0uYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRGlzYWJsZWRdPVwiaXRlbS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDdXJyZW50XT1cIml0ZW0uYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUVycm9yTWVzc2FnZV09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUhhc1BvcHVwXT1cIml0ZW0uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYU1vZGFsXT1cIml0ZW0uYXJpYU1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDaGVja2VkXT1cIml0ZW0uYXJpYUNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUmVhZG9ubHldPVwiaXRlbS5hcmlhUmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJlcXVpcmVkXT1cIml0ZW0uYXJpYVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtaW5dPVwiaXRlbS5hcmlhVmFsdWVtaW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWF4XT1cIml0ZW0uYXJpYVZhbHVlbWF4XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWV0ZXh0XT1cIml0ZW0uYXJpYVZhbHVldGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhT3JpZW50YXRpb25dPVwiaXRlbS5hcmlhT3JpZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFNdWx0aXNlbGVjdGFibGVdPVwiaXRlbS5hcmlhTXVsdGlzZWxlY3RhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFQbGFjZWhvbGRlcl09XCJpdGVtLmFyaWFQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVNldHNpemVdPVwiaXRlbS5hcmlhU2V0c2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhU29ydF09XCJpdGVtLmFyaWFTb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURyb3BlZmZlY3RdPVwiaXRlbS5hcmlhRHJvcGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhR3JhYmJlZF09XCJpdGVtLmFyaWFHcmFiYmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUF0b21pY109XCJpdGVtLmFyaWFBdG9taWNcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUF1dG9jb21wbGV0ZV09XCJpdGVtLmFyaWFBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ29sY291bnRdPVwiaXRlbS5hcmlhQ29sY291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleHRleHRdPVwiaXRlbS5hcmlhQ29saW5kZXh0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xzcGFuXT1cIml0ZW0uYXJpYUNvbHNwYW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXRhaWxzXT1cIml0ZW0uYXJpYURldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUZsb3d0b109XCJpdGVtLmFyaWFGbG93dG9cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhS2V5c2hvcnRjdXRzXT1cIml0ZW0uYXJpYUtleXNob3J0Y3V0c1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhT3duc109XCJpdGVtLmFyaWFPd25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYVJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUm93Y291bnRdPVwiaXRlbS5hcmlhUm93Y291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleHRleHRdPVwiaXRlbS5hcmlhUm93aW5kZXh0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dzcGFuXT1cIml0ZW0uYXJpYVJvd3NwYW5cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5hbHRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFuZ109XCJpdGVtLmxhbmdcIlxuICAgICAgICAgICAgICAgICAgICBbYWNjZXNza2V5XT1cIml0ZW0uYWNjZXNza2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpdGVtLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiaXRlbS5hdXRvZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudGVkaXRhYmxlXT1cIml0ZW0uY29udGVudGVkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpcl09XCJpdGVtLmRpclwiXG4gICAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiaXRlbS5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBbZW50ZXJrZXloaW50XT1cIml0ZW0uZW50ZXJrZXloaW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpdGVtLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dG1vZGVdPVwiaXRlbS5pbnB1dG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3BlbGxjaGVja109XCJpdGVtLnNwZWxsY2hlY2tcIlxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlXT1cIml0ZW0udHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFNdWx0aWxpbmVdPVwiaXRlbS5hcmlhTXVsdGlsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJpdGVtLmZvclwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cIml0ZW0uZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgIFtoZWFkZXJzXT1cIml0ZW0uaGVhZGVyc1wiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXRlbS5yZXF1aXJlZFwiPlxuICAgICAgICA8L2Rlc3ktaW5wdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIFRlbXBsYXRlLWRyaXZlbiBmb3JtcyAtLT5cbiAgPGRlc3ktdGVtcGxhdGUtZHJpdmVuLXdyYXBwZXIgKm5nSWY9XCJjb250cm9sQ29udGFpbmVyICYmIG5nTW9kZWxHcm91cFwiPlxuICAgIDxkaXYgW25nTW9kZWxHcm91cF09XCJuZ01vZGVsR3JvdXBcIlxuICAgICAgICAgW25nQ2xhc3NdPVwiY2xhc3NlcyA/IGNsYXNzZXMgOiAnZmxleCdcIlxuICAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cInRoaXNcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRJdGVtcygpOyBpbmRleCBhcyBpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpc1NlbGVjdEl0ZW0oaXRlbSkgPyBpdGVtU2VsZWN0IDogKGl0ZW0uZGl2aWRlciA/IGl0ZW1EaXZpZGVyIDogaXRlbUlucHV0KTsgY29udGV4dDoge2l0ZW06IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVNlbGVjdD5cbiAgICAgICAgICA8ZGVzeS1zZWxlY3QgW2lkXT1cIml0ZW0uaWQgPyBpdGVtLmlkIDogaWQgKyAnLScgKyBpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxSZWZdPVwiZ2V0SXRlbUxhYmVsUmVmKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwQ2xhc3Nlc109XCJpdGVtLmZvcm1Hcm91cENsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnRlcm5hbENoYW5nZShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1TZWxlY3RPcHRpb25zKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJpdGVtLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJnZXRJdGVtQXJpYURlc2NyaWJlZEJ5KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cIml0ZW0uYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cIml0ZW0uYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJpdGVtLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cIml0ZW0uYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJpdGVtLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ2hlY2tlZF09XCJpdGVtLmFyaWFDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFQcmVzc2VkXT1cIml0ZW0uYXJpYVByZXNzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFSZXF1aXJlZF09XCJpdGVtLmFyaWFSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhU2VsZWN0ZWRdPVwiaXRlbS5hcmlhU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW1heF09XCJpdGVtLmFyaWFWYWx1ZW1heFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVub3ddPVwiaXRlbS5hcmlhVmFsdWVub3dcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYU9yaWVudGF0aW9uXT1cIml0ZW0uYXJpYU9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMZXZlbF09XCJpdGVtLmFyaWFMZXZlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhUGxhY2Vob2xkZXJdPVwiaXRlbS5hcmlhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVBvc2luc2V0XT1cIml0ZW0uYXJpYVBvc2luc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVNvcnRdPVwiaXRlbS5hcmlhU29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQnVzeV09XCJpdGVtLmFyaWFCdXN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUdyYWJiZWRdPVwiaXRlbS5hcmlhR3JhYmJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQWN0aXZlZGVzY2VuZGFudF09XCJpdGVtLmFyaWFBY3RpdmVkZXNjZW5kYW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFBdXRvY29tcGxldGVdPVwiaXRlbS5hcmlhQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlbGFiZWxdPVwiaXRlbS5hcmlhQnJhaWxsZWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGNvdW50XT1cIml0ZW0uYXJpYUNvbGNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleF09XCJpdGVtLmFyaWFDb2xpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29sc3Bhbl09XCJpdGVtLmFyaWFDb2xzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFGbG93dG9dPVwiaXRlbS5hcmlhRmxvd3RvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFJbnZhbGlkXT1cIml0ZW0uYXJpYUludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYU93bnNdPVwiaXRlbS5hcmlhT3duc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVsZXZhbnRdPVwiaXRlbS5hcmlhUmVsZXZhbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2NvdW50XT1cIml0ZW0uYXJpYVJvd2NvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleF09XCJpdGVtLmFyaWFSb3dpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93c3Bhbl09XCJpdGVtLmFyaWFSb3dzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhbmddPVwiaXRlbS5sYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FjY2Vzc2tleV09XCJpdGVtLmFjY2Vzc2tleVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cIml0ZW0uYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cIml0ZW0uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3NwZWxsY2hlY2tdPVwiaXRlbS5zcGVsbGNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlsaW5lXT1cIml0ZW0uYXJpYU11bHRpbGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiaXRlbS5mb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyc109XCJpdGVtLmhlYWRlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIml0ZW0ucmVxdWlyZWRcIj5cbiAgICAgICAgICA8L2Rlc3ktc2VsZWN0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW1JbnB1dD5cbiAgICAgICAgICA8ZGVzeS1pbnB1dCBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsUmVmXT1cImdldEl0ZW1MYWJlbFJlZihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cENsYXNzZXNdPVwiaXRlbS5mb3JtR3JvdXBDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnRlcm5hbENoYW5nZShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiAndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dG1vZGVdPVwiaXRlbS5pbnB1dG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cIml0ZW0ucGF0dGVyblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIml0ZW0ubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcm9sZV09XCJpdGVtLnJvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cIml0ZW0uYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhSGlkZGVuXT1cIml0ZW0uYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJpdGVtLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFDdXJyZW50XT1cIml0ZW0uYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUVycm9yTWVzc2FnZV09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYU1vZGFsXT1cIml0ZW0uYXJpYU1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFQcmVzc2VkXT1cIml0ZW0uYXJpYVByZXNzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVhZG9ubHldPVwiaXRlbS5hcmlhUmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhU2VsZWN0ZWRdPVwiaXRlbS5hcmlhU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtaW5dPVwiaXRlbS5hcmlhVmFsdWVtaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVub3ddPVwiaXRlbS5hcmlhVmFsdWVub3dcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWV0ZXh0XT1cIml0ZW0uYXJpYVZhbHVldGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFMZXZlbF09XCJpdGVtLmFyaWFMZXZlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFNdWx0aXNlbGVjdGFibGVdPVwiaXRlbS5hcmlhTXVsdGlzZWxlY3RhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVBvc2luc2V0XT1cIml0ZW0uYXJpYVBvc2luc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVNldHNpemVdPVwiaXRlbS5hcmlhU2V0c2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQnVzeV09XCJpdGVtLmFyaWFCdXN5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURyb3BlZmZlY3RdPVwiaXRlbS5hcmlhRHJvcGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQWN0aXZlZGVzY2VuZGFudF09XCJpdGVtLmFyaWFBY3RpdmVkZXNjZW5kYW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUF0b21pY109XCJpdGVtLmFyaWFBdG9taWNcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlbGFiZWxdPVwiaXRlbS5hcmlhQnJhaWxsZWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleF09XCJpdGVtLmFyaWFDb2xpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleHRleHRdPVwiaXRlbS5hcmlhQ29saW5kZXh0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXRhaWxzXT1cIml0ZW0uYXJpYURldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFJbnZhbGlkXT1cIml0ZW0uYXJpYUludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhS2V5c2hvcnRjdXRzXT1cIml0ZW0uYXJpYUtleXNob3J0Y3V0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVsZXZhbnRdPVwiaXRlbS5hcmlhUmVsZXZhbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhUm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYVJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleF09XCJpdGVtLmFyaWFSb3dpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleHRleHRdPVwiaXRlbS5hcmlhUm93aW5kZXh0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2FjY2Vzc2tleV09XCJpdGVtLmFjY2Vzc2tleVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpdGVtLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJpdGVtLmF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpcl09XCJpdGVtLmRpclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJpdGVtLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpdGVtLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpdGVtLmlucHV0bW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3NwZWxsY2hlY2tdPVwiaXRlbS5zcGVsbGNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlXT1cIml0ZW0udHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiaXRlbS5mb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cIml0ZW0uZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpdGVtLnJlcXVpcmVkXCI+XG4gICAgICAgICAgPC9kZXN5LWlucHV0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGVzeS10ZW1wbGF0ZS1kcml2ZW4td3JhcHBlcj5cblxuICA8IS0tIFdpdGggbmdNb2RlbC0tPlxuICA8ZGl2ICpuZ0lmPVwiIWNvbnRyb2xDb250YWluZXJcIlxuICAgICAgIFtuZ0NsYXNzXT1cImNsYXNzZXMgPyBjbGFzc2VzIDogJ2ZsZXgnXCJcbiAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiXG4gICAgICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cInRoaXNcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlzU2VsZWN0SXRlbShpdGVtKSA/IGl0ZW1TZWxlY3QgOiAoaXRlbS5kaXZpZGVyID8gaXRlbURpdmlkZXIgOiBpdGVtSW5wdXQpOyBjb250ZXh0OiB7aXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVNlbGVjdD5cbiAgICAgICAgPGRlc3ktc2VsZWN0IFtpZF09XCJpdGVtLmlkID8gaXRlbS5pZCA6IGlkICsgJy0nICsgaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBDbGFzc2VzXT1cIml0ZW0uZm9ybUdyb3VwQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZ2V0SXRlbVNlbGVjdE9wdGlvbnMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkludGVybmFsQ2hhbmdlKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJnZXRJdGVtQXJpYURlc2NyaWJlZEJ5KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhSGlkZGVuXT1cIml0ZW0uYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cIml0ZW0uYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDdXJyZW50XT1cIml0ZW0uYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cIml0ZW0uYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUVycm9yTWVzc2FnZV09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJpdGVtLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYU1vZGFsXT1cIml0ZW0uYXJpYU1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ2hlY2tlZF09XCJpdGVtLmFyaWFDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUHJlc3NlZF09XCJpdGVtLmFyaWFQcmVzc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUmVhZG9ubHldPVwiaXRlbS5hcmlhUmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSZXF1aXJlZF09XCJpdGVtLmFyaWFSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVNlbGVjdGVkXT1cIml0ZW0uYXJpYVNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtaW5dPVwiaXRlbS5hcmlhVmFsdWVtaW5cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW1heF09XCJpdGVtLmFyaWFWYWx1ZW1heFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbm93XT1cIml0ZW0uYXJpYVZhbHVlbm93XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWV0ZXh0XT1cIml0ZW0uYXJpYVZhbHVldGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYU9yaWVudGF0aW9uXT1cIml0ZW0uYXJpYU9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTGV2ZWxdPVwiaXRlbS5hcmlhTGV2ZWxcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFNdWx0aXNlbGVjdGFibGVdPVwiaXRlbS5hcmlhTXVsdGlzZWxlY3RhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUGxhY2Vob2xkZXJdPVwiaXRlbS5hcmlhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFQb3NpbnNldF09XCJpdGVtLmFyaWFQb3NpbnNldFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVNldHNpemVdPVwiaXRlbS5hcmlhU2V0c2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVNvcnRdPVwiaXRlbS5hcmlhU29ydFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUJ1c3ldPVwiaXRlbS5hcmlhQnVzeVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYURyb3BlZmZlY3RdPVwiaXRlbS5hcmlhRHJvcGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUdyYWJiZWRdPVwiaXRlbS5hcmlhR3JhYmJlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUFjdGl2ZWRlc2NlbmRhbnRdPVwiaXRlbS5hcmlhQWN0aXZlZGVzY2VuZGFudFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUF0b21pY109XCJpdGVtLmFyaWFBdG9taWNcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFBdXRvY29tcGxldGVdPVwiaXRlbS5hcmlhQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQnJhaWxsZWxhYmVsXT1cIml0ZW0uYXJpYUJyYWlsbGVsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGNvdW50XT1cIml0ZW0uYXJpYUNvbGNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXhdPVwiaXRlbS5hcmlhQ29saW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleHRleHRdPVwiaXRlbS5hcmlhQ29saW5kZXh0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhQ29sc3Bhbl09XCJpdGVtLmFyaWFDb2xzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFEZXRhaWxzXT1cIml0ZW0uYXJpYURldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFGbG93dG9dPVwiaXRlbS5hcmlhRmxvd3RvXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhSW52YWxpZF09XCJpdGVtLmFyaWFJbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhS2V5c2hvcnRjdXRzXT1cIml0ZW0uYXJpYUtleXNob3J0Y3V0c1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYU93bnNdPVwiaXRlbS5hcmlhT3duc1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJlbGV2YW50XT1cIml0ZW0uYXJpYVJlbGV2YW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYVJvbGVkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2NvdW50XT1cIml0ZW0uYXJpYVJvd2NvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXhdPVwiaXRlbS5hcmlhUm93aW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleHRleHRdPVwiaXRlbS5hcmlhUm93aW5kZXh0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhUm93c3Bhbl09XCJpdGVtLmFyaWFSb3dzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgW2xhbmddPVwiaXRlbS5sYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgIFthY2Nlc3NrZXldPVwiaXRlbS5hY2Nlc3NrZXlcIlxuICAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpdGVtLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cIml0ZW0uYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50ZWRpdGFibGVdPVwiaXRlbS5jb250ZW50ZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2Rpcl09XCJpdGVtLmRpclwiXG4gICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cIml0ZW0uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIFtlbnRlcmtleWhpbnRdPVwiaXRlbS5lbnRlcmtleWhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpdGVtLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIml0ZW0uc3BlbGxjaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlXT1cIml0ZW0udHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlsaW5lXT1cIml0ZW0uYXJpYU11bHRpbGluZVwiXG4gICAgICAgICAgICAgICAgICAgICBbZm9yXT1cIml0ZW0uZm9yXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cIml0ZW0uZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICBbaGVhZGVyc109XCJpdGVtLmhlYWRlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIml0ZW0ucmVxdWlyZWRcIj5cbiAgICAgICAgPC9kZXN5LXNlbGVjdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI2l0ZW1JbnB1dD5cbiAgICAgICAgPGRlc3ktaW5wdXQgW2lkXT1cIml0ZW0uaWQgPyBpdGVtLmlkIDogaWQgKyAnLScgKyBpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxSZWZdPVwiZ2V0SXRlbUxhYmVsUmVmKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWxEYXRhKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwQ2xhc3Nlc109XCJpdGVtLmZvcm1Hcm91cENsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkludGVybmFsQ2hhbmdlKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiAndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJpdGVtLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cIml0ZW0ucGF0dGVyblwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIml0ZW0ubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiZ2V0SXRlbUFyaWFEZXNjcmliZWRCeShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpdGVtLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiaXRlbS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiaXRlbS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFFeHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTW9kYWxdPVwiaXRlbS5hcmlhTW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUHJlc3NlZF09XCJpdGVtLmFyaWFQcmVzc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSZWFkb25seV09XCJpdGVtLmFyaWFSZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVNlbGVjdGVkXT1cIml0ZW0uYXJpYVNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZW1pbl09XCJpdGVtLmFyaWFWYWx1ZW1pblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVZhbHVlbm93XT1cIml0ZW0uYXJpYVZhbHVlbm93XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFWYWx1ZXRleHRdPVwiaXRlbS5hcmlhVmFsdWV0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGV2ZWxdPVwiaXRlbS5hcmlhTGV2ZWxcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYU11bHRpc2VsZWN0YWJsZV09XCJpdGVtLmFyaWFNdWx0aXNlbGVjdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFQb3NpbnNldF09XCJpdGVtLmFyaWFQb3NpbnNldFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhU2V0c2l6ZV09XCJpdGVtLmFyaWFTZXRzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUJ1c3ldPVwiaXRlbS5hcmlhQnVzeVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRHJvcGVmZmVjdF09XCJpdGVtLmFyaWFEcm9wZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUFjdGl2ZWRlc2NlbmRhbnRdPVwiaXRlbS5hcmlhQWN0aXZlZGVzY2VuZGFudFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQXRvbWljXT1cIml0ZW0uYXJpYUF0b21pY1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQnJhaWxsZWxhYmVsXT1cIml0ZW0uYXJpYUJyYWlsbGVsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQnJhaWxsZXJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhQ29saW5kZXhdPVwiaXRlbS5hcmlhQ29saW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbGluZGV4dGV4dF09XCJpdGVtLmFyaWFDb2xpbmRleHRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYURldGFpbHNdPVwiaXRlbS5hcmlhRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhSW52YWxpZF09XCJpdGVtLmFyaWFJbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFLZXlzaG9ydGN1dHNdPVwiaXRlbS5hcmlhS2V5c2hvcnRjdXRzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJlbGV2YW50XT1cIml0ZW0uYXJpYVJlbGV2YW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSb2xlZGVzY3JpcHRpb25dPVwiaXRlbS5hcmlhUm9sZWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhUm93aW5kZXhdPVwiaXRlbS5hcmlhUm93aW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd2luZGV4dGV4dF09XCJpdGVtLmFyaWFSb3dpbmRleHRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhbmddPVwiaXRlbS5sYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2Vzc2tleV09XCJpdGVtLmFjY2Vzc2tleVwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiaXRlbS5hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cIml0ZW0uYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXJdPVwiaXRlbS5kaXJcIlxuICAgICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cIml0ZW0uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRtb2RlXT1cIml0ZW0uaW5wdXRtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3NwZWxsY2hlY2tdPVwiaXRlbS5zcGVsbGNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZV09XCJpdGVtLnRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTXVsdGlsaW5lXT1cIml0ZW0uYXJpYU11bHRpbGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiaXRlbS5mb3JcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICBbaGVhZGVyc109XCJpdGVtLmhlYWRlcnNcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIml0ZW0ucmVxdWlyZWRcIj5cbiAgICAgICAgPC9kZXN5LWlucHV0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0ZpZWxkc2V0Q29tcG9uZW50KClcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1maWVsZHNldFwiPjwvbmctY29udGVudD5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNGaWVsZHNldENvbXBvbmVudCgpXCI+XG4gIDxkZXN5LWZpZWxkc2V0ICpuZ0lmPVwiZmllbGRzZXREYXRhXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiZmllbGRzZXREYXRhLmNsYXNzZXNcIlxuICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGRzZXREYXRhLmlkXCJcbiAgICAgICAgICAgICAgICAgW2xlZ2VuZERhdGFdPVwiZmllbGRzZXREYXRhLmxlZ2VuZFwiXG4gICAgICAgICAgICAgICAgIFtoZWFkaW5nTGV2ZWxdPVwiZmllbGRzZXREYXRhLmhlYWRpbmdMZXZlbFwiXG4gICAgICAgICAgICAgICAgIFtjYWxsZXJdPVwiaW5uZXJIdG1sXCJcbiAgICAgICAgICAgICAgICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgW2Rlc2NyaWJlZEJ5XT1cIltmaWVsZHNldERhdGEuZGVzY3JpYmVkQnksIGdldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0Om51bGxcIlxuICAgICAgICAgICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImZpZWxkc2V0RGF0YS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiZmllbGRzZXREYXRhLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiZmllbGRzZXREYXRhLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cImZpZWxkc2V0RGF0YS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cImZpZWxkc2V0RGF0YS5hcmlhQ29udHJvbHNcIlxuICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiZmllbGRzZXREYXRhLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cImZpZWxkc2V0RGF0YS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiZmllbGRzZXREYXRhLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiZmllbGRzZXREYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJmaWVsZHNldERhdGEudGFiaW5kZXhcIj48L2Rlc3ktZmllbGRzZXQ+XG4gIDxkZXN5LWZpZWxkc2V0ICpuZ0lmPVwiIWZpZWxkc2V0RGF0YSAmJiBoYXNMZWdlbmRDb21wb25lbnQoKVwiXG4gICAgICAgICAgICAgICAgIFtsZWdlbmRSZWZdPVwibGVnZW5kVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICBbY2FsbGVyXT1cImlubmVySHRtbFwiXG4gICAgICAgICAgICAgICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgIFtkZXNjcmliZWRCeV09XCJbIGdldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0Om51bGxcIj5cbiAgICA8bmctdGVtcGxhdGUgI2xlZ2VuZFRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1sZWdlbmRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kZXN5LWZpZWxkc2V0PlxuICA8ZGVzeS1maWVsZHNldCAqbmdJZj1cIiFmaWVsZHNldERhdGEgJiYgIWhhc0xlZ2VuZENvbXBvbmVudCgpICYmIGxlZ2VuZFJlZlwiXG4gICAgICAgICAgICAgICAgIFtsZWdlbmRSZWZdPVwibGVnZW5kUmVmXCJcbiAgICAgICAgICAgICAgICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgICAgICAgICAgICAgICBbZXJyb3JJZF09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICBbZGVzY3JpYmVkQnldPVwiWyBnZXRIaW50SWQoKSwgZ2V0RXJyb3JJZCgpXSB8IG1ha2VIdG1sTGlzdDpudWxsXCJcbiAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCI+PC9kZXN5LWZpZWxkc2V0PlxuICA8ZGVzeS1maWVsZHNldCAqbmdJZj1cIiFmaWVsZHNldERhdGEgJiYgIWhhc0xlZ2VuZENvbXBvbmVudCgpICYmICFsZWdlbmRSZWYgJiYgbGVnZW5kRGF0YVwiXG4gICAgICAgICAgICAgICAgIFtsZWdlbmREYXRhXT1cInt0ZXh0OiBsZWdlbmREYXRhLnRleHQsIGh0bWw6IGxlZ2VuZERhdGEuaHRtbCwgIGNsYXNzZXM6IGxlZ2VuZERhdGEuY2xhc3NlcywgaXNQYWdlSGVhZGluZzogbGVnZW5kRGF0YS5pc1BhZ2VIZWFkaW5nfVwiXG4gICAgICAgICAgICAgICAgIFtjYWxsZXJdPVwiaW5uZXJIdG1sXCJcbiAgICAgICAgICAgICAgICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgICAgICAgICAgICAgW2Rlc2NyaWJlZEJ5XT1cIlsgZ2V0SGludElkKCksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6bnVsbFwiXG4gICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiPjwvZGVzeS1maWVsZHNldD5cbiAgPGRlc3ktZmllbGRzZXQgKm5nSWY9XCIhZmllbGRzZXREYXRhICYmICFoYXNMZWdlbmRDb21wb25lbnQoKSAmJiAhbGVnZW5kUmVmICYmICFsZWdlbmREYXRhICYmIGxlZ2VuZFRleHRcIlxuICAgICAgICAgICAgICAgICBbbGVnZW5kVGV4dF09XCJsZWdlbmRUZXh0XCJcbiAgICAgICAgICAgICAgICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgICAgICAgICAgICAgICBbZXJyb3JJZF09XCJnZXRFcnJvcklkKClcIlxuICAgICAgICAgICAgICAgICBbZGVzY3JpYmVkQnldPVwiWyBnZXRIaW50SWQoKSwgZ2V0RXJyb3JJZCgpXSB8IG1ha2VIdG1sTGlzdDpudWxsXCJcbiAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCI+PC9kZXN5LWZpZWxkc2V0PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzRmllbGRzZXQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lckh0bWxcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iXX0=