@bizdoc/core 1.9.14 → 1.10.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/assets/dayjs/locale/af.js +1 -0
  2. package/assets/dayjs/locale/am.js +1 -0
  3. package/assets/dayjs/locale/ar-dz.js +1 -0
  4. package/assets/dayjs/locale/ar-iq.js +1 -0
  5. package/assets/dayjs/locale/ar-kw.js +1 -0
  6. package/assets/dayjs/locale/ar-ly.js +1 -0
  7. package/assets/dayjs/locale/ar-ma.js +1 -0
  8. package/assets/dayjs/locale/ar-sa.js +1 -0
  9. package/assets/dayjs/locale/ar-tn.js +1 -0
  10. package/assets/dayjs/locale/ar.js +1 -0
  11. package/assets/dayjs/locale/az.js +1 -0
  12. package/assets/dayjs/locale/be.js +1 -0
  13. package/assets/dayjs/locale/bg.js +1 -0
  14. package/assets/dayjs/locale/bi.js +1 -0
  15. package/assets/dayjs/locale/bm.js +1 -0
  16. package/assets/dayjs/locale/bn.js +1 -0
  17. package/assets/dayjs/locale/bo.js +1 -0
  18. package/assets/dayjs/locale/br.js +1 -0
  19. package/assets/dayjs/locale/bs.js +1 -0
  20. package/assets/dayjs/locale/ca.js +1 -0
  21. package/assets/dayjs/locale/cs.js +1 -0
  22. package/assets/dayjs/locale/cv.js +1 -0
  23. package/assets/dayjs/locale/cy.js +1 -0
  24. package/assets/dayjs/locale/da.js +1 -0
  25. package/assets/dayjs/locale/de-at.js +1 -0
  26. package/assets/dayjs/locale/de-ch.js +1 -0
  27. package/assets/dayjs/locale/de.js +1 -0
  28. package/assets/dayjs/locale/dv.js +1 -0
  29. package/assets/dayjs/locale/el.js +1 -0
  30. package/assets/dayjs/locale/en-au.js +1 -0
  31. package/assets/dayjs/locale/en-ca.js +1 -0
  32. package/assets/dayjs/locale/en-gb.js +1 -0
  33. package/assets/dayjs/locale/en-ie.js +1 -0
  34. package/assets/dayjs/locale/en-il.js +1 -0
  35. package/assets/dayjs/locale/en-in.js +1 -0
  36. package/assets/dayjs/locale/en-nz.js +1 -0
  37. package/assets/dayjs/locale/en-sg.js +1 -0
  38. package/assets/dayjs/locale/en-tt.js +1 -0
  39. package/assets/dayjs/locale/en.js +1 -0
  40. package/assets/dayjs/locale/eo.js +1 -0
  41. package/assets/dayjs/locale/es-do.js +1 -0
  42. package/assets/dayjs/locale/es-mx.js +1 -0
  43. package/assets/dayjs/locale/es-pr.js +1 -0
  44. package/assets/dayjs/locale/es-us.js +1 -0
  45. package/assets/dayjs/locale/es.js +1 -0
  46. package/assets/dayjs/locale/et.js +1 -0
  47. package/assets/dayjs/locale/eu.js +1 -0
  48. package/assets/dayjs/locale/fa.js +1 -0
  49. package/assets/dayjs/locale/fi.js +1 -0
  50. package/assets/dayjs/locale/fo.js +1 -0
  51. package/assets/dayjs/locale/fr-ca.js +1 -0
  52. package/assets/dayjs/locale/fr-ch.js +1 -0
  53. package/assets/dayjs/locale/fr.js +1 -0
  54. package/assets/dayjs/locale/fy.js +1 -0
  55. package/assets/dayjs/locale/ga.js +1 -0
  56. package/assets/dayjs/locale/gd.js +1 -0
  57. package/assets/dayjs/locale/gl.js +1 -0
  58. package/assets/dayjs/locale/gom-latn.js +1 -0
  59. package/assets/dayjs/locale/gu.js +1 -0
  60. package/assets/dayjs/locale/he.js +1 -0
  61. package/assets/dayjs/locale/hi.js +1 -0
  62. package/assets/dayjs/locale/hr.js +1 -0
  63. package/assets/dayjs/locale/ht.js +1 -0
  64. package/assets/dayjs/locale/hu.js +1 -0
  65. package/assets/dayjs/locale/hy-am.js +1 -0
  66. package/assets/dayjs/locale/id.js +1 -0
  67. package/assets/dayjs/locale/index.d.ts +11 -0
  68. package/assets/dayjs/locale/is.js +1 -0
  69. package/assets/dayjs/locale/it-ch.js +1 -0
  70. package/assets/dayjs/locale/it.js +1 -0
  71. package/assets/dayjs/locale/ja.js +1 -0
  72. package/assets/dayjs/locale/jv.js +1 -0
  73. package/assets/dayjs/locale/ka.js +1 -0
  74. package/assets/dayjs/locale/kk.js +1 -0
  75. package/assets/dayjs/locale/km.js +1 -0
  76. package/assets/dayjs/locale/kn.js +1 -0
  77. package/assets/dayjs/locale/ko.js +1 -0
  78. package/assets/dayjs/locale/ku.js +1 -0
  79. package/assets/dayjs/locale/ky.js +1 -0
  80. package/assets/dayjs/locale/lb.js +1 -0
  81. package/assets/dayjs/locale/lo.js +1 -0
  82. package/assets/dayjs/locale/lt.js +1 -0
  83. package/assets/dayjs/locale/lv.js +1 -0
  84. package/assets/dayjs/locale/me.js +1 -0
  85. package/assets/dayjs/locale/mi.js +1 -0
  86. package/assets/dayjs/locale/mk.js +1 -0
  87. package/assets/dayjs/locale/ml.js +1 -0
  88. package/assets/dayjs/locale/mn.js +1 -0
  89. package/assets/dayjs/locale/mr.js +1 -0
  90. package/assets/dayjs/locale/ms-my.js +1 -0
  91. package/assets/dayjs/locale/ms.js +1 -0
  92. package/assets/dayjs/locale/mt.js +1 -0
  93. package/assets/dayjs/locale/my.js +1 -0
  94. package/assets/dayjs/locale/nb.js +1 -0
  95. package/assets/dayjs/locale/ne.js +1 -0
  96. package/assets/dayjs/locale/nl-be.js +1 -0
  97. package/assets/dayjs/locale/nl.js +1 -0
  98. package/assets/dayjs/locale/nn.js +1 -0
  99. package/assets/dayjs/locale/oc-lnc.js +1 -0
  100. package/assets/dayjs/locale/pa-in.js +1 -0
  101. package/assets/dayjs/locale/pl.js +1 -0
  102. package/assets/dayjs/locale/pt-br.js +1 -0
  103. package/assets/dayjs/locale/pt.js +1 -0
  104. package/assets/dayjs/locale/ro.js +1 -0
  105. package/assets/dayjs/locale/ru.js +1 -0
  106. package/assets/dayjs/locale/rw.js +1 -0
  107. package/assets/dayjs/locale/sd.js +1 -0
  108. package/assets/dayjs/locale/se.js +1 -0
  109. package/assets/dayjs/locale/si.js +1 -0
  110. package/assets/dayjs/locale/sk.js +1 -0
  111. package/assets/dayjs/locale/sl.js +1 -0
  112. package/assets/dayjs/locale/sq.js +1 -0
  113. package/assets/dayjs/locale/sr-cyrl.js +1 -0
  114. package/assets/dayjs/locale/sr.js +1 -0
  115. package/assets/dayjs/locale/ss.js +1 -0
  116. package/assets/dayjs/locale/sv-fi.js +1 -0
  117. package/assets/dayjs/locale/sv.js +1 -0
  118. package/assets/dayjs/locale/sw.js +1 -0
  119. package/assets/dayjs/locale/ta.js +1 -0
  120. package/assets/dayjs/locale/te.js +1 -0
  121. package/assets/dayjs/locale/tet.js +1 -0
  122. package/assets/dayjs/locale/tg.js +1 -0
  123. package/assets/dayjs/locale/th.js +1 -0
  124. package/assets/dayjs/locale/tk.js +1 -0
  125. package/assets/dayjs/locale/tl-ph.js +1 -0
  126. package/assets/dayjs/locale/tlh.js +1 -0
  127. package/assets/dayjs/locale/tr.js +1 -0
  128. package/assets/dayjs/locale/types.d.ts +33 -0
  129. package/assets/dayjs/locale/tzl.js +1 -0
  130. package/assets/dayjs/locale/tzm-latn.js +1 -0
  131. package/assets/dayjs/locale/tzm.js +1 -0
  132. package/assets/dayjs/locale/ug-cn.js +1 -0
  133. package/assets/dayjs/locale/uk.js +1 -0
  134. package/assets/dayjs/locale/ur.js +1 -0
  135. package/assets/dayjs/locale/uz-latn.js +1 -0
  136. package/assets/dayjs/locale/uz.js +1 -0
  137. package/assets/dayjs/locale/vi.js +1 -0
  138. package/assets/dayjs/locale/x-pseudo.js +1 -0
  139. package/assets/dayjs/locale/yo.js +1 -0
  140. package/assets/dayjs/locale/zh-cn.js +1 -0
  141. package/assets/dayjs/locale/zh-hk.js +1 -0
  142. package/assets/dayjs/locale/zh-tw.js +1 -0
  143. package/assets/dayjs/locale/zh.js +1 -0
  144. package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
  145. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  146. package/esm2020/lib/admin/core/ace.input.mjs +3 -3
  147. package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
  148. package/esm2020/lib/admin/core/search.input.mjs +3 -3
  149. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +5 -5
  150. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +9 -10
  151. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  152. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +4 -4
  153. package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
  154. package/esm2020/lib/admin/form/form.service.mjs +3 -3
  155. package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -3
  156. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +3 -3
  157. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +3 -3
  158. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  159. package/esm2020/lib/admin/patterns/patterns.component.mjs +3 -3
  160. package/esm2020/lib/admin/permissions/permissions.component.mjs +3 -3
  161. package/esm2020/lib/admin/positions/positions-popup.component.mjs +3 -3
  162. package/esm2020/lib/admin/positions/positions.component.mjs +3 -3
  163. package/esm2020/lib/admin/profiler/profiler.component.mjs +10 -10
  164. package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
  165. package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
  166. package/esm2020/lib/app.component.mjs +6 -6
  167. package/esm2020/lib/bizdoc.module.mjs +8 -20
  168. package/esm2020/lib/browse/browse-items.component.mjs +7 -6
  169. package/esm2020/lib/browse/browse.mobile.component.mjs +3 -3
  170. package/esm2020/lib/browse/browse.pane.component.mjs +3 -3
  171. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +12 -12
  172. package/esm2020/lib/browse/filter/filter.component.mjs +3 -3
  173. package/esm2020/lib/browse/folders-menu.component.mjs +3 -3
  174. package/esm2020/lib/chat/chat-info.mjs +3 -3
  175. package/esm2020/lib/chat/chat.mobile.component.mjs +3 -3
  176. package/esm2020/lib/chat/chat.service.mjs +3 -3
  177. package/esm2020/lib/chat/contacts.component.mjs +9 -8
  178. package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
  179. package/esm2020/lib/chat/conversation.component.mjs +8 -6
  180. package/esm2020/lib/chat/conversation.pane.component.mjs +3 -3
  181. package/esm2020/lib/compose/action/action-picker.component.mjs +3 -3
  182. package/esm2020/lib/compose/action/action.dialog.mjs +3 -3
  183. package/esm2020/lib/compose/action/action.pane.dialog.mjs +3 -3
  184. package/esm2020/lib/compose/action/assign-action.component.mjs +3 -3
  185. package/esm2020/lib/compose/action/return-action.component.mjs +3 -3
  186. package/esm2020/lib/compose/attachments/attachments.component.mjs +4 -4
  187. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
  188. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
  189. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +3 -3
  190. package/esm2020/lib/compose/comments/Comments.pane.component.mjs +3 -3
  191. package/esm2020/lib/compose/comments/comment.component.mjs +6 -5
  192. package/esm2020/lib/compose/comments/comments.component.mjs +3 -3
  193. package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
  194. package/esm2020/lib/compose/comments/edits.component.mjs +4 -4
  195. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  196. package/esm2020/lib/compose/comments/votes.component.mjs +6 -5
  197. package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
  198. package/esm2020/lib/compose/compose.mobile.component.mjs +27 -17
  199. package/esm2020/lib/compose/compose.pane.component.mjs +7 -5
  200. package/esm2020/lib/compose/copy/copy.dialog.mjs +3 -3
  201. package/esm2020/lib/compose/dismiss.service.mjs +3 -3
  202. package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
  203. package/esm2020/lib/compose/document.component.mjs +3 -3
  204. package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
  205. package/esm2020/lib/compose/document.pane.component.mjs +3 -3
  206. package/esm2020/lib/compose/events/events.component.mjs +4 -4
  207. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  208. package/esm2020/lib/compose/form.component.mjs +3 -3
  209. package/esm2020/lib/compose/new-menu.component.mjs +3 -3
  210. package/esm2020/lib/compose/privilage.directive.mjs +6 -6
  211. package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
  212. package/esm2020/lib/compose/save-changes.dialog.mjs +3 -3
  213. package/esm2020/lib/compose/state.component.mjs +3 -3
  214. package/esm2020/lib/compose/tag/tags.component.mjs +3 -3
  215. package/esm2020/lib/compose/trace/flow.component.mjs +61 -38
  216. package/esm2020/lib/compose/trace/people.component.mjs +3 -3
  217. package/esm2020/lib/compose/trace/trace.base.mjs +6 -7
  218. package/esm2020/lib/compose/trace/trace.component.mjs +10 -10
  219. package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
  220. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +3 -3
  221. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  222. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +5 -5
  223. package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
  224. package/esm2020/lib/core/account.service.mjs +3 -3
  225. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  226. package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
  227. package/esm2020/lib/core/component-factory-resolver.mjs +3 -3
  228. package/esm2020/lib/core/controls/address.input.mjs +3 -3
  229. package/esm2020/lib/core/controls/auto-complete.input.mjs +3 -3
  230. package/esm2020/lib/core/controls/combination-picker-body.mjs +3 -3
  231. package/esm2020/lib/core/controls/combination-picker.mjs +3 -3
  232. package/esm2020/lib/core/controls/combination-pool.mjs +3 -3
  233. package/esm2020/lib/core/controls/select.input.mjs +3 -3
  234. package/esm2020/lib/core/controls/time-picker.mjs +3 -3
  235. package/esm2020/lib/core/controls/timespan.input.mjs +3 -3
  236. package/esm2020/lib/core/datasource.service.mjs +3 -3
  237. package/esm2020/lib/core/guide/guide.component.mjs +3 -3
  238. package/esm2020/lib/core/guide/guide.service.mjs +3 -3
  239. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  240. package/esm2020/lib/core/hub.service.mjs +3 -3
  241. package/esm2020/lib/core/identity/identity.component.mjs +3 -3
  242. package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
  243. package/esm2020/lib/core/info/document-info.service.mjs +3 -3
  244. package/esm2020/lib/core/info/location-info.component.mjs +3 -3
  245. package/esm2020/lib/core/info/map-info.mjs +3 -3
  246. package/esm2020/lib/core/layout/autocomplete.field.mjs +3 -3
  247. package/esm2020/lib/core/layout/checkbox.field.mjs +3 -3
  248. package/esm2020/lib/core/layout/checkbox.mjs +3 -3
  249. package/esm2020/lib/core/layout/date-range.field.mjs +3 -3
  250. package/esm2020/lib/core/layout/date.field.mjs +3 -3
  251. package/esm2020/lib/core/layout/expression.field.mjs +3 -3
  252. package/esm2020/lib/core/layout/html.field.mjs +3 -3
  253. package/esm2020/lib/core/layout/input.base.mjs +3 -3
  254. package/esm2020/lib/core/layout/input.field.mjs +3 -3
  255. package/esm2020/lib/core/layout/layout.component.mjs +3 -3
  256. package/esm2020/lib/core/layout/numeric.field.mjs +3 -3
  257. package/esm2020/lib/core/layout/select.field.mjs +3 -3
  258. package/esm2020/lib/core/layout/switch.field.mjs +3 -3
  259. package/esm2020/lib/core/layout/textarea.field.mjs +3 -3
  260. package/esm2020/lib/core/layout/timespan.field.mjs +3 -3
  261. package/esm2020/lib/core/lottie-animation.mjs +3 -3
  262. package/esm2020/lib/core/mailbox.service.mjs +3 -3
  263. package/esm2020/lib/core/none.component.mjs +3 -3
  264. package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
  265. package/esm2020/lib/core/pipes/calendar.pipe.mjs +72 -0
  266. package/esm2020/lib/core/pipes/date-format.pipe.mjs +19 -0
  267. package/esm2020/lib/core/pipes/daterange.pipe.mjs +13 -14
  268. package/esm2020/lib/core/pipes/difference.pipe.mjs +15 -0
  269. package/esm2020/lib/core/pipes/duration-format.pipe.mjs +48 -0
  270. package/esm2020/lib/core/pipes/duration.pipe.mjs +13 -42
  271. package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
  272. package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
  273. package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
  274. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  275. package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
  276. package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
  277. package/esm2020/lib/core/pipes/time-ago.pipe.mjs +66 -0
  278. package/esm2020/lib/core/pipes/translate.pipe.mjs +3 -3
  279. package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
  280. package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
  281. package/esm2020/lib/core/popup/popup.component.mjs +3 -3
  282. package/esm2020/lib/core/popup/popup.service.mjs +3 -3
  283. package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
  284. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  285. package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
  286. package/esm2020/lib/core/prompt.service.mjs +3 -3
  287. package/esm2020/lib/core/router.mjs +6 -6
  288. package/esm2020/lib/core/session.service.mjs +9 -9
  289. package/esm2020/lib/core/slots/router.directive.mjs +3 -3
  290. package/esm2020/lib/core/slots/router.service.mjs +3 -3
  291. package/esm2020/lib/core/slots/slots.component.mjs +12 -11
  292. package/esm2020/lib/core/tagging/documents.component.mjs +3 -3
  293. package/esm2020/lib/core/tagging/edit-input.component.mjs +9 -8
  294. package/esm2020/lib/core/tagging/emoji.component.mjs +3 -3
  295. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
  296. package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
  297. package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
  298. package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
  299. package/esm2020/lib/core/tagging/users.component.mjs +3 -3
  300. package/esm2020/lib/core/translate.service.mjs +28 -103
  301. package/esm2020/lib/core/window-title.service.mjs +3 -3
  302. package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
  303. package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
  304. package/esm2020/lib/cube/cube-info.service.mjs +3 -3
  305. package/esm2020/lib/cube/cube-menu.component.mjs +3 -3
  306. package/esm2020/lib/cube/cube-view.component.mjs +17 -5
  307. package/esm2020/lib/cube/cube.service.mjs +5 -5
  308. package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
  309. package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
  310. package/esm2020/lib/cube/explore/explore-items.component.mjs +4 -4
  311. package/esm2020/lib/cube/explore/explore.pane.component.mjs +3 -3
  312. package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
  313. package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
  314. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  315. package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
  316. package/esm2020/lib/cube/grid/grid.component.mjs +3 -3
  317. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +5 -6
  318. package/esm2020/lib/cube/matrix/matrix.base.mjs +3 -3
  319. package/esm2020/lib/cube/matrix/matrix.component.mjs +3 -3
  320. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  321. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  322. package/esm2020/lib/cube/matrix/table.component.mjs +17 -18
  323. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  324. package/esm2020/lib/cube/pivot/pivot.component.mjs +15 -13
  325. package/esm2020/lib/cube/sum/sum.component.mjs +3 -3
  326. package/esm2020/lib/cube/view-base.mjs +4 -4
  327. package/esm2020/lib/cube/view.mobile.component.mjs +5 -8
  328. package/esm2020/lib/cube/view.pane.component.mjs +10 -7
  329. package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
  330. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
  331. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
  332. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  333. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
  334. package/esm2020/lib/dashboard/cube/documents.widget.mjs +3 -3
  335. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  336. package/esm2020/lib/dashboard/dashboard.component.mjs +3 -3
  337. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +3 -3
  338. package/esm2020/lib/dashboard/recents/recents.widget.mjs +3 -3
  339. package/esm2020/lib/dashboard/score/activity.widget.mjs +6 -7
  340. package/esm2020/lib/dashboard/score/compare-departments.widget.mjs +7 -8
  341. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +7 -8
  342. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +7 -8
  343. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +5 -5
  344. package/esm2020/lib/dashboard/widget-item.component.mjs +3 -3
  345. package/esm2020/lib/desktop.module.mjs +5 -9
  346. package/esm2020/lib/home/about/about.dialog.mjs +8 -9
  347. package/esm2020/lib/home/home-base.component.mjs +3 -3
  348. package/esm2020/lib/home/home.desktop.component.mjs +3 -3
  349. package/esm2020/lib/home/home.mobile.component.mjs +5 -5
  350. package/esm2020/lib/home/notifications/notifications.component.mjs +7 -6
  351. package/esm2020/lib/home/options/options.component.mjs +3 -3
  352. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  353. package/esm2020/lib/home/search.service.mjs +3 -3
  354. package/esm2020/lib/home/sign/sign.component.mjs +3 -3
  355. package/esm2020/lib/home/tools.component.mjs +3 -3
  356. package/esm2020/lib/impersonate/impersonate.component.mjs +3 -3
  357. package/esm2020/lib/mobile.module.mjs +5 -9
  358. package/esm2020/lib/modules/chart.module.mjs +4 -4
  359. package/esm2020/lib/modules/circular-gauge.module.mjs +4 -4
  360. package/esm2020/lib/modules/date.adapter.mjs +30 -0
  361. package/esm2020/lib/modules/datepicker.intl.mjs +39 -0
  362. package/esm2020/lib/modules/diagram.module.mjs +4 -4
  363. package/esm2020/lib/modules/gantt.module.mjs +4 -4
  364. package/esm2020/lib/modules/grid.module.mjs +4 -4
  365. package/esm2020/lib/modules/material.module.mjs +15 -9
  366. package/esm2020/lib/modules/paginator.intl.mjs +21 -0
  367. package/esm2020/lib/modules/pivot.module.mjs +4 -4
  368. package/esm2020/lib/modules/schedule.module.mjs +4 -4
  369. package/esm2020/lib/modules/spreadsheet.module.mjs +4 -4
  370. package/esm2020/lib/modules/stepper.intl.mjs +17 -0
  371. package/esm2020/lib/modules/texteditor.module.mjs +27 -0
  372. package/esm2020/lib/notifications/filter.component.mjs +3 -3
  373. package/esm2020/lib/notifications/notifications-table.component.mjs +7 -6
  374. package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
  375. package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
  376. package/esm2020/lib/notifications/notifications.service.mjs +3 -3
  377. package/esm2020/lib/notifications/types/commented.notification.mjs +3 -3
  378. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  379. package/esm2020/lib/notifications/types/escalated.notification.mjs +3 -3
  380. package/esm2020/lib/notifications/types/liked.notification.mjs +3 -3
  381. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +3 -3
  382. package/esm2020/lib/notifications/types/notification-base.mjs +3 -3
  383. package/esm2020/lib/notifications/types/nudge.notification.mjs +6 -7
  384. package/esm2020/lib/notifications/types/state-changed.notification.mjs +3 -3
  385. package/esm2020/lib/notifications/types/tagged.notification.mjs +3 -3
  386. package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
  387. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +7 -8
  388. package/esm2020/lib/options/options.component.mjs +3 -3
  389. package/esm2020/lib/options/options.service.mjs +3 -3
  390. package/esm2020/lib/reports/arguments-component.mjs +3 -3
  391. package/esm2020/lib/reports/cube/grid-documents.component.mjs +4 -4
  392. package/esm2020/lib/reports/cube/table-documents.component.mjs +3 -3
  393. package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
  394. package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
  395. package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
  396. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +3 -3
  397. package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
  398. package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
  399. package/esm2020/lib/reports/report.pane.component.mjs +3 -3
  400. package/esm2020/lib/reports/reports-menu.component.mjs +3 -3
  401. package/esm2020/lib/reports/substitution/substitution.component.mjs +4 -4
  402. package/esm2020/lib/reports/table/table-view.component.mjs +3 -3
  403. package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
  404. package/esm2020/lib/routes.mobile.mjs +8 -8
  405. package/esm2020/lib/scheduler/schedule.component.mjs +8 -9
  406. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +7 -8
  407. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +7 -8
  408. package/esm2020/lib/shared.module.mjs +30 -19
  409. package/esm2020/lib/system.module.mjs +5 -9
  410. package/esm2020/lib/views/cube/chart.component.mjs +3 -3
  411. package/esm2020/lib/views/cube/cube-base.mjs +3 -3
  412. package/esm2020/lib/views/cube/explore.component.mjs +3 -3
  413. package/esm2020/lib/views/cube/matrix.component.mjs +5 -5
  414. package/esm2020/lib/views/cube/parallel.component.mjs +5 -5
  415. package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
  416. package/esm2020/lib/views/cube/sum.component.mjs +5 -5
  417. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  418. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +6 -7
  419. package/esm2020/lib/views/view-item.component.mjs +3 -3
  420. package/esm2020/lib/views/views.component.mjs +3 -3
  421. package/esm2020/lib/views/views.mobile.component.mjs +11 -15
  422. package/esm2020/lib/views/views.pane.component.mjs +3 -3
  423. package/esm2020/public-api.mjs +7 -2
  424. package/fesm2015/bizdoc-core.mjs +1412 -1184
  425. package/fesm2015/bizdoc-core.mjs.map +1 -1
  426. package/fesm2020/bizdoc-core.mjs +1412 -1182
  427. package/fesm2020/bizdoc-core.mjs.map +1 -1
  428. package/lib/admin/diff/configuration-diff.component.d.ts +1 -1
  429. package/lib/bizdoc.module.d.ts +6 -7
  430. package/lib/chat/conversation.component.d.ts +1 -1
  431. package/lib/compose/compose.mobile.component.d.ts +2 -2
  432. package/lib/compose/trace/flow.component.d.ts +2 -2
  433. package/lib/compose/trace/trace.component.d.ts +1 -1
  434. package/lib/compose/version-compare/version.pane.component.d.ts +1 -1
  435. package/lib/core/pipes/calendar.pipe.d.ts +27 -0
  436. package/lib/core/pipes/date-format.pipe.d.ts +8 -0
  437. package/lib/core/pipes/daterange.pipe.d.ts +1 -1
  438. package/lib/core/pipes/difference.pipe.d.ts +7 -0
  439. package/lib/core/pipes/duration-format.pipe.d.ts +11 -0
  440. package/lib/core/pipes/duration.pipe.d.ts +5 -8
  441. package/lib/core/pipes/time-ago.pipe.d.ts +16 -0
  442. package/lib/core/session.service.d.ts +2 -1
  443. package/lib/core/translate.service.d.ts +2 -56
  444. package/lib/cube/matrix/table.component.d.ts +2 -2
  445. package/lib/cube/pivot/pivot.component.d.ts +3 -5
  446. package/lib/dashboard/score/peers-performance.widget.d.ts +1 -1
  447. package/lib/dashboard/score/personal-score.widget.d.ts +1 -1
  448. package/lib/desktop.module.d.ts +2 -3
  449. package/lib/home/about/about.dialog.d.ts +2 -1
  450. package/lib/mobile.module.d.ts +2 -3
  451. package/lib/modules/date.adapter.d.ts +13 -0
  452. package/lib/modules/datepicker.intl.d.ts +30 -0
  453. package/lib/modules/paginator.intl.d.ts +14 -0
  454. package/lib/modules/stepper.intl.d.ts +10 -0
  455. package/lib/modules/texteditor.module.d.ts +8 -0
  456. package/lib/notifications/types/nudge.notification.d.ts +2 -1
  457. package/lib/notifications/types/upcoming-event.notification.d.ts +2 -1
  458. package/lib/shared.module.d.ts +175 -171
  459. package/lib/system.module.d.ts +4 -5
  460. package/lib/views/cube/matrix.component.d.ts +2 -2
  461. package/lib/views/views.mobile.component.d.ts +1 -5
  462. package/package.json +3 -5
  463. package/public-api.d.ts +6 -1
