@the-liberators/ngx-scrumteamsurvey-tools 2.3.23 → 2.3.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs +707 -673
  2. package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs.map +1 -1
  3. package/package.json +8 -10
  4. package/esm2022/lib/actions/actions.module.mjs +0 -128
  5. package/esm2022/lib/actions/components/action-list/action-list.component.mjs +0 -118
  6. package/esm2022/lib/actions/components/action-manage/action-manage.component.mjs +0 -164
  7. package/esm2022/lib/actions/components/action-tile/action-tile.component.mjs +0 -79
  8. package/esm2022/lib/actions/dialogs/dialog-export-actions/dialog-export-actions.component.mjs +0 -75
  9. package/esm2022/lib/actions/dialogs/dialog-export-actions/dialog-export-actions.directive.mjs +0 -30
  10. package/esm2022/lib/actions/dialogs/dialog-filters/dialog-filters.component.mjs +0 -113
  11. package/esm2022/lib/actions/dialogs/dialog-manageaction/dialog-manageaction.component.mjs +0 -78
  12. package/esm2022/lib/actions/interfaces/IActionState.mjs +0 -2
  13. package/esm2022/lib/actions/models/actionDto.mjs +0 -43
  14. package/esm2022/lib/actions/models/actionOptionsDto.mjs +0 -9
  15. package/esm2022/lib/actions/models/actionPrefillDto.mjs +0 -3
  16. package/esm2022/lib/actions/models/actionResponseDto.mjs +0 -7
  17. package/esm2022/lib/actions/models/exportRequestDto.mjs +0 -3
  18. package/esm2022/lib/actions/pipes/interventionOwnerToString.pipe.mjs +0 -32
  19. package/esm2022/lib/actions/pipes/interventionStateToString.pipe.mjs +0 -26
  20. package/esm2022/lib/actions/pipes/interventionTypeToString.pipe.mjs +0 -30
  21. package/esm2022/lib/actions/services/actionClientConfig.mjs +0 -30
  22. package/esm2022/lib/actions/services/actionService.mjs +0 -66
  23. package/esm2022/lib/add-calendar/generators/base-calendar.generator.mjs +0 -46
  24. package/esm2022/lib/add-calendar/generators/google-calendar.generator.mjs +0 -16
  25. package/esm2022/lib/add-calendar/generators/ics-calendar.generator.mjs +0 -33
  26. package/esm2022/lib/add-calendar/generators/outlook-calendar.generator.mjs +0 -17
  27. package/esm2022/lib/add-calendar/generators/yahoo-calendar.generator.mjs +0 -28
  28. package/esm2022/lib/add-calendar/index.mjs +0 -4
  29. package/esm2022/lib/add-calendar/model/calendar-event.model.mjs +0 -2
  30. package/esm2022/lib/add-calendar/model/calendar-type.enum.mjs +0 -9
  31. package/esm2022/lib/add-calendar/ng-add-to-calendar.module.mjs +0 -18
  32. package/esm2022/lib/add-calendar/service/ng-add-to-calendar.service.mjs +0 -33
  33. package/esm2022/lib/alerts/alerts.module.mjs +0 -24
  34. package/esm2022/lib/alerts/components/alerts-list/alerts.component.mjs +0 -105
  35. package/esm2022/lib/alerts/components/dialog-alerts/dialog-alerts.component.mjs +0 -25
  36. package/esm2022/lib/alerts/components/dialog-alerts/dialog-alerts.directive.mjs +0 -35
  37. package/esm2022/lib/alerts/interfaces/IAlertState.mjs +0 -2
  38. package/esm2022/lib/alerts/models/alertDto.model.mjs +0 -3
  39. package/esm2022/lib/alerts/models/alertFilterDto.model.mjs +0 -3
  40. package/esm2022/lib/alerts/models/alertResponseDto.model.mjs +0 -7
  41. package/esm2022/lib/alerts/models/dismissAlertRequestDto.model.mjs +0 -3
  42. package/esm2022/lib/alerts/services/alertClientConfig.mjs +0 -30
  43. package/esm2022/lib/alerts/services/alerts.service.mjs +0 -31
  44. package/esm2022/lib/apiUrlToken.mjs +0 -30
  45. package/esm2022/lib/branding/brandBackground.directive.mjs +0 -46
  46. package/esm2022/lib/branding/brandConditionalBackgroundColor.directive.mjs +0 -58
  47. package/esm2022/lib/branding/brandConditionalColor.directive.mjs +0 -63
  48. package/esm2022/lib/branding/brandHoverColor.directive.mjs +0 -84
  49. package/esm2022/lib/branding/branding.module.mjs +0 -68
  50. package/esm2022/lib/branding/brandingProvider.service.mjs +0 -33
  51. package/esm2022/lib/branding/components/site-default-footer/site-default-footer.component.mjs +0 -37
  52. package/esm2022/lib/branding/components/site-default-header/site-default-header.component.mjs +0 -74
  53. package/esm2022/lib/branding/components/site-micro-footer/site-micro-footer.component.mjs +0 -34
  54. package/esm2022/lib/community/community.module.mjs +0 -31
  55. package/esm2022/lib/community/components/gethelp-form/gethelp-form.component.mjs +0 -79
  56. package/esm2022/lib/community/components/meetups/meetups.component.mjs +0 -69
  57. package/esm2022/lib/community/components/recentcontent/recentcontent.component.mjs +0 -29
  58. package/esm2022/lib/community/interfaces/ICommunityState.mjs +0 -2
  59. package/esm2022/lib/community/models/meetupDto.mjs +0 -6
  60. package/esm2022/lib/community/models/resourceDto.mjs +0 -6
  61. package/esm2022/lib/community/services/communityClientConfig.mjs +0 -30
  62. package/esm2022/lib/componentBase.mjs +0 -33
  63. package/esm2022/lib/componentWithViewStateBase.mjs +0 -38
  64. package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -52
  65. package/esm2022/lib/components/checkbox/checkbox.module.mjs +0 -24
  66. package/esm2022/lib/components/expand/expand.component.mjs +0 -41
  67. package/esm2022/lib/components/expand/expand.module.mjs +0 -24
  68. package/esm2022/lib/components/loading/loading.component.mjs +0 -33
  69. package/esm2022/lib/components/loading/loading.module.mjs +0 -24
  70. package/esm2022/lib/components/mat-tags/mat-tags.component.mjs +0 -82
  71. package/esm2022/lib/components/mat-tags/mat-tags.module.mjs +0 -47
  72. package/esm2022/lib/components/metadata-input/metadata-input.component.mjs +0 -99
  73. package/esm2022/lib/components/metadata-input/metadata-input.module.mjs +0 -39
  74. package/esm2022/lib/components/multi-email-input/multi-email-input.component.mjs +0 -112
  75. package/esm2022/lib/components/multi-email-input/multi-email-input.module.mjs +0 -39
  76. package/esm2022/lib/components/paginator/paginator.component.mjs +0 -50
  77. package/esm2022/lib/components/paginator/paginator.module.mjs +0 -40
  78. package/esm2022/lib/components/quantity-selector/quantity-selector.component.mjs +0 -90
  79. package/esm2022/lib/components/quantity-selector/quantity-selector.module.mjs +0 -43
  80. package/esm2022/lib/components/select-list/select-list.component.mjs +0 -73
  81. package/esm2022/lib/components/select-list/select-list.module.mjs +0 -46
  82. package/esm2022/lib/components/snapshot-inviteurls/snapshot-inviteurls.component.mjs +0 -30
  83. package/esm2022/lib/components/snapshot-inviteurls/snapshot-inviteurls.module.mjs +0 -36
  84. package/esm2022/lib/components/tabnavigator/tabnavigator.component.mjs +0 -36
  85. package/esm2022/lib/components/tabnavigator/tabnavigator.module.mjs +0 -32
  86. package/esm2022/lib/components/topicselector/customCheckValidator.mjs +0 -15
  87. package/esm2022/lib/components/topicselector/minTopicsSelectedValidator.mjs +0 -15
  88. package/esm2022/lib/components/topicselector/topic-selector.component.mjs +0 -220
  89. package/esm2022/lib/components/topicselector/topic-selector.module.mjs +0 -55
  90. package/esm2022/lib/dialogs/dialog-account/account.service.mjs +0 -29
  91. package/esm2022/lib/dialogs/dialog-account/dialog-account.component.mjs +0 -86
  92. package/esm2022/lib/dialogs/dialog-account/dialog-account.module.mjs +0 -21
  93. package/esm2022/lib/dialogs/dialog-account/resetPasswordRequestDto.model.mjs +0 -3
  94. package/esm2022/lib/dialogs/dialog-factorinformation/dialog-factorinformation.component.mjs +0 -48
  95. package/esm2022/lib/dialogs/dialog-factorinformation/dialog-factorinformation.module.mjs +0 -21
  96. package/esm2022/lib/dialogs/dialog-resourcedownload/dialog-resourcedownload.component.mjs +0 -76
  97. package/esm2022/lib/dialogs/dialog-resourcedownload/dialog-resourcedownload.module.mjs +0 -23
  98. package/esm2022/lib/dialogs/dialog-resourcedownload/resourceDownload.service.mjs +0 -26
  99. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.component.mjs +0 -25
  100. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.directive.mjs +0 -30
  101. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.module.mjs +0 -19
  102. package/esm2022/lib/dialogs/dialog-support/contactDto.mjs +0 -2
  103. package/esm2022/lib/dialogs/dialog-support/contactService.service.mjs +0 -25
  104. package/esm2022/lib/dialogs/dialog-support/contactTypeDto.mjs +0 -2
  105. package/esm2022/lib/dialogs/dialog-support/dialog-support.component.mjs +0 -90
  106. package/esm2022/lib/dialogs/dialog-support/dialog-support.directive.mjs +0 -131
  107. package/esm2022/lib/dialogs/dialog-support/dialog-support.module.mjs +0 -27
  108. package/esm2022/lib/directives/backbutton/backbutton.directive.mjs +0 -34
  109. package/esm2022/lib/directives/backbutton/backbutton.module.mjs +0 -17
  110. package/esm2022/lib/directives/guards/guards.module.mjs +0 -30
  111. package/esm2022/lib/directives/guards/validChangeTokenGuard.mjs +0 -27
  112. package/esm2022/lib/directives/guards/validKeyGuard.mjs +0 -26
  113. package/esm2022/lib/directives/guards/validSnapshotKeyGuard.mjs +0 -27
  114. package/esm2022/lib/directives/guards/validTeamKeyGuard.mjs +0 -27
  115. package/esm2022/lib/errorhandling/error.model.mjs +0 -16
  116. package/esm2022/lib/errorhandling/errorHandler.mjs +0 -96
  117. package/esm2022/lib/errorhandling/errorService.module.mjs +0 -24
  118. package/esm2022/lib/errorhandling/errorServiceConfig.mjs +0 -34
  119. package/esm2022/lib/guides/components/imageslider/imageslider.component.mjs +0 -52
  120. package/esm2022/lib/guides/components/resumeguidehover/resumeguidehover.component.mjs +0 -40
  121. package/esm2022/lib/guides/dialogs/dialog-guide/dialog-guide.component.mjs +0 -144
  122. package/esm2022/lib/guides/dialogs/dialog-guides/dialog-guides.component.mjs +0 -90
  123. package/esm2022/lib/guides/directives/startguide/startguide.directive.mjs +0 -27
  124. package/esm2022/lib/guides/guides.module.mjs +0 -92
  125. package/esm2022/lib/guides/interfaces/IGuideState.mjs +0 -2
  126. package/esm2022/lib/guides/models/guideCollectionDto.mjs +0 -19
  127. package/esm2022/lib/guides/services/guidePopup.service.mjs +0 -80
  128. package/esm2022/lib/guides/services/guideStateInBackEnd.service.mjs +0 -54
  129. package/esm2022/lib/guides/services/guideStateInBrowser.service.mjs +0 -56
  130. package/esm2022/lib/guides/services/guidesClientConfig.mjs +0 -30
  131. package/esm2022/lib/guides/services/interfaces.mjs +0 -2
  132. package/esm2022/lib/models/brandingSettingsDto.mjs +0 -5
  133. package/esm2022/lib/models/channelDto.mjs +0 -18
  134. package/esm2022/lib/models/clientInfoDto.mjs +0 -7
  135. package/esm2022/lib/models/contextItemDto.mjs +0 -7
  136. package/esm2022/lib/models/featuresDto.mjs +0 -3
  137. package/esm2022/lib/models/keyValueDto.mjs +0 -7
  138. package/esm2022/lib/models/modelStructureDto.mjs +0 -46
  139. package/esm2022/lib/models/paginatedResponse.mjs +0 -6
  140. package/esm2022/lib/models/pagingOptions.mjs +0 -3
  141. package/esm2022/lib/models/selectListItem.mjs +0 -8
  142. package/esm2022/lib/models/userInfoDto.mjs +0 -16
  143. package/esm2022/lib/models/userSettingsDto.mjs +0 -65
  144. package/esm2022/lib/pipes/callback/callback.module.mjs +0 -17
  145. package/esm2022/lib/pipes/callback/callback.pipe.mjs +0 -20
  146. package/esm2022/lib/pipes/dateRange/ngx-dateRange.module.mjs +0 -17
  147. package/esm2022/lib/pipes/dateRange/ngx-dateRange.pipe.mjs +0 -36
  148. package/esm2022/lib/pipes/dateRange/ngx-dateRangeDto.model.mjs +0 -3
  149. package/esm2022/lib/pipes/segmentName/segmentName.module.mjs +0 -17
  150. package/esm2022/lib/pipes/segmentName/segmentName.pipe.mjs +0 -31
  151. package/esm2022/lib/pipes/slugify/ngx-slugify.module.mjs +0 -17
  152. package/esm2022/lib/pipes/slugify/ngx-slugify.pipe.mjs +0 -24
  153. package/esm2022/lib/results/components/age-indicator/age-indicator.component.mjs +0 -37
  154. package/esm2022/lib/results/components/arrow/arrow.component.mjs +0 -224
  155. package/esm2022/lib/results/components/badge/badge.component.mjs +0 -29
  156. package/esm2022/lib/results/components/badge-progression/badge-progression.component.mjs +0 -25
  157. package/esm2022/lib/results/components/badge-streak/badge-streak.component.mjs +0 -29
  158. package/esm2022/lib/results/components/badges/badges.component.mjs +0 -40
  159. package/esm2022/lib/results/components/benchmark-indicator/benchmark-indicator.component.mjs +0 -21
  160. package/esm2022/lib/results/components/coachingcenter-teaser/coachingcenter-teaser.component.mjs +0 -28
  161. package/esm2022/lib/results/components/delta-arrow/delta-arrow.component.mjs +0 -37
  162. package/esm2022/lib/results/components/doityourself/doityourself.component.mjs +0 -17
  163. package/esm2022/lib/results/components/doityourselfworkshops/doityourselfworkshops.component.mjs +0 -41
  164. package/esm2022/lib/results/components/factor-axis/factor-axis.component.mjs +0 -62
  165. package/esm2022/lib/results/components/factors/factors.component.mjs +0 -46
  166. package/esm2022/lib/results/components/filter-tags/filter-tags.component.mjs +0 -31
  167. package/esm2022/lib/results/components/focusareas/focusareas.component.mjs +0 -43
  168. package/esm2022/lib/results/components/footer/footer.component.mjs +0 -30
  169. package/esm2022/lib/results/components/impact-indicator/impact-indicator.component.mjs +0 -20
  170. package/esm2022/lib/results/components/liberatorkits/liberatorkits.component.mjs +0 -29
  171. package/esm2022/lib/results/components/limitationsapply/limitationsapply.component.mjs +0 -20
  172. package/esm2022/lib/results/components/model/model.component.mjs +0 -79
  173. package/esm2022/lib/results/components/model-factor/model-factor.component.mjs +0 -95
  174. package/esm2022/lib/results/components/model-factor-breakdown/model-factor-breakdown.component.mjs +0 -44
  175. package/esm2022/lib/results/components/model-switcher/model-switcher.component.mjs +0 -33
  176. package/esm2022/lib/results/components/nav-button/nav-button.component.mjs +0 -85
  177. package/esm2022/lib/results/components/participants/participants.component.mjs +0 -78
  178. package/esm2022/lib/results/components/quicktips/quicktips.component.mjs +0 -77
  179. package/esm2022/lib/results/components/recommendation/recommendation.component.mjs +0 -53
  180. package/esm2022/lib/results/components/recommendations/recommendations.component.mjs +0 -57
  181. package/esm2022/lib/results/components/research/research.component.mjs +0 -16
  182. package/esm2022/lib/results/components/roadmap/roadmap.component.mjs +0 -29
  183. package/esm2022/lib/results/components/teamdashboard-teaser/teamdashboard-teaser.component.mjs +0 -30
  184. package/esm2022/lib/results/components/teameffectiveness/teameffectiveness.component.mjs +0 -40
  185. package/esm2022/lib/results/components/termsupdated/termsupdated.component.mjs +0 -37
  186. package/esm2022/lib/results/components/tip-badge/tip-badge.component.mjs +0 -53
  187. package/esm2022/lib/results/components/trends/trends.component.mjs +0 -138
  188. package/esm2022/lib/results/components/update-in-progress/update-in-progress.component.mjs +0 -36
  189. package/esm2022/lib/results/components/userprofile/userprofile.component.mjs +0 -166
  190. package/esm2022/lib/results/components/video/video.component.mjs +0 -23
  191. package/esm2022/lib/results/components/widget-factorscore/widget-factorscore.component.mjs +0 -41
  192. package/esm2022/lib/results/components/widget-participationrate/widget-participationrate.component.mjs +0 -32
  193. package/esm2022/lib/results/dialogs/dialog-export-factorscores/dialog-export-factorscores.component.mjs +0 -94
  194. package/esm2022/lib/results/dialogs/dialog-export-factorscores/dialog-export-factorscores.directive.mjs +0 -30
  195. package/esm2022/lib/results/dialogs/dialog-export-teamlist/dialog-export-teamlist.component.mjs +0 -93
  196. package/esm2022/lib/results/dialogs/dialog-export-teamlist/dialog-export-teamlist.directive.mjs +0 -30
  197. package/esm2022/lib/results/dialogs/dialog-modelfilter/dialog-modelfilter.component.mjs +0 -84
  198. package/esm2022/lib/results/dialogs/dialog-notes/dialog-notes.component.mjs +0 -46
  199. package/esm2022/lib/results/dialogs/dialog-settings/dialog-settings.component.mjs +0 -167
  200. package/esm2022/lib/results/interfaces/IResultsState.mjs +0 -2
  201. package/esm2022/lib/results/models/badgeDto.mjs +0 -10
  202. package/esm2022/lib/results/models/dataSetDto.mjs +0 -7
  203. package/esm2022/lib/results/models/dimensionResultDto.mjs +0 -3
  204. package/esm2022/lib/results/models/exportRequestDto.mjs +0 -11
  205. package/esm2022/lib/results/models/factorScoreDto.mjs +0 -96
  206. package/esm2022/lib/results/models/localUserDto.model.mjs +0 -4
  207. package/esm2022/lib/results/models/participantDto.model.mjs +0 -4
  208. package/esm2022/lib/results/models/snapshotDto.model.mjs +0 -4
  209. package/esm2022/lib/results/models/snapshotMetaDataDto.mjs +0 -5
  210. package/esm2022/lib/results/models/teamDto.model.mjs +0 -4
  211. package/esm2022/lib/results/models/teamListResponseDto.mjs +0 -6
  212. package/esm2022/lib/results/models/teamMetaDataDto.mjs +0 -11
  213. package/esm2022/lib/results/models/trendDataRequestDto.model.mjs +0 -3
  214. package/esm2022/lib/results/models/userListResponseDto.mjs +0 -6
  215. package/esm2022/lib/results/models/widgetDataDto.mjs +0 -3
  216. package/esm2022/lib/results/results.module.mjs +0 -385
  217. package/esm2022/lib/results/services/account.service.mjs +0 -24
  218. package/esm2022/lib/results/services/dimissPopupService.mjs +0 -18
  219. package/esm2022/lib/results/services/exportService.mjs +0 -30
  220. package/esm2022/lib/results/services/factorService.mjs +0 -24
  221. package/esm2022/lib/results/services/resultsClientConfig.mjs +0 -30
  222. package/esm2022/lib/results/services/terms.service.mjs +0 -24
  223. package/esm2022/lib/results/services/trend.service.mjs +0 -24
  224. package/esm2022/lib/results/services/userProfile.service.mjs +0 -41
  225. package/esm2022/lib/validators/domainValidator.mjs +0 -14
  226. package/esm2022/lib/validators/matchInputValidator.mjs +0 -25
  227. package/esm2022/lib/validators/maxSelectedValidator.mjs +0 -9
  228. package/esm2022/lib/viewModel/interfaces.mjs +0 -6
  229. package/esm2022/lib/viewModel/reloadStrategies/noReloadStrategy.mjs +0 -22
  230. package/esm2022/lib/viewModel/reloadStrategies/reloadOnPushStrategy.mjs +0 -52
  231. package/esm2022/lib/viewModel/services/sessionIdInterceptor.service.mjs +0 -31
  232. package/esm2022/lib/viewModel/services/sessionIdProvider.service.mjs +0 -22
  233. package/esm2022/lib/viewModel/userSettings.service.mjs +0 -32
  234. package/esm2022/lib/viewModel/viewModelState.module.mjs +0 -31
  235. package/esm2022/lib/viewModel/viewModelState.service.mjs +0 -79
  236. package/esm2022/lib/viewModel/viewModelStateConfig.mjs +0 -30
  237. package/esm2022/public-api.mjs +0 -224
  238. package/esm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs +0 -5
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@the-liberators/ngx-scrumteamsurvey-tools",
3
- "version": "2.3.23",
3
+ "version": "2.3.25",
4
4
  "peerDependencies": {
5
- "@angular/common": "^18.2.9",
6
- "@angular/core": "^18.2.9",
7
- "@angular/forms": "^18.2.9",
8
- "@ncstate/sat-popover": "^13.1.0",
9
- "@swimlane/ngx-charts": "^21.0.0",
10
- "@angular/material": "^18.2.10",
11
- "@angular/material-moment-adapter": "^18.2.10",
5
+ "@angular/common": "^19.0.6",
6
+ "@angular/core": "^19.0.6",
7
+ "@angular/forms": "^19.0.6",
8
+ "@ncstate/sat-popover": "^14.0.0",
9
+ "@swimlane/ngx-charts": "^21.1.2",
10
+ "@angular/material": "^19.0.5",
11
+ "@angular/material-moment-adapter": "^19.0.5",
12
12
  "moment": "^2.30.1",
13
13
  "ngx-webstorage-service": "^5.0.0",
14
14
  "rxjs": "^7.8.1",
@@ -26,8 +26,6 @@
26
26
  },
