@c8y/ngx-components 1021.38.1 → 1021.49.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/api/services.d.ts +1 -1
  2. package/api/services.d.ts.map +1 -1
  3. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
  4. package/connectivity/abstract-connectivity-tab.factory.d.ts +1 -1
  5. package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
  6. package/context-dashboard/context-dashboard.model.d.ts +4 -2
  7. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  8. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  9. package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts +1 -0
  10. package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts.map +1 -1
  11. package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts +0 -1
  12. package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
  13. package/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  14. package/context-dashboard/new-dashboard.guard.d.ts +1 -1
  15. package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
  16. package/core/action/action.component.d.ts +2 -1
  17. package/core/action/action.component.d.ts.map +1 -1
  18. package/core/action/action.model.d.ts +3 -2
  19. package/core/action/action.model.d.ts.map +1 -1
  20. package/core/breadcrumb/breadcrumb-item.component.d.ts +2 -1
  21. package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
  22. package/core/breadcrumb/breadcrumb.model.d.ts +2 -1
  23. package/core/breadcrumb/breadcrumb.model.d.ts.map +1 -1
  24. package/core/common/ApplicationOptions.d.ts +1 -0
  25. package/core/common/ApplicationOptions.d.ts.map +1 -1
  26. package/core/common/empty-state/empty-state.component.d.ts +2 -1
  27. package/core/common/empty-state/empty-state.component.d.ts.map +1 -1
  28. package/core/common/get-group-icon.pipe.d.ts +2 -1
  29. package/core/common/get-group-icon.pipe.d.ts.map +1 -1
  30. package/core/common/group.service.d.ts +22 -7
  31. package/core/common/group.service.d.ts.map +1 -1
  32. package/core/common/icon.directive.d.ts +5 -5
  33. package/core/common/icon.directive.d.ts.map +1 -1
  34. package/core/common/service-registry.model.d.ts +2 -1
  35. package/core/common/service-registry.model.d.ts.map +1 -1
  36. package/core/data-grid/data-grid.model.d.ts +2 -1
  37. package/core/data-grid/data-grid.model.d.ts.map +1 -1
  38. package/core/docs/docs.models.d.ts +2 -1
  39. package/core/docs/docs.models.d.ts.map +1 -1
  40. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts +5 -1
  41. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts.map +1 -1
  42. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts +5 -1
  43. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts.map +1 -1
  44. package/core/docs/support-outlet/support-outlet.component.d.ts +5 -1
  45. package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
  46. package/core/forms/filter-input.component.d.ts +8 -3
  47. package/core/forms/filter-input.component.d.ts.map +1 -1
  48. package/core/list-group/list-item-action.component.d.ts +2 -1
  49. package/core/list-group/list-item-action.component.d.ts.map +1 -1
  50. package/core/list-group/list-item-icon.component.d.ts +2 -1
  51. package/core/list-group/list-item-icon.component.d.ts.map +1 -1
  52. package/core/login/login.service.d.ts.map +1 -1
  53. package/core/navigator/navigator-icon.component.d.ts +1 -1
  54. package/core/navigator/navigator-icon.component.d.ts.map +1 -1
  55. package/core/navigator/navigator-node-data.d.ts +2 -1
  56. package/core/navigator/navigator-node-data.d.ts.map +1 -1
  57. package/core/navigator/navigator-node.component.d.ts.map +1 -1
  58. package/core/navigator/navigator-node.d.ts +2 -1
  59. package/core/navigator/navigator-node.d.ts.map +1 -1
  60. package/core/plugins/plugins.model.d.ts +7 -2
  61. package/core/plugins/plugins.model.d.ts.map +1 -1
  62. package/core/plugins/plugins.service.d.ts.map +1 -1
  63. package/core/properties-list/properties-list.component.d.ts +2 -1
  64. package/core/properties-list/properties-list.component.d.ts.map +1 -1
  65. package/core/provider-configuration/model/dynamic-provider-config.model.d.ts +2 -2
  66. package/core/provider-configuration/model/dynamic-provider-config.model.d.ts.map +1 -1
  67. package/core/router/context-route.service.d.ts.map +1 -1
  68. package/core/router/router.model.d.ts +1 -1
  69. package/core/router/router.model.d.ts.map +1 -1
  70. package/core/router/scoped-context-route.service.d.ts.map +1 -1
  71. package/core/search/search.model.d.ts +2 -1
  72. package/core/search/search.model.d.ts.map +1 -1
  73. package/core/select/select-keyboard.service.d.ts +4 -0
  74. package/core/select/select-keyboard.service.d.ts.map +1 -1
  75. package/core/select/select.component.d.ts +14 -3
  76. package/core/select/select.component.d.ts.map +1 -1
  77. package/core/select-modal/select-modal.component.d.ts +2 -1
  78. package/core/select-modal/select-modal.component.d.ts.map +1 -1
  79. package/core/shared/core.model.d.ts +5 -1
  80. package/core/shared/core.model.d.ts.map +1 -1
  81. package/core/tabs/conditional-tabs-outlet.component.d.ts.map +1 -1
  82. package/core/tabs/tab.component.d.ts +3 -2
  83. package/core/tabs/tab.component.d.ts.map +1 -1
  84. package/core/tabs/tab.model.d.ts +10 -5
  85. package/core/tabs/tab.model.d.ts.map +1 -1
  86. package/core/tabs/tabs-outlet.component.d.ts +7 -4
  87. package/core/tabs/tabs-outlet.component.d.ts.map +1 -1
  88. package/core/user/user-menu-item.component.d.ts +2 -1
  89. package/core/user/user-menu-item.component.d.ts.map +1 -1
  90. package/core/user/user.model.d.ts +2 -1
  91. package/core/user/user.model.d.ts.map +1 -1
  92. package/core/wizard/wizard.model.d.ts +4 -3
  93. package/core/wizard/wizard.model.d.ts.map +1 -1
  94. package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
  95. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +15 -46
  96. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  97. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts +3 -0
  98. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts.map +1 -1
  99. package/datapoint-selector/datapoint-selection.model.d.ts +6 -7
  100. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  101. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +2 -1
  102. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  103. package/device-grid/columns/icon.cell-renderer.component.d.ts +14 -0
  104. package/device-grid/columns/icon.cell-renderer.component.d.ts.map +1 -0
  105. package/device-grid/columns/index.d.ts +1 -0
  106. package/device-grid/columns/index.d.ts.map +1 -1
  107. package/device-grid/device-grid.component.d.ts.map +1 -1
  108. package/device-grid/device-grid.service.d.ts +0 -2
  109. package/device-grid/device-grid.service.d.ts.map +1 -1
  110. package/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.d.ts.map +1 -0
  111. package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts +11 -0
  112. package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts.map +1 -0
  113. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +13 -0
  114. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -0
  115. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts +13 -0
  116. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -0
  117. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +57 -0
  118. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -0
  119. package/device-provisioned-certificates/index.d.ts +2 -0
  120. package/device-provisioned-certificates/index.d.ts.map +1 -0
  121. package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -0
  122. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  123. package/ecosystem/application-plugins/application-plugins.module.d.ts +2 -2
  124. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  125. package/ecosystem/application-plugins/index.d.ts +1 -0
  126. package/ecosystem/application-plugins/index.d.ts.map +1 -1
  127. package/ecosystem/application-plugins/install-plugin.component.d.ts +9 -11
  128. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  129. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +12 -0
  130. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -0
  131. package/ecosystem/application-plugins/plugin-list-item.component.d.ts +8 -3
  132. package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
  133. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  134. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  135. package/ecosystem/applications/application-list/application-list.component.d.ts +2 -2
  136. package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
  137. package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
  138. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +11 -0
  139. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -0
  140. package/ecosystem/archived-confirm/archived-confirm.module.d.ts +10 -0
  141. package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -0
  142. package/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.d.ts.map +1 -0
  143. package/ecosystem/archived-confirm/index.d.ts +3 -0
  144. package/ecosystem/archived-confirm/index.d.ts.map +1 -0
  145. package/ecosystem/ecosystem.module.d.ts +2 -1
  146. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  147. package/ecosystem/features/feature-list.component.d.ts +2 -2
  148. package/ecosystem/features/feature-list.component.d.ts.map +1 -1
  149. package/ecosystem/microservices/microservice-list.component.d.ts +2 -2
  150. package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
  151. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  152. package/ecosystem/packages/package-details/package-details.component.d.ts +7 -2
  153. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  154. package/ecosystem/packages/package-list/packages-list.component.d.ts +2 -2
  155. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  156. package/ecosystem/shared/add-application.component.d.ts +2 -1
  157. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  158. package/ecosystem/shared/application-card.component.d.ts +4 -0
  159. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  160. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +12 -0
  161. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -0
  162. package/ecosystem/shared/ecosystem.constants.d.ts +4 -0
  163. package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
  164. package/ecosystem/shared/ecosystem.model.d.ts +5 -1
  165. package/ecosystem/shared/ecosystem.model.d.ts.map +1 -1
  166. package/ecosystem/shared/ecosystem.service.d.ts +7 -0
  167. package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
  168. package/ecosystem/shared/index.d.ts +1 -0
  169. package/ecosystem/shared/index.d.ts.map +1 -1
  170. package/ecosystem/shared/list-filters/list-filters.component.d.ts +14 -4
  171. package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
  172. package/ecosystem/shared/list-filters/list-filters.model.d.ts +8 -2
  173. package/ecosystem/shared/list-filters/list-filters.model.d.ts.map +1 -1
  174. package/ecosystem/shared/shared-ecosystem.module.d.ts +9 -8
  175. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  176. package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
  177. package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
  178. package/esm2022/alarms/alarm-info.component.mjs +1 -1
  179. package/esm2022/api/services.mjs +2 -2
  180. package/esm2022/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.mjs +10 -5
  181. package/esm2022/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.mjs +4 -4
  182. package/esm2022/context-dashboard/add-dashboard.component.mjs +4 -2
  183. package/esm2022/context-dashboard/context-dashboard.model.mjs +3 -2
  184. package/esm2022/context-dashboard/context-dashboard.service.mjs +2 -2
  185. package/esm2022/context-dashboard/dashboard-detail.component.mjs +5 -3
  186. package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.model.mjs +1 -1
  187. package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.service.mjs +5 -15
  188. package/esm2022/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.mjs +2 -2
  189. package/esm2022/context-dashboard/new-dashboard.guard.mjs +1 -1
  190. package/esm2022/core/action/action.component.mjs +1 -1
  191. package/esm2022/core/action/action.model.mjs +1 -1
  192. package/esm2022/core/bootstrap/bootstrap.component.mjs +1 -1
  193. package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +1 -1
  194. package/esm2022/core/breadcrumb/breadcrumb.model.mjs +1 -1
  195. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  196. package/esm2022/core/common/empty-state/empty-state.component.mjs +1 -1
  197. package/esm2022/core/common/get-group-icon.pipe.mjs +1 -1
  198. package/esm2022/core/common/group.service.mjs +2 -2
  199. package/esm2022/core/common/icon.directive.mjs +1 -1
  200. package/esm2022/core/common/service-registry.model.mjs +1 -1
  201. package/esm2022/core/data-grid/data-grid.model.mjs +1 -1
  202. package/esm2022/core/docs/docs.models.mjs +1 -1
  203. package/esm2022/core/docs/support-outlet/support-outlet.component.mjs +3 -3
  204. package/esm2022/core/forms/filter-input.component.mjs +22 -7
  205. package/esm2022/core/list-group/list-item-action.component.mjs +1 -1
  206. package/esm2022/core/list-group/list-item-icon.component.mjs +1 -1
  207. package/esm2022/core/login/credentials.component.mjs +2 -2
  208. package/esm2022/core/login/login.service.mjs +18 -7
  209. package/esm2022/core/navigator/navigator-node-data.mjs +1 -1
  210. package/esm2022/core/navigator/navigator-node.component.mjs +11 -2
  211. package/esm2022/core/navigator/navigator-node.mjs +1 -1
  212. package/esm2022/core/plugins/plugins.model.mjs +5 -1
  213. package/esm2022/core/plugins/plugins.service.mjs +6 -2
  214. package/esm2022/core/properties-list/properties-list.component.mjs +1 -1
  215. package/esm2022/core/provider-configuration/model/dynamic-provider-config.model.mjs +1 -1
  216. package/esm2022/core/router/context-route.service.mjs +4 -2
  217. package/esm2022/core/router/router.model.mjs +1 -1
  218. package/esm2022/core/router/scoped-context-route.service.mjs +4 -2
  219. package/esm2022/core/search/search.model.mjs +1 -1
  220. package/esm2022/core/select/select-keyboard.service.mjs +7 -3
  221. package/esm2022/core/select/select.component.mjs +36 -8
  222. package/esm2022/core/select-modal/select-modal.component.mjs +2 -2
  223. package/esm2022/core/shared/core.model.mjs +6 -2
  224. package/esm2022/core/tabs/conditional-tabs-outlet.component.mjs +4 -2
  225. package/esm2022/core/tabs/tab.component.mjs +1 -1
  226. package/esm2022/core/tabs/tab.model.mjs +1 -1
  227. package/esm2022/core/tabs/tabs-outlet.component.mjs +41 -12
  228. package/esm2022/core/user/user-menu-item.component.mjs +1 -1
  229. package/esm2022/core/user/user.model.mjs +1 -1
  230. package/esm2022/core/wizard/wizard.model.mjs +1 -1
  231. package/esm2022/data-grid-columns/asset-type/asset-type.cell-renderer.component.mjs +1 -1
  232. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +47 -22
  233. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.mjs +1 -1
  234. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  235. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  236. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +1 -1
  237. package/esm2022/device-grid/columns/icon.cell-renderer.component.mjs +42 -0
  238. package/esm2022/device-grid/columns/index.mjs +2 -1
  239. package/esm2022/device-grid/device-grid.component.mjs +3 -3
  240. package/esm2022/device-grid/device-grid.service.mjs +7 -25
  241. package/esm2022/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.mjs +5 -0
  242. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.guard.mjs +28 -0
  243. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.module.mjs +51 -0
  244. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +31 -0
  245. package/esm2022/device-provisioned-certificates/device-tab-provisioned-certificates.component.mjs +76 -0
  246. package/esm2022/device-provisioned-certificates/index.mjs +2 -0
  247. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +41 -39
  248. package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +8 -6
  249. package/esm2022/ecosystem/application-plugins/apps-to-update-remotes-select.component.mjs +1 -1
  250. package/esm2022/ecosystem/application-plugins/index.mjs +2 -1
  251. package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +18 -21
  252. package/esm2022/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.mjs +26 -0
  253. package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +14 -6
  254. package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +14 -12
  255. package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +7 -1
  256. package/esm2022/ecosystem/applications/application-list/application-list.component.mjs +1 -1
  257. package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +6 -1
  258. package/esm2022/ecosystem/archived-confirm/archived-confirm-modal.component.mjs +22 -0
  259. package/esm2022/ecosystem/archived-confirm/archived-confirm.module.mjs +32 -0
  260. package/esm2022/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.mjs +5 -0
  261. package/esm2022/ecosystem/archived-confirm/index.mjs +3 -0
  262. package/esm2022/ecosystem/ecosystem.module.mjs +20 -16
  263. package/esm2022/ecosystem/features/feature-list.component.mjs +1 -1
  264. package/esm2022/ecosystem/microservices/microservice-list.component.mjs +1 -1
  265. package/esm2022/ecosystem/packages/deploy-application/deploy-application.component.mjs +6 -1
  266. package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +13 -8
  267. package/esm2022/ecosystem/packages/package-list/packages-list.component.mjs +4 -4
  268. package/esm2022/ecosystem/shared/add-application.component.mjs +1 -1
  269. package/esm2022/ecosystem/shared/application-card.component.mjs +3 -3
  270. package/esm2022/ecosystem/shared/archived-filter/archived-filter.component.mjs +27 -0
  271. package/esm2022/ecosystem/shared/ecosystem.constants.mjs +5 -1
  272. package/esm2022/ecosystem/shared/ecosystem.model.mjs +7 -3
  273. package/esm2022/ecosystem/shared/ecosystem.service.mjs +26 -1
  274. package/esm2022/ecosystem/shared/index.mjs +2 -1
  275. package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +75 -13
  276. package/esm2022/ecosystem/shared/list-filters/list-filters.model.mjs +1 -1
  277. package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +10 -5
  278. package/esm2022/ecosystem/shared/translate-package-label.pipe.mjs +3 -3
  279. package/esm2022/files-repository/files-repository.component.mjs +2 -2
  280. package/esm2022/files-repository/files-repository.service.mjs +5 -16
  281. package/esm2022/icon-selector/icon-selector.component.mjs +1 -1
  282. package/esm2022/icon-selector/icons/index.mjs +1 -1
  283. package/esm2022/operations/shared/status-option.model.mjs +1 -1
  284. package/esm2022/protocol-lwm2m/components/configuration/lwm2m-configuration.component.mjs +2 -2
  285. package/esm2022/protocol-opcua/opcua-auto-apply-settings.component.mjs +1 -1
  286. package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +17 -9
  287. package/esm2022/register-device/general/general-device-registration-button.component.mjs +3 -3
  288. package/esm2022/register-device/general/general-device-registration.component.mjs +109 -33
  289. package/esm2022/remote-access/configurations/c8y-ngx-components-remote-access-configurations.mjs +5 -0
  290. package/esm2022/remote-access/configurations/index.mjs +16 -0
  291. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.mjs +218 -0
  292. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.mjs +60 -0
  293. package/esm2022/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.mjs +36 -0
  294. package/esm2022/remote-access/data/c8y-ngx-components-remote-access-data.mjs +5 -0
  295. package/esm2022/remote-access/data/index.mjs +3 -0
  296. package/esm2022/remote-access/data/remote-access-protocol-provider.mjs +2 -0
  297. package/esm2022/remote-access/data/remote-access.service.mjs +200 -0
  298. package/esm2022/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.mjs +5 -0
  299. package/esm2022/remote-access/passthrough/index.mjs +36 -0
  300. package/esm2022/remote-access/shared/c8y-ngx-components-remote-access-shared.mjs +5 -0
  301. package/esm2022/remote-access/shared/index.mjs +3 -0
  302. package/esm2022/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.mjs +49 -0
  303. package/esm2022/remote-access/shared/ssh-key-input/ssh-key-input.component.mjs +87 -0
  304. package/esm2022/remote-access/ssh/c8y-ngx-components-remote-access-ssh.mjs +5 -0
  305. package/esm2022/remote-access/ssh/index.mjs +73 -0
  306. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +5 -0
  307. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/index.mjs +2 -0
  308. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.mjs +104 -0
  309. package/esm2022/remote-access/telnet/c8y-ngx-components-remote-access-telnet.mjs +5 -0
  310. package/esm2022/remote-access/telnet/index.mjs +43 -0
  311. package/esm2022/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.mjs +5 -0
  312. package/esm2022/remote-access/terminal-viewer/index.mjs +2 -0
  313. package/esm2022/remote-access/terminal-viewer/shell-adapter.mjs +36 -0
  314. package/esm2022/remote-access/terminal-viewer/telnet-negotiator.mjs +96 -0
  315. package/esm2022/remote-access/terminal-viewer/terminal-viewer.component.mjs +101 -0
  316. package/esm2022/remote-access/vnc/c8y-ngx-components-remote-access-vnc.mjs +5 -0
  317. package/esm2022/remote-access/vnc/index.mjs +73 -0
  318. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +5 -0
  319. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/index.mjs +2 -0
  320. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.mjs +59 -0
  321. package/esm2022/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +5 -0
  322. package/esm2022/remote-access/vnc/vnc-viewer/index.mjs +2 -0
  323. package/esm2022/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.mjs +57 -0
  324. package/esm2022/remote-access/vnc/vnc-viewer/vnc-viewer.component.mjs +158 -0
  325. package/esm2022/replace-device/replace-device-wizard/replace-device-wizard.model.mjs +1 -1
  326. package/esm2022/report-dashboard/report-dashboard-list.component.mjs +4 -3
  327. package/esm2022/repository/configuration/device-tab/device-configuration-list.component.mjs +1 -1
  328. package/esm2022/repository/shared/repository.model.mjs +1 -1
  329. package/esm2022/repository/shared/repository.service.mjs +3 -3
  330. package/esm2022/services/status-options/status-options.model.mjs +1 -1
  331. package/esm2022/sub-assets/group-info.component.mjs +1 -1
  332. package/esm2022/translation-editor/data/translation-store.service.mjs +4 -3
  333. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +35 -9
  334. package/esm2022/upgrade/bridge.service.mjs +16 -2
  335. package/esm2022/widgets/implementations/alarms/severity-icon.pipe.mjs +1 -1
  336. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +3 -2
  337. package/esm2022/widgets/implementations/kpi/kpi-widget.model.mjs +1 -1
  338. package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
  339. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  340. package/fesm2022/c8y-ngx-components-api.mjs +3 -2
  341. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  342. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +12 -7
  343. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  344. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +15 -20
  345. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  346. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  347. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  348. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +48 -23
  349. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  350. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  351. package/fesm2022/c8y-ngx-components-device-grid.mjs +48 -28
  352. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  353. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +174 -0
  354. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -0
  355. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +125 -105
  356. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  357. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +57 -0
  358. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -0
  359. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +147 -31
  360. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  361. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1452 -1414
  362. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  363. package/fesm2022/c8y-ngx-components-files-repository.mjs +5 -16
  364. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  366. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
  368. package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +1 -1
  370. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-register-device.mjs +269 -188
  372. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  373. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +314 -0
  374. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -0
  375. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +206 -0
  376. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -0
  377. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +42 -0
  378. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -0
  379. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +138 -0
  380. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -0
  381. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +111 -0
  382. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -0
  383. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +79 -0
  384. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -0
  385. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +50 -0
  386. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -0
  387. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +235 -0
  388. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -0
  389. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +66 -0
  390. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -0
  391. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +211 -0
  392. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -0
  393. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +79 -0
  394. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -0
  395. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  396. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +3 -2
  397. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  398. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
  399. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  400. package/fesm2022/c8y-ngx-components-repository-shared.mjs +2 -2
  401. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  402. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  403. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  404. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -2
  405. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  406. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +43 -17
  407. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  408. package/fesm2022/c8y-ngx-components-upgrade.mjs +16 -2
  409. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  410. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
  412. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components.mjs +151 -38
  414. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  415. package/files-repository/files-repository.component.d.ts.map +1 -1
  416. package/files-repository/files-repository.service.d.ts +0 -2
  417. package/files-repository/files-repository.service.d.ts.map +1 -1
  418. package/icon-selector/icon-selector.component.d.ts +3 -2
  419. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  420. package/icon-selector/icons/index.d.ts +1 -0
  421. package/icon-selector/icons/index.d.ts.map +1 -1
  422. package/locales/de.po +157 -5
  423. package/locales/es.po +157 -5
  424. package/locales/fr.po +157 -5
  425. package/locales/ja_JP.po +156 -5
  426. package/locales/ko.po +156 -5
  427. package/locales/locales.pot +156 -4
  428. package/locales/nl.po +157 -5
  429. package/locales/pl.po +157 -5
  430. package/locales/pt_BR.po +157 -5
  431. package/locales/zh_CN.po +156 -5
  432. package/locales/zh_TW.po +156 -5
  433. package/operations/shared/status-option.model.d.ts +2 -1
  434. package/operations/shared/status-option.model.d.ts.map +1 -1
  435. package/package.json +1 -1
  436. package/register-device/bulk/bulk-device-registration-modal.component.d.ts +6 -2
  437. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  438. package/register-device/general/general-device-registration-button.component.d.ts +1 -1
  439. package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
  440. package/register-device/general/general-device-registration.component.d.ts +21 -7
  441. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  442. package/remote-access/configurations/c8y-ngx-components-remote-access-configurations.d.ts.map +1 -0
  443. package/remote-access/configurations/index.d.ts +3 -0
  444. package/remote-access/configurations/index.d.ts.map +1 -0
  445. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts +34 -0
  446. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -0
  447. package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts +17 -0
  448. package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts.map +1 -0
  449. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts +18 -0
  450. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -0
  451. package/remote-access/data/c8y-ngx-components-remote-access-data.d.ts.map +1 -0
  452. package/remote-access/data/index.d.ts +3 -0
  453. package/remote-access/data/index.d.ts.map +1 -0
  454. package/remote-access/data/remote-access-protocol-provider.d.ts +21 -0
  455. package/remote-access/data/remote-access-protocol-provider.d.ts.map +1 -0
  456. package/remote-access/data/remote-access.service.d.ts +94 -0
  457. package/remote-access/data/remote-access.service.d.ts.map +1 -0
  458. package/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.d.ts.map +1 -0
  459. package/remote-access/passthrough/index.d.ts +17 -0
  460. package/remote-access/passthrough/index.d.ts.map +1 -0
  461. package/remote-access/shared/c8y-ngx-components-remote-access-shared.d.ts.map +1 -0
  462. package/remote-access/shared/index.d.ts +3 -0
  463. package/remote-access/shared/index.d.ts.map +1 -0
  464. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts +37 -0
  465. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -0
  466. package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts +38 -0
  467. package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts.map +1 -0
  468. package/remote-access/ssh/c8y-ngx-components-remote-access-ssh.d.ts.map +1 -0
  469. package/remote-access/ssh/index.d.ts +22 -0
  470. package/remote-access/ssh/index.d.ts.map +1 -0
  471. package/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.d.ts.map +1 -0
  472. package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts +2 -0
  473. package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts.map +1 -0
  474. package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts +64 -0
  475. package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts.map +1 -0
  476. package/remote-access/telnet/c8y-ngx-components-remote-access-telnet.d.ts.map +1 -0
  477. package/remote-access/telnet/index.d.ts +17 -0
  478. package/remote-access/telnet/index.d.ts.map +1 -0
  479. package/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.d.ts.map +1 -0
  480. package/remote-access/terminal-viewer/index.d.ts +2 -0
  481. package/remote-access/terminal-viewer/index.d.ts.map +1 -0
  482. package/remote-access/terminal-viewer/shell-adapter.d.ts +14 -0
  483. package/remote-access/terminal-viewer/shell-adapter.d.ts.map +1 -0
  484. package/remote-access/terminal-viewer/telnet-negotiator.d.ts +13 -0
  485. package/remote-access/terminal-viewer/telnet-negotiator.d.ts.map +1 -0
  486. package/remote-access/terminal-viewer/terminal-viewer.component.d.ts +25 -0
  487. package/remote-access/terminal-viewer/terminal-viewer.component.d.ts.map +1 -0
  488. package/remote-access/vnc/c8y-ngx-components-remote-access-vnc.d.ts.map +1 -0
  489. package/remote-access/vnc/index.d.ts +22 -0
  490. package/remote-access/vnc/index.d.ts.map +1 -0
  491. package/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.d.ts.map +1 -0
  492. package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts +2 -0
  493. package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts.map +1 -0
  494. package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts +46 -0
  495. package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts.map +1 -0
  496. package/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.d.ts.map +1 -0
  497. package/remote-access/vnc/vnc-viewer/index.d.ts +2 -0
  498. package/remote-access/vnc/vnc-viewer/index.d.ts.map +1 -0
  499. package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts +32 -0
  500. package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts.map +1 -0
  501. package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts +37 -0
  502. package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts.map +1 -0
  503. package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts +2 -1
  504. package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts.map +1 -1
  505. package/report-dashboard/report-dashboard-list.component.d.ts +29 -0
  506. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  507. package/repository/shared/repository.model.d.ts +2 -1
  508. package/repository/shared/repository.model.d.ts.map +1 -1
  509. package/services/status-options/status-options.model.d.ts +2 -1
  510. package/services/status-options/status-options.model.d.ts.map +1 -1
  511. package/sub-assets/group-info.component.d.ts +2 -1
  512. package/sub-assets/group-info.component.d.ts.map +1 -1
  513. package/translation-editor/data/translation-store.service.d.ts.map +1 -1
  514. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +7 -2
  515. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  516. package/upgrade/bridge.service.d.ts +5 -0
  517. package/upgrade/bridge.service.d.ts.map +1 -1
  518. package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
  519. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
  520. package/widgets/implementations/kpi/kpi-widget.model.d.ts +2 -1
  521. package/widgets/implementations/kpi/kpi-widget.model.d.ts.map +1 -1
  522. package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts +0 -10
  523. package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts.map +0 -1
  524. package/esm2022/ecosystem/application-plugins/only-latest-plugin-version.pipe.mjs +0 -20
