@bizdoc/core 1.17.2 → 1.17.7

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 (413) hide show
  1. package/assets/themes/brown.min.css +1 -1
  2. package/assets/themes/dark.min.css +1 -1
  3. package/assets/themes/deep-purple-light-blue.min.css +1 -1
  4. package/assets/themes/deep-purple-teal.min.css +1 -1
  5. package/assets/themes/default.min.css +1 -1
  6. package/assets/themes/green.min.css +1 -1
  7. package/assets/themes/indigo.min.css +1 -1
  8. package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
  9. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  10. package/esm2020/lib/admin/architecture/cube-axes-filter.component.mjs +14 -15
  11. package/esm2020/lib/admin/architecture/declarations.mjs +11 -4
  12. package/esm2020/lib/admin/architecture/designer-element.component.mjs +19 -19
  13. package/esm2020/lib/admin/architecture/designer-privileges.component.mjs +15 -11
  14. package/esm2020/lib/admin/architecture/designer.base.mjs +11 -10
  15. package/esm2020/lib/admin/architecture/designer.component.mjs +25 -20
  16. package/esm2020/lib/admin/architecture/elements/action.component.mjs +5 -5
  17. package/esm2020/lib/admin/architecture/elements/analysis-view.component.mjs +7 -6
  18. package/esm2020/lib/admin/architecture/elements/analysis-widget.component.mjs +7 -6
  19. package/esm2020/lib/admin/architecture/elements/anomaly-rule.component.mjs +3 -3
  20. package/esm2020/lib/admin/architecture/elements/attribute.component.mjs +7 -6
  21. package/esm2020/lib/admin/architecture/elements/box-form.component.mjs +3 -3
  22. package/esm2020/lib/admin/architecture/elements/configuration-datasource.component.mjs +3 -3
  23. package/esm2020/lib/admin/architecture/elements/control.component.mjs +3 -3
  24. package/esm2020/lib/admin/architecture/elements/cube-index-utility.component.mjs +7 -6
  25. package/esm2020/lib/admin/architecture/elements/cube-view.component.mjs +7 -6
  26. package/esm2020/lib/admin/architecture/elements/cube.component.mjs +24 -25
  27. package/esm2020/lib/admin/architecture/elements/documents-report.component.mjs +7 -6
  28. package/esm2020/lib/admin/architecture/elements/documents-widget.component.mjs +7 -6
  29. package/esm2020/lib/admin/architecture/elements/explore-view.component.mjs +7 -6
  30. package/esm2020/lib/admin/architecture/elements/feedback-widget.component.mjs +9 -8
  31. package/esm2020/lib/admin/architecture/elements/folder.component.mjs +7 -6
  32. package/esm2020/lib/admin/architecture/elements/form-invite.dialog.mjs +44 -33
  33. package/esm2020/lib/admin/architecture/elements/form.component.mjs +39 -25
  34. package/esm2020/lib/admin/architecture/elements/guide.component.mjs +3 -3
  35. package/esm2020/lib/admin/architecture/elements/matrix-view.component.mjs +7 -6
  36. package/esm2020/lib/admin/architecture/elements/node.component.mjs +3 -3
  37. package/esm2020/lib/admin/architecture/elements/parallel-view.component.mjs +7 -6
  38. package/esm2020/lib/admin/architecture/elements/performance-report.component.mjs +7 -6
  39. package/esm2020/lib/admin/architecture/elements/performance-widget.component.mjs +7 -6
  40. package/esm2020/lib/admin/architecture/elements/pivot-view.component.mjs +7 -6
  41. package/esm2020/lib/admin/architecture/elements/policy.component.mjs +3 -3
  42. package/esm2020/lib/admin/architecture/elements/report.component.mjs +7 -6
  43. package/esm2020/lib/admin/architecture/elements/return-to-role-action.component.mjs +3 -3
  44. package/esm2020/lib/admin/architecture/elements/role.component.mjs +3 -3
  45. package/esm2020/lib/admin/architecture/elements/rule.component.mjs +3 -3
  46. package/esm2020/lib/admin/architecture/elements/state.component.mjs +5 -5
  47. package/esm2020/lib/admin/architecture/elements/sum-view.component.mjs +7 -6
  48. package/esm2020/lib/admin/architecture/elements/tasks-report.component.mjs +7 -6
  49. package/esm2020/lib/admin/architecture/elements/type.component.mjs +3 -3
  50. package/esm2020/lib/admin/architecture/elements/usage-report.component.mjs +7 -6
  51. package/esm2020/lib/admin/architecture/elements/utility.component.mjs +3 -3
  52. package/esm2020/lib/admin/architecture/elements/view.component.mjs +3 -3
  53. package/esm2020/lib/admin/architecture/elements/widget.component.mjs +7 -6
  54. package/esm2020/lib/admin/architecture/icon-picker.component.mjs +3 -3
  55. package/esm2020/lib/admin/core/ace.input.mjs +3 -3
  56. package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
  57. package/esm2020/lib/admin/core/localized-string.component.mjs +7 -6
  58. package/esm2020/lib/admin/core/search.input.mjs +3 -3
  59. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +19 -20
  60. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +24 -25
  61. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +13 -14
  62. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +14 -15
  63. package/esm2020/lib/admin/form/designer/box-designer.component.mjs +9 -10
  64. package/esm2020/lib/admin/form/designer/properties.component.mjs +6 -5
  65. package/esm2020/lib/admin/form/designer/section.component.mjs +5 -5
  66. package/esm2020/lib/admin/form/designer/settings.component.mjs +3 -3
  67. package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
  68. package/esm2020/lib/admin/form/workflow/node.component.mjs +11 -12
  69. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +17 -18
  70. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +12 -14
  71. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  72. package/esm2020/lib/admin/patterns/patterns.component.mjs +23 -24
  73. package/esm2020/lib/admin/permissions/permissions.component.mjs +3 -3
  74. package/esm2020/lib/admin/positions/positions-popup.component.mjs +3 -3
  75. package/esm2020/lib/admin/positions/positions.component.mjs +24 -25
  76. package/esm2020/lib/admin/profiler/outofoffice.component.mjs +16 -17
  77. package/esm2020/lib/admin/profiler/profiler.component.mjs +20 -21
  78. package/esm2020/lib/admin/system.service.mjs +4 -4
  79. package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
  80. package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
  81. package/esm2020/lib/app.component.mjs +6 -6
  82. package/esm2020/lib/bizdoc.module.mjs +4 -4
  83. package/esm2020/lib/browse/browse-items.component.mjs +24 -25
  84. package/esm2020/lib/browse/browse.mobile.component.mjs +17 -18
  85. package/esm2020/lib/browse/browse.pane.component.mjs +15 -16
  86. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +15 -16
  87. package/esm2020/lib/browse/filter/filter.component.mjs +15 -16
  88. package/esm2020/lib/browse/folders-menu.component.mjs +3 -3
  89. package/esm2020/lib/chat/chat-info.mjs +3 -3
  90. package/esm2020/lib/chat/chat.mobile.component.mjs +7 -8
  91. package/esm2020/lib/chat/chat.service.mjs +3 -3
  92. package/esm2020/lib/chat/contacts.component.mjs +6 -6
  93. package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
  94. package/esm2020/lib/chat/conversation.component.mjs +3 -3
  95. package/esm2020/lib/chat/conversation.pane.component.mjs +3 -3
  96. package/esm2020/lib/compose/action/action-picker.component.mjs +3 -3
  97. package/esm2020/lib/compose/action/action.dialog.mjs +10 -11
  98. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +3 -3
  99. package/esm2020/lib/compose/action/assign-action.component.mjs +12 -13
  100. package/esm2020/lib/compose/action/moveto-action.component.mjs +14 -15
  101. package/esm2020/lib/compose/action/return-action.component.mjs +12 -13
  102. package/esm2020/lib/compose/attachments/attachments.component.mjs +3 -3
  103. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +10 -11
  104. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
  105. package/esm2020/lib/compose/box/box.component.mjs +9 -10
  106. package/esm2020/lib/compose/box/control.component.mjs +3 -3
  107. package/esm2020/lib/compose/box/row.component.mjs +3 -3
  108. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +3 -3
  109. package/esm2020/lib/compose/comments/comment.component.mjs +16 -17
  110. package/esm2020/lib/compose/comments/comments.component.mjs +10 -11
  111. package/esm2020/lib/compose/comments/comments.pane.component.mjs +3 -3
  112. package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
  113. package/esm2020/lib/compose/comments/edits.component.mjs +3 -3
  114. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  115. package/esm2020/lib/compose/comments/votes.component.mjs +3 -3
  116. package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
  117. package/esm2020/lib/compose/compose.mobile.component.mjs +3 -3
  118. package/esm2020/lib/compose/compose.pane.component.mjs +3 -3
  119. package/esm2020/lib/compose/copy/copy.dialog.mjs +3 -3
  120. package/esm2020/lib/compose/dismiss.service.mjs +3 -3
  121. package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
  122. package/esm2020/lib/compose/document.component.mjs +3 -3
  123. package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
  124. package/esm2020/lib/compose/document.pane.component.mjs +3 -3
  125. package/esm2020/lib/compose/events/events.component.mjs +3 -3
  126. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  127. package/esm2020/lib/compose/form.component.mjs +3 -3
  128. package/esm2020/lib/compose/new-menu.component.mjs +3 -3
  129. package/esm2020/lib/compose/privilage.directive.mjs +6 -6
  130. package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
  131. package/esm2020/lib/compose/state.component.mjs +3 -3
  132. package/esm2020/lib/compose/tag/tags.component.mjs +3 -3
  133. package/esm2020/lib/compose/trace/flow.component.mjs +3 -3
  134. package/esm2020/lib/compose/trace/people.component.mjs +3 -3
  135. package/esm2020/lib/compose/trace/trace.base.mjs +3 -3
  136. package/esm2020/lib/compose/trace/trace.component.mjs +3 -3
  137. package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
  138. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +3 -3
  139. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  140. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +3 -3
  141. package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
  142. package/esm2020/lib/core/account.service.mjs +3 -3
  143. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  144. package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
  145. package/esm2020/lib/core/checkbox.mjs +3 -3
  146. package/esm2020/lib/core/component-factory-resolver.mjs +3 -3
  147. package/esm2020/lib/core/datasource.service.mjs +3 -3
  148. package/esm2020/lib/core/fields/address.designer.mjs +3 -3
  149. package/esm2020/lib/core/fields/address.field.mjs +3 -3
  150. package/esm2020/lib/core/fields/autocomplete.field.mjs +10 -10
  151. package/esm2020/lib/core/fields/checkbox.designer.mjs +3 -3
  152. package/esm2020/lib/core/fields/checkbox.field.mjs +3 -3
  153. package/esm2020/lib/core/fields/checklist.designer.mjs +3 -3
  154. package/esm2020/lib/core/fields/checklist.field.mjs +6 -5
  155. package/esm2020/lib/core/fields/date-range.designer.mjs +3 -3
  156. package/esm2020/lib/core/fields/date-range.field.mjs +3 -3
  157. package/esm2020/lib/core/fields/date.designer.mjs +3 -3
  158. package/esm2020/lib/core/fields/date.field.mjs +3 -3
  159. package/esm2020/lib/core/fields/expression.field.mjs +3 -3
  160. package/esm2020/lib/core/fields/file.designer.mjs +3 -3
  161. package/esm2020/lib/core/fields/file.field.mjs +3 -3
  162. package/esm2020/lib/core/fields/html.designer.mjs +3 -3
  163. package/esm2020/lib/core/fields/html.field.mjs +3 -3
  164. package/esm2020/lib/core/fields/input.designer.mjs +3 -3
  165. package/esm2020/lib/core/fields/input.field.mjs +3 -3
  166. package/esm2020/lib/core/fields/localized-string.field.mjs +21 -0
  167. package/esm2020/lib/core/fields/numeric.designer.mjs +3 -3
  168. package/esm2020/lib/core/fields/numeric.field.mjs +3 -3
  169. package/esm2020/lib/core/fields/options.base.mjs +8 -8
  170. package/esm2020/lib/core/fields/options.component.mjs +3 -3
  171. package/esm2020/lib/core/fields/radio-button.designer.mjs +9 -7
  172. package/esm2020/lib/core/fields/radio-button.field.mjs +3 -3
  173. package/esm2020/lib/core/fields/select.designer.mjs +9 -8
  174. package/esm2020/lib/core/fields/select.field.mjs +6 -13
  175. package/esm2020/lib/core/fields/signature.designer.mjs +6 -4
  176. package/esm2020/lib/core/fields/signature.field.mjs +5 -5
  177. package/esm2020/lib/core/fields/switch.field.mjs +3 -3
  178. package/esm2020/lib/core/fields/textarea.designer.mjs +3 -3
  179. package/esm2020/lib/core/fields/textarea.field.mjs +3 -3
  180. package/esm2020/lib/core/fields/timespan.field.mjs +3 -3
  181. package/esm2020/lib/core/fields/yesno.designer.mjs +9 -8
  182. package/esm2020/lib/core/fields/yesno.field.mjs +3 -3
  183. package/esm2020/lib/core/guide/guide.component.mjs +9 -10
  184. package/esm2020/lib/core/guide/guide.service.mjs +3 -3
  185. package/esm2020/lib/core/guide/help-tip.component.mjs +11 -12
  186. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  187. package/esm2020/lib/core/hub.service.mjs +3 -3
  188. package/esm2020/lib/core/identity/identity.component.mjs +3 -3
  189. package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
  190. package/esm2020/lib/core/info/document-info.service.mjs +3 -3
  191. package/esm2020/lib/core/info/location-info.component.mjs +3 -3
  192. package/esm2020/lib/core/info/map-info.mjs +3 -3
  193. package/esm2020/lib/core/inputs/address.input.mjs +3 -3
  194. package/esm2020/lib/core/inputs/auto-complete.input.mjs +3 -3
  195. package/esm2020/lib/core/inputs/combination-picker-body.mjs +3 -3
  196. package/esm2020/lib/core/inputs/combination-picker.mjs +3 -3
  197. package/esm2020/lib/core/inputs/combination-pool.mjs +3 -3
  198. package/esm2020/lib/core/inputs/file.input.mjs +3 -3
  199. package/esm2020/lib/core/inputs/select.input.mjs +3 -3
  200. package/esm2020/lib/core/inputs/signature.input.mjs +3 -3
  201. package/esm2020/lib/core/inputs/time-picker.mjs +3 -3
  202. package/esm2020/lib/core/inputs/timespan.input.mjs +3 -3
  203. package/esm2020/lib/core/layout.component.mjs +9 -5
  204. package/esm2020/lib/core/lottie-animation.mjs +3 -3
  205. package/esm2020/lib/core/mailbox.service.mjs +3 -3
  206. package/esm2020/lib/core/models.mjs +2 -1
  207. package/esm2020/lib/core/none.component.mjs +3 -3
  208. package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
  209. package/esm2020/lib/core/pipes/calendar.pipe.mjs +3 -3
  210. package/esm2020/lib/core/pipes/date-format.pipe.mjs +3 -3
  211. package/esm2020/lib/core/pipes/daterange.pipe.mjs +6 -6
  212. package/esm2020/lib/core/pipes/difference.pipe.mjs +3 -3
  213. package/esm2020/lib/core/pipes/duration-format.pipe.mjs +3 -3
  214. package/esm2020/lib/core/pipes/duration.pipe.mjs +3 -3
  215. package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
  216. package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
  217. package/esm2020/lib/core/pipes/localized-string.pipe.mjs +3 -3
  218. package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
  219. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  220. package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
  221. package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
  222. package/esm2020/lib/core/pipes/time-ago.pipe.mjs +6 -6
  223. package/esm2020/lib/core/pipes/translate.pipe.mjs +9 -9
  224. package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
  225. package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
  226. package/esm2020/lib/core/popup/popup.component.mjs +3 -3
  227. package/esm2020/lib/core/popup/popup.service.mjs +3 -3
  228. package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
  229. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  230. package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
  231. package/esm2020/lib/core/prompt.service.mjs +3 -3
  232. package/esm2020/lib/core/router.mjs +6 -6
  233. package/esm2020/lib/core/save-changes.dialog.mjs +3 -3
  234. package/esm2020/lib/core/session.service.mjs +3 -3
  235. package/esm2020/lib/core/slots/router.directive.mjs +3 -3
  236. package/esm2020/lib/core/slots/router.service.mjs +3 -3
  237. package/esm2020/lib/core/slots/slots.component.mjs +5 -5
  238. package/esm2020/lib/core/tagging/documents.component.mjs +3 -3
  239. package/esm2020/lib/core/tagging/edit-input.component.mjs +14 -15
  240. package/esm2020/lib/core/tagging/emoji.component.mjs +3 -3
  241. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
  242. package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
  243. package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
  244. package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
  245. package/esm2020/lib/core/tagging/users.component.mjs +3 -3
  246. package/esm2020/lib/core/translate.service.mjs +3 -3
  247. package/esm2020/lib/core/translations.mjs +29 -114
  248. package/esm2020/lib/core/window-title.service.mjs +3 -3
  249. package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
  250. package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
  251. package/esm2020/lib/cube/cube-info.service.mjs +3 -3
  252. package/esm2020/lib/cube/cube-menu.component.mjs +3 -3
  253. package/esm2020/lib/cube/cube-view.component.mjs +3 -3
  254. package/esm2020/lib/cube/cube.service.mjs +3 -3
  255. package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
  256. package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
  257. package/esm2020/lib/cube/explore/explore-items.component.mjs +3 -3
  258. package/esm2020/lib/cube/explore/explore.pane.component.mjs +3 -3
  259. package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
  260. package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
  261. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  262. package/esm2020/lib/cube/filter/filter.component.mjs +14 -15
  263. package/esm2020/lib/cube/grid/grid.component.mjs +3 -3
  264. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +3 -3
  265. package/esm2020/lib/cube/matrix/matrix.base.mjs +3 -3
  266. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  267. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  268. package/esm2020/lib/cube/matrix/popup.component.mjs +3 -3
  269. package/esm2020/lib/cube/matrix/table.component.mjs +3 -3
  270. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  271. package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -3
  272. package/esm2020/lib/cube/sum/sum.component.mjs +3 -3
  273. package/esm2020/lib/cube/view-base.mjs +3 -3
  274. package/esm2020/lib/cube/view.mobile.component.mjs +3 -3
  275. package/esm2020/lib/cube/view.pane.component.mjs +3 -3
  276. package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
  277. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
  278. package/esm2020/lib/dashboard/cube/compare.widget.mjs +3 -3
  279. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +46 -21
  280. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +4 -4
  281. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +6 -5
  282. package/esm2020/lib/dashboard/cube/document-state.widget.mjs +3 -3
  283. package/esm2020/lib/dashboard/cube/documents.widget.mjs +3 -3
  284. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  285. package/esm2020/lib/dashboard/dashboard.component.mjs +14 -15
  286. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +3 -3
  287. package/esm2020/lib/dashboard/recents/recents.widget.mjs +3 -3
  288. package/esm2020/lib/dashboard/score/activity.widget.mjs +3 -3
  289. package/esm2020/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  290. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  291. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +3 -3
  292. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +3 -3
  293. package/esm2020/lib/dashboard/widget-item.component.mjs +9 -9
  294. package/esm2020/lib/designer.module.mjs +5 -9
  295. package/esm2020/lib/desktop.module.mjs +5 -9
  296. package/esm2020/lib/home/about/about.dialog.mjs +3 -3
  297. package/esm2020/lib/home/home-base.component.mjs +3 -3
  298. package/esm2020/lib/home/home.desktop.component.mjs +19 -20
  299. package/esm2020/lib/home/home.mobile.component.mjs +3 -3
  300. package/esm2020/lib/home/notifications/notifications.component.mjs +3 -3
  301. package/esm2020/lib/home/options/options.component.mjs +13 -14
  302. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  303. package/esm2020/lib/home/sign/sign.component.mjs +3 -3
  304. package/esm2020/lib/home/tools.component.mjs +3 -3
  305. package/esm2020/lib/impersonate/impersonate.component.mjs +3 -3
  306. package/esm2020/lib/mobile.module.mjs +5 -9
  307. package/esm2020/lib/modules/chart.module.mjs +4 -4
  308. package/esm2020/lib/modules/circular-gauge.module.mjs +4 -4
  309. package/esm2020/lib/modules/datepicker.intl.mjs +3 -3
  310. package/esm2020/lib/modules/dayjs.module.mjs +4 -4
  311. package/esm2020/lib/modules/diagram.module.mjs +4 -4
  312. package/esm2020/lib/modules/gantt.module.mjs +4 -4
  313. package/esm2020/lib/modules/grid.module.mjs +4 -4
  314. package/esm2020/lib/modules/material.module.mjs +8 -12
  315. package/esm2020/lib/modules/paginator.intl.mjs +3 -3
  316. package/esm2020/lib/modules/pivot.module.mjs +4 -4
  317. package/esm2020/lib/modules/schedule.module.mjs +4 -4
  318. package/esm2020/lib/modules/spreadsheet.module.mjs +4 -4
  319. package/esm2020/lib/modules/stepper.intl.mjs +3 -3
  320. package/esm2020/lib/modules/texteditor.module.mjs +4 -4
  321. package/esm2020/lib/notifications/filter.component.mjs +9 -10
  322. package/esm2020/lib/notifications/notifications-table.component.mjs +3 -3
  323. package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
  324. package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
  325. package/esm2020/lib/notifications/notifications.service.mjs +3 -3
  326. package/esm2020/lib/notifications/types/commented.notification.mjs +4 -4
  327. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  328. package/esm2020/lib/notifications/types/escalated.notification.mjs +4 -4
  329. package/esm2020/lib/notifications/types/invite.notification.mjs +14 -6
  330. package/esm2020/lib/notifications/types/liked.notification.mjs +4 -4
  331. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +6 -6
  332. package/esm2020/lib/notifications/types/notification-base.mjs +3 -3
  333. package/esm2020/lib/notifications/types/nudge.notification.mjs +4 -4
  334. package/esm2020/lib/notifications/types/state-changed.notification.mjs +5 -5
  335. package/esm2020/lib/notifications/types/tagged.notification.mjs +5 -5
  336. package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
  337. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +4 -4
  338. package/esm2020/lib/options/options.component.mjs +18 -19
  339. package/esm2020/lib/options/options.service.mjs +3 -3
  340. package/esm2020/lib/reports/arguments-component.mjs +3 -3
  341. package/esm2020/lib/reports/cube/documents.component.mjs +3 -3
  342. package/esm2020/lib/reports/cube/grid-documents.component.mjs +3 -3
  343. package/esm2020/lib/reports/cube/role-performance.component.mjs +3 -3
  344. package/esm2020/lib/reports/cube/table-documents.component.mjs +3 -3
  345. package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
  346. package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
  347. package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
  348. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +3 -3
  349. package/esm2020/lib/reports/cube/usage.component.mjs +3 -3
  350. package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
  351. package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
  352. package/esm2020/lib/reports/report.pane.component.mjs +12 -13
  353. package/esm2020/lib/reports/reports-menu.component.mjs +3 -3
  354. package/esm2020/lib/reports/substitution/substitution.component.mjs +3 -3
  355. package/esm2020/lib/reports/table/table-view.component.mjs +3 -3
  356. package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
  357. package/esm2020/lib/scheduler/schedule.component.mjs +13 -14
  358. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  359. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +3 -3
  360. package/esm2020/lib/search/cube.component.mjs +3 -3
  361. package/esm2020/lib/search/document.component.mjs +3 -3
  362. package/esm2020/lib/search/guide.component.mjs +3 -3
  363. package/esm2020/lib/search/path.component.mjs +3 -3
  364. package/esm2020/lib/search/search.service.mjs +3 -3
  365. package/esm2020/lib/shared.module.mjs +5 -9
  366. package/esm2020/lib/system.module.mjs +132 -17
  367. package/esm2020/lib/views/cube/chart.component.mjs +3 -3
  368. package/esm2020/lib/views/cube/cube-base.mjs +3 -3
  369. package/esm2020/lib/views/cube/explore.component.mjs +3 -3
  370. package/esm2020/lib/views/cube/matrix.component.mjs +3 -3
  371. package/esm2020/lib/views/cube/parallel.component.mjs +3 -3
  372. package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
  373. package/esm2020/lib/views/cube/sum.component.mjs +3 -3
  374. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  375. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +3 -3
  376. package/esm2020/lib/views/view-item.component.mjs +3 -3
  377. package/esm2020/lib/views/views.component.mjs +3 -3
  378. package/esm2020/lib/views/views.mobile.component.mjs +3 -3
  379. package/esm2020/lib/views/views.pane.component.mjs +3 -3
  380. package/fesm2015/bizdoc-core.mjs +1918 -1815
  381. package/fesm2015/bizdoc-core.mjs.map +1 -1
  382. package/fesm2020/bizdoc-core.mjs +1915 -1812
  383. package/fesm2020/bizdoc-core.mjs.map +1 -1
  384. package/lib/admin/architecture/declarations.d.ts +4 -3
  385. package/lib/admin/architecture/designer.component.d.ts +1 -0
  386. package/lib/admin/architecture/elements/cube.component.d.ts +1 -1
  387. package/lib/admin/architecture/elements/form-invite.dialog.d.ts +6 -5
  388. package/lib/admin/architecture/elements/form.component.d.ts +4 -2
  389. package/lib/admin/core/localized-string.component.d.ts +3 -3
  390. package/lib/admin/system.service.d.ts +7 -1
  391. package/lib/core/fields/localized-string.field.d.ts +16 -0
  392. package/lib/core/fields/select.field.d.ts +0 -2
  393. package/lib/core/models.d.ts +4 -0
  394. package/lib/core/translations.d.ts +19 -104
  395. package/lib/dashboard/cube/cube-analysis.base.d.ts +4 -2
  396. package/lib/dashboard/cube/cube-analysis.widget.d.ts +2 -1
  397. package/lib/dashboard/dashboard.component.d.ts +6 -7
  398. package/lib/designer.module.d.ts +2 -3
  399. package/lib/desktop.module.d.ts +3 -4
  400. package/lib/mobile.module.d.ts +3 -4
  401. package/lib/modules/material.module.d.ts +38 -39
  402. package/lib/notifications/types/commented.notification.d.ts +0 -1
  403. package/lib/notifications/types/escalated.notification.d.ts +0 -1
  404. package/lib/notifications/types/invite.notification.d.ts +4 -5
  405. package/lib/notifications/types/liked.notification.d.ts +0 -1
  406. package/lib/notifications/types/long-running-task.notification.d.ts +1 -1
  407. package/lib/notifications/types/nudge.notification.d.ts +0 -1
  408. package/lib/notifications/types/state-changed.notification.d.ts +0 -2
  409. package/lib/notifications/types/tagged.notification.d.ts +0 -2
  410. package/lib/notifications/types/upcoming-event.notification.d.ts +0 -1
  411. package/lib/shared.module.d.ts +15 -16
  412. package/lib/system.module.d.ts +28 -28
  413. package/package.json +14 -15
