@tuki-io/tuki-widgets 0.0.219-dev.53 → 0.0.219-dev.55

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 (272) hide show
  1. package/README.md +24 -24
  2. package/contact-center/cc-import/cc-import.module.d.ts +13 -0
  3. package/contact-center/cc-import/cc-import.service.d.ts +85 -0
  4. package/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.d.ts +56 -0
  5. package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.d.ts +77 -0
  6. package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.d.ts +3 -0
  7. package/contact-center/cc-import/constants/cc-import.constants.d.ts +37 -0
  8. package/contact-center/cc-import/mock/cc-import.mock.d.ts +4 -0
  9. package/contact-center/cc-import/types/cc-import.d.ts +73 -0
  10. package/contact-center/cc-import/types/uccx.d.ts +109 -0
  11. package/contact-center/cc-readiness/cc-readiness.module.d.ts +3 -3
  12. package/contact-center/public-api.d.ts +8 -0
  13. package/contact-center/shared/api.endpoints.d.ts +25 -0
  14. package/contact-center/shared/api.service.d.ts +3 -1
  15. package/contact-center/shared/components/card/card.component.d.ts +13 -0
  16. package/contact-center/shared/dcp-api.service.d.ts +15 -0
  17. package/contact-center/shared/shared.module.d.ts +11 -5
  18. package/esm2020/contact-center/cc-import/cc-import.module.mjs +45 -0
  19. package/esm2020/contact-center/cc-import/cc-import.service.mjs +228 -0
  20. package/esm2020/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.mjs +144 -0
  21. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.mjs +243 -0
  22. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.mjs +3 -0
  23. package/esm2020/contact-center/cc-import/constants/cc-import.constants.mjs +62 -0
  24. package/esm2020/contact-center/cc-import/mock/cc-import.mock.mjs +78 -0
  25. package/esm2020/contact-center/cc-import/types/cc-import.mjs +2 -0
  26. package/esm2020/contact-center/cc-import/types/uccx.mjs +24 -0
  27. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +7 -6
  28. package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +1 -1
  29. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +7 -7
  30. package/esm2020/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.mjs +2 -2
  31. package/esm2020/contact-center/public-api.mjs +9 -1
  32. package/esm2020/contact-center/shared/api.endpoints.mjs +26 -1
  33. package/esm2020/contact-center/shared/api.service.mjs +8 -3
  34. package/esm2020/contact-center/shared/components/card/card.component.mjs +24 -0
  35. package/esm2020/contact-center/shared/dcp-api.service.mjs +26 -0
  36. package/esm2020/contact-center/shared/shared.module.mjs +15 -5
  37. package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +3 -3
  38. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +2 -2
  39. package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +17 -17
  40. package/esm2020/lib/widgets.component.mjs +9 -9
  41. package/esm2020/lib/widgets.module.mjs +1 -1
  42. package/esm2020/lib/widgets.service.mjs +1 -1
  43. package/esm2020/locations/public-api.mjs +1 -1
  44. package/esm2020/locations/src/app.constants.mjs +1 -1
  45. package/esm2020/locations/src/location-confirm-dialog/location-confirm-dialog.component.mjs +3 -3
  46. package/esm2020/locations/src/locations.component.mjs +47 -15
  47. package/esm2020/locations/src/locations.module.mjs +1 -1
  48. package/esm2020/locations/src/material.module.mjs +1 -1
  49. package/esm2020/locations/src/services/api.service.mjs +1 -1
  50. package/esm2020/locations/src/services/locations.service.mjs +1 -1
  51. package/esm2020/locations/src/types/location.mjs +1 -1
  52. package/esm2020/locations/src/utils/app-loader/app-loader.mjs +3 -3
  53. package/esm2020/meetings/src/app.constants.mjs +1 -1
  54. package/esm2020/meetings/src/components/live-meetings/live-meetings.component.mjs +3 -3
  55. package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +3 -3
  56. package/esm2020/meetings/src/meetings.component.mjs +3 -3
  57. package/esm2020/meetings/src/meetings.module.mjs +1 -1
  58. package/esm2020/meetings/src/services/live-meetings.service.mjs +1 -1
  59. package/esm2020/meetings/src/services/meeting-spaces.service.mjs +1 -1
  60. package/esm2020/meetings/src/types/live-meeting.mjs +1 -1
  61. package/esm2020/meetings/src/types/meeting-space.mjs +1 -1
  62. package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +3 -3
  63. package/esm2020/public-api.mjs +1 -1
  64. package/esm2020/user-creation/src/app.constants.mjs +1 -1
  65. package/esm2020/user-creation/src/classes/notification.mjs +1 -1
  66. package/esm2020/user-creation/src/classes/site.mjs +1 -1
  67. package/esm2020/user-creation/src/environments/environment.mjs +1 -1
  68. package/esm2020/user-creation/src/interfaces/user-creation-wizard.interfaces.mjs +1 -1
  69. package/esm2020/user-creation/src/shared/components/notification/notification.component.mjs +3 -3
  70. package/esm2020/user-creation/src/shared/pipes/truncate.pipe.mjs +1 -1
  71. package/esm2020/user-creation/src/shared/services/notification.service.mjs +1 -1
  72. package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +1 -1
  73. package/esm2020/user-creation/src/shared/services/utils.mjs +1 -1
  74. package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +3 -3
  75. package/esm2020/user-creation/src/utils/build-savable-end-user.mjs +1 -1
  76. package/esm2020/user-creation/src/utils/device-default-prefix.mjs +1 -1
  77. package/esm2020/user-creation/src/utils/device-name-dynamic-tokens.mjs +1 -1
  78. package/esm2020/user-creation/src/utils/device-name-validation.mjs +1 -1
  79. package/esm2020/user-creation/src/utils/model.mjs +1 -1
  80. package/esm2020/user-creation/src/utils/parse-device-name-rule.mjs +1 -1
  81. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +3 -3
  82. package/esm2020/user-device-manage/public-api.mjs +4 -1
  83. package/esm2020/user-device-manage/src/app.constants.mjs +9 -3
  84. package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +311 -0
  85. package/esm2020/user-device-manage/src/classes/device.mjs +1 -1
  86. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  87. package/esm2020/user-device-manage/src/classes/line-association-interface.mjs +1 -1
  88. package/esm2020/user-device-manage/src/classes/line-association.mjs +1 -1
  89. package/esm2020/user-device-manage/src/classes/line-call-info-display.mjs +1 -1
  90. package/esm2020/user-device-manage/src/classes/line-directory.mjs +1 -1
  91. package/esm2020/user-device-manage/src/classes/line.mjs +1 -1
  92. package/esm2020/user-device-manage/src/classes/notification.mjs +1 -1
  93. package/esm2020/user-device-manage/src/classes/recording-options.mjs +1 -1
  94. package/esm2020/user-device-manage/src/classes/simplified-user.mjs +1 -1
  95. package/esm2020/user-device-manage/src/classes/site-defaults.mjs +1 -1
  96. package/esm2020/user-device-manage/src/classes/translation-pattern.mjs +1 -1
  97. package/esm2020/user-device-manage/src/classes/types.mjs +1 -1
  98. package/esm2020/user-device-manage/src/common-functions.mjs +1 -1
  99. package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +3 -3
  100. package/esm2020/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.mjs +3 -3
  101. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.mjs +3 -3
  102. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +3 -3
  103. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line.component.mjs +1 -1
  104. package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +3 -3
  105. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +34 -17
  106. package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +207 -0
  107. package/esm2020/user-device-manage/src/environments/environment.mjs +1 -1
  108. package/esm2020/user-device-manage/src/interseptors/auth.interceptor.mjs +1 -1
  109. package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  110. package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +401 -0
  111. package/esm2020/user-device-manage/src/material.module.mjs +1 -1
  112. package/esm2020/user-device-manage/src/notifications/notification.component.mjs +3 -3
  113. package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +1 -1
  114. package/esm2020/user-device-manage/src/services/api.service.mjs +1 -1
  115. package/esm2020/user-device-manage/src/services/device.service.mjs +32 -2
  116. package/esm2020/user-device-manage/src/services/dns.service.mjs +1 -1
  117. package/esm2020/user-device-manage/src/services/line.service.mjs +1 -1
  118. package/esm2020/user-device-manage/src/services/notification.service.mjs +1 -1
  119. package/esm2020/user-device-manage/src/services/removeKynFromIBM.service.mjs +1 -1
  120. package/esm2020/user-device-manage/src/services/site-settings.service.mjs +1 -1
  121. package/esm2020/user-device-manage/src/services/sorting-utils.service.mjs +1 -1
  122. package/esm2020/user-device-manage/src/services/user.service.mjs +34 -6
  123. package/esm2020/user-device-manage/src/services/utils.service.mjs +1 -1
  124. package/esm2020/user-device-manage/src/services/validation.service.mjs +1 -1
  125. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +19 -4
  126. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +3 -3
  127. package/esm2020/user-manage/public-api.mjs +1 -1
  128. package/esm2020/user-manage/src/app.constants.mjs +1 -1
  129. package/esm2020/user-manage/src/classes/device.mjs +1 -1
  130. package/esm2020/user-manage/src/classes/line-association-interface.mjs +1 -1
  131. package/esm2020/user-manage/src/classes/line-association.mjs +1 -1
  132. package/esm2020/user-manage/src/classes/line-call-info-display.mjs +1 -1
  133. package/esm2020/user-manage/src/classes/line-directory.mjs +1 -1
  134. package/esm2020/user-manage/src/classes/line.mjs +1 -1
  135. package/esm2020/user-manage/src/classes/notification.mjs +1 -1
  136. package/esm2020/user-manage/src/classes/pagination.mjs +1 -1
  137. package/esm2020/user-manage/src/classes/recording-options.mjs +1 -1
  138. package/esm2020/user-manage/src/classes/simplified-user.mjs +1 -1
  139. package/esm2020/user-manage/src/classes/table-data.mjs +1 -1
  140. package/esm2020/user-manage/src/classes/translation-pattern.mjs +1 -1
  141. package/esm2020/user-manage/src/classes/user-list.mjs +1 -1
  142. package/esm2020/user-manage/src/common-functions.mjs +1 -1
  143. package/esm2020/user-manage/src/device-list/device-list.component.mjs +3 -3
  144. package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +3 -3
  145. package/esm2020/user-manage/src/environments/environment.mjs +1 -1
  146. package/esm2020/user-manage/src/interseptors/auth.interceptor.mjs +1 -1
  147. package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  148. package/esm2020/user-manage/src/material.module.mjs +1 -1
  149. package/esm2020/user-manage/src/notifications/notification.component.mjs +3 -3
  150. package/esm2020/user-manage/src/removeKynFromIBM.service.mjs +1 -1
  151. package/esm2020/user-manage/src/services/api.service.mjs +1 -1
  152. package/esm2020/user-manage/src/services/dcp-api.service.mjs +1 -1
  153. package/esm2020/user-manage/src/services/dns.service.mjs +1 -1
  154. package/esm2020/user-manage/src/services/line.service.mjs +1 -1
  155. package/esm2020/user-manage/src/services/notification.service.mjs +1 -1
  156. package/esm2020/user-manage/src/services/removeKynFromIBM.service.mjs +1 -1
  157. package/esm2020/user-manage/src/services/site-settings.service.mjs +1 -1
  158. package/esm2020/user-manage/src/services/sorting-utils.service.mjs +1 -1
  159. package/esm2020/user-manage/src/services/user.service.mjs +1 -1
  160. package/esm2020/user-manage/src/services/utils.service.mjs +1 -1
  161. package/esm2020/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.mjs +3 -3
  162. package/esm2020/user-manage/src/user-info/user-info.component.mjs +3 -3
  163. package/esm2020/user-manage/src/user-manage-widget.component.mjs +2 -2
  164. package/esm2020/user-manage/src/user-manage.module.mjs +1 -1
  165. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +3 -3
  166. package/esm2020/user-manage/src/utils/pagination/pagination.component.mjs +3 -3
  167. package/esm2020/users-list/public-api.mjs +1 -1
  168. package/esm2020/users-list/src/app.constants.mjs +1 -1
  169. package/esm2020/users-list/src/classes/app-location.mjs +1 -1
  170. package/esm2020/users-list/src/classes/device.mjs +1 -1
  171. package/esm2020/users-list/src/classes/line.mjs +1 -1
  172. package/esm2020/users-list/src/classes/move-user.mjs +1 -1
  173. package/esm2020/users-list/src/classes/notification.mjs +1 -1
  174. package/esm2020/users-list/src/classes/simlified-user.mjs +1 -1
  175. package/esm2020/users-list/src/classes/table-data.mjs +1 -1
  176. package/esm2020/users-list/src/classes/user-list.mjs +1 -1
  177. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.mjs +3 -3
  178. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.mjs +3 -3
  179. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +3 -3
  180. package/esm2020/users-list/src/services/api-webex.service.mjs +1 -1
  181. package/esm2020/users-list/src/services/api.service.mjs +1 -1
  182. package/esm2020/users-list/src/services/dns.service.mjs +1 -1
  183. package/esm2020/users-list/src/services/events-communication.service.mjs +1 -1
  184. package/esm2020/users-list/src/services/notification.service.mjs +1 -1
  185. package/esm2020/users-list/src/services/removeKynFromIBM.service.mjs +1 -1
  186. package/esm2020/users-list/src/services/site-settings.service.mjs +1 -1
  187. package/esm2020/users-list/src/services/user.service.mjs +1 -1
  188. package/esm2020/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.mjs +3 -3
  189. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +3 -3
  190. package/esm2020/users-list/src/utils/common-functions.mjs +1 -1
  191. package/esm2020/users-list/src/utils/notifications/notification.component.mjs +3 -3
  192. package/esm2020/users-list/src/utils/utils.service.mjs +1 -1
  193. package/esm2020/workspaces/public-api.mjs +1 -1
  194. package/esm2020/workspaces/src/app.constants.mjs +1 -1
  195. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +17 -4
  196. package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +66 -0
  197. package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +3 -3
  198. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +6 -3
  199. package/esm2020/workspaces/src/material.module.mjs +1 -1
  200. package/esm2020/workspaces/src/services/api.service.mjs +1 -1
  201. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +43 -1
  202. package/esm2020/workspaces/src/services/workspaces-migration.service.mjs +1 -1
  203. package/esm2020/workspaces/src/services/workspaces.service.mjs +2 -1
  204. package/esm2020/workspaces/src/types/workspace.mjs +1 -1
  205. package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +3 -3
  206. package/esm2020/workspaces/src/utils/device-icon.mjs +1 -1
  207. package/esm2020/workspaces/src/workspaces.component.mjs +8 -8
  208. package/esm2020/workspaces/src/workspaces.module.mjs +4 -1
  209. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +999 -128
  210. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  211. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +20 -20
  212. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  213. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +51 -18
  214. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  215. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +8 -8
  216. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  217. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +6 -6
  218. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  219. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +1029 -51
  220. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  221. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +18 -18
  222. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  223. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +12 -12
  224. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  225. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +151 -25
  226. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  227. package/fesm2015/tuki-io-tuki-widgets.mjs +8 -8
  228. package/fesm2015/tuki-io-tuki-widgets.mjs.map +1 -1
  229. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +990 -128
  230. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  231. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +20 -20
  232. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  233. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +50 -18
  234. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  235. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +8 -8
  236. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  237. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +6 -6
  238. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  239. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +1012 -50
  240. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  241. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +18 -18
  242. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  243. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +12 -12
  244. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  245. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +142 -25
  246. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  247. package/fesm2020/tuki-io-tuki-widgets.mjs +8 -8
  248. package/fesm2020/tuki-io-tuki-widgets.mjs.map +1 -1
  249. package/locations/src/locations.component.d.ts +7 -4
  250. package/locations/src/services/locations.service.d.ts +1 -0
  251. package/locations/src/types/location.d.ts +1 -0
  252. package/package.json +1 -1
  253. package/user-device-manage/public-api.d.ts +3 -0
  254. package/user-device-manage/src/app.constants.d.ts +6 -0
  255. package/user-device-manage/src/associate-lines/associate-lines.component.d.ts +95 -0
  256. package/user-device-manage/src/classes/device.d.ts +15 -0
  257. package/user-device-manage/src/classes/deviceProfile.d.ts +5 -0
  258. package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +1 -0
  259. package/user-device-manage/src/device-manage-widget.component.d.ts +6 -1
  260. package/user-device-manage/src/device-settings/device-settings.component.d.ts +53 -0
  261. package/user-device-manage/src/line-key-config/line-key-config.component.d.ts +84 -0
  262. package/user-device-manage/src/services/device.service.d.ts +6 -1
  263. package/user-device-manage/src/services/user.service.d.ts +2 -1
  264. package/user-device-manage/src/user-device-manage.module.d.ts +10 -7
  265. package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +6 -1
  266. package/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.d.ts +25 -0
  267. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +1 -0
  268. package/workspaces/src/services/workspace-detail.service.d.ts +2 -0
  269. package/workspaces/src/types/workspace.d.ts +19 -0
  270. package/workspaces/src/workspaces.module.d.ts +8 -7
  271. package/contact-center/cc-readiness/components/card/card.component.d.ts +0 -6
  272. package/esm2020/contact-center/cc-readiness/components/card/card.component.mjs +0 -13
