@smartbit4all/ng-client 6.0.31 → 7.0.0

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 (985) hide show
  1. package/MIGRATION-7.0.md +1641 -0
  2. package/README.md +199 -386
  3. package/WIDGETS.md +206 -0
  4. package/fesm2022/smartbit4all-ng-client.mjs +13661 -16214
  5. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  6. package/package.json +15 -18
  7. package/smartbit4all-ng-client-7.0.0.tgz +0 -0
  8. package/types/smartbit4all-ng-client.d.ts +10328 -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/filter.service.mjs +0 -198
  129. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +0 -91
  130. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +0 -19
  131. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +0 -17
  132. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +0 -13
  133. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +0 -2
  134. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +0 -8
  135. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +0 -2
  136. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +0 -7
  137. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +0 -2
  138. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +0 -20
  139. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +0 -2
  140. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +0 -2
  141. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +0 -2
  142. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +0 -28
  143. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +0 -2
  144. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +0 -2
  145. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +0 -32
  146. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +0 -19
  147. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +0 -17
  148. package/esm2022/lib/smart-filter-editor/api/param.mjs +0 -2
  149. package/esm2022/lib/smart-filter-editor/api/variables.mjs +0 -9
  150. package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +0 -15
  151. package/esm2022/lib/smart-filter-editor/project.mjs +0 -8
  152. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +0 -73
  153. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +0 -40
  154. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +0 -294
  155. package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +0 -2
  156. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +0 -69
  157. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +0 -63
  158. package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +0 -24
  159. package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +0 -57
  160. package/esm2022/lib/smart-form/api/api/api.mjs +0 -4
  161. package/esm2022/lib/smart-form/api/api/default.service.mjs +0 -133
  162. package/esm2022/lib/smart-form/api/api.module.mjs +0 -40
  163. package/esm2022/lib/smart-form/api/configuration.mjs +0 -91
  164. package/esm2022/lib/smart-form/api/encoder.mjs +0 -19
  165. package/esm2022/lib/smart-form/api/index.mjs +0 -7
  166. package/esm2022/lib/smart-form/api/model/dateFieldProperties.mjs +0 -13
  167. package/esm2022/lib/smart-form/api/model/divProperties.mjs +0 -2
  168. package/esm2022/lib/smart-form/api/model/fileUploaderProperties.mjs +0 -2
  169. package/esm2022/lib/smart-form/api/model/imageProperties.mjs +0 -2
  170. package/esm2022/lib/smart-form/api/model/models.mjs +0 -20
  171. package/esm2022/lib/smart-form/api/model/multiFileUploaderProperties.mjs +0 -2
  172. package/esm2022/lib/smart-form/api/model/propertyMapping.mjs +0 -13
  173. package/esm2022/lib/smart-form/api/model/recordingUploaderProperties.mjs +0 -7
  174. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +0 -14
  175. package/esm2022/lib/smart-form/api/model/smartFormInputMode.mjs +0 -22
  176. package/esm2022/lib/smart-form/api/model/smartFormWidgetDirection.mjs +0 -17
  177. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +0 -49
  178. package/esm2022/lib/smart-form/api/model/smartLayoutDefinition.mjs +0 -2
  179. package/esm2022/lib/smart-form/api/model/smartMatrixModel.mjs +0 -2
  180. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +0 -2
  181. package/esm2022/lib/smart-form/api/model/smartWidgetHint.mjs +0 -18
  182. package/esm2022/lib/smart-form/api/model/sortDefinition.mjs +0 -13
  183. package/esm2022/lib/smart-form/api/model/textBoxProperties.mjs +0 -13
  184. package/esm2022/lib/smart-form/api/model/textFieldProperties.mjs +0 -13
  185. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +0 -21
  186. package/esm2022/lib/smart-form/api/param.mjs +0 -2
  187. package/esm2022/lib/smart-form/api/variables.mjs +0 -9
  188. package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +0 -20
  189. package/esm2022/lib/smart-form/projects.mjs +0 -18
  190. package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +0 -754
  191. package/esm2022/lib/smart-form/services/smartform.service.mjs +0 -683
  192. package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +0 -15
  193. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +0 -193
  194. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +0 -2
  195. package/esm2022/lib/smart-form/smartform.component.mjs +0 -190
  196. package/esm2022/lib/smart-form/smartform.form-model.mjs +0 -2
  197. package/esm2022/lib/smart-form/smartform.model.mjs +0 -38
  198. package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +0 -179
  199. package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +0 -83
  200. package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +0 -170
  201. package/esm2022/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.mjs +0 -151
  202. package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +0 -35
  203. package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +0 -79
  204. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +0 -1050
  205. package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +0 -78
  206. package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +0 -31
  207. package/esm2022/lib/smart-generic-pages/acl-editing-view/acl-editing-view.component.mjs +0 -98
  208. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/aCL.mjs +0 -2
  209. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/aCLEntry.mjs +0 -18
  210. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/objectValidationSeverity.mjs +0 -19
  211. package/esm2022/lib/smart-generic-pages/api/platform/acl/model/subject.mjs +0 -13
  212. package/esm2022/lib/smart-generic-pages/api/platform/api-default/objectHistoryRangeData.mjs +0 -2
  213. package/esm2022/lib/smart-generic-pages/api/platform/searchpage/model/searchPageModel.mjs +0 -2
  214. package/esm2022/lib/smart-generic-pages/api/platform/subjectselector/model/subjectSelectorPageModel.mjs +0 -13
  215. package/esm2022/lib/smart-generic-pages/api/platform/validation/model/validationItem.mjs +0 -2
  216. package/esm2022/lib/smart-generic-pages/api/platform/validation/model/validationResultPageModel.mjs +0 -2
  217. package/esm2022/lib/smart-generic-pages/generic-page/generic-page.component.mjs +0 -54
  218. package/esm2022/lib/smart-generic-pages/invalid-smartlink/invalid-smartlink.component.mjs +0 -40
  219. package/esm2022/lib/smart-generic-pages/no-permission-page/no-permission-page.component.mjs +0 -40
  220. package/esm2022/lib/smart-generic-pages/projects.mjs +0 -13
  221. package/esm2022/lib/smart-generic-pages/search-page/search-page.component.mjs +0 -81
  222. package/esm2022/lib/smart-generic-pages/smart-generic-pages.module.mjs +0 -116
  223. package/esm2022/lib/smart-generic-pages/subject-selector/subject-selector.component.mjs +0 -78
  224. package/esm2022/lib/smart-generic-pages/validation-result-page/validation-result-page.component.mjs +0 -93
  225. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +0 -4
  226. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +0 -514
  227. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +0 -40
  228. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +0 -91
  229. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +0 -19
  230. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +0 -7
  231. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +0 -17
  232. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +0 -2
  233. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +0 -20
  234. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +0 -2
  235. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +0 -2
  236. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +0 -2
  237. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +0 -2
  238. package/esm2022/lib/smart-grid/api/grid-api/model/gridRowLayoutDescriptor.mjs +0 -2
  239. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +0 -13
  240. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +0 -18
  241. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +0 -17
  242. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +0 -2
  243. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +0 -2
  244. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +0 -2
  245. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +0 -8
  246. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +0 -16
  247. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +0 -2
  248. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +0 -9
  249. package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +0 -20
  250. package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +0 -47
  251. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +0 -92
  252. package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +0 -200
  253. package/esm2022/lib/smart-grid/models/model.mjs +0 -29
  254. package/esm2022/lib/smart-grid/projects.mjs +0 -9
  255. package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +0 -76
  256. package/esm2022/lib/smart-grid/smart-grid.component.mjs +0 -1074
  257. package/esm2022/lib/smart-grid/smart-grid.module.mjs +0 -103
  258. package/esm2022/lib/smart-grid/smart-grid.service.mjs +0 -92
  259. package/esm2022/lib/smart-icon/projects.mjs +0 -9
  260. package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +0 -95
  261. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +0 -33
  262. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +0 -37
  263. package/esm2022/lib/smart-icon/smart-icon.module.mjs +0 -26
  264. package/esm2022/lib/smart-icon/smart-icon.service.mjs +0 -93
  265. package/esm2022/lib/smart-map/abstract-map.mjs +0 -112
  266. package/esm2022/lib/smart-map/api/api/api.mjs +0 -4
  267. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +0 -312
  268. package/esm2022/lib/smart-map/api/api.module.mjs +0 -40
  269. package/esm2022/lib/smart-map/api/configuration.mjs +0 -91
  270. package/esm2022/lib/smart-map/api/encoder.mjs +0 -19
  271. package/esm2022/lib/smart-map/api/index.mjs +0 -7
  272. package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +0 -13
  273. package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +0 -2
  274. package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +0 -2
  275. package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +0 -17
  276. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +0 -2
  277. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +0 -19
  278. package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +0 -2
  279. package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +0 -2
  280. package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +0 -2
  281. package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +0 -18
  282. package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +0 -2
  283. package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +0 -2
  284. package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +0 -2
  285. package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +0 -2
  286. package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +0 -17
  287. package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +0 -18
  288. package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +0 -2
  289. package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +0 -17
  290. package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +0 -2
  291. package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +0 -2
  292. package/esm2022/lib/smart-map/api/model/models.mjs +0 -21
  293. package/esm2022/lib/smart-map/api/param.mjs +0 -2
  294. package/esm2022/lib/smart-map/api/variables.mjs +0 -9
  295. package/esm2022/lib/smart-map/api-default/api-default.mjs +0 -2
  296. package/esm2022/lib/smart-map/impl/google-map.mjs +0 -224
  297. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +0 -422
  298. package/esm2022/lib/smart-map/projects.mjs +0 -9
  299. package/esm2022/lib/smart-map/smart-map.component.mjs +0 -222
  300. package/esm2022/lib/smart-map/smart-map.module.mjs +0 -22
  301. package/esm2022/lib/smart-map/smart-map.types.mjs +0 -2
  302. package/esm2022/lib/smart-navbar/projects.mjs +0 -8
  303. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +0 -61
  304. package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +0 -6
  305. package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +0 -63
  306. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +0 -14
  307. package/esm2022/lib/smart-navigation/projects.mjs +0 -6
  308. package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +0 -2
  309. package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +0 -18
  310. package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +0 -27
  311. package/esm2022/lib/smart-ng-client.module.mjs +0 -131
  312. package/esm2022/lib/smart-ng-client.service.mjs +0 -19
  313. package/esm2022/lib/smart-subject/projects.mjs +0 -5
  314. package/esm2022/lib/smart-subject/smart-subject.mjs +0 -21
  315. package/esm2022/lib/smart-tab-group/projects.mjs +0 -5
  316. package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +0 -22
  317. package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +0 -43
  318. package/esm2022/lib/smart-table/components/loading/loading.component.mjs +0 -15
  319. package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +0 -52
  320. package/esm2022/lib/smart-table/projects.mjs +0 -8
  321. package/esm2022/lib/smart-table/smarttable.component.mjs +0 -98
  322. package/esm2022/lib/smart-table/smarttable.model.mjs +0 -177
  323. package/esm2022/lib/smart-table/smarttable.module.mjs +0 -109
  324. package/esm2022/lib/smart-table/smarttable.service.mjs +0 -14
  325. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +0 -40
  326. package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +0 -23
  327. package/esm2022/lib/smart-table/tables/table.mjs +0 -614
  328. package/esm2022/lib/smart-tree/projects.mjs +0 -9
  329. package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +0 -292
  330. package/esm2022/lib/smart-tree/smarttree.component.mjs +0 -188
  331. package/esm2022/lib/smart-tree/smarttree.model.mjs +0 -7
  332. package/esm2022/lib/smart-tree/smarttree.module.mjs +0 -64
  333. package/esm2022/lib/smart-tree/smarttree.node.model.mjs +0 -6
  334. package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +0 -2
  335. package/esm2022/lib/smart-tree/smarttree.service.mjs +0 -47
  336. package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +0 -1190
  337. package/esm2022/lib/smart-tree/tree-api/configuration.mjs +0 -91
  338. package/esm2022/lib/smart-tree/tree-api/encoder.mjs +0 -19
  339. package/esm2022/lib/smart-tree/tree-api/param.mjs +0 -2
  340. package/esm2022/lib/smart-tree/tree-api/variables.mjs +0 -9
  341. package/esm2022/lib/smart-validation/named-validator.service.mjs +0 -115
  342. package/esm2022/lib/smart-validation/projects.mjs +0 -4
  343. package/esm2022/lib/smart-validation/smart-validation.module.mjs +0 -24
  344. package/esm2022/lib/smart-validation/smart-validation.types.mjs +0 -4
  345. package/esm2022/lib/theme/theme.service.mjs +0 -48
  346. package/esm2022/lib/view-context/api/api/api.mjs +0 -4
  347. package/esm2022/lib/view-context/api/api/view.service.mjs +0 -1113
  348. package/esm2022/lib/view-context/api/api-default/binaryContentData.mjs +0 -2
  349. package/esm2022/lib/view-context/api/api-default/binaryData.mjs +0 -2
  350. package/esm2022/lib/view-context/api/api-default/invocationError.mjs +0 -2
  351. package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +0 -2
  352. package/esm2022/lib/view-context/api/api-default/invocationRun.mjs +0 -2
  353. package/esm2022/lib/view-context/api/api.module.mjs +0 -40
  354. package/esm2022/lib/view-context/api/configuration.mjs +0 -91
  355. package/esm2022/lib/view-context/api/encoder.mjs +0 -19
  356. package/esm2022/lib/view-context/api/index.mjs +0 -7
  357. package/esm2022/lib/view-context/api/model/backgroundProcessInfo.mjs +0 -2
  358. package/esm2022/lib/view-context/api/model/badgeDescriptor.mjs +0 -13
  359. package/esm2022/lib/view-context/api/model/clipboardData.mjs +0 -13
  360. package/esm2022/lib/view-context/api/model/closeResult.mjs +0 -18
  361. package/esm2022/lib/view-context/api/model/componentConstraint.mjs +0 -2
  362. package/esm2022/lib/view-context/api/model/componentModel.mjs +0 -2
  363. package/esm2022/lib/view-context/api/model/componentModelChange.mjs +0 -13
  364. package/esm2022/lib/view-context/api/model/dataChange.mjs +0 -2
  365. package/esm2022/lib/view-context/api/model/dataChangeEvent.mjs +0 -2
  366. package/esm2022/lib/view-context/api/model/dataChangeKind.mjs +0 -21
  367. package/esm2022/lib/view-context/api/model/deviceInfo.mjs +0 -13
  368. package/esm2022/lib/view-context/api/model/downloadedFile.mjs +0 -13
  369. package/esm2022/lib/view-context/api/model/iconPosition.mjs +0 -20
  370. package/esm2022/lib/view-context/api/model/imageResource.mjs +0 -8
  371. package/esm2022/lib/view-context/api/model/link.mjs +0 -20
  372. package/esm2022/lib/view-context/api/model/menuDescriptor.mjs +0 -2
  373. package/esm2022/lib/view-context/api/model/menuOpenDirection.mjs +0 -23
  374. package/esm2022/lib/view-context/api/model/menuTriggerType.mjs +0 -17
  375. package/esm2022/lib/view-context/api/model/messageData.mjs +0 -2
  376. package/esm2022/lib/view-context/api/model/messageOption.mjs +0 -2
  377. package/esm2022/lib/view-context/api/model/messageOptionType.mjs +0 -18
  378. package/esm2022/lib/view-context/api/model/messageResult.mjs +0 -2
  379. package/esm2022/lib/view-context/api/model/messageTextType.mjs +0 -17
  380. package/esm2022/lib/view-context/api/model/messageType.mjs +0 -19
  381. package/esm2022/lib/view-context/api/model/models.mjs +0 -71
  382. package/esm2022/lib/view-context/api/model/multiComboBoxElement.mjs +0 -13
  383. package/esm2022/lib/view-context/api/model/multiComboBoxModel.mjs +0 -2
  384. package/esm2022/lib/view-context/api/model/namedValidator.mjs +0 -19
  385. package/esm2022/lib/view-context/api/model/openPendingData.mjs +0 -2
  386. package/esm2022/lib/view-context/api/model/publishedViewData.mjs +0 -13
  387. package/esm2022/lib/view-context/api/model/serverRequestExecutionStat.mjs +0 -2
  388. package/esm2022/lib/view-context/api/model/serverRequestTrack.mjs +0 -2
  389. package/esm2022/lib/view-context/api/model/serverRequestType.mjs +0 -24
  390. package/esm2022/lib/view-context/api/model/shellProperty.mjs +0 -13
  391. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +0 -2
  392. package/esm2022/lib/view-context/api/model/smartLinkMigrationStatus.mjs +0 -8
  393. package/esm2022/lib/view-context/api/model/statisticRecord.mjs +0 -13
  394. package/esm2022/lib/view-context/api/model/style.mjs +0 -13
  395. package/esm2022/lib/view-context/api/model/themeDefinition.mjs +0 -2
  396. package/esm2022/lib/view-context/api/model/themeDescriptor.mjs +0 -2
  397. package/esm2022/lib/view-context/api/model/themeShellDescriptor.mjs +0 -2
  398. package/esm2022/lib/view-context/api/model/uiAction.mjs +0 -2
  399. package/esm2022/lib/view-context/api/model/uiActionButtonDescriptor.mjs +0 -2
  400. package/esm2022/lib/view-context/api/model/uiActionButtonType.mjs +0 -27
  401. package/esm2022/lib/view-context/api/model/uiActionConstraint.mjs +0 -13
  402. package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +0 -2
  403. package/esm2022/lib/view-context/api/model/uiActionDefinitionEntry.mjs +0 -2
  404. package/esm2022/lib/view-context/api/model/uiActionDescriptor.mjs +0 -2
  405. package/esm2022/lib/view-context/api/model/uiActionDialogDescriptor.mjs +0 -2
  406. package/esm2022/lib/view-context/api/model/uiActionFeedbackType.mjs +0 -20
  407. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +0 -21
  408. package/esm2022/lib/view-context/api/model/uiActionRequest.mjs +0 -13
  409. package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +0 -13
  410. package/esm2022/lib/view-context/api/model/uiActionTooltip.mjs +0 -22
  411. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +0 -2
  412. package/esm2022/lib/view-context/api/model/uploadWidgetType.mjs +0 -18
  413. package/esm2022/lib/view-context/api/model/uploadedFile.mjs +0 -2
  414. package/esm2022/lib/view-context/api/model/valueSet.mjs +0 -2
  415. package/esm2022/lib/view-context/api/model/view.mjs +0 -2
  416. package/esm2022/lib/view-context/api/model/viewApiError.mjs +0 -13
  417. package/esm2022/lib/view-context/api/model/viewConstraint.mjs +0 -2
  418. package/esm2022/lib/view-context/api/model/viewContext.mjs +0 -2
  419. package/esm2022/lib/view-context/api/model/viewContextChange.mjs +0 -2
  420. package/esm2022/lib/view-context/api/model/viewContextData.mjs +0 -2
  421. package/esm2022/lib/view-context/api/model/viewContextUpdate.mjs +0 -2
  422. package/esm2022/lib/view-context/api/model/viewData.mjs +0 -2
  423. package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +0 -8
  424. package/esm2022/lib/view-context/api/model/viewPlaceholder.mjs +0 -13
  425. package/esm2022/lib/view-context/api/model/viewState.mjs +0 -22
  426. package/esm2022/lib/view-context/api/model/viewStateUpdate.mjs +0 -2
  427. package/esm2022/lib/view-context/api/model/viewType.mjs +0 -18
  428. package/esm2022/lib/view-context/api/param.mjs +0 -2
  429. package/esm2022/lib/view-context/api/variables.mjs +0 -9
  430. package/esm2022/lib/view-context/default-view-components.token.mjs +0 -9
  431. package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +0 -20
  432. package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +0 -93
  433. package/esm2022/lib/view-context/projects.mjs +0 -30
  434. package/esm2022/lib/view-context/property-definition-data.mjs +0 -2
  435. package/esm2022/lib/view-context/reuse-router-slot.token.mjs +0 -4
  436. package/esm2022/lib/view-context/smart-embedded-slot.directive.mjs +0 -57
  437. package/esm2022/lib/view-context/smart-ui-action/components/menu/click/menu.component.mjs +0 -254
  438. package/esm2022/lib/view-context/smart-ui-action/components/menu/hover/hover-menu.component.mjs +0 -256
  439. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +0 -62
  440. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +0 -29
  441. package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +0 -30
  442. package/esm2022/lib/view-context/smart-ui-action/components/theme-selector/theme-selector.component.mjs +0 -35
  443. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +0 -198
  444. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +0 -95
  445. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +0 -134
  446. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +0 -12
  447. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +0 -256
  448. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +0 -77
  449. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +0 -54
  450. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +0 -60
  451. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +0 -106
  452. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +0 -60
  453. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +0 -132
  454. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +0 -58
  455. package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +0 -35
  456. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/button-icon-placeholder.mjs +0 -7
  457. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +0 -258
  458. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +0 -348
  459. package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +0 -185
  460. package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +0 -7
  461. package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +0 -250
  462. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +0 -77
  463. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +0 -35
  464. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +0 -74
  465. package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +0 -63
  466. package/esm2022/lib/view-context/smart-view-context.model.mjs +0 -2
  467. package/esm2022/lib/view-context/smart-view-context.module.mjs +0 -405
  468. package/esm2022/lib/view-context/smart-view-context.service.mjs +0 -1079
  469. package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +0 -41
  470. package/esm2022/lib/view-context/utility/componentLibrary.mjs +0 -9
  471. package/esm2022/lib/view-context/utility/smart-object-utility.mjs +0 -44
  472. package/esm2022/lib/view-context/utility/smart-style-utility.mjs +0 -68
  473. package/esm2022/lib/view-context/value-api/api/api.mjs +0 -4
  474. package/esm2022/lib/view-context/value-api/api/value.service.mjs +0 -138
  475. package/esm2022/lib/view-context/value-api/api.module.mjs +0 -40
  476. package/esm2022/lib/view-context/value-api/configuration.mjs +0 -91
  477. package/esm2022/lib/view-context/value-api/encoder.mjs +0 -19
  478. package/esm2022/lib/view-context/value-api/index.mjs +0 -7
  479. package/esm2022/lib/view-context/value-api/model/genericValue.mjs +0 -13
  480. package/esm2022/lib/view-context/value-api/model/models.mjs +0 -11
  481. package/esm2022/lib/view-context/value-api/model/value.mjs +0 -13
  482. package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +0 -2
  483. package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +0 -2
  484. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +0 -2
  485. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +0 -13
  486. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +0 -24
  487. package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +0 -2
  488. package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +0 -2
  489. package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +0 -19
  490. package/esm2022/lib/view-context/value-api/param.mjs +0 -2
  491. package/esm2022/lib/view-context/value-api/variables.mjs +0 -9
  492. package/esm2022/lib/view-context/view-handler-resolution.mjs +0 -21
  493. package/esm2022/lib/view-context/view-op.mjs +0 -41
  494. package/esm2022/lib/view-context/view-slot-resolution.mjs +0 -28
  495. package/esm2022/projects.mjs +0 -31
  496. package/esm2022/smartbit4all-ng-client.mjs +0 -5
  497. package/index.d.ts +0 -5
  498. package/lib/component-factory-service/component-factory-service.module.d.ts +0 -6
  499. package/lib/component-factory-service/component-factory-service.service.d.ts +0 -13
  500. package/lib/component-factory-service/projects.d.ts +0 -2
  501. package/lib/session/api/api/api.d.ts +0 -3
  502. package/lib/session/api/api/session.service.d.ts +0 -107
  503. package/lib/session/api/configuration.d.ts +0 -104
  504. package/lib/session/api/encoder.d.ts +0 -11
  505. package/lib/session/api/index.d.ts +0 -2
  506. package/lib/session/api/model/accountInfo.d.ts +0 -24
  507. package/lib/session/api/model/apiError.d.ts +0 -15
  508. package/lib/session/api/model/authenticationProviderData.d.ts +0 -17
  509. package/lib/session/api/model/getAuthenticationProvidersResponse.d.ts +0 -15
  510. package/lib/session/api/model/models.d.ts +0 -8
  511. package/lib/session/api/model/refreshSessionRequest.d.ts +0 -14
  512. package/lib/session/api/model/session.d.ts +0 -32
  513. package/lib/session/api/model/sessionInfoData.d.ts +0 -26
  514. package/lib/session/api/model/userActivityLog.d.ts +0 -33
  515. package/lib/session/api/param.d.ts +0 -37
  516. package/lib/session/api/variables.d.ts +0 -8
  517. package/lib/session/cookie-service/smart-cookie.service.d.ts +0 -129
  518. package/lib/session/projects.d.ts +0 -8
  519. package/lib/session/smart-backend-bootstrap.config.d.ts +0 -73
  520. package/lib/session/smart-backend-bootstrap.service.d.ts +0 -57
  521. package/lib/session/smart-default-error-ui.service.d.ts +0 -90
  522. package/lib/session/smart-error-catching.interceptor.d.ts +0 -21
  523. package/lib/session/smart-header-maintainer.interceptor.d.ts +0 -11
  524. package/lib/session/smart-session-handler.service.d.ts +0 -22
  525. package/lib/session/smart-session.module.d.ts +0 -12
  526. package/lib/session/smart-session.service.d.ts +0 -88
  527. package/lib/session/smart-timer/smart-session-timer.component.d.ts +0 -19
  528. package/lib/shared/projects.d.ts +0 -3
  529. package/lib/shared/shared.module.d.ts +0 -9
  530. package/lib/shared/smart-tooltip.directive.d.ts +0 -16
  531. package/lib/shared/smarttable.date-pipe.d.ts +0 -18
  532. package/lib/smart-client/projects.d.ts +0 -3
  533. package/lib/smart-client/smart-component-api-client.d.ts +0 -143
  534. package/lib/smart-client/smart-file-uploader/smart-file-uploader.component.d.ts +0 -25
  535. package/lib/smart-client/smart.component.d.ts +0 -35
  536. package/lib/smart-client/smart.service.d.ts +0 -29
  537. package/lib/smart-component-layout/api/api/api.d.ts +0 -3
  538. package/lib/smart-component-layout/api/api/default.service.d.ts +0 -33
  539. package/lib/smart-component-layout/api/api.module.d.ts +0 -11
  540. package/lib/smart-component-layout/api/configuration.d.ts +0 -104
  541. package/lib/smart-component-layout/api/encoder.d.ts +0 -11
  542. package/lib/smart-component-layout/api/index.d.ts +0 -6
  543. package/lib/smart-component-layout/api/model/componentType.d.ts +0 -16
  544. package/lib/smart-component-layout/api/model/componentWidgetType.d.ts +0 -20
  545. package/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.d.ts +0 -19
  546. package/lib/smart-component-layout/api/model/layoutDirection.d.ts +0 -15
  547. package/lib/smart-component-layout/api/model/models.d.ts +0 -9
  548. package/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.d.ts +0 -32
  549. package/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.d.ts +0 -26
  550. package/lib/smart-component-layout/api/model/toolbarAlignment.d.ts +0 -15
  551. package/lib/smart-component-layout/api/model/toolbarDirection.d.ts +0 -15
  552. package/lib/smart-component-layout/api/model/toolbarProperties.d.ts +0 -18
  553. package/lib/smart-component-layout/api/param.d.ts +0 -37
  554. package/lib/smart-component-layout/api/variables.d.ts +0 -8
  555. package/lib/smart-component-layout/projects.d.ts +0 -4
  556. package/lib/smart-component-layout/smart-component-layout-utility.d.ts +0 -25
  557. package/lib/smart-component-layout/smart-component-layout.component.d.ts +0 -93
  558. package/lib/smart-component-layout/smart-component-layout.module.d.ts +0 -17
  559. package/lib/smart-diagram/api/api/api.d.ts +0 -3
  560. package/lib/smart-diagram/api/api/diagramService.service.d.ts +0 -36
  561. package/lib/smart-diagram/api/api.module.d.ts +0 -11
  562. package/lib/smart-diagram/api/configuration.d.ts +0 -104
  563. package/lib/smart-diagram/api/encoder.d.ts +0 -11
  564. package/lib/smart-diagram/api/index.d.ts +0 -6
  565. package/lib/smart-diagram/api/model/diagramColor.d.ts +0 -17
  566. package/lib/smart-diagram/api/model/diagramDataContainer.d.ts +0 -19
  567. package/lib/smart-diagram/api/model/diagramDataItem.d.ts +0 -25
  568. package/lib/smart-diagram/api/model/diagramDataSet.d.ts +0 -22
  569. package/lib/smart-diagram/api/model/diagramDescriptor.d.ts +0 -57
  570. package/lib/smart-diagram/api/model/diagramModel.d.ts +0 -19
  571. package/lib/smart-diagram/api/model/diagramShape.d.ts +0 -30
  572. package/lib/smart-diagram/api/model/drawTime.d.ts +0 -18
  573. package/lib/smart-diagram/api/model/labelText.d.ts +0 -21
  574. package/lib/smart-diagram/api/model/models.d.ts +0 -9
  575. package/lib/smart-diagram/api/param.d.ts +0 -37
  576. package/lib/smart-diagram/api/variables.d.ts +0 -8
  577. package/lib/smart-diagram/component/default-smart-diagram-options.provider.d.ts +0 -33
  578. package/lib/smart-diagram/component/smart-diagram.component.d.ts +0 -43
  579. package/lib/smart-diagram/component/smart-diagram.module.d.ts +0 -11
  580. package/lib/smart-diagram/component/smart-diagram.util.d.ts +0 -1
  581. package/lib/smart-diagram/projects.d.ts +0 -4
  582. package/lib/smart-dialog/projects.d.ts +0 -4
  583. package/lib/smart-dialog/smartdialog.component.d.ts +0 -19
  584. package/lib/smart-dialog/smartdialog.model.d.ts +0 -68
  585. package/lib/smart-dialog/smartdialog.module.d.ts +0 -14
  586. package/lib/smart-dialog/smartdialog.service.d.ts +0 -28
  587. package/lib/smart-expandable-section/expandable-section.component.d.ts +0 -30
  588. package/lib/smart-expandable-section/expandable-section.model.d.ts +0 -43
  589. package/lib/smart-expandable-section/projects.d.ts +0 -4
  590. package/lib/smart-expandable-section/smart-expandable-section.module.d.ts +0 -17
  591. package/lib/smart-expandable-section/smart-expandable-section.service.d.ts +0 -6
  592. package/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.d.ts +0 -15
  593. package/lib/smart-filter/api/filter/model/filterExpressionBuilderField.d.ts +0 -27
  594. package/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.d.ts +0 -36
  595. package/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.d.ts +0 -27
  596. package/lib/smart-filter/api/filter/model/filterExpressionData.d.ts +0 -27
  597. package/lib/smart-filter/api/filter/model/filterExpressionDataType.d.ts +0 -18
  598. package/lib/smart-filter/api/filter/model/filterExpressionField.d.ts +0 -44
  599. package/lib/smart-filter/api/filter/model/filterExpressionFieldList.d.ts +0 -21
  600. package/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.d.ts +0 -26
  601. package/lib/smart-filter/api/filter/model/filterExpressionList.d.ts +0 -18
  602. package/lib/smart-filter/api/filter/model/filterExpressionOperandData.d.ts +0 -25
  603. package/lib/smart-filter/api/filter/model/filterExpressionOperation.d.ts +0 -30
  604. package/lib/smart-filter/api/filter/model/filterExpressionOrderBy.d.ts +0 -25
  605. package/lib/smart-filter/api/filter/model/model.d.ts +0 -15
  606. package/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.d.ts +0 -19
  607. package/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.d.ts +0 -18
  608. package/lib/smart-filter/api/value/model/value.d.ts +0 -29
  609. package/lib/smart-filter/projects.d.ts +0 -5
  610. package/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.d.ts +0 -8
  611. package/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.d.ts +0 -31
  612. package/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.d.ts +0 -18
  613. package/lib/smart-filter/smart-filter/smart-filter.component.d.ts +0 -15
  614. package/lib/smart-filter/smart-filter/smart-filter.service.d.ts +0 -16
  615. package/lib/smart-filter/smart-filter.model.d.ts +0 -25
  616. package/lib/smart-filter/smart-filter.module.d.ts +0 -15
  617. package/lib/smart-filter-editor/api/api/filter.service.d.ts +0 -57
  618. package/lib/smart-filter-editor/api/configuration.d.ts +0 -104
  619. package/lib/smart-filter-editor/api/encoder.d.ts +0 -11
  620. package/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.d.ts +0 -15
  621. package/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.d.ts +0 -16
  622. package/lib/smart-filter-editor/api/model/filterExpressionBuilderField.d.ts +0 -27
  623. package/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.d.ts +0 -36
  624. package/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.d.ts +0 -27
  625. package/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.d.ts +0 -38
  626. package/lib/smart-filter-editor/api/model/filterExpressionData.d.ts +0 -27
  627. package/lib/smart-filter-editor/api/model/filterExpressionDataType.d.ts +0 -18
  628. package/lib/smart-filter-editor/api/model/filterExpressionField.d.ts +0 -44
  629. package/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.d.ts +0 -17
  630. package/lib/smart-filter-editor/api/model/filterExpressionFieldList.d.ts +0 -21
  631. package/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.d.ts +0 -26
  632. package/lib/smart-filter-editor/api/model/filterExpressionList.d.ts +0 -18
  633. package/lib/smart-filter-editor/api/model/filterExpressionOperandData.d.ts +0 -25
  634. package/lib/smart-filter-editor/api/model/filterExpressionOperation.d.ts +0 -30
  635. package/lib/smart-filter-editor/api/model/filterExpressionOrderBy.d.ts +0 -28
  636. package/lib/smart-filter-editor/api/model/smartFilterType.d.ts +0 -15
  637. package/lib/smart-filter-editor/api/param.d.ts +0 -37
  638. package/lib/smart-filter-editor/api/variables.d.ts +0 -8
  639. package/lib/smart-filter-editor/filterExpressionBuilderApiActions.d.ts +0 -13
  640. package/lib/smart-filter-editor/project.d.ts +0 -7
  641. package/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.d.ts +0 -19
  642. package/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.d.ts +0 -17
  643. package/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.d.ts +0 -44
  644. package/lib/smart-filter-editor/smart-filter-editor.model.d.ts +0 -4
  645. package/lib/smart-filter-editor/smart-filter-editor.module.d.ts +0 -18
  646. package/lib/smart-filter-editor/smart-filter-editor.service.d.ts +0 -45
  647. package/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.d.ts +0 -9
  648. package/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.d.ts +0 -21
  649. package/lib/smart-form/api/api/api.d.ts +0 -3
  650. package/lib/smart-form/api/api/default.service.d.ts +0 -33
  651. package/lib/smart-form/api/api.module.d.ts +0 -11
  652. package/lib/smart-form/api/configuration.d.ts +0 -104
  653. package/lib/smart-form/api/encoder.d.ts +0 -11
  654. package/lib/smart-form/api/index.d.ts +0 -6
  655. package/lib/smart-form/api/model/dateFieldProperties.d.ts +0 -15
  656. package/lib/smart-form/api/model/divProperties.d.ts +0 -15
  657. package/lib/smart-form/api/model/fileUploaderProperties.d.ts +0 -20
  658. package/lib/smart-form/api/model/imageProperties.d.ts +0 -15
  659. package/lib/smart-form/api/model/models.d.ts +0 -19
  660. package/lib/smart-form/api/model/multiFileUploaderProperties.d.ts +0 -19
  661. package/lib/smart-form/api/model/propertyMapping.d.ts +0 -24
  662. package/lib/smart-form/api/model/recordingUploaderProperties.d.ts +0 -20
  663. package/lib/smart-form/api/model/selectionDefinition.d.ts +0 -58
  664. package/lib/smart-form/api/model/smartFormInputMode.d.ts +0 -20
  665. package/lib/smart-form/api/model/smartFormWidgetDirection.d.ts +0 -15
  666. package/lib/smart-form/api/model/smartFormWidgetType.d.ts +0 -47
  667. package/lib/smart-form/api/model/smartLayoutDefinition.d.ts +0 -15
  668. package/lib/smart-form/api/model/smartMatrixModel.d.ts +0 -29
  669. package/lib/smart-form/api/model/smartWidgetDefinition.d.ts +0 -125
  670. package/lib/smart-form/api/model/smartWidgetHint.d.ts +0 -19
  671. package/lib/smart-form/api/model/sortDefinition.d.ts +0 -15
  672. package/lib/smart-form/api/model/textBoxProperties.d.ts +0 -15
  673. package/lib/smart-form/api/model/textFieldProperties.d.ts +0 -14
  674. package/lib/smart-form/api/model/valueChangeMode.d.ts +0 -19
  675. package/lib/smart-form/api/param.d.ts +0 -37
  676. package/lib/smart-form/api/variables.d.ts +0 -8
  677. package/lib/smart-form/highlightMacthingString-pipe.d.ts +0 -7
  678. package/lib/smart-form/projects.d.ts +0 -14
  679. package/lib/smart-form/services/smartform.layout-definition.service.d.ts +0 -50
  680. package/lib/smart-form/services/smartform.service.d.ts +0 -52
  681. package/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.d.ts +0 -8
  682. package/lib/smart-form/smartfileuploader/smartfileuploader.component.d.ts +0 -38
  683. package/lib/smart-form/smartfileuploader/smartfileuploader.model.d.ts +0 -7
  684. package/lib/smart-form/smartform.component.d.ts +0 -43
  685. package/lib/smart-form/smartform.form-model.d.ts +0 -864
  686. package/lib/smart-form/smartform.model.d.ts +0 -126
  687. package/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.d.ts +0 -54
  688. package/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.d.ts +0 -29
  689. package/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.d.ts +0 -57
  690. package/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.d.ts +0 -50
  691. package/lib/smart-form/widgets/directives/comparable-dropdown.directive.d.ts +0 -10
  692. package/lib/smart-form/widgets/directives/comparable-multiselect.directive.d.ts +0 -10
  693. package/lib/smart-form/widgets/smartformwidget/smartformwidget.component.d.ts +0 -173
  694. package/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.d.ts +0 -24
  695. package/lib/smart-form/widgets/smartformwidget/trackCaps.directive.d.ts +0 -9
  696. package/lib/smart-generic-pages/acl-editing-view/acl-editing-view.component.d.ts +0 -21
  697. package/lib/smart-generic-pages/api/platform/acl/model/aCL.d.ts +0 -18
  698. package/lib/smart-generic-pages/api/platform/acl/model/aCLEntry.d.ts +0 -54
  699. package/lib/smart-generic-pages/api/platform/acl/model/objectValidationSeverity.d.ts +0 -19
  700. package/lib/smart-generic-pages/api/platform/acl/model/subject.d.ts +0 -24
  701. package/lib/smart-generic-pages/api/platform/api-default/objectHistoryRangeData.d.ts +0 -2
  702. package/lib/smart-generic-pages/api/platform/searchpage/model/searchPageModel.d.ts +0 -27
  703. package/lib/smart-generic-pages/api/platform/subjectselector/model/subjectSelectorPageModel.d.ts +0 -14
  704. package/lib/smart-generic-pages/api/platform/validation/model/validationItem.d.ts +0 -17
  705. package/lib/smart-generic-pages/api/platform/validation/model/validationResultPageModel.d.ts +0 -18
  706. package/lib/smart-generic-pages/generic-page/generic-page.component.d.ts +0 -12
  707. package/lib/smart-generic-pages/invalid-smartlink/invalid-smartlink.component.d.ts +0 -11
  708. package/lib/smart-generic-pages/no-permission-page/no-permission-page.component.d.ts +0 -11
  709. package/lib/smart-generic-pages/projects.d.ts +0 -9
  710. package/lib/smart-generic-pages/search-page/search-page.component.d.ts +0 -25
  711. package/lib/smart-generic-pages/smart-generic-pages.module.d.ts +0 -19
  712. package/lib/smart-generic-pages/subject-selector/subject-selector.component.d.ts +0 -17
  713. package/lib/smart-generic-pages/validation-result-page/validation-result-page.component.d.ts +0 -25
  714. package/lib/smart-grid/api/grid-api/api/api.d.ts +0 -3
  715. package/lib/smart-grid/api/grid-api/api/grid.service.d.ts +0 -182
  716. package/lib/smart-grid/api/grid-api/api.module.d.ts +0 -11
  717. package/lib/smart-grid/api/grid-api/configuration.d.ts +0 -104
  718. package/lib/smart-grid/api/grid-api/encoder.d.ts +0 -11
  719. package/lib/smart-grid/api/grid-api/index.d.ts +0 -6
  720. package/lib/smart-grid/api/grid-api/model/gridColumnContentType.d.ts +0 -15
  721. package/lib/smart-grid/api/grid-api/model/gridColumnMeta.d.ts +0 -34
  722. package/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.d.ts +0 -44
  723. package/lib/smart-grid/api/grid-api/model/gridExportDescriptor.d.ts +0 -19
  724. package/lib/smart-grid/api/grid-api/model/gridModel.d.ts +0 -36
  725. package/lib/smart-grid/api/grid-api/model/gridPage.d.ts +0 -26
  726. package/lib/smart-grid/api/grid-api/model/gridRow.d.ts +0 -47
  727. package/lib/smart-grid/api/grid-api/model/gridRowLayoutDescriptor.d.ts +0 -20
  728. package/lib/smart-grid/api/grid-api/model/gridSelectionChange.d.ts +0 -24
  729. package/lib/smart-grid/api/grid-api/model/gridSelectionMode.d.ts +0 -16
  730. package/lib/smart-grid/api/grid-api/model/gridSelectionType.d.ts +0 -15
  731. package/lib/smart-grid/api/grid-api/model/gridServerModel.d.ts +0 -22
  732. package/lib/smart-grid/api/grid-api/model/gridUpdateData.d.ts +0 -20
  733. package/lib/smart-grid/api/grid-api/model/gridView.d.ts +0 -21
  734. package/lib/smart-grid/api/grid-api/model/gridViewDescriptor.d.ts +0 -39
  735. package/lib/smart-grid/api/grid-api/model/models.d.ts +0 -15
  736. package/lib/smart-grid/api/grid-api/param.d.ts +0 -37
  737. package/lib/smart-grid/api/grid-api/variables.d.ts +0 -8
  738. package/lib/smart-grid/components/expandable-grid/expandable-grid.component.d.ts +0 -10
  739. package/lib/smart-grid/components/generic-component/expanded-row-renderer.component.d.ts +0 -21
  740. package/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.d.ts +0 -26
  741. package/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.d.ts +0 -47
  742. package/lib/smart-grid/models/model.d.ts +0 -73
  743. package/lib/smart-grid/projects.d.ts +0 -5
  744. package/lib/smart-grid/smart-grid-toolbar-util.d.ts +0 -12
  745. package/lib/smart-grid/smart-grid.component.d.ts +0 -157
  746. package/lib/smart-grid/smart-grid.module.d.ts +0 -29
  747. package/lib/smart-grid/smart-grid.service.d.ts +0 -26
  748. package/lib/smart-icon/projects.d.ts +0 -5
  749. package/lib/smart-icon/smart-icon/smart-icon.component.d.ts +0 -34
  750. package/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.d.ts +0 -10
  751. package/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.d.ts +0 -14
  752. package/lib/smart-icon/smart-icon.module.d.ts +0 -14
  753. package/lib/smart-icon/smart-icon.service.d.ts +0 -29
  754. package/lib/smart-map/abstract-map.d.ts +0 -37
  755. package/lib/smart-map/api/api/api.d.ts +0 -3
  756. package/lib/smart-map/api/api/geoMap.service.d.ts +0 -101
  757. package/lib/smart-map/api/api.module.d.ts +0 -11
  758. package/lib/smart-map/api/configuration.d.ts +0 -104
  759. package/lib/smart-map/api/encoder.d.ts +0 -11
  760. package/lib/smart-map/api/index.d.ts +0 -6
  761. package/lib/smart-map/api/model/gPSPosition.d.ts +0 -32
  762. package/lib/smart-map/api/model/gPSRoute.d.ts +0 -21
  763. package/lib/smart-map/api/model/geoMapChange.d.ts +0 -21
  764. package/lib/smart-map/api/model/geoMapDataLoadingMode.d.ts +0 -15
  765. package/lib/smart-map/api/model/geoMapDataSourceDescriptor.d.ts +0 -52
  766. package/lib/smart-map/api/model/geoMapDataSourceType.d.ts +0 -17
  767. package/lib/smart-map/api/model/geoMapEditingSession.d.ts +0 -17
  768. package/lib/smart-map/api/model/geoMapInteraction.d.ts +0 -24
  769. package/lib/smart-map/api/model/geoMapItem.d.ts +0 -41
  770. package/lib/smart-map/api/model/geoMapItemKind.d.ts +0 -16
  771. package/lib/smart-map/api/model/geoMapLayer.d.ts +0 -19
  772. package/lib/smart-map/api/model/geoMapLayerChange.d.ts +0 -20
  773. package/lib/smart-map/api/model/geoMapLayerDescriptor.d.ts +0 -28
  774. package/lib/smart-map/api/model/geoMapModel.d.ts +0 -26
  775. package/lib/smart-map/api/model/geoMapOperationMode.d.ts +0 -15
  776. package/lib/smart-map/api/model/geoMapSelectionMode.d.ts +0 -16
  777. package/lib/smart-map/api/model/geoMapServerModel.d.ts +0 -25
  778. package/lib/smart-map/api/model/geoMapTextType.d.ts +0 -15
  779. package/lib/smart-map/api/model/geoMapViewState.d.ts +0 -27
  780. package/lib/smart-map/api/model/geoMapViewport.d.ts +0 -20
  781. package/lib/smart-map/api/model/models.d.ts +0 -20
  782. package/lib/smart-map/api/param.d.ts +0 -37
  783. package/lib/smart-map/api/variables.d.ts +0 -8
  784. package/lib/smart-map/api-default/api-default.d.ts +0 -2
  785. package/lib/smart-map/impl/google-map.d.ts +0 -23
  786. package/lib/smart-map/impl/leaflet-map.d.ts +0 -22
  787. package/lib/smart-map/projects.d.ts +0 -8
  788. package/lib/smart-map/smart-map.component.d.ts +0 -39
  789. package/lib/smart-map/smart-map.module.d.ts +0 -11
  790. package/lib/smart-map/smart-map.types.d.ts +0 -34
  791. package/lib/smart-navbar/projects.d.ts +0 -4
  792. package/lib/smart-navbar/smart-navbar.component.d.ts +0 -20
  793. package/lib/smart-navbar/smart-navbar.model.d.ts +0 -48
  794. package/lib/smart-navbar/smart-navbar.module.d.ts +0 -18
  795. package/lib/smart-navbar/smart-navbar.service.d.ts +0 -6
  796. package/lib/smart-navigation/projects.d.ts +0 -2
  797. package/lib/smart-navigation/smart-navigation.interface.d.ts +0 -5
  798. package/lib/smart-navigation/smart-navigation.module.d.ts +0 -6
  799. package/lib/smart-navigation/smart-navigation.service.d.ts +0 -12
  800. package/lib/smart-ng-client.module.d.ts +0 -25
  801. package/lib/smart-ng-client.service.d.ts +0 -10
  802. package/lib/smart-subject/projects.d.ts +0 -1
  803. package/lib/smart-subject/smart-subject.d.ts +0 -6
  804. package/lib/smart-tab-group/projects.d.ts +0 -1
  805. package/lib/smart-tab-group/smart-tab-group.module.d.ts +0 -10
  806. package/lib/smart-table/components/default-actions-popup/default-actions-popup.component.d.ts +0 -19
  807. package/lib/smart-table/components/loading/loading.component.d.ts +0 -8
  808. package/lib/smart-table/directives/mat-context-menu-trigger-for.directive.d.ts +0 -10
  809. package/lib/smart-table/projects.d.ts +0 -4
  810. package/lib/smart-table/smarttable.component.d.ts +0 -34
  811. package/lib/smart-table/smarttable.model.d.ts +0 -202
  812. package/lib/smart-table/smarttable.module.d.ts +0 -29
  813. package/lib/smart-table/smarttable.service.d.ts +0 -6
  814. package/lib/smart-table/tables/material-table/material-table.component.d.ts +0 -8
  815. package/lib/smart-table/tables/mobile-table/mobile-table.component.d.ts +0 -8
  816. package/lib/smart-table/tables/table.d.ts +0 -98
  817. package/lib/smart-tree/projects.d.ts +0 -5
  818. package/lib/smart-tree/smarttree-generic.service.d.ts +0 -48
  819. package/lib/smart-tree/smarttree.component.d.ts +0 -43
  820. package/lib/smart-tree/smarttree.model.d.ts +0 -42
  821. package/lib/smart-tree/smarttree.module.d.ts +0 -16
  822. package/lib/smart-tree/smarttree.node.model.d.ts +0 -13
  823. package/lib/smart-tree/smarttree.service.d.ts +0 -25
  824. package/lib/smart-tree/smarttree.service.interface.d.ts +0 -43
  825. package/lib/smart-tree/tree-api/api/tree.service.d.ts +0 -336
  826. package/lib/smart-tree/tree-api/configuration.d.ts +0 -104
  827. package/lib/smart-tree/tree-api/encoder.d.ts +0 -11
  828. package/lib/smart-tree/tree-api/param.d.ts +0 -37
  829. package/lib/smart-tree/tree-api/variables.d.ts +0 -8
  830. package/lib/smart-validation/named-validator.service.d.ts +0 -17
  831. package/lib/smart-validation/projects.d.ts +0 -3
  832. package/lib/smart-validation/smart-validation.module.d.ts +0 -8
  833. package/lib/smart-validation/smart-validation.types.d.ts +0 -12
  834. package/lib/theme/theme.service.d.ts +0 -17
  835. package/lib/view-context/api/api/api.d.ts +0 -3
  836. package/lib/view-context/api/api/view.service.d.ts +0 -426
  837. package/lib/view-context/api/api-default/binaryContentData.d.ts +0 -2
  838. package/lib/view-context/api/api-default/binaryData.d.ts +0 -2
  839. package/lib/view-context/api/api-default/invocationError.d.ts +0 -2
  840. package/lib/view-context/api/api-default/invocationRequest.d.ts +0 -2
  841. package/lib/view-context/api/api-default/invocationRun.d.ts +0 -2
  842. package/lib/view-context/api/api.module.d.ts +0 -11
  843. package/lib/view-context/api/configuration.d.ts +0 -104
  844. package/lib/view-context/api/encoder.d.ts +0 -11
  845. package/lib/view-context/api/index.d.ts +0 -6
  846. package/lib/view-context/api/model/backgroundProcessInfo.d.ts +0 -25
  847. package/lib/view-context/api/model/badgeDescriptor.d.ts +0 -15
  848. package/lib/view-context/api/model/clipboardData.d.ts +0 -20
  849. package/lib/view-context/api/model/closeResult.d.ts +0 -16
  850. package/lib/view-context/api/model/componentConstraint.d.ts +0 -31
  851. package/lib/view-context/api/model/componentModel.d.ts +0 -47
  852. package/lib/view-context/api/model/componentModelChange.d.ts +0 -29
  853. package/lib/view-context/api/model/dataChange.d.ts +0 -25
  854. package/lib/view-context/api/model/dataChangeEvent.d.ts +0 -31
  855. package/lib/view-context/api/model/dataChangeKind.d.ts +0 -19
  856. package/lib/view-context/api/model/deviceInfo.d.ts +0 -43
  857. package/lib/view-context/api/model/downloadedFile.d.ts +0 -19
  858. package/lib/view-context/api/model/iconPosition.d.ts +0 -18
  859. package/lib/view-context/api/model/imageResource.d.ts +0 -28
  860. package/lib/view-context/api/model/link.d.ts +0 -35
  861. package/lib/view-context/api/model/menuDescriptor.d.ts +0 -17
  862. package/lib/view-context/api/model/menuOpenDirection.d.ts +0 -21
  863. package/lib/view-context/api/model/menuTriggerType.d.ts +0 -15
  864. package/lib/view-context/api/model/messageData.d.ts +0 -29
  865. package/lib/view-context/api/model/messageOption.d.ts +0 -20
  866. package/lib/view-context/api/model/messageOptionType.d.ts +0 -16
  867. package/lib/view-context/api/model/messageResult.d.ts +0 -16
  868. package/lib/view-context/api/model/messageTextType.d.ts +0 -15
  869. package/lib/view-context/api/model/messageType.d.ts +0 -17
  870. package/lib/view-context/api/model/models.d.ts +0 -70
  871. package/lib/view-context/api/model/multiComboBoxElement.d.ts +0 -16
  872. package/lib/view-context/api/model/multiComboBoxModel.d.ts +0 -16
  873. package/lib/view-context/api/model/namedValidator.d.ts +0 -27
  874. package/lib/view-context/api/model/openPendingData.d.ts +0 -29
  875. package/lib/view-context/api/model/publishedViewData.d.ts +0 -14
  876. package/lib/view-context/api/model/serverRequestExecutionStat.d.ts +0 -40
  877. package/lib/view-context/api/model/serverRequestTrack.d.ts +0 -60
  878. package/lib/view-context/api/model/serverRequestType.d.ts +0 -22
  879. package/lib/view-context/api/model/shellProperty.d.ts +0 -15
  880. package/lib/view-context/api/model/smartLinkData.d.ts +0 -29
  881. package/lib/view-context/api/model/smartLinkMigrationStatus.d.ts +0 -39
  882. package/lib/view-context/api/model/statisticRecord.d.ts +0 -36
  883. package/lib/view-context/api/model/style.d.ts +0 -21
  884. package/lib/view-context/api/model/themeDefinition.d.ts +0 -22
  885. package/lib/view-context/api/model/themeDescriptor.d.ts +0 -16
  886. package/lib/view-context/api/model/themeShellDescriptor.d.ts +0 -17
  887. package/lib/view-context/api/model/uiAction.d.ts +0 -68
  888. package/lib/view-context/api/model/uiActionButtonDescriptor.d.ts +0 -25
  889. package/lib/view-context/api/model/uiActionButtonType.d.ts +0 -25
  890. package/lib/view-context/api/model/uiActionConstraint.d.ts +0 -22
  891. package/lib/view-context/api/model/uiActionDefinition.d.ts +0 -19
  892. package/lib/view-context/api/model/uiActionDefinitionEntry.d.ts +0 -18
  893. package/lib/view-context/api/model/uiActionDescriptor.d.ts +0 -44
  894. package/lib/view-context/api/model/uiActionDialogDescriptor.d.ts +0 -23
  895. package/lib/view-context/api/model/uiActionFeedbackType.d.ts +0 -18
  896. package/lib/view-context/api/model/uiActionInputType.d.ts +0 -19
  897. package/lib/view-context/api/model/uiActionRequest.d.ts +0 -31
  898. package/lib/view-context/api/model/uiActionSchedule.d.ts +0 -14
  899. package/lib/view-context/api/model/uiActionTooltip.d.ts +0 -25
  900. package/lib/view-context/api/model/uiActionUploadDescriptor.d.ts +0 -27
  901. package/lib/view-context/api/model/uploadWidgetType.d.ts +0 -16
  902. package/lib/view-context/api/model/uploadedFile.d.ts +0 -20
  903. package/lib/view-context/api/model/valueSet.d.ts +0 -20
  904. package/lib/view-context/api/model/view.d.ts +0 -88
  905. package/lib/view-context/api/model/viewApiError.d.ts +0 -18
  906. package/lib/view-context/api/model/viewConstraint.d.ts +0 -18
  907. package/lib/view-context/api/model/viewContext.d.ts +0 -33
  908. package/lib/view-context/api/model/viewContextChange.d.ts +0 -24
  909. package/lib/view-context/api/model/viewContextData.d.ts +0 -25
  910. package/lib/view-context/api/model/viewContextUpdate.d.ts +0 -24
  911. package/lib/view-context/api/model/viewData.d.ts +0 -28
  912. package/lib/view-context/api/model/viewEventHandler.d.ts +0 -36
  913. package/lib/view-context/api/model/viewPlaceholder.d.ts +0 -22
  914. package/lib/view-context/api/model/viewState.d.ts +0 -20
  915. package/lib/view-context/api/model/viewStateUpdate.d.ts +0 -22
  916. package/lib/view-context/api/model/viewType.d.ts +0 -16
  917. package/lib/view-context/api/param.d.ts +0 -37
  918. package/lib/view-context/api/variables.d.ts +0 -8
  919. package/lib/view-context/default-view-components.token.d.ts +0 -18
  920. package/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.d.ts +0 -9
  921. package/lib/view-context/message-dialog/message-dialog.component.d.ts +0 -27
  922. package/lib/view-context/projects.d.ts +0 -26
  923. package/lib/view-context/property-definition-data.d.ts +0 -5
  924. package/lib/view-context/reuse-router-slot.token.d.ts +0 -3
  925. package/lib/view-context/smart-embedded-slot.directive.d.ts +0 -20
  926. package/lib/view-context/smart-ui-action/components/menu/click/menu.component.d.ts +0 -49
  927. package/lib/view-context/smart-ui-action/components/menu/hover/hover-menu.component.d.ts +0 -50
  928. package/lib/view-context/smart-ui-action/components/menu/menu.constants.d.ts +0 -7
  929. package/lib/view-context/smart-ui-action/components/menu/menu.service.d.ts +0 -11
  930. package/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.d.ts +0 -13
  931. package/lib/view-context/smart-ui-action/components/theme-selector/theme-selector.component.d.ts +0 -16
  932. package/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.d.ts +0 -30
  933. package/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.d.ts +0 -32
  934. package/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.d.ts +0 -40
  935. package/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.d.ts +0 -3
  936. package/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.d.ts +0 -43
  937. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.d.ts +0 -29
  938. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.d.ts +0 -21
  939. package/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.d.ts +0 -15
  940. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.d.ts +0 -36
  941. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.d.ts +0 -26
  942. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.d.ts +0 -31
  943. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.d.ts +0 -28
  944. package/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.d.ts +0 -13
  945. package/lib/view-context/smart-ui-action/ui-action-button/button-icon-placeholder.d.ts +0 -5
  946. package/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.d.ts +0 -55
  947. package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +0 -73
  948. package/lib/view-context/smart-ui-action/ui-action.descriptor.service.d.ts +0 -23
  949. package/lib/view-context/smart-ui-action/ui-action.model.d.ts +0 -43
  950. package/lib/view-context/smart-ui-action/ui-action.service.d.ts +0 -42
  951. package/lib/view-context/smart-view-context-dialog.service.d.ts +0 -21
  952. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.d.ts +0 -15
  953. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.d.ts +0 -21
  954. package/lib/view-context/smart-view-context.interceptor.d.ts +0 -17
  955. package/lib/view-context/smart-view-context.model.d.ts +0 -37
  956. package/lib/view-context/smart-view-context.module.d.ts +0 -86
  957. package/lib/view-context/smart-view-context.service.d.ts +0 -172
  958. package/lib/view-context/smart-view-redirect/smart-view-redirect.d.ts +0 -16
  959. package/lib/view-context/utility/componentLibrary.d.ts +0 -6
  960. package/lib/view-context/utility/smart-object-utility.d.ts +0 -5
  961. package/lib/view-context/utility/smart-style-utility.d.ts +0 -12
  962. package/lib/view-context/value-api/api/api.d.ts +0 -3
  963. package/lib/view-context/value-api/api/value.service.d.ts +0 -35
  964. package/lib/view-context/value-api/api.module.d.ts +0 -11
  965. package/lib/view-context/value-api/configuration.d.ts +0 -104
  966. package/lib/view-context/value-api/encoder.d.ts +0 -11
  967. package/lib/view-context/value-api/index.d.ts +0 -6
  968. package/lib/view-context/value-api/model/genericValue.d.ts +0 -33
  969. package/lib/view-context/value-api/model/models.d.ts +0 -10
  970. package/lib/view-context/value-api/model/value.d.ts +0 -29
  971. package/lib/view-context/value-api/model/valueSetData.d.ts +0 -41
  972. package/lib/view-context/value-api/model/valueSetDefinition.d.ts +0 -16
  973. package/lib/view-context/value-api/model/valueSetDefinitionData.d.ts +0 -53
  974. package/lib/view-context/value-api/model/valueSetDefinitionIdentifier.d.ts +0 -21
  975. package/lib/view-context/value-api/model/valueSetDefinitionKind.d.ts +0 -22
  976. package/lib/view-context/value-api/model/valueSetExpression.d.ts +0 -18
  977. package/lib/view-context/value-api/model/valueSetOperand.d.ts +0 -25
  978. package/lib/view-context/value-api/model/valueSetOperation.d.ts +0 -17
  979. package/lib/view-context/value-api/param.d.ts +0 -37
  980. package/lib/view-context/value-api/variables.d.ts +0 -8
  981. package/lib/view-context/view-handler-resolution.d.ts +0 -11
  982. package/lib/view-context/view-op.d.ts +0 -18
  983. package/lib/view-context/view-slot-resolution.d.ts +0 -27
  984. package/projects.d.ts +0 -27
  985. package/smartbit4all-ng-client-6.0.31.tgz +0 -0
