ngx-tethys 17.0.0 → 17.0.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 (384) hide show
  1. package/CHANGELOG.md +26 -7
  2. package/action/action.component.d.ts +3 -0
  3. package/affix/affix.component.d.ts +2 -0
  4. package/alert/alert.component.d.ts +1 -0
  5. package/anchor/anchor.component.d.ts +3 -0
  6. package/arrow-switcher/arrow-switcher.component.d.ts +1 -0
  7. package/autocomplete/autocomplete.component.d.ts +2 -3
  8. package/autocomplete/autocomplete.trigger.directive.d.ts +3 -0
  9. package/avatar/avatar.component.d.ts +4 -0
  10. package/back-top/back-top.component.d.ts +1 -0
  11. package/badge/badge.component.d.ts +5 -0
  12. package/button/button-icon.component.d.ts +2 -0
  13. package/button/button.component.d.ts +2 -0
  14. package/card/card.component.d.ts +3 -0
  15. package/card/content.component.d.ts +2 -1
  16. package/carousel/carousel.component.d.ts +5 -0
  17. package/cascader/cascader-li.component.d.ts +9 -2
  18. package/cascader/cascader-search-option.component.d.ts +7 -2
  19. package/cascader/cascader.component.d.ts +23 -2
  20. package/cascader/styles/cascader.scss +1 -0
  21. package/cascader/types.d.ts +1 -0
  22. package/checkbox/checkbox.component.d.ts +1 -0
  23. package/collapse/collapse-item.component.d.ts +2 -0
  24. package/collapse/collapse.component.d.ts +1 -0
  25. package/color-picker/color-picker-panel.component.d.ts +1 -0
  26. package/color-picker/color-picker.component.d.ts +7 -1
  27. package/copy/copy.directive.d.ts +1 -0
  28. package/core/behaviors/decorators.d.ts +6 -0
  29. package/date-picker/abstract-picker.component.d.ts +8 -1
  30. package/date-picker/abstract-picker.directive.d.ts +4 -0
  31. package/date-picker/base-picker.component.d.ts +2 -0
  32. package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -0
  33. package/date-picker/lib/popups/inner-popup.component.d.ts +1 -0
  34. package/date-picker/picker.component.d.ts +1 -0
  35. package/date-range/date-range.component.d.ts +2 -0
  36. package/dialog/body/dialog-body.component.d.ts +2 -1
  37. package/dialog/footer/dialog-footer.component.d.ts +1 -0
  38. package/dialog/header/dialog-header.component.d.ts +1 -0
  39. package/divider/divider.component.d.ts +2 -0
  40. package/drag-drop/drag-handle.directive.d.ts +1 -0
  41. package/drag-drop/drag.directive.d.ts +1 -0
  42. package/drag-drop/drop-container.directive.d.ts +1 -0
  43. package/dropdown/dropdown-menu-item.directive.d.ts +3 -1
  44. package/dropdown/dropdown-menu.component.d.ts +1 -0
  45. package/dropdown/dropdown.directive.d.ts +3 -0
  46. package/empty/empty.component.d.ts +1 -0
  47. package/esm2022/action/action.component.mjs +9 -22
  48. package/esm2022/affix/affix.component.mjs +8 -15
  49. package/esm2022/alert/alert.component.mjs +5 -10
  50. package/esm2022/anchor/anchor.component.mjs +10 -20
  51. package/esm2022/arrow-switcher/arrow-switcher.component.mjs +5 -11
  52. package/esm2022/autocomplete/autocomplete.component.mjs +5 -23
  53. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +9 -20
  54. package/esm2022/avatar/avatar.component.mjs +14 -30
  55. package/esm2022/back-top/back-top.component.mjs +6 -10
  56. package/esm2022/badge/badge.component.mjs +15 -37
  57. package/esm2022/button/button-icon.component.mjs +9 -20
  58. package/esm2022/button/button.component.mjs +7 -16
  59. package/esm2022/card/card.component.mjs +6 -20
  60. package/esm2022/card/content.component.mjs +5 -6
  61. package/esm2022/carousel/carousel.component.mjs +13 -30
  62. package/esm2022/cascader/cascader-li.component.mjs +16 -31
  63. package/esm2022/cascader/cascader-search-option.component.mjs +12 -21
  64. package/esm2022/cascader/cascader.component.mjs +32 -52
  65. package/esm2022/cascader/types.mjs +1 -1
  66. package/esm2022/checkbox/checkbox.component.mjs +7 -13
  67. package/esm2022/collapse/collapse-item.component.mjs +8 -15
  68. package/esm2022/collapse/collapse.component.mjs +5 -10
  69. package/esm2022/color-picker/color-picker-panel.component.mjs +5 -10
  70. package/esm2022/color-picker/color-picker.component.mjs +17 -37
  71. package/esm2022/copy/copy.directive.mjs +5 -10
  72. package/esm2022/core/behaviors/decorators.mjs +7 -44
  73. package/esm2022/date-picker/abstract-picker.component.mjs +21 -45
  74. package/esm2022/date-picker/abstract-picker.directive.mjs +11 -27
  75. package/esm2022/date-picker/base-picker.component.mjs +8 -15
  76. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -10
  77. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +4 -2
  78. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +7 -6
  79. package/esm2022/date-picker/picker.component.mjs +6 -10
  80. package/esm2022/date-range/date-range.component.mjs +7 -15
  81. package/esm2022/dialog/body/dialog-body.component.mjs +6 -6
  82. package/esm2022/dialog/footer/dialog-footer.component.mjs +6 -13
  83. package/esm2022/dialog/header/dialog-header.component.mjs +6 -10
  84. package/esm2022/divider/divider.component.mjs +7 -15
  85. package/esm2022/drag-drop/drag-handle.directive.mjs +5 -13
  86. package/esm2022/drag-drop/drag.directive.mjs +5 -11
  87. package/esm2022/drag-drop/drop-container.directive.mjs +5 -10
  88. package/esm2022/dropdown/dropdown-menu-item.directive.mjs +9 -19
  89. package/esm2022/dropdown/dropdown-menu.component.mjs +6 -9
  90. package/esm2022/dropdown/dropdown.directive.mjs +8 -22
  91. package/esm2022/empty/empty.component.mjs +7 -13
  92. package/esm2022/flexible-text/flexible-text.component.mjs +4 -11
  93. package/esm2022/form/form-group-error/form-group-error.component.mjs +5 -10
  94. package/esm2022/form/form-group-label.directive.mjs +6 -6
  95. package/esm2022/form/form-group.component.mjs +13 -17
  96. package/esm2022/icon/icon.component.mjs +6 -20
  97. package/esm2022/image/image.directive.mjs +7 -15
  98. package/esm2022/input/input-search.component.mjs +6 -11
  99. package/esm2022/input/input.component.mjs +7 -15
  100. package/esm2022/input-number/input-number.component.mjs +12 -25
  101. package/esm2022/layout/header.component.mjs +9 -19
  102. package/esm2022/layout/sidebar-header.component.mjs +5 -10
  103. package/esm2022/layout/sidebar.component.mjs +22 -45
  104. package/esm2022/list/list.component.mjs +5 -11
  105. package/esm2022/list/selection/selection-list.mjs +13 -10
  106. package/esm2022/loading/loading.component.mjs +9 -20
  107. package/esm2022/menu/group/menu-group.component.mjs +12 -38
  108. package/esm2022/menu/item/action/menu-item-action.component.mjs +5 -10
  109. package/esm2022/menu/item/name/menu-item-name.component.mjs +5 -10
  110. package/esm2022/menu/menu.component.mjs +5 -10
  111. package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +6 -6
  112. package/esm2022/nav/nav-ink-bar.directive.mjs +7 -15
  113. package/esm2022/nav/nav-item.directive.mjs +10 -20
  114. package/esm2022/nav/nav.component.mjs +12 -25
  115. package/esm2022/pagination/pagination.component.mjs +18 -68
  116. package/esm2022/popover/popover.directive.mjs +12 -33
  117. package/esm2022/progress/progress-circle.component.mjs +9 -20
  118. package/esm2022/progress/progress-strip.component.mjs +5 -11
  119. package/esm2022/progress/progress.component.mjs +11 -23
  120. package/esm2022/property/properties.component.mjs +5 -10
  121. package/esm2022/property/property-item.component.mjs +8 -15
  122. package/esm2022/property-operation/property-operation.component.mjs +16 -37
  123. package/esm2022/radio/group/radio-group.component.mjs +6 -21
  124. package/esm2022/rate/rate-item.component.mjs +5 -10
  125. package/esm2022/rate/rate.component.mjs +16 -25
  126. package/esm2022/resizable/resizable.directive.mjs +24 -62
  127. package/esm2022/resizable/resize-handle.component.mjs +6 -10
  128. package/esm2022/resizable/resize-handles.component.mjs +5 -10
  129. package/esm2022/segment/segment-item.component.mjs +5 -10
  130. package/esm2022/segment/segment.component.mjs +7 -16
  131. package/esm2022/select/custom-select/custom-select.component.mjs +30 -65
  132. package/esm2022/select/native-select/native-select.component.mjs +6 -10
  133. package/esm2022/shared/base-form-check.component.mjs +10 -20
  134. package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -15
  135. package/esm2022/shared/directives/thy-scroll.directive.mjs +6 -13
  136. package/esm2022/shared/directives/thy-show.mjs +5 -11
  137. package/esm2022/shared/option/group/option-group.component.mjs +5 -10
  138. package/esm2022/shared/option/list-option/list-option.component.mjs +6 -13
  139. package/esm2022/shared/option/option.component.mjs +5 -11
  140. package/esm2022/shared/select/select-control/select-control.component.mjs +17 -44
  141. package/esm2022/skeleton/skeleton-circle.component.mjs +6 -9
  142. package/esm2022/skeleton/skeleton-rectangle.component.mjs +6 -9
  143. package/esm2022/skeleton/skeleton.component.mjs +5 -10
  144. package/esm2022/skeleton/stylized/bullet-list.component.mjs +6 -9
  145. package/esm2022/skeleton/stylized/list.component.mjs +6 -9
  146. package/esm2022/skeleton/stylized/paragraph.component.mjs +6 -9
  147. package/esm2022/slide/slide-body/slide-body-section.component.mjs +6 -6
  148. package/esm2022/slider/slider.component.mjs +18 -35
  149. package/esm2022/space/space.component.mjs +6 -10
  150. package/esm2022/stepper/step-header.component.mjs +9 -20
  151. package/esm2022/stepper/stepper.component.mjs +7 -16
  152. package/esm2022/switch/switch.component.mjs +12 -17
  153. package/esm2022/table/table-column.component.mjs +9 -31
  154. package/esm2022/table/table-skeleton.component.mjs +8 -14
  155. package/esm2022/table/table.component.mjs +32 -83
  156. package/esm2022/tabs/tab.component.mjs +5 -10
  157. package/esm2022/tabs/tabs.component.mjs +8 -15
  158. package/esm2022/tag/tag.component.mjs +6 -10
  159. package/esm2022/time-picker/time-picker-panel.component.mjs +8 -15
  160. package/esm2022/time-picker/time-picker.component.mjs +20 -46
  161. package/esm2022/timeline/timeline.component.mjs +5 -10
  162. package/esm2022/tooltip/tooltip.directive.mjs +11 -34
  163. package/esm2022/tree/tree-node.component.mjs +17 -40
  164. package/esm2022/tree/tree.component.mjs +19 -47
  165. package/esm2022/tree-select/tree-select.component.mjs +18 -40
  166. package/esm2022/upload/file-select-base.mjs +7 -6
  167. package/esm2022/upload/file-select.component.mjs +11 -26
  168. package/esm2022/version.mjs +2 -2
  169. package/esm2022/vote/vote.component.mjs +11 -33
  170. package/esm2022/watermark/watermark.directive.mjs +6 -10
  171. package/fesm2022/ngx-tethys-action.mjs +9 -21
  172. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  173. package/fesm2022/ngx-tethys-affix.mjs +6 -14
  174. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  175. package/fesm2022/ngx-tethys-alert.mjs +4 -9
  176. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  177. package/fesm2022/ngx-tethys-anchor.mjs +8 -19
  178. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  179. package/fesm2022/ngx-tethys-arrow-switcher.mjs +4 -10
  180. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  181. package/fesm2022/ngx-tethys-autocomplete.mjs +14 -39
  182. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  183. package/fesm2022/ngx-tethys-avatar.mjs +14 -29
  184. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  185. package/fesm2022/ngx-tethys-back-top.mjs +5 -9
  186. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  187. package/fesm2022/ngx-tethys-badge.mjs +14 -36
  188. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  189. package/fesm2022/ngx-tethys-button.mjs +13 -30
  190. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  191. package/fesm2022/ngx-tethys-card.mjs +8 -23
  192. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  193. package/fesm2022/ngx-tethys-carousel.mjs +12 -29
  194. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  195. package/fesm2022/ngx-tethys-cascader.mjs +55 -95
  196. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  197. package/fesm2022/ngx-tethys-checkbox.mjs +5 -12
  198. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  199. package/fesm2022/ngx-tethys-collapse.mjs +10 -20
  200. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  201. package/fesm2022/ngx-tethys-color-picker.mjs +19 -42
  202. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  203. package/fesm2022/ngx-tethys-copy.mjs +4 -9
  204. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  205. package/fesm2022/ngx-tethys-core.mjs +6 -43
  206. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  207. package/fesm2022/ngx-tethys-date-picker.mjs +48 -94
  208. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  209. package/fesm2022/ngx-tethys-date-range.mjs +6 -14
  210. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  211. package/fesm2022/ngx-tethys-dialog.mjs +13 -21
  212. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  213. package/fesm2022/ngx-tethys-divider.mjs +6 -14
  214. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  215. package/fesm2022/ngx-tethys-drag-drop.mjs +10 -25
  216. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  217. package/fesm2022/ngx-tethys-dropdown.mjs +19 -42
  218. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  219. package/fesm2022/ngx-tethys-empty.mjs +5 -12
  220. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  221. package/fesm2022/ngx-tethys-flexible-text.mjs +3 -10
  222. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  223. package/fesm2022/ngx-tethys-form.mjs +19 -25
  224. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  225. package/fesm2022/ngx-tethys-icon.mjs +5 -19
  226. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  227. package/fesm2022/ngx-tethys-image.mjs +7 -14
  228. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  229. package/fesm2022/ngx-tethys-input-number.mjs +11 -24
  230. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  231. package/fesm2022/ngx-tethys-input.mjs +10 -21
  232. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  233. package/fesm2022/ngx-tethys-layout.mjs +31 -64
  234. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  235. package/fesm2022/ngx-tethys-list.mjs +16 -18
  236. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  237. package/fesm2022/ngx-tethys-loading.mjs +8 -19
  238. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  239. package/fesm2022/ngx-tethys-menu.mjs +20 -55
  240. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  241. package/fesm2022/ngx-tethys-nav.mjs +28 -55
  242. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  243. package/fesm2022/ngx-tethys-pagination.mjs +17 -67
  244. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  245. package/fesm2022/ngx-tethys-popover.mjs +11 -32
  246. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  247. package/fesm2022/ngx-tethys-progress.mjs +20 -45
  248. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  249. package/fesm2022/ngx-tethys-property-operation.mjs +14 -36
  250. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  251. package/fesm2022/ngx-tethys-property.mjs +10 -21
  252. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  253. package/fesm2022/ngx-tethys-radio.mjs +5 -19
  254. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  255. package/fesm2022/ngx-tethys-rate.mjs +18 -30
  256. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  257. package/fesm2022/ngx-tethys-resizable.mjs +29 -73
  258. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  259. package/fesm2022/ngx-tethys-segment.mjs +10 -21
  260. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  261. package/fesm2022/ngx-tethys-select.mjs +32 -70
  262. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  263. package/fesm2022/ngx-tethys-shared.mjs +49 -105
  264. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  265. package/fesm2022/ngx-tethys-skeleton.mjs +20 -38
  266. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  267. package/fesm2022/ngx-tethys-slide.mjs +6 -5
  268. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  269. package/fesm2022/ngx-tethys-slider.mjs +17 -34
  270. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  271. package/fesm2022/ngx-tethys-space.mjs +5 -9
  272. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  273. package/fesm2022/ngx-tethys-stepper.mjs +13 -31
  274. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  275. package/fesm2022/ngx-tethys-switch.mjs +11 -16
  276. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  277. package/fesm2022/ngx-tethys-table.mjs +43 -120
  278. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  279. package/fesm2022/ngx-tethys-tabs.mjs +10 -20
  280. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  281. package/fesm2022/ngx-tethys-tag.mjs +5 -9
  282. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  283. package/fesm2022/ngx-tethys-time-picker.mjs +24 -55
  284. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  285. package/fesm2022/ngx-tethys-timeline.mjs +4 -9
  286. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  287. package/fesm2022/ngx-tethys-tooltip.mjs +10 -33
  288. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  289. package/fesm2022/ngx-tethys-tree-select.mjs +17 -39
  290. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  291. package/fesm2022/ngx-tethys-tree.mjs +33 -82
  292. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  293. package/fesm2022/ngx-tethys-upload.mjs +15 -28
  294. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  295. package/fesm2022/ngx-tethys-vote.mjs +10 -32
  296. package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
  297. package/fesm2022/ngx-tethys-watermark.mjs +5 -9
  298. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  299. package/fesm2022/ngx-tethys.mjs +1 -1
  300. package/fesm2022/ngx-tethys.mjs.map +1 -1
  301. package/flexible-text/flexible-text.component.d.ts +1 -0
  302. package/form/form-group-error/form-group-error.component.d.ts +1 -0
  303. package/form/form-group-label.directive.d.ts +2 -1
  304. package/form/form-group.component.d.ts +5 -2
  305. package/icon/icon.component.d.ts +3 -0
  306. package/image/image.directive.d.ts +2 -0
  307. package/input/input-search.component.d.ts +1 -0
  308. package/input/input.component.d.ts +2 -0
  309. package/input-number/input-number.component.d.ts +4 -0
  310. package/layout/header.component.d.ts +5 -2
  311. package/layout/sidebar-header.component.d.ts +1 -0
  312. package/layout/sidebar.component.d.ts +14 -4
  313. package/list/list.component.d.ts +1 -0
  314. package/list/selection/selection-list.d.ts +4 -1
  315. package/loading/loading.component.d.ts +4 -2
  316. package/menu/group/menu-group.component.d.ts +6 -0
  317. package/menu/item/action/menu-item-action.component.d.ts +1 -0
  318. package/menu/item/name/menu-item-name.component.d.ts +1 -0
  319. package/menu/menu.component.d.ts +1 -0
  320. package/nav/icon-nav/icon-nav-link.directive.d.ts +2 -1
  321. package/nav/nav-ink-bar.directive.d.ts +2 -0
  322. package/nav/nav-item.directive.d.ts +3 -0
  323. package/nav/nav.component.d.ts +4 -0
  324. package/package.json +7 -7
  325. package/pagination/pagination.component.d.ts +11 -0
  326. package/popover/popover.directive.d.ts +5 -0
  327. package/progress/progress-circle.component.d.ts +3 -0
  328. package/progress/progress-strip.component.d.ts +1 -0
  329. package/progress/progress.component.d.ts +3 -0
  330. package/property/properties.component.d.ts +1 -0
  331. package/property/property-item.component.d.ts +2 -0
  332. package/property-operation/property-operation.component.d.ts +5 -0
  333. package/radio/group/radio-group.component.d.ts +2 -2
  334. package/rate/rate-item.component.d.ts +1 -0
  335. package/rate/rate.component.d.ts +5 -1
  336. package/resizable/resizable.directive.d.ts +10 -1
  337. package/resizable/resize-handle.component.d.ts +1 -0
  338. package/resizable/resize-handles.component.d.ts +1 -0
  339. package/resizable/styles/resizable.scss +1 -0
  340. package/schematics/dependencies.js +1 -1
  341. package/schematics/version.d.ts +1 -1
  342. package/schematics/version.js +1 -1
  343. package/segment/segment-item.component.d.ts +1 -0
  344. package/segment/segment.component.d.ts +2 -0
  345. package/select/custom-select/custom-select.component.d.ts +12 -1
  346. package/select/native-select/native-select.component.d.ts +1 -0
  347. package/shared/base-form-check.component.d.ts +2 -0
  348. package/shared/directives/thy-autofocus.directive.d.ts +3 -1
  349. package/shared/directives/thy-scroll.directive.d.ts +1 -0
  350. package/shared/directives/thy-show.d.ts +1 -0
  351. package/shared/option/group/option-group.component.d.ts +1 -0
  352. package/shared/option/list-option/list-option.component.d.ts +1 -0
  353. package/shared/option/option.component.d.ts +1 -0
  354. package/shared/option/styles/select-dropdown.scss +1 -0
  355. package/shared/select/select-control/select-control.component.d.ts +7 -0
  356. package/skeleton/skeleton-circle.component.d.ts +1 -0
  357. package/skeleton/skeleton-rectangle.component.d.ts +1 -0
  358. package/skeleton/skeleton.component.d.ts +1 -0
  359. package/skeleton/stylized/bullet-list.component.d.ts +1 -0
  360. package/skeleton/stylized/list.component.d.ts +1 -0
  361. package/skeleton/stylized/paragraph.component.d.ts +1 -0
  362. package/slide/slide-body/slide-body-section.component.d.ts +2 -1
  363. package/slider/slider.component.d.ts +6 -1
  364. package/space/space.component.d.ts +1 -0
  365. package/stepper/step-header.component.d.ts +3 -0
  366. package/stepper/stepper.component.d.ts +2 -0
  367. package/switch/switch.component.d.ts +3 -1
  368. package/table/table-column.component.d.ts +7 -2
  369. package/table/table-skeleton.component.d.ts +2 -0
  370. package/table/table.component.d.ts +14 -0
  371. package/tabs/tab.component.d.ts +1 -0
  372. package/tabs/tabs.component.d.ts +2 -0
  373. package/tag/tag.component.d.ts +1 -0
  374. package/time-picker/time-picker-panel.component.d.ts +2 -0
  375. package/time-picker/time-picker.component.d.ts +6 -2
  376. package/timeline/timeline.component.d.ts +1 -0
  377. package/tooltip/tooltip.directive.d.ts +5 -0
  378. package/tree/tree-node.component.d.ts +7 -0
  379. package/tree/tree.component.d.ts +8 -0
  380. package/tree-select/tree-select.component.d.ts +7 -0
  381. package/upload/file-select-base.d.ts +1 -0
  382. package/upload/file-select.component.d.ts +3 -0
  383. package/vote/vote.component.d.ts +4 -2
  384. package/watermark/watermark.directive.d.ts +1 -0