@@ -1,63 +1,72 @@
1
1
  import { COMMA, ENTER, SEMICOLON } from "@angular/cdk/keycodes";
2
2
  import { Component, Inject } from "@angular/core";
3
3
  import { Validators } from "@angular/forms";
4
+ import { Subject } from "rxjs";
4
5
  import { debounceTime } from "rxjs/operators";
5
- import { DesignerRef } from "../declarations";
6
+ import { DesignerRef, localizeString } from "../declarations";
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/forms";
8
9
  import * as i2 from "../../system.service";
9
10
  import * as i3 from "../../../core/prompt.service";
10
- import * as i4 from "../../../core/session.service";
11
- import * as i5 from "../../../core/slots/pane-ref";
12
- import * as i6 from "@angular/common";
13
- import * as i7 from "@angular/flex-layout/flex";
14
- import * as i8 from "@angular/material/chips";
15
- import * as i9 from "@angular/material/datepicker";
16
- import * as i10 from "@angular/material/list";
17
- import * as i11 from "@angular/material/autocomplete";
18
- import * as i12 from "@angular/material/core";
19
- import * as i13 from "@angular/material/form-field";
20
- import * as i14 from "@angular/material/button";
21
- import * as i15 from "@angular/cdk/text-field";
22
- import * as i16 from "@angular/material/input";
23
- import * as i17 from "@angular/material/icon";
24
- import * as i18 from "../../../core/pipes/translate.pipe";
25
- import * as i19 from "../declarations";
11
+ import * as i4 from "../../../core/slots/pane-ref";
12
+ import * as i5 from "@angular/common";
13
+ import * as i6 from "@angular/material/chips";
14
+ import * as i7 from "@angular/material/datepicker";
15
+ import * as i8 from "@angular/material/list";
16
+ import * as i9 from "@angular/material/autocomplete";
17
+ import * as i10 from "@angular/material/core";
18
+ import * as i11 from "@angular/material/form-field";
19
+ import * as i12 from "@angular/material/button";
20
+ import * as i13 from "@angular/material/checkbox";
21
+ import * as i14 from "@angular/material/input";
22
+ import * as i15 from "@angular/material/icon";
23
+ import * as i16 from "../../core/localized-string.component";
24
+ import * as i17 from "../../../core/pipes/translate.pipe";
25
+ import * as i18 from "../declarations";
26
26
  export class FormInviteDialog {
27
- constructor(_fb, _service, _ps, _ref, _session, _pane) {
27
+ constructor(_fb, _service, _ps, _ref, _pane) {
28
28
  this._fb = _fb;
29
29
  this._service = _service;
30
30
  this._ps = _ps;
31
31
  this._ref = _ref;
32
- this._session = _session;
33
32
  this._pane = _pane;
34
33
  this.separatorKeysCodes = [ENTER, COMMA, SEMICOLON];
35
- this.groups = this._fb.control([], Validators.required);
34
+ this.groups = this._fb.control(null, Validators.required);
36
35
  this.devices = ['Sms', 'Email', 'IM'];
37
36
  this.form = this._fb.group({
38
37
  groups: this.groups,
39
38
  devices: this._fb.control(null, Validators.required),
40
39
  due: this._fb.control(null, Validators.min(new Date().getTime())),
40
+ oneTime: false,
41
41
  message: this._fb.control(null)
42
42
  });
43
+ this._searchchange = new Subject();
43
44
  this.search = this._fb.control(null);
44
45
  }
45
46
  ngOnInit() {
46
47
  this._service.roles().subscribe(r => {
47
- this._roles = r.concat(this._session.profile.roles /*.filter(r => !r.disabled)*/);
48
- r.forEach(r => {
48
+ this._roles = r.concat(this._ref.designer.roles.filter(r => !r.disabled).
49
+ map(r => ({
50
+ name: r.name,
51
+ title: localizeString(r.title)
52
+ })));
53
+ this._roles.forEach(r => {
49
54
  r['_index'] = (r.title || r.name).toLowerCase();
50
55
  this._roles[r.name] = r;
51
56
  });
52
57
  this.roles = this._roles.slice();
53
58
  });
54
59
  this.search.valueChanges.pipe(debounceTime(150)).subscribe((v) => {
60
+ this._searchchange.next(v);
61
+ });
62
+ this._searchchange.subscribe(v => {
63
+ const groups = this.groups.value || [];
55
64
  if (v) {
56
65
  const val = v.toLowerCase();
57
- this.roles = this._roles.filter(r => r['_index'].indexOf(val) > -1);
66
+ this.roles = this._roles.filter(r => r['_index'].indexOf(val) > -1 && groups.indexOf(r.name) < 0);
58
67
  }
59
68
  else
60
- this.roles = this._roles.slice();
69
+ this.roles = this._roles.filter(r => groups.indexOf(r.name) < 0);
61
70
  });
62
71
  }
63
72
  /**
@@ -70,6 +79,7 @@ export class FormInviteDialog {
70
79
  if (index >= 0)
71
80
  roles.splice(index, 1);
72
81
  this.groups.setValue(roles);
82
+ this._searchchange.next(null);
73
83
  }
74
84
  /**
75
85
  *
@@ -86,13 +96,14 @@ export class FormInviteDialog {
86
96
  this.groups.setValue(roles);
87
97
  }
88
98
  inp.value = '';
99
+ this.search.setValue(null);
89
100
  }
90
101
  send() {
91
102
  const { groups, devices, message, due } = this.form.value;
92
103
  this.working = true;
93
104
  this._service.invite(this._ref.model.name, { groups, message, devices, due }).
94
- subscribe(() => {
95
- this._ps.toast('InvitationsSent');
105
+ subscribe(e => {
106
+ this._ps.toast(e.ok ? 'InvitationsSent' : 'NoInvitationsSent', e.ok);
96
107
  this._pane.close();
97
108
  }, () => {
98
109
  this._ps.error();
@@ -104,13 +115,13 @@ export class FormInviteDialog {
104
115
  return role?.title || name;
105
116
  }
106
117
  }
107
- FormInviteDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FormInviteDialog, deps: [{ token: i1.FormBuilder }, { token: i2.SystemService }, { token: i3.PromptService }, { token: DesignerRef }, { token: i4.SessionService }, { token: i5.PaneRef }], target: i0.ɵɵFactoryTarget.Component });
108
- FormInviteDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: FormInviteDialog, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-chip-list #chips [attr.aria-label]=\"''\" required>\r\n <mat-chip *ngFor=\"let r of groups.value\"\r\n [removable]=\"true\"\r\n (removed)=\"removeRole(r)\">\r\n {{titleOf(r)}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Roles'|translate\"\r\n [formControl]=search\r\n #inputrole\r\n [matAutocomplete]=\"nametype\"\r\n [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #nametype=\"matAutocomplete\" (optionSelected)=\"addRole(inputrole, $event)\">\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">\r\n {{r.title || r.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"message\" placeholder=\"{{'Message'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['message'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'InviteDue' | l18n}}</mat-label>\r\n <input matInput formControlName=\"due\"\r\n [matDatepicker]=\"duePicker\" />\r\n <mat-datepicker-toggle [for]=\"duePicker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #duePicker></mat-datepicker>\r\n <mat-error *ngIf=\"form.get('due').hasError('min')\" [innerHTML]=\"'DateInPastErr'|translate:(label||name)\"></mat-error>\r\n </mat-form-field>\r\n <mat-selection-list formControlName=\"devices\" multiple>\r\n <mat-list-option *ngFor=\"let d of devices\" [value]=\"d\">{{d|translate}}</mat-list-option>\r\n </mat-selection-list>\r\n <button mat-raised-button color=\"primary\" (click)=\"send()\" [disabled]=\"!form.valid || working\">{{'Send'|l18n}}</button>\r\n</form>\r\n", styles: ["form{padding:8px}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "component", type: i8.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i8.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i8.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i8.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i9.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i10.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i10.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: i11.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i12.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i13.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i13.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i13.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i13.MatLabel, selector: "mat-label" }, { kind: "directive", type: i13.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i14.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i15.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i16.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i17.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i18.L18nPipe, name: "l18n" }, { kind: "pipe", type: i18.TranslatePipe, name: "translate" }] });
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FormInviteDialog, decorators: [{
118
+ FormInviteDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormInviteDialog, deps: [{ token: i1.FormBuilder }, { token: i2.SystemService }, { token: i3.PromptService }, { token: DesignerRef }, { token: i4.PaneRef }], target: i0.ɵɵFactoryTarget.Component });
119
+ FormInviteDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FormInviteDialog, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-chip-list #chips [attr.aria-label]=\"''\" multiple required>\r\n <mat-chip *ngFor=\"let r of groups.value\"\r\n (removed)=\"removeRole(r)\">\r\n {{titleOf(r)}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Roles'|translate\" required\r\n [formControl]=search\r\n #inputrole\r\n [matAutocomplete]=\"rolename\"\r\n [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #rolename=\"matAutocomplete\" (optionSelected)=\"addRole(inputrole, $event)\">\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">\r\n {{r.title || r.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.get('groups').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Roles'|translate)\"></mat-error>\r\n </mat-form-field>\r\n <bizdoc-localized-string formControlName=\"message\" [placeholder]=\"'Message'|translate\" required class=\"flex column\" maxlength=\"400\"></bizdoc-localized-string>\r\n <mat-form-field>\r\n <mat-label>{{'InviteDue' | l18n}}</mat-label>\r\n <input matInput formControlName=\"due\"\r\n [matDatepicker]=\"duePicker\" />\r\n <mat-datepicker-toggle [for]=\"duePicker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #duePicker></mat-datepicker>\r\n <mat-error *ngIf=\"form.get('due').hasError('min')\" [innerHTML]=\"'DateInPastErr'|translate:(label||name)\"></mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"oneTime\">{{'OneTime'|l18n}}</mat-checkbox>\r\n <mat-selection-list formControlName=\"devices\" multiple>\r\n <mat-list-option *ngFor=\"let d of devices\" [value]=\"d\">{{d|translate}}</mat-list-option>\r\n </mat-selection-list>\r\n <button mat-raised-button color=\"primary\" (click)=\"send()\" [disabled]=\"!form.valid || working\">{{'Send'|l18n}}</button>\r\n</form>\r\n", styles: ["form{padding:8px}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i8.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i8.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i9.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i11.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "directive", type: i11.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i12.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i16.LocalizedStringComponent, selector: "bizdoc-localized-string", inputs: ["class", "value", "placeholder", "required", "disabled", "maxlength"], outputs: ["valueChanges"] }, { kind: "pipe", type: i17.L18nPipe, name: "l18n" }, { kind: "pipe", type: i17.TranslatePipe, name: "translate" }] });
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FormInviteDialog, decorators: [{
110
121
  type: Component,
111
- args: [{ template: "<form autocomplete=\"off\" [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-chip-list #chips [attr.aria-label]=\"''\" required>\r\n <mat-chip *ngFor=\"let r of groups.value\"\r\n [removable]=\"true\"\r\n (removed)=\"removeRole(r)\">\r\n {{titleOf(r)}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Roles'|translate\"\r\n [formControl]=search\r\n #inputrole\r\n [matAutocomplete]=\"nametype\"\r\n [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #nametype=\"matAutocomplete\" (optionSelected)=\"addRole(inputrole, $event)\">\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">\r\n {{r.title || r.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"message\" placeholder=\"{{'Message'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['message'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'InviteDue' | l18n}}</mat-label>\r\n <input matInput formControlName=\"due\"\r\n [matDatepicker]=\"duePicker\" />\r\n <mat-datepicker-toggle [for]=\"duePicker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #duePicker></mat-datepicker>\r\n <mat-error *ngIf=\"form.get('due').hasError('min')\" [innerHTML]=\"'DateInPastErr'|translate:(label||name)\"></mat-error>\r\n </mat-form-field>\r\n <mat-selection-list formControlName=\"devices\" multiple>\r\n <mat-list-option *ngFor=\"let d of devices\" [value]=\"d\">{{d|translate}}</mat-list-option>\r\n </mat-selection-list>\r\n <button mat-raised-button color=\"primary\" (click)=\"send()\" [disabled]=\"!form.valid || working\">{{'Send'|l18n}}</button>\r\n</form>\r\n", styles: ["form{padding:8px}\n"] }]
112
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SystemService }, { type: i3.PromptService }, { type: i19.DesignerRef, decorators: [{
122
+ args: [{ template: "<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <mat-chip-list #chips [attr.aria-label]=\"''\" multiple required>\r\n <mat-chip *ngFor=\"let r of groups.value\"\r\n (removed)=\"removeRole(r)\">\r\n {{titleOf(r)}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [placeholder]=\"'Roles'|translate\" required\r\n [formControl]=search\r\n #inputrole\r\n [matAutocomplete]=\"rolename\"\r\n [matChipInputFor]=\"chips\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #rolename=\"matAutocomplete\" (optionSelected)=\"addRole(inputrole, $event)\">\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">\r\n {{r.title || r.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.get('groups').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('Roles'|translate)\"></mat-error>\r\n </mat-form-field>\r\n <bizdoc-localized-string formControlName=\"message\" [placeholder]=\"'Message'|translate\" required class=\"flex column\" maxlength=\"400\"></bizdoc-localized-string>\r\n <mat-form-field>\r\n <mat-label>{{'InviteDue' | l18n}}</mat-label>\r\n <input matInput formControlName=\"due\"\r\n [matDatepicker]=\"duePicker\" />\r\n <mat-datepicker-toggle [for]=\"duePicker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #duePicker></mat-datepicker>\r\n <mat-error *ngIf=\"form.get('due').hasError('min')\" [innerHTML]=\"'DateInPastErr'|translate:(label||name)\"></mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"oneTime\">{{'OneTime'|l18n}}</mat-checkbox>\r\n <mat-selection-list formControlName=\"devices\" multiple>\r\n <mat-list-option *ngFor=\"let d of devices\" [value]=\"d\">{{d|translate}}</mat-list-option>\r\n </mat-selection-list>\r\n <button mat-raised-button color=\"primary\" (click)=\"send()\" [disabled]=\"!form.valid || working\">{{'Send'|l18n}}</button>\r\n</form>\r\n", styles: ["form{padding:8px}\n"] }]
123
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SystemService }, { type: i3.PromptService }, { type: i18.DesignerRef, decorators: [{
113
124
  type: Inject,
114
125
  args: [DesignerRef]
115
- }] }, { type: i4.SessionService }, { type: i5.PaneRef }]; } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnZpdGUuZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZWxlbWVudHMvZm9ybS1pbnZpdGUuZGlhbG9nLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZWxlbWVudHMvZm9ybS1pbnZpdGUuZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUs5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU05QyxNQUFNLE9BQ0UsZ0JBQWdCO0lBY3RCLFlBQ1UsR0FBZ0IsRUFDaEIsUUFBdUIsRUFDdkIsR0FBa0IsRUFDRyxJQUFpQixFQUN0QyxRQUF3QixFQUN4QixLQUFjO1FBTGQsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDRyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ3RDLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQVM7UUFuQmYsdUJBQWtCLEdBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELFdBQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9B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Q0FBQzs7NkdBcEZLLGdCQUFnQix1R0FrQlosV0FBVztpR0FsQmYsZ0JBQWdCLG9EQ2hCeEIsNGdFQXVDQTsyRkR2QlEsZ0JBQWdCO2tCQUx2QixTQUFTOzs7MEJBdUJMLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1BLCBFTlRFUiwgU0VNSUNPTE9OIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9rZXljb2Rlc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWZcIjtcclxuaW1wb3J0IHsgSW52aXRlRGV2aWNlLCBSb2xlLCBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3N5c3RlbS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyUmVmIH0gZnJvbSBcIi4uL2RlY2xhcmF0aW9uc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICdmb3JtLWludml0ZS5kaWFsb2cuaHRtbCcsXHJcbiAgc3R5bGVzOiBbYGZvcm0ge3BhZGRpbmc6IDhweH1gXVxyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBGb3JtSW52aXRlRGlhbG9nIGltcGxlbWVudHMgT25Jbml0IHtcclxuICByZWFkb25seSBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQSwgU0VNSUNPTE9OXTtcclxuICByZWFkb25seSBncm91cHMgPSB0aGlzLl9mYi5jb250cm9sKFtdLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICByZWFkb25seSBkZXZpY2VzID0gWydTbXMnLCAnRW1haWwnLCAnSU0nXSBhcyBJbnZpdGVEZXZpY2VbXTtcclxuICByZWFkb25seSBmb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgZ3JvdXBzOiB0aGlzLmdyb3VwcyxcclxuICAgIGRldmljZXM6IHRoaXMuX2ZiLmNvbnRyb2w8SW52aXRlRGV2aWNlW10+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgZHVlOiB0aGlzLl9mYi5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWluKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSksXHJcbiAgICBtZXNzYWdlOiB0aGlzLl9mYi5jb250cm9sPHN0cmluZz4obnVsbClcclxuICB9KTtcclxuICBwcml2YXRlIF9yb2xlczogUm9sZVtdO1xyXG4gIHJvbGVzOiBSb2xlW107XHJcbiAgcmVhZG9ubHkgc2VhcmNoID0gdGhpcy5fZmIuY29udHJvbChudWxsKTtcclxuICB3b3JraW5nOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BzOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgQEluamVjdChEZXNpZ25lclJlZikgcHJpdmF0ZSBfcmVmOiBEZXNpZ25lclJlZixcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZlxyXG4gICkge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlcnZpY2Uucm9sZXMoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMuX3JvbGVzID0gci5jb25jYXQodGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLyouZmlsdGVyKHIgPT4gIXIuZGlzYWJsZWQpKi8pO1xyXG4gICAgICByLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgclsnX2luZGV4J10gPSAoci50aXRsZSB8fCByLm5hbWUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5fcm9sZXNbci5uYW1lXSA9IHI7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJvbGVzID0gdGhpcy5fcm9sZXMuc2xpY2UoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2gudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDE1MCkpLnN1YnNjcmliZSgodjogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gdi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMucm9sZXMgPSB0aGlzLl9yb2xlcy5maWx0ZXIociA9PiByWydfaW5kZXgnXS5pbmRleE9mKHZhbCkgPiAtMSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMucm9sZXMgPSB0aGlzLl9yb2xlcy5zbGljZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqL1xyXG4gIHJlbW92ZVJvbGUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgcm9sZXMgPSB0aGlzLmdyb3Vwcy52YWx1ZTtcclxuICAgIGNvbnN0IGluZGV4ID0gcm9sZXMuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgaWYgKGluZGV4ID49IDApXHJcbiAgICAgIHJvbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmdyb3Vwcy5zZXRWYWx1ZShyb2xlcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpbnBcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBhZGRSb2xlKGlucDogSFRNTElucHV0RWxlbWVudCwgZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvbGVzID0gdGhpcy5ncm91cHMudmFsdWU7XHJcbiAgICBjb25zdCBpZCA9IGV2ZW50Lm9wdGlvbi52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICBpZiAoIXJvbGVzKVxyXG4gICAgICB0aGlzLmdyb3Vwcy5zZXRWYWx1ZShbaWRdKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICByb2xlcy5wdXNoKGlkKTtcclxuICAgICAgdGhpcy5ncm91cHMuc2V0VmFsdWUocm9sZXMpO1xyXG4gICAgfVxyXG4gICAgaW5wLnZhbHVlID0gJyc7XHJcbiAgfVxyXG4gIHNlbmQoKSB7XHJcbiAgICBjb25zdCB7IGdyb3VwcywgZGV2aWNlcywgbWVzc2FnZSwgZHVlIH0gPSB0aGlzLmZvcm0udmFsdWU7XHJcbiAgICB0aGlzLndvcmtpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5fc2VydmljZS5pbnZpdGUodGhpcy5fcmVmLm1vZGVsLm5hbWUsIHsgZ3JvdXBzLCBtZXNzYWdlLCBkZXZpY2VzLCBkdWUgfSkuXHJcbiAgICAgIHN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcHMudG9hc3QoJ0ludml0YXRpb25zU2VudCcpO1xyXG4gICAgICAgIHRoaXMuX3BhbmUuY2xvc2UoKTtcclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3BzLmVycm9yKCk7XHJcbiAgICAgICAgdGhpcy53b3JraW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICB0aXRsZU9mKG5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgcm9sZSA9IHRoaXMuX3JvbGVzW25hbWVdO1xyXG4gICAgcmV0dXJuIHJvbGU/LnRpdGxlIHx8IG5hbWU7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1jaGlwLWxpc3QgI2NoaXBzIFthdHRyLmFyaWEtbGFiZWxdPVwiJydcIiByZXF1aXJlZD5cclxuICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCByIG9mIGdyb3Vwcy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlUm9sZShyKVwiPlxyXG4gICAgICAgIHt7dGl0bGVPZihyKX19XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtY2hpcD5cclxuICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCInUm9sZXMnfHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPXNlYXJjaFxyXG4gICAgICAgICAgICAgI2lucHV0cm9sZVxyXG4gICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJuYW1ldHlwZVwiXHJcbiAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBzXCJcclxuICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIj5cclxuICAgIDwvbWF0LWNoaXAtbGlzdD5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNuYW1ldHlwZT1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJhZGRSb2xlKGlucHV0cm9sZSwgJGV2ZW50KVwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgciBvZiByb2xlc1wiIFt2YWx1ZV09XCJyLm5hbWVcIj5cclxuICAgICAgICB7e3IudGl0bGUgfHwgci5uYW1lfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPHRleHRhcmVhIG1hdElucHV0IGNka1RleHRhcmVhQXV0b3NpemUgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZVwiIHBsYWNlaG9sZGVyPVwie3snTWVzc2FnZSd8IHRyYW5zbGF0ZX19XCIgbWF4bGVuZ3RoPVwiMjAwXCI+PC90ZXh0YXJlYT5cclxuICAgIDxtYXQtaGludCBhbGlnbj1cImVuZFwiPnt7Zm9ybS5jb250cm9sc1snbWVzc2FnZSddLnZhbHVlPy5sZW5ndGggfHwgMH19IC8ge3syMDB9fTwvbWF0LWhpbnQ+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8bWF0LWxhYmVsPnt7J0ludml0ZUR1ZScgfCBsMThufX08L21hdC1sYWJlbD5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkdWVcIlxyXG4gICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImR1ZVBpY2tlclwiIC8+XHJcbiAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIFtmb3JdPVwiZHVlUGlja2VyXCIgbWF0U3VmZml4PjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgPG1hdC1kYXRlcGlja2VyICNkdWVQaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmdldCgnZHVlJykuaGFzRXJyb3IoJ21pbicpXCIgW2lubmVySFRNTF09XCInRGF0ZUluUGFzdEVycid8dHJhbnNsYXRlOihsYWJlbHx8bmFtZSlcIj48L21hdC1lcnJvcj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDxtYXQtc2VsZWN0aW9uLWxpc3QgZm9ybUNvbnRyb2xOYW1lPVwiZGV2aWNlc1wiIG11bHRpcGxlPlxyXG4gICAgPG1hdC1saXN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZCBvZiBkZXZpY2VzXCIgW3ZhbHVlXT1cImRcIj57e2R8dHJhbnNsYXRlfX08L21hdC1saXN0LW9wdGlvbj5cclxuICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cclxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzZW5kKClcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgd29ya2luZ1wiPnt7J1NlbmQnfGwxOG59fTwvYnV0dG9uPlxyXG48L2Zvcm0+XHJcbiJdfQ==
126
+ }] }, { type: i4.PaneRef }]; } });
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnZpdGUuZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZWxlbWVudHMvZm9ybS1pbnZpdGUuZGlhbG9nLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZWxlbWVudHMvZm9ybS1pbnZpdGUuZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTlELE1BQU0sT0FDRSxnQkFBZ0I7SUFpQnRCLFlBQ1UsR0FBZ0IsRUFDaEIsUUFBdUIsRUFDdkIsR0FBa0IsRUFDRyxJQUFpQixFQUN0QyxLQUFjO1FBSmQsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDRyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ3RDLFVBQUssR0FBTCxLQUFLLENBQVM7UUFyQmYsdUJBQWtCLEdBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELFdBQU0sR0FBRyxJQUFJLENBQUMs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LCBFTlRFUiwgU0VNSUNPTE9OIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9rZXljb2Rlc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmXCI7XHJcbmltcG9ydCB7IEludml0ZURldmljZSwgUm9sZSwgU3lzdGVtU2VydmljZSB9IGZyb20gXCIuLi8uLi9zeXN0ZW0uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEZXNpZ25lclJlZiwgbG9jYWxpemVTdHJpbmcgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ2Zvcm0taW52aXRlLmRpYWxvZy5odG1sJyxcclxuICBzdHlsZXM6IFtgZm9ybSB7cGFkZGluZzogOHB4fWBdXHJcbn0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIEZvcm1JbnZpdGVEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BLCBTRU1JQ09MT05dO1xyXG4gIHJlYWRvbmx5IGdyb3VwcyA9IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgcmVhZG9ubHkgZGV2aWNlcyA9IFsnU21zJywgJ0VtYWlsJywgJ0lNJ10gYXMgSW52aXRlRGV2aWNlW107XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIGdyb3VwczogdGhpcy5ncm91cHMsXHJcbiAgICBkZXZpY2VzOiB0aGlzLl9mYi5jb250cm9sPEludml0ZURldmljZVtdPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgIGR1ZTogdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1pbihuZXcgRGF0ZSgpLmdldFRpbWUoKSkpLFxyXG4gICAgb25lVGltZTogZmFsc2UsXHJcbiAgICBtZXNzYWdlOiB0aGlzLl9mYi5jb250cm9sPHN0cmluZz4obnVsbClcclxuICB9KTtcclxuICBwcml2YXRlIF9zZWFyY2hjaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgLyoqIGFsbCBCaXpEb2Mgcm9sZXMgYW5kIHVzZXIgZ3JvdXBzICovXHJcbiAgcHJpdmF0ZSBfcm9sZXM6IFJvbGVbXTtcclxuICByb2xlczogUm9sZVtdO1xyXG4gIHJlYWRvbmx5IHNlYXJjaCA9IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCk7XHJcbiAgd29ya2luZzogYm9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wczogUHJvbXB0U2VydmljZSxcclxuICAgIEBJbmplY3QoRGVzaWduZXJSZWYpIHByaXZhdGUgX3JlZjogRGVzaWduZXJSZWYsXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VydmljZS5yb2xlcygpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fcm9sZXMgPSByLmNvbmNhdCh0aGlzLl9yZWYuZGVzaWduZXIucm9sZXMuZmlsdGVyKHIgPT4gIXIuZGlzYWJsZWQpLlxyXG4gICAgICAgIG1hcChyID0+ICh7XHJcbiAgICAgICAgICBuYW1lOiByLm5hbWUsXHJcbiAgICAgICAgICB0aXRsZTogbG9jYWxpemVTdHJpbmcoci50aXRsZSlcclxuICAgICAgICB9KSkpO1xyXG4gICAgICB0aGlzLl9yb2xlcy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgIHJbJ19pbmRleCddID0gKHIudGl0bGUgfHwgci5uYW1lKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMuX3JvbGVzW3IubmFtZV0gPSByO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5yb2xlcyA9IHRoaXMuX3JvbGVzLnNsaWNlKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2VhcmNoLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgxNTApKS5zdWJzY3JpYmUoKHY6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLl9zZWFyY2hjaGFuZ2UubmV4dCh2KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2VhcmNoY2hhbmdlLnN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5ncm91cHMudmFsdWUgfHwgW107XHJcbiAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gdi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHRoaXMucm9sZXMgPSB0aGlzLl9yb2xlcy5maWx0ZXIociA9PiByWydfaW5kZXgnXS5pbmRleE9mKHZhbCkgPiAtMSAmJiBncm91cHMuaW5kZXhPZihyLm5hbWUpIDwgMCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMucm9sZXMgPSB0aGlzLl9yb2xlcy5maWx0ZXIociA9PiBncm91cHMuaW5kZXhPZihyLm5hbWUpIDwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICovXHJcbiAgcmVtb3ZlUm9sZShpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCByb2xlcyA9IHRoaXMuZ3JvdXBzLnZhbHVlO1xyXG4gICAgY29uc3QgaW5kZXggPSByb2xlcy5pbmRleE9mKGlkKTtcclxuXHJcbiAgICBpZiAoaW5kZXggPj0gMClcclxuICAgICAgcm9sZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuZ3JvdXBzLnNldFZhbHVlKHJvbGVzKTtcclxuICAgIHRoaXMuX3NlYXJjaGNoYW5nZS5uZXh0KG51bGwpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaW5wXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgYWRkUm9sZShpbnA6IEhUTUxJbnB1dEVsZW1lbnQsIGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCByb2xlcyA9IHRoaXMuZ3JvdXBzLnZhbHVlO1xyXG4gICAgY29uc3QgaWQgPSBldmVudC5vcHRpb24udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgaWYgKCFyb2xlcylcclxuICAgICAgdGhpcy5ncm91cHMuc2V0VmFsdWUoW2lkXSk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgcm9sZXMucHVzaChpZCk7XHJcbiAgICAgIHRoaXMuZ3JvdXBzLnNldFZhbHVlKHJvbGVzKTtcclxuICAgIH1cclxuICAgIGlucC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5zZWFyY2guc2V0VmFsdWUobnVsbCk7XHJcbiAgfVxyXG4gIHNlbmQoKSB7XHJcbiAgICBjb25zdCB7IGdyb3VwcywgZGV2aWNlcywgbWVzc2FnZSwgZHVlIH0gPSB0aGlzLmZvcm0udmFsdWU7XHJcbiAgICB0aGlzLndvcmtpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5fc2VydmljZS5pbnZpdGUodGhpcy5fcmVmLm1vZGVsLm5hbWUsIHsgZ3JvdXBzLCBtZXNzYWdlLCBkZXZpY2VzLCBkdWUgfSkuXHJcbiAgICAgIHN1YnNjcmliZShlID0+IHtcclxuICAgICAgICB0aGlzLl9wcy50b2FzdChlLm9rID8gJ0ludml0YXRpb25zU2VudCcgOiAnTm9JbnZpdGF0aW9uc1NlbnQnLCBlLm9rKTtcclxuICAgICAgICB0aGlzLl9wYW5lLmNsb3NlKCk7XHJcbiAgICAgIH0sICgpID0+IHtcclxuICAgICAgICB0aGlzLl9wcy5lcnJvcigpO1xyXG4gICAgICAgIHRoaXMud29ya2luZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgdGl0bGVPZihuYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHJvbGUgPSB0aGlzLl9yb2xlc1tuYW1lXTtcclxuICAgIHJldHVybiByb2xlPy50aXRsZSB8fCBuYW1lO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImNvbHVtblwiPlxyXG4gIDxtYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtY2hpcC1saXN0ICNjaGlwcyBbYXR0ci5hcmlhLWxhYmVsXT1cIicnXCIgbXVsdGlwbGUgcmVxdWlyZWQ+XHJcbiAgICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgciBvZiBncm91cHMudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlUm9sZShyKVwiPlxyXG4gICAgICAgIHt7dGl0bGVPZihyKX19XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtY2hpcD5cclxuICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCInUm9sZXMnfHRyYW5zbGF0ZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPXNlYXJjaFxyXG4gICAgICAgICAgICAgI2lucHV0cm9sZVxyXG4gICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJyb2xlbmFtZVwiXHJcbiAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBzXCJcclxuICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIj5cclxuICAgIDwvbWF0LWNoaXAtbGlzdD5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNyb2xlbmFtZT1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJhZGRSb2xlKGlucHV0cm9sZSwgJGV2ZW50KVwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgciBvZiByb2xlc1wiIFt2YWx1ZV09XCJyLm5hbWVcIj5cclxuICAgICAgICB7e3IudGl0bGUgfHwgci5uYW1lfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uZ2V0KCdncm91cHMnKS5oYXNFcnJvcigncmVxdWlyZWQnKVwiIFtpbm5lckhUTUxdPVwiJ1JlcXVpcmVkRXJyJ3x0cmFuc2xhdGU6KCdSb2xlcyd8dHJhbnNsYXRlKVwiPjwvbWF0LWVycm9yPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPGJpemRvYy1sb2NhbGl6ZWQtc3RyaW5nIGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VcIiBbcGxhY2Vob2xkZXJdPVwiJ01lc3NhZ2UnfHRyYW5zbGF0ZVwiIHJlcXVpcmVkIGNsYXNzPVwiZmxleCBjb2x1bW5cIiBtYXhsZW5ndGg9XCI0MDBcIj48L2JpemRvYy1sb2NhbGl6ZWQtc3RyaW5nPlxyXG4gIDxtYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtbGFiZWw+e3snSW52aXRlRHVlJyB8IGwxOG59fTwvbWF0LWxhYmVsPlxyXG4gICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImR1ZVwiXHJcbiAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZHVlUGlja2VyXCIgLz5cclxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2Zvcl09XCJkdWVQaWNrZXJcIiBtYXRTdWZmaXg+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICA8bWF0LWRhdGVwaWNrZXIgI2R1ZVBpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uZ2V0KCdkdWUnKS5oYXNFcnJvcignbWluJylcIiBbaW5uZXJIVE1MXT1cIidEYXRlSW5QYXN0RXJyJ3x0cmFuc2xhdGU6KGxhYmVsfHxuYW1lKVwiPjwvbWF0LWVycm9yPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJvbmVUaW1lXCI+e3snT25lVGltZSd8bDE4bn19PC9tYXQtY2hlY2tib3g+XHJcbiAgPG1hdC1zZWxlY3Rpb24tbGlzdCBmb3JtQ29udHJvbE5hbWU9XCJkZXZpY2VzXCIgbXVsdGlwbGU+XHJcbiAgICA8bWF0LWxpc3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBkIG9mIGRldmljZXNcIiBbdmFsdWVdPVwiZFwiPnt7ZHx0cmFuc2xhdGV9fTwvbWF0LWxpc3Qtb3B0aW9uPlxyXG4gIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxyXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNlbmQoKVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCB3b3JraW5nXCI+e3snU2VuZCd8bDE4bn19PC9idXR0b24+XHJcbjwvZm9ybT5cclxuIl19