@@ -0,0 +1,73 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { gettext, hookRoute, hookService, ViewContext } from '@c8y/ngx-components';
3
+ import { canActivateRemoteAccess, RemoteAccessService } from '@c8y/ngx-components/remote-access/data';
4
+ import { BsModalService } from 'ngx-bootstrap/modal';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@c8y/ngx-components/remote-access/data";
7
+ import * as i2 from "ngx-bootstrap/modal";
8
+ export class VNCRemoteAccessProtocolProviderService {
9
+ constructor(remoteAccess, bsModalService) {
10
+ this.remoteAccess = remoteAccess;
11
+ this.bsModalService = bsModalService;
12
+ this.protocolName = 'VNC';
13
+ this.protocolLabel = gettext('VNC');
14
+ this.protocolDescription = gettext('Allows to connect to a VNC service.');
15
+ this.protocolIcon = 'laptop';
16
+ }
17
+ async addEndpoint(deviceId) {
18
+ const modalResult = await this.openVNCEndpointModal({});
19
+ if (!modalResult) {
20
+ return modalResult;
21
+ }
22
+ return this.remoteAccess.addConfiguration(deviceId, modalResult);
23
+ }
24
+ removeEndpoint(deviceId, currentEndpointConfig) {
25
+ return this.remoteAccess.deleteConfiguration(deviceId, currentEndpointConfig.id);
26
+ }
27
+ async editEndpoint(deviceId, currentEndpointConfig) {
28
+ const modalResult = await this.openVNCEndpointModal(currentEndpointConfig);
29
+ if (!modalResult) {
30
+ return modalResult;
31
+ }
32
+ return this.remoteAccess.updateConfiguration(deviceId, modalResult);
33
+ }
34
+ async connectEndpointHref(deviceId, configuration) {
35
+ return `/device/${deviceId}/vnc/${configuration.id}`;
36
+ }
37
+ async getDefaultEndpointConfiguration() {
38
+ return {
39
+ hostname: '127.0.0.1',
40
+ port: 5900
41
+ };
42
+ }
43
+ async openVNCEndpointModal(currentConfiguration) {
44
+ const { RemoteAccessVncEndpointModalComponent } = await import('@c8y/ngx-components/remote-access/vnc/remote-access-vnc-endpoint-modal');
45
+ try {
46
+ const modalRef = this.bsModalService.show(RemoteAccessVncEndpointModalComponent, {
47
+ initialState: { currentValue: currentConfiguration }
48
+ });
49
+ return (await modalRef.content.result);
50
+ }
51
+ catch (e) {
52
+ // modal closed
53
+ return null;
54
+ }
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: VNCRemoteAccessProtocolProviderService, deps: [{ token: i1.RemoteAccessService }, { token: i2.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
57
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: VNCRemoteAccessProtocolProviderService, providedIn: 'root' }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: VNCRemoteAccessProtocolProviderService, decorators: [{
60
+ type: Injectable,
61
+ args: [{ providedIn: 'root' }]
62
+ }], ctorParameters: () => [{ type: i1.RemoteAccessService }, { type: i2.BsModalService }] });
63
+ export const remoteAccessVNCProviders = [
64
+ hookRoute({
65
+ loadComponent: () => import('@c8y/ngx-components/remote-access/vnc/vnc-viewer').then(m => m.VncViewerComponent),
66
+ path: 'vnc/:configurationId',
67
+ context: ViewContext.Device,
68
+ tabs: [],
69
+ canActivate: [canActivateRemoteAccess]
70
+ }),
71
+ hookService('remoteAccessProtocolHook', VNCRemoteAccessProtocolProviderService)
72
+ ];
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL3ZuYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRixPQUFPLEVBQ0wsdUJBQXVCLEVBR3ZCLG1CQUFtQixFQUNwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUdyRCxNQUFNLE9BQU8sc0NBQXNDO0lBTWpELFlBQ1ksWUFBaUMsRUFDakMsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVAxQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixrQkFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQix3QkFBbUIsR0FBRyxPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNyRSxpQkFBWSxHQUFHLFFBQWlCLENBQUM7SUFLOUIsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBZ0I7UUFDaEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxjQUFjLENBQ1osUUFBZ0IsRUFDaEIscUJBQWdEO1FBRWhELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQ2hCLFFBQWdCLEVBQ2hCLHFCQUFnRDtRQUVoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixRQUFnQixFQUNoQixhQUF3QztRQUV4QyxPQUFPLFdBQVcsUUFBUSxRQUFRLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLCtCQUErQjtRQUNuQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLFdBQVc7WUFDckIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVTLEtBQUssQ0FBQyxvQkFBb0IsQ0FDbEMsb0JBQXdEO1FBRXhELE1BQU0sRUFBRSxxQ0FBcUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUM1RCx3RUFBd0UsQ0FDekUsQ0FBQztRQUNGLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFO2dCQUMvRSxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUU7YUFDckQsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQThCLENBQUM7UUFDdEUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxlQUFlO1lBQ2YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzs4R0FwRVUsc0NBQXNDO2tIQUF0QyxzQ0FBc0MsY0FEekIsTUFBTTs7MkZBQ25CLHNDQUFzQztrQkFEbEQsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBd0VsQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxTQUFTLENBQUM7UUFDUixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUM1RixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLE9BQU8sRUFBRSxXQUFXLENBQUMsTUFBTTtRQUMzQixJQUFJLEVBQUUsRUFBRTtRQUNSLFdBQVcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO0tBQ3ZDLENBQUM7SUFDRixXQUFXLENBQUMsMEJBQTBCLEVBQUUsc0NBQXNDLENBQUM7Q0FDaEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIGhvb2tSb3V0ZSwgaG9va1NlcnZpY2UsIFZpZXdDb250ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBjYW5BY3RpdmF0ZVJlbW90ZUFjY2VzcyxcbiAgUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbixcbiAgUmVtb3RlQWNjZXNzUHJvdG9jb2xQcm92aWRlcixcbiAgUmVtb3RlQWNjZXNzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3JlbW90ZS1hY2Nlc3MvZGF0YSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFZOQ1JlbW90ZUFjY2Vzc1Byb3RvY29sUHJvdmlkZXJTZXJ2aWNlIGltcGxlbWVudHMgUmVtb3RlQWNjZXNzUHJvdG9jb2xQcm92aWRlciB7XG4gIHByb3RvY29sTmFtZSA9ICdWTkMnO1xuICBwcm90b2NvbExhYmVsID0gZ2V0dGV4dCgnVk5DJyk7XG4gIHByb3RvY29sRGVzY3JpcHRpb24gPSBnZXR0ZXh0KCdBbGxvd3MgdG8gY29ubmVjdCB0byBhIFZOQyBzZXJ2aWNlLicpO1xuICBwcm90b2NvbEljb24gPSAnbGFwdG9wJyBhcyBjb25zdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVtb3RlQWNjZXNzOiBSZW1vdGVBY2Nlc3NTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGFkZEVuZHBvaW50KGRldmljZUlkOiBzdHJpbmcpOiBQcm9taXNlPFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24+IHtcbiAgICBjb25zdCBtb2RhbFJlc3VsdCA9IGF3YWl0IHRoaXMub3BlblZOQ0VuZHBvaW50TW9kYWwoe30pO1xuICAgIGlmICghbW9kYWxSZXN1bHQpIHtcbiAgICAgIHJldHVybiBtb2RhbFJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZW1vdGVBY2Nlc3MuYWRkQ29uZmlndXJhdGlvbihkZXZpY2VJZCwgbW9kYWxSZXN1bHQpO1xuICB9XG5cbiAgcmVtb3ZlRW5kcG9pbnQoXG4gICAgZGV2aWNlSWQ6IHN0cmluZyxcbiAgICBjdXJyZW50RW5kcG9pbnRDb25maWc6IFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb25cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3RlQWNjZXNzLmRlbGV0ZUNvbmZpZ3VyYXRpb24oZGV2aWNlSWQsIGN1cnJlbnRFbmRwb2ludENvbmZpZy5pZCk7XG4gIH1cblxuICBhc3luYyBlZGl0RW5kcG9pbnQoXG4gICAgZGV2aWNlSWQ6IHN0cmluZyxcbiAgICBjdXJyZW50RW5kcG9pbnRDb25maWc6IFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb25cbiAgKTogUHJvbWlzZTxSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc3QgbW9kYWxSZXN1bHQgPSBhd2FpdCB0aGlzLm9wZW5WTkNFbmRwb2ludE1vZGFsKGN1cnJlbnRFbmRwb2ludENvbmZpZyk7XG4gICAgaWYgKCFtb2RhbFJlc3VsdCkge1xuICAgICAgcmV0dXJuIG1vZGFsUmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlbW90ZUFjY2Vzcy51cGRhdGVDb25maWd1cmF0aW9uKGRldmljZUlkLCBtb2RhbFJlc3VsdCk7XG4gIH1cblxuICBhc3luYyBjb25uZWN0RW5kcG9pbnRIcmVmKFxuICAgIGRldmljZUlkOiBzdHJpbmcsXG4gICAgY29uZmlndXJhdGlvbjogUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvblxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgL2RldmljZS8ke2RldmljZUlkfS92bmMvJHtjb25maWd1cmF0aW9uLmlkfWA7XG4gIH1cblxuICBhc3luYyBnZXREZWZhdWx0RW5kcG9pbnRDb25maWd1cmF0aW9uKCk6IFByb21pc2U8UGFydGlhbDxSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uPj4ge1xuICAgIHJldHVybiB7XG4gICAgICBob3N0bmFtZTogJzEyNy4wLjAuMScsXG4gICAgICBwb3J0OiA1OTAwXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBvcGVuVk5DRW5kcG9pbnRNb2RhbChcbiAgICBjdXJyZW50Q29uZmlndXJhdGlvbjogUGFydGlhbDxSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uPlxuICApOiBQcm9taXNlPFJlbW90ZUFjY2Vzc0NvbmZpZ3VyYXRpb24gfCBudWxsPiB7XG4gICAgY29uc3QgeyBSZW1vdGVBY2Nlc3NWbmNFbmRwb2ludE1vZGFsQ29tcG9uZW50IH0gPSBhd2FpdCBpbXBvcnQoXG4gICAgICAnQGM4eS9uZ3gtY29tcG9uZW50cy9yZW1vdGUtYWNjZXNzL3ZuYy9yZW1vdGUtYWNjZXNzLXZuYy1lbmRwb2ludC1tb2RhbCdcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhSZW1vdGVBY2Nlc3NWbmNFbmRwb2ludE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgIGluaXRpYWxTdGF0ZTogeyBjdXJyZW50VmFsdWU6IGN1cnJlbnRDb25maWd1cmF0aW9uIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIChhd2FpdCBtb2RhbFJlZi5jb250ZW50LnJlc3VsdCkgYXMgUmVtb3RlQWNjZXNzQ29uZmlndXJhdGlvbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBtb2RhbCBjbG9zZWRcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcmVtb3RlQWNjZXNzVk5DUHJvdmlkZXJzID0gW1xuICBob29rUm91dGUoe1xuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVtb3RlLWFjY2Vzcy92bmMvdm5jLXZpZXdlcicpLnRoZW4obSA9PiBtLlZuY1ZpZXdlckNvbXBvbmVudCksXG4gICAgcGF0aDogJ3ZuYy86Y29uZmlndXJhdGlvbklkJyxcbiAgICBjb250ZXh0OiBWaWV3Q29udGV4dC5EZXZpY2UsXG4gICAgdGFiczogW10sXG4gICAgY2FuQWN0aXZhdGU6IFtjYW5BY3RpdmF0ZVJlbW90ZUFjY2Vzc11cbiAgfSksXG4gIGhvb2tTZXJ2aWNlKCdyZW1vdGVBY2Nlc3NQcm90b2NvbEhvb2snLCBWTkNSZW1vdGVBY2Nlc3NQcm90b2NvbFByb3ZpZGVyU2VydmljZSlcbl07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYzh5LW5neC1jb21wb25lbnRzLXJlbW90ZS1hY2Nlc3Mtdm5jLXJlbW90ZS1hY2Nlc3Mtdm5jLWVuZHBvaW50LW1vZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVtb3RlLWFjY2Vzcy92bmMvcmVtb3RlLWFjY2Vzcy12bmMtZW5kcG9pbnQtbW9kYWwvYzh5LW5neC1jb21wb25lbnRzLXJlbW90ZS1hY2Nlc3Mtdm5jLXJlbW90ZS1hY2Nlc3Mtdm5jLWVuZHBvaW50LW1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './remote-access-vnc-endpoint-modal.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL3ZuYy9yZW1vdGUtYWNjZXNzLXZuYy1lbmRwb2ludC1tb2RhbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhDQUE4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZW1vdGUtYWNjZXNzLXZuYy1lbmRwb2ludC1tb2RhbC5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,59 @@
1
+ import { NgForOf } from '@angular/common';
2
+ import { Component } from '@angular/core';
3
+ import { FormBuilder, Validators } from '@angular/forms';
4
+ import { CoreModule } from '@c8y/ngx-components';
5
+ import { gettext } from '@c8y/ngx-components/gettext';
6
+ import { CREDENTIALS_TYPES } from '@c8y/ngx-components/remote-access/data';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ import * as i2 from "@c8y/ngx-components";
10
+ import * as i3 from "@angular/common";
11
+ export class RemoteAccessVncEndpointModalComponent {
12
+ constructor(formBuilder) {
13
+ this.formBuilder = formBuilder;
14
+ this.credentialTypes = [CREDENTIALS_TYPES.NONE, CREDENTIALS_TYPES.PASS_ONLY];
15
+ this.title = gettext('Remote access endpoint');
16
+ this.result = new Promise((resolve, reject) => {
17
+ this._resolve = resolve;
18
+ this._reject = reject;
19
+ });
20
+ this.form = this.initForm();
21
+ }
22
+ ngOnInit() {
23
+ if (this.currentValue) {
24
+ const { credentials, ...rest } = this.currentValue;
25
+ const credentialsType = credentials?.type || 'NONE';
26
+ const attributesToAdd = { credentialsType };
27
+ if (credentials) {
28
+ const { username, password } = credentials;
29
+ Object.assign(attributesToAdd, { username, password });
30
+ }
31
+ const patchedValue = { ...rest, ...attributesToAdd };
32
+ this.form.patchValue(patchedValue);
33
+ }
34
+ }
35
+ initForm() {
36
+ return this.formBuilder.group({
37
+ id: ['', []],
38
+ name: ['', [Validators.required, Validators.minLength(1)]],
39
+ hostname: ['127.0.0.1', [Validators.required, Validators.minLength(1)]],
40
+ port: [5900, [Validators.required, Validators.min(1), Validators.max(65535)]],
41
+ protocol: ['VNC', [Validators.required, Validators.minLength(1)]],
42
+ password: [undefined, []],
43
+ credentialsType: ['NONE', [Validators.required]]
44
+ });
45
+ }
46
+ cancel() {
47
+ this._reject();
48
+ }
49
+ save() {
50
+ this._resolve(this.form.value);
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RemoteAccessVncEndpointModalComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: RemoteAccessVncEndpointModalComponent, isStandalone: true, selector: "c8y-remote-access-vnc-endpoint-modal", ngImport: i0, template: "<c8y-modal\n [title]=\"title\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'laptop'\"></span>\n </ng-container>\n <div\n class=\"p-24\"\n [formGroup]=\"form\"\n >\n <c8y-form-group>\n <label\n for=\"name\"\n translate\n >\n Name\n </label>\n <input\n class=\"form-control\"\n id=\"name\"\n name=\"name\"\n type=\"text\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'My remote access endpoint' }\"\n formControlName=\"name\"\n [attr.data-cy]=\"'remoteAccessEndpointModal--name'\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"protocol\"\n translate\n >\n Protocol\n </label>\n <input\n class=\"form-control\"\n id=\"protocol\"\n name=\"protocol\"\n type=\"text\"\n readonly\n formControlName=\"protocol\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"hostname\"\n translate\n >\n Host\n </label>\n <input\n class=\"form-control\"\n id=\"hostname\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: '127.0.0.1' } }}\"\n name=\"hostname\"\n type=\"text\"\n formControlName=\"hostname\"\n [attr.data-cy]=\"'remoteAccessEndpointModal--hostname'\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"port\"\n translate\n >\n Port\n </label>\n <input\n class=\"form-control\"\n id=\"port\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: '5900' } }}\"\n name=\"port\"\n type=\"number\"\n formControlName=\"port\"\n [attr.data-cy]=\"'remoteAccessEndpointModal--port'\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <div>\n <c8y-form-group>\n <label\n for=\"credentialsType\"\n translate\n >\n Sign-in method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"credentialsType\"\n formControlName=\"credentialsType\"\n [attr.data-cy]=\"'remoteAccessEndpointModal--credentials-type'\"\n >\n <option\n *ngFor=\"let type of credentialTypes\"\n [value]=\"type.value\"\n >\n {{ type.label | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n\n <c8y-form-group *ngIf=\"form.value.credentialsType === 'PASS_ONLY'\">\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <input\n class=\"form-control\"\n id=\"password\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: 'my_password' } }}\"\n name=\"password\"\n type=\"password\"\n autocomplete=\"off\"\n formControlName=\"password\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n</c8y-modal>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RemoteAccessVncEndpointModalComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'c8y-remote-access-vnc-endpoint-modal', standalone: true, imports: [CoreModule, NgForOf], template: "<c8y-modal\n [title]=\"title\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'laptop'\"></span>\n </ng-container>\n <div\n class=\"p-24\"\n [formGroup]=\"form\"\n >\n <c8y-form-group>\n <label\n for=\"name\"\n translate\n >\n Name\n </label>\n <input\n class=\"form-control\"\n id=\"name\"\n name=\"name\"\n type=\"text\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'My remote access endpoint' }\"\n formControlName=\"name\"\n [attr.data-cy]=\"'remoteAccessEndpointModal--name'\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"protocol\"\n translate\n >\n Protocol\n </label>\n <input\n class=\"form-control\"\n id=\"protocol\"\n name=\"protocol\"\n type=\"text\"\n readonly\n formControlName=\"protocol\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"hostname\"\n translate\n >\n Host\n </label>\n <input\n class=\"form-control\"\n id=\"hostname\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: '127.0.0.1' } }}\"\n name=\"hostname\"\n type=\"text\"\n formControlName=\"hostname\"\n [attr.data-cy]=\"'remoteAccessEndpointModal--hostname'\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"port\"\n translate\n >\n Port\n </label>\n <input\n class=\"form-control\"\n id=\"port\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: '5900' } }}\"\n name=\"port\"\n type=\"number\"\n formControlName=\"port\"\n [attr.data-cy]=\"'remoteAccessEndpointModal--port'\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <div>\n <c8y-form-group>\n <label\n for=\"credentialsType\"\n translate\n >\n Sign-in method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"credentialsType\"\n formControlName=\"credentialsType\"\n [attr.data-cy]=\"'remoteAccessEndpointModal--credentials-type'\"\n >\n <option\n *ngFor=\"let type of credentialTypes\"\n [value]=\"type.value\"\n >\n {{ type.label | translate }}\n </option>\n </select>\n </div>\n </c8y-form-group>\n\n <c8y-form-group *ngIf=\"form.value.credentialsType === 'PASS_ONLY'\">\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <input\n class=\"form-control\"\n id=\"password\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: 'my_password' } }}\"\n name=\"password\"\n type=\"password\"\n autocomplete=\"off\"\n formControlName=\"password\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n</c8y-modal>\n" }]
58
+ }], ctorParameters: () => [{ type: i1.FormBuilder }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWFjY2Vzcy12bmMtZW5kcG9pbnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVtb3RlLWFjY2Vzcy92bmMvcmVtb3RlLWFjY2Vzcy12bmMtZW5kcG9pbnQtbW9kYWwvcmVtb3RlLWFjY2Vzcy12bmMtZW5kcG9pbnQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcmVtb3RlLWFjY2Vzcy92bmMvcmVtb3RlLWFjY2Vzcy12bmMtZW5kcG9pbnQtbW9kYWwvcmVtb3RlLWFjY2Vzcy12bmMtZW5kcG9pbnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFDTCxpQkFBaUIsRUFFbEIsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFRaEQsTUFBTSxPQUFPLHFDQUFxQztJQWVoRCxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWQ1QyxvQkFBZSxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLFVBQUssR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUsxQyxXQUFNLEdBQUcsSUFBSSxPQUFPLENBQTRDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2xGLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBTUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNuRCxNQUFNLGVBQWUsR0FBRyxXQUFXLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQztZQUNwRCxNQUFNLGVBQWUsR0FBRyxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQzVDLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsV0FBVyxDQUFDO2dCQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ1osSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3RSxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxRQUFRLEVBQUUsQ0FBQyxTQUFtQixFQUFFLEVBQUUsQ0FBQztZQUNuQyxlQUFlLEVBQUUsQ0FBQyxNQUE4QixFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OEdBbkRVLHFDQUFxQztrR0FBckMscUNBQXFDLGdHQ2hCbEQsczhHQXdJQSwyQ0QxSFksVUFBVTs7MkZBRVQscUNBQXFDO2tCQU5qRCxTQUFTOytCQUNFLHNDQUFzQyxjQUVwQyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3JPZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9nZXR0ZXh0JztcbmltcG9ydCB7XG4gIENSRURFTlRJQUxTX1RZUEVTLFxuICBSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVtb3RlLWFjY2Vzcy9kYXRhJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXJlbW90ZS1hY2Nlc3Mtdm5jLWVuZHBvaW50LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlbW90ZS1hY2Nlc3Mtdm5jLWVuZHBvaW50LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIE5nRm9yT2ZdXG59KVxuZXhwb3J0IGNsYXNzIFJlbW90ZUFjY2Vzc1ZuY0VuZHBvaW50TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjcmVkZW50aWFsVHlwZXMgPSBbQ1JFREVOVElBTFNfVFlQRVMuTk9ORSwgQ1JFREVOVElBTFNfVFlQRVMuUEFTU19PTkxZXTtcbiAgdGl0bGUgPSBnZXR0ZXh0KCdSZW1vdGUgYWNjZXNzIGVuZHBvaW50Jyk7XG4gIGZvcm06IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuaW5pdEZvcm0+O1xuXG4gIGN1cnJlbnRWYWx1ZTogUGFydGlhbDxSZW1vdGVBY2Nlc3NDb25maWd1cmF0aW9uPjtcblxuICByZXN1bHQgPSBuZXcgUHJvbWlzZTxSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmluaXRGb3JtPlsndmFsdWUnXT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIHRoaXMuX3JlamVjdCA9IHJlamVjdDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfcmVzb2x2ZTogKHZhbHVlOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmluaXRGb3JtPlsndmFsdWUnXSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFZhbHVlKSB7XG4gICAgICBjb25zdCB7IGNyZWRlbnRpYWxzLCAuLi5yZXN0IH0gPSB0aGlzLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzVHlwZSA9IGNyZWRlbnRpYWxzPy50eXBlIHx8ICdOT05FJztcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXNUb0FkZCA9IHsgY3JlZGVudGlhbHNUeXBlIH07XG4gICAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgICAgY29uc3QgeyB1c2VybmFtZSwgcGFzc3dvcmQgfSA9IGNyZWRlbnRpYWxzO1xuICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXNUb0FkZCwgeyB1c2VybmFtZSwgcGFzc3dvcmQgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXRjaGVkVmFsdWUgPSB7IC4uLnJlc3QsIC4uLmF0dHJpYnV0ZXNUb0FkZCB9O1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUocGF0Y2hlZFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBpZDogWycnLCBbXV0sXG4gICAgICBuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKV1dLFxuICAgICAgaG9zdG5hbWU6IFsnMTI3LjAuMC4xJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpXV0sXG4gICAgICBwb3J0OiBbNTkwMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpLCBWYWxpZGF0b3JzLm1heCg2NTUzNSldXSxcbiAgICAgIHByb3RvY29sOiBbJ1ZOQycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKV1dLFxuICAgICAgcGFzc3dvcmQ6IFt1bmRlZmluZWQgYXMgc3RyaW5nLCBbXV0sXG4gICAgICBjcmVkZW50aWFsc1R5cGU6IFsnTk9ORScgYXMgJ05PTkUnIHwgJ1BBU1NfT05MWScsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLl9yZWplY3QoKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5fcmVzb2x2ZSh0aGlzLmZvcm0udmFsdWUpO1xuICB9XG59XG4iLCI8Yzh5LW1vZGFsXG4gIFt0aXRsZV09XCJ0aXRsZVwiXG4gIFtoZWFkZXJDbGFzc2VzXT1cIidkaWFsb2ctaGVhZGVyJ1wiXG4gIChvbkRpc21pc3MpPVwiY2FuY2VsKClcIlxuICAob25DbG9zZSk9XCJzYXZlKClcIlxuICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgW2xhYmVsc109XCJ7IGNhbmNlbDogJ0NhbmNlbCcsIG9rOiAnU2F2ZScgfVwiXG4+XG4gIDxuZy1jb250YWluZXIgYzh5LW1vZGFsLXRpdGxlPlxuICAgIDxzcGFuIFtjOHlJY29uXT1cIidsYXB0b3AnXCI+PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicC0yNFwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgPlxuICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgIDxsYWJlbFxuICAgICAgICBmb3I9XCJuYW1lXCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIE5hbWVcbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBpZD1cIm5hbWVcIlxuICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6ICdNeSByZW1vdGUgYWNjZXNzIGVuZHBvaW50JyB9XCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ3JlbW90ZUFjY2Vzc0VuZHBvaW50TW9kYWwtLW5hbWUnXCJcbiAgICAgIC8+XG4gICAgICA8Yzh5LW1lc3NhZ2VzPjwvYzh5LW1lc3NhZ2VzPlxuICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgZm9yPVwicHJvdG9jb2xcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgUHJvdG9jb2xcbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBpZD1cInByb3RvY29sXCJcbiAgICAgICAgbmFtZT1cInByb3RvY29sXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICByZWFkb25seVxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm90b2NvbFwiXG4gICAgICAvPlxuICAgICAgPGM4eS1tZXNzYWdlcz48L2M4eS1tZXNzYWdlcz5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGZvcj1cImhvc3RuYW1lXCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIEhvc3RcbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBpZD1cImhvc3RuYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlIDogeyBleGFtcGxlOiAnMTI3LjAuMC4xJyB9IH19XCJcbiAgICAgICAgbmFtZT1cImhvc3RuYW1lXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJob3N0bmFtZVwiXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ3JlbW90ZUFjY2Vzc0VuZHBvaW50TW9kYWwtLWhvc3RuYW1lJ1wiXG4gICAgICAvPlxuICAgICAgPGM4eS1tZXNzYWdlcz48L2M4eS1tZXNzYWdlcz5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGZvcj1cInBvcnRcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgUG9ydFxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIGlkPVwicG9ydFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3snZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZSA6IHsgZXhhbXBsZTogJzU5MDAnIH0gfX1cIlxuICAgICAgICBuYW1lPVwicG9ydFwiXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwb3J0XCJcbiAgICAgICAgW2F0dHIuZGF0YS1jeV09XCIncmVtb3RlQWNjZXNzRW5kcG9pbnRNb2RhbC0tcG9ydCdcIlxuICAgICAgLz5cbiAgICAgIDxjOHktbWVzc2FnZXM+PC9jOHktbWVzc2FnZXM+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgIDxkaXY+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGZvcj1cImNyZWRlbnRpYWxzVHlwZVwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgID5cbiAgICAgICAgICBTaWduLWluIG1ldGhvZFxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgaWQ9XCJjcmVkZW50aWFsc1R5cGVcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3JlZGVudGlhbHNUeXBlXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ3JlbW90ZUFjY2Vzc0VuZHBvaW50TW9kYWwtLWNyZWRlbnRpYWxzLXR5cGUnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0eXBlIG9mIGNyZWRlbnRpYWxUeXBlc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJ0eXBlLnZhbHVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdHlwZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgPGM4eS1mb3JtLWdyb3VwICpuZ0lmPVwiZm9ybS52YWx1ZS5jcmVkZW50aWFsc1R5cGUgPT09ICdQQVNTX09OTFknXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGZvcj1cInBhc3N3b3JkXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPlxuICAgICAgICAgIFBhc3N3b3JkXG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBpZD1cInBhc3N3b3JkXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGUgOiB7IGV4YW1wbGU6ICdteV9wYXNzd29yZCcgfSB9fVwiXG4gICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAvPlxuICAgICAgICA8Yzh5LW1lc3NhZ2VzPjwvYzh5LW1lc3NhZ2VzPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2M4eS1tb2RhbD5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYzh5LW5neC1jb21wb25lbnRzLXJlbW90ZS1hY2Nlc3Mtdm5jLXZuYy12aWV3ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL3ZuYy92bmMtdmlld2VyL2M4eS1uZ3gtY29tcG9uZW50cy1yZW1vdGUtYWNjZXNzLXZuYy12bmMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './vnc-viewer.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL3ZuYy92bmMtdmlld2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3ZuYy12aWV3ZXIuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,57 @@
1
+ import { NgIf } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { FormBuilder, Validators } from '@angular/forms';
4
+ import { CoreModule } from '@c8y/ngx-components';
5
+ import { gettext } from '@c8y/ngx-components/gettext';
6
+ import { BsModalRef } from 'ngx-bootstrap/modal';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ import * as i2 from "ngx-bootstrap/modal";
10
+ import * as i3 from "@c8y/ngx-components";
11
+ import * as i4 from "@angular/common";
12
+ export class VncCredentialsPromptComponent {
13
+ constructor(formBuilder, modalRef) {
14
+ this.formBuilder = formBuilder;
15
+ this.modalRef = modalRef;
16
+ this.title = gettext('VNC credentials');
17
+ this.types = [];
18
+ this.result = new Promise((resolve, reject) => {
19
+ this._resolve = resolve;
20
+ this._reject = reject;
21
+ });
22
+ this.showUsername = false;
23
+ this.form = this.initForm();
24
+ }
25
+ ngOnInit() {
26
+ this.showUsername = this.types.includes('username');
27
+ this.form = this.initForm();
28
+ }
29
+ initForm() {
30
+ return this.formBuilder.group({
31
+ username: [undefined, this.showUsername ? [Validators.required] : []],
32
+ password: [undefined, [Validators.required]]
33
+ });
34
+ }
35
+ cancel() {
36
+ this._reject();
37
+ }
38
+ save() {
39
+ this._resolve(this.form.value);
40
+ }
41
+ submit() {
42
+ if (!this.form.valid) {
43
+ return;
44
+ }
45
+ this.modalRef.hide();
46
+ this.save();
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: VncCredentialsPromptComponent, deps: [{ token: i1.FormBuilder }, { token: i2.BsModalRef }], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: VncCredentialsPromptComponent, isStandalone: true, selector: "c8y-vnc-credentials-prompt", inputs: { types: "types" }, ngImport: i0, template: "<c8y-modal\n [title]=\"title\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'key'\"></span>\n </ng-container>\n <form\n class=\"p-24\"\n [formGroup]=\"form\"\n (submit)=\"submit()\"\n >\n <c8y-form-group *ngIf=\"showUsername\">\n <label\n for=\"username\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"username\"\n name=\"username\"\n type=\"text\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'admin' }\"\n formControlName=\"username\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <input\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n type=\"password\"\n formControlName=\"password\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <button type=\"submit\" class=\"hidden\">hidden submit</button>\n </form>\n</c8y-modal>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i3.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i3.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: VncCredentialsPromptComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'c8y-vnc-credentials-prompt', standalone: true, imports: [CoreModule, NgIf], template: "<c8y-modal\n [title]=\"title\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'key'\"></span>\n </ng-container>\n <form\n class=\"p-24\"\n [formGroup]=\"form\"\n (submit)=\"submit()\"\n >\n <c8y-form-group *ngIf=\"showUsername\">\n <label\n for=\"username\"\n translate\n >\n Username\n </label>\n <input\n class=\"form-control\"\n id=\"username\"\n name=\"username\"\n type=\"text\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'admin' }\"\n formControlName=\"username\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"password\"\n translate\n >\n Password\n </label>\n <input\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n type=\"password\"\n formControlName=\"password\"\n />\n <c8y-messages></c8y-messages>\n </c8y-form-group>\n\n <button type=\"submit\" class=\"hidden\">hidden submit</button>\n </form>\n</c8y-modal>\n" }]
54
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.BsModalRef }], propDecorators: { types: [{
55
+ type: Input
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm5jLWNyZWRlbnRpYWxzLXByb21wdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL3ZuYy92bmMtdmlld2VyL3ZuYy1jcmVkZW50aWFscy1wcm9tcHQvdm5jLWNyZWRlbnRpYWxzLXByb21wdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL3ZuYy92bmMtdmlld2VyL3ZuYy1jcmVkZW50aWFscy1wcm9tcHQvdm5jLWNyZWRlbnRpYWxzLXByb21wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBUWpELE1BQU0sT0FBTyw2QkFBNkI7SUFleEMsWUFDVSxXQUF3QixFQUN4QixRQUFvQjtRQURwQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBaEI5QixVQUFLLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUIsVUFBSyxHQUFrQyxFQUFFLENBQUM7UUFDbkQsV0FBTSxHQUFHLElBQUksT0FBTyxDQUE0QyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNsRixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBV25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDNUIsUUFBUSxFQUFFLENBQUMsU0FBbUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9FLFFBQVEsRUFBRSxDQUFDLFNBQW1CLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQzs4R0FoRFUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsa0hDZDFDLHF4Q0FzREEsMkNEMUNZLFVBQVU7OzJGQUVULDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSw0QkFBNEIsY0FFMUIsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQzt5R0FJbEIsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZ2V0dGV4dCc7XG5pbXBvcnQgdHlwZSB7IE5vVm5jQ3JlZGVudGlhbHMgfSBmcm9tICdAbm92bmMvbm92bmMvbGliL3JmYic7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS12bmMtY3JlZGVudGlhbHMtcHJvbXB0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZuYy1jcmVkZW50aWFscy1wcm9tcHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgTmdJZl1cbn0pXG5leHBvcnQgY2xhc3MgVm5jQ3JlZGVudGlhbHNQcm9tcHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB0aXRsZSA9IGdldHRleHQoJ1ZOQyBjcmVkZW50aWFscycpO1xuICBASW5wdXQoKSB0eXBlczogQXJyYXk8a2V5b2YgTm9WbmNDcmVkZW50aWFscz4gPSBbXTtcbiAgcmVzdWx0ID0gbmV3IFByb21pc2U8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5pbml0Rm9ybT5bJ3ZhbHVlJ10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICB0aGlzLl9yZWplY3QgPSByZWplY3Q7XG4gIH0pO1xuICBzZWxlY3RlZFR5cGU6IHN0cmluZztcbiAgc2hvd1VzZXJuYW1lID0gZmFsc2U7XG5cbiAgZm9ybTogUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5pbml0Rm9ybT47XG5cbiAgcHJpdmF0ZSBfcmVzb2x2ZTogKHZhbHVlOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmluaXRGb3JtPlsndmFsdWUnXSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgbW9kYWxSZWY6IEJzTW9kYWxSZWZcbiAgKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zaG93VXNlcm5hbWUgPSB0aGlzLnR5cGVzLmluY2x1ZGVzKCd1c2VybmFtZScpO1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHVzZXJuYW1lOiBbdW5kZWZpbmVkIGFzIHN0cmluZywgdGhpcy5zaG93VXNlcm5hbWUgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXV0sXG4gICAgICBwYXNzd29yZDogW3VuZGVmaW5lZCBhcyBzdHJpbmcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLl9yZWplY3QoKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5fcmVzb2x2ZSh0aGlzLmZvcm0udmFsdWUpO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubW9kYWxSZWYuaGlkZSgpO1xuICAgIHRoaXMuc2F2ZSgpO1xuICB9XG59XG4iLCI8Yzh5LW1vZGFsXG4gIFt0aXRsZV09XCJ0aXRsZVwiXG4gIFtoZWFkZXJDbGFzc2VzXT1cIidkaWFsb2ctaGVhZGVyJ1wiXG4gIChvbkRpc21pc3MpPVwiY2FuY2VsKClcIlxuICAob25DbG9zZSk9XCJzYXZlKClcIlxuICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgW2xhYmVsc109XCJ7IGNhbmNlbDogJ0NhbmNlbCcsIG9rOiAnU2F2ZScgfVwiXG4+XG4gIDxuZy1jb250YWluZXIgYzh5LW1vZGFsLXRpdGxlPlxuICAgIDxzcGFuIFtjOHlJY29uXT1cIidrZXknXCI+PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGZvcm1cbiAgICBjbGFzcz1cInAtMjRcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKHN1Ym1pdCk9XCJzdWJtaXQoKVwiXG4gID5cbiAgICA8Yzh5LWZvcm0tZ3JvdXAgKm5nSWY9XCJzaG93VXNlcm5hbWVcIj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBmb3I9XCJ1c2VybmFtZVwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBVc2VybmFtZVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIGlkPVwidXNlcm5hbWVcIlxuICAgICAgICBuYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiAnYWRtaW4nIH1cIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiXG4gICAgICAvPlxuICAgICAgPGM4eS1tZXNzYWdlcz48L2M4eS1tZXNzYWdlcz5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGZvcj1cInBhc3N3b3JkXCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIFBhc3N3b3JkXG4gICAgICA8L2xhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgaWQ9XCJwYXNzd29yZFwiXG4gICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgIC8+XG4gICAgICA8Yzh5LW1lc3NhZ2VzPjwvYzh5LW1lc3NhZ2VzPlxuICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImhpZGRlblwiPmhpZGRlbiBzdWJtaXQ8L2J1dHRvbj5cbiAgPC9mb3JtPlxuPC9jOHktbW9kYWw+XG4iXX0=
@@ -0,0 +1,158 @@
1
+ import { Component } from '@angular/core';
2
+ import { ActionBarItemComponent, C8yTranslateDirective, C8yTranslatePipe, IconDirective, LoadingComponent, TitleComponent } from '@c8y/ngx-components';
3
+ import { gettext } from '@c8y/ngx-components';
4
+ import { RemoteAccessService } from '@c8y/ngx-components/remote-access/data';
5
+ import { ActivatedRoute } from '@angular/router';
6
+ import { NgClass, NgIf } from '@angular/common';
7
+ import { saveAs } from 'file-saver';
8
+ import { BsModalService } from 'ngx-bootstrap/modal';
9
+ import { VncCredentialsPromptComponent } from './vnc-credentials-prompt/vnc-credentials-prompt.component';
10
+ import { BehaviorSubject, combineLatest, defer } from 'rxjs';
11
+ import { distinctUntilChanged, filter, map } from 'rxjs/operators';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@c8y/ngx-components/remote-access/data";
14
+ import * as i2 from "@angular/router";
15
+ import * as i3 from "ngx-bootstrap/modal";
16
+ export class VncViewerComponent {
17
+ constructor(remoteAccess, activatedRoute, modalService) {
18
+ this.remoteAccess = remoteAccess;
19
+ this.activatedRoute = activatedRoute;
20
+ this.modalService = modalService;
21
+ this.titlePrefix = gettext('VNC viewer');
22
+ this.title = '';
23
+ this.container = null;
24
+ this.powerCapability = false;
25
+ this.status = 'connecting';
26
+ this.container$ = new BehaviorSubject(null);
27
+ const container$ = this.container$.pipe(filter(Boolean));
28
+ const configurationId$ = this.activatedRoute.params.pipe(map(params => params.configurationId), filter(Boolean), distinctUntilChanged());
29
+ const deviceId$ = this.activatedRoute.parent.params.pipe(map(params => params.id), filter(Boolean), distinctUntilChanged());
30
+ this.connectionSubscription = combineLatest([
31
+ container$,
32
+ deviceId$,
33
+ configurationId$,
34
+ defer(() => this.getNoVNCClient())
35
+ ]).subscribe(([container, deviceId, configurationId, noVNC]) => {
36
+ this.disconnectFromOldSession();
37
+ this.connect(container, deviceId, configurationId, noVNC);
38
+ });
39
+ }
40
+ ngOnDestroy() {
41
+ this.connectionSubscription?.unsubscribe();
42
+ this.disconnectFromOldSession();
43
+ }
44
+ ngAfterViewInit() {
45
+ this.container$.next(document.getElementById('vnc-screen'));
46
+ }
47
+ disconnectFromOldSession() {
48
+ this.powerCapability = false;
49
+ this.title = '';
50
+ if (!this.noVNCClient) {
51
+ return;
52
+ }
53
+ this.noVNCClient.disconnect();
54
+ delete this.noVNCClient;
55
+ }
56
+ connect(container, deviceId, configId, noVNC) {
57
+ this.container = container;
58
+ this.changeStatus('connecting');
59
+ const options = {
60
+ wsProtocols: ['binary']
61
+ };
62
+ const uri = this.remoteAccess.getWebSocketUri(deviceId, configId);
63
+ this.noVNCClient = new noVNC(container, uri, options);
64
+ this.noVNCClient.resizeSession = true;
65
+ this.noVNCClient.scaleViewport = true;
66
+ this.noVNCClient.showDotCursor = true;
67
+ this.noVNCClient.viewOnly = false;
68
+ this.noVNCClient.qualityLevel = 6;
69
+ // need to set compressionLevel to something different than the default 2 as 2 seems to be causing issues..
70
+ this.noVNCClient.compressionLevel = 9;
71
+ this.noVNCClient.addEventListener('connect', _e => {
72
+ this.changeStatus('connected');
73
+ this.noVNCClient.focus();
74
+ });
75
+ this.noVNCClient.addEventListener('credentialsrequired', e => {
76
+ this.requestCredentials(e.detail.types);
77
+ });
78
+ this.noVNCClient.addEventListener('desktopname', e => {
79
+ this.title = e.detail.name;
80
+ });
81
+ this.noVNCClient.addEventListener('disconnect', () => {
82
+ this.changeStatus('disconnected');
83
+ });
84
+ this.noVNCClient.addEventListener('capabilities', e => {
85
+ this.powerCapability = e.detail.capabilities.power;
86
+ });
87
+ }
88
+ downloadScreenshot() {
89
+ this.noVNCClient.toBlob(blob => {
90
+ const date = new Date().toISOString();
91
+ saveAs(blob, `screenshot-${this.title}-${date}.png`);
92
+ }, 'image/png', 1);
93
+ }
94
+ changeStatus(status) {
95
+ this.status = status;
96
+ }
97
+ toggleFullscreen() {
98
+ if (document.fullscreenElement) {
99
+ document.exitFullscreen();
100
+ }
101
+ else {
102
+ this.container.requestFullscreen();
103
+ }
104
+ }
105
+ sendCtrlAltDel() {
106
+ this.noVNCClient.sendCtrlAltDel();
107
+ }
108
+ sendShutDown() {
109
+ this.noVNCClient.machineShutdown();
110
+ }
111
+ sendReset() {
112
+ this.noVNCClient.machineReset();
113
+ }
114
+ sendReboot() {
115
+ this.noVNCClient.machineReboot();
116
+ }
117
+ async getNoVNCClient() {
118
+ const lib = await import('@novnc/novnc/lib/rfb');
119
+ if (typeof lib.default === 'function') {
120
+ return lib.default;
121
+ }
122
+ const libDefault = lib.default;
123
+ if (typeof libDefault.default === 'function') {
124
+ return libDefault.default;
125
+ }
126
+ throw new Error('NoVNC library not found');
127
+ }
128
+ async requestCredentials(types) {
129
+ const modalRef = this.modalService.show(VncCredentialsPromptComponent, {
130
+ ignoreBackdropClick: true,
131
+ keyboard: false,
132
+ initialState: { types: types }
133
+ });
134
+ try {
135
+ const { username, password } = await modalRef.content.result;
136
+ this.noVNCClient.sendCredentials({ username, password, target: undefined });
137
+ }
138
+ catch (e) {
139
+ this.noVNCClient.disconnect();
140
+ }
141
+ }
142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: VncViewerComponent, deps: [{ token: i1.RemoteAccessService }, { token: i2.ActivatedRoute }, { token: i3.BsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
143
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: VncViewerComponent, isStandalone: true, selector: "c8y-vnc-viewer", ngImport: i0, template: "<c8y-title>{{ titlePrefix | translate }}: {{ title | translate }}</c8y-title>\n\n<ng-container *ngIf=\"status === 'connected'\">\n <c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n (click)=\"toggleFullscreen()\"\n >\n <i [c8yIcon]=\"'expand'\"></i>\n <span translate>Fullscreen</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n (click)=\"downloadScreenshot()\"\n >\n <i [c8yIcon]=\"'download'\"></i>\n <span translate>Screenshot</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item [placement]=\"'more'\">\n <button\n class=\"btn btn-link\"\n (click)=\"sendCtrlAltDel()\"\n >\n <i [c8yIcon]=\"'keyboard'\"></i>\n <span translate>Send Ctrl+Alt+Del</span>\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<ng-container *ngIf=\"powerCapability && status === 'connected'\">\n <c8y-action-bar-item [placement]=\"'more'\">\n <button\n class=\"btn btn-link\"\n (click)=\"sendShutDown()\"\n >\n <i [c8yIcon]=\"'shutdown'\"></i>\n <span translate>Shutdown</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item [placement]=\"'more'\">\n <button\n class=\"btn btn-link\"\n (click)=\"sendReboot()\"\n >\n <i [c8yIcon]=\"'reset'\"></i>\n <span translate>Reboot</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item [placement]=\"'more'\">\n <button\n class=\"btn btn-link\"\n (click)=\"sendReset()\"\n >\n <i [c8yIcon]=\"'reset'\"></i>\n <span translate>Reset</span>\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<c8y-loading *ngIf=\"status === 'connecting'\"></c8y-loading>\n\n<div\n class=\"content-fullpage\"\n [ngClass]=\"{ hidden: status !== 'connected' }\"\n>\n <div\n class=\"inner-scroll\"\n id=\"vnc-screen\"\n ></div>\n</div>\n", dependencies: [{ kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }] }); }
144
+ }
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: VncViewerComponent, decorators: [{
146
+ type: Component,
147
+ args: [{ selector: 'c8y-vnc-viewer', standalone: true, imports: [
148
+ C8yTranslatePipe,
149
+ TitleComponent,
150
+ ActionBarItemComponent,
151
+ C8yTranslateDirective,
152
+ IconDirective,
153
+ NgIf,
154
+ NgClass,
155
+ LoadingComponent
156
+ ], template: "<c8y-title>{{ titlePrefix | translate }}: {{ title | translate }}</c8y-title>\n\n<ng-container *ngIf=\"status === 'connected'\">\n <c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n (click)=\"toggleFullscreen()\"\n >\n <i [c8yIcon]=\"'expand'\"></i>\n <span translate>Fullscreen</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n (click)=\"downloadScreenshot()\"\n >\n <i [c8yIcon]=\"'download'\"></i>\n <span translate>Screenshot</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item [placement]=\"'more'\">\n <button\n class=\"btn btn-link\"\n (click)=\"sendCtrlAltDel()\"\n >\n <i [c8yIcon]=\"'keyboard'\"></i>\n <span translate>Send Ctrl+Alt+Del</span>\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<ng-container *ngIf=\"powerCapability && status === 'connected'\">\n <c8y-action-bar-item [placement]=\"'more'\">\n <button\n class=\"btn btn-link\"\n (click)=\"sendShutDown()\"\n >\n <i [c8yIcon]=\"'shutdown'\"></i>\n <span translate>Shutdown</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item [placement]=\"'more'\">\n <button\n class=\"btn btn-link\"\n (click)=\"sendReboot()\"\n >\n <i [c8yIcon]=\"'reset'\"></i>\n <span translate>Reboot</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item [placement]=\"'more'\">\n <button\n class=\"btn btn-link\"\n (click)=\"sendReset()\"\n >\n <i [c8yIcon]=\"'reset'\"></i>\n <span translate>Reset</span>\n </button>\n </c8y-action-bar-item>\n</ng-container>\n\n<c8y-loading *ngIf=\"status === 'connecting'\"></c8y-loading>\n\n<div\n class=\"content-fullpage\"\n [ngClass]=\"{ hidden: status !== 'connected' }\"\n>\n <div\n class=\"inner-scroll\"\n id=\"vnc-screen\"\n ></div>\n</div>\n" }]
157
+ }], ctorParameters: () => [{ type: i1.RemoteAccessService }, { type: i2.ActivatedRoute }, { type: i3.BsModalService }] });
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm5jLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZW1vdGUtYWNjZXNzL3ZuYy92bmMtdmlld2VyL3ZuYy12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcmVtb3RlLWFjY2Vzcy92bmMvdm5jLXZpZXdlci92bmMtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBaUJuRSxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCLFlBQ1UsWUFBaUMsRUFDakMsY0FBOEIsRUFDOUIsWUFBNEI7UUFGNUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFkdEMsZ0JBQVcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGNBQVMsR0FBdUIsSUFBSSxDQUFDO1FBRXJDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLFdBQU0sR0FBZ0QsWUFBWSxDQUFDO1FBQ25FLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFTekQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFDckMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDZixvQkFBb0IsRUFBRSxDQUN2QixDQUFDO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQztZQUMxQyxVQUFVO1lBQ1YsU0FBUztZQUNULGdCQUFnQjtZQUNoQixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ25DLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDN0QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBc0IsRUFBRSxRQUFnQixFQUFFLFFBQWdCLEVBQUUsS0FBeUI7UUFDM0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBaUI7WUFDNUIsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQ3hCLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDbEMsMkdBQTJHO1FBQzNHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQ3JCLElBQUksQ0FBQyxFQUFFO1lBQ0wsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxNQUFNLENBQUMsSUFBSSxFQUFFLGNBQWMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELENBQUMsRUFDRCxXQUFXLEVBQ1gsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQW1EO1FBQzlELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pELElBQUksT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNyQixDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE9BQXFELENBQUM7UUFDN0UsSUFBSSxPQUFPLFVBQVUsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDN0MsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQzVCLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVTLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFvQztRQUNyRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUNyRSxtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtTQUMvQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzs4R0E5SlUsa0JBQWtCO2tHQUFsQixrQkFBa0IsMEVDbkMvQixpOURBNkVBLHVDRHBESSxnQkFBZ0Isa0RBQ2hCLGNBQWMsbUZBQ2Qsc0JBQXNCLDBKQUN0QixxQkFBcUIsd0VBQ3JCLGFBQWEsMkVBQ2IsSUFBSSw2RkFDSixPQUFPLG9GQUNQLGdCQUFnQjs7MkZBR1Asa0JBQWtCO2tCQWY5QixTQUFTOytCQUNFLGdCQUFnQixjQUVkLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2Qsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsSUFBSTt3QkFDSixPQUFPO3dCQUNQLGdCQUFnQjtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uQmFySXRlbUNvbXBvbmVudCxcbiAgQzh5VHJhbnNsYXRlRGlyZWN0aXZlLFxuICBDOHlUcmFuc2xhdGVQaXBlLFxuICBJY29uRGlyZWN0aXZlLFxuICBMb2FkaW5nQ29tcG9uZW50LFxuICBUaXRsZUNvbXBvbmVudFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgTm9WbmNDcmVkZW50aWFscywgTm9WbmNPcHRpb25zLCBkZWZhdWx0IGFzIE5vVm5jQ2xpZW50IH0gZnJvbSAnQG5vdm5jL25vdm5jL2xpYi9yZmInO1xuaW1wb3J0IHsgUmVtb3RlQWNjZXNzU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVtb3RlLWFjY2Vzcy9kYXRhJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgVm5jQ3JlZGVudGlhbHNQcm9tcHRDb21wb25lbnQgfSBmcm9tICcuL3ZuYy1jcmVkZW50aWFscy1wcm9tcHQvdm5jLWNyZWRlbnRpYWxzLXByb21wdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWZlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS12bmMtdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZuYy12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQzh5VHJhbnNsYXRlUGlwZSxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBBY3Rpb25CYXJJdGVtQ29tcG9uZW50LFxuICAgIEM4eVRyYW5zbGF0ZURpcmVjdGl2ZSxcbiAgICBJY29uRGlyZWN0aXZlLFxuICAgIE5nSWYsXG4gICAgTmdDbGFzcyxcbiAgICBMb2FkaW5nQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVm5jVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgdGl0bGVQcmVmaXggPSBnZXR0ZXh0KCdWTkMgdmlld2VyJyk7XG4gIHRpdGxlID0gJyc7XG4gIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgbm9WTkNDbGllbnQ6IE5vVm5jQ2xpZW50O1xuICBwb3dlckNhcGFiaWxpdHkgPSBmYWxzZTtcblxuICBzdGF0dXM6ICdjb25uZWN0aW5nJyB8ICdjb25uZWN0ZWQnIHwgJ2Rpc2Nvbm5lY3RlZCcgPSAnY29ubmVjdGluZyc7XG4gIGNvbnRhaW5lciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29ubmVjdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVtb3RlQWNjZXNzOiBSZW1vdGVBY2Nlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZVxuICApIHtcbiAgICBjb25zdCBjb250YWluZXIkID0gdGhpcy5jb250YWluZXIkLnBpcGUoZmlsdGVyKEJvb2xlYW4pKTtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uSWQkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMucGlwZShcbiAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmNvbmZpZ3VyYXRpb25JZCksXG4gICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcbiAgICBjb25zdCBkZXZpY2VJZCQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmVudC5wYXJhbXMucGlwZShcbiAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmlkKSxcbiAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICBjb250YWluZXIkLFxuICAgICAgZGV2aWNlSWQkLFxuICAgICAgY29uZmlndXJhdGlvbklkJCxcbiAgICAgIGRlZmVyKCgpID0+IHRoaXMuZ2V0Tm9WTkNDbGllbnQoKSlcbiAgICBdKS5zdWJzY3JpYmUoKFtjb250YWluZXIsIGRldmljZUlkLCBjb25maWd1cmF0aW9uSWQsIG5vVk5DXSkgPT4ge1xuICAgICAgdGhpcy5kaXNjb25uZWN0RnJvbU9sZFNlc3Npb24oKTtcbiAgICAgIHRoaXMuY29ubmVjdChjb250YWluZXIsIGRldmljZUlkLCBjb25maWd1cmF0aW9uSWQsIG5vVk5DKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29ubmVjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmRpc2Nvbm5lY3RGcm9tT2xkU2Vzc2lvbigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGFpbmVyJC5uZXh0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2bmMtc2NyZWVuJykpO1xuICB9XG5cbiAgZGlzY29ubmVjdEZyb21PbGRTZXNzaW9uKCkge1xuICAgIHRoaXMucG93ZXJDYXBhYmlsaXR5ID0gZmFsc2U7XG4gICAgdGhpcy50aXRsZSA9ICcnO1xuICAgIGlmICghdGhpcy5ub1ZOQ0NsaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubm9WTkNDbGllbnQuZGlzY29ubmVjdCgpO1xuICAgIGRlbGV0ZSB0aGlzLm5vVk5DQ2xpZW50O1xuICB9XG5cbiAgY29ubmVjdChjb250YWluZXI6IEhUTUxFbGVtZW50LCBkZXZpY2VJZDogc3RyaW5nLCBjb25maWdJZDogc3RyaW5nLCBub1ZOQzogdHlwZW9mIE5vVm5jQ2xpZW50KSB7XG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXMoJ2Nvbm5lY3RpbmcnKTtcbiAgICBjb25zdCBvcHRpb25zOiBOb1ZuY09wdGlvbnMgPSB7XG4gICAgICB3c1Byb3RvY29sczogWydiaW5hcnknXVxuICAgIH07XG4gICAgY29uc3QgdXJpID0gdGhpcy5yZW1vdGVBY2Nlc3MuZ2V0V2ViU29ja2V0VXJpKGRldmljZUlkLCBjb25maWdJZCk7XG4gICAgdGhpcy5ub1ZOQ0NsaWVudCA9IG5ldyBub1ZOQyhjb250YWluZXIsIHVyaSwgb3B0aW9ucyk7XG4gICAgdGhpcy5ub1ZOQ0NsaWVudC5yZXNpemVTZXNzaW9uID0gdHJ1ZTtcbiAgICB0aGlzLm5vVk5DQ2xpZW50LnNjYWxlVmlld3BvcnQgPSB0cnVlO1xuICAgIHRoaXMubm9WTkNDbGllbnQuc2hvd0RvdEN1cnNvciA9IHRydWU7XG4gICAgdGhpcy5ub1ZOQ0NsaWVudC52aWV3T25seSA9IGZhbHNlO1xuICAgIHRoaXMubm9WTkNDbGllbnQucXVhbGl0eUxldmVsID0gNjtcbiAgICAvLyBuZWVkIHRvIHNldCBjb21wcmVzc2lvbkxldmVsIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiB0aGUgZGVmYXVsdCAyIGFzIDIgc2VlbXMgdG8gYmUgY2F1c2luZyBpc3N1ZXMuLlxuICAgIHRoaXMubm9WTkNDbGllbnQuY29tcHJlc3Npb25MZXZlbCA9IDk7XG4gICAgdGhpcy5ub1ZOQ0NsaWVudC5hZGRFdmVudExpc3RlbmVyKCdjb25uZWN0JywgX2UgPT4ge1xuICAgICAgdGhpcy5jaGFuZ2VTdGF0dXMoJ2Nvbm5lY3RlZCcpO1xuICAgICAgdGhpcy5ub1ZOQ0NsaWVudC5mb2N1cygpO1xuICAgIH0pO1xuICAgIHRoaXMubm9WTkNDbGllbnQuYWRkRXZlbnRMaXN0ZW5lcignY3JlZGVudGlhbHNyZXF1aXJlZCcsIGUgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0Q3JlZGVudGlhbHMoZS5kZXRhaWwudHlwZXMpO1xuICAgIH0pO1xuICAgIHRoaXMubm9WTkNDbGllbnQuYWRkRXZlbnRMaXN0ZW5lcignZGVza3RvcG5hbWUnLCBlID0+IHtcbiAgICAgIHRoaXMudGl0bGUgPSBlLmRldGFpbC5uYW1lO1xuICAgIH0pO1xuICAgIHRoaXMubm9WTkNDbGllbnQuYWRkRXZlbnRMaXN0ZW5lcignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKCdkaXNjb25uZWN0ZWQnKTtcbiAgICB9KTtcbiAgICB0aGlzLm5vVk5DQ2xpZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NhcGFiaWxpdGllcycsIGUgPT4ge1xuICAgICAgdGhpcy5wb3dlckNhcGFiaWxpdHkgPSBlLmRldGFpbC5jYXBhYmlsaXRpZXMucG93ZXI7XG4gICAgfSk7XG4gIH1cblxuICBkb3dubG9hZFNjcmVlbnNob3QoKSB7XG4gICAgdGhpcy5ub1ZOQ0NsaWVudC50b0Jsb2IoXG4gICAgICBibG9iID0+IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgc2F2ZUFzKGJsb2IsIGBzY3JlZW5zaG90LSR7dGhpcy50aXRsZX0tJHtkYXRlfS5wbmdgKTtcbiAgICAgIH0sXG4gICAgICAnaW1hZ2UvcG5nJyxcbiAgICAgIDFcbiAgICApO1xuICB9XG5cbiAgY2hhbmdlU3RhdHVzKHN0YXR1czogJ2Nvbm5lY3RpbmcnIHwgJ2Nvbm5lY3RlZCcgfCAnZGlzY29ubmVjdGVkJykge1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICB9XG5cbiAgdG9nZ2xlRnVsbHNjcmVlbigpIHtcbiAgICBpZiAoZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgfVxuICB9XG5cbiAgc2VuZEN0cmxBbHREZWwoKSB7XG4gICAgdGhpcy5ub1ZOQ0NsaWVudC5zZW5kQ3RybEFsdERlbCgpO1xuICB9XG5cbiAgc2VuZFNodXREb3duKCkge1xuICAgIHRoaXMubm9WTkNDbGllbnQubWFjaGluZVNodXRkb3duKCk7XG4gIH1cblxuICBzZW5kUmVzZXQoKSB7XG4gICAgdGhpcy5ub1ZOQ0NsaWVudC5tYWNoaW5lUmVzZXQoKTtcbiAgfVxuXG4gIHNlbmRSZWJvb3QoKSB7XG4gICAgdGhpcy5ub1ZOQ0NsaWVudC5tYWNoaW5lUmVib290KCk7XG4gIH1cblxuICBhc3luYyBnZXROb1ZOQ0NsaWVudCgpOiBQcm9taXNlPHR5cGVvZiBOb1ZuY0NsaWVudD4ge1xuICAgIGNvbnN0IGxpYiA9IGF3YWl0IGltcG9ydCgnQG5vdm5jL25vdm5jL2xpYi9yZmInKTtcbiAgICBpZiAodHlwZW9mIGxpYi5kZWZhdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbGliLmRlZmF1bHQ7XG4gICAgfVxuICAgIGNvbnN0IGxpYkRlZmF1bHQgPSBsaWIuZGVmYXVsdCBhcyB1bmtub3duIGFzIHsgZGVmYXVsdDogdHlwZW9mIE5vVm5jQ2xpZW50IH07XG4gICAgaWYgKHR5cGVvZiBsaWJEZWZhdWx0LmRlZmF1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBsaWJEZWZhdWx0LmRlZmF1bHQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb1ZOQyBsaWJyYXJ5IG5vdCBmb3VuZCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlcXVlc3RDcmVkZW50aWFscyh0eXBlczogQXJyYXk8a2V5b2YgTm9WbmNDcmVkZW50aWFscz4pIHtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coVm5jQ3JlZGVudGlhbHNQcm9tcHRDb21wb25lbnQsIHtcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgICBpbml0aWFsU3RhdGU6IHsgdHlwZXM6IHR5cGVzIH1cbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHVzZXJuYW1lLCBwYXNzd29yZCB9ID0gYXdhaXQgbW9kYWxSZWYuY29udGVudC5yZXN1bHQ7XG4gICAgICB0aGlzLm5vVk5DQ2xpZW50LnNlbmRDcmVkZW50aWFscyh7IHVzZXJuYW1lLCBwYXNzd29yZCwgdGFyZ2V0OiB1bmRlZmluZWQgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5ub1ZOQ0NsaWVudC5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IHRpdGxlUHJlZml4IHwgdHJhbnNsYXRlIH19OiB7eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvYzh5LXRpdGxlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwic3RhdHVzID09PSAnY29ubmVjdGVkJ1wiPlxuICA8Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcbiAgICA+XG4gICAgICA8aSBbYzh5SWNvbl09XCInZXhwYW5kJ1wiPjwvaT5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5GdWxsc2NyZWVuPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbiAgPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgICAgKGNsaWNrKT1cImRvd25sb2FkU2NyZWVuc2hvdCgpXCJcbiAgICA+XG4gICAgICA8aSBbYzh5SWNvbl09XCInZG93bmxvYWQnXCI+PC9pPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPlNjcmVlbnNob3Q8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuICA8Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidtb3JlJ1wiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAgIChjbGljayk9XCJzZW5kQ3RybEFsdERlbCgpXCJcbiAgICA+XG4gICAgICA8aSBbYzh5SWNvbl09XCIna2V5Ym9hcmQnXCI+PC9pPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPlNlbmQgQ3RybCtBbHQrRGVsPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvd2VyQ2FwYWJpbGl0eSAmJiBzdGF0dXMgPT09ICdjb25uZWN0ZWQnXCI+XG4gIDxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ21vcmUnXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgICAgKGNsaWNrKT1cInNlbmRTaHV0RG93bigpXCJcbiAgICA+XG4gICAgICA8aSBbYzh5SWNvbl09XCInc2h1dGRvd24nXCI+PC9pPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPlNodXRkb3duPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbiAgPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCInbW9yZSdcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgICAoY2xpY2spPVwic2VuZFJlYm9vdCgpXCJcbiAgICA+XG4gICAgICA8aSBbYzh5SWNvbl09XCIncmVzZXQnXCI+PC9pPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPlJlYm9vdDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG4gIDxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ21vcmUnXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgICAgKGNsaWNrKT1cInNlbmRSZXNldCgpXCJcbiAgICA+XG4gICAgICA8aSBbYzh5SWNvbl09XCIncmVzZXQnXCI+PC9pPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPlJlc2V0PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG48L25nLWNvbnRhaW5lcj5cblxuPGM4eS1sb2FkaW5nICpuZ0lmPVwic3RhdHVzID09PSAnY29ubmVjdGluZydcIj48L2M4eS1sb2FkaW5nPlxuXG48ZGl2XG4gIGNsYXNzPVwiY29udGVudC1mdWxscGFnZVwiXG4gIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiBzdGF0dXMgIT09ICdjb25uZWN0ZWQnIH1cIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJpbm5lci1zY3JvbGxcIlxuICAgIGlkPVwidm5jLXNjcmVlblwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
@@ -38,4 +38,4 @@ export const REPLACE_DEVICE_STEP_STATES_MAP = {
38
38
  styleClass: 'text-success'
39
39
  }