@@ -1,7 +1,5 @@
1
- import { __decorate, __metadata } from "tslib";
2
1
  import { NgIf, NgTemplateOutlet } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, ContentChild, Directive, Input, TemplateRef } from '@angular/core';
4
- import { InputBoolean } from 'ngx-tethys/core';
2
+ import { ChangeDetectionStrategy, Component, ContentChild, Directive, Input, TemplateRef, booleanAttribute } from '@angular/core';
5
3
  import * as i0 from "@angular/core";
6
4
  /**
7
5
  * 侧边栏头部布局指令
@@ -10,12 +8,8 @@ import * as i0 from "@angular/core";
10
8
  */
11
9
  export class ThySidebarHeaderDirective {
12
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThySidebarHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.3", type: ThySidebarHeaderDirective, isStandalone: true, selector: "[thySidebarHeader]", inputs: { thyDivided: "thyDivided" }, host: { properties: { "class.sidebar-header-divided": "thyDivided" }, classAttribute: "sidebar-header" }, ngImport: i0 }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.2.3", type: ThySidebarHeaderDirective, isStandalone: true, selector: "[thySidebarHeader]", inputs: { thyDivided: ["thyDivided", "thyDivided", booleanAttribute] }, host: { properties: { "class.sidebar-header-divided": "thyDivided" }, classAttribute: "sidebar-header" }, ngImport: i0 }); }
14
12
  }
15
- __decorate([
16
- InputBoolean(),
17
- __metadata("design:type", Object)
18
- ], ThySidebarHeaderDirective.prototype, "thyDivided", void 0);
19
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThySidebarHeaderDirective, decorators: [{
20
14
  type: Directive,
21
15
  args: [{
@@ -27,7 +21,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
27
21
  standalone: true
28
22
  }]
29
23
  }], propDecorators: { thyDivided: [{
30
- type: Input
24
+ type: Input,
25
+ args: [{ transform: booleanAttribute }]
31
26
  }] } });
32
27
  /**
33
28
  * 侧边栏头部布局组件
@@ -55,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
55
50
  type: ContentChild,
56
51
  args: ['headerTitle']
57
52
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xheW91dC9zaWRlYmFyLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGF5b3V0L3NpZGViYXItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUvQzs7OztHQUlHO0FBU0gsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCO2tHQUF6Qix5QkFBeUI7O0FBS1Q7SUFBZixZQUFZLEVBQUU7OzZEQUE4QjsyRkFMN0MseUJBQXlCO2tCQVJyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsZ0JBQWdCO3dCQUN2QixnQ0FBZ0MsRUFBRSxZQUFZO3FCQUNqRDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBTTRCLFVBQVU7c0JBQWxDLEtBQUs7O0FBR1Y7Ozs7R0FJRztBQWNILE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDZVQTFCaEIseUJBQXlCLG1FQ2pCdEMsNllBVUEsNENEK0JjLGdCQUFnQixvSkFBRSxJQUFJOzsyRkFFdkIsZ0JBQWdCO2tCQWI1QixTQUFTOytCQUNJLG9CQUFvQixtQkFFYix1QkFBdUIsQ0FBQyxNQUFNLGtCQUMvQjt3QkFDWjs0QkFDSSxTQUFTLEVBQUUseUJBQXlCOzRCQUNwQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUM7eUJBQ3pCO3FCQUNKLGNBQ1csSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDOzhCQU9qQyxRQUFRO3NCQURQLEtBQUs7Z0JBUUMsb0JBQW9CO3NCQUQxQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFReEIsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcblxuLyoqXG4gKiDkvqfovrnmoI/lpLTpg6jluIPlsYDmjIfku6RcbiAqIEBuYW1lIHRoeVNpZGViYXJIZWFkZXJcbiAqIEBvcmRlciAyNVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0aHlTaWRlYmFySGVhZGVyXScsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3NpZGViYXItaGVhZGVyJyxcbiAgICAgICAgJ1tjbGFzcy5zaWRlYmFyLWhlYWRlci1kaXZpZGVkXSc6ICd0aHlEaXZpZGVkJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaHlTaWRlYmFySGVhZGVyRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiDmmK/lkKbmnInliIblibLnur9cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlEaXZpZGVkOiBib29sZWFuIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIOS+p+i+ueagj+WktOmDqOW4g+WxgOe7hOS7tlxuICogQG5hbWUgdGh5LXNpZGViYXItaGVhZGVyXG4gKiBAb3JkZXIgMjZcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktc2lkZWJhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiBgLi9zaWRlYmFyLWhlYWRlci5jb21wb25lbnQuaHRtbGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBUaHlTaWRlYmFySGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ3RoeURpdmlkZWQnXVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlTaWRlYmFySGVhZGVyIHtcbiAgICAvKipcbiAgICAgKiDlpLTpg6jmoIfpophcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRoeVRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDlpLTpg6joh6rlrprkuYnmk43kvZzmqKHmnb/vvIxgPG5nLXRlbXBsYXRlICNoZWFkZXJPcGVyYXRpb24+PC9uZy10ZW1wbGF0ZT5gXG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdoZWFkZXJPcGVyYXRpb24nKVxuICAgIHB1YmxpYyBvcGVyYXRpb25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiDlpLTpg6joh6rlrprkuYnmoIfpopjmqKHmnb/vvIxgPG5nLXRlbXBsYXRlICNoZWFkZXJUaXRsZT48L25nLXRlbXBsYXRlPmBcbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlclRpdGxlJylcbiAgICBwdWJsaWMgdGl0bGVUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbiIsIjxzcGFuIGNsYXNzPVwidGl0bGVcIiAqbmdJZj1cInRoeVRpdGxlIHx8IHRpdGxlVGVtcGxhdGVSZWZcIj5cbiAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidGl0bGVUZW1wbGF0ZVJlZjsgZWxzZSBkZWZhdWx0VGl0bGVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aXRsZVRlbXBsYXRlUmVmXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGl0bGU+XG4gICAge3sgdGh5VGl0bGUgfX1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvc3Bhbj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9XCJvcGVyYXRpb25cIj5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wZXJhdGlvblRlbXBsYXRlUmVmXCI+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xheW91dC9zaWRlYmFyLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGF5b3V0L3NpZGViYXItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFbEk7Ozs7R0FJRztBQVNILE1BQU0sT0FBTyx5QkFBeUI7OEdBQXpCLHlCQUF5QjtrR0FBekIseUJBQXlCLHlHQUtkLGdCQUFnQjs7MkZBTDNCLHlCQUF5QjtrQkFSckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLGdCQUFnQjt3QkFDdkIsZ0NBQWdDLEVBQUUsWUFBWTtxQkFDakQ7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQU0yQyxVQUFVO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztBQUcxQzs7OztHQUlHO0FBY0gsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsNlVBMUJoQix5QkFBeUIsbUVDaEJ0Qyw2WUFVQSw0Q0Q4QmMsZ0JBQWdCLG9KQUFFLElBQUk7OzJGQUV2QixnQkFBZ0I7a0JBYjVCLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUViLHVCQUF1QixDQUFDLE1BQU0sa0JBQy9CO3dCQUNaOzRCQUNJLFNBQVMsRUFBRSx5QkFBeUI7NEJBQ3BDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQzt5QkFDekI7cUJBQ0osY0FDVyxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUM7OEJBT2pDLFFBQVE7c0JBRFAsS0FBSztnQkFRQyxvQkFBb0I7c0JBRDFCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQVF4QixnQkFBZ0I7c0JBRHRCLFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgYm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIOS+p+i+ueagj+WktOmDqOW4g+WxgOaMh+S7pFxuICogQG5hbWUgdGh5U2lkZWJhckhlYWRlclxuICogQG9yZGVyIDI1XG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RoeVNpZGViYXJIZWFkZXJdJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnc2lkZWJhci1oZWFkZXInLFxuICAgICAgICAnW2NsYXNzLnNpZGViYXItaGVhZGVyLWRpdmlkZWRdJzogJ3RoeURpdmlkZWQnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeVNpZGViYXJIZWFkZXJEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuacieWIhuWJsue6v1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHRoeURpdmlkZWQ6IGJvb2xlYW4gfCBzdHJpbmc7XG59XG5cbi8qKlxuICog5L6n6L655qCP5aS06YOo5biD5bGA57uE5Lu2XG4gKiBAbmFtZSB0aHktc2lkZWJhci1oZWFkZXJcbiAqIEBvcmRlciAyNlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1zaWRlYmFyLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6IGAuL3NpZGViYXItaGVhZGVyLmNvbXBvbmVudC5odG1sYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IFRoeVNpZGViYXJIZWFkZXJEaXJlY3RpdmUsXG4gICAgICAgICAgICBpbnB1dHM6IFsndGh5RGl2aWRlZCddXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIE5nSWZdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVNpZGViYXJIZWFkZXIge1xuICAgIC8qKlxuICAgICAqIOWktOmDqOagh+mimFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGh5VGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOWktOmDqOiHquWumuS5ieaTjeS9nOaooeadv++8jGA8bmctdGVtcGxhdGUgI2hlYWRlck9wZXJhdGlvbj48L25nLXRlbXBsYXRlPmBcbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlck9wZXJhdGlvbicpXG4gICAgcHVibGljIG9wZXJhdGlvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIOWktOmDqOiHquWumuS5ieagh+mimOaooeadv++8jGA8bmctdGVtcGxhdGUgI2hlYWRlclRpdGxlPjwvbmctdGVtcGxhdGU+YFxuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyVGl0bGUnKVxuICAgIHB1YmxpYyB0aXRsZVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuIiwiPHNwYW4gY2xhc3M9XCJ0aXRsZVwiICpuZ0lmPVwidGh5VGl0bGUgfHwgdGl0bGVUZW1wbGF0ZVJlZlwiPlxuICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0aXRsZVRlbXBsYXRlUmVmOyBlbHNlIGRlZmF1bHRUaXRsZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpdGxlVGVtcGxhdGVSZWZcIj48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUaXRsZT5cbiAgICB7eyB0aHlUaXRsZSB9fVxuICA8L25nLXRlbXBsYXRlPlxuPC9zcGFuPlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cIm9wZXJhdGlvblwiPlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwib3BlcmF0aW9uVGVtcGxhdGVSZWZcIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -1,13 +1,10 @@
1
- import { __decorate, __metadata } from "tslib";
2
1
  import { NgClass, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';
3
- import { Component, Directive, ElementRef, EventEmitter, Host, HostBinding, HostListener, Input, Optional, Output, TemplateRef, inject } from '@angular/core';
2
+ import { Component, Directive, ElementRef, EventEmitter, Host, HostBinding, HostListener, Input, Optional, Output, TemplateRef, booleanAttribute, inject, numberAttribute } from '@angular/core';
4
3
  import { ThyHotkeyDispatcher } from '@tethys/cdk/hotkey';
5
4
  import { isMacPlatform } from '@tethys/cdk/is';
6
- import { InputBoolean, InputNumber } from 'ngx-tethys/core';
7
5
  import { ThyIcon } from 'ngx-tethys/icon';
8
6
  import { ThyResizableDirective, ThyResizeHandle } from 'ngx-tethys/resizable';
9
7
  import { ThyTooltipDirective } from 'ngx-tethys/tooltip';
10
- import { coerceBooleanProperty } from 'ngx-tethys/util';
11
8
  import { ThyLayoutDirective } from './layout.component';
12
9
  import * as i0 from "@angular/core";
13
10
  import * as i1 from "./layout.component";
@@ -36,14 +33,14 @@ export class ThySidebarDirective {
36
33
  * @default false
37
34
  */
