@sunbird-cb/toc 0.0.9 → 0.0.10
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.
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -55
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -120
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -92
- package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
- package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
- package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
- package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
- package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
- package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
- package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
- package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -941
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
- package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +261 -248
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1177 -1148
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
- package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
- package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
- package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
- package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
- package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
- package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -847
- package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -219
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -209
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
- package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
- package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
- package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
- package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
- package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
- package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
- package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
- package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -112
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
- package/esm2022/lib/_collection-api.mjs +57 -57
- package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
- package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
- package/esm2022/lib/_models/common.model.mjs +2 -2
- package/esm2022/lib/_models/error.model.mjs +2 -2
- package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
- package/esm2022/lib/_services/rating.service.mjs +89 -89
- package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
- package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
- package/esm2022/lib/_services/widget-content.model.mjs +247 -247
- package/esm2022/lib/_services/widget-content.service.mjs +594 -594
- package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
- package/esm2022/lib/app-toc-lib.module.mjs +499 -499
- package/esm2022/lib/collection.config.mjs +161 -161
- package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
- package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -475
- package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
- package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
- package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
- package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
- package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
- package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -2229
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2938 -2907
- package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
- package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
- package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
- package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
- package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
- package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
- package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -1838
- package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
- package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
- package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
- package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -256
- package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
- package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
- package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
- package/esm2022/lib/models/app-toc.model.mjs +38 -38
- package/esm2022/lib/models/auto-complete.model.mjs +2 -2
- package/esm2022/lib/models/card-content.model.mjs +13 -13
- package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
- package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
- package/esm2022/lib/models/goal.model.mjs +2 -2
- package/esm2022/lib/models/meta-tag.model.mjs +8 -8
- package/esm2022/lib/models/playlist.model.mjs +2 -2
- package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
- package/esm2022/lib/models/rating.model.mjs +2 -2
- package/esm2022/lib/models/user-profile.model.mjs +21 -21
- package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
- package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
- package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
- package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
- package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
- package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
- package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
- package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
- package/esm2022/lib/services/access-control.service.mjs +56 -56
- package/esm2022/lib/services/action.service.mjs +23 -23
- package/esm2022/lib/services/app-toc-v2.service.mjs +332 -313
- package/esm2022/lib/services/app-toc.service.mjs +1647 -1613
- package/esm2022/lib/services/certificate.service.mjs +69 -69
- package/esm2022/lib/services/discuss-utils.service.mjs +58 -58
- package/esm2022/lib/services/editor.service.mjs +34 -34
- package/esm2022/lib/services/load-check.service.mjs +21 -21
- package/esm2022/lib/services/loader.service.mjs +33 -33
- package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
- package/esm2022/lib/services/netcore.service.mjs +56 -56
- package/esm2022/lib/services/nps-grid.service.mjs +31 -31
- package/esm2022/lib/services/otp.service.mjs +43 -43
- package/esm2022/lib/services/profile-v2.service.mjs +43 -43
- package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
- package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
- package/esm2022/lib/services/timer.service.mjs +23 -23
- package/esm2022/lib/services/title-tag.service.mjs +71 -71
- package/esm2022/lib/services/user-profile.service.mjs +55 -55
- package/esm2022/lib/services/viewer-data.service.mjs +64 -64
- package/esm2022/lib/services/viewer-util.service.mjs +599 -590
- package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
- package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
- package/esm2022/public-api.mjs +73 -71
- package/esm2022/sunbird-cb-toc.mjs +4 -4
- package/fesm2022/sunbird-cb-toc.mjs +24901 -24766
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/index.d.ts +6 -5
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -16
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -31
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -15
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -20
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -22
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -15
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -22
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -22
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -9
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -11
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -12
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -18
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -14
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -11
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -17
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -14
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -199
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -16
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -10
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -38
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -19
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -11
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -183
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -41
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -54
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -47
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +51 -49
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +175 -171
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -8
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -16
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -40
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -21
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -45
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -10
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -10
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -128
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -51
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -29
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -9
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -7
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -7
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -28
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -24
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -14
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -9
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -12
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -10
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -22
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -8
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -18
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -8
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +16 -15
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -35
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -19
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -14
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -13
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -11
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -11
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -15
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -10
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -16
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -11
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -34
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -17
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -15
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -15
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -21
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -12
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -21
- package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -9
- package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -47
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -14
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -22
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -19
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -15
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -25
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -21
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -18
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
- package/lib/_collection-api.d.ts +35 -34
- package/lib/_collection-api.d.ts.map +1 -0
- package/lib/_constants/widget-content.constants.d.ts +8 -7
- package/lib/_constants/widget-content.constants.d.ts.map +1 -0
- package/lib/_directives/tooltip.directive.d.ts +18 -17
- package/lib/_directives/tooltip.directive.d.ts.map +1 -0
- package/lib/_models/common.model.d.ts +4 -3
- package/lib/_models/common.model.d.ts.map +1 -0
- package/lib/_models/error.model.d.ts +6 -5
- package/lib/_models/error.model.d.ts.map +1 -0
- package/lib/_pipes/highlight.pipe.d.ts +11 -10
- package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
- package/lib/_services/rating.service.d.ts +19 -18
- package/lib/_services/rating.service.d.ts.map +1 -0
- package/lib/_services/samuhik-charcha.service.d.ts +14 -13
- package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
- package/lib/_services/viewer-route-util.d.ts +9 -8
- package/lib/_services/viewer-route-util.d.ts.map +1 -0
- package/lib/_services/widget-content.model.d.ts +516 -515
- package/lib/_services/widget-content.model.d.ts.map +1 -0
- package/lib/_services/widget-content.service.d.ts +102 -101
- package/lib/_services/widget-content.service.d.ts.map +1 -0
- package/lib/_shared/translate-loader.factory.d.ts +8 -7
- package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
- package/lib/app-toc-lib.module.d.ts +89 -88
- package/lib/app-toc-lib.module.d.ts.map +1 -0
- package/lib/collection.config.d.ts +160 -159
- package/lib/collection.config.d.ts.map +1 -0
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -17
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -225
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -78
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -22
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -31
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -47
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -14
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -21
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
- package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -314
- package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +415 -408
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -47
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -22
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -14
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -149
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -42
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -27
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -15
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -195
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -44
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -54
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -18
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
- package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -43
- package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
- package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -20
- package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
- package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -13
- package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
- package/lib/models/app-toc-analytics.model.d.ts +153 -152
- package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
- package/lib/models/app-toc.model.d.ts +85 -84
- package/lib/models/app-toc.model.d.ts.map +1 -0
- package/lib/models/auto-complete.model.d.ts +28 -27
- package/lib/models/auto-complete.model.d.ts.map +1 -0
- package/lib/models/card-content.model.d.ts +20 -19
- package/lib/models/card-content.model.d.ts.map +1 -0
- package/lib/models/content-strip-with-tabs.model.d.ts +45 -44
- package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
- package/lib/models/discussion-forum.model.d.ts +41 -40
- package/lib/models/discussion-forum.model.d.ts.map +1 -0
- package/lib/models/goal.model.d.ts +23 -22
- package/lib/models/goal.model.d.ts.map +1 -0
- package/lib/models/meta-tag.model.d.ts +7 -6
- package/lib/models/meta-tag.model.d.ts.map +1 -0
- package/lib/models/playlist.model.d.ts +24 -23
- package/lib/models/playlist.model.d.ts.map +1 -0
- package/lib/models/profile-revamp.model.d.ts +15 -14
- package/lib/models/profile-revamp.model.d.ts.map +1 -0
- package/lib/models/rating.model.d.ts +18 -17
- package/lib/models/rating.model.d.ts.map +1 -0
- package/lib/models/user-profile.model.d.ts +38 -37
- package/lib/models/user-profile.model.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -16
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-resolver.service.d.ts +17 -16
- package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/config-resolver.service.d.ts +12 -11
- package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/profile-resolver.service.d.ts +12 -11
- package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -11
- package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -19
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -8
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -8
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
- package/lib/services/access-control.service.d.ts +30 -29
- package/lib/services/access-control.service.d.ts.map +1 -0
- package/lib/services/action.service.d.ts +10 -9
- package/lib/services/action.service.d.ts.map +1 -0
- package/lib/services/app-toc-v2.service.d.ts +17 -16
- package/lib/services/app-toc-v2.service.d.ts.map +1 -0
- package/lib/services/app-toc.service.d.ts +241 -235
- package/lib/services/app-toc.service.d.ts.map +1 -0
- package/lib/services/certificate.service.d.ts +43 -42
- package/lib/services/certificate.service.d.ts.map +1 -0
- package/lib/services/discuss-utils.service.d.ts +34 -33
- package/lib/services/discuss-utils.service.d.ts.map +1 -0
- package/lib/services/editor.service.d.ts +18 -17
- package/lib/services/editor.service.d.ts.map +1 -0
- package/lib/services/load-check.service.d.ts +9 -8
- package/lib/services/load-check.service.d.ts.map +1 -0
- package/lib/services/loader.service.d.ts +17 -16
- package/lib/services/loader.service.d.ts.map +1 -0
- package/lib/services/mobile-apps.service.d.ts +39 -38
- package/lib/services/mobile-apps.service.d.ts.map +1 -0
- package/lib/services/netcore.service.d.ts +34 -33
- package/lib/services/netcore.service.d.ts.map +1 -0
- package/lib/services/nps-grid.service.d.ts +16 -15
- package/lib/services/nps-grid.service.d.ts.map +1 -0
- package/lib/services/otp.service.d.ts +21 -20
- package/lib/services/otp.service.d.ts.map +1 -0
- package/lib/services/profile-v2.service.d.ts +21 -20
- package/lib/services/profile-v2.service.d.ts.map +1 -0
- package/lib/services/reset-ratings.service.d.ts +9 -8
- package/lib/services/reset-ratings.service.d.ts.map +1 -0
- package/lib/services/resource-download-helper.service.d.ts +30 -29
- package/lib/services/resource-download-helper.service.d.ts.map +1 -0
- package/lib/services/timer.service.d.ts +10 -9
- package/lib/services/timer.service.d.ts.map +1 -0
- package/lib/services/title-tag.service.d.ts +22 -21
- package/lib/services/title-tag.service.d.ts.map +1 -0
- package/lib/services/user-profile.service.d.ts +25 -24
- package/lib/services/user-profile.service.d.ts.map +1 -0
- package/lib/services/viewer-data.service.d.ts +59 -58
- package/lib/services/viewer-data.service.d.ts.map +1 -0
- package/lib/services/viewer-util.service.d.ts +77 -76
- package/lib/services/viewer-util.service.d.ts.map +1 -0
- package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -56
- package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
- package/lib/share-toc/share-toc.module.d.ts +33 -32
- package/lib/share-toc/share-toc.module.d.ts.map +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +59 -56
- package/public-api.d.ts.map +1 -0
- package/sunbird-cb-toc.d.ts.map +1 -0
package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs
CHANGED
|
@@ -1,213 +1,213 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { NsContent } from '../../_services/widget-content.model';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/router";
|
|
5
|
-
import * as i2 from "../../services/app-toc.service";
|
|
6
|
-
import * as i3 from "@sunbird-cb/utils-v2";
|
|
7
|
-
import * as i4 from "@angular/platform-browser";
|
|
8
|
-
import * as i5 from "../../_services/widget-content.service";
|
|
9
|
-
import * as i6 from "../../services/editor.service";
|
|
10
|
-
import * as i7 from "@angular/common";
|
|
11
|
-
import * as i8 from "@angular/material/toolbar";
|
|
12
|
-
import * as i9 from "@angular/material/icon";
|
|
13
|
-
import * as i10 from "@angular/material/legacy-button";
|
|
14
|
-
import * as i11 from "@angular/material/legacy-progress-spinner";
|
|
15
|
-
import * as i12 from "../../_collection/btn-page-back/btn-page-back.component";
|
|
16
|
-
import * as i13 from "../../_collection/_common/user-image/user-image.component";
|
|
17
|
-
import * as i14 from "../app-toc-discussion/app-toc-discussion.component";
|
|
18
|
-
export class KnowledgeArtifactDetailsComponent {
|
|
19
|
-
constructor(route, tocSharedSvc, configSvc, domSanitizer, contentSvc, editorSvc, router) {
|
|
20
|
-
this.route = route;
|
|
21
|
-
this.tocSharedSvc = tocSharedSvc;
|
|
22
|
-
this.configSvc = configSvc;
|
|
23
|
-
this.domSanitizer = domSanitizer;
|
|
24
|
-
this.contentSvc = contentSvc;
|
|
25
|
-
this.editorSvc = editorSvc;
|
|
26
|
-
this.router = router;
|
|
27
|
-
this.content = null;
|
|
28
|
-
this.routeSubscription = null;
|
|
29
|
-
this.viewMoreRelatedTopics = false;
|
|
30
|
-
this.hasTocStructure = false;
|
|
31
|
-
this.tocStructure = null;
|
|
32
|
-
this.askAuthorEnabled = true;
|
|
33
|
-
this.trainingLHubEnabled = false;
|
|
34
|
-
this.body = null;
|
|
35
|
-
this.pageNavbar = this.configSvc.pageNavBar;
|
|
36
|
-
this.isDownloadableDesktop = false;
|
|
37
|
-
this.isDownloadableMobile = false;
|
|
38
|
-
this.relatedResource = null;
|
|
39
|
-
this.fetchingRelatedResources = true;
|
|
40
|
-
this.isAuthor = false;
|
|
41
|
-
this.deletingContent = false;
|
|
42
|
-
this.forPreview = window.location.href.includes('/author/');
|
|
43
|
-
if (this.configSvc.restrictedFeatures) {
|
|
44
|
-
this.askAuthorEnabled = !this.configSvc.restrictedFeatures.has('askAuthor');
|
|
45
|
-
this.trainingLHubEnabled = !this.configSvc.restrictedFeatures.has('trainingLHub');
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
ngOnInit() {
|
|
49
|
-
if (this.route) {
|
|
50
|
-
this.routeSubscription = this.route.data.subscribe((data) => {
|
|
51
|
-
this.initData(data);
|
|
52
|
-
if (this.content) {
|
|
53
|
-
this.fetchingRelatedResources = true;
|
|
54
|
-
this.tocSharedSvc
|
|
55
|
-
.fetchContentWhatsNext(this.content.identifier, this.content.contentType)
|
|
56
|
-
.subscribe((result) => {
|
|
57
|
-
this.relatedResource = result;
|
|
58
|
-
this.fetchingRelatedResources = false;
|
|
59
|
-
}, _ => {
|
|
60
|
-
this.fetchingRelatedResources = false;
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
if (this.configSvc.restrictedFeatures) {
|
|
66
|
-
this.isDownloadableMobile = this.configSvc.restrictedFeatures.has('mobileDownloadRequest');
|
|
67
|
-
this.isDownloadableDesktop = this.configSvc.restrictedFeatures.has('downloadRequest');
|
|
68
|
-
}
|
|
69
|
-
if (this.content &&
|
|
70
|
-
this.content.artifactUrl.indexOf('content-store') >= 0 &&
|
|
71
|
-
!this.forPreview) {
|
|
72
|
-
this.setS3Cookie(this.content.identifier);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
checkIfEditEnabled() {
|
|
76
|
-
const userProfile = this.configSvc.userProfile;
|
|
77
|
-
const restrictedFeatures = this.configSvc.restrictedFeatures;
|
|
78
|
-
if (userProfile && this.content && restrictedFeatures) {
|
|
79
|
-
if (!restrictedFeatures.has('editContent') ||
|
|
80
|
-
(!restrictedFeatures.has('editContentAuthor') &&
|
|
81
|
-
this.content.creatorContacts &&
|
|
82
|
-
this.content.creatorContacts.some(creator => creator.id === userProfile.userId))) {
|
|
83
|
-
this.isAuthor = true;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
deleteContent() {
|
|
88
|
-
if (this.content) {
|
|
89
|
-
this.deletingContent = true;
|
|
90
|
-
this.editorSvc.deleteContent(this.content.identifier).subscribe(() => {
|
|
91
|
-
this.deletingContent = false;
|
|
92
|
-
this.router.navigate(['/page/home']);
|
|
93
|
-
}, _ => {
|
|
94
|
-
this.deletingContent = false;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
ngOnDestroy() {
|
|
99
|
-
if (this.routeSubscription) {
|
|
100
|
-
this.routeSubscription.unsubscribe();
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
get showSubtitleOnBanner() {
|
|
104
|
-
return this.tocSharedSvc.subtitleOnBanners;
|
|
105
|
-
}
|
|
106
|
-
get showDescription() {
|
|
107
|
-
if (this.content && !this.content.body) {
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
110
|
-
return this.tocSharedSvc.showDescription;
|
|
111
|
-
}
|
|
112
|
-
initData(data) {
|
|
113
|
-
const initData = this.tocSharedSvc.initData(data);
|
|
114
|
-
this.content = initData.content;
|
|
115
|
-
this.body = this.domSanitizer.bypassSecurityTrustHtml(this.content ? this.content.body || '' : '');
|
|
116
|
-
this.resetAndFetchTocStructure();
|
|
117
|
-
if (!this.forPreview) {
|
|
118
|
-
this.getTrainingCount();
|
|
119
|
-
}
|
|
120
|
-
if (this.content && this.content.identifier) {
|
|
121
|
-
this.checkIfEditEnabled();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
resetAndFetchTocStructure() {
|
|
125
|
-
this.tocStructure = {
|
|
126
|
-
assessment: 0,
|
|
127
|
-
finalTest: 0,
|
|
128
|
-
course: 0,
|
|
129
|
-
handsOn: 0,
|
|
130
|
-
interactiveVideo: 0,
|
|
131
|
-
learningModule: 0,
|
|
132
|
-
other: 0,
|
|
133
|
-
pdf: 0,
|
|
134
|
-
survey: 0,
|
|
135
|
-
podcast: 0,
|
|
136
|
-
practiceTest: 0,
|
|
137
|
-
quiz: 0,
|
|
138
|
-
video: 0,
|
|
139
|
-
webModule: 0,
|
|
140
|
-
webPage: 0,
|
|
141
|
-
youtube: 0,
|
|
142
|
-
interactivecontent: 0,
|
|
143
|
-
offlineSession: 0,
|
|
144
|
-
};
|
|
145
|
-
if (this.content && this.tocStructure) {
|
|
146
|
-
this.hasTocStructure = true;
|
|
147
|
-
this.tocStructure.learningModule = this.content.primaryCategory === NsContent.EPrimaryCategory.MODULE ? -1 : 0;
|
|
148
|
-
this.tocStructure.course = this.content.primaryCategory === NsContent.EPrimaryCategory.COURSE ? -1 : 0;
|
|
149
|
-
this.tocStructure = this.tocSharedSvc.getTocStructure(this.content, this.tocStructure);
|
|
150
|
-
for (const progType in this.tocStructure) {
|
|
151
|
-
if (this.tocStructure[progType] > 0) {
|
|
152
|
-
this.hasTocStructure = true;
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
// For Learning Hub trainings
|
|
159
|
-
getTrainingCount() {
|
|
160
|
-
if (this.trainingLHubEnabled &&
|
|
161
|
-
this.content
|
|
162
|
-
// && this.trainingSvc.isValidTrainingContent(this.content)
|
|
163
|
-
) {
|
|
164
|
-
// this.trainingLHubCount$ = this.trainingApi
|
|
165
|
-
// .getTrainingCount(this.content.identifier)
|
|
166
|
-
// .pipe(retry(2))
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
get isGreyedImage() {
|
|
170
|
-
if (this.content && (this.content.status === 'Deleted' || this.content.status === 'Expired')) {
|
|
171
|
-
return true;
|
|
172
|
-
}
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
175
|
-
get isLiveOrMarkForDeletion() {
|
|
176
|
-
if (this.content &&
|
|
177
|
-
(this.content.status === 'Live' || this.content.status === 'MarkedForDeletion')) {
|
|
178
|
-
return true;
|
|
179
|
-
}
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
182
|
-
get isDownloadable() {
|
|
183
|
-
if (this.content && this.content.downloadUrl) {
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
download() {
|
|
189
|
-
if (this.content && !this.forPreview) {
|
|
190
|
-
const link = document.createElement('a');
|
|
191
|
-
link.download = this.content.name;
|
|
192
|
-
link.target = '_blank';
|
|
193
|
-
link.href = this.content.downloadUrl || '';
|
|
194
|
-
document.body.appendChild(link);
|
|
195
|
-
link.click();
|
|
196
|
-
document.body.removeChild(link);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
async setS3Cookie(identifier) {
|
|
200
|
-
await this.contentSvc
|
|
201
|
-
.setS3Cookie(identifier)
|
|
202
|
-
.toPromise()
|
|
203
|
-
.catch(() => { });
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KnowledgeArtifactDetailsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }, { token: i4.DomSanitizer }, { token: i5.WidgetContentService }, { token: i6.EditorService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
207
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: KnowledgeArtifactDetailsComponent, selector: "ws-app-knowledge-artifact-details", ngImport: i0, template: "<mat-toolbar class=\"detailBar\" [color]=\"pageNavbar.color\" [ngStyle]=\"pageNavbar?.styles\">\r\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\r\n <mat-icon>create</mat-icon>\r\n <span class=\"ml-2\">Edit</span>\r\n </a> -->\r\n <ws-widget-btn-page-back [widgetData]=\"{ url: 'home',titles:[{title:'Resource detail',url:'none'}] }\">\r\n </ws-widget-btn-page-back>\r\n <!-- <span class=\"margin-left-xs text-truncate\">\r\n <span >Resource Detail</span>\r\n </span> -->\r\n <span class=\"spacer\"></span>\r\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\r\n <mat-icon>create</mat-icon>\r\n <span class=\"ml-2\">Edit</span>\r\n </a> -->\r\n <mat-spinner [diameter]=\"30\" *ngIf=\"deletingContent\"></mat-spinner>\r\n <a [disabled]=\"deletingContent\" *ngIf=\"isAuthor\" (click)=\"deleteContent()\" mat-button>\r\n <mat-icon>delete</mat-icon>\r\n <span class=\"ml-2\">Delete</span>\r\n </a>\r\n\r\n</mat-toolbar>\r\n\r\n<section class=\"toc-body\">\r\n <div class=\"flex flex-between flex-wrapped mt-4\">\r\n <div class=\"meta-section\">\r\n <div class=\"unit-meta-item pr-8\">\r\n <div *ngIf=\"content?.creatorDetails?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorDetails,\r\n title: 'AUTHOR'\r\n }\">\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"content?.name\" class=\"mt-6\">\r\n <p class=\"ws-mat-primary-text text-4xl font-bold break-words\" style=\"line-height: initial;\">\r\n {{ content?.name | uppercase }}\r\n </p>\r\n </div>\r\n <div *ngIf=\"content?.body\" class=\"unit-meta-item pt-4 py-2\">\r\n <p class=\"item-heading text-xl font-medium ws-mat-primary-text\" >\r\n Resource Description\r\n </p>\r\n <div class=\"break-words\" class=\"resDescription\" [innerHTML]=\"content?.body\"></div>\r\n </div>\r\n <div *ngIf=\"showDescription && content?.description\" class=\"unit-meta-item pt-4 py-2\">\r\n <p class=\"item-heading font-medium text-xl ws-mat-primary-text\" >\r\n Resource Description\r\n </p>\r\n <p class=\"mat-subheading-1 text-base font-small\" class=\"resDescription\" [innerHTML]=\"content?.description\">\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <!--Share & Download-->\r\n <div class=\"flex mt-8 mr-4\"\r\n [ngClass]=\"{ greyOut: content?.status === 'Deleted' || 'Expired' && !isLiveOrMarkForDeletion }\">\r\n <!-- *ngIf=\"content && isDownloadable\" -->\r\n <div class=\"mr-4\" *ngIf=\"content && isDownloadable\">\r\n <button style=\"height: 40px;\" mat-raised-button mat-warn class=\"ws-mat-accent-background text-white\"\r\n (click)=\"download()\">\r\n <mat-icon class=\"text-white\">cloud_download</mat-icon>\r\n <span class=\"px-2 text-lg font-medium text-white\">Download</span>\r\n </button>\r\n </div>\r\n <div color=\"primary\" class=\"shareBtn ws-mat-primary-text ws-mat-primary-border-bold\">\r\n <ws-widget-btn-content-share [widgetData]=\"content\" [showText]=\"true\"></ws-widget-btn-content-share>\r\n </div>\r\n </div>\r\n <!-- <p *ngIf=\"content?.mimeType\">{{content.mimeType}}</p>\r\n <p *ngIf=\"content?.size\">{{content?.size}}</p> -->\r\n\r\n <!--Discussion forum-->\r\n <div class=\"toc-discussion-container my-8\">\r\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\" >Comments</p>\r\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\r\n </div>\r\n </div>\r\n <!--SIDEBAR-->\r\n <div class=\"info-section\">\r\n <div class=\"my-4\">\r\n <p class=\"text-xl pb-2 font-medium ws-mat-primary-text\" >Resources Details</p>\r\n <div *ngIf=\"content?.resourceType\">\r\n <p class=\"item-heading ws-mat-primary-text text-lg font-medium mb-2\" >\r\n Resource Type\r\n </p>\r\n <p class=\"width-expand font-medium\">{{ content?.resourceType }}</p>\r\n </div>\r\n <div *ngIf=\"content?.complexityLevel\">\r\n <p class=\"item-heading text-lg ws-mat-primary-text font-medium mb-2\" >\r\n Grade Level\r\n </p>\r\n <p class=\"width-expand font-medium\">{{ content?.complexityLevel }}</p>\r\n </div>\r\n </div>\r\n <!--Discussion forum-->\r\n <div class=\"toc-discussion-container-sm my-8\">\r\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\">Comments</p>\r\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\r\n </div>\r\n <div class=\"mt-8\">\r\n <p class=\"text-xl font-medium ws-mat-primary-text\" >Related Resources</p>\r\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\"\r\n class=\"flex flex-wrap relatedRes-lg mt-8\">\r\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\r\n <ws-widget-card-content [widgetData]=\"{\r\n content: content,\r\n cardSubType: 'card-user-details'\r\n }\"></ws-widget-card-content>\r\n </div>\r\n </div>\r\n <!-- <ws-utils-horizontal-scroller class=\"padding-xl relatedRes-sm block\" [loadStatus]=\"'done'\">\r\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\" class=\"flex mt-8\">\r\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\r\n <ws-widget-card-content [widgetData]=\"{\r\n content: content,\r\n cardSubType: 'card-user-details'\r\n }\"></ws-widget-card-content>\r\n </div>\r\n </div>\r\n </ws-utils-horizontal-scroller> -->\r\n <div *ngIf=\"relatedResource && relatedResource?.length === 0 && !fetchingRelatedResources\">\r\n <p class=\"font-medium\" >There are no related resources</p>\r\n </div>\r\n <div *ngIf=\"fetchingRelatedResources\" class=\"text-center\">\r\n <mat-spinner [diameter]=\"30\"></mat-spinner>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\r\n <div *ngFor=\"let author of authors\" class=\"author\">\r\n <ws-widget-user-image class=\"author-image\" [userId]=\"author?.id\" [userName]=\"author.name\"\r\n [imageType]=\"'name-initial'\"></ws-widget-user-image>\r\n <div class=\"width-expand flex flex-middle flex-between\">\r\n <div class=\"item-heading font-medium text-base ws-mat-primary-text\">{{ author.name }}</div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".toc-body{padding:32px 64px}@media only screen and (max-width: 599px){.toc-body{padding:16px 24px}}.toc-body{padding-top:0!important;background-color:#fafafa}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.resDescription{font-size:16px;line-height:23px}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.shareBtn{border-radius:6px}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}@media only screen and (min-width: 600px){.toc-discussion-container-sm{display:none}.info-section{padding-left:50px}}@media only screen and (max-width: 599px){.toc-discussion-container{display:none}.info-section{padding-top:30px}}.greyOut{filter:grayscale(1);opacity:.7;cursor:auto!important;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatLegacyButton, 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"] }, { kind: "component", type: i10.MatLegacyAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i11.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.BtnPageBackComponent, selector: "ws-widget-btn-page-back", inputs: ["widgetData"] }, { kind: "component", type: i13.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i14.AppTocDiscussionComponent, selector: "ws-app-toc-discussion", inputs: ["content", "forPreview"] }, { kind: "pipe", type: i7.UpperCasePipe, name: "uppercase" }] }); }
|
|
208
|
-
}
|
|
209
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KnowledgeArtifactDetailsComponent, decorators: [{
|
|
210
|
-
type: Component,
|
|
211
|
-
args: [{ selector: 'ws-app-knowledge-artifact-details', template: "<mat-toolbar class=\"detailBar\" [color]=\"pageNavbar.color\" [ngStyle]=\"pageNavbar?.styles\">\
|
|
212
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }, { type: i4.DomSanitizer }, { type: i5.WidgetContentService }, { type: i6.EditorService }, { type: i1.Router }]; } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUE7QUFHNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBYWpFLE1BQU0sT0FBTyxpQ0FBaUM7SUFtQjVDLFlBQ1UsS0FBcUIsRUFDckIsWUFBMkIsRUFDM0IsU0FBZ0MsRUFDaEMsWUFBMEIsRUFDMUIsVUFBZ0MsRUFDaEMsU0FBd0IsRUFDeEIsTUFBYztRQU5kLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpCeEIsWUFBTyxHQUE4QixJQUFJLENBQUE7UUFDekMsc0JBQWlCLEdBQXdCLElBQUksQ0FBQTtRQUM3QywwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0Isb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFDdkIsaUJBQVks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LENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQztJQUNILENBQUM7SUFDTyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQzFDLE1BQU0sSUFBSSxDQUFDLFVBQVU7YUFDbEIsV0FBVyxDQUFDLFVBQVUsQ0FBQzthQUN2QixTQUFTLEVBQUU7YUFDWCxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbkIsT0FBTTtJQUNSLENBQUM7K0dBeE5VLGlDQUFpQzttR0FBakMsaUNBQWlDLHlFQ2hCOUMsMjhOQTRJYzs7NEZENUhELGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInXHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBEYXRhLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXHJcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5tb2RlbCc7XHJcbmltcG9ydCB7IFdpZGdldENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL3dpZGdldC1jb250ZW50LnNlcnZpY2UnXHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSwgTnNQYWdlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3Iuc2VydmljZSdcclxuaW1wb3J0IHsgTnNBcHBUb2MgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwLXRvYy5tb2RlbCdcclxuaW1wb3J0IHsgQXBwVG9jU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC10b2Muc2VydmljZSdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd3MtYXBwLWtub3dsZWRnZS1hcnRpZmFjdC1kZXRhaWxzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2tub3dsZWRnZS1hcnRpZmFjdC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLbm93bGVkZ2VBcnRpZmFjdERldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgY29udGVudDogTnNDb250ZW50LklDb250ZW50IHwgbnVsbCA9IG51bGxcclxuICByb3V0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGxcclxuICB2aWV3TW9yZVJlbGF0ZWRUb3BpY3MgPSBmYWxzZVxyXG4gIGhhc1RvY1N0cnVjdHVyZSA9IGZhbHNlXHJcbiAgdG9jU3RydWN0dXJlOiBOc0FwcFRvYy5JVG9jU3RydWN0dXJlIHwgbnVsbCA9IG51bGxcclxuICBhc2tBdXRob3JFbmFibGVkID0gdHJ1ZVxyXG4gIHRyYWluaW5nTEh1YkVuYWJsZWQgPSBmYWxzZVxyXG4gIHRyYWluaW5nTEh1YkNvdW50JD86IE9ic2VydmFibGU8bnVtYmVyPlxyXG4gIGJvZHk6IFNhZmVIdG1sIHwgbnVsbCA9IG51bGxcclxuICBwYWdlTmF2YmFyOiBQYXJ0aWFsPE5zUGFnZS5JTmF2QmFja2dyb3VuZD4gPSB0aGlzLmNvbmZpZ1N2Yy5wYWdlTmF2QmFyXHJcbiAgaXNEb3dubG9hZGFibGVEZXNrdG9wID0gZmFsc2VcclxuICBpc0Rvd25sb2FkYWJsZU1vYmlsZSA9IGZhbHNlXHJcbiAgcmVsYXRlZFJlc291cmNlOiBOc0NvbnRlbnQuSUNvbnRlbnRNaW5pbWFsW10gfCBudWxsID0gbnVsbFxyXG4gIGZldGNoaW5nUmVsYXRlZFJlc291cmNlcyA9IHRydWVcclxuICBpc0F1dGhvciA9IGZhbHNlXHJcbiAgZGVsZXRpbmdDb250ZW50ID0gZmFsc2VcclxuICBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9hdXRob3IvJylcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgdG9jU2hhcmVkU3ZjOiBBcHBUb2NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGNvbnRlbnRTdmM6IFdpZGdldENvbnRlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlZGl0b3JTdmM6IEVkaXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcykge1xyXG4gICAgICB0aGlzLmFza0F1dGhvckVuYWJsZWQgPSAhdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnYXNrQXV0aG9yJylcclxuICAgICAgdGhpcy50cmFpbmluZ0xIdWJFbmFibGVkID0gIXRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ3RyYWluaW5nTEh1YicpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlKSB7XHJcbiAgICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhOiBEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbml0RGF0YShkYXRhKVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy50b2NTaGFyZWRTdmNcclxuICAgICAgICAgICAgLmZldGNoQ29udGVudFdoYXRzTmV4dCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllciwgdGhpcy5jb250ZW50LmNvbnRlbnRUeXBlKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIChyZXN1bHQ6IE5zQ29udGVudC5JQ29udGVudE1pbmltYWxbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGVkUmVzb3VyY2UgPSByZXN1bHRcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzID0gZmFsc2VcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF8gPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaGluZ1JlbGF0ZWRSZXNvdXJjZXMgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzKSB7XHJcbiAgICAgIHRoaXMuaXNEb3dubG9hZGFibGVNb2JpbGUgPSB0aGlzLmNvbmZpZ1N2Yy5yZXN0cmljdGVkRmVhdHVyZXMuaGFzKCdtb2JpbGVEb3dubG9hZFJlcXVlc3QnKVxyXG4gICAgICB0aGlzLmlzRG93bmxvYWRhYmxlRGVza3RvcCA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2Rvd25sb2FkUmVxdWVzdCcpXHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29udGVudCAmJlxyXG4gICAgICB0aGlzLmNvbnRlbnQuYXJ0aWZhY3RVcmwuaW5kZXhPZignY29udGVudC1zdG9yZScpID49IDAgJiZcclxuICAgICAgIXRoaXMuZm9yUHJldmlld1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2V0UzNDb29raWUodGhpcy5jb250ZW50LmlkZW50aWZpZXIpXHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgY2hlY2tJZkVkaXRFbmFibGVkKCkge1xyXG4gICAgY29uc3QgdXNlclByb2ZpbGUgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZVxyXG4gICAgY29uc3QgcmVzdHJpY3RlZEZlYXR1cmVzID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzXHJcbiAgICBpZiAodXNlclByb2ZpbGUgJiYgdGhpcy5jb250ZW50ICYmIHJlc3RyaWN0ZWRGZWF0dXJlcykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2VkaXRDb250ZW50JykgfHxcclxuICAgICAgICAoIXJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2VkaXRDb250ZW50QXV0aG9yJykgJiZcclxuICAgICAgICAgIHRoaXMuY29udGVudC5jcmVhdG9yQ29udGFjdHMgJiZcclxuICAgICAgICAgIHRoaXMuY29udGVudC5jcmVhdG9yQ29udGFjdHMuc29tZShjcmVhdG9yID0+IGNyZWF0b3IuaWQgPT09IHVzZXJQcm9maWxlLnVzZXJJZCkpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuaXNBdXRob3IgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbnRlbnQoKSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMuZGVsZXRpbmdDb250ZW50ID0gdHJ1ZVxyXG4gICAgICB0aGlzLmVkaXRvclN2Yy5kZWxldGVDb250ZW50KHRoaXMuY29udGVudC5pZGVudGlmaWVyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGluZ0NvbnRlbnQgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcGFnZS9ob21lJ10pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBfID0+IHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRpbmdDb250ZW50ID0gZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dTdWJ0aXRsZU9uQmFubmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudG9jU2hhcmVkU3ZjLnN1YnRpdGxlT25CYW5uZXJzXHJcbiAgfVxyXG4gIGdldCBzaG93RGVzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICYmICF0aGlzLmNvbnRlbnQuYm9keSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudG9jU2hhcmVkU3ZjLnNob3dEZXNjcmlwdGlvblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RGF0YShkYXRhOiBEYXRhKSB7XHJcbiAgICBjb25zdCBpbml0RGF0YSA9IHRoaXMudG9jU2hhcmVkU3ZjLmluaXREYXRhKGRhdGEpXHJcbiAgICB0aGlzLmNvbnRlbnQgPSBpbml0RGF0YS5jb250ZW50XHJcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcclxuICAgICAgdGhpcy5jb250ZW50ID8gdGhpcy5jb250ZW50LmJvZHkgfHwgJycgOiAnJyxcclxuICAgIClcclxuICAgIHRoaXMucmVzZXRBbmRGZXRjaFRvY1N0cnVjdHVyZSgpXHJcbiAgICBpZiAoIXRoaXMuZm9yUHJldmlldykge1xyXG4gICAgICB0aGlzLmdldFRyYWluaW5nQ291bnQoKVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcikge1xyXG4gICAgICB0aGlzLmNoZWNrSWZFZGl0RW5hYmxlZCgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEFuZEZldGNoVG9jU3RydWN0dXJlKCkge1xyXG4gICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB7XHJcbiAgICAgIGFzc2Vzc21lbnQ6IDAsXHJcbiAgICAgIGZpbmFsVGVzdDogMCxcclxuICAgICAgY291cnNlOiAwLFxyXG4gICAgICBoYW5kc09uOiAwLFxyXG4gICAgICBpbnRlcmFjdGl2ZVZpZGVvOiAwLFxyXG4gICAgICBsZWFybmluZ01vZHVsZTogMCxcclxuICAgICAgb3RoZXI6IDAsXHJcbiAgICAgIHBkZjogMCxcclxuICAgICAgc3VydmV5OiAwLFxyXG4gICAgICBwb2RjYXN0OiAwLFxyXG4gICAgICBwcmFjdGljZVRlc3Q6IDAsXHJcbiAgICAgIHF1aXo6IDAsXHJcbiAgICAgIHZpZGVvOiAwLFxyXG4gICAgICB3ZWJNb2R1bGU6IDAsXHJcbiAgICAgIHdlYlBhZ2U6IDAsXHJcbiAgICAgIHlvdXR1YmU6IDAsXHJcbiAgICAgIGludGVyYWN0aXZlY29udGVudDogMCxcclxuICAgICAgb2ZmbGluZVNlc3Npb246IDAsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMudG9jU3RydWN0dXJlKSB7XHJcbiAgICAgIHRoaXMuaGFzVG9jU3RydWN0dXJlID0gdHJ1ZVxyXG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZS5sZWFybmluZ01vZHVsZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1PRFVMRSA/IC0xIDogMFxyXG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZS5jb3Vyc2UgPSB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5DT1VSU0UgPyAtMSA6IDBcclxuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB0aGlzLnRvY1NoYXJlZFN2Yy5nZXRUb2NTdHJ1Y3R1cmUodGhpcy5jb250ZW50LCB0aGlzLnRvY1N0cnVjdHVyZSlcclxuICAgICAgZm9yIChjb25zdCBwcm9nVHlwZSBpbiB0aGlzLnRvY1N0cnVjdHVyZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRvY1N0cnVjdHVyZVtwcm9nVHlwZV0gPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmhhc1RvY1N0cnVjdHVyZSA9IHRydWVcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBGb3IgTGVhcm5pbmcgSHViIHRyYWluaW5nc1xyXG4gIHByaXZhdGUgZ2V0VHJhaW5pbmdDb3VudCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy50cmFpbmluZ0xIdWJFbmFibGVkICYmXHJcbiAgICAgIHRoaXMuY29udGVudFxyXG4gICAgICAvLyAmJiAgdGhpcy50cmFpbmluZ1N2Yy5pc1ZhbGlkVHJhaW5pbmdDb250ZW50KHRoaXMuY29udGVudClcclxuICAgICkge1xyXG4gICAgICAvLyB0aGlzLnRyYWluaW5nTEh1YkNvdW50JCA9IHRoaXMudHJhaW5pbmdBcGlcclxuICAgICAgLy8gICAuZ2V0VHJhaW5pbmdDb3VudCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllcilcclxuICAgICAgLy8gICAucGlwZShyZXRyeSgyKSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpc0dyZXllZEltYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiAodGhpcy5jb250ZW50LnN0YXR1cyA9PT0gJ0RlbGV0ZWQnIHx8IHRoaXMuY29udGVudC5zdGF0dXMgPT09ICdFeHBpcmVkJykpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuICBnZXQgaXNMaXZlT3JNYXJrRm9yRGVsZXRpb24oKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29udGVudCAmJlxyXG4gICAgICAodGhpcy5jb250ZW50LnN0YXR1cyA9PT0gJ0xpdmUnIHx8IHRoaXMuY29udGVudC5zdGF0dXMgPT09ICdNYXJrZWRGb3JEZWxldGlvbicpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuICBnZXQgaXNEb3dubG9hZGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5kb3dubG9hZFVybCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCgpIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuZm9yUHJldmlldykge1xyXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGxpbmsuZG93bmxvYWQgPSB0aGlzLmNvbnRlbnQubmFtZVxyXG4gICAgICBsaW5rLnRhcmdldCA9ICdfYmxhbmsnXHJcblxyXG4gICAgICBsaW5rLmhyZWYgPSB0aGlzLmNvbnRlbnQuZG93bmxvYWRVcmwgfHwgJydcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxyXG4gICAgICBsaW5rLmNsaWNrKClcclxuXHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluaylcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRTM0Nvb2tpZShpZGVudGlmaWVyOiBzdHJpbmcpIHtcclxuICAgIGF3YWl0IHRoaXMuY29udGVudFN2Y1xyXG4gICAgICAuc2V0UzNDb29raWUoaWRlbnRpZmllcilcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC5jYXRjaCgoKSA9PiB7IH0pXHJcbiAgICByZXR1cm5cclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwiZGV0YWlsQmFyXCIgW2NvbG9yXT1cInBhZ2VOYXZiYXIuY29sb3JcIiBbbmdTdHlsZV09XCJwYWdlTmF2YmFyPy5zdHlsZXNcIj5cclxuICA8IS0tIDxhICpuZ0lmPVwiaXNBdXRob3JcIiBbcm91dGVyTGlua109XCInL2F1dGhvci9lZGl0b3IvJyArIGNvbnRlbnQ/LmlkZW50aWZpZXJcIiBtYXQtYnV0dG9uPlxyXG4gICAgPG1hdC1pY29uPmNyZWF0ZTwvbWF0LWljb24+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5FZGl0PC9zcGFuPlxyXG4gIDwvYT4gLS0+XHJcbiAgPHdzLXdpZGdldC1idG4tcGFnZS1iYWNrIFt3aWRnZXREYXRhXT1cInsgdXJsOiAnaG9tZScsdGl0bGVzOlt7dGl0bGU6J1Jlc291cmNlIGRldGFpbCcsdXJsOidub25lJ31dIH1cIj5cclxuICA8L3dzLXdpZGdldC1idG4tcGFnZS1iYWNrPlxyXG4gIDwhLS0gPHNwYW4gY2xhc3M9XCJtYXJnaW4tbGVmdC14cyB0ZXh0LXRydW5jYXRlXCI+XHJcbiAgICA8c3BhbiA+UmVzb3VyY2UgRGV0YWlsPC9zcGFuPlxyXG4gIDwvc3Bhbj4gLS0+XHJcbiAgPHNwYW4gY2xhc3M9XCJzcGFjZXJcIj48L3NwYW4+XHJcbiAgPCEtLSA8YSAqbmdJZj1cImlzQXV0aG9yXCIgW3JvdXRlckxpbmtdPVwiJy9hdXRob3IvZWRpdG9yLycgKyBjb250ZW50Py5pZGVudGlmaWVyXCIgbWF0LWJ1dHRvbj5cclxuICAgIDxtYXQtaWNvbj5jcmVhdGU8L21hdC1pY29uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+RWRpdDwvc3Bhbj5cclxuICA8L2E+IC0tPlxyXG4gIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMzBcIiAqbmdJZj1cImRlbGV0aW5nQ29udGVudFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgPGEgW2Rpc2FibGVkXT1cImRlbGV0aW5nQ29udGVudFwiICpuZ0lmPVwiaXNBdXRob3JcIiAoY2xpY2spPVwiZGVsZXRlQ29udGVudCgpXCIgbWF0LWJ1dHRvbj5cclxuICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+RGVsZXRlPC9zcGFuPlxyXG4gIDwvYT5cclxuXHJcbjwvbWF0LXRvb2xiYXI+XHJcblxyXG48c2VjdGlvbiBjbGFzcz1cInRvYy1ib2R5XCI+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1iZXR3ZWVuIGZsZXgtd3JhcHBlZCBtdC00XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWV0YS1zZWN0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1bml0LW1ldGEtaXRlbSBwci04XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNyZWF0b3JEZXRhaWxzPy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3JlYXRvcnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgIGF1dGhvcnM6IGNvbnRlbnQ/LmNyZWF0b3JEZXRhaWxzLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiAnQVVUSE9SJ1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8ubmFtZVwiIGNsYXNzPVwibXQtNlwiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ3cy1tYXQtcHJpbWFyeS10ZXh0IHRleHQtNHhsIGZvbnQtYm9sZCBicmVhay13b3Jkc1wiIHN0eWxlPVwibGluZS1oZWlnaHQ6IGluaXRpYWw7XCI+XHJcbiAgICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uYm9keVwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW0gcHQtNCBweS0yXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIml0ZW0taGVhZGluZyB0ZXh0LXhsIGZvbnQtbWVkaXVtIHdzLW1hdC1wcmltYXJ5LXRleHRcIiA+XHJcbiAgICAgICAgICAgIFJlc291cmNlIERlc2NyaXB0aW9uXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWstd29yZHNcIiBjbGFzcz1cInJlc0Rlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJjb250ZW50Py5ib2R5XCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEZXNjcmlwdGlvbiAmJiBjb250ZW50Py5kZXNjcmlwdGlvblwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW0gcHQtNCBweS0yXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIml0ZW0taGVhZGluZyBmb250LW1lZGl1bSB0ZXh0LXhsIHdzLW1hdC1wcmltYXJ5LXRleHRcIiA+XHJcbiAgICAgICAgICAgIFJlc291cmNlIERlc2NyaXB0aW9uXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgdGV4dC1iYXNlIGZvbnQtc21hbGxcIiBjbGFzcz1cInJlc0Rlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJjb250ZW50Py5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1TaGFyZSAmIERvd25sb2FkLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG10LTggbXItNFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBncmV5T3V0OiBjb250ZW50Py5zdGF0dXMgPT09ICdEZWxldGVkJyB8fCAnRXhwaXJlZCcgJiYgIWlzTGl2ZU9yTWFya0ZvckRlbGV0aW9uIH1cIj5cclxuICAgICAgICA8IS0tICpuZ0lmPVwiY29udGVudCAmJiBpc0Rvd25sb2FkYWJsZVwiIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtci00XCIgKm5nSWY9XCJjb250ZW50ICYmIGlzRG93bmxvYWRhYmxlXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwiaGVpZ2h0OiA0MHB4O1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdC13YXJuIGNsYXNzPVwid3MtbWF0LWFjY2VudC1iYWNrZ3JvdW5kIHRleHQtd2hpdGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+Y2xvdWRfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB4LTIgdGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LXdoaXRlXCI+RG93bmxvYWQ8L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwic2hhcmVCdG4gd3MtbWF0LXByaW1hcnktdGV4dCB3cy1tYXQtcHJpbWFyeS1ib3JkZXItYm9sZFwiPlxyXG4gICAgICAgICAgPHdzLXdpZGdldC1idG4tY29udGVudC1zaGFyZSBbd2lkZ2V0RGF0YV09XCJjb250ZW50XCIgW3Nob3dUZXh0XT1cInRydWVcIj48L3dzLXdpZGdldC1idG4tY29udGVudC1zaGFyZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gPHAgKm5nSWY9XCJjb250ZW50Py5taW1lVHlwZVwiPnt7Y29udGVudC5taW1lVHlwZX19PC9wPlxyXG4gICAgICA8cCAqbmdJZj1cImNvbnRlbnQ/LnNpemVcIj57e2NvbnRlbnQ/LnNpemV9fTwvcD4gLS0+XHJcblxyXG4gICAgICA8IS0tRGlzY3Vzc2lvbiBmb3J1bS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidG9jLWRpc2N1c3Npb24tY29udGFpbmVyIG15LThcIj5cclxuICAgICAgICA8cCBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LXRleHQgdGV4dC14bCBmb250LW1lZGl1bSBweS0yXCIgPkNvbW1lbnRzPC9wPlxyXG4gICAgICAgIDx3cy1hcHAtdG9jLWRpc2N1c3Npb24gW2NvbnRlbnRdPVwiY29udGVudFwiIGNsYXNzPVwiZGlzY3Vzc2lvblwiPjwvd3MtYXBwLXRvYy1kaXNjdXNzaW9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNJREVCQVItLT5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLXNlY3Rpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQteGwgcGItMiBmb250LW1lZGl1bSB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlJlc291cmNlcyBEZXRhaWxzPC9wPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5yZXNvdXJjZVR5cGVcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHQgdGV4dC1sZyBmb250LW1lZGl1bSBtYi0yXCIgPlxyXG4gICAgICAgICAgICBSZXNvdXJjZSBUeXBlXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIndpZHRoLWV4cGFuZCBmb250LW1lZGl1bVwiPnt7IGNvbnRlbnQ/LnJlc291cmNlVHlwZSB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uY29tcGxleGl0eUxldmVsXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIml0ZW0taGVhZGluZyB0ZXh0LWxnIHdzLW1hdC1wcmltYXJ5LXRleHQgZm9udC1tZWRpdW0gbWItMlwiID5cclxuICAgICAgICAgICAgR3JhZGUgTGV2ZWxcclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwid2lkdGgtZXhwYW5kIGZvbnQtbWVkaXVtXCI+e3sgY29udGVudD8uY29tcGxleGl0eUxldmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLURpc2N1c3Npb24gZm9ydW0tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInRvYy1kaXNjdXNzaW9uLWNvbnRhaW5lci1zbSBteS04XCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ3cy1tYXQtcHJpbWFyeS10ZXh0IHRleHQteGwgZm9udC1tZWRpdW0gcHktMlwiPkNvbW1lbnRzPC9wPlxyXG4gICAgICAgIDx3cy1hcHAtdG9jLWRpc2N1c3Npb24gW2NvbnRlbnRdPVwiY29udGVudFwiIGNsYXNzPVwiZGlzY3Vzc2lvblwiPjwvd3MtYXBwLXRvYy1kaXNjdXNzaW9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LThcIj5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQteGwgZm9udC1tZWRpdW0gd3MtbWF0LXByaW1hcnktdGV4dFwiID5SZWxhdGVkIFJlc291cmNlczwvcD5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRlZFJlc291cmNlICYmIHJlbGF0ZWRSZXNvdXJjZT8ubGVuZ3RoID4gMCAmJiAhZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzXCJcclxuICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgcmVsYXRlZFJlcy1sZyBtdC04XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb250ZW50IG9mIHJlbGF0ZWRSZXNvdXJjZVwiIGNsYXNzPVwibWItOFwiPlxyXG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LWNhcmQtY29udGVudCBbd2lkZ2V0RGF0YV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGNhcmRTdWJUeXBlOiAnY2FyZC11c2VyLWRldGFpbHMnXHJcbiAgICAgICAgICAgICAgICB9XCI+PC93cy13aWRnZXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8d3MtdXRpbHMtaG9yaXpvbnRhbC1zY3JvbGxlciBjbGFzcz1cInBhZGRpbmcteGwgcmVsYXRlZFJlcy1zbSBibG9ja1wiIFtsb2FkU3RhdHVzXT1cIidkb25lJ1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJlbGF0ZWRSZXNvdXJjZSAmJiByZWxhdGVkUmVzb3VyY2U/Lmxlbmd0aCA+IDAgJiYgIWZldGNoaW5nUmVsYXRlZFJlc291cmNlc1wiIGNsYXNzPVwiZmxleCBtdC04XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcmVsYXRlZFJlc291cmNlXCIgY2xhc3M9XCJtYi04XCI+XHJcbiAgICAgICAgICAgICAgPHdzLXdpZGdldC1jYXJkLWNvbnRlbnQgW3dpZGdldERhdGFdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkU3ViVHlwZTogJ2NhcmQtdXNlci1kZXRhaWxzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvd3Mtd2lkZ2V0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3dzLXV0aWxzLWhvcml6b250YWwtc2Nyb2xsZXI+IC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWxhdGVkUmVzb3VyY2UgJiYgcmVsYXRlZFJlc291cmNlPy5sZW5ndGggPT09IDAgJiYgIWZldGNoaW5nUmVsYXRlZFJlc291cmNlc1wiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJmb250LW1lZGl1bVwiID5UaGVyZSBhcmUgbm8gcmVsYXRlZCByZXNvdXJjZXM8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImZldGNoaW5nUmVsYXRlZFJlc291cmNlc1wiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMzBcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI2NyZWF0b3JzIGxldC1hdXRob3JzPVwiYXV0aG9yc1wiIGxldC10aXRsZT1cInRpdGxlXCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgYXV0aG9yIG9mIGF1dGhvcnNcIiBjbGFzcz1cImF1dGhvclwiPlxyXG4gICAgPHdzLXdpZGdldC11c2VyLWltYWdlIGNsYXNzPVwiYXV0aG9yLWltYWdlXCIgW3VzZXJJZF09XCJhdXRob3I/LmlkXCIgW3VzZXJOYW1lXT1cImF1dGhvci5uYW1lXCJcclxuICAgICAgW2ltYWdlVHlwZV09XCInbmFtZS1pbml0aWFsJ1wiPjwvd3Mtd2lkZ2V0LXVzZXItaW1hZ2U+XHJcbiAgICA8ZGl2IGNsYXNzPVwid2lkdGgtZXhwYW5kIGZsZXggZmxleC1taWRkbGUgZmxleC1iZXR3ZWVuXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRpbmcgZm9udC1tZWRpdW0gdGV4dC1iYXNlIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyBhdXRob3IubmFtZSB9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { NsContent } from '../../_services/widget-content.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
import * as i2 from "../../services/app-toc.service";
|
|
6
|
+
import * as i3 from "@sunbird-cb/utils-v2";
|
|
7
|
+
import * as i4 from "@angular/platform-browser";
|
|
8
|
+
import * as i5 from "../../_services/widget-content.service";
|
|
9
|
+
import * as i6 from "../../services/editor.service";
|
|
10
|
+
import * as i7 from "@angular/common";
|
|
11
|
+
import * as i8 from "@angular/material/toolbar";
|
|
12
|
+
import * as i9 from "@angular/material/icon";
|
|
13
|
+
import * as i10 from "@angular/material/legacy-button";
|
|
14
|
+
import * as i11 from "@angular/material/legacy-progress-spinner";
|
|
15
|
+
import * as i12 from "../../_collection/btn-page-back/btn-page-back.component";
|
|
16
|
+
import * as i13 from "../../_collection/_common/user-image/user-image.component";
|
|
17
|
+
import * as i14 from "../app-toc-discussion/app-toc-discussion.component";
|
|
18
|
+
export class KnowledgeArtifactDetailsComponent {
|
|
19
|
+
constructor(route, tocSharedSvc, configSvc, domSanitizer, contentSvc, editorSvc, router) {
|
|
20
|
+
this.route = route;
|
|
21
|
+
this.tocSharedSvc = tocSharedSvc;
|
|
22
|
+
this.configSvc = configSvc;
|
|
23
|
+
this.domSanitizer = domSanitizer;
|
|
24
|
+
this.contentSvc = contentSvc;
|
|
25
|
+
this.editorSvc = editorSvc;
|
|
26
|
+
this.router = router;
|
|
27
|
+
this.content = null;
|
|
28
|
+
this.routeSubscription = null;
|
|
29
|
+
this.viewMoreRelatedTopics = false;
|
|
30
|
+
this.hasTocStructure = false;
|
|
31
|
+
this.tocStructure = null;
|
|
32
|
+
this.askAuthorEnabled = true;
|
|
33
|
+
this.trainingLHubEnabled = false;
|
|
34
|
+
this.body = null;
|
|
35
|
+
this.pageNavbar = this.configSvc.pageNavBar;
|
|
36
|
+
this.isDownloadableDesktop = false;
|
|
37
|
+
this.isDownloadableMobile = false;
|
|
38
|
+
this.relatedResource = null;
|
|
39
|
+
this.fetchingRelatedResources = true;
|
|
40
|
+
this.isAuthor = false;
|
|
41
|
+
this.deletingContent = false;
|
|
42
|
+
this.forPreview = window.location.href.includes('/author/');
|
|
43
|
+
if (this.configSvc.restrictedFeatures) {
|
|
44
|
+
this.askAuthorEnabled = !this.configSvc.restrictedFeatures.has('askAuthor');
|
|
45
|
+
this.trainingLHubEnabled = !this.configSvc.restrictedFeatures.has('trainingLHub');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
ngOnInit() {
|
|
49
|
+
if (this.route) {
|
|
50
|
+
this.routeSubscription = this.route.data.subscribe((data) => {
|
|
51
|
+
this.initData(data);
|
|
52
|
+
if (this.content) {
|
|
53
|
+
this.fetchingRelatedResources = true;
|
|
54
|
+
this.tocSharedSvc
|
|
55
|
+
.fetchContentWhatsNext(this.content.identifier, this.content.contentType)
|
|
56
|
+
.subscribe((result) => {
|
|
57
|
+
this.relatedResource = result;
|
|
58
|
+
this.fetchingRelatedResources = false;
|
|
59
|
+
}, _ => {
|
|
60
|
+
this.fetchingRelatedResources = false;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
if (this.configSvc.restrictedFeatures) {
|
|
66
|
+
this.isDownloadableMobile = this.configSvc.restrictedFeatures.has('mobileDownloadRequest');
|
|
67
|
+
this.isDownloadableDesktop = this.configSvc.restrictedFeatures.has('downloadRequest');
|
|
68
|
+
}
|
|
69
|
+
if (this.content &&
|
|
70
|
+
this.content.artifactUrl.indexOf('content-store') >= 0 &&
|
|
71
|
+
!this.forPreview) {
|
|
72
|
+
this.setS3Cookie(this.content.identifier);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
checkIfEditEnabled() {
|
|
76
|
+
const userProfile = this.configSvc.userProfile;
|
|
77
|
+
const restrictedFeatures = this.configSvc.restrictedFeatures;
|
|
78
|
+
if (userProfile && this.content && restrictedFeatures) {
|
|
79
|
+
if (!restrictedFeatures.has('editContent') ||
|
|
80
|
+
(!restrictedFeatures.has('editContentAuthor') &&
|
|
81
|
+
this.content.creatorContacts &&
|
|
82
|
+
this.content.creatorContacts.some(creator => creator.id === userProfile.userId))) {
|
|
83
|
+
this.isAuthor = true;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
deleteContent() {
|
|
88
|
+
if (this.content) {
|
|
89
|
+
this.deletingContent = true;
|
|
90
|
+
this.editorSvc.deleteContent(this.content.identifier).subscribe(() => {
|
|
91
|
+
this.deletingContent = false;
|
|
92
|
+
this.router.navigate(['/page/home']);
|
|
93
|
+
}, _ => {
|
|
94
|
+
this.deletingContent = false;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
ngOnDestroy() {
|
|
99
|
+
if (this.routeSubscription) {
|
|
100
|
+
this.routeSubscription.unsubscribe();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
get showSubtitleOnBanner() {
|
|
104
|
+
return this.tocSharedSvc.subtitleOnBanners;
|
|
105
|
+
}
|
|
106
|
+
get showDescription() {
|
|
107
|
+
if (this.content && !this.content.body) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return this.tocSharedSvc.showDescription;
|
|
111
|
+
}
|
|
112
|
+
initData(data) {
|
|
113
|
+
const initData = this.tocSharedSvc.initData(data);
|
|
114
|
+
this.content = initData.content;
|
|
115
|
+
this.body = this.domSanitizer.bypassSecurityTrustHtml(this.content ? this.content.body || '' : '');
|
|
116
|
+
this.resetAndFetchTocStructure();
|
|
117
|
+
if (!this.forPreview) {
|
|
118
|
+
this.getTrainingCount();
|
|
119
|
+
}
|
|
120
|
+
if (this.content && this.content.identifier) {
|
|
121
|
+
this.checkIfEditEnabled();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
resetAndFetchTocStructure() {
|
|
125
|
+
this.tocStructure = {
|
|
126
|
+
assessment: 0,
|
|
127
|
+
finalTest: 0,
|
|
128
|
+
course: 0,
|
|
129
|
+
handsOn: 0,
|
|
130
|
+
interactiveVideo: 0,
|
|
131
|
+
learningModule: 0,
|
|
132
|
+
other: 0,
|
|
133
|
+
pdf: 0,
|
|
134
|
+
survey: 0,
|
|
135
|
+
podcast: 0,
|
|
136
|
+
practiceTest: 0,
|
|
137
|
+
quiz: 0,
|
|
138
|
+
video: 0,
|
|
139
|
+
webModule: 0,
|
|
140
|
+
webPage: 0,
|
|
141
|
+
youtube: 0,
|
|
142
|
+
interactivecontent: 0,
|
|
143
|
+
offlineSession: 0,
|
|
144
|
+
};
|
|
145
|
+
if (this.content && this.tocStructure) {
|
|
146
|
+
this.hasTocStructure = true;
|
|
147
|
+
this.tocStructure.learningModule = this.content.primaryCategory === NsContent.EPrimaryCategory.MODULE ? -1 : 0;
|
|
148
|
+
this.tocStructure.course = this.content.primaryCategory === NsContent.EPrimaryCategory.COURSE ? -1 : 0;
|
|
149
|
+
this.tocStructure = this.tocSharedSvc.getTocStructure(this.content, this.tocStructure);
|
|
150
|
+
for (const progType in this.tocStructure) {
|
|
151
|
+
if (this.tocStructure[progType] > 0) {
|
|
152
|
+
this.hasTocStructure = true;
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// For Learning Hub trainings
|
|
159
|
+
getTrainingCount() {
|
|
160
|
+
if (this.trainingLHubEnabled &&
|
|
161
|
+
this.content
|
|
162
|
+
// && this.trainingSvc.isValidTrainingContent(this.content)
|
|
163
|
+
) {
|
|
164
|
+
// this.trainingLHubCount$ = this.trainingApi
|
|
165
|
+
// .getTrainingCount(this.content.identifier)
|
|
166
|
+
// .pipe(retry(2))
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
get isGreyedImage() {
|
|
170
|
+
if (this.content && (this.content.status === 'Deleted' || this.content.status === 'Expired')) {
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
get isLiveOrMarkForDeletion() {
|
|
176
|
+
if (this.content &&
|
|
177
|
+
(this.content.status === 'Live' || this.content.status === 'MarkedForDeletion')) {
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
get isDownloadable() {
|
|
183
|
+
if (this.content && this.content.downloadUrl) {
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
download() {
|
|
189
|
+
if (this.content && !this.forPreview) {
|
|
190
|
+
const link = document.createElement('a');
|
|
191
|
+
link.download = this.content.name;
|
|
192
|
+
link.target = '_blank';
|
|
193
|
+
link.href = this.content.downloadUrl || '';
|
|
194
|
+
document.body.appendChild(link);
|
|
195
|
+
link.click();
|
|
196
|
+
document.body.removeChild(link);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async setS3Cookie(identifier) {
|
|
200
|
+
await this.contentSvc
|
|
201
|
+
.setS3Cookie(identifier)
|
|
202
|
+
.toPromise()
|
|
203
|
+
.catch(() => { });
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KnowledgeArtifactDetailsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }, { token: i4.DomSanitizer }, { token: i5.WidgetContentService }, { token: i6.EditorService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
207
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: KnowledgeArtifactDetailsComponent, selector: "ws-app-knowledge-artifact-details", ngImport: i0, template: "<mat-toolbar class=\"detailBar\" [color]=\"pageNavbar.color\" [ngStyle]=\"pageNavbar?.styles\">\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\n <mat-icon>create</mat-icon>\n <span class=\"ml-2\">Edit</span>\n </a> -->\n <ws-widget-btn-page-back [widgetData]=\"{ url: 'home',titles:[{title:'Resource detail',url:'none'}] }\">\n </ws-widget-btn-page-back>\n <!-- <span class=\"margin-left-xs text-truncate\">\n <span >Resource Detail</span>\n </span> -->\n <span class=\"spacer\"></span>\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\n <mat-icon>create</mat-icon>\n <span class=\"ml-2\">Edit</span>\n </a> -->\n <mat-spinner [diameter]=\"30\" *ngIf=\"deletingContent\"></mat-spinner>\n <a [disabled]=\"deletingContent\" *ngIf=\"isAuthor\" (click)=\"deleteContent()\" mat-button>\n <mat-icon>delete</mat-icon>\n <span class=\"ml-2\">Delete</span>\n </a>\n\n</mat-toolbar>\n\n<section class=\"toc-body\">\n <div class=\"flex flex-between flex-wrapped mt-4\">\n <div class=\"meta-section\">\n <div class=\"unit-meta-item pr-8\">\n <div *ngIf=\"content?.creatorDetails?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorDetails,\n title: 'AUTHOR'\n }\">\n </ng-container>\n </div>\n <div *ngIf=\"content?.name\" class=\"mt-6\">\n <p class=\"ws-mat-primary-text text-4xl font-bold break-words\" style=\"line-height: initial;\">\n {{ content?.name | uppercase }}\n </p>\n </div>\n <div *ngIf=\"content?.body\" class=\"unit-meta-item pt-4 py-2\">\n <p class=\"item-heading text-xl font-medium ws-mat-primary-text\" >\n Resource Description\n </p>\n <div class=\"break-words\" class=\"resDescription\" [innerHTML]=\"content?.body\"></div>\n </div>\n <div *ngIf=\"showDescription && content?.description\" class=\"unit-meta-item pt-4 py-2\">\n <p class=\"item-heading font-medium text-xl ws-mat-primary-text\" >\n Resource Description\n </p>\n <p class=\"mat-subheading-1 text-base font-small\" class=\"resDescription\" [innerHTML]=\"content?.description\">\n </p>\n </div>\n </div>\n\n <!--Share & Download-->\n <div class=\"flex mt-8 mr-4\"\n [ngClass]=\"{ greyOut: content?.status === 'Deleted' || 'Expired' && !isLiveOrMarkForDeletion }\">\n <!-- *ngIf=\"content && isDownloadable\" -->\n <div class=\"mr-4\" *ngIf=\"content && isDownloadable\">\n <button style=\"height: 40px;\" mat-raised-button mat-warn class=\"ws-mat-accent-background text-white\"\n (click)=\"download()\">\n <mat-icon class=\"text-white\">cloud_download</mat-icon>\n <span class=\"px-2 text-lg font-medium text-white\">Download</span>\n </button>\n </div>\n <div color=\"primary\" class=\"shareBtn ws-mat-primary-text ws-mat-primary-border-bold\">\n <ws-widget-btn-content-share [widgetData]=\"content\" [showText]=\"true\"></ws-widget-btn-content-share>\n </div>\n </div>\n <!-- <p *ngIf=\"content?.mimeType\">{{content.mimeType}}</p>\n <p *ngIf=\"content?.size\">{{content?.size}}</p> -->\n\n <!--Discussion forum-->\n <div class=\"toc-discussion-container my-8\">\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\" >Comments</p>\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\n </div>\n </div>\n <!--SIDEBAR-->\n <div class=\"info-section\">\n <div class=\"my-4\">\n <p class=\"text-xl pb-2 font-medium ws-mat-primary-text\" >Resources Details</p>\n <div *ngIf=\"content?.resourceType\">\n <p class=\"item-heading ws-mat-primary-text text-lg font-medium mb-2\" >\n Resource Type\n </p>\n <p class=\"width-expand font-medium\">{{ content?.resourceType }}</p>\n </div>\n <div *ngIf=\"content?.complexityLevel\">\n <p class=\"item-heading text-lg ws-mat-primary-text font-medium mb-2\" >\n Grade Level\n </p>\n <p class=\"width-expand font-medium\">{{ content?.complexityLevel }}</p>\n </div>\n </div>\n <!--Discussion forum-->\n <div class=\"toc-discussion-container-sm my-8\">\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\">Comments</p>\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\n </div>\n <div class=\"mt-8\">\n <p class=\"text-xl font-medium ws-mat-primary-text\" >Related Resources</p>\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\"\n class=\"flex flex-wrap relatedRes-lg mt-8\">\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\n <ws-widget-card-content [widgetData]=\"{\n content: content,\n cardSubType: 'card-user-details'\n }\"></ws-widget-card-content>\n </div>\n </div>\n <!-- <ws-utils-horizontal-scroller class=\"padding-xl relatedRes-sm block\" [loadStatus]=\"'done'\">\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\" class=\"flex mt-8\">\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\n <ws-widget-card-content [widgetData]=\"{\n content: content,\n cardSubType: 'card-user-details'\n }\"></ws-widget-card-content>\n </div>\n </div>\n </ws-utils-horizontal-scroller> -->\n <div *ngIf=\"relatedResource && relatedResource?.length === 0 && !fetchingRelatedResources\">\n <p class=\"font-medium\" >There are no related resources</p>\n </div>\n <div *ngIf=\"fetchingRelatedResources\" class=\"text-center\">\n <mat-spinner [diameter]=\"30\"></mat-spinner>\n </div>\n </div>\n </div>\n </div>\n</section>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <div *ngFor=\"let author of authors\" class=\"author\">\n <ws-widget-user-image class=\"author-image\" [userId]=\"author?.id\" [userName]=\"author.name\"\n [imageType]=\"'name-initial'\"></ws-widget-user-image>\n <div class=\"width-expand flex flex-middle flex-between\">\n <div class=\"item-heading font-medium text-base ws-mat-primary-text\">{{ author.name }}</div>\n </div>\n </div>\n</ng-template>", styles: [".toc-body{padding:32px 64px}@media only screen and (max-width: 599px){.toc-body{padding:16px 24px}}.toc-body{padding-top:0!important;background-color:#fafafa}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.resDescription{font-size:16px;line-height:23px}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.shareBtn{border-radius:6px}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}@media only screen and (min-width: 600px){.toc-discussion-container-sm{display:none}.info-section{padding-left:50px}}@media only screen and (max-width: 599px){.toc-discussion-container{display:none}.info-section{padding-top:30px}}.greyOut{filter:grayscale(1);opacity:.7;cursor:auto!important;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatLegacyButton, 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"] }, { kind: "component", type: i10.MatLegacyAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i11.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.BtnPageBackComponent, selector: "ws-widget-btn-page-back", inputs: ["widgetData"] }, { kind: "component", type: i13.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i14.AppTocDiscussionComponent, selector: "ws-app-toc-discussion", inputs: ["content", "forPreview"] }, { kind: "pipe", type: i7.UpperCasePipe, name: "uppercase" }] }); }
|
|
208
|
+
}
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KnowledgeArtifactDetailsComponent, decorators: [{
|
|
210
|
+
type: Component,
|
|
211
|
+
args: [{ selector: 'ws-app-knowledge-artifact-details', template: "<mat-toolbar class=\"detailBar\" [color]=\"pageNavbar.color\" [ngStyle]=\"pageNavbar?.styles\">\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\n <mat-icon>create</mat-icon>\n <span class=\"ml-2\">Edit</span>\n </a> -->\n <ws-widget-btn-page-back [widgetData]=\"{ url: 'home',titles:[{title:'Resource detail',url:'none'}] }\">\n </ws-widget-btn-page-back>\n <!-- <span class=\"margin-left-xs text-truncate\">\n <span >Resource Detail</span>\n </span> -->\n <span class=\"spacer\"></span>\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\n <mat-icon>create</mat-icon>\n <span class=\"ml-2\">Edit</span>\n </a> -->\n <mat-spinner [diameter]=\"30\" *ngIf=\"deletingContent\"></mat-spinner>\n <a [disabled]=\"deletingContent\" *ngIf=\"isAuthor\" (click)=\"deleteContent()\" mat-button>\n <mat-icon>delete</mat-icon>\n <span class=\"ml-2\">Delete</span>\n </a>\n\n</mat-toolbar>\n\n<section class=\"toc-body\">\n <div class=\"flex flex-between flex-wrapped mt-4\">\n <div class=\"meta-section\">\n <div class=\"unit-meta-item pr-8\">\n <div *ngIf=\"content?.creatorDetails?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorDetails,\n title: 'AUTHOR'\n }\">\n </ng-container>\n </div>\n <div *ngIf=\"content?.name\" class=\"mt-6\">\n <p class=\"ws-mat-primary-text text-4xl font-bold break-words\" style=\"line-height: initial;\">\n {{ content?.name | uppercase }}\n </p>\n </div>\n <div *ngIf=\"content?.body\" class=\"unit-meta-item pt-4 py-2\">\n <p class=\"item-heading text-xl font-medium ws-mat-primary-text\" >\n Resource Description\n </p>\n <div class=\"break-words\" class=\"resDescription\" [innerHTML]=\"content?.body\"></div>\n </div>\n <div *ngIf=\"showDescription && content?.description\" class=\"unit-meta-item pt-4 py-2\">\n <p class=\"item-heading font-medium text-xl ws-mat-primary-text\" >\n Resource Description\n </p>\n <p class=\"mat-subheading-1 text-base font-small\" class=\"resDescription\" [innerHTML]=\"content?.description\">\n </p>\n </div>\n </div>\n\n <!--Share & Download-->\n <div class=\"flex mt-8 mr-4\"\n [ngClass]=\"{ greyOut: content?.status === 'Deleted' || 'Expired' && !isLiveOrMarkForDeletion }\">\n <!-- *ngIf=\"content && isDownloadable\" -->\n <div class=\"mr-4\" *ngIf=\"content && isDownloadable\">\n <button style=\"height: 40px;\" mat-raised-button mat-warn class=\"ws-mat-accent-background text-white\"\n (click)=\"download()\">\n <mat-icon class=\"text-white\">cloud_download</mat-icon>\n <span class=\"px-2 text-lg font-medium text-white\">Download</span>\n </button>\n </div>\n <div color=\"primary\" class=\"shareBtn ws-mat-primary-text ws-mat-primary-border-bold\">\n <ws-widget-btn-content-share [widgetData]=\"content\" [showText]=\"true\"></ws-widget-btn-content-share>\n </div>\n </div>\n <!-- <p *ngIf=\"content?.mimeType\">{{content.mimeType}}</p>\n <p *ngIf=\"content?.size\">{{content?.size}}</p> -->\n\n <!--Discussion forum-->\n <div class=\"toc-discussion-container my-8\">\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\" >Comments</p>\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\n </div>\n </div>\n <!--SIDEBAR-->\n <div class=\"info-section\">\n <div class=\"my-4\">\n <p class=\"text-xl pb-2 font-medium ws-mat-primary-text\" >Resources Details</p>\n <div *ngIf=\"content?.resourceType\">\n <p class=\"item-heading ws-mat-primary-text text-lg font-medium mb-2\" >\n Resource Type\n </p>\n <p class=\"width-expand font-medium\">{{ content?.resourceType }}</p>\n </div>\n <div *ngIf=\"content?.complexityLevel\">\n <p class=\"item-heading text-lg ws-mat-primary-text font-medium mb-2\" >\n Grade Level\n </p>\n <p class=\"width-expand font-medium\">{{ content?.complexityLevel }}</p>\n </div>\n </div>\n <!--Discussion forum-->\n <div class=\"toc-discussion-container-sm my-8\">\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\">Comments</p>\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\n </div>\n <div class=\"mt-8\">\n <p class=\"text-xl font-medium ws-mat-primary-text\" >Related Resources</p>\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\"\n class=\"flex flex-wrap relatedRes-lg mt-8\">\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\n <ws-widget-card-content [widgetData]=\"{\n content: content,\n cardSubType: 'card-user-details'\n }\"></ws-widget-card-content>\n </div>\n </div>\n <!-- <ws-utils-horizontal-scroller class=\"padding-xl relatedRes-sm block\" [loadStatus]=\"'done'\">\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\" class=\"flex mt-8\">\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\n <ws-widget-card-content [widgetData]=\"{\n content: content,\n cardSubType: 'card-user-details'\n }\"></ws-widget-card-content>\n </div>\n </div>\n </ws-utils-horizontal-scroller> -->\n <div *ngIf=\"relatedResource && relatedResource?.length === 0 && !fetchingRelatedResources\">\n <p class=\"font-medium\" >There are no related resources</p>\n </div>\n <div *ngIf=\"fetchingRelatedResources\" class=\"text-center\">\n <mat-spinner [diameter]=\"30\"></mat-spinner>\n </div>\n </div>\n </div>\n </div>\n</section>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <div *ngFor=\"let author of authors\" class=\"author\">\n <ws-widget-user-image class=\"author-image\" [userId]=\"author?.id\" [userName]=\"author.name\"\n [imageType]=\"'name-initial'\"></ws-widget-user-image>\n <div class=\"width-expand flex flex-middle flex-between\">\n <div class=\"item-heading font-medium text-base ws-mat-primary-text\">{{ author.name }}</div>\n </div>\n </div>\n</ng-template>", styles: [".toc-body{padding:32px 64px}@media only screen and (max-width: 599px){.toc-body{padding:16px 24px}}.toc-body{padding-top:0!important;background-color:#fafafa}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.resDescription{font-size:16px;line-height:23px}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.shareBtn{border-radius:6px}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}@media only screen and (min-width: 600px){.toc-discussion-container-sm{display:none}.info-section{padding-left:50px}}@media only screen and (max-width: 599px){.toc-discussion-container{display:none}.info-section{padding-top:30px}}.greyOut{filter:grayscale(1);opacity:.7;cursor:auto!important;pointer-events:none}\n"] }]
|
|
212
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }, { type: i4.DomSanitizer }, { type: i5.WidgetContentService }, { type: i6.EditorService }, { type: i1.Router }]; } });
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUE7QUFHNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBYWpFLE1BQU0sT0FBTyxpQ0FBaUM7SUFtQjVDLFlBQ1UsS0FBcUIsRUFDckIsWUFBMkIsRUFDM0IsU0FBZ0MsRUFDaEMsWUFBMEIsRUFDMUIsVUFBZ0MsRUFDaEMsU0FBd0IsRUFDeEIsTUFBYztRQU5kLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpCeEIsWUFBTyxHQUE4QixJQUFJLENBQUE7UUFDekMsc0JBQWlCLEdBQXdCLElBQUksQ0FBQTtRQUM3QywwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0Isb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFDdkIsaUJBQVksR0FBa0MsSUFBSSxDQUFBO1FBQ2xELHFCQUFnQixHQUFHLElBQUksQ0FBQTtRQUN2Qix3QkFBbUIsR0FBRyxLQUFLLENBQUE7UUFFM0IsU0FBSSxHQUFvQixJQUFJLENBQUE7UUFDNUIsZUFBVSxHQUFtQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQTtRQUN0RSwwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0IseUJBQW9CLEdBQUcsS0FBSyxDQUFBO1FBQzVCLG9CQUFlLEdBQXVDLElBQUksQ0FBQTtRQUMxRCw2QkFBd0IsR0FBRyxJQUFJLENBQUE7UUFDL0IsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQixvQkFBZSxHQUFHLEtBQUssQ0FBQTtRQUN2QixlQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBV3BELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRTtZQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUMzRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtTQUNsRjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFO2dCQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUE7b0JBQ3BDLElBQUksQ0FBQyxZQUFZO3lCQUNkLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO3lCQUN4RSxTQUFTLENBQ1IsQ0FBQyxNQUFtQyxFQUFFLEVBQUU7d0JBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFBO3dCQUM3QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFBO29CQUN2QyxDQUFDLEVBQ0QsQ0FBQyxDQUFDLEVBQUU7d0JBQ0YsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQTtvQkFDdkMsQ0FBQyxDQUNGLENBQUE7aUJBQ0o7WUFDSCxDQUFDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFO1lBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1lBQzFGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1NBQ3RGO1FBQ0QsSUFDRSxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3RELENBQUMsSUFBSSxDQUFDLFVBQVUsRUFDaEI7WUFDQSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7U0FDMUM7SUFDSCxDQUFDO0lBQ08sa0JBQWtCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFBO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQTtRQUM1RCxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLGtCQUFrQixFQUFFO1lBQ3JELElBQ0UsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUN0QyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO29CQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWU7b0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ2xGO2dCQUNBLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FDN0QsR0FBRyxFQUFFO2dCQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO2dCQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7WUFDdEMsQ0FBQyxFQUNELENBQUMsQ0FBQyxFQUFFO2dCQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1lBQzlCLENBQUMsQ0FDRixDQUFBO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtTQUNyQztJQUNILENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUE7SUFDNUMsQ0FBQztJQUNELElBQUksZUFBZTtRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQTtJQUMxQyxDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVU7UUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFBO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzVDLENBQUE7UUFDRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtTQUN4QjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUMzQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtTQUMxQjtJQUNILENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxDQUFDO1lBQ1osTUFBTSxFQUFFLENBQUM7WUFDVCxPQUFPLEVBQUUsQ0FBQztZQUNWLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsY0FBYyxFQUFFLENBQUM7WUFDakIsS0FBSyxFQUFFLENBQUM7WUFDUixHQUFHLEVBQUUsQ0FBQztZQUNOLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUM7WUFDVixZQUFZLEVBQUUsQ0FBQztZQUNmLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLENBQUM7WUFDVixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGNBQWMsRUFBRSxDQUFDO1NBQ2xCLENBQUE7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzlHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUN0RixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3hDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFBO29CQUMzQixNQUFLO2lCQUNOO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCw2QkFBNkI7SUFDckIsZ0JBQWdCO1FBQ3RCLElBQ0UsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMsT0FBTztRQUNaLDREQUE0RDtVQUM1RDtZQUNBLDZDQUE2QztZQUM3QywrQ0FBK0M7WUFDL0Msb0JBQW9CO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsRUFBRTtZQUM1RixPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBQ0QsSUFBSSx1QkFBdUI7UUFDekIsSUFDRSxJQUFJLENBQUMsT0FBTztZQUNaLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLG1CQUFtQixDQUFDLEVBQy9FO1lBQ0EsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELElBQUksY0FBYztRQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQTtZQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQTtZQUV0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQTtZQUMxQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUMvQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7WUFFWixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQztJQUNILENBQUM7SUFDTyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQzFDLE1BQU0sSUFBSSxDQUFDLFVBQVU7YUFDbEIsV0FBVyxDQUFDLFVBQVUsQ0FBQzthQUN2QixTQUFTLEVBQUU7YUFDWCxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbkIsT0FBTTtJQUNSLENBQUM7K0dBeE5VLGlDQUFpQzttR0FBakMsaUNBQWlDLHlFQ2hCOUMsbXJOQTRJYzs7NEZENUhELGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJ1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIERhdGEsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXRDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlLCBOc1BhZ2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2UnXG5pbXBvcnQgeyBOc0FwcFRvYyB9IGZyb20gJy4uLy4uL21vZGVscy9hcHAtdG9jLm1vZGVsJ1xuaW1wb3J0IHsgQXBwVG9jU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC10b2Muc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3MtYXBwLWtub3dsZWRnZS1hcnRpZmFjdC1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2tub3dsZWRnZS1hcnRpZmFjdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4va25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgS25vd2xlZGdlQXJ0aWZhY3REZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gbnVsbFxuICByb3V0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGxcbiAgdmlld01vcmVSZWxhdGVkVG9waWNzID0gZmFsc2VcbiAgaGFzVG9jU3RydWN0dXJlID0gZmFsc2VcbiAgdG9jU3RydWN0dXJlOiBOc0FwcFRvYy5JVG9jU3RydWN0dXJlIHwgbnVsbCA9IG51bGxcbiAgYXNrQXV0aG9yRW5hYmxlZCA9IHRydWVcbiAgdHJhaW5pbmdMSHViRW5hYmxlZCA9IGZhbHNlXG4gIHRyYWluaW5nTEh1YkNvdW50JD86IE9ic2VydmFibGU8bnVtYmVyPlxuICBib2R5OiBTYWZlSHRtbCB8IG51bGwgPSBudWxsXG4gIHBhZ2VOYXZiYXI6IFBhcnRpYWw8TnNQYWdlLklOYXZCYWNrZ3JvdW5kPiA9IHRoaXMuY29uZmlnU3ZjLnBhZ2VOYXZCYXJcbiAgaXNEb3dubG9hZGFibGVEZXNrdG9wID0gZmFsc2VcbiAgaXNEb3dubG9hZGFibGVNb2JpbGUgPSBmYWxzZVxuICByZWxhdGVkUmVzb3VyY2U6IE5zQ29udGVudC5JQ29udGVudE1pbmltYWxbXSB8IG51bGwgPSBudWxsXG4gIGZldGNoaW5nUmVsYXRlZFJlc291cmNlcyA9IHRydWVcbiAgaXNBdXRob3IgPSBmYWxzZVxuICBkZWxldGluZ0NvbnRlbnQgPSBmYWxzZVxuICBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9hdXRob3IvJylcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHRvY1NoYXJlZFN2YzogQXBwVG9jU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjb250ZW50U3ZjOiBXaWRnZXRDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGVkaXRvclN2YzogRWRpdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICApIHtcbiAgICBpZiAodGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzKSB7XG4gICAgICB0aGlzLmFza0F1dGhvckVuYWJsZWQgPSAhdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnYXNrQXV0aG9yJylcbiAgICAgIHRoaXMudHJhaW5pbmdMSHViRW5hYmxlZCA9ICF0aGlzLmNvbmZpZ1N2Yy5yZXN0cmljdGVkRmVhdHVyZXMuaGFzKCd0cmFpbmluZ0xIdWInKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnJvdXRlKSB7XG4gICAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLmluaXREYXRhKGRhdGEpXG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICB0aGlzLmZldGNoaW5nUmVsYXRlZFJlc291cmNlcyA9IHRydWVcbiAgICAgICAgICB0aGlzLnRvY1NoYXJlZFN2Y1xuICAgICAgICAgICAgLmZldGNoQ29udGVudFdoYXRzTmV4dCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllciwgdGhpcy5jb250ZW50LmNvbnRlbnRUeXBlKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgKHJlc3VsdDogTnNDb250ZW50LklDb250ZW50TWluaW1hbFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGVkUmVzb3VyY2UgPSByZXN1bHRcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoaW5nUmVsYXRlZFJlc291cmNlcyA9IGZhbHNlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF8gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzID0gZmFsc2VcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcykge1xuICAgICAgdGhpcy5pc0Rvd25sb2FkYWJsZU1vYmlsZSA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ21vYmlsZURvd25sb2FkUmVxdWVzdCcpXG4gICAgICB0aGlzLmlzRG93bmxvYWRhYmxlRGVza3RvcCA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2Rvd25sb2FkUmVxdWVzdCcpXG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMuY29udGVudCAmJlxuICAgICAgdGhpcy5jb250ZW50LmFydGlmYWN0VXJsLmluZGV4T2YoJ2NvbnRlbnQtc3RvcmUnKSA+PSAwICYmXG4gICAgICAhdGhpcy5mb3JQcmV2aWV3XG4gICAgKSB7XG4gICAgICB0aGlzLnNldFMzQ29va2llKHRoaXMuY29udGVudC5pZGVudGlmaWVyKVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGNoZWNrSWZFZGl0RW5hYmxlZCgpIHtcbiAgICBjb25zdCB1c2VyUHJvZmlsZSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlXG4gICAgY29uc3QgcmVzdHJpY3RlZEZlYXR1cmVzID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzXG4gICAgaWYgKHVzZXJQcm9maWxlICYmIHRoaXMuY29udGVudCAmJiByZXN0cmljdGVkRmVhdHVyZXMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2VkaXRDb250ZW50JykgfHxcbiAgICAgICAgKCFyZXN0cmljdGVkRmVhdHVyZXMuaGFzKCdlZGl0Q29udGVudEF1dGhvcicpICYmXG4gICAgICAgICAgdGhpcy5jb250ZW50LmNyZWF0b3JDb250YWN0cyAmJlxuICAgICAgICAgIHRoaXMuY29udGVudC5jcmVhdG9yQ29udGFjdHMuc29tZShjcmVhdG9yID0+IGNyZWF0b3IuaWQgPT09IHVzZXJQcm9maWxlLnVzZXJJZCkpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pc0F1dGhvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWxldGVDb250ZW50KCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHRoaXMuZGVsZXRpbmdDb250ZW50ID0gdHJ1ZVxuICAgICAgdGhpcy5lZGl0b3JTdmMuZGVsZXRlQ29udGVudCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllcikuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kZWxldGluZ0NvbnRlbnQgPSBmYWxzZVxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BhZ2UvaG9tZSddKVxuICAgICAgICB9LFxuICAgICAgICBfID0+IHtcbiAgICAgICAgICB0aGlzLmRlbGV0aW5nQ29udGVudCA9IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucm91dGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93U3VidGl0bGVPbkJhbm5lcigpIHtcbiAgICByZXR1cm4gdGhpcy50b2NTaGFyZWRTdmMuc3VidGl0bGVPbkJhbm5lcnNcbiAgfVxuICBnZXQgc2hvd0Rlc2NyaXB0aW9uKCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuY29udGVudC5ib2R5KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy50b2NTaGFyZWRTdmMuc2hvd0Rlc2NyaXB0aW9uXG4gIH1cblxuICBwcml2YXRlIGluaXREYXRhKGRhdGE6IERhdGEpIHtcbiAgICBjb25zdCBpbml0RGF0YSA9IHRoaXMudG9jU2hhcmVkU3ZjLmluaXREYXRhKGRhdGEpXG4gICAgdGhpcy5jb250ZW50ID0gaW5pdERhdGEuY29udGVudFxuICAgIHRoaXMuYm9keSA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgICAgdGhpcy5jb250ZW50ID8gdGhpcy5jb250ZW50LmJvZHkgfHwgJycgOiAnJyxcbiAgICApXG4gICAgdGhpcy5yZXNldEFuZEZldGNoVG9jU3RydWN0dXJlKClcbiAgICBpZiAoIXRoaXMuZm9yUHJldmlldykge1xuICAgICAgdGhpcy5nZXRUcmFpbmluZ0NvdW50KClcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcikge1xuICAgICAgdGhpcy5jaGVja0lmRWRpdEVuYWJsZWQoKVxuICAgIH1cbiAgfVxuXG4gIHJlc2V0QW5kRmV0Y2hUb2NTdHJ1Y3R1cmUoKSB7XG4gICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB7XG4gICAgICBhc3Nlc3NtZW50OiAwLFxuICAgICAgZmluYWxUZXN0OiAwLFxuICAgICAgY291cnNlOiAwLFxuICAgICAgaGFuZHNPbjogMCxcbiAgICAgIGludGVyYWN0aXZlVmlkZW86IDAsXG4gICAgICBsZWFybmluZ01vZHVsZTogMCxcbiAgICAgIG90aGVyOiAwLFxuICAgICAgcGRmOiAwLFxuICAgICAgc3VydmV5OiAwLFxuICAgICAgcG9kY2FzdDogMCxcbiAgICAgIHByYWN0aWNlVGVzdDogMCxcbiAgICAgIHF1aXo6IDAsXG4gICAgICB2aWRlbzogMCxcbiAgICAgIHdlYk1vZHVsZTogMCxcbiAgICAgIHdlYlBhZ2U6IDAsXG4gICAgICB5b3V0dWJlOiAwLFxuICAgICAgaW50ZXJhY3RpdmVjb250ZW50OiAwLFxuICAgICAgb2ZmbGluZVNlc3Npb246IDAsXG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy50b2NTdHJ1Y3R1cmUpIHtcbiAgICAgIHRoaXMuaGFzVG9jU3RydWN0dXJlID0gdHJ1ZVxuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUubGVhcm5pbmdNb2R1bGUgPSB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5NT0RVTEUgPyAtMSA6IDBcbiAgICAgIHRoaXMudG9jU3RydWN0dXJlLmNvdXJzZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkNPVVJTRSA/IC0xIDogMFxuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB0aGlzLnRvY1NoYXJlZFN2Yy5nZXRUb2NTdHJ1Y3R1cmUodGhpcy5jb250ZW50LCB0aGlzLnRvY1N0cnVjdHVyZSlcbiAgICAgIGZvciAoY29uc3QgcHJvZ1R5cGUgaW4gdGhpcy50b2NTdHJ1Y3R1cmUpIHtcbiAgICAgICAgaWYgKHRoaXMudG9jU3RydWN0dXJlW3Byb2dUeXBlXSA+IDApIHtcbiAgICAgICAgICB0aGlzLmhhc1RvY1N0cnVjdHVyZSA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIExlYXJuaW5nIEh1YiB0cmFpbmluZ3NcbiAgcHJpdmF0ZSBnZXRUcmFpbmluZ0NvdW50KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMudHJhaW5pbmdMSHViRW5hYmxlZCAmJlxuICAgICAgdGhpcy5jb250ZW50XG4gICAgICAvLyAmJiAgdGhpcy50cmFpbmluZ1N2Yy5pc1ZhbGlkVHJhaW5pbmdDb250ZW50KHRoaXMuY29udGVudClcbiAgICApIHtcbiAgICAgIC8vIHRoaXMudHJhaW5pbmdMSHViQ291bnQkID0gdGhpcy50cmFpbmluZ0FwaVxuICAgICAgLy8gICAuZ2V0VHJhaW5pbmdDb3VudCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllcilcbiAgICAgIC8vICAgLnBpcGUocmV0cnkoMikpXG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzR3JleWVkSW1hZ2UoKSB7XG4gICAgaWYgKHRoaXMuY29udGVudCAmJiAodGhpcy5jb250ZW50LnN0YXR1cyA9PT0gJ0RlbGV0ZWQnIHx8IHRoaXMuY29udGVudC5zdGF0dXMgPT09ICdFeHBpcmVkJykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGdldCBpc0xpdmVPck1hcmtGb3JEZWxldGlvbigpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbnRlbnQgJiZcbiAgICAgICh0aGlzLmNvbnRlbnQuc3RhdHVzID09PSAnTGl2ZScgfHwgdGhpcy5jb250ZW50LnN0YXR1cyA9PT0gJ01hcmtlZEZvckRlbGV0aW9uJylcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGdldCBpc0Rvd25sb2FkYWJsZSgpIHtcbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5kb3dubG9hZFVybCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBkb3dubG9hZCgpIHtcbiAgICBpZiAodGhpcy5jb250ZW50ICYmICF0aGlzLmZvclByZXZpZXcpIHtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcbiAgICAgIGxpbmsuZG93bmxvYWQgPSB0aGlzLmNvbnRlbnQubmFtZVxuICAgICAgbGluay50YXJnZXQgPSAnX2JsYW5rJ1xuXG4gICAgICBsaW5rLmhyZWYgPSB0aGlzLmNvbnRlbnQuZG93bmxvYWRVcmwgfHwgJydcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgIGxpbmsuY2xpY2soKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspXG4gICAgfVxuICB9XG4gIHByaXZhdGUgYXN5bmMgc2V0UzNDb29raWUoaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5jb250ZW50U3ZjXG4gICAgICAuc2V0UzNDb29raWUoaWRlbnRpZmllcilcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLmNhdGNoKCgpID0+IHsgfSlcbiAgICByZXR1cm5cbiAgfVxufVxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwiZGV0YWlsQmFyXCIgW2NvbG9yXT1cInBhZ2VOYXZiYXIuY29sb3JcIiBbbmdTdHlsZV09XCJwYWdlTmF2YmFyPy5zdHlsZXNcIj5cbiAgPCEtLSA8YSAqbmdJZj1cImlzQXV0aG9yXCIgW3JvdXRlckxpbmtdPVwiJy9hdXRob3IvZWRpdG9yLycgKyBjb250ZW50Py5pZGVudGlmaWVyXCIgbWF0LWJ1dHRvbj5cbiAgICA8bWF0LWljb24+Y3JlYXRlPC9tYXQtaWNvbj5cbiAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5FZGl0PC9zcGFuPlxuICA8L2E+IC0tPlxuICA8d3Mtd2lkZ2V0LWJ0bi1wYWdlLWJhY2sgW3dpZGdldERhdGFdPVwieyB1cmw6ICdob21lJyx0aXRsZXM6W3t0aXRsZTonUmVzb3VyY2UgZGV0YWlsJyx1cmw6J25vbmUnfV0gfVwiPlxuICA8L3dzLXdpZGdldC1idG4tcGFnZS1iYWNrPlxuICA8IS0tIDxzcGFuIGNsYXNzPVwibWFyZ2luLWxlZnQteHMgdGV4dC10cnVuY2F0ZVwiPlxuICAgIDxzcGFuID5SZXNvdXJjZSBEZXRhaWw8L3NwYW4+XG4gIDwvc3Bhbj4gLS0+XG4gIDxzcGFuIGNsYXNzPVwic3BhY2VyXCI+PC9zcGFuPlxuICA8IS0tIDxhICpuZ0lmPVwiaXNBdXRob3JcIiBbcm91dGVyTGlua109XCInL2F1dGhvci9lZGl0b3IvJyArIGNvbnRlbnQ/LmlkZW50aWZpZXJcIiBtYXQtYnV0dG9uPlxuICAgIDxtYXQtaWNvbj5jcmVhdGU8L21hdC1pY29uPlxuICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPkVkaXQ8L3NwYW4+XG4gIDwvYT4gLS0+XG4gIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMzBcIiAqbmdJZj1cImRlbGV0aW5nQ29udGVudFwiPjwvbWF0LXNwaW5uZXI+XG4gIDxhIFtkaXNhYmxlZF09XCJkZWxldGluZ0NvbnRlbnRcIiAqbmdJZj1cImlzQXV0aG9yXCIgKGNsaWNrKT1cImRlbGV0ZUNvbnRlbnQoKVwiIG1hdC1idXR0b24+XG4gICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+RGVsZXRlPC9zcGFuPlxuICA8L2E+XG5cbjwvbWF0LXRvb2xiYXI+XG5cbjxzZWN0aW9uIGNsYXNzPVwidG9jLWJvZHlcIj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1iZXR3ZWVuIGZsZXgtd3JhcHBlZCBtdC00XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1ldGEtc2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInVuaXQtbWV0YS1pdGVtIHByLThcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNyZWF0b3JEZXRhaWxzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyZWF0b3JzXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgYXV0aG9yczogY29udGVudD8uY3JlYXRvckRldGFpbHMsXG4gICAgICAgICAgICAgIHRpdGxlOiAnQVVUSE9SJ1xuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/Lm5hbWVcIiBjbGFzcz1cIm10LTZcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LXRleHQgdGV4dC00eGwgZm9udC1ib2xkIGJyZWFrLXdvcmRzXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogaW5pdGlhbDtcIj5cbiAgICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uYm9keVwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW0gcHQtNCBweS0yXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJpdGVtLWhlYWRpbmcgdGV4dC14bCBmb250LW1lZGl1bSB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlxuICAgICAgICAgICAgUmVzb3VyY2UgRGVzY3JpcHRpb25cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrLXdvcmRzXCIgY2xhc3M9XCJyZXNEZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiY29udGVudD8uYm9keVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEZXNjcmlwdGlvbiAmJiBjb250ZW50Py5kZXNjcmlwdGlvblwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW0gcHQtNCBweS0yXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJpdGVtLWhlYWRpbmcgZm9udC1tZWRpdW0gdGV4dC14bCB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlxuICAgICAgICAgICAgUmVzb3VyY2UgRGVzY3JpcHRpb25cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIHRleHQtYmFzZSBmb250LXNtYWxsXCIgY2xhc3M9XCJyZXNEZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiY29udGVudD8uZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS1TaGFyZSAmIERvd25sb2FkLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtdC04IG1yLTRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGdyZXlPdXQ6IGNvbnRlbnQ/LnN0YXR1cyA9PT0gJ0RlbGV0ZWQnIHx8ICdFeHBpcmVkJyAmJiAhaXNMaXZlT3JNYXJrRm9yRGVsZXRpb24gfVwiPlxuICAgICAgICA8IS0tICpuZ0lmPVwiY29udGVudCAmJiBpc0Rvd25sb2FkYWJsZVwiIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXItNFwiICpuZ0lmPVwiY29udGVudCAmJiBpc0Rvd25sb2FkYWJsZVwiPlxuICAgICAgICAgIDxidXR0b24gc3R5bGU9XCJoZWlnaHQ6IDQwcHg7XCIgbWF0LXJhaXNlZC1idXR0b24gbWF0LXdhcm4gY2xhc3M9XCJ3cy1tYXQtYWNjZW50LWJhY2tncm91bmQgdGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGV4dC13aGl0ZVwiPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtMiB0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtd2hpdGVcIj5Eb3dubG9hZDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJzaGFyZUJ0biB3cy1tYXQtcHJpbWFyeS10ZXh0IHdzLW1hdC1wcmltYXJ5LWJvcmRlci1ib2xkXCI+XG4gICAgICAgICAgPHdzLXdpZGdldC1idG4tY29udGVudC1zaGFyZSBbd2lkZ2V0RGF0YV09XCJjb250ZW50XCIgW3Nob3dUZXh0XT1cInRydWVcIj48L3dzLXdpZGdldC1idG4tY29udGVudC1zaGFyZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gPHAgKm5nSWY9XCJjb250ZW50Py5taW1lVHlwZVwiPnt7Y29udGVudC5taW1lVHlwZX19PC9wPlxuICAgICAgPHAgKm5nSWY9XCJjb250ZW50Py5zaXplXCI+e3tjb250ZW50Py5zaXplfX08L3A+IC0tPlxuXG4gICAgICA8IS0tRGlzY3Vzc2lvbiBmb3J1bS0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRvYy1kaXNjdXNzaW9uLWNvbnRhaW5lciBteS04XCI+XG4gICAgICAgIDxwIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dCB0ZXh0LXhsIGZvbnQtbWVkaXVtIHB5LTJcIiA+Q29tbWVudHM8L3A+XG4gICAgICAgIDx3cy1hcHAtdG9jLWRpc2N1c3Npb24gW2NvbnRlbnRdPVwiY29udGVudFwiIGNsYXNzPVwiZGlzY3Vzc2lvblwiPjwvd3MtYXBwLXRvYy1kaXNjdXNzaW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLVNJREVCQVItLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1zZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQteGwgcGItMiBmb250LW1lZGl1bSB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlJlc291cmNlcyBEZXRhaWxzPC9wPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8ucmVzb3VyY2VUeXBlXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dCB0ZXh0LWxnIGZvbnQtbWVkaXVtIG1iLTJcIiA+XG4gICAgICAgICAgICBSZXNvdXJjZSBUeXBlXG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwIGNsYXNzPVwid2lkdGgtZXhwYW5kIGZvbnQtbWVkaXVtXCI+e3sgY29udGVudD8ucmVzb3VyY2VUeXBlIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXhpdHlMZXZlbFwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHRleHQtbGcgd3MtbWF0LXByaW1hcnktdGV4dCBmb250LW1lZGl1bSBtYi0yXCIgPlxuICAgICAgICAgICAgR3JhZGUgTGV2ZWxcbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ3aWR0aC1leHBhbmQgZm9udC1tZWRpdW1cIj57eyBjb250ZW50Py5jb21wbGV4aXR5TGV2ZWwgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tRGlzY3Vzc2lvbiBmb3J1bS0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRvYy1kaXNjdXNzaW9uLWNvbnRhaW5lci1zbSBteS04XCI+XG4gICAgICAgIDxwIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dCB0ZXh0LXhsIGZvbnQtbWVkaXVtIHB5LTJcIj5Db21tZW50czwvcD5cbiAgICAgICAgPHdzLWFwcC10b2MtZGlzY3Vzc2lvbiBbY29udGVudF09XCJjb250ZW50XCIgY2xhc3M9XCJkaXNjdXNzaW9uXCI+PC93cy1hcHAtdG9jLWRpc2N1c3Npb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC04XCI+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC14bCBmb250LW1lZGl1bSB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlJlbGF0ZWQgUmVzb3VyY2VzPC9wPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRlZFJlc291cmNlICYmIHJlbGF0ZWRSZXNvdXJjZT8ubGVuZ3RoID4gMCAmJiAhZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzXCJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC13cmFwIHJlbGF0ZWRSZXMtbGcgbXQtOFwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcmVsYXRlZFJlc291cmNlXCIgY2xhc3M9XCJtYi04XCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LWNhcmQtY29udGVudCBbd2lkZ2V0RGF0YV09XCJ7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgY2FyZFN1YlR5cGU6ICdjYXJkLXVzZXItZGV0YWlscydcbiAgICAgICAgICAgICAgICB9XCI+PC93cy13aWRnZXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8d3MtdXRpbHMtaG9yaXpvbnRhbC1zY3JvbGxlciBjbGFzcz1cInBhZGRpbmcteGwgcmVsYXRlZFJlcy1zbSBibG9ja1wiIFtsb2FkU3RhdHVzXT1cIidkb25lJ1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWxhdGVkUmVzb3VyY2UgJiYgcmVsYXRlZFJlc291cmNlPy5sZW5ndGggPiAwICYmICFmZXRjaGluZ1JlbGF0ZWRSZXNvdXJjZXNcIiBjbGFzcz1cImZsZXggbXQtOFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudCBvZiByZWxhdGVkUmVzb3VyY2VcIiBjbGFzcz1cIm1iLThcIj5cbiAgICAgICAgICAgICAgPHdzLXdpZGdldC1jYXJkLWNvbnRlbnQgW3dpZGdldERhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRTdWJUeXBlOiAnY2FyZC11c2VyLWRldGFpbHMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvd3Mtd2lkZ2V0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3dzLXV0aWxzLWhvcml6b250YWwtc2Nyb2xsZXI+IC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRlZFJlc291cmNlICYmIHJlbGF0ZWRSZXNvdXJjZT8ubGVuZ3RoID09PSAwICYmICFmZXRjaGluZ1JlbGF0ZWRSZXNvdXJjZXNcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtbWVkaXVtXCIgPlRoZXJlIGFyZSBubyByZWxhdGVkIHJlc291cmNlczwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJmZXRjaGluZ1JlbGF0ZWRSZXNvdXJjZXNcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIzMFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48bmctdGVtcGxhdGUgI2NyZWF0b3JzIGxldC1hdXRob3JzPVwiYXV0aG9yc1wiIGxldC10aXRsZT1cInRpdGxlXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGF1dGhvciBvZiBhdXRob3JzXCIgY2xhc3M9XCJhdXRob3JcIj5cbiAgICA8d3Mtd2lkZ2V0LXVzZXItaW1hZ2UgY2xhc3M9XCJhdXRob3ItaW1hZ2VcIiBbdXNlcklkXT1cImF1dGhvcj8uaWRcIiBbdXNlck5hbWVdPVwiYXV0aG9yLm5hbWVcIlxuICAgICAgW2ltYWdlVHlwZV09XCInbmFtZS1pbml0aWFsJ1wiPjwvd3Mtd2lkZ2V0LXVzZXItaW1hZ2U+XG4gICAgPGRpdiBjbGFzcz1cIndpZHRoLWV4cGFuZCBmbGV4IGZsZXgtbWlkZGxlIGZsZXgtYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taGVhZGluZyBmb250LW1lZGl1bSB0ZXh0LWJhc2Ugd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IGF1dGhvci5uYW1lIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|