@pepperi-addons/ngx-lib 0.4.2-storybook.1 → 0.5.0-ng15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/address/address.component.d.ts +1 -1
  2. package/attachment/attachment.component.d.ts +2 -1
  3. package/bread-crumbs/bread-crumbs.component.d.ts +1 -1
  4. package/bread-crumbs/bread-crumbs.model.d.ts +1 -1
  5. package/button/button.component.d.ts +1 -1
  6. package/carousel/carousel-item.directive.d.ts +1 -1
  7. package/carousel/carousel.component.d.ts +1 -1
  8. package/checkbox/checkbox.component.d.ts +2 -1
  9. package/chips/chips.component.d.ts +4 -5
  10. package/chips/chips.component.theme.scss +15 -5
  11. package/chips/chips.model.d.ts +2 -2
  12. package/chips/chips.service.d.ts +0 -3
  13. package/color/color-picker.component.d.ts +1 -1
  14. package/color/color-picker.component.theme.scss +2 -1
  15. package/color/color.component.d.ts +1 -1
  16. package/color/color.model.d.ts +1 -1
  17. package/core/clipboard/clipboard.directive.d.ts +1 -1
  18. package/core/common/directives/auto-width.directive.d.ts +1 -1
  19. package/core/common/directives/base-destroyer.directive.d.ts +10 -0
  20. package/core/common/directives/button-blur.directive.d.ts +1 -1
  21. package/core/common/directives/button-loader.directive.d.ts +1 -1
  22. package/core/common/directives/data-qa.directive.d.ts +1 -1
  23. package/core/common/directives/div-loader.directive.d.ts +1 -1
  24. package/core/common/directives/menu-blur.directive.d.ts +1 -1
  25. package/core/common/directives/prevent-multi-click.directive.d.ts +1 -1
  26. package/core/common/directives/print.directive.d.ts +1 -1
  27. package/core/common/directives/public-api.d.ts +1 -0
  28. package/core/common/pipes/common-pipes.d.ts +5 -2
  29. package/core/common/services/addon.service.d.ts +6 -4
  30. package/core/common/services/file.service.d.ts +1 -1
  31. package/core/common/services/utilities.service.d.ts +4 -4
  32. package/core/customization/customization.model.d.ts +15 -12
  33. package/core/customization/customization.service.d.ts +4 -0
  34. package/core/layout/layout.service.d.ts +1 -1
  35. package/core/layout/rtl.directive.d.ts +2 -2
  36. package/core/portal/attach.directive.d.ts +1 -1
  37. package/core/portal/target.directive.d.ts +1 -1
  38. package/date/date.component.d.ts +4 -2
  39. package/dialog/default-dialog.component.d.ts +1 -1
  40. package/dialog/dialog.component.d.ts +1 -1
  41. package/dialog/dialog.model.d.ts +2 -2
  42. package/draggable-items/draggable-item/draggable-item.component.d.ts +16 -2
  43. package/draggable-items/draggable-items.component.d.ts +4 -7
  44. package/draggable-items/draggable-items.model.d.ts +2 -2
  45. package/draggable-items/draggable-items.module.d.ts +4 -3
  46. package/esm2020/address/address.component.mjs +16 -16
  47. package/esm2020/address/address.module.mjs +5 -5
  48. package/esm2020/attachment/attachment.component.mjs +58 -49
  49. package/esm2020/attachment/attachment.module.mjs +5 -5
  50. package/esm2020/bread-crumbs/bread-crumbs.component.mjs +15 -15
  51. package/esm2020/bread-crumbs/bread-crumbs.module.mjs +5 -5
  52. package/esm2020/button/button.component.mjs +23 -23
  53. package/esm2020/button/button.module.mjs +5 -5
  54. package/esm2020/carousel/carousel-item.directive.mjs +9 -9
  55. package/esm2020/carousel/carousel.component.mjs +52 -52
  56. package/esm2020/carousel/carousel.module.mjs +5 -5
  57. package/esm2020/checkbox/checkbox.component.mjs +40 -31
  58. package/esm2020/checkbox/checkbox.module.mjs +5 -5
  59. package/esm2020/chips/chips.component.mjs +26 -28
  60. package/esm2020/chips/chips.module.mjs +5 -5
  61. package/esm2020/chips/chips.service.mjs +5 -14
  62. package/esm2020/color/color-picker.component.mjs +5 -5
  63. package/esm2020/color/color.component.mjs +5 -5
  64. package/esm2020/color/color.module.mjs +5 -5
  65. package/esm2020/core/clipboard/clipboard.directive.mjs +4 -4
  66. package/esm2020/core/clipboard/clipboard.service.mjs +4 -4
  67. package/esm2020/core/common/directives/auto-width.directive.mjs +4 -4
  68. package/esm2020/core/common/directives/base-destroyer.directive.mjs +22 -0
  69. package/esm2020/core/common/directives/button-blur.directive.mjs +4 -4
  70. package/esm2020/core/common/directives/button-loader.directive.mjs +10 -10
  71. package/esm2020/core/common/directives/data-qa.directive.mjs +4 -4
  72. package/esm2020/core/common/directives/div-loader.directive.mjs +4 -4
  73. package/esm2020/core/common/directives/menu-blur.directive.mjs +4 -4
  74. package/esm2020/core/common/directives/prevent-multi-click.directive.mjs +4 -4
  75. package/esm2020/core/common/directives/print.directive.mjs +4 -4
  76. package/esm2020/core/common/directives/public-api.mjs +2 -1
  77. package/esm2020/core/common/pipes/common-pipes.mjs +47 -37
  78. package/esm2020/core/common/pipes/date-ago.pipe.mjs +4 -4
  79. package/esm2020/core/common/services/addon.service.mjs +36 -12
  80. package/esm2020/core/common/services/color.service.mjs +4 -4
  81. package/esm2020/core/common/services/cookie.service.mjs +4 -4
  82. package/esm2020/core/common/services/data-convertor.service.mjs +6 -6
  83. package/esm2020/core/common/services/file.service.mjs +4 -4
  84. package/esm2020/core/common/services/jwt-helper.service.mjs +4 -4
  85. package/esm2020/core/common/services/session.service.mjs +4 -4
  86. package/esm2020/core/common/services/translate.service.mjs +4 -4
  87. package/esm2020/core/common/services/utilities.service.mjs +10 -10
  88. package/esm2020/core/common/services/validator.service.mjs +4 -4
  89. package/esm2020/core/common/services/window-scrolling.service.mjs +4 -4
  90. package/esm2020/core/customization/customization.model.mjs +40 -5
  91. package/esm2020/core/customization/customization.service.mjs +23 -4
  92. package/esm2020/core/http/interceptors/error.interceptor.mjs +4 -4
  93. package/esm2020/core/http/interceptors/loader.interceptor.mjs +4 -4
  94. package/esm2020/core/http/interceptors/profiler.interceptor.mjs +4 -4
  95. package/esm2020/core/http/services/http.service.mjs +4 -4
  96. package/esm2020/core/http/services/loader.service.mjs +10 -10
  97. package/esm2020/core/layout/layout.service.mjs +12 -12
  98. package/esm2020/core/layout/rtl.directive.mjs +7 -7
  99. package/esm2020/core/portal/attach.directive.mjs +4 -4
  100. package/esm2020/core/portal/portal.service.mjs +4 -4
  101. package/esm2020/core/portal/target.directive.mjs +4 -4
  102. package/esm2020/core/scroll-to/scroll-to.service.mjs +4 -4
  103. package/esm2020/date/date.component.mjs +81 -59
  104. package/esm2020/date/date.model.mjs +7 -7
  105. package/esm2020/date/date.module.mjs +5 -5
  106. package/esm2020/dialog/default-dialog.component.mjs +4 -4
  107. package/esm2020/dialog/dialog.component.mjs +4 -4
  108. package/esm2020/dialog/dialog.module.mjs +5 -5
  109. package/esm2020/dialog/dialog.service.mjs +4 -4
  110. package/esm2020/draggable-items/draggable-item/draggable-item.component.mjs +46 -6
  111. package/esm2020/draggable-items/draggable-items.component.mjs +21 -29
  112. package/esm2020/draggable-items/draggable-items.module.mjs +9 -5
  113. package/esm2020/field-title/field-title.component.mjs +8 -5
  114. package/esm2020/field-title/field-title.module.mjs +5 -5
  115. package/esm2020/files-uploader/files-uploader.component.mjs +12 -12
  116. package/esm2020/files-uploader/files-uploader.module.mjs +5 -5
  117. package/esm2020/form/field-generator.component.mjs +5 -5
  118. package/esm2020/form/form.component.mjs +30 -28
  119. package/esm2020/form/form.module.mjs +5 -5
  120. package/esm2020/form/indicators.component.mjs +4 -4
  121. package/esm2020/form/internal-button.component.mjs +17 -17
  122. package/esm2020/form/internal-carusel.component.mjs +24 -20
  123. package/esm2020/form/internal-carusel.service.mjs +4 -4
  124. package/esm2020/form/internal-field-generator.component.mjs +5 -5
  125. package/esm2020/form/internal-form.component.mjs +30 -28
  126. package/esm2020/form/internal-list.component.mjs +7 -7
  127. package/esm2020/form/internal-menu.component.mjs +6 -8
  128. package/esm2020/form/internal-page.component.mjs +4 -4
  129. package/esm2020/form/internal-page.service.mjs +4 -4
  130. package/esm2020/group-buttons/group-buttons.component.mjs +5 -5
  131. package/esm2020/group-buttons/group-buttons.module.mjs +5 -5
  132. package/esm2020/icon/icon-registry.service.mjs +4 -4
  133. package/esm2020/icon/icon.component.mjs +11 -11
  134. package/esm2020/icon/icon.module.mjs +5 -5
  135. package/esm2020/icon/icon.service.mjs +4 -4
  136. package/esm2020/image/image.component.mjs +52 -43
  137. package/esm2020/image/image.module.mjs +5 -5
  138. package/esm2020/image/image.service.mjs +4 -4
  139. package/esm2020/images-filmstrip/images-filmstrip.component.mjs +26 -25
  140. package/esm2020/images-filmstrip/images-filmstrip.module.mjs +5 -5
  141. package/esm2020/link/link.component.mjs +65 -50
  142. package/esm2020/link/link.module.mjs +5 -5
  143. package/esm2020/link/link.pipes.mjs +4 -4
  144. package/esm2020/list/list-actions.component.mjs +6 -6
  145. package/esm2020/list/list-carousel.component.mjs +20 -20
  146. package/esm2020/list/list-chooser.component.mjs +6 -6
  147. package/esm2020/list/list-pager.component.mjs +12 -12
  148. package/esm2020/list/list-sorting.component.mjs +6 -6
  149. package/esm2020/list/list-total.component.mjs +9 -6
  150. package/esm2020/list/list-views.component.mjs +6 -6
  151. package/esm2020/list/list.component.mjs +151 -72
  152. package/esm2020/list/list.module.mjs +5 -5
  153. package/esm2020/list/list.pipes.mjs +7 -7
  154. package/esm2020/list/virtual-scroller.mjs +58 -58
  155. package/esm2020/menu/menu-item.component.mjs +5 -5
  156. package/esm2020/menu/menu.component.mjs +15 -12
  157. package/esm2020/menu/menu.model.mjs +2 -1
  158. package/esm2020/menu/menu.module.mjs +5 -5
  159. package/esm2020/ngx-lib.module.mjs +5 -5
  160. package/esm2020/page-layout/page-layout.component.mjs +4 -4
  161. package/esm2020/page-layout/page-layout.module.mjs +5 -5
  162. package/esm2020/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +4 -4
  163. package/esm2020/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +27 -11
  164. package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +70 -38
  165. package/esm2020/profile-data-views-list/profile-data-views-list.model.mjs +1 -1
  166. package/esm2020/profile-data-views-list/profile-data-views-list.module.mjs +5 -5
  167. package/esm2020/quantity-selector/quantity-selector-validation.directive.mjs +4 -4
  168. package/esm2020/quantity-selector/quantity-selector.component.mjs +102 -89
  169. package/esm2020/quantity-selector/quantity-selector.module.mjs +5 -5
  170. package/esm2020/quantity-selector/quantity-selector.pipes.mjs +4 -4
  171. package/esm2020/query-builder/common/model/legacy.mjs +1 -1
  172. package/esm2020/query-builder/common/model/operator.mjs +72 -62
  173. package/esm2020/query-builder/common/services/output-query.service.mjs +8 -6
  174. package/esm2020/query-builder/common/services/query-structure.service.mjs +37 -5
  175. package/esm2020/query-builder/common/services/type-convertor.service.mjs +10 -10
  176. package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +25 -23
  177. package/esm2020/query-builder/query-builder-section/query-builder-section.component.mjs +5 -5
  178. package/esm2020/query-builder/query-builder.component.mjs +19 -19
  179. package/esm2020/query-builder/query-builder.module.mjs +17 -6
  180. package/esm2020/query-builder/query-builder.service.mjs +5 -5
  181. package/esm2020/remote-loader/addon-block-loader.component.mjs +45 -35
  182. package/esm2020/remote-loader/addon-block-loader.service.mjs +8 -5
  183. package/esm2020/remote-loader/remote-loader-element.component.mjs +81 -26
  184. package/esm2020/remote-loader/remote-loader.component.mjs +13 -13
  185. package/esm2020/remote-loader/remote-loader.model.mjs +1 -1
  186. package/esm2020/remote-loader/remote-loader.module.mjs +5 -5
  187. package/esm2020/remote-loader/remote-loader.service.mjs +38 -15
  188. package/esm2020/rich-html-textarea/rich-html-textarea.component.mjs +52 -36
  189. package/esm2020/rich-html-textarea/rich-html-textarea.module.mjs +5 -5
  190. package/esm2020/search/search.component.mjs +35 -35
  191. package/esm2020/search/search.module.mjs +5 -5
  192. package/esm2020/select/select.component.mjs +89 -45
  193. package/esm2020/select/select.module.mjs +5 -5
  194. package/esm2020/select-panel/select-panel.component.mjs +26 -28
  195. package/esm2020/select-panel/select-panel.module.mjs +5 -5
  196. package/esm2020/separator/separator.component.mjs +16 -16
  197. package/esm2020/separator/separator.module.mjs +5 -5
  198. package/esm2020/side-bar/side-bar.component.mjs +29 -15
  199. package/esm2020/side-bar/side-bar.module.mjs +5 -5
  200. package/esm2020/signature/signature-dialog.component.mjs +4 -4
  201. package/esm2020/signature/signature.component.mjs +41 -32
  202. package/esm2020/signature/signature.module.mjs +5 -5
  203. package/esm2020/size-detector/size-detector.component.mjs +15 -13
  204. package/esm2020/size-detector/size-detector.module.mjs +5 -5
  205. package/esm2020/skeleton-loader/public-api.mjs +2 -2
  206. package/esm2020/skeleton-loader/skeleton-loader.component.mjs +5 -5
  207. package/esm2020/skeleton-loader/skeleton-loader.module.mjs +5 -5
  208. package/esm2020/slider/slider.component.mjs +21 -21
  209. package/esm2020/slider/slider.module.mjs +5 -5
  210. package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +4 -4
  211. package/esm2020/smart-filters/common/filter-actions.component.mjs +4 -4
  212. package/esm2020/smart-filters/common/model/base-filter-component.mjs +28 -34
  213. package/esm2020/smart-filters/common/model/field.mjs +7 -7
  214. package/esm2020/smart-filters/common/model/operator.mjs +15 -6
  215. package/esm2020/smart-filters/common/model/type.mjs +1 -1
  216. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +4 -4
  217. package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +5 -5
  218. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +4 -4
  219. package/esm2020/smart-filters/smart-filters.component.mjs +19 -19
  220. package/esm2020/smart-filters/smart-filters.module.mjs +5 -5
  221. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +29 -9
  222. package/esm2020/snack-bar/default-snack-bar.component.mjs +4 -4
  223. package/esm2020/snack-bar/snack-bar.component.mjs +4 -4
  224. package/esm2020/snack-bar/snack-bar.module.mjs +5 -5
  225. package/esm2020/snack-bar/snack-bar.service.mjs +4 -4
  226. package/esm2020/textarea/textarea.component.mjs +40 -31
  227. package/esm2020/textarea/textarea.module.mjs +5 -5
  228. package/esm2020/textbox/textbox-validation.directive.mjs +5 -5
  229. package/esm2020/textbox/textbox.component.mjs +171 -115
  230. package/esm2020/textbox/textbox.module.mjs +5 -5
  231. package/esm2020/textbox-icon/textbox-icon.component.mjs +4 -4
  232. package/esm2020/textbox-icon/textbox-icon.module.mjs +5 -5
  233. package/esm2020/top-bar/top-bar.component.mjs +5 -5
  234. package/esm2020/top-bar/top-bar.module.mjs +5 -5
  235. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +19 -19
  236. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  237. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +61 -52
  238. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  239. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
  240. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
  241. package/fesm2015/pepperi-addons-ngx-lib-button.mjs +26 -26
  242. package/fesm2015/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  243. package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs +63 -63
  244. package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
  245. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
  246. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  247. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +33 -44
  248. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  249. package/fesm2015/pepperi-addons-ngx-lib-color.mjs +12 -12
  250. package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  251. package/fesm2015/pepperi-addons-ngx-lib-date.mjs +91 -68
  252. package/fesm2015/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  253. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs +13 -13
  254. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  255. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +75 -40
  256. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  257. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs +11 -8
  258. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  259. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
  260. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  261. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +132 -126
  262. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  263. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
  264. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  265. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs +20 -20
  266. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  267. package/fesm2015/pepperi-addons-ngx-lib-image.mjs +58 -49
  268. package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  269. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
  270. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  271. package/fesm2015/pepperi-addons-ngx-lib-link.mjs +71 -56
  272. package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  273. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +276 -192
  274. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  275. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +23 -19
  276. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  277. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
  278. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  279. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +102 -54
  280. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  281. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
  282. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  283. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +191 -132
  284. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  285. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +197 -108
  286. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  287. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs +55 -39
  288. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  289. package/fesm2015/pepperi-addons-ngx-lib-search.mjs +38 -38
  290. package/fesm2015/pepperi-addons-ngx-lib-search.mjs.map +1 -1
  291. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +29 -31
  292. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  293. package/fesm2015/pepperi-addons-ngx-lib-select.mjs +92 -48
  294. package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  295. package/fesm2015/pepperi-addons-ngx-lib-separator.mjs +19 -19
  296. package/fesm2015/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
  297. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
  298. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  299. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +48 -38
  300. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  301. package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
  302. package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
  303. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +9 -9
  304. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
  305. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs +24 -24
  306. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  307. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +114 -91
  308. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  309. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
  310. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
  311. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs +43 -34
  312. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  313. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
  314. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  315. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +181 -123
  316. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  317. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
  318. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  319. package/fesm2015/pepperi-addons-ngx-lib.mjs +760 -653
  320. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  321. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +19 -19
  322. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  323. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs +61 -52
  324. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  325. package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
  326. package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
  327. package/fesm2020/pepperi-addons-ngx-lib-button.mjs +26 -26
  328. package/fesm2020/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  329. package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs +63 -63
  330. package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
  331. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
  332. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  333. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +33 -44
  334. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  335. package/fesm2020/pepperi-addons-ngx-lib-color.mjs +12 -12
  336. package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  337. package/fesm2020/pepperi-addons-ngx-lib-date.mjs +90 -68
  338. package/fesm2020/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  339. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs +13 -13
  340. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  341. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +74 -39
  342. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  343. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs +11 -8
  344. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  345. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
  346. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  347. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +132 -126
  348. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  349. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
  350. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  351. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs +20 -20
  352. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  353. package/fesm2020/pepperi-addons-ngx-lib-image.mjs +58 -49
  354. package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  355. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
  356. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  357. package/fesm2020/pepperi-addons-ngx-lib-link.mjs +71 -56
  358. package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  359. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +274 -192
  360. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  361. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +23 -19
  362. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  363. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
  364. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  365. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +102 -54
  366. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  367. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
  368. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  369. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +187 -131
  370. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  371. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +184 -93
  372. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  373. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs +55 -39
  374. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  375. package/fesm2020/pepperi-addons-ngx-lib-search.mjs +38 -38
  376. package/fesm2020/pepperi-addons-ngx-lib-search.mjs.map +1 -1
  377. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs +29 -31
  378. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  379. package/fesm2020/pepperi-addons-ngx-lib-select.mjs +92 -48
  380. package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  381. package/fesm2020/pepperi-addons-ngx-lib-separator.mjs +19 -19
  382. package/fesm2020/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
  383. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
  384. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  385. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +47 -38
  386. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  387. package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
  388. package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
  389. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +9 -9
  390. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
  391. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs +24 -24
  392. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  393. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +114 -91
  394. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  395. package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
  396. package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
  397. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs +43 -34
  398. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  399. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
  400. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  401. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +179 -123
  402. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  403. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
  404. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  405. package/fesm2020/pepperi-addons-ngx-lib.mjs +780 -674
  406. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  407. package/field-title/field-title.component.d.ts +2 -1
  408. package/files-uploader/files-uploader.component.d.ts +1 -1
  409. package/form/field-generator.component.d.ts +1 -1
  410. package/form/form.component.d.ts +1 -1
  411. package/form/indicators.component.d.ts +1 -1
  412. package/form/internal-button.component.d.ts +1 -1
  413. package/form/internal-carusel.component.d.ts +2 -1
  414. package/form/internal-field-generator.component.d.ts +1 -1
  415. package/form/internal-form.component.d.ts +1 -1
  416. package/form/internal-list.component.d.ts +2 -2
  417. package/form/internal-menu.component.d.ts +1 -2
  418. package/form/internal-page.component.d.ts +1 -1
  419. package/group-buttons/group-buttons.component.d.ts +2 -2
  420. package/icon/icon-generated.model.d.ts +2 -2
  421. package/icon/icon.component.d.ts +1 -1
  422. package/image/image.component.d.ts +2 -1
  423. package/image/image.component.theme.scss +4 -2
  424. package/images-filmstrip/images-filmstrip.component.d.ts +1 -1
  425. package/link/link.component.d.ts +4 -1
  426. package/list/list-actions.component.d.ts +1 -1
  427. package/list/list-carousel.component.d.ts +2 -2
  428. package/list/list-chooser.component.d.ts +1 -1
  429. package/list/list-pager.component.d.ts +1 -1
  430. package/list/list-sorting.component.d.ts +1 -1
  431. package/list/list-total.component.d.ts +2 -1
  432. package/list/list-views.component.d.ts +2 -2
  433. package/list/list.component.d.ts +9 -3
  434. package/list/list.model.d.ts +6 -6
  435. package/list/virtual-scroller.d.ts +2 -2
  436. package/menu/menu-item.component.d.ts +1 -1
  437. package/menu/menu.component.d.ts +2 -1
  438. package/menu/menu.model.d.ts +4 -3
  439. package/package.json +11 -11
  440. package/page-layout/page-layout.component.d.ts +1 -1
  441. package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +4 -4
  442. package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +5 -4
  443. package/profile-data-views-list/profile-data-views-list.component.d.ts +13 -10
  444. package/profile-data-views-list/profile-data-views-list.model.d.ts +8 -0
  445. package/quantity-selector/quantity-selector-validation.directive.d.ts +1 -1
  446. package/quantity-selector/quantity-selector.component.d.ts +8 -9
  447. package/quantity-selector/quantity-selector.component.theme.scss +12 -6
  448. package/query-builder/common/model/legacy.d.ts +2 -0
  449. package/query-builder/common/model/operator.d.ts +11 -1
  450. package/query-builder/common/services/query-structure.service.d.ts +1 -0
  451. package/query-builder/query-builder-item/query-builder-item.component.d.ts +4 -2
  452. package/query-builder/query-builder-section/query-builder-section.component.d.ts +1 -1
  453. package/query-builder/query-builder.component.d.ts +1 -1
  454. package/query-builder/query-builder.module.d.ts +7 -3
  455. package/remote-loader/addon-block-loader.component.d.ts +4 -2
  456. package/remote-loader/remote-loader-element.component.d.ts +9 -2
  457. package/remote-loader/remote-loader.component.d.ts +1 -1
  458. package/remote-loader/remote-loader.model.d.ts +3 -2
  459. package/remote-loader/remote-loader.service.d.ts +2 -0
  460. package/rich-html-textarea/rich-html-textarea.component.d.ts +4 -1
  461. package/rich-html-textarea/rich-html-textarea.component.theme.scss +8 -5
  462. package/search/search.component.d.ts +1 -1
  463. package/search/search.model.d.ts +4 -4
  464. package/select/select.component.d.ts +9 -1
  465. package/select/select.component.theme.scss +22 -11
  466. package/select-panel/select-panel.component.d.ts +1 -2
  467. package/select-panel/select-panel.component.theme.scss +0 -2
  468. package/separator/separator.component.d.ts +1 -1
  469. package/side-bar/side-bar.component.d.ts +4 -1
  470. package/side-bar/side-bar.model.d.ts +1 -1
  471. package/signature/signature-dialog.component.d.ts +2 -2
  472. package/signature/signature.component.d.ts +2 -1
  473. package/size-detector/size-detector.component.d.ts +1 -1
  474. package/skeleton-loader/skeleton-loader.component.d.ts +4 -4
  475. package/slider/slider.component.d.ts +1 -1
  476. package/slider/slider.component.theme.scss +15 -5
  477. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +4 -1
  478. package/smart-filters/common/filter-actions.component.d.ts +1 -1
  479. package/smart-filters/common/model/base-filter-component.d.ts +3 -5
  480. package/smart-filters/common/model/operator.d.ts +3 -0
  481. package/smart-filters/common/model/type.d.ts +4 -4
  482. package/smart-filters/date-filter/date-filter.component.d.ts +4 -1
  483. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +4 -1
  484. package/smart-filters/number-filter/number-filter.component.d.ts +4 -1
  485. package/smart-filters/smart-filters.component.d.ts +1 -1
  486. package/smart-filters/text-filter/text-filter.component.d.ts +5 -1
  487. package/snack-bar/default-snack-bar.component.d.ts +1 -1
  488. package/snack-bar/snack-bar.component.d.ts +1 -1
  489. package/src/assets/i18n/ar.ngx-lib.json +180 -0
  490. package/src/assets/i18n/de.ngx-lib.json +106 -4
  491. package/src/assets/i18n/en.ngx-lib.json +10 -3
  492. package/src/assets/i18n/es.ngx-lib.json +113 -11
  493. package/src/assets/i18n/fr.ngx-lib.json +105 -4
  494. package/src/assets/i18n/he.ngx-lib.json +105 -4
  495. package/src/assets/i18n/it.ngx-lib.json +114 -13
  496. package/src/assets/i18n/ja.ngx-lib.json +105 -4
  497. package/src/assets/i18n/pl.ngx-lib.json +105 -4
  498. package/src/assets/i18n/pt.ngx-lib.json +105 -4
  499. package/src/assets/i18n/sr.ngx-lib.json +180 -0
  500. package/src/assets/i18n/zh.ngx-lib.json +105 -2
  501. package/src/core/style/abstracts/mixins.scss +157 -37
  502. package/src/core/style/abstracts/variables.scss +10 -1
  503. package/src/core/style/base/Spacing.stories.mdx +22 -22
  504. package/src/core/style/base/base.scss +219 -117
  505. package/src/core/style/base/typography.scss +2 -1
  506. package/src/core/style/components/button.scss +52 -19
  507. package/src/core/style/components/checkbox.scss +132 -128
  508. package/src/core/style/components/file.scss +13 -9
  509. package/src/core/style/components/general.scss +149 -65
  510. package/src/core/style/components/radio-button.scss +50 -23
  511. package/src/core/style/components/textarea.scss +69 -30
  512. package/textarea/textarea.component.d.ts +2 -1
  513. package/textbox/textbox-validation.directive.d.ts +1 -1
  514. package/textbox/textbox.component.d.ts +4 -1
  515. package/textbox-icon/textbox-icon.component.d.ts +1 -1
  516. package/theming-offline.scss +2 -1
  517. package/theming.scss +7 -2
  518. package/top-bar/top-bar.component.d.ts +1 -1
  519. package/top-bar/top-bar.model.d.ts +1 -1
  520. package/src/assets/images/sail-away.jpg +0 -0
