@smartbit4all/ng-client 6.0.35 → 7.0.1

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 (1007) hide show
  1. package/MIGRATION-7.0.md +1722 -0
  2. package/README.md +199 -386
  3. package/WIDGETS.md +206 -0
  4. package/fesm2022/smartbit4all-ng-client.mjs +15013 -17559
  5. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  6. package/package.json +15 -18
  7. package/smartbit4all-ng-client-7.0.1.tgz +0 -0
  8. package/types/smartbit4all-ng-client.d.ts +10350 -0
  9. package/esm2022/lib/component-factory-service/component-factory-service.module.mjs +0 -17
  10. package/esm2022/lib/component-factory-service/component-factory-service.service.mjs +0 -35
  11. package/esm2022/lib/component-factory-service/projects.mjs +0 -6
  12. package/esm2022/lib/session/api/api/api.mjs +0 -4
  13. package/esm2022/lib/session/api/api/session.service.mjs +0 -306
  14. package/esm2022/lib/session/api/configuration.mjs +0 -91
  15. package/esm2022/lib/session/api/encoder.mjs +0 -19
  16. package/esm2022/lib/session/api/index.mjs +0 -3
  17. package/esm2022/lib/session/api/model/accountInfo.mjs +0 -13
  18. package/esm2022/lib/session/api/model/apiError.mjs +0 -13
  19. package/esm2022/lib/session/api/model/authenticationProviderData.mjs +0 -13
  20. package/esm2022/lib/session/api/model/getAuthenticationProvidersResponse.mjs +0 -2
  21. package/esm2022/lib/session/api/model/models.mjs +0 -9
  22. package/esm2022/lib/session/api/model/refreshSessionRequest.mjs +0 -13
  23. package/esm2022/lib/session/api/model/session.mjs +0 -2
  24. package/esm2022/lib/session/api/model/sessionInfoData.mjs +0 -2
  25. package/esm2022/lib/session/api/model/userActivityLog.mjs +0 -13
  26. package/esm2022/lib/session/api/param.mjs +0 -2
  27. package/esm2022/lib/session/api/variables.mjs +0 -9
  28. package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +0 -225
  29. package/esm2022/lib/session/projects.mjs +0 -12
  30. package/esm2022/lib/session/smart-backend-bootstrap.config.mjs +0 -2
  31. package/esm2022/lib/session/smart-backend-bootstrap.service.mjs +0 -217
  32. package/esm2022/lib/session/smart-default-error-ui.service.mjs +0 -134
  33. package/esm2022/lib/session/smart-error-catching.interceptor.mjs +0 -109
  34. package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +0 -44
  35. package/esm2022/lib/session/smart-session-handler.service.mjs +0 -7
  36. package/esm2022/lib/session/smart-session.module.mjs +0 -58
  37. package/esm2022/lib/session/smart-session.service.mjs +0 -309
  38. package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +0 -59
  39. package/esm2022/lib/shared/projects.mjs +0 -4
  40. package/esm2022/lib/shared/shared.module.mjs +0 -19
  41. package/esm2022/lib/shared/smart-tooltip.directive.mjs +0 -58
  42. package/esm2022/lib/shared/smarttable.date-pipe.mjs +0 -43
  43. package/esm2022/lib/smart-client/projects.mjs +0 -4
  44. package/esm2022/lib/smart-client/smart-component-api-client.mjs +0 -935
  45. package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +0 -79
  46. package/esm2022/lib/smart-client/smart.component.mjs +0 -88
  47. package/esm2022/lib/smart-client/smart.service.mjs +0 -71
  48. package/esm2022/lib/smart-component-layout/api/api/api.mjs +0 -4
  49. package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +0 -133
  50. package/esm2022/lib/smart-component-layout/api/api.module.mjs +0 -40
  51. package/esm2022/lib/smart-component-layout/api/configuration.mjs +0 -91
  52. package/esm2022/lib/smart-component-layout/api/encoder.mjs +0 -19
  53. package/esm2022/lib/smart-component-layout/api/index.mjs +0 -7
  54. package/esm2022/lib/smart-component-layout/api/model/componentType.mjs +0 -18
  55. package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +0 -22
  56. package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +0 -2
  57. package/esm2022/lib/smart-component-layout/api/model/layoutDirection.mjs +0 -17
  58. package/esm2022/lib/smart-component-layout/api/model/models.mjs +0 -10
  59. package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +0 -2
  60. package/esm2022/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +0 -2
  61. package/esm2022/lib/smart-component-layout/api/model/toolbarAlignment.mjs +0 -17
  62. package/esm2022/lib/smart-component-layout/api/model/toolbarDirection.mjs +0 -17
  63. package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +0 -2
  64. package/esm2022/lib/smart-component-layout/api/param.mjs +0 -2
  65. package/esm2022/lib/smart-component-layout/api/variables.mjs +0 -9
  66. package/esm2022/lib/smart-component-layout/projects.mjs +0 -8
  67. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +0 -169
  68. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +0 -438
  69. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +0 -57
  70. package/esm2022/lib/smart-diagram/api/api/api.mjs +0 -4
  71. package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +0 -141
  72. package/esm2022/lib/smart-diagram/api/api.module.mjs +0 -40
  73. package/esm2022/lib/smart-diagram/api/configuration.mjs +0 -91
  74. package/esm2022/lib/smart-diagram/api/encoder.mjs +0 -19
  75. package/esm2022/lib/smart-diagram/api/index.mjs +0 -7
  76. package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +0 -13
  77. package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +0 -2
  78. package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +0 -13
  79. package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +0 -2
  80. package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +0 -2
  81. package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +0 -2
  82. package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +0 -2
  83. package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +0 -18
  84. package/esm2022/lib/smart-diagram/api/model/labelText.mjs +0 -2
  85. package/esm2022/lib/smart-diagram/api/model/models.mjs +0 -10
  86. package/esm2022/lib/smart-diagram/api/param.mjs +0 -2
  87. package/esm2022/lib/smart-diagram/api/variables.mjs +0 -9
  88. package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +0 -312
  89. package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +0 -359
  90. package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +0 -40
  91. package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +0 -10
  92. package/esm2022/lib/smart-diagram/projects.mjs +0 -5
  93. package/esm2022/lib/smart-dialog/projects.mjs +0 -8
  94. package/esm2022/lib/smart-dialog/smartdialog.component.mjs +0 -54
  95. package/esm2022/lib/smart-dialog/smartdialog.model.mjs +0 -16
  96. package/esm2022/lib/smart-dialog/smartdialog.module.mjs +0 -46
  97. package/esm2022/lib/smart-dialog/smartdialog.service.mjs +0 -86
  98. package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +0 -101
  99. package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +0 -12
  100. package/esm2022/lib/smart-expandable-section/projects.mjs +0 -8
  101. package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +0 -57
  102. package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +0 -14
  103. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +0 -17
  104. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +0 -2
  105. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +0 -8
  106. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +0 -2
  107. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +0 -2
  108. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +0 -20
  109. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +0 -2
  110. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +0 -2
  111. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +0 -28
  112. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +0 -2
  113. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +0 -2
  114. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +0 -32
  115. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +0 -18
  116. package/esm2022/lib/smart-filter/api/filter/model/model.mjs +0 -16
  117. package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +0 -2
  118. package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +0 -13
  119. package/esm2022/lib/smart-filter/api/value/model/value.mjs +0 -13
  120. package/esm2022/lib/smart-filter/projects.mjs +0 -9
  121. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +0 -14
  122. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +0 -166
  123. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +0 -45
  124. package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +0 -36
  125. package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +0 -31
  126. package/esm2022/lib/smart-filter/smart-filter.model.mjs +0 -13
  127. package/esm2022/lib/smart-filter/smart-filter.module.mjs +0 -33
  128. package/esm2022/lib/smart-filter-editor/api/api/api.mjs +0 -4
  129. package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +0 -198
  130. package/esm2022/lib/smart-filter-editor/api/api.module.mjs +0 -40
  131. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +0 -91
  132. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +0 -19
  133. package/esm2022/lib/smart-filter-editor/api/index.mjs +0 -7
  134. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +0 -17
  135. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilder.mjs +0 -2
  136. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +0 -13
  137. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +0 -2
  138. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +0 -8
  139. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +0 -2
  140. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +0 -7
  141. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +0 -2
  142. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +0 -20
  143. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +0 -2
  144. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +0 -2
  145. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +0 -2
  146. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +0 -28
  147. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +0 -2
  148. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +0 -2
  149. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +0 -32
  150. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +0 -19
  151. package/esm2022/lib/smart-filter-editor/api/model/models.mjs +0 -20
  152. package/esm2022/lib/smart-filter-editor/api/model/searchPageConfig.mjs +0 -2
  153. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +0 -17
  154. package/esm2022/lib/smart-filter-editor/api/param.mjs +0 -2
  155. package/esm2022/lib/smart-filter-editor/api/variables.mjs +0 -9
  156. package/esm2022/lib/smart-filter-editor/filter-utils.mjs +0 -3
  157. package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +0 -15
  158. package/esm2022/lib/smart-filter-editor/project.mjs +0 -11
  159. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/advanced-relation-button/advanced-relation-button.component.mjs +0 -27
  160. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/advanced-smart-filter-expression-item/advanced-smart-filter-expression-item.component.mjs +0 -32
  161. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/expression-editor-dialog/expression-editor-dialog.component.mjs +0 -29
  162. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/expression-editor-dialog/expression-editor-dialog.service.mjs +0 -50
  163. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +0 -72
  164. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +0 -52
  165. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +0 -329
  166. package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +0 -2
  167. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +0 -84
  168. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +0 -78
  169. package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +0 -24
  170. package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +0 -57
  171. package/esm2022/lib/smart-form/api/api/api.mjs +0 -4
  172. package/esm2022/lib/smart-form/api/api/default.service.mjs +0 -133
  173. package/esm2022/lib/smart-form/api/api.module.mjs +0 -40
  174. package/esm2022/lib/smart-form/api/configuration.mjs +0 -91
  175. package/esm2022/lib/smart-form/api/encoder.mjs +0 -19
  176. package/esm2022/lib/smart-form/api/index.mjs +0 -7
  177. package/esm2022/lib/smart-form/api/model/dateFieldProperties.mjs +0 -13
  178. package/esm2022/lib/smart-form/api/model/divProperties.mjs +0 -2
  179. package/esm2022/lib/smart-form/api/model/fileUploaderProperties.mjs +0 -2
  180. package/esm2022/lib/smart-form/api/model/imageProperties.mjs +0 -2
  181. package/esm2022/lib/smart-form/api/model/models.mjs +0 -20
  182. package/esm2022/lib/smart-form/api/model/multiFileUploaderProperties.mjs +0 -2
  183. package/esm2022/lib/smart-form/api/model/propertyMapping.mjs +0 -13
  184. package/esm2022/lib/smart-form/api/model/recordingUploaderProperties.mjs +0 -7
  185. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +0 -14
  186. package/esm2022/lib/smart-form/api/model/smartFormInputMode.mjs +0 -22
  187. package/esm2022/lib/smart-form/api/model/smartFormWidgetDirection.mjs +0 -17
  188. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +0 -49
  189. package/esm2022/lib/smart-form/api/model/smartLayoutDefinition.mjs +0 -2
  190. package/esm2022/lib/smart-form/api/model/smartMatrixModel.mjs +0 -2
  191. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +0 -2
  192. package/esm2022/lib/smart-form/api/model/smartWidgetHint.mjs +0 -18
  193. package/esm2022/lib/smart-form/api/model/sortDefinition.mjs +0 -13
  194. package/esm2022/lib/smart-form/api/model/textBoxProperties.mjs +0 -13
  195. package/esm2022/lib/smart-form/api/model/textFieldProperties.mjs +0 -13
  196. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +0 -21
  197. package/esm2022/lib/smart-form/api/param.mjs +0 -2
  198. package/esm2022/lib/smart-form/api/variables.mjs +0 -9
  199. package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +0 -20
  200. package/esm2022/lib/smart-form/projects.mjs +0 -18
  201. package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +0 -754
  202. package/esm2022/lib/smart-form/services/smartform.service.mjs +0 -683
  203. package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +0 -15
  204. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +0 -193
  205. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +0 -2
  206. package/esm2022/lib/smart-form/smartform.component.mjs +0 -190
  207. package/esm2022/lib/smart-form/smartform.form-model.mjs +0 -2
  208. package/esm2022/lib/smart-form/smartform.model.mjs +0 -38
  209. package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +0 -179
  210. package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +0 -83
  211. package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +0 -170
  212. package/esm2022/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.mjs +0 -151
  213. package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +0 -35
  214. package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +0 -79
  215. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +0 -1050
  216. package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +0 -78
  217. package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +0 -31
  218. package/esm2022/lib/smart-generic-pages/acl-editing-view/acl-editing-view.component.mjs +0 -98
  219. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/aCL.mjs +0 -2
  220. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/aCLEntry.mjs +0 -18
  221. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/objectValidationSeverity.mjs +0 -19
  222. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/subject.mjs +0 -13
  223. package/esm2022/lib/smart-generic-pages/api/platform/api-default/objectHistoryRangeData.mjs +0 -2
  224. package/esm2022/lib/smart-generic-pages/api/platform/searchpage/model/searchPageModel.mjs +0 -2
  225. package/esm2022/lib/smart-generic-pages/api/platform/subjectselector/model/subjectSelectorPageModel.mjs +0 -13
  226. package/esm2022/lib/smart-generic-pages/api/platform/validation/model/validationItem.mjs +0 -2
  227. package/esm2022/lib/smart-generic-pages/api/platform/validation/model/validationResultPageModel.mjs +0 -2
  228. package/esm2022/lib/smart-generic-pages/generic-page/generic-page.component.mjs +0 -54
  229. package/esm2022/lib/smart-generic-pages/invalid-smartlink/invalid-smartlink.component.mjs +0 -40
  230. package/esm2022/lib/smart-generic-pages/no-permission-page/no-permission-page.component.mjs +0 -40
  231. package/esm2022/lib/smart-generic-pages/projects.mjs +0 -13
  232. package/esm2022/lib/smart-generic-pages/search-page/search-page.component.mjs +0 -81
  233. package/esm2022/lib/smart-generic-pages/smart-generic-pages.module.mjs +0 -116
  234. package/esm2022/lib/smart-generic-pages/subject-selector/subject-selector.component.mjs +0 -78
  235. package/esm2022/lib/smart-generic-pages/validation-result-page/validation-result-page.component.mjs +0 -93
  236. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +0 -4
  237. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +0 -514
  238. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +0 -40
  239. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +0 -91
  240. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +0 -19
  241. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +0 -7
  242. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +0 -17
  243. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +0 -2
  244. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +0 -20
  245. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +0 -2
  246. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +0 -2
  247. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +0 -2
  248. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +0 -2
  249. package/esm2022/lib/smart-grid/api/grid-api/model/gridRowLayoutDescriptor.mjs +0 -2
  250. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +0 -13
  251. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +0 -18
  252. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +0 -17
  253. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +0 -2
  254. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +0 -2
  255. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +0 -2
  256. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +0 -8
  257. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +0 -16
  258. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +0 -2
  259. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +0 -9
  260. package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +0 -20
  261. package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +0 -47
  262. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +0 -92
  263. package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +0 -200
  264. package/esm2022/lib/smart-grid/models/model.mjs +0 -29
  265. package/esm2022/lib/smart-grid/projects.mjs +0 -9
  266. package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +0 -76
  267. package/esm2022/lib/smart-grid/smart-grid.component.mjs +0 -1074
  268. package/esm2022/lib/smart-grid/smart-grid.module.mjs +0 -103
  269. package/esm2022/lib/smart-grid/smart-grid.service.mjs +0 -92
  270. package/esm2022/lib/smart-icon/projects.mjs +0 -9
  271. package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +0 -95
  272. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +0 -33
  273. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +0 -37
  274. package/esm2022/lib/smart-icon/smart-icon.module.mjs +0 -26
  275. package/esm2022/lib/smart-icon/smart-icon.service.mjs +0 -93
  276. package/esm2022/lib/smart-map/abstract-map.mjs +0 -112
  277. package/esm2022/lib/smart-map/api/api/api.mjs +0 -4
  278. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +0 -312
  279. package/esm2022/lib/smart-map/api/api.module.mjs +0 -40
  280. package/esm2022/lib/smart-map/api/configuration.mjs +0 -91
  281. package/esm2022/lib/smart-map/api/encoder.mjs +0 -19
  282. package/esm2022/lib/smart-map/api/index.mjs +0 -7
  283. package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +0 -13
  284. package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +0 -2
  285. package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +0 -2
  286. package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +0 -17
  287. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +0 -2
  288. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +0 -19
  289. package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +0 -2
  290. package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +0 -2
  291. package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +0 -2
  292. package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +0 -18
  293. package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +0 -2
  294. package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +0 -2
  295. package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +0 -2
  296. package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +0 -2
  297. package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +0 -17
  298. package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +0 -18
  299. package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +0 -2
  300. package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +0 -17
  301. package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +0 -2
  302. package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +0 -2
  303. package/esm2022/lib/smart-map/api/model/models.mjs +0 -21
  304. package/esm2022/lib/smart-map/api/param.mjs +0 -2
  305. package/esm2022/lib/smart-map/api/variables.mjs +0 -9
  306. package/esm2022/lib/smart-map/api-default/api-default.mjs +0 -2
  307. package/esm2022/lib/smart-map/impl/google-map.mjs +0 -224
  308. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +0 -422
  309. package/esm2022/lib/smart-map/projects.mjs +0 -9
  310. package/esm2022/lib/smart-map/smart-map.component.mjs +0 -222
  311. package/esm2022/lib/smart-map/smart-map.module.mjs +0 -22
  312. package/esm2022/lib/smart-map/smart-map.types.mjs +0 -2
  313. package/esm2022/lib/smart-navbar/projects.mjs +0 -8
  314. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +0 -61
  315. package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +0 -6
  316. package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +0 -63
  317. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +0 -14
  318. package/esm2022/lib/smart-navigation/projects.mjs +0 -6
  319. package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +0 -2
  320. package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +0 -18
  321. package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +0 -27
  322. package/esm2022/lib/smart-ng-client.module.mjs +0 -131
  323. package/esm2022/lib/smart-ng-client.service.mjs +0 -19
  324. package/esm2022/lib/smart-subject/projects.mjs +0 -5
  325. package/esm2022/lib/smart-subject/smart-subject.mjs +0 -21
  326. package/esm2022/lib/smart-tab-group/projects.mjs +0 -5
  327. package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +0 -22
  328. package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +0 -43
  329. package/esm2022/lib/smart-table/components/loading/loading.component.mjs +0 -15
  330. package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +0 -52
  331. package/esm2022/lib/smart-table/projects.mjs +0 -8
  332. package/esm2022/lib/smart-table/smarttable.component.mjs +0 -98
  333. package/esm2022/lib/smart-table/smarttable.model.mjs +0 -177
  334. package/esm2022/lib/smart-table/smarttable.module.mjs +0 -109
  335. package/esm2022/lib/smart-table/smarttable.service.mjs +0 -14
  336. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +0 -40
  337. package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +0 -23
  338. package/esm2022/lib/smart-table/tables/table.mjs +0 -614
  339. package/esm2022/lib/smart-tree/projects.mjs +0 -9
  340. package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +0 -292
  341. package/esm2022/lib/smart-tree/smarttree.component.mjs +0 -188
  342. package/esm2022/lib/smart-tree/smarttree.model.mjs +0 -7
  343. package/esm2022/lib/smart-tree/smarttree.module.mjs +0 -64
  344. package/esm2022/lib/smart-tree/smarttree.node.model.mjs +0 -6
  345. package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +0 -2
  346. package/esm2022/lib/smart-tree/smarttree.service.mjs +0 -47
  347. package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +0 -1190
  348. package/esm2022/lib/smart-tree/tree-api/configuration.mjs +0 -91
  349. package/esm2022/lib/smart-tree/tree-api/encoder.mjs +0 -19
  350. package/esm2022/lib/smart-tree/tree-api/param.mjs +0 -2
  351. package/esm2022/lib/smart-tree/tree-api/variables.mjs +0 -9
  352. package/esm2022/lib/smart-validation/named-validator.service.mjs +0 -115
  353. package/esm2022/lib/smart-validation/projects.mjs +0 -4
  354. package/esm2022/lib/smart-validation/smart-validation.module.mjs +0 -24
  355. package/esm2022/lib/smart-validation/smart-validation.types.mjs +0 -4
  356. package/esm2022/lib/theme/theme.service.mjs +0 -48
  357. package/esm2022/lib/view-context/api/api/api.mjs +0 -4
  358. package/esm2022/lib/view-context/api/api/view.service.mjs +0 -1113
  359. package/esm2022/lib/view-context/api/api-default/binaryContentData.mjs +0 -2
  360. package/esm2022/lib/view-context/api/api-default/binaryData.mjs +0 -2
  361. package/esm2022/lib/view-context/api/api-default/invocationError.mjs +0 -2
  362. package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +0 -2
  363. package/esm2022/lib/view-context/api/api-default/invocationRun.mjs +0 -2
  364. package/esm2022/lib/view-context/api/api.module.mjs +0 -40
  365. package/esm2022/lib/view-context/api/configuration.mjs +0 -91
  366. package/esm2022/lib/view-context/api/encoder.mjs +0 -19
  367. package/esm2022/lib/view-context/api/index.mjs +0 -7
  368. package/esm2022/lib/view-context/api/model/backgroundProcessInfo.mjs +0 -2
  369. package/esm2022/lib/view-context/api/model/badgeDescriptor.mjs +0 -13
  370. package/esm2022/lib/view-context/api/model/clipboardData.mjs +0 -13
  371. package/esm2022/lib/view-context/api/model/closeResult.mjs +0 -18
  372. package/esm2022/lib/view-context/api/model/componentConstraint.mjs +0 -2
  373. package/esm2022/lib/view-context/api/model/componentModel.mjs +0 -2
  374. package/esm2022/lib/view-context/api/model/componentModelChange.mjs +0 -13
  375. package/esm2022/lib/view-context/api/model/dataChange.mjs +0 -2
  376. package/esm2022/lib/view-context/api/model/dataChangeEvent.mjs +0 -2
  377. package/esm2022/lib/view-context/api/model/dataChangeKind.mjs +0 -21
  378. package/esm2022/lib/view-context/api/model/deviceInfo.mjs +0 -13
  379. package/esm2022/lib/view-context/api/model/downloadedFile.mjs +0 -13
  380. package/esm2022/lib/view-context/api/model/iconPosition.mjs +0 -20
  381. package/esm2022/lib/view-context/api/model/imageResource.mjs +0 -8
  382. package/esm2022/lib/view-context/api/model/link.mjs +0 -20
  383. package/esm2022/lib/view-context/api/model/menuDescriptor.mjs +0 -2
  384. package/esm2022/lib/view-context/api/model/menuOpenDirection.mjs +0 -23
  385. package/esm2022/lib/view-context/api/model/menuTriggerType.mjs +0 -17
  386. package/esm2022/lib/view-context/api/model/messageData.mjs +0 -2
  387. package/esm2022/lib/view-context/api/model/messageOption.mjs +0 -2
  388. package/esm2022/lib/view-context/api/model/messageOptionType.mjs +0 -18
  389. package/esm2022/lib/view-context/api/model/messageResult.mjs +0 -2
  390. package/esm2022/lib/view-context/api/model/messageTextType.mjs +0 -17
  391. package/esm2022/lib/view-context/api/model/messageType.mjs +0 -19
  392. package/esm2022/lib/view-context/api/model/models.mjs +0 -71
  393. package/esm2022/lib/view-context/api/model/multiComboBoxElement.mjs +0 -13
  394. package/esm2022/lib/view-context/api/model/multiComboBoxModel.mjs +0 -2
  395. package/esm2022/lib/view-context/api/model/namedValidator.mjs +0 -19
  396. package/esm2022/lib/view-context/api/model/openPendingData.mjs +0 -2
  397. package/esm2022/lib/view-context/api/model/publishedViewData.mjs +0 -13
  398. package/esm2022/lib/view-context/api/model/serverRequestExecutionStat.mjs +0 -2
  399. package/esm2022/lib/view-context/api/model/serverRequestTrack.mjs +0 -2
  400. package/esm2022/lib/view-context/api/model/serverRequestType.mjs +0 -24
  401. package/esm2022/lib/view-context/api/model/shellProperty.mjs +0 -13
  402. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +0 -2
  403. package/esm2022/lib/view-context/api/model/smartLinkMigrationStatus.mjs +0 -8
  404. package/esm2022/lib/view-context/api/model/statisticRecord.mjs +0 -13
  405. package/esm2022/lib/view-context/api/model/style.mjs +0 -13
  406. package/esm2022/lib/view-context/api/model/themeDefinition.mjs +0 -2
  407. package/esm2022/lib/view-context/api/model/themeDescriptor.mjs +0 -2
  408. package/esm2022/lib/view-context/api/model/themeShellDescriptor.mjs +0 -2
  409. package/esm2022/lib/view-context/api/model/uiAction.mjs +0 -2
  410. package/esm2022/lib/view-context/api/model/uiActionButtonDescriptor.mjs +0 -2
  411. package/esm2022/lib/view-context/api/model/uiActionButtonType.mjs +0 -27
  412. package/esm2022/lib/view-context/api/model/uiActionConstraint.mjs +0 -13
  413. package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +0 -2
  414. package/esm2022/lib/view-context/api/model/uiActionDefinitionEntry.mjs +0 -2
  415. package/esm2022/lib/view-context/api/model/uiActionDescriptor.mjs +0 -2
  416. package/esm2022/lib/view-context/api/model/uiActionDialogDescriptor.mjs +0 -2
  417. package/esm2022/lib/view-context/api/model/uiActionFeedbackType.mjs +0 -20
  418. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +0 -21
  419. package/esm2022/lib/view-context/api/model/uiActionRequest.mjs +0 -13
  420. package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +0 -13
  421. package/esm2022/lib/view-context/api/model/uiActionTooltip.mjs +0 -22
  422. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +0 -2
  423. package/esm2022/lib/view-context/api/model/uploadWidgetType.mjs +0 -18
  424. package/esm2022/lib/view-context/api/model/uploadedFile.mjs +0 -2
  425. package/esm2022/lib/view-context/api/model/valueSet.mjs +0 -2
  426. package/esm2022/lib/view-context/api/model/view.mjs +0 -2
  427. package/esm2022/lib/view-context/api/model/viewApiError.mjs +0 -13
  428. package/esm2022/lib/view-context/api/model/viewConstraint.mjs +0 -2
  429. package/esm2022/lib/view-context/api/model/viewContext.mjs +0 -2
  430. package/esm2022/lib/view-context/api/model/viewContextChange.mjs +0 -2
  431. package/esm2022/lib/view-context/api/model/viewContextData.mjs +0 -2
  432. package/esm2022/lib/view-context/api/model/viewContextUpdate.mjs +0 -2
  433. package/esm2022/lib/view-context/api/model/viewData.mjs +0 -2
  434. package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +0 -8
  435. package/esm2022/lib/view-context/api/model/viewPlaceholder.mjs +0 -13
  436. package/esm2022/lib/view-context/api/model/viewState.mjs +0 -22
  437. package/esm2022/lib/view-context/api/model/viewStateUpdate.mjs +0 -2
  438. package/esm2022/lib/view-context/api/model/viewType.mjs +0 -18
  439. package/esm2022/lib/view-context/api/param.mjs +0 -2
  440. package/esm2022/lib/view-context/api/variables.mjs +0 -9
  441. package/esm2022/lib/view-context/default-view-components.token.mjs +0 -9
  442. package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +0 -20
  443. package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +0 -93
  444. package/esm2022/lib/view-context/projects.mjs +0 -30
  445. package/esm2022/lib/view-context/property-definition-data.mjs +0 -2
  446. package/esm2022/lib/view-context/reuse-router-slot.token.mjs +0 -4
  447. package/esm2022/lib/view-context/smart-embedded-slot.directive.mjs +0 -57
  448. package/esm2022/lib/view-context/smart-ui-action/components/menu/click/menu.component.mjs +0 -254
  449. package/esm2022/lib/view-context/smart-ui-action/components/menu/hover/hover-menu.component.mjs +0 -256
  450. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +0 -62
  451. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +0 -29
  452. package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +0 -30
  453. package/esm2022/lib/view-context/smart-ui-action/components/theme-selector/theme-selector.component.mjs +0 -35
  454. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +0 -198
  455. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +0 -95
  456. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +0 -134
  457. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +0 -12
  458. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +0 -256
  459. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +0 -77
  460. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +0 -54
  461. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +0 -60
  462. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +0 -106
  463. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +0 -60
  464. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +0 -132
  465. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +0 -58
  466. package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +0 -35
  467. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/button-icon-placeholder.mjs +0 -7
  468. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +0 -258
  469. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +0 -349
  470. package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +0 -185
  471. package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +0 -7
  472. package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +0 -250
  473. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +0 -77
  474. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +0 -35
  475. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +0 -74
  476. package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +0 -63
  477. package/esm2022/lib/view-context/smart-view-context.model.mjs +0 -2
  478. package/esm2022/lib/view-context/smart-view-context.module.mjs +0 -405
  479. package/esm2022/lib/view-context/smart-view-context.service.mjs +0 -1079
  480. package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +0 -41
  481. package/esm2022/lib/view-context/utility/componentLibrary.mjs +0 -9
  482. package/esm2022/lib/view-context/utility/smart-object-utility.mjs +0 -44
  483. package/esm2022/lib/view-context/utility/smart-style-utility.mjs +0 -68
  484. package/esm2022/lib/view-context/value-api/api/api.mjs +0 -4
  485. package/esm2022/lib/view-context/value-api/api/value.service.mjs +0 -138
  486. package/esm2022/lib/view-context/value-api/api.module.mjs +0 -40
  487. package/esm2022/lib/view-context/value-api/configuration.mjs +0 -91
  488. package/esm2022/lib/view-context/value-api/encoder.mjs +0 -19
  489. package/esm2022/lib/view-context/value-api/index.mjs +0 -7
  490. package/esm2022/lib/view-context/value-api/model/genericValue.mjs +0 -13
  491. package/esm2022/lib/view-context/value-api/model/models.mjs +0 -11
  492. package/esm2022/lib/view-context/value-api/model/value.mjs +0 -13
  493. package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +0 -2
  494. package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +0 -2
  495. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +0 -2
  496. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +0 -13
  497. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +0 -24
  498. package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +0 -2
  499. package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +0 -2
  500. package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +0 -19
  501. package/esm2022/lib/view-context/value-api/param.mjs +0 -2
  502. package/esm2022/lib/view-context/value-api/variables.mjs +0 -9
  503. package/esm2022/lib/view-context/view-handler-resolution.mjs +0 -21
  504. package/esm2022/lib/view-context/view-op.mjs +0 -41
  505. package/esm2022/lib/view-context/view-slot-resolution.mjs +0 -28
  506. package/esm2022/projects.mjs +0 -31
  507. package/esm2022/smartbit4all-ng-client.mjs +0 -5
  508. package/index.d.ts +0 -5
  509. package/lib/component-factory-service/component-factory-service.module.d.ts +0 -6
  510. package/lib/component-factory-service/component-factory-service.service.d.ts +0 -13
  511. package/lib/component-factory-service/projects.d.ts +0 -2
  512. package/lib/session/api/api/api.d.ts +0 -3
  513. package/lib/session/api/api/session.service.d.ts +0 -107
  514. package/lib/session/api/configuration.d.ts +0 -104
  515. package/lib/session/api/encoder.d.ts +0 -11
  516. package/lib/session/api/index.d.ts +0 -2
  517. package/lib/session/api/model/accountInfo.d.ts +0 -24
  518. package/lib/session/api/model/apiError.d.ts +0 -15
  519. package/lib/session/api/model/authenticationProviderData.d.ts +0 -17
  520. package/lib/session/api/model/getAuthenticationProvidersResponse.d.ts +0 -15
  521. package/lib/session/api/model/models.d.ts +0 -8
  522. package/lib/session/api/model/refreshSessionRequest.d.ts +0 -14
  523. package/lib/session/api/model/session.d.ts +0 -32
  524. package/lib/session/api/model/sessionInfoData.d.ts +0 -26
  525. package/lib/session/api/model/userActivityLog.d.ts +0 -33
  526. package/lib/session/api/param.d.ts +0 -37
  527. package/lib/session/api/variables.d.ts +0 -8
  528. package/lib/session/cookie-service/smart-cookie.service.d.ts +0 -129
  529. package/lib/session/projects.d.ts +0 -8
  530. package/lib/session/smart-backend-bootstrap.config.d.ts +0 -73
  531. package/lib/session/smart-backend-bootstrap.service.d.ts +0 -57
  532. package/lib/session/smart-default-error-ui.service.d.ts +0 -90
  533. package/lib/session/smart-error-catching.interceptor.d.ts +0 -21
  534. package/lib/session/smart-header-maintainer.interceptor.d.ts +0 -11
  535. package/lib/session/smart-session-handler.service.d.ts +0 -22
  536. package/lib/session/smart-session.module.d.ts +0 -12
  537. package/lib/session/smart-session.service.d.ts +0 -88
  538. package/lib/session/smart-timer/smart-session-timer.component.d.ts +0 -19
  539. package/lib/shared/projects.d.ts +0 -3
  540. package/lib/shared/shared.module.d.ts +0 -9
  541. package/lib/shared/smart-tooltip.directive.d.ts +0 -16
  542. package/lib/shared/smarttable.date-pipe.d.ts +0 -18
  543. package/lib/smart-client/projects.d.ts +0 -3
  544. package/lib/smart-client/smart-component-api-client.d.ts +0 -143
  545. package/lib/smart-client/smart-file-uploader/smart-file-uploader.component.d.ts +0 -25
  546. package/lib/smart-client/smart.component.d.ts +0 -35
  547. package/lib/smart-client/smart.service.d.ts +0 -29
  548. package/lib/smart-component-layout/api/api/api.d.ts +0 -3
  549. package/lib/smart-component-layout/api/api/default.service.d.ts +0 -33
  550. package/lib/smart-component-layout/api/api.module.d.ts +0 -11
  551. package/lib/smart-component-layout/api/configuration.d.ts +0 -104
  552. package/lib/smart-component-layout/api/encoder.d.ts +0 -11
  553. package/lib/smart-component-layout/api/index.d.ts +0 -6
  554. package/lib/smart-component-layout/api/model/componentType.d.ts +0 -16
  555. package/lib/smart-component-layout/api/model/componentWidgetType.d.ts +0 -20
  556. package/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.d.ts +0 -19
  557. package/lib/smart-component-layout/api/model/layoutDirection.d.ts +0 -15
  558. package/lib/smart-component-layout/api/model/models.d.ts +0 -9
  559. package/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.d.ts +0 -32
  560. package/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.d.ts +0 -26
  561. package/lib/smart-component-layout/api/model/toolbarAlignment.d.ts +0 -15
  562. package/lib/smart-component-layout/api/model/toolbarDirection.d.ts +0 -15
  563. package/lib/smart-component-layout/api/model/toolbarProperties.d.ts +0 -18
  564. package/lib/smart-component-layout/api/param.d.ts +0 -37
  565. package/lib/smart-component-layout/api/variables.d.ts +0 -8
  566. package/lib/smart-component-layout/projects.d.ts +0 -4
  567. package/lib/smart-component-layout/smart-component-layout-utility.d.ts +0 -25
  568. package/lib/smart-component-layout/smart-component-layout.component.d.ts +0 -93
  569. package/lib/smart-component-layout/smart-component-layout.module.d.ts +0 -17
  570. package/lib/smart-diagram/api/api/api.d.ts +0 -3
  571. package/lib/smart-diagram/api/api/diagramService.service.d.ts +0 -36
  572. package/lib/smart-diagram/api/api.module.d.ts +0 -11
  573. package/lib/smart-diagram/api/configuration.d.ts +0 -104
  574. package/lib/smart-diagram/api/encoder.d.ts +0 -11
  575. package/lib/smart-diagram/api/index.d.ts +0 -6
  576. package/lib/smart-diagram/api/model/diagramColor.d.ts +0 -17
  577. package/lib/smart-diagram/api/model/diagramDataContainer.d.ts +0 -19
  578. package/lib/smart-diagram/api/model/diagramDataItem.d.ts +0 -25
  579. package/lib/smart-diagram/api/model/diagramDataSet.d.ts +0 -22
  580. package/lib/smart-diagram/api/model/diagramDescriptor.d.ts +0 -57
  581. package/lib/smart-diagram/api/model/diagramModel.d.ts +0 -19
  582. package/lib/smart-diagram/api/model/diagramShape.d.ts +0 -30
  583. package/lib/smart-diagram/api/model/drawTime.d.ts +0 -18
  584. package/lib/smart-diagram/api/model/labelText.d.ts +0 -21
  585. package/lib/smart-diagram/api/model/models.d.ts +0 -9
  586. package/lib/smart-diagram/api/param.d.ts +0 -37
  587. package/lib/smart-diagram/api/variables.d.ts +0 -8
  588. package/lib/smart-diagram/component/default-smart-diagram-options.provider.d.ts +0 -33
  589. package/lib/smart-diagram/component/smart-diagram.component.d.ts +0 -43
  590. package/lib/smart-diagram/component/smart-diagram.module.d.ts +0 -11
  591. package/lib/smart-diagram/component/smart-diagram.util.d.ts +0 -1
  592. package/lib/smart-diagram/projects.d.ts +0 -4
  593. package/lib/smart-dialog/projects.d.ts +0 -4
  594. package/lib/smart-dialog/smartdialog.component.d.ts +0 -19
  595. package/lib/smart-dialog/smartdialog.model.d.ts +0 -68
  596. package/lib/smart-dialog/smartdialog.module.d.ts +0 -14
  597. package/lib/smart-dialog/smartdialog.service.d.ts +0 -28
  598. package/lib/smart-expandable-section/expandable-section.component.d.ts +0 -30
  599. package/lib/smart-expandable-section/expandable-section.model.d.ts +0 -43
  600. package/lib/smart-expandable-section/projects.d.ts +0 -4
  601. package/lib/smart-expandable-section/smart-expandable-section.module.d.ts +0 -17
  602. package/lib/smart-expandable-section/smart-expandable-section.service.d.ts +0 -6
  603. package/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.d.ts +0 -15
  604. package/lib/smart-filter/api/filter/model/filterExpressionBuilderField.d.ts +0 -27
  605. package/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.d.ts +0 -36
  606. package/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.d.ts +0 -27
  607. package/lib/smart-filter/api/filter/model/filterExpressionData.d.ts +0 -27
  608. package/lib/smart-filter/api/filter/model/filterExpressionDataType.d.ts +0 -18
  609. package/lib/smart-filter/api/filter/model/filterExpressionField.d.ts +0 -44
  610. package/lib/smart-filter/api/filter/model/filterExpressionFieldList.d.ts +0 -21
  611. package/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.d.ts +0 -26
  612. package/lib/smart-filter/api/filter/model/filterExpressionList.d.ts +0 -18
  613. package/lib/smart-filter/api/filter/model/filterExpressionOperandData.d.ts +0 -25
  614. package/lib/smart-filter/api/filter/model/filterExpressionOperation.d.ts +0 -30
  615. package/lib/smart-filter/api/filter/model/filterExpressionOrderBy.d.ts +0 -25
  616. package/lib/smart-filter/api/filter/model/model.d.ts +0 -15
  617. package/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.d.ts +0 -19
  618. package/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.d.ts +0 -18
  619. package/lib/smart-filter/api/value/model/value.d.ts +0 -29
  620. package/lib/smart-filter/projects.d.ts +0 -5
  621. package/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.d.ts +0 -8
  622. package/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.d.ts +0 -31
  623. package/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.d.ts +0 -18
  624. package/lib/smart-filter/smart-filter/smart-filter.component.d.ts +0 -15
  625. package/lib/smart-filter/smart-filter/smart-filter.service.d.ts +0 -16
  626. package/lib/smart-filter/smart-filter.model.d.ts +0 -25
  627. package/lib/smart-filter/smart-filter.module.d.ts +0 -15
  628. package/lib/smart-filter-editor/api/api/api.d.ts +0 -3
  629. package/lib/smart-filter-editor/api/api/filter.service.d.ts +0 -57
  630. package/lib/smart-filter-editor/api/api.module.d.ts +0 -11
  631. package/lib/smart-filter-editor/api/configuration.d.ts +0 -104
  632. package/lib/smart-filter-editor/api/encoder.d.ts +0 -11
  633. package/lib/smart-filter-editor/api/index.d.ts +0 -6
  634. package/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.d.ts +0 -15
  635. package/lib/smart-filter-editor/api/model/filterExpressionBuilder.d.ts +0 -16
  636. package/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.d.ts +0 -16
  637. package/lib/smart-filter-editor/api/model/filterExpressionBuilderField.d.ts +0 -27
  638. package/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.d.ts +0 -36
  639. package/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.d.ts +0 -27
  640. package/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.d.ts +0 -38
  641. package/lib/smart-filter-editor/api/model/filterExpressionData.d.ts +0 -27
  642. package/lib/smart-filter-editor/api/model/filterExpressionDataType.d.ts +0 -18
  643. package/lib/smart-filter-editor/api/model/filterExpressionField.d.ts +0 -44
  644. package/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.d.ts +0 -17
  645. package/lib/smart-filter-editor/api/model/filterExpressionFieldList.d.ts +0 -23
  646. package/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.d.ts +0 -26
  647. package/lib/smart-filter-editor/api/model/filterExpressionList.d.ts +0 -18
  648. package/lib/smart-filter-editor/api/model/filterExpressionOperandData.d.ts +0 -25
  649. package/lib/smart-filter-editor/api/model/filterExpressionOperation.d.ts +0 -30
  650. package/lib/smart-filter-editor/api/model/filterExpressionOrderBy.d.ts +0 -28
  651. package/lib/smart-filter-editor/api/model/models.d.ts +0 -19
  652. package/lib/smart-filter-editor/api/model/searchPageConfig.d.ts +0 -73
  653. package/lib/smart-filter-editor/api/model/smartFilterType.d.ts +0 -15
  654. package/lib/smart-filter-editor/api/param.d.ts +0 -37
  655. package/lib/smart-filter-editor/api/variables.d.ts +0 -8
  656. package/lib/smart-filter-editor/filter-utils.d.ts +0 -2
  657. package/lib/smart-filter-editor/filterExpressionBuilderApiActions.d.ts +0 -13
  658. package/lib/smart-filter-editor/project.d.ts +0 -10
  659. package/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/advanced-relation-button/advanced-relation-button.component.d.ts +0 -11
  660. package/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/advanced-smart-filter-expression-item/advanced-smart-filter-expression-item.component.d.ts +0 -11
  661. package/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/expression-editor-dialog/expression-editor-dialog.component.d.ts +0 -14
  662. package/lib/smart-filter-editor/smart-filter-editor-content/components/advanced/expression-editor-dialog/expression-editor-dialog.service.d.ts +0 -21
  663. package/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.d.ts +0 -19
  664. package/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.d.ts +0 -20
  665. package/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.d.ts +0 -50
  666. package/lib/smart-filter-editor/smart-filter-editor.model.d.ts +0 -4
  667. package/lib/smart-filter-editor/smart-filter-editor.module.d.ts +0 -21
  668. package/lib/smart-filter-editor/smart-filter-editor.service.d.ts +0 -51
  669. package/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.d.ts +0 -9
  670. package/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.d.ts +0 -21
  671. package/lib/smart-form/api/api/api.d.ts +0 -3
  672. package/lib/smart-form/api/api/default.service.d.ts +0 -33
  673. package/lib/smart-form/api/api.module.d.ts +0 -11
  674. package/lib/smart-form/api/configuration.d.ts +0 -104
  675. package/lib/smart-form/api/encoder.d.ts +0 -11
  676. package/lib/smart-form/api/index.d.ts +0 -6
  677. package/lib/smart-form/api/model/dateFieldProperties.d.ts +0 -15
  678. package/lib/smart-form/api/model/divProperties.d.ts +0 -15
  679. package/lib/smart-form/api/model/fileUploaderProperties.d.ts +0 -20
  680. package/lib/smart-form/api/model/imageProperties.d.ts +0 -15
  681. package/lib/smart-form/api/model/models.d.ts +0 -19
  682. package/lib/smart-form/api/model/multiFileUploaderProperties.d.ts +0 -19
  683. package/lib/smart-form/api/model/propertyMapping.d.ts +0 -24
  684. package/lib/smart-form/api/model/recordingUploaderProperties.d.ts +0 -20
  685. package/lib/smart-form/api/model/selectionDefinition.d.ts +0 -58
  686. package/lib/smart-form/api/model/smartFormInputMode.d.ts +0 -20
  687. package/lib/smart-form/api/model/smartFormWidgetDirection.d.ts +0 -15
  688. package/lib/smart-form/api/model/smartFormWidgetType.d.ts +0 -47
  689. package/lib/smart-form/api/model/smartLayoutDefinition.d.ts +0 -15
  690. package/lib/smart-form/api/model/smartMatrixModel.d.ts +0 -29
  691. package/lib/smart-form/api/model/smartWidgetDefinition.d.ts +0 -125
  692. package/lib/smart-form/api/model/smartWidgetHint.d.ts +0 -19
  693. package/lib/smart-form/api/model/sortDefinition.d.ts +0 -15
  694. package/lib/smart-form/api/model/textBoxProperties.d.ts +0 -15
  695. package/lib/smart-form/api/model/textFieldProperties.d.ts +0 -14
  696. package/lib/smart-form/api/model/valueChangeMode.d.ts +0 -19
  697. package/lib/smart-form/api/param.d.ts +0 -37
  698. package/lib/smart-form/api/variables.d.ts +0 -8
  699. package/lib/smart-form/highlightMacthingString-pipe.d.ts +0 -7
  700. package/lib/smart-form/projects.d.ts +0 -14
  701. package/lib/smart-form/services/smartform.layout-definition.service.d.ts +0 -50
  702. package/lib/smart-form/services/smartform.service.d.ts +0 -52
  703. package/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.d.ts +0 -8
  704. package/lib/smart-form/smartfileuploader/smartfileuploader.component.d.ts +0 -38
  705. package/lib/smart-form/smartfileuploader/smartfileuploader.model.d.ts +0 -7
  706. package/lib/smart-form/smartform.component.d.ts +0 -43
  707. package/lib/smart-form/smartform.form-model.d.ts +0 -864
  708. package/lib/smart-form/smartform.model.d.ts +0 -126
  709. package/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.d.ts +0 -54
  710. package/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.d.ts +0 -29
  711. package/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.d.ts +0 -57
  712. package/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.d.ts +0 -50
  713. package/lib/smart-form/widgets/directives/comparable-dropdown.directive.d.ts +0 -10
  714. package/lib/smart-form/widgets/directives/comparable-multiselect.directive.d.ts +0 -10
  715. package/lib/smart-form/widgets/smartformwidget/smartformwidget.component.d.ts +0 -173
  716. package/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.d.ts +0 -24
  717. package/lib/smart-form/widgets/smartformwidget/trackCaps.directive.d.ts +0 -9
  718. package/lib/smart-generic-pages/acl-editing-view/acl-editing-view.component.d.ts +0 -21
  719. package/lib/smart-generic-pages/api/platform/acl/model/aCL.d.ts +0 -18
  720. package/lib/smart-generic-pages/api/platform/acl/model/aCLEntry.d.ts +0 -54
  721. package/lib/smart-generic-pages/api/platform/acl/model/objectValidationSeverity.d.ts +0 -19
  722. package/lib/smart-generic-pages/api/platform/acl/model/subject.d.ts +0 -24
  723. package/lib/smart-generic-pages/api/platform/api-default/objectHistoryRangeData.d.ts +0 -2
  724. package/lib/smart-generic-pages/api/platform/searchpage/model/searchPageModel.d.ts +0 -27
  725. package/lib/smart-generic-pages/api/platform/subjectselector/model/subjectSelectorPageModel.d.ts +0 -14
  726. package/lib/smart-generic-pages/api/platform/validation/model/validationItem.d.ts +0 -17
  727. package/lib/smart-generic-pages/api/platform/validation/model/validationResultPageModel.d.ts +0 -18
  728. package/lib/smart-generic-pages/generic-page/generic-page.component.d.ts +0 -12
  729. package/lib/smart-generic-pages/invalid-smartlink/invalid-smartlink.component.d.ts +0 -11
  730. package/lib/smart-generic-pages/no-permission-page/no-permission-page.component.d.ts +0 -11
  731. package/lib/smart-generic-pages/projects.d.ts +0 -9
  732. package/lib/smart-generic-pages/search-page/search-page.component.d.ts +0 -25
  733. package/lib/smart-generic-pages/smart-generic-pages.module.d.ts +0 -19
  734. package/lib/smart-generic-pages/subject-selector/subject-selector.component.d.ts +0 -17
  735. package/lib/smart-generic-pages/validation-result-page/validation-result-page.component.d.ts +0 -25
  736. package/lib/smart-grid/api/grid-api/api/api.d.ts +0 -3
  737. package/lib/smart-grid/api/grid-api/api/grid.service.d.ts +0 -182
  738. package/lib/smart-grid/api/grid-api/api.module.d.ts +0 -11
  739. package/lib/smart-grid/api/grid-api/configuration.d.ts +0 -104
  740. package/lib/smart-grid/api/grid-api/encoder.d.ts +0 -11
  741. package/lib/smart-grid/api/grid-api/index.d.ts +0 -6
  742. package/lib/smart-grid/api/grid-api/model/gridColumnContentType.d.ts +0 -15
  743. package/lib/smart-grid/api/grid-api/model/gridColumnMeta.d.ts +0 -34
  744. package/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.d.ts +0 -44
  745. package/lib/smart-grid/api/grid-api/model/gridExportDescriptor.d.ts +0 -19
  746. package/lib/smart-grid/api/grid-api/model/gridModel.d.ts +0 -36
  747. package/lib/smart-grid/api/grid-api/model/gridPage.d.ts +0 -26
  748. package/lib/smart-grid/api/grid-api/model/gridRow.d.ts +0 -47
  749. package/lib/smart-grid/api/grid-api/model/gridRowLayoutDescriptor.d.ts +0 -20
  750. package/lib/smart-grid/api/grid-api/model/gridSelectionChange.d.ts +0 -24
  751. package/lib/smart-grid/api/grid-api/model/gridSelectionMode.d.ts +0 -16
  752. package/lib/smart-grid/api/grid-api/model/gridSelectionType.d.ts +0 -15
  753. package/lib/smart-grid/api/grid-api/model/gridServerModel.d.ts +0 -22
  754. package/lib/smart-grid/api/grid-api/model/gridUpdateData.d.ts +0 -20
  755. package/lib/smart-grid/api/grid-api/model/gridView.d.ts +0 -21
  756. package/lib/smart-grid/api/grid-api/model/gridViewDescriptor.d.ts +0 -39
  757. package/lib/smart-grid/api/grid-api/model/models.d.ts +0 -15
  758. package/lib/smart-grid/api/grid-api/param.d.ts +0 -37
  759. package/lib/smart-grid/api/grid-api/variables.d.ts +0 -8
  760. package/lib/smart-grid/components/expandable-grid/expandable-grid.component.d.ts +0 -10
  761. package/lib/smart-grid/components/generic-component/expanded-row-renderer.component.d.ts +0 -21
  762. package/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.d.ts +0 -26
  763. package/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.d.ts +0 -47
  764. package/lib/smart-grid/models/model.d.ts +0 -73
  765. package/lib/smart-grid/projects.d.ts +0 -5
  766. package/lib/smart-grid/smart-grid-toolbar-util.d.ts +0 -12
  767. package/lib/smart-grid/smart-grid.component.d.ts +0 -157
  768. package/lib/smart-grid/smart-grid.module.d.ts +0 -29
  769. package/lib/smart-grid/smart-grid.service.d.ts +0 -26
  770. package/lib/smart-icon/projects.d.ts +0 -5
  771. package/lib/smart-icon/smart-icon/smart-icon.component.d.ts +0 -34
  772. package/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.d.ts +0 -10
  773. package/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.d.ts +0 -14
  774. package/lib/smart-icon/smart-icon.module.d.ts +0 -14
  775. package/lib/smart-icon/smart-icon.service.d.ts +0 -29
  776. package/lib/smart-map/abstract-map.d.ts +0 -37
  777. package/lib/smart-map/api/api/api.d.ts +0 -3
  778. package/lib/smart-map/api/api/geoMap.service.d.ts +0 -101
  779. package/lib/smart-map/api/api.module.d.ts +0 -11
  780. package/lib/smart-map/api/configuration.d.ts +0 -104
  781. package/lib/smart-map/api/encoder.d.ts +0 -11
  782. package/lib/smart-map/api/index.d.ts +0 -6
  783. package/lib/smart-map/api/model/gPSPosition.d.ts +0 -32
  784. package/lib/smart-map/api/model/gPSRoute.d.ts +0 -21
  785. package/lib/smart-map/api/model/geoMapChange.d.ts +0 -21
  786. package/lib/smart-map/api/model/geoMapDataLoadingMode.d.ts +0 -15
  787. package/lib/smart-map/api/model/geoMapDataSourceDescriptor.d.ts +0 -52
  788. package/lib/smart-map/api/model/geoMapDataSourceType.d.ts +0 -17
  789. package/lib/smart-map/api/model/geoMapEditingSession.d.ts +0 -17
  790. package/lib/smart-map/api/model/geoMapInteraction.d.ts +0 -24
  791. package/lib/smart-map/api/model/geoMapItem.d.ts +0 -41
  792. package/lib/smart-map/api/model/geoMapItemKind.d.ts +0 -16
  793. package/lib/smart-map/api/model/geoMapLayer.d.ts +0 -19
  794. package/lib/smart-map/api/model/geoMapLayerChange.d.ts +0 -20
  795. package/lib/smart-map/api/model/geoMapLayerDescriptor.d.ts +0 -28
  796. package/lib/smart-map/api/model/geoMapModel.d.ts +0 -26
  797. package/lib/smart-map/api/model/geoMapOperationMode.d.ts +0 -15
  798. package/lib/smart-map/api/model/geoMapSelectionMode.d.ts +0 -16
  799. package/lib/smart-map/api/model/geoMapServerModel.d.ts +0 -25
  800. package/lib/smart-map/api/model/geoMapTextType.d.ts +0 -15
  801. package/lib/smart-map/api/model/geoMapViewState.d.ts +0 -27
  802. package/lib/smart-map/api/model/geoMapViewport.d.ts +0 -20
  803. package/lib/smart-map/api/model/models.d.ts +0 -20
  804. package/lib/smart-map/api/param.d.ts +0 -37
  805. package/lib/smart-map/api/variables.d.ts +0 -8
  806. package/lib/smart-map/api-default/api-default.d.ts +0 -2
  807. package/lib/smart-map/impl/google-map.d.ts +0 -23
  808. package/lib/smart-map/impl/leaflet-map.d.ts +0 -22
  809. package/lib/smart-map/projects.d.ts +0 -8
  810. package/lib/smart-map/smart-map.component.d.ts +0 -39
  811. package/lib/smart-map/smart-map.module.d.ts +0 -11
  812. package/lib/smart-map/smart-map.types.d.ts +0 -34
  813. package/lib/smart-navbar/projects.d.ts +0 -4
  814. package/lib/smart-navbar/smart-navbar.component.d.ts +0 -20
  815. package/lib/smart-navbar/smart-navbar.model.d.ts +0 -48
  816. package/lib/smart-navbar/smart-navbar.module.d.ts +0 -18
  817. package/lib/smart-navbar/smart-navbar.service.d.ts +0 -6
  818. package/lib/smart-navigation/projects.d.ts +0 -2
  819. package/lib/smart-navigation/smart-navigation.interface.d.ts +0 -5
  820. package/lib/smart-navigation/smart-navigation.module.d.ts +0 -6
  821. package/lib/smart-navigation/smart-navigation.service.d.ts +0 -12
  822. package/lib/smart-ng-client.module.d.ts +0 -25
  823. package/lib/smart-ng-client.service.d.ts +0 -10
  824. package/lib/smart-subject/projects.d.ts +0 -1
  825. package/lib/smart-subject/smart-subject.d.ts +0 -6
  826. package/lib/smart-tab-group/projects.d.ts +0 -1
  827. package/lib/smart-tab-group/smart-tab-group.module.d.ts +0 -10
  828. package/lib/smart-table/components/default-actions-popup/default-actions-popup.component.d.ts +0 -19
  829. package/lib/smart-table/components/loading/loading.component.d.ts +0 -8
  830. package/lib/smart-table/directives/mat-context-menu-trigger-for.directive.d.ts +0 -10
  831. package/lib/smart-table/projects.d.ts +0 -4
  832. package/lib/smart-table/smarttable.component.d.ts +0 -34
  833. package/lib/smart-table/smarttable.model.d.ts +0 -202
  834. package/lib/smart-table/smarttable.module.d.ts +0 -29
  835. package/lib/smart-table/smarttable.service.d.ts +0 -6
  836. package/lib/smart-table/tables/material-table/material-table.component.d.ts +0 -8
  837. package/lib/smart-table/tables/mobile-table/mobile-table.component.d.ts +0 -8
  838. package/lib/smart-table/tables/table.d.ts +0 -98
  839. package/lib/smart-tree/projects.d.ts +0 -5
  840. package/lib/smart-tree/smarttree-generic.service.d.ts +0 -48
  841. package/lib/smart-tree/smarttree.component.d.ts +0 -43
  842. package/lib/smart-tree/smarttree.model.d.ts +0 -42
  843. package/lib/smart-tree/smarttree.module.d.ts +0 -16
  844. package/lib/smart-tree/smarttree.node.model.d.ts +0 -13
  845. package/lib/smart-tree/smarttree.service.d.ts +0 -25
  846. package/lib/smart-tree/smarttree.service.interface.d.ts +0 -43
  847. package/lib/smart-tree/tree-api/api/tree.service.d.ts +0 -336
  848. package/lib/smart-tree/tree-api/configuration.d.ts +0 -104
  849. package/lib/smart-tree/tree-api/encoder.d.ts +0 -11
  850. package/lib/smart-tree/tree-api/param.d.ts +0 -37
  851. package/lib/smart-tree/tree-api/variables.d.ts +0 -8
  852. package/lib/smart-validation/named-validator.service.d.ts +0 -17
  853. package/lib/smart-validation/projects.d.ts +0 -3
  854. package/lib/smart-validation/smart-validation.module.d.ts +0 -8
  855. package/lib/smart-validation/smart-validation.types.d.ts +0 -12
  856. package/lib/theme/theme.service.d.ts +0 -17
  857. package/lib/view-context/api/api/api.d.ts +0 -3
  858. package/lib/view-context/api/api/view.service.d.ts +0 -426
  859. package/lib/view-context/api/api-default/binaryContentData.d.ts +0 -2
  860. package/lib/view-context/api/api-default/binaryData.d.ts +0 -2
  861. package/lib/view-context/api/api-default/invocationError.d.ts +0 -2
  862. package/lib/view-context/api/api-default/invocationRequest.d.ts +0 -2
  863. package/lib/view-context/api/api-default/invocationRun.d.ts +0 -2
  864. package/lib/view-context/api/api.module.d.ts +0 -11
  865. package/lib/view-context/api/configuration.d.ts +0 -104
  866. package/lib/view-context/api/encoder.d.ts +0 -11
  867. package/lib/view-context/api/index.d.ts +0 -6
  868. package/lib/view-context/api/model/backgroundProcessInfo.d.ts +0 -25
  869. package/lib/view-context/api/model/badgeDescriptor.d.ts +0 -15
  870. package/lib/view-context/api/model/clipboardData.d.ts +0 -20
  871. package/lib/view-context/api/model/closeResult.d.ts +0 -16
  872. package/lib/view-context/api/model/componentConstraint.d.ts +0 -31
  873. package/lib/view-context/api/model/componentModel.d.ts +0 -47
  874. package/lib/view-context/api/model/componentModelChange.d.ts +0 -29
  875. package/lib/view-context/api/model/dataChange.d.ts +0 -25
  876. package/lib/view-context/api/model/dataChangeEvent.d.ts +0 -31
  877. package/lib/view-context/api/model/dataChangeKind.d.ts +0 -19
  878. package/lib/view-context/api/model/deviceInfo.d.ts +0 -43
  879. package/lib/view-context/api/model/downloadedFile.d.ts +0 -19
  880. package/lib/view-context/api/model/iconPosition.d.ts +0 -18
  881. package/lib/view-context/api/model/imageResource.d.ts +0 -28
  882. package/lib/view-context/api/model/link.d.ts +0 -35
  883. package/lib/view-context/api/model/menuDescriptor.d.ts +0 -17
  884. package/lib/view-context/api/model/menuOpenDirection.d.ts +0 -21
  885. package/lib/view-context/api/model/menuTriggerType.d.ts +0 -15
  886. package/lib/view-context/api/model/messageData.d.ts +0 -29
  887. package/lib/view-context/api/model/messageOption.d.ts +0 -20
  888. package/lib/view-context/api/model/messageOptionType.d.ts +0 -16
  889. package/lib/view-context/api/model/messageResult.d.ts +0 -16
  890. package/lib/view-context/api/model/messageTextType.d.ts +0 -15
  891. package/lib/view-context/api/model/messageType.d.ts +0 -17
  892. package/lib/view-context/api/model/models.d.ts +0 -70
  893. package/lib/view-context/api/model/multiComboBoxElement.d.ts +0 -16
  894. package/lib/view-context/api/model/multiComboBoxModel.d.ts +0 -16
  895. package/lib/view-context/api/model/namedValidator.d.ts +0 -27
  896. package/lib/view-context/api/model/openPendingData.d.ts +0 -29
  897. package/lib/view-context/api/model/publishedViewData.d.ts +0 -14
  898. package/lib/view-context/api/model/serverRequestExecutionStat.d.ts +0 -40
  899. package/lib/view-context/api/model/serverRequestTrack.d.ts +0 -60
  900. package/lib/view-context/api/model/serverRequestType.d.ts +0 -22
  901. package/lib/view-context/api/model/shellProperty.d.ts +0 -15
  902. package/lib/view-context/api/model/smartLinkData.d.ts +0 -29
  903. package/lib/view-context/api/model/smartLinkMigrationStatus.d.ts +0 -39
  904. package/lib/view-context/api/model/statisticRecord.d.ts +0 -36
  905. package/lib/view-context/api/model/style.d.ts +0 -21
  906. package/lib/view-context/api/model/themeDefinition.d.ts +0 -22
  907. package/lib/view-context/api/model/themeDescriptor.d.ts +0 -16
  908. package/lib/view-context/api/model/themeShellDescriptor.d.ts +0 -17
  909. package/lib/view-context/api/model/uiAction.d.ts +0 -68
  910. package/lib/view-context/api/model/uiActionButtonDescriptor.d.ts +0 -25
  911. package/lib/view-context/api/model/uiActionButtonType.d.ts +0 -25
  912. package/lib/view-context/api/model/uiActionConstraint.d.ts +0 -22
  913. package/lib/view-context/api/model/uiActionDefinition.d.ts +0 -19
  914. package/lib/view-context/api/model/uiActionDefinitionEntry.d.ts +0 -18
  915. package/lib/view-context/api/model/uiActionDescriptor.d.ts +0 -44
  916. package/lib/view-context/api/model/uiActionDialogDescriptor.d.ts +0 -23
  917. package/lib/view-context/api/model/uiActionFeedbackType.d.ts +0 -18
  918. package/lib/view-context/api/model/uiActionInputType.d.ts +0 -19
  919. package/lib/view-context/api/model/uiActionRequest.d.ts +0 -31
  920. package/lib/view-context/api/model/uiActionSchedule.d.ts +0 -14
  921. package/lib/view-context/api/model/uiActionTooltip.d.ts +0 -25
  922. package/lib/view-context/api/model/uiActionUploadDescriptor.d.ts +0 -27
  923. package/lib/view-context/api/model/uploadWidgetType.d.ts +0 -16
  924. package/lib/view-context/api/model/uploadedFile.d.ts +0 -20
  925. package/lib/view-context/api/model/valueSet.d.ts +0 -20
  926. package/lib/view-context/api/model/view.d.ts +0 -88
  927. package/lib/view-context/api/model/viewApiError.d.ts +0 -18
  928. package/lib/view-context/api/model/viewConstraint.d.ts +0 -18
  929. package/lib/view-context/api/model/viewContext.d.ts +0 -33
  930. package/lib/view-context/api/model/viewContextChange.d.ts +0 -24
  931. package/lib/view-context/api/model/viewContextData.d.ts +0 -25
  932. package/lib/view-context/api/model/viewContextUpdate.d.ts +0 -24
  933. package/lib/view-context/api/model/viewData.d.ts +0 -28
  934. package/lib/view-context/api/model/viewEventHandler.d.ts +0 -36
  935. package/lib/view-context/api/model/viewPlaceholder.d.ts +0 -22
  936. package/lib/view-context/api/model/viewState.d.ts +0 -20
  937. package/lib/view-context/api/model/viewStateUpdate.d.ts +0 -22
  938. package/lib/view-context/api/model/viewType.d.ts +0 -16
  939. package/lib/view-context/api/param.d.ts +0 -37
  940. package/lib/view-context/api/variables.d.ts +0 -8
  941. package/lib/view-context/default-view-components.token.d.ts +0 -18
  942. package/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.d.ts +0 -9
  943. package/lib/view-context/message-dialog/message-dialog.component.d.ts +0 -27
  944. package/lib/view-context/projects.d.ts +0 -26
  945. package/lib/view-context/property-definition-data.d.ts +0 -5
  946. package/lib/view-context/reuse-router-slot.token.d.ts +0 -3
  947. package/lib/view-context/smart-embedded-slot.directive.d.ts +0 -20
  948. package/lib/view-context/smart-ui-action/components/menu/click/menu.component.d.ts +0 -49
  949. package/lib/view-context/smart-ui-action/components/menu/hover/hover-menu.component.d.ts +0 -50
  950. package/lib/view-context/smart-ui-action/components/menu/menu.constants.d.ts +0 -7
  951. package/lib/view-context/smart-ui-action/components/menu/menu.service.d.ts +0 -11
  952. package/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.d.ts +0 -13
  953. package/lib/view-context/smart-ui-action/components/theme-selector/theme-selector.component.d.ts +0 -16
  954. package/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.d.ts +0 -30
  955. package/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.d.ts +0 -32
  956. package/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.d.ts +0 -40
  957. package/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.d.ts +0 -3
  958. package/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.d.ts +0 -43
  959. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.d.ts +0 -29
  960. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.d.ts +0 -21
  961. package/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.d.ts +0 -15
  962. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.d.ts +0 -36
  963. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.d.ts +0 -26
  964. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.d.ts +0 -31
  965. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.d.ts +0 -28
  966. package/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.d.ts +0 -13
  967. package/lib/view-context/smart-ui-action/ui-action-button/button-icon-placeholder.d.ts +0 -5
  968. package/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.d.ts +0 -55
  969. package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +0 -73
  970. package/lib/view-context/smart-ui-action/ui-action.descriptor.service.d.ts +0 -23
  971. package/lib/view-context/smart-ui-action/ui-action.model.d.ts +0 -43
  972. package/lib/view-context/smart-ui-action/ui-action.service.d.ts +0 -42
  973. package/lib/view-context/smart-view-context-dialog.service.d.ts +0 -21
  974. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.d.ts +0 -15
  975. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.d.ts +0 -21
  976. package/lib/view-context/smart-view-context.interceptor.d.ts +0 -17
  977. package/lib/view-context/smart-view-context.model.d.ts +0 -37
  978. package/lib/view-context/smart-view-context.module.d.ts +0 -86
  979. package/lib/view-context/smart-view-context.service.d.ts +0 -172
  980. package/lib/view-context/smart-view-redirect/smart-view-redirect.d.ts +0 -16
  981. package/lib/view-context/utility/componentLibrary.d.ts +0 -6
  982. package/lib/view-context/utility/smart-object-utility.d.ts +0 -5
  983. package/lib/view-context/utility/smart-style-utility.d.ts +0 -12
  984. package/lib/view-context/value-api/api/api.d.ts +0 -3
  985. package/lib/view-context/value-api/api/value.service.d.ts +0 -35
  986. package/lib/view-context/value-api/api.module.d.ts +0 -11
  987. package/lib/view-context/value-api/configuration.d.ts +0 -104
  988. package/lib/view-context/value-api/encoder.d.ts +0 -11
  989. package/lib/view-context/value-api/index.d.ts +0 -6
  990. package/lib/view-context/value-api/model/genericValue.d.ts +0 -33
  991. package/lib/view-context/value-api/model/models.d.ts +0 -10
  992. package/lib/view-context/value-api/model/value.d.ts +0 -29
  993. package/lib/view-context/value-api/model/valueSetData.d.ts +0 -41
  994. package/lib/view-context/value-api/model/valueSetDefinition.d.ts +0 -16
  995. package/lib/view-context/value-api/model/valueSetDefinitionData.d.ts +0 -53
  996. package/lib/view-context/value-api/model/valueSetDefinitionIdentifier.d.ts +0 -21
  997. package/lib/view-context/value-api/model/valueSetDefinitionKind.d.ts +0 -22
  998. package/lib/view-context/value-api/model/valueSetExpression.d.ts +0 -18
  999. package/lib/view-context/value-api/model/valueSetOperand.d.ts +0 -25
  1000. package/lib/view-context/value-api/model/valueSetOperation.d.ts +0 -17
  1001. package/lib/view-context/value-api/param.d.ts +0 -37
  1002. package/lib/view-context/value-api/variables.d.ts +0 -8
  1003. package/lib/view-context/view-handler-resolution.d.ts +0 -11
  1004. package/lib/view-context/view-op.d.ts +0 -18
  1005. package/lib/view-context/view-slot-resolution.d.ts +0 -27
  1006. package/projects.d.ts +0 -27
  1007. package/smartbit4all-ng-client-6.0.35.tgz +0 -0