@@ -1,514 +0,0 @@
1
- /**
2
- * Grid api
3
- * The grid api is resposible for the grid components that shows a list of item.
4
- *
5
- * The version of the OpenAPI document: 1.0.0
6
- * Contact: info@it4all.hu
7
- *
8
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
- * https://openapi-generator.tech
10
- * Do not edit the class manually.
11
- */
12
- /* tslint:disable:no-unused-variable member-ordering */
13
- import { Inject, Injectable, Optional } from '@angular/core';
14
- import { HttpHeaders, HttpContext } from '@angular/common/http';
15
- import { CustomHttpParameterCodec } from '../encoder';
16
- // @ts-ignore
17
- import { BASE_PATH } from '../variables';
18
- import { Configuration } from '../configuration';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/common/http";
21
- import * as i2 from "../configuration";
22
- export class GridService {
23
- constructor(httpClient, basePath, configuration) {
24
- this.httpClient = httpClient;
25
- this.basePath = 'http://localhost';
26
- this.defaultHeaders = new HttpHeaders();
27
- this.configuration = new Configuration();
28
- if (configuration) {
29
- this.configuration = configuration;
30
- }
31
- if (typeof this.configuration.basePath !== 'string') {
32
- if (Array.isArray(basePath) && basePath.length > 0) {
33
- basePath = basePath[0];
34
- }
35
- if (typeof basePath !== 'string') {
36
- basePath = this.basePath;
37
- }
38
- this.configuration.basePath = basePath;
39
- }
40
- this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();
41
- }
42
- // @ts-ignore
43
- addToHttpParams(httpParams, value, key) {
44
- if (typeof value === "object" && value instanceof Date === false) {
45
- httpParams = this.addToHttpParamsRecursive(httpParams, value);
46
- }
47
- else {
48
- httpParams = this.addToHttpParamsRecursive(httpParams, value, key);
49
- }
50
- return httpParams;
51
- }
52
- addToHttpParamsRecursive(httpParams, value, key) {
53
- if (value == null) {
54
- return httpParams;
55
- }
56
- if (typeof value === "object") {
57
- if (Array.isArray(value)) {
58
- value.forEach(elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));
59
- }
60
- else if (value instanceof Date) {
61
- if (key != null) {
62
- httpParams = httpParams.append(key, value.toISOString().substr(0, 10));
63
- }
64
- else {
65
- throw Error("key may not be null if value is Date");
66
- }
67
- }
68
- else {
69
- Object.keys(value).forEach(k => httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k));
70
- }
71
- }
72
- else if (key != null) {
73
- httpParams = httpParams.append(key, value);
74
- }
75
- else {
76
- throw Error("key may not be null if value is not object or array");
77
- }
78
- return httpParams;
79
- }
80
- expand(uuid, gridId, rowId, observe = 'body', reportProgress = false, options) {
81
- if (uuid === null || uuid === undefined) {
82
- throw new Error('Required parameter uuid was null or undefined when calling expand.');
83
- }
84
- if (gridId === null || gridId === undefined) {
85
- throw new Error('Required parameter gridId was null or undefined when calling expand.');
86
- }
87
- if (rowId === null || rowId === undefined) {
88
- throw new Error('Required parameter rowId was null or undefined when calling expand.');
89
- }
90
- let localVarHeaders = this.defaultHeaders;
91
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
92
- if (localVarHttpHeaderAcceptSelected === undefined) {
93
- // to determine the Accept header
94
- const httpHeaderAccepts = [
95
- 'application/json'
96
- ];
97
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
98
- }
99
- if (localVarHttpHeaderAcceptSelected !== undefined) {
100
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
101
- }
102
- let localVarHttpContext = options && options.context;
103
- if (localVarHttpContext === undefined) {
104
- localVarHttpContext = new HttpContext();
105
- }
106
- let responseType_ = 'json';
107
- if (localVarHttpHeaderAcceptSelected) {
108
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
109
- responseType_ = 'text';
110
- }
111
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
112
- responseType_ = 'json';
113
- }
114
- else {
115
- responseType_ = 'blob';
116
- }
117
- }
118
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridId", value: gridId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/${this.configuration.encodeParam({ name: "rowId", value: rowId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/expand`;
119
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
120
- context: localVarHttpContext,
121
- responseType: responseType_,
122
- withCredentials: this.configuration.withCredentials,
123
- headers: localVarHeaders,
124
- observe: observe,
125
- reportProgress: reportProgress
126
- });
127
- }
128
- load(uuid, gridIdentifier, observe = 'body', reportProgress = false, options) {
129
- if (uuid === null || uuid === undefined) {
130
- throw new Error('Required parameter uuid was null or undefined when calling load.');
131
- }
132
- if (gridIdentifier === null || gridIdentifier === undefined) {
133
- throw new Error('Required parameter gridIdentifier was null or undefined when calling load.');
134
- }
135
- let localVarHeaders = this.defaultHeaders;
136
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
137
- if (localVarHttpHeaderAcceptSelected === undefined) {
138
- // to determine the Accept header
139
- const httpHeaderAccepts = [
140
- 'application/json'
141
- ];
142
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
143
- }
144
- if (localVarHttpHeaderAcceptSelected !== undefined) {
145
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
146
- }
147
- let localVarHttpContext = options && options.context;
148
- if (localVarHttpContext === undefined) {
149
- localVarHttpContext = new HttpContext();
150
- }
151
- let responseType_ = 'json';
152
- if (localVarHttpHeaderAcceptSelected) {
153
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
154
- responseType_ = 'text';
155
- }
156
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
157
- responseType_ = 'json';
158
- }
159
- else {
160
- responseType_ = 'blob';
161
- }
162
- }
163
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridIdentifier", value: gridIdentifier, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/load`;
164
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
165
- context: localVarHttpContext,
166
- responseType: responseType_,
167
- withCredentials: this.configuration.withCredentials,
168
- headers: localVarHeaders,
169
- observe: observe,
170
- reportProgress: reportProgress
171
- });
172
- }
173
- refresh(uuid, gridIdentifier, observe = 'body', reportProgress = false, options) {
174
- if (uuid === null || uuid === undefined) {
175
- throw new Error('Required parameter uuid was null or undefined when calling refresh.');
176
- }
177
- if (gridIdentifier === null || gridIdentifier === undefined) {
178
- throw new Error('Required parameter gridIdentifier was null or undefined when calling refresh.');
179
- }
180
- let localVarHeaders = this.defaultHeaders;
181
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
182
- if (localVarHttpHeaderAcceptSelected === undefined) {
183
- // to determine the Accept header
184
- const httpHeaderAccepts = [
185
- 'application/json'
186
- ];
187
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
188
- }
189
- if (localVarHttpHeaderAcceptSelected !== undefined) {
190
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
191
- }
192
- let localVarHttpContext = options && options.context;
193
- if (localVarHttpContext === undefined) {
194
- localVarHttpContext = new HttpContext();
195
- }
196
- let responseType_ = 'json';
197
- if (localVarHttpHeaderAcceptSelected) {
198
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
199
- responseType_ = 'text';
200
- }
201
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
202
- responseType_ = 'json';
203
- }
204
- else {
205
- responseType_ = 'blob';
206
- }
207
- }
208
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridIdentifier", value: gridIdentifier, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/refresh`;
209
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
210
- context: localVarHttpContext,
211
- responseType: responseType_,
212
- withCredentials: this.configuration.withCredentials,
213
- headers: localVarHeaders,
214
- observe: observe,
215
- reportProgress: reportProgress
216
- });
217
- }
218
- select(uuid, gridId, rowId, selected, gridSelectionChange, observe = 'body', reportProgress = false, options) {
219
- if (uuid === null || uuid === undefined) {
220
- throw new Error('Required parameter uuid was null or undefined when calling select.');
221
- }
222
- if (gridId === null || gridId === undefined) {
223
- throw new Error('Required parameter gridId was null or undefined when calling select.');
224
- }
225
- if (rowId === null || rowId === undefined) {
226
- throw new Error('Required parameter rowId was null or undefined when calling select.');
227
- }
228
- let localVarHeaders = this.defaultHeaders;
229
- if (selected !== undefined && selected !== null) {
230
- localVarHeaders = localVarHeaders.set('selected', String(selected));
231
- }
232
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
233
- if (localVarHttpHeaderAcceptSelected === undefined) {
234
- // to determine the Accept header
235
- const httpHeaderAccepts = [
236
- 'application/json'
237
- ];
238
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
239
- }
240
- if (localVarHttpHeaderAcceptSelected !== undefined) {
241
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
242
- }
243
- let localVarHttpContext = options && options.context;
244
- if (localVarHttpContext === undefined) {
245
- localVarHttpContext = new HttpContext();
246
- }
247
- // to determine the Content-Type header
248
- const consumes = [
249
- 'application/json'
250
- ];
251
- const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
252
- if (httpContentTypeSelected !== undefined) {
253
- localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
254
- }
255
- let responseType_ = 'json';
256
- if (localVarHttpHeaderAcceptSelected) {
257
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
258
- responseType_ = 'text';
259
- }
260
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
261
- responseType_ = 'json';
262
- }
263
- else {
264
- responseType_ = 'blob';
265
- }
266
- }
267
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridId", value: gridId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/${this.configuration.encodeParam({ name: "rowId", value: rowId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/select`;
268
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
269
- context: localVarHttpContext,
270
- body: gridSelectionChange,
271
- responseType: responseType_,
272
- withCredentials: this.configuration.withCredentials,
273
- headers: localVarHeaders,
274
- observe: observe,
275
- reportProgress: reportProgress
276
- });
277
- }
278
- selectAll(uuid, gridId, selected, gridSelectionChange, observe = 'body', reportProgress = false, options) {
279
- if (uuid === null || uuid === undefined) {
280
- throw new Error('Required parameter uuid was null or undefined when calling selectAll.');
281
- }
282
- if (gridId === null || gridId === undefined) {
283
- throw new Error('Required parameter gridId was null or undefined when calling selectAll.');
284
- }
285
- let localVarHeaders = this.defaultHeaders;
286
- if (selected !== undefined && selected !== null) {
287
- localVarHeaders = localVarHeaders.set('selected', String(selected));
288
- }
289
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
290
- if (localVarHttpHeaderAcceptSelected === undefined) {
291
- // to determine the Accept header
292
- const httpHeaderAccepts = [
293
- 'application/json'
294
- ];
295
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
296
- }
297
- if (localVarHttpHeaderAcceptSelected !== undefined) {
298
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
299
- }
300
- let localVarHttpContext = options && options.context;
301
- if (localVarHttpContext === undefined) {
302
- localVarHttpContext = new HttpContext();
303
- }
304
- // to determine the Content-Type header
305
- const consumes = [
306
- 'application/json'
307
- ];
308
- const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
309
- if (httpContentTypeSelected !== undefined) {
310
- localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
311
- }
312
- let responseType_ = 'json';
313
- if (localVarHttpHeaderAcceptSelected) {
314
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
315
- responseType_ = 'text';
316
- }
317
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
318
- responseType_ = 'json';
319
- }
320
- else {
321
- responseType_ = 'blob';
322
- }
323
- }
324
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridId", value: gridId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/select`;
325
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
326
- context: localVarHttpContext,
327
- body: gridSelectionChange,
328
- responseType: responseType_,
329
- withCredentials: this.configuration.withCredentials,
330
- headers: localVarHeaders,
331
- observe: observe,
332
- reportProgress: reportProgress
333
- });
334
- }
335
- selectRows(uuid, gridId, gridSelectionChange, observe = 'body', reportProgress = false, options) {
336
- if (uuid === null || uuid === undefined) {
337
- throw new Error('Required parameter uuid was null or undefined when calling selectRows.');
338
- }
339
- if (gridId === null || gridId === undefined) {
340
- throw new Error('Required parameter gridId was null or undefined when calling selectRows.');
341
- }
342
- if (gridSelectionChange === null || gridSelectionChange === undefined) {
343
- throw new Error('Required parameter gridSelectionChange was null or undefined when calling selectRows.');
344
- }
345
- let localVarHeaders = this.defaultHeaders;
346
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
347
- if (localVarHttpHeaderAcceptSelected === undefined) {
348
- // to determine the Accept header
349
- const httpHeaderAccepts = [
350
- 'application/json'
351
- ];
352
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
353
- }
354
- if (localVarHttpHeaderAcceptSelected !== undefined) {
355
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
356
- }
357
- let localVarHttpContext = options && options.context;
358
- if (localVarHttpContext === undefined) {
359
- localVarHttpContext = new HttpContext();
360
- }
361
- // to determine the Content-Type header
362
- const consumes = [
363
- 'application/json'
364
- ];
365
- const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
366
- if (httpContentTypeSelected !== undefined) {
367
- localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
368
- }
369
- let responseType_ = 'json';
370
- if (localVarHttpHeaderAcceptSelected) {
371
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
372
- responseType_ = 'text';
373
- }
374
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
375
- responseType_ = 'json';
376
- }
377
- else {
378
- responseType_ = 'blob';
379
- }
380
- }
381
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridId", value: gridId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/selects`;
382
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
383
- context: localVarHttpContext,
384
- body: gridSelectionChange,
385
- responseType: responseType_,
386
- withCredentials: this.configuration.withCredentials,
387
- headers: localVarHeaders,
388
- observe: observe,
389
- reportProgress: reportProgress
390
- });
391
- }
392
- setPage(uuid, gridIdentifier, offset, limit, observe = 'body', reportProgress = false, options) {
393
- if (uuid === null || uuid === undefined) {
394
- throw new Error('Required parameter uuid was null or undefined when calling setPage.');
395
- }
396
- if (gridIdentifier === null || gridIdentifier === undefined) {
397
- throw new Error('Required parameter gridIdentifier was null or undefined when calling setPage.');
398
- }
399
- if (offset === null || offset === undefined) {
400
- throw new Error('Required parameter offset was null or undefined when calling setPage.');
401
- }
402
- if (limit === null || limit === undefined) {
403
- throw new Error('Required parameter limit was null or undefined when calling setPage.');
404
- }
405
- let localVarHeaders = this.defaultHeaders;
406
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
407
- if (localVarHttpHeaderAcceptSelected === undefined) {
408
- // to determine the Accept header
409
- const httpHeaderAccepts = [];
410
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
411
- }
412
- if (localVarHttpHeaderAcceptSelected !== undefined) {
413
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
414
- }
415
- let localVarHttpContext = options && options.context;
416
- if (localVarHttpContext === undefined) {
417
- localVarHttpContext = new HttpContext();
418
- }
419
- let responseType_ = 'json';
420
- if (localVarHttpHeaderAcceptSelected) {
421
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
422
- responseType_ = 'text';
423
- }
424
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
425
- responseType_ = 'json';
426
- }
427
- else {
428
- responseType_ = 'blob';
429
- }
430
- }
431
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridIdentifier", value: gridIdentifier, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/page/${this.configuration.encodeParam({ name: "offset", value: offset, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/${this.configuration.encodeParam({ name: "limit", value: limit, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}`;
432
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
433
- context: localVarHttpContext,
434
- responseType: responseType_,
435
- withCredentials: this.configuration.withCredentials,
436
- headers: localVarHeaders,
437
- observe: observe,
438
- reportProgress: reportProgress
439
- });
440
- }
441
- update(uuid, gridIdentifier, gridUpdateData, observe = 'body', reportProgress = false, options) {
442
- if (uuid === null || uuid === undefined) {
443
- throw new Error('Required parameter uuid was null or undefined when calling update.');
444
- }
445
- if (gridIdentifier === null || gridIdentifier === undefined) {
446
- throw new Error('Required parameter gridIdentifier was null or undefined when calling update.');
447
- }
448
- if (gridUpdateData === null || gridUpdateData === undefined) {
449
- throw new Error('Required parameter gridUpdateData was null or undefined when calling update.');
450
- }
451
- let localVarHeaders = this.defaultHeaders;
452
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
453
- if (localVarHttpHeaderAcceptSelected === undefined) {
454
- // to determine the Accept header
455
- const httpHeaderAccepts = [
456
- 'application/json'
457
- ];
458
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
459
- }
460
- if (localVarHttpHeaderAcceptSelected !== undefined) {
461
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
462
- }
463
- let localVarHttpContext = options && options.context;
464
- if (localVarHttpContext === undefined) {
465
- localVarHttpContext = new HttpContext();
466
- }
467
- // to determine the Content-Type header
468
- const consumes = [
469
- 'application/json'
470
- ];
471
- const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
472
- if (httpContentTypeSelected !== undefined) {
473
- localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
474
- }
475
- let responseType_ = 'json';
476
- if (localVarHttpHeaderAcceptSelected) {
477
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
478
- responseType_ = 'text';
479
- }
480
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
481
- responseType_ = 'json';
482
- }
483
- else {
484
- responseType_ = 'blob';
485
- }
486
- }
487
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridIdentifier", value: gridIdentifier, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/update`;
488
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
489
- context: localVarHttpContext,
490
- body: gridUpdateData,
491
- responseType: responseType_,
492
- withCredentials: this.configuration.withCredentials,
493
- headers: localVarHeaders,
494
- observe: observe,
495
- reportProgress: reportProgress
496
- });
497
- }
498
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GridService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
499
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GridService, providedIn: 'root' }); }
500
- }
501
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GridService, decorators: [{
502
- type: Injectable,
503
- args: [{
504
- providedIn: 'root'
505
- }]
506
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
507
- type: Optional
508
- }, {
509
- type: Inject,
510
- args: [BASE_PATH]
511
- }] }, { type: i2.Configuration, decorators: [{
512
- type: Optional
513
- }] }] });
514
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvYXBpL2dyaWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFjLFdBQVcsRUFDc0IsV0FBVyxFQUN4RCxNQUFZLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUErQixZQUFZLENBQUM7QUFZL0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDOzs7O0FBT3JGLE1BQU0sT0FBTyxXQUFXO0lBT3BCLFlBQXNCLFVBQXNCLEVBQWdDLFFBQXlCLEVBQWMsYUFBNEI7UUFBekgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxsQyxhQUFRLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsbUJBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUl2QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELFFBQVEs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U0FBUzttSEFQakUsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFRa0QsUUFBUTs7MEJBQUcsTUFBTTsyQkFBQyxTQUFTOzswQkFBOEIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBHcmlkIGFwaVxyXG4gKiBUaGUgZ3JpZCBhcGkgaXMgcmVzcG9zaWJsZSBmb3IgdGhlIGdyaWQgY29tcG9uZW50cyB0aGF0IHNob3dzIGEgbGlzdCBvZiBpdGVtLiBcclxuICpcclxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXHJcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XHJcbiAqXHJcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXHJcbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxyXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXHJcbiAqL1xyXG4vKiB0c2xpbnQ6ZGlzYWJsZTpuby11bnVzZWQtdmFyaWFibGUgbWVtYmVyLW9yZGVyaW5nICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLFxyXG4gICAgICAgICBIdHRwUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cFBhcmFtZXRlckNvZGVjLCBIdHRwQ29udGV4dCBcclxuICAgICAgICB9ICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ3VzdG9tSHR0cFBhcmFtZXRlckNvZGVjIH0gICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2VuY29kZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAncnhqcyc7XHJcblxyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IEdyaWRNb2RlbCB9IGZyb20gJy4uL21vZGVsL2dyaWRNb2RlbCc7XHJcbi8vIEB0cy1pZ25vcmVcclxuaW1wb3J0IHsgR3JpZFNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJy4uL21vZGVsL2dyaWRTZWxlY3Rpb25DaGFuZ2UnO1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IEdyaWRVcGRhdGVEYXRhIH0gZnJvbSAnLi4vbW9kZWwvZ3JpZFVwZGF0ZURhdGEnO1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IFZpZXdDb250ZXh0Q2hhbmdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdmlldy1jb250ZXh0L2FwaSc7XHJcblxyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi92YXJpYWJsZXMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vY29uZmlndXJhdGlvbic7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWRTZXJ2aWNlIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSAnaHR0cDovL2xvY2FsaG9zdCc7XHJcbiAgICBwdWJsaWMgZGVmYXVsdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIHB1YmxpYyBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcclxuICAgIHB1YmxpYyBlbmNvZGVyOiBIdHRwUGFyYW1ldGVyQ29kZWM7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIEBPcHRpb25hbCgpQEluamVjdChCQVNFX1BBVEgpIGJhc2VQYXRoOiBzdHJpbmd8c3RyaW5nW10sIEBPcHRpb25hbCgpIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYmFzZVBhdGgpICYmIGJhc2VQYXRoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGJhc2VQYXRoID0gYmFzZVBhdGhbMF07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYmFzZVBhdGggIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBiYXNlUGF0aCA9IHRoaXMuYmFzZVBhdGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRoID0gYmFzZVBhdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5jb2RlciA9IHRoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVyIHx8IG5ldyBDdXN0b21IdHRwUGFyYW1ldGVyQ29kZWMoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcHJpdmF0ZSBhZGRUb0h0dHBQYXJhbXMoaHR0cFBhcmFtczogSHR0cFBhcmFtcywgdmFsdWU6IGFueSwga2V5Pzogc3RyaW5nKTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zLCB2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIHZhbHVlLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zOiBIdHRwUGFyYW1zLCB2YWx1ZT86IGFueSwga2V5Pzogc3RyaW5nKTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGh0dHBQYXJhbXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgKHZhbHVlIGFzIGFueVtdKS5mb3JFYWNoKCBlbGVtID0+IGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zLCBlbGVtLCBrZXkpKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChrZXksICh2YWx1ZSBhcyBEYXRlKS50b0lTT1N0cmluZygpLnN1YnN0cigwLCAxMCkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwia2V5IG1heSBub3QgYmUgbnVsbCBpZiB2YWx1ZSBpcyBEYXRlXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goIGsgPT4gaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMsIHZhbHVlW2tdLCBrZXkgIT0gbnVsbCA/IGAke2tleX0uJHtrfWAgOiBrKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcImtleSBtYXkgbm90IGJlIG51bGwgaWYgdmFsdWUgaXMgbm90IG9iamVjdCBvciBhcnJheVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGh0dHBQYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1dWlkIFxyXG4gICAgICogQHBhcmFtIGdyaWRJZCBcclxuICAgICAqIEBwYXJhbSByb3dJZCBcclxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXHJcbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHBhbmQodXVpZDogc3RyaW5nLCBncmlkSWQ6IHN0cmluZywgcm93SWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPG9iamVjdD47XHJcbiAgICBwdWJsaWMgZXhwYW5kKHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIHJvd0lkOiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG9iamVjdD4+O1xyXG4gICAgcHVibGljIGV4cGFuZCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCByb3dJZDogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8b2JqZWN0Pj47XHJcbiAgICBwdWJsaWMgZXhwYW5kKHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIHJvd0lkOiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBpZiAodXVpZCA9PT0gbnVsbCB8fCB1dWlkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgdXVpZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGV4cGFuZC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGdyaWRJZCA9PT0gbnVsbCB8fCBncmlkSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBncmlkSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBleHBhbmQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb3dJZCA9PT0gbnVsbCB8fCByb3dJZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHJvd0lkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZXhwYW5kLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xyXG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnYmxvYic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2dyaWQvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwidXVpZFwiLCB2YWx1ZTogdXVpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiBcInV1aWRcIn0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJncmlkSWRcIiwgdmFsdWU6IGdyaWRJZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwicm93SWRcIiwgdmFsdWU6IHJvd0lkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfS9leHBhbmRgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxvYmplY3Q+KCdwb3N0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1dWlkIFxyXG4gICAgICogQHBhcmFtIGdyaWRJZGVudGlmaWVyIFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGxvYWQodXVpZDogc3RyaW5nLCBncmlkSWRlbnRpZmllcjogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8R3JpZE1vZGVsPjtcclxuICAgIHB1YmxpYyBsb2FkKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8R3JpZE1vZGVsPj47XHJcbiAgICBwdWJsaWMgbG9hZCh1dWlkOiBzdHJpbmcsIGdyaWRJZGVudGlmaWVyOiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxHcmlkTW9kZWw+PjtcclxuICAgIHB1YmxpYyBsb2FkKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmICh1dWlkID09PSBudWxsIHx8IHV1aWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB1dWlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgbG9hZC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGdyaWRJZGVudGlmaWVyID09PSBudWxsIHx8IGdyaWRJZGVudGlmaWVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgZ3JpZElkZW50aWZpZXIgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBsb2FkLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xyXG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnYmxvYic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2dyaWQvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwidXVpZFwiLCB2YWx1ZTogdXVpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiBcInV1aWRcIn0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJncmlkSWRlbnRpZmllclwiLCB2YWx1ZTogZ3JpZElkZW50aWZpZXIsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9L2xvYWRgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxHcmlkTW9kZWw+KCdwb3N0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1dWlkIFxyXG4gICAgICogQHBhcmFtIGdyaWRJZGVudGlmaWVyIFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZnJlc2godXVpZDogc3RyaW5nLCBncmlkSWRlbnRpZmllcjogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8R3JpZE1vZGVsPjtcclxuICAgIHB1YmxpYyByZWZyZXNoKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8R3JpZE1vZGVsPj47XHJcbiAgICBwdWJsaWMgcmVmcmVzaCh1dWlkOiBzdHJpbmcsIGdyaWRJZGVudGlmaWVyOiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxHcmlkTW9kZWw+PjtcclxuICAgIHB1YmxpYyByZWZyZXNoKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmICh1dWlkID09PSBudWxsIHx8IHV1aWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB1dWlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgcmVmcmVzaC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGdyaWRJZGVudGlmaWVyID09PSBudWxsIHx8IGdyaWRJZGVudGlmaWVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgZ3JpZElkZW50aWZpZXIgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyByZWZyZXNoLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xyXG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnYmxvYic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2dyaWQvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwidXVpZFwiLCB2YWx1ZTogdXVpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiBcInV1aWRcIn0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJncmlkSWRlbnRpZmllclwiLCB2YWx1ZTogZ3JpZElkZW50aWZpZXIsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9L3JlZnJlc2hgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxHcmlkTW9kZWw+KCdwb3N0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1dWlkIFxyXG4gICAgICogQHBhcmFtIGdyaWRJZCBcclxuICAgICAqIEBwYXJhbSByb3dJZCBcclxuICAgICAqIEBwYXJhbSBzZWxlY3RlZCBcclxuICAgICAqIEBwYXJhbSBncmlkU2VsZWN0aW9uQ2hhbmdlIFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCByb3dJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIGdyaWRTZWxlY3Rpb25DaGFuZ2U/OiBHcmlkU2VsZWN0aW9uQ2hhbmdlLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8Vmlld0NvbnRleHRDaGFuZ2U+O1xyXG4gICAgcHVibGljIHNlbGVjdCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCByb3dJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIGdyaWRTZWxlY3Rpb25DaGFuZ2U/OiBHcmlkU2VsZWN0aW9uQ2hhbmdlLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxWaWV3Q29udGV4dENoYW5nZT4+O1xyXG4gICAgcHVibGljIHNlbGVjdCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCByb3dJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIGdyaWRTZWxlY3Rpb25DaGFuZ2U/OiBHcmlkU2VsZWN0aW9uQ2hhbmdlLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8Vmlld0NvbnRleHRDaGFuZ2U+PjtcclxuICAgIHB1YmxpYyBzZWxlY3QodXVpZDogc3RyaW5nLCBncmlkSWQ6IHN0cmluZywgcm93SWQ6IHN0cmluZywgc2VsZWN0ZWQ/OiBib29sZWFuLCBncmlkU2VsZWN0aW9uQ2hhbmdlPzogR3JpZFNlbGVjdGlvbkNoYW5nZSwgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmICh1dWlkID09PSBudWxsIHx8IHV1aWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB1dWlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgc2VsZWN0LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZ3JpZElkID09PSBudWxsIHx8IGdyaWRJZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGdyaWRJZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHNlbGVjdC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvd0lkID09PSBudWxsIHx8IHJvd0lkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgcm93SWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzZWxlY3QuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuICAgICAgICBpZiAoc2VsZWN0ZWQgIT09IHVuZGVmaW5lZCAmJiBzZWxlY3RlZCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdzZWxlY3RlZCcsIFN0cmluZyhzZWxlY3RlZCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuaHR0cEhlYWRlckFjY2VwdDtcclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcclxuICAgICAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0FjY2VwdCcsIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBDb250ZXh0OiBIdHRwQ29udGV4dCB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jb250ZXh0O1xyXG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcclxuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xyXG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnYmxvYic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2dyaWQvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwidXVpZFwiLCB2YWx1ZTogdXVpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiBcInV1aWRcIn0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJncmlkSWRcIiwgdmFsdWU6IGdyaWRJZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwicm93SWRcIiwgdmFsdWU6IHJvd0lkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfS9zZWxlY3RgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxWaWV3Q29udGV4dENoYW5nZT4oJ3Bvc3QnLCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcclxuICAgICAgICAgICAgICAgIGJvZHk6IGdyaWRTZWxlY3Rpb25DaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1dWlkIFxyXG4gICAgICogQHBhcmFtIGdyaWRJZCBcclxuICAgICAqIEBwYXJhbSBzZWxlY3RlZCBcclxuICAgICAqIEBwYXJhbSBncmlkU2VsZWN0aW9uQ2hhbmdlIFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdEFsbCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIGdyaWRTZWxlY3Rpb25DaGFuZ2U/OiBHcmlkU2VsZWN0aW9uQ2hhbmdlLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8Vmlld0NvbnRleHRDaGFuZ2U+O1xyXG4gICAgcHVibGljIHNlbGVjdEFsbCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIGdyaWRTZWxlY3Rpb25DaGFuZ2U/OiBHcmlkU2VsZWN0aW9uQ2hhbmdlLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxWaWV3Q29udGV4dENoYW5nZT4+O1xyXG4gICAgcHVibGljIHNlbGVjdEFsbCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIGdyaWRTZWxlY3Rpb25DaGFuZ2U/OiBHcmlkU2VsZWN0aW9uQ2hhbmdlLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8Vmlld0NvbnRleHRDaGFuZ2U+PjtcclxuICAgIHB1YmxpYyBzZWxlY3RBbGwodXVpZDogc3RyaW5nLCBncmlkSWQ6IHN0cmluZywgc2VsZWN0ZWQ/OiBib29sZWFuLCBncmlkU2VsZWN0aW9uQ2hhbmdlPzogR3JpZFNlbGVjdGlvbkNoYW5nZSwgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmICh1dWlkID09PSBudWxsIHx8IHV1aWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB1dWlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgc2VsZWN0QWxsLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZ3JpZElkID09PSBudWxsIHx8IGdyaWRJZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGdyaWRJZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHNlbGVjdEFsbC4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZCAhPT0gdW5kZWZpbmVkICYmIHNlbGVjdGVkICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ3NlbGVjdGVkJywgU3RyaW5nKHNlbGVjdGVkKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xyXG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXHJcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckh0dHBDb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xyXG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCByZXNwb25zZVR5cGVfOiAndGV4dCcgfCAnanNvbicgfCAnYmxvYicgPSAnanNvbic7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAndGV4dCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvZ3JpZC8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJ1dWlkXCIsIHZhbHVlOiB1dWlkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IFwidXVpZFwifSl9LyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcImdyaWRJZFwiLCB2YWx1ZTogZ3JpZElkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfS9zZWxlY3RgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxWaWV3Q29udGV4dENoYW5nZT4oJ3Bvc3QnLCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcclxuICAgICAgICAgICAgICAgIGJvZHk6IGdyaWRTZWxlY3Rpb25DaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1dWlkIFxyXG4gICAgICogQHBhcmFtIGdyaWRJZCBcclxuICAgICAqIEBwYXJhbSBncmlkU2VsZWN0aW9uQ2hhbmdlIFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdFJvd3ModXVpZDogc3RyaW5nLCBncmlkSWQ6IHN0cmluZywgZ3JpZFNlbGVjdGlvbkNoYW5nZTogR3JpZFNlbGVjdGlvbkNoYW5nZSwgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPFZpZXdDb250ZXh0Q2hhbmdlPjtcclxuICAgIHB1YmxpYyBzZWxlY3RSb3dzKHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIGdyaWRTZWxlY3Rpb25DaGFuZ2U6IEdyaWRTZWxlY3Rpb25DaGFuZ2UsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPFZpZXdDb250ZXh0Q2hhbmdlPj47XHJcbiAgICBwdWJsaWMgc2VsZWN0Um93cyh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCBncmlkU2VsZWN0aW9uQ2hhbmdlOiBHcmlkU2VsZWN0aW9uQ2hhbmdlLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8Vmlld0NvbnRleHRDaGFuZ2U+PjtcclxuICAgIHB1YmxpYyBzZWxlY3RSb3dzKHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIGdyaWRTZWxlY3Rpb25DaGFuZ2U6IEdyaWRTZWxlY3Rpb25DaGFuZ2UsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBpZiAodXVpZCA9PT0gbnVsbCB8fCB1dWlkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgdXVpZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHNlbGVjdFJvd3MuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChncmlkSWQgPT09IG51bGwgfHwgZ3JpZElkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgZ3JpZElkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgc2VsZWN0Um93cy4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGdyaWRTZWxlY3Rpb25DaGFuZ2UgPT09IG51bGwgfHwgZ3JpZFNlbGVjdGlvbkNoYW5nZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGdyaWRTZWxlY3Rpb25DaGFuZ2Ugd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzZWxlY3RSb3dzLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXHJcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgIF07XHJcbiAgICAgICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XHJcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoJ3RleHQnKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnanNvbic7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9ncmlkLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcInV1aWRcIiwgdmFsdWU6IHV1aWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogXCJ1dWlkXCJ9KX0vJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwiZ3JpZElkXCIsIHZhbHVlOiBncmlkSWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9L3NlbGVjdHNgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxWaWV3Q29udGV4dENoYW5nZT4oJ3Bvc3QnLCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcclxuICAgICAgICAgICAgICAgIGJvZHk6IGdyaWRTZWxlY3Rpb25DaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB1dWlkIFxyXG4gICAgICogQHBhcmFtIGdyaWRJZGVudGlmaWVyIFxyXG4gICAgICogQHBhcmFtIG9mZnNldCBcclxuICAgICAqIEBwYXJhbSBsaW1pdCBcclxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXHJcbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRQYWdlKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgb2Zmc2V0OiBzdHJpbmcsIGxpbWl0OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgcHVibGljIHNldFBhZ2UodXVpZDogc3RyaW5nLCBncmlkSWRlbnRpZmllcjogc3RyaW5nLCBvZmZzZXQ6IHN0cmluZywgbGltaXQ6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj47XHJcbiAgICBwdWJsaWMgc2V0UGFnZSh1dWlkOiBzdHJpbmcsIGdyaWRJZGVudGlmaWVyOiBzdHJpbmcsIG9mZnNldDogc3RyaW5nLCBsaW1pdDogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XHJcbiAgICBwdWJsaWMgc2V0UGFnZSh1dWlkOiBzdHJpbmcsIGdyaWRJZGVudGlmaWVyOiBzdHJpbmcsIG9mZnNldDogc3RyaW5nLCBsaW1pdDogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86IHVuZGVmaW5lZCwgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgaWYgKHV1aWQgPT09IG51bGwgfHwgdXVpZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHV1aWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzZXRQYWdlLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZ3JpZElkZW50aWZpZXIgPT09IG51bGwgfHwgZ3JpZElkZW50aWZpZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBncmlkSWRlbnRpZmllciB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHNldFBhZ2UuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvZmZzZXQgPT09IG51bGwgfHwgb2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgb2Zmc2V0IHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgc2V0UGFnZS4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxpbWl0ID09PSBudWxsIHx8IGxpbWl0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgbGltaXQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzZXRQYWdlLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckh0dHBDb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoJ3RleHQnKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnanNvbic7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9ncmlkLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcInV1aWRcIiwgdmFsdWU6IHV1aWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogXCJ1dWlkXCJ9KX0vJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwiZ3JpZElkZW50aWZpZXJcIiwgdmFsdWU6IGdyaWRJZGVudGlmaWVyLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfS9wYWdlLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcIm9mZnNldFwiLCB2YWx1ZTogb2Zmc2V0LCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJsaW1pdFwiLCB2YWx1ZTogbGltaXQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PigncG9zdCcsIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXHJcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gdXVpZCBcclxuICAgICAqIEBwYXJhbSBncmlkSWRlbnRpZmllciBcclxuICAgICAqIEBwYXJhbSBncmlkVXBkYXRlRGF0YSBcclxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXHJcbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGRhdGUodXVpZDogc3RyaW5nLCBncmlkSWRlbnRpZmllcjogc3RyaW5nLCBncmlkVXBkYXRlRGF0YTogR3JpZFVwZGF0ZURhdGEsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxHcmlkTW9kZWw+O1xyXG4gICAgcHVibGljIHVwZGF0ZSh1dWlkOiBzdHJpbmcsIGdyaWRJZGVudGlmaWVyOiBzdHJpbmcsIGdyaWRVcGRhdGVEYXRhOiBHcmlkVXBkYXRlRGF0YSwgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8R3JpZE1vZGVsPj47XHJcbiAgICBwdWJsaWMgdXBkYXRlKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgZ3JpZFVwZGF0ZURhdGE6IEdyaWRVcGRhdGVEYXRhLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8R3JpZE1vZGVsPj47XHJcbiAgICBwdWJsaWMgdXBkYXRlKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgZ3JpZFVwZGF0ZURhdGE6IEdyaWRVcGRhdGVEYXRhLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgaWYgKHV1aWQgPT09IG51bGwgfHwgdXVpZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHV1aWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyB1cGRhdGUuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChncmlkSWRlbnRpZmllciA9PT0gbnVsbCB8fCBncmlkSWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGdyaWRJZGVudGlmaWVyIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgdXBkYXRlLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZ3JpZFVwZGF0ZURhdGEgPT09IG51bGwgfHwgZ3JpZFVwZGF0ZURhdGEgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBncmlkVXBkYXRlRGF0YSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHVwZGF0ZS4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xyXG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXHJcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckh0dHBDb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xyXG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCByZXNwb25zZVR5cGVfOiAndGV4dCcgfCAnanNvbicgfCAnYmxvYicgPSAnanNvbic7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAndGV4dCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvZ3JpZC8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJ1dWlkXCIsIHZhbHVlOiB1dWlkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IFwidXVpZFwifSl9LyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcImdyaWRJZGVudGlmaWVyXCIsIHZhbHVlOiBncmlkSWRlbnRpZmllciwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vdXBkYXRlYDtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8R3JpZE1vZGVsPigncG9zdCcsIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgYm9keTogZ3JpZFVwZGF0ZURhdGEsXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==