@wavemaker/app-ng-runtime 12.0.0-next.45752 → 12.0.0-next.46502

Sign up to get free protection for your applications and to get access to all the features.
Files changed (318) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +53 -45
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
  6. app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
  7. app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
  8. app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
  9. app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
  10. app-ng-runtime/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +3 -3
  12. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/containers/wizard/wizard.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +4 -4
  15. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  17. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  18. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/chips/chips.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  21. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  22. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +6 -2
  26. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  29. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  30. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  31. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  32. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  33. app-ng-runtime/build-task/fesm2022/index.mjs +53 -45
  34. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  35. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  36. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  37. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  38. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  39. app-ng-runtime/components/base/bundles/index.umd.js +1 -6
  40. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  41. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +1 -6
  42. app-ng-runtime/components/base/fesm2022/index.mjs +1 -6
  43. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  44. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  45. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  46. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +3 -0
  47. app-ng-runtime/components/basic/default/bundles/index.umd.js +39 -19
  48. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  49. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  50. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +14 -6
  51. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  52. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  53. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  54. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  55. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  56. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  57. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  58. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  59. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  60. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  61. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +8 -4
  62. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  63. app-ng-runtime/components/basic/default/fesm2022/index.mjs +39 -19
  64. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  65. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  66. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  67. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  68. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -0
  69. app-ng-runtime/components/basic/progress/bundles/index.umd.js +17 -9
  70. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +9 -5
  71. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  72. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  73. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  74. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +17 -9
  75. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  76. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -0
  77. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  78. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  79. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  80. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  81. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  82. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  83. app-ng-runtime/components/basic/search/bundles/index.umd.js +16 -9
  84. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +19 -13
  85. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  86. app-ng-runtime/components/basic/search/fesm2022/index.mjs +16 -9
  87. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  88. app-ng-runtime/components/basic/search/search.component.d.ts +4 -2
  89. app-ng-runtime/components/chart/bundles/index.umd.js +1 -0
  90. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +2 -1
  91. app-ng-runtime/components/chart/fesm2022/index.mjs +1 -0
  92. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  93. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
  94. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
  95. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
  96. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
  97. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
  98. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  99. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  100. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  101. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  102. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  103. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  104. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  105. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  106. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  107. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +6 -6
  108. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +7 -7
  109. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +6 -6
  110. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/data/list/bundles/index.umd.js +19 -11
  112. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +10 -1
  113. app-ng-runtime/components/data/list/esm2022/list.component.mjs +12 -12
  114. app-ng-runtime/components/data/list/fesm2022/index.mjs +20 -12
  115. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  117. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  118. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  119. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  120. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  121. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  122. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  123. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  124. app-ng-runtime/components/data/table/bundles/index.umd.js +42 -8
  125. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  126. app-ng-runtime/components/data/table/esm2022/table.component.mjs +28 -5
  127. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  128. app-ng-runtime/components/data/table/fesm2022/index.mjs +43 -9
  129. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  130. app-ng-runtime/components/data/table/table.component.d.ts +7 -0
  131. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  132. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  133. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  134. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  135. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  136. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  137. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  138. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  139. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
  140. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  141. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
  142. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  143. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
  144. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  146. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  147. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  148. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  149. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  150. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  151. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  152. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  153. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  154. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  155. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  156. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  157. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  158. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  159. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  160. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  161. app-ng-runtime/components/input/chips/bundles/index.umd.js +25 -7
  162. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +25 -8
  163. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  164. app-ng-runtime/components/input/chips/fesm2022/index.mjs +25 -7
  165. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  166. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  167. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  168. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  169. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  170. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  171. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  173. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  174. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  175. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  176. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  177. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  178. app-ng-runtime/components/input/default/bundles/index.umd.js +171 -94
  179. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  180. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  181. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +3 -3
  182. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  183. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  184. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  185. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  186. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  187. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
  188. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  189. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  190. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
  191. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +7 -7
  192. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  193. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  194. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  195. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  196. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  197. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  198. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  199. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  200. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  201. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +66 -13
  202. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  203. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  204. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  205. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  206. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
  207. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  208. app-ng-runtime/components/input/default/fesm2022/index.mjs +171 -94
  209. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  210. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  211. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
  212. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  213. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  214. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  215. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  216. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  217. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  218. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
  219. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
  220. app-ng-runtime/components/input/epoch/bundles/index.umd.js +28 -21
  221. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  222. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  223. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
  224. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +8 -8
  225. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  226. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +9 -9
  227. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  228. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  229. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  230. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +25 -18
  231. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  232. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  233. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +224 -121
  234. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +220 -123
  235. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +7 -1
  236. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +225 -122
  237. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  238. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +18 -11
  239. app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
  240. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +3 -3
  241. app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
  242. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  243. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  244. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  245. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  246. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  247. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  248. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  249. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
  250. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
  251. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
  252. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  253. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
  254. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  255. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  256. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
  257. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  258. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  259. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  260. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  261. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  262. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  263. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  264. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  265. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  266. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  267. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  268. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  270. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  271. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  272. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  273. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  274. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  275. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  276. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  277. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  278. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  279. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  280. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  281. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  282. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  283. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  284. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  286. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  287. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  288. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  289. app-ng-runtime/core/bundles/index.umd.js +15 -13
  290. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  291. app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
  292. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
  293. app-ng-runtime/core/fesm2022/index.mjs +11 -11
  294. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  295. app-ng-runtime/core/public_api.d.ts +1 -1
  296. app-ng-runtime/core/utils/utils.d.ts +1 -1
  297. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  298. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  299. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  300. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  301. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  302. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  303. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  304. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  305. app-ng-runtime/package.json +1 -1
  306. app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
  307. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  308. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  309. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  310. app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
  311. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  312. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  313. app-ng-runtime/scripts/datatable/datatable.js +32 -31
  314. app-ng-runtime/variables/bundles/index.umd.js +34 -16
  315. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
  316. app-ng-runtime/variables/fesm2022/index.mjs +34 -16
  317. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  318. app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