@@ -0,0 +1,207 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { finalize, forkJoin, Subject, switchMap, takeUntil } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../services/user.service";
6
+ import * as i2 from "../services/api.service";
7
+ import * as i3 from "../services/device.service";
8
+ import * as i4 from "../services/site-settings.service";
9
+ import * as i5 from "@angular/router";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "@angular/forms";
12
+ import * as i8 from "@angular/material/divider";
13
+ import * as i9 from "@angular/material/tooltip";
14
+ import * as i10 from "@angular/material/slide-toggle";
15
+ import * as i11 from "../utils/app-loader/app-loader";
16
+ export class DeviceSettingsComponent {
17
+ get lines() {
18
+ return this.device?.lines?.map((line) => line?.extension || line?.number).filter(Boolean).join(' | ') || 'N/A';
19
+ }
20
+ get devicePools() {
21
+ return this.siteSettingsService.devicePools;
22
+ }
23
+ get cssOptions() {
24
+ return this.siteSettingsService.callingSearchSpaceTypes;
25
+ }
26
+ constructor(userService, apiService, deviceService, siteSettingsService, router) {
27
+ this.userService = userService;
28
+ this.apiService = apiService;
29
+ this.deviceService = deviceService;
30
+ this.siteSettingsService = siteSettingsService;
31
+ this.router = router;
32
+ this.goBack = new EventEmitter();
33
+ this.destroy$ = new Subject();
34
+ this.dataPending = false;
35
+ this.device = null;
36
+ this.softKeys = [];
37
+ this.plarService = new FormControl(false);
38
+ this.description = new FormControl('');
39
+ this.softkeyTemplate = new FormControl('Standard user');
40
+ this.devicePool = new FormControl('Paris_regular_DP_test');
41
+ this.deviceCss = new FormControl('Paris_national_CSS');
42
+ this.enableExtensionMobility = new FormControl(true);
43
+ this.loggedIntoHuntGroup = new FormControl(false);
44
+ this.remoteDevice = new FormControl(false);
45
+ this.ignorePresentationIndicators = new FormControl(false);
46
+ this.hotlineDevice = new FormControl(false);
47
+ this.callerIdForCallsFromThisPhone = new FormControl(true);
48
+ this.remoteNumber = new FormControl(true);
49
+ this.formControls = [
50
+ this.plarService,
51
+ this.description,
52
+ this.softkeyTemplate,
53
+ this.devicePool,
54
+ this.deviceCss,
55
+ this.enableExtensionMobility,
56
+ this.loggedIntoHuntGroup,
57
+ this.remoteDevice,
58
+ this.ignorePresentationIndicators,
59
+ this.hotlineDevice,
60
+ this.callerIdForCallsFromThisPhone,
61
+ this.remoteNumber,
62
+ ];
63
+ this.hasChanges = false;
64
+ }
65
+ ngOnInit() {
66
+ this.apiService.token = this.token;
67
+ this.apiService.apiUrl = this.host;
68
+ this.formControls.forEach(control => control.valueChanges
69
+ .pipe(takeUntil(this.destroy$))
70
+ .subscribe(() => this.hasChanges = true));
71
+ if (this.userService.userDevice) {
72
+ this.device = this.userService.userDevice;
73
+ this.plarService.setValue(!!this.device?.plarService, { emitEvent: false });
74
+ this.description.setValue(this.device?.description || '', { emitEvent: false });
75
+ this.softkeyTemplate.setValue(this.device?.softkeyTemplate || '', { emitEvent: false });
76
+ this.devicePool.setValue(this.device?.devicePoolName || '', { emitEvent: false });
77
+ this.deviceCss.setValue(this.device?.callingSearchSpaceName || '', { emitEvent: false });
78
+ this.enableExtensionMobility.setValue(!!this.device?.enabledExtensionMobility, { emitEvent: false });
79
+ this.loggedIntoHuntGroup.setValue(!!this.device?.loggedIntoHuntGroup, { emitEvent: false });
80
+ this.remoteDevice.setValue(!!this.device?.remoteDevice, { emitEvent: false });
81
+ this.hotlineDevice.setValue(!!this.device?.hotlineDevice, { emitEvent: false });
82
+ this.ignorePresentationIndicators.setValue(!!this.device?.ignorePresentationIndicators, { emitEvent: false });
83
+ this.callerIdForCallsFromThisPhone.setValue(!!this.device?.useDevicePoolCgpnIngressDN, { emitEvent: false });
84
+ this.remoteNumber.setValue(!!this.device?.remoteDevice, { emitEvent: false });
85
+ this.getSiteSettings();
86
+ return;
87
+ }
88
+ this.getData();
89
+ }
90
+ getData() {
91
+ this.dataPending = true;
92
+ const deviceType = localStorage.getItem('deviceType');
93
+ let request;
94
+ if (localStorage.getItem('isWebex') === 'true') {
95
+ const customerId = localStorage.getItem('customerId');
96
+ const webexId = localStorage.getItem('webexUUID');
97
+ request = this.userService.fetchWebexUserDevice(customerId, webexId, deviceType);
98
+ }
99
+ else {
100
+ request = this.userService.fetchDIUserDevice(Number(this.siteId), this.userId, deviceType);
101
+ }
102
+ forkJoin({
103
+ device: request,
104
+ softKeys: this.siteSettingsService.getDeviceSoftkeyTemplates(Number(this.siteId)),
105
+ siteDefaults: this.siteSettingsService.getSiteDefaults(Number(this.siteId)),
106
+ })
107
+ .pipe(takeUntil(this.destroy$))
108
+ .pipe(finalize(() => this.dataPending = false))
109
+ .subscribe(({ device, softKeys }) => {
110
+ this.device = device;
111
+ this.softKeys = softKeys || [];
112
+ this.plarService.setValue(!!this.device?.plarService, { emitEvent: false });
113
+ this.description.setValue(this.device?.description || '', { emitEvent: false });
114
+ this.softkeyTemplate.setValue(this.device?.softkeyTemplate || '', { emitEvent: false });
115
+ this.devicePool.setValue(this.device?.devicePoolName || '', { emitEvent: false });
116
+ this.deviceCss.setValue(this.device?.callingSearchSpaceName || '', { emitEvent: false });
117
+ this.enableExtensionMobility.setValue(!!this.device?.enabledExtensionMobility, { emitEvent: false });
118
+ this.loggedIntoHuntGroup.setValue(!!this.device?.loggedIntoHuntGroup, { emitEvent: false });
119
+ this.remoteDevice.setValue(!!this.device?.remoteDevice, { emitEvent: false });
120
+ this.hotlineDevice.setValue(!!this.device?.hotlineDevice, { emitEvent: false });
121
+ this.ignorePresentationIndicators.setValue(!!this.device?.ignorePresentationIndicators, { emitEvent: false });
122
+ this.callerIdForCallsFromThisPhone.setValue(!!this.device?.useDevicePoolCgpnIngressDN, { emitEvent: false });
123
+ this.remoteNumber.setValue(!!this.device?.remoteDevice, { emitEvent: false });
124
+ });
125
+ }
126
+ getSiteSettings() {
127
+ this.dataPending = true;
128
+ forkJoin({
129
+ softKeys: this.siteSettingsService.getDeviceSoftkeyTemplates(Number(this.siteId)),
130
+ siteDefaults: this.siteSettingsService.getSiteDefaults(Number(this.siteId)),
131
+ })
132
+ .pipe(takeUntil(this.destroy$))
133
+ .pipe(finalize(() => this.dataPending = false))
134
+ .subscribe(({ softKeys }) => this.softKeys = softKeys || []);
135
+ }
136
+ onGoBack() {
137
+ const [path] = this.router.url.split('?');
138
+ const segments = path.split('/').filter(Boolean);
139
+ if (segments[segments.length - 1] === 'device-settings') {
140
+ segments.pop();
141
+ }
142
+ this.router.navigateByUrl('/' + segments.join('/'));
143
+ // this.goBack.emit();
144
+ }
145
+ onCancel() {
146
+ this.onGoBack();
147
+ }
148
+ onSave() {
149
+ if (!this.hasChanges) {
150
+ return;
151
+ }
152
+ const body = this.getChangedDeviceFields();
153
+ if (!body.length) {
154
+ this.hasChanges = false;
155
+ this.onGoBack();
156
+ return;
157
+ }
158
+ this.dataPending = true;
159
+ this.deviceService.putDeviceFields(Number(this.siteId), this.device?.name || '', this.userService.userToken, body)
160
+ .pipe(switchMap(() => this.userService.persistUserCache()), takeUntil(this.destroy$), finalize(() => this.dataPending = false))
161
+ .subscribe(() => {
162
+ this.hasChanges = false;
163
+ this.onGoBack();
164
+ });
165
+ }
166
+ getChangedDeviceFields() {
167
+ const fieldsMap = [
168
+ [this.plarService, 'plarService', !!this.device?.plarService],
169
+ [this.description, 'description', this.device?.description || ''],
170
+ [this.softkeyTemplate, 'softkeyTemplate', this.device?.softkeyTemplate || ''],
171
+ [this.devicePool, 'devicePoolName', this.device?.devicePoolName || ''],
172
+ [this.deviceCss, 'callingSearchSpaceName', this.device?.callingSearchSpaceName || ''],
173
+ [this.enableExtensionMobility, 'enabledExtensionMobility', !!this.device?.enabledExtensionMobility],
174
+ [this.loggedIntoHuntGroup, 'loggedIntoHuntGroup', !!this.device?.loggedIntoHuntGroup],
175
+ [this.remoteDevice, 'remoteDevice', !!this.device?.remoteDevice],
176
+ [this.ignorePresentationIndicators, 'ignorePresentationIndicators', !!this.device?.ignorePresentationIndicators],
177
+ [this.hotlineDevice, 'hotlineDevice', !!this.device?.hotlineDevice],
178
+ [this.callerIdForCallsFromThisPhone, 'useDevicePoolCgpnIngressDN', !!this.device?.useDevicePoolCgpnIngressDN],
179
+ ];
180
+ return fieldsMap
181
+ .filter(([control, , originalValue]) => control.value !== originalValue)
182
+ .map(([control, field]) => `device.${field}=${control.value}`);
183
+ }
184
+ ngOnDestroy() {
185
+ this.destroy$.next();
186
+ this.destroy$.complete();
187
+ }
188
+ }
189
+ DeviceSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceSettingsComponent, deps: [{ token: i1.UserService }, { token: i2.APIService }, { token: i3.DeviceService }, { token: i4.SiteSettingsService }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component });
190
+ DeviceSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DeviceSettingsComponent, selector: "app-device-settings", inputs: { token: "token", host: "host", siteId: "siteId", userId: "userId", deviceName: "deviceName" }, outputs: { goBack: "goBack" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"device-settings\">\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Device Settings</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.name || 'N/A' }}</span>\r\n <span class=\"extra-info\">Name</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.model || 'N/A' }}</span>\r\n <span class=\"extra-info\">Type</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.description || 'N/A' }}</span>\r\n <span class=\"extra-info\">Device description</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ lines }}</span>\r\n <span class=\"extra-info\">Line</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row flex-column\" style=\"gap: 0.5rem;\">\r\n <span class=\"text-description\">PLAR service</span>\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"plarService\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device info</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Registration status</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.form?.get('registrationStatus')?.value || 'Unknown' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">IP Address</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.ipAddress || 'None' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Description</div>\r\n <input class=\"plain-input\" [formControl]=\"description\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Protocol</div>\r\n <div class=\"input-holder__plain-value text-description\">SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Softkey template</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"cluster\" [formControl]=\"softkeyTemplate\">\r\n <option *ngFor=\"let cluster of softKeys\" [value]=\"cluster\">{{ cluster }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Button template</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard 8851 SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Location</div>\r\n <div class=\"input-holder__plain-value text-description\">Paris_ios</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device pool</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"devicePool\" [formControl]=\"devicePool\">\r\n <option *ngFor=\"let pool of devicePools\" [value]=\"pool\">{{ pool }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device CSS</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"deviceCss\" [formControl]=\"deviceCss\">\r\n <option *ngFor=\"let css of cssOptions\" [value]=\"css\">{{ css }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"input-holder\">\r\n <div class=\"input-holder__name\">Firmware version</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.softwareVersion || 'Unknown' }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Media Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Media Resource Group List</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">AAR Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">AAR Calling Search Space</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">AAR Group</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Additional Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Common Phone Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard Common Phone Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Enable Extension Mobility</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"enableExtensionMobility\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Privacy</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Mobility user ID</div>\r\n <div class=\"input-holder__plain-value text-description\">Adam.Allen</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Geolocation</div>\r\n <div class=\"input-holder__plain-value text-description\">&nbsp;</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Logged Into Hunt Group</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"loggedIntoHuntGroup\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Remote Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Phone Security Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Cisco Dual Mode for iPhone - Standard SIP Non-Secure Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">China</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Built In Bridge</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device Mobility Mode</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Use Trusted Relay Point</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line for Voice Message</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ignore Presentation Indicators( internal calls only )</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"ignorePresentationIndicators\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Hot line Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"hotlineDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Number Presentation Transformation</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">\r\n Caller ID For Calls From This Phone\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the caller ID is presented for calls placed from this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"callerIdForCallsFromThisPhone\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">\r\n Remote Number\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the remote number is presented for this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteNumber\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"settings-footer\">\r\n <div class=\"settings-footer__actions\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.device-settings{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.device-settings .panel-body{flex:1;padding:2rem 1.5rem;display:flex;flex-direction:column;gap:3rem}.device-settings .panel-body .card{width:50rem;margin:0 auto;display:flex;flex-direction:column;padding:1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0;font-family:Poppins,Poppins,sans-serif;gap:1.5rem;flex:1}.device-settings .panel-body .card.vertical-card{flex-direction:row}.device-settings .panel-body .card.vertical-card .main-content{gap:0}.device-settings .panel-body .card.vertical-card .main-content .mat-divider{border-top-color:#0003!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder{min-height:2rem;box-sizing:content-box;display:flex;gap:3.25rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top{padding:.75rem 0 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-bottom{padding:0 0 .75rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top-bottom{padding:.75rem 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__name{max-width:150px;width:150px;flex-shrink:0;color:#000000f2;font-size:.875rem;font-weight:400;white-space:normal;overflow-wrap:break-word}.device-settings .panel-body .card.vertical-card .main-content .input-holder input{width:200px;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:8px;font-family:inherit;font-size:.875rem;font-weight:400;color:#000000f2}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:focus{display:flex;align-items:center;color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap{position:relative;display:flex;align-items:center}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select{width:200px;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 12px;box-sizing:content-box}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{outline:none;border-color:#0006}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.device-settings .panel-body .card .header{display:flex;align-items:center;justify-content:space-between;align-items:start;width:180px}.device-settings .panel-body .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif;color:#000000f2}.device-settings .panel-body .card .main-content{display:flex;flex-direction:column;min-width:0;gap:1.5rem;flex:1}.device-settings .panel-body .card .main-content .detail-row{display:flex;flex:1;min-width:0;gap:2rem}.device-settings .panel-body .card .main-content .detail-row .side{width:200px;display:flex;flex-direction:column;flex:1;gap:.25rem}.device-settings .panel-body .card .main-content .detail-row .side .main-value{font-weight:400;font-size:.875rem;color:#000000f2}.device-settings .panel-body .card .main-content .detail-row .side .extra-info{font-weight:400;font-size:.75rem;color:#333}.device-settings .panel-body .card .main-content .input-holder{display:grid;grid-template-columns:45% 55%;align-items:center}.device-settings .panel-body .card .main-content .input-holder__name{font-weight:400;font-size:.875rem}.device-settings .panel-body .card .main-content .input-holder__input .mat-form-field{width:100%;max-width:16rem}.device-settings .panel-body .card .main-content .input-holder__input .plain-input{width:100%;max-width:16rem;font-size:.875rem;padding:.5rem 0;border:none;border-bottom:1px solid rgba(0,0,0,.95);background:transparent;outline:none}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem;vertical-align:middle;margin-left:.25rem}.settings-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.settings-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:50rem;margin:0 auto}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.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: i7.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.AppLoaderComponent, selector: "app-loader" }] });
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceSettingsComponent, decorators: [{
192
+ type: Component,
193
+ args: [{ selector: 'app-device-settings', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"device-settings\">\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Device Settings</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.name || 'N/A' }}</span>\r\n <span class=\"extra-info\">Name</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.model || 'N/A' }}</span>\r\n <span class=\"extra-info\">Type</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.description || 'N/A' }}</span>\r\n <span class=\"extra-info\">Device description</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ lines }}</span>\r\n <span class=\"extra-info\">Line</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row flex-column\" style=\"gap: 0.5rem;\">\r\n <span class=\"text-description\">PLAR service</span>\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"plarService\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device info</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Registration status</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.form?.get('registrationStatus')?.value || 'Unknown' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">IP Address</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.ipAddress || 'None' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Description</div>\r\n <input class=\"plain-input\" [formControl]=\"description\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Protocol</div>\r\n <div class=\"input-holder__plain-value text-description\">SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Softkey template</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"cluster\" [formControl]=\"softkeyTemplate\">\r\n <option *ngFor=\"let cluster of softKeys\" [value]=\"cluster\">{{ cluster }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Button template</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard 8851 SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Location</div>\r\n <div class=\"input-holder__plain-value text-description\">Paris_ios</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device pool</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"devicePool\" [formControl]=\"devicePool\">\r\n <option *ngFor=\"let pool of devicePools\" [value]=\"pool\">{{ pool }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device CSS</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"deviceCss\" [formControl]=\"deviceCss\">\r\n <option *ngFor=\"let css of cssOptions\" [value]=\"css\">{{ css }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"input-holder\">\r\n <div class=\"input-holder__name\">Firmware version</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.softwareVersion || 'Unknown' }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Media Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Media Resource Group List</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">AAR Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">AAR Calling Search Space</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">AAR Group</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Additional Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Common Phone Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard Common Phone Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Enable Extension Mobility</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"enableExtensionMobility\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Privacy</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Mobility user ID</div>\r\n <div class=\"input-holder__plain-value text-description\">Adam.Allen</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Geolocation</div>\r\n <div class=\"input-holder__plain-value text-description\">&nbsp;</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Logged Into Hunt Group</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"loggedIntoHuntGroup\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Remote Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Phone Security Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Cisco Dual Mode for iPhone - Standard SIP Non-Secure Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">China</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Built In Bridge</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device Mobility Mode</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Use Trusted Relay Point</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line for Voice Message</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ignore Presentation Indicators( internal calls only )</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"ignorePresentationIndicators\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Hot line Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"hotlineDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Number Presentation Transformation</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">\r\n Caller ID For Calls From This Phone\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the caller ID is presented for calls placed from this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"callerIdForCallsFromThisPhone\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">\r\n Remote Number\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the remote number is presented for this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteNumber\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"settings-footer\">\r\n <div class=\"settings-footer__actions\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.device-settings{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.device-settings .panel-body{flex:1;padding:2rem 1.5rem;display:flex;flex-direction:column;gap:3rem}.device-settings .panel-body .card{width:50rem;margin:0 auto;display:flex;flex-direction:column;padding:1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0;font-family:Poppins,Poppins,sans-serif;gap:1.5rem;flex:1}.device-settings .panel-body .card.vertical-card{flex-direction:row}.device-settings .panel-body .card.vertical-card .main-content{gap:0}.device-settings .panel-body .card.vertical-card .main-content .mat-divider{border-top-color:#0003!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder{min-height:2rem;box-sizing:content-box;display:flex;gap:3.25rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top{padding:.75rem 0 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-bottom{padding:0 0 .75rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top-bottom{padding:.75rem 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__name{max-width:150px;width:150px;flex-shrink:0;color:#000000f2;font-size:.875rem;font-weight:400;white-space:normal;overflow-wrap:break-word}.device-settings .panel-body .card.vertical-card .main-content .input-holder input{width:200px;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:8px;font-family:inherit;font-size:.875rem;font-weight:400;color:#000000f2}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:focus{display:flex;align-items:center;color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap{position:relative;display:flex;align-items:center}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select{width:200px;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 12px;box-sizing:content-box}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{outline:none;border-color:#0006}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.device-settings .panel-body .card .header{display:flex;align-items:center;justify-content:space-between;align-items:start;width:180px}.device-settings .panel-body .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif;color:#000000f2}.device-settings .panel-body .card .main-content{display:flex;flex-direction:column;min-width:0;gap:1.5rem;flex:1}.device-settings .panel-body .card .main-content .detail-row{display:flex;flex:1;min-width:0;gap:2rem}.device-settings .panel-body .card .main-content .detail-row .side{width:200px;display:flex;flex-direction:column;flex:1;gap:.25rem}.device-settings .panel-body .card .main-content .detail-row .side .main-value{font-weight:400;font-size:.875rem;color:#000000f2}.device-settings .panel-body .card .main-content .detail-row .side .extra-info{font-weight:400;font-size:.75rem;color:#333}.device-settings .panel-body .card .main-content .input-holder{display:grid;grid-template-columns:45% 55%;align-items:center}.device-settings .panel-body .card .main-content .input-holder__name{font-weight:400;font-size:.875rem}.device-settings .panel-body .card .main-content .input-holder__input .mat-form-field{width:100%;max-width:16rem}.device-settings .panel-body .card .main-content .input-holder__input .plain-input{width:100%;max-width:16rem;font-size:.875rem;padding:.5rem 0;border:none;border-bottom:1px solid rgba(0,0,0,.95);background:transparent;outline:none}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem;vertical-align:middle;margin-left:.25rem}.settings-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.settings-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:50rem;margin:0 auto}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"] }]
194
+ }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.APIService }, { type: i3.DeviceService }, { type: i4.SiteSettingsService }, { type: i5.Router }]; }, propDecorators: { goBack: [{
195
+ type: Output
196
+ }], token: [{
197
+ type: Input
198
+ }], host: [{
199
+ type: Input
200
+ }], siteId: [{
201
+ type: Input
202
+ }], userId: [{
203
+ type: Input
204
+ }], deviceName: [{
205
+ type: Input
206
+ }] } });
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL2RldmljZS1zZXR0aW5ncy9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLXNldHRpbmdzL2RldmljZS1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFXekUsTUFBTSxPQUFPLHVCQUF1QjtJQTJDbEMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3RILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDO0lBQzFE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LENBQUMsT0FBTyxFQUFFLEFBQUQsRUFBRyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUM7YUFDdkUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O3FIQTFNVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixrTUNkcEMsNjdjQXdTQTs0RkQxUmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjs4TUFLckIsTUFBTTtzQkFBZixNQUFNO2dCQUNFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgZm9ya0pvaW4sIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGV2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RldmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2l0ZVNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpdGUtc2V0dGluZ3Muc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZXZpY2Utc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RldmljZS1zZXR0aW5ncy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGV2aWNlU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIGdvQmFjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNpdGVJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSB1c2VySWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGV2aWNlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIGRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgcHVibGljIGRldmljZTogYW55ID0gbnVsbDtcclxuICBwdWJsaWMgc29mdEtleXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBwbGFyU2VydmljZSA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc29mdGtleVRlbXBsYXRlID0gbmV3IEZvcm1Db250cm9sKCdTdGFuZGFyZCB1c2VyJyk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRldmljZVBvb2wgPSBuZXcgRm9ybUNvbnRyb2woJ1BhcmlzX3JlZ3VsYXJfRFBfdGVzdCcpO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZXZpY2VDc3MgPSBuZXcgRm9ybUNvbnRyb2woJ1BhcmlzX25hdGlvbmFsX0NTUycpO1xyXG4gIHB1YmxpYyByZWFkb25seSBlbmFibGVFeHRlbnNpb25Nb2JpbGl0eSA9IG5ldyBGb3JtQ29udHJvbCh0cnVlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VkSW50b0h1bnRHcm91cCA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJlbW90ZURldmljZSA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMgPSBuZXcgRm9ybUNvbnRyb2woZmFsc2UpO1xyXG4gIHB1YmxpYyByZWFkb25seSBob3RsaW5lRGV2aWNlID0gbmV3IEZvcm1Db250cm9sKGZhbHNlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUgPSBuZXcgRm9ybUNvbnRyb2wodHJ1ZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJlbW90ZU51bWJlciA9IG5ldyBGb3JtQ29udHJvbCh0cnVlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQ29udHJvbHM6IEZvcm1Db250cm9sPGFueT5bXSA9IFtcclxuICAgIHRoaXMucGxhclNlcnZpY2UsXHJcbiAgICB0aGlzLmRlc2NyaXB0aW9uLFxyXG4gICAgdGhpcy5zb2Z0a2V5VGVtcGxhdGUsXHJcbiAgICB0aGlzLmRldmljZVBvb2wsXHJcbiAgICB0aGlzLmRldmljZUNzcyxcclxuICAgIHRoaXMuZW5hYmxlRXh0ZW5zaW9uTW9iaWxpdHksXHJcbiAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAsXHJcbiAgICB0aGlzLnJlbW90ZURldmljZSxcclxuICAgIHRoaXMuaWdub3JlUHJlc2VudGF0aW9uSW5kaWNhdG9ycyxcclxuICAgIHRoaXMuaG90bGluZURldmljZSxcclxuICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUsXHJcbiAgICB0aGlzLnJlbW90ZU51bWJlcixcclxuICBdO1xyXG5cclxuICBwdWJsaWMgaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG5cclxuICBnZXQgbGluZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRldmljZT8ubGluZXM/Lm1hcCgobGluZTogYW55KSA9PiBsaW5lPy5leHRlbnNpb24gfHwgbGluZT8ubnVtYmVyKS5maWx0ZXIoQm9vbGVhbikuam9pbignIHwgJykgfHwgJ04vQSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZGV2aWNlUG9vbHMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l0ZVNldHRpbmdzU2VydmljZS5kZXZpY2VQb29scztcclxuICB9XHJcblxyXG4gIGdldCBjc3NPcHRpb25zKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuY2FsbGluZ1NlYXJjaFNwYWNlVHlwZXM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRldmljZVNlcnZpY2U6IERldmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNpdGVTZXR0aW5nc1NlcnZpY2U6IFNpdGVTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmFwaVVybCA9IHRoaXMuaG9zdDtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFzQ2hhbmdlcyA9IHRydWUpKTtcclxuXHJcbiAgICBpZiAodGhpcy51c2VyU2VydmljZS51c2VyRGV2aWNlKSB7XHJcbiAgICAgIHRoaXMuZGV2aWNlID0gdGhpcy51c2VyU2VydmljZS51c2VyRGV2aWNlO1xyXG4gICAgICB0aGlzLnBsYXJTZXJ2aWNlLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmRlc2NyaXB0aW9uLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXNjcmlwdGlvbiB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5zb2Z0a2V5VGVtcGxhdGUuc2V0VmFsdWUodGhpcy5kZXZpY2U/LnNvZnRrZXlUZW1wbGF0ZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5kZXZpY2VQb29sLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXZpY2VQb29sTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5kZXZpY2VDc3Muc2V0VmFsdWUodGhpcy5kZXZpY2U/LmNhbGxpbmdTZWFyY2hTcGFjZU5hbWUgfHwgJycsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuZW5hYmxlRXh0ZW5zaW9uTW9iaWxpdHkuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uZW5hYmxlZEV4dGVuc2lvbk1vYmlsaXR5LCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cCwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5yZW1vdGVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ucmVtb3RlRGV2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmhvdGxpbmVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uaG90bGluZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5pZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/Lmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUuc2V0VmFsdWUoISF0aGlzLmRldmljZT8udXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMucmVtb3RlTnVtYmVyLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5nZXRTaXRlU2V0dGluZ3MoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBkZXZpY2VUeXBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RldmljZVR5cGUnKTtcclxuICAgIGxldCByZXF1ZXN0O1xyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpc1dlYmV4JykgPT09ICd0cnVlJykge1xyXG4gICAgICBjb25zdCBjdXN0b21lcklkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1c3RvbWVySWQnKTtcclxuICAgICAgY29uc3Qgd2ViZXhJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJleFVVSUQnKTtcclxuICAgICAgcmVxdWVzdCA9IHRoaXMudXNlclNlcnZpY2UuZmV0Y2hXZWJleFVzZXJEZXZpY2UoY3VzdG9tZXJJZCEsIHdlYmV4SWQhLCBkZXZpY2VUeXBlISk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXF1ZXN0ID0gdGhpcy51c2VyU2VydmljZS5mZXRjaERJVXNlckRldmljZShOdW1iZXIodGhpcy5zaXRlSWQpLCB0aGlzLnVzZXJJZCwgZGV2aWNlVHlwZSEpO1xyXG4gICAgfVxyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBkZXZpY2U6IHJlcXVlc3QsXHJcbiAgICAgIHNvZnRLZXlzOiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0RGV2aWNlU29mdGtleVRlbXBsYXRlcyhOdW1iZXIodGhpcy5zaXRlSWQpKSxcclxuICAgICAgc2l0ZURlZmF1bHRzOiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0U2l0ZURlZmF1bHRzKE51bWJlcih0aGlzLnNpdGVJZCkpLFxyXG4gICAgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2UpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh7ZGV2aWNlLCBzb2Z0S2V5c30pID0+IHtcclxuICAgICAgICB0aGlzLmRldmljZSA9IGRldmljZTtcclxuICAgICAgICB0aGlzLnNvZnRLZXlzID0gKHNvZnRLZXlzIGFzIHN0cmluZ1tdKSB8fCBbXTtcclxuICAgICAgICB0aGlzLnBsYXJTZXJ2aWNlLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24uc2V0VmFsdWUodGhpcy5kZXZpY2U/LmRlc2NyaXB0aW9uIHx8ICcnLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgIHRoaXMuc29mdGtleVRlbXBsYXRlLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5zb2Z0a2V5VGVtcGxhdGUgfHwgJycsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgdGhpcy5kZXZpY2VQb29sLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXZpY2VQb29sTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmRldmljZUNzcy5zZXRWYWx1ZSh0aGlzLmRldmljZT8uY2FsbGluZ1NlYXJjaFNwYWNlTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmVuYWJsZUV4dGVuc2lvbk1vYmlsaXR5LnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LmVuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cCwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5yZW1vdGVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ucmVtb3RlRGV2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmhvdGxpbmVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uaG90bGluZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5pZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/Lmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUuc2V0VmFsdWUoISF0aGlzLmRldmljZT8udXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMucmVtb3RlTnVtYmVyLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNpdGVTZXR0aW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVBlbmRpbmcgPSB0cnVlO1xyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBzb2Z0S2V5czogdGhpcy5zaXRlU2V0dGluZ3NTZXJ2aWNlLmdldERldmljZVNvZnRrZXlUZW1wbGF0ZXMoTnVtYmVyKHRoaXMuc2l0ZUlkKSksXHJcbiAgICAgIHNpdGVEZWZhdWx0czogdGhpcy5zaXRlU2V0dGluZ3NTZXJ2aWNlLmdldFNpdGVEZWZhdWx0cyhOdW1iZXIodGhpcy5zaXRlSWQpKSxcclxuICAgIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSlcclxuICAgICAgLnN1YnNjcmliZSgoe3NvZnRLZXlzfSkgPT4gdGhpcy5zb2Z0S2V5cyA9IChzb2Z0S2V5cyBhcyBzdHJpbmdbXSkgfHwgW10pO1xyXG4gIH1cclxuXHJcbiAgb25Hb0JhY2soKTogdm9pZCB7XHJcbiAgICBjb25zdCBbcGF0aF0gPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKTtcclxuICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcclxuICAgIGlmIChzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXSA9PT0gJ2RldmljZS1zZXR0aW5ncycpIHtcclxuICAgICAgc2VnbWVudHMucG9wKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyArIHNlZ21lbnRzLmpvaW4oJy8nKSk7XHJcbiAgICAvLyB0aGlzLmdvQmFjay5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMub25Hb0JhY2soKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNDaGFuZ2VzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5nZXRDaGFuZ2VkRGV2aWNlRmllbGRzKCk7XHJcbiAgICBpZiAoIWJvZHkubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9uR29CYWNrKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZGV2aWNlU2VydmljZS5wdXREZXZpY2VGaWVsZHMoTnVtYmVyKHRoaXMuc2l0ZUlkKSwgdGhpcy5kZXZpY2U/Lm5hbWUgfHwgJycsIHRoaXMudXNlclNlcnZpY2UudXNlclRva2VuLCBib2R5KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS5wZXJzaXN0VXNlckNhY2hlKCkpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2UpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Hb0JhY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoYW5nZWREZXZpY2VGaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZmllbGRzTWFwOiBBcnJheTxbRm9ybUNvbnRyb2w8YW55Piwgc3RyaW5nLCBhbnldPiA9IFtcclxuICAgICAgW3RoaXMucGxhclNlcnZpY2UsICdwbGFyU2VydmljZScsICEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlXSxcclxuICAgICAgW3RoaXMuZGVzY3JpcHRpb24sICdkZXNjcmlwdGlvbicsIHRoaXMuZGV2aWNlPy5kZXNjcmlwdGlvbiB8fCAnJ10sXHJcbiAgICAgIFt0aGlzLnNvZnRrZXlUZW1wbGF0ZSwgJ3NvZnRrZXlUZW1wbGF0ZScsIHRoaXMuZGV2aWNlPy5zb2Z0a2V5VGVtcGxhdGUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5kZXZpY2VQb29sLCAnZGV2aWNlUG9vbE5hbWUnLCB0aGlzLmRldmljZT8uZGV2aWNlUG9vbE5hbWUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5kZXZpY2VDc3MsICdjYWxsaW5nU2VhcmNoU3BhY2VOYW1lJywgdGhpcy5kZXZpY2U/LmNhbGxpbmdTZWFyY2hTcGFjZU5hbWUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5lbmFibGVFeHRlbnNpb25Nb2JpbGl0eSwgJ2VuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eScsICEhdGhpcy5kZXZpY2U/LmVuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eV0sXHJcbiAgICAgIFt0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAsICdsb2dnZWRJbnRvSHVudEdyb3VwJywgISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cF0sXHJcbiAgICAgIFt0aGlzLnJlbW90ZURldmljZSwgJ3JlbW90ZURldmljZScsICEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZV0sXHJcbiAgICAgIFt0aGlzLmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsICdpZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzJywgISF0aGlzLmRldmljZT8uaWdub3JlUHJlc2VudGF0aW9uSW5kaWNhdG9yc10sXHJcbiAgICAgIFt0aGlzLmhvdGxpbmVEZXZpY2UsICdob3RsaW5lRGV2aWNlJywgISF0aGlzLmRldmljZT8uaG90bGluZURldmljZV0sXHJcbiAgICAgIFt0aGlzLmNhbGxlcklkRm9yQ2FsbHNGcm9tVGhpc1Bob25lLCAndXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4nLCAhIXRoaXMuZGV2aWNlPy51c2VEZXZpY2VQb29sQ2dwbkluZ3Jlc3NETl0sXHJcbiAgICBdO1xyXG5cclxuICAgIHJldHVybiBmaWVsZHNNYXBcclxuICAgICAgLmZpbHRlcigoW2NvbnRyb2wsICwgb3JpZ2luYWxWYWx1ZV0pID0+IGNvbnRyb2wudmFsdWUgIT09IG9yaWdpbmFsVmFsdWUpXHJcbiAgICAgIC5tYXAoKFtjb250cm9sLCBmaWVsZF0pID0+IGBkZXZpY2UuJHtmaWVsZH09JHtjb250cm9sLnZhbHVlfWApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1sb2FkZXIgKm5nSWY9XCJkYXRhUGVuZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuPGRpdiBjbGFzcz1cImdvLWJhY2stYm94XCIgKGNsaWNrKT1cIm9uR29CYWNrKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiZ28tYmFjay1ib3gtY29udGFpbmVyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImFwcC1pY29uIGljb24td2ViZXgtbGVmdC1hcnJvd1wiPjwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZ28tYmFjay10aXRsZVwiPkRldmljZSBHZW5lcmFsIEluZm88L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImRldmljZS1zZXR0aW5nc1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkZXJcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwicGFuZWwtaGVhZGVyX190aXRsZVwiPkRldmljZSBTZXR0aW5nczwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPkRldGFpbHM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGRldmljZT8ubmFtZSB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+TmFtZTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLXZhbHVlXCI+e3sgZGV2aWNlPy5tb2RlbCB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+VHlwZTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLXZhbHVlXCI+e3sgZGV2aWNlPy5kZXNjcmlwdGlvbiB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+RGV2aWNlIGRlc2NyaXB0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGxpbmVzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4dHJhLWluZm9cIj5MaW5lPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3cgZmxleC1jb2x1bW5cIiBzdHlsZT1cImdhcDogMC41cmVtO1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+UExBUiBzZXJ2aWNlPC9zcGFuPlxyXG4gICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cInBsYXJTZXJ2aWNlXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmQgdmVydGljYWwtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPkRldmljZSBpbmZvPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlJlZ2lzdHJhdGlvbiBzdGF0dXM8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj57eyBkZXZpY2U/LmZvcm0/LmdldCgncmVnaXN0cmF0aW9uU3RhdHVzJyk/LnZhbHVlIHx8ICdVbmtub3duJyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5JUCBBZGRyZXNzPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+e3sgZGV2aWNlPy5pcEFkZHJlc3MgfHwgJ05vbmUnIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkRlc2NyaXB0aW9uPC9kaXY+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJwbGFpbi1pbnB1dFwiIFtmb3JtQ29udHJvbF09XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Qcm90b2NvbDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPlNJUDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Tb2Z0a2V5IHRlbXBsYXRlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBuYW1lPVwiY2x1c3RlclwiIFtmb3JtQ29udHJvbF09XCJzb2Z0a2V5VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjbHVzdGVyIG9mIHNvZnRLZXlzXCIgW3ZhbHVlXT1cImNsdXN0ZXJcIj57eyBjbHVzdGVyIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QnV0dG9uIHRlbXBsYXRlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+U3RhbmRhcmQgODg1MSBTSVA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TG9jYXRpb248L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5QYXJpc19pb3M8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RGV2aWNlIHBvb2w8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdFwiIG5hbWU9XCJkZXZpY2VQb29sXCIgW2Zvcm1Db250cm9sXT1cImRldmljZVBvb2xcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBwb29sIG9mIGRldmljZVBvb2xzXCIgW3ZhbHVlXT1cInBvb2xcIj57eyBwb29sIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RGV2aWNlIENTUzwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgbmFtZT1cImRldmljZUNzc1wiIFtmb3JtQ29udHJvbF09XCJkZXZpY2VDc3NcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjc3Mgb2YgY3NzT3B0aW9uc1wiIFt2YWx1ZV09XCJjc3NcIj57eyBjc3MgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2Fycm93LWRvd24tYm9sZC5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5GaXJtd2FyZSB2ZXJzaW9uPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+e3sgZGV2aWNlPy5zb2Z0d2FyZVZlcnNpb24gfHwgJ1Vua25vd24nIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZCB2ZXJ0aWNhbC1jYXJkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+TWVkaWEgU2V0dGluZ3M8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TWVkaWEgUmVzb3VyY2UgR3JvdXAgTGlzdDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPk5vbmU8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TmV0d29yayBIb2xkIE1PSCBBdWRpbyBTb3VyY2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5Ob25lPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlVzZXIgSG9sZCBNT0ggQXVkaW8gU291cmNlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+Tm9uZTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmQgdmVydGljYWwtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPkFBUiBTZXR0aW5nczwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5BQVIgQ2FsbGluZyBTZWFyY2ggU3BhY2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5Ob25lPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkFBUiBHcm91cDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPk5vbmU8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjYXJkIHZlcnRpY2FsLWNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5EZXZpY2UgQWRkaXRpb25hbCBJbmZvcm1hdGlvbjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Db21tb24gUGhvbmUgUHJvZmlsZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPlN0YW5kYXJkIENvbW1vbiBQaG9uZSBQcm9maWxlPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlVzZXIgTG9jYWxlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+Tm9uZTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5FbmFibGUgRXh0ZW5zaW9uIE1vYmlsaXR5PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwiZW5hYmxlRXh0ZW5zaW9uTW9iaWxpdHlcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+UHJpdmFjeTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkRlZmF1bHQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TW9iaWxpdHkgdXNlciBJRDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkFkYW0uQWxsZW48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QWx3YXlzIFVzZSBQcmltZSBMaW5lPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+RGVmYXVsdDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5HZW9sb2NhdGlvbjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPiZuYnNwOzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Mb2dnZWQgSW50byBIdW50IEdyb3VwPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwibG9nZ2VkSW50b0h1bnRHcm91cFwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5SZW1vdGUgRGV2aWNlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwicmVtb3RlRGV2aWNlXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlBob25lIFNlY3VyaXR5IFByb2ZpbGU8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5DaXNjbyBEdWFsIE1vZGUgZm9yIGlQaG9uZSAtIFN0YW5kYXJkIFNJUCBOb24tU2VjdXJlIFByb2ZpbGU8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TmV0d29yayBMb2NhbGU8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5DaGluYTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5CdWlsdCBJbiBCcmlkZ2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5EZWZhdWx0PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkRldmljZSBNb2JpbGl0eSBNb2RlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+RGVmYXVsdDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Vc2UgVHJ1c3RlZCBSZWxheSBQb2ludDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkRlZmF1bHQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QWx3YXlzIFVzZSBQcmltZSBMaW5lIGZvciBWb2ljZSBNZXNzYWdlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+RGVmYXVsdDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5JZ25vcmUgUHJlc2VudGF0aW9uIEluZGljYXRvcnMoIGludGVybmFsIGNhbGxzIG9ubHkgKTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9faW5wdXRcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cImlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnNcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3BcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Ib3QgbGluZSBEZXZpY2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX2lucHV0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGNsYXNzPVwiY3VzdG9tLXRvZ2dsZVwiIFtmb3JtQ29udHJvbF09XCJob3RsaW5lRGV2aWNlXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZCB2ZXJ0aWNhbC1jYXJkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+TnVtYmVyIFByZXNlbnRhdGlvbiBUcmFuc2Zvcm1hdGlvbjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5cclxuICAgICAgICAgICAgQ2FsbGVyIElEIEZvciBDYWxscyBGcm9tIFRoaXMgUGhvbmVcclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGluZm8taWNvbiByZW0xXCIgW21hdFRvb2x0aXBdPVwiJ0NvbnRyb2xzIGhvdyB0aGUgY2FsbGVyIElEIGlzIHByZXNlbnRlZCBmb3IgY2FsbHMgcGxhY2VkIGZyb20gdGhpcyBwaG9uZS4nXCI+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwiY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmVcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3BcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5cclxuICAgICAgICAgICAgUmVtb3RlIE51bWJlclxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb24gaW5mby1pY29uIHJlbTFcIiBbbWF0VG9vbHRpcF09XCInQ29udHJvbHMgaG93IHRoZSByZW1vdGUgbnVtYmVyIGlzIHByZXNlbnRlZCBmb3IgdGhpcyBwaG9uZS4nXCI+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwicmVtb3RlTnVtYmVyXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtZm9vdGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtZm9vdGVyX19hY3Rpb25zXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLW91dGxpbmVcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1maWxsZWRcIiBbZGlzYWJsZWRdPVwiIWhhc0NoYW5nZXNcIiAoY2xpY2spPVwib25TYXZlKClcIj5TYXZlPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -8,4 +8,4 @@ export const environment = {
8
8
  cashArrayLength: 10000,
9
9
  matomoUrl: 'http://192.168.0.136/matomo/',
10
10
  };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1kZXZpY2UtbWFuYWdlL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLG1DQUFtQztJQUNuQyxNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLHFCQUFxQixFQUFFLEtBQUs7SUFDNUIseUJBQXlCLEVBQUUsS0FBSztJQUNoQyxjQUFjLEVBQUUsTUFBTTtJQUN0QixlQUFlLEVBQUUsS0FBSztJQUN0QixTQUFTLEVBQUUsOEJBQThCO0NBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW52aXJvbm1lbnQgPSB7XG4gIHByb2R1Y3Rpb246IGZhbHNlLFxuICAvLyBhcGlVcmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAnLFxuICBhcGlVcmw6ICdodHRwOi8vMTkyLjE2OC4wLjE5MTo4MDgwJyxcbiAgbm90aWZpY2F0aW9uc0xpZmV0aW1lOiAzMDAwMCxcbiAgbG9uZ05vdGlmaWNhdGlvbnNMaWZldGltZTogNDUwMDAsXG4gIGNhc2hDbGVhblRpbWVyOiA5MDAwMDAsXG4gIGNhc2hBcnJheUxlbmd0aDogMTAwMDAsXG4gIG1hdG9tb1VybDogJ2h0dHA6Ly8xOTIuMTY4LjAuMTM2L21hdG9tby8nLFxufTtcbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1kZXZpY2UtbWFuYWdlL3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLG1DQUFtQztJQUNuQyxNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLHFCQUFxQixFQUFFLEtBQUs7SUFDNUIseUJBQXlCLEVBQUUsS0FBSztJQUNoQyxjQUFjLEVBQUUsTUFBTTtJQUN0QixlQUFlLEVBQUUsS0FBSztJQUN0QixTQUFTLEVBQUUsOEJBQThCO0NBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW52aXJvbm1lbnQgPSB7XHJcbiAgcHJvZHVjdGlvbjogZmFsc2UsXHJcbiAgLy8gYXBpVXJsOiAnaHR0cDovL2xvY2FsaG9zdDo0MjAwJyxcclxuICBhcGlVcmw6ICdodHRwOi8vMTkyLjE2OC4wLjE5MTo4MDgwJyxcclxuICBub3RpZmljYXRpb25zTGlmZXRpbWU6IDMwMDAwLFxyXG4gIGxvbmdOb3RpZmljYXRpb25zTGlmZXRpbWU6IDQ1MDAwLFxyXG4gIGNhc2hDbGVhblRpbWVyOiA5MDAwMDAsXHJcbiAgY2FzaEFycmF5TGVuZ3RoOiAxMDAwMCxcclxuICBtYXRvbW9Vcmw6ICdodHRwOi8vMTkyLjE2OC4wLjEzNi9tYXRvbW8vJyxcclxufTtcclxuIl19
