@sunbird-cb/toc 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -0
  2. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -0
  3. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -0
  4. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -0
  5. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -0
  6. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -0
  7. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -0
  8. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -0
  9. package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -0
  10. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -0
  11. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -0
  12. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -0
  13. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -0
  14. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -0
  15. package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -0
  16. package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -0
  17. package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -0
  18. package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -0
  19. package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -0
  20. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -0
  21. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -0
  22. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -0
  23. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -0
  24. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -0
  25. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -0
  26. package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -0
  27. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +223 -0
  28. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +591 -0
  29. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -0
  30. package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -0
  31. package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -0
  32. package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -0
  33. package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -0
  34. package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -0
  35. package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -0
  36. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -0
  37. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -0
  38. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -0
  39. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -0
  40. package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -0
  41. package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -0
  42. package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -0
  43. package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -0
  44. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -0
  45. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -0
  46. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -0
  47. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -0
  48. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -0
  49. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -0
  50. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -0
  51. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -0
  52. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +73 -0
  53. package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -0
  54. package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -0
  55. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -0
  56. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -0
  57. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -0
  58. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -0
  59. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -0
  60. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -0
  61. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -0
  62. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -0
  63. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -0
  64. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -0
  65. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -0
  66. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -0
  67. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -0
  68. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -0
  69. package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -0
  70. package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -0
  71. package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -0
  72. package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -0
  73. package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -0
  74. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -0
  75. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -0
  76. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -0
  77. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -0
  78. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -0
  79. package/esm2022/lib/_collection-api.mjs +57 -0
  80. package/esm2022/lib/_constants/widget-content.constants.mjs +19 -0
  81. package/esm2022/lib/_directives/tooltip.directive.mjs +68 -0
  82. package/esm2022/lib/_models/common.model.mjs +2 -0
  83. package/esm2022/lib/_models/error.model.mjs +2 -0
  84. package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -0
  85. package/esm2022/lib/_services/rating.service.mjs +89 -0
  86. package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -0
  87. package/esm2022/lib/_services/viewer-route-util.mjs +103 -0
  88. package/esm2022/lib/_services/widget-content.model.mjs +246 -0
  89. package/esm2022/lib/_services/widget-content.service.mjs +589 -0
  90. package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -0
  91. package/esm2022/lib/app-toc-lib.module.mjs +499 -0
  92. package/esm2022/lib/collection.config.mjs +161 -0
  93. package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -0
  94. package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -0
  95. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -0
  96. package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -0
  97. package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -0
  98. package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -0
  99. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -0
  100. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -0
  101. package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -0
  102. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2796 -0
  103. package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -0
  104. package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -0
  105. package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -0
  106. package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -0
  107. package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -0
  108. package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -0
  109. package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -0
  110. package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -0
  111. package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -0
  112. package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -0
  113. package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -0
  114. package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -0
  115. package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -0
  116. package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -0
  117. package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -0
  118. package/esm2022/lib/models/app-toc.model.mjs +38 -0
  119. package/esm2022/lib/models/auto-complete.model.mjs +2 -0
  120. package/esm2022/lib/models/card-content.model.mjs +13 -0
  121. package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -0
  122. package/esm2022/lib/models/discussion-forum.model.mjs +14 -0
  123. package/esm2022/lib/models/goal.model.mjs +2 -0
  124. package/esm2022/lib/models/meta-tag.model.mjs +8 -0
  125. package/esm2022/lib/models/playlist.model.mjs +2 -0
  126. package/esm2022/lib/models/profile-revamp.model.mjs +2 -0
  127. package/esm2022/lib/models/rating.model.mjs +2 -0
  128. package/esm2022/lib/models/user-profile.model.mjs +21 -0
  129. package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -0
  130. package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -0
  131. package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -0
  132. package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -0
  133. package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -0
  134. package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -0
  135. package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -0
  136. package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -0
  137. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -0
  138. package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -0
  139. package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -0
  140. package/esm2022/lib/services/access-control.service.mjs +56 -0
  141. package/esm2022/lib/services/action.service.mjs +23 -0
  142. package/esm2022/lib/services/app-toc-v2.service.mjs +47 -0
  143. package/esm2022/lib/services/app-toc.service.mjs +1001 -0
  144. package/esm2022/lib/services/certificate.service.mjs +69 -0
  145. package/esm2022/lib/services/discuss-utils.service.mjs +58 -0
  146. package/esm2022/lib/services/editor.service.mjs +34 -0
  147. package/esm2022/lib/services/load-check.service.mjs +21 -0
  148. package/esm2022/lib/services/loader.service.mjs +33 -0
  149. package/esm2022/lib/services/mobile-apps.service.mjs +67 -0
  150. package/esm2022/lib/services/netcore.service.mjs +56 -0
  151. package/esm2022/lib/services/nps-grid.service.mjs +31 -0
  152. package/esm2022/lib/services/otp.service.mjs +43 -0
  153. package/esm2022/lib/services/profile-v2.service.mjs +43 -0
  154. package/esm2022/lib/services/reset-ratings.service.mjs +19 -0
  155. package/esm2022/lib/services/resource-download-helper.service.mjs +64 -0
  156. package/esm2022/lib/services/timer.service.mjs +23 -0
  157. package/esm2022/lib/services/title-tag.service.mjs +71 -0
  158. package/esm2022/lib/services/user-profile.service.mjs +55 -0
  159. package/esm2022/lib/services/viewer-data.service.mjs +64 -0
  160. package/esm2022/lib/services/viewer-util.service.mjs +500 -0
  161. package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -0
  162. package/esm2022/lib/share-toc/share-toc.module.mjs +119 -0
  163. package/esm2022/public-api.mjs +56 -0
  164. package/esm2022/sunbird-cb-toc.mjs +5 -0
  165. package/fesm2022/sunbird-cb-toc.mjs +23517 -0
  166. package/fesm2022/sunbird-cb-toc.mjs.map +1 -0
  167. package/index.d.ts +6 -0
  168. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -0
  169. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
  170. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -0
  171. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
  172. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -0
  173. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
  174. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -0
  175. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
  176. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -0
  177. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
  178. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -0
  179. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
  180. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -0
  181. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
  182. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -0
  183. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
  184. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -0
  185. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
  186. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -0
  187. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
  188. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -0
  189. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
  190. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -0
  191. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
  192. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -0
  193. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
  194. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -0
  195. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
  196. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -0
  197. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
  198. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -0
  199. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
  200. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -0
  201. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
  202. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -0
  203. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
  204. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -0
  205. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
  206. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -0
  207. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
  208. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -0
  209. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
  210. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -0
  211. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
  212. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -0
  213. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
  214. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -0
  215. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
  216. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -0
  217. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
  218. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -0
  219. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
  220. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +49 -0
  221. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
  222. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +92 -0
  223. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
  224. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -0
  225. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
  226. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -0
  227. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
  228. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -0
  229. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
  230. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -0
  231. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
  232. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -0
  233. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
  234. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -0
  235. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
  236. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -0
  237. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
  238. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -0
  239. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
  240. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -0
  241. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
  242. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -0
  243. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
  244. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -0
  245. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
  246. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -0
  247. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
  248. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -0
  249. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
  250. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -0
  251. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
  252. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -0
  253. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
  254. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -0
  255. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
  256. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -0
  257. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
  258. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -0
  259. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
  260. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -0
  261. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
  262. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -0
  263. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
  264. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -0
  265. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
  266. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -0
  267. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
  268. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -0
  269. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
  270. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +17 -0
  271. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
  272. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -0
  273. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
  274. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -0
  275. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
  276. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -0
  277. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
  278. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -0
  279. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
  280. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -0
  281. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
  282. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -0
  283. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
  284. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -0
  285. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
  286. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -0
  287. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
  288. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -0
  289. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
  290. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -0
  291. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
  292. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -0
  293. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
  294. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -0
  295. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
  296. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -0
  297. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
  298. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -0
  299. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
  300. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -0
  301. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
  302. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -0
  303. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
  304. package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -0
  305. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
  306. package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -0
  307. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
  308. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -0
  309. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
  310. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -0
  311. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
  312. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -0
  313. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
  314. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -0
  315. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
  316. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -0
  317. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
  318. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -0
  319. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
  320. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -0
  321. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
  322. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -0
  323. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
  324. package/lib/_collection-api.d.ts +35 -0
  325. package/lib/_collection-api.d.ts.map +1 -0
  326. package/lib/_constants/widget-content.constants.d.ts +8 -0
  327. package/lib/_constants/widget-content.constants.d.ts.map +1 -0
  328. package/lib/_directives/tooltip.directive.d.ts +18 -0
  329. package/lib/_directives/tooltip.directive.d.ts.map +1 -0
  330. package/lib/_models/common.model.d.ts +4 -0
  331. package/lib/_models/common.model.d.ts.map +1 -0
  332. package/lib/_models/error.model.d.ts +6 -0
  333. package/lib/_models/error.model.d.ts.map +1 -0
  334. package/lib/_pipes/highlight.pipe.d.ts +11 -0
  335. package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
  336. package/lib/_services/rating.service.d.ts +19 -0
  337. package/lib/_services/rating.service.d.ts.map +1 -0
  338. package/lib/_services/samuhik-charcha.service.d.ts +14 -0
  339. package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
  340. package/lib/_services/viewer-route-util.d.ts +9 -0
  341. package/lib/_services/viewer-route-util.d.ts.map +1 -0
  342. package/lib/_services/widget-content.model.d.ts +515 -0
  343. package/lib/_services/widget-content.model.d.ts.map +1 -0
  344. package/lib/_services/widget-content.service.d.ts +101 -0
  345. package/lib/_services/widget-content.service.d.ts.map +1 -0
  346. package/lib/_shared/translate-loader.factory.d.ts +8 -0
  347. package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
  348. package/lib/app-toc-lib.module.d.ts +89 -0
  349. package/lib/app-toc-lib.module.d.ts.map +1 -0
  350. package/lib/collection.config.d.ts +160 -0
  351. package/lib/collection.config.d.ts.map +1 -0
  352. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -0
  353. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
  354. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -0
  355. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
  356. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -0
  357. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
  358. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -0
  359. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
  360. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -0
  361. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
  362. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -0
  363. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
  364. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -0
  365. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
  366. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -0
  367. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
  368. package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -0
  369. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  370. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +386 -0
  371. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
  372. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -0
  373. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
  374. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -0
  375. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
  376. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -0
  377. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
  378. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -0
  379. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
  380. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -0
  381. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
  382. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -0
  383. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
  384. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -0
  385. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
  386. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -0
  387. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
  388. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -0
  389. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
  390. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -0
  391. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
  392. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -0
  393. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
  394. package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -0
  395. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
  396. package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -0
  397. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
  398. package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -0
  399. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
  400. package/lib/models/app-toc-analytics.model.d.ts +153 -0
  401. package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
  402. package/lib/models/app-toc.model.d.ts +85 -0
  403. package/lib/models/app-toc.model.d.ts.map +1 -0
  404. package/lib/models/auto-complete.model.d.ts +28 -0
  405. package/lib/models/auto-complete.model.d.ts.map +1 -0
  406. package/lib/models/card-content.model.d.ts +20 -0
  407. package/lib/models/card-content.model.d.ts.map +1 -0
  408. package/lib/models/content-strip-with-tabs.model.d.ts +45 -0
  409. package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
  410. package/lib/models/discussion-forum.model.d.ts +41 -0
  411. package/lib/models/discussion-forum.model.d.ts.map +1 -0
  412. package/lib/models/goal.model.d.ts +23 -0
  413. package/lib/models/goal.model.d.ts.map +1 -0
  414. package/lib/models/meta-tag.model.d.ts +7 -0
  415. package/lib/models/meta-tag.model.d.ts.map +1 -0
  416. package/lib/models/playlist.model.d.ts +24 -0
  417. package/lib/models/playlist.model.d.ts.map +1 -0
  418. package/lib/models/profile-revamp.model.d.ts +15 -0
  419. package/lib/models/profile-revamp.model.d.ts.map +1 -0
  420. package/lib/models/rating.model.d.ts +18 -0
  421. package/lib/models/rating.model.d.ts.map +1 -0
  422. package/lib/models/user-profile.model.d.ts +38 -0
  423. package/lib/models/user-profile.model.d.ts.map +1 -0
  424. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -0
  425. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
  426. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -0
  427. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
  428. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -0
  429. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
  430. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -0
  431. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
  432. package/lib/resolvers/app-toc-resolver.service.d.ts +17 -0
  433. package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
  434. package/lib/resolvers/config-resolver.service.d.ts +12 -0
  435. package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
  436. package/lib/resolvers/profile-resolver.service.d.ts +12 -0
  437. package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
  438. package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -0
  439. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
  440. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -0
  441. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  442. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -0
  443. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
  444. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -0
  445. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
  446. package/lib/services/access-control.service.d.ts +30 -0
  447. package/lib/services/access-control.service.d.ts.map +1 -0
  448. package/lib/services/action.service.d.ts +10 -0
  449. package/lib/services/action.service.d.ts.map +1 -0
  450. package/lib/services/app-toc-v2.service.d.ts +8 -0
  451. package/lib/services/app-toc-v2.service.d.ts.map +1 -0
  452. package/lib/services/app-toc.service.d.ts +131 -0
  453. package/lib/services/app-toc.service.d.ts.map +1 -0
  454. package/lib/services/certificate.service.d.ts +43 -0
  455. package/lib/services/certificate.service.d.ts.map +1 -0
  456. package/lib/services/discuss-utils.service.d.ts +34 -0
  457. package/lib/services/discuss-utils.service.d.ts.map +1 -0
  458. package/lib/services/editor.service.d.ts +18 -0
  459. package/lib/services/editor.service.d.ts.map +1 -0
  460. package/lib/services/load-check.service.d.ts +9 -0
  461. package/lib/services/load-check.service.d.ts.map +1 -0
  462. package/lib/services/loader.service.d.ts +17 -0
  463. package/lib/services/loader.service.d.ts.map +1 -0
  464. package/lib/services/mobile-apps.service.d.ts +39 -0
  465. package/lib/services/mobile-apps.service.d.ts.map +1 -0
  466. package/lib/services/netcore.service.d.ts +34 -0
  467. package/lib/services/netcore.service.d.ts.map +1 -0
  468. package/lib/services/nps-grid.service.d.ts +16 -0
  469. package/lib/services/nps-grid.service.d.ts.map +1 -0
  470. package/lib/services/otp.service.d.ts +21 -0
  471. package/lib/services/otp.service.d.ts.map +1 -0
  472. package/lib/services/profile-v2.service.d.ts +21 -0
  473. package/lib/services/profile-v2.service.d.ts.map +1 -0
  474. package/lib/services/reset-ratings.service.d.ts +9 -0
  475. package/lib/services/reset-ratings.service.d.ts.map +1 -0
  476. package/lib/services/resource-download-helper.service.d.ts +30 -0
  477. package/lib/services/resource-download-helper.service.d.ts.map +1 -0
  478. package/lib/services/timer.service.d.ts +10 -0
  479. package/lib/services/timer.service.d.ts.map +1 -0
  480. package/lib/services/title-tag.service.d.ts +22 -0
  481. package/lib/services/title-tag.service.d.ts.map +1 -0
  482. package/lib/services/user-profile.service.d.ts +25 -0
  483. package/lib/services/user-profile.service.d.ts.map +1 -0
  484. package/lib/services/viewer-data.service.d.ts +59 -0
  485. package/lib/services/viewer-data.service.d.ts.map +1 -0
  486. package/lib/services/viewer-util.service.d.ts +63 -0
  487. package/lib/services/viewer-util.service.d.ts.map +1 -0
  488. package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -0
  489. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
  490. package/lib/share-toc/share-toc.module.d.ts +33 -0
  491. package/lib/share-toc/share-toc.module.d.ts.map +1 -0
  492. package/package.json +36 -0
  493. package/public-api.d.ts +44 -0
  494. package/public-api.d.ts.map +1 -0
  495. package/sunbird-cb-toc.d.ts.map +1 -0
