@thetradeengineorg1/snova-shell-module 0.0.262 → 0.0.264

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 (432) hide show
  1. package/README.md +24 -24
  2. package/bundles/thetradeengineorg1-snova-shell-module.umd.js +19001 -13747
  3. package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
  4. package/esm2015/lib/globaldependencies/components/avatar.component.js +33 -28
  5. package/esm2015/lib/globaldependencies/components/componentbase.js +538 -538
  6. package/esm2015/lib/globaldependencies/constants/feature-ids.js +449 -449
  7. package/esm2015/lib/globaldependencies/constants/localstorage-properties.js +38 -38
  8. package/esm2015/lib/globaldependencies/helpers/dom.helper.js +70 -70
  9. package/esm2015/lib/globaldependencies/helpers/fontawesome-icons.js +144 -144
  10. package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +37 -37
  11. package/esm2015/lib/globaldependencies/helpers/window.helper.js +32 -32
  12. package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +40 -40
  13. package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +36 -36
  14. package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +24 -24
  15. package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +24 -24
  16. package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +22 -22
  17. package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +24 -24
  18. package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +346 -346
  19. package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +23 -23
  20. package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +25 -25
  21. package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +27 -27
  22. package/esm2015/lib/shell-components/components/Payments/account.component.js +121 -50
  23. package/esm2015/lib/shell-components/components/Payments/company-information.js +558 -262
  24. package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +636 -138
  25. package/esm2015/lib/shell-components/components/Payments/document.component.js +129 -57
  26. package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +90 -32
  27. package/esm2015/lib/shell-components/components/Payments/product-service.component.js +438 -143
  28. package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +249 -152
  29. package/esm2015/lib/shell-components/components/Payments/transactions.component.js +172 -60
  30. package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +350 -250
  31. package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +102 -89
  32. package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +126 -90
  33. package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +502 -357
  34. package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +98 -85
  35. package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +87 -83
  36. package/esm2015/lib/shell-components/components/header-side/header-side.component.js +2342 -1617
  37. package/esm2015/lib/shell-components/components/header-top/header-top.component.js +489 -93
  38. package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +55 -26
  39. package/esm2015/lib/shell-components/components/menu/menu.component.js +3413 -2478
  40. package/esm2015/lib/shell-components/components/menu/searchTask.enum.js +10 -10
  41. package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +110 -73
  42. package/esm2015/lib/shell-components/components/notifications/notifications.component.js +534 -449
  43. package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +39 -33
  44. package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +148 -81
  45. package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +439 -43
  46. package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +75 -71
  47. package/esm2015/lib/shell-components/constants/api-urls.js +1052 -1052
  48. package/esm2015/lib/shell-components/constants/available-languages.js +25 -25
  49. package/esm2015/lib/shell-components/constants/channel-names.js +38 -38
  50. package/esm2015/lib/shell-components/constants/menu-categories.js +6 -6
  51. package/esm2015/lib/shell-components/constants/notification-routes.js +6 -6
  52. package/esm2015/lib/shell-components/constants/notification-type-ids.js +42 -42
  53. package/esm2015/lib/shell-components/enum/recentSearchType.enum.js +13 -13
  54. package/esm2015/lib/shell-components/models/AppMenuItemModel.js +3 -3
  55. package/esm2015/lib/shell-components/models/AppNotification.js +17 -17
  56. package/esm2015/lib/shell-components/models/AssetAssignedNotificationModel.js +12 -12
  57. package/esm2015/lib/shell-components/models/ChannelUpdateModel.js +3 -3
  58. package/esm2015/lib/shell-components/models/EmployeeStatusModel.js +3 -3
  59. package/esm2015/lib/shell-components/models/IAdjust-screen-options.js +2 -2
  60. package/esm2015/lib/shell-components/models/IBadge.js +2 -2
  61. package/esm2015/lib/shell-components/models/IChildItem.js +2 -2
  62. package/esm2015/lib/shell-components/models/ILayout-change-options.js +2 -2
  63. package/esm2015/lib/shell-components/models/IMenuItem.js +2 -2
  64. package/esm2015/lib/shell-components/models/IlayoutConf.js +2 -2
  65. package/esm2015/lib/shell-components/models/IntroModel.js +3 -3
  66. package/esm2015/lib/shell-components/models/MessageDetails.js +3 -3
  67. package/esm2015/lib/shell-components/models/MessageTypingDetails.js +3 -3
  68. package/esm2015/lib/shell-components/models/NewProjectCreatedNotificationModel.js +10 -10
  69. package/esm2015/lib/shell-components/models/NewProjectFeatureNotificationModel.js +10 -10
  70. package/esm2015/lib/shell-components/models/NotificationsOutPutModel.js +22 -22
  71. package/esm2015/lib/shell-components/models/ProjectSearchCriteriaInputModel.js +3 -3
  72. package/esm2015/lib/shell-components/models/RecentSearchModel.js +5 -5
  73. package/esm2015/lib/shell-components/models/ReportConfigAssignedNotification.js +11 -11
  74. package/esm2015/lib/shell-components/models/ReportSubmittedNotification.js +12 -12
  75. package/esm2015/lib/shell-components/models/RoleUpdatedNotification.js +9 -9
  76. package/esm2015/lib/shell-components/models/UserStoryAssignedNotification.js +13 -13
  77. package/esm2015/lib/shell-components/models/archiveUserStoryModel.js +10 -10
  78. package/esm2015/lib/shell-components/models/companieslist.model.js +3 -3
  79. package/esm2015/lib/shell-components/models/company-model.js +7 -7
  80. package/esm2015/lib/shell-components/models/company-payment-model.js +3 -3
  81. package/esm2015/lib/shell-components/models/dragedWidget.js +3 -3
  82. package/esm2015/lib/shell-components/models/employee-List.js +3 -3
  83. package/esm2015/lib/shell-components/models/employee.js +4 -4
  84. package/esm2015/lib/shell-components/models/entityRoleFeature.js +3 -3
  85. package/esm2015/lib/shell-components/models/export-configuration-model.js +3 -3
  86. package/esm2015/lib/shell-components/models/export-data.module.js +8 -8
  87. package/esm2015/lib/shell-components/models/goalApprovedNotificationModel.js +9 -9
  88. package/esm2015/lib/shell-components/models/import-configuration-model.js +3 -3
  89. package/esm2015/lib/shell-components/models/initialStatusofUsers.js +3 -3
  90. package/esm2015/lib/shell-components/models/invoiceOutput-model.js +3 -3
  91. package/esm2015/lib/shell-components/models/leaveApplicationNotifiction.js +9 -9
  92. package/esm2015/lib/shell-components/models/multiChartsScheduling.js +11 -11
  93. package/esm2015/lib/shell-components/models/parkUserStoryInputModel.js +10 -10
  94. package/esm2015/lib/shell-components/models/project.js +3 -3
  95. package/esm2015/lib/shell-components/models/recentSearchApiModel.js +3 -3
  96. package/esm2015/lib/shell-components/models/searchCriteriaInputModelBase.js +3 -3
  97. package/esm2015/lib/shell-components/models/shellModulesInfo.js +7 -7
  98. package/esm2015/lib/shell-components/models/softlabels-model.js +7 -7
  99. package/esm2015/lib/shell-components/models/sprintReplanRequestedModel.js +9 -9
  100. package/esm2015/lib/shell-components/models/sprintStartedNotificationModel.js +9 -9
  101. package/esm2015/lib/shell-components/models/store-model.js +3 -3
  102. package/esm2015/lib/shell-components/models/store-search-model.js +4 -4
  103. package/esm2015/lib/shell-components/models/themes.model.js +3 -3
  104. package/esm2015/lib/shell-components/models/timesheetenabledisable.js +4 -4
  105. package/esm2015/lib/shell-components/models/user.js +8 -8
  106. package/esm2015/lib/shell-components/models/userStory.js +3 -3
  107. package/esm2015/lib/shell-components/models/userStoryCommentNotificationModel.js +9 -9
  108. package/esm2015/lib/shell-components/models/userStoryUpdateNotificationModel.js +9 -9
  109. package/esm2015/lib/shell-components/models/userstory-custom-fields.model.js +3 -3
  110. package/esm2015/lib/shell-components/models/validation.model.js +2 -2
  111. package/esm2015/lib/shell-components/models/widgetlist.js +6 -6
  112. package/esm2015/lib/shell-components/models/workspaceList.js +3 -3
  113. package/esm2015/lib/shell-components/services/authentication.service.js +96 -96
  114. package/esm2015/lib/shell-components/services/chat.service.js +67 -67
  115. package/esm2015/lib/shell-components/services/common-used.service.js +263 -263
  116. package/esm2015/lib/shell-components/services/feature.service.js +101 -101
  117. package/esm2015/lib/shell-components/services/google-analytics.service.js +24 -24
  118. package/esm2015/lib/shell-components/services/layout.service.js +68 -68
  119. package/esm2015/lib/shell-components/services/payment.service.js +103 -103
  120. package/esm2015/lib/shell-components/services/recentSearch.service.js +90 -90
  121. package/esm2015/lib/shell-components/services/shell.modules.service.js +24 -24
  122. package/esm2015/lib/shell-components/services/signalr.service.js +113 -113
  123. package/esm2015/lib/shell-components/services/theme.service.js +228 -228
  124. package/esm2015/lib/shell-components/shell.module.js +450 -449
  125. package/esm2015/lib/shell-components/shell.routing.js +16 -16
  126. package/esm2015/lib/shell-components/store/actions/authentication.actions.js +260 -260
  127. package/esm2015/lib/shell-components/store/actions/chat.actions.js +248 -248
  128. package/esm2015/lib/shell-components/store/actions/menuitems.actions.js +39 -39
  129. package/esm2015/lib/shell-components/store/actions/notification-validator.action.js +19 -19
  130. package/esm2015/lib/shell-components/store/actions/notifications.actions.js +74 -74
  131. package/esm2015/lib/shell-components/store/effects/authentication.effects.js +503 -503
  132. package/esm2015/lib/shell-components/store/effects/chat.effects.js +139 -139
  133. package/esm2015/lib/shell-components/store/effects/index.js +13 -13
  134. package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +53 -53
  135. package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +56 -56
  136. package/esm2015/lib/shell-components/store/effects/notifications.effects.js +116 -116
  137. package/esm2015/lib/shell-components/store/reducers/authentication.reducers.js +86 -86
  138. package/esm2015/lib/shell-components/store/reducers/chat.reducers.js +68 -68
  139. package/esm2015/lib/shell-components/store/reducers/index.js +80 -80
  140. package/esm2015/lib/shell-components/store/reducers/menuitems.reducers.js +56 -56
  141. package/esm2015/lib/shell-components/store/reducers/notification-validator.reducers.js +13 -13
  142. package/esm2015/lib/shell-components/store/reducers/notifications.reducers.js +38 -38
  143. package/esm2015/public-api.js +92 -92
  144. package/esm2015/store/reducers/index.js +47 -47
  145. package/esm2015/thetradeengineorg1-snova-shell-module.js +4 -4
  146. package/fesm2015/thetradeengineorg1-snova-shell-module.js +17136 -12640
  147. package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
  148. package/lib/globaldependencies/components/avatar.component.d.ts +11 -10
  149. package/lib/globaldependencies/components/avatar.component.d.ts.map +1 -0
  150. package/lib/globaldependencies/components/componentbase.d.ts +456 -455
  151. package/lib/globaldependencies/components/componentbase.d.ts.map +1 -0
  152. package/lib/globaldependencies/constants/feature-ids.d.ts +449 -448
  153. package/lib/globaldependencies/constants/feature-ids.d.ts.map +1 -0
  154. package/lib/globaldependencies/constants/localstorage-properties.d.ts +38 -37
  155. package/lib/globaldependencies/constants/localstorage-properties.d.ts.map +1 -0
  156. package/lib/globaldependencies/helpers/dom.helper.d.ts +8 -7
  157. package/lib/globaldependencies/helpers/dom.helper.d.ts.map +1 -0
  158. package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +2 -1
  159. package/lib/globaldependencies/helpers/fontawesome-icons.d.ts.map +1 -0
  160. package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +10 -9
  161. package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts.map +1 -0
  162. package/lib/globaldependencies/helpers/window.helper.d.ts +13 -12
  163. package/lib/globaldependencies/helpers/window.helper.d.ts.map +1 -0
  164. package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +12 -11
  165. package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts.map +1 -0
  166. package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +9 -8
  167. package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts.map +1 -0
  168. package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +9 -8
  169. package/lib/globaldependencies/pipes/highLightText.pipe.d.ts.map +1 -0
  170. package/lib/globaldependencies/pipes/orderby-pipe.d.ts +10 -9
  171. package/lib/globaldependencies/pipes/orderby-pipe.d.ts.map +1 -0
  172. package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +9 -8
  173. package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts.map +1 -0
  174. package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +12 -11
  175. package/lib/globaldependencies/pipes/sanitize.pipe.d.ts.map +1 -0
  176. package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +9 -8
  177. package/lib/globaldependencies/pipes/softlabels.pipes.d.ts.map +1 -0
  178. package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +9 -8
  179. package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts.map +1 -0
  180. package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +9 -8
  181. package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts.map +1 -0
  182. package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +9 -8
  183. package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts.map +1 -0
  184. package/lib/shell-components/components/Payments/account.component.d.ts +15 -14
  185. package/lib/shell-components/components/Payments/account.component.d.ts.map +1 -0
  186. package/lib/shell-components/components/Payments/company-information.d.ts +63 -62
  187. package/lib/shell-components/components/Payments/company-information.d.ts.map +1 -0
  188. package/lib/shell-components/components/Payments/company-plans.component.d.ts +48 -47
  189. package/lib/shell-components/components/Payments/company-plans.component.d.ts.map +1 -0
  190. package/lib/shell-components/components/Payments/document.component.d.ts +21 -20
  191. package/lib/shell-components/components/Payments/document.component.d.ts.map +1 -0
  192. package/lib/shell-components/components/Payments/payment-method.component.d.ts +16 -15
  193. package/lib/shell-components/components/Payments/payment-method.component.d.ts.map +1 -0
  194. package/lib/shell-components/components/Payments/product-service.component.d.ts +49 -48
  195. package/lib/shell-components/components/Payments/product-service.component.d.ts.map +1 -0
  196. package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +38 -37
  197. package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts.map +1 -0
  198. package/lib/shell-components/components/Payments/transactions.component.d.ts +29 -28
  199. package/lib/shell-components/components/Payments/transactions.component.d.ts.map +1 -0
  200. package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +68 -67
  201. package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts.map +1 -0
  202. package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +33 -32
  203. package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts.map +1 -0
  204. package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +33 -32
  205. package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
  206. package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +61 -60
  207. package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts.map +1 -0
  208. package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +34 -33
  209. package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts.map +1 -0
  210. package/lib/shell-components/components/feed-time/feed-time.component.d.ts +28 -27
  211. package/lib/shell-components/components/feed-time/feed-time.component.d.ts.map +1 -0
  212. package/lib/shell-components/components/header-side/header-side.component.d.ts +221 -220
  213. package/lib/shell-components/components/header-side/header-side.component.d.ts.map +1 -0
  214. package/lib/shell-components/components/header-top/header-top.component.d.ts +41 -40
  215. package/lib/shell-components/components/header-top/header-top.component.d.ts.map +1 -0
  216. package/lib/shell-components/components/lives/lives-welcome-page.d.ts +15 -14
  217. package/lib/shell-components/components/lives/lives-welcome-page.d.ts.map +1 -0
  218. package/lib/shell-components/components/menu/menu.component.d.ts +221 -220
  219. package/lib/shell-components/components/menu/menu.component.d.ts.map +1 -0
  220. package/lib/shell-components/components/menu/searchTask.enum.d.ts +9 -8
  221. package/lib/shell-components/components/menu/searchTask.enum.d.ts.map +1 -0
  222. package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +28 -27
  223. package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts.map +1 -0
  224. package/lib/shell-components/components/notifications/notifications.component.d.ts +54 -53
  225. package/lib/shell-components/components/notifications/notifications.component.d.ts.map +1 -0
  226. package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +11 -10
  227. package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts.map +1 -0
  228. package/lib/shell-components/components/sidenav/side-bar.component.d.ts +24 -23
  229. package/lib/shell-components/components/sidenav/side-bar.component.d.ts.map +1 -0
  230. package/lib/shell-components/components/sidenav/sidenav.component.d.ts +18 -17
  231. package/lib/shell-components/components/sidenav/sidenav.component.d.ts.map +1 -0
  232. package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +26 -25
  233. package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts.map +1 -0
  234. package/lib/shell-components/constants/api-urls.d.ts +1052 -1051
  235. package/lib/shell-components/constants/api-urls.d.ts.map +1 -0
  236. package/lib/shell-components/constants/available-languages.d.ts +8 -7
  237. package/lib/shell-components/constants/available-languages.d.ts.map +1 -0
  238. package/lib/shell-components/constants/channel-names.d.ts +38 -37
  239. package/lib/shell-components/constants/channel-names.d.ts.map +1 -0
  240. package/lib/shell-components/constants/menu-categories.d.ts +6 -5
  241. package/lib/shell-components/constants/menu-categories.d.ts.map +1 -0
  242. package/lib/shell-components/constants/notification-routes.d.ts +6 -5
  243. package/lib/shell-components/constants/notification-routes.d.ts.map +1 -0
  244. package/lib/shell-components/constants/notification-type-ids.d.ts +42 -41
  245. package/lib/shell-components/constants/notification-type-ids.d.ts.map +1 -0
  246. package/lib/shell-components/enum/recentSearchType.enum.d.ts +12 -11
  247. package/lib/shell-components/enum/recentSearchType.enum.d.ts.map +1 -0
  248. package/lib/shell-components/models/AppMenuItemModel.d.ts +13 -12
  249. package/lib/shell-components/models/AppMenuItemModel.d.ts.map +1 -0
  250. package/lib/shell-components/models/AppNotification.d.ts +13 -12
  251. package/lib/shell-components/models/AppNotification.d.ts.map +1 -0
  252. package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +11 -10
  253. package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts.map +1 -0
  254. package/lib/shell-components/models/ChannelUpdateModel.d.ts +48 -47
  255. package/lib/shell-components/models/ChannelUpdateModel.d.ts.map +1 -0
  256. package/lib/shell-components/models/EmployeeStatusModel.d.ts +12 -11
  257. package/lib/shell-components/models/EmployeeStatusModel.d.ts.map +1 -0
  258. package/lib/shell-components/models/IAdjust-screen-options.d.ts +5 -4
  259. package/lib/shell-components/models/IAdjust-screen-options.d.ts.map +1 -0
  260. package/lib/shell-components/models/IBadge.d.ts +5 -4
  261. package/lib/shell-components/models/IBadge.d.ts.map +1 -0
  262. package/lib/shell-components/models/IChildItem.d.ts +8 -7
  263. package/lib/shell-components/models/IChildItem.d.ts.map +1 -0
  264. package/lib/shell-components/models/ILayout-change-options.d.ts +5 -4
  265. package/lib/shell-components/models/ILayout-change-options.d.ts.map +1 -0
  266. package/lib/shell-components/models/IMenuItem.d.ts +15 -14
  267. package/lib/shell-components/models/IMenuItem.d.ts.map +1 -0
  268. package/lib/shell-components/models/IlayoutConf.d.ts +11 -10
  269. package/lib/shell-components/models/IlayoutConf.d.ts.map +1 -0
  270. package/lib/shell-components/models/IntroModel.d.ts +4 -3
  271. package/lib/shell-components/models/IntroModel.d.ts.map +1 -0
  272. package/lib/shell-components/models/MessageDetails.d.ts +56 -55
  273. package/lib/shell-components/models/MessageDetails.d.ts.map +1 -0
  274. package/lib/shell-components/models/MessageTypingDetails.d.ts +10 -9
  275. package/lib/shell-components/models/MessageTypingDetails.d.ts.map +1 -0
  276. package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +9 -8
  277. package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts.map +1 -0
  278. package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +9 -8
  279. package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts.map +1 -0
  280. package/lib/shell-components/models/NotificationsOutPutModel.d.ts +42 -41
  281. package/lib/shell-components/models/NotificationsOutPutModel.d.ts.map +1 -0
  282. package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +11 -10
  283. package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts.map +1 -0
  284. package/lib/shell-components/models/RecentSearchModel.d.ts +15 -14
  285. package/lib/shell-components/models/RecentSearchModel.d.ts.map +1 -0
  286. package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +10 -9
  287. package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts.map +1 -0
  288. package/lib/shell-components/models/ReportSubmittedNotification.d.ts +11 -10
  289. package/lib/shell-components/models/ReportSubmittedNotification.d.ts.map +1 -0
  290. package/lib/shell-components/models/RoleUpdatedNotification.d.ts +8 -7
  291. package/lib/shell-components/models/RoleUpdatedNotification.d.ts.map +1 -0
  292. package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +9 -8
  293. package/lib/shell-components/models/UserStoryAssignedNotification.d.ts.map +1 -0
  294. package/lib/shell-components/models/archiveUserStoryModel.d.ts +8 -7
  295. package/lib/shell-components/models/archiveUserStoryModel.d.ts.map +1 -0
  296. package/lib/shell-components/models/companieslist.model.d.ts +9 -8
  297. package/lib/shell-components/models/companieslist.model.d.ts.map +1 -0
  298. package/lib/shell-components/models/company-model.d.ts +32 -31
  299. package/lib/shell-components/models/company-model.d.ts.map +1 -0
  300. package/lib/shell-components/models/company-payment-model.d.ts +19 -18
  301. package/lib/shell-components/models/company-payment-model.d.ts.map +1 -0
  302. package/lib/shell-components/models/dragedWidget.d.ts +17 -16
  303. package/lib/shell-components/models/dragedWidget.d.ts.map +1 -0
  304. package/lib/shell-components/models/employee-List.d.ts +9 -8
  305. package/lib/shell-components/models/employee-List.d.ts.map +1 -0
  306. package/lib/shell-components/models/employee.d.ts +61 -60
  307. package/lib/shell-components/models/employee.d.ts.map +1 -0
  308. package/lib/shell-components/models/entityRoleFeature.d.ts +10 -9
  309. package/lib/shell-components/models/entityRoleFeature.d.ts.map +1 -0
  310. package/lib/shell-components/models/export-configuration-model.d.ts +9 -8
  311. package/lib/shell-components/models/export-configuration-model.d.ts.map +1 -0
  312. package/lib/shell-components/models/export-data.module.d.ts +7 -6
  313. package/lib/shell-components/models/export-data.module.d.ts.map +1 -0
  314. package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +9 -8
  315. package/lib/shell-components/models/goalApprovedNotificationModel.d.ts.map +1 -0
  316. package/lib/shell-components/models/import-configuration-model.d.ts +4 -3
  317. package/lib/shell-components/models/import-configuration-model.d.ts.map +1 -0
  318. package/lib/shell-components/models/initialStatusofUsers.d.ts +6 -5
  319. package/lib/shell-components/models/initialStatusofUsers.d.ts.map +1 -0
  320. package/lib/shell-components/models/invoiceOutput-model.d.ts +10 -9
  321. package/lib/shell-components/models/invoiceOutput-model.d.ts.map +1 -0
  322. package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +8 -7
  323. package/lib/shell-components/models/leaveApplicationNotifiction.d.ts.map +1 -0
  324. package/lib/shell-components/models/multiChartsScheduling.d.ts +10 -9
  325. package/lib/shell-components/models/multiChartsScheduling.d.ts.map +1 -0
  326. package/lib/shell-components/models/parkUserStoryInputModel.d.ts +8 -7
  327. package/lib/shell-components/models/parkUserStoryInputModel.d.ts.map +1 -0
  328. package/lib/shell-components/models/project.d.ts +29 -28
  329. package/lib/shell-components/models/project.d.ts.map +1 -0
  330. package/lib/shell-components/models/recentSearchApiModel.d.ts +7 -6
  331. package/lib/shell-components/models/recentSearchApiModel.d.ts.map +1 -0
  332. package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +11 -10
  333. package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts.map +1 -0
  334. package/lib/shell-components/models/shellModulesInfo.d.ts +17 -16
  335. package/lib/shell-components/models/shellModulesInfo.d.ts.map +1 -0
  336. package/lib/shell-components/models/softlabels-model.d.ts +67 -66
  337. package/lib/shell-components/models/softlabels-model.d.ts.map +1 -0
  338. package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +8 -7
  339. package/lib/shell-components/models/sprintReplanRequestedModel.d.ts.map +1 -0
  340. package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +8 -7
  341. package/lib/shell-components/models/sprintStartedNotificationModel.d.ts.map +1 -0
  342. package/lib/shell-components/models/store-model.d.ts +14 -13
  343. package/lib/shell-components/models/store-model.d.ts.map +1 -0
  344. package/lib/shell-components/models/store-search-model.d.ts +8 -7
  345. package/lib/shell-components/models/store-search-model.d.ts.map +1 -0
  346. package/lib/shell-components/models/themes.model.d.ts +10 -9
  347. package/lib/shell-components/models/themes.model.d.ts.map +1 -0
  348. package/lib/shell-components/models/timesheetenabledisable.d.ts +17 -16
  349. package/lib/shell-components/models/timesheetenabledisable.d.ts.map +1 -0
  350. package/lib/shell-components/models/user.d.ts +41 -40
  351. package/lib/shell-components/models/user.d.ts.map +1 -0
  352. package/lib/shell-components/models/userStory.d.ts +189 -188
  353. package/lib/shell-components/models/userStory.d.ts.map +1 -0
  354. package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +7 -6
  355. package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts.map +1 -0
  356. package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +7 -6
  357. package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts.map +1 -0
  358. package/lib/shell-components/models/userstory-custom-fields.model.d.ts +7 -6
  359. package/lib/shell-components/models/userstory-custom-fields.model.d.ts.map +1 -0
  360. package/lib/shell-components/models/validation.model.d.ts +6 -5
  361. package/lib/shell-components/models/validation.model.d.ts.map +1 -0
  362. package/lib/shell-components/models/widgetlist.d.ts +29 -28
  363. package/lib/shell-components/models/widgetlist.d.ts.map +1 -0
  364. package/lib/shell-components/models/workspaceList.d.ts +20 -19
  365. package/lib/shell-components/models/workspaceList.d.ts.map +1 -0
  366. package/lib/shell-components/services/authentication.service.d.ts +19 -18
  367. package/lib/shell-components/services/authentication.service.d.ts.map +1 -0
  368. package/lib/shell-components/services/chat.service.d.ts +17 -16
  369. package/lib/shell-components/services/chat.service.d.ts.map +1 -0
  370. package/lib/shell-components/services/common-used.service.d.ts +46 -45
  371. package/lib/shell-components/services/common-used.service.d.ts.map +1 -0
  372. package/lib/shell-components/services/feature.service.d.ts +20 -19
  373. package/lib/shell-components/services/feature.service.d.ts.map +1 -0
  374. package/lib/shell-components/services/google-analytics.service.d.ts +10 -9
  375. package/lib/shell-components/services/google-analytics.service.d.ts.map +1 -0
  376. package/lib/shell-components/services/layout.service.d.ts +24 -23
  377. package/lib/shell-components/services/layout.service.d.ts.map +1 -0
  378. package/lib/shell-components/services/payment.service.d.ts +20 -19
  379. package/lib/shell-components/services/payment.service.d.ts.map +1 -0
  380. package/lib/shell-components/services/recentSearch.service.d.ts +17 -16
  381. package/lib/shell-components/services/recentSearch.service.d.ts.map +1 -0
  382. package/lib/shell-components/services/shell.modules.service.d.ts +10 -9
  383. package/lib/shell-components/services/shell.modules.service.d.ts.map +1 -0
  384. package/lib/shell-components/services/signalr.service.d.ts +26 -25
  385. package/lib/shell-components/services/signalr.service.d.ts.map +1 -0
  386. package/lib/shell-components/services/theme.service.d.ts +15 -14
  387. package/lib/shell-components/services/theme.service.d.ts.map +1 -0
  388. package/lib/shell-components/shell.module.d.ts +120 -119
  389. package/lib/shell-components/shell.module.d.ts.map +1 -0
  390. package/lib/shell-components/shell.routing.d.ts +3 -2
  391. package/lib/shell-components/shell.routing.d.ts.map +1 -0
  392. package/lib/shell-components/store/actions/authentication.actions.d.ts +328 -327
  393. package/lib/shell-components/store/actions/authentication.actions.d.ts.map +1 -0
  394. package/lib/shell-components/store/actions/chat.actions.d.ts +400 -399
  395. package/lib/shell-components/store/actions/chat.actions.d.ts.map +1 -0
  396. package/lib/shell-components/store/actions/menuitems.actions.d.ts +52 -51
  397. package/lib/shell-components/store/actions/menuitems.actions.d.ts.map +1 -0
  398. package/lib/shell-components/store/actions/notification-validator.action.d.ts +26 -25
  399. package/lib/shell-components/store/actions/notification-validator.action.d.ts.map +1 -0
  400. package/lib/shell-components/store/actions/notifications.actions.d.ts +117 -116
  401. package/lib/shell-components/store/actions/notifications.actions.d.ts.map +1 -0
  402. package/lib/shell-components/store/effects/authentication.effects.d.ts +55 -54
  403. package/lib/shell-components/store/effects/authentication.effects.d.ts.map +1 -0
  404. package/lib/shell-components/store/effects/chat.effects.d.ts +31 -30
  405. package/lib/shell-components/store/effects/chat.effects.d.ts.map +1 -0
  406. package/lib/shell-components/store/effects/index.d.ts +2 -1
  407. package/lib/shell-components/store/effects/index.d.ts.map +1 -0
  408. package/lib/shell-components/store/effects/menuitems.effects.d.ts +18 -17
  409. package/lib/shell-components/store/effects/menuitems.effects.d.ts.map +1 -0
  410. package/lib/shell-components/store/effects/notification-validator.effects.d.ts +22 -21
  411. package/lib/shell-components/store/effects/notification-validator.effects.d.ts.map +1 -0
  412. package/lib/shell-components/store/effects/notifications.effects.d.ts +24 -23
  413. package/lib/shell-components/store/effects/notifications.effects.d.ts.map +1 -0
  414. package/lib/shell-components/store/reducers/authentication.reducers.d.ts +31 -30
  415. package/lib/shell-components/store/reducers/authentication.reducers.d.ts.map +1 -0
  416. package/lib/shell-components/store/reducers/chat.reducers.d.ts +18 -17
  417. package/lib/shell-components/store/reducers/chat.reducers.d.ts.map +1 -0
  418. package/lib/shell-components/store/reducers/index.d.ts +60 -59
  419. package/lib/shell-components/store/reducers/index.d.ts.map +1 -0
  420. package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +12 -11
  421. package/lib/shell-components/store/reducers/menuitems.reducers.d.ts.map +1 -0
  422. package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +6 -5
  423. package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts.map +1 -0
  424. package/lib/shell-components/store/reducers/notifications.reducers.d.ts +11 -10
  425. package/lib/shell-components/store/reducers/notifications.reducers.d.ts.map +1 -0
  426. package/package.json +5 -2
  427. package/public-api.d.ts +83 -82
  428. package/public-api.d.ts.map +1 -0
  429. package/store/reducers/index.d.ts +25 -24
  430. package/store/reducers/index.d.ts.map +1 -0
  431. package/thetradeengineorg1-snova-shell-module.d.ts +6 -5
  432. package/thetradeengineorg1-snova-shell-module.d.ts.map +1 -0