@@ -33,4 +33,4 @@ AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AuthInterceptor, decorators: [{
34
34
  type: Injectable
35
35
  }], ctorParameters: function () { return []; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL2ludGVyc2VwdG9ycy9hdXRoLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUF1RCxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdHLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUczQyxNQUFNLE9BQU8sZUFBZTtJQUMxQjtJQUNBLENBQUM7SUFFRCxTQUFTLENBQ1AsT0FBeUIsRUFDekIsSUFBaUI7UUFFakIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEIsVUFBVSxFQUFFO1lBQ1YsdUNBQXVDO2FBQ3hDO1lBQ0MsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFBO1FBRUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxHQUFHLFlBQVksaUJBQWlCLEVBQUU7Z0JBQ3BDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ3RCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUM3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7cUJBQ3hCO3lCQUFNO3dCQUNMLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDO3FCQUN4QztpQkFDRjthQUNGO1lBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7OzZHQTNCVSxlQUFlO2lIQUFmLGVBQWU7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cEV2ZW50LCBIdHRwUmVxdWVzdCwgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciwgSHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgaW50ZXJjZXB0KFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgLy8gQXV0aG9yaXphdGlvbjogYmFzaWNBdXRoSGVhZGVyU3RyaW5nXG4gICAgICB9XG4gICAgICAsIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgIH0pXG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgIGlmICh3aW5kb3cuaGlzdG9yeS5sZW5ndGggPCAzKSB7XG4gICAgICAgICAgICBlcnIuZXJyb3IubWVzc2FnZSA9ICcnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnIuZXJyb3IubWVzc2FnZSA9ICdTRVNTSU9OX0lOQUNUSVZFJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgfSkpO1xuICB9XG59XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL2ludGVyc2VwdG9ycy9hdXRoLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUF1RCxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdHLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUczQyxNQUFNLE9BQU8sZUFBZTtJQUMxQjtJQUNBLENBQUM7SUFFRCxTQUFTLENBQ1AsT0FBeUIsRUFDekIsSUFBaUI7UUFFakIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEIsVUFBVSxFQUFFO1lBQ1YsdUNBQXVDO2FBQ3hDO1lBQ0MsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFBO1FBRUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxHQUFHLFlBQVksaUJBQWlCLEVBQUU7Z0JBQ3BDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ3RCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUM3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7cUJBQ3hCO3lCQUFNO3dCQUNMLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDO3FCQUN4QztpQkFDRjthQUNGO1lBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7OzZHQTNCVSxlQUFlO2lIQUFmLGVBQWU7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwRXZlbnQsIEh0dHBSZXF1ZXN0LCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLCBIdHRwRXJyb3JSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBpbnRlcmNlcHQoXHJcbiAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgICAvLyBBdXRob3JpemF0aW9uOiBiYXNpY0F1dGhIZWFkZXJTdHJpbmdcclxuICAgICAgfVxyXG4gICAgICAsIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgIGlmICh3aW5kb3cuaGlzdG9yeS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICAgIGVyci5lcnJvci5tZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlcnIuZXJyb3IubWVzc2FnZSA9ICdTRVNTSU9OX0lOQUNUSVZFJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcclxuICAgIH0pKTtcclxuICB9XHJcbn1cclxuIl19
@@ -42,10 +42,10 @@ export class LazyLoadingSelectComponent {
42
42
  }
43
43
  }