40
40
  };
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1kZXZpY2Utd2l6YXJkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcmVwbGFjZS1kZXZpY2UvcmVwbGFjZS1kZXZpY2Utd2l6YXJkL3JlcGxhY2UtZGV2aWNlLXdpemFyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUE2RTlDLE1BQU0sMEJBQTBCLEdBQVU7SUFDeEMsU0FBUztJQUNULFdBQVc7SUFDWCxTQUFTO0lBQ1QsUUFBUTtJQUNSLFlBQVk7Q0FDYixDQUFDO0FBR0YsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEtBQWM7SUFDMUQsT0FBTywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsS0FBK0IsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBOEM7SUFDbEYsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDM0IsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDL0IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDM0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDekIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUM7Q0FDbEMsQ0FBQztBQVdGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUErQjtJQUN4RSxPQUFPLEVBQUU7UUFDUCxJQUFJLEVBQUUsU0FBUztRQUNmLFVBQVUsRUFBRSxXQUFXO0tBQ3hCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLFNBQVM7UUFDZixVQUFVLEVBQUUsV0FBVztLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxNQUFNO1FBQ1osVUFBVSxFQUFFLFdBQVc7S0FDeEI7SUFDRCxNQUFNLEVBQUU7UUFDTixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFVBQVUsRUFBRSxhQUFhO0tBQzFCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFLGNBQWM7UUFDcEIsVUFBVSxFQUFFLGNBQWM7S0FDM0I7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUV4dGVybmFsSWRlbnRpdHksIElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VEZXZpY2VDb250ZXh0IHtcbiAgZGV2aWNlVG9SZXBsYWNlOiBJTWFuYWdlZE9iamVjdDtcbiAgcmVwbGFjZW1lbnREZXZpY2U6IElNYW5hZ2VkT2JqZWN0O1xuICByZXBsYWNlbWVudERldmljZUlkOiBzdHJpbmc7XG4gIG5ld0V4dGVybmFsSWRzOiBJRXh0ZXJuYWxJZGVudGl0eVtdO1xuICBvbGRFeHRlcm5hbElkczogSUV4dGVybmFsSWRlbnRpdHlbXTtcbiAgZGVsZXRlUmVwbGFjZWREZXZpY2VPd25lcjogYm9vbGVhbjtcbiAgdGltZTogc3RyaW5nO1xuICBza2lwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvciB7XG4gIHRleHQ6IHN0cmluZztcbiAgZGV0YWlsZWREYXRhPzpcbiAgICB8IHN0cmluZ1xuICAgIHwge1xuICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgc3RhdHVzVGV4dDogc3RyaW5nO1xuICAgICAgfTtcbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhbiBleGVjdXRpb24gc3RlcCBpbiB0aGUgZGV2aWNlIHJlcGxhY2VtZW50IGZsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZURldmljZVN0ZXAge1xuICAvKipcbiAgICogTGFiZWwgdG8gYmUgdXNlZCBpbiB0aGUgcmVwbGFjZSBkZXZpY2Ugd2l6YXJkIFVJLlxuICAgKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFN0ZXAgaW1wbGVtZW50YXRpb24uXG4gICAqL1xuICBhY3Rpb246IChjb250ZXh0OiBSZXBsYWNlRGV2aWNlQ29udGV4dCkgPT4gT2JzZXJ2YWJsZTx1bmtub3duPiB8IFByb21pc2U8dW5rbm93bj47XG4gIC8qKlxuICAgKiBEZWZpbmVzIGlmIHRoZSByZXN1bHQgZnJvbSBzdGVwIGV4ZWN1dGlvbiBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIGZsb3cuXG4gICAqL1xuICBvdmVycmlkZUNvbnRleHQ/OiBib29sZWFuO1xuICBpbmZvPzogU3RlcEluZm87XG4gIC8qKlxuICAgKiBDdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZSBvZiB0aGUgc3RlcC5cbiAgICovXG4gIHN0YXRlPzogUmVwbGFjZURldmljZVN0ZXBTdGF0ZTtcbiAgLyoqXG4gICAqIEVycm9yIG9jY3VyZWQgZHVyaW5nIHN0ZXAgZXhlY3V0aW9uLlxuICAgKi9cbiAgZXJyb3I/OiBFcnJvcjtcbiAgLyoqXG4gICAqICFJbnRlcm5hbCB1c2Ugb25seSEgRmxhZyB0byBza2lwIHN0ZXAgZXhlY3V0aW9uLCB1c2VkIHRvIGNvbnRyb2wgcmV0cmlhbC5cbiAgICovXG4gIHNraXA/OiBib29sZWFuO1xuICAvKipcbiAgICogIUludGVybmFsIHVzZSBvbmx5ISBTdG9yZXMgdGhlIGNvbnRleHQgdGhlIHN0ZXAgd2FzIGluaXRpYWxseSBleGVjdXRlZCB3aXRoLlxuICAgKi9cbiAgY29udGV4dD86IFJlcGxhY2VEZXZpY2VDb250ZXh0O1xuICAvKipcbiAgICogIUludGVybmFsIHVzZSBvbmx5ISBDb250ZXh0IHRvIGJlIHVzZWQgZm9yIHN0ZXAgcmUtdHJpYWwuXG4gICAqL1xuICBzZWVkPzogUmVwbGFjZURldmljZUNvbnRleHQ7XG59XG5cbi8qKlxuICogQWxsb3dzIHRvIGRpc3BsYXkgYW4gaW5mbyBwb3BvdmVyIGZvciBhIHBhcnRpY3VsYXIgc3RlcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGVwSW5mbyB7XG4gIC8qKlxuICAgKiBNZXNzYWdlIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYSBwb3BvdmVyIGZvciB0aGUgZ2l2ZW4gc3RlcC5cbiAgICovXG4gIG1zZz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkXG4gICAqL1xuICBnZXRNZXNzYWdlPzogKGNvbnRleHQ6IFJlcGxhY2VEZXZpY2VDb250ZXh0LCBzdGVwOiBSZXBsYWNlRGV2aWNlU3RlcCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5jb25zdCBSRVBMQUNFX0RFVklDRV9TVEVQX1NUQVRFUyA9IDxjb25zdD5bXG4gICdQZW5kaW5nJyxcbiAgJ0V4ZWN1dGluZycsXG4gICdTa2lwcGVkJyxcbiAgJ0ZhaWxlZCcsXG4gICdTdWNjZXNzZnVsJ1xuXTtcbmV4cG9ydCB0eXBlIFJlcGxhY2VEZXZpY2VTdGVwU3RhdGUgPSAodHlwZW9mIFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTKVtudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFJlcGxhY2VEZXZpY2VTdGVwU3RhdGUoc3RhdGU6IHVua25vd24pOiBzdGF0ZSBpcyBSZXBsYWNlRGV2aWNlU3RlcFN0YXRlIHtcbiAgcmV0dXJuIFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTLmluY2x1ZGVzKHN0YXRlIGFzIFJlcGxhY2VEZXZpY2VTdGVwU3RhdGUpO1xufVxuXG5leHBvcnQgY29uc3QgUkVQTEFDRV9ERVZJQ0VfU1RFUF9TVEFURTogeyBba2V5OiBzdHJpbmddOiBSZXBsYWNlRGV2aWNlU3RlcFN0YXRlIH0gPSB7XG4gIFBFTkRJTkc6IGdldHRleHQoJ1BlbmRpbmcnKSxcbiAgRVhFQ1VUSU5HOiBnZXR0ZXh0KCdFeGVjdXRpbmcnKSxcbiAgU0tJUFBFRDogZ2V0dGV4dCgnU2tpcHBlZCcpLFxuICBGQUlMRUQ6IGdldHRleHQoJ0ZhaWxlZCcpLFxuICBTVUNDRVNTRlVMOiBnZXR0ZXh0KCdTdWNjZXNzZnVsJylcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGUge1xuICBpY29uPzogc3RyaW5nO1xuICBzdHlsZUNsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZXBsYWNlRGV2aWNlU3RlcFN0YXRlc01hcCA9IHtcbiAgW2tleSBpbiBSZXBsYWNlRGV2aWNlU3RlcFN0YXRlXT86IFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTX01BUDogUmVwbGFjZURldmljZVN0ZXBTdGF0ZXNNYXAgPSB7XG4gIFBlbmRpbmc6IHtcbiAgICBpY29uOiAnY2xvY2stbycsXG4gICAgc3R5bGVDbGFzczogJ3RleHQtaW5mbydcbiAgfSxcbiAgRXhlY3V0aW5nOiB7XG4gICAgaWNvbjogJ3JlZnJlc2gnLFxuICAgIHN0eWxlQ2xhc3M6ICd0ZXh0LWluZm8nXG4gIH0sXG4gIFNraXBwZWQ6IHtcbiAgICBpY29uOiAnc2tpcCcsXG4gICAgc3R5bGVDbGFzczogJ3RleHQtaW5mbydcbiAgfSxcbiAgRmFpbGVkOiB7XG4gICAgaWNvbjogJ2V4Y2xhbWF0aW9uLWNpcmNsZScsXG4gICAgc3R5bGVDbGFzczogJ3RleHQtZGFuZ2VyJ1xuICB9LFxuICBTdWNjZXNzZnVsOiB7XG4gICAgaWNvbjogJ2NoZWNrLWNpcmNsZScsXG4gICAgc3R5bGVDbGFzczogJ3RleHQtc3VjY2VzcydcbiAgfVxufTtcbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1kZXZpY2Utd2l6YXJkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcmVwbGFjZS1kZXZpY2UvcmVwbGFjZS1kZXZpY2Utd2l6YXJkL3JlcGxhY2UtZGV2aWNlLXdpemFyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUE4RTlDLE1BQU0sMEJBQTBCLEdBQVU7SUFDeEMsU0FBUztJQUNULFdBQVc7SUFDWCxTQUFTO0lBQ1QsUUFBUTtJQUNSLFlBQVk7Q0FDYixDQUFDO0FBR0YsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEtBQWM7SUFDMUQsT0FBTywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsS0FBK0IsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBOEM7SUFDbEYsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDM0IsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDL0IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDM0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDekIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUM7Q0FDbEMsQ0FBQztBQVdGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUErQjtJQUN4RSxPQUFPLEVBQUU7UUFDUCxJQUFJLEVBQUUsU0FBUztRQUNmLFVBQVUsRUFBRSxXQUFXO0tBQ3hCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLFNBQVM7UUFDZixVQUFVLEVBQUUsV0FBVztLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxNQUFNO1FBQ1osVUFBVSxFQUFFLFdBQVc7S0FDeEI7SUFDRCxNQUFNLEVBQUU7UUFDTixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFVBQVUsRUFBRSxhQUFhO0tBQzFCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFLGNBQWM7UUFDcEIsVUFBVSxFQUFFLGNBQWM7S0FDM0I7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUV4dGVybmFsSWRlbnRpdHksIElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZURldmljZUNvbnRleHQge1xuICBkZXZpY2VUb1JlcGxhY2U6IElNYW5hZ2VkT2JqZWN0O1xuICByZXBsYWNlbWVudERldmljZTogSU1hbmFnZWRPYmplY3Q7XG4gIHJlcGxhY2VtZW50RGV2aWNlSWQ6IHN0cmluZztcbiAgbmV3RXh0ZXJuYWxJZHM6IElFeHRlcm5hbElkZW50aXR5W107XG4gIG9sZEV4dGVybmFsSWRzOiBJRXh0ZXJuYWxJZGVudGl0eVtdO1xuICBkZWxldGVSZXBsYWNlZERldmljZU93bmVyOiBib29sZWFuO1xuICB0aW1lOiBzdHJpbmc7XG4gIHNraXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yIHtcbiAgdGV4dDogc3RyaW5nO1xuICBkZXRhaWxlZERhdGE/OlxuICAgIHwgc3RyaW5nXG4gICAgfCB7XG4gICAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgICB9O1xufVxuXG4vKipcbiAqIERlY2xhcmVzIGFuIGV4ZWN1dGlvbiBzdGVwIGluIHRoZSBkZXZpY2UgcmVwbGFjZW1lbnQgZmxvdy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlRGV2aWNlU3RlcCB7XG4gIC8qKlxuICAgKiBMYWJlbCB0byBiZSB1c2VkIGluIHRoZSByZXBsYWNlIGRldmljZSB3aXphcmQgVUkuXG4gICAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogU3RlcCBpbXBsZW1lbnRhdGlvbi5cbiAgICovXG4gIGFjdGlvbjogKGNvbnRleHQ6IFJlcGxhY2VEZXZpY2VDb250ZXh0KSA9PiBPYnNlcnZhYmxlPHVua25vd24+IHwgUHJvbWlzZTx1bmtub3duPjtcbiAgLyoqXG4gICAqIERlZmluZXMgaWYgdGhlIHJlc3VsdCBmcm9tIHN0ZXAgZXhlY3V0aW9uIHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIG5leHQgc3RlcCBpbiB0aGUgZmxvdy5cbiAgICovXG4gIG92ZXJyaWRlQ29udGV4dD86IGJvb2xlYW47XG4gIGluZm8/OiBTdGVwSW5mbztcbiAgLyoqXG4gICAqIEN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlIG9mIHRoZSBzdGVwLlxuICAgKi9cbiAgc3RhdGU/OiBSZXBsYWNlRGV2aWNlU3RlcFN0YXRlO1xuICAvKipcbiAgICogRXJyb3Igb2NjdXJlZCBkdXJpbmcgc3RlcCBleGVjdXRpb24uXG4gICAqL1xuICBlcnJvcj86IEVycm9yO1xuICAvKipcbiAgICogIUludGVybmFsIHVzZSBvbmx5ISBGbGFnIHRvIHNraXAgc3RlcCBleGVjdXRpb24sIHVzZWQgdG8gY29udHJvbCByZXRyaWFsLlxuICAgKi9cbiAgc2tpcD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAhSW50ZXJuYWwgdXNlIG9ubHkhIFN0b3JlcyB0aGUgY29udGV4dCB0aGUgc3RlcCB3YXMgaW5pdGlhbGx5IGV4ZWN1dGVkIHdpdGguXG4gICAqL1xuICBjb250ZXh0PzogUmVwbGFjZURldmljZUNvbnRleHQ7XG4gIC8qKlxuICAgKiAhSW50ZXJuYWwgdXNlIG9ubHkhIENvbnRleHQgdG8gYmUgdXNlZCBmb3Igc3RlcCByZS10cmlhbC5cbiAgICovXG4gIHNlZWQ/OiBSZXBsYWNlRGV2aWNlQ29udGV4dDtcbn1cblxuLyoqXG4gKiBBbGxvd3MgdG8gZGlzcGxheSBhbiBpbmZvIHBvcG92ZXIgZm9yIGEgcGFydGljdWxhciBzdGVwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBJbmZvIHtcbiAgLyoqXG4gICAqIE1lc3NhZ2UgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBhIHBvcG92ZXIgZm9yIHRoZSBnaXZlbiBzdGVwLlxuICAgKi9cbiAgbXNnPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgZXhlY3V0ZWRcbiAgICovXG4gIGdldE1lc3NhZ2U/OiAoY29udGV4dDogUmVwbGFjZURldmljZUNvbnRleHQsIHN0ZXA6IFJlcGxhY2VEZXZpY2VTdGVwKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTID0gPGNvbnN0PltcbiAgJ1BlbmRpbmcnLFxuICAnRXhlY3V0aW5nJyxcbiAgJ1NraXBwZWQnLFxuICAnRmFpbGVkJyxcbiAgJ1N1Y2Nlc3NmdWwnXG5dO1xuZXhwb3J0IHR5cGUgUmVwbGFjZURldmljZVN0ZXBTdGF0ZSA9ICh0eXBlb2YgUkVQTEFDRV9ERVZJQ0VfU1RFUF9TVEFURVMpW251bWJlcl07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmVwbGFjZURldmljZVN0ZXBTdGF0ZShzdGF0ZTogdW5rbm93bik6IHN0YXRlIGlzIFJlcGxhY2VEZXZpY2VTdGVwU3RhdGUge1xuICByZXR1cm4gUkVQTEFDRV9ERVZJQ0VfU1RFUF9TVEFURVMuaW5jbHVkZXMoc3RhdGUgYXMgUmVwbGFjZURldmljZVN0ZXBTdGF0ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBSRVBMQUNFX0RFVklDRV9TVEVQX1NUQVRFOiB7IFtrZXk6IHN0cmluZ106IFJlcGxhY2VEZXZpY2VTdGVwU3RhdGUgfSA9IHtcbiAgUEVORElORzogZ2V0dGV4dCgnUGVuZGluZycpLFxuICBFWEVDVVRJTkc6IGdldHRleHQoJ0V4ZWN1dGluZycpLFxuICBTS0lQUEVEOiBnZXR0ZXh0KCdTa2lwcGVkJyksXG4gIEZBSUxFRDogZ2V0dGV4dCgnRmFpbGVkJyksXG4gIFNVQ0NFU1NGVUw6IGdldHRleHQoJ1N1Y2Nlc3NmdWwnKVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gIGljb24/OiBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zO1xuICBzdHlsZUNsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZXBsYWNlRGV2aWNlU3RlcFN0YXRlc01hcCA9IHtcbiAgW2tleSBpbiBSZXBsYWNlRGV2aWNlU3RlcFN0YXRlXT86IFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IFJFUExBQ0VfREVWSUNFX1NURVBfU1RBVEVTX01BUDogUmVwbGFjZURldmljZVN0ZXBTdGF0ZXNNYXAgPSB7XG4gIFBlbmRpbmc6IHtcbiAgICBpY29uOiAnY2xvY2stbycsXG4gICAgc3R5bGVDbGFzczogJ3RleHQtaW5mbydcbiAgfSxcbiAgRXhlY3V0aW5nOiB7XG4gICAgaWNvbjogJ3JlZnJlc2gnLFxuICAgIHN0eWxlQ2xhc3M6ICd0ZXh0LWluZm8nXG4gIH0sXG4gIFNraXBwZWQ6IHtcbiAgICBpY29uOiAnc2tpcCcsXG4gICAgc3R5bGVDbGFzczogJ3RleHQtaW5mbydcbiAgfSxcbiAgRmFpbGVkOiB7XG4gICAgaWNvbjogJ2V4Y2xhbWF0aW9uLWNpcmNsZScsXG4gICAgc3R5bGVDbGFzczogJ3RleHQtZGFuZ2VyJ1xuICB9LFxuICBTdWNjZXNzZnVsOiB7XG4gICAgaWNvbjogJ2NoZWNrLWNpcmNsZScsXG4gICAgc3R5bGVDbGFzczogJ3RleHQtc3VjY2VzcydcbiAgfVxufTtcbiJdfQ==