@@ -17,6 +17,7 @@ export class PepQueryStructureService {
17
17
  this._outputQuery$ = new BehaviorSubject(null);
18
18
  this._variableFields = {};
19
19
  this._maxStructureDepth = MAX_STRUCTURE_DEPTH;
20
+ this._cmpRefMap = new Map();
20
21
  this.outputQuery$ = this._outputQuery$.asObservable();
21
22
  }
22
23
  set maxDepth(value) {
@@ -37,13 +38,22 @@ export class PepQueryStructureService {
37
38
  list.forEach(field => {
38
39
  const fieldType = this.convertSmartFilterComponentType(typeMapper.getSmartFilterType(field.FieldType));
39
40
  if (this.hasProperty(this._variableFields, fieldType)) {
40
- this._variableFields[fieldType].push(field.FieldID);
41
+ if (!this._variableFields[fieldType].includes(field.FieldID)) {
42
+ this._variableFields[fieldType].push(field.FieldID);
43
+ }
41
44
  }
42
45
  else {
43
46
  this._variableFields[fieldType] = [field.FieldID];
44
47
  }
45
48
  });
46
49
  }
50
+ this._cmpRefMap.forEach((value, key) => {
51
+ if (value.instance.variableFields) {
52
+ Object.keys(value.instance.variableFields).forEach(function (key, index) {
53
+ value.instance.variableFields[key] = JSON.parse(JSON.stringify(value.instance.variableFields[key]));
54
+ });
55
+ }
56
+ });
47
57
  }