@@ -1,143 +1,438 @@
1
- import { Component, Inject, ViewChildren } from "@angular/core";
2
- import { MAT_DIALOG_DATA } from "@angular/material/dialog";
3
- import { LocalStorageProperties } from '../../../globaldependencies/constants/localstorage-properties';
4
- import '../../../globaldependencies/helpers/fontawesome-icons';
5
- import { PurchaseMoreLicensesComponent } from './purchase-more-licenses';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "ngx-toastr";
8
- import * as i2 from "../../services/payment.service";
9
- import * as i3 from "@angular/router";
10
- import * as i4 from "ngx-cookie-service";
11
- import * as i5 from "@angular/material/dialog";
12
- import * as i6 from "@angular/material/card";
13
- import * as i7 from "@angular/material/button";
14
- import * as i8 from "@ncstate/sat-popover";
15
- import * as i9 from "@fortawesome/angular-fontawesome";
16
- import * as i10 from "@angular/flex-layout/flex";
17
- import * as i11 from "@angular/common";
18
- export class ProductAndServicesComponent {
19
- constructor(data, toastr, paymentService, router, cookieService, dialog) {
20
- this.data = data;
21
- this.toastr = toastr;
22
- this.paymentService = paymentService;
23
- this.router = router;
24
- this.cookieService = cookieService;
25
- this.dialog = dialog;
26
- this.isSubscriptionCancel = false;
27
- this.isAnyOperationIsInprogress = false;
28
- this.isFromRoute = false;
29
- this.totalNoOfActiveUsers = 0;
30
- this.totalNoOfPurchases = 0;
31
- this.isShowRenewal = false;
32
- this.productName = "Snovasys";
33
- this.isTrailValid = true;
34
- this.noOfDays = 0;
35
- this.isLoading = true;
36
- }
37
- ngOnInit() {
38
- if (this.cookieService.check(LocalStorageProperties.CompanyDetails) && this.cookieService.check(LocalStorageProperties.CompanyId)) {
39
- this.company = JSON.parse(this.cookieService.get(LocalStorageProperties.CompanyDetails));
40
- this.noOfDays = this.company != null && this.company != undefined ? this.company.trailDays : 0;
41
- }
42
- this.getActiveUsersCount();
43
- this.getPurchasedLicensesCount();
44
- this.getPaymentHistory();
45
- }
46
- cancelSubscription() {
47
- this.paymentService.cancelSubscription().subscribe((responseData) => {
48
- if (responseData.success == true) {
49
- this.toastr.success("Your subscription has been cancelled successfully");
50
- this.isSubscriptionCancel = true;
51
- setTimeout(() => {
52
- this.getPurchasedLicensesCount();
53
- this.getPaymentHistory();
54
- }, 2000);
55
- }
56
- else {
57
- this.toastr.error(responseData.apiResponseMessages[0].message);
58
- this.isSubscriptionCancel = false;
59
- }
60
- });
61
- }
62
- getActiveUsersCount() {
63
- this.paymentService.getActiveUsersCount().subscribe((responseData) => {
64
- if (responseData.success == true) {
65
- this.totalNoOfActiveUsers = responseData.data;
66
- }
67
- });
68
- }
69
- getPurchasedLicensesCount() {
70
- this.isLoading = true;
71
- this.paymentService.getPurchasedLicensesCount().subscribe((responseData) => {
72
- if (responseData.success == true) {
73
- if (responseData.data) {
74
- this.totalNoOfPurchases = responseData.data.purchasedLicensesCount;
75
- this.isShowRenewal = responseData.data.isShowRenewal;
76
- this.productName = responseData.data.purchaseType;
77
- this.isTrailValid = false;
78
- this.renewalDate = responseData.data.renewalDate;
79
- this.isCancelled = responseData.data.isCancelled;
80
- this.subscriptionType = responseData.data.subscriptionType;
81
- }
82
- else {
83
- this.isTrailValid = true;
84
- }
85
- }
86
- this.isLoading = false;
87
- });
88
- }
89
- navigateToSubscription() {
90
- this.router.navigate(["/shell/payments-plans"]);
91
- }
92
- purchaseMoreLicenses() {
93
- const dialogRef = this.dialog.open(PurchaseMoreLicensesComponent, {
94
- height: "45%",
95
- width: "28%",
96
- hasBackdrop: true,
97
- direction: "ltr",
98
- data: { noOfPurchases: this.totalNoOfPurchases, productName: this.productName, subscriptionType: this.subscriptionType },
99
- disableClose: true
100
- });
101
- dialogRef.afterClosed().subscribe((result) => {
102
- if (result != undefined && result.isReload == true) {
103
- this.getPaymentHistory();
104
- this.getPurchasedLicensesCount();
105
- }
106
- });
107
- }
108
- navigateToPlans() {
109
- this.router.navigate(["/shell/payments-plans"]);
110
- }
111
- getPaymentHistory() {
112
- this.paymentService.getPaymentHistory().subscribe((responseData) => {
113
- if (responseData.success == true) {
114
- this.paymentHistory = responseData.data;
115
- }
116
- else {
117
- this.toastr.error(responseData.apiResponseMessages[0].message);
118
- }
119
- });
120
- }
121
- openpop(closeBookingPopup) {
122
- closeBookingPopup.openPopover();
123
- }
124
- close() {
125
- this.closeBookingPopup.forEach((p) => p.closePopover());
126
- }
127
- }
128
- ProductAndServicesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: ProductAndServicesComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.ToastrService }, { token: i2.PaymentService }, { token: i3.Router }, { token: i4.CookieService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
129
- ProductAndServicesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: ProductAndServicesComponent, selector: "app-product-services-component", viewQueries: [{ propertyName: "closeBookingPopup", predicate: ["closeBookingPopup"], descendants: true }], ngImport: i0, template: "<div fxFlex fxFlex=\"100\">\r\n <h4 class=\"ml-1 mt-05\">Products & Services</h4>\r\n <hr>\r\n</div>\r\n<mat-card>\r\n <div style=\"height:fit-content;border: 1px solid #eceaea;margin: 0;padding: 0px 10px 0px 10px; background: aliceblue;\"\r\n fxLayout=\"row\">\r\n <div fxFlex=\"80\" style=\"padding-top: 15px !important;\">\r\n <span> Customize and enhance your plan with additional features.\r\n </span>\r\n </div>\r\n <div fxFlex=\"20\" style=\"text-align: right;\">\r\n <button mat-raised-button color=\"primary\" type=\"submit\" class=\"ml-05 mt-05 mb-05\"\r\n (click)=\"openpop(closeBookingPopup)\" [satPopoverAnchorFor]=\"feedTimeSheet\"\r\n #closeBookingPopup=\"satPopoverAnchor\">\r\n Customize\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</mat-card>\r\n<mat-card *ngIf=\"!isLoading\">\r\n <div style=\"height: fit-content;border: 1px solid #eceaea;margin: 0;padding: 0px 10px 0px 10px;\" fxLayout=\"row\"\r\n *ngIf=\"isCancelled\">\r\n <div fxFlex=\"80\" style=\"padding-top: 15px !important;\">\r\n <span> We are sorry to see you go. Thank you for letting us to be a part of your growth so far. We'll miss\r\n you around here! If you decide you'd like to continue using this product, you can renew at any time by\r\n clicking on the subscribe button. We hope to see you around! Thank you.\r\n </span>\r\n </div>\r\n <div fxFlex=\"20\" style=\"text-align: right;\">\r\n <button mat-raised-button color=\"primary\" type=\"submit\" class=\"ml-05 mt-05\"\r\n (click)=\"navigateToSubscription()\">\r\n Subscribe\r\n </button>\r\n </div>\r\n </div>\r\n <div style=\"height: fit-content;border: 1px solid #eceaea;margin: 0;padding: 0px 10px 0px 10px; \" fxLayout=\"row\"\r\n *ngIf=\"isTrailValid\">\r\n <div fxFlex=\"80\" style=\"padding-top: 15px !important;\">\r\n <span> It looks like you\u2019ve already seen some great results with our Product. This is a great time to\r\n consider taking a look at our different plans, so that you can take full advantage of our Product. As\r\n your trail is going to expire in {{noOfDays}} days, please have a look at our different plans and\r\n subscribe to them.\r\n </span>\r\n </div>\r\n <div fxFlex=\"20\" style=\"text-align: right;\">\r\n <button mat-raised-button color=\"primary\" type=\"submit\" class=\"ml-05 mt-05\"\r\n (click)=\"navigateToSubscription()\">\r\n Subscribe\r\n </button>\r\n </div>\r\n </div>\r\n <div style=\"height: fit-content;border: 1px solid #eceaea;margin: 0;padding: 15px;\" fxLayout=\"row\"\r\n *ngIf=\"isTrailValid == false && !isCancelled\">\r\n\r\n <div fxFlex=\"70\">\r\n <label><b>{{productName}}</b></label><br>\r\n <span>{{totalNoOfActiveUsers}} of {{totalNoOfPurchases}} Users assigned</span><br>\r\n <span>Automatically renews on {{renewalDate | date}}. <a (click)=\"cancelSubscription()\"\r\n style=\"cursor: pointer; color: #337ab7 !important; text-decoration: none !important; \">Cancel\r\n subscription</a></span>\r\n </div>\r\n <div fxFlex=\"30\" style=\"text-align: right;\">\r\n <button mat-raised-button color=\"primary\" type=\"submit\" class=\"ml-05 mt-05\" *ngIf=\"!isCancelled\"\r\n (click)=\"purchaseMoreLicenses()\">\r\n Purchase more licenses\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" class=\"ml-05 mt-05\" *ngIf=\"!isCancelled\"\r\n (click)=\"navigateToPlans()\">\r\n Change Plan\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div style=\"height: fit-content;border: 1px solid #eceaea;margin: 0;padding: 0px 10px 0px 10px;\" fxLayout=\"row\"\r\n *ngFor=\"let history of paymentHistory\">\r\n <div fxFlex=\"70\" style=\"padding-top: 15px !important;\">\r\n <table style=\"width: 100%;\">\r\n <tr fxLayout=\"row\">\r\n <span style=\"font-weight: bold;\">Subscription term : {{history.startTime | date}} to\r\n {{history.endTime | date}}</span>\r\n </tr>\r\n <tr fxLayout=\"row\" *ngIf=\"!history.isUpdate\">\r\n <td fxFlex=\"80\"><span>{{history.purchaseType}} ({{history.noofpurchasedlicences}} Users Included)<br>\r\n Billed every {{history.subscriptionType}} </span>\r\n </td>\r\n <td fxFlex=\"20\"> \u00A3{{history.totalAmountPaid}}</td>\r\n </tr>\r\n <tr fxLayout=\"row\" *ngIf=\"history.isUpdate\">\r\n <td fxFlex=\"80\"><span>{{history.purchaseType}} ({{history.originalPurchases}} Users Included)\r\n </span>\r\n </td>\r\n <td fxFlex=\"20\">\r\n \u00A3{{history.totalAmountPaid / history.noofpurchasedlicences * history.originalPurchases }}</td>\r\n </tr>\r\n <tr fxLayout=\"row\" *ngIf=\"history.isUpdate\">\r\n <td fxFlex=\"80\"><span>{{history.purchaseType}} Additional Users\r\n ({{history.noofpurchasedlicences - history.originalPurchases}} Users)</span>\r\n </td>\r\n <td fxFlex=\"20\">\r\n \u00A3{{history.totalAmountPaid / history.noofpurchasedlicences * ( history.noofpurchasedlicences - history.originalPurchases)}}\r\n </td>\r\n </tr>\r\n <tr fxLayout=\"row\" *ngIf=\"history.isUpdate\">\r\n <td fxFlex=\"80\">{{history.purchaseType}} Total ({{history.noofpurchasedlicences}} Users)<br>\r\n <span style=\"font-size: 14px;\"> Billed every {{history.subscriptionType}}</span>\r\n </td>\r\n <td fxFlex=\"20\"> \u00A3{{history.totalAmountPaid}}</td>\r\n </tr>\r\n <tr *ngIf=\"history.isCancelled\">\r\n <span>Subscription was cancelled at {{history.cancelledDate | date}}</span>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n\r\n</mat-card>\r\n<sat-popover #feedTimeSheet [autoFocus]=\"false\" hasBackdrop backdropClass=\"backdrop-color\" [restoreFocus]=\"false\"\r\n [interactiveClose]=\"false\" scrollStrategy=\"reposition\" verticalAlign=\"below\" horizontalAlign=\"before\">\r\n <mat-card class=\"filter-data p-0\" style=\"min-height: 150px;\">\r\n\r\n <div class=\"custom-dialog\">\r\n <div class=\"custom-close ml-lg-n4 mt-0 mt-lg-n4 ml-n3 \" mat-dialog-close (click)=\"close()\">\r\n <fa-icon icon=\"times\" class=\"project-dialog\"></fa-icon>\r\n </div>\r\n </div>\r\n <mat-card-title class=\"text-center\">\r\n <div class=\"card-title-text mat-bg-primary p-05 mb-1\">\r\n <h4 class=\"mt-05\"> Customize site</h4>\r\n </div>\r\n\r\n </mat-card-title>\r\n <mat-card-content class=\"card-content\">\r\n <div fxFlex=\"100\" class=\"mt-2\" style=\"text-align: center;\">\r\n If there is need to customize the site, then please call 0044-7944144944.\r\n </div>\r\n <!-- <div fxFlex=\"100\" class=\"mt-2\" style=\"text-align: center;\">\r\n <button mat-raised-button class=\"mr-1\" color=\"primary\" (click)=\"close()\" type=\"submit\">\r\n No\r\n </button>\r\n </div> -->\r\n </mat-card-content>\r\n </mat-card>\r\n</sat-popover>", components: [{ type: i6.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.SatPopover, selector: "sat-popover", inputs: ["backdropClass", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { type: i9.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "listItem", "rotate", "fixedWidth", "transform"] }], directives: [{ type: i10.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i8.SatPopoverAnchor, selector: "[satPopoverAnchorFor]", inputs: ["satPopoverAnchorFor"], outputs: ["popoverOpened", "popoverClosed"], exportAs: ["satPopoverAnchor"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i6.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }], pipes: { "date": i11.DatePipe } });
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: ProductAndServicesComponent, decorators: [{
131
- type: Component,
132
- args: [{
133
- selector: "app-product-services-component",
134
- templateUrl: "./product-service.component.html"
135
- }]
136
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
137
- type: Inject,
138
- args: [MAT_DIALOG_DATA]
139
- }] }, { type: i1.ToastrService }, { type: i2.PaymentService }, { type: i3.Router }, { type: i4.CookieService }, { type: i5.MatDialog }]; }, propDecorators: { closeBookingPopup: [{
140
- type: ViewChildren,
141
- args: ["closeBookingPopup"]
142
- }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zZXJ2aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvUGF5bWVudHMvcHJvZHVjdC1zZXJ2aWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvUGF5bWVudHMvcHJvZHVjdC1zZXJ2aWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFhLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQTJCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTXBGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3ZHLE9BQU8sdURBQXVELENBQUM7QUFFL0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPekUsTUFBTSxPQUFPLDJCQUEyQjtJQXNCdEMsWUFBNEMsSUFBUyxFQUMzQyxNQUFxQixFQUNuQixjQUE4QixFQUMvQixNQUFjLEVBQ2IsYUFBNEIsRUFDL0IsTUFBaUI7UUFMa0IsU0FBSSxHQUFKLElBQUksQ0FBSztRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQXJCMUIseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBQ3RD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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdFRhYkNoYW5nZUV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xyXG5pbXBvcnQgJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL2ZvbnRhd2Vzb21lLWljb25zJztcclxuaW1wb3J0IHsgUGF5bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQdXJjaGFzZU1vcmVMaWNlbnNlc0NvbXBvbmVudCB9IGZyb20gJy4vcHVyY2hhc2UtbW9yZS1saWNlbnNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtcHJvZHVjdC1zZXJ2aWNlcy1jb21wb25lbnRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3Byb2R1Y3Qtc2VydmljZS5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdEFuZFNlcnZpY2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG4gIHNlbGVjdGVkVGFiOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRUYWJJbmRleDogbnVtYmVyO1xyXG4gIHBheW1lbnREZXRhaWxzOiBhbnk7XHJcbiAgaXNTdWJzY3JpcHRpb25DYW5jZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0FueU9wZXJhdGlvbklzSW5wcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRnJvbVJvdXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG90YWxOb09mQWN0aXZlVXNlcnM6IGFueSA9IDA7XHJcbiAgdG90YWxOb09mUHVyY2hhc2VzOiBhbnkgPSAwO1xyXG4gIGlzU2hvd1JlbmV3YWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm9kdWN0TmFtZTogc3RyaW5nID0gXCJTbm92YXN5c1wiO1xyXG4gIGlzVHJhaWxWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgbm9PZkRheXM6IGFueSA9IDA7XHJcbiAgY29tcGFueTogYW55O1xyXG4gIHJlbmV3YWxEYXRlOiBhbnk7XHJcbiAgaXNDYW5jZWxsZWQ6IGJvb2xlYW47XHJcbiAgc3Vic2NyaXB0aW9uVHlwZTogYW55O1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgcGF5bWVudEhpc3RvcnkgOiBhbnk7XHJcbiAgQFZpZXdDaGlsZHJlbihcImNsb3NlQm9va2luZ1BvcHVwXCIpIGNsb3NlQm9va2luZ1BvcHVwO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBwYXltZW50U2VydmljZTogUGF5bWVudFNlcnZpY2VcclxuICAgICwgcHVibGljIHJvdXRlcjogUm91dGVyXHJcbiAgICAsIHByaXZhdGUgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykgJiYgdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueUlkKSkge1xyXG4gICAgICB0aGlzLmNvbXBhbnkgPSBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykpO1xyXG4gICAgICB0aGlzLm5vT2ZEYXlzID0gdGhpcy5jb21wYW55ICE9IG51bGwgJiYgdGhpcy5jb21wYW55ICE9IHVuZGVmaW5lZCA/IHRoaXMuY29tcGFueS50cmFpbERheXMgOiAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRBY3RpdmVVc2Vyc0NvdW50KCk7XHJcbiAgICB0aGlzLmdldFB1cmNoYXNlZExpY2Vuc2VzQ291bnQoKTtcclxuICAgIHRoaXMuZ2V0UGF5bWVudEhpc3RvcnkoKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbFN1YnNjcmlwdGlvbigpIHtcclxuICAgIHRoaXMucGF5bWVudFNlcnZpY2UuY2FuY2VsU3Vic2NyaXB0aW9uKCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoXCJZb3VyIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQgc3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICAgIHRoaXMuaXNTdWJzY3JpcHRpb25DYW5jZWwgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgIHRoaXMuZ2V0UHVyY2hhc2VkTGljZW5zZXNDb3VudCgpO1xyXG4gICAgICAgICAgdGhpcy5nZXRQYXltZW50SGlzdG9yeSgpO1xyXG4gICAgIH0sIDIwMDApO1xyXG4gICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2VEYXRhLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5pc1N1YnNjcmlwdGlvbkNhbmNlbCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0QWN0aXZlVXNlcnNDb3VudCgpIHtcclxuICAgIHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0QWN0aXZlVXNlcnNDb3VudCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnRvdGFsTm9PZkFjdGl2ZVVzZXJzID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHVyY2hhc2VkTGljZW5zZXNDb3VudCgpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0UHVyY2hhc2VkTGljZW5zZXNDb3VudCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IHRydWUpIHtcclxuICAgICAgICBpZiAocmVzcG9uc2VEYXRhLmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMudG90YWxOb09mUHVyY2hhc2VzID0gcmVzcG9uc2VEYXRhLmRhdGEucHVyY2hhc2VkTGljZW5zZXNDb3VudDtcclxuICAgICAgICAgIHRoaXMuaXNTaG93UmVuZXdhbCA9IHJlc3BvbnNlRGF0YS5kYXRhLmlzU2hvd1JlbmV3YWw7XHJcbiAgICAgICAgICB0aGlzLnByb2R1Y3ROYW1lID0gcmVzcG9uc2VEYXRhLmRhdGEucHVyY2hhc2VUeXBlO1xyXG4gICAgICAgICAgdGhpcy5pc1RyYWlsVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVuZXdhbERhdGUgPSByZXNwb25zZURhdGEuZGF0YS5yZW5ld2FsRGF0ZTtcclxuICAgICAgICAgIHRoaXMuaXNDYW5jZWxsZWQgPSByZXNwb25zZURhdGEuZGF0YS5pc0NhbmNlbGxlZDtcclxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uVHlwZSA9IHJlc3BvbnNlRGF0YS5kYXRhLnN1YnNjcmlwdGlvblR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc1RyYWlsVmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvU3Vic2NyaXB0aW9uKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3NoZWxsL3BheW1lbnRzLXBsYW5zXCJdKTtcclxuICB9XHJcblxyXG4gIHB1cmNoYXNlTW9yZUxpY2Vuc2VzKCkge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihQdXJjaGFzZU1vcmVMaWNlbnNlc0NvbXBvbmVudCwge1xyXG4gICAgICBoZWlnaHQ6IFwiNDUlXCIsXHJcbiAgICAgIHdpZHRoOiBcIjI4JVwiLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgZGlyZWN0aW9uOiBcImx0clwiLFxyXG4gICAgICBkYXRhOiB7IG5vT2ZQdXJjaGFzZXM6IHRoaXMudG90YWxOb09mUHVyY2hhc2VzLCBwcm9kdWN0TmFtZTogdGhpcy5wcm9kdWN0TmFtZSwgc3Vic2NyaXB0aW9uVHlwZTogdGhpcy5zdWJzY3JpcHRpb25UeXBlIH0sXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZihyZXN1bHQgIT11bmRlZmluZWQgJiYgcmVzdWx0LmlzUmVsb2FkID09IHRydWUpe1xyXG4gICAgICAgIHRoaXMuZ2V0UGF5bWVudEhpc3RvcnkoKTtcclxuICAgICAgICB0aGlzLmdldFB1cmNoYXNlZExpY2Vuc2VzQ291bnQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5hdmlnYXRlVG9QbGFucygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9zaGVsbC9wYXltZW50cy1wbGFuc1wiXSk7XHJcbiAgfVxyXG4gIGdldFBheW1lbnRIaXN0b3J5KCl7XHJcbiAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldFBheW1lbnRIaXN0b3J5KCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMucGF5bWVudEhpc3RvcnkgPSByZXNwb25zZURhdGEuZGF0YVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlRGF0YS5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgb3BlbnBvcChjbG9zZUJvb2tpbmdQb3B1cCkge1xyXG4gICAgY2xvc2VCb29raW5nUG9wdXAub3BlblBvcG92ZXIoKTtcclxuICB9XHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNsb3NlQm9va2luZ1BvcHVwLmZvckVhY2goKHApID0+IHAuY2xvc2VQb3BvdmVyKCkpO1xyXG59XHJcblxyXG59XHJcbiIsIjxkaXYgZnhGbGV4IGZ4RmxleD1cIjEwMFwiPlxyXG4gICAgPGg0IGNsYXNzPVwibWwtMSBtdC0wNVwiPlByb2R1Y3RzICYgU2VydmljZXM8L2g0PlxyXG4gICAgPGhyPlxyXG48L2Rpdj5cclxuPG1hdC1jYXJkPlxyXG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDpmaXQtY29udGVudDtib3JkZXI6IDFweCBzb2xpZCAjZWNlYWVhO21hcmdpbjogMDtwYWRkaW5nOiAwcHggMTBweCAwcHggMTBweDsgYmFja2dyb3VuZDogYWxpY2VibHVlO1wiXHJcbiAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjgwXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICA8c3Bhbj4gQ3VzdG9taXplIGFuZCBlbmhhbmNlIHlvdXIgcGxhbiB3aXRoIGFkZGl0aW9uYWwgZmVhdHVyZXMuXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjIwXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJtbC0wNSBtdC0wNSBtYi0wNVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbnBvcChjbG9zZUJvb2tpbmdQb3B1cClcIiBbc2F0UG9wb3ZlckFuY2hvckZvcl09XCJmZWVkVGltZVNoZWV0XCJcclxuICAgICAgICAgICAgICAgICNjbG9zZUJvb2tpbmdQb3B1cD1cInNhdFBvcG92ZXJBbmNob3JcIj5cclxuICAgICAgICAgICAgICAgIEN1c3RvbWl6ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9tYXQtY2FyZD5cclxuPG1hdC1jYXJkICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogZml0LWNvbnRlbnQ7Ym9yZGVyOiAxcHggc29saWQgI2VjZWFlYTttYXJnaW46IDA7cGFkZGluZzogMHB4IDEwcHggMHB4IDEwcHg7XCIgZnhMYXlvdXQ9XCJyb3dcIlxyXG4gICAgICAgICpuZ0lmPVwiaXNDYW5jZWxsZWRcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjgwXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICA8c3Bhbj4gV2UgYXJlIHNvcnJ5IHRvIHNlZSB5b3UgZ28uIFRoYW5rIHlvdSBmb3IgbGV0dGluZyB1cyB0byBiZSBhIHBhcnQgb2YgeW91ciBncm93dGggc28gZmFyLiBXZSdsbCBtaXNzXHJcbiAgICAgICAgICAgICAgICB5b3UgYXJvdW5kIGhlcmUhIElmIHlvdSBkZWNpZGUgeW91J2QgbGlrZSB0byBjb250aW51ZSB1c2luZyB0aGlzIHByb2R1Y3QsIHlvdSBjYW4gcmVuZXcgYXQgYW55IHRpbWUgYnlcclxuICAgICAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZSBzdWJzY3JpYmUgYnV0dG9uLiBXZSBob3BlIHRvIHNlZSB5b3UgYXJvdW5kISBUaGFuayB5b3UuXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjIwXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJtbC0wNSBtdC0wNVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1N1YnNjcmlwdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICBTdWJzY3JpYmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IGZpdC1jb250ZW50O2JvcmRlcjogMXB4IHNvbGlkICNlY2VhZWE7bWFyZ2luOiAwO3BhZGRpbmc6IDBweCAxMHB4IDBweCAxMHB4OyBcIiBmeExheW91dD1cInJvd1wiXHJcbiAgICAgICAgKm5nSWY9XCJpc1RyYWlsVmFsaWRcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjgwXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICA8c3Bhbj4gSXQgbG9va3MgbGlrZSB5b3XigJl2ZSBhbHJlYWR5IHNlZW4gc29tZSBncmVhdCByZXN1bHRzIHdpdGggb3VyIFByb2R1Y3QuIFRoaXMgaXMgYSBncmVhdCB0aW1lIHRvXHJcbiAgICAgICAgICAgICAgICBjb25zaWRlciB0YWtpbmcgYSBsb29rIGF0IG91ciBkaWZmZXJlbnQgcGxhbnMsIHNvIHRoYXQgeW91IGNhbiB0YWtlIGZ1bGwgYWR2YW50YWdlIG9mIG91ciBQcm9kdWN0LiBBc1xyXG4gICAgICAgICAgICAgICAgeW91ciB0cmFpbCBpcyBnb2luZyB0byBleHBpcmUgaW4ge3tub09mRGF5c319IGRheXMsIHBsZWFzZSBoYXZlIGEgbG9vayBhdCBvdXIgZGlmZmVyZW50IHBsYW5zIGFuZFxyXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlIHRvIHRoZW0uXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjIwXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJtbC0wNSBtdC0wNVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1N1YnNjcmlwdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICBTdWJzY3JpYmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IGZpdC1jb250ZW50O2JvcmRlcjogMXB4IHNvbGlkICNlY2VhZWE7bWFyZ2luOiAwO3BhZGRpbmc6IDE1cHg7XCIgZnhMYXlvdXQ9XCJyb3dcIlxyXG4gICAgICAgICpuZ0lmPVwiaXNUcmFpbFZhbGlkID09IGZhbHNlICYmICFpc0NhbmNlbGxlZFwiPlxyXG5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjcwXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD48Yj57e3Byb2R1Y3ROYW1lfX08L2I+PC9sYWJlbD48YnI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7dG90YWxOb09mQWN0aXZlVXNlcnN9fSBvZiB7e3RvdGFsTm9PZlB1cmNoYXNlc319IFVzZXJzIGFzc2lnbmVkPC9zcGFuPjxicj5cclxuICAgICAgICAgICAgPHNwYW4+QXV0b21hdGljYWxseSByZW5ld3Mgb24ge3tyZW5ld2FsRGF0ZSB8IGRhdGV9fS4gPGEgKGNsaWNrKT1cImNhbmNlbFN1YnNjcmlwdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsgY29sb3I6ICMzMzdhYjcgIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7IFwiPkNhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjwvYT48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCIzMFwiIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwibWwtMDUgbXQtMDVcIiAqbmdJZj1cIiFpc0NhbmNlbGxlZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHVyY2hhc2VNb3JlTGljZW5zZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgUHVyY2hhc2UgbW9yZSBsaWNlbnNlc1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJtbC0wNSBtdC0wNVwiICpuZ0lmPVwiIWlzQ2FuY2VsbGVkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUGxhbnMoKVwiPlxyXG4gICAgICAgICAgICAgICAgQ2hhbmdlIFBsYW5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiBmaXQtY29udGVudDtib3JkZXI6IDFweCBzb2xpZCAjZWNlYWVhO21hcmdpbjogMDtwYWRkaW5nOiAwcHggMTBweCAwcHggMTBweDtcIiBmeExheW91dD1cInJvd1wiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGhpc3Rvcnkgb2YgcGF5bWVudEhpc3RvcnlcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjcwXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgIDx0ciBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+U3Vic2NyaXB0aW9uIHRlcm0gOiB7e2hpc3Rvcnkuc3RhcnRUaW1lIHwgZGF0ZX19IHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aGlzdG9yeS5lbmRUaW1lIHwgZGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0ciBmeExheW91dD1cInJvd1wiICpuZ0lmPVwiIWhpc3RvcnkuaXNVcGRhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgZnhGbGV4PVwiODBcIj48c3Bhbj57e2hpc3RvcnkucHVyY2hhc2VUeXBlfX0gKHt7aGlzdG9yeS5ub29mcHVyY2hhc2VkbGljZW5jZXN9fSBVc2VycyBJbmNsdWRlZCk8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWxsZWQgZXZlcnkge3toaXN0b3J5LnN1YnNjcmlwdGlvblR5cGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgZnhGbGV4PVwiMjBcIj4gwqN7e2hpc3RvcnkudG90YWxBbW91bnRQYWlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0ciBmeExheW91dD1cInJvd1wiICpuZ0lmPVwiaGlzdG9yeS5pc1VwZGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmeEZsZXg9XCI4MFwiPjxzcGFuPnt7aGlzdG9yeS5wdXJjaGFzZVR5cGV9fSAoe3toaXN0b3J5Lm9yaWdpbmFsUHVyY2hhc2VzfX0gVXNlcnMgSW5jbHVkZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmeEZsZXg9XCIyMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDCo3t7aGlzdG9yeS50b3RhbEFtb3VudFBhaWQgLyBoaXN0b3J5Lm5vb2ZwdXJjaGFzZWRsaWNlbmNlcyAqIGhpc3Rvcnkub3JpZ2luYWxQdXJjaGFzZXMgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0ciBmeExheW91dD1cInJvd1wiICpuZ0lmPVwiaGlzdG9yeS5pc1VwZGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmeEZsZXg9XCI4MFwiPjxzcGFuPnt7aGlzdG9yeS5wdXJjaGFzZVR5cGV9fSBBZGRpdGlvbmFsIFVzZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3toaXN0b3J5Lm5vb2ZwdXJjaGFzZWRsaWNlbmNlcyAtIGhpc3Rvcnkub3JpZ2luYWxQdXJjaGFzZXN9fSBVc2Vycyk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgZnhGbGV4PVwiMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgwqN7e2hpc3RvcnkudG90YWxBbW91bnRQYWlkIC8gaGlzdG9yeS5ub29mcHVyY2hhc2VkbGljZW5jZXMgKiAoIGhpc3Rvcnkubm9vZnB1cmNoYXNlZGxpY2VuY2VzIC0gaGlzdG9yeS5vcmlnaW5hbFB1cmNoYXNlcyl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyIGZ4TGF5b3V0PVwicm93XCIgKm5nSWY9XCJoaXN0b3J5LmlzVXBkYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGZ4RmxleD1cIjgwXCI+e3toaXN0b3J5LnB1cmNoYXNlVHlwZX19IFRvdGFsICh7e2hpc3Rvcnkubm9vZnB1cmNoYXNlZGxpY2VuY2VzfX0gVXNlcnMpPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj4gQmlsbGVkIGV2ZXJ5IHt7aGlzdG9yeS5zdWJzY3JpcHRpb25UeXBlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgZnhGbGV4PVwiMjBcIj4gwqN7e2hpc3RvcnkudG90YWxBbW91bnRQYWlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImhpc3RvcnkuaXNDYW5jZWxsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TdWJzY3JpcHRpb24gd2FzIGNhbmNlbGxlZCBhdCB7e2hpc3RvcnkuY2FuY2VsbGVkRGF0ZSB8IGRhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvbWF0LWNhcmQ+XHJcbjxzYXQtcG9wb3ZlciAjZmVlZFRpbWVTaGVldCBbYXV0b0ZvY3VzXT1cImZhbHNlXCIgaGFzQmFja2Ryb3AgYmFja2Ryb3BDbGFzcz1cImJhY2tkcm9wLWNvbG9yXCIgW3Jlc3RvcmVGb2N1c109XCJmYWxzZVwiXHJcbiAgICBbaW50ZXJhY3RpdmVDbG9zZV09XCJmYWxzZVwiIHNjcm9sbFN0cmF0ZWd5PVwicmVwb3NpdGlvblwiIHZlcnRpY2FsQWxpZ249XCJiZWxvd1wiIGhvcml6b250YWxBbGlnbj1cImJlZm9yZVwiPlxyXG4gICAgPG1hdC1jYXJkIGNsYXNzPVwiZmlsdGVyLWRhdGEgcC0wXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiAxNTBweDtcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kaWFsb2dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jbG9zZSBtbC1sZy1uNCBtdC0wIG10LWxnLW40IG1sLW4zIFwiIG1hdC1kaWFsb2ctY2xvc2UgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiIGNsYXNzPVwicHJvamVjdC1kaWFsb2dcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlLXRleHQgbWF0LWJnLXByaW1hcnkgcC0wNSBtYi0xXCI+XHJcbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtdC0wNVwiPiBDdXN0b21pemUgc2l0ZTwvaDQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJtdC0yXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICBJZiB0aGVyZSBpcyBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgc2l0ZSwgdGhlbiBwbGVhc2UgY2FsbCAwMDQ0LTc5NDQxNDQ5NDQuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJtdC0yXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwibXItMVwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbG9zZSgpXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIE5vXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbjwvc2F0LXBvcG92ZXI+Il19
1
+ import { Component, Inject, ViewChildren } from "@angular/core";
2
+ import { MAT_DIALOG_DATA } from "@angular/material/dialog";
3
+ import { LocalStorageProperties } from '../../../globaldependencies/constants/localstorage-properties';
4
+ import '../../../globaldependencies/helpers/fontawesome-icons';
5
+ import { PurchaseMoreLicensesComponent } from './purchase-more-licenses';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "ngx-toastr";
8
+ import * as i2 from "../../services/payment.service";
9
+ import * as i3 from "@angular/router";
10
+ import * as i4 from "ngx-cookie-service";
11
+ import * as i5 from "@angular/material/dialog";
12
+ import * as i6 from "@angular/flex-layout/flex";
13
+ import * as i7 from "@angular/material/card";
14
+ import * as i8 from "@angular/material/button";
15
+ import * as i9 from "@ncstate/sat-popover";
16
+ import * as i10 from "@angular/common";
17
+ import * as i11 from "@fortawesome/angular-fontawesome";
18
+ const _c0 = ["closeBookingPopup"];
19
+ function ProductAndServicesComponent_mat_card_13_div_1_Template(rf, ctx) { if (rf & 1) {
20
+ const _r8 = i0.ɵɵgetCurrentView();
21
+ i0.ɵɵelementStart(0, "div", 23);
22
+ i0.ɵɵelementStart(1, "div", 3);
23
+ i0.ɵɵelementStart(2, "span");
24
+ i0.ɵɵtext(3, " We are sorry to see you go. Thank you for letting us to be a part of your growth so far. We'll miss you around here! If you decide you'd like to continue using this product, you can renew at any time by clicking on the subscribe button. We hope to see you around! Thank you. ");
25
+ i0.ɵɵelementEnd();
26
+ i0.ɵɵelementEnd();
27
+ i0.ɵɵelementStart(4, "div", 4);
28
+ i0.ɵɵelementStart(5, "button", 24);
29
+ i0.ɵɵlistener("click", function ProductAndServicesComponent_mat_card_13_div_1_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(2); return ctx_r7.navigateToSubscription(); });
30
+ i0.ɵɵtext(6, " Subscribe ");
31
+ i0.ɵɵelementEnd();
32
+ i0.ɵɵelementEnd();
33
+ i0.ɵɵelementEnd();
34
+ } }
35
+ function ProductAndServicesComponent_mat_card_13_div_2_Template(rf, ctx) { if (rf & 1) {
36
+ const _r10 = i0.ɵɵgetCurrentView();
37
+ i0.ɵɵelementStart(0, "div", 23);
38
+ i0.ɵɵelementStart(1, "div", 3);
39
+ i0.ɵɵelementStart(2, "span");
40
+ i0.ɵɵtext(3);
41
+ i0.ɵɵelementEnd();
42
+ i0.ɵɵelementEnd();
43
+ i0.ɵɵelementStart(4, "div", 4);
44
+ i0.ɵɵelementStart(5, "button", 24);
45
+ i0.ɵɵlistener("click", function ProductAndServicesComponent_mat_card_13_div_2_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(2); return ctx_r9.navigateToSubscription(); });
46
+ i0.ɵɵtext(6, " Subscribe ");
47
+ i0.ɵɵelementEnd();
48
+ i0.ɵɵelementEnd();
49
+ i0.ɵɵelementEnd();
50
+ } if (rf & 2) {
51
+ const ctx_r4 = i0.ɵɵnextContext(2);
52
+ i0.ɵɵadvance(3);
53
+ i0.ɵɵtextInterpolate1(" It looks like you\u2019ve already seen some great results with our Product. This is a great time to consider taking a look at our different plans, so that you can take full advantage of our Product. As your trail is going to expire in ", ctx_r4.noOfDays, " days, please have a look at our different plans and subscribe to them. ");
54
+ } }
55
+ function ProductAndServicesComponent_mat_card_13_div_3_button_15_Template(rf, ctx) { if (rf & 1) {
56
+ const _r14 = i0.ɵɵgetCurrentView();
57
+ i0.ɵɵelementStart(0, "button", 24);
58
+ i0.ɵɵlistener("click", function ProductAndServicesComponent_mat_card_13_div_3_button_15_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return ctx_r13.purchaseMoreLicenses(); });
59
+ i0.ɵɵtext(1, " Purchase more licenses ");
60
+ i0.ɵɵelementEnd();
61
+ } }
62
+ function ProductAndServicesComponent_mat_card_13_div_3_button_16_Template(rf, ctx) { if (rf & 1) {
63
+ const _r16 = i0.ɵɵgetCurrentView();
64
+ i0.ɵɵelementStart(0, "button", 24);
65
+ i0.ɵɵlistener("click", function ProductAndServicesComponent_mat_card_13_div_3_button_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(3); return ctx_r15.navigateToPlans(); });
66
+ i0.ɵɵtext(1, " Change Plan ");
67
+ i0.ɵɵelementEnd();
68
+ } }
69
+ function ProductAndServicesComponent_mat_card_13_div_3_Template(rf, ctx) { if (rf & 1) {
70
+ const _r18 = i0.ɵɵgetCurrentView();
71
+ i0.ɵɵelementStart(0, "div", 25);
72
+ i0.ɵɵelementStart(1, "div", 26);
73
+ i0.ɵɵelementStart(2, "label");
74
+ i0.ɵɵelementStart(3, "b");
75
+ i0.ɵɵtext(4);
76
+ i0.ɵɵelementEnd();
77
+ i0.ɵɵelementEnd();
78
+ i0.ɵɵelement(5, "br");
79
+ i0.ɵɵelementStart(6, "span");
80
+ i0.ɵɵtext(7);
81
+ i0.ɵɵelementEnd();
82
+ i0.ɵɵelement(8, "br");
83
+ i0.ɵɵelementStart(9, "span");
84
+ i0.ɵɵtext(10);
85
+ i0.ɵɵpipe(11, "date");
86
+ i0.ɵɵelementStart(12, "a", 27);
87
+ i0.ɵɵlistener("click", function ProductAndServicesComponent_mat_card_13_div_3_Template_a_click_12_listener() { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.cancelSubscription(); });
88
+ i0.ɵɵtext(13, "Cancel subscription");
89
+ i0.ɵɵelementEnd();
90
+ i0.ɵɵelementEnd();
91
+ i0.ɵɵelementEnd();
92
+ i0.ɵɵelementStart(14, "div", 28);
93
+ i0.ɵɵtemplate(15, ProductAndServicesComponent_mat_card_13_div_3_button_15_Template, 2, 0, "button", 29);
94
+ i0.ɵɵtemplate(16, ProductAndServicesComponent_mat_card_13_div_3_button_16_Template, 2, 0, "button", 29);
95
+ i0.ɵɵelementEnd();
96
+ i0.ɵɵelementEnd();
97
+ } if (rf & 2) {
98
+ const ctx_r5 = i0.ɵɵnextContext(2);
99
+ i0.ɵɵadvance(4);
100
+ i0.ɵɵtextInterpolate(ctx_r5.productName);
101
+ i0.ɵɵadvance(3);
102
+ i0.ɵɵtextInterpolate2("", ctx_r5.totalNoOfActiveUsers, " of ", ctx_r5.totalNoOfPurchases, " Users assigned");
103
+ i0.ɵɵadvance(3);
104
+ i0.ɵɵtextInterpolate1("Automatically renews on ", i0.ɵɵpipeBind1(11, 6, ctx_r5.renewalDate), ". ");
105
+ i0.ɵɵadvance(5);
106
+ i0.ɵɵproperty("ngIf", !ctx_r5.isCancelled);
107
+ i0.ɵɵadvance(1);
108
+ i0.ɵɵproperty("ngIf", !ctx_r5.isCancelled);
109
+ } }
110
+ function ProductAndServicesComponent_mat_card_13_div_4_tr_8_Template(rf, ctx) { if (rf & 1) {
111
+ i0.ɵɵelementStart(0, "tr", 32);
112
+ i0.ɵɵelementStart(1, "td", 35);
113
+ i0.ɵɵelementStart(2, "span");
114
+ i0.ɵɵtext(3);
115
+ i0.ɵɵelement(4, "br");
116
+ i0.ɵɵtext(5);
117
+ i0.ɵɵelementEnd();
118
+ i0.ɵɵelementEnd();
119
+ i0.ɵɵelementStart(6, "td", 36);
120
+ i0.ɵɵtext(7);
121
+ i0.ɵɵelementEnd();
122
+ i0.ɵɵelementEnd();
123
+ } if (rf & 2) {
124
+ const history_r19 = i0.ɵɵnextContext().$implicit;
125
+ i0.ɵɵadvance(3);
126
+ i0.ɵɵtextInterpolate2("", history_r19.purchaseType, " (", history_r19.noofpurchasedlicences, " Users Included)");
127
+ i0.ɵɵadvance(2);
128
+ i0.ɵɵtextInterpolate1(" Billed every ", history_r19.subscriptionType, " ");
129
+ i0.ɵɵadvance(2);
130
+ i0.ɵɵtextInterpolate1(" \u00A3", history_r19.totalAmountPaid, "");
131
+ } }
132
+ function ProductAndServicesComponent_mat_card_13_div_4_tr_9_Template(rf, ctx) { if (rf & 1) {
133
+ i0.ɵɵelementStart(0, "tr", 32);
134
+ i0.ɵɵelementStart(1, "td", 35);
135
+ i0.ɵɵelementStart(2, "span");
136
+ i0.ɵɵtext(3);
137
+ i0.ɵɵelementEnd();
138
+ i0.ɵɵelementEnd();
139
+ i0.ɵɵelementStart(4, "td", 36);
140
+ i0.ɵɵtext(5);
141
+ i0.ɵɵelementEnd();
142
+ i0.ɵɵelementEnd();
143
+ } if (rf & 2) {
144
+ const history_r19 = i0.ɵɵnextContext().$implicit;
145
+ i0.ɵɵadvance(3);
146
+ i0.ɵɵtextInterpolate2("", history_r19.purchaseType, " (", history_r19.originalPurchases, " Users Included) ");
147
+ i0.ɵɵadvance(2);
148
+ i0.ɵɵtextInterpolate1(" \u00A3", history_r19.totalAmountPaid / history_r19.noofpurchasedlicences * history_r19.originalPurchases, "");
149
+ } }
150
+ function ProductAndServicesComponent_mat_card_13_div_4_tr_10_Template(rf, ctx) { if (rf & 1) {
151
+ i0.ɵɵelementStart(0, "tr", 32);
152
+ i0.ɵɵelementStart(1, "td", 35);
153
+ i0.ɵɵelementStart(2, "span");
154
+ i0.ɵɵtext(3);
155
+ i0.ɵɵelementEnd();
156
+ i0.ɵɵelementEnd();
157
+ i0.ɵɵelementStart(4, "td", 36);
158
+ i0.ɵɵtext(5);
159
+ i0.ɵɵelementEnd();
160
+ i0.ɵɵelementEnd();
161
+ } if (rf & 2) {
162
+ const history_r19 = i0.ɵɵnextContext().$implicit;
163
+ i0.ɵɵadvance(3);
164
+ i0.ɵɵtextInterpolate2("", history_r19.purchaseType, " Additional Users (", history_r19.noofpurchasedlicences - history_r19.originalPurchases, " Users)");
165
+ i0.ɵɵadvance(2);
166
+ i0.ɵɵtextInterpolate1(" \u00A3", history_r19.totalAmountPaid / history_r19.noofpurchasedlicences * (history_r19.noofpurchasedlicences - history_r19.originalPurchases), " ");
167
+ } }
168
+ function ProductAndServicesComponent_mat_card_13_div_4_tr_11_Template(rf, ctx) { if (rf & 1) {
169
+ i0.ɵɵelementStart(0, "tr", 32);
170
+ i0.ɵɵelementStart(1, "td", 35);
171
+ i0.ɵɵtext(2);
172
+ i0.ɵɵelement(3, "br");
173
+ i0.ɵɵelementStart(4, "span", 37);
174
+ i0.ɵɵtext(5);
175
+ i0.ɵɵelementEnd();
176
+ i0.ɵɵelementEnd();
177
+ i0.ɵɵelementStart(6, "td", 36);
178
+ i0.ɵɵtext(7);
179
+ i0.ɵɵelementEnd();
180
+ i0.ɵɵelementEnd();
181
+ } if (rf & 2) {
182
+ const history_r19 = i0.ɵɵnextContext().$implicit;
183
+ i0.ɵɵadvance(2);
184
+ i0.ɵɵtextInterpolate2("", history_r19.purchaseType, " Total (", history_r19.noofpurchasedlicences, " Users)");
185
+ i0.ɵɵadvance(3);
186
+ i0.ɵɵtextInterpolate1(" Billed every ", history_r19.subscriptionType, "");
187
+ i0.ɵɵadvance(2);
188
+ i0.ɵɵtextInterpolate1(" \u00A3", history_r19.totalAmountPaid, "");
189
+ } }
190
+ function ProductAndServicesComponent_mat_card_13_div_4_tr_12_Template(rf, ctx) { if (rf & 1) {
191
+ i0.ɵɵelementStart(0, "tr");
192
+ i0.ɵɵelementStart(1, "span");
193
+ i0.ɵɵtext(2);
194
+ i0.ɵɵpipe(3, "date");
195
+ i0.ɵɵelementEnd();
196
+ i0.ɵɵelementEnd();
197
+ } if (rf & 2) {
198
+ const history_r19 = i0.ɵɵnextContext().$implicit;
199
+ i0.ɵɵadvance(2);
200
+ i0.ɵɵtextInterpolate1("Subscription was cancelled at ", i0.ɵɵpipeBind1(3, 1, history_r19.cancelledDate), "");
201
+ } }
202
+ function ProductAndServicesComponent_mat_card_13_div_4_Template(rf, ctx) { if (rf & 1) {
203
+ i0.ɵɵelementStart(0, "div", 23);
204
+ i0.ɵɵelementStart(1, "div", 30);
205
+ i0.ɵɵelementStart(2, "table", 31);
206
+ i0.ɵɵelementStart(3, "tr", 32);
207
+ i0.ɵɵelementStart(4, "span", 33);
208
+ i0.ɵɵtext(5);
209
+ i0.ɵɵpipe(6, "date");
210
+ i0.ɵɵpipe(7, "date");
211
+ i0.ɵɵelementEnd();
212
+ i0.ɵɵelementEnd();
213
+ i0.ɵɵtemplate(8, ProductAndServicesComponent_mat_card_13_div_4_tr_8_Template, 8, 4, "tr", 34);
214
+ i0.ɵɵtemplate(9, ProductAndServicesComponent_mat_card_13_div_4_tr_9_Template, 6, 3, "tr", 34);
215
+ i0.ɵɵtemplate(10, ProductAndServicesComponent_mat_card_13_div_4_tr_10_Template, 6, 3, "tr", 34);
216
+ i0.ɵɵtemplate(11, ProductAndServicesComponent_mat_card_13_div_4_tr_11_Template, 8, 4, "tr", 34);
217
+ i0.ɵɵtemplate(12, ProductAndServicesComponent_mat_card_13_div_4_tr_12_Template, 4, 3, "tr", 7);
218
+ i0.ɵɵelementEnd();
219
+ i0.ɵɵelementEnd();
220
+ i0.ɵɵelementEnd();
221
+ } if (rf & 2) {
222
+ const history_r19 = ctx.$implicit;
223
+ i0.ɵɵadvance(5);
224
+ i0.ɵɵtextInterpolate2("Subscription term : ", i0.ɵɵpipeBind1(6, 7, history_r19.startTime), " to ", i0.ɵɵpipeBind1(7, 9, history_r19.endTime), "");
225
+ i0.ɵɵadvance(3);
226
+ i0.ɵɵproperty("ngIf", !history_r19.isUpdate);
227
+ i0.ɵɵadvance(1);
228
+ i0.ɵɵproperty("ngIf", history_r19.isUpdate);
229
+ i0.ɵɵadvance(1);
230
+ i0.ɵɵproperty("ngIf", history_r19.isUpdate);
231
+ i0.ɵɵadvance(1);
232
+ i0.ɵɵproperty("ngIf", history_r19.isUpdate);
233
+ i0.ɵɵadvance(1);
234
+ i0.ɵɵproperty("ngIf", history_r19.isCancelled);
235
+ } }
236
+ function ProductAndServicesComponent_mat_card_13_Template(rf, ctx) { if (rf & 1) {
237
+ i0.ɵɵelementStart(0, "mat-card");
238
+ i0.ɵɵtemplate(1, ProductAndServicesComponent_mat_card_13_div_1_Template, 7, 0, "div", 19);
239
+ i0.ɵɵtemplate(2, ProductAndServicesComponent_mat_card_13_div_2_Template, 7, 1, "div", 20);
240
+ i0.ɵɵtemplate(3, ProductAndServicesComponent_mat_card_13_div_3_Template, 17, 8, "div", 21);
241
+ i0.ɵɵtemplate(4, ProductAndServicesComponent_mat_card_13_div_4_Template, 13, 11, "div", 22);
242
+ i0.ɵɵelementEnd();
243
+ } if (rf & 2) {
244
+ const ctx_r1 = i0.ɵɵnextContext();
245
+ i0.ɵɵadvance(1);
246
+ i0.ɵɵproperty("ngIf", ctx_r1.isCancelled);
247
+ i0.ɵɵadvance(1);
248
+ i0.ɵɵproperty("ngIf", ctx_r1.isTrailValid);
249
+ i0.ɵɵadvance(1);
250
+ i0.ɵɵproperty("ngIf", ctx_r1.isTrailValid == false && !ctx_r1.isCancelled);
251
+ i0.ɵɵadvance(1);
252
+ i0.ɵɵproperty("ngForOf", ctx_r1.paymentHistory);
253
+ } }
254
+ export class ProductAndServicesComponent {
255
+ constructor(data, toastr, paymentService, router, cookieService, dialog) {
256
+ this.data = data;
257
+ this.toastr = toastr;
258
+ this.paymentService = paymentService;
259
+ this.router = router;
260
+ this.cookieService = cookieService;
261
+ this.dialog = dialog;
262
+ this.isSubscriptionCancel = false;
263
+ this.isAnyOperationIsInprogress = false;
264
+ this.isFromRoute = false;
265
+ this.totalNoOfActiveUsers = 0;
266
+ this.totalNoOfPurchases = 0;
267
+ this.isShowRenewal = false;
268
+ this.productName = "Snovasys";
269
+ this.isTrailValid = true;
270
+ this.noOfDays = 0;
271
+ this.isLoading = true;
272
+ }
273
+ ngOnInit() {
274
+ if (this.cookieService.check(LocalStorageProperties.CompanyDetails) && this.cookieService.check(LocalStorageProperties.CompanyId)) {
275
+ this.company = JSON.parse(this.cookieService.get(LocalStorageProperties.CompanyDetails));
276
+ this.noOfDays = this.company != null && this.company != undefined ? this.company.trailDays : 0;
277
+ }
278
+ this.getActiveUsersCount();
279
+ this.getPurchasedLicensesCount();
280
+ this.getPaymentHistory();
281
+ }
282
+ cancelSubscription() {
283
+ this.paymentService.cancelSubscription().subscribe((responseData) => {
284
+ if (responseData.success == true) {
285
+ this.toastr.success("Your subscription has been cancelled successfully");
286
+ this.isSubscriptionCancel = true;
287
+ setTimeout(() => {
288
+ this.getPurchasedLicensesCount();
289
+ this.getPaymentHistory();
290
+ }, 2000);
291
+ }
292
+ else {
293
+ this.toastr.error(responseData.apiResponseMessages[0].message);
294
+ this.isSubscriptionCancel = false;
295
+ }
296
+ });
297
+ }
298
+ getActiveUsersCount() {
299
+ this.paymentService.getActiveUsersCount().subscribe((responseData) => {
300
+ if (responseData.success == true) {
301
+ this.totalNoOfActiveUsers = responseData.data;
302
+ }
303
+ });
304
+ }
305
+ getPurchasedLicensesCount() {
306
+ this.isLoading = true;
307
+ this.paymentService.getPurchasedLicensesCount().subscribe((responseData) => {
308
+ if (responseData.success == true) {
309
+ if (responseData.data) {
310
+ this.totalNoOfPurchases = responseData.data.purchasedLicensesCount;
311
+ this.isShowRenewal = responseData.data.isShowRenewal;
312
+ this.productName = responseData.data.purchaseType;
313
+ this.isTrailValid = false;
314
+ this.renewalDate = responseData.data.renewalDate;
315
+ this.isCancelled = responseData.data.isCancelled;
316
+ this.subscriptionType = responseData.data.subscriptionType;
317
+ }
318
+ else {
319
+ this.isTrailValid = true;
320
+ }
321
+ }
322
+ this.isLoading = false;
323
+ });
324
+ }
325
+ navigateToSubscription() {
326
+ this.router.navigate(["/shell/payments-plans"]);
327
+ }
328
+ purchaseMoreLicenses() {
329
+ const dialogRef = this.dialog.open(PurchaseMoreLicensesComponent, {
330
+ height: "45%",
331
+ width: "28%",
332
+ hasBackdrop: true,
333
+ direction: "ltr",
334
+ data: { noOfPurchases: this.totalNoOfPurchases, productName: this.productName, subscriptionType: this.subscriptionType },
335
+ disableClose: true
336
+ });
337
+ dialogRef.afterClosed().subscribe((result) => {
338
+ if (result != undefined && result.isReload == true) {
339
+ this.getPaymentHistory();
340
+ this.getPurchasedLicensesCount();
341
+ }
342
+ });
343
+ }
344
+ navigateToPlans() {
345
+ this.router.navigate(["/shell/payments-plans"]);
346
+ }
347
+ getPaymentHistory() {
348
+ this.paymentService.getPaymentHistory().subscribe((responseData) => {
349
+ if (responseData.success == true) {
350
+ this.paymentHistory = responseData.data;
351
+ }
352
+ else {
353
+ this.toastr.error(responseData.apiResponseMessages[0].message);
354
+ }
355
+ });
356
+ }
357
+ openpop(closeBookingPopup) {
358
+ closeBookingPopup.openPopover();
359
+ }
360
+ close() {
361
+ this.closeBookingPopup.forEach((p) => p.closePopover());
362
+ }
363
+ }
364
+ ProductAndServicesComponent.ɵfac = function ProductAndServicesComponent_Factory(t) { return new (t || ProductAndServicesComponent)(i0.ɵɵdirectiveInject(MAT_DIALOG_DATA), i0.ɵɵdirectiveInject(i1.ToastrService), i0.ɵɵdirectiveInject(i2.PaymentService), i0.ɵɵdirectiveInject(i3.Router), i0.ɵɵdirectiveInject(i4.CookieService), i0.ɵɵdirectiveInject(i5.MatDialog)); };
365
+ ProductAndServicesComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProductAndServicesComponent, selectors: [["app-product-services-component"]], viewQuery: function ProductAndServicesComponent_Query(rf, ctx) { if (rf & 1) {
366
+ i0.ɵɵviewQuery(_c0, 5);
367
+ } if (rf & 2) {
368
+ let _t;
369
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.closeBookingPopup = _t);
370
+ } }, decls: 27, vars: 5, consts: [["fxFlex", "", "fxFlex", "100"], [1, "ml-1", "mt-05"], ["fxLayout", "row", 2, "height", "fit-content", "border", "1px solid #eceaea", "margin", "0", "padding", "0px 10px 0px 10px", "background", "aliceblue"], ["fxFlex", "80", 2, "padding-top", "15px !important"], ["fxFlex", "20", 2, "text-align", "right"], ["mat-raised-button", "", "color", "primary", "type", "submit", 1, "ml-05", "mt-05", "mb-05", 3, "satPopoverAnchorFor", "click"], ["closeBookingPopup", "satPopoverAnchor"], [4, "ngIf"], ["hasBackdrop", "", "backdropClass", "backdrop-color", "scrollStrategy", "reposition", "verticalAlign", "below", "horizontalAlign", "before", 3, "autoFocus", "restoreFocus", "interactiveClose"], ["feedTimeSheet", ""], [1, "filter-data", "p-0", 2, "min-height", "150px"], [1, "custom-dialog"], ["mat-dialog-close", "", 1, "custom-close", "ml-lg-n4", "mt-0", "mt-lg-n4", "ml-n3", 3, "click"], ["icon", "times", 1, "project-dialog"], [1, "text-center"], [1, "card-title-text", "mat-bg-primary", "p-05", "mb-1"], [1, "mt-05"], [1, "card-content"], ["fxFlex", "100", 1, "mt-2", 2, "text-align", "center"], ["style", "height: fit-content;border: 1px solid #eceaea;margin: 0;padding: 0px 10px 0px 10px;", "fxLayout", "row", 4, "ngIf"], ["style", "height: fit-content;border: 1px solid #eceaea;margin: 0;padding: 0px 10px 0px 10px; ", "fxLayout", "row", 4, "ngIf"], ["style", "height: fit-content;border: 1px solid #eceaea;margin: 0;padding: 15px;", "fxLayout", "row", 4, "ngIf"], ["style", "height: fit-content;border: 1px solid #eceaea;margin: 0;padding: 0px 10px 0px 10px;", "fxLayout", "row", 4, "ngFor", "ngForOf"], ["fxLayout", "row", 2, "height", "fit-content", "border", "1px solid #eceaea", "margin", "0", "padding", "0px 10px 0px 10px"], ["mat-raised-button", "", "color", "primary", "type", "submit", 1, "ml-05", "mt-05", 3, "click"], ["fxLayout", "row", 2, "height", "fit-content", "border", "1px solid #eceaea", "margin", "0", "padding", "15px"], ["fxFlex", "70"], [2, "cursor", "pointer", "color", "#337ab7 !important", "text-decoration", "none !important", 3, "click"], ["fxFlex", "30", 2, "text-align", "right"], ["mat-raised-button", "", "color", "primary", "type", "submit", "class", "ml-05 mt-05", 3, "click", 4, "ngIf"], ["fxFlex", "70", 2, "padding-top", "15px !important"], [2, "width", "100%"], ["fxLayout", "row"], [2, "font-weight", "bold"], ["fxLayout", "row", 4, "ngIf"], ["fxFlex", "80"], ["fxFlex", "20"], [2, "font-size", "14px"]], template: function ProductAndServicesComponent_Template(rf, ctx) { if (rf & 1) {
371
+ const _r30 = i0.ɵɵgetCurrentView();
372
+ i0.ɵɵelementStart(0, "div", 0);
373
+ i0.ɵɵelementStart(1, "h4", 1);
374
+ i0.ɵɵtext(2, "Products & Services");
375
+ i0.ɵɵelementEnd();
376
+ i0.ɵɵelement(3, "hr");
377
+ i0.ɵɵelementEnd();
378
+ i0.ɵɵelementStart(4, "mat-card");
379
+ i0.ɵɵelementStart(5, "div", 2);
380
+ i0.ɵɵelementStart(6, "div", 3);
381
+ i0.ɵɵelementStart(7, "span");
382
+ i0.ɵɵtext(8, " Customize and enhance your plan with additional features. ");
383
+ i0.ɵɵelementEnd();
384
+ i0.ɵɵelementEnd();
385
+ i0.ɵɵelementStart(9, "div", 4);
386
+ i0.ɵɵelementStart(10, "button", 5, 6);
387
+ i0.ɵɵlistener("click", function ProductAndServicesComponent_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r30); const _r0 = i0.ɵɵreference(11); return ctx.openpop(_r0); });
388
+ i0.ɵɵtext(12, " Customize ");
389
+ i0.ɵɵelementEnd();
390
+ i0.ɵɵelementEnd();
391
+ i0.ɵɵelementEnd();
392
+ i0.ɵɵelementEnd();
393
+ i0.ɵɵtemplate(13, ProductAndServicesComponent_mat_card_13_Template, 5, 4, "mat-card", 7);
394
+ i0.ɵɵelementStart(14, "sat-popover", 8, 9);
395
+ i0.ɵɵelementStart(16, "mat-card", 10);
396
+ i0.ɵɵelementStart(17, "div", 11);
397
+ i0.ɵɵelementStart(18, "div", 12);
398
+ i0.ɵɵlistener("click", function ProductAndServicesComponent_Template_div_click_18_listener() { return ctx.close(); });
399
+ i0.ɵɵelement(19, "fa-icon", 13);
400
+ i0.ɵɵelementEnd();
401
+ i0.ɵɵelementEnd();
402
+ i0.ɵɵelementStart(20, "mat-card-title", 14);
403
+ i0.ɵɵelementStart(21, "div", 15);
404
+ i0.ɵɵelementStart(22, "h4", 16);
405
+ i0.ɵɵtext(23, " Customize site");
406
+ i0.ɵɵelementEnd();
407
+ i0.ɵɵelementEnd();
408
+ i0.ɵɵelementEnd();
409
+ i0.ɵɵelementStart(24, "mat-card-content", 17);
410
+ i0.ɵɵelementStart(25, "div", 18);
411
+ i0.ɵɵtext(26, " If there is need to customize the site, then please call 0044-7944144944. ");
412
+ i0.ɵɵelementEnd();
413
+ i0.ɵɵelementEnd();
414
+ i0.ɵɵelementEnd();
415
+ i0.ɵɵelementEnd();
416
+ } if (rf & 2) {
417
+ const _r2 = i0.ɵɵreference(15);
418
+ i0.ɵɵadvance(10);
419
+ i0.ɵɵproperty("satPopoverAnchorFor", _r2);
420
+ i0.ɵɵadvance(3);
421
+ i0.ɵɵproperty("ngIf", !ctx.isLoading);
422
+ i0.ɵɵadvance(1);
423
+ i0.ɵɵproperty("autoFocus", false)("restoreFocus", false)("interactiveClose", false);
424
+ } }, directives: [i6.DefaultFlexDirective, i7.MatCard, i6.DefaultLayoutDirective, i8.MatButton, i9.SatPopoverAnchor, i10.NgIf, i9.SatPopover, i5.MatDialogClose, i11.FaIconComponent, i7.MatCardTitle, i7.MatCardContent, i10.NgForOf], pipes: [i10.DatePipe], encapsulation: 2 });
425
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProductAndServicesComponent, [{
426
+ type: Component,
427
+ args: [{
428
+ selector: "app-product-services-component",
429
+ templateUrl: "./product-service.component.html"
430
+ }]
431
+ }], function () { return [{ type: undefined, decorators: [{
432
+ type: Inject,
433
+ args: [MAT_DIALOG_DATA]
434
+ }] }, { type: i1.ToastrService }, { type: i2.PaymentService }, { type: i3.Router }, { type: i4.CookieService }, { type: i5.MatDialog }]; }, { closeBookingPopup: [{
435
+ type: ViewChildren,
436
+ args: ["closeBookingPopup"]
437
+ }] }); })();
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zZXJ2aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvUGF5bWVudHMvcHJvZHVjdC1zZXJ2aWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvUGF5bWVudHMvcHJvZHVjdC1zZXJ2aWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFhLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQTJCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTXBGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3ZHLE9BQU8sdURBQXVELENBQUM7QUFFL0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNZckUsK0JBQ3dCO0lBQ3BCLDhCQUF1RDtJQUNuRCw0QkFBTTtJQUFDLG9TQUdQO0lBQUEsaUJBQU87SUFDWCxpQkFBTTtJQUNOLDhCQUE0QztJQUN4QyxrQ0FDdUM7SUFBbkMsd05BQWtDO0lBQ2xDLDJCQUNKO0lBQUEsaUJBQVM7SUFDYixpQkFBTTtJQUNWLGlCQUFNOzs7O0lBQ04sK0JBQ3lCO0lBQ3JCLDhCQUF1RDtJQUNuRCw0QkFBTTtJQUFDLFlBSVA7SUFBQSxpQkFBTztJQUNYLGlCQUFNO0lBQ04sOEJBQTRDO0lBQ3hDLGtDQUN1QztJQUFuQyx5TkFBa0M7SUFDbEMsMkJBQ0o7SUFBQSxpQkFBUztJ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LDJCQUFBOzt1RkRyR2xDLDJCQUEyQjtjQUx2QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztnQkFDMUMsV0FBVyxFQUFFLGtDQUFrQzthQUNoRDs7c0JBd0JjLE1BQU07dUJBQUMsZUFBZTswSkFEQSxpQkFBaUI7a0JBQW5ELFlBQVk7bUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJzXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XG5pbXBvcnQgJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL2ZvbnRhd2Vzb21lLWljb25zJztcbmltcG9ydCB7IFBheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFB1cmNoYXNlTW9yZUxpY2Vuc2VzQ29tcG9uZW50IH0gZnJvbSAnLi9wdXJjaGFzZS1tb3JlLWxpY2Vuc2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFwcC1wcm9kdWN0LXNlcnZpY2VzLWNvbXBvbmVudFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3Byb2R1Y3Qtc2VydmljZS5jb21wb25lbnQuaHRtbFwiXG59KVxuXG5leHBvcnQgY2xhc3MgUHJvZHVjdEFuZFNlcnZpY2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuXG4gIHNlbGVjdGVkVGFiOiBzdHJpbmc7XG4gIHNlbGVjdGVkVGFiSW5kZXg6IG51bWJlcjtcbiAgcGF5bWVudERldGFpbHM6IGFueTtcbiAgaXNTdWJzY3JpcHRpb25DYW5jZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNBbnlPcGVyYXRpb25Jc0lucHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNGcm9tUm91dGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG90YWxOb09mQWN0aXZlVXNlcnM6IGFueSA9IDA7XG4gIHRvdGFsTm9PZlB1cmNoYXNlczogYW55ID0gMDtcbiAgaXNTaG93UmVuZXdhbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm9kdWN0TmFtZTogc3RyaW5nID0gXCJTbm92YXN5c1wiO1xuICBpc1RyYWlsVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBub09mRGF5czogYW55ID0gMDtcbiAgY29tcGFueTogYW55O1xuICByZW5ld2FsRGF0ZTogYW55O1xuICBpc0NhbmNlbGxlZDogYm9vbGVhbjtcbiAgc3Vic2NyaXB0aW9uVHlwZTogYW55O1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBwYXltZW50SGlzdG9yeSA6IGFueTtcbiAgQFZpZXdDaGlsZHJlbihcImNsb3NlQm9va2luZ1BvcHVwXCIpIGNsb3NlQm9va2luZ1BvcHVwO1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZVxuICAgICwgcHJpdmF0ZSBwYXltZW50U2VydmljZTogUGF5bWVudFNlcnZpY2VcbiAgICAsIHB1YmxpYyByb3V0ZXI6IFJvdXRlclxuICAgICwgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywpIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlEZXRhaWxzKSAmJiB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55SWQpKSB7XG4gICAgICB0aGlzLmNvbXBhbnkgPSBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55RGV0YWlscykpO1xuICAgICAgdGhpcy5ub09mRGF5cyA9IHRoaXMuY29tcGFueSAhPSBudWxsICYmIHRoaXMuY29tcGFueSAhPSB1bmRlZmluZWQgPyB0aGlzLmNvbXBhbnkudHJhaWxEYXlzIDogMDtcbiAgICB9XG4gICAgdGhpcy5nZXRBY3RpdmVVc2Vyc0NvdW50KCk7XG4gICAgdGhpcy5nZXRQdXJjaGFzZWRMaWNlbnNlc0NvdW50KCk7XG4gICAgdGhpcy5nZXRQYXltZW50SGlzdG9yeSgpO1xuICB9XG5cbiAgY2FuY2VsU3Vic2NyaXB0aW9uKCkge1xuICAgIHRoaXMucGF5bWVudFNlcnZpY2UuY2FuY2VsU3Vic2NyaXB0aW9uKCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IHRydWUpIHtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIllvdXIgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgIHRoaXMuaXNTdWJzY3JpcHRpb25DYW5jZWwgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgdGhpcy5nZXRQdXJjaGFzZWRMaWNlbnNlc0NvdW50KCk7XG4gICAgICAgICAgdGhpcy5nZXRQYXltZW50SGlzdG9yeSgpO1xuICAgICB9LCAyMDAwKTtcbiAgICAgICBcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZURhdGEuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlKTtcbiAgICAgICAgdGhpcy5pc1N1YnNjcmlwdGlvbkNhbmNlbCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGdldEFjdGl2ZVVzZXJzQ291bnQoKSB7XG4gICAgdGhpcy5wYXltZW50U2VydmljZS5nZXRBY3RpdmVVc2Vyc0NvdW50KCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IHRydWUpIHtcbiAgICAgICAgdGhpcy50b3RhbE5vT2ZBY3RpdmVVc2VycyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UHVyY2hhc2VkTGljZW5zZXNDb3VudCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50U2VydmljZS5nZXRQdXJjaGFzZWRMaWNlbnNlc0NvdW50KCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IHRydWUpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlRGF0YS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy50b3RhbE5vT2ZQdXJjaGFzZXMgPSByZXNwb25zZURhdGEuZGF0YS5wdXJjaGFzZWRMaWNlbnNlc0NvdW50O1xuICAgICAgICAgIHRoaXMuaXNTaG93UmVuZXdhbCA9IHJlc3BvbnNlRGF0YS5kYXRhLmlzU2hvd1JlbmV3YWw7XG4gICAgICAgICAgdGhpcy5wcm9kdWN0TmFtZSA9IHJlc3BvbnNlRGF0YS5kYXRhLnB1cmNoYXNlVHlwZTtcbiAgICAgICAgICB0aGlzLmlzVHJhaWxWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucmVuZXdhbERhdGUgPSByZXNwb25zZURhdGEuZGF0YS5yZW5ld2FsRGF0ZTtcbiAgICAgICAgICB0aGlzLmlzQ2FuY2VsbGVkID0gcmVzcG9uc2VEYXRhLmRhdGEuaXNDYW5jZWxsZWQ7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25UeXBlID0gcmVzcG9uc2VEYXRhLmRhdGEuc3Vic2NyaXB0aW9uVHlwZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzVHJhaWxWYWxpZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBuYXZpZ2F0ZVRvU3Vic2NyaXB0aW9uKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9zaGVsbC9wYXltZW50cy1wbGFuc1wiXSk7XG4gIH1cblxuICBwdXJjaGFzZU1vcmVMaWNlbnNlcygpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFB1cmNoYXNlTW9yZUxpY2Vuc2VzQ29tcG9uZW50LCB7XG4gICAgICBoZWlnaHQ6IFwiNDUlXCIsXG4gICAgICB3aWR0aDogXCIyOCVcIixcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgZGlyZWN0aW9uOiBcImx0clwiLFxuICAgICAgZGF0YTogeyBub09mUHVyY2hhc2VzOiB0aGlzLnRvdGFsTm9PZlB1cmNoYXNlcywgcHJvZHVjdE5hbWU6IHRoaXMucHJvZHVjdE5hbWUsIHN1YnNjcmlwdGlvblR5cGU6IHRoaXMuc3Vic2NyaXB0aW9uVHlwZSB9LFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmKHJlc3VsdCAhPXVuZGVmaW5lZCAmJiByZXN1bHQuaXNSZWxvYWQgPT0gdHJ1ZSl7XG4gICAgICAgIHRoaXMuZ2V0UGF5bWVudEhpc3RvcnkoKTtcbiAgICAgICAgdGhpcy5nZXRQdXJjaGFzZWRMaWNlbnNlc0NvdW50KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbmF2aWdhdGVUb1BsYW5zKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9zaGVsbC9wYXltZW50cy1wbGFuc1wiXSk7XG4gIH1cbiAgZ2V0UGF5bWVudEhpc3RvcnkoKXtcbiAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldFBheW1lbnRIaXN0b3J5KCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzID09IHRydWUpIHtcbiAgICAgICAgdGhpcy5wYXltZW50SGlzdG9yeSA9IHJlc3BvbnNlRGF0YS5kYXRhXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2VEYXRhLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgb3BlbnBvcChjbG9zZUJvb2tpbmdQb3B1cCkge1xuICAgIGNsb3NlQm9va2luZ1BvcHVwLm9wZW5Qb3BvdmVyKCk7XG4gIH1cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZUJvb2tpbmdQb3B1cC5mb3JFYWNoKChwKSA9PiBwLmNsb3NlUG9wb3ZlcigpKTtcbn1cblxufVxuIiwiPGRpdiBmeEZsZXggZnhGbGV4PVwiMTAwXCI+XG4gICAgPGg0IGNsYXNzPVwibWwtMSBtdC0wNVwiPlByb2R1Y3RzICYgU2VydmljZXM8L2g0PlxuICAgIDxocj5cbjwvZGl2PlxuPG1hdC1jYXJkPlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6Zml0LWNvbnRlbnQ7Ym9yZGVyOiAxcHggc29saWQgI2VjZWFlYTttYXJnaW46IDA7cGFkZGluZzogMHB4IDEwcHggMHB4IDEwcHg7IGJhY2tncm91bmQ6IGFsaWNlYmx1ZTtcIlxuICAgICAgICBmeExheW91dD1cInJvd1wiPlxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjgwXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50O1wiPlxuICAgICAgICAgICAgPHNwYW4+IEN1c3RvbWl6ZSBhbmQgZW5oYW5jZSB5b3VyIHBsYW4gd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmeEZsZXg9XCIyMFwiIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cIm1sLTA1IG10LTA1IG1iLTA1XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbnBvcChjbG9zZUJvb2tpbmdQb3B1cClcIiBbc2F0UG9wb3ZlckFuY2hvckZvcl09XCJmZWVkVGltZVNoZWV0XCJcbiAgICAgICAgICAgICAgICAjY2xvc2VCb29raW5nUG9wdXA9XCJzYXRQb3BvdmVyQW5jaG9yXCI+XG4gICAgICAgICAgICAgICAgQ3VzdG9taXplXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvbWF0LWNhcmQ+XG48bWF0LWNhcmQgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogZml0LWNvbnRlbnQ7Ym9yZGVyOiAxcHggc29saWQgI2VjZWFlYTttYXJnaW46IDA7cGFkZGluZzogMHB4IDEwcHggMHB4IDEwcHg7XCIgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAqbmdJZj1cImlzQ2FuY2VsbGVkXCI+XG4gICAgICAgIDxkaXYgZnhGbGV4PVwiODBcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAxNXB4ICFpbXBvcnRhbnQ7XCI+XG4gICAgICAgICAgICA8c3Bhbj4gV2UgYXJlIHNvcnJ5IHRvIHNlZSB5b3UgZ28uIFRoYW5rIHlvdSBmb3IgbGV0dGluZyB1cyB0byBiZSBhIHBhcnQgb2YgeW91ciBncm93dGggc28gZmFyLiBXZSdsbCBtaXNzXG4gICAgICAgICAgICAgICAgeW91IGFyb3VuZCBoZXJlISBJZiB5b3UgZGVjaWRlIHlvdSdkIGxpa2UgdG8gY29udGludWUgdXNpbmcgdGhpcyBwcm9kdWN0LCB5b3UgY2FuIHJlbmV3IGF0IGFueSB0aW1lIGJ5XG4gICAgICAgICAgICAgICAgY2xpY2tpbmcgb24gdGhlIHN1YnNjcmliZSBidXR0b24uIFdlIGhvcGUgdG8gc2VlIHlvdSBhcm91bmQhIFRoYW5rIHlvdS5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZnhGbGV4PVwiMjBcIiBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0O1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJtbC0wNSBtdC0wNVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9TdWJzY3JpcHRpb24oKVwiPlxuICAgICAgICAgICAgICAgIFN1YnNjcmliZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IGZpdC1jb250ZW50O2JvcmRlcjogMXB4IHNvbGlkICNlY2VhZWE7bWFyZ2luOiAwO3BhZGRpbmc6IDBweCAxMHB4IDBweCAxMHB4OyBcIiBmeExheW91dD1cInJvd1wiXG4gICAgICAgICpuZ0lmPVwiaXNUcmFpbFZhbGlkXCI+XG4gICAgICAgIDxkaXYgZnhGbGV4PVwiODBcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAxNXB4ICFpbXBvcnRhbnQ7XCI+XG4gICAgICAgICAgICA8c3Bhbj4gSXQgbG9va3MgbGlrZSB5b3XigJl2ZSBhbHJlYWR5IHNlZW4gc29tZSBncmVhdCByZXN1bHRzIHdpdGggb3VyIFByb2R1Y3QuIFRoaXMgaXMgYSBncmVhdCB0aW1lIHRvXG4gICAgICAgICAgICAgICAgY29uc2lkZXIgdGFraW5nIGEgbG9vayBhdCBvdXIgZGlmZmVyZW50IHBsYW5zLCBzbyB0aGF0IHlvdSBjYW4gdGFrZSBmdWxsIGFkdmFudGFnZSBvZiBvdXIgUHJvZHVjdC4gQXNcbiAgICAgICAgICAgICAgICB5b3VyIHRyYWlsIGlzIGdvaW5nIHRvIGV4cGlyZSBpbiB7e25vT2ZEYXlzfX0gZGF5cywgcGxlYXNlIGhhdmUgYSBsb29rIGF0IG91ciBkaWZmZXJlbnQgcGxhbnMgYW5kXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlIHRvIHRoZW0uXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjIwXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwibWwtMDUgbXQtMDVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvU3Vic2NyaXB0aW9uKClcIj5cbiAgICAgICAgICAgICAgICBTdWJzY3JpYmVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiBmaXQtY29udGVudDtib3JkZXI6IDFweCBzb2xpZCAjZWNlYWVhO21hcmdpbjogMDtwYWRkaW5nOiAxNXB4O1wiIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgKm5nSWY9XCJpc1RyYWlsVmFsaWQgPT0gZmFsc2UgJiYgIWlzQ2FuY2VsbGVkXCI+XG5cbiAgICAgICAgPGRpdiBmeEZsZXg9XCI3MFwiPlxuICAgICAgICAgICAgPGxhYmVsPjxiPnt7cHJvZHVjdE5hbWV9fTwvYj48L2xhYmVsPjxicj5cbiAgICAgICAgICAgIDxzcGFuPnt7dG90YWxOb09mQWN0aXZlVXNlcnN9fSBvZiB7e3RvdGFsTm9PZlB1cmNoYXNlc319IFVzZXJzIGFzc2lnbmVkPC9zcGFuPjxicj5cbiAgICAgICAgICAgIDxzcGFuPkF1dG9tYXRpY2FsbHkgcmVuZXdzIG9uIHt7cmVuZXdhbERhdGUgfCBkYXRlfX0uIDxhIChjbGljayk9XCJjYW5jZWxTdWJzY3JpcHRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyOyBjb2xvcjogIzMzN2FiNyAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsgXCI+Q2FuY2VsXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjwvYT48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZ4RmxleD1cIjMwXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwibWwtMDUgbXQtMDVcIiAqbmdJZj1cIiFpc0NhbmNlbGxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInB1cmNoYXNlTW9yZUxpY2Vuc2VzKClcIj5cbiAgICAgICAgICAgICAgICBQdXJjaGFzZSBtb3JlIGxpY2Vuc2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwibWwtMDUgbXQtMDVcIiAqbmdJZj1cIiFpc0NhbmNlbGxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9QbGFucygpXCI+XG4gICAgICAgICAgICAgICAgQ2hhbmdlIFBsYW5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IGZpdC1jb250ZW50O2JvcmRlcjogMXB4IHNvbGlkICNlY2VhZWE7bWFyZ2luOiAwO3BhZGRpbmc6IDBweCAxMHB4IDBweCAxMHB4O1wiIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGhpc3Rvcnkgb2YgcGF5bWVudEhpc3RvcnlcIj5cbiAgICAgICAgPGRpdiBmeEZsZXg9XCI3MFwiIHN0eWxlPVwicGFkZGluZy10b3A6IDE1cHggIWltcG9ydGFudDtcIj5cbiAgICAgICAgICAgIDx0YWJsZSBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgICAgICAgICAgIDx0ciBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkO1wiPlN1YnNjcmlwdGlvbiB0ZXJtIDoge3toaXN0b3J5LnN0YXJ0VGltZSB8IGRhdGV9fSB0b1xuICAgICAgICAgICAgICAgICAgICAgICAge3toaXN0b3J5LmVuZFRpbWUgfCBkYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHIgZnhMYXlvdXQ9XCJyb3dcIiAqbmdJZj1cIiFoaXN0b3J5LmlzVXBkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmeEZsZXg9XCI4MFwiPjxzcGFuPnt7aGlzdG9yeS5wdXJjaGFzZVR5cGV9fSAoe3toaXN0b3J5Lm5vb2ZwdXJjaGFzZWRsaWNlbmNlc319IFVzZXJzIEluY2x1ZGVkKTxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWxsZWQgZXZlcnkge3toaXN0b3J5LnN1YnNjcmlwdGlvblR5cGV9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmeEZsZXg9XCIyMFwiPiDCo3t7aGlzdG9yeS50b3RhbEFtb3VudFBhaWR9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHIgZnhMYXlvdXQ9XCJyb3dcIiAqbmdJZj1cImhpc3RvcnkuaXNVcGRhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGZ4RmxleD1cIjgwXCI+PHNwYW4+e3toaXN0b3J5LnB1cmNoYXNlVHlwZX19ICh7e2hpc3Rvcnkub3JpZ2luYWxQdXJjaGFzZXN9fSBVc2VycyBJbmNsdWRlZClcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGZ4RmxleD1cIjIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDCo3t7aGlzdG9yeS50b3RhbEFtb3VudFBhaWQgLyBoaXN0b3J5Lm5vb2ZwdXJjaGFzZWRsaWNlbmNlcyAqIGhpc3Rvcnkub3JpZ2luYWxQdXJjaGFzZXMgfX08L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyIGZ4TGF5b3V0PVwicm93XCIgKm5nSWY9XCJoaXN0b3J5LmlzVXBkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmeEZsZXg9XCI4MFwiPjxzcGFuPnt7aGlzdG9yeS5wdXJjaGFzZVR5cGV9fSBBZGRpdGlvbmFsIFVzZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7aGlzdG9yeS5ub29mcHVyY2hhc2VkbGljZW5jZXMgLSBoaXN0b3J5Lm9yaWdpbmFsUHVyY2hhc2VzfX0gVXNlcnMpPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgZnhGbGV4PVwiMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIMKje3toaXN0b3J5LnRvdGFsQW1vdW50UGFpZCAvIGhpc3Rvcnkubm9vZnB1cmNoYXNlZGxpY2VuY2VzICogKCBoaXN0b3J5Lm5vb2ZwdXJjaGFzZWRsaWNlbmNlcyAtIGhpc3Rvcnkub3JpZ2luYWxQdXJjaGFzZXMpfX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0ciBmeExheW91dD1cInJvd1wiICpuZ0lmPVwiaGlzdG9yeS5pc1VwZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgZnhGbGV4PVwiODBcIj57e2hpc3RvcnkucHVyY2hhc2VUeXBlfX0gVG90YWwgKHt7aGlzdG9yeS5ub29mcHVyY2hhc2VkbGljZW5jZXN9fSBVc2Vycyk8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIj4gQmlsbGVkIGV2ZXJ5IHt7aGlzdG9yeS5zdWJzY3JpcHRpb25UeXBlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBmeEZsZXg9XCIyMFwiPiDCo3t7aGlzdG9yeS50b3RhbEFtb3VudFBhaWR9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJoaXN0b3J5LmlzQ2FuY2VsbGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlN1YnNjcmlwdGlvbiB3YXMgY2FuY2VsbGVkIGF0IHt7aGlzdG9yeS5jYW5jZWxsZWREYXRlIHwgZGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9tYXQtY2FyZD5cbjxzYXQtcG9wb3ZlciAjZmVlZFRpbWVTaGVldCBbYXV0b0ZvY3VzXT1cImZhbHNlXCIgaGFzQmFja2Ryb3AgYmFja2Ryb3BDbGFzcz1cImJhY2tkcm9wLWNvbG9yXCIgW3Jlc3RvcmVGb2N1c109XCJmYWxzZVwiXG4gICAgW2ludGVyYWN0aXZlQ2xvc2VdPVwiZmFsc2VcIiBzY3JvbGxTdHJhdGVneT1cInJlcG9zaXRpb25cIiB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIiBob3Jpem9udGFsQWxpZ249XCJiZWZvcmVcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJmaWx0ZXItZGF0YSBwLTBcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDE1MHB4O1wiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZGlhbG9nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNsb3NlIG1sLWxnLW40IG10LTAgbXQtbGctbjQgbWwtbjMgXCIgbWF0LWRpYWxvZy1jbG9zZSAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiIGNsYXNzPVwicHJvamVjdC1kaWFsb2dcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZS10ZXh0IG1hdC1iZy1wcmltYXJ5IHAtMDUgbWItMVwiPlxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm10LTA1XCI+IEN1c3RvbWl6ZSBzaXRlPC9oND5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjEwMFwiIGNsYXNzPVwibXQtMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgIElmIHRoZXJlIGlzIG5lZWQgdG8gY3VzdG9taXplIHRoZSBzaXRlLCB0aGVuIHBsZWFzZSBjYWxsIDAwNDQtNzk0NDE0NDk0NC5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGZ4RmxleD1cIjEwMFwiIGNsYXNzPVwibXQtMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJtci0xXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKClcIiB0eXBlPVwic3VibWl0XCI+XG4gICAgICAgICAgICAgICAgICAgIE5vXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuPC9zYXQtcG9wb3Zlcj4iXX0=