38
35
  set thyIsolated(value) {
39
- this.sidebarIsolated = coerceBooleanProperty(value);
36
+ this.sidebarIsolated = value;
40
37
  }
41
38
  /**
42
39
  * sidebar 是否有分割线。当`thyDirection`值为`left`时,控制右侧是否有分割线;当`thyDirection`值为`right`时,控制左侧是否有分割线。
43
40
  * @default true
44
41
  */
45
42
  set thyDivided(value) {
46
- this.isDivided = coerceBooleanProperty(value);
43
+ this.isDivided = value;
47
44
  }
48
45
  /**
49
46
  * 右侧是否有边框,已废弃,请使用 thyDivided
@@ -79,7 +76,7 @@ export class ThySidebarDirective {
79
76
  }
80
77
  }
81
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThySidebarDirective, deps: [{ token: i1.ThyLayoutDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
82
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.3", type: ThySidebarDirective, isStandalone: true, selector: "[thySidebar]", inputs: { thyDirection: "thyDirection", thyTheme: "thyTheme", thyWidth: "thyWidth", thyIsolated: "thyIsolated", thyDivided: "thyDivided", thyHasBorderRight: "thyHasBorderRight", thyHasBorderLeft: "thyHasBorderLeft" }, host: { properties: { "class.thy-layout-sidebar-right": "thyDirection === \"right\"", "class.thy-layout-sidebar--clear-border-right": "thyDirection === \"left\" && !isDivided", "class.thy-layout-sidebar--clear-border-left": "thyDirection === \"right\" && !isDivided", "class.sidebar-theme-light": "thyTheme === \"light\"", "class.sidebar-theme-dark": "thyTheme === \"dark\"", "class.thy-layout-sidebar-isolated": "sidebarIsolated", "style.width.px": "this.thyLayoutSidebarWidth" }, classAttribute: "thy-layout-sidebar" }, ngImport: i0 }); }
79
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.2.3", type: ThySidebarDirective, isStandalone: true, selector: "[thySidebar]", inputs: { thyDirection: "thyDirection", thyTheme: "thyTheme", thyWidth: "thyWidth", thyIsolated: ["thyIsolated", "thyIsolated", booleanAttribute], thyDivided: ["thyDivided", "thyDivided", booleanAttribute], thyHasBorderRight: ["thyHasBorderRight", "thyHasBorderRight", booleanAttribute], thyHasBorderLeft: ["thyHasBorderLeft", "thyHasBorderLeft", booleanAttribute] }, host: { properties: { "class.thy-layout-sidebar-right": "thyDirection === \"right\"", "class.thy-layout-sidebar--clear-border-right": "thyDirection === \"left\" && !isDivided", "class.thy-layout-sidebar--clear-border-left": "thyDirection === \"right\" && !isDivided", "class.sidebar-theme-light": "thyTheme === \"light\"", "class.sidebar-theme-dark": "thyTheme === \"dark\"", "class.thy-layout-sidebar-isolated": "sidebarIsolated", "style.width.px": "this.thyLayoutSidebarWidth" }, classAttribute: "thy-layout-sidebar" }, ngImport: i0 }); }
83
80
  }
84
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThySidebarDirective, decorators: [{
85
82
  type: Directive,
@@ -112,16 +109,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
112
109
  args: ['thyWidth']
113
110
  }], thyIsolated: [{
114
111
  type: Input,
115
- args: ['thyIsolated']
112
+ args: [{ transform: booleanAttribute }]
116
113
  }], thyDivided: [{
117
114
  type: Input,
118
- args: ['thyDivided']
115
+ args: [{ transform: booleanAttribute }]
119
116
  }], thyHasBorderRight: [{
120
117
  type: Input,
121
- args: ['thyHasBorderRight']
118
+ args: [{ transform: booleanAttribute }]
122
119
  }], thyHasBorderLeft: [{
123
120
  type: Input,
124
- args: ['thyHasBorderLeft']
121
+ args: [{ transform: booleanAttribute }]
125
122
  }] } });
126
123
  /**
127
124
  * 侧边栏布局组件
@@ -269,7 +266,7 @@ export class ThySidebar {
269
266
  this.hotkeySubscription?.unsubscribe();
270
267
  }
271
268
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThySidebar, deps: [{ token: i0.ElementRef }, { token: i2.ThyHotkeyDispatcher }], target: i0.ɵɵFactoryTarget.Component }); }
272
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: ThySidebar, isStandalone: true, selector: "thy-sidebar", inputs: { thyDraggable: "thyDraggable", thyDragMaxWidth: "thyDragMaxWidth", thyDragMinWidth: "thyDragMinWidth", thyTrigger: "thyTrigger", thyCollapsible: "thyCollapsible", thyCollapsed: "thyCollapsed", thyCollapsedWidth: "thyCollapsedWidth", thyDefaultWidth: "thyDefaultWidth" }, outputs: { thyCollapsedChange: "thyCollapsedChange", thyDragWidthChange: "thyDragWidthChange" }, host: { listeners: { "mouseenter": "mouseenter($event)", "mouseleave": "mouseleave($event)" }, properties: { "style.width.px": "this.sidebarWidth", "class.sidebar-collapse-show": "this.collapseVisibility", "class.remove-transition": "this.removeTransition" } }, hostDirectives: [{ directive: ThySidebarDirective, inputs: ["thyTheme", "thyTheme", "thyDirection", "thyDirection", "thyWidth", "thyWidth", "thyIsolated", "thyIsolated", "thyDivided", "thyDivided", "thyHasBorderLeft", "thyHasBorderLeft", "thyHasBorderRight", "thyHasBorderRight"] }], ngImport: i0, template: `
269
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThySidebar, isStandalone: true, selector: "thy-sidebar", inputs: { thyDraggable: ["thyDraggable", "thyDraggable", booleanAttribute], thyDragMaxWidth: ["thyDragMaxWidth", "thyDragMaxWidth", numberAttribute], thyDragMinWidth: ["thyDragMinWidth", "thyDragMinWidth", numberAttribute], thyTrigger: "thyTrigger", thyCollapsible: ["thyCollapsible", "thyCollapsible", booleanAttribute], thyCollapsed: ["thyCollapsed", "thyCollapsed", booleanAttribute], thyCollapsedWidth: ["thyCollapsedWidth", "thyCollapsedWidth", numberAttribute], thyDefaultWidth: "thyDefaultWidth" }, outputs: { thyCollapsedChange: "thyCollapsedChange", thyDragWidthChange: "thyDragWidthChange" }, host: { listeners: { "mouseenter": "mouseenter($event)", "mouseleave": "mouseleave($event)" }, properties: { "style.width.px": "this.sidebarWidth", "class.sidebar-collapse-show": "this.collapseVisibility", "class.remove-transition": "this.removeTransition" } }, hostDirectives: [{ directive: ThySidebarDirective, inputs: ["thyTheme", "thyTheme", "thyDirection", "thyDirection", "thyWidth", "thyWidth", "thyIsolated", "thyIsolated", "thyDivided", "thyDivided", "thyHasBorderLeft", "thyHasBorderLeft", "thyHasBorderRight", "thyHasBorderRight"] }], ngImport: i0, template: `
273
270
  <ng-content></ng-content>
274
271
  <div
275
272
  thyResizable
@@ -306,32 +303,6 @@ export class ThySidebar {
306
303
  </div>
307
304
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyResizeHandle, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection", "thyLine"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }, { kind: "directive", type: ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeStart", "thyResizeEnd"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
308
305
  }
309
- __decorate([
310
- InputBoolean(),
311
- __metadata("design:type", Boolean)
312
- ], ThySidebar.prototype, "thyDraggable", void 0);
313
- __decorate([
314
- InputNumber(),
315
- __metadata("design:type", Number)
316
- ], ThySidebar.prototype, "thyDragMaxWidth", void 0);
317
- __decorate([
318
- InputNumber(),
319
- __metadata("design:type", Number)
320
- ], ThySidebar.prototype, "thyDragMinWidth", void 0);
321
- __decorate([
322
- InputBoolean(),
323
- __metadata("design:type", Boolean),
324
- __metadata("design:paramtypes", [Boolean])
325
- ], ThySidebar.prototype, "thyCollapsible", null);
326
- __decorate([
327
- InputBoolean(),
328
- __metadata("design:type", Boolean),
329
- __metadata("design:paramtypes", [Boolean])
330
- ], ThySidebar.prototype, "thyCollapsed", null);
331
- __decorate([
332
- InputNumber(),
333
- __metadata("design:type", Object)
334
- ], ThySidebar.prototype, "thyCollapsedWidth", void 0);
335
306
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThySidebar, decorators: [{
336
307
  type: Component,
337
308
  args: [{
@@ -392,11 +363,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
392
363
  type: HostListener,
393
364
  args: ['mouseleave', ['$event']]
394
365
  }], thyDraggable: [{
395
- type: Input
366
+ type: Input,
367
+ args: [{ transform: booleanAttribute }]
396
368
  }], thyDragMaxWidth: [{
397
- type: Input
369
+ type: Input,
370
+ args: [{ transform: numberAttribute }]
398
371
  }], thyDragMinWidth: [{
399
- type: Input
372
+ type: Input,
373
+ args: [{ transform: numberAttribute }]
400
374
  }], thyTrigger: [{
401
375
  type: Input
402
376
  }], thyCollapsedChange: [{
@@ -404,11 +378,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
404
378
  }], thyDragWidthChange: [{
405
379
  type: Output
406
380
  }], thyCollapsible: [{
407
- type: Input
381
+ type: Input,
382
+ args: [{ transform: booleanAttribute }]
408
383
  }], thyCollapsed: [{
409
- type: Input
384
+ type: Input,
385
+ args: [{ transform: booleanAttribute }]
410
386
  }], thyCollapsedWidth: [{
411
- type: Input
387
+ type: Input,
388
+ args: [{ transform: numberAttribute }]
412
389
  }], thyDefaultWidth: [{
413
390
  type: Input
414
391
  }], collapseVisibility: [{
@@ -418,4 +395,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
418
395
  type: HostBinding,
419
396
  args: ['class.remove-transition']
420
397
  }] } });
421
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGF5b3V0L3NpZGViYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0IsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFeEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0FBTW5DOzs7O0dBSUc7QUFjSCxNQUFNLE9BQU8sbUJBQW1CO0lBbUI1Qjs7O09BR0c7SUFDSCxJQUNJ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QkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdGLGtCQUFrQjtzQkFEckIsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBTXRDLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlIb3RrZXlEaXNwYXRjaGVyIH0gZnJvbSAnQHRldGh5cy9jZGsvaG90a2V5JztcbmltcG9ydCB7IGlzTWFjUGxhdGZvcm0gfSBmcm9tICdAdGV0aHlzL2Nkay9pcyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5UmVzaXphYmxlRGlyZWN0aXZlLCBUaHlSZXNpemVFdmVudCwgVGh5UmVzaXplSGFuZGxlIH0gZnJvbSAnbmd4LXRldGh5cy9yZXNpemFibGUnO1xuaW1wb3J0IHsgVGh5VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvdG9vbHRpcCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaHlMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuL2xheW91dC5jb21wb25lbnQnO1xuXG5jb25zdCBMR19XSURUSCA9IDMwMDtcbmNvbnN0IFNJREVCQVJfREVGQVVMVF9XSURUSCA9IDI0MDtcbmNvbnN0IFNJREVCQVJfQ09MTEFQU0VEX1dJRFRIID0gMjA7XG5cbmV4cG9ydCB0eXBlIFRoeVNpZGViYXJUaGVtZSA9ICd3aGl0ZScgfCAnbGlnaHQnIHwgJ2RhcmsnO1xuXG5leHBvcnQgdHlwZSBUaHlTaWRlYmFyRGlyZWN0aW9uID0gJ2xlZnQnIHwgJ3JpZ2h0JztcblxuLyoqXG4gKiDkvqfovrnmoI/luIPlsYDmjIfku6RcbiAqIEBuYW1lIHRoeVNpZGViYXJcbiAqIEBvcmRlciAyMFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0aHlTaWRlYmFyXScsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1sYXlvdXQtc2lkZWJhcicsXG4gICAgICAgICdbY2xhc3MudGh5LWxheW91dC1zaWRlYmFyLXJpZ2h0XSc6ICd0aHlEaXJlY3Rpb24gPT09IFwicmlnaHRcIicsXG4gICAgICAgICdbY2xhc3MudGh5LWxheW91dC1zaWRlYmFyLS1jbGVhci1ib3JkZXItcmlnaHRdJzogJ3RoeURpcmVjdGlvbiA9PT0gXCJsZWZ0XCIgJiYgIWlzRGl2aWRlZCcsXG4gICAgICAgICdbY2xhc3MudGh5LWxheW91dC1zaWRlYmFyLS1jbGVhci1ib3JkZXItbGVmdF0nOiAndGh5RGlyZWN0aW9uID09PSBcInJpZ2h0XCIgJiYgIWlzRGl2aWRlZCcsXG4gICAgICAgICdbY2xhc3Muc2lkZWJhci10aGVtZS1saWdodF0nOiAndGh5VGhlbWUgPT09IFwibGlnaHRcIicsXG4gICAgICAgICdbY2xhc3Muc2lkZWJhci10aGVtZS1kYXJrXSc6ICd0aHlUaGVtZSA9PT0gXCJkYXJrXCInLFxuICAgICAgICAnW2NsYXNzLnRoeS1sYXlvdXQtc2lkZWJhci1pc29sYXRlZF0nOiAnc2lkZWJhcklzb2xhdGVkJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaHlTaWRlYmFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBzaWRlYmFySXNvbGF0ZWQgPSBmYWxzZTtcblxuICAgIGlzRGl2aWRlZCA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLnB4JykgdGh5TGF5b3V0U2lkZWJhcldpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBzaWRlYmFyIOS9jee9ru+8jOm7mOiupOWcqOW3puS+p1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeURpcmVjdGlvbjogVGh5U2lkZWJhckRpcmVjdGlvbiA9ICdsZWZ0JztcblxuICAgIC8qKlxuICAgICAqIOS4u+mimFxuICAgICAqIEB0eXBlIHdoaXRlIHwgbGlnaHQgfCBkYXJrXG4gICAgICogQGRlZmF1bHQgd2hpdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlUaGVtZTogVGh5U2lkZWJhclRoZW1lO1xuXG4gICAgLyoqXG4gICAgICog5a695bqm77yM6buY6K6k5pivIDI0MHB477yM5Lyg5YWlIGBsZ2Ag5aSn5bCP5pe25a695bqm5pivMzAwcHhcbiAgICAgKiBAZGVmYXVsdCAyNDBweFxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5V2lkdGgnKVxuICAgIHNldCB0aHlXaWR0aCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2xnJykge1xuICAgICAgICAgICAgdmFsdWUgPSBMR19XSURUSDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeUxheW91dFNpZGViYXJXaWR0aCA9ICh2YWx1ZSBhcyBudW1iZXIpIHx8IFNJREVCQVJfREVGQVVMVF9XSURUSDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblkozlj7PkvqcgL+W3puS+p+malOemu++8jOW9k+S4uiB0cnVlIOaXtui3neWPs+S+pyAv5bem5L6n5Lya5pyJIG1hcmdpbu+8jOWQjOaXtui+ueahhuS8muWOu+aOiVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCd0aHlJc29sYXRlZCcpXG4gICAgc2V0IHRoeUlzb2xhdGVkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zaWRlYmFySXNvbGF0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNpZGViYXIg5piv5ZCm5pyJ5YiG5Ymy57q/44CC5b2TYHRoeURpcmVjdGlvbmDlgLzkuLpgbGVmdGDml7bvvIzmjqfliLblj7PkvqfmmK/lkKbmnInliIblibLnur/vvJvlvZNgdGh5RGlyZWN0aW9uYOWAvOS4umByaWdodGDml7bvvIzmjqfliLblt6bkvqfmmK/lkKbmnInliIblibLnur/jgIJcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgQElucHV0KCd0aHlEaXZpZGVkJylcbiAgICBzZXQgdGh5RGl2aWRlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaXNEaXZpZGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlj7PkvqfmmK/lkKbmnInovrnmoYbvvIzlt7Llup/lvIPvvIzor7fkvb/nlKggdGh5RGl2aWRlZFxuICAgICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgdGh5RGl2aWRlZFxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeUhhc0JvcmRlclJpZ2h0JylcbiAgICBzZXQgdGh5SGFzQm9yZGVyUmlnaHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRoeURpdmlkZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlt6bkvqfmmK/lkKbmnInovrnmoYbvvIzlt7Llup/lvIPvvIzor7fkvb/nlKggdGh5RGl2aWRlZFxuICAgICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgdGh5RGl2aWRlZFxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeUhhc0JvcmRlckxlZnQnKVxuICAgIHNldCB0aHlIYXNCb3JkZXJMZWZ0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy50aHlEaXZpZGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIHRoeUxheW91dERpcmVjdGl2ZTogVGh5TGF5b3V0RGlyZWN0aXZlKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUxheW91dERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy50aHlMYXlvdXREaXJlY3RpdmUuaGFzU2lkZWJhciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGh5RGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUxheW91dERpcmVjdGl2ZS5pc1NpZGViYXJSaWdodCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICog5L6n6L655qCP5biD5bGA57uE5Lu2XG4gKiBAbmFtZSB0aHktc2lkZWJhclxuICogQG9yZGVyIDIxXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXNpZGViYXInLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgdGh5UmVzaXphYmxlXG4gICAgICAgICAgICBjbGFzcz1cInNpZGViYXItZHJhZ1wiXG4gICAgICAgICAgICAqbmdJZj1cInRoeURyYWdnYWJsZVwiXG4gICAgICAgICAgICB0aHlCb3VuZHM9XCJ3aW5kb3dcIlxuICAgICAgICAgICAgW3RoeU1heFdpZHRoXT1cInRoeURyYWdNYXhXaWR0aFwiXG4gICAgICAgICAgICBbdGh5TWluV2lkdGhdPVwiZHJhZ01pbldpZHRoXCJcbiAgICAgICAgICAgICh0aHlSZXNpemUpPVwicmVzaXplSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICh0aHlSZXNpemVTdGFydCk9XCJyZXNpemVTdGFydCgpXCJcbiAgICAgICAgICAgICh0aHlSZXNpemVFbmQpPVwicmVzaXplRW5kKClcIlxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiIWlzUmVzaXphYmxlID8gJ2NvbnRlbnRzJyA6IG51bGxcIj5cbiAgICAgICAgICAgIDx0aHktcmVzaXplLWhhbmRsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXRoeUNvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgW3RoeURpcmVjdGlvbl09XCJzaWRlYmFyRGlyZWN0aXZlLnRoeURpcmVjdGlvbiA9PT0gJ3JpZ2h0JyA/ICdsZWZ0JyA6ICdyaWdodCdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1yZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICB0aHlMaW5lPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9nZ2xlUmVzaXphYmxlKCRldmVudCwgJ2VudGVyJylcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvZ2dsZVJlc2l6YWJsZSgkZXZlbnQsICdsZWF2ZScpXCJcbiAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwicmVzdG9yZVRvRGVmYXVsdFdpZHRoKClcIj5cbiAgICAgICAgICAgIDwvdGh5LXJlc2l6ZS1oYW5kbGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGh5Q29sbGFwc2libGVcIiBjbGFzcz1cInNpZGViYXItY29sbGFwc2UtbGluZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInRoeUNvbGxhcHNpYmxlICYmIHRoeVRyaWdnZXIgIT09IG51bGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJzaWRlYmFyLWNvbGxhcHNlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NvbGxhcHNlLXZpc2libGUnOiBjb2xsYXBzZVZpc2libGUsICdjb2xsYXBzZS1oaWRkZW4nOiBjb2xsYXBzZUhpZGRlbiB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFt0aHlUb29sdGlwXT1cIiF0aHlUcmlnZ2VyICYmIGNvbGxhcHNlVGlwXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGh5VHJpZ2dlciB8fCBkZWZhdWx0VHJpZ2dlclwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDx0aHktaWNvbiBjbGFzcz1cInNpZGViYXItY29sbGFwc2UtaWNvblwiIFt0aHlJY29uTmFtZV09XCJ0aGlzLnRoeUNvbGxhcHNlZCA/ICdpbmRlbnQnIDogJ291dGRlbnQnXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBUaHlTaWRlYmFyRGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ3RoeVRoZW1lJywgJ3RoeURpcmVjdGlvbicsICd0aHlXaWR0aCcsICd0aHlJc29sYXRlZCcsICd0aHlEaXZpZGVkJywgJ3RoeUhhc0JvcmRlckxlZnQnLCAndGh5SGFzQm9yZGVyUmlnaHQnXVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBUaHlSZXNpemVIYW5kbGUsIFRoeVJlc2l6YWJsZURpcmVjdGl2ZSwgVGh5SWNvbiwgVGh5VG9vbHRpcERpcmVjdGl2ZSwgTmdDbGFzcywgTmdTdHlsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGh5U2lkZWJhciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBzaWRlYmFyRGlyZWN0aXZlID0gaW5qZWN0KFRoeVNpZGViYXJEaXJlY3RpdmUpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aC5weCcpIGdldCBzaWRlYmFyV2lkdGgoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbGxhcHNpYmxlICYmIHRoaXMudGh5Q29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlDb2xsYXBzZWRXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNpZGViYXJEaXJlY3RpdmUudGh5TGF5b3V0U2lkZWJhcldpZHRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXG4gICAgbW91c2VlbnRlcigkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVIb3ZlcigkZXZlbnQsICdlbnRlcicpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxuICAgIG1vdXNlbGVhdmUoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGFuZGxlSG92ZXIoJGV2ZW50LCAnbGVhdmUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlrr3luqbmmK/lkKblj6/ku6Xmi5bmi71cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlEcmFnZ2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaLluaLveeahOacgOWkp+WuveW6plxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHRoeURyYWdNYXhXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICog5ouW5ou955qE5pyA5bCP5a695bqmXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgdGh5RHJhZ01pbldpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDlsZXnpLrmlLbotbfnmoTop6blj5Hlmajoh6rlrprkuYnmqKHmnb/vvIzpu5jorqTmmL7npLrlsZXlvIDmlLbotbfnmoTlnIblvaLlm77moIfvvIzorr7nva7kuLogbnVsbCDooajnpLrkuI3lsZXnpLrop6blj5HlhYPntKDvvIzmiYvliqjmjqfliLblsZXlvIDmlLbotbfnirbmgIFcbiAgICAgKiBAdHlwZSBudWxsIHwgdW5kZWZpbmVkIHwgVGVtcGxhdGVSZWY8YW55PlxuICAgICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVRyaWdnZXI6IG51bGwgfCB1bmRlZmluZWQgfCBUZW1wbGF0ZVJlZjxhbnk+ID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICog5pS26LW354q25oCB5pS55Y+Y5ZCO55qE5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdGh5Q29sbGFwc2VkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICog5ouW5ou95a695bqm55qE5L+u5pS55LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdGh5RHJhZ1dpZHRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlvIDlkK/mlLbotbcv5bGV5byA5Yqf6IO9XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2V0IHRoeUNvbGxhcHNpYmxlKGNvbGxhcHNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2libGUgPSBjb2xsYXBzaWJsZTtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlSG90a2V5RXZlbnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaG90a2V5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHRoeUNvbGxhcHNpYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsYXBzaWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmK/mlLbotbdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzZXQgdGh5Q29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgdGh5Q29sbGFwc2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0NvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmlLbotbflkI7nmoTlrr3luqZcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSB0aHlDb2xsYXBzZWRXaWR0aCA9IFNJREVCQVJfQ09MTEFQU0VEX1dJRFRIO1xuXG4gICAgLyoqXG4gICAgICog6buY6K6k5a695bqm77yM5Y+M5Ye75ZCO5Y+v5oGi5aSN5Yiw5q2k5a695bqm77yM6buY6K6k5pivIDI0MHB477yM5Lyg5YWlIGxnIOWkp+Wwj+aXtuWuveW6puaYrzMwMHB4XG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RGVmYXVsdFdpZHRoOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNpZGViYXItY29sbGFwc2Utc2hvdycpXG4gICAgZ2V0IGNvbGxhcHNlVmlzaWJpbGl0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q29sbGFwc2VkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucmVtb3ZlLXRyYW5zaXRpb24nKVxuICAgIGdldCByZW1vdmVUcmFuc2l0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1JlbW92ZVRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgY29sbGFwc2VUaXA6IHN0cmluZztcblxuICAgIGNvbGxhcHNpYmxlOiBib29sZWFuO1xuXG4gICAgaXNDb2xsYXBzZWQgPSBmYWxzZTtcblxuICAgIG9yaWdpbldpZHRoOiBudW1iZXIgPSBTSURFQkFSX0RFRkFVTFRfV0lEVEg7XG5cbiAgICBjb2xsYXBzZVZpc2libGU6IGJvb2xlYW47XG5cbiAgICBjb2xsYXBzZUhpZGRlbjogYm9vbGVhbjtcblxuICAgIGlzUmVtb3ZlVHJhbnNpdGlvbjogYm9vbGVhbjtcblxuICAgIGlzUmVzaXphYmxlOiBib29sZWFuO1xuXG4gICAgZ2V0IGRyYWdNaW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5RHJhZ01pbldpZHRoIHx8IHRoaXMudGh5Q29sbGFwc2VkV2lkdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBob3RrZXlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGhvdGtleURpc3BhdGNoZXI6IFRoeUhvdGtleURpc3BhdGNoZXIpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDb2xsYXBzZVRpcCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlSG90a2V5RXZlbnQoKSB7XG4gICAgICAgIHRoaXMuaG90a2V5U3Vic2NyaXB0aW9uID0gdGhpcy5ob3RrZXlEaXNwYXRjaGVyLmtleWRvd24oWydDb250cm9sKy8nLCAnTWV0YSsvJ10pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUNvbGxhcHNlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ29sbGFwc2VUaXAoKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VUaXAgPSB0aGlzLnRoeUNvbGxhcHNlZCA/ICflsZXlvIAnIDogJ+aUtui1tyc7XG4gICAgICAgIHRoaXMuY29sbGFwc2VUaXAgPSB0aGlzLmNvbGxhcHNlVGlwICsgKGlzTWFjUGxhdGZvcm0oKSA/IGDvvIjijJggKyAvKWAgOiBg77yIQ3RybCArIC8pYCk7XG4gICAgfVxuXG4gICAgcmVzaXplSGFuZGxlcih7IHdpZHRoIH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIGlmICh3aWR0aCA9PT0gdGhpcy5zaWRlYmFyRGlyZWN0aXZlLnRoeUxheW91dFNpZGViYXJXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbGxhcHNpYmxlICYmIHdpZHRoIDwgdGhpcy50aHlDb2xsYXBzZWRXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbGxhcHNpYmxlICYmIHdpZHRoID09PSB0aGlzLnRoeUNvbGxhcHNlZFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUNvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQ29sbGFwc2VUaXAoKSwgMjAwKTtcbiAgICAgICAgICAgIHRoaXMudGh5Q29sbGFwc2VkQ2hhbmdlLmVtaXQodGhpcy5pc0NvbGxhcHNlZCk7XG4gICAgICAgICAgICB0aGlzLnNpZGViYXJEaXJlY3RpdmUudGh5TGF5b3V0U2lkZWJhcldpZHRoID0gdGhpcy5vcmlnaW5XaWR0aDtcbiAgICAgICAgICAgIHRoaXMuY29sbGFwc2VWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaWRlYmFyRGlyZWN0aXZlLnRoeUxheW91dFNpZGViYXJXaWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLnRoeURyYWdXaWR0aENoYW5nZS5lbWl0KHdpZHRoKTtcbiAgICB9XG5cbiAgICByZXNpemVTdGFydCgpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5XaWR0aCA9IHRoaXMuc2lkZWJhckRpcmVjdGl2ZS50aHlMYXlvdXRTaWRlYmFyV2lkdGg7XG4gICAgICAgIHRoaXMuY29sbGFwc2VIaWRkZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzUmVtb3ZlVHJhbnNpdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcmVzaXplRW5kKCkge1xuICAgICAgICB0aGlzLmNvbGxhcHNlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNSZW1vdmVUcmFuc2l0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVzaXplSGFuZGxlSG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQsIHR5cGU6ICdlbnRlcicgfCAnbGVhdmUnKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VWaXNpYmxlID0gdHlwZSA9PT0gJ2VudGVyJyAmJiAhdGhpcy50aHlDb2xsYXBzZWQgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgdG9nZ2xlQ29sbGFwc2UoZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGh5Q29sbGFwc2VkID0gIXRoaXMudGh5Q29sbGFwc2VkO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQ29sbGFwc2VUaXAoKSwgMjAwKTtcbiAgICAgICAgdGhpcy50aHlDb2xsYXBzZWRDaGFuZ2UuZW1pdCh0aGlzLmlzQ29sbGFwc2VkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlUmVzaXphYmxlKGV2ZW50OiBNb3VzZUV2ZW50LCB0eXBlOiAnZW50ZXInIHwgJ2xlYXZlJykge1xuICAgICAgICB0aGlzLmlzUmVzaXphYmxlID0gdHlwZSA9PT0gJ2VudGVyJyA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXN0b3JlVG9EZWZhdWx0V2lkdGgoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeURlZmF1bHRXaWR0aCA9PT0gJ2xnJykge1xuICAgICAgICAgICAgdGhpcy50aHlEZWZhdWx0V2lkdGggPSBMR19XSURUSDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNpZGViYXJEaXJlY3RpdmUudGh5TGF5b3V0U2lkZWJhcldpZHRoID0gKHRoaXMudGh5RGVmYXVsdFdpZHRoIGFzIG51bWJlcikgfHwgU0lERUJBUl9ERUZBVUxUX1dJRFRIO1xuICAgICAgICB0aGlzLnRoeURyYWdXaWR0aENoYW5nZS5lbWl0KHRoaXMuc2lkZWJhckRpcmVjdGl2ZS50aHlMYXlvdXRTaWRlYmFyV2lkdGgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdGtleVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iXX0=
398
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGF5b3V0L3NpZGViYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxFQUNKLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sZUFBZSxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0IsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFeEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0FBTW5DOzs7O0dBSUc7QUFjSCxNQUFNLE9BQU8sbUJBQW1CO0lBbUI1Qjs7O09BR0c7SUFDSCxJQUNJLFFBQVEsQ0FBQyxLQUFzQjtRQUMvQixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNqQixLQUFLLEdBQUcsUUFBUSxD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Z0IsRUFBRTtnQkFpQk0sWUFBWTtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFXQyxpQkFBaUI7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUs1QixlQUFlO3NCQUF2QixLQUFLO2dCQUdGLGtCQUFrQjtzQkFEckIsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBTXRDLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGluamVjdCxcbiAgICBudW1iZXJBdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlIb3RrZXlEaXNwYXRjaGVyIH0gZnJvbSAnQHRldGh5cy9jZGsvaG90a2V5JztcbmltcG9ydCB7IGlzTWFjUGxhdGZvcm0gfSBmcm9tICdAdGV0aHlzL2Nkay9pcyc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeVJlc2l6YWJsZURpcmVjdGl2ZSwgVGh5UmVzaXplRXZlbnQsIFRoeVJlc2l6ZUhhbmRsZSB9IGZyb20gJ25neC10ZXRoeXMvcmVzaXphYmxlJztcbmltcG9ydCB7IFRoeVRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaHlMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuL2xheW91dC5jb21wb25lbnQnO1xuXG5jb25zdCBMR19XSURUSCA9IDMwMDtcbmNvbnN0IFNJREVCQVJfREVGQVVMVF9XSURUSCA9IDI0MDtcbmNvbnN0IFNJREVCQVJfQ09MTEFQU0VEX1dJRFRIID0gMjA7XG5cbmV4cG9ydCB0eXBlIFRoeVNpZGViYXJUaGVtZSA9ICd3aGl0ZScgfCAnbGlnaHQnIHwgJ2RhcmsnO1xuXG5leHBvcnQgdHlwZSBUaHlTaWRlYmFyRGlyZWN0aW9uID0gJ2xlZnQnIHwgJ3JpZ2h0JztcblxuLyoqXG4gKiDkvqfovrnmoI/luIPlsYDmjIfku6RcbiAqIEBuYW1lIHRoeVNpZGViYXJcbiAqIEBvcmRlciAyMFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0aHlTaWRlYmFyXScsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1sYXlvdXQtc2lkZWJhcicsXG4gICAgICAgICdbY2xhc3MudGh5LWxheW91dC1zaWRlYmFyLXJpZ2h0XSc6ICd0aHlEaXJlY3Rpb24gPT09IFwicmlnaHRcIicsXG4gICAgICAgICdbY2xhc3MudGh5LWxheW91dC1zaWRlYmFyLS1jbGVhci1ib3JkZXItcmlnaHRdJzogJ3RoeURpcmVjdGlvbiA9PT0gXCJsZWZ0XCIgJiYgIWlzRGl2aWRlZCcsXG4gICAgICAgICdbY2xhc3MudGh5LWxheW91dC1zaWRlYmFyLS1jbGVhci1ib3JkZXItbGVmdF0nOiAndGh5RGlyZWN0aW9uID09PSBcInJpZ2h0XCIgJiYgIWlzRGl2aWRlZCcsXG4gICAgICAgICdbY2xhc3Muc2lkZWJhci10aGVtZS1saWdodF0nOiAndGh5VGhlbWUgPT09IFwibGlnaHRcIicsXG4gICAgICAgICdbY2xhc3Muc2lkZWJhci10aGVtZS1kYXJrXSc6ICd0aHlUaGVtZSA9PT0gXCJkYXJrXCInLFxuICAgICAgICAnW2NsYXNzLnRoeS1sYXlvdXQtc2lkZWJhci1pc29sYXRlZF0nOiAnc2lkZWJhcklzb2xhdGVkJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaHlTaWRlYmFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBzaWRlYmFySXNvbGF0ZWQgPSBmYWxzZTtcblxuICAgIGlzRGl2aWRlZCA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLnB4JykgdGh5TGF5b3V0U2lkZWJhcldpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBzaWRlYmFyIOS9jee9ru+8jOm7mOiupOWcqOW3puS+p1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeURpcmVjdGlvbjogVGh5U2lkZWJhckRpcmVjdGlvbiA9ICdsZWZ0JztcblxuICAgIC8qKlxuICAgICAqIOS4u+mimFxuICAgICAqIEB0eXBlIHdoaXRlIHwgbGlnaHQgfCBkYXJrXG4gICAgICogQGRlZmF1bHQgd2hpdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlUaGVtZTogVGh5U2lkZWJhclRoZW1lO1xuXG4gICAgLyoqXG4gICAgICog5a695bqm77yM6buY6K6k5pivIDI0MHB477yM5Lyg5YWlIGBsZ2Ag5aSn5bCP5pe25a695bqm5pivMzAwcHhcbiAgICAgKiBAZGVmYXVsdCAyNDBweFxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5V2lkdGgnKVxuICAgIHNldCB0aHlXaWR0aCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2xnJykge1xuICAgICAgICAgICAgdmFsdWUgPSBMR19XSURUSDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeUxheW91dFNpZGViYXJXaWR0aCA9ICh2YWx1ZSBhcyBudW1iZXIpIHx8IFNJREVCQVJfREVGQVVMVF9XSURUSDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblkozlj7PkvqcgL+W3puS+p+malOemu++8jOW9k+S4uiB0cnVlIOaXtui3neWPs+S+pyAv5bem5L6n5Lya5pyJIG1hcmdpbu+8jOWQjOaXtui+ueahhuS8muWOu+aOiVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeUlzb2xhdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2lkZWJhcklzb2xhdGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2lkZWJhciDmmK/lkKbmnInliIblibLnur/jgILlvZNgdGh5RGlyZWN0aW9uYOWAvOS4umBsZWZ0YOaXtu+8jOaOp+WItuWPs+S+p+aYr+WQpuacieWIhuWJsue6v++8m+W9k2B0aHlEaXJlY3Rpb25g5YC85Li6YHJpZ2h0YOaXtu+8jOaOp+WItuW3puS+p+aYr+WQpuacieWIhuWJsue6v+OAglxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgdGh5RGl2aWRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzRGl2aWRlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWPs+S+p+aYr+WQpuaciei+ueahhu+8jOW3suW6n+W8g++8jOivt+S9v+eUqCB0aHlEaXZpZGVkXG4gICAgICogQGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSB0aHlEaXZpZGVkXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlIYXNCb3JkZXJSaWdodCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRoeURpdmlkZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlt6bkvqfmmK/lkKbmnInovrnmoYbvvIzlt7Llup/lvIPvvIzor7fkvb/nlKggdGh5RGl2aWRlZFxuICAgICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgdGh5RGl2aWRlZFxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgdGh5SGFzQm9yZGVyTGVmdCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRoeURpdmlkZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgdGh5TGF5b3V0RGlyZWN0aXZlOiBUaHlMYXlvdXREaXJlY3RpdmUpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5TGF5b3V0RGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUxheW91dERpcmVjdGl2ZS5oYXNTaWRlYmFyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlEaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHRoaXMudGh5TGF5b3V0RGlyZWN0aXZlLmlzU2lkZWJhclJpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiDkvqfovrnmoI/luIPlsYDnu4Tku7ZcbiAqIEBuYW1lIHRoeS1zaWRlYmFyXG4gKiBAb3JkZXIgMjFcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktc2lkZWJhcicsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB0aHlSZXNpemFibGVcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1kcmFnXCJcbiAgICAgICAgICAgICpuZ0lmPVwidGh5RHJhZ2dhYmxlXCJcbiAgICAgICAgICAgIHRoeUJvdW5kcz1cIndpbmRvd1wiXG4gICAgICAgICAgICBbdGh5TWF4V2lkdGhdPVwidGh5RHJhZ01heFdpZHRoXCJcbiAgICAgICAgICAgIFt0aHlNaW5XaWR0aF09XCJkcmFnTWluV2lkdGhcIlxuICAgICAgICAgICAgKHRoeVJlc2l6ZSk9XCJyZXNpemVIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgKHRoeVJlc2l6ZVN0YXJ0KT1cInJlc2l6ZVN0YXJ0KClcIlxuICAgICAgICAgICAgKHRoeVJlc2l6ZUVuZCk9XCJyZXNpemVFbmQoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCIhaXNSZXNpemFibGUgPyAnY29udGVudHMnIDogbnVsbFwiPlxuICAgICAgICAgICAgPHRoeS1yZXNpemUtaGFuZGxlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhdGh5Q29sbGFwc2VkXCJcbiAgICAgICAgICAgICAgICBbdGh5RGlyZWN0aW9uXT1cInNpZGViYXJEaXJlY3RpdmUudGh5RGlyZWN0aW9uID09PSAncmlnaHQnID8gJ2xlZnQnIDogJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaWRlYmFyLXJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgICAgIHRoeUxpbmU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b2dnbGVSZXNpemFibGUoJGV2ZW50LCAnZW50ZXInKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9nZ2xlUmVzaXphYmxlKCRldmVudCwgJ2xlYXZlJylcIlxuICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJyZXN0b3JlVG9EZWZhdWx0V2lkdGgoKVwiPlxuICAgICAgICAgICAgPC90aHktcmVzaXplLWhhbmRsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0aHlDb2xsYXBzaWJsZVwiIGNsYXNzPVwic2lkZWJhci1jb2xsYXBzZS1saW5lXCI+PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwidGh5Q29sbGFwc2libGUgJiYgdGh5VHJpZ2dlciAhPT0gbnVsbFwiXG4gICAgICAgICAgICBjbGFzcz1cInNpZGViYXItY29sbGFwc2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY29sbGFwc2UtdmlzaWJsZSc6IGNvbGxhcHNlVmlzaWJsZSwgJ2NvbGxhcHNlLWhpZGRlbic6IGNvbGxhcHNlSGlkZGVuIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKCRldmVudClcIlxuICAgICAgICAgICAgW3RoeVRvb2x0aXBdPVwiIXRoeVRyaWdnZXIgJiYgY29sbGFwc2VUaXBcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aHlUcmlnZ2VyIHx8IGRlZmF1bHRUcmlnZ2VyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwic2lkZWJhci1jb2xsYXBzZS1pY29uXCIgW3RoeUljb25OYW1lXT1cInRoaXMudGh5Q29sbGFwc2VkID8gJ2luZGVudCcgOiAnb3V0ZGVudCdcIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IFRoeVNpZGViYXJEaXJlY3RpdmUsXG4gICAgICAgICAgICBpbnB1dHM6IFsndGh5VGhlbWUnLCAndGh5RGlyZWN0aW9uJywgJ3RoeVdpZHRoJywgJ3RoeUlzb2xhdGVkJywgJ3RoeURpdmlkZWQnLCAndGh5SGFzQm9yZGVyTGVmdCcsICd0aHlIYXNCb3JkZXJSaWdodCddXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIE5nSWYsIFRoeVJlc2l6ZUhhbmRsZSwgVGh5UmVzaXphYmxlRGlyZWN0aXZlLCBUaHlJY29uLCBUaHlUb29sdGlwRGlyZWN0aXZlLCBOZ0NsYXNzLCBOZ1N0eWxlXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlTaWRlYmFyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHNpZGViYXJEaXJlY3RpdmUgPSBpbmplY3QoVGh5U2lkZWJhckRpcmVjdGl2ZSk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLnB4JykgZ2V0IHNpZGViYXJXaWR0aCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5Q29sbGFwc2libGUgJiYgdGhpcy50aHlDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoeUNvbGxhcHNlZFdpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2lkZWJhckRpcmVjdGl2ZS50aHlMYXlvdXRTaWRlYmFyV2lkdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBtb3VzZWVudGVyKCRldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZUhvdmVyKCRldmVudCwgJ2VudGVyJyk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgbW91c2VsZWF2ZSgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVIb3ZlcigkZXZlbnQsICdsZWF2ZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWuveW6puaYr+WQpuWPr+S7peaLluaLvVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHRoeURyYWdnYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5ouW5ou955qE5pyA5aSn5a695bqmXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGh5RHJhZ01heFdpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDmi5bmi73nmoTmnIDlsI/lrr3luqZcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0aHlEcmFnTWluV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIOWxleekuuaUtui1t+eahOinpuWPkeWZqOiHquWumuS5ieaooeadv++8jOm7mOiupOaYvuekuuWxleW8gOaUtui1t+eahOWchuW9ouWbvuagh++8jOiuvue9ruS4uiBudWxsIOihqOekuuS4jeWxleekuuinpuWPkeWFg+e0oO+8jOaJi+WKqOaOp+WItuWxleW8gOaUtui1t+eKtuaAgVxuICAgICAqIEB0eXBlIG51bGwgfCB1bmRlZmluZWQgfCBUZW1wbGF0ZVJlZjxhbnk+XG4gICAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VHJpZ2dlcjogbnVsbCB8IHVuZGVmaW5lZCB8IFRlbXBsYXRlUmVmPGFueT4gPSB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiDmlLbotbfnirbmgIHmlLnlj5jlkI7nmoTkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICB0aHlDb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiDmi5bmi73lrr3luqbnmoTkv67mlLnkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICB0aHlEcmFnV2lkdGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIOW8gOWQr+aUtui1ty/lsZXlvIDlip/og71cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgdGh5Q29sbGFwc2libGUoY29sbGFwc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzaWJsZSA9IGNvbGxhcHNpYmxlO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVIb3RrZXlFdmVudCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ob3RrZXlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdGh5Q29sbGFwc2libGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxhcHNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYr+aUtui1t1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCB0aHlDb2xsYXBzZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCB0aHlDb2xsYXBzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaUtui1t+WQjueahOWuveW6plxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRoeUNvbGxhcHNlZFdpZHRoID0gU0lERUJBUl9DT0xMQVBTRURfV0lEVEg7XG5cbiAgICAvKipcbiAgICAgKiDpu5jorqTlrr3luqbvvIzlj4zlh7vlkI7lj6/mgaLlpI3liLDmraTlrr3luqbvvIzpu5jorqTmmK8gMjQwcHjvvIzkvKDlhaUgbGcg5aSn5bCP5pe25a695bqm5pivMzAwcHhcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlEZWZhdWx0V2lkdGg6IHN0cmluZyB8IG51bWJlcjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc2lkZWJhci1jb2xsYXBzZS1zaG93JylcbiAgICBnZXQgY29sbGFwc2VWaXNpYmlsaXR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZW1vdmUtdHJhbnNpdGlvbicpXG4gICAgZ2V0IHJlbW92ZVRyYW5zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUmVtb3ZlVHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICBjb2xsYXBzZVRpcDogc3RyaW5nO1xuXG4gICAgY29sbGFwc2libGU6IGJvb2xlYW47XG5cbiAgICBpc0NvbGxhcHNlZCA9IGZhbHNlO1xuXG4gICAgb3JpZ2luV2lkdGg6IG51bWJlciA9IFNJREVCQVJfREVGQVVMVF9XSURUSDtcblxuICAgIGNvbGxhcHNlVmlzaWJsZTogYm9vbGVhbjtcblxuICAgIGNvbGxhcHNlSGlkZGVuOiBib29sZWFuO1xuXG4gICAgaXNSZW1vdmVUcmFuc2l0aW9uOiBib29sZWFuO1xuXG4gICAgaXNSZXNpemFibGU6IGJvb2xlYW47XG5cbiAgICBnZXQgZHJhZ01pbldpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlEcmFnTWluV2lkdGggfHwgdGhpcy50aHlDb2xsYXBzZWRXaWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhvdGtleVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgaG90a2V5RGlzcGF0Y2hlcjogVGh5SG90a2V5RGlzcGF0Y2hlcikge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNlVGlwKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVIb3RrZXlFdmVudCgpIHtcbiAgICAgICAgdGhpcy5ob3RrZXlTdWJzY3JpcHRpb24gPSB0aGlzLmhvdGtleURpc3BhdGNoZXIua2V5ZG93bihbJ0NvbnRyb2wrLycsICdNZXRhKy8nXSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlQ29sbGFwc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xsYXBzZVRpcCgpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZVRpcCA9IHRoaXMudGh5Q29sbGFwc2VkID8gJ+WxleW8gCcgOiAn5pS26LW3JztcbiAgICAgICAgdGhpcy5jb2xsYXBzZVRpcCA9IHRoaXMuY29sbGFwc2VUaXAgKyAoaXNNYWNQbGF0Zm9ybSgpID8gYO+8iOKMmCArIC8pYCA6IGDvvIhDdHJsICsgLylgKTtcbiAgICB9XG5cbiAgICByZXNpemVIYW5kbGVyKHsgd2lkdGggfTogVGh5UmVzaXplRXZlbnQpIHtcbiAgICAgICAgaWYgKHdpZHRoID09PSB0aGlzLnNpZGViYXJEaXJlY3RpdmUudGh5TGF5b3V0U2lkZWJhcldpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGh5Q29sbGFwc2libGUgJiYgd2lkdGggPCB0aGlzLnRoeUNvbGxhcHNlZFdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGh5Q29sbGFwc2libGUgJiYgd2lkdGggPT09IHRoaXMudGh5Q29sbGFwc2VkV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVDb2xsYXBzZVRpcCgpLCAyMDApO1xuICAgICAgICAgICAgdGhpcy50aHlDb2xsYXBzZWRDaGFuZ2UuZW1pdCh0aGlzLmlzQ29sbGFwc2VkKTtcbiAgICAgICAgICAgIHRoaXMuc2lkZWJhckRpcmVjdGl2ZS50aHlMYXlvdXRTaWRlYmFyV2lkdGggPSB0aGlzLm9yaWdpbldpZHRoO1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNpZGViYXJEaXJlY3RpdmUudGh5TGF5b3V0U2lkZWJhcldpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMudGh5RHJhZ1dpZHRoQ2hhbmdlLmVtaXQod2lkdGgpO1xuICAgIH1cblxuICAgIHJlc2l6ZVN0YXJ0KCkge1xuICAgICAgICB0aGlzLm9yaWdpbldpZHRoID0gdGhpcy5zaWRlYmFyRGlyZWN0aXZlLnRoeUxheW91dFNpZGViYXJXaWR0aDtcbiAgICAgICAgdGhpcy5jb2xsYXBzZUhpZGRlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNSZW1vdmVUcmFuc2l0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXNpemVFbmQoKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlbW92ZVRyYW5zaXRpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXNpemVIYW5kbGVIb3ZlcihldmVudDogTW91c2VFdmVudCwgdHlwZTogJ2VudGVyJyB8ICdsZWF2ZScpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZVZpc2libGUgPSB0eXBlID09PSAnZW50ZXInICYmICF0aGlzLnRoeUNvbGxhcHNlZCA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICB0b2dnbGVDb2xsYXBzZShldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy50aHlDb2xsYXBzZWQgPSAhdGhpcy50aHlDb2xsYXBzZWQ7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVDb2xsYXBzZVRpcCgpLCAyMDApO1xuICAgICAgICB0aGlzLnRoeUNvbGxhcHNlZENoYW5nZS5lbWl0KHRoaXMuaXNDb2xsYXBzZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVSZXNpemFibGUoZXZlbnQ6IE1vdXNlRXZlbnQsIHR5cGU6ICdlbnRlcicgfCAnbGVhdmUnKSB7XG4gICAgICAgIHRoaXMuaXNSZXNpemFibGUgPSB0eXBlID09PSAnZW50ZXInID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHJlc3RvcmVUb0RlZmF1bHRXaWR0aCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5RGVmYXVsdFdpZHRoID09PSAnbGcnKSB7XG4gICAgICAgICAgICB0aGlzLnRoeURlZmF1bHRXaWR0aCA9IExHX1dJRFRIO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2lkZWJhckRpcmVjdGl2ZS50aHlMYXlvdXRTaWRlYmFyV2lkdGggPSAodGhpcy50aHlEZWZhdWx0V2lkdGggYXMgbnVtYmVyKSB8fCBTSURFQkFSX0RFRkFVTFRfV0lEVEg7XG4gICAgICAgIHRoaXMudGh5RHJhZ1dpZHRoQ2hhbmdlLmVtaXQodGhpcy5zaWRlYmFyRGlyZWN0aXZlLnRoeUxheW91dFNpZGViYXJXaWR0aCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG90a2V5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,4 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, Input, HostBinding } from '@angular/core';
3
- import { InputBoolean } from 'ngx-tethys/core';
1
+ import { Component, Input, HostBinding, booleanAttribute } from '@angular/core';
4
2
  import * as i0 from "@angular/core";
5
3
  /**
6
4
  * 列表组件
@@ -20,13 +18,8 @@ export class ThyList {
20
18
  this._isList = true;
21
19
  }
22
20
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: ThyList, isStandalone: true, selector: "thy-list", inputs: { thyDivided: "thyDivided" }, host: { properties: { "class.thy-list-divided": "this._isDivided", "class.thy-list": "this._isList" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyList, isStandalone: true, selector: "thy-list", inputs: { thyDivided: ["thyDivided", "thyDivided", booleanAttribute] }, host: { properties: { "class.thy-list-divided": "this._isDivided", "class.thy-list": "this._isList" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
24
22
  }
25
- __decorate([
26
- InputBoolean(),
27
- __metadata("design:type", Boolean),
28
- __metadata("design:paramtypes", [Boolean])
29
- ], ThyList.prototype, "thyDivided", null);
30
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyList, decorators: [{
31
24
  type: Component,
32
25
  args: [{
@@ -35,7 +28,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
35
28
  standalone: true
36
29
  }]
37
30
  }], ctorParameters: () => [], propDecorators: { thyDivided: [{
38
- type: Input
31
+ type: Input,
32
+ args: [{ transform: booleanAttribute }]
39
33
  }], _isDivided: [{
40
34
  type: HostBinding,
41
35
  args: [`class.thy-list-divided`]
@@ -43,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
43
37
  type: HostBinding,
44
38
  args: [`class.thy-list`]
45
39
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGlzdC9saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFL0M7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyxPQUFPO0lBQ2hCOzs7T0FHRztJQUNILElBRUksVUFBVSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQU1EO1FBSnVDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFM0IsWUFBTyxHQUFHLElBQUksQ0FBQztJQUUvQixDQUFDOzhHQWZQLE9BQU87a0dBQVAsT0FBTyxtTkFITiwyQkFBMkI7O0FBUXJDO0lBQ0MsWUFBWSxFQUFFOzs7eUNBR2Q7MkZBVFEsT0FBTztrQkFMbkIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQVFPLFVBQVU7c0JBRmIsS0FBSztnQkFNaUMsVUFBVTtzQkFBaEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBRU4sT0FBTztzQkFBckMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcblxuLyoqXG4gKiDliJfooajnu4Tku7ZcbiAqIEBuYW1lIHRoeS1saXN0XG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktbGlzdCcsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeUxpc3Qge1xuICAgIC8qKlxuICAgICAqIOaOp+WItuWIhuWJsue6v+eahOaYvuekuuS4jumakOiXj1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZXQgdGh5RGl2aWRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9pc0RpdmlkZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1saXN0LWRpdmlkZWRgKSBfaXNEaXZpZGVkID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1saXN0YCkgX2lzTGlzdCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGlzdC9saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRWhGOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sT0FBTztJQUNoQjs7O09BR0c7SUFDSCxJQUNJLFVBQVUsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFNRDtRQUp1QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTNCLFlBQU8sR0FBRyxJQUFJLENBQUM7SUFFL0IsQ0FBQzs4R0FkUCxPQUFPO2tHQUFQLE9BQU8sK0ZBS0ksZ0JBQWdCLHNJQVIxQiwyQkFBMkI7OzJGQUc1QixPQUFPO2tCQUxuQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7d0RBT08sVUFBVTtzQkFEYixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUtDLFVBQVU7c0JBQWhELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUVOLE9BQU87c0JBQXJDLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSG9zdEJpbmRpbmcsIGJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiDliJfooajnu4Tku7ZcbiAqIEBuYW1lIHRoeS1saXN0XG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktbGlzdCcsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeUxpc3Qge1xuICAgIC8qKlxuICAgICAqIOaOp+WItuWIhuWJsue6v+eahOaYvuekuuS4jumakOiXj1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeURpdmlkZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faXNEaXZpZGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktbGlzdC1kaXZpZGVkYCkgX2lzRGl2aWRlZCA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktbGlzdGApIF9pc0xpc3QgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
@@ -1,12 +1,12 @@
1
1
  import { ScrollToService } from 'ngx-tethys/core';
2
2
  import { THY_LIST_OPTION_PARENT_COMPONENT, ThyListOption } from 'ngx-tethys/shared';
3
- import { coerceBooleanProperty, dom, helpers, keycodes } from 'ngx-tethys/util';
3
+ import { dom, helpers, keycodes } from 'ngx-tethys/util';
4
4
  import { Subscription } from 'rxjs';
5
5
  import { startWith } from 'rxjs/operators';
6
6
  import { useHostRenderer } from '@tethys/cdk/dom';
7
7
  import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
8
8
  import { SelectionModel } from '@angular/cdk/collections';
9
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, forwardRef, HostBinding, Input, NgZone, Output, QueryList, Renderer2 } from '@angular/core';
9
+ import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, forwardRef, HostBinding, Input, NgZone, Output, QueryList, Renderer2 } from '@angular/core';
10
10
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
11
11
  import * as i0 from "@angular/core";
12
12
  const listSizesMap = {
@@ -23,7 +23,7 @@ export class ThySelectionList {
23
23
  */