27
27
  ".": {
28
28
  "types": "./index.d.ts",
29
- "esm2022": "./esm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs",
30
- "esm": "./esm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs",
31
29
  "default": "./fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs"
32
30
  }
33
31
  }
@@ -1,128 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
- import { MatNativeDateModule } from '@angular/material/core';
5
- import { MatDatepickerModule } from '@angular/material/datepicker';
6
- import { MatDialogModule } from '@angular/material/dialog';
7
- import { MatInputModule } from '@angular/material/input';
8
- import { MatMenuModule } from '@angular/material/menu';
9
- import { MatPaginatorModule } from '@angular/material/paginator';
10
- import { MatSelectModule } from '@angular/material/select';
11
- import { MatTooltipModule } from '@angular/material/tooltip';
12
- import { RouterModule } from '@angular/router';
13
- import { PaginatorModule } from '../components/paginator/paginator.module';
14
- import { ActionListComponent } from './components/action-list/action-list.component';
15
- import { ActionManageComponent } from './components/action-manage/action-manage.component';
16
- import { ActionTileComponent } from './components/action-tile/action-tile.component';
17
- import { DialogExportActionsComponent } from './dialogs/dialog-export-actions/dialog-export-actions.component';
18
- import { OpenExportActionsDialogDirective } from './dialogs/dialog-export-actions/dialog-export-actions.directive';
19
- import { DialogActionFiltersComponent, OpenActionFiltersDialogDirective } from './dialogs/dialog-filters/dialog-filters.component';
20
- import { DialogActionManageComponent, OpenAddActionDialogDirective, OpenEditActionDialogDirective } from './dialogs/dialog-manageaction/dialog-manageaction.component';
21
- import { InterventionOwnerToStringPipe } from './pipes/interventionOwnerToString.pipe';
22
- import { InterventionStateToStringPipe } from './pipes/interventionStateToString.pipe';
23
- import { InterventionTypeToStringPipe } from './pipes/interventionTypeToString.pipe';
24
- import * as i0 from "@angular/core";
25
- export class ActionsModule {
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: ActionsModule, declarations: [ActionListComponent,
28
- ActionManageComponent,
29
- ActionTileComponent,
30
- DialogActionManageComponent,
31
- DialogActionFiltersComponent,
32
- DialogExportActionsComponent,
33
- InterventionTypeToStringPipe,
34
- InterventionStateToStringPipe,
35
- InterventionOwnerToStringPipe,
36
- OpenAddActionDialogDirective,
37
- OpenEditActionDialogDirective,
38
- OpenActionFiltersDialogDirective,
39
- OpenExportActionsDialogDirective], imports: [MatDialogModule,
40
- MatTooltipModule,
41
- MatNativeDateModule,
42
- MatMenuModule,
43
- MatPaginatorModule,
44
- MatSelectModule,
45
- RouterModule,
46
- PaginatorModule,
47
- CommonModule,
48
- FormsModule,
49
- ReactiveFormsModule,
50
- MatInputModule,
51
- MatDatepickerModule], exports: [ActionListComponent,
52
- ActionManageComponent,
53
- ActionTileComponent,
54
- DialogActionManageComponent,
55
- DialogActionFiltersComponent,
56
- DialogExportActionsComponent,
57
- InterventionTypeToStringPipe,
58
- InterventionOwnerToStringPipe,
59
- InterventionStateToStringPipe,
60
- OpenAddActionDialogDirective,
61
- OpenEditActionDialogDirective,
62
- OpenActionFiltersDialogDirective,
63
- OpenExportActionsDialogDirective] }); }
64
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionsModule, imports: [MatDialogModule,
65
- MatTooltipModule,
66
- MatNativeDateModule,
67
- MatMenuModule,
68
- MatPaginatorModule,
69
- MatSelectModule,
70
- RouterModule,
71
- PaginatorModule,
72
- CommonModule,
73
- FormsModule,
74
- ReactiveFormsModule,
75
- MatInputModule,
76
- MatDatepickerModule] }); }
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionsModule, decorators: [{
79
- type: NgModule,
80
- args: [{
81
- imports: [
82
- MatDialogModule,
83
- MatTooltipModule,
84
- MatNativeDateModule,
85
- MatMenuModule,
86
- MatPaginatorModule,
87
- MatSelectModule,
88
- RouterModule,
89
- PaginatorModule,
90
- CommonModule,
91
- FormsModule,
92
- ReactiveFormsModule,
93
- MatInputModule,
94
- MatDatepickerModule
95
- ],
96
- declarations: [
97
- ActionListComponent,
98
- ActionManageComponent,
99
- ActionTileComponent,
100
- DialogActionManageComponent,
101
- DialogActionFiltersComponent,
102
- DialogExportActionsComponent,
103
- InterventionTypeToStringPipe,
104
- InterventionStateToStringPipe,
105
- InterventionOwnerToStringPipe,
106
- OpenAddActionDialogDirective,
107
- OpenEditActionDialogDirective,
108
- OpenActionFiltersDialogDirective,
109
- OpenExportActionsDialogDirective
110
- ],
111
- exports: [
112
- ActionListComponent,
113
- ActionManageComponent,
114
- ActionTileComponent,
115
- DialogActionManageComponent,
116
- DialogActionFiltersComponent,
117
- DialogExportActionsComponent,
118
- InterventionTypeToStringPipe,
119
- InterventionOwnerToStringPipe,
120
- InterventionStateToStringPipe,
121
- OpenAddActionDialogDirective,
122
- OpenEditActionDialogDirective,
123
- OpenActionFiltersDialogDirective,
124
- OpenExportActionsDialogDirective
125
- ]
126
- }]
127
- }] });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvYWN0aW9ucy9hY3Rpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDL0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDbkgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbkksT0FBTyxFQUFFLDJCQUEyQixFQUFFLDRCQUE0QixFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdkssT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBOENyRixNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWEsaUJBNUJwQixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQiwyQkFBMkI7WUFDM0IsNEJBQTRCO1lBQzVCLDRCQUE0QjtZQUM1Qiw0QkFBNEI7WUFDNUIsNkJBQTZCO1lBQzdCLDZCQUE2QjtZQUM3Qiw0QkFBNEI7WUFDNUIsNkJBQTZCO1lBQzdCLGdDQUFnQztZQUNoQyxnQ0FBZ0MsYUExQmhDLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLFlBQVk7WUFDWixlQUFlO1lBQ2YsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsY0FBYztZQUNkLG1CQUFtQixhQWdCbkIsbUJBQW1CO1lBQ25CLHFCQUFxQjtZQUNyQixtQkFBbUI7WUFDbkIsMkJBQTJCO1lBQzNCLDRCQUE0QjtZQUM1Qiw0QkFBNEI7WUFDNUIsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3Qiw2QkFBNkI7WUFDN0IsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3QixnQ0FBZ0M7WUFDaEMsZ0NBQWdDO2dIQUV6QixhQUFhLFlBMUNwQixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixZQUFZO1lBQ1osZUFBZTtZQUNmLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxtQkFBbUI7OzRGQThCWixhQUFhO2tCQTVDekIsUUFBUTttQkFBQztvQkFDUCxPQUFPLEVBQUU7d0JBQ04sZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsbUJBQW1CO3FCQUFDO29CQUN2QixZQUFZLEVBQUU7d0JBQ1gsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUMzQiw0QkFBNEI7d0JBQzVCLDRCQUE0Qjt3QkFDNUIsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3FCQUFDO29CQUNwQyxPQUFPLEVBQUU7d0JBQ04sbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUMzQiw0QkFBNEI7d0JBQzVCLDRCQUE0Qjt3QkFDNUIsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3FCQUFDO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXROYXRpdmVEYXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICcuLi9jb21wb25lbnRzL3BhZ2luYXRvci9wYWdpbmF0b3IubW9kdWxlJztcbmltcG9ydCB7IEFjdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9uLWxpc3QvYWN0aW9uLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvbk1hbmFnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpb24tbWFuYWdlL2FjdGlvbi1tYW5hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvblRpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9uLXRpbGUvYWN0aW9uLXRpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ0V4cG9ydEFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpYWxvZ3MvZGlhbG9nLWV4cG9ydC1hY3Rpb25zL2RpYWxvZy1leHBvcnQtYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3BlbkV4cG9ydEFjdGlvbnNEaWFsb2dEaXJlY3RpdmUgfSBmcm9tICcuL2RpYWxvZ3MvZGlhbG9nLWV4cG9ydC1hY3Rpb25zL2RpYWxvZy1leHBvcnQtYWN0aW9ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGlhbG9nQWN0aW9uRmlsdGVyc0NvbXBvbmVudCwgT3BlbkFjdGlvbkZpbHRlcnNEaWFsb2dEaXJlY3RpdmUgfSBmcm9tICcuL2RpYWxvZ3MvZGlhbG9nLWZpbHRlcnMvZGlhbG9nLWZpbHRlcnMuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ0FjdGlvbk1hbmFnZUNvbXBvbmVudCwgT3BlbkFkZEFjdGlvbkRpYWxvZ0RpcmVjdGl2ZSwgT3BlbkVkaXRBY3Rpb25EaWFsb2dEaXJlY3RpdmUgfSBmcm9tICcuL2RpYWxvZ3MvZGlhbG9nLW1hbmFnZWFjdGlvbi9kaWFsb2ctbWFuYWdlYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnRlcnZlbnRpb25Pd25lclRvU3RyaW5nUGlwZSB9IGZyb20gJy4vcGlwZXMvaW50ZXJ2ZW50aW9uT3duZXJUb1N0cmluZy5waXBlJztcbmltcG9ydCB7IEludGVydmVudGlvblN0YXRlVG9TdHJpbmdQaXBlIH0gZnJvbSAnLi9waXBlcy9pbnRlcnZlbnRpb25TdGF0ZVRvU3RyaW5nLnBpcGUnO1xuaW1wb3J0IHsgSW50ZXJ2ZW50aW9uVHlwZVRvU3RyaW5nUGlwZSB9IGZyb20gJy4vcGlwZXMvaW50ZXJ2ZW50aW9uVHlwZVRvU3RyaW5nLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgaW1wb3J0czogW1xuICAgICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgUGFnaW5hdG9yTW9kdWxlLFxuICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICBNYXREYXRlcGlja2VyTW9kdWxlXSxcbiAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgQWN0aW9uTGlzdENvbXBvbmVudCxcbiAgICAgIEFjdGlvbk1hbmFnZUNvbXBvbmVudCxcbiAgICAgIEFjdGlvblRpbGVDb21wb25lbnQsXG4gICAgICBEaWFsb2dBY3Rpb25NYW5hZ2VDb21wb25lbnQsXG4gICAgICBEaWFsb2dBY3Rpb25GaWx0ZXJzQ29tcG9uZW50LFxuICAgICAgRGlhbG9nRXhwb3J0QWN0aW9uc0NvbXBvbmVudCxcbiAgICAgIEludGVydmVudGlvblR5cGVUb1N0cmluZ1BpcGUsXG4gICAgICBJbnRlcnZlbnRpb25TdGF0ZVRvU3RyaW5nUGlwZSxcbiAgICAgIEludGVydmVudGlvbk93bmVyVG9TdHJpbmdQaXBlLFxuICAgICAgT3BlbkFkZEFjdGlvbkRpYWxvZ0RpcmVjdGl2ZSxcbiAgICAgIE9wZW5FZGl0QWN0aW9uRGlhbG9nRGlyZWN0aXZlLFxuICAgICAgT3BlbkFjdGlvbkZpbHRlcnNEaWFsb2dEaXJlY3RpdmUsXG4gICAgICBPcGVuRXhwb3J0QWN0aW9uc0RpYWxvZ0RpcmVjdGl2ZV0sXG4gICBleHBvcnRzOiBbXG4gICAgICBBY3Rpb25MaXN0Q29tcG9uZW50LFxuICAgICAgQWN0aW9uTWFuYWdlQ29tcG9uZW50LFxuICAgICAgQWN0aW9uVGlsZUNvbXBvbmVudCxcbiAgICAgIERpYWxvZ0FjdGlvbk1hbmFnZUNvbXBvbmVudCxcbiAgICAgIERpYWxvZ0FjdGlvbkZpbHRlcnNDb21wb25lbnQsXG4gICAgICBEaWFsb2dFeHBvcnRBY3Rpb25zQ29tcG9uZW50LFxuICAgICAgSW50ZXJ2ZW50aW9uVHlwZVRvU3RyaW5nUGlwZSxcbiAgICAgIEludGVydmVudGlvbk93bmVyVG9TdHJpbmdQaXBlLFxuICAgICAgSW50ZXJ2ZW50aW9uU3RhdGVUb1N0cmluZ1BpcGUsXG4gICAgICBPcGVuQWRkQWN0aW9uRGlhbG9nRGlyZWN0aXZlLFxuICAgICAgT3BlbkVkaXRBY3Rpb25EaWFsb2dEaXJlY3RpdmUsXG4gICAgICBPcGVuQWN0aW9uRmlsdGVyc0RpYWxvZ0RpcmVjdGl2ZSxcbiAgICAgIE9wZW5FeHBvcnRBY3Rpb25zRGlhbG9nRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25zTW9kdWxlIHsgfVxuIl19
@@ -1,118 +0,0 @@
1
- import { Component, Inject, Input, ViewChild } from '@angular/core';
2
- import { FormControl } from '@angular/forms';
3
- import { timer } from 'rxjs';
4
- import { debounceTime } from 'rxjs/operators';
5
- import { ComponentWithViewStateBase } from '../../../componentWithViewStateBase';
6
- import { VIEWSTATE_USERSETTINGS_STRATEGY } from '../../../viewModel/userSettings.service';
7
- import { VIEWSTATE_PROVIDER } from '../../../viewModel/viewModelState.service';
8
- import { InterventionSortEnum } from '../../models/actionDto';
9
- import { ActionOptionDto } from '../../models/actionOptionsDto';
10
- import { ActionManageComponent } from '../action-manage/action-manage.component';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/material/snack-bar";
13
- import * as i2 from "../../services/actionService";
14
- import * as i3 from "@angular/router";
15
- import * as i4 from "@angular/material/menu";
16
- import * as i5 from "@angular/material/form-field";
17
- import * as i6 from "../../../components/paginator/paginator.component";
18
- import * as i7 from "@angular/common";
19
- import * as i8 from "@angular/forms";
20
- import * as i9 from "@angular/material/input";
21
- import * as i10 from "../action-tile/action-tile.component";
22
- import * as i11 from "../../dialogs/dialog-manageaction/dialog-manageaction.component";
23
- import * as i12 from "../../dialogs/dialog-filters/dialog-filters.component";
24
- import * as i13 from "../../dialogs/dialog-export-actions/dialog-export-actions.directive";
25
- import * as i14 from "../../../viewModel/viewModelState.service";
26
- export class ActionListComponent extends ComponentWithViewStateBase {
27
- constructor(snackBar, userSettings, actionService, state, route) {
28
- super(state, snackBar);
29
- this.snackBar = snackBar;
30
- this.userSettings = userSettings;
31
- this.actionService = actionService;
32
- this.state = state;
33
- this.route = route;
34
- }
35
- async ngOnInit() {
36
- super.ngOnInit();
37
- this.multipleTeams = this.prefill.teamKey == null || this.prefill.teamKey.length == 0;
38
- this.sortOptionsList = [];
39
- this.sortOptionsList.push(new ActionOptionDto(InterventionSortEnum.age, "Age (oldest first)"));
40
- this.sortOptionsList.push(new ActionOptionDto(InterventionSortEnum.due, "Due (upcoming first)"));
41
- this.sortOptionsList.push(new ActionOptionDto(InterventionSortEnum.created, "Created (newest first)"));
42
- this.sortOptionsList.push(new ActionOptionDto(InterventionSortEnum.owner, "Owner"));
43
- this.sortOptionsList.push(new ActionOptionDto(InterventionSortEnum.type, "Action type"));
44
- this.keywordControl = new FormControl();
45
- this.keywordControl.valueChanges.pipe(debounceTime(1000)).subscribe(data => {
46
- this.userSettings.settings.user.interventionFilter.keyword = this.keywordControl.value;
47
- this.userSettings.settings.user.interventionFilter.page = 0;
48
- this.loadActions();
49
- });
50
- if (this.overrideFilter) {
51
- this.userSettings.settings.user.interventionFilter = this.overrideFilter;
52
- // this is a bit of hack to avoid Angular from throwing errors because the viewstate has been checked
53
- timer(0).subscribe(() => {
54
- this.loadActions();
55
- });
56
- }
57
- }
58
- async setPaging(event) {
59
- this.userSettings.settings.user.interventionFilter.pageSize = event.pageSize;
60
- this.userSettings.settings.user.interventionFilter.page = event.pageIndex;
61
- await this.loadActions();
62
- }
63
- async setSort(sort) {
64
- this.userSettings.settings.user.interventionFilter.sort = sort;
65
- await this.loadActions();
66
- }
67
- onDataUpdate(data) {
68
- this.actions = data.actions.items;
69
- this.isLoggedIn = data.userInfo.isAdmin || data.userInfo.isCoach;
70
- this.userSettings.settings = data.userInfo.settings;
71
- this.filterCount = 0;
72
- if (this.userSettings.settings.user.interventionFilter.owner != null) {
73
- this.filterCount++;
74
- }
75
- if (this.userSettings.settings.user.interventionFilter.type != null) {
76
- this.filterCount++;
77
- }
78
- if (this.userSettings.settings.user.interventionFilter.state != null) {
79
- this.filterCount++;
80
- }
81
- if (this.userSettings.settings.user.interventionFilter.expectedImpactOn != null) {
82
- this.filterCount++;
83
- }
84
- if (this.userSettings.settings.user.interventionFilter.teamKey != null) {
85
- this.filterCount++;
86
- }
87
- }
88
- ;
89
- async loadActions() {
90
- this.actions.items = null;
91
- await this.userSettings.apply();
92
- document.getElementById("actionstoolbar").scrollIntoView({
93
- behavior: "smooth",
94
- block: "start",
95
- inline: "nearest"
96
- });
97
- }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionListComponent, deps: [{ token: i1.MatSnackBar }, { token: VIEWSTATE_USERSETTINGS_STRATEGY }, { token: i2.ActionService }, { token: VIEWSTATE_PROVIDER }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ActionListComponent, selector: "action-list", inputs: { prefill: "prefill", overrideFilter: "overrideFilter" }, viewQueries: [{ propertyName: "actionManageComponent", first: true, predicate: ActionManageComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"primarycolumn\">\n <h2>Actions</h2>\n <div class=\"listtoolbar\" id=\"actionstoolbar\">\n <div class=\"listtoolbar-item settings\">\n <div class=\"button borderless filters\" id=\"actions-filters\" actionFiltersDialog><span class=\"ph-faders-horizontal-bold icon\"></span> Filters <span class=\"filtercount\" *ngIf=\"filterCount > 0\">{{filterCount}}</span></div>\n <div class=\"button borderless sort\" id=\"actions-sort\" [matMenuTriggerFor]=\"matSortingMenu\"><span class=\"ph-funnel-simple-bold icon\"></span> {{userSettings.settings.user.interventionFilter.sort || \"Sort\"}}</div>\n <mat-menu #matSortingMenu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let sortOption of sortOptionsList\" (click)=\"setSort(sortOption.key)\">\n {{sortOption.label}}\n </button>\n </mat-menu>\n <div class=\"button borderless\" id=\"export-actions\" exportActionsDialog *ngIf=\"isLoggedIn\"><span class=\"ph-download-simple icon\"></span> Export</div>\n </div>\n\n <mat-form-field class=\"listtoolbar-item findbykeyword\" appearance=\"fill\">\n <mat-label>search</mat-label>\n <input matInput name=\"keyword\" id=\"actions-filter-keyword\" type=\"text\" maxlength=\"50\" [formControl]=\"keywordControl\" />\n </mat-form-field>\n \n <div class=\"listtoolbar-item quickactions\">\n <!--<div class=\"viewmodes\">\n <div class=\"viewmode active\"><span class=\"ph-grid-four icon\"></span></div>\n <div class=\"viewmode\"><span class=\"ph-list icon\"></span></div>\n </div>-->\n <a class=\"button primary newaction\" id=\"action-addnew\" addActionDialog [prefill]=\"prefill\"><span class=\"icon ph-plus\"></span> New action</a>\n </div>\n </div>\n\n <div class=\"loading\" *ngIf=\"!actions.items\">\n <div class=\"loading-icon dark\"></div>\n </div>\n\n <div class=\"wirebox calltoaction\" *ngIf=\"actions.items && actions.items.length == 0\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>How will you improve?</h2>\n <p>Identifying the areas where you want to improve is only the first step. How do you and your team(s) aim to improve? Add the actions you intend to take and where you expect improvements when successful.</p>\n </div>\n </div>\n </div>\n\n <div class=\"actions\" *ngIf=\"actions && actions.items\">\n <action-tile *ngFor=\"let action of actions.items\" [action]=\"action\" [multipleTeams]=\"multipleTeams\" [actionManageComponent]=\"actionManageComponent\"></action-tile>\n </div>\n\n <paginator [items]=\"actions\" (page)=\"setPaging($event)\" *ngIf=\"actions && actions.items && actions.totalItems > 0\"></paginator>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.primarycolumn .introduction{font-size:19px;line-height:140%;margin-bottom:30px}.primarycolumn .actions{margin-top:30px;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:50px;grid-auto-rows:1fr}@media only screen and (max-width: 1536px){.primarycolumn .actions{grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width: 992px){.primarycolumn .actions{grid-template-columns:repeat(1,1fr)}}.primarycolumn .calltoaction{margin-top:30px}.addintervention h3,.filter h3{margin-top:30px;margin-bottom:30px}\n"], dependencies: [{ kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.PaginatorComponent, selector: "paginator", inputs: ["items"], outputs: ["page"] }, { 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: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.ActionTileComponent, selector: "action-tile", inputs: ["action", "multipleTeams", "actionManageComponent"] }, { kind: "directive", type: i11.OpenAddActionDialogDirective, selector: "[addActionDialog]", inputs: ["prefill"] }, { kind: "directive", type: i12.OpenActionFiltersDialogDirective, selector: "[actionFiltersDialog]" }, { kind: "directive", type: i13.OpenExportActionsDialogDirective, selector: "[exportActionsDialog]" }] }); }
100
- }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionListComponent, decorators: [{
102
- type: Component,
103
- args: [{ selector: 'action-list', template: "<div class=\"primarycolumn\">\n <h2>Actions</h2>\n <div class=\"listtoolbar\" id=\"actionstoolbar\">\n <div class=\"listtoolbar-item settings\">\n <div class=\"button borderless filters\" id=\"actions-filters\" actionFiltersDialog><span class=\"ph-faders-horizontal-bold icon\"></span> Filters <span class=\"filtercount\" *ngIf=\"filterCount > 0\">{{filterCount}}</span></div>\n <div class=\"button borderless sort\" id=\"actions-sort\" [matMenuTriggerFor]=\"matSortingMenu\"><span class=\"ph-funnel-simple-bold icon\"></span> {{userSettings.settings.user.interventionFilter.sort || \"Sort\"}}</div>\n <mat-menu #matSortingMenu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let sortOption of sortOptionsList\" (click)=\"setSort(sortOption.key)\">\n {{sortOption.label}}\n </button>\n </mat-menu>\n <div class=\"button borderless\" id=\"export-actions\" exportActionsDialog *ngIf=\"isLoggedIn\"><span class=\"ph-download-simple icon\"></span> Export</div>\n </div>\n\n <mat-form-field class=\"listtoolbar-item findbykeyword\" appearance=\"fill\">\n <mat-label>search</mat-label>\n <input matInput name=\"keyword\" id=\"actions-filter-keyword\" type=\"text\" maxlength=\"50\" [formControl]=\"keywordControl\" />\n </mat-form-field>\n \n <div class=\"listtoolbar-item quickactions\">\n <!--<div class=\"viewmodes\">\n <div class=\"viewmode active\"><span class=\"ph-grid-four icon\"></span></div>\n <div class=\"viewmode\"><span class=\"ph-list icon\"></span></div>\n </div>-->\n <a class=\"button primary newaction\" id=\"action-addnew\" addActionDialog [prefill]=\"prefill\"><span class=\"icon ph-plus\"></span> New action</a>\n </div>\n </div>\n\n <div class=\"loading\" *ngIf=\"!actions.items\">\n <div class=\"loading-icon dark\"></div>\n </div>\n\n <div class=\"wirebox calltoaction\" *ngIf=\"actions.items && actions.items.length == 0\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>How will you improve?</h2>\n <p>Identifying the areas where you want to improve is only the first step. How do you and your team(s) aim to improve? Add the actions you intend to take and where you expect improvements when successful.</p>\n </div>\n </div>\n </div>\n\n <div class=\"actions\" *ngIf=\"actions && actions.items\">\n <action-tile *ngFor=\"let action of actions.items\" [action]=\"action\" [multipleTeams]=\"multipleTeams\" [actionManageComponent]=\"actionManageComponent\"></action-tile>\n </div>\n\n <paginator [items]=\"actions\" (page)=\"setPaging($event)\" *ngIf=\"actions && actions.items && actions.totalItems > 0\"></paginator>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.primarycolumn .introduction{font-size:19px;line-height:140%;margin-bottom:30px}.primarycolumn .actions{margin-top:30px;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:50px;grid-auto-rows:1fr}@media only screen and (max-width: 1536px){.primarycolumn .actions{grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width: 992px){.primarycolumn .actions{grid-template-columns:repeat(1,1fr)}}.primarycolumn .calltoaction{margin-top:30px}.addintervention h3,.filter h3{margin-top:30px;margin-bottom:30px}\n"] }]
104
- }], ctorParameters: () => [{ type: i1.MatSnackBar }, { type: undefined, decorators: [{
105
- type: Inject,
106
- args: [VIEWSTATE_USERSETTINGS_STRATEGY]
107
- }] }, { type: i2.ActionService }, { type: i14.ViewModelStateBase, decorators: [{
108
- type: Inject,
109
- args: [VIEWSTATE_PROVIDER]
110
- }] }, { type: i3.ActivatedRoute }], propDecorators: { prefill: [{
111
- type: Input
112
- }], overrideFilter: [{
113
- type: Input
114
- }], actionManageComponent: [{
115
- type: ViewChild,
116
- args: [ActionManageComponent]
117
- }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL2FjdGlvbnMvY29tcG9uZW50cy9hY3Rpb24tbGlzdC9hY3Rpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvYWN0aW9ucy9jb21wb25lbnRzL2FjdGlvbi1saXN0L2FjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR2pGLE9BQU8sRUFBd0IsK0JBQStCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoSCxPQUFPLEVBQXNCLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFbkcsT0FBTyxFQUFhLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBT2pGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSwwQkFBd0M7SUFXOUUsWUFBc0IsUUFBcUIsRUFBcUQsWUFBa0MsRUFBWSxhQUE0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O1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0osQ0FBQztJQUFBLENBQUM7SUFFSyxLQUFLLENBQUMsV0FBVztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDMUIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFDdEQsUUFBUSxFQUFFLFFBQVE7WUFDbEIsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsU0FBUztTQUNuQixDQUFDLENBQUM7SUFDTixDQUFDOytHQXpGUyxtQkFBbUIsNkNBV3dCLCtCQUErQiwwQ0FBZ0csa0JBQWtCO21HQVg1TCxtQkFBbUIsNEtBR2xCLHFCQUFxQix1RUMzQm5DLHl6RkFnREE7OzRGRHhCYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0csYUFBYTs7MEJBZXVCLE1BQU07MkJBQUMsK0JBQStCOzswQkFBeUYsTUFBTTsyQkFBQyxrQkFBa0I7c0VBVnRMLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDNEIscUJBQXFCO3NCQUF0RCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQYWdpbmF0b3JQYWdlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgUGFnaW5hdGVkUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcGFnaW5hdGVkUmVzcG9uc2UnO1xuaW1wb3J0IHsgQWN0aW9uTGlzdEZpbHRlciwgVXNlclNldHRpbmdzRHRvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3VzZXJTZXR0aW5nc0R0byc7XG5pbXBvcnQgeyBJVXNlclNldHRpbmdTdHJhdGVneSwgVklFV1NUQVRFX1VTRVJTRVRUSU5HU19TVFJBVEVHWSB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC91c2VyU2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TW9kZWxTdGF0ZUJhc2UsIFZJRVdTVEFURV9QUk9WSURFUiB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElBY3Rpb25TdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUFjdGlvblN0YXRlJztcbmltcG9ydCB7IEFjdGlvbkR0bywgSW50ZXJ2ZW50aW9uU29ydEVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uRHRvJztcbmltcG9ydCB7IEFjdGlvbk9wdGlvbkR0byB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb25PcHRpb25zRHRvJztcbmltcG9ydCB7IEFjdGlvblByZWZpbGxEdG8gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uUHJlZmlsbER0byc7XG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWN0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25NYW5hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9hY3Rpb24tbWFuYWdlL2FjdGlvbi1tYW5hZ2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICBzZWxlY3RvcjogJ2FjdGlvbi1saXN0JyxcbiAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tbGlzdC5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbkxpc3RDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZTxJQWN0aW9uU3RhdGU+IHtcbiAgIEBJbnB1dCgpIHB1YmxpYyBwcmVmaWxsOiBBY3Rpb25QcmVmaWxsRHRvO1xuICAgQElucHV0KCkgcHVibGljIG92ZXJyaWRlRmlsdGVyOiBBY3Rpb25MaXN0RmlsdGVyO1xuICAgQFZpZXdDaGlsZChBY3Rpb25NYW5hZ2VDb21wb25lbnQpIGFjdGlvbk1hbmFnZUNvbXBvbmVudDogQWN0aW9uTWFuYWdlQ29tcG9uZW50O1xuICAgcHVibGljIGFjdGlvbnM6IFBhZ2luYXRlZFJlc3BvbnNlPEFjdGlvbkR0bz47XG4gICBwdWJsaWMgbXVsdGlwbGVUZWFtczogYm9vbGVhbjtcbiAgIHB1YmxpYyBzb3J0T3B0aW9uc0xpc3Q6IEFjdGlvbk9wdGlvbkR0b1tdO1xuICAgcHVibGljIGZpbHRlckNvdW50OiBudW1iZXI7XG4gICBwdWJsaWMga2V5d29yZENvbnRyb2w6IEZvcm1Db250cm9sO1xuICAgcHVibGljIGlzTG9nZ2VkSW46IGJvb2xlYW47XG5cbiAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXIsIEBJbmplY3QoVklFV1NUQVRFX1VTRVJTRVRUSU5HU19TVFJBVEVHWSkgcHJvdGVjdGVkIHVzZXJTZXR0aW5nczogSVVzZXJTZXR0aW5nU3RyYXRlZ3ksIHByb3RlY3RlZCBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLCBASW5qZWN0KFZJRVdTVEFURV9QUk9WSURFUikgcHJpdmF0ZSBzdGF0ZTogVmlld01vZGVsU3RhdGVCYXNlPElBY3Rpb25TdGF0ZT4sIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICAgIHN1cGVyKHN0YXRlLCBzbmFja0JhcilcbiAgIH1cblxuICAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgdGhpcy5tdWx0aXBsZVRlYW1zID0gdGhpcy5wcmVmaWxsLnRlYW1LZXkgPT0gbnVsbCB8fCB0aGlzLnByZWZpbGwudGVhbUtleS5sZW5ndGggPT0gMDtcblxuICAgICAgdGhpcy5zb3J0T3B0aW9uc0xpc3QgPSBbXTtcbiAgICAgIHRoaXMuc29ydE9wdGlvbnNMaXN0LnB1c2gobmV3IEFjdGlvbk9wdGlvbkR0byhJbnRlcnZlbnRpb25Tb3J0RW51bS5hZ2UsIFwiQWdlIChvbGRlc3QgZmlyc3QpXCIpKTtcbiAgICAgIHRoaXMuc29ydE9wdGlvbnNMaXN0LnB1c2gobmV3IEFjdGlvbk9wdGlvbkR0byhJbnRlcnZlbnRpb25Tb3J0RW51bS5kdWUsIFwiRHVlICh1cGNvbWluZyBmaXJzdClcIikpO1xuICAgICAgdGhpcy5zb3J0T3B0aW9uc0xpc3QucHVzaChuZXcgQWN0aW9uT3B0aW9uRHRvKEludGVydmVudGlvblNvcnRFbnVtLmNyZWF0ZWQsIFwiQ3JlYXRlZCAobmV3ZXN0IGZpcnN0KVwiKSk7XG4gICAgICB0aGlzLnNvcnRPcHRpb25zTGlzdC5wdXNoKG5ldyBBY3Rpb25PcHRpb25EdG8oSW50ZXJ2ZW50aW9uU29ydEVudW0ub3duZXIsIFwiT3duZXJcIikpO1xuICAgICAgdGhpcy5zb3J0T3B0aW9uc0xpc3QucHVzaChuZXcgQWN0aW9uT3B0aW9uRHRvKEludGVydmVudGlvblNvcnRFbnVtLnR5cGUsIFwiQWN0aW9uIHR5cGVcIikpO1xuXG4gICAgICB0aGlzLmtleXdvcmRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgICB0aGlzLmtleXdvcmRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgxMDAwKSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgdGhpcy51c2VyU2V0dGluZ3Muc2V0dGluZ3MudXNlci5pbnRlcnZlbnRpb25GaWx0ZXIua2V5d29yZCA9IHRoaXMua2V5d29yZENvbnRyb2wudmFsdWU7XG4gICAgICAgICB0aGlzLnVzZXJTZXR0aW5ncy5zZXR0aW5ncy51c2VyLmludGVydmVudGlvbkZpbHRlci5wYWdlID0gMDtcbiAgICAgICAgIHRoaXMubG9hZEFjdGlvbnMoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5vdmVycmlkZUZpbHRlcikge1xuICAgICAgICAgdGhpcy51c2VyU2V0dGluZ3Muc2V0dGluZ3MudXNlci5pbnRlcnZlbnRpb25GaWx0ZXIgPSB0aGlzLm92ZXJyaWRlRmlsdGVyO1xuXG4gICAgICAgICAvLyB0aGlzIGlzIGEgYml0IG9mIGhhY2sgdG8gYXZvaWQgQW5ndWxhciBmcm9tIHRocm93aW5nIGVycm9ycyBiZWNhdXNlIHRoZSB2aWV3c3RhdGUgaGFzIGJlZW4gY2hlY2tlZFxuICAgICAgICAgdGltZXIoMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZEFjdGlvbnMoKTtcbiAgICAgICAgIH0pO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgYXN5bmMgc2V0UGFnaW5nKGV2ZW50OiBQYWdpbmF0b3JQYWdlRXZlbnQpIHtcbiAgICAgIHRoaXMudXNlclNldHRpbmdzLnNldHRpbmdzLnVzZXIuaW50ZXJ2ZW50aW9uRmlsdGVyLnBhZ2VTaXplID0gZXZlbnQucGFnZVNpemU7XG4gICAgICB0aGlzLnVzZXJTZXR0aW5ncy5zZXR0aW5ncy51c2VyLmludGVydmVudGlvbkZpbHRlci5wYWdlID0gZXZlbnQucGFnZUluZGV4O1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQWN0aW9ucygpO1xuICAgfVxuXG4gICBwdWJsaWMgYXN5bmMgc2V0U29ydChzb3J0OiBzdHJpbmcpIHtcbiAgICAgIHRoaXMudXNlclNldHRpbmdzLnNldHRpbmdzLnVzZXIuaW50ZXJ2ZW50aW9uRmlsdGVyLnNvcnQgPSBzb3J0IGFzIEludGVydmVudGlvblNvcnRFbnVtO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQWN0aW9ucygpO1xuICAgfVxuXG4gICBwcm90ZWN0ZWQgb25EYXRhVXBkYXRlKGRhdGE6IElBY3Rpb25TdGF0ZSk6IHZvaWQge1xuICAgICAgdGhpcy5hY3Rpb25zID0gZGF0YS5hY3Rpb25zLml0ZW1zO1xuICAgICAgdGhpcy5pc0xvZ2dlZEluID0gZGF0YS51c2VySW5mby5pc0FkbWluIHx8IGRhdGEudXNlckluZm8uaXNDb2FjaDtcbiAgICAgIHRoaXMudXNlclNldHRpbmdzLnNldHRpbmdzID0gZGF0YS51c2VySW5mby5zZXR0aW5ncztcblxuICAgICAgdGhpcy5maWx0ZXJDb3VudCA9IDA7XG4gICAgICBpZiAodGhpcy51c2VyU2V0dGluZ3Muc2V0dGluZ3MudXNlci5pbnRlcnZlbnRpb25GaWx0ZXIub3duZXIgIT0gbnVsbCkge1xuICAgICAgICAgdGhpcy5maWx0ZXJDb3VudCsrO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy51c2VyU2V0dGluZ3Muc2V0dGluZ3MudXNlci5pbnRlcnZlbnRpb25GaWx0ZXIudHlwZSAhPSBudWxsKSB7XG4gICAgICAgICB0aGlzLmZpbHRlckNvdW50Kys7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnVzZXJTZXR0aW5ncy5zZXR0aW5ncy51c2VyLmludGVydmVudGlvbkZpbHRlci5zdGF0ZSAhPSBudWxsKSB7XG4gICAgICAgICB0aGlzLmZpbHRlckNvdW50Kys7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnVzZXJTZXR0aW5ncy5zZXR0aW5ncy51c2VyLmludGVydmVudGlvbkZpbHRlci5leHBlY3RlZEltcGFjdE9uICE9IG51bGwpIHtcbiAgICAgICAgIHRoaXMuZmlsdGVyQ291bnQrKztcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudXNlclNldHRpbmdzLnNldHRpbmdzLnVzZXIuaW50ZXJ2ZW50aW9uRmlsdGVyLnRlYW1LZXkgIT0gbnVsbCkge1xuICAgICAgICAgdGhpcy5maWx0ZXJDb3VudCsrO1xuICAgICAgfVxuICAgfTtcblxuICAgcHVibGljIGFzeW5jIGxvYWRBY3Rpb25zKCkge1xuICAgICAgdGhpcy5hY3Rpb25zLml0ZW1zID0gbnVsbDtcbiAgICAgIGF3YWl0IHRoaXMudXNlclNldHRpbmdzLmFwcGx5KCk7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjdGlvbnN0b29sYmFyXCIpLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxuICAgICAgICAgYmxvY2s6IFwic3RhcnRcIixcbiAgICAgICAgIGlubGluZTogXCJuZWFyZXN0XCJcbiAgICAgIH0pO1xuICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByaW1hcnljb2x1bW5cIj5cbiAgIDxoMj5BY3Rpb25zPC9oMj5cbiAgIDxkaXYgY2xhc3M9XCJsaXN0dG9vbGJhclwiIGlkPVwiYWN0aW9uc3Rvb2xiYXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0dG9vbGJhci1pdGVtIHNldHRpbmdzXCI+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJvcmRlcmxlc3MgZmlsdGVyc1wiIGlkPVwiYWN0aW9ucy1maWx0ZXJzXCIgYWN0aW9uRmlsdGVyc0RpYWxvZz48c3BhbiBjbGFzcz1cInBoLWZhZGVycy1ob3Jpem9udGFsLWJvbGQgaWNvblwiPjwvc3Bhbj4gRmlsdGVycyA8c3BhbiBjbGFzcz1cImZpbHRlcmNvdW50XCIgKm5nSWY9XCJmaWx0ZXJDb3VudCA+IDBcIj57e2ZpbHRlckNvdW50fX08L3NwYW4+PC9kaXY+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJvcmRlcmxlc3Mgc29ydFwiIGlkPVwiYWN0aW9ucy1zb3J0XCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1hdFNvcnRpbmdNZW51XCI+PHNwYW4gY2xhc3M9XCJwaC1mdW5uZWwtc2ltcGxlLWJvbGQgaWNvblwiPjwvc3Bhbj4ge3t1c2VyU2V0dGluZ3Muc2V0dGluZ3MudXNlci5pbnRlcnZlbnRpb25GaWx0ZXIuc29ydCB8fCBcIlNvcnRcIn19PC9kaXY+XG4gICAgICAgICA8bWF0LW1lbnUgI21hdFNvcnRpbmdNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBzb3J0T3B0aW9uIG9mIHNvcnRPcHRpb25zTGlzdFwiIChjbGljayk9XCJzZXRTb3J0KHNvcnRPcHRpb24ua2V5KVwiPlxuICAgICAgICAgICAgICAge3tzb3J0T3B0aW9uLmxhYmVsfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYm9yZGVybGVzc1wiIGlkPVwiZXhwb3J0LWFjdGlvbnNcIiBleHBvcnRBY3Rpb25zRGlhbG9nICpuZ0lmPVwiaXNMb2dnZWRJblwiPjxzcGFuIGNsYXNzPVwicGgtZG93bmxvYWQtc2ltcGxlIGljb25cIj48L3NwYW4+IEV4cG9ydDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImxpc3R0b29sYmFyLWl0ZW0gZmluZGJ5a2V5d29yZFwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPnNlYXJjaDwvbWF0LWxhYmVsPlxuICAgICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJrZXl3b3JkXCIgaWQ9XCJhY3Rpb25zLWZpbHRlci1rZXl3b3JkXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCI1MFwiIFtmb3JtQ29udHJvbF09XCJrZXl3b3JkQ29udHJvbFwiIC8+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgIFxuICAgICAgPGRpdiBjbGFzcz1cImxpc3R0b29sYmFyLWl0ZW0gcXVpY2thY3Rpb25zXCI+XG4gICAgICAgICA8IS0tPGRpdiBjbGFzcz1cInZpZXdtb2Rlc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZXdtb2RlIGFjdGl2ZVwiPjxzcGFuIGNsYXNzPVwicGgtZ3JpZC1mb3VyIGljb25cIj48L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlld21vZGVcIj48c3BhbiBjbGFzcz1cInBoLWxpc3QgaWNvblwiPjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgIDwvZGl2Pi0tPlxuICAgICAgICAgPGEgY2xhc3M9XCJidXR0b24gcHJpbWFyeSBuZXdhY3Rpb25cIiBpZD1cImFjdGlvbi1hZGRuZXdcIiBhZGRBY3Rpb25EaWFsb2cgW3ByZWZpbGxdPVwicHJlZmlsbFwiPjxzcGFuIGNsYXNzPVwiaWNvbiBwaC1wbHVzXCI+PC9zcGFuPiBOZXcgYWN0aW9uPC9hPlxuICAgICAgPC9kaXY+XG4gICA8L2Rpdj5cblxuICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cIiFhY3Rpb25zLml0ZW1zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1pY29uIGRhcmtcIj48L2Rpdj5cbiAgIDwvZGl2PlxuXG4gICA8ZGl2IGNsYXNzPVwid2lyZWJveCBjYWxsdG9hY3Rpb25cIiAqbmdJZj1cImFjdGlvbnMuaXRlbXMgJiYgYWN0aW9ucy5pdGVtcy5sZW5ndGggPT0gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnR3aXRoYm9yZGVyc1wiPlxuICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1nL2ltcHJvdmUucG5nXCIgLz5cbiAgICAgICAgICAgIDxoMj5Ib3cgd2lsbCB5b3UgaW1wcm92ZT88L2gyPlxuICAgICAgICAgICAgPHA+SWRlbnRpZnlpbmcgdGhlIGFyZWFzIHdoZXJlIHlvdSB3YW50IHRvIGltcHJvdmUgaXMgb25seSB0aGUgZmlyc3Qgc3RlcC4gSG93IGRvIHlvdSBhbmQgeW91ciB0ZWFtKHMpIGFpbSB0byBpbXByb3ZlPyBBZGQgdGhlIGFjdGlvbnMgeW91IGludGVuZCB0byB0YWtlIGFuZCB3aGVyZSB5b3UgZXhwZWN0IGltcHJvdmVtZW50cyB3aGVuIHN1Y2Nlc3NmdWwuPC9wPlxuICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgIDwvZGl2PlxuXG4gICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwiYWN0aW9ucyAmJiBhY3Rpb25zLml0ZW1zXCI+XG4gICAgICA8YWN0aW9uLXRpbGUgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zLml0ZW1zXCIgW2FjdGlvbl09XCJhY3Rpb25cIiBbbXVsdGlwbGVUZWFtc109XCJtdWx0aXBsZVRlYW1zXCIgW2FjdGlvbk1hbmFnZUNvbXBvbmVudF09XCJhY3Rpb25NYW5hZ2VDb21wb25lbnRcIj48L2FjdGlvbi10aWxlPlxuICAgPC9kaXY+XG5cbiAgIDxwYWdpbmF0b3IgW2l0ZW1zXT1cImFjdGlvbnNcIiAocGFnZSk9XCJzZXRQYWdpbmcoJGV2ZW50KVwiICpuZ0lmPVwiYWN0aW9ucyAmJiBhY3Rpb25zLml0ZW1zICYmIGFjdGlvbnMudG90YWxJdGVtcyA+IDBcIj48L3BhZ2luYXRvcj5cbjwvZGl2PlxuIl19
@@ -1,164 +0,0 @@
1
- import { Component, Inject, Input } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { ComponentBase } from '../../../componentBase';
4
- import { SelectItem } from '../../../models/selectListItem';
5
- import { VIEWSTATE_PROVIDER } from '../../../viewModel/viewModelState.service';
6
- import { InterventionStateEnum } from '../../models/actionDto';
7
- import { ActionOptionDto } from '../../models/actionOptionsDto';
8
- import { ActionPrefillDto } from '../../models/actionPrefillDto';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/material/dialog";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "../../services/actionService";
13
- import * as i4 from "@angular/material/snack-bar";
14
- import * as i5 from "@angular/material/form-field";
15
- import * as i6 from "@angular/material/select";
16
- import * as i7 from "@angular/material/core";
17
- import * as i8 from "@angular/common";
18
- import * as i9 from "@angular/material/input";
19
- import * as i10 from "@angular/material/datepicker";
20
- import * as i11 from "../../../viewModel/viewModelState.service";
21
- export class ActionManageComponent extends ComponentBase {
22
- constructor(dialogRef, formBuilder, actionService, viewModelState, snackBar) {
23
- super(snackBar);
24
- this.dialogRef = dialogRef;
25
- this.formBuilder = formBuilder;
26
- this.actionService = actionService;
27
- this.viewModelState = viewModelState;
28
- this.snackBar = snackBar;
29
- this.teams = [];
30
- this.showTeamSelector = true;
31
- }
32
- ngOnInit() {
33
- this.createForm();
34
- this.ownerList = this.actionService.getOwnerOptions();
35
- this.interventionTypeList = this.actionService.getTypeOptions();
36
- this.stateList = this.actionService.getStateOptions();
37
- this.viewStateSubscription = this.viewModelState.data.subscribe(success => {
38
- if (success.loaded) {
39
- this.factors = this.getFactors(success.factorScores.modelStructure);
40
- this.expectedEffectOnList = success.factorScores.factorScores.map(p => new ActionOptionDto(p.key, p.name));
41
- if (success.teamMetaData != null) {
42
- this.teams.push(new ActionOptionDto(success.teamMetaData.teamKey, success.teamMetaData.name));
43
- }
44
- else {
45
- this.teams = success.factorScores.composition.points.points.map(p => new ActionOptionDto(p.publicKey, p.name));
46
- }
47
- if (this.teams.length == 1) {
48
- this.prefill.teamKey = this.teams[0].key;
49
- }
50
- this.showTeamSelector = (!this.prefill.teamKey || this.prefill.teamKey.length == 0);
51
- this.applyPrefill();
52
- }
53
- });
54
- if (this.action && this.action.publicKey) {
55
- this.form.controls.teamKey.setValue(this.action.team.publicKey);
56
- this.form.controls.publicKey.setValue(this.action.publicKey);
57
- this.form.controls.description.setValue(this.action.description);
58
- this.form.controls.url.setValue(this.action.url);
59
- this.form.controls.expectedImpactOn.setValue(this.action.expectedImpactOn);
60
- this.form.controls.type.setValue(this.action.type);
61
- this.form.controls.owner.setValue(this.action.owner);
62
- this.form.controls.state.setValue(this.action.state);
63
- this.form.controls.due.setValue(this.action.due);
64
- this.form.controls.quickTipPublicKey.setValue(this.action.quickTipPublicKey);
65
- this.showTeamSelector = false;
66
- }
67
- }
68
- async onSubmit(formDirective) {
69
- if (!this.form.valid) {
70
- return;
71
- }
72
- if (this.form.controls.publicKey.value) {
73
- await this.actionService.update(this.form.controls.teamKey.value, this.form.getRawValue());
74
- }
75
- else {
76
- await this.actionService.create(this.form.controls.teamKey.value, this.form.getRawValue());
77
- }
78
- this.dialogRef.closeAll();
79
- this.viewModelState.updating.next(true);
80
- }
81
- async delete() {
82
- if (window.confirm("Are you sure you want to delete this intervention?")) {
83
- await this.actionService.delete(this.form.controls.teamKey.value, this.form.controls.publicKey.value);
84
- this.dialogRef.closeAll();
85
- this.viewModelState.updating.next(true);
86
- }
87
- }
88
- cancel() {
89
- this.resetForm(null);
90
- this.dialogRef.closeAll();
91
- }
92
- resetForm(formDirective) {
93
- this.showTeamSelector = (!this.prefill.teamKey || this.prefill.teamKey.length == 0);
94
- this.form.reset();
95
- this.action = null;
96
- if (formDirective) {
97
- formDirective.resetForm();
98
- }
99
- this.form.controls.state.setValue(InterventionStateEnum.open);
100
- this.applyPrefill();
101
- }
102
- getFactors(model) {
103
- if (model == null || model.definition == null || model.definition.factors == null) {
104
- return null;
105
- }
106
- var result = [];
107
- for (var factor of model.definition.factors.filter(p => p.parentKey == null)) {
108
- result.push(new SelectItem(factor.publicKey, factor.name, false));
109
- for (var lowerDimension of factor.lower) {
110
- result.push(new SelectItem(lowerDimension.publicKey, lowerDimension.name, true));
111
- }
112
- }
113
- return result;
114
- }
115
- createForm() {
116
- this.form = this.formBuilder.group({
117
- publicKey: [""],
118
- teamKey: ["", [Validators.required]],
119
- quickTipPublicKey: [""],
120
- description: ["", [Validators.required, Validators.maxLength(500)]],
121
- url: ["", [Validators.maxLength(500)]],
122
- owner: ["", Validators.required],
123
- state: ["", Validators.required],
124
- type: ["", Validators.required],
125
- due: [""],
126
- expectedImpactOn: ["", Validators.required]
127
- });
128
- }
129
- applyPrefill() {
130
- if (this.prefill) {
131
- this.form.controls.teamKey.setValue(this.prefill.teamKey);
132
- this.form.controls.description.setValue(this.prefill.description);
133
- this.form.controls.expectedImpactOn.setValue(this.prefill.expectedImpactOn);
134
- this.form.controls.type.setValue(this.prefill.type);
135
- this.form.controls.owner.setValue(this.prefill.owner);
136
- this.form.controls.state.setValue(this.prefill.state);
137
- this.form.controls.url.setValue(this.prefill.url);
138
- this.form.controls.quickTipPublicKey.setValue(this.prefill.quickTipPublicKey);
139
- }
140
- else {
141
- this.prefill = new ActionPrefillDto();
142
- this.prefill.expectedImpactOn = [];
143
- }
144
- }
145
- ngOnDestroy() {
146
- if (this.viewStateSubscription) {
147
- this.viewStateSubscription.unsubscribe();
148
- }
149
- }
150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionManageComponent, deps: [{ token: i1.MatDialog }, { token: i2.FormBuilder }, { token: i3.ActionService }, { token: VIEWSTATE_PROVIDER }, { token: i4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
151
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ActionManageComponent, selector: "action-manage", inputs: { prefill: "prefill", action: "action" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\" class=\"manage-action-form\">\n <mat-form-field appearance=\"fill\" *ngIf=\"showTeamSelector\" subscriptSizing=\"dynamic\">\n <mat-label>Which team owns this action?</mat-label>\n <mat-select formControlName=\"teamKey\" id=\"teamKey\">\n <mat-option class=\"select-option\" *ngFor=\"let team of teams\" [value]=\"team.key\">{{team.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Enter short description</mat-label>\n <textarea matInput formControlName=\"description\" id=\"description\" rows=\"2\" maxlength=\"500\"></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.expectedImpactOn || prefill.expectedImpactOn.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Where do you expect improvement?</mat-label>\n <mat-select multiple formControlName=\"expectedImpactOn\" id=\"expectedImpactOn\">\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.owner\" subscriptSizing=\"dynamic\">\n <mat-label>Who owns this action?</mat-label>\n <mat-select formControlName=\"owner\" id=\"owner\">\n <mat-option class=\"select-option\" *ngFor=\"let owner of ownerList\" [value]=\"owner.key\">{{owner.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.type\" subscriptSizing=\"dynamic\">\n <mat-label>What is the type of action?</mat-label>\n <mat-select formControlName=\"type\" id=\"type\">\n <mat-option class=\"select-option\" *ngFor=\"let interventionType of interventionTypeList\" [value]=\"interventionType.key\">{{interventionType.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.state || action\" subscriptSizing=\"dynamic\">\n <mat-label>What is the state of this action?</mat-label>\n <mat-select formControlName=\"state\" id=\"state\">\n <mat-option class=\"select-option\" *ngFor=\"let state of stateList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.url || prefill.url.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Url for additional details (e.g. JIRA or Trello)</mat-label>\n <input matInput formControlName=\"url\" id=\"url\" rows=\"1\" maxlength=\"500\">\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>When should it be done?</mat-label>\n <input matInput [matDatepicker]=\"picker\" formControlName=\"due\" id=\"due\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <div class=\"toolbar leftright\">\n <div>\n <a class=\"button borderless delete\" href=\"javascript:void(null);\" (click)=\"delete()\" id=\"delete\" *ngIf=\"action\"><span class=\"icon ph-trash\"></span> delete</a>\n <a class=\"button borderless cancel\" href=\"javascript:void(null);\" (click)=\"cancel()\" id=\"cancel\" *ngIf=\"form.dirty || action\"><span class=\"icon ph-x-circle\"></span> cancel</a>\n </div>\n <input class=\"button primary\" type=\"submit\" id=\"submit\" value=\"save\" />\n </div>\n</form>\n", styles: ["form{margin-top:20px;position:sticky;top:20px}form .mat-form-field{width:100%;margin-bottom:10px}form .toolbar .button.cancel{padding-left:0;margin-left:0}@media only screen and (min-width: 992px){form .toolbar .delete{padding-left:0;margin-left:0}}.mat-mdc-option.lower{margin-left:20px}\n"], dependencies: [{ kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
152
- }
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionManageComponent, decorators: [{
154
- type: Component,
155
- args: [{ selector: 'action-manage', template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\" class=\"manage-action-form\">\n <mat-form-field appearance=\"fill\" *ngIf=\"showTeamSelector\" subscriptSizing=\"dynamic\">\n <mat-label>Which team owns this action?</mat-label>\n <mat-select formControlName=\"teamKey\" id=\"teamKey\">\n <mat-option class=\"select-option\" *ngFor=\"let team of teams\" [value]=\"team.key\">{{team.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Enter short description</mat-label>\n <textarea matInput formControlName=\"description\" id=\"description\" rows=\"2\" maxlength=\"500\"></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.expectedImpactOn || prefill.expectedImpactOn.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Where do you expect improvement?</mat-label>\n <mat-select multiple formControlName=\"expectedImpactOn\" id=\"expectedImpactOn\">\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.owner\" subscriptSizing=\"dynamic\">\n <mat-label>Who owns this action?</mat-label>\n <mat-select formControlName=\"owner\" id=\"owner\">\n <mat-option class=\"select-option\" *ngFor=\"let owner of ownerList\" [value]=\"owner.key\">{{owner.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.type\" subscriptSizing=\"dynamic\">\n <mat-label>What is the type of action?</mat-label>\n <mat-select formControlName=\"type\" id=\"type\">\n <mat-option class=\"select-option\" *ngFor=\"let interventionType of interventionTypeList\" [value]=\"interventionType.key\">{{interventionType.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.state || action\" subscriptSizing=\"dynamic\">\n <mat-label>What is the state of this action?</mat-label>\n <mat-select formControlName=\"state\" id=\"state\">\n <mat-option class=\"select-option\" *ngFor=\"let state of stateList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.url || prefill.url.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Url for additional details (e.g. JIRA or Trello)</mat-label>\n <input matInput formControlName=\"url\" id=\"url\" rows=\"1\" maxlength=\"500\">\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>When should it be done?</mat-label>\n <input matInput [matDatepicker]=\"picker\" formControlName=\"due\" id=\"due\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <div class=\"toolbar leftright\">\n <div>\n <a class=\"button borderless delete\" href=\"javascript:void(null);\" (click)=\"delete()\" id=\"delete\" *ngIf=\"action\"><span class=\"icon ph-trash\"></span> delete</a>\n <a class=\"button borderless cancel\" href=\"javascript:void(null);\" (click)=\"cancel()\" id=\"cancel\" *ngIf=\"form.dirty || action\"><span class=\"icon ph-x-circle\"></span> cancel</a>\n </div>\n <input class=\"button primary\" type=\"submit\" id=\"submit\" value=\"save\" />\n </div>\n</form>\n", styles: ["form{margin-top:20px;position:sticky;top:20px}form .mat-form-field{width:100%;margin-bottom:10px}form .toolbar .button.cancel{padding-left:0;margin-left:0}@media only screen and (min-width: 992px){form .toolbar .delete{padding-left:0;margin-left:0}}.mat-mdc-option.lower{margin-left:20px}\n"] }]
156
- }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.FormBuilder }, { type: i3.ActionService }, { type: i11.ViewModelStateBase, decorators: [{
157
- type: Inject,
158
- args: [VIEWSTATE_PROVIDER]
159
- }] }, { type: i4.MatSnackBar }], propDecorators: { prefill: [{
160
- type: Input
161
- }], action: [{
162
- type: Input
163
- }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW1hbmFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvYWN0aW9ucy9jb21wb25lbnRzL2FjdGlvbi1tYW5hZ2UvYWN0aW9uLW1hbmFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvYWN0aW9ucy9jb21wb25lbnRzL2FjdGlvbi1tYW5hZ2UvYWN0aW9uLW1hbmFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUE4QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBc0IsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuRyxPQUFPLEVBQWEscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRakUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGFBQWE7SUFjckQsWUFBb0IsU0FBb0IsRUFBVSxXQUF3QixFQUFVLGFBQTRCLEVBQXNDLGNBQWdELEVBQVksUUFBcUI7UUFDcE8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBREUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLGdCQUFXLEdB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OzBCQWtCMEYsTUFBTTsyQkFBQyxrQkFBa0I7bUVBYjVILE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudEJhc2UnO1xuaW1wb3J0IHsgTW9kZWxTdHJ1Y3R1cmVEdG8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbW9kZWxTdHJ1Y3R1cmVEdG8nO1xuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zZWxlY3RMaXN0SXRlbSc7XG5pbXBvcnQgeyBWSUVXU1RBVEVfUFJPVklERVIsIFZpZXdNb2RlbFN0YXRlQmFzZSB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElBY3Rpb25TdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUFjdGlvblN0YXRlJztcbmltcG9ydCB7IEFjdGlvbkR0bywgSW50ZXJ2ZW50aW9uU3RhdGVFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbkR0byc7XG5pbXBvcnQgeyBBY3Rpb25PcHRpb25EdG8gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uT3B0aW9uc0R0byc7XG5pbXBvcnQgeyBBY3Rpb25QcmVmaWxsRHRvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvblByZWZpbGxEdG8nO1xuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjdGlvblNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAnYWN0aW9uLW1hbmFnZScsXG4gICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLW1hbmFnZS5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tbWFuYWdlLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uTWFuYWdlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XG4gICBASW5wdXQoKSBwdWJsaWMgcHJlZmlsbDogQWN0aW9uUHJlZmlsbER0bztcbiAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb246IEFjdGlvbkR0bztcbiAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gICBwdWJsaWMgaW50ZXJ2ZW50aW9uVHlwZUxpc3Q6IEFjdGlvbk9wdGlvbkR0b1tdO1xuICAgcHVibGljIGV4cGVjdGVkRWZmZWN0T25MaXN0OiBBY3Rpb25PcHRpb25EdG9bXTtcbiAgIHB1YmxpYyBzdGF0ZUxpc3Q6IEFjdGlvbk9wdGlvbkR0b1tdO1xuICAgcHVibGljIG93bmVyTGlzdDogQWN0aW9uT3B0aW9uRHRvW107XG4gICBwdWJsaWMgdGVhbXM6IEFjdGlvbk9wdGlvbkR0b1tdID0gW107XG4gICBwdWJsaWMgbXVsdGlwbGVUZWFtczogYm9vbGVhbjtcbiAgIHB1YmxpYyB2aWV3U3RhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgIHB1YmxpYyBzaG93VGVhbVNlbGVjdG9yOiBib29sZWFuID0gdHJ1ZTtcbiAgIHB1YmxpYyBmYWN0b3JzOiBTZWxlY3RJdGVtW107XG5cbiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2csIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UsIEBJbmplY3QoVklFV1NUQVRFX1BST1ZJREVSKSBwcml2YXRlIHZpZXdNb2RlbFN0YXRlOiBWaWV3TW9kZWxTdGF0ZUJhc2U8SUFjdGlvblN0YXRlPiwgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0Jhcikge1xuICAgICAgc3VwZXIoc25hY2tCYXIpXG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgICAgdGhpcy5vd25lckxpc3QgPSB0aGlzLmFjdGlvblNlcnZpY2UuZ2V0T3duZXJPcHRpb25zKCk7XG4gICAgICB0aGlzLmludGVydmVudGlvblR5cGVMaXN0ID0gdGhpcy5hY3Rpb25TZXJ2aWNlLmdldFR5cGVPcHRpb25zKCk7XG4gICAgICB0aGlzLnN0YXRlTGlzdCA9IHRoaXMuYWN0aW9uU2VydmljZS5nZXRTdGF0ZU9wdGlvbnMoKTtcblxuICAgICAgdGhpcy52aWV3U3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnZpZXdNb2RlbFN0YXRlLmRhdGEuc3Vic2NyaWJlKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgaWYgKHN1Y2Nlc3MubG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZhY3RvcnMgPSB0aGlzLmdldEZhY3RvcnMoc3VjY2Vzcy5mYWN0b3JTY29yZXMubW9kZWxTdHJ1Y3R1cmUpO1xuICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVmZmVjdE9uTGlzdCA9IHN1Y2Nlc3MuZmFjdG9yU2NvcmVzLmZhY3RvclNjb3Jlcy5tYXAocCA9PiBuZXcgQWN0aW9uT3B0aW9uRHRvKHAua2V5LCBwLm5hbWUpKTtcblxuICAgICAgICAgICAgaWYgKHN1Y2Nlc3MudGVhbU1ldGFEYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgIHRoaXMudGVhbXMucHVzaChuZXcgQWN0aW9uT3B0aW9uRHRvKHN1Y2Nlc3MudGVhbU1ldGFEYXRhLnRlYW1LZXksIHN1Y2Nlc3MudGVhbU1ldGFEYXRhLm5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgdGhpcy50ZWFtcyA9IHN1Y2Nlc3MuZmFjdG9yU2NvcmVzLmNvbXBvc2l0aW9uLnBvaW50cy5wb2ludHMubWFwKHAgPT4gbmV3IEFjdGlvbk9wdGlvbkR0byhwLnB1YmxpY0tleSwgcC5uYW1lKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRlYW1zLmxlbmd0aCA9PSAxKSB7IHRoaXMucHJlZmlsbC50ZWFtS2V5ID0gdGhpcy50ZWFtc1swXS5rZXk7IH1cbiAgICAgICAgICAgIHRoaXMuc2hvd1RlYW1TZWxlY3RvciA9ICghdGhpcy5wcmVmaWxsLnRlYW1LZXkgfHwgdGhpcy5wcmVmaWxsLnRlYW1LZXkubGVuZ3RoID09IDApO1xuICAgICAgICAgICAgdGhpcy5hcHBseVByZWZpbGwoKTtcbiAgICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5hY3Rpb24gJiYgdGhpcy5hY3Rpb24ucHVibGljS2V5KSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudGVhbUtleS5zZXRWYWx1ZSh0aGlzLmFjdGlvbi50ZWFtLnB1YmxpY0tleSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucHVibGljS2V5LnNldFZhbHVlKHRoaXMuYWN0aW9uLnB1YmxpY0tleSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZGVzY3JpcHRpb24uc2V0VmFsdWUodGhpcy5hY3Rpb24uZGVzY3JpcHRpb24pO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnVybC5zZXRWYWx1ZSh0aGlzLmFjdGlvbi51cmwpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmV4cGVjdGVkSW1wYWN0T24uc2V0VmFsdWUodGhpcy5hY3Rpb24uZXhwZWN0ZWRJbXBhY3RPbik7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudHlwZS5zZXRWYWx1ZSh0aGlzLmFjdGlvbi50eXBlKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5vd25lci5zZXRWYWx1ZSh0aGlzLmFjdGlvbi5vd25lcik7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhdGUuc2V0VmFsdWUodGhpcy5hY3Rpb24uc3RhdGUpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmR1ZS5zZXRWYWx1ZSh0aGlzLmFjdGlvbi5kdWUpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnF1aWNrVGlwUHVibGljS2V5LnNldFZhbHVlKHRoaXMuYWN0aW9uLnF1aWNrVGlwUHVibGljS2V5KTtcbiAgICAgICAgIHRoaXMuc2hvd1RlYW1TZWxlY3RvciA9IGZhbHNlO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgYXN5bmMgb25TdWJtaXQoZm9ybURpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgeyByZXR1cm47IH1cblxuICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9scy5wdWJsaWNLZXkudmFsdWUpIHtcbiAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uU2VydmljZS51cGRhdGUodGhpcy5mb3JtLmNvbnRyb2xzLnRlYW1LZXkudmFsdWUsIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICBhd2FpdCB0aGlzLmFjdGlvblNlcnZpY2UuY3JlYXRlKHRoaXMuZm9ybS5jb250cm9scy50ZWFtS2V5LnZhbHVlLCB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlQWxsKCk7XG4gICAgICB0aGlzLnZpZXdNb2RlbFN0YXRlLnVwZGF0aW5nLm5leHQodHJ1ZSk7XG4gICB9XG5cbiAgIHB1YmxpYyBhc3luYyBkZWxldGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBpZiAod2luZG93LmNvbmZpcm0oXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaW50ZXJ2ZW50aW9uP1wiKSkge1xuICAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb25TZXJ2aWNlLmRlbGV0ZSh0aGlzLmZvcm0uY29udHJvbHMudGVhbUtleS52YWx1ZSwgdGhpcy5mb3JtLmNvbnRyb2xzLnB1YmxpY0tleS52YWx1ZSk7XG4gICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZUFsbCgpO1xuICAgICAgICAgdGhpcy52aWV3TW9kZWxTdGF0ZS51cGRhdGluZy5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgY2FuY2VsKCkge1xuICAgICAgdGhpcy5yZXNldEZvcm0obnVsbCk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZUFsbCgpO1xuICAgfVxuXG4gICBwcml2YXRlIHJlc2V0Rm9ybShmb3JtRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUpOiB2b2lkIHtcbiAgICAgIHRoaXMuc2hvd1RlYW1TZWxlY3RvciA9ICghdGhpcy5wcmVmaWxsLnRlYW1LZXkgfHwgdGhpcy5wcmVmaWxsLnRlYW1LZXkubGVuZ3RoID09IDApO1xuICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICB0aGlzLmFjdGlvbiA9IG51bGw7XG5cbiAgICAgIGlmIChmb3JtRGlyZWN0aXZlKSB7XG4gICAgICAgICBmb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhdGUuc2V0VmFsdWUoSW50ZXJ2ZW50aW9uU3RhdGVFbnVtLm9wZW4pO1xuICAgICAgdGhpcy5hcHBseVByZWZpbGwoKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBnZXRGYWN0b3JzKG1vZGVsOiBNb2RlbFN0cnVjdHVyZUR0byk6IFNlbGVjdEl0ZW1bXSB7XG4gICAgICBpZiAobW9kZWwgPT0gbnVsbCB8fCBtb2RlbC5kZWZpbml0aW9uID09IG51bGwgfHwgbW9kZWwuZGVmaW5pdGlvbi5mYWN0b3JzID09IG51bGwpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgIHZhciByZXN1bHQ6IFNlbGVjdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBmYWN0b3Igb2YgbW9kZWwuZGVmaW5pdGlvbi5mYWN0b3JzLmZpbHRlcihwID0+IHAucGFyZW50S2V5ID09IG51bGwpKSB7XG4gICAgICAgICByZXN1bHQucHVzaChuZXcgU2VsZWN0SXRlbShmYWN0b3IucHVibGljS2V5LCBmYWN0b3IubmFtZSwgZmFsc2UpKTtcblxuICAgICAgICAgZm9yICh2YXIgbG93ZXJEaW1lbnNpb24gb2YgZmFjdG9yLmxvd2VyKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChuZXcgU2VsZWN0SXRlbShsb3dlckRpbWVuc2lvbi5wdWJsaWNLZXksIGxvd2VyRGltZW5zaW9uLm5hbWUsIHRydWUpKTtcbiAgICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgIH1cblxuICAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICBwdWJsaWNLZXk6IFtcIlwiXSxcbiAgICAgICAgIHRlYW1LZXk6IFtcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgcXVpY2tUaXBQdWJsaWNLZXk6IFtcIlwiXSxcbiAgICAgICAgIGRlc2NyaXB0aW9uOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwMCldXSxcbiAgICAgICAgIHVybDogW1wiXCIsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg1MDApXV0sXG4gICAgICAgICBvd25lcjogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgc3RhdGU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHR5cGU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIGR1ZTogW1wiXCJdLFxuICAgICAgICAgZXhwZWN0ZWRJbXBhY3RPbjogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICB9KTtcbiAgIH1cblxuICAgcHJpdmF0ZSBhcHBseVByZWZpbGwoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5wcmVmaWxsKSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudGVhbUtleS5zZXRWYWx1ZSh0aGlzLnByZWZpbGwudGVhbUtleSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZGVzY3JpcHRpb24uc2V0VmFsdWUodGhpcy5wcmVmaWxsLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5leHBlY3RlZEltcGFjdE9uLnNldFZhbHVlKHRoaXMucHJlZmlsbC5leHBlY3RlZEltcGFjdE9uKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy50eXBlLnNldFZhbHVlKHRoaXMucHJlZmlsbC50eXBlKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5vd25lci5zZXRWYWx1ZSh0aGlzLnByZWZpbGwub3duZXIpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXRlLnNldFZhbHVlKHRoaXMucHJlZmlsbC5zdGF0ZSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudXJsLnNldFZhbHVlKHRoaXMucHJlZmlsbC51cmwpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnF1aWNrVGlwUHVibGljS2V5LnNldFZhbHVlKHRoaXMucHJlZmlsbC5xdWlja1RpcFB1YmxpY0tleSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgIHRoaXMucHJlZmlsbCA9IG5ldyBBY3Rpb25QcmVmaWxsRHRvKCk7XG4gICAgICAgICB0aGlzLnByZWZpbGwuZXhwZWN0ZWRJbXBhY3RPbiA9IFtdO1xuICAgICAgfVxuICAgfVxuXG4gICBuZ09uRGVzdHJveSgpIHtcbiAgICAgIGlmICh0aGlzLnZpZXdTdGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgdGhpcy52aWV3U3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdChmb3JtRGlyZWN0aXZlKVwiICNmb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgY2xhc3M9XCJtYW5hZ2UtYWN0aW9uLWZvcm1cIj5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiICpuZ0lmPVwic2hvd1RlYW1TZWxlY3RvclwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgIDxtYXQtbGFiZWw+V2hpY2ggdGVhbSBvd25zIHRoaXMgYWN0aW9uPzwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidGVhbUtleVwiIGlkPVwidGVhbUtleVwiPlxuICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IHRlYW0gb2YgdGVhbXNcIiBbdmFsdWVdPVwidGVhbS5rZXlcIj57e3RlYW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICA8bWF0LWxhYmVsPkVudGVyIHNob3J0IGRlc2NyaXB0aW9uPC9tYXQtbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiBpZD1cImRlc2NyaXB0aW9uXCIgcm93cz1cIjJcIiBtYXhsZW5ndGg9XCI1MDBcIj48L3RleHRhcmVhPlxuICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiICpuZ0lmPVwiIXByZWZpbGwuZXhwZWN0ZWRJbXBhY3RPbiB8fCBwcmVmaWxsLmV4cGVjdGVkSW1wYWN0T24ubGVuZ3RoID09IDBcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICA8bWF0LWxhYmVsPldoZXJlIGRvIHlvdSBleHBlY3QgaW1wcm92ZW1lbnQ/PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBtdWx0aXBsZSBmb3JtQ29udHJvbE5hbWU9XCJleHBlY3RlZEltcGFjdE9uXCIgaWQ9XCJleHBlY3RlZEltcGFjdE9uXCI+XG4gICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiBbbmdDbGFzc109XCJ7J2xvd2VyJyA6IGZhY3Rvci5sb3dlcn1cIiAqbmdGb3I9XCJsZXQgZmFjdG9yIG9mIGZhY3RvcnNcIiBbdmFsdWVdPVwiZmFjdG9yLnZhbHVlXCI+e3tmYWN0b3IubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiAqbmdJZj1cIiFwcmVmaWxsLm93bmVyXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgPG1hdC1sYWJlbD5XaG8gb3ducyB0aGlzIGFjdGlvbj88L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm93bmVyXCIgaWQ9XCJvd25lclwiPlxuICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IG93bmVyIG9mIG93bmVyTGlzdFwiIFt2YWx1ZV09XCJvd25lci5rZXlcIj57e293bmVyLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICA8L21hdC1mb3JtLWZpZWxkPlxuICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCIhcHJlZmlsbC50eXBlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgPG1hdC1sYWJlbD5XaGF0IGlzIHRoZSB0eXBlIG9mIGFjdGlvbj88L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInR5cGVcIiBpZD1cInR5cGVcIj5cbiAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpbnRlcnZlbnRpb25UeXBlIG9mIGludGVydmVudGlvblR5cGVMaXN0XCIgW3ZhbHVlXT1cImludGVydmVudGlvblR5cGUua2V5XCI+e3tpbnRlcnZlbnRpb25UeXBlLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICA8L21hdC1mb3JtLWZpZWxkPlxuICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCIhcHJlZmlsbC5zdGF0ZSB8fCBhY3Rpb25cIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICA8bWF0LWxhYmVsPldoYXQgaXMgdGhlIHN0YXRlIG9mIHRoaXMgYWN0aW9uPzwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic3RhdGVcIiBpZD1cInN0YXRlXCI+XG4gICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgc3RhdGUgb2Ygc3RhdGVMaXN0XCIgW3ZhbHVlXT1cInN0YXRlLmtleVwiPnt7c3RhdGUubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiAqbmdJZj1cIiFwcmVmaWxsLnVybCB8fCBwcmVmaWxsLnVybC5sZW5ndGggPT0gMFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgIDxtYXQtbGFiZWw+VXJsIGZvciBhZGRpdGlvbmFsIGRldGFpbHMgKGUuZy4gSklSQSBvciBUcmVsbG8pPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidXJsXCIgaWQ9XCJ1cmxcIiByb3dzPVwiMVwiIG1heGxlbmd0aD1cIjUwMFwiPlxuICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgIDxtYXQtbGFiZWw+V2hlbiBzaG91bGQgaXQgYmUgZG9uZT88L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJkdWVcIiBpZD1cImR1ZVwiPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gICA8L21hdC1mb3JtLWZpZWxkPlxuICAgPGRpdiBjbGFzcz1cInRvb2xiYXIgbGVmdHJpZ2h0XCI+XG4gICAgICA8ZGl2PlxuICAgICAgICAgPGEgY2xhc3M9XCJidXR0b24gYm9yZGVybGVzcyBkZWxldGVcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKG51bGwpO1wiIChjbGljayk9XCJkZWxldGUoKVwiIGlkPVwiZGVsZXRlXCIgKm5nSWY9XCJhY3Rpb25cIj48c3BhbiBjbGFzcz1cImljb24gcGgtdHJhc2hcIj48L3NwYW4+IGRlbGV0ZTwvYT5cbiAgICAgICAgIDxhIGNsYXNzPVwiYnV0dG9uIGJvcmRlcmxlc3MgY2FuY2VsXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZChudWxsKTtcIiAoY2xpY2spPVwiY2FuY2VsKClcIiBpZD1cImNhbmNlbFwiICpuZ0lmPVwiZm9ybS5kaXJ0eSB8fCBhY3Rpb25cIj48c3BhbiBjbGFzcz1cImljb24gcGgteC1jaXJjbGVcIj48L3NwYW4+IGNhbmNlbDwvYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgaWQ9XCJzdWJtaXRcIiB2YWx1ZT1cInNhdmVcIiAvPlxuICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=