@thetradeengineorg1/snova-shell-module 0.0.261 → 0.0.262

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 +13734 -18921
  3. package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
  4. package/esm2015/lib/globaldependencies/components/avatar.component.js +28 -33
  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 +50 -121
  23. package/esm2015/lib/shell-components/components/Payments/company-information.js +262 -558
  24. package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +138 -636
  25. package/esm2015/lib/shell-components/components/Payments/document.component.js +57 -129
  26. package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +32 -90
  27. package/esm2015/lib/shell-components/components/Payments/product-service.component.js +143 -438
  28. package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +152 -249
  29. package/esm2015/lib/shell-components/components/Payments/transactions.component.js +60 -172
  30. package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +250 -350
  31. package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +89 -102
  32. package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +90 -126
  33. package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +357 -502
  34. package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +85 -98
  35. package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +83 -87
  36. package/esm2015/lib/shell-components/components/header-side/header-side.component.js +1617 -2342
  37. package/esm2015/lib/shell-components/components/header-top/header-top.component.js +93 -489
  38. package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +26 -55
  39. package/esm2015/lib/shell-components/components/menu/menu.component.js +2478 -3413
  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 +73 -110
  42. package/esm2015/lib/shell-components/components/notifications/notifications.component.js +449 -534
  43. package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +33 -39
  44. package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +81 -148
  45. package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +43 -439
  46. package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +71 -75
  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 -161
  124. package/esm2015/lib/shell-components/shell.module.js +449 -450
  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 +12640 -17069
  147. package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
  148. package/lib/globaldependencies/components/avatar.component.d.ts +10 -11
  149. package/lib/globaldependencies/components/componentbase.d.ts +455 -456
  150. package/lib/globaldependencies/constants/feature-ids.d.ts +448 -449
  151. package/lib/globaldependencies/constants/localstorage-properties.d.ts +37 -38
  152. package/lib/globaldependencies/helpers/dom.helper.d.ts +7 -8
  153. package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +1 -2
  154. package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +9 -10
  155. package/lib/globaldependencies/helpers/window.helper.d.ts +12 -13
  156. package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +11 -12
  157. package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +8 -9
  158. package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +8 -9
  159. package/lib/globaldependencies/pipes/orderby-pipe.d.ts +9 -10
  160. package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +8 -9
  161. package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +11 -12
  162. package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +8 -9
  163. package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +8 -9
  164. package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +8 -9
  165. package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +8 -9
  166. package/lib/shell-components/components/Payments/account.component.d.ts +14 -15
  167. package/lib/shell-components/components/Payments/company-information.d.ts +62 -63
  168. package/lib/shell-components/components/Payments/company-plans.component.d.ts +47 -48
  169. package/lib/shell-components/components/Payments/document.component.d.ts +20 -21
  170. package/lib/shell-components/components/Payments/payment-method.component.d.ts +15 -16
  171. package/lib/shell-components/components/Payments/product-service.component.d.ts +48 -49
  172. package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +37 -38
  173. package/lib/shell-components/components/Payments/transactions.component.d.ts +28 -29
  174. package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +67 -68
  175. package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +32 -33
  176. package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +32 -33
  177. package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +60 -61
  178. package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +33 -34
  179. package/lib/shell-components/components/feed-time/feed-time.component.d.ts +27 -28
  180. package/lib/shell-components/components/header-side/header-side.component.d.ts +220 -221
  181. package/lib/shell-components/components/header-top/header-top.component.d.ts +40 -41
  182. package/lib/shell-components/components/lives/lives-welcome-page.d.ts +14 -15
  183. package/lib/shell-components/components/menu/menu.component.d.ts +220 -221
  184. package/lib/shell-components/components/menu/searchTask.enum.d.ts +8 -9
  185. package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +27 -28
  186. package/lib/shell-components/components/notifications/notifications.component.d.ts +53 -54
  187. package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +10 -11
  188. package/lib/shell-components/components/sidenav/side-bar.component.d.ts +23 -24
  189. package/lib/shell-components/components/sidenav/sidenav.component.d.ts +17 -18
  190. package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +25 -26
  191. package/lib/shell-components/constants/api-urls.d.ts +1051 -1052
  192. package/lib/shell-components/constants/available-languages.d.ts +7 -8
  193. package/lib/shell-components/constants/channel-names.d.ts +37 -38
  194. package/lib/shell-components/constants/menu-categories.d.ts +5 -6
  195. package/lib/shell-components/constants/notification-routes.d.ts +5 -6
  196. package/lib/shell-components/constants/notification-type-ids.d.ts +41 -42
  197. package/lib/shell-components/enum/recentSearchType.enum.d.ts +11 -12
  198. package/lib/shell-components/models/AppMenuItemModel.d.ts +12 -13
  199. package/lib/shell-components/models/AppNotification.d.ts +12 -13
  200. package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +10 -11
  201. package/lib/shell-components/models/ChannelUpdateModel.d.ts +47 -48
  202. package/lib/shell-components/models/EmployeeStatusModel.d.ts +11 -12
  203. package/lib/shell-components/models/IAdjust-screen-options.d.ts +4 -5
  204. package/lib/shell-components/models/IBadge.d.ts +4 -5
  205. package/lib/shell-components/models/IChildItem.d.ts +7 -8
  206. package/lib/shell-components/models/ILayout-change-options.d.ts +4 -5
  207. package/lib/shell-components/models/IMenuItem.d.ts +14 -15
  208. package/lib/shell-components/models/IlayoutConf.d.ts +10 -11
  209. package/lib/shell-components/models/IntroModel.d.ts +3 -4
  210. package/lib/shell-components/models/MessageDetails.d.ts +55 -56
  211. package/lib/shell-components/models/MessageTypingDetails.d.ts +9 -10
  212. package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +8 -9
  213. package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +8 -9
  214. package/lib/shell-components/models/NotificationsOutPutModel.d.ts +41 -42
  215. package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +10 -11
  216. package/lib/shell-components/models/RecentSearchModel.d.ts +14 -15
  217. package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +9 -10
  218. package/lib/shell-components/models/ReportSubmittedNotification.d.ts +10 -11
  219. package/lib/shell-components/models/RoleUpdatedNotification.d.ts +7 -8
  220. package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +8 -9
  221. package/lib/shell-components/models/archiveUserStoryModel.d.ts +7 -8
  222. package/lib/shell-components/models/companieslist.model.d.ts +8 -9
  223. package/lib/shell-components/models/company-model.d.ts +31 -32
  224. package/lib/shell-components/models/company-payment-model.d.ts +18 -19
  225. package/lib/shell-components/models/dragedWidget.d.ts +16 -17
  226. package/lib/shell-components/models/employee-List.d.ts +8 -9
  227. package/lib/shell-components/models/employee.d.ts +60 -61
  228. package/lib/shell-components/models/entityRoleFeature.d.ts +9 -10
  229. package/lib/shell-components/models/export-configuration-model.d.ts +8 -9
  230. package/lib/shell-components/models/export-data.module.d.ts +6 -7
  231. package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +8 -9
  232. package/lib/shell-components/models/import-configuration-model.d.ts +3 -4
  233. package/lib/shell-components/models/initialStatusofUsers.d.ts +5 -6
  234. package/lib/shell-components/models/invoiceOutput-model.d.ts +9 -10
  235. package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +7 -8
  236. package/lib/shell-components/models/multiChartsScheduling.d.ts +9 -10
  237. package/lib/shell-components/models/parkUserStoryInputModel.d.ts +7 -8
  238. package/lib/shell-components/models/project.d.ts +28 -29
  239. package/lib/shell-components/models/recentSearchApiModel.d.ts +6 -7
  240. package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +10 -11
  241. package/lib/shell-components/models/shellModulesInfo.d.ts +16 -17
  242. package/lib/shell-components/models/softlabels-model.d.ts +66 -67
  243. package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +7 -8
  244. package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +7 -8
  245. package/lib/shell-components/models/store-model.d.ts +13 -14
  246. package/lib/shell-components/models/store-search-model.d.ts +7 -8
  247. package/lib/shell-components/models/themes.model.d.ts +9 -10
  248. package/lib/shell-components/models/timesheetenabledisable.d.ts +16 -17
  249. package/lib/shell-components/models/user.d.ts +40 -41
  250. package/lib/shell-components/models/userStory.d.ts +188 -189
  251. package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +6 -7
  252. package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +6 -7
  253. package/lib/shell-components/models/userstory-custom-fields.model.d.ts +6 -7
  254. package/lib/shell-components/models/validation.model.d.ts +5 -6
  255. package/lib/shell-components/models/widgetlist.d.ts +28 -29
  256. package/lib/shell-components/models/workspaceList.d.ts +19 -20
  257. package/lib/shell-components/services/authentication.service.d.ts +18 -19
  258. package/lib/shell-components/services/chat.service.d.ts +16 -17
  259. package/lib/shell-components/services/common-used.service.d.ts +45 -46
  260. package/lib/shell-components/services/feature.service.d.ts +19 -20
  261. package/lib/shell-components/services/google-analytics.service.d.ts +9 -10
  262. package/lib/shell-components/services/layout.service.d.ts +23 -24
  263. package/lib/shell-components/services/payment.service.d.ts +19 -20
  264. package/lib/shell-components/services/recentSearch.service.d.ts +16 -17
  265. package/lib/shell-components/services/shell.modules.service.d.ts +9 -10
  266. package/lib/shell-components/services/signalr.service.d.ts +25 -26
  267. package/lib/shell-components/services/theme.service.d.ts +14 -15
  268. package/lib/shell-components/shell.module.d.ts +119 -120
  269. package/lib/shell-components/shell.routing.d.ts +2 -3
  270. package/lib/shell-components/store/actions/authentication.actions.d.ts +327 -328
  271. package/lib/shell-components/store/actions/chat.actions.d.ts +399 -400
  272. package/lib/shell-components/store/actions/menuitems.actions.d.ts +51 -52
  273. package/lib/shell-components/store/actions/notification-validator.action.d.ts +25 -26
  274. package/lib/shell-components/store/actions/notifications.actions.d.ts +116 -117
  275. package/lib/shell-components/store/effects/authentication.effects.d.ts +54 -55
  276. package/lib/shell-components/store/effects/chat.effects.d.ts +30 -31
  277. package/lib/shell-components/store/effects/index.d.ts +1 -2
  278. package/lib/shell-components/store/effects/menuitems.effects.d.ts +17 -18
  279. package/lib/shell-components/store/effects/notification-validator.effects.d.ts +21 -22
  280. package/lib/shell-components/store/effects/notifications.effects.d.ts +23 -24
  281. package/lib/shell-components/store/reducers/authentication.reducers.d.ts +30 -31
  282. package/lib/shell-components/store/reducers/chat.reducers.d.ts +17 -18
  283. package/lib/shell-components/store/reducers/index.d.ts +59 -60
  284. package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +11 -12
  285. package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +5 -6
  286. package/lib/shell-components/store/reducers/notifications.reducers.d.ts +10 -11
  287. package/package.json +2 -5
  288. package/public-api.d.ts +82 -83
  289. package/store/reducers/index.d.ts +24 -25
  290. package/thetradeengineorg1-snova-shell-module.d.ts +5 -6
  291. package/lib/globaldependencies/components/avatar.component.d.ts.map +0 -1
  292. package/lib/globaldependencies/components/componentbase.d.ts.map +0 -1
  293. package/lib/globaldependencies/constants/feature-ids.d.ts.map +0 -1
  294. package/lib/globaldependencies/constants/localstorage-properties.d.ts.map +0 -1
  295. package/lib/globaldependencies/helpers/dom.helper.d.ts.map +0 -1
  296. package/lib/globaldependencies/helpers/fontawesome-icons.d.ts.map +0 -1
  297. package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts.map +0 -1
  298. package/lib/globaldependencies/helpers/window.helper.d.ts.map +0 -1
  299. package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts.map +0 -1
  300. package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts.map +0 -1
  301. package/lib/globaldependencies/pipes/highLightText.pipe.d.ts.map +0 -1
  302. package/lib/globaldependencies/pipes/orderby-pipe.d.ts.map +0 -1
  303. package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts.map +0 -1
  304. package/lib/globaldependencies/pipes/sanitize.pipe.d.ts.map +0 -1
  305. package/lib/globaldependencies/pipes/softlabels.pipes.d.ts.map +0 -1
  306. package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts.map +0 -1
  307. package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts.map +0 -1
  308. package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts.map +0 -1
  309. package/lib/shell-components/components/Payments/account.component.d.ts.map +0 -1
  310. package/lib/shell-components/components/Payments/company-information.d.ts.map +0 -1
  311. package/lib/shell-components/components/Payments/company-plans.component.d.ts.map +0 -1
  312. package/lib/shell-components/components/Payments/document.component.d.ts.map +0 -1
  313. package/lib/shell-components/components/Payments/payment-method.component.d.ts.map +0 -1
  314. package/lib/shell-components/components/Payments/product-service.component.d.ts.map +0 -1
  315. package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts.map +0 -1
  316. package/lib/shell-components/components/Payments/transactions.component.d.ts.map +0 -1
  317. package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts.map +0 -1
  318. package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts.map +0 -1
  319. package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +0 -1
  320. package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts.map +0 -1
  321. package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts.map +0 -1
  322. package/lib/shell-components/components/feed-time/feed-time.component.d.ts.map +0 -1
  323. package/lib/shell-components/components/header-side/header-side.component.d.ts.map +0 -1
  324. package/lib/shell-components/components/header-top/header-top.component.d.ts.map +0 -1
  325. package/lib/shell-components/components/lives/lives-welcome-page.d.ts.map +0 -1
  326. package/lib/shell-components/components/menu/menu.component.d.ts.map +0 -1
  327. package/lib/shell-components/components/menu/searchTask.enum.d.ts.map +0 -1
  328. package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts.map +0 -1
  329. package/lib/shell-components/components/notifications/notifications.component.d.ts.map +0 -1
  330. package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts.map +0 -1
  331. package/lib/shell-components/components/sidenav/side-bar.component.d.ts.map +0 -1
  332. package/lib/shell-components/components/sidenav/sidenav.component.d.ts.map +0 -1
  333. package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts.map +0 -1
  334. package/lib/shell-components/constants/api-urls.d.ts.map +0 -1
  335. package/lib/shell-components/constants/available-languages.d.ts.map +0 -1
  336. package/lib/shell-components/constants/channel-names.d.ts.map +0 -1
  337. package/lib/shell-components/constants/menu-categories.d.ts.map +0 -1
  338. package/lib/shell-components/constants/notification-routes.d.ts.map +0 -1
  339. package/lib/shell-components/constants/notification-type-ids.d.ts.map +0 -1
  340. package/lib/shell-components/enum/recentSearchType.enum.d.ts.map +0 -1
  341. package/lib/shell-components/models/AppMenuItemModel.d.ts.map +0 -1
  342. package/lib/shell-components/models/AppNotification.d.ts.map +0 -1
  343. package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts.map +0 -1
  344. package/lib/shell-components/models/ChannelUpdateModel.d.ts.map +0 -1
  345. package/lib/shell-components/models/EmployeeStatusModel.d.ts.map +0 -1
  346. package/lib/shell-components/models/IAdjust-screen-options.d.ts.map +0 -1
  347. package/lib/shell-components/models/IBadge.d.ts.map +0 -1
  348. package/lib/shell-components/models/IChildItem.d.ts.map +0 -1
  349. package/lib/shell-components/models/ILayout-change-options.d.ts.map +0 -1
  350. package/lib/shell-components/models/IMenuItem.d.ts.map +0 -1
  351. package/lib/shell-components/models/IlayoutConf.d.ts.map +0 -1
  352. package/lib/shell-components/models/IntroModel.d.ts.map +0 -1
  353. package/lib/shell-components/models/MessageDetails.d.ts.map +0 -1
  354. package/lib/shell-components/models/MessageTypingDetails.d.ts.map +0 -1
  355. package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts.map +0 -1
  356. package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts.map +0 -1
  357. package/lib/shell-components/models/NotificationsOutPutModel.d.ts.map +0 -1
  358. package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts.map +0 -1
  359. package/lib/shell-components/models/RecentSearchModel.d.ts.map +0 -1
  360. package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts.map +0 -1
  361. package/lib/shell-components/models/ReportSubmittedNotification.d.ts.map +0 -1
  362. package/lib/shell-components/models/RoleUpdatedNotification.d.ts.map +0 -1
  363. package/lib/shell-components/models/UserStoryAssignedNotification.d.ts.map +0 -1
  364. package/lib/shell-components/models/archiveUserStoryModel.d.ts.map +0 -1
  365. package/lib/shell-components/models/companieslist.model.d.ts.map +0 -1
  366. package/lib/shell-components/models/company-model.d.ts.map +0 -1
  367. package/lib/shell-components/models/company-payment-model.d.ts.map +0 -1
  368. package/lib/shell-components/models/dragedWidget.d.ts.map +0 -1
  369. package/lib/shell-components/models/employee-List.d.ts.map +0 -1
  370. package/lib/shell-components/models/employee.d.ts.map +0 -1
  371. package/lib/shell-components/models/entityRoleFeature.d.ts.map +0 -1
  372. package/lib/shell-components/models/export-configuration-model.d.ts.map +0 -1
  373. package/lib/shell-components/models/export-data.module.d.ts.map +0 -1
  374. package/lib/shell-components/models/goalApprovedNotificationModel.d.ts.map +0 -1
  375. package/lib/shell-components/models/import-configuration-model.d.ts.map +0 -1
  376. package/lib/shell-components/models/initialStatusofUsers.d.ts.map +0 -1
  377. package/lib/shell-components/models/invoiceOutput-model.d.ts.map +0 -1
  378. package/lib/shell-components/models/leaveApplicationNotifiction.d.ts.map +0 -1
  379. package/lib/shell-components/models/multiChartsScheduling.d.ts.map +0 -1
  380. package/lib/shell-components/models/parkUserStoryInputModel.d.ts.map +0 -1
  381. package/lib/shell-components/models/project.d.ts.map +0 -1
  382. package/lib/shell-components/models/recentSearchApiModel.d.ts.map +0 -1
  383. package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts.map +0 -1
  384. package/lib/shell-components/models/shellModulesInfo.d.ts.map +0 -1
  385. package/lib/shell-components/models/softlabels-model.d.ts.map +0 -1
  386. package/lib/shell-components/models/sprintReplanRequestedModel.d.ts.map +0 -1
  387. package/lib/shell-components/models/sprintStartedNotificationModel.d.ts.map +0 -1
  388. package/lib/shell-components/models/store-model.d.ts.map +0 -1
  389. package/lib/shell-components/models/store-search-model.d.ts.map +0 -1
  390. package/lib/shell-components/models/themes.model.d.ts.map +0 -1
  391. package/lib/shell-components/models/timesheetenabledisable.d.ts.map +0 -1
  392. package/lib/shell-components/models/user.d.ts.map +0 -1
  393. package/lib/shell-components/models/userStory.d.ts.map +0 -1
  394. package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts.map +0 -1
  395. package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts.map +0 -1
  396. package/lib/shell-components/models/userstory-custom-fields.model.d.ts.map +0 -1
  397. package/lib/shell-components/models/validation.model.d.ts.map +0 -1
  398. package/lib/shell-components/models/widgetlist.d.ts.map +0 -1
  399. package/lib/shell-components/models/workspaceList.d.ts.map +0 -1
  400. package/lib/shell-components/services/authentication.service.d.ts.map +0 -1
  401. package/lib/shell-components/services/chat.service.d.ts.map +0 -1
  402. package/lib/shell-components/services/common-used.service.d.ts.map +0 -1
  403. package/lib/shell-components/services/feature.service.d.ts.map +0 -1
  404. package/lib/shell-components/services/google-analytics.service.d.ts.map +0 -1
  405. package/lib/shell-components/services/layout.service.d.ts.map +0 -1
  406. package/lib/shell-components/services/payment.service.d.ts.map +0 -1
  407. package/lib/shell-components/services/recentSearch.service.d.ts.map +0 -1
  408. package/lib/shell-components/services/shell.modules.service.d.ts.map +0 -1
  409. package/lib/shell-components/services/signalr.service.d.ts.map +0 -1
  410. package/lib/shell-components/services/theme.service.d.ts.map +0 -1
  411. package/lib/shell-components/shell.module.d.ts.map +0 -1
  412. package/lib/shell-components/shell.routing.d.ts.map +0 -1
  413. package/lib/shell-components/store/actions/authentication.actions.d.ts.map +0 -1
  414. package/lib/shell-components/store/actions/chat.actions.d.ts.map +0 -1
  415. package/lib/shell-components/store/actions/menuitems.actions.d.ts.map +0 -1
  416. package/lib/shell-components/store/actions/notification-validator.action.d.ts.map +0 -1
  417. package/lib/shell-components/store/actions/notifications.actions.d.ts.map +0 -1
  418. package/lib/shell-components/store/effects/authentication.effects.d.ts.map +0 -1
  419. package/lib/shell-components/store/effects/chat.effects.d.ts.map +0 -1
  420. package/lib/shell-components/store/effects/index.d.ts.map +0 -1
  421. package/lib/shell-components/store/effects/menuitems.effects.d.ts.map +0 -1
  422. package/lib/shell-components/store/effects/notification-validator.effects.d.ts.map +0 -1
  423. package/lib/shell-components/store/effects/notifications.effects.d.ts.map +0 -1
  424. package/lib/shell-components/store/reducers/authentication.reducers.d.ts.map +0 -1
  425. package/lib/shell-components/store/reducers/chat.reducers.d.ts.map +0 -1
  426. package/lib/shell-components/store/reducers/index.d.ts.map +0 -1
  427. package/lib/shell-components/store/reducers/menuitems.reducers.d.ts.map +0 -1
  428. package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts.map +0 -1
  429. package/lib/shell-components/store/reducers/notifications.reducers.d.ts.map +0 -1
  430. package/public-api.d.ts.map +0 -1
  431. package/store/reducers/index.d.ts.map +0 -1
  432. package/thetradeengineorg1-snova-shell-module.d.ts.map +0 -1
@@ -1,438 +1,143 @@
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=
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