24
24
  set thyMultiple(value) {
25
25
  const previousValue = this.multiple;
26
- this.multiple = coerceBooleanProperty(value);
26
+ this.multiple = value;
27
27
  if (previousValue !== this.multiple) {
28
28
  this._instanceSelectionModel();
29
29
  }
@@ -41,7 +41,7 @@ export class ThySelectionList {
41
41
  * 是否自动激活第一项
42
42
  */
43
43
  set thyAutoActiveFirstItem(value) {
44
- this.autoActiveFirstItem = coerceBooleanProperty(value);
44
+ this.autoActiveFirstItem = value;
45
45
  }
46
46
  /**
47
47
  * 改变 grid item 的大小,支持默认以及 sm 两种大小
@@ -54,7 +54,7 @@ export class ThySelectionList {
54
54
  * 是否按下空格切换聚焦选项
55
55
  */
56
56
  set thySpaceKeyEnabled(value) {
57
- this.spaceEnabled = coerceBooleanProperty(value);
57
+ this.spaceEnabled = value;
58
58
  }
59
59
  _emitChangeEvent(option, event) {
60
60
  this.thySelectionChange.emit({
@@ -318,7 +318,7 @@ export class ThySelectionList {
318
318
  }
319
319
  }
320
320
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThySelectionList, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
321
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: ThySelectionList, isStandalone: true, selector: "thy-selection-list,[thy-selection-list]", inputs: { thyMultiple: "thyMultiple", thyBindKeyEventContainer: "thyBindKeyEventContainer", thyScrollContainer: "thyScrollContainer", thyBeforeKeydown: "thyBeforeKeydown", thyUniqueKey: "thyUniqueKey", thyCompareWith: "thyCompareWith", thyLayout: "thyLayout", thyAutoActiveFirstItem: "thyAutoActiveFirstItem", thySize: "thySize", thySpaceKeyEnabled: "thySpaceKeyEnabled" }, outputs: { thySelectionChange: "thySelectionChange" }, host: { properties: { "class.thy-list": "this._isList", "class.thy-selection-list": "this._isSelectionList", "class.thy-multiple-selection-list": "this.multiple", "class.thy-grid-list": "this.isLayoutGrid" } }, providers: [
321
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThySelectionList, isStandalone: true, selector: "thy-selection-list,[thy-selection-list]", inputs: { thyMultiple: ["thyMultiple", "thyMultiple", booleanAttribute], thyBindKeyEventContainer: "thyBindKeyEventContainer", thyScrollContainer: "thyScrollContainer", thyBeforeKeydown: "thyBeforeKeydown", thyUniqueKey: "thyUniqueKey", thyCompareWith: "thyCompareWith", thyLayout: "thyLayout", thyAutoActiveFirstItem: ["thyAutoActiveFirstItem", "thyAutoActiveFirstItem", booleanAttribute], thySize: "thySize", thySpaceKeyEnabled: ["thySpaceKeyEnabled", "thySpaceKeyEnabled", booleanAttribute] }, outputs: { thySelectionChange: "thySelectionChange" }, host: { properties: { "class.thy-list": "this._isList", "class.thy-selection-list": "this._isSelectionList", "class.thy-multiple-selection-list": "this.multiple", "class.thy-grid-list": "this.isLayoutGrid" } }, providers: [
322
322
  {
323
323
  provide: THY_LIST_OPTION_PARENT_COMPONENT,
324
324
  useExisting: ThySelectionList
@@ -365,7 +365,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
365
365
  type: ContentChildren,
366
366
  args: [ThyListOption, { descendants: true }]
367
367
  }], thyMultiple: [{
368
- type: Input
368
+ type: Input,
369
+ args: [{ transform: booleanAttribute }]
369
370
  }], thyBindKeyEventContainer: [{
370
371
  type: Input
371
372
  }], thyScrollContainer: [{
@@ -379,12 +380,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
379
380
  }], thyLayout: [{
380
381
  type: Input
381
382
  }], thyAutoActiveFirstItem: [{
382
- type: Input
383
+ type: Input,
384
+ args: [{ transform: booleanAttribute }]
383
385
  }], thySize: [{
384
386
  type: Input
385
387
  }], thySpaceKeyEnabled: [{
386
- type: Input
388
+ type: Input,
389
+ args: [{ transform: booleanAttribute }]
387
390
  }], thySelectionChange: [{
388
391
  type: Output
389
392
  }] } });
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlzdC9zZWxlY3Rpb24vc2VsZWN0aW9uLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBaUMsZ0NBQWdDLEVBQWlCLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTXpFLE1BQU0sWUFBWSxHQUFHO0lBQ2pCLEVBQUUsRUFBRSxhQUFhO0NBQ3BCLENBQUM7QUFFRjs7O0dBR0c7QUFrQkgsTUFBTSxPQUFPLGdCQUFnQjtJQStCekI7OztPQUdHO0lBQ0gsSUFDSSxXQUFXLENBQUMsS0FBVTtRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJ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Q0ksT0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsV0FBVyxrQkFBa0I7eUJBQ2hDO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDOzRCQUMvQyxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ25COzRKQW1Ca0MsT0FBTztzQkFBckMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBRVksZ0JBQWdCO3NCQUF4RCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFFVyxRQUFRO3NCQUF6RCxXQUFXO3VCQUFDLG1DQUFtQztnQkFFWixZQUFZO3NCQUEvQyxXQUFXO3VCQUFDLHFCQUFxQjtnQkFLcUIsT0FBTztzQkFBN0QsZUFBZTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQU9qRCxXQUFXO3NCQURkLEtBQUs7Z0JBY0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQU9HLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9PLFNBQVM7c0JBQXJCLEtBQUs7Z0JBUU8sc0JBQXNCO3NCQUFsQyxLQUFLO2dCQVFPLE9BQU87c0JBQW5CLEtBQUs7Z0JBU08sa0JBQWtCO3NCQUE5QixLQUFLO2dCQVFhLGtCQUFrQjtzQkFBcEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjcm9sbFRvU2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBJVGh5TGlzdE9wdGlvblBhcmVudENvbXBvbmVudCwgVEhZX0xJU1RfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQsIFRoeUxpc3RMYXlvdXQsIFRoeUxpc3RPcHRpb24gfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGRvbSwgaGVscGVycywga2V5Y29kZXMgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuaW1wb3J0IHsgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUaHlTZWxlY3Rpb25MaXN0Q2hhbmdlIH0gZnJvbSAnLi9zZWxlY3Rpb24uaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgVGh5TGlzdFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZyc7XG5cbmNvbnN0IGxpc3RTaXplc01hcCA9IHtcbiAgICBzbTogJ3RoeS1saXN0LXNtJ1xufTtcblxuLyoqXG4gKiBAbmFtZSB0aHktc2VsZWN0aW9uLWxpc3QsW3RoeS1zZWxlY3Rpb24tbGlzdF1cbiAqIEBvcmRlciAyMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1zZWxlY3Rpb24tbGlzdCxbdGh5LXNlbGVjdGlvbi1saXN0XScsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVEhZX0xJU1RfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGh5U2VsZWN0aW9uTGlzdFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoeVNlbGVjdGlvbkxpc3QpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaHlTZWxlY3Rpb25MaXN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQsIElUaHlMaXN0T3B0aW9uUGFyZW50Q29tcG9uZW50LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgcHJpdmF0ZSBfa2V5TWFuYWdlcjogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8VGh5TGlzdE9wdGlvbj47XG5cbiAgICBwcml2YXRlIF9zZWxlY3Rpb25DaGFuZ2VzVW5zdWJzY3JpYmUkID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgcHJpdmF0ZSBfYmluZEtleUV2ZW50VW5zdWJzY3JpYmU6ICgpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIF9tb2RlbFZhbHVlczogYW55W107XG5cbiAgICBwcml2YXRlIGhvc3RSZW5kZXJlciA9IHVzZUhvc3RSZW5kZXJlcigpO1xuXG4gICAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9ucy4gKi9cbiAgICBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8YW55PjtcblxuICAgIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgbGF5b3V0OiBUaHlMaXN0TGF5b3V0ID0gJ2xpc3QnO1xuXG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktbGlzdGApIF9pc0xpc3QgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktc2VsZWN0aW9uLWxpc3RgKSBfaXNTZWxlY3Rpb25MaXN0ID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZyhgY2xhc3MudGh5LW11bHRpcGxlLXNlbGVjdGlvbi1saXN0YCkgbXVsdGlwbGUgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktZ3JpZC1saXN0YCkgaXNMYXlvdXRHcmlkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRoeUxpc3RPcHRpb24sIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgb3B0aW9uczogUXVlcnlMaXN0PFRoeUxpc3RPcHRpb24+O1xuXG4gICAgLyoqXG4gICAgICog5pS55Y+YIGdyaWQgaXRlbSDnmoTpgInmi6nmqKHlvI/vvIzkvb/lhbbmlK/mjIHlpJrpgIlcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5TXVsdGlwbGUodmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5tdWx0aXBsZTtcbiAgICAgICAgdGhpcy5tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGlmIChwcmV2aW91c1ZhbHVlICE9PSB0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDnu5HlrprplK7nm5jkuovku7bnmoTlrrnlmahcbiAgICAgKiBAdHlwZSBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmdcbiAgICAgKiBAZGVmYXVsdCB0aHktc2VsZWN0aW9uLWxpc3Qg57uE5Lu257uR5a6a55qE5YWD57SgXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5QmluZEtleUV2ZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDlh7rnjrDmu5rliqjmnaHnmoTlrrnlmahcbiAgICAgKiBAdHlwZSBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmdcbiAgICAgKiBAZGVmYXVsdCB0aHktc2VsZWN0aW9uLWxpc3Qg57uE5Lu257uR5a6a55qE5YWD57SgXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDplK7nm5jkuovku7bop6blj5EgQmVmb3JlIOiwg+eUqO+8jOWmguaenOi/lOWbniBmYWxzZSDliJnlgZzmraLnu6fnu63miafooYxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlCZWZvcmVLZXlkb3duOiAoZXZlbnQ/OiBLZXlib2FyZEV2ZW50KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogT3B0aW9uIFZhbHVlIOWUr+S4gOeahCBLZXnvvIznlKjkuo7lrZjlgqjlk6rkupvpgInmi6nooqvpgInkuK3nmoTllK/kuIDlgLzvvIzlj6rmnIkgT3B0aW9uIOeahCB0aHlWYWx1ZSDmmK/lr7nosaHnmoTml7bmiY3lj6/ku6XkvKDlhaXor6XpgInpoblcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlVbmlxdWVLZXk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOavlOi+gzLkuKrpgInpobnnmoQgVmFsdWUg5piv5ZCm55u45ZCMXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5Q29tcGFyZVdpdGg6IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogZ3JpZCBpdGVtIOeahOWxleekuuagt+W8j1xuICAgICAqIEB0eXBlIGxpc3QgfCBncmlkXG4gICAgICogQGRlZmF1bHQgbGlzdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlMYXlvdXQodmFsdWU6IFRoeUxpc3RMYXlvdXQpIHtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pc0xheW91dEdyaWQgPSB2YWx1ZSA9PT0gJ2dyaWQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuiHquWKqOa/gOa0u+esrOS4gOmhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlBdXRvQWN0aXZlRmlyc3RJdGVtKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuYXV0b0FjdGl2ZUZpcnN0SXRlbSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pS55Y+YIGdyaWQgaXRlbSDnmoTlpKflsI/vvIzmlK/mjIHpu5jorqTku6Xlj4ogc20g5Lik56eN5aSn5bCPXG4gICAgICogQHR5cGUgc20gfCBtZCB8IGxnXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeVNpemUodmFsdWU6IFRoeUxpc3RTaXplKSB7XG4gICAgICAgIHRoaXMuX3NldExpc3RTaXplKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNwYWNlRW5hYmxlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmjInkuIvnqbrmoLzliIfmjaLogZrnhKbpgInpoblcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5U3BhY2VLZXlFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc3BhY2VFbmFibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmr4/lvZPpgInpobnnmoTpgInlrprnirbmgIHlj5HnlJ/mm7TmlLnml7bvvIzpg73kvJrop6blj5Hmm7TmlLnkuovku7ZcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8VGh5U2VsZWN0aW9uTGlzdENoYW5nZT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5U2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5U2VsZWN0aW9uTGlzdENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVNlbGVjdGlvbkxpc3RDaGFuZ2U+KCk7XG5cbiAgICBwcml2YXRlIGF1dG9BY3RpdmVGaXJzdEl0ZW06IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IChfOiBhbnkpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBfZW1pdENoYW5nZUV2ZW50KG9wdGlvbjogVGh5TGlzdE9wdGlvbiwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudGh5U2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi50aHlWYWx1ZSxcbiAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2VtaXRNb2RlbFZhbHVlQ2hhbmdlKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkO1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5VW5pcXVlS2V5KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMgPSBzZWxlY3RlZFZhbHVlcy5tYXAoc2VsZWN0ZWRWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udGh5VmFsdWVbdGhpcy50aHlVbmlxdWVLZXldID09PSBzZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24udGh5VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWxWYWx1ZXMuZmluZCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW3RoaXMudGh5VW5pcXVlS2V5XSA9PT0gc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9tb2RlbFZhbHVlcyA9IHNlbGVjdGVkVmFsdWVzO1xuICAgICAgICAgICAgbGV0IGNoYW5nZVZhbHVlID0gc2VsZWN0ZWRWYWx1ZXM7XG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgc2VsZWN0ZWRWYWx1ZXMgJiYgc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNoYW5nZVZhbHVlID0gc2VsZWN0ZWRWYWx1ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShjaGFuZ2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF90b2dnbGVGb2N1c2VkT3B0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVPcHRpb24odGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtLCBldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRpYWxpemVGb2N1c0tleU1hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8VGh5TGlzdE9wdGlvbj4odGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLndpdGhXcmFwKClcbiAgICAgICAgICAgIC8vIC53aXRoVHlwZUFoZWFkKClcbiAgICAgICAgICAgIC8vIEFsbG93IGRpc2FibGVkIGl0ZW1zIHRvIGJlIGZvY3VzYWJsZS4gRm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucywgdGhlcmUgbXVzdCBiZSBhIHdheSBmb3JcbiAgICAgICAgICAgIC8vIHNjcmVlbnJlYWRlciB1c2VycywgdGhhdCBhbGxvd3MgcmVhZGluZyB0aGUgZGlmZmVyZW50IG9wdGlvbnMgb2YgdGhlIGxpc3QuXG4gICAgICAgICAgICAuc2tpcFByZWRpY2F0ZSgoKSA9PiBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5zdGFuY2VTZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRoaXMubXVsdGlwbGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEVsZW1lbnRCeVNlbGVjdG9yKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIGRvbS5nZXRIVE1MRWxlbWVudEJ5U2VsZWN0b3IoZWxlbWVudCwgdGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb21wYXJlVmFsdWUodmFsdWUxOiBhbnksIHZhbHVlMjogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbXBhcmVXaXRoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wYXJlRm4gPSB0aGlzLnRoeUNvbXBhcmVXaXRoIGFzIChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVGbih2YWx1ZTEsIHZhbHVlMik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50aHlVbmlxdWVLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTEgJiYgdmFsdWUxW3RoaXMudGh5VW5pcXVlS2V5XSA9PT0gdmFsdWUyICYmIHZhbHVlMlt0aGlzLnRoeVVuaXF1ZUtleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUxID09PSB2YWx1ZTI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRPcHRpb25TZWxlY3Rpb25WYWx1ZShvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgaWYgKG9wdGlvbi50aHlWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5VW5pcXVlS2V5ID8gb3B0aW9uLnRoeVZhbHVlW3RoaXMudGh5VW5pcXVlS2V5XSA6IG9wdGlvbi50aHlWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRTZWxlY3Rpb25CeVZhbHVlcyh2YWx1ZXM6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgICAgdmFsdWVzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5VW5pcXVlS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodmFsdWVbdGhpcy50aHlVbmlxdWVLZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRBbGxPcHRpb25zU2VsZWN0ZWQodG9Jc1NlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgICAgIC8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBhbnl0aGluZyBjaGFuZ2VkLCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0b1xuICAgICAgICAvLyBlbWl0IHRoZSBjaGFuZ2VkIGV2ZW50IHdoZW4gc29tZXRoaW5nIGFjdHVhbGx5IGNoYW5nZWQuXG4gICAgICAgIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb21Jc1NlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbi50aHlWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoZnJvbUlzU2VsZWN0ZWQgIT09IHRvSXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKG9wdGlvbi50aHlWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0TW9kZWxWYWx1ZUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZChvcHRpb24gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVWYWx1ZShvcHRpb24udGh5VmFsdWUsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0QWN0aXZlT3B0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uQnlWYWx1ZSh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0udGh5VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRMaXN0U2l6ZShzaXplOiBUaHlMaXN0U2l6ZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBsaXN0U2l6ZXNNYXApIHtcbiAgICAgICAgICAgIGlmIChsaXN0U2l6ZXNNYXAuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLnJlbW92ZUNsYXNzKGxpc3RTaXplc01hcFtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIuYWRkQ2xhc3MobGlzdFNpemVzTWFwW3NpemVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc3QgYmluZEtleUV2ZW50RWxlbWVudCA9IHRoaXMuX2dldEVsZW1lbnRCeVNlbGVjdG9yKHRoaXMudGh5QmluZEtleUV2ZW50Q29udGFpbmVyKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fYmluZEtleUV2ZW50VW5zdWJzY3JpYmUgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihiaW5kS2V5RXZlbnRFbGVtZW50LCAna2V5ZG93bicsIHRoaXMub25LZXlkb3duLmJpbmQodGhpcykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW5zdGFuY2VTZWxlY3Rpb25Nb2RlbCgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdIHwgYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIWhlbHBlcnMuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtdWx0aXBsZSBzZWxlY3Rpb24gbmdNb2RlbCBtdXN0IGJlIGFuIGFycmF5LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIGhlbHBlcnMuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzaW5nbGUgc2VsZWN0aW9uIG5nTW9kZWwgc2hvdWxkIG5vdCBiZSBhbiBhcnJheS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBoZWxwZXJzLmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IFt2YWx1ZV0gOiBbXTtcbiAgICAgICAgdGhpcy5fbW9kZWxWYWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWVzKHZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5QmVmb3JlS2V5ZG93bikge1xuICAgICAgICAgICAgLy8gc3RvcCBrZXkgZG93biBldmVudFxuICAgICAgICAgICAgY29uc3QgaXNDb250aW51ZSA9IHRoaXMudGh5QmVmb3JlS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICBpZiAoIWlzQ29udGludWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGUgfHwgZXZlbnQud2hpY2g7XG4gICAgICAgIGNvbnN0IG1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyO1xuICAgICAgICBjb25zdCBwcmV2aW91c0ZvY3VzSW5kZXggPSBtYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleDtcblxuICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2Uga2V5Y29kZXMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIGtleWNvZGVzLkVOVEVSOlxuICAgICAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBrZXljb2Rlcy5TUEFDRSAmJiAhdGhpcy5zcGFjZUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGVGb2N1c2VkT3B0aW9uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAvLyBBbHdheXMgcHJldmVudCBzcGFjZSBmcm9tIHNjcm9sbGluZyB0aGUgcGFnZSBzaW5jZSB0aGUgbGlzdCBoYXMgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBtYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGtleUNvZGUgPT09IGtleWNvZGVzLlVQX0FSUk9XIHx8IGtleUNvZGUgPT09IGtleWNvZGVzLkRPV05fQVJST1cpICYmXG4gICAgICAgICAgICBldmVudC5zaGlmdEtleSAmJlxuICAgICAgICAgICAgbWFuYWdlci5hY3RpdmVJdGVtSW5kZXggIT09IHByZXZpb3VzRm9jdXNJbmRleFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUZvY3VzZWRPcHRpb24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlT3B0aW9uKG9wdGlvbjogVGh5TGlzdE9wdGlvbiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAob3B0aW9uICYmICFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKHRoaXMuX2dldE9wdGlvblNlbGVjdGlvblZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgICAgLy8gRW1pdCBhIGNoYW5nZSBldmVudCBiZWNhdXNlIHRoZSBmb2N1c2VkIG9wdGlvbiBjaGFuZ2VkIGl0cyBzdGF0ZSB0aHJvdWdoIHVzZXJcbiAgICAgICAgICAgIC8vIGludGVyYWN0aW9uLlxuICAgICAgICAgICAgdGhpcy5fZW1pdE1vZGVsVmFsdWVDaGFuZ2UoKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudChvcHRpb24sIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEFjdGl2ZU9wdGlvbihvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKG9wdGlvbik7IC8vIC51cGRhdGVBY3RpdmVJdGVtSW5kZXgodGhpcy5fZ2V0T3B0aW9uSW5kZXgob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgc2Nyb2xsSW50b1ZpZXcob3B0aW9uOiBUaHlMaXN0T3B0aW9uKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lckVsZW1lbnQgPSBkb20uZ2V0SFRNTEVsZW1lbnRCeVNlbGVjdG9yKHRoaXMudGh5U2Nyb2xsQ29udGFpbmVyLCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgICAgICBTY3JvbGxUb1NlcnZpY2Uuc2Nyb2xsVG9FbGVtZW50KG9wdGlvbi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHNjcm9sbENvbnRhaW5lckVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQob3B0aW9uOiBUaHlMaXN0T3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodGhpcy5fZ2V0T3B0aW9uU2VsZWN0aW9uVmFsdWUob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgY2xlYXJBY3RpdmVJdGVtKCkge1xuICAgICAgICBpZiAodGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGV0ZXJtaW5lQ2xlYXJBY3RpdmVJdGVtKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2dldEFjdGl2ZU9wdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQWN0aXZlSXRlbSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNlbGVjdHMgYWxsIG9mIHRoZSBvcHRpb25zLiAqL1xuICAgIHNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5fc2V0QWxsT3B0aW9uc1NlbGVjdGVkKHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBEZXNlbGVjdHMgYWxsIG9mIHRoZSBvcHRpb25zLiAqL1xuICAgIGRlc2VsZWN0QWxsKCkge1xuICAgICAgICB0aGlzLl9zZXRBbGxPcHRpb25zU2VsZWN0ZWQoZmFsc2UpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUZvY3VzS2V5TWFuYWdlcigpO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9BY3RpdmVGaXJzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSB8fCB0aGlzLm9wdGlvbnMudG9BcnJheSgpLmluZGV4T2YodGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2VzVW5zdWJzY3JpYmUkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICh0aGlzLl9iaW5kS2V5RXZlbnRVbnN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5fYmluZEtleUV2ZW50VW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlzdC9zZWxlY3Rpb24vc2VsZWN0aW9uLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBaUMsZ0NBQWdDLEVBQWlCLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xJLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUVILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU16RSxNQUFNLFlBQVksR0FBRztJQUNqQixFQUFFLEVBQUUsYUFBYTtDQUNwQixDQUFDO0FBRUY7OztHQUdHO0FBa0JILE1BQU0sT0FBTyxnQkFBZ0I7SUErQnpCOzs7T0FHRztJQUNILElBQ0ksV0FBVyxDQUFDLEtBQWM7UUFDMUIsTUFBTSxhQUFhLEdBQUcsSUFB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T0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsV0FBVyxrQkFBa0I7eUJBQ2hDO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDOzRCQUMvQyxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ25COzRKQW1Ca0MsT0FBTztzQkFBckMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBRVksZ0JBQWdCO3NCQUF4RCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFFVyxRQUFRO3NCQUF6RCxXQUFXO3VCQUFDLG1DQUFtQztnQkFFWixZQUFZO3NCQUEvQyxXQUFXO3VCQUFDLHFCQUFxQjtnQkFLcUIsT0FBTztzQkFBN0QsZUFBZTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQU9qRCxXQUFXO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYzdCLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFPTyxTQUFTO3NCQUFyQixLQUFLO2dCQVFzQyxzQkFBc0I7c0JBQWpFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUXpCLE9BQU87c0JBQW5CLEtBQUs7Z0JBU3NDLGtCQUFrQjtzQkFBN0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFRbkIsa0JBQWtCO3NCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2Nyb2xsVG9TZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IElUaHlMaXN0T3B0aW9uUGFyZW50Q29tcG9uZW50LCBUSFlfTElTVF9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCwgVGh5TGlzdExheW91dCwgVGh5TGlzdE9wdGlvbiB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IGRvbSwgaGVscGVycywga2V5Y29kZXMgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuaW1wb3J0IHsgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRoeVNlbGVjdGlvbkxpc3RDaGFuZ2UgfSBmcm9tICcuL3NlbGVjdGlvbi5pbnRlcmZhY2UnO1xuXG5leHBvcnQgdHlwZSBUaHlMaXN0U2l6ZSA9ICdzbScgfCAnbWQnIHwgJ2xnJztcblxuY29uc3QgbGlzdFNpemVzTWFwID0ge1xuICAgIHNtOiAndGh5LWxpc3Qtc20nXG59O1xuXG4vKipcbiAqIEBuYW1lIHRoeS1zZWxlY3Rpb24tbGlzdCxbdGh5LXNlbGVjdGlvbi1saXN0XVxuICogQG9yZGVyIDIwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXNlbGVjdGlvbi1saXN0LFt0aHktc2VsZWN0aW9uLWxpc3RdJyxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSFlfTElTVF9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaHlTZWxlY3Rpb25MaXN0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5U2VsZWN0aW9uTGlzdCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeVNlbGVjdGlvbkxpc3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgSVRoeUxpc3RPcHRpb25QYXJlbnRDb21wb25lbnQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIF9rZXlNYW5hZ2VyOiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxUaHlMaXN0T3B0aW9uPjtcblxuICAgIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZXNVbnN1YnNjcmliZSQgPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICBwcml2YXRlIF9iaW5kS2V5RXZlbnRVbnN1YnNjcmliZTogKCkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgX21vZGVsVmFsdWVzOiBhbnlbXTtcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb25zLiAqL1xuICAgIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxhbnk+O1xuXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBsYXlvdXQ6IFRoeUxpc3RMYXlvdXQgPSAnbGlzdCc7XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1saXN0YCkgX2lzTGlzdCA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1zZWxlY3Rpb24tbGlzdGApIF9pc1NlbGVjdGlvbkxpc3QgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktbXVsdGlwbGUtc2VsZWN0aW9uLWxpc3RgKSBtdWx0aXBsZSA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1ncmlkLWxpc3RgKSBpc0xheW91dEdyaWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGh5TGlzdE9wdGlvbiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBvcHRpb25zOiBRdWVyeUxpc3Q8VGh5TGlzdE9wdGlvbj47XG5cbiAgICAvKipcbiAgICAgKiDmlLnlj5ggZ3JpZCBpdGVtIOeahOmAieaLqeaooeW8j++8jOS9v+WFtuaUr+aMgeWkmumAiVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgdGh5TXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMubXVsdGlwbGU7XG4gICAgICAgIHRoaXMubXVsdGlwbGUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUgIT09IHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOe7keWumumUruebmOS6i+S7tueahOWuueWZqFxuICAgICAqIEB0eXBlIEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IHN0cmluZ1xuICAgICAqIEBkZWZhdWx0IHRoeS1zZWxlY3Rpb24tbGlzdCDnu4Tku7bnu5HlrprnmoTlhYPntKBcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlCaW5kS2V5RXZlbnRDb250YWluZXI6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOWHuueOsOa7muWKqOadoeeahOWuueWZqFxuICAgICAqIEB0eXBlIEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IHN0cmluZ1xuICAgICAqIEBkZWZhdWx0IHRoeS1zZWxlY3Rpb24tbGlzdCDnu4Tku7bnu5HlrprnmoTlhYPntKBcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTY3JvbGxDb250YWluZXI6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIOmUruebmOS6i+S7tuinpuWPkSBCZWZvcmUg6LCD55So77yM5aaC5p6c6L+U5ZueIGZhbHNlIOWImeWBnOatoue7p+e7reaJp+ihjFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUJlZm9yZUtleWRvd246IChldmVudD86IEtleWJvYXJkRXZlbnQpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb24gVmFsdWUg5ZSv5LiA55qEIEtlee+8jOeUqOS6juWtmOWCqOWTquS6m+mAieaLqeiiq+mAieS4reeahOWUr+S4gOWAvO+8jOWPquaciSBPcHRpb24g55qEIHRoeVZhbHVlIOaYr+WvueixoeeahOaXtuaJjeWPr+S7peS8oOWFpeivpemAiemhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVVuaXF1ZUtleTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog5q+U6L6DMuS4qumAiemhueeahCBWYWx1ZSDmmK/lkKbnm7jlkIxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlDb21wYXJlV2l0aDogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBncmlkIGl0ZW0g55qE5bGV56S65qC35byPXG4gICAgICogQHR5cGUgbGlzdCB8IGdyaWRcbiAgICAgKiBAZGVmYXVsdCBsaXN0XG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeUxheW91dCh2YWx1ZTogVGh5TGlzdExheW91dCkge1xuICAgICAgICB0aGlzLmxheW91dCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmlzTGF5b3V0R3JpZCA9IHZhbHVlID09PSAnZ3JpZCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm6Ieq5Yqo5r+A5rS756ys5LiA6aG5XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCB0aHlBdXRvQWN0aXZlRmlyc3RJdGVtKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuYXV0b0FjdGl2ZUZpcnN0SXRlbSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaUueWPmCBncmlkIGl0ZW0g55qE5aSn5bCP77yM5pSv5oyB6buY6K6k5Lul5Y+KIHNtIOS4pOenjeWkp+Wwj1xuICAgICAqIEB0eXBlIHNtIHwgbWQgfCBsZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlTaXplKHZhbHVlOiBUaHlMaXN0U2l6ZSkge1xuICAgICAgICB0aGlzLl9zZXRMaXN0U2l6ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzcGFjZUVuYWJsZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5oyJ5LiL56m65qC85YiH5o2i6IGa54Sm6YCJ6aG5XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCB0aHlTcGFjZUtleUVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zcGFjZUVuYWJsZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmr4/lvZPpgInpobnnmoTpgInlrprnirbmgIHlj5HnlJ/mm7TmlLnml7bvvIzpg73kvJrop6blj5Hmm7TmlLnkuovku7ZcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8VGh5U2VsZWN0aW9uTGlzdENoYW5nZT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5U2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5U2VsZWN0aW9uTGlzdENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVNlbGVjdGlvbkxpc3RDaGFuZ2U+KCk7XG5cbiAgICBwcml2YXRlIGF1dG9BY3RpdmVGaXJzdEl0ZW06IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IChfOiBhbnkpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBfZW1pdENoYW5nZUV2ZW50KG9wdGlvbjogVGh5TGlzdE9wdGlvbiwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudGh5U2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi50aHlWYWx1ZSxcbiAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2VtaXRNb2RlbFZhbHVlQ2hhbmdlKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkO1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5VW5pcXVlS2V5KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMgPSBzZWxlY3RlZFZhbHVlcy5tYXAoc2VsZWN0ZWRWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udGh5VmFsdWVbdGhpcy50aHlVbmlxdWVLZXldID09PSBzZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24udGh5VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWxWYWx1ZXMuZmluZCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW3RoaXMudGh5VW5pcXVlS2V5XSA9PT0gc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9tb2RlbFZhbHVlcyA9IHNlbGVjdGVkVmFsdWVzO1xuICAgICAgICAgICAgbGV0IGNoYW5nZVZhbHVlID0gc2VsZWN0ZWRWYWx1ZXM7XG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgJiYgc2VsZWN0ZWRWYWx1ZXMgJiYgc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNoYW5nZVZhbHVlID0gc2VsZWN0ZWRWYWx1ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShjaGFuZ2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF90b2dnbGVGb2N1c2VkT3B0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVPcHRpb24odGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtLCBldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRpYWxpemVGb2N1c0tleU1hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8VGh5TGlzdE9wdGlvbj4odGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLndpdGhXcmFwKClcbiAgICAgICAgICAgIC8vIC53aXRoVHlwZUFoZWFkKClcbiAgICAgICAgICAgIC8vIEFsbG93IGRpc2FibGVkIGl0ZW1zIHRvIGJlIGZvY3VzYWJsZS4gRm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucywgdGhlcmUgbXVzdCBiZSBhIHdheSBmb3JcbiAgICAgICAgICAgIC8vIHNjcmVlbnJlYWRlciB1c2VycywgdGhhdCBhbGxvd3MgcmVhZGluZyB0aGUgZGlmZmVyZW50IG9wdGlvbnMgb2YgdGhlIGxpc3QuXG4gICAgICAgICAgICAuc2tpcFByZWRpY2F0ZSgoKSA9PiBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5zdGFuY2VTZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRoaXMubXVsdGlwbGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEVsZW1lbnRCeVNlbGVjdG9yKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIGRvbS5nZXRIVE1MRWxlbWVudEJ5U2VsZWN0b3IoZWxlbWVudCwgdGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb21wYXJlVmFsdWUodmFsdWUxOiBhbnksIHZhbHVlMjogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUNvbXBhcmVXaXRoKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wYXJlRm4gPSB0aGlzLnRoeUNvbXBhcmVXaXRoIGFzIChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVGbih2YWx1ZTEsIHZhbHVlMik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50aHlVbmlxdWVLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTEgJiYgdmFsdWUxW3RoaXMudGh5VW5pcXVlS2V5XSA9PT0gdmFsdWUyICYmIHZhbHVlMlt0aGlzLnRoeVVuaXF1ZUtleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUxID09PSB2YWx1ZTI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRPcHRpb25TZWxlY3Rpb25WYWx1ZShvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgaWYgKG9wdGlvbi50aHlWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5VW5pcXVlS2V5ID8gb3B0aW9uLnRoeVZhbHVlW3RoaXMudGh5VW5pcXVlS2V5XSA6IG9wdGlvbi50aHlWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRTZWxlY3Rpb25CeVZhbHVlcyh2YWx1ZXM6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgICAgdmFsdWVzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudGh5VW5pcXVlS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodmFsdWVbdGhpcy50aHlVbmlxdWVLZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRBbGxPcHRpb25zU2VsZWN0ZWQodG9Jc1NlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgICAgIC8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBhbnl0aGluZyBjaGFuZ2VkLCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0b1xuICAgICAgICAvLyBlbWl0IHRoZSBjaGFuZ2VkIGV2ZW50IHdoZW4gc29tZXRoaW5nIGFjdHVhbGx5IGNoYW5nZWQuXG4gICAgICAgIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb21Jc1NlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbi50aHlWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoZnJvbUlzU2VsZWN0ZWQgIT09IHRvSXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKG9wdGlvbi50aHlWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0TW9kZWxWYWx1ZUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZChvcHRpb24gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVWYWx1ZShvcHRpb24udGh5VmFsdWUsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0QWN0aXZlT3B0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uQnlWYWx1ZSh0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0udGh5VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRMaXN0U2l6ZShzaXplOiBUaHlMaXN0U2l6ZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBsaXN0U2l6ZXNNYXApIHtcbiAgICAgICAgICAgIGlmIChsaXN0U2l6ZXNNYXAuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLnJlbW92ZUNsYXNzKGxpc3RTaXplc01hcFtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIuYWRkQ2xhc3MobGlzdFNpemVzTWFwW3NpemVdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc3QgYmluZEtleUV2ZW50RWxlbWVudCA9IHRoaXMuX2dldEVsZW1lbnRCeVNlbGVjdG9yKHRoaXMudGh5QmluZEtleUV2ZW50Q29udGFpbmVyKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fYmluZEtleUV2ZW50VW5zdWJzY3JpYmUgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihiaW5kS2V5RXZlbnRFbGVtZW50LCAna2V5ZG93bicsIHRoaXMub25LZXlkb3duLmJpbmQodGhpcykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW5zdGFuY2VTZWxlY3Rpb25Nb2RlbCgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdIHwgYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIWhlbHBlcnMuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtdWx0aXBsZSBzZWxlY3Rpb24gbmdNb2RlbCBtdXN0IGJlIGFuIGFycmF5LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIGhlbHBlcnMuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzaW5nbGUgc2VsZWN0aW9uIG5nTW9kZWwgc2hvdWxkIG5vdCBiZSBhbiBhcnJheS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBoZWxwZXJzLmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IFt2YWx1ZV0gOiBbXTtcbiAgICAgICAgdGhpcy5fbW9kZWxWYWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWVzKHZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5QmVmb3JlS2V5ZG93bikge1xuICAgICAgICAgICAgLy8gc3RvcCBrZXkgZG93biBldmVudFxuICAgICAgICAgICAgY29uc3QgaXNDb250aW51ZSA9IHRoaXMudGh5QmVmb3JlS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICBpZiAoIWlzQ29udGludWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGUgfHwgZXZlbnQud2hpY2g7XG4gICAgICAgIGNvbnN0IG1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyO1xuICAgICAgICBjb25zdCBwcmV2aW91c0ZvY3VzSW5kZXggPSBtYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleDtcblxuICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2Uga2V5Y29kZXMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIGtleWNvZGVzLkVOVEVSOlxuICAgICAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBrZXljb2Rlcy5TUEFDRSAmJiAhdGhpcy5zcGFjZUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGVGb2N1c2VkT3B0aW9uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAvLyBBbHdheXMgcHJldmVudCBzcGFjZSBmcm9tIHNjcm9sbGluZyB0aGUgcGFnZSBzaW5jZSB0aGUgbGlzdCBoYXMgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBtYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGtleUNvZGUgPT09IGtleWNvZGVzLlVQX0FSUk9XIHx8IGtleUNvZGUgPT09IGtleWNvZGVzLkRPV05fQVJST1cpICYmXG4gICAgICAgICAgICBldmVudC5zaGlmdEtleSAmJlxuICAgICAgICAgICAgbWFuYWdlci5hY3RpdmVJdGVtSW5kZXggIT09IHByZXZpb3VzRm9jdXNJbmRleFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUZvY3VzZWRPcHRpb24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlT3B0aW9uKG9wdGlvbjogVGh5TGlzdE9wdGlvbiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAob3B0aW9uICYmICFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKHRoaXMuX2dldE9wdGlvblNlbGVjdGlvblZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgICAgLy8gRW1pdCBhIGNoYW5nZSBldmVudCBiZWNhdXNlIHRoZSBmb2N1c2VkIG9wdGlvbiBjaGFuZ2VkIGl0cyBzdGF0ZSB0aHJvdWdoIHVzZXJcbiAgICAgICAgICAgIC8vIGludGVyYWN0aW9uLlxuICAgICAgICAgICAgdGhpcy5fZW1pdE1vZGVsVmFsdWVDaGFuZ2UoKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudChvcHRpb24sIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEFjdGl2ZU9wdGlvbihvcHRpb246IFRoeUxpc3RPcHRpb24pIHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKG9wdGlvbik7IC8vIC51cGRhdGVBY3RpdmVJdGVtSW5kZXgodGhpcy5fZ2V0T3B0aW9uSW5kZXgob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgc2Nyb2xsSW50b1ZpZXcob3B0aW9uOiBUaHlMaXN0T3B0aW9uKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lckVsZW1lbnQgPSBkb20uZ2V0SFRNTEVsZW1lbnRCeVNlbGVjdG9yKHRoaXMudGh5U2Nyb2xsQ29udGFpbmVyLCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgICAgICBTY3JvbGxUb1NlcnZpY2Uuc2Nyb2xsVG9FbGVtZW50KG9wdGlvbi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHNjcm9sbENvbnRhaW5lckVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQob3B0aW9uOiBUaHlMaXN0T3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodGhpcy5fZ2V0T3B0aW9uU2VsZWN0aW9uVmFsdWUob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgY2xlYXJBY3RpdmVJdGVtKCkge1xuICAgICAgICBpZiAodGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGV0ZXJtaW5lQ2xlYXJBY3RpdmVJdGVtKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2dldEFjdGl2ZU9wdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQWN0aXZlSXRlbSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNlbGVjdHMgYWxsIG9mIHRoZSBvcHRpb25zLiAqL1xuICAgIHNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5fc2V0QWxsT3B0aW9uc1NlbGVjdGVkKHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBEZXNlbGVjdHMgYWxsIG9mIHRoZSBvcHRpb25zLiAqL1xuICAgIGRlc2VsZWN0QWxsKCkge1xuICAgICAgICB0aGlzLl9zZXRBbGxPcHRpb25zU2VsZWN0ZWQoZmFsc2UpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUZvY3VzS2V5TWFuYWdlcigpO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9BY3RpdmVGaXJzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSB8fCB0aGlzLm9wdGlvbnMudG9BcnJheSgpLmluZGV4T2YodGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25DaGFuZ2VzVW5zdWJzY3JpYmUkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICh0aGlzLl9iaW5kS2V5RXZlbnRVbnN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5fYmluZEtleUV2ZW50VW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==