@@ -484,6 +484,7 @@ export const isShowLegend = value => {
484
484
  * @param label
485
485
  */
486
486
  export const customiseTooltip = (chart, propertyValueMap, widgetContext, label) => {
487
+ d3.selectAll('.nvtooltip').style('opacity', 0);
487
488
  chart.tooltip.contentGenerator(key => {
488
489
  let xValue = key.data.x, yValue;
489
490
  yValue = getNumberFormatedData(propertyValueMap.ynumberformat, key.data.y);
@@ -717,4 +718,4 @@ export const postPlotChartProcess = (widgetContext, isPreview) => {
717
718
  };
718
719
  // @ts-ignore
719
720
  export const getDateList = () => dateList;
720
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY2hhcnQvc3JjL2NoYXJ0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUUsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBT3JHLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUNwRyxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXpGLE1BQU0sUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsRUFDdkQsTUFBTSxHQUFHO0lBQ0wsYUFBYSxFQUFFO1FBQ1gsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNwTyxPQUFPLEVBQUU7WUFDTCxpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLFdBQVcsRUFBRSxTQUFTO1NBQ3pCO0tBQ0o7SUFD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LENBQUMsYUFBYSxFQUFFLFNBQVUsRUFBRSxFQUFFO0lBQzlELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ2hELG1GQUFtRjtJQUNuRixJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELGVBQWUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCwwREFBMEQ7SUFDMUQsa0NBQWtDO0lBQ2xDLHlFQUF5RTtJQUN6RSxJQUFJO0FBQ1IsQ0FBQyxDQUFDO0FBRUYsYUFBYTtBQUNiLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzRW1wdHlPYmplY3QsIHByZXR0aWZ5TGFiZWxzfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge2ZvckVhY2gsIGluY2x1ZGVzLCBpbnZlcnQsIGlzQXJyYXksIGlzRmluaXRlLCBpc1N0cmluZywgaXNVbmRlZmluZWQsIHNwbGl0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuZGVjbGFyZSBjb25zdCBtb21lbnQ7XG5kZWNsYXJlIGNvbnN0IGQzLCBudjtcblxuZXhwb3J0IGNvbnN0IGNoYXJ0VHlwZXMgPSBbJ0NvbHVtbicsICdMaW5lJywgJ0FyZWEnLCAnQ3VtdWxhdGl2ZSBMaW5lJywgJ0JhcicsICdQaWUnLCAnRG9udXQnLCAnQnViYmxlJ10sXG4gICAgYWxsU2hhcGVzID0gWydjaXJjbGUnLCAnc3F1YXJlJywgJ2RpYW1vbmQnLCAnY3Jvc3MnLCAndHJpYW5nbGUtdXAnLCAndHJpYW5nbGUtZG93biddO1xuXG5jb25zdCBkYXRlTGlzdCA9IFsnMDEvMDEvMjAwMScsICcwMS8wMS8yMDAyJywgJzAxLzAxLzIwMDMnXSxcbiAgICB0aGVtZXMgPSB7XG4gICAgICAgICdUZXJyZXN0cmlhbCc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMWY3N2I0JywgJyNhZWM3ZTgnLCAnI2ZmN2YwZScsICcjZmZiYjc4JywgJyMyY2EwMmMnLCAnIzk4ZGY4YScsICcjZDYyNzI4JywgJyNmZjk4OTYnLCAnIzk0NjdiZCcsICcjYzViMGQ1JywgJyM4YzU2NGInLCAnI2M0OWM5NCcsICcjZTM3N2MyJywgJyNmN2I2ZDInLCAnIzdmN2Y3ZicsICcjYzdjN2M3JywgJyNiY2JkMjInLCAnI2RiZGI4ZCcsICcjMTdiZWNmJywgJyM5ZWRhZTUnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyNkZTdkMjgnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0FubmFiZWxsZSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMzkzYjc5JywgJyM1MjU0YTMnLCAnIzZiNmVjZicsICcjOWM5ZWRlJywgJyM2Mzc5MzknLCAnIzhjYTI1MicsICcjYjVjZjZiJywgJyNjZWRiOWMnLCAnIzhjNmQzMScsICcjYmQ5ZTM5JywgJyNlN2JhNTInLCAnI2U3Y2I5NCcsICcjODQzYzM5JywgJyNhZDQ5NGEnLCAnI2Q2NjE2YicsICcjZTc5NjljJywgJyM3YjQxNzMnLCAnI2E1NTE5NCcsICcjY2U2ZGJkJywgJyNkZTllZDYnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyMyZTMwNmYnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0F6dXJlJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMzMTgyYmQnLCAnIzZiYWVkNicsICcjOWVjYWUxJywgJyNjNmRiZWYnLCAnI2U2NTUwZCcsICcjZmQ4ZDNjJywgJyNmZGFlNmInLCAnI2ZkZDBhMicsICcjMzFhMzU0JywgJyM3NGM0NzYnLCAnI2ExZDk5YicsICcjYzdlOWMwJywgJyM3NTZiYjEnLCAnIzllOWFjOCcsICcjYmNiZGRjJywgJyNkYWRhZWInLCAnIzYzNjM2MycsICcjOTY5Njk2JywgJyNiZGJkYmQnLCAnI2Q5ZDlkOSddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzMxODJiZCcsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnUmV0cm8nOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzBjYTdhMScsICcjZmZhNjE1JywgJyMzMzQ5NTcnLCAnI2FjYzVjMicsICcjOTg4ZjkwJywgJyM4YWNjYzknLCAnIzUxNTE1MScsICcjZjI3ODYxJywgJyMzNmM5ZmQnLCAnIzc5NDY2OCcsICcjMGY3MDlkJywgJyMwZDI3MzgnLCAnIzQ0YmU3OCcsICcjNGExODM5JywgJyM2YTM5M2YnLCAnIzU1N2Q4YicsICcjNmMzMzFjJywgJyMxYzFjMWMnLCAnIzg2MTUwMCcsICcjMDk1NjJhJ10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjODA1MTNhJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdNZWxsb3cnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnI2YwZGNiZicsICcjODhjODc3JywgJyNhZWI5MTgnLCAnIzJlMmMyMycsICcjZGRkZGQyJywgJyNkZmU5NTYnLCAnIzRjOTYzYicsICcjNWQzODAxJywgJyNlMWVlYzMnLCAnI2NkODQ3MicsICcjZmNmYWIzJywgJyM5YTQ2MzUnLCAnIzkyOTVhZCcsICcjMmUzZjEyJywgJyM1NjU2NzcnLCAnIzU1N2Q4YicsICcjNGY0ZDAyJywgJyMwYzBjMWInLCAnIzgzMzMyNCcsICcjMjQxMjBlJ10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjN2M5ZTczJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdPcmllbnQnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnI2E4MDAwMCcsICcjY2M2YzNjJywgJyNmMGU0MDAnLCAnIzAwMDA4NCcsICcjZmNjYzZjJywgJyMwMDljNmMnLCAnI2NjMzA5YycsICcjNzhjYzAwJywgJyNmYzg0ZTQnLCAnIzQ4ZTRmYycsICcjNDg3OGQ4JywgJyMxODZjMGMnLCAnIzYwNjA2MCcsICcjYThhOGE4JywgJyMwMDAwMDAnLCAnI2Q3ZDdkNycsICcjNzVhMDZlJywgJyMxOTBkMGInLCAnIzg4ODg4OCcsICcjNjk0Yjg0J10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjYzE0MjQyJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdHcmF5U2NhbGUnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzE0MTQxNCcsICcjMzUzNTM1JywgJyM1YjViNWInLCAnIzg0ODQ4NCcsICcjYThhOGE4JywgJyNjM2MzYzMnLCAnI2UwZTBlMCcsICcjYzhjOGM4JywgJyNhNWE1YTUnLCAnIzg3ODc4NycsICcjNjU2NTY1JywgJyM0ZTRlNGUnLCAnIzMwMzAzMCcsICcjMWMxYzFjJywgJyM0ZjRmNGYnLCAnIzNiM2IzYicsICcjNzU3NTc1JywgJyM2MDYwNjAnLCAnIzg2ODY4NicsICcjYzFjMWMxJ10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjNTc1NzU3JyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdGbHllcic6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjM2Y0NTRjJywgJyM1YTY0NmUnLCAnIzg0ODc3OCcsICcjY2VkZWRmJywgJyM3NGM0ZGQnLCAnIzA5NDZlZCcsICcjMzgwYmIxJywgJyMwMDBmZjAnLCAnI2Y1NGEyMycsICcjMWRiMjYyJywgJyNiY2EzYWEnLCAnI2ZmYTUwMCcsICcjYTg2YjMyJywgJyM2M2ExOGMnLCAnIzU2Nzk1ZScsICcjOTM0MzQzJywgJyNiNzVmNWYnLCAnIzc1MmQyZCcsICcjNGUxMTExJywgJyM5MjA2MDYnXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyM0NzYzN2MnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0x1bWlub3NpdHknOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnI0ZGRkZGRicsICcjZTRlNGU0JywgJyMwMGJjZDQnLCAnI2YwZGQyZicsICcjMDBhYWJmJywgJyMwMTgzNzYnLCAnI2U5MWU2MycsICcjMzllNWQ0JywgJyNmZjZkNmQnLCAnIzAwZmY3NicsICcjZmY5ODAwJywgJyM5Njk2OTYnLCAnI2ZmNDIwMCcsICcjZTAwMDAwJywgJyM5NWNiZTUnLCAnIzUzMzFmZicsICcjZmZmNGE3JywgJyNlN2E4MDAnLCAnIzAwNjFlNCcsICcjZDVlN2ZmJ10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjNDc2MzdjJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGJhc2ljUHJvcGVydGllcyA9IFsneGF4aXNsYWJlbCcsICd5YXhpc2xhYmVsJywgJ3h1bml0cycsICd5dW5pdHMnLCAneG51bWJlcmZvcm1hdCcsICd4ZGF0ZWZvcm1hdCcsICd5bnVtYmVyZm9ybWF0JyxcbiAgICAgICAgJ3Nob3d2YWx1ZXMnLCAnc2hvd2xhYmVscycsICd2aWV3dHlwZScsICdhcmVhdmlld3R5cGUnLCAnc3RhZ2dlcmxhYmVscycsICdyZWR1Y2V4dGlja3MnLCAnb2Zmc2V0dG9wJywgJ29mZnNldGJvdHRvbScsICdvZmZzZXRyaWdodCcsICdvZmZzZXRsZWZ0JyxcbiAgICAgICAgJ2JhcnNwYWNpbmcnLCAneGF4aXNsYWJlbGRpc3RhbmNlJywgJ3lheGlzbGFiZWxkaXN0YW5jZScsICd0aGVtZScsICdsYWJlbHR5cGUnLCAnZG9udXRyYXRpbycsICdzaG93bGFiZWxzb3V0c2lkZScsICdzaG93eGRpc3RhbmNlJywgJ3Nob3d5ZGlzdGFuY2UnLCAnc2hhcGUnLCAnbm9kYXRhbWVzc2FnZScsICdjYXB0aW9ucycsICdzaG93eGF4aXMnLCAnc2hvd3lheGlzJyxcbiAgICAgICAgJ2NlbnRlcmxhYmVsJywgJ2N1c3RvbWNvbG9ycycsICdzaG93bGVnZW5kJywgJ2xlZ2VuZHR5cGUnLCAneGRvbWFpbicsICd5ZG9tYWluJywgJ3Rvb2x0aXBzJywgJ2xpbmV0aGlja25lc3MnLCAnaGlnaGxpZ2h0cG9pbnRzJywgJ2ludGVycG9sYXRpb24nLCAnbGFiZWx0aHJlc2hvbGQnXSxcbiAgICBiYXJTcGFjaW5nTWFwID0ge1xuICAgICAgICAnc21hbGwnIDogMC4zLFxuICAgICAgICAnbWVkaXVtJyA6IDAuNSxcbiAgICAgICAgJ2xhcmdlJyA6IDAuOFxuICAgIH0sXG4gICAgZG9udXRSYXRpb01hcCA9IHtcbiAgICAgICAgJ3NtYWxsJyA6IDAuMyxcbiAgICAgICAgJ21lZGl1bScgOiAwLjYsXG4gICAgICAgICdsYXJnZScgOiAwLjdcbiAgICB9LFxuICAgIGJhclNwYWNpbmdNYXBJbnZlcnQgPSBpbnZlcnQoYmFyU3BhY2luZ01hcCksXG4gICAgZG9udXRSYXRpb01hcEludmVydCA9IGludmVydChkb251dFJhdGlvTWFwKSxcbiAgICB0aWNrZm9ybWF0cyA9IHtcbiAgICAgICAgJ1Rob3VzYW5kJzoge1xuICAgICAgICAgICAgJ3ByZWZpeCc6ICdLJyxcbiAgICAgICAgICAgICdkaXZpZGVyJzogMTAwMFxuICAgICAgICB9LFxuICAgICAgICAnTWlsbGlvbicgOiB7XG4gICAgICAgICAgICAncHJlZml4JzogJ00nLFxuICAgICAgICAgICAgJ2RpdmlkZXInOiAxMDAwMDAwXG4gICAgICAgIH0sXG4gICAgICAgICdCaWxsaW9uJyA6IHtcbiAgICAgICAgICAgICdwcmVmaXgnOiAnQicsXG4gICAgICAgICAgICAnZGl2aWRlcic6IDEwMDAwMDAwMDBcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY2hhcnRJZCA9ICcjcHJldmlldy1jaGFydCcsXG4gICAgZGF0YVR5cGVKU09OID0gWydDb2x1bW4nLCAnTGluZScsICdQaWUnLCAnQmFyJywgJ0RvbnV0JywgJ0J1YmJsZSddLCAgICAvLyBDaGFydHMgdGhhdCBzdXBwb3J0cyB0aGUgZGF0YSB0byBiZSBKU09OO1xuICAgIGxpbmVUeXBlQ2hhcnRzID0gWydMaW5lJywgJ0FyZWEnLCAnQ3VtdWxhdGl2ZSBMaW5lJ10sICAgLy8gQ2hhcnRzIHRoYXQgZG9lcyBub3Qgc3VwcG9ydHMgdGhlIHN0cmluZyB0eXBlIG9mIGRhdGEgaW4gdGhlIHhheGlzIGluIHRoZSBudmQzO1xuICAgIGRhdGFUeXBlQXJyYXkgPSBbJ0N1bXVsYXRpdmUgTGluZScsICdBcmVhJ10sICAgICAvLyBDaGFydHMgdGhhdCBzdXBwb3J0cyB0aGUgZGF0YSB0byBiZSBBcnJheVxuICAgIFNBTVBMRV9EQVRBID0ge1xuICAgICAgICAnZ3JvdXAxJyA6ICdFdXJvcGUnLFxuICAgICAgICAnZ3JvdXAyJyA6ICdBc2lhJyxcbiAgICAgICAgJ2dyb3VwMycgOiAnQW1lcmljYScsXG4gICAgICAgICdncm91cDQnIDogJ0F1c3RyYWxpYSdcbiAgICB9O1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBwaWVcbmV4cG9ydCBjb25zdCBpc1BpZUNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnUGllJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgbGluZVxuZXhwb3J0IGNvbnN0IGlzTGluZUNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnTGluZSc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGJhclxuZXhwb3J0IGNvbnN0IGlzQmFyQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdCYXInO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBkb251dFxuZXhwb3J0IGNvbnN0IGlzRG9udXRDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0RvbnV0JztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgYnViYmxlXG5leHBvcnQgY29uc3QgaXNCdWJibGVDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0J1YmJsZSc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGNvbHVtblxuZXhwb3J0IGNvbnN0IGlzQ29sdW1uQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdDb2x1bW4nO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBhcmVhXG5leHBvcnQgY29uc3QgaXNBcmVhQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdBcmVhJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgYXJlYVxuZXhwb3J0IGNvbnN0IGlzUGllVHlwZSA9IHR5cGUgPT4gaXNQaWVDaGFydCh0eXBlKSB8fCBpc0RvbnV0Q2hhcnQodHlwZSk7XG5cbi8vIFRoZSBmb3JtYXQgb2YgY2hhcnQgZGF0YSBpcyBhcnJheSBvZiBqc29uIG9iamVjdHMgaW4gY2FzZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGNoYXJ0XG5leHBvcnQgY29uc3QgaXNDaGFydERhdGFKU09OID0gdHlwZSA9PiBpbmNsdWRlcyhkYXRhVHlwZUpTT04sIHR5cGUpIHx8ICFpbmNsdWRlcyhjaGFydFR5cGVzLCB0eXBlKTtcblxuLy8gVGhlIGZvcm1hdCBvZiBjaGFydCBkYXRhIGlzIGFycmF5IG9mIG9iamVjdHMgaW4gY2FzZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGNoYXJ0XG5leHBvcnQgY29uc3QgaXNDaGFydERhdGFBcnJheSA9IHR5cGUgPT4gaW5jbHVkZXMoZGF0YVR5cGVBcnJheSwgdHlwZSk7XG5cbi8vIHJldHVybnMgdHJ1ZSBpcyB0aGUgY2hhcnQgdHlwZSBpcyAnbGluZScsICdhcmVhJyBvciAnY3VtdWxhdGl2ZSBsaW5lJyBlbHNlIGZhbHNlXG5leHBvcnQgY29uc3QgaXNMaW5lVHlwZUNoYXJ0ID0gdHlwZSA9PiBpbmNsdWRlcyhsaW5lVHlwZUNoYXJ0cywgdHlwZSk7XG5cbi8vIFgvWSBEb21haW4gcHJvcGVydGllcyBhcmUgc3VwcG9ydGVkIG9ubHkgZm9yIENvbHVtbiBhbmQgQXJlYSBjaGFydHNcbmV4cG9ydCBjb25zdCBpc0F4aXNEb21haW5TdXBwb3J0ZWQgPSB0eXBlID0+IGlzQ29sdW1uQ2hhcnQodHlwZSkgfHwgaXNBcmVhQ2hhcnQodHlwZSk7XG5cbi8vIFJldHVybnMgYmFyIHNwYWNpbmcgdmFsdWVcbmV4cG9ydCBjb25zdCBnZXRCYXJTcGFjaW5nVmFsdWUgPSAodmFsdWUsIHByb3ApID0+IHtcbiAgICBpZiAocHJvcCA9PT0gJ3ZhbHVlJykge1xuICAgICAgICByZXR1cm4gYmFyU3BhY2luZ01hcFt2YWx1ZV07XG4gICAgfVxuICAgIGlmIChwcm9wID09PSAna2V5Jykge1xuICAgICAgICByZXR1cm4gYmFyU3BhY2luZ01hcEludmVydFt2YWx1ZV07XG4gICAgfVxufTtcblxuLy8gUmV0dXJucyByYWRpdXMgdmFsdWVcbmV4cG9ydCBjb25zdCBnZXRSYWRpdXNWYWx1ZSA9ICh2YWx1ZSwgcHJvcCkgPT4ge1xuICAgIGlmIChwcm9wID09PSAndmFsdWUnKSB7XG4gICAgICAgIHJldHVybiBkb251dFJhdGlvTWFwW3ZhbHVlXTtcbiAgICB9XG4gICAgaWYgKHByb3AgPT09ICdrZXknKSB7XG4gICAgICAgIHJldHVybiBkb251dFJhdGlvTWFwSW52ZXJ0W3ZhbHVlXTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm5zIGxhYmVscyBjb25maWdcbmV4cG9ydCBjb25zdCBnZXRMYWJlbFZhbHVlcyA9IChzaG93bGFiZWxzLCBzaG93bGFiZWxzb3V0c2lkZSwgcHJvcCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsc0NvbmZpZzogYW55ID0ge307XG4gICAgc3dpdGNoIChzaG93bGFiZWxzKSB7XG4gICAgICAgIGNhc2UgJ2hpZGUnOlxuICAgICAgICAgICAgbGFiZWxzQ29uZmlnLnNob3dsYWJlbHMgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbnNpZGUnOlxuICAgICAgICAgICAgbGFiZWxzQ29uZmlnLnNob3dsYWJlbHMgPSB0cnVlO1xuICAgICAgICAgICAgbGFiZWxzQ29uZmlnLnNob3dsYWJlbHNvdXRzaWRlID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb3V0c2lkZSc6XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVscyA9IHRydWU7XG4gICAgICAgICAgICBsYWJlbHNDb25maWcuc2hvd2xhYmVsc291dHNpZGUgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbHNDb25maWc7XG59O1xuXG4vLyBDb25zdHJ1Y3QgdGhlIHNhbXBsZSBkYXRhXG5leHBvcnQgY29uc3QgY29uc3RydWN0U2FtcGxlRGF0YSA9IChkYXRhVHlwZSwgeWF4aXNMZW5ndGgsIHNoYXBlKSA9PiB7XG4gICAgbGV0IGZpcnN0X3NlcmllcyA9IFtdLFxuICAgICAgICBzZWNvbmRfc2VyaWVzID0gW10sXG4gICAgICAgIHRoaXJkX3NlcmllcyA9IFtdLFxuICAgICAgICBmaXJzdF9zZXJpZXNfYXJyYXkgPSBbXSxcbiAgICAgICAgc2Vjb25kX3Nlcmllc19hcnJheSA9IFtdLFxuICAgICAgICB0aGlyZF9zZXJpZXNfYXJyYXkgPSBbXSxcbiAgICAgICAgZmlyc3Rfc2VyaWVzX2J1YmJsZSA9IFtdLFxuICAgICAgICBzZWNvbmRfc2VyaWVzX2J1YmJsZSA9IFtdLFxuICAgICAgICB0aGlyZF9zZXJpZXNfYnViYmxlID0gW10sXG4gICAgICAgIGRhdGEgPSBbXTtcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgICAgIGNhc2UgJ2pzb25Gb3JtYXQnOlxuICAgICAgICAgICAgZmlyc3Rfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAxJywgJ3knOiA0MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMicsICd5JzogMTAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDMnLCAneSc6IDUwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgc2Vjb25kX3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMScsICd5JzogMzAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDInLCAneSc6IDQwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAzJywgJ3knOiA3MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXJkX3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMScsICd5JzogMjAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDInLCAneSc6IDgwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAzJywgJ3knOiA2MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRhdGFbMF0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiBmaXJzdF9zZXJpZXMsXG4gICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGRhdGFbMV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogc2Vjb25kX3NlcmllcyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXJkX3NlcmllcyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xpbmVDaGFydEZvcm1hdCc6XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogMSwgJ3knOiA0MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAyLCAneSc6IDEwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDMsICd5JzogNTAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBzZWNvbmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDEsICd5JzogMzAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMiwgJ3knOiA0MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAzLCAneSc6IDcwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDEsICd5JzogMjAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMiwgJ3knOiA4MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAzLCAneSc6IDYwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3NlcmllcyxcbiAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBzZWNvbmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYXJyYXlGb3JtYXQnOlxuICAgICAgICAgICAgZmlyc3Rfc2VyaWVzX2FycmF5ID0gW1xuICAgICAgICAgICAgICAgIFsxLCA0MDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMiwgMTAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzMsIDUwMDAwMDBdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgc2Vjb25kX3Nlcmllc19hcnJheSA9IFtcbiAgICAgICAgICAgICAgICBbMSwgMzAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzIsIDQwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFszLCA3MDAwMDAwXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXJkX3Nlcmllc19hcnJheSA9IFtcbiAgICAgICAgICAgICAgICBbMSwgMjAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzIsIDgwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFszLCA2MDAwMDAwXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRhdGFbMF0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiBmaXJzdF9zZXJpZXNfYXJyYXksXG4gICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGRhdGFbMV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogc2Vjb25kX3Nlcmllc19hcnJheSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXJkX3Nlcmllc19hcnJheSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2J1YmJsZUZvcm1hdCc6XG4gICAgICAgICAgICBzaGFwZSA9IHNoYXBlID09PSAncmFuZG9tJyA/ICBhbGxTaGFwZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYWxsU2hhcGVzLmxlbmd0aCldIDogc2hhcGU7XG4gICAgICAgICAgICBmaXJzdF9zZXJpZXNfYnViYmxlID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDgwLjY2LCAneSc6IDMzNzM5OTAwLCAgJ3NpemUnOiA3OCwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDc5Ljg0LCAneSc6IDgxOTAyMzAwLCAgJ3NpemUnOiA5MCwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDc4LjYsICAneSc6IDU1MjMxMDAsICAgJ3NpemUnOiA0NSwgJ3NoYXBlJzogc2hhcGV9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgc2Vjb25kX3Nlcmllc19idWJibGUgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogNzIuNzMsICd5JzogNzk3MTYyMDAsICAnc2l6ZSc6IDk4LCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogODAuMDUsICd5JzogNjE4MDE2MDAsICAnc2l6ZSc6IDIwLCAnc2hhcGUnOiBzaGFwZX0sXG4gICAgICAgICAgICAgICAgeyd4JzogNzIuNDksICd5JzogNzMxMzcyMDAsICAnc2l6ZSc6IDM0LCAnc2hhcGUnOiBzaGFwZX1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlyZF9zZXJpZXNfYnViYmxlID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDY4LjA5LCAneSc6IDMzNzM5OTAwLCAgJ3NpemUnOiA0NSwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDgxLjU1LCAneSc6IDc0ODU2MDAsICAgJ3NpemUnOiA3OCwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDY4LjYwLCAneSc6IDE0MTg1MDAwMCwgJ3NpemUnOiA1NiwgJ3NoYXBlJzogc2hhcGV9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGF0YVswXSA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGZpcnN0X3Nlcmllc19idWJibGUsXG4gICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGRhdGFbMV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogc2Vjb25kX3Nlcmllc19idWJibGUsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAzKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsyXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlyZF9zZXJpZXNfYnViYmxlLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwM1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGllQ2hhcnRGb3JtYXQnOlxuICAgICAgICAgICAgZGF0YSA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiBTQU1QTEVfREFUQS5ncm91cDEsICd5JzogMTAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogU0FNUExFX0RBVEEuZ3JvdXAyLCAneSc6IDIwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwMywgJ3knOiAzMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiBTQU1QTEVfREFUQS5ncm91cDQsICd5JzogNDAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YVR5cGUgPSB3aWRnZXRDb250ZXh0ID0+IHtcbiAgICBjb25zdCB0eXBlID0gd2lkZ2V0Q29udGV4dC50eXBlO1xuICAgIGlmIChpc0xpbmVDaGFydCh0eXBlKSkge1xuICAgICAgICByZXR1cm4gJ2xpbmVDaGFydEZvcm1hdCc7XG4gICAgfVxuICAgIGlmIChpc1BpZVR5cGUodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuICdwaWVDaGFydEZvcm1hdCc7XG4gICAgfVxuICAgIGlmIChpc0J1YmJsZUNoYXJ0KHR5cGUpKSB7XG4gICAgICAgIHJldHVybiAnYnViYmxlRm9ybWF0JztcbiAgICB9XG4gICAgcmV0dXJuIGlzQ2hhcnREYXRhSlNPTih0eXBlKSA/ICdqc29uRm9ybWF0JyA6ICdhcnJheUZvcm1hdCc7XG59O1xuXG4vLyBTYW1wbGUgZGF0YSB0byBwb3B1bGF0ZSB3aGVuIG5vIGRhdGEgaXMgYm91bmRcbmV4cG9ydCBjb25zdCBnZXRTYW1wbGVEYXRhID0gd2lkZ2V0Q29udGV4dCA9PiBjb25zdHJ1Y3RTYW1wbGVEYXRhKGdldERhdGFUeXBlKHdpZGdldENvbnRleHQpLCBzcGxpdCh3aWRnZXRDb250ZXh0LnlheGlzZGF0YWtleSwgJywnKS5sZW5ndGgsIHdpZGdldENvbnRleHQuc2hhcGUpO1xuXG4vLyBDaGVjayB3aGV0aGVyIFgvWSBEb21haW4gd2FzIHNldCB0byBNaW4gYW5kIGlzIHN1cHBvcnRlZCBmb3IgdGhlIHByZXNlbnQgY2hhcnRcbmV4cG9ydCBjb25zdCBpc0F4aXNEb21haW5WYWxpZCA9ICh3aWRnZXRDb250ZXh0LCBheGlzKSA9PiB7XG4gICAgaWYgKHdpZGdldENvbnRleHRbYXhpcyArICdkb21haW4nXSA9PT0gJ01pbicgJiYgKGlzQXhpc0RvbWFpblN1cHBvcnRlZCh3aWRnZXRDb250ZXh0LnR5cGUpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gQ2hlY2sgd2hldGhlciBtaW4gYW5kIG1heCB2YWx1ZXMgYXJlIGZpbml0ZSBvciBub3RcbmV4cG9ydCBjb25zdCBhcmVNaW5NYXhWYWx1ZXNWYWxpZCA9IHZhbHVlcyA9PiB7XG4gICAgaWYgKGlzRmluaXRlKHZhbHVlcy5taW4pICYmIGlzRmluaXRlKHZhbHVlcy5tYXgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0WVNjYWxlTWluVmFsdWUgPSB2YWx1ZSA9PiB7XG4gICAgY29uc3QgX21pbiA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIC8qIElmIHRoZSBudW1iZXIgaGFzIGEpIGRlY2ltYWwgcGFydCByZXR1cm5pbmcgZmxvb3IgdmFsdWUgLSAwLjFcbiAgICAgYikgbm8gZGVjaW1hbCBwYXJ0IHJldHVybmluZyBmbG9vciB2YWx1ZSAtIDEgKi9cbiAgICByZXR1cm4gTWF0aC5hYnModmFsdWUpIC0gX21pbiA+IDAgPyB2YWx1ZSAtIDAuMSA6IF9taW4gLSAxO1xufTtcblxuLy8gQ2hvb3NlcyB0aGUgZGF0YSBwb2ludHMgb2YgbGluZS9jdW11bGF0aXZlIGxpbmUvYXJlYSBjaGFydCBhbmQgaGlnaGxpZ2h0cyB0aGVtXG5leHBvcnQgY29uc3QgaGlnaGxpZ2h0UG9pbnRzID0gKGlkLCBoaWdobGlnaHRwb2ludHMpID0+IHtcbiAgICBjb25zdCBjaGFydFN2ZyA9IGlkID8gZDMuc2VsZWN0KCcjd21DaGFydCcgKyBpZCArICcgc3ZnJykgOiBkMy5zZWxlY3QoY2hhcnRJZCArICcgc3ZnJyk7XG4gICAgaWYgKGhpZ2hsaWdodHBvaW50cykge1xuICAgICAgICBjaGFydFN2Zy5zZWxlY3RBbGwoJy5udi1wb2ludCcpXG4gICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICc2cHgnKVxuICAgICAgICAgICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCAnMC45NScpXG4gICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS1vcGFjaXR5JywgJzAuOTUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjaGFydFN2Zy5zZWxlY3RBbGwoJy5udi1wb2ludCcpXG4gICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcwcHgnKVxuICAgICAgICAgICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCAnMCcpO1xuICAgIH1cbn07XG5cbi8vIENob29zZXMgdGhlIGxpbmUgb2YgbGluZS9jdW11bGF0aXZlIGxpbmUgYW5kIGluY3JlYXNlcyB0aGUgdGhpY2tuZXNzIG9mIGl0XG5leHBvcnQgY29uc3Qgc2V0TGluZVRoaWNrbmVzcyA9IChpZCwgdGhpY2tuZXNzKSA9PiB7XG4gICAgY29uc3QgY2hhcnRTdmcgPSBpZCA/IGQzLnNlbGVjdCgnI3dtQ2hhcnQnICsgaWQgKyAnIHN2ZycpIDogZDMuc2VsZWN0KGNoYXJ0SWQgKyAnIHN2ZycpO1xuICAgIHRoaWNrbmVzcyA9IHRoaWNrbmVzcyB8fCAxLjU7XG5cbiAgICBjb25zdCBsaW5lcyA9IGNoYXJ0U3ZnLnNlbGVjdEFsbCgnLm52LWxpbmUnKTtcblxuICAgIGlmIChsaW5lcy5zaXplKCkgIT09IDApIHtcbiAgICAgICAgbGluZXMuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIHRoaWNrbmVzcyk7XG4gICAgfVxufTtcblxuLy8gQ29uc3RydWN0aW5nIGEgY29tbW9uIGtleSB2YWx1ZSBtYXAgZm9yIHByZXZpZXcgYW5kIGNhbnZhcyBtb2RlXG5leHBvcnQgY29uc3QgaW5pdFByb3BlcnRpZXMgPSAod2lkZ2V0Q29udGV4dCwgcHJvcGVydHlWYWx1ZU1hcCkgPT4ge1xuICAgIGlmICghcHJvcGVydHlWYWx1ZU1hcCB8fCBpc0VtcHR5T2JqZWN0KHByb3BlcnR5VmFsdWVNYXApKSB7XG4gICAgICAgIHByb3BlcnR5VmFsdWVNYXAgPSB7fTtcbiAgICB9XG4gICAgZm9yRWFjaChiYXNpY1Byb3BlcnRpZXMsIHByb3AgPT4ge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQocHJvcGVydHlWYWx1ZU1hcFtwcm9wXSkpIHtcbiAgICAgICAgICAgIHByb3BlcnR5VmFsdWVNYXBbcHJvcF0gPSB3aWRnZXRDb250ZXh0W3Byb3BdO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlWYWx1ZU1hcDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXROdW1iZXJWYWx1ZSA9ICh2YWx1ZSwgY2FsbGJhY2spID0+IHtcbiAgICByZXR1cm4gaXNOYU4ocGFyc2VJbnQodmFsdWUsIDEwKSkgPyBjYWxsYmFjayh2YWx1ZSwgJ3ZhbHVlJykgOiB2YWx1ZTtcbn07XG5cbi8vIEZvcm1hdHMgdGhlIGdpdmVuIHZhbHVlIGFjY29yZGluZyB0byBkYXRlIGZvcm1hdFxuZXhwb3J0IGNvbnN0IGdldERhdGVGb3JtYXRlZERhdGEgPSAoZGF0ZUZvcm1hdCwgZCkgPT4ge1xuICAgIGRhdGVGb3JtYXQgPSBkYXRlRm9ybWF0IHx8ICcleCc7XG4gICAgLyoqXG4gICAgICogaWYgZGF0ZSB2YWx1ZSBpcyBzdHJpbmcgXCIyMC0wNS0yMDE5XCIgdGhlbiBuZXcgRGF0ZSh2YWx1ZSkgcmV0dXJuIDIwTWF5MjAxOSB3aXRoIGN1cnJlbnQgdGltZSBpbiBJbmRpYSxcbiAgICAgKiB3aGVyZWFzIHRoaXMgd2lsbCByZXR1cm4gMTlNYXkyMDE5IHdpdGggdGltZSBsYWdnaW5nIGZvciBmZXcgaG91cnMuXG4gICAgICogVGhpcyBpcyBiZWNhdXNlIGl0IHJldHVybnMgVVRDIHRpbWUgaS5lLiBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSAoVVRDKS5cbiAgICAgKiBUbyBjcmVhdGUgZGF0ZSBpbiBsb2NhbCB0aW1lIHVzZSBtb21lbnRcbiAgICAgKi9cbiAgICBpZihkYXRlRm9ybWF0ID09ICclYycpIHtcbiAgICAgICAgZGF0ZUZvcm1hdCA9ICclYSAlYiAlZSAlWCAlWSc7XG4gICAgfVxuICAgIHJldHVybiBkMy50aW1lRm9ybWF0KGRhdGVGb3JtYXQpKG5ldyBEYXRlKG1vbWVudChtb21lbnQoZCkuZm9ybWF0KCkpLnZhbHVlT2YoKSkpO1xufTtcbmNvbnN0IHJlbW92ZVRyYWlsaW5nWmVyb3MgPSB2YWx1ZSA9PiB7XG4gICAgaWYoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgLy8gQ29udmVydCB2YWx1ZSB0byBhIHN0cmluZyBpZiBpdCdzIGEgbnVtYmVyXG4gICAgY29uc3Qgc3RyaW5nVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUudG9TdHJpbmcoKSA6IHZhbHVlO1xuXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zXG4gICAgcmV0dXJuIHN0cmluZ1ZhbHVlLnJlcGxhY2UoL1xcLjArKFtBLVphLXpdKikkLywgJyQxJykucmVwbGFjZSgvXFwuKFsxLTldKykwKyhbQS1aYS16XSopJC8sICcuJDEkMicpO1xufTtcblxuLy8gRm9ybWF0cyB0aGUgZ2l2ZW4gdmFsdWUgYWNjb3JkaW5nIHRvIG51bWJlciBmb3JtYXRcbmV4cG9ydCBjb25zdCBnZXROdW1iZXJGb3JtYXRlZERhdGEgPSAobnVtYmVyRm9ybWF0LCBkKSA9PiB7XG4gICAgbGV0IGZvcm1hdHRlZERhdGEsXG4gICAgICAgIGRpdmlkZXIsXG4gICAgICAgIHByZWZpeDtcbiAgICAvLyBmb3JtYXR0aW5nIHRoZSBkYXRhIGJhc2VkIG9uIG51bWJlciBmb3JtYXQgc2VsZWN0ZWRcbiAgICBpZiAobnVtYmVyRm9ybWF0KSB7XG4gICAgICAgIGxldCBudW1iZXJGb3JtYXR0ZXI7XG4gICAgICAgIGlmKG51bWJlckZvcm1hdCA9PSAnVGhvdXNhbmQnIHx8IG51bWJlckZvcm1hdCA9PSAnTWlsbGlvbicgfHwgbnVtYmVyRm9ybWF0ID09ICdCaWxsaW9uJykge1xuICAgICAgICAgICAgbnVtYmVyRm9ybWF0dGVyID0gZDMuZm9ybWF0KCcsLjJzJyk7XG4gICAgICAgIH0gZWxzZSBpZihudW1iZXJGb3JtYXQgPT0gJyUnKSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQoJy4yJScpO1xuICAgICAgICB9ZWxzZSBpZihudW1iZXJGb3JtYXQgPT0gJy5mJykge1xuICAgICAgICAgICAgbnVtYmVyRm9ybWF0dGVyID0gZDMuZm9ybWF0KCcuMmYnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdHRlciA9IGQzLmZvcm1hdChudW1iZXJGb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIGZvcm1hdHRlZERhdGEgPSBudW1iZXJGb3JtYXR0ZXIoZCk7XG5cblxuICAgICAgICAvLyBHZXR0aW5nIHRoZSByZXNwZWN0aXZlIGRpdmlkZXJbMTAwMCwxMDAwMDAwLDEwMDAwMDAwMDBdIGJhc2VkIG9uIHRoZSBudW1iZXIgZm9ybWF0IGNob29zZW5cbiAgICAgICAgZGl2aWRlciA9ICh0aWNrZm9ybWF0c1tudW1iZXJGb3JtYXRdICYmIHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0uZGl2aWRlcikgfHwgMDtcbiAgICAgICAgcHJlZml4ID0gdGlja2Zvcm1hdHNbbnVtYmVyRm9ybWF0XSAmJiB0aWNrZm9ybWF0c1tudW1iZXJGb3JtYXRdLnByZWZpeDtcbiAgICAgICAgaWYgKHByZWZpeCAmJiBkaXZpZGVyICE9PSAwKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWREYXRhID0gZDMuZm9ybWF0KCcuMmYnKShkIC8gZGl2aWRlcikgKyBwcmVmaXg7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBdXRvIGZvcm1hdHRpbmcgdGhlIGRhdGEgd2hlbiBubyBmb3JtYXRpbmcgb3B0aW9uIGlzIGNob3NlblxuICAgICAgICBmb3JtYXR0ZWREYXRhID0gZCA+PSAxMDAwID8gZDMuZm9ybWF0KCcuMXMnKShkKSA6IGQ7XG4gICAgfVxuICAgIGZvcm1hdHRlZERhdGEgPSByZW1vdmVUcmFpbGluZ1plcm9zKGZvcm1hdHRlZERhdGEpO1xuICAgIHJldHVybiBmb3JtYXR0ZWREYXRhO1xufTtcblxuLy8gU2V0IHRoZSB2aXNpYmlsaXR5IHByb3BlcnR5IG9mIHRoZSBjaGFydCB4LHkgYXhpcyBkdWUgdG8gYSBidWcgaW4gdGhlIG52ZDNcbmV4cG9ydCBjb25zdCB0b2dnbGVBeGlzU2hvdyA9IChwcm9wZXJ0eSwgdmFsdWUpID0+IHtcbiAgICBjb25zdCAkeEF4aXMgPSBkMy5zZWxlY3QoY2hhcnRJZCArICcgZy5udi1heGlzLm52LXgnKSxcbiAgICAgICAgJHlBeGlzID0gZDMuc2VsZWN0KGNoYXJ0SWQgKyAnIGcubnYtYXhpcy5udi15Jyk7XG4gICAgaWYgKHByb3BlcnR5ID09PSAnc2hvd3hheGlzJykge1xuICAgICAgICAkeEF4aXMuc3R5bGUoJ3Zpc2liaWxpdHknLCB2YWx1ZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAkeUF4aXMuc3R5bGUoJ3Zpc2liaWxpdHknLCB2YWx1ZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgbW9kaWZ5TGVnZW5kUG9zaXRpb24gPSAod2lkZ2V0Q29udGV4dCwgcG9zaXRpb24sIGlkKSA9PiB7XG4gICAgY29uc3Qgc2hvd0xlZ2VuZCA9IGlzU2hvd0xlZ2VuZCh3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQpLFxuICAgICAgICBjaGFydF9JZCA9IGlkID8gJyN3bUNoYXJ0JyArIGlkIDogY2hhcnRJZCxcbiAgICAgICAgbGVnZW5kV3JhcCA9IGQzLnNlbGVjdChjaGFydF9JZCArICcgLm52LWxlZ2VuZFdyYXAnKSxcbiAgICAgICAgbGVnZW5kUGFkZGluZyA9IDU7XG4gICAgLy8gUmV0dXJuIHdoZW4gc2hvd2xlZ2VuZCBpcyBmYWxzZVxuICAgIGlmICghc2hvd0xlZ2VuZCB8fCAhbGVnZW5kV3JhcFsnX2dyb3VwcyddWzBdWzBdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBvc2l0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgICBjb25zdCBsZWdlbmRXcmFwSGVpZ2h0ID0gbGVnZW5kV3JhcFsnX2dyb3VwcyddWzBdWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgICAgICAgIHdyYXAgPSBkMy5zZWxlY3QoY2hhcnRfSWQgKyAnIC5udi13cmFwJyksXG4gICAgICAgICAgICB3cmFwVHJhbnNmb3JtID0gKHdyYXAgJiYgd3JhcC5hdHRyKCd0cmFuc2Zvcm0nKSkgPyB3cmFwLmF0dHIoJ3RyYW5zZm9ybScpLnJlcGxhY2UoLywgL2csICcsJykgOiAnJyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzID0gL3RyYW5zbGF0ZVxcKFxccyooW15cXHMsKV0rKVsgLF0oW15cXHMsKV0rKS8uZXhlYyh3cmFwVHJhbnNmb3JtKSxcbiAgICAgICAgICAgIGdldENoYXJ0SGVpZ2h0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjaGFydEhlaWdodCA9ICQoY2hhcnRfSWQgKyAnIHN2Zz4ubnZkMy5udi13cmFwJylbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGlmIChjaGFydEhlaWdodCA9PT0gMCkgeyAvLyBmaXggZm9yIElFXG4gICAgICAgICAgICAgICAgICAgIGNoYXJ0SGVpZ2h0ID0gKCQoY2hhcnRfSWQgKyAnIHN2ZycpWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAtIChsZWdlbmRXcmFwSGVpZ2h0ICsgMTUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYXJ0SGVpZ2h0O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgbGVnZW5kV3JhcC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAgLCAnICsgKGdldENoYXJ0SGVpZ2h0KCkgLSBsZWdlbmRXcmFwSGVpZ2h0IC0gbGVnZW5kUGFkZGluZykgKyAnKScpO1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICAgIHdyYXAuYXR0cigndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgnICsgY29vcmRpbmF0ZXNbMV0gKyAnLCcgKyBsZWdlbmRQYWRkaW5nICsgJyknKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbi8vIFJldHVybnMgdmFsdWUgaWYgbGVnZW5kIG5lZWQgdG8gc2hvd24gb3Igbm90XG5leHBvcnQgY29uc3QgaXNTaG93TGVnZW5kID0gdmFsdWUgPT4ge1xuICAgIC8vIE9sZCBwcm9qZWN0cyB3aWxsIGhhdmUgZWl0aGVyIHRydWUgb3IgZmFsc2VcbiAgICBpZiAodmFsdWUgPT09ICdmYWxzZScgfHwgdmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAndHJ1ZScgfHwgdmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIE5ldyBwcm9qZWN0cyB3aWxsIGhhdmUgZWl0aGVyICdIaWRlIExlZ2VuZCcsICdTaG93IFRvcCcsICdTaG93IEJvdHRvbSdcbiAgICByZXR1cm4gdmFsdWUgPT09ICdoaWRlJyA/IGZhbHNlIDogdHJ1ZTtcbn07XG5cbi8qKlxuICogQ3VzdG9taXNlIHRoZSB0b29sdGlwIGZvciBkb251dCAmIHBpZSBjaGFydHMgYW5kIGFsc28gZm9yIGNoYXJ0cyBoYXZpbmcgb25seSBvbmUgdmFsdWUgYXR0YWNoZWQgdG8geWF4aXNcbiAqIEBwYXJhbSBrZXlcbiAqIEBwYXJhbSBsYWJlbFxuICovXG5leHBvcnQgY29uc3QgY3VzdG9taXNlVG9vbHRpcCA9IChjaGFydCwgcHJvcGVydHlWYWx1ZU1hcCwgd2lkZ2V0Q29udGV4dCwgbGFiZWw/KSA9PiB7XG4gICAgY2hhcnQudG9vbHRpcC5jb250ZW50R2VuZXJhdG9yKGtleSA9PiB7XG4gICAgICAgIGxldCB4VmFsdWUgPSBrZXkuZGF0YS54LCB5VmFsdWU7XG4gICAgICAgIHlWYWx1ZSA9IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGtleS5kYXRhLnkpO1xuICAgICAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgIGxhYmVsID0ga2V5LmRhdGEueDtcbiAgICAgICAgICAgIHhWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnPHRhYmxlPicgK1xuICAgICAgICAgICAgJzx0Ym9keT4nICtcbiAgICAgICAgICAgICc8dHIgY2xhc3M9XCJ2YWx1ZVwiPjxiPicgKyB4VmFsdWUgK1xuICAgICAgICAgICAgJzwvYj48L3RyPicgK1xuICAgICAgICAgICAgJzx0cj4nICtcbiAgICAgICAgICAgICc8dGQgY2xhc3M9XCJsZWdlbmQtY29sb3ItZ3VpZGVcIj48ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjonICsga2V5LmNvbG9yICsgJztcIj48L2Rpdj48L3RkPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cImtleVwiPicgKyBsYWJlbCArICc8L3RkPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cInZhbHVlXCI+JyArIHlWYWx1ZSArICc8L3RkPicgK1xuICAgICAgICAgICAgJzwvdHI+JyArXG4gICAgICAgICAgICAnPC90Ym9keT4nICtcbiAgICAgICAgICAgICc8L3RhYmxlPic7XG4gICAgfSk7XG59O1xuXG4vLyBpbnRpYWxpemVzIHRoZSBjaGFydCBvYmVqY3RcbmV4cG9ydCBjb25zdCBpbml0Q2hhcnQgPSAod2lkZ2V0Q29udGV4dCwgeERvbWFpblZhbHVlcywgeURvbWFpblZhbHVlcywgcHJvcGVydHlWYWx1ZU1hcCwgaXNQcmV2aWV3KSA9PiB7XG4gICAgcHJvcGVydHlWYWx1ZU1hcCA9ICBpbml0UHJvcGVydGllcyh3aWRnZXRDb250ZXh0LCBwcm9wZXJ0eVZhbHVlTWFwKTtcbiAgICBsZXQgY2hhcnQsIGNvbG9ycyA9IFtdLCB4YXhpc2xhYmVsLCB5YXhpc2xhYmVsLCBsYWJlbENvbmZpZywgcmFkaXVzLCBiYXJTcGFjaW5nLFxuICAgICAgICBzaG93TGVnZW5kLCB4QXhpc1ZhbHVlLCBoYXNNdWx0aXBsZVlWYWx1ZXM7XG4gICAgY29uc3QgeFZhbHVlOiBhbnkgPSB7fSwgeVZhbHVlOiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHdpZGdldENvbnRleHQudHlwZSkge1xuICAgICAgICBjYXNlICdDb2x1bW4nOlxuICAgICAgICAgICAgYmFyU3BhY2luZyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuYmFyc3BhY2luZywgZ2V0QmFyU3BhY2luZ1ZhbHVlKSB8fCBiYXJTcGFjaW5nTWFwLm1lZGl1bTtcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5yZWR1Y2VYVGlja3MocHJvcGVydHlWYWx1ZU1hcC5yZWR1Y2V4dGlja3MpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZUxhYmVscygwKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnN0YWNrZWQocHJvcGVydHlWYWx1ZU1hcC52aWV3dHlwZSA9PT0gJ1N0YWNrZWQnID8gIHRydWUgOiBmYWxzZSlcbiAgICAgICAgICAgICAgICAuZ3JvdXBTcGFjaW5nKGJhclNwYWNpbmcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0N1bXVsYXRpdmUgTGluZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5jdW11bGF0aXZlTGluZUNoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGRbMF0pXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkWzFdKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTGluZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5saW5lQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZShwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKVxuICAgICAgICAgICAgICAgIC5pbnRlcnBvbGF0ZShwcm9wZXJ0eVZhbHVlTWFwLmludGVycG9sYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0FyZWEnOlxuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMuc3RhY2tlZEFyZWFDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLmNsaXBFZGdlKHRydWUpXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3R5bGUocHJvcGVydHlWYWx1ZU1hcC5hcmVhdmlld3R5cGUpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQmFyJzpcbiAgICAgICAgICAgIGJhclNwYWNpbmcgPSBnZXROdW1iZXJWYWx1ZShwcm9wZXJ0eVZhbHVlTWFwLmJhcnNwYWNpbmcsIGdldEJhclNwYWNpbmdWYWx1ZSkgfHwgYmFyU3BhY2luZ01hcC5tZWRpdW07XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5tdWx0aUJhckhvcml6b250YWxDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3RhY2tlZChwcm9wZXJ0eVZhbHVlTWFwLnZpZXd0eXBlID09PSAnU3RhY2tlZCcgPyAgdHJ1ZSA6IGZhbHNlKVxuICAgICAgICAgICAgICAgIC5zaG93VmFsdWVzKHByb3BlcnR5VmFsdWVNYXAuc2hvd3ZhbHVlcylcbiAgICAgICAgICAgICAgICAuZ3JvdXBTcGFjaW5nKGJhclNwYWNpbmcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BpZSc6XG4gICAgICAgIGNhc2UgJ0RvbnV0JzpcbiAgICAgICAgICAgIGxhYmVsQ29uZmlnID0gZ2V0TGFiZWxWYWx1ZXMocHJvcGVydHlWYWx1ZU1hcC5zaG93bGFiZWxzLCBwcm9wZXJ0eVZhbHVlTWFwLnNob3dsYWJlbHNvdXRzaWRlLCAndmFsdWUnKTtcbiAgICAgICAgICAgIHJhZGl1cyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuZG9udXRyYXRpbywgZ2V0UmFkaXVzVmFsdWUpIHx8IGRvbnV0UmF0aW9NYXAubWVkaXVtO1xuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMucGllQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93TGFiZWxzKGxhYmVsQ29uZmlnLnNob3dsYWJlbHMpXG4gICAgICAgICAgICAgICAgLmxhYmVsVHlwZShwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSlcbiAgICAgICAgICAgICAgICAudmFsdWVGb3JtYXQoZDMuZm9ybWF0KCclJykpXG4gICAgICAgICAgICAgICAgLnRpdGxlKHByb3BlcnR5VmFsdWVNYXAuY2VudGVybGFiZWwpXG4gICAgICAgICAgICAgICAgLmxhYmVsVGhyZXNob2xkKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0aHJlc2hvbGQgfHwgMC4wMSlcbiAgICAgICAgICAgICAgICAubGFiZWxzT3V0c2lkZShsYWJlbENvbmZpZy5zaG93bGFiZWxzb3V0c2lkZSk7XG4gICAgICAgICAgICBpZiAoaXNEb251dENoYXJ0KHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBjaGFydC5kb251dCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAuZG9udXRSYXRpbyhyYWRpdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0eXBlID09PSAna2V5LXZhbHVlJykge1xuICAgICAgICAgICAgICAgIGNoYXJ0LmxhYmVsVHlwZShkID0+IGQuZGF0YS54ICsgJyAnICsgZC5kYXRhLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0J1YmJsZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5zY2F0dGVyQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93RGlzdFgocHJvcGVydHlWYWx1ZU1hcC5zaG93eGRpc3RhbmNlKVxuICAgICAgICAgICAgICAgIC5zaG93RGlzdFkocHJvcGVydHlWYWx1ZU1hcC5zaG93eWRpc3RhbmNlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh4RG9tYWluVmFsdWVzKSB7XG4gICAgICAgIHhWYWx1ZS5taW4gPSB4RG9tYWluVmFsdWVzLm1pbi54IHx8IHhEb21haW5WYWx1ZXMubWluWzBdO1xuICAgICAgICB4VmFsdWUubWF4ID0geERvbWFpblZhbHVlcy5tYXgueCB8fCB4RG9tYWluVmFsdWVzLm1heFswXTtcbiAgICAgICAgLy8gSWYgdGhlIHZhbHVlcyBvbiB0aGUgeCBheGlzIGFyZSBzdHJpbmcgdGhlbiBtaW4gbWF4IHZhbHVlcyBnaXZlcyBJbmZpbml0eVxuICAgICAgICBpZiAoYXJlTWluTWF4VmFsdWVzVmFsaWQoeFZhbHVlKSkge1xuICAgICAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAwLjEgc28gdGhlIG1pbiB2YWx1ZSBpcyBub3QgbWlzc2VkIG91dFxuICAgICAgICAgICAgeFZhbHVlLm1pbiA9IGdldFlTY2FsZU1pblZhbHVlKHhWYWx1ZS5taW4pO1xuICAgICAgICAgICAgY2hhcnQueERvbWFpbihbeFZhbHVlLm1pbiwgeFZhbHVlLm1heF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHlEb21haW5WYWx1ZXMpIHtcbiAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAxIHNvIHRoZSBtaW4gdmFsdWUgaXMgbm90IG1pc3NlZCBvdXRcbiAgICAgICAgeVZhbHVlLm1pbiA9IHlEb21haW5WYWx1ZXMubWluLnkgfHwgeURvbWFpblZhbHVlcy5taW5bMV07XG4gICAgICAgIHlWYWx1ZS5tYXggPSB5RG9tYWluVmFsdWVzLm1heC55IHx8IHlEb21haW5WYWx1ZXMubWF4WzFdO1xuICAgICAgICAvLyBJZiB0aGUgdmFsdWVzIG9uIHRoZSB5IGF4aXMgYXJlIHN0cmluZyBvciBpbnZhbGlkIHRoZW4gbWluIG1heCB2YWx1ZXMgZ2l2ZXMgSW5maW5pdHlcbiAgICAgICAgaWYgKGFyZU1pbk1heFZhbHVlc1ZhbGlkKHlWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIFJlZHVjaW5nIHRoZSBtaW4gdmFsdWUgdG8gMSBzbyB0aGUgbWluIHZhbHVlIGlzIG5vdCBtaXNzZWQgb3V0XG4gICAgICAgICAgICB5VmFsdWUubWluID0gZ2V0WVNjYWxlTWluVmFsdWUoeVZhbHVlLm1pbik7XG4gICAgICAgICAgICBjaGFydC55RG9tYWluKFt5VmFsdWUubWluLCB5VmFsdWUubWF4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXR0aW5nIHRoZSBsZWdlbmQgdHlwZSBjaG9vc2VuIGJ5IHVzZXIgb3IgZGVmYXVsdCBpdCB3aWxsIGJlIGZ1cmlvdXNcbiAgICBjaGFydC5sZWdlbmQudmVycygocHJvcGVydHlWYWx1ZU1hcC5sZWdlbmR0eXBlICYmIHByb3BlcnR5VmFsdWVNYXAubGVnZW5kdHlwZS50b0xvd2VyQ2FzZSgpKSB8fCAnZnVyaW91cycpO1xuXG4gICAgaWYgKCFpbmNsdWRlcyhjaGFydFR5cGVzLCB3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAueShkID0+IGQueSk7XG4gICAgfVxuXG5cbiAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBwaWUvZG9udXQgY2hhcnQgZm9ybWF0dGluZyB0aGUgdmFsdWVzIG9mIGl0XG4gICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSA9PT0gJ3BlcmNlbnQnKSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkMy5mb3JtYXQoJyUnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcHMgaW4gY2FzZSBvZiB0aGUgcGllIGFuZCBkb251dCB3aGVuIGxhYmVsVHlwZSBpcyB2YWx1ZVxuICAgICAgICBjdXN0b21pc2VUb29sdGlwKGNoYXJ0LCBwcm9wZXJ0eVZhbHVlTWFwLCB3aWRnZXRDb250ZXh0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNoYXJ0LnNob3dYQXhpcyhwcm9wZXJ0eVZhbHVlTWFwLnNob3d4YXhpcylcbiAgICAgICAgICAgIC5zaG93WUF4aXMocHJvcGVydHlWYWx1ZU1hcC5zaG93eWF4aXMpO1xuICAgICAgICBjaGFydC5sZWdlbmRQb3NpdGlvbihwcm9wZXJ0eVZhbHVlTWFwLnNob3dsZWdlbmQpO1xuXG4gICAgICAgIC8vIFNldHRpbmcgdGhlIGxhYmVscyBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgZXhwbGljaXRseSBvciB0YWtpbmcgdGhlIGF4aXNrZXlzIGNob3NlblxuICAgICAgICB4YXhpc2xhYmVsID0gcHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsIHx8IHByZXR0aWZ5TGFiZWxzKHdpZGdldENvbnRleHQueGF4aXNkYXRha2V5KSB8fCAneCBjYXB0aW9uJztcbiAgICAgICAgeWF4aXNsYWJlbCA9IHByb3BlcnR5VmFsdWVNYXAueWF4aXNsYWJlbCB8fCBwcmV0dGlmeUxhYmVscyh3aWRnZXRDb250ZXh0LnlheGlzZGF0YWtleSkgfHwgJ3kgY2FwdGlvbic7XG5cbiAgICAgICAgLy8gQ2hlY2tpbmcgaWYgeSBheGlzIGhhcyBtdWx0aXBsZSB2YWx1ZXNcbiAgICAgICAgaWYgKHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5ICYmIHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5LnNwbGl0KCcsJykubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgaGFzTXVsdGlwbGVZVmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcCB0byBzaG93IHlheGlzbGFiZWwsIG9ubHkgaWYgdGhlIHkgYXhpcyBjb250YWlucyBvbmUgdmFsdWVcbiAgICAgICAgaWYgKCFoYXNNdWx0aXBsZVlWYWx1ZXMgJiYgIWlzQnViYmxlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgY3VzdG9taXNlVG9vbHRpcChjaGFydCwgcHJvcGVydHlWYWx1ZU1hcCwgd2lkZ2V0Q29udGV4dCwgeWF4aXNsYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGRpbmcgdGhlIHVuaXRzIHRvIHRoZSBjYXB0aW9ucyBpZiB0aGV5IGFyZSBzcGVjaWZpZWRcbiAgICAgICAgeGF4aXNsYWJlbCArPSBwcm9wZXJ0eVZhbHVlTWFwLnh1bml0cyA/ICcoJyArIHByb3BlcnR5VmFsdWVNYXAueHVuaXRzICsgJyknIDogJyc7XG4gICAgICAgIHlheGlzbGFiZWwgKz0gcHJvcGVydHlWYWx1ZU1hcC55dW5pdHMgPyAnKCcgKyBwcm9wZXJ0eVZhbHVlTWFwLnl1bml0cyArICcpJyA6ICcnO1xuXG4gICAgICAgIGNoYXJ0LnhBeGlzXG4gICAgICAgICAgICAuYXhpc0xhYmVsKHhheGlzbGFiZWwpXG4gICAgICAgICAgICAuYXhpc0xhYmVsRGlzdGFuY2UocHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsZGlzdGFuY2UpXG4gICAgICAgICAgICAuc3RhZ2dlckxhYmVscyhwcm9wZXJ0eVZhbHVlTWFwLnN0YWdnZXJsYWJlbHMpO1xuXG4gICAgICAgIC8vIElmIGRhdGUgZm9ybWF0IHNldCBmb3JtYXQgYmFzZWQgZGF0ZSBmb3JtYXRcbiAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQgfHwgKGlzUHJldmlldyAmJiAhaXNCdWJibGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSkge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2hhcnQueEF4aXMudGlja0Zvcm1hdChkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgeEF4aXNWYWx1ZSA9IGlzUHJldmlldyA/IGRhdGVMaXN0W2QgLSAxXSA6IHdpZGdldENvbnRleHQueERhdGFLZXlBcnJbZF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXREYXRlRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQsIHhBeGlzVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0RGF0ZUZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnhkYXRlZm9ybWF0LCBkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlWYWx1ZU1hcC54bnVtYmVyZm9ybWF0KSB7XG4gICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueG51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gd2lkZ2V0Q29udGV4dC54RGF0YUtleUFycltkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hhcnQueUF4aXNcbiAgICAgICAgICAgIC5heGlzTGFiZWwoeWF4aXNsYWJlbClcbiAgICAgICAgICAgIC5heGlzTGFiZWxEaXN0YW5jZShwcm9wZXJ0eVZhbHVlTWFwLnlheGlzbGFiZWxkaXN0YW5jZSlcbiAgICAgICAgICAgIC5zdGFnZ2VyTGFiZWxzKHByb3BlcnR5VmFsdWVNYXAuc3RhZ2dlcmxhYmVscylcbiAgICAgICAgICAgIC50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueW51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICBpZiAoaXNCYXJDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN1cHBvcnQgZm9yIGN1c3RvbSBjb2xvcnMgaWYgdXNlciBnaXZlcyBkaXJlY3Qgc3RyaW5nIG9mIGNvbG9ycyBpbiB0ZXh0IGJveFxuICAgIGlmIChpc1N0cmluZyhwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycykgJiYgcHJvcGVydHlWYWx1ZU1hcC5jdXN0b21jb2xvcnMpIHtcbiAgICAgICAgY29sb3JzID0gc3BsaXQocHJvcGVydHlWYWx1ZU1hcC5jdXN0b21jb2xvcnMsICcsJyk7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzKSkge1xuICAgICAgICBjb2xvcnMgPSBwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycztcbiAgICB9XG5cbiAgICBzaG93TGVnZW5kID0gaXNTaG93TGVnZW5kKHByb3BlcnR5VmFsdWVNYXAuc2hvd2xlZ2VuZCk7XG4gICAgY2hhcnQuc2hvd0xlZ2VuZChzaG93TGVnZW5kKVxuICAgICAgICAubWFyZ2luKHt0b3A6IHByb3BlcnR5VmFsdWVNYXAub2Zmc2V0dG9wLCByaWdodDogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXRyaWdodCwgYm90dG9tOiBwcm9wZXJ0eVZhbHVlTWFwLm9mZnNldGJvdHRvbSwgbGVmdDogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXRsZWZ0fSlcbiAgICAgICAgLmNvbG9yKGNvbG9ycy5sZW5ndGggPyBjb2xvcnMgOiB0aGVtZXNbcHJvcGVydHlWYWx1ZU1hcC50aGVtZV0uY29sb3JzKTtcblxuICAgIGNoYXJ0LnRvb2x0aXAuZW5hYmxlZChwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKTtcbiAgICB3aWRnZXRDb250ZXh0Lm1lc3NhZ2UgPSBwcm9wZXJ0eVZhbHVlTWFwLm5vZGF0YW1lc3NhZ2UgfHwgJ05vIGRhdGEgZm91bmQnO1xuICAgIC8vIHNldHRpbmcgdGhlIG5vIGRhdGEgbWVzc2FnZVxuICAgIGNoYXJ0Lm5vRGF0YSh3aWRnZXRDb250ZXh0Lm1lc3NhZ2UpO1xuXG4gICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpICYmIHdpZGdldENvbnRleHQuaGlnaGxpZ2h0cG9pbnRzKSB7XG4gICAgICAgIGNoYXJ0LmRpc3BhdGNoLm9uKCdzdGF0ZUNoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcG9zdFBsb3RDaGFydFByb2Nlc3Mod2lkZ2V0Q29udGV4dCksIDEwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQgJiYgKHdpZGdldENvbnRleHQudHlwZSA9PT0gJ0RvbnV0JyB8fCB3aWRnZXRDb250ZXh0LnR5cGUgPT09ICdQaWUnKSkge1xuICAgICAgICBpZih3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIGNoYXJ0LmxlZ2VuZFBvc2l0aW9uKCdyaWdodCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGFydDtcbn07XG5cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjb25zdCBwb3N0UGxvdENoYXJ0UHJvY2VzcyA9ICh3aWRnZXRDb250ZXh0LCBpc1ByZXZpZXc/KSA9PiB7XG4gICAgY29uc3QgaWQgPSBpc1ByZXZpZXcgPyBudWxsIDogd2lkZ2V0Q29udGV4dC4kaWQ7XG4gICAgLy8gSWYgdXNlciBzZXRzIHRvIGhpZ2hsaWdodCB0aGUgZGF0YSBwb2ludHMgYW5kIGluY3JlYXNlIHRoZSB0aGlja25lc3Mgb2YgdGhlIGxpbmVcbiAgICBpZiAoaXNMaW5lVHlwZUNoYXJ0KHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICBzZXRMaW5lVGhpY2tuZXNzKGlkLCB3aWRnZXRDb250ZXh0LmxpbmV0aGlja25lc3MpO1xuICAgICAgIGhpZ2hsaWdodFBvaW50cyhpZCwgd2lkZ2V0Q29udGV4dC5oaWdobGlnaHRwb2ludHMpO1xuICAgIH1cbiAgICAvLyBNb2RpZnlpbmcgdGhlIGxlZ2VuZCBwb3NpdGlvbiBvbmx5IHdoZW4gbGVnZW5kIGlzIHNob3duXG4gICAgLy8gaWYgKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCkge1xuICAgIC8vICAgICBtb2RpZnlMZWdlbmRQb3NpdGlvbih3aWRnZXRDb250ZXh0LCB3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQsIGlkKTtcbiAgICAvLyB9XG59O1xuXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY29uc3QgZ2V0RGF0ZUxpc3QgPSAoKSA9PiBkYXRlTGlzdDtcblxuIl19
721
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY2hhcnQvc3JjL2NoYXJ0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUUsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBT3JHLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUNwRyxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXpGLE1BQU0sUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsRUFDdkQsTUFBTSxHQUFHO0lBQ0wsYUFBYSxFQUFFO1FBQ1gsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNwTyxPQUFPLEVBQUU7WUFDTCxpQkFBaUIsRUFBRSxTQUFTO1lBQzVCLFdBQVcsRUFBRSxTQUFTO1NBQ3pCO0tBQ0o7SUFD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QUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLGFBQWE7QUFDYixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFVLEVBQUUsRUFBRTtJQUM5RCxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUNoRCxtRkFBbUY7SUFDbkYsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxlQUFlLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsMERBQTBEO0lBQzFELGtDQUFrQztJQUNsQyx5RUFBeUU7SUFDekUsSUFBSTtBQUNSLENBQUMsQ0FBQztBQUVGLGFBQWE7QUFDYixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0VtcHR5T2JqZWN0LCBwcmV0dGlmeUxhYmVsc30gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtmb3JFYWNoLCBpbmNsdWRlcywgaW52ZXJ0LCBpc0FycmF5LCBpc0Zpbml0ZSwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkLCBzcGxpdH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5cbmRlY2xhcmUgY29uc3QgbW9tZW50O1xuZGVjbGFyZSBjb25zdCBkMywgbnY7XG5cbmV4cG9ydCBjb25zdCBjaGFydFR5cGVzID0gWydDb2x1bW4nLCAnTGluZScsICdBcmVhJywgJ0N1bXVsYXRpdmUgTGluZScsICdCYXInLCAnUGllJywgJ0RvbnV0JywgJ0J1YmJsZSddLFxuICAgIGFsbFNoYXBlcyA9IFsnY2lyY2xlJywgJ3NxdWFyZScsICdkaWFtb25kJywgJ2Nyb3NzJywgJ3RyaWFuZ2xlLXVwJywgJ3RyaWFuZ2xlLWRvd24nXTtcblxuY29uc3QgZGF0ZUxpc3QgPSBbJzAxLzAxLzIwMDEnLCAnMDEvMDEvMjAwMicsICcwMS8wMS8yMDAzJ10sXG4gICAgdGhlbWVzID0ge1xuICAgICAgICAnVGVycmVzdHJpYWwnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzFmNzdiNCcsICcjYWVjN2U4JywgJyNmZjdmMGUnLCAnI2ZmYmI3OCcsICcjMmNhMDJjJywgJyM5OGRmOGEnLCAnI2Q2MjcyOCcsICcjZmY5ODk2JywgJyM5NDY3YmQnLCAnI2M1YjBkNScsICcjOGM1NjRiJywgJyNjNDljOTQnLCAnI2UzNzdjMicsICcjZjdiNmQyJywgJyM3ZjdmN2YnLCAnI2M3YzdjNycsICcjYmNiZDIyJywgJyNkYmRiOGQnLCAnIzE3YmVjZicsICcjOWVkYWU1J10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjZGU3ZDI4JyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdBbm5hYmVsbGUnOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzM5M2I3OScsICcjNTI1NGEzJywgJyM2YjZlY2YnLCAnIzljOWVkZScsICcjNjM3OTM5JywgJyM4Y2EyNTInLCAnI2I1Y2Y2YicsICcjY2VkYjljJywgJyM4YzZkMzEnLCAnI2JkOWUzOScsICcjZTdiYTUyJywgJyNlN2NiOTQnLCAnIzg0M2MzOScsICcjYWQ0OTRhJywgJyNkNjYxNmInLCAnI2U3OTY5YycsICcjN2I0MTczJywgJyNhNTUxOTQnLCAnI2NlNmRiZCcsICcjZGU5ZWQ2J10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjMmUzMDZmJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdBenVyZSc6IHtcbiAgICAgICAgICAgIGNvbG9yczogWycjMzE4MmJkJywgJyM2YmFlZDYnLCAnIzllY2FlMScsICcjYzZkYmVmJywgJyNlNjU1MGQnLCAnI2ZkOGQzYycsICcjZmRhZTZiJywgJyNmZGQwYTInLCAnIzMxYTM1NCcsICcjNzRjNDc2JywgJyNhMWQ5OWInLCAnI2M3ZTljMCcsICcjNzU2YmIxJywgJyM5ZTlhYzgnLCAnI2JjYmRkYycsICcjZGFkYWViJywgJyM2MzYzNjMnLCAnIzk2OTY5NicsICcjYmRiZGJkJywgJyNkOWQ5ZDknXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZENvbG9yJzogJyMzMTgyYmQnLFxuICAgICAgICAgICAgICAgICd0ZXh0Q29sb3InOiAnI0ZGRkZGRidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ1JldHJvJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMwY2E3YTEnLCAnI2ZmYTYxNScsICcjMzM0OTU3JywgJyNhY2M1YzInLCAnIzk4OGY5MCcsICcjOGFjY2M5JywgJyM1MTUxNTEnLCAnI2YyNzg2MScsICcjMzZjOWZkJywgJyM3OTQ2NjgnLCAnIzBmNzA5ZCcsICcjMGQyNzM4JywgJyM0NGJlNzgnLCAnIzRhMTgzOScsICcjNmEzOTNmJywgJyM1NTdkOGInLCAnIzZjMzMxYycsICcjMWMxYzFjJywgJyM4NjE1MDAnLCAnIzA5NTYyYSddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzgwNTEzYScsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnTWVsbG93Jzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyNmMGRjYmYnLCAnIzg4Yzg3NycsICcjYWViOTE4JywgJyMyZTJjMjMnLCAnI2RkZGRkMicsICcjZGZlOTU2JywgJyM0Yzk2M2InLCAnIzVkMzgwMScsICcjZTFlZWMzJywgJyNjZDg0NzInLCAnI2ZjZmFiMycsICcjOWE0NjM1JywgJyM5Mjk1YWQnLCAnIzJlM2YxMicsICcjNTY1Njc3JywgJyM1NTdkOGInLCAnIzRmNGQwMicsICcjMGMwYzFiJywgJyM4MzMzMjQnLCAnIzI0MTIwZSddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzdjOWU3MycsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnT3JpZW50Jzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyNhODAwMDAnLCAnI2NjNmMzYycsICcjZjBlNDAwJywgJyMwMDAwODQnLCAnI2ZjY2M2YycsICcjMDA5YzZjJywgJyNjYzMwOWMnLCAnIzc4Y2MwMCcsICcjZmM4NGU0JywgJyM0OGU0ZmMnLCAnIzQ4NzhkOCcsICcjMTg2YzBjJywgJyM2MDYwNjAnLCAnI2E4YThhOCcsICcjMDAwMDAwJywgJyNkN2Q3ZDcnLCAnIzc1YTA2ZScsICcjMTkwZDBiJywgJyM4ODg4ODgnLCAnIzY5NGI4NCddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnI2MxNDI0MicsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnR3JheVNjYWxlJzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyMxNDE0MTQnLCAnIzM1MzUzNScsICcjNWI1YjViJywgJyM4NDg0ODQnLCAnI2E4YThhOCcsICcjYzNjM2MzJywgJyNlMGUwZTAnLCAnI2M4YzhjOCcsICcjYTVhNWE1JywgJyM4Nzg3ODcnLCAnIzY1NjU2NScsICcjNGU0ZTRlJywgJyMzMDMwMzAnLCAnIzFjMWMxYycsICcjNGY0ZjRmJywgJyMzYjNiM2InLCAnIzc1NzU3NScsICcjNjA2MDYwJywgJyM4Njg2ODYnLCAnI2MxYzFjMSddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzU3NTc1NycsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnRmx5ZXInOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFsnIzNmNDU0YycsICcjNWE2NDZlJywgJyM4NDg3NzgnLCAnI2NlZGVkZicsICcjNzRjNGRkJywgJyMwOTQ2ZWQnLCAnIzM4MGJiMScsICcjMDAwZmYwJywgJyNmNTRhMjMnLCAnIzFkYjI2MicsICcjYmNhM2FhJywgJyNmZmE1MDAnLCAnI2E4NmIzMicsICcjNjNhMThjJywgJyM1Njc5NWUnLCAnIzkzNDM0MycsICcjYjc1ZjVmJywgJyM3NTJkMmQnLCAnIzRlMTExMScsICcjOTIwNjA2J10sXG4gICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcic6ICcjNDc2MzdjJyxcbiAgICAgICAgICAgICAgICAndGV4dENvbG9yJzogJyNGRkZGRkYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdMdW1pbm9zaXR5Jzoge1xuICAgICAgICAgICAgY29sb3JzOiBbJyNGRkZGRkYnLCAnI2U0ZTRlNCcsICcjMDBiY2Q0JywgJyNmMGRkMmYnLCAnIzAwYWFiZicsICcjMDE4Mzc2JywgJyNlOTFlNjMnLCAnIzM5ZTVkNCcsICcjZmY2ZDZkJywgJyMwMGZmNzYnLCAnI2ZmOTgwMCcsICcjOTY5Njk2JywgJyNmZjQyMDAnLCAnI2UwMDAwMCcsICcjOTVjYmU1JywgJyM1MzMxZmYnLCAnI2ZmZjRhNycsICcjZTdhODAwJywgJyMwMDYxZTQnLCAnI2Q1ZTdmZiddLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kQ29sb3InOiAnIzQ3NjM3YycsXG4gICAgICAgICAgICAgICAgJ3RleHRDb2xvcic6ICcjRkZGRkZGJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBiYXNpY1Byb3BlcnRpZXMgPSBbJ3hheGlzbGFiZWwnLCAneWF4aXNsYWJlbCcsICd4dW5pdHMnLCAneXVuaXRzJywgJ3hudW1iZXJmb3JtYXQnLCAneGRhdGVmb3JtYXQnLCAneW51bWJlcmZvcm1hdCcsXG4gICAgICAgICdzaG93dmFsdWVzJywgJ3Nob3dsYWJlbHMnLCAndmlld3R5cGUnLCAnYXJlYXZpZXd0eXBlJywgJ3N0YWdnZXJsYWJlbHMnLCAncmVkdWNleHRpY2tzJywgJ29mZnNldHRvcCcsICdvZmZzZXRib3R0b20nLCAnb2Zmc2V0cmlnaHQnLCAnb2Zmc2V0bGVmdCcsXG4gICAgICAgICdiYXJzcGFjaW5nJywgJ3hheGlzbGFiZWxkaXN0YW5jZScsICd5YXhpc2xhYmVsZGlzdGFuY2UnLCAndGhlbWUnLCAnbGFiZWx0eXBlJywgJ2RvbnV0cmF0aW8nLCAnc2hvd2xhYmVsc291dHNpZGUnLCAnc2hvd3hkaXN0YW5jZScsICdzaG93eWRpc3RhbmNlJywgJ3NoYXBlJywgJ25vZGF0YW1lc3NhZ2UnLCAnY2FwdGlvbnMnLCAnc2hvd3hheGlzJywgJ3Nob3d5YXhpcycsXG4gICAgICAgICdjZW50ZXJsYWJlbCcsICdjdXN0b21jb2xvcnMnLCAnc2hvd2xlZ2VuZCcsICdsZWdlbmR0eXBlJywgJ3hkb21haW4nLCAneWRvbWFpbicsICd0b29sdGlwcycsICdsaW5ldGhpY2tuZXNzJywgJ2hpZ2hsaWdodHBvaW50cycsICdpbnRlcnBvbGF0aW9uJywgJ2xhYmVsdGhyZXNob2xkJ10sXG4gICAgYmFyU3BhY2luZ01hcCA9IHtcbiAgICAgICAgJ3NtYWxsJyA6IDAuMyxcbiAgICAgICAgJ21lZGl1bScgOiAwLjUsXG4gICAgICAgICdsYXJnZScgOiAwLjhcbiAgICB9LFxuICAgIGRvbnV0UmF0aW9NYXAgPSB7XG4gICAgICAgICdzbWFsbCcgOiAwLjMsXG4gICAgICAgICdtZWRpdW0nIDogMC42LFxuICAgICAgICAnbGFyZ2UnIDogMC43XG4gICAgfSxcbiAgICBiYXJTcGFjaW5nTWFwSW52ZXJ0ID0gaW52ZXJ0KGJhclNwYWNpbmdNYXApLFxuICAgIGRvbnV0UmF0aW9NYXBJbnZlcnQgPSBpbnZlcnQoZG9udXRSYXRpb01hcCksXG4gICAgdGlja2Zvcm1hdHMgPSB7XG4gICAgICAgICdUaG91c2FuZCc6IHtcbiAgICAgICAgICAgICdwcmVmaXgnOiAnSycsXG4gICAgICAgICAgICAnZGl2aWRlcic6IDEwMDBcbiAgICAgICAgfSxcbiAgICAgICAgJ01pbGxpb24nIDoge1xuICAgICAgICAgICAgJ3ByZWZpeCc6ICdNJyxcbiAgICAgICAgICAgICdkaXZpZGVyJzogMTAwMDAwMFxuICAgICAgICB9LFxuICAgICAgICAnQmlsbGlvbicgOiB7XG4gICAgICAgICAgICAncHJlZml4JzogJ0InLFxuICAgICAgICAgICAgJ2RpdmlkZXInOiAxMDAwMDAwMDAwXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNoYXJ0SWQgPSAnI3ByZXZpZXctY2hhcnQnLFxuICAgIGRhdGFUeXBlSlNPTiA9IFsnQ29sdW1uJywgJ0xpbmUnLCAnUGllJywgJ0JhcicsICdEb251dCcsICdCdWJibGUnXSwgICAgLy8gQ2hhcnRzIHRoYXQgc3VwcG9ydHMgdGhlIGRhdGEgdG8gYmUgSlNPTjtcbiAgICBsaW5lVHlwZUNoYXJ0cyA9IFsnTGluZScsICdBcmVhJywgJ0N1bXVsYXRpdmUgTGluZSddLCAgIC8vIENoYXJ0cyB0aGF0IGRvZXMgbm90IHN1cHBvcnRzIHRoZSBzdHJpbmcgdHlwZSBvZiBkYXRhIGluIHRoZSB4YXhpcyBpbiB0aGUgbnZkMztcbiAgICBkYXRhVHlwZUFycmF5ID0gWydDdW11bGF0aXZlIExpbmUnLCAnQXJlYSddLCAgICAgLy8gQ2hhcnRzIHRoYXQgc3VwcG9ydHMgdGhlIGRhdGEgdG8gYmUgQXJyYXlcbiAgICBTQU1QTEVfREFUQSA9IHtcbiAgICAgICAgJ2dyb3VwMScgOiAnRXVyb3BlJyxcbiAgICAgICAgJ2dyb3VwMicgOiAnQXNpYScsXG4gICAgICAgICdncm91cDMnIDogJ0FtZXJpY2EnLFxuICAgICAgICAnZ3JvdXA0JyA6ICdBdXN0cmFsaWEnXG4gICAgfTtcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgcGllXG5leHBvcnQgY29uc3QgaXNQaWVDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ1BpZSc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGxpbmVcbmV4cG9ydCBjb25zdCBpc0xpbmVDaGFydCA9IHR5cGUgPT4gdHlwZSA9PT0gJ0xpbmUnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBiYXJcbmV4cG9ydCBjb25zdCBpc0JhckNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnQmFyJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgZG9udXRcbmV4cG9ydCBjb25zdCBpc0RvbnV0Q2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdEb251dCc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGJ1YmJsZVxuZXhwb3J0IGNvbnN0IGlzQnViYmxlQ2hhcnQgPSB0eXBlID0+IHR5cGUgPT09ICdCdWJibGUnO1xuXG4vLyByZXR1cm5zIHRydWUgaWYgY2hhcnQgdHlwZSBpcyBjb2x1bW5cbmV4cG9ydCBjb25zdCBpc0NvbHVtbkNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnQ29sdW1uJztcblxuLy8gcmV0dXJucyB0cnVlIGlmIGNoYXJ0IHR5cGUgaXMgYXJlYVxuZXhwb3J0IGNvbnN0IGlzQXJlYUNoYXJ0ID0gdHlwZSA9PiB0eXBlID09PSAnQXJlYSc7XG5cbi8vIHJldHVybnMgdHJ1ZSBpZiBjaGFydCB0eXBlIGlzIGFyZWFcbmV4cG9ydCBjb25zdCBpc1BpZVR5cGUgPSB0eXBlID0+IGlzUGllQ2hhcnQodHlwZSkgfHwgaXNEb251dENoYXJ0KHR5cGUpO1xuXG4vLyBUaGUgZm9ybWF0IG9mIGNoYXJ0IGRhdGEgaXMgYXJyYXkgb2YganNvbiBvYmplY3RzIGluIGNhc2Ugb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBvZiBjaGFydFxuZXhwb3J0IGNvbnN0IGlzQ2hhcnREYXRhSlNPTiA9IHR5cGUgPT4gaW5jbHVkZXMoZGF0YVR5cGVKU09OLCB0eXBlKSB8fCAhaW5jbHVkZXMoY2hhcnRUeXBlcywgdHlwZSk7XG5cbi8vIFRoZSBmb3JtYXQgb2YgY2hhcnQgZGF0YSBpcyBhcnJheSBvZiBvYmplY3RzIGluIGNhc2Ugb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBvZiBjaGFydFxuZXhwb3J0IGNvbnN0IGlzQ2hhcnREYXRhQXJyYXkgPSB0eXBlID0+IGluY2x1ZGVzKGRhdGFUeXBlQXJyYXksIHR5cGUpO1xuXG4vLyByZXR1cm5zIHRydWUgaXMgdGhlIGNoYXJ0IHR5cGUgaXMgJ2xpbmUnLCAnYXJlYScgb3IgJ2N1bXVsYXRpdmUgbGluZScgZWxzZSBmYWxzZVxuZXhwb3J0IGNvbnN0IGlzTGluZVR5cGVDaGFydCA9IHR5cGUgPT4gaW5jbHVkZXMobGluZVR5cGVDaGFydHMsIHR5cGUpO1xuXG4vLyBYL1kgRG9tYWluIHByb3BlcnRpZXMgYXJlIHN1cHBvcnRlZCBvbmx5IGZvciBDb2x1bW4gYW5kIEFyZWEgY2hhcnRzXG5leHBvcnQgY29uc3QgaXNBeGlzRG9tYWluU3VwcG9ydGVkID0gdHlwZSA9PiBpc0NvbHVtbkNoYXJ0KHR5cGUpIHx8IGlzQXJlYUNoYXJ0KHR5cGUpO1xuXG4vLyBSZXR1cm5zIGJhciBzcGFjaW5nIHZhbHVlXG5leHBvcnQgY29uc3QgZ2V0QmFyU3BhY2luZ1ZhbHVlID0gKHZhbHVlLCBwcm9wKSA9PiB7XG4gICAgaWYgKHByb3AgPT09ICd2YWx1ZScpIHtcbiAgICAgICAgcmV0dXJuIGJhclNwYWNpbmdNYXBbdmFsdWVdO1xuICAgIH1cbiAgICBpZiAocHJvcCA9PT0gJ2tleScpIHtcbiAgICAgICAgcmV0dXJuIGJhclNwYWNpbmdNYXBJbnZlcnRbdmFsdWVdO1xuICAgIH1cbn07XG5cbi8vIFJldHVybnMgcmFkaXVzIHZhbHVlXG5leHBvcnQgY29uc3QgZ2V0UmFkaXVzVmFsdWUgPSAodmFsdWUsIHByb3ApID0+IHtcbiAgICBpZiAocHJvcCA9PT0gJ3ZhbHVlJykge1xuICAgICAgICByZXR1cm4gZG9udXRSYXRpb01hcFt2YWx1ZV07XG4gICAgfVxuICAgIGlmIChwcm9wID09PSAna2V5Jykge1xuICAgICAgICByZXR1cm4gZG9udXRSYXRpb01hcEludmVydFt2YWx1ZV07XG4gICAgfVxufTtcblxuLy8gUmV0dXJucyBsYWJlbHMgY29uZmlnXG5leHBvcnQgY29uc3QgZ2V0TGFiZWxWYWx1ZXMgPSAoc2hvd2xhYmVscywgc2hvd2xhYmVsc291dHNpZGUsIHByb3ApID0+IHtcbiAgICBjb25zdCBsYWJlbHNDb25maWc6IGFueSA9IHt9O1xuICAgIHN3aXRjaCAoc2hvd2xhYmVscykge1xuICAgICAgICBjYXNlICdoaWRlJzpcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW5zaWRlJzpcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxhYmVsc0NvbmZpZy5zaG93bGFiZWxzb3V0c2lkZSA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ291dHNpZGUnOlxuICAgICAgICAgICAgbGFiZWxzQ29uZmlnLnNob3dsYWJlbHMgPSB0cnVlO1xuICAgICAgICAgICAgbGFiZWxzQ29uZmlnLnNob3dsYWJlbHNvdXRzaWRlID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWxzQ29uZmlnO1xufTtcblxuLy8gQ29uc3RydWN0IHRoZSBzYW1wbGUgZGF0YVxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFNhbXBsZURhdGEgPSAoZGF0YVR5cGUsIHlheGlzTGVuZ3RoLCBzaGFwZSkgPT4ge1xuICAgIGxldCBmaXJzdF9zZXJpZXMgPSBbXSxcbiAgICAgICAgc2Vjb25kX3NlcmllcyA9IFtdLFxuICAgICAgICB0aGlyZF9zZXJpZXMgPSBbXSxcbiAgICAgICAgZmlyc3Rfc2VyaWVzX2FycmF5ID0gW10sXG4gICAgICAgIHNlY29uZF9zZXJpZXNfYXJyYXkgPSBbXSxcbiAgICAgICAgdGhpcmRfc2VyaWVzX2FycmF5ID0gW10sXG4gICAgICAgIGZpcnN0X3Nlcmllc19idWJibGUgPSBbXSxcbiAgICAgICAgc2Vjb25kX3Nlcmllc19idWJibGUgPSBbXSxcbiAgICAgICAgdGhpcmRfc2VyaWVzX2J1YmJsZSA9IFtdLFxuICAgICAgICBkYXRhID0gW107XG4gICAgc3dpdGNoIChkYXRhVHlwZSkge1xuICAgICAgICBjYXNlICdqc29uRm9ybWF0JzpcbiAgICAgICAgICAgIGZpcnN0X3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMScsICd5JzogNDAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDInLCAneSc6IDEwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAzJywgJ3knOiA1MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHNlY29uZF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDEnLCAneSc6IDMwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAyJywgJ3knOiA0MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMycsICd5JzogNzAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlyZF9zZXJpZXMgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogJzAxLzAxLzIwMDEnLCAneSc6IDIwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6ICcwMS8wMS8yMDAyJywgJ3knOiA4MDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAnMDEvMDEvMjAwMycsICd5JzogNjAwMDAwMH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBkYXRhWzBdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlczogZmlyc3Rfc2VyaWVzLFxuICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzFdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHNlY29uZF9zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAzKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsyXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlyZF9zZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsaW5lQ2hhcnRGb3JtYXQnOlxuICAgICAgICAgICAgZmlyc3Rfc2VyaWVzID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDEsICd5JzogNDAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMiwgJ3knOiAxMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiAzLCAneSc6IDUwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgc2Vjb25kX3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAxLCAneSc6IDMwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDIsICd5JzogNDAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMywgJ3knOiA3MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXJkX3NlcmllcyA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiAxLCAneSc6IDIwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IDIsICd5JzogODAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogMywgJ3knOiA2MDAwMDAwfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRhdGFbMF0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiBmaXJzdF9zZXJpZXMsXG4gICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGRhdGFbMV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogc2Vjb25kX3NlcmllcyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXJkX3NlcmllcyxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FycmF5Rm9ybWF0JzpcbiAgICAgICAgICAgIGZpcnN0X3Nlcmllc19hcnJheSA9IFtcbiAgICAgICAgICAgICAgICBbMSwgNDAwMDAwMF0sXG4gICAgICAgICAgICAgICAgWzIsIDEwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFszLCA1MDAwMDAwXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHNlY29uZF9zZXJpZXNfYXJyYXkgPSBbXG4gICAgICAgICAgICAgICAgWzEsIDMwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFsyLCA0MDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMywgNzAwMDAwMF1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlyZF9zZXJpZXNfYXJyYXkgPSBbXG4gICAgICAgICAgICAgICAgWzEsIDIwMDAwMDBdLFxuICAgICAgICAgICAgICAgIFsyLCA4MDAwMDAwXSxcbiAgICAgICAgICAgICAgICBbMywgNjAwMDAwMF1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBkYXRhWzBdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlczogZmlyc3Rfc2VyaWVzX2FycmF5LFxuICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzFdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHNlY29uZF9zZXJpZXNfYXJyYXksXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5YXhpc0xlbmd0aCA+PSAzKSB7XG4gICAgICAgICAgICAgICAgZGF0YVsyXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlyZF9zZXJpZXNfYXJyYXksXG4gICAgICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdidWJibGVGb3JtYXQnOlxuICAgICAgICAgICAgc2hhcGUgPSBzaGFwZSA9PT0gJ3JhbmRvbScgPyAgYWxsU2hhcGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFsbFNoYXBlcy5sZW5ndGgpXSA6IHNoYXBlO1xuICAgICAgICAgICAgZmlyc3Rfc2VyaWVzX2J1YmJsZSA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiA4MC42NiwgJ3knOiAzMzczOTkwMCwgICdzaXplJzogNzgsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA3OS44NCwgJ3knOiA4MTkwMjMwMCwgICdzaXplJzogOTAsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA3OC42LCAgJ3knOiA1NTIzMTAwLCAgICdzaXplJzogNDUsICdzaGFwZSc6IHNoYXBlfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHNlY29uZF9zZXJpZXNfYnViYmxlID0gW1xuICAgICAgICAgICAgICAgIHsneCc6IDcyLjczLCAneSc6IDc5NzE2MjAwLCAgJ3NpemUnOiA5OCwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDgwLjA1LCAneSc6IDYxODAxNjAwLCAgJ3NpemUnOiAyMCwgJ3NoYXBlJzogc2hhcGV9LFxuICAgICAgICAgICAgICAgIHsneCc6IDcyLjQ5LCAneSc6IDczMTM3MjAwLCAgJ3NpemUnOiAzNCwgJ3NoYXBlJzogc2hhcGV9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdGhpcmRfc2VyaWVzX2J1YmJsZSA9IFtcbiAgICAgICAgICAgICAgICB7J3gnOiA2OC4wOSwgJ3knOiAzMzczOTkwMCwgICdzaXplJzogNDUsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA4MS41NSwgJ3knOiA3NDg1NjAwLCAgICdzaXplJzogNzgsICdzaGFwZSc6IHNoYXBlfSxcbiAgICAgICAgICAgICAgICB7J3gnOiA2OC42MCwgJ3knOiAxNDE4NTAwMDAsICdzaXplJzogNTYsICdzaGFwZSc6IHNoYXBlfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRhdGFbMF0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiBmaXJzdF9zZXJpZXNfYnViYmxlLFxuICAgICAgICAgICAgICAgIGtleTogU0FNUExFX0RBVEEuZ3JvdXAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHlheGlzTGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICBkYXRhWzFdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHNlY29uZF9zZXJpZXNfYnViYmxlLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNBTVBMRV9EQVRBLmdyb3VwMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeWF4aXNMZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgIGRhdGFbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcmRfc2VyaWVzX2J1YmJsZSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTQU1QTEVfREFUQS5ncm91cDNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BpZUNoYXJ0Rm9ybWF0JzpcbiAgICAgICAgICAgIGRhdGEgPSBbXG4gICAgICAgICAgICAgICAgeyd4JzogU0FNUExFX0RBVEEuZ3JvdXAxLCAneSc6IDEwMDAwMDB9LFxuICAgICAgICAgICAgICAgIHsneCc6IFNBTVBMRV9EQVRBLmdyb3VwMiwgJ3knOiAyMDAwMDAwfSxcbiAgICAgICAgICAgICAgICB7J3gnOiBTQU1QTEVfREFUQS5ncm91cDMsICd5JzogMzAwMDAwMH0sXG4gICAgICAgICAgICAgICAgeyd4JzogU0FNUExFX0RBVEEuZ3JvdXA0LCAneSc6IDQwMDAwMDB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGFUeXBlID0gd2lkZ2V0Q29udGV4dCA9PiB7XG4gICAgY29uc3QgdHlwZSA9IHdpZGdldENvbnRleHQudHlwZTtcbiAgICBpZiAoaXNMaW5lQ2hhcnQodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuICdsaW5lQ2hhcnRGb3JtYXQnO1xuICAgIH1cbiAgICBpZiAoaXNQaWVUeXBlKHR5cGUpKSB7XG4gICAgICAgIHJldHVybiAncGllQ2hhcnRGb3JtYXQnO1xuICAgIH1cbiAgICBpZiAoaXNCdWJibGVDaGFydCh0eXBlKSkge1xuICAgICAgICByZXR1cm4gJ2J1YmJsZUZvcm1hdCc7XG4gICAgfVxuICAgIHJldHVybiBpc0NoYXJ0RGF0YUpTT04odHlwZSkgPyAnanNvbkZvcm1hdCcgOiAnYXJyYXlGb3JtYXQnO1xufTtcblxuLy8gU2FtcGxlIGRhdGEgdG8gcG9wdWxhdGUgd2hlbiBubyBkYXRhIGlzIGJvdW5kXG5leHBvcnQgY29uc3QgZ2V0U2FtcGxlRGF0YSA9IHdpZGdldENvbnRleHQgPT4gY29uc3RydWN0U2FtcGxlRGF0YShnZXREYXRhVHlwZSh3aWRnZXRDb250ZXh0KSwgc3BsaXQod2lkZ2V0Q29udGV4dC55YXhpc2RhdGFrZXksICcsJykubGVuZ3RoLCB3aWRnZXRDb250ZXh0LnNoYXBlKTtcblxuLy8gQ2hlY2sgd2hldGhlciBYL1kgRG9tYWluIHdhcyBzZXQgdG8gTWluIGFuZCBpcyBzdXBwb3J0ZWQgZm9yIHRoZSBwcmVzZW50IGNoYXJ0XG5leHBvcnQgY29uc3QgaXNBeGlzRG9tYWluVmFsaWQgPSAod2lkZ2V0Q29udGV4dCwgYXhpcykgPT4ge1xuICAgIGlmICh3aWRnZXRDb250ZXh0W2F4aXMgKyAnZG9tYWluJ10gPT09ICdNaW4nICYmIChpc0F4aXNEb21haW5TdXBwb3J0ZWQod2lkZ2V0Q29udGV4dC50eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbi8vIENoZWNrIHdoZXRoZXIgbWluIGFuZCBtYXggdmFsdWVzIGFyZSBmaW5pdGUgb3Igbm90XG5leHBvcnQgY29uc3QgYXJlTWluTWF4VmFsdWVzVmFsaWQgPSB2YWx1ZXMgPT4ge1xuICAgIGlmIChpc0Zpbml0ZSh2YWx1ZXMubWluKSAmJiBpc0Zpbml0ZSh2YWx1ZXMubWF4KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFlTY2FsZU1pblZhbHVlID0gdmFsdWUgPT4ge1xuICAgIGNvbnN0IF9taW4gPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgICAvKiBJZiB0aGUgbnVtYmVyIGhhcyBhKSBkZWNpbWFsIHBhcnQgcmV0dXJuaW5nIGZsb29yIHZhbHVlIC0gMC4xXG4gICAgIGIpIG5vIGRlY2ltYWwgcGFydCByZXR1cm5pbmcgZmxvb3IgdmFsdWUgLSAxICovXG4gICAgcmV0dXJuIE1hdGguYWJzKHZhbHVlKSAtIF9taW4gPiAwID8gdmFsdWUgLSAwLjEgOiBfbWluIC0gMTtcbn07XG5cbi8vIENob29zZXMgdGhlIGRhdGEgcG9pbnRzIG9mIGxpbmUvY3VtdWxhdGl2ZSBsaW5lL2FyZWEgY2hhcnQgYW5kIGhpZ2hsaWdodHMgdGhlbVxuZXhwb3J0IGNvbnN0IGhpZ2hsaWdodFBvaW50cyA9IChpZCwgaGlnaGxpZ2h0cG9pbnRzKSA9PiB7XG4gICAgY29uc3QgY2hhcnRTdmcgPSBpZCA/IGQzLnNlbGVjdCgnI3dtQ2hhcnQnICsgaWQgKyAnIHN2ZycpIDogZDMuc2VsZWN0KGNoYXJ0SWQgKyAnIHN2ZycpO1xuICAgIGlmIChoaWdobGlnaHRwb2ludHMpIHtcbiAgICAgICAgY2hhcnRTdmcuc2VsZWN0QWxsKCcubnYtcG9pbnQnKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAnNnB4JylcbiAgICAgICAgICAgIC5zdHlsZSgnZmlsbC1vcGFjaXR5JywgJzAuOTUnKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2Utb3BhY2l0eScsICcwLjk1Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnRTdmcuc2VsZWN0QWxsKCcubnYtcG9pbnQnKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAnMHB4JylcbiAgICAgICAgICAgIC5zdHlsZSgnZmlsbC1vcGFjaXR5JywgJzAnKTtcbiAgICB9XG59O1xuXG4vLyBDaG9vc2VzIHRoZSBsaW5lIG9mIGxpbmUvY3VtdWxhdGl2ZSBsaW5lIGFuZCBpbmNyZWFzZXMgdGhlIHRoaWNrbmVzcyBvZiBpdFxuZXhwb3J0IGNvbnN0IHNldExpbmVUaGlja25lc3MgPSAoaWQsIHRoaWNrbmVzcykgPT4ge1xuICAgIGNvbnN0IGNoYXJ0U3ZnID0gaWQgPyBkMy5zZWxlY3QoJyN3bUNoYXJ0JyArIGlkICsgJyBzdmcnKSA6IGQzLnNlbGVjdChjaGFydElkICsgJyBzdmcnKTtcbiAgICB0aGlja25lc3MgPSB0aGlja25lc3MgfHwgMS41O1xuXG4gICAgY29uc3QgbGluZXMgPSBjaGFydFN2Zy5zZWxlY3RBbGwoJy5udi1saW5lJyk7XG5cbiAgICBpZiAobGluZXMuc2l6ZSgpICE9PSAwKSB7XG4gICAgICAgIGxpbmVzLnN0eWxlKCdzdHJva2Utd2lkdGgnLCB0aGlja25lc3MpO1xuICAgIH1cbn07XG5cbi8vIENvbnN0cnVjdGluZyBhIGNvbW1vbiBrZXkgdmFsdWUgbWFwIGZvciBwcmV2aWV3IGFuZCBjYW52YXMgbW9kZVxuZXhwb3J0IGNvbnN0IGluaXRQcm9wZXJ0aWVzID0gKHdpZGdldENvbnRleHQsIHByb3BlcnR5VmFsdWVNYXApID0+IHtcbiAgICBpZiAoIXByb3BlcnR5VmFsdWVNYXAgfHwgaXNFbXB0eU9iamVjdChwcm9wZXJ0eVZhbHVlTWFwKSkge1xuICAgICAgICBwcm9wZXJ0eVZhbHVlTWFwID0ge307XG4gICAgfVxuICAgIGZvckVhY2goYmFzaWNQcm9wZXJ0aWVzLCBwcm9wID0+IHtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHByb3BlcnR5VmFsdWVNYXBbcHJvcF0pKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eVZhbHVlTWFwW3Byb3BdID0gd2lkZ2V0Q29udGV4dFtwcm9wXTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5VmFsdWVNYXA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TnVtYmVyVmFsdWUgPSAodmFsdWUsIGNhbGxiYWNrKSA9PiB7XG4gICAgcmV0dXJuIGlzTmFOKHBhcnNlSW50KHZhbHVlLCAxMCkpID8gY2FsbGJhY2sodmFsdWUsICd2YWx1ZScpIDogdmFsdWU7XG59O1xuXG4vLyBGb3JtYXRzIHRoZSBnaXZlbiB2YWx1ZSBhY2NvcmRpbmcgdG8gZGF0ZSBmb3JtYXRcbmV4cG9ydCBjb25zdCBnZXREYXRlRm9ybWF0ZWREYXRhID0gKGRhdGVGb3JtYXQsIGQpID0+IHtcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdCB8fCAnJXgnO1xuICAgIC8qKlxuICAgICAqIGlmIGRhdGUgdmFsdWUgaXMgc3RyaW5nIFwiMjAtMDUtMjAxOVwiIHRoZW4gbmV3IERhdGUodmFsdWUpIHJldHVybiAyME1heTIwMTkgd2l0aCBjdXJyZW50IHRpbWUgaW4gSW5kaWEsXG4gICAgICogd2hlcmVhcyB0aGlzIHdpbGwgcmV0dXJuIDE5TWF5MjAxOSB3aXRoIHRpbWUgbGFnZ2luZyBmb3IgZmV3IGhvdXJzLlxuICAgICAqIFRoaXMgaXMgYmVjYXVzZSBpdCByZXR1cm5zIFVUQyB0aW1lIGkuZS4gQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUgKFVUQykuXG4gICAgICogVG8gY3JlYXRlIGRhdGUgaW4gbG9jYWwgdGltZSB1c2UgbW9tZW50XG4gICAgICovXG4gICAgaWYoZGF0ZUZvcm1hdCA9PSAnJWMnKSB7XG4gICAgICAgIGRhdGVGb3JtYXQgPSAnJWEgJWIgJWUgJVggJVknO1xuICAgIH1cbiAgICByZXR1cm4gZDMudGltZUZvcm1hdChkYXRlRm9ybWF0KShuZXcgRGF0ZShtb21lbnQobW9tZW50KGQpLmZvcm1hdCgpKS52YWx1ZU9mKCkpKTtcbn07XG5jb25zdCByZW1vdmVUcmFpbGluZ1plcm9zID0gdmFsdWUgPT4ge1xuICAgIGlmKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYSBzdHJpbmcgaWYgaXQncyBhIG51bWJlclxuICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlLnRvU3RyaW5nKCkgOiB2YWx1ZTtcblxuICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvc1xuICAgIHJldHVybiBzdHJpbmdWYWx1ZS5yZXBsYWNlKC9cXC4wKyhbQS1aYS16XSopJC8sICckMScpLnJlcGxhY2UoL1xcLihbMS05XSspMCsoW0EtWmEtel0qKSQvLCAnLiQxJDInKTtcbn07XG5cbi8vIEZvcm1hdHMgdGhlIGdpdmVuIHZhbHVlIGFjY29yZGluZyB0byBudW1iZXIgZm9ybWF0XG5leHBvcnQgY29uc3QgZ2V0TnVtYmVyRm9ybWF0ZWREYXRhID0gKG51bWJlckZvcm1hdCwgZCkgPT4ge1xuICAgIGxldCBmb3JtYXR0ZWREYXRhLFxuICAgICAgICBkaXZpZGVyLFxuICAgICAgICBwcmVmaXg7XG4gICAgLy8gZm9ybWF0dGluZyB0aGUgZGF0YSBiYXNlZCBvbiBudW1iZXIgZm9ybWF0IHNlbGVjdGVkXG4gICAgaWYgKG51bWJlckZvcm1hdCkge1xuICAgICAgICBsZXQgbnVtYmVyRm9ybWF0dGVyO1xuICAgICAgICBpZihudW1iZXJGb3JtYXQgPT0gJ1Rob3VzYW5kJyB8fCBudW1iZXJGb3JtYXQgPT0gJ01pbGxpb24nIHx8IG51bWJlckZvcm1hdCA9PSAnQmlsbGlvbicpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdHRlciA9IGQzLmZvcm1hdCgnLC4ycycpO1xuICAgICAgICB9IGVsc2UgaWYobnVtYmVyRm9ybWF0ID09ICclJykge1xuICAgICAgICAgICAgbnVtYmVyRm9ybWF0dGVyID0gZDMuZm9ybWF0KCcuMiUnKTtcbiAgICAgICAgfWVsc2UgaWYobnVtYmVyRm9ybWF0ID09ICcuZicpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdHRlciA9IGQzLmZvcm1hdCgnLjJmJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBudW1iZXJGb3JtYXR0ZXIgPSBkMy5mb3JtYXQobnVtYmVyRm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICBmb3JtYXR0ZWREYXRhID0gbnVtYmVyRm9ybWF0dGVyKGQpO1xuXG5cbiAgICAgICAgLy8gR2V0dGluZyB0aGUgcmVzcGVjdGl2ZSBkaXZpZGVyWzEwMDAsMTAwMDAwMCwxMDAwMDAwMDAwXSBiYXNlZCBvbiB0aGUgbnVtYmVyIGZvcm1hdCBjaG9vc2VuXG4gICAgICAgIGRpdmlkZXIgPSAodGlja2Zvcm1hdHNbbnVtYmVyRm9ybWF0XSAmJiB0aWNrZm9ybWF0c1tudW1iZXJGb3JtYXRdLmRpdmlkZXIpIHx8IDA7XG4gICAgICAgIHByZWZpeCA9IHRpY2tmb3JtYXRzW251bWJlckZvcm1hdF0gJiYgdGlja2Zvcm1hdHNbbnVtYmVyRm9ybWF0XS5wcmVmaXg7XG4gICAgICAgIGlmIChwcmVmaXggJiYgZGl2aWRlciAhPT0gMCkge1xuICAgICAgICAgICAgZm9ybWF0dGVkRGF0YSA9IGQzLmZvcm1hdCgnLjJmJykoZCAvIGRpdmlkZXIpICsgcHJlZml4O1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXV0byBmb3JtYXR0aW5nIHRoZSBkYXRhIHdoZW4gbm8gZm9ybWF0aW5nIG9wdGlvbiBpcyBjaG9zZW5cbiAgICAgICAgZm9ybWF0dGVkRGF0YSA9IGQgPj0gMTAwMCA/IGQzLmZvcm1hdCgnLjFzJykoZCkgOiBkO1xuICAgIH1cbiAgICBmb3JtYXR0ZWREYXRhID0gcmVtb3ZlVHJhaWxpbmdaZXJvcyhmb3JtYXR0ZWREYXRhKTtcbiAgICByZXR1cm4gZm9ybWF0dGVkRGF0YTtcbn07XG5cbi8vIFNldCB0aGUgdmlzaWJpbGl0eSBwcm9wZXJ0eSBvZiB0aGUgY2hhcnQgeCx5IGF4aXMgZHVlIHRvIGEgYnVnIGluIHRoZSBudmQzXG5leHBvcnQgY29uc3QgdG9nZ2xlQXhpc1Nob3cgPSAocHJvcGVydHksIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgJHhBeGlzID0gZDMuc2VsZWN0KGNoYXJ0SWQgKyAnIGcubnYtYXhpcy5udi14JyksXG4gICAgICAgICR5QXhpcyA9IGQzLnNlbGVjdChjaGFydElkICsgJyBnLm52LWF4aXMubnYteScpO1xuICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3Nob3d4YXhpcycpIHtcbiAgICAgICAgJHhBeGlzLnN0eWxlKCd2aXNpYmlsaXR5JywgdmFsdWUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgJHlBeGlzLnN0eWxlKCd2aXNpYmlsaXR5JywgdmFsdWUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG1vZGlmeUxlZ2VuZFBvc2l0aW9uID0gKHdpZGdldENvbnRleHQsIHBvc2l0aW9uLCBpZCkgPT4ge1xuICAgIGNvbnN0IHNob3dMZWdlbmQgPSBpc1Nob3dMZWdlbmQod2lkZ2V0Q29udGV4dC5zaG93bGVnZW5kKSxcbiAgICAgICAgY2hhcnRfSWQgPSBpZCA/ICcjd21DaGFydCcgKyBpZCA6IGNoYXJ0SWQsXG4gICAgICAgIGxlZ2VuZFdyYXAgPSBkMy5zZWxlY3QoY2hhcnRfSWQgKyAnIC5udi1sZWdlbmRXcmFwJyksXG4gICAgICAgIGxlZ2VuZFBhZGRpbmcgPSA1O1xuICAgIC8vIFJldHVybiB3aGVuIHNob3dsZWdlbmQgaXMgZmFsc2VcbiAgICBpZiAoIXNob3dMZWdlbmQgfHwgIWxlZ2VuZFdyYXBbJ19ncm91cHMnXVswXVswXSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgY29uc3QgbGVnZW5kV3JhcEhlaWdodCA9IGxlZ2VuZFdyYXBbJ19ncm91cHMnXVswXVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICB3cmFwID0gZDMuc2VsZWN0KGNoYXJ0X0lkICsgJyAubnYtd3JhcCcpLFxuICAgICAgICAgICAgd3JhcFRyYW5zZm9ybSA9ICh3cmFwICYmIHdyYXAuYXR0cigndHJhbnNmb3JtJykpID8gd3JhcC5hdHRyKCd0cmFuc2Zvcm0nKS5yZXBsYWNlKC8sIC9nLCAnLCcpIDogJycsXG4gICAgICAgICAgICBjb29yZGluYXRlcyA9IC90cmFuc2xhdGVcXChcXHMqKFteXFxzLCldKylbICxdKFteXFxzLCldKykvLmV4ZWMod3JhcFRyYW5zZm9ybSksXG4gICAgICAgICAgICBnZXRDaGFydEhlaWdodCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgY2hhcnRIZWlnaHQgPSAkKGNoYXJ0X0lkICsgJyBzdmc+Lm52ZDMubnYtd3JhcCcpWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoY2hhcnRIZWlnaHQgPT09IDApIHsgLy8gZml4IGZvciBJRVxuICAgICAgICAgICAgICAgICAgICBjaGFydEhlaWdodCA9ICgkKGNoYXJ0X0lkICsgJyBzdmcnKVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgLSAobGVnZW5kV3JhcEhlaWdodCArIDE1KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjaGFydEhlaWdodDtcbiAgICAgICAgICAgIH07XG4gICAgICAgIGxlZ2VuZFdyYXAuYXR0cigndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgwICwgJyArIChnZXRDaGFydEhlaWdodCgpIC0gbGVnZW5kV3JhcEhlaWdodCAtIGxlZ2VuZFBhZGRpbmcpICsgJyknKTtcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzKSB7XG4gICAgICAgICAgICB3cmFwLmF0dHIoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJyArIGNvb3JkaW5hdGVzWzFdICsgJywnICsgbGVnZW5kUGFkZGluZyArICcpJyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vLyBSZXR1cm5zIHZhbHVlIGlmIGxlZ2VuZCBuZWVkIHRvIHNob3duIG9yIG5vdFxuZXhwb3J0IGNvbnN0IGlzU2hvd0xlZ2VuZCA9IHZhbHVlID0+IHtcbiAgICAvLyBPbGQgcHJvamVjdHMgd2lsbCBoYXZlIGVpdGhlciB0cnVlIG9yIGZhbHNlXG4gICAgaWYgKHZhbHVlID09PSAnZmFsc2UnIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBOZXcgcHJvamVjdHMgd2lsbCBoYXZlIGVpdGhlciAnSGlkZSBMZWdlbmQnLCAnU2hvdyBUb3AnLCAnU2hvdyBCb3R0b20nXG4gICAgcmV0dXJuIHZhbHVlID09PSAnaGlkZScgPyBmYWxzZSA6IHRydWU7XG59O1xuXG4vKipcbiAqIEN1c3RvbWlzZSB0aGUgdG9vbHRpcCBmb3IgZG9udXQgJiBwaWUgY2hhcnRzIGFuZCBhbHNvIGZvciBjaGFydHMgaGF2aW5nIG9ubHkgb25lIHZhbHVlIGF0dGFjaGVkIHRvIHlheGlzXG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gbGFiZWxcbiAqL1xuZXhwb3J0IGNvbnN0IGN1c3RvbWlzZVRvb2x0aXAgPSAoY2hhcnQsIHByb3BlcnR5VmFsdWVNYXAsIHdpZGdldENvbnRleHQsIGxhYmVsPykgPT4ge1xuICAgIGQzLnNlbGVjdEFsbCgnLm52dG9vbHRpcCcpLnN0eWxlKCdvcGFjaXR5JywgMCk7XG4gICAgY2hhcnQudG9vbHRpcC5jb250ZW50R2VuZXJhdG9yKGtleSA9PiB7XG4gICAgICAgIGxldCB4VmFsdWUgPSBrZXkuZGF0YS54LCB5VmFsdWU7XG4gICAgICAgIHlWYWx1ZSA9IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGtleS5kYXRhLnkpO1xuICAgICAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgIGxhYmVsID0ga2V5LmRhdGEueDtcbiAgICAgICAgICAgIHhWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnPHRhYmxlPicgK1xuICAgICAgICAgICAgJzx0Ym9keT4nICtcbiAgICAgICAgICAgICc8dHIgY2xhc3M9XCJ2YWx1ZVwiPjxiPicgKyB4VmFsdWUgK1xuICAgICAgICAgICAgJzwvYj48L3RyPicgK1xuICAgICAgICAgICAgJzx0cj4nICtcbiAgICAgICAgICAgICc8dGQgY2xhc3M9XCJsZWdlbmQtY29sb3ItZ3VpZGVcIj48ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjonICsga2V5LmNvbG9yICsgJztcIj48L2Rpdj48L3RkPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cImtleVwiPicgKyBsYWJlbCArICc8L3RkPicgK1xuICAgICAgICAgICAgJzx0ZCBjbGFzcz1cInZhbHVlXCI+JyArIHlWYWx1ZSArICc8L3RkPicgK1xuICAgICAgICAgICAgJzwvdHI+JyArXG4gICAgICAgICAgICAnPC90Ym9keT4nICtcbiAgICAgICAgICAgICc8L3RhYmxlPic7XG4gICAgfSk7XG59O1xuXG4vLyBpbnRpYWxpemVzIHRoZSBjaGFydCBvYmVqY3RcbmV4cG9ydCBjb25zdCBpbml0Q2hhcnQgPSAod2lkZ2V0Q29udGV4dCwgeERvbWFpblZhbHVlcywgeURvbWFpblZhbHVlcywgcHJvcGVydHlWYWx1ZU1hcCwgaXNQcmV2aWV3KSA9PiB7XG4gICAgcHJvcGVydHlWYWx1ZU1hcCA9ICBpbml0UHJvcGVydGllcyh3aWRnZXRDb250ZXh0LCBwcm9wZXJ0eVZhbHVlTWFwKTtcbiAgICBsZXQgY2hhcnQsIGNvbG9ycyA9IFtdLCB4YXhpc2xhYmVsLCB5YXhpc2xhYmVsLCBsYWJlbENvbmZpZywgcmFkaXVzLCBiYXJTcGFjaW5nLFxuICAgICAgICBzaG93TGVnZW5kLCB4QXhpc1ZhbHVlLCBoYXNNdWx0aXBsZVlWYWx1ZXM7XG4gICAgY29uc3QgeFZhbHVlOiBhbnkgPSB7fSwgeVZhbHVlOiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHdpZGdldENvbnRleHQudHlwZSkge1xuICAgICAgICBjYXNlICdDb2x1bW4nOlxuICAgICAgICAgICAgYmFyU3BhY2luZyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuYmFyc3BhY2luZywgZ2V0QmFyU3BhY2luZ1ZhbHVlKSB8fCBiYXJTcGFjaW5nTWFwLm1lZGl1bTtcbiAgICAgICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5yZWR1Y2VYVGlja3MocHJvcGVydHlWYWx1ZU1hcC5yZWR1Y2V4dGlja3MpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZUxhYmVscygwKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnN0YWNrZWQocHJvcGVydHlWYWx1ZU1hcC52aWV3dHlwZSA9PT0gJ1N0YWNrZWQnID8gIHRydWUgOiBmYWxzZSlcbiAgICAgICAgICAgICAgICAuZ3JvdXBTcGFjaW5nKGJhclNwYWNpbmcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0N1bXVsYXRpdmUgTGluZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5jdW11bGF0aXZlTGluZUNoYXJ0KClcbiAgICAgICAgICAgICAgICAueChkID0+IGRbMF0pXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkWzFdKVxuICAgICAgICAgICAgICAgIC5zaG93Q29udHJvbHMoZmFsc2UpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTGluZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5saW5lQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZShwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKVxuICAgICAgICAgICAgICAgIC5pbnRlcnBvbGF0ZShwcm9wZXJ0eVZhbHVlTWFwLmludGVycG9sYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0FyZWEnOlxuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMuc3RhY2tlZEFyZWFDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLmNsaXBFZGdlKHRydWUpXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3R5bGUocHJvcGVydHlWYWx1ZU1hcC5hcmVhdmlld3R5cGUpXG4gICAgICAgICAgICAgICAgLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lKHByb3BlcnR5VmFsdWVNYXAudG9vbHRpcHMpXG4gICAgICAgICAgICAgICAgLmludGVycG9sYXRlKHByb3BlcnR5VmFsdWVNYXAuaW50ZXJwb2xhdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQmFyJzpcbiAgICAgICAgICAgIGJhclNwYWNpbmcgPSBnZXROdW1iZXJWYWx1ZShwcm9wZXJ0eVZhbHVlTWFwLmJhcnNwYWNpbmcsIGdldEJhclNwYWNpbmdWYWx1ZSkgfHwgYmFyU3BhY2luZ01hcC5tZWRpdW07XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5tdWx0aUJhckhvcml6b250YWxDaGFydCgpXG4gICAgICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAgICAgLnkoZCA9PiBkLnkpXG4gICAgICAgICAgICAgICAgLnNob3dDb250cm9scyhmYWxzZSlcbiAgICAgICAgICAgICAgICAuc3RhY2tlZChwcm9wZXJ0eVZhbHVlTWFwLnZpZXd0eXBlID09PSAnU3RhY2tlZCcgPyAgdHJ1ZSA6IGZhbHNlKVxuICAgICAgICAgICAgICAgIC5zaG93VmFsdWVzKHByb3BlcnR5VmFsdWVNYXAuc2hvd3ZhbHVlcylcbiAgICAgICAgICAgICAgICAuZ3JvdXBTcGFjaW5nKGJhclNwYWNpbmcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BpZSc6XG4gICAgICAgIGNhc2UgJ0RvbnV0JzpcbiAgICAgICAgICAgIGxhYmVsQ29uZmlnID0gZ2V0TGFiZWxWYWx1ZXMocHJvcGVydHlWYWx1ZU1hcC5zaG93bGFiZWxzLCBwcm9wZXJ0eVZhbHVlTWFwLnNob3dsYWJlbHNvdXRzaWRlLCAndmFsdWUnKTtcbiAgICAgICAgICAgIHJhZGl1cyA9IGdldE51bWJlclZhbHVlKHByb3BlcnR5VmFsdWVNYXAuZG9udXRyYXRpbywgZ2V0UmFkaXVzVmFsdWUpIHx8IGRvbnV0UmF0aW9NYXAubWVkaXVtO1xuICAgICAgICAgICAgY2hhcnQgPSBudi5tb2RlbHMucGllQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93TGFiZWxzKGxhYmVsQ29uZmlnLnNob3dsYWJlbHMpXG4gICAgICAgICAgICAgICAgLmxhYmVsVHlwZShwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSlcbiAgICAgICAgICAgICAgICAudmFsdWVGb3JtYXQoZDMuZm9ybWF0KCclJykpXG4gICAgICAgICAgICAgICAgLnRpdGxlKHByb3BlcnR5VmFsdWVNYXAuY2VudGVybGFiZWwpXG4gICAgICAgICAgICAgICAgLmxhYmVsVGhyZXNob2xkKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0aHJlc2hvbGQgfHwgMC4wMSlcbiAgICAgICAgICAgICAgICAubGFiZWxzT3V0c2lkZShsYWJlbENvbmZpZy5zaG93bGFiZWxzb3V0c2lkZSk7XG4gICAgICAgICAgICBpZiAoaXNEb251dENoYXJ0KHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBjaGFydC5kb251dCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAuZG9udXRSYXRpbyhyYWRpdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAubGFiZWx0eXBlID09PSAna2V5LXZhbHVlJykge1xuICAgICAgICAgICAgICAgIGNoYXJ0LmxhYmVsVHlwZShkID0+IGQuZGF0YS54ICsgJyAnICsgZC5kYXRhLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0J1YmJsZSc6XG4gICAgICAgICAgICBjaGFydCA9IG52Lm1vZGVscy5zY2F0dGVyQ2hhcnQoKVxuICAgICAgICAgICAgICAgIC54KGQgPT4gZC54KVxuICAgICAgICAgICAgICAgIC55KGQgPT4gZC55KVxuICAgICAgICAgICAgICAgIC5zaG93RGlzdFgocHJvcGVydHlWYWx1ZU1hcC5zaG93eGRpc3RhbmNlKVxuICAgICAgICAgICAgICAgIC5zaG93RGlzdFkocHJvcGVydHlWYWx1ZU1hcC5zaG93eWRpc3RhbmNlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh4RG9tYWluVmFsdWVzKSB7XG4gICAgICAgIHhWYWx1ZS5taW4gPSB4RG9tYWluVmFsdWVzLm1pbi54IHx8IHhEb21haW5WYWx1ZXMubWluWzBdO1xuICAgICAgICB4VmFsdWUubWF4ID0geERvbWFpblZhbHVlcy5tYXgueCB8fCB4RG9tYWluVmFsdWVzLm1heFswXTtcbiAgICAgICAgLy8gSWYgdGhlIHZhbHVlcyBvbiB0aGUgeCBheGlzIGFyZSBzdHJpbmcgdGhlbiBtaW4gbWF4IHZhbHVlcyBnaXZlcyBJbmZpbml0eVxuICAgICAgICBpZiAoYXJlTWluTWF4VmFsdWVzVmFsaWQoeFZhbHVlKSkge1xuICAgICAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAwLjEgc28gdGhlIG1pbiB2YWx1ZSBpcyBub3QgbWlzc2VkIG91dFxuICAgICAgICAgICAgeFZhbHVlLm1pbiA9IGdldFlTY2FsZU1pblZhbHVlKHhWYWx1ZS5taW4pO1xuICAgICAgICAgICAgY2hhcnQueERvbWFpbihbeFZhbHVlLm1pbiwgeFZhbHVlLm1heF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHlEb21haW5WYWx1ZXMpIHtcbiAgICAgICAgLy8gUmVkdWNpbmcgdGhlIG1pbiB2YWx1ZSB0byAxIHNvIHRoZSBtaW4gdmFsdWUgaXMgbm90IG1pc3NlZCBvdXRcbiAgICAgICAgeVZhbHVlLm1pbiA9IHlEb21haW5WYWx1ZXMubWluLnkgfHwgeURvbWFpblZhbHVlcy5taW5bMV07XG4gICAgICAgIHlWYWx1ZS5tYXggPSB5RG9tYWluVmFsdWVzLm1heC55IHx8IHlEb21haW5WYWx1ZXMubWF4WzFdO1xuICAgICAgICAvLyBJZiB0aGUgdmFsdWVzIG9uIHRoZSB5IGF4aXMgYXJlIHN0cmluZyBvciBpbnZhbGlkIHRoZW4gbWluIG1heCB2YWx1ZXMgZ2l2ZXMgSW5maW5pdHlcbiAgICAgICAgaWYgKGFyZU1pbk1heFZhbHVlc1ZhbGlkKHlWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIFJlZHVjaW5nIHRoZSBtaW4gdmFsdWUgdG8gMSBzbyB0aGUgbWluIHZhbHVlIGlzIG5vdCBtaXNzZWQgb3V0XG4gICAgICAgICAgICB5VmFsdWUubWluID0gZ2V0WVNjYWxlTWluVmFsdWUoeVZhbHVlLm1pbik7XG4gICAgICAgICAgICBjaGFydC55RG9tYWluKFt5VmFsdWUubWluLCB5VmFsdWUubWF4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXR0aW5nIHRoZSBsZWdlbmQgdHlwZSBjaG9vc2VuIGJ5IHVzZXIgb3IgZGVmYXVsdCBpdCB3aWxsIGJlIGZ1cmlvdXNcbiAgICBjaGFydC5sZWdlbmQudmVycygocHJvcGVydHlWYWx1ZU1hcC5sZWdlbmR0eXBlICYmIHByb3BlcnR5VmFsdWVNYXAubGVnZW5kdHlwZS50b0xvd2VyQ2FzZSgpKSB8fCAnZnVyaW91cycpO1xuXG4gICAgaWYgKCFpbmNsdWRlcyhjaGFydFR5cGVzLCB3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgIGNoYXJ0ID0gbnYubW9kZWxzLm11bHRpQmFyQ2hhcnQoKVxuICAgICAgICAgICAgLngoZCA9PiBkLngpXG4gICAgICAgICAgICAueShkID0+IGQueSk7XG4gICAgfVxuXG5cbiAgICBpZiAoaXNQaWVUeXBlKHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBwaWUvZG9udXQgY2hhcnQgZm9ybWF0dGluZyB0aGUgdmFsdWVzIG9mIGl0XG4gICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlTWFwLmxhYmVsdHlwZSA9PT0gJ3BlcmNlbnQnKSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkMy5mb3JtYXQoJyUnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcHMgaW4gY2FzZSBvZiB0aGUgcGllIGFuZCBkb251dCB3aGVuIGxhYmVsVHlwZSBpcyB2YWx1ZVxuICAgICAgICBjdXN0b21pc2VUb29sdGlwKGNoYXJ0LCBwcm9wZXJ0eVZhbHVlTWFwLCB3aWRnZXRDb250ZXh0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNoYXJ0LnNob3dYQXhpcyhwcm9wZXJ0eVZhbHVlTWFwLnNob3d4YXhpcylcbiAgICAgICAgICAgIC5zaG93WUF4aXMocHJvcGVydHlWYWx1ZU1hcC5zaG93eWF4aXMpO1xuICAgICAgICBjaGFydC5sZWdlbmRQb3NpdGlvbihwcm9wZXJ0eVZhbHVlTWFwLnNob3dsZWdlbmQpO1xuXG4gICAgICAgIC8vIFNldHRpbmcgdGhlIGxhYmVscyBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgZXhwbGljaXRseSBvciB0YWtpbmcgdGhlIGF4aXNrZXlzIGNob3NlblxuICAgICAgICB4YXhpc2xhYmVsID0gcHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsIHx8IHByZXR0aWZ5TGFiZWxzKHdpZGdldENvbnRleHQueGF4aXNkYXRha2V5KSB8fCAneCBjYXB0aW9uJztcbiAgICAgICAgeWF4aXNsYWJlbCA9IHByb3BlcnR5VmFsdWVNYXAueWF4aXNsYWJlbCB8fCBwcmV0dGlmeUxhYmVscyh3aWRnZXRDb250ZXh0LnlheGlzZGF0YWtleSkgfHwgJ3kgY2FwdGlvbic7XG5cbiAgICAgICAgLy8gQ2hlY2tpbmcgaWYgeSBheGlzIGhhcyBtdWx0aXBsZSB2YWx1ZXNcbiAgICAgICAgaWYgKHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5ICYmIHdpZGdldENvbnRleHQueWF4aXNkYXRha2V5LnNwbGl0KCcsJykubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgaGFzTXVsdGlwbGVZVmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDdXN0b21pemluZyB0aGUgdG9vbHRpcCB0byBzaG93IHlheGlzbGFiZWwsIG9ubHkgaWYgdGhlIHkgYXhpcyBjb250YWlucyBvbmUgdmFsdWVcbiAgICAgICAgaWYgKCFoYXNNdWx0aXBsZVlWYWx1ZXMgJiYgIWlzQnViYmxlQ2hhcnQod2lkZ2V0Q29udGV4dC50eXBlKSkge1xuICAgICAgICAgICAgY3VzdG9taXNlVG9vbHRpcChjaGFydCwgcHJvcGVydHlWYWx1ZU1hcCwgd2lkZ2V0Q29udGV4dCwgeWF4aXNsYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGRpbmcgdGhlIHVuaXRzIHRvIHRoZSBjYXB0aW9ucyBpZiB0aGV5IGFyZSBzcGVjaWZpZWRcbiAgICAgICAgeGF4aXNsYWJlbCArPSBwcm9wZXJ0eVZhbHVlTWFwLnh1bml0cyA/ICcoJyArIHByb3BlcnR5VmFsdWVNYXAueHVuaXRzICsgJyknIDogJyc7XG4gICAgICAgIHlheGlzbGFiZWwgKz0gcHJvcGVydHlWYWx1ZU1hcC55dW5pdHMgPyAnKCcgKyBwcm9wZXJ0eVZhbHVlTWFwLnl1bml0cyArICcpJyA6ICcnO1xuXG4gICAgICAgIGNoYXJ0LnhBeGlzXG4gICAgICAgICAgICAuYXhpc0xhYmVsKHhheGlzbGFiZWwpXG4gICAgICAgICAgICAuYXhpc0xhYmVsRGlzdGFuY2UocHJvcGVydHlWYWx1ZU1hcC54YXhpc2xhYmVsZGlzdGFuY2UpXG4gICAgICAgICAgICAuc3RhZ2dlckxhYmVscyhwcm9wZXJ0eVZhbHVlTWFwLnN0YWdnZXJsYWJlbHMpO1xuXG4gICAgICAgIC8vIElmIGRhdGUgZm9ybWF0IHNldCBmb3JtYXQgYmFzZWQgZGF0ZSBmb3JtYXRcbiAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQgfHwgKGlzUHJldmlldyAmJiAhaXNCdWJibGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSkge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2hhcnQueEF4aXMudGlja0Zvcm1hdChkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgeEF4aXNWYWx1ZSA9IGlzUHJldmlldyA/IGRhdGVMaXN0W2QgLSAxXSA6IHdpZGdldENvbnRleHQueERhdGFLZXlBcnJbZF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXREYXRlRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueGRhdGVmb3JtYXQsIHhBeGlzVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0RGF0ZUZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnhkYXRlZm9ybWF0LCBkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlWYWx1ZU1hcC54bnVtYmVyZm9ybWF0KSB7XG4gICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueG51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgICAgICAgICBjaGFydC54QXhpcy50aWNrRm9ybWF0KGQgPT4gd2lkZ2V0Q29udGV4dC54RGF0YUtleUFycltkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hhcnQueUF4aXNcbiAgICAgICAgICAgIC5heGlzTGFiZWwoeWF4aXNsYWJlbClcbiAgICAgICAgICAgIC5heGlzTGFiZWxEaXN0YW5jZShwcm9wZXJ0eVZhbHVlTWFwLnlheGlzbGFiZWxkaXN0YW5jZSlcbiAgICAgICAgICAgIC5zdGFnZ2VyTGFiZWxzKHByb3BlcnR5VmFsdWVNYXAuc3RhZ2dlcmxhYmVscylcbiAgICAgICAgICAgIC50aWNrRm9ybWF0KGQgPT4gZ2V0TnVtYmVyRm9ybWF0ZWREYXRhKHByb3BlcnR5VmFsdWVNYXAueW51bWJlcmZvcm1hdCwgZCkpO1xuICAgICAgICBpZiAoaXNCYXJDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpKSB7XG4gICAgICAgICAgICBjaGFydC52YWx1ZUZvcm1hdChkID0+IGdldE51bWJlckZvcm1hdGVkRGF0YShwcm9wZXJ0eVZhbHVlTWFwLnludW1iZXJmb3JtYXQsIGQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN1cHBvcnQgZm9yIGN1c3RvbSBjb2xvcnMgaWYgdXNlciBnaXZlcyBkaXJlY3Qgc3RyaW5nIG9mIGNvbG9ycyBpbiB0ZXh0IGJveFxuICAgIGlmIChpc1N0cmluZyhwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycykgJiYgcHJvcGVydHlWYWx1ZU1hcC5jdXN0b21jb2xvcnMpIHtcbiAgICAgICAgY29sb3JzID0gc3BsaXQocHJvcGVydHlWYWx1ZU1hcC5jdXN0b21jb2xvcnMsICcsJyk7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KHByb3BlcnR5VmFsdWVNYXAuY3VzdG9tY29sb3JzKSkge1xuICAgICAgICBjb2xvcnMgPSBwcm9wZXJ0eVZhbHVlTWFwLmN1c3RvbWNvbG9ycztcbiAgICB9XG5cbiAgICBzaG93TGVnZW5kID0gaXNTaG93TGVnZW5kKHByb3BlcnR5VmFsdWVNYXAuc2hvd2xlZ2VuZCk7XG4gICAgY2hhcnQuc2hvd0xlZ2VuZChzaG93TGVnZW5kKVxuICAgICAgICAubWFyZ2luKHt0b3A6IHByb3BlcnR5VmFsdWVNYXAub2Zmc2V0dG9wLCByaWdodDogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXRyaWdodCwgYm90dG9tOiBwcm9wZXJ0eVZhbHVlTWFwLm9mZnNldGJvdHRvbSwgbGVmdDogcHJvcGVydHlWYWx1ZU1hcC5vZmZzZXRsZWZ0fSlcbiAgICAgICAgLmNvbG9yKGNvbG9ycy5sZW5ndGggPyBjb2xvcnMgOiB0aGVtZXNbcHJvcGVydHlWYWx1ZU1hcC50aGVtZV0uY29sb3JzKTtcblxuICAgIGNoYXJ0LnRvb2x0aXAuZW5hYmxlZChwcm9wZXJ0eVZhbHVlTWFwLnRvb2x0aXBzKTtcbiAgICB3aWRnZXRDb250ZXh0Lm1lc3NhZ2UgPSBwcm9wZXJ0eVZhbHVlTWFwLm5vZGF0YW1lc3NhZ2UgfHwgJ05vIGRhdGEgZm91bmQnO1xuICAgIC8vIHNldHRpbmcgdGhlIG5vIGRhdGEgbWVzc2FnZVxuICAgIGNoYXJ0Lm5vRGF0YSh3aWRnZXRDb250ZXh0Lm1lc3NhZ2UpO1xuXG4gICAgaWYgKGlzTGluZVR5cGVDaGFydCh3aWRnZXRDb250ZXh0LnR5cGUpICYmIHdpZGdldENvbnRleHQuaGlnaGxpZ2h0cG9pbnRzKSB7XG4gICAgICAgIGNoYXJ0LmRpc3BhdGNoLm9uKCdzdGF0ZUNoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcG9zdFBsb3RDaGFydFByb2Nlc3Mod2lkZ2V0Q29udGV4dCksIDEwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQgJiYgKHdpZGdldENvbnRleHQudHlwZSA9PT0gJ0RvbnV0JyB8fCB3aWRnZXRDb250ZXh0LnR5cGUgPT09ICdQaWUnKSkge1xuICAgICAgICBpZih3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIGNoYXJ0LmxlZ2VuZFBvc2l0aW9uKCdyaWdodCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGFydDtcbn07XG5cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjb25zdCBwb3N0UGxvdENoYXJ0UHJvY2VzcyA9ICh3aWRnZXRDb250ZXh0LCBpc1ByZXZpZXc/KSA9PiB7XG4gICAgY29uc3QgaWQgPSBpc1ByZXZpZXcgPyBudWxsIDogd2lkZ2V0Q29udGV4dC4kaWQ7XG4gICAgLy8gSWYgdXNlciBzZXRzIHRvIGhpZ2hsaWdodCB0aGUgZGF0YSBwb2ludHMgYW5kIGluY3JlYXNlIHRoZSB0aGlja25lc3Mgb2YgdGhlIGxpbmVcbiAgICBpZiAoaXNMaW5lVHlwZUNoYXJ0KHdpZGdldENvbnRleHQudHlwZSkpIHtcbiAgICAgICBzZXRMaW5lVGhpY2tuZXNzKGlkLCB3aWRnZXRDb250ZXh0LmxpbmV0aGlja25lc3MpO1xuICAgICAgIGhpZ2hsaWdodFBvaW50cyhpZCwgd2lkZ2V0Q29udGV4dC5oaWdobGlnaHRwb2ludHMpO1xuICAgIH1cbiAgICAvLyBNb2RpZnlpbmcgdGhlIGxlZ2VuZCBwb3NpdGlvbiBvbmx5IHdoZW4gbGVnZW5kIGlzIHNob3duXG4gICAgLy8gaWYgKHdpZGdldENvbnRleHQuc2hvd2xlZ2VuZCkge1xuICAgIC8vICAgICBtb2RpZnlMZWdlbmRQb3NpdGlvbih3aWRnZXRDb250ZXh0LCB3aWRnZXRDb250ZXh0LnNob3dsZWdlbmQsIGlkKTtcbiAgICAvLyB9XG59O1xuXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY29uc3QgZ2V0RGF0ZUxpc3QgPSAoKSA9PiBkYXRlTGlzdDtcblxuIl19
@@ -559,6 +559,7 @@ const isShowLegend = value => {
559
559
  * @param label
560
560
  */
561
561
  const customiseTooltip = (chart, propertyValueMap, widgetContext, label) => {
562
+ d3.selectAll('.nvtooltip').style('opacity', 0);
562
563
  chart.tooltip.contentGenerator(key => {
563
564
  let xValue = key.data.x, yValue;
564
565
  yValue = getNumberFormatedData(propertyValueMap.ynumberformat, key.data.y);