@@ -0,0 +1,297 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { ConfirmationDialogComponent } from '@sunbird-cb/consumption';
3
+ import * as _ from 'lodash';
4
+ import { AssignmentViewerV2Component } from '../app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ import * as i2 from "@angular/material/legacy-snack-bar";
8
+ import * as i3 from "../../../../services/app-toc.service";
9
+ import * as i4 from "@sunbird-cb/utils-v2";
10
+ import * as i5 from "@angular/material/dialog";
11
+ import * as i6 from "@angular/material/legacy-dialog";
12
+ import * as i7 from "@angular/common";
13
+ import * as i8 from "@angular/material/icon";
14
+ import * as i9 from "@angular/material/progress-spinner";
15
+ import * as i10 from "@ngx-translate/core";
16
+ export class AppTocBatchAssignmentsComponent {
17
+ constructor(router, snackBar, tocSvc, configSvc, dialog, dialogLegacy, route) {
18
+ this.router = router;
19
+ this.snackBar = snackBar;
20
+ this.tocSvc = tocSvc;
21
+ this.configSvc = configSvc;
22
+ this.dialog = dialog;
23
+ this.dialogLegacy = dialogLegacy;
24
+ this.route = route;
25
+ this.assignments = [];
26
+ this.allowType = ['.pdf'];
27
+ this.isLoading = false;
28
+ this.submissions = [];
29
+ this.batchId = this.route.snapshot.queryParams.batchId ?
30
+ this.route.snapshot.queryParams.batchId : '';
31
+ }
32
+ ngOnInit() {
33
+ this.fetchAssignments();
34
+ }
35
+ getUserAssignmentStatus() {
36
+ if (this.configSvc.userProfile && this.configSvc.userProfile.userId) {
37
+ const request = {
38
+ filters: {
39
+ contextId: this.content.identifier,
40
+ submittedBy: this.configSvc.userProfile.userId
41
+ }
42
+ };
43
+ this.tocSvc.getAssignmentStatus(request).subscribe((response) => {
44
+ this.submissions = _.get(response, 'result.response.content', []);
45
+ console.log('submissions', this.submissions);
46
+ this.processAssignmentsWithStatus();
47
+ }, error => {
48
+ console.error('Error fetching assignment status', error);
49
+ });
50
+ }
51
+ }
52
+ processAssignmentsWithStatus() {
53
+ this.assignments = this.assignments.map((assignment) => ({
54
+ ...assignment,
55
+ expand: false,
56
+ downloading: false,
57
+ enableDownload: false,
58
+ answerURL: this.submissions.find(sub => sub.formId === assignment.formId)?.submitUrl || '',
59
+ status: this.submissions.find(sub => sub.formId === assignment.formId)?.status || 'PENDING',
60
+ enableView: this.submissions.find(sub => sub.formId === assignment.formId)?.status === 'EVALUATED',
61
+ submissionMeta: this.submissions.find(sub => sub.formId === assignment.formId)?.status === 'EVALUATED' ? this.submissions.find(sub => sub.formId === assignment.formId)?.submissionMeta : {}
62
+ }));
63
+ }
64
+ fetchAssignments() {
65
+ const payload = {
66
+ query: '',
67
+ filters: {
68
+ "additionalProperties.batchId": this.batchId,
69
+ },
70
+ };
71
+ this.tocSvc.searchAssignments(payload).subscribe((response) => {
72
+ let assignments = _.get(response, 'result.response.content', []);
73
+ this.assignments = assignments.map((assignment) => ({
74
+ ...assignment,
75
+ expand: false,
76
+ downloading: false,
77
+ enableView: false,
78
+ enableDownload: false,
79
+ answerURL: '',
80
+ status: '',
81
+ submissionMeta: {}
82
+ }));
83
+ this.getUserAssignmentStatus();
84
+ }, error => {
85
+ console.error('Error fetching assignments', error);
86
+ });
87
+ }
88
+ handleViewFeedback(assignment) {
89
+ assignment.expand = true;
90
+ }
91
+ downloadFile(assignment) {
92
+ assignment.downloading = true;
93
+ assignment.enableDownload = true;
94
+ this.selectedAssignment = assignment;
95
+ this.downloadFileWithFetch(assignment);
96
+ }
97
+ downloadFileDirectly(assignment) {
98
+ if (assignment.additionalProperties.assignmentUrl) {
99
+ window.open(assignment.additionalProperties.assignmentUrl, '_blank');
100
+ assignment.downloading = false;
101
+ }
102
+ }
103
+ async downloadFileWithFetch(assignment) {
104
+ if (!assignment.additionalProperties.assignmentUrl)
105
+ return;
106
+ try {
107
+ const response = await fetch(assignment.additionalProperties.assignmentUrl);
108
+ if (!response.ok) {
109
+ throw new Error('Network response was not ok');
110
+ }
111
+ const blob = await response.blob();
112
+ const url = window.URL.createObjectURL(blob);
113
+ const link = document.createElement('a');
114
+ link.href = url;
115
+ link.download = this.extractFilenameFromUrl(assignment.additionalProperties.assignmentUrl) || `${assignment.title}.pdf`;
116
+ document.body.appendChild(link);
117
+ link.click();
118
+ document.body.removeChild(link);
119
+ window.URL.revokeObjectURL(url);
120
+ assignment.downloading = false;
121
+ }
122
+ catch (error) {
123
+ console.error('Download failed:', error);
124
+ this.downloadFileDirectly(assignment);
125
+ }
126
+ }
127
+ triggerFileUpload(assignment) {
128
+ this.selectedAssignment = assignment;
129
+ if (assignment.answerURL) {
130
+ this.submitAssignment(assignment);
131
+ }
132
+ else {
133
+ const fileInput = document.getElementById('sResourceFile');
134
+ if (fileInput) {
135
+ fileInput.click();
136
+ }
137
+ }
138
+ }
139
+ submitAssignment(assessment) {
140
+ console.log('Submit assignment clicked', assessment);
141
+ const dialgoData = {
142
+ description: 'You have already uploaded an assignment. Choose an option below to either keep your current submission or upload a new file.',
143
+ type: 'warning',
144
+ buttonsPositionClass: 'justify-center items-center',
145
+ buttons: [
146
+ {
147
+ classes: 'btn-out-line',
148
+ text: 'Re-upload',
149
+ response: 0
150
+ },
151
+ {
152
+ classes: 'succes-button',
153
+ text: 'Keep Submission',
154
+ response: 1
155
+ }
156
+ ]
157
+ };
158
+ const dialogRef = this.dialogLegacy.open(ConfirmationDialogComponent, {
159
+ data: dialgoData,
160
+ disableClose: false,
161
+ width: '400px',
162
+ maxWidth: '90vw'
163
+ });
164
+ dialogRef.afterClosed().subscribe((result) => {
165
+ if (result === 1) {
166
+ //this.viewAssignments(assessment.answerURL)
167
+ this.previewAssignments(assessment.answerURL);
168
+ }
169
+ else if (result === 0) {
170
+ const fileInput = document.getElementById('sResourceFile');
171
+ if (fileInput) {
172
+ fileInput.click();
173
+ }
174
+ }
175
+ });
176
+ }
177
+ fileInputEmit(fileInput) {
178
+ if (!fileInput || fileInput.length === 0) {
179
+ return;
180
+ }
181
+ const file = fileInput[0];
182
+ if (this.checkFileType(file)) {
183
+ this.upload(file);
184
+ }
185
+ }
186
+ async upload(file) {
187
+ this.resourceFileAdded = file;
188
+ this.isLoading = true;
189
+ try {
190
+ const uploadRes = await this.tocSvc.uploadAssignmentAnswer(this.content.identifier, this.batchId, this.selectedAssignment.formId, file).toPromise();
191
+ if (uploadRes && uploadRes.responseCode === 'OK') {
192
+ this.openSnackbar('File uploaded successfully');
193
+ this.previewAssignments(uploadRes.result.url);
194
+ }
195
+ else {
196
+ this.isLoading = false;
197
+ this.openSnackbar('File upload failed. Please try again.');
198
+ }
199
+ }
200
+ catch (error) {
201
+ this.isLoading = false;
202
+ console.error('Upload API error:', error);
203
+ this.openSnackbar('File upload failed. Please try again.');
204
+ }
205
+ }
206
+ previewAssignments(result) {
207
+ this.isLoading = false;
208
+ this.callingViewAssignments(result);
209
+ }
210
+ callingViewAssignments(url) {
211
+ const dialogRef = this.dialog.open(AssignmentViewerV2Component, {
212
+ width: '40%',
213
+ disableClose: true,
214
+ panelClass: 'dialog_sidenav',
215
+ data: {
216
+ assessment: this.selectedAssignment,
217
+ url: url,
218
+ contentId: this.content.identifier,
219
+ batchId: this.batchId,
220
+ }
221
+ });
222
+ dialogRef.afterClosed().subscribe(result => {
223
+ setTimeout(() => {
224
+ this.fetchAssignments();
225
+ }, 1000);
226
+ console.log(result);
227
+ });
228
+ }
229
+ checkFileType(file) {
230
+ let flag = false;
231
+ if (file && file.size) {
232
+ const fileInMB = Math.floor(file.size / (1024 * 1024));
233
+ if (fileInMB > 5) {
234
+ this.openSnackbar('File size exceeds 5 MB limit. Please upload a smaller file.');
235
+ return false;
236
+ }
237
+ }
238
+ if (file && this.allowType && this.allowType.length > 0) {
239
+ this.allowType.forEach((ele) => {
240
+ if (file.name.toLowerCase().endsWith(ele)) {
241
+ flag = true;
242
+ }
243
+ });
244
+ }
245
+ if (!flag) {
246
+ this.openSnackbar('Invalid file type uploaded. Please upload supporting format only.');
247
+ }
248
+ this.fileExtention = file.name.toLowerCase().substring(file.name.lastIndexOf('.'));
249
+ if (file) {
250
+ if (['.pdf'].includes(this.fileExtention)) {
251
+ flag = true;
252
+ }
253
+ else {
254
+ flag = false;
255
+ }
256
+ if (!flag) {
257
+ this.openSnackbar('Invalid file type uploaded. Please upload PDF format only.');
258
+ }
259
+ }
260
+ return flag;
261
+ }
262
+ getMarks(submissionMeta) {
263
+ if (submissionMeta?.marksGiven != null && submissionMeta?.maximumMarks != null) {
264
+ return `${submissionMeta.marksGiven}` + '/' + `${submissionMeta.maximumMarks}`;
265
+ }
266
+ else if (submissionMeta?.marksGiven != null) {
267
+ return `${submissionMeta.marksGiven}`;
268
+ }
269
+ else {
270
+ return 'N/A';
271
+ }
272
+ }
273
+ openSnackbar(primaryMsg, duration = 5000) {
274
+ this.snackBar.open(primaryMsg, 'X', {
275
+ duration,
276
+ });
277
+ }
278
+ extractFilenameFromUrl(url) {
279
+ try {
280
+ const urlParts = url.split('/');
281
+ const filename = urlParts[urlParts.length - 1];
282
+ return filename.includes('.') ? filename : '';
283
+ }
284
+ catch (error) {
285
+ return '';
286
+ }
287
+ }
288
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocBatchAssignmentsComponent, deps: [{ token: i1.Router }, { token: i2.MatLegacySnackBar }, { token: i3.AppTocService }, { token: i4.ConfigurationsService }, { token: i5.MatDialog }, { token: i6.MatLegacyDialog }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
289
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocBatchAssignmentsComponent, selector: "ws-widget-app-batch-assignments", inputs: { content: "content" }, ngImport: i0, template: "<div class=\"guide-container\">\n <div class=\"flex flex row\">\n <div class=\"info-banner info-banner-warning flex flex-row itm-center\">\n <mat-icon class=\"info-icon margin-right-s assignment-note-icon\">info</mat-icon>\n <span class=\"assignment-note\"> {{ 'userAssignments.note' | translate }}</span>\n </div>\n </div>\n <ng-container *ngFor=\"let assignment of assignments; index as i\">\n <div class=\"guide-card\">\n <div class=\"content flex gap-4 justify-between flex-middle\">\n <div class=\"note-title\">{{i + 1}}. {{assignment.title}} </div>\n <div class=\"flex flex-middle gap-3\" *ngIf=\"!assignment.expand\">\n <button mat-button class=\"download-btn cursor-pointer flex align-center justify-center\"\n (click)=\"downloadFile(assignment)\" [disabled]=\"assignment.downloading\">\n <span *ngIf=\"assignment.downloading\" class=\"white-spinner\">\n <mat-spinner diameter=\"16\" class=\"mr-2\" [style.color]=\"'white'\" strokeWidth=\"2\"></mat-spinner>Download\n </span>\n <span *ngIf=\"!assignment.downloading\">\n {{ 'userAssignments.download' | translate }}\n </span>\n </button>\n <ng-container *ngIf=\"assignment.status === 'DRAFT'\">\n <button mat-button class=\"upload-btn cursor-pointer flex align-center justify-center\"\n (click)=\"triggerFileUpload(assignment)\">\n {{ 'userAssignments.upload' | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"assignment.status !== 'DRAFT'\">\n <button mat-button class=\"upload-btn cursor-pointer flex align-center justify-center\"\n (click)=\"triggerFileUpload(assignment)\"\n [disabled]=\"assignment.status === 'SUBMITTED' || assignment.status === 'EVALUATED' || !assignment.enableDownload\">\n {{ 'userAssignments.upload' | translate }}\n </button>\n </ng-container>\n <!-- <button mat-button class=\"upload-btn cursor-pointer flex align-center justify-center\"\n (click)=\"triggerFileUpload(assignment)\" [disabled]=\"!assignment.enableDownload\">\n Upload\n </button> -->\n <input #resourceFile type=\"file\" name=\"sResourceFile\" id=\"sResourceFile\" class=\"hidden\"\n (change)=\"fileInputEmit(resourceFile.files)\">\n <ng-container *ngIf=\"assignment.status === 'SUBMITTED'\">\n <button mat-button class=\"view-btn cursor-pointer flex align-center justify-center\"\n (click)=\"handleViewFeedback(assignment)\" [disabled]=\"true\">{{ 'userAssignments.viewFeedback' | translate\n }}</button>\n </ng-container>\n <ng-container *ngIf=\"assignment.status === 'EVALUATED'\">\n <button mat-button class=\"view-btn cursor-pointer flex align-center justify-center\"\n (click)=\"handleViewFeedback(assignment)\">{{ 'userAssignments.viewFeedback' | translate }}</button>\n </ng-container>\n\n </div>\n <mat-icon class=\"cursor-pointer c-icon\" *ngIf=\"assignment.expand\"\n (click)=\"assignment.expand = !assignment.expand\">\n close\n </mat-icon>\n </div>\n <div class=\"flex justify-between flex-col mt-4 feedback-container\"\n *ngIf=\"assignment.expand && assignment?.submissionMeta?.marksGiven\">\n <div class=\"font-bold font-style\">\n <div>\n {{ 'userAssignments.marksObtained' | translate }} - {{getMarks(assignment?.submissionMeta)}}\n </div>\n </div>\n <div class=\"font-bold font-style\">{{ 'userAssignments.instructorFeedback' | translate }}</div>\n <div class=\"font-style\">\n {{assignment?.submissionMeta?.instructorFeedback}}\n </div>\n </div>\n\n </div>\n </ng-container>\n</div>\n<div class=\"flex justify-center items-center mt-4 loader\" *ngIf=\"isLoading\">\n <mat-spinner strokeWidth=\"3\" [diameter]=\"50\" [style.stroke]=\"'#1B4CA1'\" class=\"blue-spinner\"></mat-spinner>\n</div>\n\n\n<!-- No teachers resources message -->\n<div *ngIf=\"assignments?.length === 0\" class=\"no-resources-message mt-4\">\n {{ 'userAssignments.noAssignments' | translate }}\n</div>", styles: [".download-btn,.view-btn{background-color:#1b4ca1;border-radius:16px;padding:6px 16px;color:#fff;font-size:14px;font-weight:600;border:none!important;font-family:Lato}.view-btn:disabled{cursor:not-allowed;opacity:.6}.c-icon{color:#1b4ca1!important;font-size:14px;height:14px;width:14px;font-weight:600;border:1px solid #1B4CA1;border-radius:11px;padding:2px}.upload-btn{background-color:#fff;border:1px solid #1B4CA1!important;border-radius:16px;padding:6px 16px;color:#1b4ca1;font-weight:600;font-size:14px;font-family:Lato}.font-style{font-size:14px;font-family:Lato}.note-title{font-family:Lato;font-weight:500;font-style:Medium;font-size:16px;line-height:100%;letter-spacing:0%}.guide-card{border-radius:8px;background-color:#fff;padding:16px;margin:16px 0}.download-btn,.download-link{cursor:pointer;transition:opacity .2s ease}.download-btn:disabled,.download-link:disabled{opacity:.6;cursor:not-allowed}.upload-btn:disabled{cursor:not-allowed;border:1px solid #858181!important;color:#858181}mat-spinner{display:inline-block;vertical-align:middle;margin-right:8px}.download-btn .white-spinner ::ng-deep .mat-progress-spinner circle,.download-btn .white-spinner ::ng-deep .mat-spinner circle{stroke:#fff!important}.loader{position:absolute;top:50%;left:50%}.loader .blue-spinner{transform:translate(-50%,-50%);z-index:1000}.loader .blue-spinner ::ng-deep .mat-progress-spinner circle,.loader .blue-spinner ::ng-deep .mat-spinner circle{stroke:#1b4ca1!important}.feedback-container{background:#f4f8ff;padding:15px;border-radius:10px}.assignment-note{font-family:Lato;color:#1b4ca1}.assignment-note-icon{font-size:22px!important;width:22px!important;height:22px!important;color:#f0aa6b!important}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] }); }
290
+ }
291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocBatchAssignmentsComponent, decorators: [{
292
+ type: Component,
293
+ args: [{ selector: 'ws-widget-app-batch-assignments', template: "<div class=\"guide-container\">\n <div class=\"flex flex row\">\n <div class=\"info-banner info-banner-warning flex flex-row itm-center\">\n <mat-icon class=\"info-icon margin-right-s assignment-note-icon\">info</mat-icon>\n <span class=\"assignment-note\"> {{ 'userAssignments.note' | translate }}</span>\n </div>\n </div>\n <ng-container *ngFor=\"let assignment of assignments; index as i\">\n <div class=\"guide-card\">\n <div class=\"content flex gap-4 justify-between flex-middle\">\n <div class=\"note-title\">{{i + 1}}. {{assignment.title}} </div>\n <div class=\"flex flex-middle gap-3\" *ngIf=\"!assignment.expand\">\n <button mat-button class=\"download-btn cursor-pointer flex align-center justify-center\"\n (click)=\"downloadFile(assignment)\" [disabled]=\"assignment.downloading\">\n <span *ngIf=\"assignment.downloading\" class=\"white-spinner\">\n <mat-spinner diameter=\"16\" class=\"mr-2\" [style.color]=\"'white'\" strokeWidth=\"2\"></mat-spinner>Download\n </span>\n <span *ngIf=\"!assignment.downloading\">\n {{ 'userAssignments.download' | translate }}\n </span>\n </button>\n <ng-container *ngIf=\"assignment.status === 'DRAFT'\">\n <button mat-button class=\"upload-btn cursor-pointer flex align-center justify-center\"\n (click)=\"triggerFileUpload(assignment)\">\n {{ 'userAssignments.upload' | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"assignment.status !== 'DRAFT'\">\n <button mat-button class=\"upload-btn cursor-pointer flex align-center justify-center\"\n (click)=\"triggerFileUpload(assignment)\"\n [disabled]=\"assignment.status === 'SUBMITTED' || assignment.status === 'EVALUATED' || !assignment.enableDownload\">\n {{ 'userAssignments.upload' | translate }}\n </button>\n </ng-container>\n <!-- <button mat-button class=\"upload-btn cursor-pointer flex align-center justify-center\"\n (click)=\"triggerFileUpload(assignment)\" [disabled]=\"!assignment.enableDownload\">\n Upload\n </button> -->\n <input #resourceFile type=\"file\" name=\"sResourceFile\" id=\"sResourceFile\" class=\"hidden\"\n (change)=\"fileInputEmit(resourceFile.files)\">\n <ng-container *ngIf=\"assignment.status === 'SUBMITTED'\">\n <button mat-button class=\"view-btn cursor-pointer flex align-center justify-center\"\n (click)=\"handleViewFeedback(assignment)\" [disabled]=\"true\">{{ 'userAssignments.viewFeedback' | translate\n }}</button>\n </ng-container>\n <ng-container *ngIf=\"assignment.status === 'EVALUATED'\">\n <button mat-button class=\"view-btn cursor-pointer flex align-center justify-center\"\n (click)=\"handleViewFeedback(assignment)\">{{ 'userAssignments.viewFeedback' | translate }}</button>\n </ng-container>\n\n </div>\n <mat-icon class=\"cursor-pointer c-icon\" *ngIf=\"assignment.expand\"\n (click)=\"assignment.expand = !assignment.expand\">\n close\n </mat-icon>\n </div>\n <div class=\"flex justify-between flex-col mt-4 feedback-container\"\n *ngIf=\"assignment.expand && assignment?.submissionMeta?.marksGiven\">\n <div class=\"font-bold font-style\">\n <div>\n {{ 'userAssignments.marksObtained' | translate }} - {{getMarks(assignment?.submissionMeta)}}\n </div>\n </div>\n <div class=\"font-bold font-style\">{{ 'userAssignments.instructorFeedback' | translate }}</div>\n <div class=\"font-style\">\n {{assignment?.submissionMeta?.instructorFeedback}}\n </div>\n </div>\n\n </div>\n </ng-container>\n</div>\n<div class=\"flex justify-center items-center mt-4 loader\" *ngIf=\"isLoading\">\n <mat-spinner strokeWidth=\"3\" [diameter]=\"50\" [style.stroke]=\"'#1B4CA1'\" class=\"blue-spinner\"></mat-spinner>\n</div>\n\n\n<!-- No teachers resources message -->\n<div *ngIf=\"assignments?.length === 0\" class=\"no-resources-message mt-4\">\n {{ 'userAssignments.noAssignments' | translate }}\n</div>", styles: [".download-btn,.view-btn{background-color:#1b4ca1;border-radius:16px;padding:6px 16px;color:#fff;font-size:14px;font-weight:600;border:none!important;font-family:Lato}.view-btn:disabled{cursor:not-allowed;opacity:.6}.c-icon{color:#1b4ca1!important;font-size:14px;height:14px;width:14px;font-weight:600;border:1px solid #1B4CA1;border-radius:11px;padding:2px}.upload-btn{background-color:#fff;border:1px solid #1B4CA1!important;border-radius:16px;padding:6px 16px;color:#1b4ca1;font-weight:600;font-size:14px;font-family:Lato}.font-style{font-size:14px;font-family:Lato}.note-title{font-family:Lato;font-weight:500;font-style:Medium;font-size:16px;line-height:100%;letter-spacing:0%}.guide-card{border-radius:8px;background-color:#fff;padding:16px;margin:16px 0}.download-btn,.download-link{cursor:pointer;transition:opacity .2s ease}.download-btn:disabled,.download-link:disabled{opacity:.6;cursor:not-allowed}.upload-btn:disabled{cursor:not-allowed;border:1px solid #858181!important;color:#858181}mat-spinner{display:inline-block;vertical-align:middle;margin-right:8px}.download-btn .white-spinner ::ng-deep .mat-progress-spinner circle,.download-btn .white-spinner ::ng-deep .mat-spinner circle{stroke:#fff!important}.loader{position:absolute;top:50%;left:50%}.loader .blue-spinner{transform:translate(-50%,-50%);z-index:1000}.loader .blue-spinner ::ng-deep .mat-progress-spinner circle,.loader .blue-spinner ::ng-deep .mat-spinner circle{stroke:#1b4ca1!important}.feedback-container{background:#f4f8ff;padding:15px;border-radius:10px}.assignment-note{font-family:Lato;color:#1b4ca1}.assignment-note-icon{font-size:22px!important;width:22px!important;height:22px!important;color:#f0aa6b!important}\n"] }]
294
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.MatLegacySnackBar }, { type: i3.AppTocService }, { type: i4.ConfigurationsService }, { type: i5.MatDialog }, { type: i6.MatLegacyDialog }, { type: i1.ActivatedRoute }]; }, propDecorators: { content: [{
295
+ type: Input
296
+ }] } });
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1iYXRjaC1hc3NpZ25tZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX2NvbGxlY3Rpb24vX2NvbW1vbi9jb250ZW50LXRvYy9hcHAtdG9jLWJhdGNoLWFzc2lnbm1lbnRzL2FwcC10b2MtYmF0Y2gtYXNzaWdubWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvYXBwLXRvYy1iYXRjaC1hc3NpZ25tZW50cy9hcHAtdG9jLWJhdGNoLWFzc2lnbm1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFBO0FBTXhELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRXJFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFBOzs7Ozs7Ozs7Ozs7QUFRbEgsTUFBTSxPQUFPLCtCQUErQjtJQWExQyxZQUFtQixNQUFjLEVBQ3ZCLFFBQTJCLEVBQzVCLE1BQXFCLEVBQ3JCLFNBQWdDLEVBQy9CLE1BQWlCLEVBQ2pCLFlBQTZCLEVBQzdCLEtBQXFCO1FBTlosV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLFVBQUssR0FB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WUFDRixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQy9CLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQzlDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7U0FDOUM7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7SUFDSCxDQUFDOytHQXhTVSwrQkFBK0I7bUdBQS9CLCtCQUErQix1R0NqQjVDLDJ2SUFnRk07OzRGRC9ETywrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsaUNBQWlDO2dSQU9sQyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJ1xuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJ1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsgQXBwVG9jU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FwcC10b2Muc2VydmljZSdcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BzdW5iaXJkLWNiL2NvbnN1bXB0aW9uJ1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgQXNzaWdubWVudFZpZXdlclYyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXBwLXRvYy1hc3NpZ25tZW50LXZpZXdlclYyL2FwcC10b2MtYXNzaWdubWVudC12aWV3ZXJWMi5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLXdpZGdldC1hcHAtYmF0Y2gtYXNzaWdubWVudHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXRvYy1iYXRjaC1hc3NpZ25tZW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC10b2MtYmF0Y2gtYXNzaWdubWVudHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBBcHBUb2NCYXRjaEFzc2lnbm1lbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBjb250ZW50OiBhbnlcbiAgYXNzaWdubWVudHM6IGFueVtdID0gW11cbiAgYWxsb3dUeXBlOiBzdHJpbmdbXSA9IFsnLnBkZiddXG4gIGZpbGVFeHRlbnRpb246IGFueVxuICByZXNvdXJjZUZpbGVBZGRlZDogYW55XG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlXG4gIHNlbGVjdGVkQXNzaWdubWVudDogYW55XG4gIGJhdGNoSWQ6IGFueVxuICBzdWJtaXNzaW9uczogYW55W10gPSBbXVxuXG5cbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdExlZ2FjeVNuYWNrQmFyLFxuICAgIHB1YmxpYyB0b2NTdmM6IEFwcFRvY1NlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBkaWFsb2dMZWdhY3k6IE1hdExlZ2FjeURpYWxvZyxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gICAgdGhpcy5iYXRjaElkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5iYXRjaElkID9cbiAgICAgIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuYmF0Y2hJZCA6ICcnXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZldGNoQXNzaWdubWVudHMoKVxuICB9XG5cbiAgZ2V0VXNlckFzc2lnbm1lbnRTdGF0dXMoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZCkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIGNvbnRleHRJZDogdGhpcy5jb250ZW50LmlkZW50aWZpZXIsXG4gICAgICAgICAgc3VibWl0dGVkQnk6IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnRvY1N2Yy5nZXRBc3NpZ25tZW50U3RhdHVzKHJlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb25zID0gXy5nZXQocmVzcG9uc2UsICdyZXN1bHQucmVzcG9uc2UuY29udGVudCcsIFtdKVxuICAgICAgICBjb25zb2xlLmxvZygnc3VibWlzc2lvbnMnLCB0aGlzLnN1Ym1pc3Npb25zKVxuICAgICAgICB0aGlzLnByb2Nlc3NBc3NpZ25tZW50c1dpdGhTdGF0dXMoKVxuICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBhc3NpZ25tZW50IHN0YXR1cycsIGVycm9yKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzQXNzaWdubWVudHNXaXRoU3RhdHVzKCkge1xuICAgIHRoaXMuYXNzaWdubWVudHMgPSB0aGlzLmFzc2lnbm1lbnRzLm1hcCgoYXNzaWdubWVudDogYW55KSA9PiAoe1xuICAgICAgLi4uYXNzaWdubWVudCxcbiAgICAgIGV4cGFuZDogZmFsc2UsXG4gICAgICBkb3dubG9hZGluZzogZmFsc2UsXG4gICAgICBlbmFibGVEb3dubG9hZDogZmFsc2UsXG4gICAgICBhbnN3ZXJVUkw6IHRoaXMuc3VibWlzc2lvbnMuZmluZChzdWIgPT4gc3ViLmZvcm1JZCA9PT0gYXNzaWdubWVudC5mb3JtSWQpPy5zdWJtaXRVcmwgfHwgJycsXG4gICAgICBzdGF0dXM6IHRoaXMuc3VibWlzc2lvbnMuZmluZChzdWIgPT4gc3ViLmZvcm1JZCA9PT0gYXNzaWdubWVudC5mb3JtSWQpPy5zdGF0dXMgfHwgJ1BFTkRJTkcnLFxuICAgICAgZW5hYmxlVmlldzogdGhpcy5zdWJtaXNzaW9ucy5maW5kKHN1YiA9PiBzdWIuZm9ybUlkID09PSBhc3NpZ25tZW50LmZvcm1JZCk/LnN0YXR1cyA9PT0gJ0VWQUxVQVRFRCcsXG4gICAgICBzdWJtaXNzaW9uTWV0YTogdGhpcy5zdWJtaXNzaW9ucy5maW5kKHN1YiA9PiBzdWIuZm9ybUlkID09PSBhc3NpZ25tZW50LmZvcm1JZCk/LnN0YXR1cyA9PT0gJ0VWQUxVQVRFRCcgPyB0aGlzLnN1Ym1pc3Npb25zLmZpbmQoc3ViID0+IHN1Yi5mb3JtSWQgPT09IGFzc2lnbm1lbnQuZm9ybUlkKT8uc3VibWlzc2lvbk1ldGEgOiB7fVxuICAgIH0pKVxuICB9XG4gIGZldGNoQXNzaWdubWVudHMoKSB7XG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xuICAgICAgcXVlcnk6ICcnLFxuICAgICAgZmlsdGVyczoge1xuICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzLmJhdGNoSWRcIjogdGhpcy5iYXRjaElkLFxuICAgICAgfSxcbiAgICB9XG4gICAgdGhpcy50b2NTdmMuc2VhcmNoQXNzaWdubWVudHMocGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBsZXQgYXNzaWdubWVudHMgPSBfLmdldChyZXNwb25zZSwgJ3Jlc3VsdC5yZXNwb25zZS5jb250ZW50JywgW10pXG4gICAgICB0aGlzLmFzc2lnbm1lbnRzID0gYXNzaWdubWVudHMubWFwKChhc3NpZ25tZW50OiBhbnkpID0+ICh7XG4gICAgICAgIC4uLmFzc2lnbm1lbnQsXG4gICAgICAgIGV4cGFuZDogZmFsc2UsXG4gICAgICAgIGRvd25sb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlVmlldzogZmFsc2UsXG4gICAgICAgIGVuYWJsZURvd25sb2FkOiBmYWxzZSxcbiAgICAgICAgYW5zd2VyVVJMOiAnJyxcbiAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgc3VibWlzc2lvbk1ldGE6IHt9XG4gICAgICB9KSlcbiAgICAgIHRoaXMuZ2V0VXNlckFzc2lnbm1lbnRTdGF0dXMoKVxuICAgIH0sIGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGFzc2lnbm1lbnRzJywgZXJyb3IpXG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZVZpZXdGZWVkYmFjayhhc3NpZ25tZW50OiBhbnkpIHtcbiAgICBhc3NpZ25tZW50LmV4cGFuZCA9IHRydWVcbiAgfVxuXG4gIGRvd25sb2FkRmlsZShhc3NpZ25tZW50OiBhbnkpIHtcbiAgICBhc3NpZ25tZW50LmRvd25sb2FkaW5nID0gdHJ1ZVxuICAgIGFzc2lnbm1lbnQuZW5hYmxlRG93bmxvYWQgPSB0cnVlXG4gICAgdGhpcy5zZWxlY3RlZEFzc2lnbm1lbnQgPSBhc3NpZ25tZW50XG4gICAgdGhpcy5kb3dubG9hZEZpbGVXaXRoRmV0Y2goYXNzaWdubWVudClcbiAgfVxuXG4gIGRvd25sb2FkRmlsZURpcmVjdGx5KGFzc2lnbm1lbnQ6IGFueSkge1xuICAgIGlmIChhc3NpZ25tZW50LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmFzc2lnbm1lbnRVcmwpIHtcbiAgICAgIHdpbmRvdy5vcGVuKGFzc2lnbm1lbnQuYWRkaXRpb25hbFByb3BlcnRpZXMuYXNzaWdubWVudFVybCwgJ19ibGFuaycpXG4gICAgICBhc3NpZ25tZW50LmRvd25sb2FkaW5nID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBhc3luYyBkb3dubG9hZEZpbGVXaXRoRmV0Y2goYXNzaWdubWVudDogYW55KSB7XG4gICAgaWYgKCFhc3NpZ25tZW50LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmFzc2lnbm1lbnRVcmwpIHJldHVyblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFzc2lnbm1lbnQuYWRkaXRpb25hbFByb3BlcnRpZXMuYXNzaWdubWVudFVybClcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIHJlc3BvbnNlIHdhcyBub3Qgb2snKVxuICAgICAgfVxuICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHJlc3BvbnNlLmJsb2IoKVxuICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYilcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcbiAgICAgIGxpbmsuaHJlZiA9IHVybFxuICAgICAgbGluay5kb3dubG9hZCA9IHRoaXMuZXh0cmFjdEZpbGVuYW1lRnJvbVVybChhc3NpZ25tZW50LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmFzc2lnbm1lbnRVcmwpIHx8IGAke2Fzc2lnbm1lbnQudGl0bGV9LnBkZmBcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgIGxpbmsuY2xpY2soKVxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKVxuICAgICAgYXNzaWdubWVudC5kb3dubG9hZGluZyA9IGZhbHNlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Rvd25sb2FkIGZhaWxlZDonLCBlcnJvcilcbiAgICAgIHRoaXMuZG93bmxvYWRGaWxlRGlyZWN0bHkoYXNzaWdubWVudClcbiAgICB9XG4gIH1cblxuXG4gIHRyaWdnZXJGaWxlVXBsb2FkKGFzc2lnbm1lbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRBc3NpZ25tZW50ID0gYXNzaWdubWVudFxuICAgIGlmIChhc3NpZ25tZW50LmFuc3dlclVSTCkge1xuICAgICAgdGhpcy5zdWJtaXRBc3NpZ25tZW50KGFzc2lnbm1lbnQpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzUmVzb3VyY2VGaWxlJykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIGlmIChmaWxlSW5wdXQpIHtcbiAgICAgICAgZmlsZUlucHV0LmNsaWNrKCk7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBzdWJtaXRBc3NpZ25tZW50KGFzc2Vzc21lbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdTdWJtaXQgYXNzaWdubWVudCBjbGlja2VkJywgYXNzZXNzbWVudClcbiAgICBjb25zdCBkaWFsZ29EYXRhID0ge1xuICAgICAgZGVzY3JpcHRpb246ICdZb3UgaGF2ZSBhbHJlYWR5IHVwbG9hZGVkIGFuIGFzc2lnbm1lbnQuIENob29zZSBhbiBvcHRpb24gYmVsb3cgdG8gZWl0aGVyIGtlZXAgeW91ciBjdXJyZW50IHN1Ym1pc3Npb24gb3IgdXBsb2FkIGEgbmV3IGZpbGUuJyxcbiAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgIGJ1dHRvbnNQb3NpdGlvbkNsYXNzOiAnanVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzZXM6ICdidG4tb3V0LWxpbmUnLFxuICAgICAgICAgIHRleHQ6ICdSZS11cGxvYWQnLFxuICAgICAgICAgIHJlc3BvbnNlOiAwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc2VzOiAnc3VjY2VzLWJ1dHRvbicsXG4gICAgICAgICAgdGV4dDogJ0tlZXAgU3VibWlzc2lvbicsXG4gICAgICAgICAgcmVzcG9uc2U6IDFcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ0xlZ2FjeS5vcGVuKENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogZGlhbGdvRGF0YSxcbiAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgIG1heFdpZHRoOiAnOTB2dydcbiAgICB9KVxuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gMSkge1xuICAgICAgICAvL3RoaXMudmlld0Fzc2lnbm1lbnRzKGFzc2Vzc21lbnQuYW5zd2VyVVJMKVxuICAgICAgICB0aGlzLnByZXZpZXdBc3NpZ25tZW50cyhhc3Nlc3NtZW50LmFuc3dlclVSTClcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzUmVzb3VyY2VGaWxlJykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgaWYgKGZpbGVJbnB1dCkge1xuICAgICAgICAgIGZpbGVJbnB1dC5jbGljaygpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZmlsZUlucHV0RW1pdChmaWxlSW5wdXQ6IEZpbGVMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZmlsZUlucHV0IHx8IGZpbGVJbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBmaWxlID0gZmlsZUlucHV0WzBdXG4gICAgaWYgKHRoaXMuY2hlY2tGaWxlVHlwZShmaWxlKSkge1xuICAgICAgdGhpcy51cGxvYWQoZmlsZSlcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGxvYWQoZmlsZTogYW55KSB7XG4gICAgdGhpcy5yZXNvdXJjZUZpbGVBZGRlZCA9IGZpbGVcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWVcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGxvYWRSZXM6IGFueSA9IGF3YWl0IHRoaXMudG9jU3ZjLnVwbG9hZEFzc2lnbm1lbnRBbnN3ZXIoXG4gICAgICAgIHRoaXMuY29udGVudC5pZGVudGlmaWVyLFxuICAgICAgICB0aGlzLmJhdGNoSWQsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3NpZ25tZW50LmZvcm1JZCxcbiAgICAgICAgZmlsZVxuICAgICAgKS50b1Byb21pc2UoKVxuXG4gICAgICBpZiAodXBsb2FkUmVzICYmIHVwbG9hZFJlcy5yZXNwb25zZUNvZGUgPT09ICdPSycpIHtcbiAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIoJ0ZpbGUgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgdGhpcy5wcmV2aWV3QXNzaWdubWVudHModXBsb2FkUmVzLnJlc3VsdC51cmwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlXG4gICAgICAgIHRoaXMub3BlblNuYWNrYmFyKCdGaWxlIHVwbG9hZCBmYWlsZWQuIFBsZWFzZSB0cnkgYWdhaW4uJylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlXG4gICAgICBjb25zb2xlLmVycm9yKCdVcGxvYWQgQVBJIGVycm9yOicsIGVycm9yKVxuICAgICAgdGhpcy5vcGVuU25hY2tiYXIoJ0ZpbGUgdXBsb2FkIGZhaWxlZC4gUGxlYXNlIHRyeSBhZ2Fpbi4nKVxuICAgIH1cbiAgfVxuXG4gIHByZXZpZXdBc3NpZ25tZW50cyhyZXN1bHQ6IGFueSkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2VcbiAgICB0aGlzLmNhbGxpbmdWaWV3QXNzaWdubWVudHMocmVzdWx0KVxuICB9XG5cbiAgY2FsbGluZ1ZpZXdBc3NpZ25tZW50cyh1cmw6IGFueSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQXNzaWdubWVudFZpZXdlclYyQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzQwJScsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiAnZGlhbG9nX3NpZGVuYXYnLFxuICAgICAgZGF0YToge1xuICAgICAgICBhc3Nlc3NtZW50OiB0aGlzLnNlbGVjdGVkQXNzaWdubWVudCxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIGNvbnRlbnRJZDogdGhpcy5jb250ZW50LmlkZW50aWZpZXIsXG4gICAgICAgIGJhdGNoSWQ6IHRoaXMuYmF0Y2hJZCxcbiAgICAgIH1cbiAgICB9KVxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmV0Y2hBc3NpZ25tZW50cygpXG4gICAgICB9LCAxMDAwKVxuICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxuICAgIH0pXG4gIH1cblxuXG4gIGNoZWNrRmlsZVR5cGUoZmlsZTogRmlsZSkge1xuICAgIGxldCBmbGFnID0gZmFsc2VcbiAgICBpZiAoZmlsZSAmJiBmaWxlLnNpemUpIHtcbiAgICAgIGNvbnN0IGZpbGVJbk1CID0gTWF0aC5mbG9vcihmaWxlLnNpemUgLyAoMTAyNCAqIDEwMjQpKVxuICAgICAgaWYgKGZpbGVJbk1CID4gNSkge1xuICAgICAgICB0aGlzLm9wZW5TbmFja2JhcignRmlsZSBzaXplIGV4Y2VlZHMgNSBNQiBsaW1pdC4gUGxlYXNlIHVwbG9hZCBhIHNtYWxsZXIgZmlsZS4nKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZpbGUgJiYgdGhpcy5hbGxvd1R5cGUgJiYgdGhpcy5hbGxvd1R5cGUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hbGxvd1R5cGUuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGVsZSkpIHtcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoIWZsYWcpIHtcbiAgICAgIHRoaXMub3BlblNuYWNrYmFyKCdJbnZhbGlkIGZpbGUgdHlwZSB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCBzdXBwb3J0aW5nIGZvcm1hdCBvbmx5LicpXG4gICAgfVxuICAgIHRoaXMuZmlsZUV4dGVudGlvbiA9IGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZyhmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKSlcbiAgICBpZiAoZmlsZSkge1xuICAgICAgaWYgKFsnLnBkZiddLmluY2x1ZGVzKHRoaXMuZmlsZUV4dGVudGlvbikpIHtcbiAgICAgICAgZmxhZyA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsYWcgPSBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKCFmbGFnKSB7XG4gICAgICAgIHRoaXMub3BlblNuYWNrYmFyKCdJbnZhbGlkIGZpbGUgdHlwZSB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCBQREYgZm9ybWF0IG9ubHkuJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZsYWdcbiAgfVxuXG4gIGdldE1hcmtzKHN1Ym1pc3Npb25NZXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChzdWJtaXNzaW9uTWV0YT8ubWFya3NHaXZlbiAhPSBudWxsICYmIHN1Ym1pc3Npb25NZXRhPy5tYXhpbXVtTWFya3MgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGAke3N1Ym1pc3Npb25NZXRhLm1hcmtzR2l2ZW59YCArICcvJyArIGAke3N1Ym1pc3Npb25NZXRhLm1heGltdW1NYXJrc31gXG4gICAgfSBlbHNlIGlmIChzdWJtaXNzaW9uTWV0YT8ubWFya3NHaXZlbiAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gYCR7c3VibWlzc2lvbk1ldGEubWFya3NHaXZlbn1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnTi9BJ1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TbmFja2JhcihwcmltYXJ5TXNnOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA1MDAwKSB7XG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKHByaW1hcnlNc2csICdYJywge1xuICAgICAgZHVyYXRpb24sXG4gICAgfSlcbiAgfVxuICBleHRyYWN0RmlsZW5hbWVGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsUGFydHMgPSB1cmwuc3BsaXQoJy8nKVxuICAgICAgY29uc3QgZmlsZW5hbWUgPSB1cmxQYXJ0c1t1cmxQYXJ0cy5sZW5ndGggLSAxXVxuICAgICAgcmV0dXJuIGZpbGVuYW1lLmluY2x1ZGVzKCcuJykgPyBmaWxlbmFtZSA6ICcnXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImd1aWRlLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4IHJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lciBpbmZvLWJhbm5lci13YXJuaW5nIGZsZXggZmxleC1yb3cgaXRtLWNlbnRlclwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaW5mby1pY29uIG1hcmdpbi1yaWdodC1zIGFzc2lnbm1lbnQtbm90ZS1pY29uXCI+aW5mbzwvbWF0LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cImFzc2lnbm1lbnQtbm90ZVwiPiB7eyAndXNlckFzc2lnbm1lbnRzLm5vdGUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXNzaWdubWVudCBvZiBhc3NpZ25tZW50czsgaW5kZXggYXMgaVwiPlxuICAgIDxkaXYgY2xhc3M9XCJndWlkZS1jYXJkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudCBmbGV4IGdhcC00IGp1c3RpZnktYmV0d2VlbiBmbGV4LW1pZGRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm90ZS10aXRsZVwiPnt7aSArIDF9fS4ge3thc3NpZ25tZW50LnRpdGxlfX0gPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbWlkZGxlIGdhcC0zXCIgKm5nSWY9XCIhYXNzaWdubWVudC5leHBhbmRcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJkb3dubG9hZC1idG4gY3Vyc29yLXBvaW50ZXIgZmxleCBhbGlnbi1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRmlsZShhc3NpZ25tZW50KVwiIFtkaXNhYmxlZF09XCJhc3NpZ25tZW50LmRvd25sb2FkaW5nXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFzc2lnbm1lbnQuZG93bmxvYWRpbmdcIiBjbGFzcz1cIndoaXRlLXNwaW5uZXJcIj5cbiAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMTZcIiBjbGFzcz1cIm1yLTJcIiBbc3R5bGUuY29sb3JdPVwiJ3doaXRlJ1wiIHN0cm9rZVdpZHRoPVwiMlwiPjwvbWF0LXNwaW5uZXI+RG93bmxvYWRcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWFzc2lnbm1lbnQuZG93bmxvYWRpbmdcIj5cbiAgICAgICAgICAgICAge3sgJ3VzZXJBc3NpZ25tZW50cy5kb3dubG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWdubWVudC5zdGF0dXMgPT09ICdEUkFGVCdcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInVwbG9hZC1idG4gY3Vyc29yLXBvaW50ZXIgZmxleCBhbGlnbi1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckZpbGVVcGxvYWQoYXNzaWdubWVudClcIj5cbiAgICAgICAgICAgICAge3sgJ3VzZXJBc3NpZ25tZW50cy51cGxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWdubWVudC5zdGF0dXMgIT09ICdEUkFGVCdcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInVwbG9hZC1idG4gY3Vyc29yLXBvaW50ZXIgZmxleCBhbGlnbi1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckZpbGVVcGxvYWQoYXNzaWdubWVudClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXNzaWdubWVudC5zdGF0dXMgPT09ICdTVUJNSVRURUQnIHx8IGFzc2lnbm1lbnQuc3RhdHVzID09PSAnRVZBTFVBVEVEJyB8fCAhYXNzaWdubWVudC5lbmFibGVEb3dubG9hZFwiPlxuICAgICAgICAgICAgICB7eyAndXNlckFzc2lnbm1lbnRzLnVwbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwidXBsb2FkLWJ0biBjdXJzb3ItcG9pbnRlciBmbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwidHJpZ2dlckZpbGVVcGxvYWQoYXNzaWdubWVudClcIiBbZGlzYWJsZWRdPVwiIWFzc2lnbm1lbnQuZW5hYmxlRG93bmxvYWRcIj5cbiAgICAgICAgICAgIFVwbG9hZFxuICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICA8aW5wdXQgI3Jlc291cmNlRmlsZSB0eXBlPVwiZmlsZVwiIG5hbWU9XCJzUmVzb3VyY2VGaWxlXCIgaWQ9XCJzUmVzb3VyY2VGaWxlXCIgY2xhc3M9XCJoaWRkZW5cIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJmaWxlSW5wdXRFbWl0KHJlc291cmNlRmlsZS5maWxlcylcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWdubWVudC5zdGF0dXMgPT09ICdTVUJNSVRURUQnXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ2aWV3LWJ0biBjdXJzb3ItcG9pbnRlciBmbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVWaWV3RmVlZGJhY2soYXNzaWdubWVudClcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPnt7ICd1c2VyQXNzaWdubWVudHMudmlld0ZlZWRiYWNrJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhc3NpZ25tZW50LnN0YXR1cyA9PT0gJ0VWQUxVQVRFRCdcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInZpZXctYnRuIGN1cnNvci1wb2ludGVyIGZsZXggYWxpZ24tY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVZpZXdGZWVkYmFjayhhc3NpZ25tZW50KVwiPnt7ICd1c2VyQXNzaWdubWVudHMudmlld0ZlZWRiYWNrJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBjLWljb25cIiAqbmdJZj1cImFzc2lnbm1lbnQuZXhwYW5kXCJcbiAgICAgICAgICAoY2xpY2spPVwiYXNzaWdubWVudC5leHBhbmQgPSAhYXNzaWdubWVudC5leHBhbmRcIj5cbiAgICAgICAgICBjbG9zZVxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gZmxleC1jb2wgbXQtNCBmZWVkYmFjay1jb250YWluZXJcIlxuICAgICAgICAqbmdJZj1cImFzc2lnbm1lbnQuZXhwYW5kICYmIGFzc2lnbm1lbnQ/LnN1Ym1pc3Npb25NZXRhPy5tYXJrc0dpdmVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGQgZm9udC1zdHlsZVwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7eyAndXNlckFzc2lnbm1lbnRzLm1hcmtzT2J0YWluZWQnIHwgdHJhbnNsYXRlIH19IC0ge3tnZXRNYXJrcyhhc3NpZ25tZW50Py5zdWJtaXNzaW9uTWV0YSl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZCBmb250LXN0eWxlXCI+e3sgJ3VzZXJBc3NpZ25tZW50cy5pbnN0cnVjdG9yRmVlZGJhY2snIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXN0eWxlXCI+XG4gICAgICAgICAge3thc3NpZ25tZW50Py5zdWJtaXNzaW9uTWV0YT8uaW5zdHJ1Y3RvckZlZWRiYWNrfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIG10LTQgbG9hZGVyXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgPG1hdC1zcGlubmVyIHN0cm9rZVdpZHRoPVwiM1wiIFtkaWFtZXRlcl09XCI1MFwiIFtzdHlsZS5zdHJva2VdPVwiJyMxQjRDQTEnXCIgY2xhc3M9XCJibHVlLXNwaW5uZXJcIj48L21hdC1zcGlubmVyPlxuPC9kaXY+XG5cblxuPCEtLSBObyB0ZWFjaGVycyByZXNvdXJjZXMgbWVzc2FnZSAtLT5cbjxkaXYgKm5nSWY9XCJhc3NpZ25tZW50cz8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1yZXNvdXJjZXMtbWVzc2FnZSBtdC00XCI+XG4gIHt7ICd1c2VyQXNzaWdubWVudHMubm9Bc3NpZ25tZW50cycgfCB0cmFuc2xhdGUgfX1cbjwvZGl2PiJdfQ==