@@ -1,614 +0,0 @@
1
- import { Component, Input, ViewChild, ViewChildren, ViewContainerRef, } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { UiActionButtonType, } from '../../view-context/api/model/models';
4
- import { SmartStyleUtility } from '../../view-context/utility/smart-style-utility';
5
- import { DefaultActionsPopupComponent } from '../components/default-actions-popup/default-actions-popup.component';
6
- import { LoadingComponent } from '../components/loading/loading.component';
7
- import { SmartTableButtonType, SmartTableHeaderPropertyType, SmartTableOptionButtonDirection, SmartTableOrder, SmartTableType, } from '../smarttable.model';
8
- import { SmartObjectUtility } from '../../view-context/utility/smart-object-utility';
9
- import { SmartGridToolbarActionsUtil } from '../../smart-grid/smart-grid-toolbar-util';
10
- import { MatMenuTrigger } from '@angular/material/menu';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../../component-factory-service/projects";
13
- export class Table {
14
- constructor(cfService) {
15
- this.cfService = cfService;
16
- this._destroy$ = new Subject();
17
- this.tableType = SmartTableType;
18
- this.smartTableButtonType = SmartTableButtonType;
19
- this.highlightedRows = [];
20
- this.sortEvent = new Subject();
21
- // Cells to UiAction models, used for toolbars in cells
22
- this.cellToActionMap = {};
23
- this.onSelectionChanged = new Subject();
24
- this.asyncTranslationResult = (translator, param) => translator(param);
25
- this.ACTION_SEPERATOR = '_actionSeparator_';
26
- // ---- Toolbar ----
27
- this.defaultActionToolbarId = SmartGridToolbarActionsUtil.defaultActionToolbarId;
28
- this.rowMenuActionModelCache = new Map();
29
- this.rowMenuActionModelArrayCache = new Map();
30
- }
31
- ngOnInit() {
32
- if (this.smartTable.sortable)
33
- this.sortEvent = new Subject();
34
- this.createCellToActionMap();
35
- }
36
- ngOnDestroy() {
37
- this._destroy$.next();
38
- this._destroy$.complete();
39
- }
40
- handleOnRowClick(element) {
41
- if (this.smartTable.tableType === SmartTableType.INHERITED) {
42
- this.onRowClick(element);
43
- }
44
- else if (this.smartTable.tableType === SmartTableType.CHECK_BOX) {
45
- if (!this.smartTable.onRowDoubleClick && !this.smartTable.onRowClick) {
46
- this.setSelection(this.smartTable.selectionProperty
47
- ? this.smartTable.getValueDeeply(element, this.smartTable.selectionProperty)
48
- : element);
49
- }
50
- else if (this.smartTable.onRowClick) {
51
- this.onRowClick(element);
52
- }
53
- }
54
- else if (this.smartTable.tableType === SmartTableType.ROW_SELECT) {
55
- this.setSelection(this.smartTable.selectionProperty
56
- ? this.smartTable.getValueDeeply(element, this.smartTable.selectionProperty)
57
- : element);
58
- }
59
- }
60
- updateSmartTable(smartTable) {
61
- this.smartTable = smartTable;
62
- this.renderRows();
63
- }
64
- renderRows() {
65
- this.createCellToActionMap();
66
- this.myTableChild.renderRows();
67
- }
68
- createCellToActionMap() {
69
- const service = this.smartTable.getServiceToUse();
70
- const gridId = this.smartTable.getGridId();
71
- if (service && gridId) {
72
- this.cellToActionMap = SmartGridToolbarActionsUtil.calculateCellToActionMap(this.smartTable.tableRows, service, gridId);
73
- }
74
- }
75
- handleOnRowDoubleClick(event, element) {
76
- if (this.smartTable.defaultActions && this.smartTable.defaultActions.length > 0) {
77
- this.openDefaultActionsMenu(event, element);
78
- }
79
- else {
80
- if (this.smartTable.tableType === SmartTableType.INHERITED) {
81
- this.onRowDoubleClick(element);
82
- }
83
- else if (this.smartTable.tableType === SmartTableType.CHECK_BOX) {
84
- if (this.smartTable.onRowDoubleClick) {
85
- this.onRowDoubleClick(element);
86
- }
87
- }
88
- }
89
- }
90
- type() {
91
- return SmartTableHeaderPropertyType;
92
- }
93
- sortButtonClicked(event, header) {
94
- event.stopPropagation();
95
- this.sortEvent.next(header);
96
- }
97
- customButtonClicked(event, button, element, btn, close) {
98
- event.stopPropagation();
99
- if (btn?.disabled) {
100
- return;
101
- }
102
- if (button.type === SmartTableButtonType.MENU && btn === undefined)
103
- return;
104
- if (!button.callback) {
105
- throw new Error(`Button with name ${button.label || button.icon} does not have a callback!`);
106
- }
107
- button.callback(button.args, element, btn);
108
- if (close) {
109
- let openMenus = this.triggers.filter((matMenuTrigger) => matMenuTrigger.menuOpen);
110
- openMenus.forEach((matMenuTrigger) => {
111
- matMenuTrigger.closeMenu();
112
- });
113
- }
114
- }
115
- isSortable(header) {
116
- let isSortableTable = this.smartTable.sortable;
117
- if (isSortableTable) {
118
- return header.isSortable !== undefined ? header.isSortable : true;
119
- }
120
- return false;
121
- }
122
- getSortIcon(header) {
123
- let tableHeader = this.smartTable.customSmartTableHeaders?.find((tableHeader) => tableHeader.propertyName === header);
124
- if (tableHeader && tableHeader.order) {
125
- return tableHeader.order === SmartTableOrder.ASC
126
- ? (this.smartTable.sortIconAsc ?? 'keyboard_arrow_down')
127
- : (this.smartTable.sortIconDesc ?? 'keyboard_arrow_up');
128
- }
129
- return undefined;
130
- }
131
- hasSortNumIcon(header) {
132
- let tableHeader = this.smartTable.customSmartTableHeaders?.find((tableHeader) => tableHeader.propertyName === header);
133
- return tableHeader?.orderNumber !== undefined;
134
- }
135
- getSortNumIcon(header) {
136
- let tableHeader = this.smartTable.customSmartTableHeaders?.find((tableHeader) => tableHeader.propertyName === header);
137
- if (tableHeader && tableHeader.orderNumber) {
138
- return `filter_${tableHeader.orderNumber}`;
139
- }
140
- return '';
141
- }
142
- getToolTip(element, headerIndex) {
143
- if (!this.smartTable.customSmartTableHeaders) {
144
- throw new Error('CustomTableHeaders property is missing');
145
- }
146
- else if (!this.smartTable.customSmartTableHeaders[headerIndex].properties) {
147
- throw new Error(`CustomTableHeader with index ${headerIndex} does not have properties`);
148
- }
149
- else if (!this.smartTable.customSmartTableHeaders[headerIndex].properties.icons) {
150
- throw new Error(`CustomTableHeader with index ${headerIndex} does not have icons defined`);
151
- }
152
- let toolTipColumn = this.smartTable.customSmartTableHeaders[headerIndex].properties?.toolTipColumn;
153
- return toolTipColumn ? this.getValue(element, toolTipColumn) : undefined;
154
- }
155
- getIcon(value, headerIndex) {
156
- if (!this.smartTable.customSmartTableHeaders) {
157
- throw new Error('CustomTableHeaders property is missing');
158
- }
159
- else if (!this.smartTable.customSmartTableHeaders[headerIndex].properties) {
160
- throw new Error(`CustomTableHeader with index ${headerIndex} does not have properties`);
161
- }
162
- else if (!this.smartTable.customSmartTableHeaders[headerIndex].properties.icons) {
163
- throw new Error(`CustomTableHeader with index ${headerIndex} does not have icons defined`);
164
- }
165
- let customTableHeaderIcons = this.smartTable.customSmartTableHeaders[headerIndex].properties.icons;
166
- let icon = '';
167
- for (var i = 0; i < customTableHeaderIcons.length; i++) {
168
- let customTableHeaderIcon = customTableHeaderIcons[i];
169
- if (value === null) {
170
- if (customTableHeaderIcon.showIconIfValueNull &&
171
- customTableHeaderIcon.showIconIfValueNull === value) {
172
- icon = customTableHeaderIcon.icon;
173
- break;
174
- }
175
- }
176
- if (typeof value === 'number') {
177
- if (customTableHeaderIcon.showIconIfValueBiggerThanNumber &&
178
- customTableHeaderIcon.showIconIfValueBiggerThanNumber < value) {
179
- icon = customTableHeaderIcon.icon;
180
- break;
181
- }
182
- else if (customTableHeaderIcon.showIconIfValueSmallerThanNumber &&
183
- customTableHeaderIcon.showIconIfValueSmallerThanNumber > value) {
184
- icon = customTableHeaderIcon.icon;
185
- break;
186
- }
187
- else if (customTableHeaderIcon.showIconIfValueEqualsWithNumber &&
188
- customTableHeaderIcon.showIconIfValueEqualsWithNumber === value) {
189
- icon = customTableHeaderIcon.icon;
190
- break;
191
- }
192
- }
193
- else if (typeof value === 'string') {
194
- if (customTableHeaderIcon.showIconIfValueEqualsWithString &&
195
- customTableHeaderIcon.showIconIfValueEqualsWithString === value) {
196
- icon = customTableHeaderIcon.icon;
197
- break;
198
- }
199
- }
200
- else if (typeof value === 'boolean') {
201
- if (customTableHeaderIcon.showIconIfValueBoolean &&
202
- customTableHeaderIcon.showIconIfValueBoolean === value) {
203
- icon = customTableHeaderIcon.icon;
204
- break;
205
- }
206
- }
207
- }
208
- return icon;
209
- }
210
- getColor(value, headerIndex) {
211
- if (!this.smartTable.customSmartTableHeaders) {
212
- throw new Error('CustomTableHeaders property is missing');
213
- }
214
- else if (!this.smartTable.customSmartTableHeaders[headerIndex].properties) {
215
- throw new Error(`CustomTableHeader with index ${headerIndex} does not have properties`);
216
- }
217
- else if (!this.smartTable.customSmartTableHeaders[headerIndex].properties.icons) {
218
- throw new Error(`CustomTableHeader with index ${headerIndex} does not have icons defined`);
219
- }
220
- let customTableHeaderIcons = this.smartTable.customSmartTableHeaders[headerIndex].properties.icons;
221
- let color = 'primary';
222
- for (var i = 0; i < customTableHeaderIcons.length; i++) {
223
- let customTableHeaderIcon = customTableHeaderIcons[i];
224
- if (typeof value === 'number') {
225
- if (customTableHeaderIcon.showIconIfValueBiggerThanNumber &&
226
- customTableHeaderIcon.showIconIfValueBiggerThanNumber < value) {
227
- color = customTableHeaderIcon.color;
228
- break;
229
- }
230
- else if (customTableHeaderIcon.showIconIfValueSmallerThanNumber &&
231
- customTableHeaderIcon.showIconIfValueSmallerThanNumber > value) {
232
- color = customTableHeaderIcon.color;
233
- break;
234
- }
235
- else if (customTableHeaderIcon.showIconIfValueEqualsWithNumber &&
236
- customTableHeaderIcon.showIconIfValueEqualsWithNumber === value) {
237
- color = customTableHeaderIcon.color;
238
- break;
239
- }
240
- }
241
- else if (typeof value === 'string') {
242
- if (customTableHeaderIcon.showIconIfValueEqualsWithString &&
243
- customTableHeaderIcon.showIconIfValueEqualsWithString === value) {
244
- color = customTableHeaderIcon.color;
245
- break;
246
- }
247
- }
248
- else if (typeof value === 'boolean') {
249
- if (customTableHeaderIcon.showIconIfValueBoolean &&
250
- customTableHeaderIcon.showIconIfValueBoolean === value) {
251
- color = customTableHeaderIcon.color;
252
- break;
253
- }
254
- }
255
- }
256
- return color;
257
- }
258
- tableOptionButtonDirection() {
259
- return SmartTableOptionButtonDirection;
260
- }
261
- isAllSelected() {
262
- const numSelected = this.smartTable.selection.selected.length;
263
- const numRows = this.smartTable.tableRows.length;
264
- return numSelected === numRows;
265
- }
266
- /** Selects all rows if they are not all selected; otherwise clear selection. */
267
- toggleAllRows() {
268
- if (this.isAllSelected()) {
269
- this.smartTable.selection.clear();
270
- if (this.smartTable.onAllSelection) {
271
- this.smartTable.onAllSelection(false);
272
- }
273
- return;
274
- }
275
- if (this.smartTable.maxNumOfSelectableRows) {
276
- this.smartTable.selection.clear();
277
- if (this.smartTable.onAllSelection) {
278
- this.smartTable.onAllSelection(false);
279
- }
280
- return;
281
- }
282
- if (this.smartTable.selectionProperty) {
283
- this.smartTable.selection.select(...this.smartTable.tableRows.map((row) => this.smartTable.getValueDeeply(row, this.smartTable.selectionProperty)));
284
- }
285
- else {
286
- this.smartTable.selection.select(...this.smartTable.tableRows);
287
- }
288
- if (this.smartTable.onAllSelection) {
289
- this.smartTable.onAllSelection(true);
290
- }
291
- }
292
- /** The label for the checkbox on the passed row */
293
- checkboxLabel(row) {
294
- if (!row) {
295
- return `${this.isAllSelected() ? 'deselect' : 'select'} all`;
296
- }
297
- return `${this.smartTable.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.position + 1}`;
298
- }
299
- isHighlighted(row) {
300
- if (this.smartTable.highlightProperty) {
301
- if (row['data'][this.smartTable.highlightProperty]) {
302
- return true;
303
- }
304
- }
305
- if (!this.highlightedRows || !this.highlightedRows.length) {
306
- return false;
307
- }
308
- return this.highlightedRows.includes(row);
309
- }
310
- getRowClasses(row) {
311
- let classesToAdd = [];
312
- let classesToRemove = [];
313
- classesToAdd.push(this.isHighlighted(row) ? this.smartTable.highlightClass : 'unselected');
314
- if (this.smartTable.hover) {
315
- classesToAdd.push('smartTableRowHover');
316
- }
317
- else {
318
- classesToRemove.push('smartTableRowHover');
319
- }
320
- if (this.isSelected(row)) {
321
- classesToAdd.push('selected');
322
- }
323
- else {
324
- classesToRemove.push('selected');
325
- }
326
- return SmartStyleUtility.getNgClasses(row.style, classesToAdd, classesToRemove);
327
- }
328
- getRowStyles(row) {
329
- return SmartStyleUtility.getNgStyles(row.style);
330
- }
331
- getColumnClasses(header) {
332
- return SmartStyleUtility.getNgClasses(header.style);
333
- }
334
- getColumnStyles(header) {
335
- return SmartStyleUtility.getNgStyles(header.style);
336
- }
337
- toCamelCase(css) {
338
- return css.replace(/-([a-z])/g, function (g) {
339
- return g[1].toUpperCase();
340
- });
341
- }
342
- onRowClick(row) {
343
- if (this.smartTable.highlightOnRowClick) {
344
- if (this.isHighlighted(row)) {
345
- let index = this.highlightedRows.indexOf(row, 0);
346
- this.highlightedRows.splice(index, 1);
347
- }
348
- else if (!this.highlightedRows || !this.highlightedRows.length) {
349
- this.highlightedRows = [];
350
- this.highlightedRows.push(row);
351
- }
352
- else {
353
- this.highlightedRows.push(row);
354
- }
355
- }
356
- if (this.smartTable.expandable && !this.smartTable.onRowDoubleClick) {
357
- this.onToggle(row);
358
- }
359
- if (this.smartTable.onRowClick) {
360
- this.smartTable.onRowClick(row);
361
- }
362
- }
363
- onRowDoubleClick(row) {
364
- if (this.smartTable.highlightOnRowClick) {
365
- if (this.isHighlighted(row)) {
366
- let index = this.highlightedRows.indexOf(row, 0);
367
- this.highlightedRows.splice(index, 1);
368
- }
369
- else if (!this.highlightedRows || !this.highlightedRows.length) {
370
- this.highlightedRows = [];
371
- this.highlightedRows.push(row);
372
- }
373
- else {
374
- this.highlightedRows.push(row);
375
- }
376
- }
377
- if (this.smartTable.onRowDoubleClick) {
378
- this.smartTable.onRowDoubleClick(row);
379
- }
380
- }
381
- async onToggle(element, event) {
382
- if (!this.smartTable.rowExpander) {
383
- throw new Error('SmartTableRowExpander not found!. Please provide a SmartTableRowExpander implementation.');
384
- }
385
- if (event) {
386
- event?.stopPropagation();
387
- }
388
- let oldIndex = this.smartTable.tableRows.findIndex((element) => element === this.expandedElement);
389
- if (oldIndex !== -1) {
390
- let ref = this.vcRef.filter((element, index) => index === oldIndex);
391
- ref[0].clear();
392
- }
393
- this.expandedElement = this.expandedElement === element ? null : element;
394
- let newIndex = this.smartTable.tableRows.findIndex((element) => element === this.expandedElement);
395
- let rowDataResponse;
396
- if (newIndex !== -1) {
397
- if (this.smartTable.asyncOnExpand) {
398
- this.componentRef = this.cfService.createComponent(this.vcRef?.filter((element, index) => index === newIndex)[0], LoadingComponent, new Map());
399
- rowDataResponse = await this.smartTable.rowExpander?.expandAsync(newIndex);
400
- let ref = this.vcRef.filter((element, index) => index === newIndex)[0];
401
- ref.clear();
402
- }
403
- this.componentRef = this.cfService.createComponent(this.vcRef?.filter((element, index) => index === newIndex)[0], this.smartTable.expandedComponent, new Map([['rowData', rowDataResponse]]));
404
- this.element = undefined;
405
- }
406
- }
407
- setSelection(element) {
408
- if (this.smartTable.maxNumOfSelectableRows &&
409
- this.smartTable.selection.selected.length === this.smartTable.maxNumOfSelectableRows) {
410
- return;
411
- }
412
- this.smartTable.selection?.toggle(element);
413
- this.onSelectionChanged.next();
414
- if (this.smartTable.onSelection) {
415
- this.smartTable.onSelection(element);
416
- }
417
- }
418
- showMenuButton(element, button) {
419
- let headers = this.smartTable.tableHeaders.map((header) => this.originalProperty(header));
420
- let showMenu = SmartGridToolbarActionsUtil.showMenu(element, headers);
421
- if (!showMenu) {
422
- return false;
423
- }
424
- if (button.menuItemButtons) {
425
- return true;
426
- }
427
- else if (button.menuItemButtonsPropertyName) {
428
- try {
429
- let length = this.getValue(element, button.menuItemButtonsPropertyName).length;
430
- return length > 0;
431
- }
432
- catch (error) {
433
- return false;
434
- }
435
- }
436
- return false;
437
- }
438
- getValue(element, header) {
439
- return SmartObjectUtility.getValueByPath(element, header);
440
- }
441
- showButton(button, element) {
442
- if (button.showButtonIf) {
443
- return button.showButtonIf(element);
444
- }
445
- return true;
446
- }
447
- isDisabled(element) {
448
- if (this.smartTable.isRowDisabledPropertyName) {
449
- return this.smartTable.getValueDeeply(element, this.smartTable.isRowDisabledPropertyName);
450
- }
451
- else if (this.smartTable.selectablePropertyName) {
452
- const selectable = this.smartTable.getValueDeeply(element, this.smartTable.selectablePropertyName);
453
- return selectable === undefined || selectable === null ? false : !selectable;
454
- }
455
- return false;
456
- }
457
- isSelected(element) {
458
- return (this.smartTable.selection?.isSelected(this.smartTable.selectionProperty
459
- ? this.smartTable.getValueDeeply(element, this.smartTable.selectionProperty)
460
- : element) ?? false);
461
- }
462
- originalProperty(header) {
463
- if (header.startsWith('data.')) {
464
- return header.substring('data.'.length);
465
- }
466
- return header;
467
- }
468
- isImageResource(element, header) {
469
- if (!element.icons) {
470
- return false;
471
- }
472
- let property = this.originalProperty(header);
473
- return Object.keys(element.icons).some((key) => key === property);
474
- }
475
- getImageResourceIcons(element, header) {
476
- if (element?.icons) {
477
- let iconCodes = element?.icons[this.originalProperty(header)];
478
- return iconCodes;
479
- }
480
- return [];
481
- }
482
- getImageResourceIcon(element, header) {
483
- return element.icons[this.originalProperty(header)].identifier;
484
- }
485
- getImageResourceColor(element, header) {
486
- return element.icons[this.originalProperty(header)].color ?? 'primary';
487
- }
488
- getImageResourceStyle(resource) {
489
- return resource.style ? resource.style : {};
490
- }
491
- openDefaultActionsMenu(event, row) {
492
- let actionCodesFromRow = row?.actions?.map((action) => action.code);
493
- if (!actionCodesFromRow) {
494
- return;
495
- }
496
- let filteredActions = this.smartTable.defaultActions?.filter((action) => actionCodesFromRow.includes(action.code));
497
- if (filteredActions && filteredActions.length > 0) {
498
- if (filteredActions.length === 1) {
499
- if (this.smartTable.onRowDoubleClick) {
500
- this.smartTable.onRowDoubleClick(row);
501
- return;
502
- }
503
- }
504
- this.defaultActionMenuComponents
505
- .toArray()
506
- .find((comp) => comp.row.id === row.id)
507
- ?.openDefaultActionsMenu(event);
508
- }
509
- }
510
- getDefaultActionsForRow(element) {
511
- if (element?.actions) {
512
- const actionCodesFromRow = new Map(element?.actions?.map((action) => [action.code, action]));
513
- return new Map(this.smartTable.defaultActions
514
- ?.filter((action) => actionCodesFromRow.has(action.code))
515
- .map((action) => [action, actionCodesFromRow.get(action.code)]));
516
- }
517
- return undefined;
518
- }
519
- getRowColumnAction(row, header) {
520
- return SmartGridToolbarActionsUtil.getActionModelsFromMap(this.cellToActionMap, row, this.originalProperty(header));
521
- }
522
- showCellToolbar(row, columnName) {
523
- return SmartGridToolbarActionsUtil.showToolbar(row, this.originalProperty(columnName));
524
- }
525
- getRowMenuActionModel(element) {
526
- const service = this.smartTable.getServiceToUse();
527
- const gridId = this.smartTable.getGridId();
528
- if (!service || !gridId)
529
- return undefined;
530
- const leftoverActions = SmartGridToolbarActionsUtil.calculateMenuActionModels(element, this.smartTable.tableHeaders, service, gridId);
531
- const menuUiAction = {
532
- code: 'rowMenu',
533
- descriptor: {
534
- icon: 'more_vert',
535
- title: '',
536
- type: UiActionButtonType.ICON,
537
- color: 'primary',
538
- },
539
- subActions: leftoverActions.map((m) => m.uiAction),
540
- };
541
- return {
542
- serviceToUse: service,
543
- uiAction: menuUiAction,
544
- nodeId: element.id,
545
- widgetId: gridId,
546
- };
547
- }
548
- getRowMenuActionModelArray(element) {
549
- var cacheKey = element.id;
550
- if (this.rowMenuActionModelArrayCache.has(cacheKey)) {
551
- return this.rowMenuActionModelArrayCache.get(cacheKey);
552
- }
553
- var model = this.getRowMenuActionModel(element);
554
- var arr = model ? [model] : [];
555
- this.rowMenuActionModelArrayCache.set(cacheKey, arr);
556
- return arr;
557
- }
558
- shouldShowMenuButton(row) {
559
- return SmartGridToolbarActionsUtil.showMenu(row, this.smartTable.tableHeaders);
560
- }
561
- // OLD STUFF
562
- getMenuButtons(row, button) {
563
- let columnActions = row.columnActions ?? {};
564
- // Filter for columnActions that are in a columnAction, but the column is not in the headers
565
- let filteredActionColumns = Object.keys(columnActions)
566
- .filter((key) => this.smartTable.tableHeaders.includes('data.' + key))
567
- .reduce((acc, key) => {
568
- acc[key] = columnActions[key];
569
- return acc;
570
- }, {});
571
- let columnCodes = Object.values(filteredActionColumns).flat();
572
- return (button.menuItemButtons || []).filter((btn) => !columnCodes.includes(btn.code));
573
- }
574
- getMenuItemButtonsPropertyName(element, button) {
575
- let buttons = this.getValue(element, button.menuItemButtonsPropertyName);
576
- let gridRow = element;
577
- let columnActions = gridRow.columnActions ?? {};
578
- // Filter for columnActions that are in a columnAction, but the column is not in the headers
579
- let filteredActionColumns = Object.keys(columnActions)
580
- .filter((key) => this.smartTable.tableHeaders.includes('data.' + key))
581
- .reduce((acc, key) => {
582
- acc[key] = columnActions[key];
583
- return acc;
584
- }, {});
585
- let columnCodes = Object.values(filteredActionColumns || {}).flat();
586
- return buttons?.filter((button) => !columnCodes.includes(button.code));
587
- }
588
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: Table, deps: [{ token: i1.ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
589
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: Table, selector: "ng-component", inputs: { smartTable: "smartTable" }, viewQueries: [{ propertyName: "myTableChild", first: true, predicate: ["myTable"], descendants: true }, { propertyName: "headerToolbar", first: true, predicate: ["headerToolbar"], descendants: true }, { propertyName: "vcRef", predicate: ["expandedArea"], descendants: true, read: ViewContainerRef }, { propertyName: "defaultActionMenuComponents", predicate: DefaultActionsPopupComponent, descendants: true }, { propertyName: "triggers", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: '', isInline: true }); }
590
- }
591
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: Table, decorators: [{
592
- type: Component,
593
- args: [{
594
- template: '',
595
- }]
596
- }], ctorParameters: () => [{ type: i1.ComponentFactoryService }], propDecorators: { vcRef: [{
597
- type: ViewChildren,
598
- args: ['expandedArea', { read: ViewContainerRef }]
599
- }], defaultActionMenuComponents: [{
600
- type: ViewChildren,
601
- args: [DefaultActionsPopupComponent]
602
- }], myTableChild: [{
603
- type: ViewChild,
604
- args: ['myTable']
605
- }], headerToolbar: [{
606
- type: ViewChild,
607
- args: ['headerToolbar']
608
- }], smartTable: [{
609
- type: Input
610
- }], triggers: [{
611
- type: ViewChildren,
612
- args: [MatMenuTrigger]
613
- }] } });
614
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS90YWJsZXMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBR0wsa0JBQWtCLEdBRW5CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLG9CQUFvQixFQUVwQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUl4RCxNQUFNLE9BQU8sS0FBSztJQTRCaEIsWUFBc0IsU0FBa0M7UUFBbEMsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUEzQmpELGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVloRCxjQUFTLEdBQUcsY0FBYyxDQUFDO1FBQzNCLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQzVDLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBOEIs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LFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7NEZBSUMsS0FBSztzQkFESixZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFLeEQsMkJBQTJCO3NCQUQxQixZQUFZO3VCQUFDLDRCQUE0QjtnQkFHcEIsWUFBWTtzQkFBakMsU0FBUzt1QkFBQyxTQUFTO2dCQUNRLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFFakIsVUFBVTtzQkFBbEIsS0FBSztnQkFPd0IsUUFBUTtzQkFBckMsWUFBWTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7XHJcbiAgSW1hZ2VSZXNvdXJjZSxcclxuICBVaUFjdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25Ub29sdGlwLFxyXG59IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuaW1wb3J0IHsgU21hcnRTdHlsZVV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1zdHlsZS11dGlsaXR5JztcclxuaW1wb3J0IHsgRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTbWFydFRhYmxlLFxyXG4gIFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgU21hcnRUYWJsZUJ1dHRvblR5cGUsXHJcbiAgU21hcnRUYWJsZUhlYWRlcixcclxuICBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlLFxyXG4gIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24sXHJcbiAgU21hcnRUYWJsZU9yZGVyLFxyXG4gIFNtYXJ0VGFibGVUeXBlLFxyXG59IGZyb20gJy4uL3NtYXJ0dGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydE9iamVjdFV0aWxpdHkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9zbWFydC1vYmplY3QtdXRpbGl0eSc7XHJcbmltcG9ydCB7IFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbCB9IGZyb20gJy4uLy4uL3NtYXJ0LWdyaWQvc21hcnQtZ3JpZC10b29sYmFyLXV0aWwnO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBAVmlld0NoaWxkcmVuKCdleHBhbmRlZEFyZWEnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICB2Y1JlZj86IFZpZXdDb250YWluZXJSZWZbXTtcclxuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50KVxyXG4gIGRlZmF1bHRBY3Rpb25NZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxEZWZhdWx0QWN0aW9uc1BvcHVwQ29tcG9uZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlUYWJsZScpIG15VGFibGVDaGlsZCE6IE1hdFRhYmxlPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnaGVhZGVyVG9vbGJhcicpIGhlYWRlclRvb2xiYXIhOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIHNtYXJ0VGFibGUhOiBTbWFydFRhYmxlPGFueT47XHJcbiAgdGFibGVUeXBlID0gU21hcnRUYWJsZVR5cGU7XHJcbiAgc21hcnRUYWJsZUJ1dHRvblR5cGUgPSBTbWFydFRhYmxlQnV0dG9uVHlwZTtcclxuICBoaWdobGlnaHRlZFJvd3M6IGFueVtdID0gW107XHJcbiAgc29ydEV2ZW50OiBTdWJqZWN0PFNtYXJ0VGFibGVIZWFkZXI+ID0gbmV3IFN1YmplY3QoKTtcclxuICBleHBhbmRlZEVsZW1lbnQ6IGFueSB8IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIHRyaWdnZXJzITogUXVlcnlMaXN0PE1hdE1lbnVUcmlnZ2VyPjtcclxuXHJcbiAgZWxlbWVudD86IGFueTtcclxuXHJcbiAgLy8gQ2VsbHMgdG8gVWlBY3Rpb24gbW9kZWxzLCB1c2VkIGZvciB0b29sYmFycyBpbiBjZWxsc1xyXG4gIGNlbGxUb0FjdGlvbk1hcDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgYXN5bmNUcmFuc2xhdGlvblJlc3VsdCA9ICh0cmFuc2xhdG9yOiBhbnksIHBhcmFtOiBzdHJpbmcpID0+IHRyYW5zbGF0b3IocGFyYW0pO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX1NFUEVSQVRPUiA9ICdfYWN0aW9uU2VwYXJhdG9yXyc7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5zb3J0YWJsZSkgdGhpcy5zb3J0RXZlbnQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgdGhpcy5jcmVhdGVDZWxsVG9BY3Rpb25NYXAoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9uUm93Q2xpY2soZWxlbWVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuSU5IRVJJVEVEKSB7XHJcbiAgICAgIHRoaXMub25Sb3dDbGljayhlbGVtZW50KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydFRhYmxlLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuQ0hFQ0tfQk9YKSB7XHJcbiAgICAgIGlmICghdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2sgJiYgIXRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS5vblJvd0NsaWNrKSB7XHJcbiAgICAgICAgdGhpcy5vblJvd0NsaWNrKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLlJPV19TRUxFQ1QpIHtcclxuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICA/IHRoaXMuc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICA6IGVsZW1lbnRcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNtYXJ0VGFibGUoc21hcnRUYWJsZTogU21hcnRUYWJsZTxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLnNtYXJ0VGFibGUgPSBzbWFydFRhYmxlO1xyXG4gICAgdGhpcy5yZW5kZXJSb3dzKCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJSb3dzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVDZWxsVG9BY3Rpb25NYXAoKTtcclxuICAgIHRoaXMubXlUYWJsZUNoaWxkLnJlbmRlclJvd3MoKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNlbGxUb0FjdGlvbk1hcCgpIHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0U2VydmljZVRvVXNlKCk7XHJcbiAgICBjb25zdCBncmlkSWQgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0R3JpZElkKCk7XHJcblxyXG4gICAgaWYgKHNlcnZpY2UgJiYgZ3JpZElkKSB7XHJcbiAgICAgIHRoaXMuY2VsbFRvQWN0aW9uTWFwID0gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLmNhbGN1bGF0ZUNlbGxUb0FjdGlvbk1hcChcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLFxyXG4gICAgICAgIHNlcnZpY2UsXHJcbiAgICAgICAgZ3JpZElkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPblJvd0RvdWJsZUNsaWNrKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9ucyAmJiB0aGlzLnNtYXJ0VGFibGUuZGVmYXVsdEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLklOSEVSSVRFRCkge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUudGFibGVUeXBlID09PSBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1gpIHtcclxuICAgICAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljayhlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHR5cGUoKTogdHlwZW9mIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUge1xyXG4gICAgcmV0dXJuIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBzb3J0QnV0dG9uQ2xpY2tlZChldmVudDogYW55LCBoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zb3J0RXZlbnQubmV4dChoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tQnV0dG9uQ2xpY2tlZChcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBidXR0b246IFNtYXJ0VGFibGVCdXR0b24sXHJcbiAgICBlbGVtZW50OiBhbnksXHJcbiAgICBidG4/OiBhbnksXHJcbiAgICBjbG9zZT86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGJ0bj8uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChidXR0b24udHlwZSA9PT0gU21hcnRUYWJsZUJ1dHRvblR5cGUuTUVOVSAmJiBidG4gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghYnV0dG9uLmNhbGxiYWNrKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQnV0dG9uIHdpdGggbmFtZSAke2J1dHRvbi5sYWJlbCB8fCBidXR0b24uaWNvbn0gZG9lcyBub3QgaGF2ZSBhIGNhbGxiYWNrIWApO1xyXG4gICAgfVxyXG4gICAgYnV0dG9uLmNhbGxiYWNrKGJ1dHRvbi5hcmdzLCBlbGVtZW50LCBidG4pO1xyXG4gICAgaWYgKGNsb3NlKSB7XHJcbiAgICAgIGxldCBvcGVuTWVudXMgPSB0aGlzLnRyaWdnZXJzLmZpbHRlcihcclxuICAgICAgICAobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiBtYXRNZW51VHJpZ2dlci5tZW51T3BlblxyXG4gICAgICApO1xyXG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgbWF0TWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNTb3J0YWJsZShoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1NvcnRhYmxlVGFibGUgPSB0aGlzLnNtYXJ0VGFibGUuc29ydGFibGU7XHJcbiAgICBpZiAoaXNTb3J0YWJsZVRhYmxlKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXIuaXNTb3J0YWJsZSAhPT0gdW5kZWZpbmVkID8gaGVhZGVyLmlzU29ydGFibGUgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydEljb24oaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IHRhYmxlSGVhZGVyID0gdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPy5maW5kKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlSGVhZGVyICYmIHRhYmxlSGVhZGVyLm9yZGVyKSB7XHJcbiAgICAgIHJldHVybiB0YWJsZUhlYWRlci5vcmRlciA9PT0gU21hcnRUYWJsZU9yZGVyLkFTQ1xyXG4gICAgICAgID8gKHRoaXMuc21hcnRUYWJsZS5zb3J0SWNvbkFzYyA/PyAna2V5Ym9hcmRfYXJyb3dfZG93bicpXHJcbiAgICAgICAgOiAodGhpcy5zbWFydFRhYmxlLnNvcnRJY29uRGVzYyA/PyAna2V5Ym9hcmRfYXJyb3dfdXAnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGhhc1NvcnROdW1JY29uKGhlYWRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdGFibGVIZWFkZXIgPSB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbmQoXHJcbiAgICAgICh0YWJsZUhlYWRlcjogU21hcnRUYWJsZUhlYWRlcikgPT4gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSBoZWFkZXJcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGFibGVIZWFkZXI/Lm9yZGVyTnVtYmVyICE9PSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGdldFNvcnROdW1JY29uKGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCB0YWJsZUhlYWRlciA9IHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmluZChcclxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlclxyXG4gICAgKTtcclxuICAgIGlmICh0YWJsZUhlYWRlciAmJiB0YWJsZUhlYWRlci5vcmRlck51bWJlcikge1xyXG4gICAgICByZXR1cm4gYGZpbHRlcl8ke3RhYmxlSGVhZGVyLm9yZGVyTnVtYmVyfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sVGlwKGVsZW1lbnQ6IGFueSwgaGVhZGVySW5kZXg6IG51bWJlcik6IFVpQWN0aW9uVG9vbHRpcCB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1c3RvbVRhYmxlSGVhZGVycyBwcm9wZXJ0eSBpcyBtaXNzaW5nJyk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgcHJvcGVydGllc2ApO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBpY29ucyBkZWZpbmVkYCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRvb2xUaXBDb2x1bW4gPVxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXM/LnRvb2xUaXBDb2x1bW47XHJcbiAgICByZXR1cm4gdG9vbFRpcENvbHVtbiA/IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCwgdG9vbFRpcENvbHVtbikgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRJY29uKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLCBoZWFkZXJJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tVGFibGVIZWFkZXJzIHByb3BlcnR5IGlzIG1pc3NpbmcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMhLmljb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tVGFibGVIZWFkZXIgd2l0aCBpbmRleCAke2hlYWRlckluZGV4fSBkb2VzIG5vdCBoYXZlIGljb25zIGRlZmluZWRgKTtcclxuICAgIH1cclxuICAgIGxldCBjdXN0b21UYWJsZUhlYWRlckljb25zID1cclxuICAgICAgdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucztcclxuXHJcbiAgICBsZXQgaWNvbjogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXN0b21UYWJsZUhlYWRlckljb25zIS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29ucyFbaV07XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVOdWxsICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlTnVsbCA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlciA8IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmljb247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXIgPiB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlciA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGljb24gPSBjdXN0b21UYWJsZUhlYWRlckljb24uaWNvbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJvb2xlYW4gJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuID09PSB2YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWNvbiA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5pY29uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGljb247XHJcbiAgfVxyXG5cclxuICBnZXRDb2xvcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiwgaGVhZGVySW5kZXg6IG51bWJlcik6IFRoZW1lUGFsZXR0ZSB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0N1c3RvbVRhYmxlSGVhZGVycyBwcm9wZXJ0eSBpcyBtaXNzaW5nJyk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaGVhZGVySW5kZXhdLnByb3BlcnRpZXMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXN0b21UYWJsZUhlYWRlciB3aXRoIGluZGV4ICR7aGVhZGVySW5kZXh9IGRvZXMgbm90IGhhdmUgcHJvcGVydGllc2ApO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5zbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2hlYWRlckluZGV4XS5wcm9wZXJ0aWVzIS5pY29ucykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbVRhYmxlSGVhZGVyIHdpdGggaW5kZXggJHtoZWFkZXJJbmRleH0gZG9lcyBub3QgaGF2ZSBpY29ucyBkZWZpbmVkYCk7XHJcbiAgICB9XHJcbiAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29ucyA9XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1toZWFkZXJJbmRleF0ucHJvcGVydGllcyEuaWNvbnM7XHJcblxyXG4gICAgbGV0IGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAncHJpbWFyeSc7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXN0b21UYWJsZUhlYWRlckljb25zIS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY3VzdG9tVGFibGVIZWFkZXJJY29uID0gY3VzdG9tVGFibGVIZWFkZXJJY29ucyFbaV07XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUJpZ2dlclRoYW5OdW1iZXIgJiZcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyIDwgdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlciAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZVNtYWxsZXJUaGFuTnVtYmVyID4gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoTnVtYmVyICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlciA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aFN0cmluZyAmJlxyXG4gICAgICAgICAgY3VzdG9tVGFibGVIZWFkZXJJY29uLnNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmcgPT09IHZhbHVlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGN1c3RvbVRhYmxlSGVhZGVySWNvbi5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGN1c3RvbVRhYmxlSGVhZGVySWNvbi5zaG93SWNvbklmVmFsdWVCb29sZWFuICYmXHJcbiAgICAgICAgICBjdXN0b21UYWJsZUhlYWRlckljb24uc2hvd0ljb25JZlZhbHVlQm9vbGVhbiA9PT0gdmFsdWVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbG9yID0gY3VzdG9tVGFibGVIZWFkZXJJY29uLmNvbG9yO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbG9yO1xyXG4gIH1cclxuXHJcbiAgdGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24oKTogdHlwZW9mIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24ge1xyXG4gICAgcmV0dXJuIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb247XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCkge1xyXG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5sZW5ndGg7XHJcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xyXG4gIHRvZ2dsZUFsbFJvd3MoKSB7XHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuY2xlYXIoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24oZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93cykge1xyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uIS5jbGVhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5vbkFsbFNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdChcclxuICAgICAgICAuLi50aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzLm1hcCgocm93OiBhbnkpID0+XHJcbiAgICAgICAgICB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkocm93LCB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkhKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLnNlbGVjdCguLi50aGlzLnNtYXJ0VGFibGUudGFibGVSb3dzKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25BbGxTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uQWxsU2VsZWN0aW9uKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBsYWJlbCBmb3IgdGhlIGNoZWNrYm94IG9uIHRoZSBwYXNzZWQgcm93ICovXHJcbiAgY2hlY2tib3hMYWJlbChyb3c/OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFyb3cpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuaXNBbGxTZWxlY3RlZCgpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSBhbGxgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3RoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24hLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93ICR7XHJcbiAgICAgIHJvdy5wb3NpdGlvbiArIDFcclxuICAgIH1gO1xyXG4gIH1cclxuXHJcbiAgaXNIaWdobGlnaHRlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRQcm9wZXJ0eSkge1xyXG4gICAgICBpZiAocm93WydkYXRhJ11bdGhpcy5zbWFydFRhYmxlLmhpZ2hsaWdodFByb3BlcnR5XSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmhpZ2hsaWdodGVkUm93cyB8fCAhdGhpcy5oaWdobGlnaHRlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodGVkUm93cy5pbmNsdWRlcyhyb3cpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um93Q2xhc3Nlcyhyb3c6IGFueSkge1xyXG4gICAgbGV0IGNsYXNzZXNUb0FkZDogc3RyaW5nW10gPSBbXTtcclxuICAgIGxldCBjbGFzc2VzVG9SZW1vdmU6IHN0cmluZ1tdID0gW107XHJcbiAgICBjbGFzc2VzVG9BZGQucHVzaCh0aGlzLmlzSGlnaGxpZ2h0ZWQocm93KSA/IHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRDbGFzcyEgOiAndW5zZWxlY3RlZCcpO1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5ob3Zlcikge1xyXG4gICAgICBjbGFzc2VzVG9BZGQucHVzaCgnc21hcnRUYWJsZVJvd0hvdmVyJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbGFzc2VzVG9SZW1vdmUucHVzaCgnc21hcnRUYWJsZVJvd0hvdmVyJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHJvdykpIHtcclxuICAgICAgY2xhc3Nlc1RvQWRkLnB1c2goJ3NlbGVjdGVkJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbGFzc2VzVG9SZW1vdmUucHVzaCgnc2VsZWN0ZWQnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXMocm93LnN0eWxlLCBjbGFzc2VzVG9BZGQsIGNsYXNzZXNUb1JlbW92ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRSb3dTdHlsZXMocm93OiBhbnkpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyhyb3cuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1uQ2xhc3NlcyhoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ0NsYXNzZXMoaGVhZGVyLnN0eWxlKTtcclxuICB9XHJcblxyXG4gIGdldENvbHVtblN0eWxlcyhoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpIHtcclxuICAgIHJldHVybiBTbWFydFN0eWxlVXRpbGl0eS5nZXROZ1N0eWxlcyhoZWFkZXIuc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0NhbWVsQ2FzZShjc3M6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gY3NzLnJlcGxhY2UoLy0oW2Etel0pL2csIGZ1bmN0aW9uIChnKSB7XHJcbiAgICAgIHJldHVybiBnWzFdLnRvVXBwZXJDYXNlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0VGFibGUuaGlnaGxpZ2h0T25Sb3dDbGljaykge1xyXG4gICAgICBpZiAodGhpcy5pc0hpZ2hsaWdodGVkKHJvdykpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmhpZ2hsaWdodGVkUm93cy5pbmRleE9mKHJvdywgMCk7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5oaWdobGlnaHRlZFJvd3MgfHwgIXRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzID0gW107XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLnB1c2gocm93KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5leHBhbmRhYmxlICYmICF0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICB0aGlzLm9uVG9nZ2xlKHJvdyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2spIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93Q2xpY2socm93KTtcclxuICAgIH1cclxuICB9XHJcbiAgb25Sb3dEb3VibGVDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5oaWdobGlnaHRPblJvd0NsaWNrKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzSGlnaGxpZ2h0ZWQocm93KSkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuaGlnaGxpZ2h0ZWRSb3dzLmluZGV4T2Yocm93LCAwKTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZ2hsaWdodGVkUm93cyB8fCAhdGhpcy5oaWdobGlnaHRlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MgPSBbXTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2spIHtcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2socm93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9uVG9nZ2xlKGVsZW1lbnQ6IGFueSwgZXZlbnQ/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLnJvd0V4cGFuZGVyKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnU21hcnRUYWJsZVJvd0V4cGFuZGVyIG5vdCBmb3VuZCEuIFBsZWFzZSBwcm92aWRlIGEgU21hcnRUYWJsZVJvd0V4cGFuZGVyIGltcGxlbWVudGF0aW9uLidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvbGRJbmRleCA9IHRoaXMuc21hcnRUYWJsZS50YWJsZVJvd3MuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudCA9PT0gdGhpcy5leHBhbmRlZEVsZW1lbnRcclxuICAgICk7XHJcbiAgICBpZiAob2xkSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnZjUmVmIS5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG9sZEluZGV4KTtcclxuICAgICAgcmVmWzBdLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZGVkRWxlbWVudCA9IHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50ID8gbnVsbCA6IGVsZW1lbnQ7XHJcblxyXG4gICAgbGV0IG5ld0luZGV4ID0gdGhpcy5zbWFydFRhYmxlLnRhYmxlUm93cy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50ID09PSB0aGlzLmV4cGFuZGVkRWxlbWVudFxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcm93RGF0YVJlc3BvbnNlO1xyXG5cclxuICAgIGlmIChuZXdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRUYWJsZS5hc3luY09uRXhwYW5kKSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXHJcbiAgICAgICAgICBMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJvd0RhdGFSZXNwb25zZSA9IGF3YWl0IHRoaXMuc21hcnRUYWJsZS5yb3dFeHBhbmRlcj8uZXhwYW5kQXN5bmMobmV3SW5kZXgpO1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy52Y1JlZiEuZmlsdGVyKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID09PSBuZXdJbmRleClbMF0hO1xyXG4gICAgICAgIHJlZi5jbGVhcigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgICB0aGlzLnZjUmVmPy5maWx0ZXIoKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gaW5kZXggPT09IG5ld0luZGV4KVswXSEsXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLmV4cGFuZGVkQ29tcG9uZW50LFxyXG4gICAgICAgIG5ldyBNYXA8c3RyaW5nLCBhbnk+KFtbJ3Jvd0RhdGEnLCByb3dEYXRhUmVzcG9uc2VdXSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZWxlbWVudCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihlbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLm1heE51bU9mU2VsZWN0YWJsZVJvd3MgJiZcclxuICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbiEuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLnNtYXJ0VGFibGUubWF4TnVtT2ZTZWxlY3RhYmxlUm93c1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb24/LnRvZ2dsZShlbGVtZW50KTtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLm5leHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydFRhYmxlLm9uU2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS5vblNlbGVjdGlvbihlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dNZW51QnV0dG9uKGVsZW1lbnQ6IGFueSwgYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaGVhZGVyczogc3RyaW5nW10gPSB0aGlzLnNtYXJ0VGFibGUudGFibGVIZWFkZXJzLm1hcCgoaGVhZGVyKSA9PlxyXG4gICAgICB0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKVxyXG4gICAgKTtcclxuICAgIGxldCBzaG93TWVudSA9IFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbC5zaG93TWVudShlbGVtZW50LCBoZWFkZXJzKTtcclxuXHJcbiAgICBpZiAoIXNob3dNZW51KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9ucykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCBsZW5ndGggPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQsIGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWUhKS5sZW5ndGg7XHJcbiAgICAgICAgcmV0dXJuIGxlbmd0aCA+IDA7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZShlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBTbWFydE9iamVjdFV0aWxpdHkuZ2V0VmFsdWVCeVBhdGgoZWxlbWVudCwgaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIHNob3dCdXR0b24oYnV0dG9uOiBTbWFydFRhYmxlQnV0dG9uLCBlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChidXR0b24uc2hvd0J1dHRvbklmKSB7XHJcbiAgICAgIHJldHVybiBidXR0b24uc2hvd0J1dHRvbklmKGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkKGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc21hcnRUYWJsZS5pc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0VGFibGUuc2VsZWN0YWJsZVByb3BlcnR5TmFtZSkge1xyXG4gICAgICBjb25zdCBzZWxlY3RhYmxlID0gdGhpcy5zbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KFxyXG4gICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGFibGVQcm9wZXJ0eU5hbWVcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHNlbGVjdGFibGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RhYmxlID09PSBudWxsID8gZmFsc2UgOiAhc2VsZWN0YWJsZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uPy5pc1NlbGVjdGVkKFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgPyB0aGlzLnNtYXJ0VGFibGUuZ2V0VmFsdWVEZWVwbHkoZWxlbWVudCwgdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgOiBlbGVtZW50XHJcbiAgICAgICkgPz8gZmFsc2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvcmlnaW5hbFByb3BlcnR5KGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChoZWFkZXIuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gaGVhZGVyLnN1YnN0cmluZygnZGF0YS4nLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGVhZGVyO1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZVJlc291cmNlKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghZWxlbWVudC5pY29ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKTtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbGVtZW50Lmljb25zKS5zb21lKChrZXkpID0+IGtleSA9PT0gcHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUljb25zKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBJbWFnZVJlc291cmNlW10ge1xyXG4gICAgaWYgKGVsZW1lbnQ/Lmljb25zKSB7XHJcbiAgICAgIGxldCBpY29uQ29kZXMgPSBlbGVtZW50Py5pY29uc1t0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKV07XHJcbiAgICAgIHJldHVybiBpY29uQ29kZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVJlc291cmNlSWNvbihlbGVtZW50OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBlbGVtZW50Lmljb25zW3RoaXMub3JpZ2luYWxQcm9wZXJ0eShoZWFkZXIpXS5pZGVudGlmaWVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VSZXNvdXJjZUNvbG9yKGVsZW1lbnQ6IGFueSwgaGVhZGVyOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuaWNvbnNbdGhpcy5vcmlnaW5hbFByb3BlcnR5KGhlYWRlcildLmNvbG9yID8/ICdwcmltYXJ5JztcclxuICB9XHJcblxyXG4gIGdldEltYWdlUmVzb3VyY2VTdHlsZShyZXNvdXJjZTogSW1hZ2VSZXNvdXJjZSk6IGFueSB7XHJcbiAgICByZXR1cm4gcmVzb3VyY2Uuc3R5bGUgPyByZXNvdXJjZS5zdHlsZSA6IHt9O1xyXG4gIH1cclxuXHJcbiAgb3BlbkRlZmF1bHRBY3Rpb25zTWVudShldmVudDogYW55LCByb3c6IGFueSkge1xyXG4gICAgbGV0IGFjdGlvbkNvZGVzRnJvbVJvdyA9IHJvdz8uYWN0aW9ucz8ubWFwKChhY3Rpb246IFVpQWN0aW9uKSA9PiBhY3Rpb24uY29kZSk7XHJcbiAgICBpZiAoIWFjdGlvbkNvZGVzRnJvbVJvdykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZmlsdGVyZWRBY3Rpb25zID0gdGhpcy5zbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25zPy5maWx0ZXIoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT5cclxuICAgICAgYWN0aW9uQ29kZXNGcm9tUm93LmluY2x1ZGVzKGFjdGlvbi5jb2RlISlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGZpbHRlcmVkQWN0aW9ucyAmJiBmaWx0ZXJlZEFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoZmlsdGVyZWRBY3Rpb25zLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLnNtYXJ0VGFibGUub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICAgICAgdGhpcy5zbWFydFRhYmxlLm9uUm93RG91YmxlQ2xpY2socm93KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kZWZhdWx0QWN0aW9uTWVudUNvbXBvbmVudHNcclxuICAgICAgICAudG9BcnJheSgpXHJcbiAgICAgICAgLmZpbmQoKGNvbXA6IERlZmF1bHRBY3Rpb25zUG9wdXBDb21wb25lbnQpID0+IGNvbXAucm93LmlkID09PSByb3cuaWQpXHJcbiAgICAgICAgPy5vcGVuRGVmYXVsdEFjdGlvbnNNZW51KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRBY3Rpb25zRm9yUm93KGVsZW1lbnQ6IGFueSk6IE1hcDxTbWFydFRhYmxlQnV0dG9uLCBVaUFjdGlvbj4gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKGVsZW1lbnQ/LmFjdGlvbnMpIHtcclxuICAgICAgY29uc3QgYWN0aW9uQ29kZXNGcm9tUm93ID0gbmV3IE1hcDxzdHJpbmcsIFVpQWN0aW9uPihcclxuICAgICAgICBlbGVtZW50Py5hY3Rpb25zPy5tYXAoKGFjdGlvbjogVWlBY3Rpb24pID0+IFthY3Rpb24uY29kZSwgYWN0aW9uXSlcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIG5ldyBNYXA8U21hcnRUYWJsZUJ1dHRvbiwgVWlBY3Rpb24+KFxyXG4gICAgICAgIHRoaXMuc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9uc1xyXG4gICAgICAgICAgPy5maWx0ZXIoKGFjdGlvbjogU21hcnRUYWJsZUJ1dHRvbikgPT4gYWN0aW9uQ29kZXNGcm9tUm93LmhhcyhhY3Rpb24uY29kZSEpKVxyXG4gICAgICAgICAgLm1hcCgoYWN0aW9uOiBTbWFydFRhYmxlQnV0dG9uKSA9PiBbYWN0aW9uLCBhY3Rpb25Db2Rlc0Zyb21Sb3cuZ2V0KGFjdGlvbi5jb2RlISkhXSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tIFRvb2xiYXIgLS0tLVxyXG4gIGRlZmF1bHRBY3Rpb25Ub29sYmFySWQ6IHN0cmluZyA9IFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbC5kZWZhdWx0QWN0aW9uVG9vbGJhcklkO1xyXG5cclxuICBnZXRSb3dDb2x1bW5BY3Rpb24ocm93OiBhbnksIGhlYWRlcjogc3RyaW5nKTogYW55W10ge1xyXG4gICAgcmV0dXJuIFNtYXJ0R3JpZFRvb2xiYXJBY3Rpb25zVXRpbC5nZXRBY3Rpb25Nb2RlbHNGcm9tTWFwKFxyXG4gICAgICB0aGlzLmNlbGxUb0FjdGlvbk1hcCxcclxuICAgICAgcm93LFxyXG4gICAgICB0aGlzLm9yaWdpbmFsUHJvcGVydHkoaGVhZGVyKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNob3dDZWxsVG9vbGJhcihyb3c6IGFueSwgY29sdW1uTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLnNob3dUb29sYmFyKHJvdywgdGhpcy5vcmlnaW5hbFByb3BlcnR5KGNvbHVtbk5hbWUpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcm93TWVudUFjdGlvbk1vZGVsQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xyXG5cclxuICBnZXRSb3dNZW51QWN0aW9uTW9kZWwoZWxlbWVudDogYW55KTogYW55IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0U2VydmljZVRvVXNlKCk7XHJcbiAgICBjb25zdCBncmlkSWQgPSB0aGlzLnNtYXJ0VGFibGUuZ2V0R3JpZElkKCk7XHJcblxyXG4gICAgaWYgKCFzZXJ2aWNlIHx8ICFncmlkSWQpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgbGVmdG92ZXJBY3Rpb25zID0gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLmNhbGN1bGF0ZU1lbnVBY3Rpb25Nb2RlbHMoXHJcbiAgICAgIGVsZW1lbnQsXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZS50YWJsZUhlYWRlcnMsXHJcbiAgICAgIHNlcnZpY2UsXHJcbiAgICAgIGdyaWRJZFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBtZW51VWlBY3Rpb246IFVpQWN0aW9uID0ge1xyXG4gICAgICBjb2RlOiAncm93TWVudScsXHJcbiAgICAgIGRlc2NyaXB0b3I6IHtcclxuICAgICAgICBpY29uOiAnbW9yZV92ZXJ0JyxcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgICAgfSxcclxuICAgICAgc3ViQWN0aW9uczogbGVmdG92ZXJBY3Rpb25zLm1hcCgobSkgPT4gbS51aUFjdGlvbiksXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNlcnZpY2VUb1VzZTogc2VydmljZSxcclxuICAgICAgdWlBY3Rpb246IG1lbnVVaUFjdGlvbixcclxuICAgICAgbm9kZUlkOiBlbGVtZW50LmlkLFxyXG4gICAgICB3aWRnZXRJZDogZ3JpZElkLFxyXG4gICAgfTtcclxuICB9XHJcbiAgcHJpdmF0ZSByb3dNZW51QWN0aW9uTW9kZWxBcnJheUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xyXG5cclxuICBnZXRSb3dNZW51QWN0aW9uTW9kZWxBcnJheShlbGVtZW50OiBhbnkpOiBhbnlbXSB7XHJcbiAgICB2YXIgY2FjaGVLZXkgPSBlbGVtZW50LmlkO1xyXG4gICAgaWYgKHRoaXMucm93TWVudUFjdGlvbk1vZGVsQXJyYXlDYWNoZS5oYXMoY2FjaGVLZXkpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvd01lbnVBY3Rpb25Nb2RlbEFycmF5Q2FjaGUuZ2V0KGNhY2hlS2V5KSE7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXRSb3dNZW51QWN0aW9uTW9kZWwoZWxlbWVudCk7XHJcbiAgICB2YXIgYXJyID0gbW9kZWwgPyBbbW9kZWxdIDogW107XHJcbiAgICB0aGlzLnJvd01lbnVBY3Rpb25Nb2RlbEFycmF5Q2FjaGUuc2V0KGNhY2hlS2V5LCBhcnIpO1xyXG4gICAgcmV0dXJuIGFycjtcclxuICB9XHJcblxyXG4gIHNob3VsZFNob3dNZW51QnV0dG9uKHJvdzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gU21hcnRHcmlkVG9vbGJhckFjdGlvbnNVdGlsLnNob3dNZW51KHJvdywgdGhpcy5zbWFydFRhYmxlLnRhYmxlSGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvLyBPTEQgU1RVRkZcclxuXHJcbiAgZ2V0TWVudUJ1dHRvbnMocm93OiBhbnksIGJ1dHRvbjogU21hcnRUYWJsZUJ1dHRvbik6IFNtYXJ0VGFibGVCdXR0b25bXSB7XHJcbiAgICBsZXQgY29sdW1uQWN0aW9ucyA9IHJvdy5jb2x1bW5BY3Rpb25zID8/IHt9O1xyXG5cclxuICAgIC8vIEZpbHRlciBmb3IgY29sdW1uQWN0aW9ucyB0aGF0IGFyZSBpbiBhIGNvbHVtbkFjdGlvbiwgYnV0IHRoZSBjb2x1bW4gaXMgbm90IGluIHRoZSBoZWFkZXJzXHJcbiAgICBsZXQgZmlsdGVyZWRBY3Rpb25Db2x1bW5zID0gT2JqZWN0LmtleXMoY29sdW1uQWN0aW9ucylcclxuICAgICAgLmZpbHRlcigoa2V5KSA9PiB0aGlzLnNtYXJ0VGFibGUudGFibGVIZWFkZXJzLmluY2x1ZGVzKCdkYXRhLicgKyBrZXkpKVxyXG4gICAgICAucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGtleSkgPT4ge1xyXG4gICAgICAgICAgYWNjW2tleV0gPSBjb2x1bW5BY3Rpb25zW2tleV07XHJcbiAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+XHJcbiAgICAgICk7XHJcblxyXG4gICAgbGV0IGNvbHVtbkNvZGVzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoZmlsdGVyZWRBY3Rpb25Db2x1bW5zKS5mbGF0KCk7XHJcbiAgICByZXR1cm4gKGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnMgfHwgW10pLmZpbHRlcigoYnRuKSA9PiAhY29sdW1uQ29kZXMuaW5jbHVkZXMoYnRuLmNvZGUhKSk7XHJcbiAgfVxyXG5cclxuICBnZXRNZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWUoZWxlbWVudDogYW55LCBidXR0b246IFNtYXJ0VGFibGVCdXR0b24pOiBhbnlbXSB7XHJcbiAgICBsZXQgYnV0dG9uczogU21hcnRUYWJsZUJ1dHRvbltdID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50LCBidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lISk7XHJcbiAgICBsZXQgZ3JpZFJvdzogYW55ID0gZWxlbWVudDtcclxuXHJcbiAgICBsZXQgY29sdW1uQWN0aW9ucyA9IGdyaWRSb3cuY29sdW1uQWN0aW9ucyA/PyB7fTtcclxuXHJcbiAgICAvLyBGaWx0ZXIgZm9yIGNvbHVtbkFjdGlvbnMgdGhhdCBhcmUgaW4gYSBjb2x1bW5BY3Rpb24sIGJ1dCB0aGUgY29sdW1uIGlzIG5vdCBpbiB0aGUgaGVhZGVyc1xyXG4gICAgbGV0IGZpbHRlcmVkQWN0aW9uQ29sdW1ucyA9IE9iamVjdC5rZXlzKGNvbHVtbkFjdGlvbnMpXHJcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gdGhpcy5zbWFydFRhYmxlLnRhYmxlSGVhZGVycy5pbmNsdWRlcygnZGF0YS4nICsga2V5KSlcclxuICAgICAgLnJlZHVjZShcclxuICAgICAgICAoYWNjLCBrZXkpID0+IHtcclxuICAgICAgICAgIGFjY1trZXldID0gY29sdW1uQWN0aW9uc1trZXldO1xyXG4gICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPlxyXG4gICAgICApO1xyXG4gICAgbGV0IGNvbHVtbkNvZGVzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoZmlsdGVyZWRBY3Rpb25Db2x1bW5zIHx8IHt9KS5mbGF0KCk7XHJcblxyXG4gICAgcmV0dXJuIGJ1dHRvbnM/LmZpbHRlcigoYnV0dG9uKSA9PiAhY29sdW1uQ29kZXMuaW5jbHVkZXMoYnV0dG9uLmNvZGUhKSkhO1xyXG4gIH1cclxufVxyXG4iXX0=