@@ -53,12 +53,12 @@ export class CubeMatrixComponent {
53
53
  this.indexes = this.cube.indices.filter(i => this._indices.indexOf(i.name) > -1);
54
54
  else {
55
55
  this.indexes = this.cube.indices;
56
- this._indices = this.cube.indices.map(i => i.name);
56
+ this._indices = this.indexes.map(i => i.name);
57
57
  }
58
- if (changes['_xAxia'] || changes['_serie']) {
58
+ if (changes['_xAxis'] || changes['_serie']) {
59
59
  this.xAxis = this.cube.axes.find(a => a.name === this._xAxis) || this.cube.axes[0];
60
60
  this.series = this.cube.axes.find(a => a.name === this._serie) || this.cube.axes[1];
61
- this._prepare = forkJoin(this._ds.all(this.series.dataType).pipe(tap(r => this.rows = r)), this._ds.all(this.xAxis.dataType).pipe(tap(c => this.columns = c))).toPromise().then(() => this._sum &&
61
+ this._prepare = forkJoin(this._ds.all(this.series.dataType).pipe(tap(r => this.rows = r)), this._ds.all(this.xAxis.dataType).pipe(tap(c => this.columns = c))).toPromise().then(() => this.sum &&
62
62
  this._addsum());
63
63
  }
64
64
  if (changes['axes'])
@@ -73,7 +73,7 @@ export class CubeMatrixComponent {
73
73
  if (xAxis.toString() === c.key)
74
74
  columns.push({
75
75
  key: '_sum',
76
- value: this._sum.title
76
+ value: this.sum.title
77
77
  });
78
78
  });
79
79
  this.columns = columns;
@@ -85,7 +85,7 @@ export class CubeMatrixComponent {
85
85
  if (serie.toString() === r.key)
86
86
  rows.push({
87
87
  key: '_sum',
88
- value: this._sum.title
88
+ value: this.sum.title
89
89
  });
90
90
  });
91
91
  this.rows = rows;
@@ -95,12 +95,12 @@ export class CubeMatrixComponent {
95
95
  const progressTask = setTimeout(() => this.loadingChange.next(this.loading = true), LOADING_DELAY);
96
96
  this._prepare.then(() => this._service.series(this.cube.name, this.xAxis.name, {
97
97
  series: this.series.name,
98
- indices: this.indexes.map(i => i.name),
98
+ indices: this._indices,
99
99
  filters: this.axes,
100
100
  scope: this.scope
101
101
  }).pipe(modelize(), first(), tap(d => {
102
102
  this._totals(d);
103
- this._sum &&
103
+ this.sum &&
104
104
  this._calculatesum(d);
105
105
  })).subscribe(d => this.data = d, (e) => {
106
106
  this._sb.error(e.status === 401 ? 'Unauthorized' : null);
@@ -192,7 +192,7 @@ export class CubeMatrixComponent {
192
192
  get _dsum() {
193
193
  if (this._evalsum)
194
194
  return this._evalsum;
195
- const { xAxis, serie } = this._sum;
195
+ const { xAxis, serie } = this.sum;
196
196
  function translate(axis) {
197
197
  switch (axis) {
198
198
  case '$month':
@@ -210,13 +210,13 @@ export class CubeMatrixComponent {
210
210
  explore(x, serie) {
211
211
  if (!this.interactive)
212
212
  return;
213
- if (this._sum) {
213
+ if (this.sum) {
214
214
  if (x === '_sum') {
215
215
  x = [];
216
216
  for (let i = 0; i < this.columns.length; i++) {
217
217
  let key = this.columns[i].key;
218
218
  x.push(key);
219
- if (key === this._sum.xAxis.toString())
219
+ if (key === this.sum.xAxis.toString())
220
220
  break;
221
221
  }
222
222
  }
@@ -225,7 +225,7 @@ export class CubeMatrixComponent {
225
225
  for (let i = 0; i < this.rows.length; i++) {
226
226
  let key = this.rows[i].key;
227
227
  serie.push(key);
228
- if (key === this._sum.serie.toString())
228
+ if (key === this.sum.serie.toString())
229
229
  break;
230
230
  }
231
231
  }
@@ -265,9 +265,9 @@ export class CubeMatrixComponent {
265
265
  }
266
266
  }
267
267
  }
268
- CubeMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeMatrixComponent, deps: [{ token: i1.PromptService }, { token: i2.CubeService }, { token: i3.SessionService }, { token: i4.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
269
- CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { _cube: ["cube", "_cube"], _xAxis: ["xAxis", "_xAxis"], _serie: ["serie", "_serie"], indices: "indices", scope: "scope", _sum: ["sum", "_sum"], axes: "axes", loading: "loading", interactive: "interactive" }, outputs: { onExplore: "explore", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indexes; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n <span *ngIf=\"data[index.name] && data[index.name][column.key]; else zero\">{{ data[index.name][column.key] | number : PRECISION }}</span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[index.name]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[index.name]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key] && data[row.key][column.key] !== undefined; else zero\">\r\n <span [class.clickable]=\"interactive\" (click)=\"explore(column.key, row.key)\">\r\n {{data[row.key][column.key] | number : PRECISION }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[row.key]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[row.key]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- available -->\r\n <tr>\r\n <th></th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key] < 0\">\r\n {{totals[column.key] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </td>\r\n <th class=\"mat-cell figure\">{{totals['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>\r\n 0\r\n</ng-template>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;display:inline-table;border-collapse:collapse}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td{padding-right:4px}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "number": i5.DecimalPipe, "currency": i5.CurrencyPipe }, animations: [matrixAnimation] });
270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeMatrixComponent, decorators: [{
268
+ CubeMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixComponent, deps: [{ token: i1.PromptService }, { token: i2.CubeService }, { token: i3.SessionService }, { token: i4.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
269
+ CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { _cube: ["cube", "_cube"], _xAxis: ["xAxis", "_xAxis"], _serie: ["serie", "_serie"], indices: "indices", scope: "scope", sum: "sum", axes: "axes", loading: "loading", interactive: "interactive" }, outputs: { onExplore: "explore", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indexes; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n <span *ngIf=\"data[index.name] && data[index.name][column.key]; else zero\">{{ data[index.name][column.key] | number : PRECISION }}</span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[index.name]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[index.name]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key] && data[row.key][column.key] !== undefined; else zero\">\r\n <span [class.clickable]=\"interactive\" (click)=\"explore(column.key, row.key)\">\r\n {{data[row.key][column.key] | number : PRECISION }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[row.key]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[row.key]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- available -->\r\n <tr>\r\n <th></th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key] < 0\">\r\n {{totals[column.key] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </td>\r\n <th class=\"mat-cell figure\">{{totals['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>\r\n 0\r\n</ng-template>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;display:inline-table;border-collapse:collapse}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td{padding-right:4px}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "number": i5.DecimalPipe, "currency": i5.CurrencyPipe }, animations: [matrixAnimation] });
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeMatrixComponent, decorators: [{
271
271
  type: Component,
272
272
  args: [{ selector: 'bizdoc-cube-matrix', animations: [matrixAnimation], template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\" (mouseenter)=\"move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- indices -->\r\n <tr class=\"mat-row cube-index\" *ngFor=\"let index of indexes; let y = index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(0, y)\">{{index.title}}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y)\">\r\n <span *ngIf=\"data[index.name] && data[index.name][column.key]; else zero\">{{ data[index.name][column.key] | number : PRECISION }}</span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(0, y)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[index.name]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[index.name]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"move(-2, y + indices.length)\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, y + indices.length)\">\r\n <ng-container *ngIf=\"data[row.key] && data[row.key][column.key] !== undefined; else zero\">\r\n <span [class.clickable]=\"interactive\" (click)=\"explore(column.key, row.key)\">\r\n {{data[row.key][column.key] | number : PRECISION }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"move(-1, y + indices.length)\" [ngSwitch]=\"!CURRENCY\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ data[row.key]['_total'] | number : PRECISION }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ data[row.key]['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- available -->\r\n <tr>\r\n <th></th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\" (mouseenter)=\"move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key] < 0\">\r\n {{totals[column.key] | currency : CURRENCY: 'symbol' : PRECISION }}\r\n </td>\r\n <th class=\"mat-cell figure\">{{totals['_total'] | currency : CURRENCY: 'symbol' : PRECISION }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>\r\n 0\r\n</ng-template>\r\n", styles: [".clickable{cursor:pointer}.cube-table{width:100%;display:inline-table;border-collapse:collapse}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td{padding-right:4px}\n"] }]
273
273
  }], ctorParameters: function () { return [{ type: i1.PromptService }, { type: i2.CubeService }, { type: i3.SessionService }, { type: i4.DatasourceService }]; }, propDecorators: { tableElement: [{
@@ -286,9 +286,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
286
286
  type: Input
287
287
  }], scope: [{
288
288
  type: Input
289
- }], _sum: [{
290
- type: Input,
291
- args: ['sum']
289
+ }], sum: [{
290
+ type: Input
292
291
  }], axes: [{
293
292
  type: Input
294
293
  }], loading: [{
@@ -305,4 +304,4 @@ export class CubeInfoCellArgs {
305
304
  get value() { return this._value; }
306
305
  get summary() { return this._summary; }
307
306
  }
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFlLFFBQVEsRUFBYSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBTW5FLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUUxQixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUNyQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQ25CO1FBQ0UsS0FBSyxDQUFDLFVBQVUsRUFDZDtZQUNFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7WUFDcEQsT0FBTyxDQUFDLEdBQUcsRUFDVCxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxN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eyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHF1ZXJ5LCBzdGFnZ2VyLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgZmlyc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBDdWJlU2VydmljZSwgbW9kZWxpemUsIFNjb3BlVHlwZSB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZGF0YXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDdWJlLCBDdWJlQXhpcywgQ3ViZUluZGV4IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5cclxuY29uc3QgTE9BRElOR19ERUxBWSA9IDIwMDtcclxuXHJcbmNvbnN0IG1hdHJpeEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3RhYmxlJyxcclxuICBbdHJhbnNpdGlvbigndm9pZD0+KicsXHJcbiAgICBbXHJcbiAgICAgIHF1ZXJ5KCcubWF0LXJvdycsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwcHgpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoMTAwLFxyXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ25vbmUnIH0pKVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgXSldKTtcclxuLyoqIGN1YmUgbWF0cml4IGNvbXBvbmVudCovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtbWF0cml4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW21hdHJpeEFuaW1hdGlvbl1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1YmVNYXRyaXhDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHJlYWRvbmx5IFBSRUNJU0lPTiA9IHRoaXMuX3NlcnZpY2UuZGlnaXRzSW5mbztcclxuICBDVVJSRU5DWTogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxUYWJsZUVsZW1lbnQ+O1xyXG4gIEBJbnB1dCgnY3ViZScpIF9jdWJlPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgneEF4aXMnKSBfeEF4aXMhOiBzdHJpbmc7XHJcbiAgQElucHV0KCdzZXJpZScpIF9zZXJpZSE6IHN0cmluZztcclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfZXZhbHN1bTogeyB4QXhpczogc3RyaW5nIHwgbnVtYmVyOyBzZXJpZTogc3RyaW5nIHwgbnVtYmVyOyB9O1xyXG4gIHB1YmxpYyBnZXQgaW5kaWNlcygpOiBzdHJpbmdbXSB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5kaWNlcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGluZGljZXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHRoaXMuX2luZGljZXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICB9XHJcbiAgQElucHV0KCkgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBASW5wdXQoJ3N1bScpIF9zdW06IFN1bU9wdGlvbnM7XHJcbiAgQElucHV0KCkgYXhlczogQXhlc01hcDtcclxuICBwcml2YXRlIF9pbnRlcmFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBwdWJsaWMgZ2V0IGludGVyYWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aXZlO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaW50ZXJhY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ludGVyYWN0aXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcbiAgQE91dHB1dCgnZXhwbG9yZScpIHJlYWRvbmx5IG9uRXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXhlc01hcD4oKTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICByb3dzOiBLZXlWYWx1ZVtdO1xyXG4gIGNvbHVtbnM6IEtleVZhbHVlW107XHJcbiAgaW5kZXhlczogQ3ViZUluZGV4W107XHJcbiAgZGF0YTogeyBbcm93OiBzdHJpbmddOiB7IFtjb2x1bW46IHN0cmluZ106IG51bWJlcjsgfTsgfTtcclxuICB0b3RhbHM6IHsgW2NvbHVtbjogc3RyaW5nXTogbnVtYmVyIH07XHJcbiAgY3ViZTogQ3ViZTtcclxuICB4QXhpczogQ3ViZUF4aXM7XHJcbiAgc2VyaWVzOiBDdWJlQXhpcztcclxuICBwcml2YXRlIF9wcmVwYXJlOiBQcm9taXNlPGFueT47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kczogRGF0YXNvdXJjZVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snX2N1YmUnXSkge1xyXG4gICAgICB0aGlzLmN1YmUgPSB0aGlzLmN1YmUgPyB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5fY3ViZSkgOlxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2luZGljZXMpXHJcbiAgICAgIHRoaXMuaW5kZXhlcyA9IHRoaXMuY3ViZS5pbmRpY2VzLmZpbHRlcihpID0+IHRoaXMuX2luZGljZXMuaW5kZXhPZihpLm5hbWUpID4gLTEpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5kZXhlcyA9IHRoaXMuY3ViZS5pbmRpY2VzO1xyXG4gICAgICB0aGlzLl9pbmRpY2VzID0gdGhpcy5jdWJlLmluZGljZXMubWFwKGkgPT4gaS5uYW1lKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydfeEF4aWEnXSB8fCBjaGFuZ2VzWydfc2VyaWUnXSkge1xyXG4gICAgICB0aGlzLnhBeGlzID0gdGhpcy5jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy5feEF4aXMpIHx8IHRoaXMuY3ViZS5heGVzWzBdO1xyXG4gICAgICB0aGlzLnNlcmllcyA9IHRoaXMuY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMuX3NlcmllKSB8fCB0aGlzLmN1YmUuYXhlc1sxXTtcclxuICAgICAgdGhpcy5fcHJlcGFyZSA9IGZvcmtKb2luKHRoaXMuX2RzLmFsbCh0aGlzLnNlcmllcy5kYXRhVHlwZSkucGlwZSh0YXAociA9PlxyXG4gICAgICAgIHRoaXMucm93cyA9IHJcclxuICAgICAgKSksXHJcbiAgICAgICAgdGhpcy5fZHMuYWxsKHRoaXMueEF4aXMuZGF0YVR5cGUpLnBpcGUodGFwKGMgPT5cclxuICAgICAgICAgIHRoaXMuY29sdW1ucyA9IGNcclxuICAgICAgICApKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICgpID0+XHJcbiAgICAgICAgICAgIHRoaXMuX3N1bSAmJlxyXG4gICAgICAgICAgICB0aGlzLl9hZGRzdW0oKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snYXhlcyddKVxyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWRkc3VtKCkge1xyXG4gICAgbGV0IHsgeEF4aXMsIHNlcmllIH0gPSB0aGlzLl9kc3VtO1xyXG4gICAgaWYgKHhBeGlzKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBbXTtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgY29sdW1ucy5wdXNoKGMpO1xyXG4gICAgICAgIGlmICh4QXhpcy50b1N0cmluZygpID09PSBjLmtleSlcclxuICAgICAgICAgIGNvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgICAgIGtleTogJ19zdW0nLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fc3VtLnRpdGxlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VyaWUpIHtcclxuICAgICAgY29uc3Qgcm93cyA9IFtdO1xyXG4gICAgICB0aGlzLnJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICByb3dzLnB1c2gocik7XHJcbiAgICAgICAgaWYgKHNlcmllLnRvU3RyaW5nKCkgPT09IHIua2V5KVxyXG4gICAgICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICAgICAga2V5OiAnX3N1bScsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9zdW0udGl0bGVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5yb3dzID0gcm93cztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICBjb25zdCBwcm9ncmVzc1Rhc2sgPSBzZXRUaW1lb3V0KCgpID0+XHJcbiAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5uZXh0KHRoaXMubG9hZGluZyA9IHRydWUpXHJcbiAgICAgICwgTE9BRElOR19ERUxBWSk7XHJcbiAgICB0aGlzLl9wcmVwYXJlLnRoZW4oKCkgPT4gdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5jdWJlLm5hbWUsIHRoaXMueEF4aXMubmFtZSwge1xyXG4gICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLm5hbWUsXHJcbiAgICAgIGluZGljZXM6IHRoaXMuaW5kZXhlcy5tYXAoaSA9PiBpLm5hbWUpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmF4ZXMsXHJcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlXHJcbiAgICB9IGFzIGFueSkucGlwZShcclxuICAgICAgbW9kZWxpemUoKSwgZmlyc3QoKSwgdGFwKGQgPT4ge1xyXG4gICAgICAgIHRoaXMuX3RvdGFscyhkKTtcclxuICAgICAgICB0aGlzLl9zdW0gJiZcclxuICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZXN1bShkKTtcclxuICAgICAgfSkpLnN1YnNjcmliZShkID0+XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZCxcclxuICAgICAgICAoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgIGNsZWFyVGltZW91dChwcm9ncmVzc1Rhc2spO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF90b3RhbHMoZGF0YTogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IG51bWJlcjsgfTsgfSkge1xyXG4gICAgbGV0IGdyYW5kID0gMDtcclxuICAgIHRoaXMuaW5kZXhlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGRhdGFbaS5uYW1lXTtcclxuICAgICAgaWYgKCFpbmRleCkgZGF0YVtpLm5hbWVdID0ge307XHJcbiAgICAgIGVsc2VcclxuICAgICAge1xyXG4gICAgICAgIGxldCBzdW0gPSAwLCB4O1xyXG4gICAgICAgIGZvciAoeCBpbiBpbmRleClcclxuICAgICAgICAgIHN1bSArPSBpbmRleFt4XTtcclxuICAgICAgICBpbmRleFsnX3RvdGFsJ10gPSBzdW07XHJcbiAgICAgICAgZ3JhbmQgKz0gc3VtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBpZiAoIWRhdGFbci5rZXldKVxyXG4gICAgICAgIGRhdGFbci5rZXldID0ge307XHJcbiAgICAgIGNvbnN0IGxpbmUgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgbGV0IHN1bSA9IDAsIHg7XHJcbiAgICAgIGlmIChsaW5lKVxyXG4gICAgICAgIGZvciAoeCBpbiBsaW5lKVxyXG4gICAgICAgICAgc3VtICs9IGxpbmVbeF07XHJcbiAgICAgIGRhdGFbci5rZXldWydfdG90YWwnXSA9IHN1bTtcclxuICAgICAgZ3JhbmQgLT0gc3VtO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvdGFscyA9IHt9O1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGxldCBzdW0gPSAwLCBrZXk7XHJcbiAgICAgIGZvciAoa2V5IGluIGRhdGEpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBkYXRhW2tleV1bYy5rZXldO1xyXG4gICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1bSArPSB0aGlzLl9pbmRpY2VzLmluZGV4T2Yoa2V5KSA+IC0xID8gdmFsIDogLXZhbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRvdGFsc1tjLmtleV0gPSBzdW07XHJcbiAgICB9KTtcclxuICAgIHRoaXMudG90YWxzWydfdG90YWwnXSA9IGdyYW5kO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlc3VtKGRhdGEpIHtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZSB9ID0gdGhpcy5fZHN1bTtcclxuICAgIGlmICh4QXhpcykge1xyXG4gICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICB0aGlzLnJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICBjb25zdCByb3cgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgICBpZiAoIXJvdylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBsZXQgc3VtID0gMCwgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gdGhpcy5jb2x1bW5zW2ldLmtleSwgdmFsID0gcm93W2tleV07XHJcbiAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSB4QXhpcy50b1N0cmluZygpKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YVtyLmtleV1bJ19zdW0nXSA9IHN1bTtcclxuICAgICAgICB0b3RhbCArPSBzdW07XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRvdGFsc1snX3N1bSddID0gdG90YWw7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VyaWUpIHtcclxuICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgbGV0IHN1bSA9IDAsIGkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChpIDwgdGhpcy5yb3dzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IGtleSA9IHRoaXMucm93c1tpXS5rZXksIHJvdyA9IGRhdGFba2V5XTtcclxuICAgICAgICAgIGlmIChyb3cpIHtcclxuICAgICAgICAgICAgbGV0IHZhbCA9IHJvd1tjLmtleV07XHJcbiAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSBzZXJpZS50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhWydfc3VtJ11bYy5rZXldID0gc3VtO1xyXG4gICAgICAgIHRvdGFsICs9IHN1bTtcclxuICAgICAgfSk7XHJcbiAgICAgIGRhdGFbJ19zdW0nXVsnX3RvdGFsJ10gPSB0b3RhbDtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBnZXQgX2RzdW0oKTogeyB4QXhpczogYW55OyBzZXJpZTogYW55OyB9IHtcclxuICAgIGlmICh0aGlzLl9ldmFsc3VtKSByZXR1cm4gdGhpcy5fZXZhbHN1bTtcclxuICAgIGNvbnN0IHsgeEF4aXMsIHNlcmllIH0gPSB0aGlzLl9zdW07XHJcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUoYXhpczogc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICAgIHN3aXRjaCAoYXhpcykge1xyXG4gICAgICAgIGNhc2UgJyRtb250aCc6XHJcbiAgICAgICAgICByZXR1cm4gJ00nICsgKCcwJyArIG5ldyBEYXRlKCkuZ2V0TW9udGgoKS50b1N0cmluZygpKS5zbGljZSgtMik7XHJcbiAgICAgICAgY2FzZSAnJHllYXInOlxyXG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xyXG4gICAgICAgIGNhc2UgJyRxdWFydGVyJzpcclxuICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobmV3IERhdGUoKS5nZXRNb250aCgpIC8gMykudG9TdHJpbmcoKTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIGF4aXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9ldmFsc3VtID0geyB4QXhpczogdHJhbnNsYXRlKHhBeGlzKSwgc2VyaWU6IHRyYW5zbGF0ZShzZXJpZSkgfTtcclxuICB9XHJcblxyXG4gIGV4cGxvcmUoeDogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSwgc2VyaWU6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10pIHtcclxuICAgIGlmICghdGhpcy5pbnRlcmFjdGl2ZSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuX3N1bSkge1xyXG4gICAgICBpZiAoeCA9PT0gJ19zdW0nKSB7XHJcbiAgICAgICAgeCA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gdGhpcy5jb2x1bW5zW2ldLmtleTtcclxuICAgICAgICAgIHgucHVzaChrZXkpO1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5fc3VtLnhBeGlzLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoc2VyaWUgPT09ICdfc3VtJykge1xyXG4gICAgICAgIHNlcmllID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBrZXkgPSB0aGlzLnJvd3NbaV0ua2V5O1xyXG4gICAgICAgICAgc2VyaWUucHVzaChrZXkpO1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5fc3VtLnNlcmllLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgYXhlcyA9IHsgLi4udGhpcy5heGVzIH0gYXMgQXhlc01hcDtcclxuICAgIGF4ZXNbdGhpcy54QXhpcy5uYW1lXSA9IHg7XHJcbiAgICBheGVzW3RoaXMuc2VyaWVzLm5hbWVdID0gc2VyaWU7XHJcbiAgICB0aGlzLm9uRXhwbG9yZS5lbWl0KGF4ZXMpO1xyXG4gIH1cclxuICBtb3ZlKHgsIHkpIHtcclxuICAgIGxldCByb3dJbmRleCA9IDA7XHJcbiAgICBmb3IgKGxldCBiID0gMDsgYiA8IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEJvZGllcy5sZW5ndGg7IGIrKykge1xyXG4gICAgICBsZXQgdEJvZHkgPSB0aGlzLnRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRCb2RpZXMuaXRlbShiKTtcclxuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCB0Qm9keS5yb3dzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgICAgbGV0IHJvdyA9IHRCb2R5LnJvd3MuaXRlbShyKTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHJvdy5jZWxscy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgbGV0IGNlbGwgPSByb3cuY2VsbHMuaXRlbShjKTtcclxuICAgICAgICAgIGlmIChjID09PSB4KVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteCcpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteCcpO1xyXG4gICAgICAgICAgaWYgKHJvd0luZGV4ID09PSB5KVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteScpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb3dJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0Rm9vdCA9IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEZvb3QsIHJvdyA9IHRGb290LnJvd3NbMF07XHJcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcm93LmNlbGxzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgbGV0IGNlbGwgPSByb3cuY2VsbHMuaXRlbShjKTtcclxuICAgICAgICBpZiAoYyA9PT0geClcclxuICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC14Jyk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjZWxsLXgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEN1YmVJbmZvQ2VsbEFyZ3Mge1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBudW1iZXI7XHJcbiAgZ2V0IHZhbHVlKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl92YWx1ZTsgfVxyXG4gIHByaXZhdGUgX3N1bW1hcnk6IGJvb2xlYW47XHJcbiAgZ2V0IHN1bW1hcnkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdW1tYXJ5OyB9XHJcbiAgY29sb3I6IHN0cmluZztcclxuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcclxuICBkYXRhOiB7IFtyb3c6IHN0cmluZ106IHsgW2NvbHVtbjogc3RyaW5nXTogbnVtYmVyOyB9OyB9O1xyXG4gIHJvdzogc3RyaW5nO1xyXG4gIGNvbHVtbjogc3RyaW5nO1xyXG59XHJcblxyXG50eXBlIFN1bU9wdGlvbnMgPSB7XHJcbiAgeEF4aXM/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgc2VyaWU/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgdGl0bGU6IGFueTtcclxufVxyXG50eXBlIEtleVZhbHVlID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlOiBhbnk7XHJcbn07XHJcblxyXG4iLCI8dGFibGUgI3RhYmxlIGNsYXNzPVwibWF0LXRhYmxlIGN1YmUtdGFibGVcIiAobW91c2VsZWF2ZSk9XCJtb3ZlKC0xLCAtMSlcIiAqbmdJZj1cImRhdGFcIj5cclxuICA8dGhlYWQ+XHJcbiAgICA8IS0tIGhlYWRlcnMgLS0+XHJcbiAgICA8dHIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgIDx0aD48L3RoPlxyXG4gICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgLTIpXCIgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj5cclxuICAgICAgICB7eyBjb2x1bW4udmFsdWUgfX1cclxuICAgICAgPC90aD5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGhlYWQ+XHJcbiAgPHRib2R5PlxyXG4gICAgPCEtLSBpbmRpY2VzIC0tPlxyXG4gICAgPHRyIGNsYXNzPVwibWF0LXJvdyBjdWJlLWluZGV4XCIgKm5nRm9yPVwibGV0IGluZGV4IG9mIGluZGV4ZXM7IGxldCB5ID0gaW5kZXhcIj5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgwLCB5KVwiPnt7aW5kZXgudGl0bGV9fTwvdGg+XHJcbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIHkpXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhW2luZGV4Lm5hbWVdICYmIGRhdGFbaW5kZXgubmFtZV1bY29sdW1uLmtleV07IGVsc2UgemVyb1wiPnt7IGRhdGFbaW5kZXgubmFtZV1bY29sdW1uLmtleV0gfCBudW1iZXIgOiBQUkVDSVNJT04gfX08L3NwYW4+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoMCwgeSlcIiBbbmdTd2l0Y2hdPVwiIUNVUlJFTkNZXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxyXG4gICAgICAgICAge3sgZGF0YVtpbmRleC5uYW1lXVsnX3RvdGFsJ10gfCBudW1iZXIgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICB7eyBkYXRhW2luZGV4Lm5hbWVdWydfdG90YWwnXSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbiAgPHRib2R5PlxyXG4gICAgPCEtLSByb3dzIC0tPlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93czsgbGV0IHkgPSBpbmRleFwiIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIiAobW91c2VlbnRlcik9XCJtb3ZlKC0yLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCI+e3sgcm93LnZhbHVlIH19PC90aD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgeSArIGluZGljZXMubGVuZ3RoKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhW3Jvdy5rZXldICYmIGRhdGFbcm93LmtleV1bY29sdW1uLmtleV0gIT09IHVuZGVmaW5lZDsgZWxzZSB6ZXJvXCI+XHJcbiAgICAgICAgICA8c3BhbiBbY2xhc3MuY2xpY2thYmxlXT1cImludGVyYWN0aXZlXCIgKGNsaWNrKT1cImV4cGxvcmUoY29sdW1uLmtleSwgcm93LmtleSlcIj5cclxuICAgICAgICAgICAge3tkYXRhW3Jvdy5rZXldW2NvbHVtbi5rZXldIHwgbnVtYmVyIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoLTEsIHkgKyBpbmRpY2VzLmxlbmd0aClcIiBbbmdTd2l0Y2hdPVwiIUNVUlJFTkNZXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxyXG4gICAgICAgICAge3sgZGF0YVtyb3cua2V5XVsnX3RvdGFsJ10gfCBudW1iZXIgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldWydfdG90YWwnXSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbiAgPHRmb290PlxyXG4gICAgPCEtLSBhdmFpbGFibGUgLS0+XHJcbiAgICA8dHI+XHJcbiAgICAgIDx0aD48L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCAtMilcIlxyXG4gICAgICAgICAgW2NsYXNzLm5lZ2F0aXZlLWZpZ3VyZV09XCJ0b3RhbHNbY29sdW1uLmtleV0gPCAwXCI+XHJcbiAgICAgICAge3t0b3RhbHNbY29sdW1uLmtleV0gfCBjdXJyZW5jeSA6IENVUlJFTkNZOiAnc3ltYm9sJyA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIj57e3RvdGFsc1snX3RvdGFsJ10gfCBjdXJyZW5jeSA6IENVUlJFTkNZOiAnc3ltYm9sJyA6IFBSRUNJU0lPTiB9fTwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGZvb3Q+XHJcbjwvdGFibGU+XHJcbjxuZy10ZW1wbGF0ZSAjemVybz5cclxuICAwXHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFlLFFBQVEsRUFBYSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBTW5FLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUUxQixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUNyQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQ25CO1FBQ0UsS0FBSyxDQUFDLFVBQVUsRUFDZDtZQUNFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7WUFDcEQsT0FBTyxDQUFDLEdBQUcsRUFDVCxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxN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LEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztvQkFFN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDbkM7U0FDRjtJQUNILENBQUM7O2dIQXZSVSxtQkFBbUI7b0dBQW5CLG1CQUFtQix1Y0NqQ2hDLDQ3RkFnRUEsZ3NCRGpDYyxDQUFDLGVBQWUsQ0FBQzsyRkFFbEIsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLG9CQUFvQixjQUdsQixDQUFDLGVBQWUsQ0FBQzsyTEFLVCxZQUFZO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBQ0gsS0FBSztzQkFBbkIsS0FBSzt1QkFBQyxNQUFNO2dCQUNHLE1BQU07c0JBQXJCLEtBQUs7dUJBQUMsT0FBTztnQkFDRSxNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU87Z0JBT0gsT0FBTztzQkFEakIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0ssV0FBVztzQkFEckIsS0FBSztnQkFJc0IsU0FBUztzQkFBcEMsTUFBTTt1QkFBQyxTQUFTO2dCQUNFLGFBQWE7c0JBQS9CLE1BQU07O0FBNlBULE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsSUFBSSxLQUFLLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUUzQyxJQUFJLE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0NBTWpEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBxdWVyeSwgc3RhZ2dlciwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIGZpcnN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UsIG1vZGVsaXplLCBTY29wZVR5cGUgfSBmcm9tICcuLi9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZSwgQ3ViZUF4aXMsIEN1YmVJbmRleCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuXHJcbmNvbnN0IExPQURJTkdfREVMQVkgPSAyMDA7XHJcblxyXG5jb25zdCBtYXRyaXhBbmltYXRpb24gPSB0cmlnZ2VyKCd0YWJsZScsXHJcbiAgW3RyYW5zaXRpb24oJ3ZvaWQ9PionLFxyXG4gICAgW1xyXG4gICAgICBxdWVyeSgnLm1hdC1yb3cnLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMHB4KScgfSksXHJcbiAgICAgICAgICBzdGFnZ2VyKDEwMCxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdub25lJyB9KSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgIF0pXSk7XHJcbi8qKiBjdWJlIG1hdHJpeCBjb21wb25lbnQqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLW1hdHJpeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFttYXRyaXhBbmltYXRpb25dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlTWF0cml4Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICByZWFkb25seSBQUkVDSVNJT04gPSB0aGlzLl9zZXJ2aWNlLmRpZ2l0c0luZm87XHJcbiAgQ1VSUkVOQ1k6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVGFibGVFbGVtZW50PjtcclxuICBASW5wdXQoJ2N1YmUnKSBfY3ViZT86IHN0cmluZztcclxuICBASW5wdXQoJ3hBeGlzJykgX3hBeGlzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnc2VyaWUnKSBfc2VyaWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfaW5kaWNlcz86IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgX2V2YWxzdW06IHsgeEF4aXM6IHN0cmluZyB8IG51bWJlcjsgc2VyaWU6IHN0cmluZyB8IG51bWJlcjsgfTtcclxuICBwdWJsaWMgZ2V0IGluZGljZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZGljZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbmRpY2VzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNjb3BlOiBTY29wZVR5cGU7XHJcbiAgQElucHV0KCkgc3VtOiBTdW1PcHRpb25zO1xyXG4gIEBJbnB1dCgpIGF4ZXM6IEF4ZXNNYXA7XHJcbiAgcHJpdmF0ZSBfaW50ZXJhY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHVibGljIGdldCBpbnRlcmFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGl2ZTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGludGVyYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbnRlcmFjdGl2ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBPdXRwdXQoJ2V4cGxvcmUnKSByZWFkb25seSBvbkV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4ZXNNYXA+KCk7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgcm93czogS2V5VmFsdWVbXTtcclxuICBjb2x1bW5zOiBLZXlWYWx1ZVtdO1xyXG4gIGluZGV4ZXM6IEN1YmVJbmRleFtdO1xyXG4gIGRhdGE6IHsgW3Jvdzogc3RyaW5nXTogeyBbY29sdW1uOiBzdHJpbmddOiBudW1iZXI7IH07IH07XHJcbiAgdG90YWxzOiB7IFtjb2x1bW46IHN0cmluZ106IG51bWJlciB9O1xyXG4gIGN1YmU6IEN1YmU7XHJcbiAgeEF4aXM6IEN1YmVBeGlzO1xyXG4gIHNlcmllczogQ3ViZUF4aXM7XHJcbiAgcHJpdmF0ZSBfcHJlcGFyZTogUHJvbWlzZTxhbnk+O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ19jdWJlJ10pIHtcclxuICAgICAgdGhpcy5jdWJlID0gdGhpcy5jdWJlID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuX2N1YmUpIDpcclxuICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICAgIHRoaXMuQ1VSUkVOQ1kgPSB0aGlzLmN1YmUuY3VycmVuY3lDb2RlIC8qfHwgdGhpcy5fc2VydmljZS5jdXJyZW5jeUNvZGUqLztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9pbmRpY2VzKVxyXG4gICAgICB0aGlzLmluZGV4ZXMgPSB0aGlzLmN1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmluZGV4ZXMgPSB0aGlzLmN1YmUuaW5kaWNlcztcclxuICAgICAgdGhpcy5faW5kaWNlcyA9IHRoaXMuaW5kZXhlcy5tYXAoaSA9PiBpLm5hbWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ194QXhpcyddIHx8IGNoYW5nZXNbJ19zZXJpZSddKSB7XHJcbiAgICAgIHRoaXMueEF4aXMgPSB0aGlzLmN1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB0aGlzLl94QXhpcykgfHwgdGhpcy5jdWJlLmF4ZXNbMF07XHJcbiAgICAgIHRoaXMuc2VyaWVzID0gdGhpcy5jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy5fc2VyaWUpIHx8IHRoaXMuY3ViZS5heGVzWzFdO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlID0gZm9ya0pvaW4odGhpcy5fZHMuYWxsKHRoaXMuc2VyaWVzLmRhdGFUeXBlKS5waXBlKHRhcChyID0+XHJcbiAgICAgICAgdGhpcy5yb3dzID0gclxyXG4gICAgICApKSxcclxuICAgICAgICB0aGlzLl9kcy5hbGwodGhpcy54QXhpcy5kYXRhVHlwZSkucGlwZSh0YXAoYyA9PlxyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zID0gY1xyXG4gICAgICAgICkpKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgKCkgPT5cclxuICAgICAgICAgICAgdGhpcy5zdW0gJiZcclxuICAgICAgICAgICAgdGhpcy5fYWRkc3VtKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2F4ZXMnXSlcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZHN1bSgpIHtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZSB9ID0gdGhpcy5fZHN1bTtcclxuICAgIGlmICh4QXhpcykge1xyXG4gICAgICBjb25zdCBjb2x1bW5zID0gW107XHJcbiAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgIGNvbHVtbnMucHVzaChjKTtcclxuICAgICAgICBpZiAoeEF4aXMudG9TdHJpbmcoKSA9PT0gYy5rZXkpXHJcbiAgICAgICAgICBjb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgICBrZXk6ICdfc3VtJyxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc3VtLnRpdGxlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VyaWUpIHtcclxuICAgICAgY29uc3Qgcm93cyA9IFtdO1xyXG4gICAgICB0aGlzLnJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICByb3dzLnB1c2gocik7XHJcbiAgICAgICAgaWYgKHNlcmllLnRvU3RyaW5nKCkgPT09IHIua2V5KVxyXG4gICAgICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICAgICAga2V5OiAnX3N1bScsXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnN1bS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJvd3MgPSByb3dzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHByb2dyZXNzVGFzayA9IHNldFRpbWVvdXQoKCkgPT5cclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gdHJ1ZSlcclxuICAgICAgLCBMT0FESU5HX0RFTEFZKTtcclxuICAgIHRoaXMuX3ByZXBhcmUudGhlbigoKSA9PiB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUubmFtZSwgdGhpcy54QXhpcy5uYW1lLCB7XHJcbiAgICAgIHNlcmllczogdGhpcy5zZXJpZXMubmFtZSxcclxuICAgICAgaW5kaWNlczogdGhpcy5faW5kaWNlcyxcclxuICAgICAgZmlsdGVyczogdGhpcy5heGVzLFxyXG4gICAgICBzY29wZTogdGhpcy5zY29wZVxyXG4gICAgfSBhcyBhbnkpLnBpcGUoXHJcbiAgICAgIG1vZGVsaXplKCksIGZpcnN0KCksIHRhcChkID0+IHtcclxuICAgICAgICB0aGlzLl90b3RhbHMoZCk7XHJcbiAgICAgICAgdGhpcy5zdW0gJiZcclxuICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZXN1bShkKTtcclxuICAgICAgfSkpLnN1YnNjcmliZShkID0+XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZCxcclxuICAgICAgICAoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgIGNsZWFyVGltZW91dChwcm9ncmVzc1Rhc2spO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF90b3RhbHMoZGF0YTogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IG51bWJlcjsgfTsgfSkge1xyXG4gICAgbGV0IGdyYW5kID0gMDtcclxuICAgIHRoaXMuaW5kZXhlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGRhdGFbaS5uYW1lXTtcclxuICAgICAgaWYgKCFpbmRleCkgZGF0YVtpLm5hbWVdID0ge307XHJcbiAgICAgIGVsc2VcclxuICAgICAge1xyXG4gICAgICAgIGxldCBzdW0gPSAwLCB4O1xyXG4gICAgICAgIGZvciAoeCBpbiBpbmRleClcclxuICAgICAgICAgIHN1bSArPSBpbmRleFt4XTtcclxuICAgICAgICBpbmRleFsnX3RvdGFsJ10gPSBzdW07XHJcbiAgICAgICAgZ3JhbmQgKz0gc3VtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBpZiAoIWRhdGFbci5rZXldKVxyXG4gICAgICAgIGRhdGFbci5rZXldID0ge307XHJcbiAgICAgIGNvbnN0IGxpbmUgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgbGV0IHN1bSA9IDAsIHg7XHJcbiAgICAgIGlmIChsaW5lKVxyXG4gICAgICAgIGZvciAoeCBpbiBsaW5lKVxyXG4gICAgICAgICAgc3VtICs9IGxpbmVbeF07XHJcbiAgICAgIGRhdGFbci5rZXldWydfdG90YWwnXSA9IHN1bTtcclxuICAgICAgZ3JhbmQgLT0gc3VtO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvdGFscyA9IHt9O1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGxldCBzdW0gPSAwLCBrZXk7XHJcbiAgICAgIGZvciAoa2V5IGluIGRhdGEpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBkYXRhW2tleV1bYy5rZXldO1xyXG4gICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1bSArPSB0aGlzLl9pbmRpY2VzLmluZGV4T2Yoa2V5KSA+IC0xID8gdmFsIDogLXZhbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRvdGFsc1tjLmtleV0gPSBzdW07XHJcbiAgICB9KTtcclxuICAgIHRoaXMudG90YWxzWydfdG90YWwnXSA9IGdyYW5kO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlc3VtKGRhdGEpIHtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZSB9ID0gdGhpcy5fZHN1bTtcclxuICAgIGlmICh4QXhpcykge1xyXG4gICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICB0aGlzLnJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICBjb25zdCByb3cgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgICBpZiAoIXJvdylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBsZXQgc3VtID0gMCwgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gdGhpcy5jb2x1bW5zW2ldLmtleSwgdmFsID0gcm93W2tleV07XHJcbiAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSB4QXhpcy50b1N0cmluZygpKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YVtyLmtleV1bJ19zdW0nXSA9IHN1bTtcclxuICAgICAgICB0b3RhbCArPSBzdW07XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRvdGFsc1snX3N1bSddID0gdG90YWw7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VyaWUpIHtcclxuICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgbGV0IHN1bSA9IDAsIGkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChpIDwgdGhpcy5yb3dzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IGtleSA9IHRoaXMucm93c1tpXS5rZXksIHJvdyA9IGRhdGFba2V5XTtcclxuICAgICAgICAgIGlmIChyb3cpIHtcclxuICAgICAgICAgICAgbGV0IHZhbCA9IHJvd1tjLmtleV07XHJcbiAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSBzZXJpZS50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhWydfc3VtJ11bYy5rZXldID0gc3VtO1xyXG4gICAgICAgIHRvdGFsICs9IHN1bTtcclxuICAgICAgfSk7XHJcbiAgICAgIGRhdGFbJ19zdW0nXVsnX3RvdGFsJ10gPSB0b3RhbDtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBnZXQgX2RzdW0oKTogeyB4QXhpczogYW55OyBzZXJpZTogYW55OyB9IHtcclxuICAgIGlmICh0aGlzLl9ldmFsc3VtKSByZXR1cm4gdGhpcy5fZXZhbHN1bTtcclxuICAgIGNvbnN0IHsgeEF4aXMsIHNlcmllIH0gPSB0aGlzLnN1bTtcclxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShheGlzOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgICAgc3dpdGNoIChheGlzKSB7XHJcbiAgICAgICAgY2FzZSAnJG1vbnRoJzpcclxuICAgICAgICAgIHJldHVybiAnTScgKyAoJzAnICsgbmV3IERhdGUoKS5nZXRNb250aCgpLnRvU3RyaW5nKCkpLnNsaWNlKC0yKTtcclxuICAgICAgICBjYXNlICckeWVhcic6XHJcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY2FzZSAnJHF1YXJ0ZXInOlxyXG4gICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgLyAzKS50b1N0cmluZygpO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gYXhpcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2V2YWxzdW0gPSB7IHhBeGlzOiB0cmFuc2xhdGUoeEF4aXMpLCBzZXJpZTogdHJhbnNsYXRlKHNlcmllKSB9O1xyXG4gIH1cclxuXHJcbiAgZXhwbG9yZSh4OiBzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXSB8IG51bWJlcltdLCBzZXJpZTogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSkge1xyXG4gICAgaWYgKCF0aGlzLmludGVyYWN0aXZlKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5zdW0pIHtcclxuICAgICAgaWYgKHggPT09ICdfc3VtJykge1xyXG4gICAgICAgIHggPSBbXSBhcyBzdHJpbmdbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGtleSA9IHRoaXMuY29sdW1uc1tpXS5rZXk7XHJcbiAgICAgICAgICB4LnB1c2goa2V5KTtcclxuICAgICAgICAgIGlmIChrZXkgPT09IHRoaXMuc3VtLnhBeGlzLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoc2VyaWUgPT09ICdfc3VtJykge1xyXG4gICAgICAgIHNlcmllID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBrZXkgPSB0aGlzLnJvd3NbaV0ua2V5O1xyXG4gICAgICAgICAgc2VyaWUucHVzaChrZXkpO1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5zdW0uc2VyaWUudG9TdHJpbmcoKSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBheGVzID0geyAuLi50aGlzLmF4ZXMgfSBhcyBBeGVzTWFwO1xyXG4gICAgYXhlc1t0aGlzLnhBeGlzLm5hbWVdID0geDtcclxuICAgIGF4ZXNbdGhpcy5zZXJpZXMubmFtZV0gPSBzZXJpZTtcclxuICAgIHRoaXMub25FeHBsb3JlLmVtaXQoYXhlcyk7XHJcbiAgfVxyXG4gIG1vdmUoeCwgeSkge1xyXG4gICAgbGV0IHJvd0luZGV4ID0gMDtcclxuICAgIGZvciAobGV0IGIgPSAwOyBiIDwgdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Qm9kaWVzLmxlbmd0aDsgYisrKSB7XHJcbiAgICAgIGxldCB0Qm9keSA9IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEJvZGllcy5pdGVtKGIpO1xyXG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHRCb2R5LnJvd3MubGVuZ3RoOyByKyspIHtcclxuICAgICAgICBsZXQgcm93ID0gdEJvZHkucm93cy5pdGVtKHIpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcm93LmNlbGxzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxscy5pdGVtKGMpO1xyXG4gICAgICAgICAgaWYgKGMgPT09IHgpXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC14Jyk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC14Jyk7XHJcbiAgICAgICAgICBpZiAocm93SW5kZXggPT09IHkpXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC15Jyk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC15Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvd0luZGV4Kys7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHRGb290ID0gdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Rm9vdCwgcm93ID0gdEZvb3Qucm93c1swXTtcclxuICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCByb3cuY2VsbHMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxscy5pdGVtKGMpO1xyXG4gICAgICAgIGlmIChjID09PSB4KVxyXG4gICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCdjZWxsLXgnKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3ViZUluZm9DZWxsQXJncyB7XHJcbiAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlcjtcclxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3ZhbHVlOyB9XHJcbiAgcHJpdmF0ZSBfc3VtbWFyeTogYm9vbGVhbjtcclxuICBnZXQgc3VtbWFyeSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3N1bW1hcnk7IH1cclxuICBjb2xvcjogc3RyaW5nO1xyXG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xyXG4gIGRhdGE6IHsgW3Jvdzogc3RyaW5nXTogeyBbY29sdW1uOiBzdHJpbmddOiBudW1iZXI7IH07IH07XHJcbiAgcm93OiBzdHJpbmc7XHJcbiAgY29sdW1uOiBzdHJpbmc7XHJcbn1cclxuXHJcbnR5cGUgU3VtT3B0aW9ucyA9IHtcclxuICB4QXhpcz86IHN0cmluZyB8IG51bWJlcjtcclxuICBzZXJpZT86IHN0cmluZyB8IG51bWJlcjtcclxuICB0aXRsZTogYW55O1xyXG59XHJcbnR5cGUgS2V5VmFsdWUgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWU6IGFueTtcclxufTtcclxuXHJcbiIsIjx0YWJsZSAjdGFibGUgY2xhc3M9XCJtYXQtdGFibGUgY3ViZS10YWJsZVwiIChtb3VzZWxlYXZlKT1cIm1vdmUoLTEsIC0xKVwiICpuZ0lmPVwiZGF0YVwiPlxyXG4gIDx0aGVhZD5cclxuICAgIDwhLS0gaGVhZGVycyAtLT5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIj5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCAtMilcIiBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiPlxyXG4gICAgICAgIHt7IGNvbHVtbi52YWx1ZSB9fVxyXG4gICAgICA8L3RoPlxyXG4gICAgICA8dGg+PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90aGVhZD5cclxuICA8dGJvZHk+XHJcbiAgICA8IS0tIGluZGljZXMgLS0+XHJcbiAgICA8dHIgY2xhc3M9XCJtYXQtcm93IGN1YmUtaW5kZXhcIiAqbmdGb3I9XCJsZXQgaW5kZXggb2YgaW5kZXhlczsgbGV0IHkgPSBpbmRleFwiPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIiAobW91c2VlbnRlcik9XCJtb3ZlKDAsIHkpXCI+e3tpbmRleC50aXRsZX19PC90aD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgeSlcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGFbaW5kZXgubmFtZV0gJiYgZGF0YVtpbmRleC5uYW1lXVtjb2x1bW4ua2V5XTsgZWxzZSB6ZXJvXCI+e3sgZGF0YVtpbmRleC5uYW1lXVtjb2x1bW4ua2V5XSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fTwvc3Bhbj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgwLCB5KVwiIFtuZ1N3aXRjaF09XCIhQ1VSUkVOQ1lcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW2luZGV4Lm5hbWVdWydfdG90YWwnXSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgIHt7IGRhdGFbaW5kZXgubmFtZV1bJ190b3RhbCddIHwgY3VycmVuY3kgOiBDVVJSRU5DWTogJ3N5bWJvbCcgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGJvZHk+XHJcbiAgICA8IS0tIHJvd3MgLS0+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgeSA9IGluZGV4XCIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiIChtb3VzZWVudGVyKT1cIm1vdmUoLTIsIHkgKyBpbmRpY2VzLmxlbmd0aClcIj57eyByb3cudmFsdWUgfX08L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFbcm93LmtleV0gJiYgZGF0YVtyb3cua2V5XVtjb2x1bW4ua2V5XSAhPT0gdW5kZWZpbmVkOyBlbHNlIHplcm9cIj5cclxuICAgICAgICAgIDxzcGFuIFtjbGFzcy5jbGlja2FibGVdPVwiaW50ZXJhY3RpdmVcIiAoY2xpY2spPVwiZXhwbG9yZShjb2x1bW4ua2V5LCByb3cua2V5KVwiPlxyXG4gICAgICAgICAgICB7e2RhdGFbcm93LmtleV1bY29sdW1uLmtleV0gfCBudW1iZXIgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgtMSwgeSArIGluZGljZXMubGVuZ3RoKVwiIFtuZ1N3aXRjaF09XCIhQ1VSUkVOQ1lcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldWydfdG90YWwnXSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgIHt7IGRhdGFbcm93LmtleV1bJ190b3RhbCddIHwgY3VycmVuY3kgOiBDVVJSRU5DWTogJ3N5bWJvbCcgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGZvb3Q+XHJcbiAgICA8IS0tIGF2YWlsYWJsZSAtLT5cclxuICAgIDx0cj5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIC0yKVwiXHJcbiAgICAgICAgICBbY2xhc3MubmVnYXRpdmUtZmlndXJlXT1cInRvdGFsc1tjb2x1bW4ua2V5XSA8IDBcIj5cclxuICAgICAgICB7e3RvdGFsc1tjb2x1bW4ua2V5XSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiPnt7dG90YWxzWydfdG90YWwnXSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Zm9vdD5cclxuPC90YWJsZT5cclxuPG5nLXRlbXBsYXRlICN6ZXJvPlxyXG4gIDBcclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -124,9 +124,9 @@ export class CubeParallelComponent {
124
124
  this._loading.complete();
125
125
  }
126
126
  }
127
- CubeParallelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeParallelComponent, deps: [{ token: i1.PromptService }, { token: i2.CubeService }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
128
- CubeParallelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubeParallelComponent, selector: "bizdoc-cube-parallel", inputs: { axes: "axes", xAxis: "xAxis", series: "series", indices: "indices", cube: "cube", size: "size", chartType: "chartType", scope: "scope" }, outputs: { onExplore: "explore" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"items.length\" class=\"row\">\r\n <div *ngFor=\"let s of items\" class=\"element\">\r\n <ejs-sparkline [width]='width' height='100px' [type]='s.chartType' [id]=\"s.data.name\"\r\n [dataSource]=\"s.data.points\" xName=\"name\"\r\n yName=\"y\" [palette]=\"s.palette\" [format]=\"format\"\r\n valueType=\"Category\"\r\n [enableRtl]=\"enableRtl\"\r\n [border]=\"s.border\"\r\n [fill]=\"s.fill\"\r\n [axisSettings]=\"axisSettings\"\r\n [markerSettings]=\"s.markerSettings\"\r\n (pointRegionMouseClick)=\"sprklineClick(s, $event)\"\r\n [tooltipSettings]=\"s.tooltipSettings\">\r\n </ejs-sparkline>\r\n <h4 class=\"mat-h4\">{{s.data.title}}</h4>\r\n </div>\r\n</div>\r\n", styles: [":host{padding:8px}.element{display:flex;flex-direction:column;align-items:center;flex:1 1 auto}\n"], components: [{ type: i4.SparklineComponent, selector: "ejs-sparkline", inputs: ["axisSettings", "border", "containerArea", "dataLabelSettings", "dataSource", "enablePersistence", "enableRtl", "endPointColor", "fill", "format", "height", "highPointColor", "lineWidth", "locale", "lowPointColor", "markerSettings", "negativePointColor", "opacity", "padding", "palette", "query", "rangeBandSettings", "rangePadding", "startPointColor", "theme", "tiePointColor", "tooltipSettings", "type", "useGroupingSeparator", "valueType", "width", "xName", "yName"], outputs: ["axisRendering", "dataLabelRendering", "load", "loaded", "markerRendering", "pointRegionMouseClick", "pointRegionMouseMove", "pointRendering", "resize", "seriesRendering", "sparklineMouseClick", "sparklineMouseMove", "tooltipInitialize"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubeParallelComponent, decorators: [{
127
+ CubeParallelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeParallelComponent, deps: [{ token: i1.PromptService }, { token: i2.CubeService }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
128
+ CubeParallelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubeParallelComponent, selector: "bizdoc-cube-parallel", inputs: { axes: "axes", xAxis: "xAxis", series: "series", indices: "indices", cube: "cube", size: "size", chartType: "chartType", scope: "scope" }, outputs: { onExplore: "explore" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"items.length\" class=\"row\">\r\n <div *ngFor=\"let s of items\" class=\"element\">\r\n <ejs-sparkline [width]='width' height='100px' [type]='s.chartType' [id]=\"s.data.name\"\r\n [dataSource]=\"s.data.points\" xName=\"name\"\r\n yName=\"y\" [palette]=\"s.palette\" [format]=\"format\"\r\n valueType=\"Category\"\r\n [enableRtl]=\"enableRtl\"\r\n [border]=\"s.border\"\r\n [fill]=\"s.fill\"\r\n [axisSettings]=\"axisSettings\"\r\n [markerSettings]=\"s.markerSettings\"\r\n (pointRegionMouseClick)=\"sprklineClick(s, $event)\"\r\n [tooltipSettings]=\"s.tooltipSettings\">\r\n </ejs-sparkline>\r\n <h4 class=\"mat-h4\">{{s.data.title}}</h4>\r\n </div>\r\n</div>\r\n", styles: [":host{padding:8px}.element{display:flex;flex-direction:column;align-items:center;flex:1 1 auto}\n"], components: [{ type: i4.SparklineComponent, selector: "ejs-sparkline", inputs: ["axisSettings", "border", "containerArea", "dataLabelSettings", "dataSource", "enablePersistence", "enableRtl", "endPointColor", "fill", "format", "height", "highPointColor", "lineWidth", "locale", "lowPointColor", "markerSettings", "negativePointColor", "opacity", "padding", "palette", "query", "rangeBandSettings", "rangePadding", "startPointColor", "theme", "tiePointColor", "tooltipSettings", "type", "useGroupingSeparator", "valueType", "width", "xName", "yName"], outputs: ["axisRendering", "dataLabelRendering", "load", "loaded", "markerRendering", "pointRegionMouseClick", "pointRegionMouseMove", "pointRendering", "resize", "seriesRendering", "sparklineMouseClick", "sparklineMouseMove", "tooltipInitialize"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubeParallelComponent, decorators: [{
130
130
  type: Component,
131
131
  args: [{ selector: 'bizdoc-cube-parallel', template: "<div *ngIf=\"items.length\" class=\"row\">\r\n <div *ngFor=\"let s of items\" class=\"element\">\r\n <ejs-sparkline [width]='width' height='100px' [type]='s.chartType' [id]=\"s.data.name\"\r\n [dataSource]=\"s.data.points\" xName=\"name\"\r\n yName=\"y\" [palette]=\"s.palette\" [format]=\"format\"\r\n valueType=\"Category\"\r\n [enableRtl]=\"enableRtl\"\r\n [border]=\"s.border\"\r\n [fill]=\"s.fill\"\r\n [axisSettings]=\"axisSettings\"\r\n [markerSettings]=\"s.markerSettings\"\r\n (pointRegionMouseClick)=\"sprklineClick(s, $event)\"\r\n [tooltipSettings]=\"s.tooltipSettings\">\r\n </ejs-sparkline>\r\n <h4 class=\"mat-h4\">{{s.data.title}}</h4>\r\n </div>\r\n</div>\r\n", styles: [":host{padding:8px}.element{display:flex;flex-direction:column;align-items:center;flex:1 1 auto}\n"] }]
132
132
  }], ctorParameters: function () { return [{ type: i1.PromptService }, { type: i2.CubeService }, { type: i3.SessionService }]; }, propDecorators: { axes: [{
@@ -253,12 +253,17 @@ export class CubePivotComponent {
253
253
  * @param evt
254
254
  */
255
255
  cellClick(evt) {
256
- const { columnHeaders, rowHeaders, actualText, actualValue } = evt.data;
257
- if (actualValue === 0) {
258
- return;
256
+ const { columnHeaders, rowHeaders, actualText, actualValue, axis, valueSort, type } = evt.data;
257
+ let axes, index;
258
+ if (columnHeaders || rowHeaders) {
259
+ if (actualValue === 0)
260
+ return;
261
+ axes = this._parseAxes(columnHeaders, rowHeaders);
262
+ if (actualText !== 'value')
263
+ index = actualText;
259
264
  }
260
- const axes = this._pivotAxes(columnHeaders, rowHeaders);
261
- const index = actualText !== 'value' ? actualText : null;
265
+ else if (axis === 'row' && type !== 'grand sum')
266
+ axes = this._parseAxes('', valueSort.levelName);
262
267
  this.explore.emit({ axes, index });
263
268
  }
264
269
  /**
@@ -266,7 +271,7 @@ export class CubePivotComponent {
266
271
  * @param columnHeaders
267
272
  * @param rowHeaders
268
273
  */
269
- _pivotAxes(columnHeaders, rowHeaders) {
274
+ _parseAxes(columnHeaders, rowHeaders) {
270
275
  const axes = {};
271
276
  if (columnHeaders !== '')
272
277
  columnHeaders.split(PIVOT_HEADER_DELIMITER).forEach((c, i) => {
@@ -348,9 +353,6 @@ export class CubePivotComponent {
348
353
  currencyCode: this.currencyCode,
349
354
  }, this._elementRef.nativeElement);
350
355
  }
351
- hyperlinkCellClick(evt) {
352
- this.cellClick(evt);
353
- }
354
356
  resize() {
355
357
  if (this.pivot) {
356
358
  //this.pivot.height = this.height;
@@ -368,9 +370,9 @@ export class CubePivotComponent {
368
370
  }
369
371
  }
370
372
  CubePivotComponent.nextId = 0;
371
- CubePivotComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubePivotComponent, deps: [{ token: i1.CubeService }, { token: i2.SessionService }, { token: i3.TranslateService }, { token: i4.PromptService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
372
- CubePivotComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: CubePivotComponent, selector: "bizdoc-cube-pivot", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis", yAxis: "yAxis", series: "series", indices: "indices", filters: "filters", chartType: "chartType", indexChartType: "indexChartType", currencyCode: "currencyCode", loading: "loading" }, outputs: { explore: "explore", loadingChange: "loadingChange" }, host: { properties: { "style.direction": "dir", "id": "this.id" }, classAttribute: "cube-view" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: ["::ng-deep .e-cellvalue{cursor:pointer}\n"] });
373
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: CubePivotComponent, decorators: [{
373
+ CubePivotComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubePivotComponent, deps: [{ token: i1.CubeService }, { token: i2.SessionService }, { token: i3.TranslateService }, { token: i4.PromptService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
374
+ CubePivotComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CubePivotComponent, selector: "bizdoc-cube-pivot", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis", yAxis: "yAxis", series: "series", indices: "indices", filters: "filters", chartType: "chartType", indexChartType: "indexChartType", currencyCode: "currencyCode", loading: "loading" }, outputs: { explore: "explore", loadingChange: "loadingChange" }, host: { properties: { "style.direction": "dir", "id": "this.id" }, classAttribute: "cube-view" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: ["::ng-deep .e-cellvalue{cursor:pointer}\n"] });
375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CubePivotComponent, decorators: [{
374
376
  type: Component,
375
377
  args: [{
376
378
  selector: 'bizdoc-cube-pivot',
@@ -412,4 +414,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
412
414
  }], id: [{
413
415
  type: HostBinding
414
416
  }] } });
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3Bpdm90L3Bpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXlCLFdBQVcsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBR2xJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBc0IsU0FBUyxFQUF1QyxXQUFXLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFLckosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQsT0FBTyxFQUFlLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFNNUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUU5QixNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQVduQyxxQkFBcUI7QUFDckIsTUFBTSxPQUFPLGtCQUFrQjtJQTBFN0IsaUJBQWlCO0lBQ2pCLFlBQW9CLFFBQXFCLEVBQy9CLFFBQXdCLEVBQ3hCLFVBQTRCLEVBQzVCLEdBQWtCLEVBQ2xCLFdBQXVCO1FBSmIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixR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QzNCO2lCQUNGO21OQUlDLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQU9LLEtBQUs7c0JBRGYsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBT0ssTUFBTTtzQkFEaEIsS0FBSztnQkFTSyxPQUFPO3NCQURqQixLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFFYSxPQUFPO3NCQUF6QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSztnQkFDYSxhQUFhO3NCQUEvQixNQUFNO2dCQUdFLEVBQUU7c0JBRFYsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9uTW9kZWwsIFBpdm90VmlldywgQ2hhcnRTZXJpZXNUeXBlLCBDZWxsQ2xpY2tFdmVudEFyZ3MsIEV4Y2VsRXhwb3J0LCBIeXBlckNlbGxDbGlja0V2ZW50QXJncyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1waXZvdHZpZXcnO1xyXG5pbXBvcnQgeyBDaGFydFNldHRpbmdzTW9kZWwgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3L3NyYy9waXZvdHZpZXcvbW9kZWwvY2hhcnRzZXR0aW5ncy1tb2RlbCc7XHJcbmltcG9ydCB7IENvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3NNb2RlbCwgRGF0YVNvdXJjZVNldHRpbmdzTW9kZWwsIEZpZWxkT3B0aW9uc01vZGVsLCBGb3JtYXRTZXR0aW5nc01vZGVsLCBTb3J0TW9kZWwgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLXBpdm90dmlldy9zcmMvcGl2b3R2aWV3L21vZGVsL2RhdGFzb3VyY2VzZXR0aW5ncy1tb2RlbFwiO1xyXG5pbXBvcnQgeyBHcmlkU2V0dGluZ3NNb2RlbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3L3NyYy9waXZvdHZpZXcvbW9kZWwvZ3JpZHNldHRpbmdzLW1vZGVsXCI7XHJcbmltcG9ydCB7IENoYXJ0LCBJUG9pbnRFdmVudEFyZ3MgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1jaGFydHMnO1xyXG5pbXBvcnQgeyBJbnRlcm5hdGlvbmFsaXphdGlvbiB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1iYXNlJztcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgZ2V0V2FybiwgaXNBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgRk9OVF9GQU1JTFkgfSBmcm9tICcuLi8uLi9jb3JlL2NvbG9ycyc7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIENoYXJ0VHlwZSwgQ3ViZSwgWUF4aXMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEF4aXNDbGlja0V2ZW50LCBDdWJlVmlld2VyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2RlY2xhcmF0aW9uc1wiO1xyXG5pbXBvcnQgeyBDdWJlU2VydmljZSwgREVGQVVMVF9DVVJSRU5DWSwgQ0xEUl9GSUxFUyB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5QaXZvdFZpZXcuSW5qZWN0KEV4Y2VsRXhwb3J0KTtcclxuXHJcbmNvbnN0IFBJVk9UX0hFQURFUl9ERUxJTUlURVIgPSAnfCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXBpdm90JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVzOiBbJzo6bmctZGVlcCAuZS1jZWxsdmFsdWUgeyBjdXJzb3I6IHBvaW50ZXIgfSddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnY3ViZS12aWV3JyxcclxuICAgICdbc3R5bGUuZGlyZWN0aW9uXSc6ICdkaXInXHJcbiAgfVxyXG59KVxyXG4vKiogcGl2b3QgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEN1YmVQaXZvdENvbXBvbmVudCBpbXBsZW1lbnRzIEN1YmVWaWV3ZXJDb21wb25lbnQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIGhlaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3hBeGlzOiBzdHJpbmdbXTtcclxuICBwdWJsaWMgZ2V0IHhBeGlzKCk6IHN0cmluZ1tdIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl94QXhpcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHhBeGlzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5feEF4aXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICB5QXhpcz86IFlBeGlzO1xyXG4gIHByaXZhdGUgX3Nlcmllcz86IHN0cmluZ1tdO1xyXG4gIHB1YmxpYyBnZXQgc2VyaWVzKCk6IHN0cmluZ1tdIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZXJpZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZXJpZXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHRoaXMuX3NlcmllcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW107XHJcbiAgcHVibGljIGdldCBpbmRpY2VzKCk6IHN0cmluZ1tdIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRpY2VzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaW5kaWNlcyh2YWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkgdGhpcy5faW5kaWNlcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIGZpbHRlcnM/OiBBeGVzTWFwO1xyXG4gIEBJbnB1dCgpXHJcbiAgY2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG4gIEBJbnB1dCgpXHJcbiAgaW5kZXhDaGFydFR5cGU/OiBDaGFydFR5cGU7XHJcbiAgQElucHV0KClcclxuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXhpc0NsaWNrRXZlbnQ+KCk7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBzdGF0aWMgbmV4dElkID0gMDtcclxuICBASG9zdEJpbmRpbmcoKVxyXG4gIHJlYWRvbmx5IGlkID0gYGN1YmUtcGl2b3R2aWV3LSR7Q3ViZVBpdm90Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcbiAgcGl2b3Q6IFBpdm90VmlldztcclxuICBkaXNwbGF5T3B0aW9uOiBEaXNwbGF5T3B0aW9uTW9kZWw7XHJcbiAgY2hhcnRTZXR0aW5nczogQ2hhcnRTZXR0aW5nc01vZGVsO1xyXG4gIGRhdGFTb3VyY2U6IERhdGFTb3VyY2VTZXR0aW5nc01vZGVsO1xyXG5cclxuICByZWFkb25seSBmb3JtYXRTZXR0aW5nczogRm9ybWF0U2V0dGluZ3NNb2RlbFtdID0gW3tcclxuICAgIG5hbWU6ICd2YWx1ZScsXHJcbiAgfV07XHJcbiAgdmFsdWVzOiBGaWVsZE9wdGlvbnNNb2RlbFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nczogQ29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nc01vZGVsW10gPSBbe1xyXG4gICAgY29uZGl0aW9uczogJ0xlc3NUaGFuJyxcclxuICAgIHZhbHVlMTogMCxcclxuICAgIG1lYXN1cmU6ICd2YWx1ZScsXHJcbiAgICBhcHBseUdyYW5kVG90YWxzOiB0cnVlLFxyXG4gICAgc3R5bGU6IHsgY29sb3I6IGdldFdhcm4oKSB9XHJcbiAgfV07XHJcbiAgcmVhZG9ubHkgZ3JpZFNldHRpbmdzOiBHcmlkU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIHJvd0hlaWdodDogMzYsXHJcbiAgICBhbGxvd1NlbGVjdGlvbjogZmFsc2VcclxuICB9O1xyXG4gIGRpcjogRGlyZWN0aW9uO1xyXG4gIHByaXZhdGUgX2N1YmU6IEN1YmU7XHJcbiAgcHJpdmF0ZSBfZGF0YToge31bXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvbiA9IG5ldyBJbnRlcm5hdGlvbmFsaXphdGlvbigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZW1wdHlDZWxsc1RleHRDb250ZW50ID0gdGhpcy5faW50bC5mb3JtYXROdW1iZXIoMCwgdGhpcy5mb3JtYXRTZXR0aW5nc1swXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIC8qKiBwaXZvdCBjdG9yICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5fc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICBpZiAodGhpcy5waXZvdC5jaGFydCkge1xyXG4gICAgICAgIHRoaXMuY2hhcnRTZXR0aW5ncy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MucGFsZXR0ZXMgPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGUucmV2ZXJzZSgpO1xyXG4gICAgICB9IGVsc2VcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MuZm9yRWFjaChmID0+IGYuc3R5bGUuY29sb3IgPSBnZXRXYXJuKCkpO1xyXG4gICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9jdWJlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuY3ViZSkgfHwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5kaXIgPSB0aGlzLmNoYXJ0VHlwZSA/ICdsdHInIDogdGhpcy5fc2Vzc2lvbi5kaXJlY3Rpb247XHJcbiAgICB0aGlzLmZvcm1hdFNldHRpbmdzWzBdLmN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0uZm9ybWF0ID0gKHRoaXMuY3VycmVuY3lDb2RlID8gJ2MnIDogJ24nKSArIHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHM7XHJcbiAgICBpZiAodGhpcy5jaGFydFR5cGUpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5T3B0aW9uID0ge1xyXG4gICAgICAgIHZpZXc6ICdDaGFydCcsXHJcbiAgICAgICAgcHJpbWFyeTogJ0NoYXJ0J1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgcG9pbnRDbGljazogdGhpcy5wb2ludENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgY2hhcnRTZXJpZXM6IHsgdHlwZTogdGhpcy5jaGFydFR5cGUgYXMgQ2hhcnRTZXJpZXNUeXBlIH0sXHJcbiAgICAgICAgLy9pc1RyYW5zcG9zZWQ6IHRydWUsICAgICAgICBcclxuICAgICAgICBlbmFibGVFeHBvcnQ6IHRydWUsXHJcbiAgICAgICAgY2hhcnRBcmVhOiB7XHJcbiAgICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFsZXR0ZXM6IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZS5yZXZlcnNlKCksXHJcbiAgICAgICAgdGhlbWU6IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJyxcclxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgIHByaW1hcnlYQXhpczoge1xyXG4gICAgICAgICAgdGl0bGVTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHpvb21TZXR0aW5nczoge1xyXG4gICAgICAgICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IHRydWUsXHJcbiAgICAgICAgICBlbmFibGVQaW5jaFpvb21pbmc6IHRydWUsXHJcbiAgICAgICAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgICAgICAgZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsXHJcbiAgICAgICAgICBlbmFibGVTY3JvbGxiYXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJvcmRlcjogeyB3aWR0aDogMCB9LFxyXG4gICAgICAgIGxlZ2VuZFNldHRpbmdzOiB7XHJcbiAgICAgICAgICBpc0ludmVyc2VkOiB0aGlzLl9zZXNzaW9uLmludmVyc2UsXHJcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgIGVuYWJsZUFuaW1hdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfSxcclxuICAgICAgICAgIHRleHRTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGl0bGVTdHlsZToge1xyXG4gICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN1YlRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmltYXJ5WUF4aXM6IHtcclxuICAgICAgICAgIHRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZXMgPSBbe1xyXG4gICAgICBuYW1lOiAndmFsdWUnLFxyXG4gICAgICBjYXB0aW9uOiAodGhpcy55QXhpcyA/IHRoaXMueUF4aXMudGl0bGUgOiBudWxsKSB8fCB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpXHJcbiAgICB9XTtcclxuICAgIHRoaXMuX2luZGljZXMgJiZcclxuICAgICAgdGhpcy5faW5kaWNlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncy5wdXNoKHtcclxuICAgICAgICAgIGNvbmRpdGlvbnM6ICdMZXNzVGhhbicsXHJcbiAgICAgICAgICB2YWx1ZTE6IDAsXHJcbiAgICAgICAgICBhcHBseUdyYW5kVG90YWxzOiB0cnVlLFxyXG4gICAgICAgICAgbWVhc3VyZTogaSxcclxuICAgICAgICAgIHN0eWxlOiB7IGNvbG9yOiBnZXRXYXJuKCkgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudmFsdWVzLlxyXG4gICAgICAgICAgcHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IGksXHJcbiAgICAgICAgICAgIGNhcHRpb246IHRoaXMuX2dldEluZGV4VGl0bGUoaSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0U2V0dGluZ3MuXHJcbiAgICAgICAgICBwdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLmZvcm1hdFNldHRpbmdzWzBdLmZvcm1hdCxcclxuICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2dldEluZGV4VGl0bGUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9jdWJlLmluZGljZXMuZmluZChpID0+IGkubmFtZSA9PT0gbmFtZSkudGl0bGU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2dldEF4aXNUaXRsZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gbmFtZSk7XHJcbiAgICByZXR1cm4gYXhpcy50aXRsZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICovXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSAmJiAhY2hhbmdlc1snZmlsdGVycyddLmZpcnN0Q2hhbmdlKVxyXG4gICAgICB0aGlzLmV4ZWN1dGUoKTtcclxuICAgIGVsc2VcclxuICAgICAgaWYgKGNoYW5nZXNbJ2hlaWdodCddIHx8IGNoYW5nZXNbJ3dpZHRoJ10pXHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICB9XHJcbiAgZXhlY3V0ZSgpIHtcclxuICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycyk7XHJcbiAgICAvLyByZW1vdmUgZmlsdGVyaW5nIGZyb20gcGl2b3QgYXhlc1xyXG4gICAgbGV0IHhBeGlzMiA9IHRoaXMuX3hBeGlzLnNsaWNlKCksIHNlcmllczIgPSB0aGlzLl9zZXJpZXMuc2xpY2UoKTtcclxuICAgIGlmIChrZXlzLmxlbmd0aCkge1xyXG4gICAgICBpZiAoeEF4aXMyLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgeEF4aXMyID0geEF4aXMyLmZpbHRlcih4ID0+IGtleXMuaW5kZXhPZih4KSA8IDApO1xyXG4gICAgICBpZiAoc2VyaWVzMi5sZW5ndGggPiAxKVxyXG4gICAgICAgIHNlcmllczIgPSBzZXJpZXMyLmZpbHRlcih4ID0+IGtleXMuaW5kZXhPZih4KSA8IDApO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzZXJpZXMyLmxlbmd0aCkgc2VyaWVzMiA9IHRoaXMuX3Nlcmllcy5zbGljZSgtMSk7XHJcbiAgICBpZiAoIXhBeGlzMi5sZW5ndGgpIHhBeGlzMiA9IHRoaXMuX3hBeGlzLnNsaWNlKC0xKTtcclxuICAgIC8vIGNvbHVtbnNcclxuICAgIGNvbnN0IGNvbHVtbnMgPSB4QXhpczIuY29uY2F0KHNlcmllczIpO1xyXG4gICAgLy8gcXVlcnlcclxuICAgIHRoaXMuX3NlcnZpY2UudGFibGUodGhpcy5fY3ViZS5uYW1lLCBjb2x1bW5zLCB7IGZpbHRlcnM6IHRoaXMuZmlsdGVycywgaW5kaWNlczogdGhpcy5pbmRpY2VzIH0pLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fcHJlc2V0cyh4QXhpczIsIHNlcmllczIsIHIpO1xyXG4gICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgIH0sIChlOiBIdHRwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICB0aGlzLl9zYi5lcnJvcihlLnN0YXR1cyA9PT0gNDAxID8gJ1VuYXV0aG9yaXplZCcgOiBudWxsKTtcclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0geEF4aXNcclxuICAgKiBAcGFyYW0gc2VyaWVzXHJcbiAgICogQHBhcmFtIGRhdGFcclxuICAgKi9cclxuICBwcml2YXRlIF9wcmVzZXRzKHhBeGlzOiBzdHJpbmdbXSwgc2VyaWVzOiBzdHJpbmdbXSwgZGF0YToge31bXSkge1xyXG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHhBeGlzLm1hcCh4ID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogeCxcclxuICAgICAgICAgIGNhcHRpb246IHRoaXMuX2dldEF4aXNUaXRsZSh4KVxyXG4gICAgICAgIH0gYXMgRmllbGRPcHRpb25zTW9kZWw7XHJcbiAgICAgIH0pLFxyXG4gICAgICByb3dzOiBzZXJpZXMubWFwKHMgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiBzLFxyXG4gICAgICAgICAgY2FwdGlvbjogdGhpcy5fZ2V0QXhpc1RpdGxlKHMpXHJcbiAgICAgICAgfSBhcyBGaWVsZE9wdGlvbnNNb2RlbDtcclxuICAgICAgfSksXHJcbiAgICAgIHZhbHVlU29ydFNldHRpbmdzOiB7IGhlYWRlckRlbGltaXRlcjogUElWT1RfSEVBREVSX0RFTElNSVRFUiB9LFxyXG4gICAgICB2YWx1ZXM6IHRoaXMudmFsdWVzLFxyXG4gICAgICBzb3J0U2V0dGluZ3M6IHhBeGlzLm1hcCh4ID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogJ18nICsgeCxcclxuICAgICAgICB9IGFzIFNvcnRNb2RlbDtcclxuICAgICAgfSksXHJcbiAgICAgIC8vY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nczogdGhpcy5jb25kaXRpb25hbEZvcm1hdFNldHRpbmdzLFxyXG4gICAgICBhbHdheXNTaG93VmFsdWVIZWFkZXI6IGZhbHNlLFxyXG4gICAgICBhbGxvd01lbWJlckZpbHRlcjogZmFsc2UsXHJcbiAgICAgIGFsbG93VmFsdWVGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICBhbGxvd0xhYmVsRmlsdGVyOiBmYWxzZSxcclxuICAgICAgZGF0YVNvdXJjZTogZGF0YSxcclxuICAgICAgZW1wdHlDZWxsc1RleHRDb250ZW50OiB0aGlzLmVtcHR5Q2VsbHNUZXh0Q29udGVudCxcclxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXHJcbiAgICAgIGZvcm1hdFNldHRpbmdzOiB0aGlzLmZvcm1hdFNldHRpbmdzXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqL1xyXG4gIGNlbGxDbGljayhldnQ6IENlbGxDbGlja0V2ZW50QXJncykge1xyXG4gICAgY29uc3QgeyBjb2x1bW5IZWFkZXJzLCByb3dIZWFkZXJzLCBhY3R1YWxUZXh0LCBhY3R1YWxWYWx1ZSB9ID0gZXZ0LmRhdGEgYXMgYW55O1xyXG4gICAgaWYgKGFjdHVhbFZhbHVlID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGF4ZXMgPSB0aGlzLl9waXZvdEF4ZXMoY29sdW1uSGVhZGVycywgcm93SGVhZGVycyk7XHJcbiAgICBjb25zdCBpbmRleCA9IGFjdHVhbFRleHQgIT09ICd2YWx1ZScgPyBhY3R1YWxUZXh0IDogbnVsbDtcclxuICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGF4ZXMgZnJvbSBoZWFkZXJzXHJcbiAgICogQHBhcmFtIGNvbHVtbkhlYWRlcnNcclxuICAgKiBAcGFyYW0gcm93SGVhZGVyc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgX3Bpdm90QXhlcyhjb2x1bW5IZWFkZXJzOiBzdHJpbmcsIHJvd0hlYWRlcnM6IHN0cmluZyk6IEF4ZXNNYXAge1xyXG4gICAgY29uc3QgYXhlczogQXhlc01hcCA9IHt9O1xyXG4gICAgaWYgKGNvbHVtbkhlYWRlcnMgIT09ICcnKVxyXG4gICAgICBjb2x1bW5IZWFkZXJzLnNwbGl0KFBJVk9UX0hFQURFUl9ERUxJTUlURVIpLmZvckVhY2goKGMsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2UuY29sdW1uc1tpXS5uYW1lLFxyXG4gICAgICAgICAgLy8gZmluZCBhbnkgcm93IHdpdGggaGVhZGVyXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcy5fZGF0YS5maW5kKGUgPT4gZVtjb2x1bW5dLnRvU3RyaW5nKCkgPT09IGMpO1xyXG4gICAgICAgIC8vIHRyYW5zbGF0ZSBiYWNrIHRvIGtleVxyXG4gICAgICAgIGlmICghZWxlbWVudCkgY29uc29sZS5lcnJvcihgJHtjb2x1bW5IZWFkZXJzfWApO1xyXG4gICAgICAgIGVsc2UgYXhlc1tjb2x1bW5dID0gZWxlbWVudFtgXyR7Y29sdW1ufWBdO1xyXG4gICAgICB9KTtcclxuICAgIGlmIChyb3dIZWFkZXJzICE9PSAnJylcclxuICAgICAgcm93SGVhZGVycy5zcGxpdChQSVZPVF9IRUFERVJfREVMSU1JVEVSKS5mb3JFYWNoKChyLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5kYXRhU291cmNlLnJvd3NbaV0ubmFtZSxcclxuICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IHIpO1xyXG4gICAgICAgIGlmICghZWxlbWVudCkgY29uc29sZS5lcnJvcihgJHtyb3dIZWFkZXJzfWApO1xyXG4gICAgICAgIGVsc2UgYXhlc1tjb2x1bW5dID0gZWxlbWVudFtgXyR7Y29sdW1ufWBdO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBheGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBjaGFydFxyXG4gICAqIEBwYXJhbSBlXHJcbiAgICovXHJcbiAgcG9pbnRDbGljayhlOiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgcG9pbnQ6IHsgeCB9LCBzZXJpZXM6IHsgbmFtZSB9IH0gPSBlO1xyXG4gICAgY29uc3QgYXhlczogeyBbYXhpczogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIC8vIHNldCBheGVzIGZyb20geCBsYWJlbChzKVxyXG4gICAgKHggYXMgc3RyaW5nKS5zcGxpdCgnIC0gJykuZm9yRWFjaCgoeCwgaSkgPT4ge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2Uucm93c1tpXS5uYW1lLFxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IHgpO1xyXG4gICAgICBheGVzW2NvbHVtbl0gPSBlbGVtZW50ID8gZWxlbWVudFtgXyR7Y29sdW1ufWBdIDogeDtcclxuICAgIH0pO1xyXG4gICAgLy8gc2V0IGF4ZXMgZnJvbSBzZXJpZXMgbGFiZWxcclxuICAgIGlmIChuYW1lICE9PSAnJykge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2UuY29sdW1uc1swXS5uYW1lLFxyXG4gICAgICAgIC8vIGZpbmQgYW55IHJvdyB3aXRoIGhlYWRlclxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IG5hbWUpO1xyXG4gICAgICAvLyB0cmFuc2xhdGUgYmFjayB0byBrZXlcclxuICAgICAgYXhlc1tjb2x1bW5dID0gZWxlbWVudCA/IGVsZW1lbnRbYF8ke2NvbHVtbn1gXSA6IG5hbWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMgfSk7XHJcbiAgfVxyXG4gIGV4cG9ydFRvRXhjZWwodGl0bGU6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGAke3RpdGxlfS54bHN4YDtcclxuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNoYXJ0VHlwZSkge1xyXG4gICAgICAgIGNvbnN0IHdiID0gWExTWC51dGlscy5ib29rX25ldygpO1xyXG4gICAgICAgIGNvbnN0IHdzID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KHRoaXMuX2RhdGEpO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTaGVldE4nLCAxKTtcclxuICAgICAgICB3Yi5TaGVldHNbbmFtZV0gPSB3cztcclxuICAgICAgICB3Yi5TaGVldE5hbWVzLnB1c2gobmFtZSk7XHJcbiAgICAgICAgWExTWC53cml0ZUZpbGUod2IsIGZpbGVOYW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5waXZvdC5leGNlbEV4cG9ydCh7IGZpbGVOYW1lLCBoaWVyYXJjaHlFeHBvcnRNb2RlOiAnQWxsJywgfSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuY3VycmVuY3lDb2RlICYmIHRoaXMuY3VycmVuY3lDb2RlICE9PSBERUZBVUxUX0NVUlJFTkNZKVxyXG4gICAgICB0aGlzLl90cmFuc2xhdGUuY2xkcih0aGlzLl9zZXNzaW9uLmxhbmd1YWdlLCBDTERSX0ZJTEVTKS50aGVuKCgpID0+IHRhc2soKSk7XHJcbiAgICBlbHNlIHRhc2soKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMucGl2b3QgJiYgdGhpcy5waXZvdC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnBpdm90ID0gbmV3IFBpdm90Vmlldyh7XHJcbiAgICAgIHNwaW5uZXJUZW1wbGF0ZTogJycsXHJcbiAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgZGlzcGxheU9wdGlvbjogdGhpcy5kaXNwbGF5T3B0aW9uLFxyXG4gICAgICBkYXRhU291cmNlU2V0dGluZ3M6IHRoaXMuZGF0YVNvdXJjZSxcclxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgICBlbmFibGVWYWx1ZVNvcnRpbmc6IHRydWUsXHJcbiAgICAgIHNob3dUb29sdGlwOiBmYWxzZSxcclxuICAgICAgYWxsb3dDb25kaXRpb25hbEZvcm1hdHRpbmc6IHRydWUsXHJcbiAgICAgIGFsbG93RXhjZWxFeHBvcnQ6IHRydWUsXHJcbiAgICAgIGdyaWRTZXR0aW5nczogdGhpcy5ncmlkU2V0dGluZ3MsXHJcbiAgICAgIGNlbGxDbGljazogdGhpcy5jZWxsQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgY3VycmVuY3lDb2RlOiB0aGlzLmN1cnJlbmN5Q29kZSxcclxuICAgIH0sIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG4gIGh5cGVybGlua0NlbGxDbGljayhldnQ6IEh5cGVyQ2VsbENsaWNrRXZlbnRBcmdzKSB7XHJcbiAgICB0aGlzLmNlbGxDbGljayhldnQpO1xyXG4gIH1cclxuICByZXNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5waXZvdCkge1xyXG4gICAgICAvL3RoaXMucGl2b3QuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgIHRoaXMucGl2b3Qud2lkdGggPSB0aGlzLndpZHRoO1xyXG4gICAgICBpZiAodGhpcy5jaGFydFNldHRpbmdzKVxyXG4gICAgICAgIHRoaXMucGl2b3QuY2hhcnQgJiYgKHRoaXMucGl2b3QuY2hhcnQgYXMgdW5rbm93biBhcyBDaGFydCkuY2hhcnRSZXNpemUoKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMucGl2b3Qub25XaW5kb3dSZXNpemUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnBpdm90ICYmIHRoaXMucGl2b3QuZGVzdHJveSgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
417
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3Bpdm90L3Bpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLEVBQXlCLFdBQVcsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBRzdJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBc0IsU0FBUyxFQUF1QyxXQUFXLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFLckosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaEQsT0FBTyxFQUFlLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFLNUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUU5QixNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQVduQyxxQkFBcUI7QUFDckIsTUFBTSxPQUFPLGtCQUFrQjtJQTBFN0IsaUJBQWlCO0lBQ2pCLFlBQW9CLFFBQXFCLEVBQy9CLFFBQXdCLEVBQ3hCLFVBQTRCLEVBQzVCLEdBQWtCLEVBQ2xCLFdBQXVCO1FBSmIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixR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QUNaLE1BQU0sRUFBRSxDQUFDLDRDQUE0QyxDQUFDO29CQUN0RCxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFdBQVc7d0JBQ2xCLG1CQUFtQixFQUFFLEtBQUs7cUJBQzNCO2lCQUNGO21OQUlDLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQU9LLEtBQUs7c0JBRGYsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBT0ssTUFBTTtzQkFEaEIsS0FBSztnQkFTSyxPQUFPO3NCQURqQixLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFFYSxPQUFPO3NCQUF6QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSztnQkFDYSxhQUFhO3NCQUEvQixNQUFNO2dCQUdFLEVBQUU7c0JBRFYsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIE91dHB1dCwgT25EZXN0cm95LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERpc3BsYXlPcHRpb25Nb2RlbCwgUGl2b3RWaWV3LCBDaGFydFNlcmllc1R5cGUsIENlbGxDbGlja0V2ZW50QXJncywgRXhjZWxFeHBvcnQsIEh5cGVyQ2VsbENsaWNrRXZlbnRBcmdzIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLXBpdm90dmlldyc7XHJcbmltcG9ydCB7IENoYXJ0U2V0dGluZ3NNb2RlbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1waXZvdHZpZXcvc3JjL3Bpdm90dmlldy9tb2RlbC9jaGFydHNldHRpbmdzLW1vZGVsJztcclxuaW1wb3J0IHsgQ29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nc01vZGVsLCBEYXRhU291cmNlU2V0dGluZ3NNb2RlbCwgRmllbGRPcHRpb25zTW9kZWwsIEZvcm1hdFNldHRpbmdzTW9kZWwsIFNvcnRNb2RlbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3L3NyYy9waXZvdHZpZXcvbW9kZWwvZGF0YXNvdXJjZXNldHRpbmdzLW1vZGVsXCI7XHJcbmltcG9ydCB7IEdyaWRTZXR0aW5nc01vZGVsIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1waXZvdHZpZXcvc3JjL3Bpdm90dmlldy9tb2RlbC9ncmlkc2V0dGluZ3MtbW9kZWxcIjtcclxuaW1wb3J0IHsgQ2hhcnQsIElQb2ludEV2ZW50QXJncyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IEludGVybmF0aW9uYWxpemF0aW9uIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWJhc2UnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBnZXRXYXJuLCBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBGT05UX0ZBTUlMWSB9IGZyb20gJy4uLy4uL2NvcmUvY29sb3JzJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ2hhcnRUeXBlLCBDdWJlLCBZQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBERUZBVUxUX0NVUlJFTkNZLCBDTERSX0ZJTEVTIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5cclxuUGl2b3RWaWV3LkluamVjdChFeGNlbEV4cG9ydCk7XHJcblxyXG5jb25zdCBQSVZPVF9IRUFERVJfREVMSU1JVEVSID0gJ3wnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtY3ViZS1waXZvdCcsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0eWxlczogWyc6Om5nLWRlZXAgLmUtY2VsbHZhbHVlIHsgY3Vyc29yOiBwb2ludGVyIH0nXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2N1YmUtdmlldycsXHJcbiAgICAnW3N0eWxlLmRpcmVjdGlvbl0nOiAnZGlyJ1xyXG4gIH1cclxufSlcclxuLyoqIHBpdm90IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBDdWJlUGl2b3RDb21wb25lbnQgaW1wbGVtZW50cyBDdWJlVmlld2VyQ29tcG9uZW50LCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIHdpZHRoOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBoZWlnaHQ6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGN1YmU6IHN0cmluZztcclxuICBwcml2YXRlIF94QXhpczogc3RyaW5nW107XHJcbiAgcHVibGljIGdldCB4QXhpcygpOiBzdHJpbmdbXSB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5feEF4aXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB4QXhpcyh2YWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3hBeGlzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgeUF4aXM/OiBZQXhpcztcclxuICBwcml2YXRlIF9zZXJpZXM/OiBzdHJpbmdbXTtcclxuICBwdWJsaWMgZ2V0IHNlcmllcygpOiBzdHJpbmdbXSB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VyaWVzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2VyaWVzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB0aGlzLl9zZXJpZXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaW5kaWNlcz86IHN0cmluZ1tdO1xyXG4gIHB1YmxpYyBnZXQgaW5kaWNlcygpOiBzdHJpbmdbXSB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5kaWNlcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGluZGljZXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHRoaXMuX2luZGljZXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzPzogQXhlc01hcDtcclxuICBASW5wdXQoKVxyXG4gIGNoYXJ0VHlwZT86IENoYXJ0VHlwZTtcclxuICBASW5wdXQoKVxyXG4gIGluZGV4Q2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4aXNDbGlja0V2ZW50PigpO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQEhvc3RCaW5kaW5nKClcclxuICByZWFkb25seSBpZCA9IGBjdWJlLXBpdm90dmlldy0ke0N1YmVQaXZvdENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG4gIHBpdm90OiBQaXZvdFZpZXc7XHJcbiAgZGlzcGxheU9wdGlvbjogRGlzcGxheU9wdGlvbk1vZGVsO1xyXG4gIGNoYXJ0U2V0dGluZ3M6IENoYXJ0U2V0dGluZ3NNb2RlbDtcclxuICBkYXRhU291cmNlOiBEYXRhU291cmNlU2V0dGluZ3NNb2RlbDtcclxuXHJcbiAgcmVhZG9ubHkgZm9ybWF0U2V0dGluZ3M6IEZvcm1hdFNldHRpbmdzTW9kZWxbXSA9IFt7XHJcbiAgICBuYW1lOiAndmFsdWUnLFxyXG4gIH1dO1xyXG4gIHZhbHVlczogRmllbGRPcHRpb25zTW9kZWxbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3M6IENvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3NNb2RlbFtdID0gW3tcclxuICAgIGNvbmRpdGlvbnM6ICdMZXNzVGhhbicsXHJcbiAgICB2YWx1ZTE6IDAsXHJcbiAgICBtZWFzdXJlOiAndmFsdWUnLFxyXG4gICAgYXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuICAgIHN0eWxlOiB7IGNvbG9yOiBnZXRXYXJuKCkgfVxyXG4gIH1dO1xyXG4gIHJlYWRvbmx5IGdyaWRTZXR0aW5nczogR3JpZFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICByb3dIZWlnaHQ6IDM2LFxyXG4gICAgYWxsb3dTZWxlY3Rpb246IGZhbHNlXHJcbiAgfTtcclxuICBkaXI6IERpcmVjdGlvbjtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHByaXZhdGUgX2RhdGE6IHt9W107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaW50bDogSW50ZXJuYXRpb25hbGl6YXRpb24gPSBuZXcgSW50ZXJuYXRpb25hbGl6YXRpb24oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5Q2VsbHNUZXh0Q29udGVudCA9IHRoaXMuX2ludGwuZm9ybWF0TnVtYmVyKDAsIHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAvKiogcGl2b3QgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMuX3Nlc3Npb24udGhlbWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgaWYgKHRoaXMucGl2b3QuY2hhcnQpIHtcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MudGhlbWUgPSB0LmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgICAgICAgdGhpcy5jaGFydFNldHRpbmdzLnBhbGV0dGVzID0gdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlLnJldmVyc2UoKTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdFNldHRpbmdzLmZvckVhY2goZiA9PiBmLnN0eWxlLmNvbG9yID0gZ2V0V2FybigpKTtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLmN1YmUpIHx8IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIHRoaXMuZGlyID0gdGhpcy5jaGFydFR5cGUgPyAnbHRyJyA6IHRoaXMuX3Nlc3Npb24uZGlyZWN0aW9uO1xyXG4gICAgdGhpcy5mb3JtYXRTZXR0aW5nc1swXS5jdXJyZW5jeSA9IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgICB0aGlzLmZvcm1hdFNldHRpbmdzWzBdLmZvcm1hdCA9ICh0aGlzLmN1cnJlbmN5Q29kZSA/ICdjJyA6ICduJykgKyB0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzO1xyXG4gICAgaWYgKHRoaXMuY2hhcnRUeXBlKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheU9wdGlvbiA9IHtcclxuICAgICAgICB2aWV3OiAnQ2hhcnQnLFxyXG4gICAgICAgIHByaW1hcnk6ICdDaGFydCdcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jaGFydFNldHRpbmdzID0ge1xyXG4gICAgICAgIHBvaW50Q2xpY2s6IHRoaXMucG9pbnRDbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICAgIGNoYXJ0U2VyaWVzOiB7IHR5cGU6IHRoaXMuY2hhcnRUeXBlIGFzIENoYXJ0U2VyaWVzVHlwZSB9LFxyXG4gICAgICAgIC8vaXNUcmFuc3Bvc2VkOiB0cnVlLCAgICAgICAgXHJcbiAgICAgICAgZW5hYmxlRXhwb3J0OiB0cnVlLFxyXG4gICAgICAgIGNoYXJ0QXJlYToge1xyXG4gICAgICAgICAgYm9yZGVyOiB7IHdpZHRoOiAwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhbGV0dGVzOiB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGUucmV2ZXJzZSgpLFxyXG4gICAgICAgIHRoZW1lOiB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCcsXHJcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgICBwcmltYXJ5WEF4aXM6IHtcclxuICAgICAgICAgIHRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB6b29tU2V0dGluZ3M6IHtcclxuICAgICAgICAgIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiB0cnVlLFxyXG4gICAgICAgICAgZW5hYmxlUGluY2hab29taW5nOiB0cnVlLFxyXG4gICAgICAgICAgdG9vbGJhckl0ZW1zOiBbXSxcclxuICAgICAgICAgIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IGZhbHNlLFxyXG4gICAgICAgICAgZW5hYmxlU2Nyb2xsYmFyOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfSxcclxuICAgICAgICBsZWdlbmRTZXR0aW5nczoge1xyXG4gICAgICAgICAgaXNJbnZlcnNlZDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAgICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICBlbmFibGVBbmltYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgYm9yZGVyOiB7IHdpZHRoOiAwIH0sXHJcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdWJUaXRsZVN0eWxlOiB7XHJcbiAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJpbWFyeVlBeGlzOiB7XHJcbiAgICAgICAgICB0aXRsZVN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbGFiZWxTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWVzID0gW3tcclxuICAgICAgbmFtZTogJ3ZhbHVlJyxcclxuICAgICAgY2FwdGlvbjogKHRoaXMueUF4aXMgPyB0aGlzLnlBeGlzLnRpdGxlIDogbnVsbCkgfHwgdGhpcy5fdHJhbnNsYXRlLmdldCgnVmFsdWUnKVxyXG4gICAgfV07XHJcbiAgICB0aGlzLl9pbmRpY2VzICYmXHJcbiAgICAgIHRoaXMuX2luZGljZXMuZm9yRWFjaChpID0+IHtcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MucHVzaCh7XHJcbiAgICAgICAgICBjb25kaXRpb25zOiAnTGVzc1RoYW4nLFxyXG4gICAgICAgICAgdmFsdWUxOiAwLFxyXG4gICAgICAgICAgYXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuICAgICAgICAgIG1lYXN1cmU6IGksXHJcbiAgICAgICAgICBzdHlsZTogeyBjb2xvcjogZ2V0V2FybigpIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlcy5cclxuICAgICAgICAgIHB1c2goe1xyXG4gICAgICAgICAgICBuYW1lOiBpLFxyXG4gICAgICAgICAgICBjYXB0aW9uOiB0aGlzLl9nZXRJbmRleFRpdGxlKGkpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZvcm1hdFNldHRpbmdzLlxyXG4gICAgICAgICAgcHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IGksXHJcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5mb3JtYXRTZXR0aW5nc1swXS5mb3JtYXQsXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5Q29kZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZXhlY3V0ZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9nZXRJbmRleFRpdGxlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3ViZS5pbmRpY2VzLmZpbmQoaSA9PiBpLm5hbWUgPT09IG5hbWUpLnRpdGxlO1xyXG4gIH1cclxuICBwcml2YXRlIF9nZXRBeGlzVGl0bGUobmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBheGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuIGF4aXMudGl0bGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqL1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydmaWx0ZXJzJ10gJiYgIWNoYW5nZXNbJ2ZpbHRlcnMnXS5maXJzdENoYW5nZSlcclxuICAgICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSB8fCBjaGFuZ2VzWyd3aWR0aCddKVxyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG4gIGV4ZWN1dGUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMpO1xyXG4gICAgLy8gcmVtb3ZlIGZpbHRlcmluZyBmcm9tIHBpdm90IGF4ZXNcclxuICAgIGxldCB4QXhpczIgPSB0aGlzLl94QXhpcy5zbGljZSgpLCBzZXJpZXMyID0gdGhpcy5fc2VyaWVzLnNsaWNlKCk7XHJcbiAgICBpZiAoa2V5cy5sZW5ndGgpIHtcclxuICAgICAgaWYgKHhBeGlzMi5sZW5ndGggPiAxKVxyXG4gICAgICAgIHhBeGlzMiA9IHhBeGlzMi5maWx0ZXIoeCA9PiBrZXlzLmluZGV4T2YoeCkgPCAwKTtcclxuICAgICAgaWYgKHNlcmllczIubGVuZ3RoID4gMSlcclxuICAgICAgICBzZXJpZXMyID0gc2VyaWVzMi5maWx0ZXIoeCA9PiBrZXlzLmluZGV4T2YoeCkgPCAwKTtcclxuICAgIH1cclxuICAgIGlmICghc2VyaWVzMi5sZW5ndGgpIHNlcmllczIgPSB0aGlzLl9zZXJpZXMuc2xpY2UoLTEpO1xyXG4gICAgaWYgKCF4QXhpczIubGVuZ3RoKSB4QXhpczIgPSB0aGlzLl94QXhpcy5zbGljZSgtMSk7XHJcbiAgICAvLyBjb2x1bW5zXHJcbiAgICBjb25zdCBjb2x1bW5zID0geEF4aXMyLmNvbmNhdChzZXJpZXMyKTtcclxuICAgIC8vIHF1ZXJ5XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnRhYmxlKHRoaXMuX2N1YmUubmFtZSwgY29sdW1ucywgeyBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsIGluZGljZXM6IHRoaXMuaW5kaWNlcyB9KS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMuX3ByZXNldHMoeEF4aXMyLCBzZXJpZXMyLCByKTtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHhBeGlzXHJcbiAgICogQHBhcmFtIHNlcmllc1xyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcHJlc2V0cyh4QXhpczogc3RyaW5nW10sIHNlcmllczogc3RyaW5nW10sIGRhdGE6IHt9W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0ge1xyXG4gICAgICBjb2x1bW5zOiB4QXhpcy5tYXAoeCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHgsXHJcbiAgICAgICAgICBjYXB0aW9uOiB0aGlzLl9nZXRBeGlzVGl0bGUoeClcclxuICAgICAgICB9IGFzIEZpZWxkT3B0aW9uc01vZGVsO1xyXG4gICAgICB9KSxcclxuICAgICAgcm93czogc2VyaWVzLm1hcChzID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogcyxcclxuICAgICAgICAgIGNhcHRpb246IHRoaXMuX2dldEF4aXNUaXRsZShzKVxyXG4gICAgICAgIH0gYXMgRmllbGRPcHRpb25zTW9kZWw7XHJcbiAgICAgIH0pLFxyXG4gICAgICB2YWx1ZVNvcnRTZXR0aW5nczogeyBoZWFkZXJEZWxpbWl0ZXI6IFBJVk9UX0hFQURFUl9ERUxJTUlURVIgfSxcclxuICAgICAgdmFsdWVzOiB0aGlzLnZhbHVlcyxcclxuICAgICAgc29ydFNldHRpbmdzOiB4QXhpcy5tYXAoeCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6ICdfJyArIHgsXHJcbiAgICAgICAgfSBhcyBTb3J0TW9kZWw7XHJcbiAgICAgIH0pLFxyXG4gICAgICAvL2NvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3M6IHRoaXMuY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyxcclxuICAgICAgYWx3YXlzU2hvd1ZhbHVlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dNZW1iZXJGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICBhbGxvd1ZhbHVlRmlsdGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dMYWJlbEZpbHRlcjogZmFsc2UsXHJcbiAgICAgIGRhdGFTb3VyY2U6IGRhdGEsXHJcbiAgICAgIGVtcHR5Q2VsbHNUZXh0Q29udGVudDogdGhpcy5lbXB0eUNlbGxzVGV4dENvbnRlbnQsXHJcbiAgICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxyXG4gICAgICBmb3JtYXRTZXR0aW5nczogdGhpcy5mb3JtYXRTZXR0aW5nc1xyXG4gICAgfSBhcyBEYXRhU291cmNlU2V0dGluZ3NNb2RlbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBldnRcclxuICAgKi9cclxuICBjZWxsQ2xpY2soZXZ0OiBDZWxsQ2xpY2tFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgY29sdW1uSGVhZGVycywgcm93SGVhZGVycywgYWN0dWFsVGV4dCwgYWN0dWFsVmFsdWUsIGF4aXMsIHZhbHVlU29ydCwgdHlwZSB9ID0gZXZ0LmRhdGEgYXMgYW55O1xyXG4gICAgbGV0IGF4ZXMsIGluZGV4O1xyXG4gICAgaWYgKGNvbHVtbkhlYWRlcnMgfHwgcm93SGVhZGVycykge1xyXG4gICAgICBpZiAoYWN0dWFsVmFsdWUgPT09IDApXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBheGVzID0gdGhpcy5fcGFyc2VBeGVzKGNvbHVtbkhlYWRlcnMsIHJvd0hlYWRlcnMpO1xyXG4gICAgICBpZiAoYWN0dWFsVGV4dCAhPT0gJ3ZhbHVlJykgaW5kZXggPSBhY3R1YWxUZXh0O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoYXhpcyA9PT0gJ3JvdycgJiYgdHlwZSAhPT0gJ2dyYW5kIHN1bScpXHJcbiAgICAgIGF4ZXMgPSB0aGlzLl9wYXJzZUF4ZXMoJycsIHZhbHVlU29ydC5sZXZlbE5hbWUpO1xyXG4gICAgdGhpcy5leHBsb3JlLmVtaXQoeyBheGVzLCBpbmRleCB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogYXhlcyBmcm9tIGhlYWRlcnNcclxuICAgKiBAcGFyYW0gY29sdW1uSGVhZGVyc1xyXG4gICAqIEBwYXJhbSByb3dIZWFkZXJzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcGFyc2VBeGVzKGNvbHVtbkhlYWRlcnM6IHN0cmluZywgcm93SGVhZGVyczogc3RyaW5nKTogQXhlc01hcCB7XHJcbiAgICBjb25zdCBheGVzOiBBeGVzTWFwID0ge307XHJcbiAgICBpZiAoY29sdW1uSGVhZGVycyAhPT0gJycpXHJcbiAgICAgIGNvbHVtbkhlYWRlcnMuc3BsaXQoUElWT1RfSEVBREVSX0RFTElNSVRFUikuZm9yRWFjaCgoYywgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZGF0YVNvdXJjZS5jb2x1bW5zW2ldLm5hbWUsXHJcbiAgICAgICAgICAvLyBmaW5kIGFueSByb3cgd2l0aCBoZWFkZXJcclxuICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0udG9TdHJpbmcoKSA9PT0gYyk7XHJcbiAgICAgICAgLy8gdHJhbnNsYXRlIGJhY2sgdG8ga2V5XHJcbiAgICAgICAgaWYgKCFlbGVtZW50KSBjb25zb2xlLmVycm9yKGAke2NvbHVtbkhlYWRlcnN9YCk7XHJcbiAgICAgICAgZWxzZSBheGVzW2NvbHVtbl0gPSBlbGVtZW50W2BfJHtjb2x1bW59YF07XHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHJvd0hlYWRlcnMgIT09ICcnKVxyXG4gICAgICByb3dIZWFkZXJzLnNwbGl0KFBJVk9UX0hFQURFUl9ERUxJTUlURVIpLmZvckVhY2goKHIsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2Uucm93c1tpXS5uYW1lLFxyXG4gICAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXSA9PT0gcik7XHJcbiAgICAgICAgaWYgKCFlbGVtZW50KSBjb25zb2xlLmVycm9yKGAke3Jvd0hlYWRlcnN9YCk7XHJcbiAgICAgICAgZWxzZSBheGVzW2NvbHVtbl0gPSBlbGVtZW50W2BfJHtjb2x1bW59YF07XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGF4ZXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGNoYXJ0XHJcbiAgICogQHBhcmFtIGVcclxuICAgKi9cclxuICBwb2ludENsaWNrKGU6IElQb2ludEV2ZW50QXJncykge1xyXG4gICAgY29uc3QgeyBwb2ludDogeyB4IH0sIHNlcmllczogeyBuYW1lIH0gfSA9IGU7XHJcbiAgICBjb25zdCBheGVzOiB7IFtheGlzOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgLy8gc2V0IGF4ZXMgZnJvbSB4IGxhYmVsKHMpXHJcbiAgICAoeCBhcyBzdHJpbmcpLnNwbGl0KCcgLSAnKS5mb3JFYWNoKCh4LCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZGF0YVNvdXJjZS5yb3dzW2ldLm5hbWUsXHJcbiAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXSA9PT0geCk7XHJcbiAgICAgIGF4ZXNbY29sdW1uXSA9IGVsZW1lbnQgPyBlbGVtZW50W2BfJHtjb2x1bW59YF0gOiB4O1xyXG4gICAgfSk7XHJcbiAgICAvLyBzZXQgYXhlcyBmcm9tIHNlcmllcyBsYWJlbFxyXG4gICAgaWYgKG5hbWUgIT09ICcnKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZGF0YVNvdXJjZS5jb2x1bW5zWzBdLm5hbWUsXHJcbiAgICAgICAgLy8gZmluZCBhbnkgcm93IHdpdGggaGVhZGVyXHJcbiAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXSA9PT0gbmFtZSk7XHJcbiAgICAgIC8vIHRyYW5zbGF0ZSBiYWNrIHRvIGtleVxyXG4gICAgICBheGVzW2NvbHVtbl0gPSBlbGVtZW50ID8gZWxlbWVudFtgXyR7Y29sdW1ufWBdIDogbmFtZTtcclxuICAgIH1cclxuICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcyB9KTtcclxuICB9XHJcbiAgZXhwb3J0VG9FeGNlbCh0aXRsZTogc3RyaW5nKTogYW55IHtcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7dGl0bGV9Lnhsc3hgO1xyXG4gICAgY29uc3QgdGFzayA9ICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY2hhcnRUeXBlKSB7XHJcbiAgICAgICAgY29uc3Qgd2IgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XHJcbiAgICAgICAgY29uc3Qgd3MgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQodGhpcy5fZGF0YSk7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1NoZWV0TicsIDEpO1xyXG4gICAgICAgIHdiLlNoZWV0c1tuYW1lXSA9IHdzO1xyXG4gICAgICAgIHdiLlNoZWV0TmFtZXMucHVzaChuYW1lKTtcclxuICAgICAgICBYTFNYLndyaXRlRmlsZSh3YiwgZmlsZU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBpdm90LmV4Y2VsRXhwb3J0KHsgZmlsZU5hbWUsIGhpZXJhcmNoeUV4cG9ydE1vZGU6ICdBbGwnLCB9KTtcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5jdXJyZW5jeUNvZGUgJiYgdGhpcy5jdXJyZW5jeUNvZGUgIT09IERFRkFVTFRfQ1VSUkVOQ1kpXHJcbiAgICAgIHRoaXMuX3RyYW5zbGF0ZS5jbGRyKHRoaXMuX3Nlc3Npb24ubGFuZ3VhZ2UsIENMRFJfRklMRVMpLnRoZW4oKCkgPT4gdGFzaygpKTtcclxuICAgIGVsc2UgdGFzaygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgdGhpcy5waXZvdCAmJiB0aGlzLnBpdm90LmRlc3Ryb3koKTtcclxuICAgIHRoaXMucGl2b3QgPSBuZXcgUGl2b3RWaWV3KHtcclxuICAgICAgc3Bpbm5lclRlbXBsYXRlOiAnJyxcclxuICAgICAgY2hhcnRTZXR0aW5nczogdGhpcy5jaGFydFNldHRpbmdzLFxyXG4gICAgICBkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcbiAgICAgIGRhdGFTb3VyY2VTZXR0aW5nczogdGhpcy5kYXRhU291cmNlLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgIGVuYWJsZVZhbHVlU29ydGluZzogdHJ1ZSxcclxuICAgICAgc2hvd1Rvb2x0aXA6IGZhbHNlLFxyXG4gICAgICBhbGxvd0NvbmRpdGlvbmFsRm9ybWF0dGluZzogdHJ1ZSxcclxuICAgICAgYWxsb3dFeGNlbEV4cG9ydDogdHJ1ZSxcclxuICAgICAgZ3JpZFNldHRpbmdzOiB0aGlzLmdyaWRTZXR0aW5ncyxcclxuICAgICAgY2VsbENsaWNrOiB0aGlzLmNlbGxDbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgcmVzaXplKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGl2b3QpIHtcclxuICAgICAgLy90aGlzLnBpdm90LmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xyXG4gICAgICB0aGlzLnBpdm90LndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgaWYgKHRoaXMuY2hhcnRTZXR0aW5ncylcclxuICAgICAgICB0aGlzLnBpdm90LmNoYXJ0ICYmICh0aGlzLnBpdm90LmNoYXJ0IGFzIHVua25vd24gYXMgQ2hhcnQpLmNoYXJ0UmVzaXplKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBpdm90Lm9uV2luZG93UmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5waXZvdCAmJiB0aGlzLnBpdm90LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=