48
58
  set form(value) {
49
59
  this._form = value;
@@ -58,6 +68,18 @@ export class PepQueryStructureService {
58
68
  * @param containerRef reference to root element
59
69
  */
60
70
  buildQueryStructure(query, containerRef) {
71
+ // Remove all the components from the query builder.
72
+ this._cmpRefMap.forEach((value, key) => {
73
+ // console.log(key, value);
74
+ // value.instance.remove();
75
+ if (value.instance.parentForm) {
76
+ value.instance.parentForm.removeControl(key);
77
+ }
78
+ value.destroy();
79
+ this._cmpRefMap.delete(key);
80
+ });
81
+ // Clear containerRef
82
+ containerRef.clear();
61
83
  //update root operator
62
84
  if (this.hasProperty(query, 'ComplexId') &&
63
85
  query?.Operation &&
@@ -138,10 +160,15 @@ export class PepQueryStructureService {
138
160
  parentForm.removeControl(formKey);
139
161
  componentRef.destroy();
140
162
  this.createOutputQuery();
163
+ if (this._cmpRefMap.has(formKey)) {
164
+ this._cmpRefMap.delete(formKey);
165
+ }
141
166
  });
142
167
  componentRef.instance.operatorChange.subscribe(() => {
143
168
  this.createOutputQuery();
144
169
  });
170
+ // Add this to remove all the components when fields changes.
171
+ this._cmpRefMap.set(formKey, componentRef);
145
172
  return {
146
173
  containerRef: componentRef.instance.sectionContainer,
147
174
  parentForm: sectionGroup
@@ -179,7 +206,12 @@ export class PepQueryStructureService {
179
206
  parentForm.removeControl(formKey);
180
207
  componentRef.destroy();
181
208
  this.createOutputQuery();
209
+ if (this._cmpRefMap.has(formKey)) {
210
+ this._cmpRefMap.delete(formKey);
211
+ }
182
212
  });
213
+ // Add this to remove all the components when fields changes.
214
+ this._cmpRefMap.set(formKey, componentRef);
183
215
  }
184
216
  /**
185
217
  * get smart filter field
@@ -218,9 +250,9 @@ export class PepQueryStructureService {
218
250
  }
219
251
  }
220
252
  }
221
- PepQueryStructureService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepQueryStructureService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.PepOutputQueryService }, { token: i2.PepQueryBuilderService }], target: i0.ɵɵFactoryTarget.Injectable });
222
- PepQueryStructureService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepQueryStructureService });
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepQueryStructureService, decorators: [{
253
+ PepQueryStructureService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepQueryStructureService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.PepOutputQueryService }, { token: i2.PepQueryBuilderService }], target: i0.ɵɵFactoryTarget.Injectable });
254
+ PepQueryStructureService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepQueryStructureService });
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepQueryStructureService, decorators: [{
224
256
  type: Injectable
225
257
  }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.PepOutputQueryService }, { type: i2.PepQueryBuilderService }]; } });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RydWN0dXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3F1ZXJ5LWJ1aWxkZXIvY29tbW9uL3NlcnZpY2VzL3F1ZXJ5LXN0cnVjdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQThDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWV2QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUVyRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUUzRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUc5QixNQUFNLE9BQU8sd0JBQXdCO0lBVWpDLFlBQ1ksU0FBbUMsRUFDbkMsbUJBQTBDLEVBQzFDLG9CQUE0QztRQUY1QyxjQUFTLEdBQVQsU0FBUyxDQUEwQjtRQUNuQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXVCO1FBQzFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBd0I7UUFaaEQsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBbUMsSUFBSSxDQUFDLENBQUM7UUFHNUUsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFFMUIsdUJBQWtCLEdBQUcsbUJBQW1CLENBQUM7UUFFMUMsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBT3hELENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUFLO1FBQ2Qs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QUMsQ0FBQztZQUN2RixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDaEc7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2xGO0lBQ0wsQ0FBQztJQUVPLCtCQUErQixDQUFDLElBQVk7UUFDaEQsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxZQUFZO2dCQUNiLE9BQU8sUUFBUSxDQUFDO1lBQ3BCLEtBQUssV0FBVztnQkFDWixPQUFPLE1BQU0sQ0FBQztZQUNsQjtnQkFDSSxPQUFPLElBQUksQ0FBQztTQUNuQjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNiLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQzs7cUhBcE9RLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IElQZXBRdWVyeUJ1aWxkZXJGaWVsZCwgSVBlcFF1ZXJ5U2VjdGlvbiwgSVBlcFF1ZXJ5SXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbC9sZWdhY3knO1xuaW1wb3J0IHtcbiAgICBJUGVwU21hcnRGaWx0ZXJEYXRhLFxuICAgIFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLFxuICAgIElQZXBTbWFydEZpbHRlck9wZXJhdG9yLFxuICAgIFBlcFNtYXJ0RmlsdGVyVHlwZSxcbiAgICBjcmVhdGVTbWFydEZpbHRlcixcbiAgICBjcmVhdGVTbWFydEZpbHRlckZpZWxkLFxuICAgIFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMnO1xuaW1wb3J0IHsgUGVwUXVlcnlCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3F1ZXJ5LWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQZXBPdXRwdXRRdWVyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvb3V0cHV0LXF1ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0U21hcnRGaWx0ZXJPcGVyYXRvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbC9vcGVyYXRvcic7XG5pbXBvcnQgeyBQZXBRdWVyeUJ1aWxkZXJTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcXVlcnktYnVpbGRlci1zZWN0aW9uL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVwUXVlcnlCdWlsZGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3F1ZXJ5LWJ1aWxkZXItaXRlbS9xdWVyeS1idWlsZGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElQZXBRdWVyeUJ1aWxkZXJGaWVsZENvbnRhaW5lciB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbC9maWVsZCc7XG5pbXBvcnQgeyBQZXBRdWVyeUJ1aWxkZXJUeXBlTWFwIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVsL3R5cGUtbWFwJztcbmltcG9ydCB7IGdldFNtYXJ0RmlsdGVyT3BlcmF0aW9uVW5pdCB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbC9vcGVyYXRvci11bml0JztcbmltcG9ydCB7IElQZXBRdWVyeUJ1aWxkZXJWYWx1ZXMgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWwvZmlsdGVyJztcbmltcG9ydCB7IFBlcE9wZXJhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWwvdHlwZSc7XG5cbmNvbnN0IE1BWF9TVFJVQ1RVUkVfREVQVEggPSAzO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVwUXVlcnlTdHJ1Y3R1cmVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9vdXRwdXRRdWVyeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElQZXBRdWVyeVNlY3Rpb24gfCBJUGVwUXVlcnlJdGVtPihudWxsKTtcblxuICAgIHByaXZhdGUgX3NtYXJ0RmlsdGVyRmllbGRzOiBBcnJheTxJUGVwUXVlcnlCdWlsZGVyRmllbGRDb250YWluZXI+O1xuICAgIHByaXZhdGUgX3ZhcmlhYmxlRmllbGRzOiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIF9mb3JtOiBGb3JtR3JvdXA7XG4gICAgcHJpdmF0ZSBfbWF4U3RydWN0dXJlRGVwdGggPSBNQVhfU1RSVUNUVVJFX0RFUFRIO1xuXG4gICAgcHVibGljIG91dHB1dFF1ZXJ5JCA9IHRoaXMuX291dHB1dFF1ZXJ5JC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9yZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIF9vdXRwdXRRdWVyeVNlcnZpY2U6IFBlcE91dHB1dFF1ZXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfcXVlcnlCdWlsZGVyU2VydmljZTogUGVwUXVlcnlCdWlsZGVyU2VydmljZSkge1xuXG4gICAgfVxuXG4gICAgc2V0IG1heERlcHRoKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX21heFN0cnVjdHVyZURlcHRoID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IG1heERlcHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4U3RydWN0dXJlRGVwdGg7XG4gICAgfVxuXG4gICAgc2V0IGZpZWxkcyhsaXN0OiBBcnJheTxJUGVwUXVlcnlCdWlsZGVyRmllbGQ+KSB7XG4gICAgICAgIHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzID0gdGhpcy5fcXVlcnlCdWlsZGVyU2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlckZpZWxkcyhsaXN0KTtcbiAgICB9XG5cbiAgICBnZXQgaGFzRmllbGRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHM/Lmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgc2V0IHZhcmlhYmxlRmllbGRzKGxpc3Q6IEFycmF5PElQZXBRdWVyeUJ1aWxkZXJGaWVsZD4pIHtcbiAgICAgICAgaWYgKGxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgdHlwZU1hcHBlciA9IG5ldyBQZXBRdWVyeUJ1aWxkZXJUeXBlTWFwKCk7XG4gICAgICAgICAgICBsaXN0LmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IHRoaXMuY29udmVydFNtYXJ0RmlsdGVyQ29tcG9uZW50VHlwZSh0eXBlTWFwcGVyLmdldFNtYXJ0RmlsdGVyVHlwZShmaWVsZC5GaWVsZFR5cGUpKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNQcm9wZXJ0eSh0aGlzLl92YXJpYWJsZUZpZWxkcywgZmllbGRUeXBlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YXJpYWJsZUZpZWxkc1tmaWVsZFR5cGVdLnB1c2goZmllbGQuRmllbGRJRCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFyaWFibGVGaWVsZHNbZmllbGRUeXBlXSA9IFtmaWVsZC5GaWVsZElEXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldCBmb3JtKHZhbHVlOiBGb3JtR3JvdXApIHtcbiAgICAgICAgdGhpcy5fZm9ybSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBmb3JtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBidWlsZHMgYSBkeW5hbWljIFVJIHF1ZXJ5IHN0cnVjdHVyZVxuICAgICAqIG1pZ2h0IGhhcyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgdGhhbiB0aGUgcXVlcnkncyBkdWUgdG8gcGFyZW50LWNoaWxkIGVsZW1lbnRzIG1lcmdlXG4gICAgICogQHBhcmFtIHF1ZXJ5IGxlZ2FjeSBxdWVyeSAgICAgXG4gICAgICogQHBhcmFtIGNvbnRhaW5lclJlZiByZWZlcmVuY2UgdG8gcm9vdCBlbGVtZW50XG4gICAgICovXG4gICAgYnVpbGRRdWVyeVN0cnVjdHVyZShcbiAgICAgICAgcXVlcnk6IElQZXBRdWVyeVNlY3Rpb24gfCBJUGVwUXVlcnlJdGVtLFxuICAgICAgICBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgICApIHtcbiAgICAgICAgLy91cGRhdGUgcm9vdCBvcGVyYXRvciAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmhhc1Byb3BlcnR5KHF1ZXJ5LCAnQ29tcGxleElkJykgJiZcbiAgICAgICAgICAgIHF1ZXJ5Py5PcGVyYXRpb24gJiZcbiAgICAgICAgICAgIHF1ZXJ5Lk9wZXJhdGlvbiAhPT0gdGhpcy5fZm9ybS5nZXQoJ29wZXJhdG9yJykudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm0uZ2V0KCdvcGVyYXRvcicpLnNldFZhbHVlKHF1ZXJ5Lk9wZXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mbGF0dGVuKHRoaXMuX2Zvcm0uZ2V0KCdvcGVyYXRvcicpLnZhbHVlLCBxdWVyeSwgY29udGFpbmVyUmVmLCB0aGlzLl9mb3JtLCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIGNoZWNrcyBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHByb3BlcnR5XG4gICAgKiBAcGFyYW0gb2JqIG9iamVjdFxuICAgICogQHBhcmFtIHByb3AgcHJvcGVydHkgbmFtZVxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBjb250YWlucywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgKi9cbiAgICBwcml2YXRlIGhhc1Byb3BlcnR5KG9iaiwgcHJvcCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYSByZWN1cnNpdmUgZnVuY3Rpb24gZHluYW1pY2FsbHkgYnVpbGRzIFVJIGZpbHRlcnMgc3RydWN0dXJlXG4gICAgICogQHBhcmFtIHBhcmVudE9wZXJhdG9yIHBhcmVudCBsZWdhY3kgY29tcGxleCBvcGVyYXRvclxuICAgICAqIEBwYXJhbSBjdXJyZW50IGNoaWxkIGxlZ2FjeSBvYmplY3QgKGVpdGhlciBhbm90aGVyIGNvbXBsZXggb3IgZXhwcmVzc2lvbiB0eXBlKVxuICAgICAqIEBwYXJhbSBjb250YWluZXJSZWYgcGFyZW50IGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gcGFyZW50Rm9ybSBwYXJlbnQgZm9ybVxuICAgICAqL1xuICAgIHByaXZhdGUgZmxhdHRlbihwYXJlbnRPcGVyYXRvcjogc3RyaW5nLCBjdXJyZW50OiBJUGVwUXVlcnlTZWN0aW9uIHwgSVBlcFF1ZXJ5SXRlbSwgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwYXJlbnRGb3JtOiBGb3JtR3JvdXAsIGRlcHRoOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydHkoY3VycmVudCwgJ0NvbXBsZXhJZCcpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gY3VycmVudCBhcyBJUGVwUXVlcnlTZWN0aW9uO1xuICAgICAgICAgICAgaWYgKHBhcmVudE9wZXJhdG9yID09PSBjdXJyZW50Lk9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbihjdXJyZW50Lk9wZXJhdGlvbiwgc2VjdGlvbi5MZWZ0Tm9kZSwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbGF0dGVuKGN1cnJlbnQuT3BlcmF0aW9uLCBzZWN0aW9uLlJpZ2h0Tm9kZSwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY3JlYXRlU2VjdGlvbihzZWN0aW9uLk9wZXJhdGlvbiwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCArIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbihzZWN0aW9uLk9wZXJhdGlvbiwgc2VjdGlvbi5MZWZ0Tm9kZSwgcmVzdWx0LmNvbnRhaW5lclJlZiwgcmVzdWx0LnBhcmVudEZvcm0sIGRlcHRoICsgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbGF0dGVuKHNlY3Rpb24uT3BlcmF0aW9uLCBzZWN0aW9uLlJpZ2h0Tm9kZSwgcmVzdWx0LmNvbnRhaW5lclJlZiwgcmVzdWx0LnBhcmVudEZvcm0sIGRlcHRoICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNQcm9wZXJ0eShjdXJyZW50LCAnRXhwcmVzc2lvbklkJykpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlSXRlbShjdXJyZW50IGFzIElQZXBRdWVyeUl0ZW0sIGNvbnRhaW5lclJlZiwgcGFyZW50Rm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGEgY29udGFpbmVyIG9iamVjdCBvZiB0d28gb3IgbW9yZSBjaGlsZCBmaWx0ZXIgaXRlbXNcbiAgICAgKiBAcGFyYW0gb3BlcmF0b3IgQU5EL09SIG9wZXJhdG9yXG4gICAgICogQHBhcmFtIGNvbnRhaW5lclJlZiBwYXJlbnQgZWxlbWVudFxuICAgICAqIEBwYXJhbSBwYXJlbnRGb3JtIHBhcmVudCBmb3JtXG4gICAgICogQHBhcmFtIGRlcHRoXG4gICAgICogQHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgZWxlbWVudCBhbmQgY3VycmVudCBmb3JtXG4gICAgICovXG4gICAgY3JlYXRlU2VjdGlvbihvcGVyYXRvcjogUGVwT3BlcmF0b3JUeXBlcywgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwYXJlbnRGb3JtOiBGb3JtR3JvdXAsIGRlcHRoOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX3Jlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFBlcFF1ZXJ5QnVpbGRlclNlY3Rpb25Db21wb25lbnQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuXG4gICAgICAgIC8vIGNvbnN0IHNlY3Rpb25Hcm91cCA9IHRoaXMuX2ZiLmdyb3VwKHtcbiAgICAgICAgLy8gICAgIG9wZXJhdG9yOiB0aGlzLl9mYi5jb250cm9sKG9wZXJhdG9yKVxuICAgICAgICAvLyB9KTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBvcGVyYXRvcjogbmV3IEZvcm1Db250cm9sKG9wZXJhdG9yKVxuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgICAgICBPYmplY3Qua2V5cyhwYXJlbnRGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGl0ZW0gPT4geyBpZiAoaXRlbS5pbmNsdWRlcygnc2VjdGlvbicpKSB7IGNvdW50ZXIrKzsgfSB9KTtcbiAgICAgICAgY29uc3QgZm9ybUtleSA9IGBzZWN0aW9uJHtjb3VudGVyfWA7XG4gICAgICAgIHBhcmVudEZvcm0uYWRkQ29udHJvbChmb3JtS2V5LCBzZWN0aW9uR3JvdXApO1xuXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5mb3JtID0gc2VjdGlvbkdyb3VwO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGVwdGggPSB7XG4gICAgICAgICAgICBjdXJyZW50OiBkZXB0aCxcbiAgICAgICAgICAgIG1heDogdGhpcy5fbWF4U3RydWN0dXJlRGVwdGhcbiAgICAgICAgfTtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNyZWF0ZVNlY3Rpb24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmNyZWF0ZVNlY3Rpb24oUGVwT3BlcmF0b3JUeXBlcy5BbmQsIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWN0aW9uQ29udGFpbmVyLCBzZWN0aW9uR3JvdXAsIGRlcHRoICsgMSk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUl0ZW0obnVsbCwgc2VjdGlvbi5jb250YWluZXJSZWYsIHNlY3Rpb24ucGFyZW50Rm9ybSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY3JlYXRlSXRlbS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVJdGVtKG51bGwsIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWN0aW9uQ29udGFpbmVyLCBzZWN0aW9uR3JvdXApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnJlbW92ZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgcGFyZW50Rm9ybS5yZW1vdmVDb250cm9sKGZvcm1LZXkpO1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0UXVlcnkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vcGVyYXRvckNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVPdXRwdXRRdWVyeSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGFpbmVyUmVmOiBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VjdGlvbkNvbnRhaW5lcixcbiAgICAgICAgICAgIHBhcmVudEZvcm06IHNlY3Rpb25Hcm91cFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgYSBjb21wb25lbnQgcmVwcmVzZW50cyBmaWx0ZXIgaXRlbSAobGVhZiBlbGVtZW50IC0gaGFzIG5vIGNoaWxkcylcbiAgICAgKiBAcGFyYW0gY3VycmVudCBmaWx0ZXIgbGVnYWN5IGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyUmVmIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcmFtIHBhcmVudEZvcm0gcGFyZW50IGZvcm1cbiAgICAgKi9cbiAgICBjcmVhdGVJdGVtKGN1cnJlbnQ6IElQZXBRdWVyeUl0ZW0sIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcGFyZW50Rm9ybTogRm9ybUdyb3VwKSB7XG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShQZXBRdWVyeUJ1aWxkZXJJdGVtQ29tcG9uZW50KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcblxuICAgICAgICBsZXQgY291bnRlciA9IDE7XG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmVudEZvcm0uY29udHJvbHMpLmZvckVhY2goaXRlbSA9PiB7IGlmIChpdGVtLmluY2x1ZGVzKCdpdGVtJykpIHsgY291bnRlcisrOyB9IH0pO1xuICAgICAgICBjb25zdCBmb3JtS2V5ID0gYGl0ZW0ke2NvdW50ZXJ9YDtcblxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZm9ybUtleSA9IGZvcm1LZXk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWVsZHMgPSB0aGlzLl9zbWFydEZpbHRlckZpZWxkcztcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnZhcmlhYmxlRmllbGRzID0gdGhpcy5fdmFyaWFibGVGaWVsZHM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmllbGQgPSB0aGlzLmdldFNlbGVjdGVkRmllbGQoY3VycmVudCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEZpZWxkKSB7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0ZWQgPSBzZWxlY3RlZEZpZWxkO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmlsdGVyID0gdGhpcy5fcXVlcnlCdWlsZGVyU2VydmljZS5nZXRGaWx0ZXIoY3VycmVudCwgc2VsZWN0ZWRGaWVsZC5zbWFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhcmVudEZvcm0gPSBwYXJlbnRGb3JtO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmlsdGVyQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dFF1ZXJ5KCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucmVtb3ZlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBwYXJlbnRGb3JtLnJlbW92ZUNvbnRyb2woZm9ybUtleSk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVPdXRwdXRRdWVyeSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgc21hcnQgZmlsdGVyIGZpZWxkXG4gICAgICogQHBhcmFtIGN1cnJlbnQgZmlsdGVyIGxlZ2FjeSBlbGVtZW50XG4gICAgICogQHJldHVybnMgc21hcnQgZmlsdGVyIGZpZWxkLCBpZiBub3QgZm91bmQgcmV0dXJucyB0aGUgZmlyc3QgZmllbGRcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFNlbGVjdGVkRmllbGQoY3VycmVudDogSVBlcFF1ZXJ5SXRlbSk6IElQZXBRdWVyeUJ1aWxkZXJGaWVsZENvbnRhaW5lciB8IG51bGwge1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuc21hcnQuaWQgPT09IGN1cnJlbnQuQXBpTmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbSA/IGl0ZW0gOiB0aGlzLl9zbWFydEZpbHRlckZpZWxkcz8ubGVuZ3RoID4gMCA/IHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzWzBdIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zbWFydEZpbHRlckZpZWxkcz8ubGVuZ3RoID4gMCA/IHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzWzBdIDogbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydFNtYXJ0RmlsdGVyQ29tcG9uZW50VHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdpbnQnOlxuICAgICAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICAgICAgY2FzZSAncmVhbCc6XG4gICAgICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgICAgICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBhIGxlZ2FjeSBvdXRwdXQgcXVlcnkgXG4gICAgICovXG4gICAgY3JlYXRlT3V0cHV0UXVlcnkoKSB7XG4gICAgICAgIGlmICh0aGlzLl9mb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMuX291dHB1dFF1ZXJ5U2VydmljZS5nZW5lcmF0ZVF1ZXJ5KHRoaXMuX2Zvcm0udmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fb3V0cHV0UXVlcnkkLm5leHQocXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG59Il19
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RydWN0dXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3F1ZXJ5LWJ1aWxkZXIvY29tbW9uL3NlcnZpY2VzL3F1ZXJ5LXN0cnVjdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTRELE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUt2QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUVyRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUUzRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUc5QixNQUFNLE9BQU8sd0JBQXdCO0lBWWpDLFlBQ1ksU0FBbUMsRUFDbkMsbUJBQTBDLEVBQzFDLG9CQUE0QztRQUY1QyxjQUFTLEdBQVQsU0FBUyxDQUEwQjtRQUNuQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXVCO1FBQzFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBd0I7UUFkaEQsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBbUMsSUFBSSxDQUFDLENBQUM7UUFHNUUsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFFMUIsdUJBQWtCLEdBQUcsbUJBQW1CLENBQUM7UUFFekMsZUFBVSxHQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXhELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQU94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RztJQUNILGlCQUFpQjtRQUNiLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQzs7c0hBMVFRLHdCQUF3QjswSEFBeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSVBlcFF1ZXJ5QnVpbGRlckZpZWxkLCBJUGVwUXVlcnlTZWN0aW9uLCBJUGVwUXVlcnlJdGVtIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVsL2xlZ2FjeSc7XG5pbXBvcnQgeyBQZXBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcE91dHB1dFF1ZXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9vdXRwdXQtcXVlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBQZXBRdWVyeUJ1aWxkZXJTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcXVlcnktYnVpbGRlci1zZWN0aW9uL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVwUXVlcnlCdWlsZGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3F1ZXJ5LWJ1aWxkZXItaXRlbS9xdWVyeS1idWlsZGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElQZXBRdWVyeUJ1aWxkZXJGaWVsZENvbnRhaW5lciB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbC9maWVsZCc7XG5pbXBvcnQgeyBQZXBRdWVyeUJ1aWxkZXJUeXBlTWFwIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVsL3R5cGUtbWFwJztcbmltcG9ydCB7IFBlcE9wZXJhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWwvdHlwZSc7XG5cbmNvbnN0IE1BWF9TVFJVQ1RVUkVfREVQVEggPSAzO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVwUXVlcnlTdHJ1Y3R1cmVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9vdXRwdXRRdWVyeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElQZXBRdWVyeVNlY3Rpb24gfCBJUGVwUXVlcnlJdGVtPihudWxsKTtcblxuICAgIHByaXZhdGUgX3NtYXJ0RmlsdGVyRmllbGRzOiBBcnJheTxJUGVwUXVlcnlCdWlsZGVyRmllbGRDb250YWluZXI+O1xuICAgIHByaXZhdGUgX3ZhcmlhYmxlRmllbGRzOiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIF9mb3JtOiBGb3JtR3JvdXA7XG4gICAgcHJpdmF0ZSBfbWF4U3RydWN0dXJlRGVwdGggPSBNQVhfU1RSVUNUVVJFX0RFUFRIO1xuXG4gICAgcHJpdmF0ZSBfY21wUmVmTWFwOiBNYXA8c3RyaW5nLCBDb21wb25lbnRSZWY8YW55Pj4gPSBuZXcgTWFwKCk7XG5cbiAgICBwdWJsaWMgb3V0cHV0UXVlcnkkID0gdGhpcy5fb3V0cHV0UXVlcnkkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3Jlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgX291dHB1dFF1ZXJ5U2VydmljZTogUGVwT3V0cHV0UXVlcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9xdWVyeUJ1aWxkZXJTZXJ2aWNlOiBQZXBRdWVyeUJ1aWxkZXJTZXJ2aWNlKSB7XG5cbiAgICB9XG5cbiAgICBzZXQgbWF4RGVwdGgodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fbWF4U3RydWN0dXJlRGVwdGggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbWF4RGVwdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhTdHJ1Y3R1cmVEZXB0aDtcbiAgICB9XG5cbiAgICBzZXQgZmllbGRzKGxpc3Q6IEFycmF5PElQZXBRdWVyeUJ1aWxkZXJGaWVsZD4pIHtcbiAgICAgICAgdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHMgPSB0aGlzLl9xdWVyeUJ1aWxkZXJTZXJ2aWNlLmNvbnZlcnRUb1NtYXJ0RmlsdGVyRmllbGRzKGxpc3QpO1xuICAgIH1cblxuICAgIGdldCBoYXNGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zbWFydEZpbHRlckZpZWxkcz8ubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBzZXQgdmFyaWFibGVGaWVsZHMobGlzdDogQXJyYXk8SVBlcFF1ZXJ5QnVpbGRlckZpZWxkPikge1xuICAgICAgICBpZiAobGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTWFwcGVyID0gbmV3IFBlcFF1ZXJ5QnVpbGRlclR5cGVNYXAoKTtcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRUeXBlID0gdGhpcy5jb252ZXJ0U21hcnRGaWx0ZXJDb21wb25lbnRUeXBlKHR5cGVNYXBwZXIuZ2V0U21hcnRGaWx0ZXJUeXBlKGZpZWxkLkZpZWxkVHlwZSkpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1Byb3BlcnR5KHRoaXMuX3ZhcmlhYmxlRmllbGRzLCBmaWVsZFR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmKCF0aGlzLl92YXJpYWJsZUZpZWxkc1tmaWVsZFR5cGVdLmluY2x1ZGVzKGZpZWxkLkZpZWxkSUQpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhYmxlRmllbGRzW2ZpZWxkVHlwZV0ucHVzaChmaWVsZC5GaWVsZElEKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhYmxlRmllbGRzW2ZpZWxkVHlwZV0gPSBbZmllbGQuRmllbGRJRF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jbXBSZWZNYXAuZm9yRWFjaCgodmFsdWU6IENvbXBvbmVudFJlZjxhbnk+LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmluc3RhbmNlLnZhcmlhYmxlRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUuaW5zdGFuY2UudmFyaWFibGVGaWVsZHMpLmZvckVhY2goZnVuY3Rpb24oa2V5LCBpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmluc3RhbmNlLnZhcmlhYmxlRmllbGRzW2tleV0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlLmluc3RhbmNlLnZhcmlhYmxlRmllbGRzW2tleV0pKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0IGZvcm0odmFsdWU6IEZvcm1Hcm91cCkge1xuICAgICAgICB0aGlzLl9mb3JtID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJ1aWxkcyBhIGR5bmFtaWMgVUkgcXVlcnkgc3RydWN0dXJlXG4gICAgICogbWlnaHQgaGFzIGEgZGlmZmVyZW50IHN0cnVjdHVyZSB0aGFuIHRoZSBxdWVyeSdzIGR1ZSB0byBwYXJlbnQtY2hpbGQgZWxlbWVudHMgbWVyZ2VcbiAgICAgKiBAcGFyYW0gcXVlcnkgbGVnYWN5IHF1ZXJ5ICAgICBcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyUmVmIHJlZmVyZW5jZSB0byByb290IGVsZW1lbnRcbiAgICAgKi9cbiAgICBidWlsZFF1ZXJ5U3RydWN0dXJlKFxuICAgICAgICBxdWVyeTogSVBlcFF1ZXJ5U2VjdGlvbiB8IElQZXBRdWVyeUl0ZW0sXG4gICAgICAgIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICAgICkge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIHRoZSBjb21wb25lbnRzIGZyb20gdGhlIHF1ZXJ5IGJ1aWxkZXIuXG4gICAgICAgIHRoaXMuX2NtcFJlZk1hcC5mb3JFYWNoKCh2YWx1ZTogQ29tcG9uZW50UmVmPGFueT4sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIC8vIHZhbHVlLmluc3RhbmNlLnJlbW92ZSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlLmluc3RhbmNlLnBhcmVudEZvcm0pIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5pbnN0YW5jZS5wYXJlbnRGb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuX2NtcFJlZk1hcC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICAvLyBDbGVhciBjb250YWluZXJSZWZcbiAgICAgICAgY29udGFpbmVyUmVmLmNsZWFyKCk7XG5cbiAgICAgICAgLy91cGRhdGUgcm9vdCBvcGVyYXRvciAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmhhc1Byb3BlcnR5KHF1ZXJ5LCAnQ29tcGxleElkJykgJiZcbiAgICAgICAgICAgIHF1ZXJ5Py5PcGVyYXRpb24gJiZcbiAgICAgICAgICAgIHF1ZXJ5Lk9wZXJhdGlvbiAhPT0gdGhpcy5fZm9ybS5nZXQoJ29wZXJhdG9yJykudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm0uZ2V0KCdvcGVyYXRvcicpLnNldFZhbHVlKHF1ZXJ5Lk9wZXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mbGF0dGVuKHRoaXMuX2Zvcm0uZ2V0KCdvcGVyYXRvcicpLnZhbHVlLCBxdWVyeSwgY29udGFpbmVyUmVmLCB0aGlzLl9mb3JtLCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIGNoZWNrcyBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHByb3BlcnR5XG4gICAgKiBAcGFyYW0gb2JqIG9iamVjdFxuICAgICogQHBhcmFtIHByb3AgcHJvcGVydHkgbmFtZVxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBjb250YWlucywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgKi9cbiAgICBwcml2YXRlIGhhc1Byb3BlcnR5KG9iaiwgcHJvcCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYSByZWN1cnNpdmUgZnVuY3Rpb24gZHluYW1pY2FsbHkgYnVpbGRzIFVJIGZpbHRlcnMgc3RydWN0dXJlXG4gICAgICogQHBhcmFtIHBhcmVudE9wZXJhdG9yIHBhcmVudCBsZWdhY3kgY29tcGxleCBvcGVyYXRvclxuICAgICAqIEBwYXJhbSBjdXJyZW50IGNoaWxkIGxlZ2FjeSBvYmplY3QgKGVpdGhlciBhbm90aGVyIGNvbXBsZXggb3IgZXhwcmVzc2lvbiB0eXBlKVxuICAgICAqIEBwYXJhbSBjb250YWluZXJSZWYgcGFyZW50IGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gcGFyZW50Rm9ybSBwYXJlbnQgZm9ybVxuICAgICAqL1xuICAgIHByaXZhdGUgZmxhdHRlbihwYXJlbnRPcGVyYXRvcjogc3RyaW5nLCBjdXJyZW50OiBJUGVwUXVlcnlTZWN0aW9uIHwgSVBlcFF1ZXJ5SXRlbSwgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwYXJlbnRGb3JtOiBGb3JtR3JvdXAsIGRlcHRoOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydHkoY3VycmVudCwgJ0NvbXBsZXhJZCcpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gY3VycmVudCBhcyBJUGVwUXVlcnlTZWN0aW9uO1xuICAgICAgICAgICAgaWYgKHBhcmVudE9wZXJhdG9yID09PSBjdXJyZW50Lk9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbihjdXJyZW50Lk9wZXJhdGlvbiwgc2VjdGlvbi5MZWZ0Tm9kZSwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbGF0dGVuKGN1cnJlbnQuT3BlcmF0aW9uLCBzZWN0aW9uLlJpZ2h0Tm9kZSwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY3JlYXRlU2VjdGlvbihzZWN0aW9uLk9wZXJhdGlvbiwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCArIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbihzZWN0aW9uLk9wZXJhdGlvbiwgc2VjdGlvbi5MZWZ0Tm9kZSwgcmVzdWx0LmNvbnRhaW5lclJlZiwgcmVzdWx0LnBhcmVudEZvcm0sIGRlcHRoICsgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbGF0dGVuKHNlY3Rpb24uT3BlcmF0aW9uLCBzZWN0aW9uLlJpZ2h0Tm9kZSwgcmVzdWx0LmNvbnRhaW5lclJlZiwgcmVzdWx0LnBhcmVudEZvcm0sIGRlcHRoICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNQcm9wZXJ0eShjdXJyZW50LCAnRXhwcmVzc2lvbklkJykpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlSXRlbShjdXJyZW50IGFzIElQZXBRdWVyeUl0ZW0sIGNvbnRhaW5lclJlZiwgcGFyZW50Rm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGEgY29udGFpbmVyIG9iamVjdCBvZiB0d28gb3IgbW9yZSBjaGlsZCBmaWx0ZXIgaXRlbXNcbiAgICAgKiBAcGFyYW0gb3BlcmF0b3IgQU5EL09SIG9wZXJhdG9yXG4gICAgICogQHBhcmFtIGNvbnRhaW5lclJlZiBwYXJlbnQgZWxlbWVudFxuICAgICAqIEBwYXJhbSBwYXJlbnRGb3JtIHBhcmVudCBmb3JtXG4gICAgICogQHBhcmFtIGRlcHRoXG4gICAgICogQHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgZWxlbWVudCBhbmQgY3VycmVudCBmb3JtXG4gICAgICovXG4gICAgY3JlYXRlU2VjdGlvbihvcGVyYXRvcjogUGVwT3BlcmF0b3JUeXBlcywgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwYXJlbnRGb3JtOiBGb3JtR3JvdXAsIGRlcHRoOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX3Jlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFBlcFF1ZXJ5QnVpbGRlclNlY3Rpb25Db21wb25lbnQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuXG4gICAgICAgIC8vIGNvbnN0IHNlY3Rpb25Hcm91cCA9IHRoaXMuX2ZiLmdyb3VwKHtcbiAgICAgICAgLy8gICAgIG9wZXJhdG9yOiB0aGlzLl9mYi5jb250cm9sKG9wZXJhdG9yKVxuICAgICAgICAvLyB9KTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBvcGVyYXRvcjogbmV3IEZvcm1Db250cm9sKG9wZXJhdG9yKVxuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgICAgICBPYmplY3Qua2V5cyhwYXJlbnRGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGl0ZW0gPT4geyBpZiAoaXRlbS5pbmNsdWRlcygnc2VjdGlvbicpKSB7IGNvdW50ZXIrKzsgfSB9KTtcbiAgICAgICAgY29uc3QgZm9ybUtleSA9IGBzZWN0aW9uJHtjb3VudGVyfWA7XG4gICAgICAgIHBhcmVudEZvcm0uYWRkQ29udHJvbChmb3JtS2V5LCBzZWN0aW9uR3JvdXApO1xuXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5mb3JtID0gc2VjdGlvbkdyb3VwO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGVwdGggPSB7XG4gICAgICAgICAgICBjdXJyZW50OiBkZXB0aCxcbiAgICAgICAgICAgIG1heDogdGhpcy5fbWF4U3RydWN0dXJlRGVwdGhcbiAgICAgICAgfTtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNyZWF0ZVNlY3Rpb24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmNyZWF0ZVNlY3Rpb24oUGVwT3BlcmF0b3JUeXBlcy5BbmQsIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWN0aW9uQ29udGFpbmVyLCBzZWN0aW9uR3JvdXAsIGRlcHRoICsgMSk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUl0ZW0obnVsbCwgc2VjdGlvbi5jb250YWluZXJSZWYsIHNlY3Rpb24ucGFyZW50Rm9ybSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY3JlYXRlSXRlbS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVJdGVtKG51bGwsIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWN0aW9uQ29udGFpbmVyLCBzZWN0aW9uR3JvdXApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnJlbW92ZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgcGFyZW50Rm9ybS5yZW1vdmVDb250cm9sKGZvcm1LZXkpO1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0UXVlcnkoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jbXBSZWZNYXAuaGFzKGZvcm1LZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY21wUmVmTWFwLmRlbGV0ZShmb3JtS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vcGVyYXRvckNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVPdXRwdXRRdWVyeSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZGQgdGhpcyB0byByZW1vdmUgYWxsIHRoZSBjb21wb25lbnRzIHdoZW4gZmllbGRzIGNoYW5nZXMuXG4gICAgICAgIHRoaXMuX2NtcFJlZk1hcC5zZXQoZm9ybUtleSwgY29tcG9uZW50UmVmKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGFpbmVyUmVmOiBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VjdGlvbkNvbnRhaW5lcixcbiAgICAgICAgICAgIHBhcmVudEZvcm06IHNlY3Rpb25Hcm91cFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgYSBjb21wb25lbnQgcmVwcmVzZW50cyBmaWx0ZXIgaXRlbSAobGVhZiBlbGVtZW50IC0gaGFzIG5vIGNoaWxkcylcbiAgICAgKiBAcGFyYW0gY3VycmVudCBmaWx0ZXIgbGVnYWN5IGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyUmVmIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcmFtIHBhcmVudEZvcm0gcGFyZW50IGZvcm1cbiAgICAgKi9cbiAgICBjcmVhdGVJdGVtKGN1cnJlbnQ6IElQZXBRdWVyeUl0ZW0sIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcGFyZW50Rm9ybTogRm9ybUdyb3VwKSB7XG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShQZXBRdWVyeUJ1aWxkZXJJdGVtQ29tcG9uZW50KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICAgICAgXG4gICAgICAgIGxldCBjb3VudGVyID0gMTtcbiAgICAgICAgT2JqZWN0LmtleXMocGFyZW50Rm9ybS5jb250cm9scykuZm9yRWFjaChpdGVtID0+IHsgaWYgKGl0ZW0uaW5jbHVkZXMoJ2l0ZW0nKSkgeyBjb3VudGVyKys7IH0gfSk7XG4gICAgICAgIGNvbnN0IGZvcm1LZXkgPSBgaXRlbSR7Y291bnRlcn1gO1xuXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5mb3JtS2V5ID0gZm9ybUtleTtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkcyA9IHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UudmFyaWFibGVGaWVsZHMgPSB0aGlzLl92YXJpYWJsZUZpZWxkcztcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaWVsZCA9IHRoaXMuZ2V0U2VsZWN0ZWRGaWVsZChjdXJyZW50KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRmllbGQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3RlZCA9IHNlbGVjdGVkRmllbGQ7XG4gICAgICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWx0ZXIgPSB0aGlzLl9xdWVyeUJ1aWxkZXJTZXJ2aWNlLmdldEZpbHRlcihjdXJyZW50LCBzZWxlY3RlZEZpZWxkLnNtYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFyZW50Rm9ybSA9IHBhcmVudEZvcm07XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWx0ZXJDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0UXVlcnkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5yZW1vdmUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHBhcmVudEZvcm0ucmVtb3ZlQ29udHJvbChmb3JtS2V5KTtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dFF1ZXJ5KCk7XG4gICAgICAgICAgICBpZiAodGhpcy5fY21wUmVmTWFwLmhhcyhmb3JtS2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NtcFJlZk1hcC5kZWxldGUoZm9ybUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCB0aGlzIHRvIHJlbW92ZSBhbGwgdGhlIGNvbXBvbmVudHMgd2hlbiBmaWVsZHMgY2hhbmdlcy5cbiAgICAgICAgdGhpcy5fY21wUmVmTWFwLnNldChmb3JtS2V5LCBjb21wb25lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCBzbWFydCBmaWx0ZXIgZmllbGRcbiAgICAgKiBAcGFyYW0gY3VycmVudCBmaWx0ZXIgbGVnYWN5IGVsZW1lbnRcbiAgICAgKiBAcmV0dXJucyBzbWFydCBmaWx0ZXIgZmllbGQsIGlmIG5vdCBmb3VuZCByZXR1cm5zIHRoZSBmaXJzdCBmaWVsZFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U2VsZWN0ZWRGaWVsZChjdXJyZW50OiBJUGVwUXVlcnlJdGVtKTogSVBlcFF1ZXJ5QnVpbGRlckZpZWxkQ29udGFpbmVyIHwgbnVsbCB7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5zbWFydC5pZCA9PT0gY3VycmVudC5BcGlOYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtID8gaXRlbSA6IHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHNbMF0gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHNbMF0gOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0U21hcnRGaWx0ZXJDb21wb25lbnRUeXBlKHR5cGU6IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ludCc6XG4gICAgICAgICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICAgIGNhc2UgJ3BlcmNlbnRhZ2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkYXRlJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGEgbGVnYWN5IG91dHB1dCBxdWVyeSBcbiAgICAgKi9cbiAgICBjcmVhdGVPdXRwdXRRdWVyeSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2Zvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fb3V0cHV0UXVlcnlTZXJ2aWNlLmdlbmVyYXRlUXVlcnkodGhpcy5fZm9ybS52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9vdXRwdXRRdWVyeSQubmV4dChxdWVyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbn0iXX0=
@@ -1,18 +1,18 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class PepTypeConvertorService {
4
- constructor() {
5
- this._operators = [];
6
- this._booleans = [];
7
- this.initOperators();
8
- this.initBooleans();
9
- }
10
4
  get operators() {
11
5
  return this._operators;
12
6
  }
13
7
  get booleans() {
14
8
  return this._booleans;
15
9
  }
10
+ constructor() {
11
+ this._operators = [];
12
+ this._booleans = [];
13
+ this.initOperators();
14
+ this.initBooleans();
15
+ }
16
16
  initOperators() {
17
17
  this._operators.push({
18
18
  key: 'AND',
@@ -34,9 +34,9 @@ export class PepTypeConvertorService {
34
34
  });
35
35
  }
36
36
  }
37
- PepTypeConvertorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTypeConvertorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
- PepTypeConvertorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTypeConvertorService });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepTypeConvertorService, decorators: [{
37
+ PepTypeConvertorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTypeConvertorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
+ PepTypeConvertorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTypeConvertorService });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepTypeConvertorService, decorators: [{
40
40
  type: Injectable
41
41
  }], ctorParameters: function () { return []; } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1jb252ZXJ0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9jb21tb24vc2VydmljZXMvdHlwZS1jb252ZXJ0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8sdUJBQXVCO0lBWWhDO1FBWGlCLGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBQzlCLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBVzFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQVhELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBT08sYUFBYTtRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNqQixHQUFHLEVBQUUsS0FBSztZQUNWLEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDakIsR0FBRyxFQUFFLElBQUk7WUFDVCxLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxNQUFNO1lBQ1gsS0FBSyxFQUFFLE1BQU07U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDaEIsR0FBRyxFQUFFLE9BQU87WUFDWixLQUFLLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDUCxDQUFDOztvSEFyQ1EsdUJBQXVCO3dIQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQZXBPcHRpb24gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXBUeXBlQ29udmVydG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3BlcmF0b3JzOiBJUGVwT3B0aW9uW10gPSBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ib29sZWFuczogSVBlcE9wdGlvbltdID0gW107XG5cbiAgICBwdWJsaWMgZ2V0IG9wZXJhdG9ycygpOiBJUGVwT3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3BlcmF0b3JzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbnMoKTogSVBlcE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5zO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluaXRPcGVyYXRvcnMoKTtcbiAgICAgICAgdGhpcy5pbml0Qm9vbGVhbnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRPcGVyYXRvcnMoKSB7XG4gICAgICAgIHRoaXMuX29wZXJhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogJ0FORCcsXG4gICAgICAgICAgICB2YWx1ZTogJ0FuZCdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX29wZXJhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogJ09SJyxcbiAgICAgICAgICAgIHZhbHVlOiAnT3InXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEJvb2xlYW5zKCkge1xuICAgICAgICB0aGlzLl9ib29sZWFucy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogJ1RydWUnLFxuICAgICAgICAgICAgdmFsdWU6ICdUcnVlJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fYm9vbGVhbnMucHVzaCh7XG4gICAgICAgICAgICBrZXk6ICdGYWxzZScsXG4gICAgICAgICAgICB2YWx1ZTogJ0ZhbHNlJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbn0iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1jb252ZXJ0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9jb21tb24vc2VydmljZXMvdHlwZS1jb252ZXJ0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDLElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7UUFYaUIsZUFBVSxHQUFpQixFQUFFLENBQUM7UUFDOUIsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFXMUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNqQixHQUFHLEVBQUUsS0FBSztZQUNWLEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDakIsR0FBRyxFQUFFLElBQUk7WUFDVCxLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxNQUFNO1lBQ1gsS0FBSyxFQUFFLE1BQU07U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDaEIsR0FBRyxFQUFFLE9BQU87WUFDWixLQUFLLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDUCxDQUFDOztxSEFyQ1EsdUJBQXVCO3lIQUF2Qix1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQZXBPcHRpb24gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXBUeXBlQ29udmVydG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3BlcmF0b3JzOiBJUGVwT3B0aW9uW10gPSBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ib29sZWFuczogSVBlcE9wdGlvbltdID0gW107XG5cbiAgICBwdWJsaWMgZ2V0IG9wZXJhdG9ycygpOiBJUGVwT3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3BlcmF0b3JzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbnMoKTogSVBlcE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5zO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluaXRPcGVyYXRvcnMoKTtcbiAgICAgICAgdGhpcy5pbml0Qm9vbGVhbnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRPcGVyYXRvcnMoKSB7XG4gICAgICAgIHRoaXMuX29wZXJhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogJ0FORCcsXG4gICAgICAgICAgICB2YWx1ZTogJ0FuZCdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX29wZXJhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogJ09SJyxcbiAgICAgICAgICAgIHZhbHVlOiAnT3InXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEJvb2xlYW5zKCkge1xuICAgICAgICB0aGlzLl9ib29sZWFucy5wdXNoKHtcbiAgICAgICAgICAgIGtleTogJ1RydWUnLFxuICAgICAgICAgICAgdmFsdWU6ICdUcnVlJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fYm9vbGVhbnMucHVzaCh7XG4gICAgICAgICAgICBrZXk6ICdGYWxzZScsXG4gICAgICAgICAgICB2YWx1ZTogJ0ZhbHNlJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbn0iXX0=
@@ -2,23 +2,13 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/forms";
4
4
  import * as i2 from "../common/services/type-convertor.service";
5
- import * as i3 from "@angular/common";
6
- import * as i4 from "@angular/flex-layout/flex";
7
- import * as i5 from "@pepperi-addons/ngx-lib/select";
8
- import * as i6 from "@pepperi-addons/ngx-lib/button";
9
- import * as i7 from "@pepperi-addons/ngx-lib/smart-filters";
5
+ import * as i3 from "../common/services/query-structure.service";
6
+ import * as i4 from "@angular/common";
7
+ import * as i5 from "@angular/flex-layout/flex";
8
+ import * as i6 from "@pepperi-addons/ngx-lib/select";
9
+ import * as i7 from "@pepperi-addons/ngx-lib/button";
10
+ import * as i8 from "@pepperi-addons/ngx-lib/smart-filters";
10
11
  export class PepQueryBuilderItemComponent {
11
- constructor(_fb, typeConvertorService) {
12
- this._fb = _fb;
13
- this.typeConvertorService = typeConvertorService;
14
- this._fields = [];
15
- this._options = [];
16
- this._selectedField = null;
17
- this.variableFields = {};
18
- this.filterChange = new EventEmitter();
19
- this.remove = new EventEmitter();
20
- this.setupForm();
21
- }
22
12
  set fields(list) {
23
13
  if (list?.length > 0) {
24
14
  this._fields = list;
@@ -47,8 +37,20 @@ export class PepQueryBuilderItemComponent {
47
37
  this.addToParentForm();
48
38
  }
49
39
  }
40
+ constructor(_fb, typeConvertorService, queryStructureService) {
41
+ this._fb = _fb;
42
+ this.typeConvertorService = typeConvertorService;
43
+ this.queryStructureService = queryStructureService;
44
+ this._fields = [];
45
+ this._options = [];
46
+ this._selectedField = null;
47
+ this.variableFields = {};
48
+ this.filterChange = new EventEmitter();
49
+ this.remove = new EventEmitter();
50
+ this.setupForm();
51
+ }
50
52
  ngOnInit() {
51
- //
53
+ //this.variableFields = this.queryStructureService.variableFields;
52
54
  }
53
55
  get f() {
54
56
  return this.form.controls;
@@ -100,12 +102,12 @@ export class PepQueryBuilderItemComponent {
100
102
  this.remove.emit();
101
103
  }
102
104
  }
103
- PepQueryBuilderItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepQueryBuilderItemComponent, deps: [{ token: i1.FormBuilder }, { token: i2.PepTypeConvertorService }], target: i0.ɵɵFactoryTarget.Component });
104
- PepQueryBuilderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepQueryBuilderItemComponent, selector: "pep-query-builder-item", inputs: { formKey: "formKey", fields: "fields", selected: "selected", filter: "filter", parentForm: "parentForm", variableFields: "variableFields" }, outputs: { filterChange: "filterChange", remove: "remove" }, ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-select fxFlex=\"25%\" [value]=\"_selectedField?.id\" xAlignment=\"left\" [options]=\"_options\"\n [renderTitle]=\"false\" (valueChange)=\"onFieldChanged($event)\"></pep-select>\n <ng-container *ngIf=\"_selectedField?.componentType\">\n <ng-container [ngSwitch]=\"_selectedField.componentType\">\n <ng-container *ngSwitchCase=\"'text'\">\n <pep-text-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [variableField]=\"variableFields?.text\"\n [field]=\"_selectedField\" [filter]=\"_filter\" [parentForm]=\"f.smart\" [emitOnChange]=\"true\"\n [inline]=\"true\" [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-text-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.boolean\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\"\n [options]=\"typeConvertorService.booleans\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [showAdditionalOperators]=\"true\"\n [variableField]=\"variableFields?.date\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.['multi-select']\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.number\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-number-filter>\n </ng-container>\n </ng-container>\n </ng-container>\n <pep-button styleType=\"weak\" styleStateType=\"system_bin\" sizeType=\"md\" classNames=\"\" [disabled]=\"false\"\n iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\" (buttonClick)=\"onDeleteItemClicked()\">\n </pep-button>\n </div>\n</div>", styles: ["::ng-deep .pep-field-no-spacing{min-height:0!important;margin-bottom:0!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.PepSelectComponent, selector: "pep-select", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "placeholder", "placeholderWhenDisabled", "options", "visible", "emptyOption", "form", "layoutType", "parentFieldKey", "isActive", "showTitle", "renderTitle", "typeaheadDebounceInterval", "addValueToOptionsIfNotExist"], outputs: ["valueChange"] }, { kind: "component", type: i6.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i7.PepTextFilterComponent, selector: "pep-text-filter" }, { kind: "component", type: i7.PepBooleanFilterComponent, selector: "pep-boolean-filter", inputs: ["options"] }, { kind: "component", type: i7.PepDateFilterComponent, selector: "pep-date-filter" }, { kind: "component", type: i7.PepMultiSelectFilterComponent, selector: "pep-multi-select-filter" }, { kind: "component", type: i7.PepNumberFilterComponent, selector: "pep-number-filter" }] });
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepQueryBuilderItemComponent, decorators: [{
105
+ PepQueryBuilderItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepQueryBuilderItemComponent, deps: [{ token: i1.FormBuilder }, { token: i2.PepTypeConvertorService }, { token: i3.PepQueryStructureService }], target: i0.ɵɵFactoryTarget.Component });
106
+ PepQueryBuilderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PepQueryBuilderItemComponent, selector: "pep-query-builder-item", inputs: { formKey: "formKey", fields: "fields", selected: "selected", filter: "filter", parentForm: "parentForm", variableFields: "variableFields" }, outputs: { filterChange: "filterChange", remove: "remove" }, ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-select fxFlex=\"25%\" [value]=\"_selectedField?.id\" xAlignment=\"left\" [options]=\"_options\"\n [renderTitle]=\"false\" (valueChange)=\"onFieldChanged($event)\"></pep-select>\n <ng-container *ngIf=\"_selectedField?.componentType\">\n <ng-container [ngSwitch]=\"_selectedField.componentType\">\n <ng-container *ngSwitchCase=\"'text'\">\n <pep-text-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [variableField]=\"variableFields?.text\"\n [field]=\"_selectedField\" [filter]=\"_filter\" [parentForm]=\"f.smart\" [emitOnChange]=\"true\"\n [inline]=\"true\" [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-text-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.boolean\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\"\n [options]=\"typeConvertorService.booleans\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [showAdditionalOperators]=\"true\"\n [variableField]=\"variableFields?.date\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-date-filter>\n </ng-container>\n <!-- <ng-container *ngSwitchCase=\"'text'\">\n <pep-multi-select-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.text\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-multi-select-filter>\n </ng-container> -->\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.text\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.number\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-number-filter>\n </ng-container>\n </ng-container>\n </ng-container>\n <pep-button styleType=\"weak\" styleStateType=\"system\" sizeType=\"md\" classNames=\"\" [disabled]=\"false\"\n iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\" (buttonClick)=\"onDeleteItemClicked()\">\n </pep-button>\n </div>\n</div>", styles: ["::ng-deep .pep-field-no-spacing{min-height:0!important;margin-bottom:0!important}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i6.PepSelectComponent, selector: "pep-select", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "placeholder", "placeholderWhenDisabled", "autoSortOptions", "options", "visible", "emptyOption", "form", "layoutType", "parentFieldKey", "isActive", "showTitle", "renderTitle", "typeaheadDebounceInterval", "addValueToOptionsIfNotExist"], outputs: ["valueChange", "validationChange"] }, { kind: "component", type: i7.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i8.PepTextFilterComponent, selector: "pep-text-filter" }, { kind: "component", type: i8.PepBooleanFilterComponent, selector: "pep-boolean-filter", inputs: ["options"] }, { kind: "component", type: i8.PepDateFilterComponent, selector: "pep-date-filter" }, { kind: "component", type: i8.PepMultiSelectFilterComponent, selector: "pep-multi-select-filter" }, { kind: "component", type: i8.PepNumberFilterComponent, selector: "pep-number-filter" }] });
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepQueryBuilderItemComponent, decorators: [{
106
108
  type: Component,
107
- args: [{ selector: 'pep-query-builder-item', template: "<div fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-select fxFlex=\"25%\" [value]=\"_selectedField?.id\" xAlignment=\"left\" [options]=\"_options\"\n [renderTitle]=\"false\" (valueChange)=\"onFieldChanged($event)\"></pep-select>\n <ng-container *ngIf=\"_selectedField?.componentType\">\n <ng-container [ngSwitch]=\"_selectedField.componentType\">\n <ng-container *ngSwitchCase=\"'text'\">\n <pep-text-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [variableField]=\"variableFields?.text\"\n [field]=\"_selectedField\" [filter]=\"_filter\" [parentForm]=\"f.smart\" [emitOnChange]=\"true\"\n [inline]=\"true\" [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-text-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.boolean\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\"\n [options]=\"typeConvertorService.booleans\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [showAdditionalOperators]=\"true\"\n [variableField]=\"variableFields?.date\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.['multi-select']\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.number\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-number-filter>\n </ng-container>\n </ng-container>\n </ng-container>\n <pep-button styleType=\"weak\" styleStateType=\"system_bin\" sizeType=\"md\" classNames=\"\" [disabled]=\"false\"\n iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\" (buttonClick)=\"onDeleteItemClicked()\">\n </pep-button>\n </div>\n</div>", styles: ["::ng-deep .pep-field-no-spacing{min-height:0!important;margin-bottom:0!important}\n"] }]
108
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.PepTypeConvertorService }]; }, propDecorators: { formKey: [{
109
+ args: [{ selector: 'pep-query-builder-item', template: "<div fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-select fxFlex=\"25%\" [value]=\"_selectedField?.id\" xAlignment=\"left\" [options]=\"_options\"\n [renderTitle]=\"false\" (valueChange)=\"onFieldChanged($event)\"></pep-select>\n <ng-container *ngIf=\"_selectedField?.componentType\">\n <ng-container [ngSwitch]=\"_selectedField.componentType\">\n <ng-container *ngSwitchCase=\"'text'\">\n <pep-text-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [variableField]=\"variableFields?.text\"\n [field]=\"_selectedField\" [filter]=\"_filter\" [parentForm]=\"f.smart\" [emitOnChange]=\"true\"\n [inline]=\"true\" [renderTitle]=\"false\" (filterChange)=\"onFilterChanged()\">\n </pep-text-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'boolean'\">\n <pep-boolean-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.boolean\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\"\n [options]=\"typeConvertorService.booleans\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-boolean-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <pep-date-filter fxFlex=\"auto\" [showActionButtons]=\"false\" [showAdditionalOperators]=\"true\"\n [variableField]=\"variableFields?.date\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-date-filter>\n </ng-container>\n <!-- <ng-container *ngSwitchCase=\"'text'\">\n <pep-multi-select-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.text\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-multi-select-filter>\n </ng-container> -->\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <pep-multi-select-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.text\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-multi-select-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <pep-number-filter fxFlex=\"auto\" [showActionButtons]=\"false\"\n [variableField]=\"variableFields?.number\" [field]=\"_selectedField\" [filter]=\"_filter\"\n [parentForm]=\"f.smart\" [emitOnChange]=\"true\" [inline]=\"true\" [renderTitle]=\"false\"\n (filterChange)=\"onFilterChanged()\">\n </pep-number-filter>\n </ng-container>\n </ng-container>\n </ng-container>\n <pep-button styleType=\"weak\" styleStateType=\"system\" sizeType=\"md\" classNames=\"\" [disabled]=\"false\"\n iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\" (buttonClick)=\"onDeleteItemClicked()\">\n </pep-button>\n </div>\n</div>", styles: ["::ng-deep .pep-field-no-spacing{min-height:0!important;margin-bottom:0!important}\n"] }]
110
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.PepTypeConvertorService }, { type: i3.PepQueryStructureService }]; }, propDecorators: { formKey: [{
109
111
  type: Input
110
112
  }], fields: [{
111
113
  type: Input
@@ -122,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
122
124
  }], remove: [{
123
125
  type: Output
124
126
  }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLWl0ZW0vcXVlcnktYnVpbGRlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLWl0ZW0vcXVlcnktYnVpbGRlci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQWN2RSxNQUFNLE9BQU8sNEJBQTRCO0lBa0RyQyxZQUNZLEdBQWdCLEVBQ2pCLG9CQUE2QztRQUQ1QyxRQUFHLEdBQUgsR0FBRyxDQUFhO1FBQ2pCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFsRHhELFlBQU8sR0FBMEMsRUFBRSxDQUFDO1FBQ3BELGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBYTVCLG1CQUFjLEdBQTRCLElBQUksQ0FBQztRQXlCL0MsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFHekIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWxDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUXhCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBbkRELElBQ0ksTUFBTSxDQUFDLElBQTJDO1FBQ2xELElBQUksSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM3QixPQUFPO29C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Q0FBQztRQUMzQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7O3lIQXRIUSw0QkFBNEI7NkdBQTVCLDRCQUE0QixpUkNkekMscTNHQStDTTsyRkRqQ08sNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNJLHdCQUF3Qjt3SUFLekIsT0FBTztzQkFBZixLQUFLO2dCQUlGLE1BQU07c0JBRFQsS0FBSztnQkFjRixRQUFRO3NCQURYLEtBQUs7Z0JBU0YsTUFBTTtzQkFEVCxLQUFLO2dCQVFGLFVBQVU7c0JBRGIsS0FBSztnQkFTTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNO2dCQUdQLE1BQU07c0JBREwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGVwU21hcnRGaWx0ZXJCYXNlRmllbGQsIElQZXBTbWFydEZpbHRlckZpZWxkIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc21hcnQtZmlsdGVycyc7XG5pbXBvcnQgeyBJUGVwU21hcnRGaWx0ZXJEYXRhIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc21hcnQtZmlsdGVycyc7XG5pbXBvcnQgeyBJUGVwT3B0aW9uIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgUGVwVHlwZUNvbnZlcnRvclNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vc2VydmljZXMvdHlwZS1jb252ZXJ0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBJUGVwUXVlcnlCdWlsZGVyRmllbGRDb250YWluZXIgfSBmcm9tICcuLi9jb21tb24vbW9kZWwvZmllbGQnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLXF1ZXJ5LWJ1aWxkZXItaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LWJ1aWxkZXItaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcXVlcnktYnVpbGRlci1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBlcFF1ZXJ5QnVpbGRlckl0ZW1Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIGZvcm1LZXk6IHN0cmluZztcbiAgICBfZmllbGRzOiBBcnJheTxJUGVwUXVlcnlCdWlsZGVyRmllbGRDb250YWluZXI+ID0gW107XG4gICAgX29wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpZWxkcyhsaXN0OiBBcnJheTxJUGVwUXVlcnlCdWlsZGVyRmllbGRDb250YWluZXI+KSB7XG4gICAgICAgIGlmIChsaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9maWVsZHMgPSBsaXN0O1xuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IGxpc3QubWFwKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGZpZWxkLnNtYXJ0LmlkLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGQuc21hcnQubmFtZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG4gICAgX3NlbGVjdGVkRmllbGQ6IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkID0gbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogSVBlcFF1ZXJ5QnVpbGRlckZpZWxkQ29udGFpbmVyKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRGaWVsZCA9IHZhbHVlLnNtYXJ0O1xuICAgICAgICAgICAgdGhpcy5xdWVyeUZvcm0uZmllbGRUeXBlLnNldFZhbHVlKHZhbHVlLnF1ZXJ5LmZpZWxkVHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2ZpbHRlcjogSVBlcFNtYXJ0RmlsdGVyRGF0YTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWx0ZXIodmFsdWU6IElQZXBTbWFydEZpbHRlckRhdGEpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXIgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfcGFyZW50Rm9ybTogRm9ybUdyb3VwO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHBhcmVudEZvcm0odmFsdWU6IEZvcm1Hcm91cCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcmVudEZvcm0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYWRkVG9QYXJlbnRGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgQElucHV0KCkgXG4gICAgdmFyaWFibGVGaWVsZHM6IGFueSA9IHt9O1xuXG4gICAgQE91dHB1dCgpXG4gICAgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGZvcm06IEZvcm1Hcm91cDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHB1YmxpYyB0eXBlQ29udmVydG9yU2VydmljZTogUGVwVHlwZUNvbnZlcnRvclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5zZXR1cEZvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBnZXQgZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgICB9XG5cbiAgICBnZXQgcXVlcnlGb3JtKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuZi5xdWVyeSBhcyBGb3JtR3JvdXApLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIHNldHVwRm9ybSgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xuICAgICAgICAgICAgc21hcnQ6IHRoaXMuX2ZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgICBmaWVsZElkOiB0aGlzLl9mYi5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy5fZmIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogdGhpcy5fZmIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvclVuaXQ6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlzLl9mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0OiB0aGlzLl9mYi5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBxdWVyeTogdGhpcy5fZmIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy5fZmIuY29udHJvbChudWxsKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkVG9QYXJlbnRGb3JtKCkge1xuICAgICAgICB0aGlzLl9wYXJlbnRGb3JtLnNldENvbnRyb2wodGhpcy5mb3JtS2V5LCB0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIG9uRmllbGRDaGFuZ2VkKGtleSkge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuc21hcnQuaWQgPT09IGtleSk7XG5cbiAgICAgICAgdGhpcy5zZXR1cEZvcm0oKTtcbiAgICAgICAgdGhpcy5xdWVyeUZvcm0uZmllbGRUeXBlLnNldFZhbHVlKGl0ZW0ucXVlcnkuZmllbGRUeXBlKTtcbiAgICAgICAgdGhpcy5hZGRUb1BhcmVudEZvcm0oKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogaGFjayBkdWUgdG8gYW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gYnVnIC1cbiAgICAgICAgICogRVJST1IgRXJyb3I6IFRoZXJlIGlzIG5vIEZvcm1Db250cm9sIGluc3RhbmNlIGF0dGFjaGVkIHRvIGZvcm0gY29udHJvbCBlbGVtZW50IHdpdGggbmFtZTogW2Zvcm1Db250cm9sTmFtZV1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRmllbGQgPSBudWxsO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRmllbGQgPSBpdGVtID8gaXRlbS5zbWFydCA6IG51bGw7XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIHRoaXMuX2ZpbHRlciA9IG51bGw7XG4gICAgfVxuXG4gICAgb25GaWx0ZXJDaGFuZ2VkKCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRlbGV0ZUl0ZW1DbGlja2VkKCkge1xuICAgICAgICB0aGlzLnJlbW92ZS5lbWl0KCk7XG4gICAgfVxuXG5cblxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiLjVyZW1cIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIuNXJlbVwiPlxuICAgICAgICA8cGVwLXNlbGVjdCBmeEZsZXg9XCIyNSVcIiBbdmFsdWVdPVwiX3NlbGVjdGVkRmllbGQ/LmlkXCIgeEFsaWdubWVudD1cImxlZnRcIiBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICBbcmVuZGVyVGl0bGVdPVwiZmFsc2VcIiAodmFsdWVDaGFuZ2UpPVwib25GaWVsZENoYW5nZWQoJGV2ZW50KVwiPjwvcGVwLXNlbGVjdD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zZWxlY3RlZEZpZWxkPy5jb21wb25lbnRUeXBlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJfc2VsZWN0ZWRGaWVsZC5jb21wb25lbnRUeXBlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwZXAtdGV4dC1maWx0ZXIgZnhGbGV4PVwiYXV0b1wiIFtzaG93QWN0aW9uQnV0dG9uc109XCJmYWxzZVwiIFt2YXJpYWJsZUZpZWxkXT1cInZhcmlhYmxlRmllbGRzPy50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJfc2VsZWN0ZWRGaWVsZFwiIFtmaWx0ZXJdPVwiX2ZpbHRlclwiIFtwYXJlbnRGb3JtXT1cImYuc21hcnRcIiBbZW1pdE9uQ2hhbmdlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZV09XCJ0cnVlXCIgW3JlbmRlclRpdGxlXT1cImZhbHNlXCIgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC10ZXh0LWZpbHRlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC1ib29sZWFuLWZpbHRlciBmeEZsZXg9XCJhdXRvXCIgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YXJpYWJsZUZpZWxkXT1cInZhcmlhYmxlRmllbGRzPy5ib29sZWFuXCIgW2ZpZWxkXT1cIl9zZWxlY3RlZEZpZWxkXCIgW2ZpbHRlcl09XCJfZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRGb3JtXT1cImYuc21hcnRcIiBbZW1pdE9uQ2hhbmdlXT1cInRydWVcIiBbaW5saW5lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwidHlwZUNvbnZlcnRvclNlcnZpY2UuYm9vbGVhbnNcIiBbcmVuZGVyVGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC1ib29sZWFuLWZpbHRlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC1kYXRlLWZpbHRlciBmeEZsZXg9XCJhdXRvXCIgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCIgW3Nob3dBZGRpdGlvbmFsT3BlcmF0b3JzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhcmlhYmxlRmllbGRdPVwidmFyaWFibGVGaWVsZHM/LmRhdGVcIiBbZmllbGRdPVwiX3NlbGVjdGVkRmllbGRcIiBbZmlsdGVyXT1cIl9maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudEZvcm1dPVwiZi5zbWFydFwiIFtlbWl0T25DaGFuZ2VdPVwidHJ1ZVwiIFtpbmxpbmVdPVwidHJ1ZVwiIFtyZW5kZXJUaXRsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGVwLWRhdGUtZmlsdGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwZXAtbXVsdGktc2VsZWN0LWZpbHRlciBmeEZsZXg9XCJhdXRvXCIgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YXJpYWJsZUZpZWxkXT1cInZhcmlhYmxlRmllbGRzPy5bJ211bHRpLXNlbGVjdCddXCIgW2ZpZWxkXT1cIl9zZWxlY3RlZEZpZWxkXCIgW2ZpbHRlcl09XCJfZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRGb3JtXT1cImYuc21hcnRcIiBbZW1pdE9uQ2hhbmdlXT1cInRydWVcIiBbaW5saW5lXT1cInRydWVcIiBbcmVuZGVyVGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC1tdWx0aS1zZWxlY3QtZmlsdGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwZXAtbnVtYmVyLWZpbHRlciBmeEZsZXg9XCJhdXRvXCIgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YXJpYWJsZUZpZWxkXT1cInZhcmlhYmxlRmllbGRzPy5udW1iZXJcIiBbZmllbGRdPVwiX3NlbGVjdGVkRmllbGRcIiBbZmlsdGVyXT1cIl9maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudEZvcm1dPVwiZi5zbWFydFwiIFtlbWl0T25DaGFuZ2VdPVwidHJ1ZVwiIFtpbmxpbmVdPVwidHJ1ZVwiIFtyZW5kZXJUaXRsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGVwLW51bWJlci1maWx0ZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxwZXAtYnV0dG9uIHN0eWxlVHlwZT1cIndlYWtcIiBzdHlsZVN0YXRlVHlwZT1cInN5c3RlbV9iaW5cIiBzaXplVHlwZT1cIm1kXCIgY2xhc3NOYW1lcz1cIlwiIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBpY29uTmFtZT1cInN5c3RlbV9iaW5cIiBpY29uUG9zaXRpb249XCJlbmRcIiBbdmlzaWJsZV09XCJ0cnVlXCIgKGJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlSXRlbUNsaWNrZWQoKVwiPlxuICAgICAgICA8L3BlcC1idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLWl0ZW0vcXVlcnktYnVpbGRlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLWl0ZW0vcXVlcnktYnVpbGRlci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFjdkUsTUFBTSxPQUFPLDRCQUE0QjtJQUlyQyxJQUNJLE1BQU0sQ0FBQyxJQUEyQztRQUNsRCxJQUFJLElBQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDN0IsT0FBTztvQkFDSCxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNuQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJO2lCQUMxQixDQUFBO1lBQ0wsQ0FBQyxDQUFDLENBQUE7U0FDTDtJQUNMLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxLQUFxQztRQUM5QyxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1RDtJQUNMLENB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QUM7UUFFdkI7OztXQUdHO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbkQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRU4sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzswSEF2SFEsNEJBQTRCOzhHQUE1Qiw0QkFBNEIsaVJDZHpDLHkzSEFzRE07NEZEeENPLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSx3QkFBd0I7K0tBS3pCLE9BQU87c0JBQWYsS0FBSztnQkFJRixNQUFNO3NCQURULEtBQUs7Z0JBY0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLE1BQU07c0JBRFQsS0FBSztnQkFRRixVQUFVO3NCQURiLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsTUFBTTtnQkFHUCxNQUFNO3NCQURMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkLCBJUGVwU21hcnRGaWx0ZXJGaWVsZCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMnO1xuaW1wb3J0IHsgSVBlcFNtYXJ0RmlsdGVyRGF0YSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMnO1xuaW1wb3J0IHsgSVBlcE9wdGlvbiB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IFBlcFR5cGVDb252ZXJ0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2VzL3R5cGUtY29udmVydG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVBlcFF1ZXJ5QnVpbGRlckZpZWxkQ29udGFpbmVyIH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL2ZpZWxkJztcbmltcG9ydCB7IFBlcFF1ZXJ5U3RydWN0dXJlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9zZXJ2aWNlcy9xdWVyeS1zdHJ1Y3R1cmUuc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtcXVlcnktYnVpbGRlci1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktYnVpbGRlci1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9xdWVyeS1idWlsZGVyLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwUXVlcnlCdWlsZGVySXRlbUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZm9ybUtleTogc3RyaW5nO1xuICAgIF9maWVsZHM6IEFycmF5PElQZXBRdWVyeUJ1aWxkZXJGaWVsZENvbnRhaW5lcj4gPSBbXTtcbiAgICBfb3B0aW9uczogSVBlcE9wdGlvbltdID0gW107XG4gICAgQElucHV0KClcbiAgICBzZXQgZmllbGRzKGxpc3Q6IEFycmF5PElQZXBRdWVyeUJ1aWxkZXJGaWVsZENvbnRhaW5lcj4pIHtcbiAgICAgICAgaWYgKGxpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IGxpc3Q7XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gbGlzdC5tYXAoZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogZmllbGQuc21hcnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5zbWFydC5uYW1lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cbiAgICBfc2VsZWN0ZWRGaWVsZDogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGQgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNlbGVjdGVkKHZhbHVlOiBJUGVwUXVlcnlCdWlsZGVyRmllbGRDb250YWluZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEZpZWxkID0gdmFsdWUuc21hcnQ7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5Rm9ybS5maWVsZFR5cGUuc2V0VmFsdWUodmFsdWUucXVlcnkuZmllbGRUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfZmlsdGVyOiBJUGVwU21hcnRGaWx0ZXJEYXRhO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbHRlcih2YWx1ZTogSVBlcFNtYXJ0RmlsdGVyRGF0YSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlciA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9wYXJlbnRGb3JtOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KClcbiAgICBzZXQgcGFyZW50Rm9ybSh2YWx1ZTogRm9ybUdyb3VwKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50Rm9ybSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5hZGRUb1BhcmVudEZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBASW5wdXQoKSBcbiAgICB2YXJpYWJsZUZpZWxkczogYW55ID0ge307XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgZm9ybTogRm9ybUdyb3VwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHVibGljIHR5cGVDb252ZXJ0b3JTZXJ2aWNlOiBQZXBUeXBlQ29udmVydG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBxdWVyeVN0cnVjdHVyZVNlcnZpY2U6IFBlcFF1ZXJ5U3RydWN0dXJlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnNldHVwRm9ybSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvL3RoaXMudmFyaWFibGVGaWVsZHMgPSB0aGlzLnF1ZXJ5U3RydWN0dXJlU2VydmljZS52YXJpYWJsZUZpZWxkcztcbiAgICB9XG5cbiAgICBnZXQgZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgICB9XG5cbiAgICBnZXQgcXVlcnlGb3JtKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuZi5xdWVyeSBhcyBGb3JtR3JvdXApLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIHNldHVwRm9ybSgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xuICAgICAgICAgICAgc21hcnQ6IHRoaXMuX2ZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgICBmaWVsZElkOiB0aGlzLl9mYi5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy5fZmIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogdGhpcy5fZmIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvclVuaXQ6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlzLl9mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0OiB0aGlzLl9mYi5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBxdWVyeTogdGhpcy5fZmIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy5fZmIuY29udHJvbChudWxsKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkVG9QYXJlbnRGb3JtKCkge1xuICAgICAgICB0aGlzLl9wYXJlbnRGb3JtLnNldENvbnRyb2wodGhpcy5mb3JtS2V5LCB0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIG9uRmllbGRDaGFuZ2VkKGtleSkge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuc21hcnQuaWQgPT09IGtleSk7XG5cbiAgICAgICAgdGhpcy5zZXR1cEZvcm0oKTtcbiAgICAgICAgdGhpcy5xdWVyeUZvcm0uZmllbGRUeXBlLnNldFZhbHVlKGl0ZW0ucXVlcnkuZmllbGRUeXBlKTtcbiAgICAgICAgdGhpcy5hZGRUb1BhcmVudEZvcm0oKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogaGFjayBkdWUgdG8gYW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gYnVnIC1cbiAgICAgICAgICogRVJST1IgRXJyb3I6IFRoZXJlIGlzIG5vIEZvcm1Db250cm9sIGluc3RhbmNlIGF0dGFjaGVkIHRvIGZvcm0gY29udHJvbCBlbGVtZW50IHdpdGggbmFtZTogW2Zvcm1Db250cm9sTmFtZV1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRmllbGQgPSBudWxsO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRmllbGQgPSBpdGVtID8gaXRlbS5zbWFydCA6IG51bGw7XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIHRoaXMuX2ZpbHRlciA9IG51bGw7XG4gICAgfVxuXG4gICAgb25GaWx0ZXJDaGFuZ2VkKCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRlbGV0ZUl0ZW1DbGlja2VkKCkge1xuICAgICAgICB0aGlzLnJlbW92ZS5lbWl0KCk7XG4gICAgfVxuXG5cblxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiLjVyZW1cIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIuNXJlbVwiPlxuICAgICAgICA8cGVwLXNlbGVjdCBmeEZsZXg9XCIyNSVcIiBbdmFsdWVdPVwiX3NlbGVjdGVkRmllbGQ/LmlkXCIgeEFsaWdubWVudD1cImxlZnRcIiBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICBbcmVuZGVyVGl0bGVdPVwiZmFsc2VcIiAodmFsdWVDaGFuZ2UpPVwib25GaWVsZENoYW5nZWQoJGV2ZW50KVwiPjwvcGVwLXNlbGVjdD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zZWxlY3RlZEZpZWxkPy5jb21wb25lbnRUeXBlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJfc2VsZWN0ZWRGaWVsZC5jb21wb25lbnRUeXBlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwZXAtdGV4dC1maWx0ZXIgZnhGbGV4PVwiYXV0b1wiIFtzaG93QWN0aW9uQnV0dG9uc109XCJmYWxzZVwiIFt2YXJpYWJsZUZpZWxkXT1cInZhcmlhYmxlRmllbGRzPy50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJfc2VsZWN0ZWRGaWVsZFwiIFtmaWx0ZXJdPVwiX2ZpbHRlclwiIFtwYXJlbnRGb3JtXT1cImYuc21hcnRcIiBbZW1pdE9uQ2hhbmdlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZV09XCJ0cnVlXCIgW3JlbmRlclRpdGxlXT1cImZhbHNlXCIgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC10ZXh0LWZpbHRlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC1ib29sZWFuLWZpbHRlciBmeEZsZXg9XCJhdXRvXCIgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YXJpYWJsZUZpZWxkXT1cInZhcmlhYmxlRmllbGRzPy5ib29sZWFuXCIgW2ZpZWxkXT1cIl9zZWxlY3RlZEZpZWxkXCIgW2ZpbHRlcl09XCJfZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRGb3JtXT1cImYuc21hcnRcIiBbZW1pdE9uQ2hhbmdlXT1cInRydWVcIiBbaW5saW5lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwidHlwZUNvbnZlcnRvclNlcnZpY2UuYm9vbGVhbnNcIiBbcmVuZGVyVGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC1ib29sZWFuLWZpbHRlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC1kYXRlLWZpbHRlciBmeEZsZXg9XCJhdXRvXCIgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCIgW3Nob3dBZGRpdGlvbmFsT3BlcmF0b3JzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhcmlhYmxlRmllbGRdPVwidmFyaWFibGVGaWVsZHM/LmRhdGVcIiBbZmllbGRdPVwiX3NlbGVjdGVkRmllbGRcIiBbZmlsdGVyXT1cIl9maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudEZvcm1dPVwiZi5zbWFydFwiIFtlbWl0T25DaGFuZ2VdPVwidHJ1ZVwiIFtpbmxpbmVdPVwidHJ1ZVwiIFtyZW5kZXJUaXRsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGVwLWRhdGUtZmlsdGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwZXAtbXVsdGktc2VsZWN0LWZpbHRlciBmeEZsZXg9XCJhdXRvXCIgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YXJpYWJsZUZpZWxkXT1cInZhcmlhYmxlRmllbGRzPy50ZXh0XCIgW2ZpZWxkXT1cIl9zZWxlY3RlZEZpZWxkXCIgW2ZpbHRlcl09XCJfZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRGb3JtXT1cImYuc21hcnRcIiBbZW1pdE9uQ2hhbmdlXT1cInRydWVcIiBbaW5saW5lXT1cInRydWVcIiBbcmVuZGVyVGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC1tdWx0aS1zZWxlY3QtZmlsdGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8cGVwLW11bHRpLXNlbGVjdC1maWx0ZXIgZnhGbGV4PVwiYXV0b1wiIFtzaG93QWN0aW9uQnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFyaWFibGVGaWVsZF09XCJ2YXJpYWJsZUZpZWxkcz8udGV4dFwiIFtmaWVsZF09XCJfc2VsZWN0ZWRGaWVsZFwiIFtmaWx0ZXJdPVwiX2ZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50Rm9ybV09XCJmLnNtYXJ0XCIgW2VtaXRPbkNoYW5nZV09XCJ0cnVlXCIgW2lubGluZV09XCJ0cnVlXCIgW3JlbmRlclRpdGxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2VkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wZXAtbXVsdGktc2VsZWN0LWZpbHRlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cGVwLW51bWJlci1maWx0ZXIgZnhGbGV4PVwiYXV0b1wiIFtzaG93QWN0aW9uQnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFyaWFibGVGaWVsZF09XCJ2YXJpYWJsZUZpZWxkcz8ubnVtYmVyXCIgW2ZpZWxkXT1cIl9zZWxlY3RlZEZpZWxkXCIgW2ZpbHRlcl09XCJfZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRGb3JtXT1cImYuc21hcnRcIiBbZW1pdE9uQ2hhbmdlXT1cInRydWVcIiBbaW5saW5lXT1cInRydWVcIiBbcmVuZGVyVGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC1udW1iZXItZmlsdGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8cGVwLWJ1dHRvbiBzdHlsZVR5cGU9XCJ3ZWFrXCIgc3R5bGVTdGF0ZVR5cGU9XCJzeXN0ZW1cIiBzaXplVHlwZT1cIm1kXCIgY2xhc3NOYW1lcz1cIlwiIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBpY29uTmFtZT1cInN5c3RlbV9iaW5cIiBpY29uUG9zaXRpb249XCJlbmRcIiBbdmlzaWJsZV09XCJ0cnVlXCIgKGJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlSXRlbUNsaWNrZWQoKVwiPlxuICAgICAgICA8L3BlcC1idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -45,11 +45,11 @@ export class PepQueryBuilderSectionComponent {
45
45
  this.remove.emit();
46
46
  }
47
47
  }
48
- PepQueryBuilderSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepQueryBuilderSectionComponent, deps: [{ token: i1.PepTypeConvertorService }], target: i0.ɵɵFactoryTarget.Component });
49
- PepQueryBuilderSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepQueryBuilderSectionComponent, selector: "pep-query-builder-section", inputs: { form: "form", depth: "depth", hasFields: "hasFields" }, outputs: { createSection: "createSection", createItem: "createItem", remove: "remove", operatorChange: "operatorChange" }, viewQueries: [{ propertyName: "sectionContainer", first: true, predicate: ["sectionContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <div class=\"query-section-container\" fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <pep-group-buttons [buttons]=\"toggleButtons\" [selectedButtonKey]=\"f.operator?.value || ''\" styleType=\"weak\"\n sizeType=\"sm\" [viewType]=\"'toggle'\" [buttonsDisabled]=\"!hasFields\">\n </pep-group-buttons>\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-button value=\"Add Filter\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\" classNames=\"\"\n [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleClicked()\"></pep-button>\n <ng-container *ngIf=\"depth.current < depth.max-1\">\n <pep-button value=\"Add Filter Group\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\"\n classNames=\"\" [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleSetClicked()\"></pep-button>\n </ng-container>\n </div>\n </div>\n <ng-container #sectionContainer></ng-container>\n </div>\n <pep-button *ngIf=\"depth.current > 0\" styleType=\"weak\" styleStateType=\"system_bin\" sizeType=\"md\" classNames=\"\"\n [disabled]=\"false\" iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onDeleteSectionClicked()\">\n </pep-button>\n</div>", styles: [".query-section-container{border-radius:var(--pep-border-radius-md, .25rem);padding:.5rem;width:100%}\n", ".query-section-container{box-shadow:var(--pep-shadow-sm-offset, 0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.24)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i4.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i5.PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: ["viewType", "styleType", "sizeType", "buttons", "buttonsDisabled", "supportUnselect", "selectedButtonKey", "stretch"], outputs: ["buttonClick"] }] });
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepQueryBuilderSectionComponent, decorators: [{
48
+ PepQueryBuilderSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepQueryBuilderSectionComponent, deps: [{ token: i1.PepTypeConvertorService }], target: i0.ɵɵFactoryTarget.Component });
49
+ PepQueryBuilderSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PepQueryBuilderSectionComponent, selector: "pep-query-builder-section", inputs: { form: "form", depth: "depth", hasFields: "hasFields" }, outputs: { createSection: "createSection", createItem: "createItem", remove: "remove", operatorChange: "operatorChange" }, viewQueries: [{ propertyName: "sectionContainer", first: true, predicate: ["sectionContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <div class=\"query-section-container\" fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <pep-group-buttons [buttons]=\"toggleButtons\" [selectedButtonKey]=\"f.operator?.value || ''\" styleType=\"weak\"\n sizeType=\"sm\" [viewType]=\"'toggle'\" [buttonsDisabled]=\"!hasFields\">\n </pep-group-buttons>\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-button value=\"Add Filter\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\" classNames=\"\"\n [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleClicked()\"></pep-button>\n <ng-container *ngIf=\"depth.current < depth.max-1\">\n <pep-button value=\"Add Filter Group\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\"\n classNames=\"\" [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleSetClicked()\"></pep-button>\n </ng-container>\n </div>\n </div>\n <ng-container #sectionContainer></ng-container>\n </div>\n <pep-button *ngIf=\"depth.current > 0\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"md\" classNames=\"\"\n [disabled]=\"false\" iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onDeleteSectionClicked()\">\n </pep-button>\n</div>", styles: [".query-section-container{border-radius:var(--pep-border-radius-md, .25rem);padding:.5rem;width:100%}\n", ".query-section-container{box-shadow:var(--pep-shadow-sm-offset, 0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.24)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i4.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i5.PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: ["viewType", "styleType", "sizeType", "buttons", "buttonsDisabled", "supportUnselect", "selectedButtonKey", "stretch"], outputs: ["buttonClick"] }] });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepQueryBuilderSectionComponent, decorators: [{
51
51
  type: Component,
52
- args: [{ selector: 'pep-query-builder-section', template: "<div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <div class=\"query-section-container\" fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <pep-group-buttons [buttons]=\"toggleButtons\" [selectedButtonKey]=\"f.operator?.value || ''\" styleType=\"weak\"\n sizeType=\"sm\" [viewType]=\"'toggle'\" [buttonsDisabled]=\"!hasFields\">\n </pep-group-buttons>\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-button value=\"Add Filter\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\" classNames=\"\"\n [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleClicked()\"></pep-button>\n <ng-container *ngIf=\"depth.current < depth.max-1\">\n <pep-button value=\"Add Filter Group\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\"\n classNames=\"\" [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleSetClicked()\"></pep-button>\n </ng-container>\n </div>\n </div>\n <ng-container #sectionContainer></ng-container>\n </div>\n <pep-button *ngIf=\"depth.current > 0\" styleType=\"weak\" styleStateType=\"system_bin\" sizeType=\"md\" classNames=\"\"\n [disabled]=\"false\" iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onDeleteSectionClicked()\">\n </pep-button>\n</div>", styles: [".query-section-container{border-radius:var(--pep-border-radius-md, .25rem);padding:.5rem;width:100%}\n", ".query-section-container{box-shadow:var(--pep-shadow-sm-offset, 0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.24)}\n"] }]
52
+ args: [{ selector: 'pep-query-builder-section', template: "<div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <div class=\"query-section-container\" fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <pep-group-buttons [buttons]=\"toggleButtons\" [selectedButtonKey]=\"f.operator?.value || ''\" styleType=\"weak\"\n sizeType=\"sm\" [viewType]=\"'toggle'\" [buttonsDisabled]=\"!hasFields\">\n </pep-group-buttons>\n <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n <pep-button value=\"Add Filter\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\" classNames=\"\"\n [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleClicked()\"></pep-button>\n <ng-container *ngIf=\"depth.current < depth.max-1\">\n <pep-button value=\"Add Filter Group\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"sm\"\n classNames=\"\" [disabled]=\"!hasFields\" iconName=\"number_plus\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onAddRuleSetClicked()\"></pep-button>\n </ng-container>\n </div>\n </div>\n <ng-container #sectionContainer></ng-container>\n </div>\n <pep-button *ngIf=\"depth.current > 0\" styleType=\"weak\" styleStateType=\"system\" sizeType=\"md\" classNames=\"\"\n [disabled]=\"false\" iconName=\"system_bin\" iconPosition=\"end\" [visible]=\"true\"\n (buttonClick)=\"onDeleteSectionClicked()\">\n </pep-button>\n</div>", styles: [".query-section-container{border-radius:var(--pep-border-radius-md, .25rem);padding:.5rem;width:100%}\n", ".query-section-container{box-shadow:var(--pep-shadow-sm-offset, 0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.24)}\n"] }]
53
53
  }], ctorParameters: function () { return [{ type: i1.PepTypeConvertorService }]; }, propDecorators: { form: [{
54
54
  type: Input
55
55
  }], depth: [{
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
68
68
  type: ViewChild,
69
69
  args: ['sectionContainer', { read: ViewContainerRef, static: true }]
70
70
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLXNlY3Rpb24vcXVlcnktYnVpbGRlci1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLXNlY3Rpb24vcXVlcnktYnVpbGRlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWV2QixNQUFNLE9BQU8sK0JBQStCO0lBa0J4QyxZQUFvQixxQkFBOEM7UUFBOUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtRQWZ6RCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRzFCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1QixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFPcEMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBb0IsRUFBRSxFQUFFO1lBQ25GLE9BQU87Z0JBQ0gsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHO2dCQUNqQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLFFBQVEsRUFBRSxDQUFDLEtBQTJCLEVBQUUsRUFBRSxDQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO2FBQ3ZCLENBQUE7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBSztRQUNuQixJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7NEhBekRRLCtCQUErQjtnSEFBL0IsK0JBQStCLCtWQWNELGdCQUFnQiwyQ0NwQzNELDBuREF1Qk07MkZERE8sK0JBQStCO2tCQUwzQyxTQUFTOytCQUNJLDJCQUEyQjs4R0FLNUIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdOLGFBQWE7c0JBRFosTUFBTTtnQkFHUCxVQUFVO3NCQURULE1BQU07Z0JBR1AsTUFBTTtzQkFETCxNQUFNO2dCQUdQLGNBQWM7c0JBRGIsTUFBTTtnQkFHa0UsZ0JBQWdCO3NCQUF4RixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBJUGVwQnV0dG9uQ2xpY2tFdmVudCxcbiAgICBQZXBCdXR0b24sXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2J1dHRvbic7XG5pbXBvcnQgeyBJUGVwT3B0aW9uIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgUGVwVHlwZUNvbnZlcnRvclNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vc2VydmljZXMvdHlwZS1jb252ZXJ0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBJUGVwUXVlcnlEZXB0aCB9IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9zdHJ1Y3R1cmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1xdWVyeS1idWlsZGVyLXNlY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1idWlsZGVyLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi5jb21wb25lbnQuc2NzcycsICcuL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi5jb21wb25lbnQudGhlbWUuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBRdWVyeUJ1aWxkZXJTZWN0aW9uQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KCkgZGVwdGg6IElQZXBRdWVyeURlcHRoO1xuICAgIEBJbnB1dCgpIGhhc0ZpZWxkcyA9IHRydWU7XG5cbiAgICBAT3V0cHV0KClcbiAgICBjcmVhdGVTZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGNyZWF0ZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIG9wZXJhdG9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnc2VjdGlvbkNvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHNlY3Rpb25Db250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICB0b2dnbGVCdXR0b25zOiBBcnJheTxQZXBCdXR0b24+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfdHlwZUNvbnZlcnRvclNlcnZpY2U6IFBlcFR5cGVDb252ZXJ0b3JTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdE9wZXJhdG9ycygpO1xuICAgIH1cblxuICAgIGdldCBmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIGluaXRPcGVyYXRvcnMoKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlQnV0dG9ucyA9IHRoaXMuX3R5cGVDb252ZXJ0b3JTZXJ2aWNlLm9wZXJhdG9ycy5tYXAoKG9wZXJhdG9yOiBJUGVwT3B0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleTogb3BlcmF0b3Iua2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBvcGVyYXRvci52YWx1ZSxcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogKGV2ZW50OiBJUGVwQnV0dG9uQ2xpY2tFdmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk9wZXJhdG9yQ2hhbmdlZChldmVudClcbiAgICAgICAgICAgIH0gYXMgUGVwQnV0dG9uXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uT3BlcmF0b3JDaGFuZ2VkKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudD8uc291cmNlPy5rZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZi5vcGVyYXRvci5zZXRWYWx1ZShldmVudC5zb3VyY2Uua2V5KTtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JDaGFuZ2UuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BZGRSdWxlQ2xpY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVJdGVtLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbkFkZFJ1bGVTZXRDbGlja2VkKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZVNlY3Rpb24uZW1pdCgpO1xuICAgIH1cblxuICAgIG9uRGVsZXRlU2VjdGlvbkNsaWNrZWQoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlLmVtaXQoKTtcbiAgICB9XG5cblxufVxuIiwiPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiLjVyZW1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicXVlcnktc2VjdGlvbi1jb250YWluZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiLjVyZW1cIj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8cGVwLWdyb3VwLWJ1dHRvbnMgW2J1dHRvbnNdPVwidG9nZ2xlQnV0dG9uc1wiIFtzZWxlY3RlZEJ1dHRvbktleV09XCJmLm9wZXJhdG9yPy52YWx1ZSB8fCAnJ1wiIHN0eWxlVHlwZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgIHNpemVUeXBlPVwic21cIiBbdmlld1R5cGVdPVwiJ3RvZ2dsZSdcIiBbYnV0dG9uc0Rpc2FibGVkXT1cIiFoYXNGaWVsZHNcIj5cbiAgICAgICAgICAgIDwvcGVwLWdyb3VwLWJ1dHRvbnM+XG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIuNXJlbVwiPlxuICAgICAgICAgICAgICAgIDxwZXAtYnV0dG9uIHZhbHVlPVwiQWRkIEZpbHRlclwiIHN0eWxlVHlwZT1cIndlYWtcIiBzdHlsZVN0YXRlVHlwZT1cInN5c3RlbVwiIHNpemVUeXBlPVwic21cIiBjbGFzc05hbWVzPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNGaWVsZHNcIiBpY29uTmFtZT1cIm51bWJlcl9wbHVzXCIgaWNvblBvc2l0aW9uPVwiZW5kXCIgW3Zpc2libGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbkFkZFJ1bGVDbGlja2VkKClcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlcHRoLmN1cnJlbnQgPCBkZXB0aC5tYXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGVwLWJ1dHRvbiB2YWx1ZT1cIkFkZCBGaWx0ZXIgR3JvdXBcIiBzdHlsZVR5cGU9XCJ3ZWFrXCIgc3R5bGVTdGF0ZVR5cGU9XCJzeXN0ZW1cIiBzaXplVHlwZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM9XCJcIiBbZGlzYWJsZWRdPVwiIWhhc0ZpZWxkc1wiIGljb25OYW1lPVwibnVtYmVyX3BsdXNcIiBpY29uUG9zaXRpb249XCJlbmRcIiBbdmlzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbkFkZFJ1bGVTZXRDbGlja2VkKClcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3NlY3Rpb25Db250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHBlcC1idXR0b24gKm5nSWY9XCJkZXB0aC5jdXJyZW50ID4gMFwiIHN0eWxlVHlwZT1cIndlYWtcIiBzdHlsZVN0YXRlVHlwZT1cInN5c3RlbV9iaW5cIiBzaXplVHlwZT1cIm1kXCIgY2xhc3NOYW1lcz1cIlwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiIGljb25OYW1lPVwic3lzdGVtX2JpblwiIGljb25Qb3NpdGlvbj1cImVuZFwiIFt2aXNpYmxlXT1cInRydWVcIlxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwib25EZWxldGVTZWN0aW9uQ2xpY2tlZCgpXCI+XG4gICAgPC9wZXAtYnV0dG9uPlxuPC9kaXY+Il19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLXNlY3Rpb24vcXVlcnktYnVpbGRlci1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLXNlY3Rpb24vcXVlcnktYnVpbGRlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWV2QixNQUFNLE9BQU8sK0JBQStCO0lBa0J4QyxZQUFvQixxQkFBOEM7UUFBOUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtRQWZ6RCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRzFCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1QixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFPcEMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBb0IsRUFBRSxFQUFFO1lBQ25GLE9BQU87Z0JBQ0gsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHO2dCQUNqQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLFFBQVEsRUFBRSxDQUFDLEtBQTJCLEVBQUUsRUFBRSxDQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO2FBQ3ZCLENBQUE7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBSztRQUNuQixJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7NkhBekRRLCtCQUErQjtpSEFBL0IsK0JBQStCLCtWQWNELGdCQUFnQiwyQ0NwQzNELHNuREF1Qk07NEZERE8sK0JBQStCO2tCQUwzQyxTQUFTOytCQUNJLDJCQUEyQjs4R0FLNUIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdOLGFBQWE7c0JBRFosTUFBTTtnQkFHUCxVQUFVO3NCQURULE1BQU07Z0JBR1AsTUFBTTtzQkFETCxNQUFNO2dCQUdQLGNBQWM7c0JBRGIsTUFBTTtnQkFHa0UsZ0JBQWdCO3NCQUF4RixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBJUGVwQnV0dG9uQ2xpY2tFdmVudCxcbiAgICBQZXBCdXR0b24sXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2J1dHRvbic7XG5pbXBvcnQgeyBJUGVwT3B0aW9uIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgUGVwVHlwZUNvbnZlcnRvclNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vc2VydmljZXMvdHlwZS1jb252ZXJ0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBJUGVwUXVlcnlEZXB0aCB9IGZyb20gJy4uL2NvbW1vbi9tb2RlbC9zdHJ1Y3R1cmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1xdWVyeS1idWlsZGVyLXNlY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1idWlsZGVyLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi5jb21wb25lbnQuc2NzcycsICcuL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi5jb21wb25lbnQudGhlbWUuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBRdWVyeUJ1aWxkZXJTZWN0aW9uQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KCkgZGVwdGg6IElQZXBRdWVyeURlcHRoO1xuICAgIEBJbnB1dCgpIGhhc0ZpZWxkcyA9IHRydWU7XG5cbiAgICBAT3V0cHV0KClcbiAgICBjcmVhdGVTZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGNyZWF0ZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIG9wZXJhdG9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnc2VjdGlvbkNvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHNlY3Rpb25Db250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICB0b2dnbGVCdXR0b25zOiBBcnJheTxQZXBCdXR0b24+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfdHlwZUNvbnZlcnRvclNlcnZpY2U6IFBlcFR5cGVDb252ZXJ0b3JTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdE9wZXJhdG9ycygpO1xuICAgIH1cblxuICAgIGdldCBmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIGluaXRPcGVyYXRvcnMoKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlQnV0dG9ucyA9IHRoaXMuX3R5cGVDb252ZXJ0b3JTZXJ2aWNlLm9wZXJhdG9ycy5tYXAoKG9wZXJhdG9yOiBJUGVwT3B0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGtleTogb3BlcmF0b3Iua2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBvcGVyYXRvci52YWx1ZSxcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogKGV2ZW50OiBJUGVwQnV0dG9uQ2xpY2tFdmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk9wZXJhdG9yQ2hhbmdlZChldmVudClcbiAgICAgICAgICAgIH0gYXMgUGVwQnV0dG9uXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uT3BlcmF0b3JDaGFuZ2VkKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudD8uc291cmNlPy5rZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZi5vcGVyYXRvci5zZXRWYWx1ZShldmVudC5zb3VyY2Uua2V5KTtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JDaGFuZ2UuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BZGRSdWxlQ2xpY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVJdGVtLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbkFkZFJ1bGVTZXRDbGlja2VkKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZVNlY3Rpb24uZW1pdCgpO1xuICAgIH1cblxuICAgIG9uRGVsZXRlU2VjdGlvbkNsaWNrZWQoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlLmVtaXQoKTtcbiAgICB9XG5cblxufVxuIiwiPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiLjVyZW1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicXVlcnktc2VjdGlvbi1jb250YWluZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiLjVyZW1cIj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICA8cGVwLWdyb3VwLWJ1dHRvbnMgW2J1dHRvbnNdPVwidG9nZ2xlQnV0dG9uc1wiIFtzZWxlY3RlZEJ1dHRvbktleV09XCJmLm9wZXJhdG9yPy52YWx1ZSB8fCAnJ1wiIHN0eWxlVHlwZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgIHNpemVUeXBlPVwic21cIiBbdmlld1R5cGVdPVwiJ3RvZ2dsZSdcIiBbYnV0dG9uc0Rpc2FibGVkXT1cIiFoYXNGaWVsZHNcIj5cbiAgICAgICAgICAgIDwvcGVwLWdyb3VwLWJ1dHRvbnM+XG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIuNXJlbVwiPlxuICAgICAgICAgICAgICAgIDxwZXAtYnV0dG9uIHZhbHVlPVwiQWRkIEZpbHRlclwiIHN0eWxlVHlwZT1cIndlYWtcIiBzdHlsZVN0YXRlVHlwZT1cInN5c3RlbVwiIHNpemVUeXBlPVwic21cIiBjbGFzc05hbWVzPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNGaWVsZHNcIiBpY29uTmFtZT1cIm51bWJlcl9wbHVzXCIgaWNvblBvc2l0aW9uPVwiZW5kXCIgW3Zpc2libGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbkFkZFJ1bGVDbGlja2VkKClcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlcHRoLmN1cnJlbnQgPCBkZXB0aC5tYXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGVwLWJ1dHRvbiB2YWx1ZT1cIkFkZCBGaWx0ZXIgR3JvdXBcIiBzdHlsZVR5cGU9XCJ3ZWFrXCIgc3R5bGVTdGF0ZVR5cGU9XCJzeXN0ZW1cIiBzaXplVHlwZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM9XCJcIiBbZGlzYWJsZWRdPVwiIWhhc0ZpZWxkc1wiIGljb25OYW1lPVwibnVtYmVyX3BsdXNcIiBpY29uUG9zaXRpb249XCJlbmRcIiBbdmlzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbkFkZFJ1bGVTZXRDbGlja2VkKClcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3NlY3Rpb25Db250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHBlcC1idXR0b24gKm5nSWY9XCJkZXB0aC5jdXJyZW50ID4gMFwiIHN0eWxlVHlwZT1cIndlYWtcIiBzdHlsZVN0YXRlVHlwZT1cInN5c3RlbVwiIHNpemVUeXBlPVwibWRcIiBjbGFzc05hbWVzPVwiXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCIgaWNvbk5hbWU9XCJzeXN0ZW1fYmluXCIgaWNvblBvc2l0aW9uPVwiZW5kXCIgW3Zpc2libGVdPVwidHJ1ZVwiXG4gICAgICAgIChidXR0b25DbGljayk9XCJvbkRlbGV0ZVNlY3Rpb25DbGlja2VkKClcIj5cbiAgICA8L3BlcC1idXR0b24+XG48L2Rpdj4iXX0=