44
44
  LazyLoadingSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LazyLoadingSelectComponent, deps: [{ token: i1.NotificationService }, { token: i2.SiteSettingsService }], target: i0.ɵɵFactoryTarget.Component });
45
- LazyLoadingSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: LazyLoadingSelectComponent, selector: "app-lazy-loading-select", inputs: { siteId: "siteId", form: "form", standalone: "standalone", placeholder: "placeholder", controlName: "controlName", optionsToken: "optionsToken", appearance: "appearance", errorCode: "errorCode", errorText: "errorText", default: "default", id: "id" }, outputs: { changeField: "changeField" }, ngImport: i0, template: "<ng-container *ngIf=\"standalone\">\n <mat-form-field appearance=\"outline\">\n <mat-select [formControl]=\"formControl\"\n (openedChange)=\"getOptions()\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onFieldChange(controlName)\"\n [id]=\"id\">\n <mat-option>\n <div class=\"select-search-wrapper\">\n <input\n type=\"text\"\n placeholder=\"Search\"\n class=\"select-search-input\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span class=\"search-icon-inside\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\">\n <path d=\"M13 2.25C7.063 2.25 2.25 7.063 2.25 13S7.063 23.75 13 23.75c2.699 0 5.165-.994 7.053-2.637l8.417 8.417a.75.75 0 1 0 1.06-1.06l-8.417-8.417A10.7 10.7 0 0 0 23.75 13c0-5.937-4.813-10.75-10.75-10.75M3.75 13a9.25 9.25 0 1 1 18.5 0 9.25 9.25 0 0 1-18.5 0\" fill=\"#000\"/>\n </svg>\n </span>\n </div>\n </mat-option>\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\n {{type}}\n </mat-option>\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"70\"\n strokeWidth=\"3\"\n mode=\"indeterminate\"\n *ngIf=\"optionsPending\"></mat-progress-spinner>\n </mat-select>\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n {{errorText}}\n </mat-error>\n </mat-form-field>\n</ng-container>\n\n<!--\nThis duplication is caused by the following bug: https://github.com/angular/components/issues/9411\nWhich doesn't allow projection in mat-form-field\n-->\n\n<ng-container *ngIf=\"!standalone\">\n <mat-select *ngIf=\"form.get(controlName)\"\n [formControl]=\"formControl\"\n (openedChange)=\"getOptions()\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onFieldChange(controlName)\"\n [id]=\"id\"\n >\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\n {{type}}\n </mat-option>\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"optionsPending\"></mat-progress-spinner>\n </mat-select>\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n {{errorText}}\n </mat-error>\n</ng-container>\n", styles: ["mat-form-field{width:300px;max-width:300px}::ng-deep .mat-option{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important;line-height:48px!important;height:48px!important;padding:0 10px!important;text-align:left!important;text-decoration:none!important;position:relative!important;cursor:pointer!important;outline:none!important;display:flex!important;flex-direction:row!important;max-width:100%!important;box-sizing:border-box!important;align-items:center!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}.select-search-wrapper{position:relative;width:100%}.search-icon-inside{position:absolute;left:12px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:2;display:flex;align-items:center}:host{height:35px;width:93%!important;max-width:93%!important;min-width:0!important;height:auto!important;box-sizing:border-box}:host ::ng-deep mat-form-field{width:100%;max-width:100%;height:35px}:host ::ng-deep mat-form-field .mat-form-field-flex .mat-form-field-outline .mat-form-field-outline-start{border:none!important}.select-search-input{width:100%;box-sizing:border-box;padding:7px 14px 7px 38px;margin:10px 0;border:3px solid #ccc;border-radius:.5rem;outline:none;font-size:14px;transition:border-color .2s}.select-search-input:focus{border-color:#1170cf}.field-spinner{margin-top:-30px}::ng-deep .mat-select-arrow{display:none}::ng-deep .mat-select-trigger{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M28.708 9.293a1 1 0 0 0-1.415 0L16 20.586 4.707 9.293a1 1 0 0 0-1.414 1.414l12 12a1 1 0 0 0 1.414 0l12-12a1 1 0 0 0 0-1.414%22%2F%3E%3C%2Fsvg%3E\") no-repeat right 12px center;background-size:16px;padding-right:32px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }] });
45
+ LazyLoadingSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: LazyLoadingSelectComponent, selector: "app-lazy-loading-select", inputs: { siteId: "siteId", form: "form", standalone: "standalone", placeholder: "placeholder", controlName: "controlName", optionsToken: "optionsToken", appearance: "appearance", errorCode: "errorCode", errorText: "errorText", default: "default", id: "id" }, outputs: { changeField: "changeField" }, ngImport: i0, template: "<ng-container *ngIf=\"standalone\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-select [formControl]=\"formControl\"\r\n (openedChange)=\"getOptions()\"\r\n [placeholder]=\"placeholder\"\r\n (selectionChange)=\"onFieldChange(controlName)\"\r\n [id]=\"id\">\r\n <mat-option>\r\n <div class=\"select-search-wrapper\">\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n class=\"select-search-input\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n >\r\n <span class=\"search-icon-inside\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\">\r\n <path d=\"M13 2.25C7.063 2.25 2.25 7.063 2.25 13S7.063 23.75 13 23.75c2.699 0 5.165-.994 7.053-2.637l8.417 8.417a.75.75 0 1 0 1.06-1.06l-8.417-8.417A10.7 10.7 0 0 0 23.75 13c0-5.937-4.813-10.75-10.75-10.75M3.75 13a9.25 9.25 0 1 1 18.5 0 9.25 9.25 0 0 1-18.5 0\" fill=\"#000\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n </mat-option>\r\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\r\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\r\n {{type}}\r\n </mat-option>\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"optionsPending\"></mat-progress-spinner>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\r\n <i class=\"fa fa-exclamation-triangle\"></i>\r\n {{errorText}}\r\n </mat-error>\r\n </mat-form-field>\r\n</ng-container>\r\n\r\n<!--\r\nThis duplication is caused by the following bug: https://github.com/angular/components/issues/9411\r\nWhich doesn't allow projection in mat-form-field\r\n-->\r\n\r\n<ng-container *ngIf=\"!standalone\">\r\n <mat-select *ngIf=\"form.get(controlName)\"\r\n [formControl]=\"formControl\"\r\n (openedChange)=\"getOptions()\"\r\n [placeholder]=\"placeholder\"\r\n (selectionChange)=\"onFieldChange(controlName)\"\r\n [id]=\"id\"\r\n >\r\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\r\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\r\n {{type}}\r\n </mat-option>\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"optionsPending\"></mat-progress-spinner>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\r\n <i class=\"fa fa-exclamation-triangle\"></i>\r\n {{errorText}}\r\n </mat-error>\r\n</ng-container>\r\n", styles: ["mat-form-field{width:300px;max-width:300px}::ng-deep .mat-option{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important;line-height:48px!important;height:48px!important;padding:0 10px!important;text-align:left!important;text-decoration:none!important;position:relative!important;cursor:pointer!important;outline:none!important;display:flex!important;flex-direction:row!important;max-width:100%!important;box-sizing:border-box!important;align-items:center!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}.select-search-wrapper{position:relative;width:100%}.search-icon-inside{position:absolute;left:12px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:2;display:flex;align-items:center}:host{height:35px;width:93%!important;max-width:93%!important;min-width:0!important;height:auto!important;box-sizing:border-box}:host ::ng-deep mat-form-field{width:100%;max-width:100%;height:35px}:host ::ng-deep mat-form-field .mat-form-field-flex .mat-form-field-outline .mat-form-field-outline-start{border:none!important}.select-search-input{width:100%;box-sizing:border-box;padding:7px 14px 7px 38px;margin:10px 0;border:3px solid #ccc;border-radius:.5rem;outline:none;font-size:14px;transition:border-color .2s}.select-search-input:focus{border-color:#1170cf}.field-spinner{margin-top:-30px}::ng-deep .mat-select-arrow{display:none}::ng-deep .mat-select-trigger{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M28.708 9.293a1 1 0 0 0-1.415 0L16 20.586 4.707 9.293a1 1 0 0 0-1.414 1.414l12 12a1 1 0 0 0 1.414 0l12-12a1 1 0 0 0 0-1.414%22%2F%3E%3C%2Fsvg%3E\") no-repeat right 12px center;background-size:16px;padding-right:32px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }] });
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LazyLoadingSelectComponent, decorators: [{
47
47
  type: Component,
48
- args: [{ selector: 'app-lazy-loading-select', template: "<ng-container *ngIf=\"standalone\">\n <mat-form-field appearance=\"outline\">\n <mat-select [formControl]=\"formControl\"\n (openedChange)=\"getOptions()\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onFieldChange(controlName)\"\n [id]=\"id\">\n <mat-option>\n <div class=\"select-search-wrapper\">\n <input\n type=\"text\"\n placeholder=\"Search\"\n class=\"select-search-input\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span class=\"search-icon-inside\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\">\n <path d=\"M13 2.25C7.063 2.25 2.25 7.063 2.25 13S7.063 23.75 13 23.75c2.699 0 5.165-.994 7.053-2.637l8.417 8.417a.75.75 0 1 0 1.06-1.06l-8.417-8.417A10.7 10.7 0 0 0 23.75 13c0-5.937-4.813-10.75-10.75-10.75M3.75 13a9.25 9.25 0 1 1 18.5 0 9.25 9.25 0 0 1-18.5 0\" fill=\"#000\"/>\n </svg>\n </span>\n </div>\n </mat-option>\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\n {{type}}\n </mat-option>\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"70\"\n strokeWidth=\"3\"\n mode=\"indeterminate\"\n *ngIf=\"optionsPending\"></mat-progress-spinner>\n </mat-select>\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n {{errorText}}\n </mat-error>\n </mat-form-field>\n</ng-container>\n\n<!--\nThis duplication is caused by the following bug: https://github.com/angular/components/issues/9411\nWhich doesn't allow projection in mat-form-field\n-->\n\n<ng-container *ngIf=\"!standalone\">\n <mat-select *ngIf=\"form.get(controlName)\"\n [formControl]=\"formControl\"\n (openedChange)=\"getOptions()\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onFieldChange(controlName)\"\n [id]=\"id\"\n >\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\n {{type}}\n </mat-option>\n <mat-progress-spinner class=\"field-spinner\"\n [diameter]=\"20\"\n mode=\"indeterminate\"\n *ngIf=\"optionsPending\"></mat-progress-spinner>\n </mat-select>\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n {{errorText}}\n </mat-error>\n</ng-container>\n", styles: ["mat-form-field{width:300px;max-width:300px}::ng-deep .mat-option{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important;line-height:48px!important;height:48px!important;padding:0 10px!important;text-align:left!important;text-decoration:none!important;position:relative!important;cursor:pointer!important;outline:none!important;display:flex!important;flex-direction:row!important;max-width:100%!important;box-sizing:border-box!important;align-items:center!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}.select-search-wrapper{position:relative;width:100%}.search-icon-inside{position:absolute;left:12px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:2;display:flex;align-items:center}:host{height:35px;width:93%!important;max-width:93%!important;min-width:0!important;height:auto!important;box-sizing:border-box}:host ::ng-deep mat-form-field{width:100%;max-width:100%;height:35px}:host ::ng-deep mat-form-field .mat-form-field-flex .mat-form-field-outline .mat-form-field-outline-start{border:none!important}.select-search-input{width:100%;box-sizing:border-box;padding:7px 14px 7px 38px;margin:10px 0;border:3px solid #ccc;border-radius:.5rem;outline:none;font-size:14px;transition:border-color .2s}.select-search-input:focus{border-color:#1170cf}.field-spinner{margin-top:-30px}::ng-deep .mat-select-arrow{display:none}::ng-deep .mat-select-trigger{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M28.708 9.293a1 1 0 0 0-1.415 0L16 20.586 4.707 9.293a1 1 0 0 0-1.414 1.414l12 12a1 1 0 0 0 1.414 0l12-12a1 1 0 0 0 0-1.414%22%2F%3E%3C%2Fsvg%3E\") no-repeat right 12px center;background-size:16px;padding-right:32px}\n"] }]
48
+ args: [{ selector: 'app-lazy-loading-select', template: "<ng-container *ngIf=\"standalone\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-select [formControl]=\"formControl\"\r\n (openedChange)=\"getOptions()\"\r\n [placeholder]=\"placeholder\"\r\n (selectionChange)=\"onFieldChange(controlName)\"\r\n [id]=\"id\">\r\n <mat-option>\r\n <div class=\"select-search-wrapper\">\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n class=\"select-search-input\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n >\r\n <span class=\"search-icon-inside\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\">\r\n <path d=\"M13 2.25C7.063 2.25 2.25 7.063 2.25 13S7.063 23.75 13 23.75c2.699 0 5.165-.994 7.053-2.637l8.417 8.417a.75.75 0 1 0 1.06-1.06l-8.417-8.417A10.7 10.7 0 0 0 23.75 13c0-5.937-4.813-10.75-10.75-10.75M3.75 13a9.25 9.25 0 1 1 18.5 0 9.25 9.25 0 0 1-18.5 0\" fill=\"#000\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n </mat-option>\r\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\r\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\r\n {{type}}\r\n </mat-option>\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"optionsPending\"></mat-progress-spinner>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\r\n <i class=\"fa fa-exclamation-triangle\"></i>\r\n {{errorText}}\r\n </mat-error>\r\n </mat-form-field>\r\n</ng-container>\r\n\r\n<!--\r\nThis duplication is caused by the following bug: https://github.com/angular/components/issues/9411\r\nWhich doesn't allow projection in mat-form-field\r\n-->\r\n\r\n<ng-container *ngIf=\"!standalone\">\r\n <mat-select *ngIf=\"form.get(controlName)\"\r\n [formControl]=\"formControl\"\r\n (openedChange)=\"getOptions()\"\r\n [placeholder]=\"placeholder\"\r\n (selectionChange)=\"onFieldChange(controlName)\"\r\n [id]=\"id\"\r\n >\r\n <mat-option *ngIf=\"default\" [disabled]=\"default.disabled\" [value]=\"default.key\">{{default.value}}</mat-option>\r\n <mat-option *ngFor=\"let type of options\" [value]=\"type\">\r\n {{type}}\r\n </mat-option>\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"optionsPending\"></mat-progress-spinner>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.get(controlName)?.hasError(errorCode)\">\r\n <i class=\"fa fa-exclamation-triangle\"></i>\r\n {{errorText}}\r\n </mat-error>\r\n</ng-container>\r\n", styles: ["mat-form-field{width:300px;max-width:300px}::ng-deep .mat-option{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important;line-height:48px!important;height:48px!important;padding:0 10px!important;text-align:left!important;text-decoration:none!important;position:relative!important;cursor:pointer!important;outline:none!important;display:flex!important;flex-direction:row!important;max-width:100%!important;box-sizing:border-box!important;align-items:center!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}.select-search-wrapper{position:relative;width:100%}.search-icon-inside{position:absolute;left:12px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:2;display:flex;align-items:center}:host{height:35px;width:93%!important;max-width:93%!important;min-width:0!important;height:auto!important;box-sizing:border-box}:host ::ng-deep mat-form-field{width:100%;max-width:100%;height:35px}:host ::ng-deep mat-form-field .mat-form-field-flex .mat-form-field-outline .mat-form-field-outline-start{border:none!important}.select-search-input{width:100%;box-sizing:border-box;padding:7px 14px 7px 38px;margin:10px 0;border:3px solid #ccc;border-radius:.5rem;outline:none;font-size:14px;transition:border-color .2s}.select-search-input:focus{border-color:#1170cf}.field-spinner{margin-top:-30px}::ng-deep .mat-select-arrow{display:none}::ng-deep .mat-select-trigger{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M28.708 9.293a1 1 0 0 0-1.415 0L16 20.586 4.707 9.293a1 1 0 0 0-1.414 1.414l12 12a1 1 0 0 0 1.414 0l12-12a1 1 0 0 0 0-1.414%22%2F%3E%3C%2Fsvg%3E\") no-repeat right 12px center;background-size:16px;padding-right:32px}\n"] }]
49
49
  }], ctorParameters: function () { return [{ type: i1.NotificationService }, { type: i2.SiteSettingsService }]; }, propDecorators: { siteId: [{
50
50
  type: Input
51
51
  }], form: [{
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
71
71
  }], changeField: [{
72
72
  type: Output
73
73
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkaW5nLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1kZXZpY2UtbWFuYWdlL3NyYy9sYXp5LWxvYWRpbmctc2VsZWN0L2xhenktbG9hZGluZy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvbGF6eS1sb2FkaW5nLXNlbGVjdC9sYXp5LWxvYWRpbmctc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBZ0J6RixNQUFNLE9BQU8sMEJBQTBCO0lBNkJyQyxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQWdCLENBQUM7SUFDekQsQ0FBQztJQUdELFlBQ1UsbUJBQXdDLEVBQ3hDLG1CQUF3QztRQUR4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUEzQjNDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFRbEIsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQVV4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFXaEQsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDekUsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLGFBQWE7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLCtGQUErRjtRQUNqRyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDOzt3SEE5RFUsMEJBQTBCOzRHQUExQiwwQkFBMEIsNFdDaEJ2Qyw2NkZBbUVBOzRGRG5EYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCOzRJQVM1QixNQUFNO3NCQURaLEtBQUs7Z0JBR0MsSUFBSTtzQkFEVixLQUFLO2dCQUdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFHQyxFQUFFO3NCQURSLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNpdGVTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zaXRlLXNldHRpbmdzLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvblZhbHVlIHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGRpc2FibGVkOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbGF6eS1sb2FkaW5nLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXp5LWxvYWRpbmctc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGF6eS1sb2FkaW5nLXNlbGVjdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIExhenlMb2FkaW5nU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIG9wdGlvbnNQZW5kaW5nITogYm9vbGVhbjtcbiAgb3B0aW9ucyE6IGFueTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2l0ZUlkITogbnVtYmVyXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtITogRm9ybUdyb3VwO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhbmRhbG9uZSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlciE6IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGNvbnRyb2xOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgb3B0aW9uc1Rva2VuITogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXBwZWFyYW5jZSA9ICdzdGFuZGFyZCc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvckNvZGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvclRleHQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWZhdWx0ITogT3B0aW9uVmFsdWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZCE6IHN0cmluZztcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjaGFuZ2VGaWVsZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGdldCBmb3JtQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KHRoaXMuY29udHJvbE5hbWUpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaXRlU2V0dGluZ3NTZXJ2aWNlOiBTaXRlU2V0dGluZ3NTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBbdGhpcy5mb3JtPy5nZXQodGhpcy5jb250cm9sTmFtZSk/LnZhbHVlXTtcbiAgfVxuXG4gIGdldE9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLnNpdGVJZCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnNQZW5kaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0aW9uT3B0aW9ucyh0aGlzLnNpdGVJZCwgdGhpcy5vcHRpb25zVG9rZW4pXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zUGVuZGluZyA9IGZhbHNlO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2l0ZVNldHRpbmdzU2VydmljZVt0aGlzLm9wdGlvbnNUb2tlbl07XG4gICAgICB9LCAoKSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9uc1BlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0NPTU1PTi5MT0FEX1NFTEVDVF9PUFRJT05TX0ZBSUxFRCcpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uRmllbGRDaGFuZ2UodG9rZW46IHN0cmluZykge1xuICAgIHRoaXMuY2hhbmdlRmllbGQuZW1pdCh0b2tlbik7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YW5kYWxvbmVcIj5cbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAob3BlbmVkQ2hhbmdlKT1cImdldE9wdGlvbnMoKVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoY29udHJvbE5hbWUpXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIj5cbiAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXNlYXJjaC13cmFwcGVyXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uLWluc2lkZVwiPlxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDIuMjVDNy4wNjMgMi4yNSAyLjI1IDcuMDYzIDIuMjUgMTNTNy4wNjMgMjMuNzUgMTMgMjMuNzVjMi42OTkgMCA1LjE2NS0uOTk0IDcuMDUzLTIuNjM3bDguNDE3IDguNDE3YS43NS43NSAwIDEgMCAxLjA2LTEuMDZsLTguNDE3LTguNDE3QTEwLjcgMTAuNyAwIDAgMCAyMy43NSAxM2MwLTUuOTM3LTQuODEzLTEwLjc1LTEwLjc1LTEwLjc1TTMuNzUgMTNhOS4yNSA5LjI1IDAgMSAxIDE4LjUgMCA5LjI1IDkuMjUgMCAwIDEtMTguNSAwXCIgZmlsbD1cIiMwMDBcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJkZWZhdWx0XCIgW2Rpc2FibGVkXT1cImRlZmF1bHQuZGlzYWJsZWRcIiBbdmFsdWVdPVwiZGVmYXVsdC5rZXlcIj57e2RlZmF1bHQudmFsdWV9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwidHlwZVwiPlxuICAgICAgICB7e3R5cGV9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIGNsYXNzPVwiZmllbGQtc3Bpbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjcwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD1cIjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbnNQZW5kaW5nXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uZ2V0KGNvbnRyb2xOYW1lKT8uaGFzRXJyb3IoZXJyb3JDb2RlKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiPjwvaT5cbiAgICAgIHt7ZXJyb3JUZXh0fX1cbiAgICA8L21hdC1lcnJvcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tXG5UaGlzIGR1cGxpY2F0aW9uIGlzIGNhdXNlZCBieSB0aGUgZm9sbG93aW5nIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvOTQxMVxuV2hpY2ggZG9lc24ndCBhbGxvdyBwcm9qZWN0aW9uIGluIG1hdC1mb3JtLWZpZWxkXG4tLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdGFuZGFsb25lXCI+XG4gIDxtYXQtc2VsZWN0ICpuZ0lmPVwiZm9ybS5nZXQoY29udHJvbE5hbWUpXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJnZXRPcHRpb25zKClcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2UoY29udHJvbE5hbWUpXCJcbiAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgPlxuICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiZGVmYXVsdFwiIFtkaXNhYmxlZF09XCJkZWZhdWx0LmRpc2FibGVkXCIgW3ZhbHVlXT1cImRlZmF1bHQua2V5XCI+e3tkZWZhdWx0LnZhbHVlfX08L21hdC1vcHRpb24+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHR5cGUgb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJ0eXBlXCI+XG4gICAgICB7e3R5cGV9fVxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgY2xhc3M9XCJmaWVsZC1zcGlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbnNQZW5kaW5nXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgPC9tYXQtc2VsZWN0PlxuICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5nZXQoY29udHJvbE5hbWUpPy5oYXNFcnJvcihlcnJvckNvZGUpXCI+XG4gICAgPGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiPjwvaT5cbiAgICB7e2Vycm9yVGV4dH19XG4gIDwvbWF0LWVycm9yPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkaW5nLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1kZXZpY2UtbWFuYWdlL3NyYy9sYXp5LWxvYWRpbmctc2VsZWN0L2xhenktbG9hZGluZy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvbGF6eS1sb2FkaW5nLXNlbGVjdC9sYXp5LWxvYWRpbmctc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBZ0J6RixNQUFNLE9BQU8sMEJBQTBCO0lBNkJyQyxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQWdCLENBQUM7SUFDekQsQ0FBQztJQUdELFlBQ1UsbUJBQXdDLEVBQ3hDLG1CQUF3QztRQUR4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUEzQjNDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFRbEIsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQVV4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFXaEQsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDekUsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLGFBQWE7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLCtGQUErRjtRQUNqRyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDOzt3SEE5RFUsMEJBQTBCOzRHQUExQiwwQkFBMEIsNFdDaEJ2QyxtakdBbUVBOzRGRG5EYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCOzRJQVM1QixNQUFNO3NCQURaLEtBQUs7Z0JBR0MsSUFBSTtzQkFEVixLQUFLO2dCQUdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFHQyxFQUFFO3NCQURSLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFNpdGVTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zaXRlLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25WYWx1ZSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbGF6eS1sb2FkaW5nLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xhenktbG9hZGluZy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xhenktbG9hZGluZy1zZWxlY3QuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF6eUxvYWRpbmdTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcclxuICBvcHRpb25zUGVuZGluZyE6IGJvb2xlYW47XHJcbiAgb3B0aW9ucyE6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2l0ZUlkITogbnVtYmVyXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdGFuZGFsb25lID0gdHJ1ZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlciE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb250cm9sTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvcHRpb25zVG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXBwZWFyYW5jZSA9ICdzdGFuZGFyZCc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZXJyb3JDb2RlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVycm9yVGV4dCE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZhdWx0ITogT3B0aW9uVmFsdWU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWQhOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNoYW5nZUZpZWxkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIGdldCBmb3JtQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5nZXQodGhpcy5jb250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNpdGVTZXR0aW5nc1NlcnZpY2U6IFNpdGVTZXR0aW5nc1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBbdGhpcy5mb3JtPy5nZXQodGhpcy5jb250cm9sTmFtZSk/LnZhbHVlXTtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2l0ZUlkICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9uc1BlbmRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zaXRlU2V0dGluZ3NTZXJ2aWNlLmdldFNlbGVjdGlvbk9wdGlvbnModGhpcy5zaXRlSWQsIHRoaXMub3B0aW9uc1Rva2VuKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnNQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2l0ZVNldHRpbmdzU2VydmljZVt0aGlzLm9wdGlvbnNUb2tlbl07XHJcbiAgICAgIH0sICgpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnNQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgLy8gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0NPTU1PTi5MT0FEX1NFTEVDVF9PUFRJT05TX0ZBSUxFRCcpKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25GaWVsZENoYW5nZSh0b2tlbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNoYW5nZUZpZWxkLmVtaXQodG9rZW4pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YW5kYWxvbmVcIj5cclxuICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAob3BlbmVkQ2hhbmdlKT1cImdldE9wdGlvbnMoKVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKGNvbnRyb2xOYW1lKVwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIj5cclxuICAgICAgPG1hdC1vcHRpb24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1zZWFyY2gtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1zZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VhcmNoLWljb24taW5zaWRlXCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDIuMjVDNy4wNjMgMi4yNSAyLjI1IDcuMDYzIDIuMjUgMTNTNy4wNjMgMjMuNzUgMTMgMjMuNzVjMi42OTkgMCA1LjE2NS0uOTk0IDcuMDUzLTIuNjM3bDguNDE3IDguNDE3YS43NS43NSAwIDEgMCAxLjA2LTEuMDZsLTguNDE3LTguNDE3QTEwLjcgMTAuNyAwIDAgMCAyMy43NSAxM2MwLTUuOTM3LTQuODEzLTEwLjc1LTEwLjc1LTEwLjc1TTMuNzUgMTNhOS4yNSA5LjI1IDAgMSAxIDE4LjUgMCA5LjI1IDkuMjUgMCAwIDEtMTguNSAwXCIgZmlsbD1cIiMwMDBcIi8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiZGVmYXVsdFwiIFtkaXNhYmxlZF09XCJkZWZhdWx0LmRpc2FibGVkXCIgW3ZhbHVlXT1cImRlZmF1bHQua2V5XCI+e3tkZWZhdWx0LnZhbHVlfX08L21hdC1vcHRpb24+XHJcbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwidHlwZVwiPlxyXG4gICAgICAgIHt7dHlwZX19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIGNsYXNzPVwiZmllbGQtc3Bpbm5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlhbWV0ZXJdPVwiNzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uc1BlbmRpbmdcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uZ2V0KGNvbnRyb2xOYW1lKT8uaGFzRXJyb3IoZXJyb3JDb2RlKVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9pPlxyXG4gICAgICB7e2Vycm9yVGV4dH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjwhLS1cclxuVGhpcyBkdXBsaWNhdGlvbiBpcyBjYXVzZWQgYnkgdGhlIGZvbGxvd2luZyBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzk0MTFcclxuV2hpY2ggZG9lc24ndCBhbGxvdyBwcm9qZWN0aW9uIGluIG1hdC1mb3JtLWZpZWxkXHJcbi0tPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdGFuZGFsb25lXCI+XHJcbiAgPG1hdC1zZWxlY3QgKm5nSWY9XCJmb3JtLmdldChjb250cm9sTmFtZSlcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJnZXRPcHRpb25zKClcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlKGNvbnRyb2xOYW1lKVwiXHJcbiAgICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICA+XHJcbiAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImRlZmF1bHRcIiBbZGlzYWJsZWRdPVwiZGVmYXVsdC5kaXNhYmxlZFwiIFt2YWx1ZV09XCJkZWZhdWx0LmtleVwiPnt7ZGVmYXVsdC52YWx1ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHR5cGUgb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJ0eXBlXCI+XHJcbiAgICAgIHt7dHlwZX19XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgY2xhc3M9XCJmaWVsZC1zcGlubmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlhbWV0ZXJdPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbnNQZW5kaW5nXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICA8L21hdC1zZWxlY3Q+XHJcbiAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uZ2V0KGNvbnRyb2xOYW1lKT8uaGFzRXJyb3IoZXJyb3JDb2RlKVwiPlxyXG4gICAgPGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiPjwvaT5cclxuICAgIHt7ZXJyb3JUZXh0fX1cclxuICA8L21hdC1lcnJvcj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==