@reusa/ngx-reusa-app-lib 0.0.732 → 0.1.731

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 (472) hide show
  1. package/{esm2020 → esm2022}/lib/annimations/app-animations.mjs +36 -36
  2. package/esm2022/lib/components/add-employer/add-employer.component.mjs +3027 -0
  3. package/esm2022/lib/components/add-participant/add-participant.component.mjs +394 -0
  4. package/esm2022/lib/components/add-payment/add-payment.component.mjs +187 -0
  5. package/esm2022/lib/components/address/address.component.mjs +487 -0
  6. package/esm2022/lib/components/bank-details/bank-details.component.mjs +276 -0
  7. package/esm2022/lib/components/captcha/captcha.component.mjs +181 -0
  8. package/esm2022/lib/components/card/card.component.mjs +55 -0
  9. package/esm2022/lib/components/contact-us/contact-us.component.mjs +970 -0
  10. package/esm2022/lib/components/content/content.component.mjs +61 -0
  11. package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +83 -0
  12. package/esm2022/lib/components/dashboard-card/dashboard-card.component.mjs +223 -0
  13. package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +292 -0
  14. package/esm2022/lib/components/disclosure/disclosure.component.mjs +60 -0
  15. package/esm2022/lib/components/dropdown/dropdown.component.mjs +1974 -0
  16. package/esm2022/lib/components/dropdown/dropdown.interface.mjs +2 -0
  17. package/esm2022/lib/components/email-update/email-update.component.mjs +283 -0
  18. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +794 -0
  19. package/esm2022/lib/components/error/error.component.mjs +86 -0
  20. package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +163 -0
  21. package/{esm2020 → esm2022}/lib/components/file-download/file-download.component.mjs +104 -104
  22. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +315 -0
  23. package/esm2022/lib/components/footer/footer.component.mjs +332 -0
  24. package/esm2022/lib/components/header/header.component.mjs +558 -0
  25. package/esm2022/lib/components/help/help.component.mjs +49 -0
  26. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +65 -0
  27. package/{esm2020 → esm2022}/lib/components/info/info.component.mjs +187 -188
  28. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +206 -0
  29. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +193 -0
  30. package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +43 -0
  31. package/esm2022/lib/components/mask/mask.component.mjs +48 -0
  32. package/esm2022/lib/components/menu/menu.component.mjs +423 -0
  33. package/esm2022/lib/components/mfa/mfa.component.mjs +444 -0
  34. package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +50 -0
  35. package/esm2022/lib/components/money-expect/money-expect.component.mjs +90 -0
  36. package/esm2022/lib/components/msg/msg.component.mjs +48 -0
  37. package/esm2022/lib/components/news/news.component.mjs +90 -0
  38. package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +213 -0
  39. package/esm2022/lib/components/page/page.component.mjs +136 -0
  40. package/esm2022/lib/components/profile/profile.component.mjs +177 -0
  41. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +63 -0
  42. package/esm2022/lib/components/questionnaire/AppValidators.mjs +487 -0
  43. package/{esm2020 → esm2022}/lib/components/questionnaire/FbConstants.mjs +7 -7
  44. package/{esm2020 → esm2022}/lib/components/questionnaire/SelectItem.mjs +1 -1
  45. package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +256 -0
  46. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +475 -0
  47. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +1094 -0
  48. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +1882 -0
  49. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +1263 -0
  50. package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +244 -0
  51. package/{esm2020 → esm2022}/lib/components/questionnaire/input-focus.directive.mjs +44 -44
  52. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +256 -0
  53. package/{esm2020 → esm2022}/lib/components/questionnaire/question-base.mjs +2 -2
  54. package/{esm2020 → esm2022}/lib/components/questionnaire/question-control.service.mjs +420 -419
  55. package/{esm2020 → esm2022}/lib/components/questionnaire/question.service.mjs +33 -33
  56. package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +262 -0
  57. package/{esm2020 → esm2022}/lib/components/read-more/read-more.component.mjs +67 -67
  58. package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +690 -0
  59. package/esm2022/lib/components/search-employer/search-employer.component.mjs +142 -0
  60. package/esm2022/lib/components/select/select.component.mjs +154 -0
  61. package/esm2022/lib/components/ssn/ssn.component.mjs +44 -0
  62. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +151 -0
  63. package/esm2022/lib/components/test/test.component.mjs +19 -0
  64. package/esm2022/lib/components/user-login/user-login.component.mjs +398 -0
  65. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +442 -0
  66. package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +307 -0
  67. package/{esm2020 → esm2022}/lib/directives/auto-focus/auto-focus.directive.mjs +31 -31
  68. package/{esm2020 → esm2022}/lib/directives/caps-lock.directive.mjs +38 -38
  69. package/{esm2020 → esm2022}/lib/directives/required-roles/required-roles.directive.mjs +30 -30
  70. package/{esm2020 → esm2022}/lib/enums/EmailStatusEnum.mjs +8 -8
  71. package/{esm2020 → esm2022}/lib/guards/auth.guard.mjs +138 -138
  72. package/esm2022/lib/guards/no-login/no-login.guard.mjs +21 -0
  73. package/{esm2020 → esm2022}/lib/interceptors/error-interceptor/http-error-interceptor.mjs +107 -107
  74. package/{esm2020 → esm2022}/lib/interceptors/header-interceptor/http-header.interceptor.mjs +99 -99
  75. package/{esm2020 → esm2022}/lib/models/AddressComponentModel.mjs +2 -2
  76. package/{esm2020 → esm2022}/lib/models/BankDetailsComponentModel.mjs +2 -2
  77. package/{esm2020 → esm2022}/lib/models/BankDetailsModel.mjs +3 -3
  78. package/{esm2020 → esm2022}/lib/models/CinRequalificationCriteriaModel.mjs +3 -3
  79. package/{esm2020 → esm2022}/lib/models/EmployerDetailSearchResult.mjs +5 -5
  80. package/{esm2020 → esm2022}/lib/models/ErrorModel.mjs +5 -5
  81. package/{esm2020 → esm2022}/lib/models/FileModel.mjs +1 -1
  82. package/{esm2020 → esm2022}/lib/models/LibConstants.mjs +119 -119
  83. package/{esm2020 → esm2022}/lib/models/NewsAndAnnouncementModel.mjs +2 -2
  84. package/{esm2020 → esm2022}/lib/models/NotificationModel.mjs +5 -5
  85. package/{esm2020 → esm2022}/lib/models/OtpAuthModel.mjs +2 -2
  86. package/{esm2020 → esm2022}/lib/models/PaymentComponentModel.mjs +2 -2
  87. package/esm2022/lib/models/RequalifyLiftPageModel.mjs +11 -0
  88. package/{esm2020 → esm2022}/lib/models/SsaVerificationModel.mjs +3 -3
  89. package/{esm2020 → esm2022}/lib/models/TrendModel.mjs +2 -2
  90. package/{esm2020 → esm2022}/lib/models/UserDetailsModel.mjs +2 -2
  91. package/{esm2020 → esm2022}/lib/models/UserModel.mjs +5 -5
  92. package/{esm2020 → esm2022}/lib/models/case/CaseAttachmentModel.mjs +3 -3
  93. package/{esm2020 → esm2022}/lib/models/claimant/ClaimantModel.mjs +2 -2
  94. package/{esm2020 → esm2022}/lib/models/claimant/JobResultsData.mjs +2 -2
  95. package/{esm2020 → esm2022}/lib/models/claimant/MatchingJobs.mjs +2 -2
  96. package/{esm2020 → esm2022}/lib/models/claimant/ResetPasswordModel.mjs +2 -2
  97. package/esm2022/lib/models/cmp/CaseCoreModel.mjs +3 -0
  98. package/{esm2020 → esm2022}/lib/models/cmp/ComplaintCategoryModel.mjs +3 -3
  99. package/{esm2020 → esm2022}/lib/models/cmp/ComplaintCategoryOutputModel.mjs +5 -5
  100. package/esm2022/lib/models/cmp/ContactUsModel.mjs +3 -0
  101. package/{esm2020 → esm2022}/lib/models/cmp/EmailTemplateModel.mjs +3 -3
  102. package/esm2022/lib/models/cmp/contactUsInqueryModel.mjs +7 -0
  103. package/{esm2020 → esm2022}/lib/models/cmp/messageRourceModel.mjs +3 -3
  104. package/esm2022/lib/models/dashboard-model.mjs +3 -0
  105. package/esm2022/lib/models/dependent.model.mjs +8 -0
  106. package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmpRequestModel.mjs +2 -2
  107. package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +7 -7
  108. package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +5 -5
  109. package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +2 -2
  110. package/esm2022/lib/models/questionnaire/ComboModel.mjs +337 -0
  111. package/{esm2020 → esm2022}/lib/models/questionnaire/ElementsModel.mjs +7 -7
  112. package/{esm2020 → esm2022}/lib/models/questionnaire/EmployerDetailSearchResult.mjs +2 -2
  113. package/{esm2020 → esm2022}/lib/models/questionnaire/EmployerWagesModel.mjs +3 -3
  114. package/{esm2020 → esm2022}/lib/models/questionnaire/FBConfigModel.mjs +5 -5
  115. package/{esm2020 → esm2022}/lib/models/questionnaire/KeyValueModel.mjs +2 -2
  116. package/{esm2020 → esm2022}/lib/models/questionnaire/LegalDiscaimarModel.mjs +2 -2
  117. package/{esm2020 → esm2022}/lib/models/questionnaire/LoaderModel.mjs +2 -2
  118. package/{esm2020 → esm2022}/lib/models/questionnaire/PollingStatusModel.mjs +3 -3
  119. package/{esm2020 → esm2022}/lib/models/questionnaire/QtrYearEmployerWageModel.mjs +2 -2
  120. package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireQueryModel.mjs +7 -7
  121. package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireReturnModel.mjs +10 -10
  122. package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireSaveModel.mjs +2 -2
  123. package/esm2022/lib/models/questionnaire/RequalifyLiftIssuesModel.mjs +3 -0
  124. package/{esm2020 → esm2022}/lib/models/questionnaire/ServiceActionResponseModel.mjs +3 -3
  125. package/esm2022/lib/models/questionnaire/StatusModel.mjs +6 -0
  126. package/{esm2020 → esm2022}/lib/models/questionnaire/SuccessPageElement.mjs +2 -2
  127. package/esm2022/lib/models/questionnaire/UI512AResponseModel.mjs +3 -0
  128. package/{esm2020 → esm2022}/lib/models/questionnaire/ValidationModel.mjs +2 -2
  129. package/esm2022/lib/ngx-reusa-app-lib.component.mjs +23 -0
  130. package/esm2022/lib/ngx-reusa-app-lib.module.mjs +402 -0
  131. package/{esm2020 → esm2022}/lib/ngx-reusa-app-lib.service.mjs +14 -14
  132. package/{esm2020 → esm2022}/lib/pages/BasePage.mjs +76 -76
  133. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +81 -0
  134. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +463 -0
  135. package/esm2022/lib/pages/common/landing/landing.component.mjs +208 -0
  136. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +244 -0
  137. package/esm2022/lib/pages/common/login/login.component.mjs +526 -0
  138. package/esm2022/lib/pages/common/not-found/not-found.page.mjs +24 -0
  139. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +306 -0
  140. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +61 -0
  141. package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +24 -0
  142. package/esm2022/lib/pages/popovers/language/language.page.mjs +61 -0
  143. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +204 -0
  144. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +129 -0
  145. package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +251 -0
  146. package/{esm2020 → esm2022}/lib/pipes/filter.pipe.mjs +30 -30
  147. package/{esm2020 → esm2022}/lib/pipes/mask/mask.email.pipe.mjs +23 -23
  148. package/{esm2020 → esm2022}/lib/pipes/proper-case/proper-case.pipe.mjs +27 -27
  149. package/{esm2020 → esm2022}/lib/pipes/translate/dynamic-translate.pipe.mjs +44 -44
  150. package/{esm2020 → esm2022}/lib/pipes/trust-html/trust-html.pipe.mjs +20 -20
  151. package/{esm2020 → esm2022}/lib/services/base-service.mjs +49 -49
  152. package/{esm2020 → esm2022}/lib/services/captcha/captcha.service.mjs +46 -46
  153. package/{esm2020 → esm2022}/lib/services/case-service/case.service.mjs +47 -47
  154. package/{esm2020 → esm2022}/lib/services/chatbot/chatbot.service.mjs +257 -257
  155. package/esm2022/lib/services/chatbot/script.const.mjs +42 -0
  156. package/{esm2020 → esm2022}/lib/services/claimant/claimant.service.mjs +31 -31
  157. package/esm2022/lib/services/claimant-context/claimant-context.service.mjs +48 -0
  158. package/{esm2020 → esm2022}/lib/services/claimant-service/claimant.service.mjs +47 -47
  159. package/{esm2020 → esm2022}/lib/services/claims/claims.service.mjs +99 -99
  160. package/{esm2020 → esm2022}/lib/services/cmp-service/cmp.service.mjs +84 -84
  161. package/{esm2020 → esm2022}/lib/services/dms-service/dms.service.mjs +60 -60
  162. package/{esm2020 → esm2022}/lib/services/fpjs/fingerprint.service.mjs +70 -70
  163. package/{esm2020 → esm2022}/lib/services/google-analytics/google-analytics.service.mjs +29 -29
  164. package/{esm2020 → esm2022}/lib/services/help/help.service.mjs +63 -63
  165. package/{esm2020 → esm2022}/lib/services/idle/idle.service.mjs +159 -159
  166. package/{esm2020 → esm2022}/lib/services/logger/logger.service.mjs +67 -67
  167. package/esm2022/lib/services/login/login.service.mjs +330 -0
  168. package/{esm2020 → esm2022}/lib/services/maintenance/maintenance.service.mjs +21 -21
  169. package/{esm2020 → esm2022}/lib/services/notification/notification.service.mjs +113 -113
  170. package/{esm2020 → esm2022}/lib/services/questionnaire/questionnaire.service.mjs +69 -69
  171. package/{esm2020 → esm2022}/lib/services/questionnaire/validation.service.mjs +59 -59
  172. package/{esm2020 → esm2022}/lib/services/security-service/security.service.mjs +35 -35
  173. package/{esm2020 → esm2022}/lib/services/tour/tour.service.mjs +60 -60
  174. package/{esm2020 → esm2022}/lib/services/util/util.service.mjs +424 -424
  175. package/esm2022/lib/validations/AppRegex.mjs +45 -0
  176. package/{esm2020 → esm2022}/lib/validations/AppValidators.mjs +165 -165
  177. package/{esm2020 → esm2022}/public-api.mjs +131 -131
  178. package/{esm2020 → esm2022}/reusa-ngx-reusa-app-lib.mjs +4 -4
  179. package/{fesm2020 → fesm2022}/reusa-ngx-reusa-app-lib.mjs +27966 -27877
  180. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -0
  181. package/index.d.ts +5 -5
  182. package/lib/annimations/app-animations.d.ts +3 -3
  183. package/lib/components/add-employer/add-employer.component.d.ts +276 -276
  184. package/lib/components/add-participant/add-participant.component.d.ts +45 -45
  185. package/lib/components/add-payment/add-payment.component.d.ts +33 -33
  186. package/lib/components/address/address.component.d.ts +68 -68
  187. package/lib/components/address/address.component.d.ts.map +1 -1
  188. package/lib/components/bank-details/bank-details.component.d.ts +39 -39
  189. package/lib/components/captcha/captcha.component.d.ts +44 -44
  190. package/lib/components/card/card.component.d.ts +11 -11
  191. package/lib/components/contact-us/contact-us.component.d.ts +105 -107
  192. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
  193. package/lib/components/content/content.component.d.ts +13 -13
  194. package/lib/components/correspondence-download/correspondence-download.component.d.ts +21 -21
  195. package/lib/components/dashboard-card/dashboard-card.component.d.ts +25 -25
  196. package/lib/components/dashboard-card/dashboard-card.component.d.ts.map +1 -1
  197. package/lib/components/dependent-grid/dependent-grid.component.d.ts +35 -35
  198. package/lib/components/disclosure/disclosure.component.d.ts +12 -12
  199. package/lib/components/dropdown/dropdown.component.d.ts +581 -207
  200. package/lib/components/dropdown/dropdown.component.d.ts.map +1 -1
  201. package/lib/components/dropdown/dropdown.interface.d.ts +155 -0
  202. package/lib/components/dropdown/dropdown.interface.d.ts.map +1 -0
  203. package/lib/components/email-update/email-update.component.d.ts +31 -31
  204. package/lib/components/employer-grid/employer-grid.component.d.ts +95 -94
  205. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  206. package/lib/components/error/error.component.d.ts +17 -17
  207. package/lib/components/fav-menu/fav-menu.component.d.ts +21 -21
  208. package/lib/components/file-download/file-download.component.d.ts +22 -22
  209. package/lib/components/file-uploader/file-uploader.component.d.ts +47 -47
  210. package/lib/components/footer/footer.component.d.ts +36 -36
  211. package/lib/components/header/header.component.d.ts +59 -58
  212. package/lib/components/header/header.component.d.ts.map +1 -1
  213. package/lib/components/help/help.component.d.ts +10 -10
  214. package/lib/components/idle-detector/idle-detector.component.d.ts +15 -15
  215. package/lib/components/info/info.component.d.ts +22 -22
  216. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +21 -21
  217. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +33 -33
  218. package/lib/components/maintenance-detector/maintenance-detector.component.d.ts +15 -15
  219. package/lib/components/mask/mask.component.d.ts +11 -11
  220. package/lib/components/menu/menu.component.d.ts +43 -43
  221. package/lib/components/mfa/mfa.component.d.ts +59 -59
  222. package/lib/components/mfa-popup/mfa-popup.component.d.ts +16 -16
  223. package/lib/components/money-expect/money-expect.component.d.ts +18 -18
  224. package/lib/components/msg/msg.component.d.ts +10 -10
  225. package/lib/components/news/news.component.d.ts +14 -14
  226. package/lib/components/overlay-info/overlay-info.component.d.ts +34 -34
  227. package/lib/components/page/page.component.d.ts +23 -23
  228. package/lib/components/profile/profile.component.d.ts +28 -28
  229. package/lib/components/profile-redirect/profile-redirect.component.d.ts +13 -13
  230. package/lib/components/questionnaire/AppValidators.d.ts +14 -14
  231. package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
  232. package/lib/components/questionnaire/FbConstants.d.ts +7 -7
  233. package/lib/components/questionnaire/SelectItem.d.ts +4 -4
  234. package/lib/components/questionnaire/account-success/account-success.page.d.ts +53 -53
  235. package/lib/components/questionnaire/common-success/common-success.page.d.ts +75 -75
  236. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  237. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts +46 -46
  238. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +82 -82
  239. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  240. package/lib/components/questionnaire/dynamic-form.component.d.ts +130 -130
  241. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  242. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +66 -64
  243. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
  244. package/lib/components/questionnaire/input-focus.directive.d.ts +11 -11
  245. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +38 -38
  246. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
  247. package/lib/components/questionnaire/question-base.d.ts +16 -16
  248. package/lib/components/questionnaire/question-control.service.d.ts +19 -19
  249. package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
  250. package/lib/components/questionnaire/question.service.d.ts +18 -18
  251. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +75 -74
  252. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
  253. package/lib/components/read-more/read-more.component.d.ts +14 -14
  254. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +67 -67
  255. package/lib/components/search-employer/search-employer.component.d.ts +37 -36
  256. package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
  257. package/lib/components/select/select.component.d.ts +55 -55
  258. package/lib/components/ssn/ssn.component.d.ts +11 -11
  259. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +22 -22
  260. package/lib/components/test/test.component.d.ts +8 -8
  261. package/lib/components/user-login/user-login.component.d.ts +48 -48
  262. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +59 -59
  263. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +45 -45
  264. package/lib/directives/auto-focus/auto-focus.directive.d.ts +12 -12
  265. package/lib/directives/caps-lock.directive.d.ts +11 -11
  266. package/lib/directives/required-roles/required-roles.directive.d.ts +14 -14
  267. package/lib/enums/EmailStatusEnum.d.ts +7 -7
  268. package/lib/guards/auth.guard.d.ts +28 -28
  269. package/lib/guards/auth.guard.d.ts.map +1 -1
  270. package/lib/guards/no-login/no-login.guard.d.ts +11 -11
  271. package/lib/guards/no-login/no-login.guard.d.ts.map +1 -1
  272. package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts +22 -22
  273. package/lib/interceptors/header-interceptor/http-header.interceptor.d.ts +21 -21
  274. package/lib/interceptors/header-interceptor/http-header.interceptor.d.ts.map +1 -1
  275. package/lib/models/AddressComponentModel.d.ts +12 -12
  276. package/lib/models/BankDetailsComponentModel.d.ts +11 -11
  277. package/lib/models/BankDetailsModel.d.ts +4 -4
  278. package/lib/models/CinRequalificationCriteriaModel.d.ts +10 -10
  279. package/lib/models/EmployerDetailSearchResult.d.ts +47 -47
  280. package/lib/models/ErrorModel.d.ts +6 -6
  281. package/lib/models/FileModel.d.ts +4 -4
  282. package/lib/models/LibConstants.d.ts +112 -112
  283. package/lib/models/NewsAndAnnouncementModel.d.ts +5 -5
  284. package/lib/models/NotificationModel.d.ts +10 -10
  285. package/lib/models/OtpAuthModel.d.ts +6 -6
  286. package/lib/models/PaymentComponentModel.d.ts +7 -7
  287. package/lib/models/RequalifyLiftPageModel.d.ts +11 -11
  288. package/lib/models/SsaVerificationModel.d.ts +8 -8
  289. package/lib/models/TrendModel.d.ts +13 -13
  290. package/lib/models/UserDetailsModel.d.ts +9 -9
  291. package/lib/models/UserModel.d.ts +46 -46
  292. package/lib/models/case/CaseAttachmentModel.d.ts +5 -5
  293. package/lib/models/claimant/ClaimantModel.d.ts +22 -22
  294. package/lib/models/claimant/JobResultsData.d.ts +7 -7
  295. package/lib/models/claimant/MatchingJobs.d.ts +12 -12
  296. package/lib/models/claimant/ResetPasswordModel.d.ts +8 -8
  297. package/lib/models/cmp/CaseCoreModel.d.ts +20 -20
  298. package/lib/models/cmp/ComplaintCategoryModel.d.ts +8 -8
  299. package/lib/models/cmp/ComplaintCategoryOutputModel.d.ts +5 -5
  300. package/lib/models/cmp/ContactUsModel.d.ts +22 -22
  301. package/lib/models/cmp/EmailTemplateModel.d.ts +6 -6
  302. package/lib/models/cmp/contactUsInqueryModel.d.ts +46 -46
  303. package/lib/models/cmp/messageRourceModel.d.ts +5 -5
  304. package/lib/models/dashboard-model.d.ts +43 -43
  305. package/lib/models/dependent.model.d.ts +11 -18
  306. package/lib/models/dependent.model.d.ts.map +1 -1
  307. package/lib/models/questionnaire/ClaimAppEmpRequestModel.d.ts +8 -8
  308. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +16 -16
  309. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +151 -151
  310. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +16 -16
  311. package/lib/models/questionnaire/ComboModel.d.ts +85 -85
  312. package/lib/models/questionnaire/ElementsModel.d.ts +68 -68
  313. package/lib/models/questionnaire/EmployerDetailSearchResult.d.ts +17 -17
  314. package/lib/models/questionnaire/EmployerWagesModel.d.ts +4 -4
  315. package/lib/models/questionnaire/FBConfigModel.d.ts +11 -11
  316. package/lib/models/questionnaire/KeyValueModel.d.ts +10 -10
  317. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +10 -10
  318. package/lib/models/questionnaire/LoaderModel.d.ts +4 -4
  319. package/lib/models/questionnaire/PollingStatusModel.d.ts +6 -6
  320. package/lib/models/questionnaire/QtrYearEmployerWageModel.d.ts +8 -8
  321. package/lib/models/questionnaire/QuestionnaireQueryModel.d.ts +23 -23
  322. package/lib/models/questionnaire/QuestionnaireReturnModel.d.ts +20 -20
  323. package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts +24 -24
  324. package/lib/models/questionnaire/RequalifyLiftIssuesModel.d.ts +13 -13
  325. package/lib/models/questionnaire/ServiceActionResponseModel.d.ts +6 -6
  326. package/lib/models/questionnaire/StatusModel.d.ts +15 -15
  327. package/lib/models/questionnaire/SuccessPageElement.d.ts +8 -8
  328. package/lib/models/questionnaire/UI512AResponseModel.d.ts +12 -12
  329. package/lib/models/questionnaire/ValidationModel.d.ts +17 -17
  330. package/lib/ngx-reusa-app-lib.component.d.ts +8 -8
  331. package/lib/ngx-reusa-app-lib.module.d.ts +148 -145
  332. package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
  333. package/lib/ngx-reusa-app-lib.service.d.ts +6 -6
  334. package/lib/pages/BasePage.d.ts +26 -26
  335. package/lib/pages/common/accessibility-policy/accessibility-policy.page.d.ts +11 -11
  336. package/lib/pages/common/change-password/change-password.page.d.ts +40 -40
  337. package/lib/pages/common/landing/landing.component.d.ts +24 -24
  338. package/lib/pages/common/landing2/landing2.component.d.ts +30 -30
  339. package/lib/pages/common/login/login.component.d.ts +64 -64
  340. package/lib/pages/common/not-found/not-found.page.d.ts +8 -8
  341. package/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.d.ts +11 -11
  342. package/lib/pages/common/security-policy/security-policy.page.d.ts +11 -11
  343. package/lib/pages/common/unauthorized/unauthorized.page.d.ts +8 -8
  344. package/lib/pages/popovers/language/language.page.d.ts +16 -16
  345. package/lib/pages/popovers/my-notifications/my-notifications.page.d.ts +21 -21
  346. package/lib/pages/popovers/my-profile/my-profile.page.d.ts +20 -20
  347. package/lib/pages/popovers/user-search/user-search.component.d.ts +31 -31
  348. package/lib/pipes/filter.pipe.d.ts +7 -7
  349. package/lib/pipes/mask/mask.email.pipe.d.ts +10 -10
  350. package/lib/pipes/proper-case/proper-case.pipe.d.ts +8 -8
  351. package/lib/pipes/translate/dynamic-translate.pipe.d.ts +10 -10
  352. package/lib/pipes/trust-html/trust-html.pipe.d.ts +10 -10
  353. package/lib/services/base-service.d.ts +92 -92
  354. package/lib/services/captcha/captcha.service.d.ts +15 -15
  355. package/lib/services/case-service/case.service.d.ts +19 -19
  356. package/lib/services/chatbot/chatbot.service.d.ts +60 -60
  357. package/lib/services/chatbot/script.const.d.ts +15 -15
  358. package/lib/services/claimant/claimant.service.d.ts +17 -17
  359. package/lib/services/claimant-context/claimant-context.service.d.ts +18 -18
  360. package/lib/services/claimant-context/claimant-context.service.d.ts.map +1 -1
  361. package/lib/services/claimant-service/claimant.service.d.ts +19 -19
  362. package/lib/services/claims/claims.service.d.ts +39 -39
  363. package/lib/services/cmp-service/cmp.service.d.ts +33 -33
  364. package/lib/services/dms-service/dms.service.d.ts +23 -23
  365. package/lib/services/fpjs/fingerprint.service.d.ts +18 -18
  366. package/lib/services/google-analytics/google-analytics.service.d.ts +8 -8
  367. package/lib/services/help/help.service.d.ts +25 -25
  368. package/lib/services/help/help.service.d.ts.map +1 -1
  369. package/lib/services/idle/idle.service.d.ts +43 -43
  370. package/lib/services/logger/logger.service.d.ts +31 -31
  371. package/lib/services/logger/logger.service.d.ts.map +1 -1
  372. package/lib/services/login/login.service.d.ts +75 -75
  373. package/lib/services/login/login.service.d.ts.map +1 -1
  374. package/lib/services/maintenance/maintenance.service.d.ts +15 -15
  375. package/lib/services/notification/notification.service.d.ts +38 -38
  376. package/lib/services/questionnaire/questionnaire.service.d.ts +35 -35
  377. package/lib/services/questionnaire/validation.service.d.ts +81 -81
  378. package/lib/services/security-service/security.service.d.ts +14 -14
  379. package/lib/services/tour/tour.service.d.ts +24 -24
  380. package/lib/services/util/util.service.d.ts +190 -190
  381. package/lib/validations/AppRegex.d.ts +43 -43
  382. package/lib/validations/AppValidators.d.ts +53 -53
  383. package/package.json +6 -11
  384. package/public-api.d.ts +121 -121
  385. package/esm2020/lib/components/add-employer/add-employer.component.mjs +0 -3099
  386. package/esm2020/lib/components/add-participant/add-participant.component.mjs +0 -396
  387. package/esm2020/lib/components/add-payment/add-payment.component.mjs +0 -186
  388. package/esm2020/lib/components/address/address.component.mjs +0 -480
  389. package/esm2020/lib/components/bank-details/bank-details.component.mjs +0 -275
  390. package/esm2020/lib/components/captcha/captcha.component.mjs +0 -180
  391. package/esm2020/lib/components/card/card.component.mjs +0 -54
  392. package/esm2020/lib/components/contact-us/contact-us.component.mjs +0 -1004
  393. package/esm2020/lib/components/content/content.component.mjs +0 -60
  394. package/esm2020/lib/components/correspondence-download/correspondence-download.component.mjs +0 -82
  395. package/esm2020/lib/components/dashboard-card/dashboard-card.component.mjs +0 -219
  396. package/esm2020/lib/components/dependent-grid/dependent-grid.component.mjs +0 -297
  397. package/esm2020/lib/components/disclosure/disclosure.component.mjs +0 -59
  398. package/esm2020/lib/components/dropdown/dropdown.component.mjs +0 -1552
  399. package/esm2020/lib/components/email-update/email-update.component.mjs +0 -287
  400. package/esm2020/lib/components/employer-grid/employer-grid.component.mjs +0 -800
  401. package/esm2020/lib/components/error/error.component.mjs +0 -85
  402. package/esm2020/lib/components/fav-menu/fav-menu.component.mjs +0 -163
  403. package/esm2020/lib/components/file-uploader/file-uploader.component.mjs +0 -317
  404. package/esm2020/lib/components/footer/footer.component.mjs +0 -337
  405. package/esm2020/lib/components/header/header.component.mjs +0 -566
  406. package/esm2020/lib/components/help/help.component.mjs +0 -48
  407. package/esm2020/lib/components/idle-detector/idle-detector.component.mjs +0 -64
  408. package/esm2020/lib/components/job-search-result-page/job-search-result-page.component.mjs +0 -209
  409. package/esm2020/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +0 -192
  410. package/esm2020/lib/components/maintenance-detector/maintenance-detector.component.mjs +0 -42
  411. package/esm2020/lib/components/mask/mask.component.mjs +0 -48
  412. package/esm2020/lib/components/menu/menu.component.mjs +0 -430
  413. package/esm2020/lib/components/mfa/mfa.component.mjs +0 -451
  414. package/esm2020/lib/components/mfa-popup/mfa-popup.component.mjs +0 -49
  415. package/esm2020/lib/components/money-expect/money-expect.component.mjs +0 -89
  416. package/esm2020/lib/components/msg/msg.component.mjs +0 -48
  417. package/esm2020/lib/components/news/news.component.mjs +0 -89
  418. package/esm2020/lib/components/overlay-info/overlay-info.component.mjs +0 -235
  419. package/esm2020/lib/components/page/page.component.mjs +0 -138
  420. package/esm2020/lib/components/profile/profile.component.mjs +0 -182
  421. package/esm2020/lib/components/profile-redirect/profile-redirect.component.mjs +0 -62
  422. package/esm2020/lib/components/questionnaire/AppValidators.mjs +0 -523
  423. package/esm2020/lib/components/questionnaire/account-success/account-success.page.mjs +0 -259
  424. package/esm2020/lib/components/questionnaire/common-success/common-success.page.mjs +0 -483
  425. package/esm2020/lib/components/questionnaire/dynamic-form-panel.component.mjs +0 -1137
  426. package/esm2020/lib/components/questionnaire/dynamic-form-question.component.mjs +0 -1948
  427. package/esm2020/lib/components/questionnaire/dynamic-form.component.mjs +0 -1257
  428. package/esm2020/lib/components/questionnaire/form-builder/form-builder.page.mjs +0 -240
  429. package/esm2020/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +0 -259
  430. package/esm2020/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +0 -260
  431. package/esm2020/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +0 -703
  432. package/esm2020/lib/components/search-employer/search-employer.component.mjs +0 -142
  433. package/esm2020/lib/components/select/select.component.mjs +0 -153
  434. package/esm2020/lib/components/ssn/ssn.component.mjs +0 -43
  435. package/esm2020/lib/components/ssn-reverify/ssn-reverify.component.mjs +0 -150
  436. package/esm2020/lib/components/test/test.component.mjs +0 -18
  437. package/esm2020/lib/components/user-login/user-login.component.mjs +0 -401
  438. package/esm2020/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +0 -445
  439. package/esm2020/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +0 -308
  440. package/esm2020/lib/guards/no-login/no-login.guard.mjs +0 -21
  441. package/esm2020/lib/models/RequalifyLiftPageModel.mjs +0 -11
  442. package/esm2020/lib/models/cmp/CaseCoreModel.mjs +0 -3
  443. package/esm2020/lib/models/cmp/ContactUsModel.mjs +0 -3
  444. package/esm2020/lib/models/cmp/contactUsInqueryModel.mjs +0 -7
  445. package/esm2020/lib/models/dashboard-model.mjs +0 -3
  446. package/esm2020/lib/models/dependent.model.mjs +0 -8
  447. package/esm2020/lib/models/questionnaire/ComboModel.mjs +0 -337
  448. package/esm2020/lib/models/questionnaire/RequalifyLiftIssuesModel.mjs +0 -3
  449. package/esm2020/lib/models/questionnaire/StatusModel.mjs +0 -6
  450. package/esm2020/lib/models/questionnaire/UI512AResponseModel.mjs +0 -3
  451. package/esm2020/lib/ngx-reusa-app-lib.component.mjs +0 -22
  452. package/esm2020/lib/ngx-reusa-app-lib.module.mjs +0 -390
  453. package/esm2020/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +0 -80
  454. package/esm2020/lib/pages/common/change-password/change-password.page.mjs +0 -477
  455. package/esm2020/lib/pages/common/landing/landing.component.mjs +0 -207
  456. package/esm2020/lib/pages/common/landing2/landing2.component.mjs +0 -244
  457. package/esm2020/lib/pages/common/login/login.component.mjs +0 -542
  458. package/esm2020/lib/pages/common/not-found/not-found.page.mjs +0 -23
  459. package/esm2020/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +0 -305
  460. package/esm2020/lib/pages/common/security-policy/security-policy.page.mjs +0 -60
  461. package/esm2020/lib/pages/common/unauthorized/unauthorized.page.mjs +0 -23
  462. package/esm2020/lib/pages/popovers/language/language.page.mjs +0 -60
  463. package/esm2020/lib/pages/popovers/my-notifications/my-notifications.page.mjs +0 -205
  464. package/esm2020/lib/pages/popovers/my-profile/my-profile.page.mjs +0 -129
  465. package/esm2020/lib/pages/popovers/user-search/user-search.component.mjs +0 -253
  466. package/esm2020/lib/services/chatbot/script.const.mjs +0 -42
  467. package/esm2020/lib/services/claimant-context/claimant-context.service.mjs +0 -47
  468. package/esm2020/lib/services/login/login.service.mjs +0 -330
  469. package/esm2020/lib/validations/AppRegex.mjs +0 -45
  470. package/fesm2015/reusa-ngx-reusa-app-lib.mjs +0 -30728
  471. package/fesm2015/reusa-ngx-reusa-app-lib.mjs.map +0 -1
  472. package/fesm2020/reusa-ngx-reusa-app-lib.mjs.map +0 -1
@@ -1,1257 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { QuestionControlService } from './question-control.service';
4
- import { AppValidators } from './AppValidators';
5
- import { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';
6
- import { ClaimAppEmployerDetailsModel } from '../../models/questionnaire/ClaimAppEmployerDetailsModel';
7
- import { BasePage } from '../../pages/BasePage';
8
- import { FbConstants } from './FbConstants';
9
- import { HttpParams } from '@angular/common/http';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "./question.service";
12
- import * as i2 from "../../services/questionnaire/questionnaire.service";
13
- import * as i3 from "@ionic/angular";
14
- import * as i4 from "./question-control.service";
15
- import * as i5 from "../../services/util/util.service";
16
- import * as i6 from "@ngx-translate/core";
17
- import * as i7 from "../../services/logger/logger.service";
18
- import * as i8 from "../../services/questionnaire/validation.service";
19
- import * as i9 from "@angular/router";
20
- import * as i10 from "@ionic/storage";
21
- import * as i11 from "../../services/login/login.service";
22
- import * as i12 from "../../services/captcha/captcha.service";
23
- import * as i13 from "@angular/common";
24
- import * as i14 from "@angular/forms";
25
- import * as i15 from "@angular/material/stepper";
26
- import * as i16 from "@angular/material/button";
27
- import * as i17 from "primeng/blockui";
28
- import * as i18 from "../mfa/mfa.component";
29
- import * as i19 from "./dynamic-form-question.component";
30
- import * as i20 from "./input-focus.directive";
31
- import * as i21 from "../../pipes/translate/dynamic-translate.pipe";
32
- import * as i22 from "../../pipes/trust-html/trust-html.pipe";
33
- const _c0 = ["mfa"];
34
- const _c1 = ["questionnaireForm"];
35
- const _c2 = ["matHorizontalStepper"];
36
- function DynamicFormComponent_div_2_ion_row_5_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "ion-row")(1, "ion-col", 12)(2, "div", 13);
38
- i0.ɵɵelement(3, "div", 14);
39
- i0.ɵɵpipe(4, "trustHtml");
40
- i0.ɵɵpipe(5, "dynamicTranslate");
41
- i0.ɵɵelementEnd()()();
42
- } if (rf & 2) {
43
- const ctx_r4 = i0.ɵɵnextContext(2);
44
- i0.ɵɵadvance(1);
45
- i0.ɵɵproperty("sizeXs", ctx_r4.sizeXs)("sizeSm", ctx_r4.sizeSm)("sizeMd", ctx_r4.sizeMd)("sizeLg", ctx_r4.sizeLg)("sizeXl", ctx_r4.sizeXl)("offsetXs", ctx_r4.offsetXs)("offsetSm", ctx_r4.offsetSm)("offsetMd", ctx_r4.offsetMd)("offsetLg", ctx_r4.offsetLg)("offsetXl", ctx_r4.offsetXl);
46
- i0.ɵɵadvance(2);
47
- i0.ɵɵproperty("innerHtml", i0.ɵɵpipeBind1(4, 12, i0.ɵɵpipeBind2(5, 14, (ctx_r4.questionNumber ? ctx_r4.questionNumber + " " : "") + ctx_r4.questions[0].pages[ctx_r4.activeIndex].name, ctx_r4.dynamicParam)), i0.ɵɵsanitizeHtml)("ngClass", ctx_r4.multiMode ? "fb-heading-followup" : "fb-heading");
48
- } }
49
- function DynamicFormComponent_div_2_ng_container_9_ng_container_1_ion_row_1_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "ion-row")(1, "div", 15);
51
- i0.ɵɵtext(2);
52
- i0.ɵɵelementEnd()();
53
- } if (rf & 2) {
54
- const element_r8 = i0.ɵɵnextContext(2).$implicit;
55
- i0.ɵɵadvance(2);
56
- i0.ɵɵtextInterpolate1(" ", element_r8.title, " ");
57
- } }
58
- function DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_ion_col_1_Template(rf, ctx) { if (rf & 1) {
59
- const _r18 = i0.ɵɵgetCurrentView();
60
- i0.ɵɵelementStart(0, "ion-col", 17)(1, "app-question", 18);
61
- i0.ɵɵlistener("onDynamicParamUpdate", function DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_ion_col_1_Template_app_question_onDynamicParamUpdate_1_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r17.updateDynamicParam($event)); });
62
- i0.ɵɵelementEnd()();
63
- } if (rf & 2) {
64
- const panelElement_r15 = i0.ɵɵnextContext().$implicit;
65
- const element_r8 = i0.ɵɵnextContext(2).$implicit;
66
- const ctx_r16 = i0.ɵɵnextContext(2);
67
- i0.ɵɵproperty("sizeXl", panelElement_r15.sizeXL ? panelElement_r15.sizeXL : 3)("sizeLg", panelElement_r15.sizeLG ? panelElement_r15.sizeLG : 3)("sizeSm", panelElement_r15.sizeSM ? panelElement_r15.sizeSM : 12)("sizeXs", panelElement_r15.sizeXS ? panelElement_r15.sizeXS : 12)("sizeMd", panelElement_r15.sizeMD ? panelElement_r15.sizeMD : 4)("ngClass", ctx_r16.shouldFitContent(element_r8.elements) ? "col-fit-content" : "");
68
- i0.ɵɵadvance(1);
69
- i0.ɵɵproperty("potentialIssueId", ctx_r16.potentialIssueId)("question", panelElement_r15)("form", ctx_r16.formGroupArray[ctx_r16.activeIndex])("forScreenQuestionnaire", ctx_r16.forScreenQuestionnaire)("dynamicParam", ctx_r16.dynamicParam);
70
- } }
71
- function DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelementContainerStart(0);
73
- i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_ion_col_1_Template, 2, 11, "ion-col", 16);
74
- i0.ɵɵelementContainerEnd();
75
- } if (rf & 2) {
76
- const panelElement_r15 = ctx.$implicit;
77
- const ctx_r13 = i0.ɵɵnextContext(4);
78
- i0.ɵɵadvance(1);
79
- i0.ɵɵproperty("ngIf", panelElement_r15.colElement === "COL1" && ctx_r13.visibleIf(panelElement_r15.visibleIf, panelElement_r15.name, ctx_r13.formGroupArray[ctx_r13.activeIndex], panelElement_r15));
80
- } }
81
- function DynamicFormComponent_div_2_ng_container_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelementContainerStart(0);
83
- i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_9_ng_container_1_ion_row_1_Template, 3, 1, "ion-row", 2);
84
- i0.ɵɵelementStart(2, "ion-row");
85
- i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_Template, 2, 1, "ng-container", 9);
86
- i0.ɵɵelementEnd();
87
- i0.ɵɵelementContainerEnd();
88
- } if (rf & 2) {
89
- const element_r8 = i0.ɵɵnextContext().$implicit;
90
- const ctx_r10 = i0.ɵɵnextContext(2);
91
- i0.ɵɵadvance(1);
92
- i0.ɵɵproperty("ngIf", ctx_r10.visibleIf(element_r8.visibleIf, "", ctx_r10.formGroupArray[ctx_r10.activeIndex], element_r8));
93
- i0.ɵɵadvance(2);
94
- i0.ɵɵproperty("ngForOf", element_r8.elements);
95
- } }
96
- function DynamicFormComponent_div_2_ng_container_9_ng_container_2_Template(rf, ctx) { if (rf & 1) {
97
- const _r23 = i0.ɵɵgetCurrentView();
98
- i0.ɵɵelementContainerStart(0);
99
- i0.ɵɵelementStart(1, "ion-row")(2, "ion-col", 19)(3, "app-question", 18);
100
- i0.ɵɵlistener("onDynamicParamUpdate", function DynamicFormComponent_div_2_ng_container_9_ng_container_2_Template_app_question_onDynamicParamUpdate_3_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r22.updateDynamicParam($event)); });
101
- i0.ɵɵelementEnd()()();
102
- i0.ɵɵelementContainerEnd();
103
- } if (rf & 2) {
104
- const element_r8 = i0.ɵɵnextContext().$implicit;
105
- const ctx_r11 = i0.ɵɵnextContext(2);
106
- i0.ɵɵadvance(2);
107
- i0.ɵɵproperty("sizeLg", element_r8.sizeLG > 0 ? element_r8.sizeLG : "")("sizeSm", element_r8.sizeSM)("sizeXs", element_r8.sizeXS)("sizeXl", element_r8.sizeXL > 0 ? element_r8.sizeXL : "")("sizeMd", element_r8.sizeMD > 0 ? element_r8.sizeMD : "");
108
- i0.ɵɵadvance(1);
109
- i0.ɵɵproperty("potentialIssueId", ctx_r11.potentialIssueId)("question", element_r8)("form", ctx_r11.formGroupArray[ctx_r11.activeIndex])("forScreenQuestionnaire", ctx_r11.forScreenQuestionnaire)("dynamicParam", ctx_r11.dynamicParam);
110
- } }
111
- function DynamicFormComponent_div_2_ng_container_9_Template(rf, ctx) { if (rf & 1) {
112
- i0.ɵɵelementContainerStart(0);
113
- i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_9_ng_container_1_Template, 4, 2, "ng-container", 2);
114
- i0.ɵɵtemplate(2, DynamicFormComponent_div_2_ng_container_9_ng_container_2_Template, 4, 10, "ng-container", 2);
115
- i0.ɵɵelementContainerEnd();
116
- } if (rf & 2) {
117
- const element_r8 = ctx.$implicit;
118
- const ctx_r5 = i0.ɵɵnextContext(2);
119
- i0.ɵɵadvance(1);
120
- i0.ɵɵproperty("ngIf", element_r8.type === "panel");
121
- i0.ɵɵadvance(1);
122
- i0.ɵɵproperty("ngIf", element_r8.type != "panel" && element_r8.type != "hidden" && ctx_r5.visibleIf(element_r8.visibleIf, element_r8.name, ctx_r5.formGroupArray[ctx_r5.activeIndex], element_r8));
123
- } }
124
- function DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_2_ion_col_1_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵelementStart(0, "ion-col", 21)(1, "div");
126
- i0.ɵɵelement(2, "panel-app", 22);
127
- i0.ɵɵelementEnd()();
128
- } if (rf & 2) {
129
- const panelElement_r29 = i0.ɵɵnextContext().$implicit;
130
- const ctx_r30 = i0.ɵɵnextContext(4);
131
- i0.ɵɵproperty("sizeSm", panelElement_r29.sizeSM)("sizeXs", panelElement_r29.sizeXS)("sizeLg", panelElement_r29.sizeLG > 0 ? panelElement_r29.sizeLG : "")("sizeXl", panelElement_r29.sizeXL > 0 ? panelElement_r29.sizeXL : "")("sizeMd", panelElement_r29.sizeMD > 0 ? panelElement_r29.sizeMD : "");
132
- i0.ɵɵadvance(2);
133
- i0.ɵɵproperty("question", panelElement_r29)("form", ctx_r30.formGroupArray[ctx_r30.activeIndex])("forScreenQuestionnaire", ctx_r30.forScreenQuestionnaire);
134
- } }
135
- function DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelementContainerStart(0);
137
- i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_2_ion_col_1_Template, 3, 8, "ion-col", 20);
138
- i0.ɵɵelementContainerEnd();
139
- } if (rf & 2) {
140
- const panelElement_r29 = ctx.$implicit;
141
- const ctx_r28 = i0.ɵɵnextContext(4);
142
- i0.ɵɵadvance(1);
143
- i0.ɵɵproperty("ngIf", panelElement_r29.colElement === "COL2" && ctx_r28.visibleIf(panelElement_r29.visibleIf, panelElement_r29.name, ctx_r28.formGroupArray[ctx_r28.activeIndex], panelElement_r29));
144
- } }
145
- function DynamicFormComponent_div_2_ng_container_12_ng_container_1_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵelementContainerStart(0);
147
- i0.ɵɵelementStart(1, "ion-row");
148
- i0.ɵɵtemplate(2, DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_2_Template, 2, 1, "ng-container", 9);
149
- i0.ɵɵelementEnd();
150
- i0.ɵɵelementContainerEnd();
151
- } if (rf & 2) {
152
- const element_r25 = i0.ɵɵnextContext().$implicit;
153
- i0.ɵɵadvance(2);
154
- i0.ɵɵproperty("ngForOf", element_r25.elements);
155
- } }
156
- function DynamicFormComponent_div_2_ng_container_12_Template(rf, ctx) { if (rf & 1) {
157
- i0.ɵɵelementContainerStart(0);
158
- i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_12_ng_container_1_Template, 3, 1, "ng-container", 2);
159
- i0.ɵɵelementContainerEnd();
160
- } if (rf & 2) {
161
- const element_r25 = ctx.$implicit;
162
- const ctx_r6 = i0.ɵɵnextContext(2);
163
- i0.ɵɵadvance(1);
164
- i0.ɵɵproperty("ngIf", ctx_r6.visibleIf(element_r25.visibleIf, "", ctx_r6.formGroupArray[ctx_r6.activeIndex], element_r25));
165
- } }
166
- function DynamicFormComponent_div_2_ion_footer_13_div_1_Template(rf, ctx) { if (rf & 1) {
167
- const _r38 = i0.ɵɵgetCurrentView();
168
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 26)(2, "div", 27)(3, "ion-button", 28);
169
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_1_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r37.cancelAction()); });
170
- i0.ɵɵtext(4, " Cancel ");
171
- i0.ɵɵelementEnd()();
172
- i0.ɵɵelementStart(5, "div", 29)(6, "ion-button", 30);
173
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_1_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r38); const ctx_r39 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r39.complete()); });
174
- i0.ɵɵtext(7, " Next ");
175
- i0.ɵɵelementEnd()()()();
176
- } }
177
- function DynamicFormComponent_div_2_ion_footer_13_div_2_Template(rf, ctx) { if (rf & 1) {
178
- const _r41 = i0.ɵɵgetCurrentView();
179
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 26)(2, "div", 27)(3, "ion-button", 28);
180
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_2_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r40.cancelAction()); });
181
- i0.ɵɵtext(4, " Cancel ");
182
- i0.ɵɵelementEnd()();
183
- i0.ɵɵelementStart(5, "div", 29)(6, "ion-button", 30);
184
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_2_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r41); const ctx_r42 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r42.complete()); });
185
- i0.ɵɵtext(7, " Done ");
186
- i0.ɵɵelementEnd()()()();
187
- } }
188
- function DynamicFormComponent_div_2_ion_footer_13_ion_grid_3_Template(rf, ctx) { if (rf & 1) {
189
- const _r44 = i0.ɵɵgetCurrentView();
190
- i0.ɵɵelementStart(0, "ion-grid")(1, "ion-row")(2, "ion-col", 31)(3, "ion-button", 28);
191
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_ion_grid_3_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r44); const ctx_r43 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r43.cancelPopUp()); });
192
- i0.ɵɵtext(4, " Cancel ");
193
- i0.ɵɵelementEnd()();
194
- i0.ɵɵelementStart(5, "ion-col", 32)(6, "ion-button", 30);
195
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_ion_grid_3_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r44); const ctx_r45 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r45.complete()); });
196
- i0.ɵɵtext(7, " Add ");
197
- i0.ɵɵelementEnd()()()();
198
- } }
199
- function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
200
- i0.ɵɵtext(0);
201
- } if (rf & 2) {
202
- const i_r49 = i0.ɵɵnextContext().index;
203
- const ctx_r50 = i0.ɵɵnextContext(4);
204
- i0.ɵɵtextInterpolate(ctx_r50.questions[0].pages[i_r49].navigationTitle);
205
- } }
206
- function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_3_Template(rf, ctx) { if (rf & 1) {
207
- const _r58 = i0.ɵɵgetCurrentView();
208
- i0.ɵɵelementStart(0, "div")(1, "button", 38);
209
- i0.ɵɵtext(2, "Back");
210
- i0.ɵɵelementEnd();
211
- i0.ɵɵelementStart(3, "button", 39);
212
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_3_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r58); const ctx_r57 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r57.nextPage(ctx_r57.activeIndex)); });
213
- i0.ɵɵtext(4, "Next");
214
- i0.ɵɵelementEnd()();
215
- } }
216
- function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template(rf, ctx) { if (rf & 1) {
217
- const _r60 = i0.ɵɵgetCurrentView();
218
- i0.ɵɵelementStart(0, "div")(1, "button", 40);
219
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r60); const ctx_r59 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r59.cancelAction()); });
220
- i0.ɵɵtext(2, "Back");
221
- i0.ɵɵelementEnd();
222
- i0.ɵɵelementStart(3, "button", 39);
223
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r60); const ctx_r61 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r61.complete()); });
224
- i0.ɵɵtext(4, "Next");
225
- i0.ɵɵelementEnd()();
226
- } }
227
- function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template(rf, ctx) { if (rf & 1) {
228
- const _r63 = i0.ɵɵgetCurrentView();
229
- i0.ɵɵelementStart(0, "div")(1, "button", 40);
230
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r63); const ctx_r62 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r62.prevPage(ctx_r62.activeIndex)); });
231
- i0.ɵɵtext(2, "Back");
232
- i0.ɵɵelementEnd();
233
- i0.ɵɵelementStart(3, "button", 39);
234
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r63); const ctx_r64 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r64.complete()); });
235
- i0.ɵɵtext(4, "Done");
236
- i0.ɵɵelementEnd()();
237
- } }
238
- function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template(rf, ctx) { if (rf & 1) {
239
- const _r66 = i0.ɵɵgetCurrentView();
240
- i0.ɵɵelementStart(0, "div")(1, "button", 41);
241
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r66); const ctx_r65 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r65.prevPage(ctx_r65.activeIndex)); });
242
- i0.ɵɵtext(2, "Back");
243
- i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(3, "button", 39);
245
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r66); const ctx_r67 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r67.nextPage(ctx_r67.activeIndex)); });
246
- i0.ɵɵtext(4, "Next");
247
- i0.ɵɵelementEnd()();
248
- } }
249
- function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template(rf, ctx) { if (rf & 1) {
250
- const _r69 = i0.ɵɵgetCurrentView();
251
- i0.ɵɵelementStart(0, "div")(1, "button", 41);
252
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r69); const ctx_r68 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r68.cancelAction()); });
253
- i0.ɵɵtext(2, "Back");
254
- i0.ɵɵelementEnd();
255
- i0.ɵɵelementStart(3, "button", 39);
256
- i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r69); const ctx_r70 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r70.nextPage(ctx_r70.activeIndex)); });
257
- i0.ɵɵtext(4, "Next");
258
- i0.ɵɵelementEnd()();
259
- } }
260
- function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_Template(rf, ctx) { if (rf & 1) {
261
- i0.ɵɵelementStart(0, "mat-step", 36)(1, "div");
262
- i0.ɵɵtemplate(2, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_ng_template_2_Template, 1, 1, "ng-template", 37);
263
- i0.ɵɵelementEnd();
264
- i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_3_Template, 5, 0, "div", 2);
265
- i0.ɵɵtemplate(4, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template, 5, 0, "div", 2);
266
- i0.ɵɵtemplate(5, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template, 5, 0, "div", 2);
267
- i0.ɵɵtemplate(6, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template, 5, 0, "div", 2);
268
- i0.ɵɵtemplate(7, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template, 5, 0, "div", 2);
269
- i0.ɵɵelementEnd();
270
- } if (rf & 2) {
271
- const i_r49 = ctx.index;
272
- const ctx_r47 = i0.ɵɵnextContext(4);
273
- i0.ɵɵproperty("stepControl", ctx_r47.formGroupArray[i_r49])("completed", i_r49 < ctx_r47.activeIndex);
274
- i0.ɵɵadvance(3);
275
- i0.ɵɵproperty("ngIf", !ctx_r47.questions[0].isFirstPageSubmit && !ctx_r47.isLast && ctx_r47.isFirst && !ctx_r47.isEnableBackButton);
276
- i0.ɵɵadvance(1);
277
- i0.ɵɵproperty("ngIf", ctx_r47.questions[0].isFirstPageSubmit);
278
- i0.ɵɵadvance(1);
279
- i0.ɵɵproperty("ngIf", !ctx_r47.questions[0].isFirstPageSubmit && ctx_r47.isLast && !ctx_r47.isFirst);
280
- i0.ɵɵadvance(1);
281
- i0.ɵɵproperty("ngIf", !ctx_r47.questions[0].isFirstPageSubmit && !ctx_r47.isLast && !ctx_r47.isFirst);
282
- i0.ɵɵadvance(1);
283
- i0.ɵɵproperty("ngIf", ctx_r47.isEnableBackButton && !ctx_r47.questions[0].isFirstPageSubmit && !ctx_r47.isLast && ctx_r47.isFirst);
284
- } }
285
- function DynamicFormComponent_div_2_ion_footer_13_div_4_Template(rf, ctx) { if (rf & 1) {
286
- const _r72 = i0.ɵɵgetCurrentView();
287
- i0.ɵɵelementStart(0, "div")(1, "mat-horizontal-stepper", 33, 34);
288
- i0.ɵɵlistener("selectionChange", function DynamicFormComponent_div_2_ion_footer_13_div_4_Template_mat_horizontal_stepper_selectionChange_1_listener($event) { i0.ɵɵrestoreView(_r72); const ctx_r71 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r71.stepChanged($event)); });
289
- i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_Template, 8, 7, "mat-step", 35);
290
- i0.ɵɵelementEnd()();
291
- } if (rf & 2) {
292
- const ctx_r36 = i0.ɵɵnextContext(3);
293
- i0.ɵɵadvance(1);
294
- i0.ɵɵproperty("selectedIndex", ctx_r36.questions[0].stepCounter);
295
- i0.ɵɵadvance(2);
296
- i0.ɵɵproperty("ngForOf", ctx_r36.questions[0].pages);
297
- } }
298
- function DynamicFormComponent_div_2_ion_footer_13_Template(rf, ctx) { if (rf & 1) {
299
- i0.ɵɵelementStart(0, "ion-footer", 23);
300
- i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ion_footer_13_div_1_Template, 8, 0, "div", 24);
301
- i0.ɵɵtemplate(2, DynamicFormComponent_div_2_ion_footer_13_div_2_Template, 8, 0, "div", 24);
302
- i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ion_footer_13_ion_grid_3_Template, 8, 0, "ion-grid", 2);
303
- i0.ɵɵtemplate(4, DynamicFormComponent_div_2_ion_footer_13_div_4_Template, 4, 2, "div", 2);
304
- i0.ɵɵelementEnd();
305
- } if (rf & 2) {
306
- const ctx_r7 = i0.ɵɵnextContext(2);
307
- i0.ɵɵproperty("ngClass", "footer-fixed");
308
- i0.ɵɵadvance(1);
309
- i0.ɵɵproperty("ngIf", ctx_r7.hideStep && ctx_r7.pageType != "POPUP" && ctx_r7.pageType != "SCREEN");
310
- i0.ɵɵadvance(1);
311
- i0.ɵɵproperty("ngIf", ctx_r7.hideStep && ctx_r7.pageType == "SCREEN" && ctx_r7.questions[0].isFirstPageSubmit);
312
- i0.ɵɵadvance(1);
313
- i0.ɵɵproperty("ngIf", ctx_r7.hideStep && ctx_r7.pageType === "POPUP");
314
- i0.ɵɵadvance(1);
315
- i0.ɵɵproperty("ngIf", !ctx_r7.hideStep);
316
- } }
317
- function DynamicFormComponent_div_2_Template(rf, ctx) { if (rf & 1) {
318
- const _r74 = i0.ɵɵgetCurrentView();
319
- i0.ɵɵelementStart(0, "div", null, 4)(2, "form", 5, 6);
320
- i0.ɵɵlistener("ngSubmit", function DynamicFormComponent_div_2_Template_form_ngSubmit_2_listener() { i0.ɵɵrestoreView(_r74); const ctx_r73 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r73.onSubmit()); });
321
- i0.ɵɵelementStart(4, "ion-grid");
322
- i0.ɵɵtemplate(5, DynamicFormComponent_div_2_ion_row_5_Template, 6, 17, "ion-row", 2);
323
- i0.ɵɵelementStart(6, "ion-row")(7, "ion-col", 7)(8, "div", 8);
324
- i0.ɵɵtemplate(9, DynamicFormComponent_div_2_ng_container_9_Template, 3, 2, "ng-container", 9);
325
- i0.ɵɵelementEnd()();
326
- i0.ɵɵelementStart(10, "ion-col", 10)(11, "div", 8);
327
- i0.ɵɵtemplate(12, DynamicFormComponent_div_2_ng_container_12_Template, 2, 1, "ng-container", 9);
328
- i0.ɵɵelementEnd()()()();
329
- i0.ɵɵtemplate(13, DynamicFormComponent_div_2_ion_footer_13_Template, 5, 5, "ion-footer", 11);
330
- i0.ɵɵelementEnd()();
331
- } if (rf & 2) {
332
- const ctx_r0 = i0.ɵɵnextContext();
333
- i0.ɵɵadvance(2);
334
- i0.ɵɵproperty("formGroup", ctx_r0.formGroupArray[ctx_r0.activeIndex])("ngClass", ctx_r0.multiMode ? "qe-form-multiple" : "qe-form");
335
- i0.ɵɵadvance(3);
336
- i0.ɵɵproperty("ngIf", ctx_r0.questions[0].pages[ctx_r0.activeIndex].name);
337
- i0.ɵɵadvance(2);
338
- i0.ɵɵproperty("sizeXs", ctx_r0.sizeXs)("sizeSm", ctx_r0.sizeSm)("sizeMd", ctx_r0.sizeMd)("sizeLg", ctx_r0.sizeLg)("sizeXl", ctx_r0.sizeXl)("offsetXs", ctx_r0.offsetXs)("offsetSm", ctx_r0.offsetSm)("offsetMd", ctx_r0.offsetMd)("offsetLg", ctx_r0.offsetLg)("offsetXl", ctx_r0.offsetXl);
339
- i0.ɵɵadvance(2);
340
- i0.ɵɵproperty("ngForOf", ctx_r0.questions[0].pages[ctx_r0.activeIndex].elements);
341
- i0.ɵɵadvance(1);
342
- i0.ɵɵproperty("sizeMd", ctx_r0.pageType === "POPUP" ? 6 : 12)("sizeLg", ctx_r0.pageType === "POPUP" ? 6 : 10)("sizeXl", ctx_r0.pageType === "POPUP" ? 5 : 10)("offsetXl", ctx_r0.pageType === "POPUP" ? 0 : 1)("offsetLg", ctx_r0.pageType === "POPUP" ? 0 : 1);
343
- i0.ɵɵadvance(2);
344
- i0.ɵɵproperty("ngForOf", ctx_r0.questions[0].pages[ctx_r0.activeIndex].elements);
345
- i0.ɵɵadvance(1);
346
- i0.ɵɵproperty("ngIf", !ctx_r0.hideFooter);
347
- } }
348
- function DynamicFormComponent_app_mfa_3_Template(rf, ctx) { if (rf & 1) {
349
- const _r77 = i0.ɵɵgetCurrentView();
350
- i0.ɵɵelementStart(0, "app-mfa", 42, 43);
351
- i0.ɵɵlistener("success", function DynamicFormComponent_app_mfa_3_Template_app_mfa_success_0_listener($event) { i0.ɵɵrestoreView(_r77); const ctx_r76 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r76.saveScreenQuestionnaire($event)); });
352
- i0.ɵɵelementEnd();
353
- } if (rf & 2) {
354
- const ctx_r1 = i0.ɵɵnextContext();
355
- i0.ɵɵproperty("user", ctx_r1.ls.getUser())("data", ctx_r1.mfaData)("requestCode", true)("mfaError", ctx_r1.mfaError)("hideButtons", true);
356
- } }
357
- export class DynamicFormComponent extends BasePage {
358
- constructor(qes, questionnaireService, navCtrl, qcs, util, translate, logger, validationService, el, activatedRoute, storage, ls, captcha) {
359
- super();
360
- this.qes = qes;
361
- this.questionnaireService = questionnaireService;
362
- this.navCtrl = navCtrl;
363
- this.qcs = qcs;
364
- this.util = util;
365
- this.translate = translate;
366
- this.logger = logger;
367
- this.validationService = validationService;
368
- this.el = el;
369
- this.activatedRoute = activatedRoute;
370
- this.storage = storage;
371
- this.ls = ls;
372
- this.captcha = captcha;
373
- this.focusables = ["pinputtext", "p-inputmask", "input", "select", "textarea", "p-calendar", "radio", "p-dropdown", "p-selectButton", "p-autocomplete", "p-password", "p-checkbox", "p-inputtextarea"];
374
- this.blockUi = false;
375
- this.showMfa = false;
376
- this.questions = [];
377
- this.hideFooter = false;
378
- this.multiMode = false; //when multiple forms are displayed one below the another
379
- /**
380
- * when autoSave is false, component will only emit the value of the form builer data which needs to be saved by the calling component
381
- * only applicable when pageType is not POPUP and JSON
382
- **/
383
- this.autoSave = true;
384
- this.mfaRequired = false;
385
- this.modelCancel = new EventEmitter();
386
- this.onComplete = new EventEmitter();
387
- this.onError = new EventEmitter();
388
- this.questionNumber = null;
389
- // form: FormGroup;
390
- this.formGroupArray = [];
391
- this.payLoad = '';
392
- this.items = [];
393
- this.isFirst = true;
394
- this.isLast = false;
395
- this.submitted = false;
396
- this.hideStep = false;
397
- this.identifier = "";
398
- this.activeIndex = 0;
399
- this.errorOccured = false;
400
- }
401
- /*This will be called whenever @Input 'formData' value is changed for this control*/
402
- ngOnChanges(changes) {
403
- if (changes.formData?.currentValue) {
404
- if (changes.formData.currentValue) {
405
- this.setFormValues(changes.formData.currentValue);
406
- }
407
- }
408
- if (changes.readOnlyFields?.currentValue) {
409
- for (let cntrlName of changes.readOnlyFields.currentValue) {
410
- if (this.formGroupArray[this.activeIndex]?.get(cntrlName)) {
411
- this.formGroupArray[this.activeIndex]?.get(cntrlName).disable();
412
- }
413
- }
414
- }
415
- else if (changes.readOnlyFields?.previousValue && changes.readOnlyFields.currentValue == null) {
416
- for (let cntrlName of changes.readOnlyFields.previousValue) {
417
- if (this.formGroupArray[this.activeIndex]?.get(cntrlName)) {
418
- this.formGroupArray[this.activeIndex]?.get(cntrlName).enable();
419
- }
420
- }
421
- }
422
- }
423
- setFormValues(data) {
424
- Object.keys(data)
425
- .forEach(key => {
426
- let question = this.getFormControlConfiguration(key);
427
- let valueToSet = data[key];
428
- if (question) {
429
- /** For dropdown form control, expecting to get data in form {value : "someValue", text: null}.
430
- * Based on the value attribute, option will be set on form control after reading it from choices
431
- * array.
432
- */
433
- if (valueToSet) {
434
- let choice = question.choices.filter(o => o.value == (valueToSet?.value ? valueToSet.value : valueToSet))[0];
435
- this.setValueInFormControl(key, choice);
436
- }
437
- }
438
- else {
439
- this.setValueInFormControl(key, valueToSet);
440
- }
441
- });
442
- }
443
- setValueInFormControl(name, value) {
444
- let control = this.formGroupArray[this.activeIndex]?.controls[name];
445
- if (control) {
446
- control.patchValue(value);
447
- }
448
- else {
449
- console.error('No form control present with name ', name);
450
- }
451
- }
452
- /* To get the dropdown element so that value from the choices can be read and set into the form control*/
453
- getFormControlConfiguration(name) {
454
- let filteredValues = this.questions[0].pages[this.activeIndex].elements.filter(q => q.name == name && q.type == 'dropdown');
455
- if (filteredValues && filteredValues.length > 0) {
456
- return filteredValues[0];
457
- }
458
- else {
459
- return null;
460
- }
461
- }
462
- setupLoaderModel() {
463
- if (this.loaderService) {
464
- let serviceUrls = this.loaderService.split(',');
465
- let serviceUrl = serviceUrls[this.activeIndex];
466
- if (serviceUrl.trim() != 'null') {
467
- this.blockUi = true;
468
- let serviceUrlValue = serviceUrl.trim();
469
- if (this.ls.isCsr()) {
470
- serviceUrlValue = serviceUrlValue;
471
- }
472
- const options = this.ls.isCsr() ? { params: new HttpParams().set('ssn', this.ssnForCSR) } : {};
473
- this.validationService
474
- .get(`${serviceUrlValue}`, options)
475
- .subscribe(res => {
476
- this.loaderModel = res;
477
- this.logger.debug("loader model = " + this.loaderModel);
478
- this.blockUi = false;
479
- if (this.loaderModel && this.loaderModel.disableControlNames) {
480
- this.readOnlyFields = this.loaderModel.disableControlNames;
481
- for (let cntrlName of this.readOnlyFields) {
482
- if (this.formGroupArray[this.activeIndex]?.get(cntrlName)) {
483
- this.formGroupArray[this.activeIndex]?.get(cntrlName).disable();
484
- }
485
- }
486
- }
487
- if (this.qcs.getData(this.activeIndex) != null) {
488
- this.formData = JSON.parse(this.qcs.getData(this.activeIndex));
489
- this.formGroupArray[this.activeIndex].patchValue(this.formData);
490
- }
491
- if (this.loaderModel && this.loaderModel.data) {
492
- this.formData = this.loaderModel.data;
493
- this.setFormValues(this.formData);
494
- }
495
- }, err => {
496
- this.util.hideLoader();
497
- this.util.errorHandler(err);
498
- this.blockUi = false;
499
- });
500
- }
501
- }
502
- else {
503
- console.log('loader model else section - dynamic form');
504
- console.log('loader model form data from dynamic = ', this.formData);
505
- if (this.qcs.getData(this.activeIndex) != null) {
506
- this.formData = JSON.parse(this.qcs.getData(this.activeIndex));
507
- this.formGroupArray[this.activeIndex].patchValue(this.formData);
508
- }
509
- console.log('data ===== ', this.data);
510
- if (this.data) {
511
- this.formData = this.data;
512
- this.setFormValues(this.formData);
513
- }
514
- }
515
- }
516
- ngOnInit() {
517
- this.logger.debug('Init method called from dynamic form', this.questions);
518
- this.logger.debug(' backButtonPage ', this.backButtonPage, ' nextButtonPage', this.nextButtonPage);
519
- if (!this.questions) {
520
- return;
521
- }
522
- if (this.questions[0].pages.length === 1) {
523
- this.hideStep = true;
524
- }
525
- else {
526
- this.isFirst = true;
527
- }
528
- let strKey = [];
529
- let paramMap = new Map();
530
- this.activatedRoute.queryParamMap.subscribe(params => {
531
- strKey = [] = params.keys;
532
- this.identifier = params.get('identifier');
533
- for (var i = 0; i < strKey.length; i++) {
534
- this.logger.debug('stringKey ', strKey[i], params.get(strKey[i]));
535
- paramMap.set(strKey[i], params.get(strKey[i]));
536
- }
537
- if (paramMap.get("key") != null) {
538
- this.ssnForCSR = atob(paramMap.get("key"));
539
- }
540
- });
541
- let counter = this.questions[0].stepCounter;
542
- this.activeIndex = counter ? counter : 0;
543
- //this.stepper
544
- for (let i = 0; i < this.questions[0].pages.length; i++) {
545
- let formGroup;
546
- this.logger.debug("Block statement execution no.", this.questions[0].pages.length);
547
- formGroup = this.qcs.toFormGroup(this.questions, i, paramMap);
548
- this.setValidation(i, formGroup);
549
- this.setValueSubscription(i, formGroup);
550
- this.setReadOnly(i, formGroup);
551
- var pages = this.questions[0].pages[i];
552
- this.logger.debug('pages', pages);
553
- let validatorFunctionList = [];
554
- if (pages.elements) {
555
- pages.elements.forEach((element) => {
556
- let contrlType = element.type;
557
- if (contrlType === 'panel') {
558
- //this.logger.debug('Inside If',element)
559
- element.elements.forEach(panelElement => {
560
- if (panelElement.requiredIf && panelElement.type != 'button' && panelElement.type != 'simpleLabel') {
561
- validatorFunctionList.push(AppValidators.setRequiredIfValidation(panelElement, this.qcs.getAllData()));
562
- }
563
- if (panelElement.validators) {
564
- let validatorList = panelElement.validators;
565
- //this.logger.debug("panel validation.111",panelElement);
566
- validatorList.forEach(validator => {
567
- if (validator.type === 'expression' && panelElement.inputType && panelElement.inputType === 'date') {
568
- this.logger.debug('Inside expression');
569
- validatorFunctionList.push(AppValidators.setDateValidation(panelElement, this.qcs.getAllData()));
570
- }
571
- if (validator.type === 'expression' && panelElement.inputType && panelElement.inputType === 'text'
572
- && panelElement.customTag && (panelElement.customTag === 'password' || panelElement.customTag === 'email' || panelElement.customTag === 'ssn')) {
573
- this.logger.debug('Inside expression');
574
- validatorFunctionList.push(AppValidators.setPasswordValidation(panelElement, this.qcs.getAllData()));
575
- }
576
- if (validator.type === 'customvalidation') {
577
- validatorFunctionList.push(AppValidators.customValidation(panelElement, validator, this.util.getState()));
578
- }
579
- });
580
- }
581
- });
582
- }
583
- else {
584
- //this.logger.debug('Inside else',element)
585
- if (element.requiredIf && element.type != 'button' && element.type != 'simpleLabel') {
586
- validatorFunctionList.push(AppValidators.setRequiredIfValidation(element, this.qcs.getAllData()));
587
- }
588
- if (element.validators) {
589
- let validatorList = element.validators;
590
- validatorList.forEach(validator => {
591
- if (validator.type === 'expression' && element.inputType && element.inputType === 'date') {
592
- this.logger.debug('Inside expression');
593
- validatorFunctionList.push(AppValidators.setDateValidation(element, this.qcs.getAllData()));
594
- }
595
- if (validator.type === 'customvalidation') {
596
- validatorFunctionList.push(AppValidators.customValidation(element, validator, this.util.getState()));
597
- }
598
- });
599
- }
600
- if (element.serviceType && element.serviceType === 'VALIDATE') {
601
- //validatorFunctionList.push(AppValidators.createValidator(this.validationService,element));
602
- }
603
- }
604
- formGroup.setValidators(validatorFunctionList);
605
- });
606
- }
607
- this.formGroupArray.push(formGroup);
608
- this.logger.debug("pages.qeData", pages.qeData);
609
- if (pages.qeData) {
610
- formGroup.patchValue(pages.qeData);
611
- }
612
- this.logger.debug("set values as per loader service = ", this.formData);
613
- if (this.formData && this.formData) {
614
- this.setFormValues(this.formData);
615
- }
616
- if (this.formReadOnly) {
617
- this.formGroupArray[i].disable();
618
- }
619
- if (this.readOnlyFields && this.readOnlyFields) {
620
- for (let cntrlName of this.readOnlyFields) {
621
- if (this.formGroupArray[i].get(cntrlName)) {
622
- this.formGroupArray[i].get(cntrlName).disable();
623
- }
624
- }
625
- }
626
- }
627
- this.setupLoaderModel();
628
- if (this.pageType === 'POPUP') {
629
- let model = new ClaimAppEmployerDetailsModel();
630
- model = this.data;
631
- this.formGroupArray[0].patchValue(model);
632
- this.logger.debug('this.formGroupArray after IF', this.formGroupArray);
633
- }
634
- if (this.pageType === 'Json' && this.formData) {
635
- this.formGroupArray[0].patchValue(this.formData);
636
- if (this.formReadOnly) {
637
- this.formGroupArray[0].disable();
638
- }
639
- else {
640
- for (let cntrlName of this.readOnlyFields) {
641
- if (this.formGroupArray[0].get(cntrlName)) {
642
- this.formGroupArray[0].get(cntrlName).disable();
643
- }
644
- }
645
- }
646
- }
647
- let currentQe = this.qes.searchBs.getValue();
648
- this.potentialIssueId = currentQe?.potentialIssueId;
649
- }
650
- setValueSubscription(pageIndex, formGroup) {
651
- var pages = this.questions[0].pages[pageIndex];
652
- if (pages.elements) {
653
- pages.elements.forEach(element => {
654
- let contrlType = element.type;
655
- if (element.subscribeValueOf) {
656
- formGroup.controls[element.subscribeValueOf]
657
- .valueChanges
658
- .subscribe(value => formGroup.controls[element.name].setValue(value));
659
- }
660
- if (contrlType === 'panel') {
661
- // this.logger.debug('Inside panelContrlType', element.elements)
662
- element.elements.forEach(panelElement => {
663
- if (panelElement.subscribeValueOf) {
664
- formGroup.controls[panelElement.subscribeValueOf].valueChanges.
665
- subscribe((change) => formGroup.controls[panelElement.name].setValue(change));
666
- }
667
- });
668
- }
669
- });
670
- }
671
- }
672
- setReadOnly(pageIndex, formGroup) {
673
- var pages = this.questions[0].pages[pageIndex];
674
- if (pages.elements) {
675
- pages.elements.forEach(element => {
676
- let contrlType = element.type;
677
- if (element.readonly) {
678
- formGroup.controls[element.name].disable();
679
- }
680
- if (contrlType === 'panel') {
681
- // this.logger.debug('Inside panelContrlType', element.elements)
682
- element.elements.forEach(panelElement => {
683
- if (element.readonly) {
684
- formGroup.controls[panelElement.name].disable();
685
- }
686
- });
687
- }
688
- });
689
- }
690
- }
691
- setValidation(pageIndex, formGroup) {
692
- var pages = this.questions[0].pages[pageIndex];
693
- //this.questions[0].pages.forEach(pages => {
694
- if (pages.elements) {
695
- pages.elements.forEach(element => {
696
- let contrlType = element.type;
697
- // this.logger.debug('element == ',element);
698
- if (contrlType === 'text' || contrlType === 'number') {
699
- this.setValidationForTextControl(element, formGroup);
700
- }
701
- if (contrlType === 'comment') {
702
- this.setValidationForCommentControl(element, formGroup);
703
- }
704
- if (contrlType === 'dropdown') {
705
- this.setValidationForDropDownControl(element, formGroup);
706
- }
707
- if (contrlType === 'radiogroup' || contrlType === 'autocomplete') {
708
- this.setValidationForRadioControl(element, formGroup);
709
- }
710
- if (contrlType === 'checkbox' || contrlType === 'singleselectcheckbox' || contrlType === 'simplecheckbox' || contrlType === 'multicheckbox') {
711
- // this.logger.debug('singleselectcheckbox called',element);
712
- this.setValidationForCheckBoxControl(element, formGroup);
713
- }
714
- if (contrlType === 'panel') {
715
- // this.logger.debug('Inside panelContrlType', element.elements)
716
- element.elements.forEach(panelElement => {
717
- let panelContrlType = panelElement.type;
718
- if (panelContrlType === 'dropdown') {
719
- // this.logger.debug('Inside panelContrlType', panelElement)
720
- this.setValidationForDropDownControl(panelElement, formGroup);
721
- }
722
- if (panelContrlType === 'text' || panelContrlType === 'number') {
723
- // this.logger.debug('panelContrlType', panelContrlType,'panelElement',panelElement)
724
- this.setValidationForTextControl(panelElement, formGroup);
725
- }
726
- if (panelContrlType === 'radiogroup' || panelContrlType === 'autocomplete') {
727
- this.setValidationForRadioControl(panelElement, formGroup);
728
- }
729
- if (panelContrlType === 'checkbox' || panelContrlType === 'singleselectcheckbox') {
730
- this.setValidationForCheckBoxControl(panelElement, formGroup);
731
- }
732
- });
733
- }
734
- });
735
- }
736
- //});
737
- }
738
- setValidationForCheckBoxControl(element, formGroup) {
739
- if (formGroup && formGroup.controls[element.name]) {
740
- let validatorFunctionList = [];
741
- if (element.isRequired && !element.requiredIf) {
742
- validatorFunctionList.push(Validators.required);
743
- }
744
- formGroup.controls[element.name].setValidators(validatorFunctionList);
745
- formGroup.controls[element.name].updateValueAndValidity();
746
- }
747
- }
748
- setValidationForRadioControl(element, formGroup) {
749
- if (formGroup && formGroup.controls[element.name]) {
750
- let validatorFunctionList = [];
751
- if (element.isRequired && !element.requiredIf) {
752
- validatorFunctionList.push(Validators.required);
753
- }
754
- formGroup.controls[element.name].setValidators(validatorFunctionList);
755
- formGroup.controls[element.name].updateValueAndValidity();
756
- }
757
- }
758
- setValidationForDropDownControl(element, formGroup) {
759
- if (formGroup && formGroup.controls[element.name]) {
760
- let validatorFunctionList = [];
761
- //Validation need to be check
762
- if (element.isRequired && !element.requiredIf) {
763
- //this.logger.debug('setValidationForDropDownControl', element.name)
764
- validatorFunctionList.push(Validators.required);
765
- }
766
- formGroup.controls[element.name].setValidators(validatorFunctionList);
767
- formGroup.controls[element.name].updateValueAndValidity();
768
- }
769
- //this.logger.debug(element.name,'formGroup.controls[element.name]',formGroup.controls[element.name]);
770
- }
771
- setValidationForCommentControl(element, formGroup) {
772
- if (formGroup && formGroup.controls[element.name]) {
773
- let validatorFunctionList = [];
774
- if (element.isRequired && !element.requiredIf) {
775
- validatorFunctionList.push(Validators.required);
776
- }
777
- formGroup.controls[element.name].setValidators(validatorFunctionList);
778
- formGroup.controls[element.name].updateValueAndValidity();
779
- }
780
- }
781
- setValidationForTextControl(element, formGroup) {
782
- // this.logger.debug('setValidationForTextControl',element);
783
- if (formGroup && formGroup.controls[element.name]) {
784
- let validatorFunctionList = [];
785
- if (element.isRequired && !element.requiredIf) {
786
- // this.logger.debug('setValidationForTextControl isRequired ',element);
787
- validatorFunctionList.push(Validators.required);
788
- }
789
- if (element.validators) {
790
- let validatorList = element.validators;
791
- validatorList.forEach(validator => {
792
- if (validator.type === 'expression' && element.inputType && element.inputType === 'date') {
793
- //this.logger.debug('Inside expression')
794
- // validatorFunctionList.push(AppValidators.setDateValidation(validator.expression, this.qcs.getAllData(), { dateComparision: true }));
795
- }
796
- if (validator.type === 'regex') {
797
- validatorFunctionList.push(Validators.pattern(validator.regex));
798
- }
799
- if (validator.type === 'text' && validator.minLength) {
800
- validatorFunctionList.push(Validators.minLength(validator.minLength));
801
- }
802
- if (validator.type === 'text' && validator.maxLength) {
803
- validatorFunctionList.push(Validators.maxLength(validator.maxLength));
804
- }
805
- if (validator.type === 'numeric') {
806
- validatorFunctionList.push(Validators.max(validator.maxValue));
807
- }
808
- });
809
- }
810
- formGroup.controls[element.name].setValidators(validatorFunctionList);
811
- formGroup.controls[element.name].updateValueAndValidity();
812
- }
813
- }
814
- nextPage(index) {
815
- this.logger.debug("next page called ---- ");
816
- let formGroup = this.formGroupArray[index];
817
- if (formGroup.invalid) {
818
- this.logger.debug('Inside if', formGroup);
819
- formGroup.markAllAsTouched();
820
- Object.values(formGroup.controls).forEach(control => {
821
- control.markAsDirty();
822
- });
823
- return;
824
- }
825
- this.qcs.setData(this.activeIndex, JSON.stringify(formGroup.getRawValue()));
826
- //Logic to save start
827
- let strIntoObj;
828
- this.qcs.getAllData().forEach(data => {
829
- strIntoObj = (data);
830
- this.payLoad = (this.payLoad + strIntoObj);
831
- });
832
- let saveData = {};
833
- let currentQe = this.qes.searchBs.getValue();
834
- let employeeData = this.qes.employeeBs.getValue();
835
- this.logger.debug('employeeData ', employeeData);
836
- if (this.forScreenQuestionnaire) {
837
- let dataArr = [];
838
- this.qcs.getAllData().forEach(data => {
839
- dataArr.push(data);
840
- });
841
- saveData.screenQuestionnaireData = dataArr;
842
- saveData.userType = currentQe.userType;
843
- saveData.flowFrom = currentQe.flowFrom;
844
- saveData.questionnaireIds = currentQe.questionnaireIds;
845
- saveData.empModel = employeeData;
846
- saveData.uuid = this.identifier; //currentQe.uuid;
847
- saveData.flowKey = currentQe.flowKey;
848
- saveData.activePageIndex = this.activeIndex;
849
- saveData.questionnaireId = currentQe.questionnaireId;
850
- this.logger.debug('save Data ', saveData);
851
- this.util.showLoader();
852
- this.questionnaireService
853
- .saveScreenQuestionnaire(saveData)
854
- .subscribe(async (res) => {
855
- this.util.hideLoader();
856
- if (res) {
857
- this.logger.debug(res);
858
- this.logger.debug("res uuid ==== ", res[FbConstants.uuid]);
859
- this.questionnaireService.uuid.next(res[FbConstants.uuid]);
860
- await this.storage.set(FbConstants.uuid, res[FbConstants.uuid]);
861
- if (res['redirectToEnd'] === true) {
862
- this.questionnaireService.successElement.next(res[FbConstants.successPageElement]);
863
- this.questionnaireService.waitForProcessing.next(res[FbConstants.waitForProcessing]);
864
- this.questionnaireService.pageToOpen.next(res[FbConstants.pageToOpen]);
865
- await this.storage.set(FbConstants.successPageElement, res[FbConstants.successPageElement]);
866
- await this.storage.set(FbConstants.waitForProcessing, res[FbConstants.waitForProcessing]);
867
- await this.storage.set(FbConstants.pageToOpen, res[FbConstants.pageToOpen]);
868
- this.navCtrl.navigateRoot(`/${this.nextButtonPage}?identifier=${res['uuid']}`);
869
- }
870
- else {
871
- this.activeIndex = index + 1;
872
- this.setPrevAndNextButton();
873
- }
874
- this.identifier = res['uuid'];
875
- }
876
- }, err => {
877
- this.qcs.sharedData.clear();
878
- this.errorOccured = true;
879
- this.util.hideLoader();
880
- this.util.errorHandler(err);
881
- });
882
- }
883
- }
884
- prevPage(index) {
885
- this.activeIndex = index - 1;
886
- this.setPrevAndNextButton();
887
- }
888
- visibleIf(strExp, elementName, formGroup, element) {
889
- if (!strExp) {
890
- return true;
891
- }
892
- let isVisible = false;
893
- if (strExp.includes('&&')) {
894
- let expr = strExp.split('&&');
895
- isVisible = AppValidators.calculateOperandValue(expr[0].trim(), formGroup) && AppValidators.calculateOperandValue(expr[1].trim(), formGroup);
896
- }
897
- if (strExp.includes('||')) {
898
- let expr = strExp.split('||');
899
- isVisible = AppValidators.calculateOperandValue(expr[0].trim(), formGroup) || AppValidators.calculateOperandValue(expr[1].trim(), formGroup);
900
- }
901
- if (!strExp.includes('||') && !strExp.includes('&&')) {
902
- isVisible = AppValidators.calculateOperandValue(strExp.trim(), formGroup);
903
- }
904
- if (isVisible) {
905
- return isVisible;
906
- }
907
- if (elementName && formGroup.controls[elementName] && !element.subscribeValueOf) {
908
- formGroup.controls[elementName].setValue(null);
909
- }
910
- return false;
911
- }
912
- complete() {
913
- this.logger.debug('complete method called =======');
914
- if (this.mfaRequired && this.showMfa && this.mfa) {
915
- this.mfa.submit();
916
- }
917
- let formGroup;
918
- this.logger.debug('Submit called from complete method in dynamic form');
919
- for (var i = 0; i < this.formGroupArray.length; i++) {
920
- formGroup = this.formGroupArray[i];
921
- this.logger.debug('Inside if', formGroup);
922
- if (formGroup.invalid) {
923
- this.logger.debug('Inside if', formGroup);
924
- formGroup.markAllAsTouched();
925
- Object.values(formGroup.controls).forEach(control => {
926
- //this.logger.debug('control', control);
927
- control.markAsDirty();
928
- });
929
- this.questionnaireForm.onSubmit(undefined);
930
- return;
931
- }
932
- }
933
- formGroup = this.formGroupArray[this.activeIndex];
934
- this.logger.debug('formGroup', formGroup);
935
- this.qcs.setData(this.activeIndex, JSON.stringify(formGroup.getRawValue()));
936
- let strIntoObj;
937
- this.payLoad = '';
938
- this.qcs.getAllData().forEach(data => {
939
- strIntoObj = (data);
940
- this.payLoad = (this.payLoad + strIntoObj);
941
- });
942
- let saveData = {};
943
- let currentQe = this.autoSave ? this.qes.searchBs.getValue() : this.queryModel;
944
- if (this.pageType === 'POPUP' || this.pageType === 'Json') {
945
- this.onComplete.emit(formGroup.getRawValue());
946
- this.qcs.sharedData.clear();
947
- return;
948
- }
949
- if (!this.forScreenQuestionnaire) {
950
- saveData.data = this.payLoad; //JSON.stringify(this.payLoad);
951
- saveData.potentialIssueId = currentQe.potentialIssueId;
952
- saveData.flowAbleAndAvailable = currentQe.flowAbleAndAvailable;
953
- saveData.userType = currentQe.userType;
954
- saveData.flowFrom = currentQe.flowFrom;
955
- saveData.flowWCAbleAndAvailable = currentQe.flowWCAbleAndAvailable;
956
- saveData.claimApplicationId = currentQe.claimApplicationId;
957
- saveData.questionnaireIds = currentQe.questionnaireIds;
958
- saveData.questionnaireId = currentQe.questionnaireId;
959
- saveData.activePageIndex = this.activeIndex;
960
- if (!this.autoSave) {
961
- saveData.autoSave = false;
962
- this.onComplete.emit(saveData);
963
- this.qcs.sharedData.clear();
964
- return;
965
- }
966
- this.blockFormUi();
967
- this.questionnaireService
968
- .saveQuestionnaire(saveData)
969
- .subscribe(res => {
970
- this.unblockFormUi();
971
- this.qes.searchModel.splice(this.qes.searchModel.findIndex(item => item.potentialIssueId == currentQe.potentialIssueId), 1);
972
- this.logger.debug('remaining elements', this.qes.searchModel);
973
- if (this.qes.searchModel.length > 0) {
974
- this.qes.searchBs.next(this.qes.searchModel[0]);
975
- }
976
- else {
977
- this.logger.debug('No Element Present');
978
- }
979
- this.onComplete.emit(res);
980
- }, err => {
981
- this.qcs.sharedData.clear();
982
- this.unblockFormUi();
983
- this.captcha.resetCaptcha();
984
- this.onError.emit(err);
985
- });
986
- }
987
- else {
988
- let dataArr = [];
989
- this.qcs.getAllData().forEach(data => {
990
- dataArr.push(data);
991
- });
992
- saveData.screenQuestionnaireData = dataArr;
993
- saveData.userType = currentQe.userType;
994
- saveData.flowFrom = currentQe.flowFrom;
995
- saveData.isScreenQuestionnaire = true;
996
- saveData.questionnaireIds = currentQe.questionnaireIds;
997
- saveData.uuid = this.identifier; //currentQe.uuid;
998
- saveData.flowKey = currentQe.flowKey;
999
- saveData.questionnaireId = currentQe.questionnaireId;
1000
- saveData.activePageIndex = this.activeIndex;
1001
- if (!this.autoSave) {
1002
- this.onComplete.emit(saveData);
1003
- this.qcs.sharedData.clear();
1004
- return;
1005
- }
1006
- if (this.mfaRequired) {
1007
- this.showMfa = true;
1008
- this.mfaData = saveData;
1009
- return;
1010
- }
1011
- this.saveScreenQuestionnaire(saveData);
1012
- }
1013
- }
1014
- saveScreenQuestionnaire(data) {
1015
- this.blockFormUi();
1016
- this.questionnaireService
1017
- .saveScreenQuestionnaire(data)
1018
- .subscribe(async (res) => {
1019
- if (res) {
1020
- this.questionnaireService.successElement.next(res[FbConstants.successPageElement]);
1021
- this.questionnaireService.uuid.next(res[FbConstants.uuid]);
1022
- this.questionnaireService.waitForProcessing.next(res[FbConstants.waitForProcessing]);
1023
- this.questionnaireService.waitCheckServiceUri.next(res[FbConstants.waitCheckServiceUri]);
1024
- this.questionnaireService.pageToOpen.next(res[FbConstants.pageToOpen]);
1025
- await this.storage.set(FbConstants.successPageElement, res[FbConstants.successPageElement]);
1026
- await this.storage.set(FbConstants.waitForProcessing, res[FbConstants.waitForProcessing]);
1027
- await this.storage.set(FbConstants.waitCheckServiceUri, res[FbConstants.waitCheckServiceUri]);
1028
- await this.storage.set(FbConstants.pageToOpen, res[FbConstants.pageToOpen]);
1029
- await this.storage.set(FbConstants.uuid, res[FbConstants.uuid]);
1030
- if (this.nextButtonPage) {
1031
- this.navCtrl.navigateRoot(`/${this.nextButtonPage}?identifier=${res['uuid']}`);
1032
- }
1033
- else {
1034
- this.onComplete.emit(data);
1035
- this.qcs.sharedData.clear();
1036
- }
1037
- }
1038
- this.unblockFormUi();
1039
- this.showMfa = false;
1040
- }, err => {
1041
- this.logger.debug('Error occured', err);
1042
- if (this.mfaRequired) {
1043
- this.mfaError = err;
1044
- }
1045
- else {
1046
- this.onError.emit(err);
1047
- }
1048
- this.unblockFormUi();
1049
- this.captcha.resetCaptcha();
1050
- });
1051
- }
1052
- setPrevAndNextButton() {
1053
- let compareValue = 0;
1054
- if (this.activeIndex > 0) {
1055
- compareValue = 1;
1056
- }
1057
- if (this.activeIndex > 0) {
1058
- this.isFirst = false;
1059
- }
1060
- if (this.activeIndex === 1 && this.isPreviousPageAPlaceholder(this.questions[0].pages[0])) {
1061
- this.isFirst = true;
1062
- this.isLast = false;
1063
- }
1064
- if (this.activeIndex === 0) {
1065
- this.isFirst = true;
1066
- this.isLast = false;
1067
- }
1068
- if (this.activeIndex === this.questions[0].pages.length - 1) {
1069
- this.isLast = true;
1070
- this.isFirst = false;
1071
- }
1072
- if (this.activeIndex < this.questions[0].pages.length - 1) {
1073
- this.isLast = false;
1074
- }
1075
- this.setupLoaderModel();
1076
- }
1077
- isPreviousPageAPlaceholder(page) {
1078
- this.logger.debug("isPlaceHolder = " + page["isPlaceHolder"]);
1079
- let placeHolder = page["isPlaceHolder"];
1080
- return placeHolder.valueOf();
1081
- }
1082
- stepChanged(event) {
1083
- if (event.previouslySelectedIndex > event.selectedIndex) {
1084
- event.previouslySelectedStep.interacted = false;
1085
- }
1086
- }
1087
- cancelAction() {
1088
- this.navCtrl.navigateRoot(this.backButtonPage);
1089
- }
1090
- cancelPopUp() {
1091
- let formGroup = this.formGroupArray[this.activeIndex];
1092
- this.modelCancel.emit(false);
1093
- this.logger.debug('cancelPopUp called', formGroup);
1094
- }
1095
- uploadFile(queue) {
1096
- this.logger.debug('queue111 ', queue);
1097
- //queue[0].size
1098
- }
1099
- blockFormUi() {
1100
- this.blockUi = true;
1101
- }
1102
- unblockFormUi() {
1103
- this.blockUi = false;
1104
- }
1105
- shouldFitContent(elements) {
1106
- let shouldFitContent = true;
1107
- elements.forEach(element => {
1108
- if (element.customTag == 'component') {
1109
- shouldFitContent = false;
1110
- }
1111
- });
1112
- return shouldFitContent;
1113
- }
1114
- updateDynamicParam(event) {
1115
- if (Array.isArray(event)) {
1116
- this.dynamicParam = [...event];
1117
- }
1118
- else {
1119
- this.dynamicParam = Object.assign({}, event);
1120
- }
1121
- }
1122
- onSubmit() {
1123
- this.focusOnSubmit();
1124
- }
1125
- focusOnSubmit() {
1126
- var element = this.el.nativeElement.querySelector(this.focusables.map(x => `${x}.ng-invalid`).join(","));
1127
- if (element) {
1128
- var primeNgComponent = element.querySelector(this.focusables.map(x => `${x}.p-component`).join(","));
1129
- if (primeNgComponent) {
1130
- primeNgComponent.focus();
1131
- }
1132
- else {
1133
- element.focus();
1134
- }
1135
- //Block for Radio Button Start
1136
- var primeNgComponent1 = element.querySelector("div.p-selectbutton");
1137
- if (primeNgComponent1) {
1138
- var primeNgComponent2 = primeNgComponent1.querySelector("div.p-component");
1139
- if (primeNgComponent2) {
1140
- primeNgComponent2.focus();
1141
- }
1142
- }
1143
- //Block for Radio Button End
1144
- }
1145
- }
1146
- }
1147
- DynamicFormComponent.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(i0.ɵɵdirectiveInject(i1.QuestionService), i0.ɵɵdirectiveInject(i2.QuestionnaireService), i0.ɵɵdirectiveInject(i3.NavController), i0.ɵɵdirectiveInject(i4.QuestionControlService), i0.ɵɵdirectiveInject(i5.UtilService), i0.ɵɵdirectiveInject(i6.TranslateService), i0.ɵɵdirectiveInject(i7.LoggerService), i0.ɵɵdirectiveInject(i8.ValidationService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i9.ActivatedRoute), i0.ɵɵdirectiveInject(i10.Storage), i0.ɵɵdirectiveInject(i11.LoginService), i0.ɵɵdirectiveInject(i12.CaptchaService)); };
1148
- DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["app-dynamic-form"]], viewQuery: function DynamicFormComponent_Query(rf, ctx) { if (rf & 1) {
1149
- i0.ɵɵviewQuery(_c0, 5);
1150
- i0.ɵɵviewQuery(_c1, 5);
1151
- i0.ɵɵviewQuery(_c2, 5);
1152
- } if (rf & 2) {
1153
- let _t;
1154
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.mfa = _t.first);
1155
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.questionnaireForm = _t.first);
1156
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.stepper = _t.first);
1157
- } }, inputs: { questions: "questions", forScreenQuestionnaire: "forScreenQuestionnaire", isEnableBackButton: "isEnableBackButton", backButtonPage: "backButtonPage", nextButtonPage: "nextButtonPage", pageType: "pageType", hideFooter: "hideFooter", multiMode: "multiMode", loaderService: "loaderService", autoSave: "autoSave", mfaRequired: "mfaRequired", data: "data", readOnlyFields: "readOnlyFields", formReadOnly: "formReadOnly", queryModel: "queryModel", dynamicParam: "dynamicParam", formData: "formData", questionNumber: "questionNumber", sizeXs: "sizeXs", sizeSm: "sizeSm", sizeMd: "sizeMd", sizeLg: "sizeLg", sizeXl: "sizeXl", offsetXs: "offsetXs", offsetSm: "offsetSm", offsetMd: "offsetMd", offsetLg: "offsetLg", offsetXl: "offsetXl" }, outputs: { modelCancel: "modelCancel", onComplete: "onComplete", onError: "onError" }, features: [i0.ɵɵProvidersFeature([QuestionControlService, {
1158
- provide: STEPPER_GLOBAL_OPTIONS,
1159
- useValue: {
1160
- showError: true,
1161
- displayDefaultIndicatorType: false
1162
- }
1163
- }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 4, vars: 3, consts: [[3, "blocked"], ["name", "crescent"], [4, "ngIf"], [3, "user", "data", "requestCode", "mfaError", "hideButtons", "success", 4, "ngIf"], ["formMainDiv", ""], ["focusInvalidInput", "", 3, "formGroup", "ngClass", "ngSubmit"], ["questionnaireForm", "ngForm"], ["size", "12", 1, "ion-padding-end", 2, "padding-left", "0px", 3, "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXs", "offsetSm", "offsetMd", "offsetLg", "offsetXl"], [1, "p-formgrid", 2, "padding-left", "8px"], [4, "ngFor", "ngForOf"], ["size", "12", "sizeSm", "12", "sizeXs", "12", 1, "ion-padding-start", 2, "padding-left", "0px", 3, "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg"], [3, "ngClass", 4, "ngIf"], ["size", "12", 3, "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXs", "offsetSm", "offsetMd", "offsetLg", "offsetXl"], [1, "p-formgrid"], [3, "innerHtml", "ngClass"], [1, "heading", 2, "padding-left", "0px"], ["size", "12", "style", "padding-left: 0px; max-width: fit-content;", 3, "sizeXl", "sizeLg", "sizeSm", "sizeXs", "sizeMd", "ngClass", 4, "ngIf"], ["size", "12", 2, "padding-left", "0px", "max-width", "fit-content", 3, "sizeXl", "sizeLg", "sizeSm", "sizeXs", "sizeMd", "ngClass"], [3, "potentialIssueId", "question", "form", "forScreenQuestionnaire", "dynamicParam", "onDynamicParamUpdate"], [2, "padding-left", "0px", 3, "sizeLg", "sizeSm", "sizeXs", "sizeXl", "sizeMd"], ["style", "padding-left: 0px;", 3, "sizeSm", "sizeXs", "sizeLg", "sizeXl", "sizeMd", 4, "ngIf"], [2, "padding-left", "0px", 3, "sizeSm", "sizeXs", "sizeLg", "sizeXl", "sizeMd"], [3, "question", "form", "forScreenQuestionnaire"], [3, "ngClass"], ["style", "text-align: right; background: white; margin-left: -5px;", 4, "ngIf"], [2, "text-align", "right", "background", "white", "margin-left", "-5px"], [1, "grid", "p-nogutter", 2, "height", "60px"], [1, "col-6", "ion-text-left", 2, "padding", "8px"], ["shape", "round", "fill", "outline", "type", "submit", 1, "button", 3, "click"], [1, "col-6", "ion-text-right", 2, "padding", "8px"], ["shape", "round", "fill", "solid", "type", "submit", 3, "click"], [1, "ion-text-left", "ion-padding-start"], [1, "ion-text-right", "ion-padding-end"], ["linear", "", "aria-busy", "true", 2, "text-align", "-webkit-center", 3, "selectedIndex", "selectionChange"], ["matHorizontalStepper", ""], [3, "stepControl", "completed", 4, "ngFor", "ngForOf"], [3, "stepControl", "completed"], ["matStepLabel", ""], ["editable", "false", "disabled", "", "mat-button", "", "matStepperPrevious", "", 1, "reverse"], ["mat-button", "", "matStepperNext", "", 1, "forward", 3, "click"], ["mat-button", "", "matStepperPrevious", "", 1, "reverse", 3, "click"], ["editable", "false", "mat-button", "", "matStepperPrevious", "", 1, "reverse", 3, "click"], [3, "user", "data", "requestCode", "mfaError", "hideButtons", "success"], ["mfa", ""]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
1164
- i0.ɵɵelementStart(0, "p-blockUI", 0);
1165
- i0.ɵɵelement(1, "ion-spinner", 1);
1166
- i0.ɵɵelementEnd();
1167
- i0.ɵɵtemplate(2, DynamicFormComponent_div_2_Template, 14, 21, "div", 2);
1168
- i0.ɵɵtemplate(3, DynamicFormComponent_app_mfa_3_Template, 2, 5, "app-mfa", 3);
1169
- } if (rf & 2) {
1170
- i0.ɵɵproperty("blocked", ctx.blockUi);
1171
- i0.ɵɵadvance(2);
1172
- i0.ɵɵproperty("ngIf", ctx.questions && ctx.questions[0] && !ctx.showMfa);
1173
- i0.ɵɵadvance(1);
1174
- i0.ɵɵproperty("ngIf", ctx.showMfa);
1175
- } }, dependencies: [i3.IonButton, i3.IonCol, i3.IonFooter, i3.IonGrid, i3.IonRow, i3.IonSpinner, i13.NgClass, i13.NgForOf, i13.NgIf, i14.ɵNgNoValidate, i14.NgControlStatusGroup, i14.FormGroupDirective, i15.MatStep, i15.MatStepLabel, i15.MatStepper, i15.MatStepperNext, i15.MatStepperPrevious, i16.MatButton, i17.BlockUI, i18.MfaComponent, i19.DynamicFormQuestionComponent, i20.InputFocus, i21.DynamicTranslatePipe, i22.TrustHtmlPipe], styles: ["[_nghost-%COMP%] .flex-container.ng-star-inserted{display:inline-flex!important}[_nghost-%COMP%] .p-fluid .p-buttonset{display:initial!important}[_nghost-%COMP%] form{margin-left:5px}[_nghost-%COMP%] .p-fluid .p-calendar{display:inline-flex!important;width:60%!important}[_nghost-%COMP%] .p-fluid .p-calendar .p-inputtext{width:100%!important}[_nghost-%COMP%] .p-fluid .p-autocomplete{display:inline-flex!important}.pageTitle[_ngcontent-%COMP%]{font-weight:600;position:absolute;right:48%}@media (max-width: 280px){[_nghost-%COMP%] span.start{font-size:18px;top:46px;position:relative}[_nghost-%COMP%] .mat-stepper-horizontal-line{display:none}[_nghost-%COMP%] .mat-horizontal-stepper-header{padding:0 28px!important}[_nghost-%COMP%] .mat-horizontal-stepper-header-container{left:46px!important}[_nghost-%COMP%] .mat-step-label{display:none!important}}@media (max-width: 576px){[_nghost-%COMP%] span.p-steps-title.ng-star-inserted{display:none!important}[_nghost-%COMP%] .p-steps.p-steps-item.p-menuitem-link.p-steps-title{display:none!important}[_nghost-%COMP%] .backinc{position:absolute;left:25px}[_nghost-%COMP%] .mat-step-label{display:none!important}[_nghost-%COMP%] .mat-step-label.mat-step-label-active{display:none!important;position:absolute;bottom:0;right:0}}@media (max-width: 576px) and (min-width: 576px){.pageTitle[_ngcontent-%COMP%]{display:none!important}.backinc[_ngcontent-%COMP%]{position:absolute;left:125px}}@media (max-width: 415px){[_nghost-%COMP%] .mat-horizontal-stepper-header-container{width:60%!important;left:46px!important}[_nghost-%COMP%] .reverse{left:5px!important}[_nghost-%COMP%] .forward{right:5px!important}}[_nghost-%COMP%] .mat-stepper-horizontal, [_nghost-%COMP%] .mat-stepper-vertical{height:70px}[_nghost-%COMP%] .mat-horizontal-stepper-header{padding:0 40px}[_nghost-%COMP%] .mat-step-label{min-width:120px;bottom:5px}[_nghost-%COMP%] .mat-step-header .mat-step-label.mat-step-label-active{bottom:5px}[_nghost-%COMP%] .mat-step-header:hover:hover{background-color:#fff!important}[_nghost-%COMP%] .mat-horizontal-stepper-header{pointer-events:none!important}[_nghost-%COMP%] .mat-step-header .mat-step-icon{background-color:#bdcad2;color:#bdcad2}[_nghost-%COMP%] .mat-step-header .mat-step-icon-selected{color:#fff;background-color:#4478aa}[_nghost-%COMP%] .mat-step-header .mat-step-label.mat-step-label-selected{color:#4478aa}[_nghost-%COMP%] mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:#4478aa!important;font-weight:700}[_nghost-%COMP%] .mat-step-header .mat-step-icon-selected mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:#fff!important;font-weight:700}[_nghost-%COMP%] button{background-color:#4478aa;color:#fff}[_nghost-%COMP%] .reverse{background-color:#fff;border:1px solid #4478aa;border-radius:30px;color:#4478aa;position:absolute;bottom:15px;left:40px;cursor:pointer}[_nghost-%COMP%] .mat-horizontal-stepper-header-container{width:50%;position:sticky;left:100px}[_nghost-%COMP%] .forward{position:absolute;right:40px;bottom:15px;border-radius:30px;cursor:pointer}[_nghost-%COMP%] .reset{position:absolute;right:50px;bottom:40px;border-radius:30px}[_nghost-%COMP%] .placeholder{visibility:hidden}[_nghost-%COMP%] .ui-state-complete .ui-steps-number{background-color:green!important}[_nghost-%COMP%] .p-steps .p-steps-item.p-highlight .p-steps-number{background-color:var(--ion-color-primary)!important;background-size:20px;color:var(--ion-color-primary)!important}[_nghost-%COMP%] .p-steps .p-steps-item .p-menuitem-link .p-steps-number{color:var(--ion-color-grey);background-size:15px;font-size:.857rem;min-width:1.714rem;height:1.714rem;line-height:1.714rem}[_nghost-%COMP%] div.p-formgrid.p-grid.ng-star-inserted{flex-wrap:wrap!important}[_nghost-%COMP%] .p-steps .p-steps-item.p-menuitem-link .p-steps-number{background-color:var(--ion-color-primary-shade)}[_nghost-%COMP%] ion-footer{bottom:0}[_nghost-%COMP%] .second{right:45%}[_nghost-%COMP%] .mat-button.mat-primary[disabled], [_nghost-%COMP%] .mat-button.mat-accent[disabled], [_nghost-%COMP%] .mat-button.mat-warn[disabled], [_nghost-%COMP%] .mat-button[disabled][disabled], [_nghost-%COMP%] .mat-icon-button.mat-primary[disabled], [_nghost-%COMP%] .mat-icon-button.mat-accent[disabled], [_nghost-%COMP%] .mat-icon-button.mat-warn[disabled], [_nghost-%COMP%] .mat-icon-button[disabled][disabled], [_nghost-%COMP%] .mat-stroked-button.mat-primary[disabled], [_nghost-%COMP%] .mat-stroked-button.mat-accent[disabled], [_nghost-%COMP%] .mat-stroked-button.mat-warn[disabled], [_nghost-%COMP%] .mat-stroked-button[disabled][disabled]{border:1px solid lightgray}[_nghost-%COMP%] h1, [_nghost-%COMP%] h2, [_nghost-%COMP%] h3, [_nghost-%COMP%] h4, [_nghost-%COMP%] h5, [_nghost-%COMP%] h6{margin-top:0!important;margin-bottom:0!important}.footer-fixed[_ngcontent-%COMP%]{position:fixed!important}.footer-sticky[_ngcontent-%COMP%]{position:sticky}@media (max-width: 768px){.footer-fixed[_ngcontent-%COMP%]{position:sticky}}.fb-heading[_ngcontent-%COMP%]{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:36px}.fb-heading-followup[_ngcontent-%COMP%]{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:24px}.qe-form[_ngcontent-%COMP%]{margin-bottom:96px}.qe-form-multiple[_ngcontent-%COMP%]{margin-bottom:8px}"] });
1176
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
1177
- type: Component,
1178
- args: [{ selector: 'app-dynamic-form', providers: [QuestionControlService, {
1179
- provide: STEPPER_GLOBAL_OPTIONS,
1180
- useValue: {
1181
- showError: true,
1182
- displayDefaultIndicatorType: false
1183
- }
1184
- }], template: "<p-blockUI [blocked]=\"blockUi\">\r\n <ion-spinner name=\"crescent\"></ion-spinner>\r\n</p-blockUI>\r\n<div *ngIf=\"questions && questions[0] && !showMfa\" #formMainDiv>\r\n <form focusInvalidInput [formGroup]=\"formGroupArray[activeIndex]\" [ngClass]=\"multiMode ? 'qe-form-multiple' : 'qe-form'\" (ngSubmit)=\"onSubmit()\" #questionnaireForm=\"ngForm\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"questions[0].pages[activeIndex].name\">\r\n <ion-col size=\"12\" [sizeXs]=\"sizeXs\" [sizeSm]=\"sizeSm\" [sizeMd]=\"sizeMd\" [sizeLg]=\"sizeLg\" [sizeXl]=\"sizeXl\"\r\n [offsetXs]=\"offsetXs\" [offsetSm]=\"offsetSm\" [offsetMd]=\"offsetMd\" [offsetLg]=\"offsetLg\" [offsetXl]=\"offsetXl\">\r\n <div class=\"p-formgrid\">\r\n <div [innerHtml]=\"(questionNumber ? questionNumber + ' ' : '') + questions[0].pages[activeIndex].name | dynamicTranslate:dynamicParam | trustHtml\" [ngClass]=\"multiMode ? 'fb-heading-followup' : 'fb-heading'\">\r\n </div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col style=\"padding-left: 0px;\" class=\"ion-padding-end\" size=\"12\" [sizeXs]=\"sizeXs\" [sizeSm]=\"sizeSm\"\r\n [sizeMd]=\"sizeMd\" [sizeLg]=\"sizeLg\" [sizeXl]=\"sizeXl\" [offsetXs]=\"offsetXs\" [offsetSm]=\"offsetSm\"\r\n [offsetMd]=\"offsetMd\" [offsetLg]=\"offsetLg\" [offsetXl]=\"offsetXl\">\r\n <div class=\"p-formgrid\" style=\"padding-left: 8px;\">\r\n <ng-container *ngFor=\"let element of questions[0].pages[activeIndex].elements; let i = index\">\r\n <ng-container *ngIf=\"element.type==='panel'\">\r\n\r\n <ion-row *ngIf=\"visibleIf(element.visibleIf,'',formGroupArray[activeIndex],element)\">\r\n <!-- <ion-col style=\"padding-left: 0px;\"> -->\r\n <div style=\"padding-left: 0px;\" class=\"heading\">\r\n {{element.title}}\r\n </div>\r\n <!-- </ion-col> -->\r\n </ion-row>\r\n <ion-row>\r\n <ng-container *ngFor=\"let panelElement of element.elements\">\r\n <ion-col size=\"12\" [sizeXl]=\"panelElement.sizeXL ? panelElement.sizeXL : 3\" style=\"padding-left: 0px; max-width: fit-content;\"\r\n [sizeLg]=\"panelElement.sizeLG ? panelElement.sizeLG : 3\" [sizeSm]=\"panelElement.sizeSM ? panelElement.sizeSM : 12\"\r\n [sizeXs]=\"panelElement.sizeXS ? panelElement.sizeXS : 12\" [sizeMd]=\"panelElement.sizeMD ? panelElement.sizeMD : 4\"\r\n *ngIf=\"panelElement.colElement==='COL1' && visibleIf(panelElement.visibleIf,panelElement.name,formGroupArray[activeIndex],panelElement)\"\r\n [ngClass]=\"shouldFitContent(element.elements) ? 'col-fit-content' : ''\">\r\n\r\n <app-question [potentialIssueId]=\"potentialIssueId\" [question]=\"panelElement\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\" (onDynamicParamUpdate)=\"updateDynamicParam($event)\" [dynamicParam]=\"dynamicParam\">\r\n </app-question>\r\n\r\n </ion-col>\r\n <!-- <ion-col size=\"1\" *ngIf=\"panelElement.description\" style=\"padding-top: 28px\">\r\n <app-overlay-info [overlayText]=\"panelElement.description\"></app-overlay-info>\r\n </ion-col> -->\r\n </ng-container>\r\n </ion-row>\r\n <!-- </ion-col>\r\n </ion-row> -->\r\n\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"element.type!='panel' && element.type!='hidden' && visibleIf(element.visibleIf,element.name,formGroupArray[activeIndex],element)\">\r\n <ion-row>\r\n <ion-col [sizeLg]=\"element.sizeLG>0?element.sizeLG:''\" [sizeSm]=\"element.sizeSM\"\r\n [sizeXs]=\"element.sizeXS\" [sizeXl]=\"element.sizeXL>0 ?element.sizeXL:''\"\r\n [sizeMd]=\"element.sizeMD>0 ?element.sizeMD:''\" style=\"padding-left: 0px;\">\r\n <!-- <div class=\"field\"> -->\r\n <app-question [potentialIssueId]=\"potentialIssueId\" [question]=\"element\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\" [dynamicParam]=\"dynamicParam\" \r\n (onDynamicParamUpdate)=\"updateDynamicParam($event)\" >\r\n </app-question>\r\n <!-- </div> -->\r\n </ion-col>\r\n <!-- <ion-col size=\"1\" *ngIf=\"element.description\" style=\"padding-top: 35px\">\r\n <app-overlay-info [overlayText]=\"element.description\"></app-overlay-info>\r\n </ion-col> -->\r\n </ion-row>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ion-col>\r\n <ion-col class=\"ion-padding-start\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" [sizeMd]=\"pageType==='POPUP'?6:12\"\r\n [sizeLg]=\"pageType==='POPUP'?6:10\" [sizeXl]=\"pageType==='POPUP'?5:10\" style=\"padding-left: 0px;\"\r\n [offsetXl]=\"pageType==='POPUP'?0:1\" [offsetLg]=\"pageType==='POPUP'?0:1\">\r\n <div class=\"p-formgrid\" style=\"padding-left: 8px;\">\r\n <ng-container *ngFor=\"let element of questions[0].pages[activeIndex].elements; let i = index\">\r\n <ng-container *ngIf=\" visibleIf(element.visibleIf,'',formGroupArray[activeIndex],element)\">\r\n <ion-row>\r\n <ng-container *ngFor=\"let panelElement of element.elements\">\r\n <ion-col [sizeSm]=\"panelElement.sizeSM\" [sizeXs]=\"panelElement.sizeXS\"\r\n [sizeLg]=\"panelElement.sizeLG>0?panelElement.sizeLG:''\"\r\n [sizeXl]=\"panelElement.sizeXL>0 ?panelElement.sizeXL:''\" style=\"padding-left: 0px;\"\r\n [sizeMd]=\"panelElement.sizeMD>0?panelElement.sizeMD:''\" *ngIf=\"panelElement.colElement==='COL2' &&\r\n visibleIf(panelElement.visibleIf,panelElement.name,formGroupArray[activeIndex],panelElement)\">\r\n <div>\r\n <panel-app [question]=\"panelElement\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\">\r\n </panel-app>\r\n </div>\r\n </ion-col>\r\n </ng-container>\r\n </ion-row>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n <ion-footer *ngIf=\"!hideFooter\"\r\n [ngClass]=\"'footer-fixed'\">\r\n <div style=\"text-align: right; background: white; margin-left: -5px;\"\r\n *ngIf=\"hideStep && pageType!='POPUP' && pageType!='SCREEN'\">\r\n <div class=\"grid p-nogutter\" style=\"height: 60px;\">\r\n <div class=\"col-6 ion-text-left\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelAction()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </div>\r\n <div class=\"col-6 ion-text-right\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Next\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"text-align: right; background: white; margin-left: -5px;\"\r\n *ngIf=\"hideStep && pageType=='SCREEN' && questions[0].isFirstPageSubmit\">\r\n <div class=\"grid p-nogutter\" style=\"height: 60px;\">\r\n <div class=\"col-6 ion-text-left\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelAction()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </div>\r\n <div class=\"col-6 ion-text-right\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Done\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n <ion-grid *ngIf=\"hideStep && pageType==='POPUP'\">\r\n <ion-row>\r\n <ion-col class=\"ion-text-left ion-padding-start\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelPopUp()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right ion-padding-end\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Add\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n\r\n\r\n\r\n <div *ngIf=\"!hideStep\">\r\n <mat-horizontal-stepper linear #matHorizontalStepper [selectedIndex]=\"questions[0].stepCounter\"\r\n (selectionChange)=\"stepChanged($event);\" style=\"text-align: -webkit-center;\" aria-busy=\"true\">\r\n <mat-step *ngFor=\"let element of questions[0].pages; let i = index;\" [stepControl]=\"formGroupArray[i]\"\r\n [completed]=\" i < activeIndex \">\r\n\r\n <div>\r\n <ng-template matStepLabel>{{questions[0].pages[i].navigationTitle}}</ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && !isLast && isFirst && !isEnableBackButton\">\r\n <button class=\"reverse\" editable=\"false\" disabled mat-button matStepperPrevious>Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"questions[0].isFirstPageSubmit\">\r\n <button class=\"reverse\" (click)=\"cancelAction()\" mat-button matStepperPrevious>Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"complete()\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && isLast && !isFirst\">\r\n <button class=\"reverse\" mat-button matStepperPrevious (click)=\"prevPage(activeIndex)\">Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"complete()\">Done</button>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && !isLast && !isFirst\">\r\n <button class=\"reverse\" editable=\"false\" mat-button matStepperPrevious \r\n (click)=\"prevPage(activeIndex)\">Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"isEnableBackButton && !questions[0].isFirstPageSubmit && !isLast && isFirst\">\r\n <button class=\"reverse\" editable=\"false\" mat-button matStepperPrevious \r\n (click)=\"cancelAction()\">Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n\r\n </mat-step>\r\n\r\n </mat-horizontal-stepper>\r\n\r\n </div>\r\n\r\n </ion-footer>\r\n </form>\r\n\r\n\r\n\r\n\r\n <!-- <div *ngIf=\"payLoad\" class=\"form-row\">\r\n <strong>Saved the following values</strong><br>{{payLoad}}\r\n </div> -->\r\n\r\n\r\n</div>\r\n\r\n<app-mfa #mfa [user]=\"ls.getUser()\" *ngIf=\"showMfa\" (success)=\"saveScreenQuestionnaire($event)\" [data]=\"mfaData\" [requestCode]=\"true\" \r\n [mfaError]=\"mfaError\" [hideButtons]=\"true\"></app-mfa>", styles: [":host ::ng-deep .flex-container.ng-star-inserted{display:inline-flex!important}:host ::ng-deep .p-fluid .p-buttonset{display:initial!important}:host ::ng-deep form{margin-left:5px}:host ::ng-deep .p-fluid .p-calendar{display:inline-flex!important;width:60%!important}:host ::ng-deep .p-fluid .p-calendar .p-inputtext{width:100%!important}:host ::ng-deep .p-fluid .p-autocomplete{display:inline-flex!important}.pageTitle{font-weight:600;position:absolute;right:48%}@media (max-width: 280px){:host ::ng-deep span.start{font-size:18px;top:46px;position:relative}:host ::ng-deep .mat-stepper-horizontal-line{display:none}:host ::ng-deep .mat-horizontal-stepper-header{padding:0 28px!important}:host ::ng-deep .mat-horizontal-stepper-header-container{left:46px!important}:host ::ng-deep .mat-step-label{display:none!important}}@media (max-width: 576px){:host ::ng-deep span.p-steps-title.ng-star-inserted{display:none!important}:host ::ng-deep .p-steps.p-steps-item.p-menuitem-link.p-steps-title{display:none!important}:host ::ng-deep .backinc{position:absolute;left:25px}:host ::ng-deep .mat-step-label{display:none!important}:host ::ng-deep .mat-step-label.mat-step-label-active{display:none!important;position:absolute;bottom:0;right:0}}@media (max-width: 576px) and (min-width: 576px){.pageTitle{display:none!important}.backinc{position:absolute;left:125px}}@media (max-width: 415px){:host ::ng-deep .mat-horizontal-stepper-header-container{width:60%!important;left:46px!important}:host ::ng-deep .reverse{left:5px!important}:host ::ng-deep .forward{right:5px!important}}:host ::ng-deep .mat-stepper-horizontal,:host ::ng-deep .mat-stepper-vertical{height:70px}:host ::ng-deep .mat-horizontal-stepper-header{padding:0 40px}:host ::ng-deep .mat-step-label{min-width:120px;bottom:5px}:host ::ng-deep .mat-step-header .mat-step-label.mat-step-label-active{bottom:5px}:host ::ng-deep .mat-step-header:hover:hover{background-color:#fff!important}:host ::ng-deep .mat-horizontal-stepper-header{pointer-events:none!important}:host ::ng-deep .mat-step-header .mat-step-icon{background-color:#bdcad2;color:#bdcad2}:host ::ng-deep .mat-step-header .mat-step-icon-selected{color:#fff;background-color:#4478aa}:host ::ng-deep .mat-step-header .mat-step-label.mat-step-label-selected{color:#4478aa}:host ::ng-deep mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:#4478aa!important;font-weight:700}:host ::ng-deep .mat-step-header .mat-step-icon-selected mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:#fff!important;font-weight:700}:host ::ng-deep button{background-color:#4478aa;color:#fff}:host ::ng-deep .reverse{background-color:#fff;border:1px solid #4478aa;border-radius:30px;color:#4478aa;position:absolute;bottom:15px;left:40px;cursor:pointer}:host ::ng-deep .mat-horizontal-stepper-header-container{width:50%;position:sticky;left:100px}:host ::ng-deep .forward{position:absolute;right:40px;bottom:15px;border-radius:30px;cursor:pointer}:host ::ng-deep .reset{position:absolute;right:50px;bottom:40px;border-radius:30px}:host ::ng-deep .placeholder{visibility:hidden}:host ::ng-deep .ui-state-complete .ui-steps-number{background-color:green!important}:host ::ng-deep .p-steps .p-steps-item.p-highlight .p-steps-number{background-color:var(--ion-color-primary)!important;background-size:20px;color:var(--ion-color-primary)!important}:host ::ng-deep .p-steps .p-steps-item .p-menuitem-link .p-steps-number{color:var(--ion-color-grey);background-size:15px;font-size:.857rem;min-width:1.714rem;height:1.714rem;line-height:1.714rem}:host ::ng-deep div.p-formgrid.p-grid.ng-star-inserted{flex-wrap:wrap!important}:host ::ng-deep .p-steps .p-steps-item.p-menuitem-link .p-steps-number{background-color:var(--ion-color-primary-shade)}:host ::ng-deep ion-footer{bottom:0}:host ::ng-deep .second{right:45%}:host ::ng-deep .mat-button.mat-primary[disabled],:host ::ng-deep .mat-button.mat-accent[disabled],:host ::ng-deep .mat-button.mat-warn[disabled],:host ::ng-deep .mat-button[disabled][disabled],:host ::ng-deep .mat-icon-button.mat-primary[disabled],:host ::ng-deep .mat-icon-button.mat-accent[disabled],:host ::ng-deep .mat-icon-button.mat-warn[disabled],:host ::ng-deep .mat-icon-button[disabled][disabled],:host ::ng-deep .mat-stroked-button.mat-primary[disabled],:host ::ng-deep .mat-stroked-button.mat-accent[disabled],:host ::ng-deep .mat-stroked-button.mat-warn[disabled],:host ::ng-deep .mat-stroked-button[disabled][disabled]{border:1px solid lightgray}:host ::ng-deep h1,:host ::ng-deep h2,:host ::ng-deep h3,:host ::ng-deep h4,:host ::ng-deep h5,:host ::ng-deep h6{margin-top:0!important;margin-bottom:0!important}.footer-fixed{position:fixed!important}.footer-sticky{position:sticky}@media (max-width: 768px){.footer-fixed{position:sticky}}.fb-heading{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:36px}.fb-heading-followup{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:24px}.qe-form{margin-bottom:96px}.qe-form-multiple{margin-bottom:8px}\n"] }]
1185
- }], function () { return [{ type: i1.QuestionService }, { type: i2.QuestionnaireService }, { type: i3.NavController }, { type: i4.QuestionControlService }, { type: i5.UtilService }, { type: i6.TranslateService }, { type: i7.LoggerService }, { type: i8.ValidationService }, { type: i0.ElementRef }, { type: i9.ActivatedRoute }, { type: i10.Storage }, { type: i11.LoginService }, { type: i12.CaptchaService }]; }, { mfa: [{
1186
- type: ViewChild,
1187
- args: ['mfa']
1188
- }], questionnaireForm: [{
1189
- type: ViewChild,
1190
- args: ['questionnaireForm', { static: false }]
1191
- }], questions: [{
1192
- type: Input
1193
- }], forScreenQuestionnaire: [{
1194
- type: Input
1195
- }], isEnableBackButton: [{
1196
- type: Input
1197
- }], backButtonPage: [{
1198
- type: Input
1199
- }], nextButtonPage: [{
1200
- type: Input
1201
- }], pageType: [{
1202
- type: Input
1203
- }], hideFooter: [{
1204
- type: Input
1205
- }], multiMode: [{
1206
- type: Input
1207
- }], loaderService: [{
1208
- type: Input
1209
- }], autoSave: [{
1210
- type: Input
1211
- }], mfaRequired: [{
1212
- type: Input
1213
- }], modelCancel: [{
1214
- type: Output
1215
- }], onComplete: [{
1216
- type: Output
1217
- }], onError: [{
1218
- type: Output
1219
- }], stepper: [{
1220
- type: ViewChild,
1221
- args: ['matHorizontalStepper']
1222
- }], data: [{
1223
- type: Input
1224
- }], readOnlyFields: [{
1225
- type: Input
1226
- }], formReadOnly: [{
1227
- type: Input
1228
- }], queryModel: [{
1229
- type: Input
1230
- }], dynamicParam: [{
1231
- type: Input
1232
- }], formData: [{
1233
- type: Input
1234
- }], questionNumber: [{
1235
- type: Input
1236
- }], sizeXs: [{
1237
- type: Input
1238
- }], sizeSm: [{
1239
- type: Input
1240
- }], sizeMd: [{
1241
- type: Input
1242
- }], sizeLg: [{
1243
- type: Input
1244
- }], sizeXl: [{
1245
- type: Input
1246
- }], offsetXs: [{
1247
- type: Input
1248
- }], offsetSm: [{
1249
- type: Input
1250
- }], offsetMd: [{
1251
- type: Input
1252
- }], offsetLg: [{
1253
- type: Input
1254
- }], offsetXl: [{
1255
- type: Input
1256
- }] }); })();
1257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2R5bmFtaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQW9CLFVBQVUsRUFBb0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJaEQsT0FBTyxFQUF5QixzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS3JGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBSXZHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUtoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3hCNUMsK0JBQXNELGtCQUFBLGNBQUE7SUFJaEQsMEJBQ007OztJQUNSLGlCQUFNLEVBQUEsRUFBQTs7O0lBTFcsZUFBaUI7SUFBakIsc0NBQWlCLHlCQUFBLHlCQUFBLHlCQUFBLHlCQUFBLDZCQUFBLDZCQUFBLDZCQUFB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QixTQUFTO21CQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFHLEtBQUssRUFBQztZQUt2QyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csc0JBQXNCO2tCQUE5QixLQUFLO1lBQ0csa0JBQWtCO2tCQUExQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBTUcsUUFBUTtrQkFBaEIsS0FBSztZQUNHLFdBQVc7a0JBQW5CLEtBQUs7WUFDSSxXQUFXO2tCQUFwQixNQUFNO1lBQ0csVUFBVTtrQkFBbkIsTUFBTTtZQUNHLE9BQU87a0JBQWhCLE1BQU07WUFDNEIsT0FBTztrQkFBekMsU0FBUzttQkFBQyxzQkFBc0I7WUFDeEIsSUFBSTtrQkFBWixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBRUcsTUFBTTtrQkFBZCxLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBRUcsUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4sIEZvcm1Db250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFF1ZXN0aW9uQmFzZSB9IGZyb20gJy4vcXVlc3Rpb24tYmFzZSc7XG5pbXBvcnQgeyBRdWVzdGlvbkNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9xdWVzdGlvbi1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4vQXBwVmFsaWRhdG9ycyc7XG5cbmltcG9ydCB7IFF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4vcXVlc3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3RlcHBlclNlbGVjdGlvbkV2ZW50LCBTVEVQUEVSX0dMT0JBTF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgTWF0U3RlcHBlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWVzdGlvbm5haXJlL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcbmltcG9ydCB7IENsYWltQXBwRW1wbG95ZXJEZXRhaWxzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9DbGFpbUFwcEVtcGxveWVyRGV0YWlsc01vZGVsJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVTYXZlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlU2F2ZU1vZGVsJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgS2V5VmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0tleVZhbHVlTW9kZWwnO1xuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gJ0Bpb25pYy9zdG9yYWdlJztcbmltcG9ydCB7IEZiQ29uc3RhbnRzIH0gZnJvbSAnLi9GYkNvbnN0YW50cyc7XG5pbXBvcnQgeyBFbGVtZW50c01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvRWxlbWVudHNNb2RlbCc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvRXJyb3JNb2RlbCc7XG5pbXBvcnQgeyBNZmFDb21wb25lbnQgfSBmcm9tICcuLi9tZmEvbWZhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0xvYWRlck1vZGVsJztcbmltcG9ydCB7IFNhdmVFZGl0YWJsZVJvdyB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FwdGNoYS9jYXB0Y2hhLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWR5bmFtaWMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbUXVlc3Rpb25Db250cm9sU2VydmljZSwge1xuICAgIHByb3ZpZGU6IFNURVBQRVJfR0xPQkFMX09QVElPTlMsXG4gICAgdXNlVmFsdWU6IHtcbiAgICAgIHNob3dFcnJvcjogdHJ1ZSxcbiAgICAgIGRpc3BsYXlEZWZhdWx0SW5kaWNhdG9yVHlwZTogZmFsc2VcbiAgICB9XG4gIH1dLFxufSlcblxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIFxuICBmb2N1c2FibGVzID0gW1wicGlucHV0dGV4dFwiLCBcInAtaW5wdXRtYXNrXCIsIFwiaW5wdXRcIiwgXCJzZWxlY3RcIiwgXCJ0ZXh0YXJlYVwiLCBcInAtY2FsZW5kYXJcIiwgXCJyYWRpb1wiLCBcInAtZHJvcGRvd25cIiwgXCJwLXNlbGVjdEJ1dHRvblwiLCBcInAtYXV0b2NvbXBsZXRlXCIsIFwicC1wYXNzd29yZFwiLFwicC1jaGVja2JveFwiLCBcInAtaW5wdXR0ZXh0YXJlYVwiXTtcblxuICBAVmlld0NoaWxkKCdtZmEnKSBtZmE6IE1mYUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdxdWVzdGlvbm5haXJlRm9ybScsIHtzdGF0aWMgOiBmYWxzZX0pIFxuICBwdWJsaWMgcXVlc3Rpb25uYWlyZUZvcm06IE5nRm9ybTtcbiAgcHVibGljIHBvdGVudGlhbElzc3VlSWQ6IG51bWJlcjtcbiAgcHVibGljIGJsb2NrVWkgPSBmYWxzZTtcbiAgcHVibGljIHNob3dNZmEgPSBmYWxzZTtcbiAgQElucHV0KCkgcXVlc3Rpb25zOiBRdWVzdGlvbkJhc2U8c3RyaW5nPltdID0gW107XG4gIEBJbnB1dCgpIGZvclNjcmVlblF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9uQmFzZTxib29sZWFuPjtcbiAgQElucHV0KCkgaXNFbmFibGVCYWNrQnV0dG9uOkJvb2xlYW47XG4gIEBJbnB1dCgpIGJhY2tCdXR0b25QYWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5leHRCdXR0b25QYWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBhZ2VUeXBlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVGb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlNb2RlOiBib29sZWFuID0gZmFsc2U7IC8vd2hlbiBtdWx0aXBsZSBmb3JtcyBhcmUgZGlzcGxheWVkIG9uZSBiZWxvdyB0aGUgYW5vdGhlclxuICBASW5wdXQoKSBsb2FkZXJTZXJ2aWNlOnN0cmluZztcbiAgcHVibGljIGxvYWRlck1vZGVsIDogTG9hZGVyTW9kZWw7XG4gIC8qKlxuICAgKiB3aGVuIGF1dG9TYXZlIGlzIGZhbHNlLCBjb21wb25lbnQgd2lsbCBvbmx5IGVtaXQgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGJ1aWxlciBkYXRhIHdoaWNoIG5lZWRzIHRvIGJlIHNhdmVkIGJ5IHRoZSBjYWxsaW5nIGNvbXBvbmVudFxuICAgKiBvbmx5IGFwcGxpY2FibGUgd2hlbiBwYWdlVHlwZSBpcyBub3QgUE9QVVAgYW5kIEpTT05cbiAgKiovXG4gIEBJbnB1dCgpIGF1dG9TYXZlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbWZhUmVxdWlyZWQgOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBtb2RlbENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9uQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCdtYXRIb3Jpem9udGFsU3RlcHBlcicpIHN0ZXBwZXI6IE1hdFN0ZXBwZXI7XG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcbiAgQElucHV0KCkgcmVhZE9ubHlGaWVsZHM6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBmb3JtUmVhZE9ubHk6IEJvb2xlYW47XG4gIEBJbnB1dCgpIHF1ZXJ5TW9kZWw6IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsO1xuICBASW5wdXQoKSBkeW5hbWljUGFyYW0gOiBhbnk7XG4gIEBJbnB1dCgpIGZvcm1EYXRhOiBhbnk7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uTnVtYmVyOiBudW1iZXIgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHNpemVYcyA6IG51bWJlcjtcbiAgQElucHV0KCkgc2l6ZVNtIDogbnVtYmVyO1xuICBASW5wdXQoKSBzaXplTWQgOiBudW1iZXI7XG4gIEBJbnB1dCgpIHNpemVMZyA6IG51bWJlcjtcbiAgQElucHV0KCkgc2l6ZVhsIDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIG9mZnNldFhzIDogbnVtYmVyO1xuICBASW5wdXQoKSBvZmZzZXRTbSA6IG51bWJlcjtcbiAgQElucHV0KCkgb2Zmc2V0TWQgOiBudW1iZXI7XG4gIEBJbnB1dCgpIG9mZnNldExnIDogbnVtYmVyO1xuICBASW5wdXQoKSBvZmZzZXRYbCA6IG51bWJlcjtcblxuICAvLyBmb3JtOiBGb3JtR3JvdXA7XG4gIGZvcm1Hcm91cEFycmF5OiBVbnR5cGVkRm9ybUdyb3VwW10gPSBbXTtcbiAgcGF5TG9hZCA9ICcnO1xuICBpdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICBpc0ZpcnN0OiBib29sZWFuID0gdHJ1ZTtcbiAgaXNMYXN0OiBib29sZWFuID0gZmFsc2U7XG4gIHN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBoaWRlU3RlcDogYm9vbGVhbiA9IGZhbHNlO1xuICBpZGVudGlmaWVyOiBzdHJpbmcgPSBcIlwiO1xuICBhY3RpdmVJbmRleDogbnVtYmVyID0gMDtcbiAgZXJyb3JPY2N1cmVkOiBib29sZWFuID0gZmFsc2U7XG4gIG1mYURhdGEgOiBhbnk7XG4gIG1mYUVycm9yIDogRXJyb3JNb2RlbDtcbiAgc3NuRm9yQ1NSIDogc3RyaW5nO1xuICBcbiAgY29uc3RydWN0b3IocHVibGljIHFlczogUXVlc3Rpb25TZXJ2aWNlLCBwdWJsaWMgcXVlc3Rpb25uYWlyZVNlcnZpY2U6IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlLCBwdWJsaWMgbmF2Q3RybDogTmF2Q29udHJvbGxlcixcbiAgICBwcml2YXRlIHFjczogUXVlc3Rpb25Db250cm9sU2VydmljZSwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwdWJsaWMgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyBzdG9yYWdlIDogU3RvcmFnZSwgcHVibGljIGxzIDogTG9naW5TZXJ2aWNlLCBwdWJsaWMgY2FwdGNoYSA6IENhcHRjaGFTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qVGhpcyB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBASW5wdXQgJ2Zvcm1EYXRhJyB2YWx1ZSBpcyBjaGFuZ2VkIGZvciB0aGlzIGNvbnRyb2wqLyAgIFxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlcy5mb3JtRGF0YT8uY3VycmVudFZhbHVlKXtcbiAgICAgIGlmKGNoYW5nZXMuZm9ybURhdGEuY3VycmVudFZhbHVlKXtcbiAgICAgICAgdGhpcy5zZXRGb3JtVmFsdWVzKGNoYW5nZXMuZm9ybURhdGEuY3VycmVudFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoY2hhbmdlcy5yZWFkT25seUZpZWxkcz8uY3VycmVudFZhbHVlKXtcbiAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiBjaGFuZ2VzLnJlYWRPbmx5RmllbGRzLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdPy5nZXQoY250cmxOYW1lKS5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYoY2hhbmdlcy5yZWFkT25seUZpZWxkcz8ucHJldmlvdXNWYWx1ZSAmJiBjaGFuZ2VzLnJlYWRPbmx5RmllbGRzLmN1cnJlbnRWYWx1ZSA9PSBudWxsKXtcbiAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiBjaGFuZ2VzLnJlYWRPbmx5RmllbGRzLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0/LmdldChjbnRybE5hbWUpKSB7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRGb3JtVmFsdWVzKGRhdGEpe1xuICAgIE9iamVjdC5rZXlzKGRhdGEpXG4gICAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHF1ZXN0aW9uID0gdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZ3VyYXRpb24oa2V5KTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVUb1NldCA9IGRhdGFba2V5XTtcbiAgICAgICAgICAgICAgICBpZihxdWVzdGlvbil7XG4gICAgICAgICAgICAgICAgICAvKiogRm9yIGRyb3Bkb3duIGZvcm0gY29udHJvbCwgZXhwZWN0aW5nIHRvIGdldCBkYXRhIGluIGZvcm0ge3ZhbHVlIDogXCJzb21lVmFsdWVcIiwgdGV4dDogbnVsbH0uXG4gICAgICAgICAgICAgICAgICAgKiBCYXNlZCBvbiB0aGUgdmFsdWUgYXR0cmlidXRlLCBvcHRpb24gd2lsbCBiZSBzZXQgb24gZm9ybSBjb250cm9sIGFmdGVyIHJlYWRpbmcgaXQgZnJvbSBjaG9pY2VzXG4gICAgICAgICAgICAgICAgICAgKiBhcnJheS5cbiAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICBpZih2YWx1ZVRvU2V0KXtcbiAgICAgICAgICAgICAgICAgIGxldCBjaG9pY2UgPSBxdWVzdGlvbi5jaG9pY2VzLmZpbHRlcihvID0+IG8udmFsdWUgPT0gKHZhbHVlVG9TZXQ/LnZhbHVlID8gdmFsdWVUb1NldC52YWx1ZSA6IHZhbHVlVG9TZXQpKVswXTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVJbkZvcm1Db250cm9sKGtleSwgY2hvaWNlKTtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUluRm9ybUNvbnRyb2woa2V5LCB2YWx1ZVRvU2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICB9XG5cbiAgc2V0VmFsdWVJbkZvcm1Db250cm9sKG5hbWUsIHZhbHVlKXtcbiAgICBsZXQgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0/LmNvbnRyb2xzW25hbWVdO1xuICAgIGlmKGNvbnRyb2wpe1xuICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICB9ZWxzZXtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGZvcm0gY29udHJvbCBwcmVzZW50IHdpdGggbmFtZSAnLCBuYW1lKTtcbiAgICB9XG4gIH1cblxuICAvKiBUbyBnZXQgdGhlIGRyb3Bkb3duIGVsZW1lbnQgc28gdGhhdCB2YWx1ZSBmcm9tIHRoZSBjaG9pY2VzIGNhbiBiZSByZWFkIGFuZCBzZXQgaW50byB0aGUgZm9ybSBjb250cm9sKi9cbiAgZ2V0Rm9ybUNvbnRyb2xDb25maWd1cmF0aW9uKG5hbWUpe1xuICAgIGxldCBmaWx0ZXJlZFZhbHVlcyA9IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzW3RoaXMuYWN0aXZlSW5kZXhdLmVsZW1lbnRzLmZpbHRlcihxID0+IHEubmFtZSA9PSBuYW1lICYmIHEudHlwZSA9PSAnZHJvcGRvd24nKTtcbiAgICBpZihmaWx0ZXJlZFZhbHVlcyAmJiBmaWx0ZXJlZFZhbHVlcy5sZW5ndGggPiAwKXtcbiAgICAgIHJldHVybiBmaWx0ZXJlZFZhbHVlc1swXTtcbiAgICB9ZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzZXR1cExvYWRlck1vZGVsKCkge1xuICBcbiAgICBpZiAodGhpcy5sb2FkZXJTZXJ2aWNlKSB7XG4gICAgICBsZXQgc2VydmljZVVybHM6IHN0cmluZ1tdID0gdGhpcy5sb2FkZXJTZXJ2aWNlLnNwbGl0KCcsJyk7XG4gICAgICBsZXQgc2VydmljZVVybCA9IHNlcnZpY2VVcmxzW3RoaXMuYWN0aXZlSW5kZXhdO1xuICAgICAgaWYoc2VydmljZVVybC50cmltKCkgIT0gJ251bGwnKXtcbiAgICAgIHRoaXMuYmxvY2tVaSA9IHRydWU7XG4gICAgICBsZXQgc2VydmljZVVybFZhbHVlID0gc2VydmljZVVybC50cmltKCk7XG4gICAgICBpZih0aGlzLmxzLmlzQ3NyKCkpe1xuICAgICAgICBzZXJ2aWNlVXJsVmFsdWUgPSBzZXJ2aWNlVXJsVmFsdWU7ICAgICAgIFxuICAgICAgfVxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMubHMuaXNDc3IoKSA/IHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnc3NuJywgdGhpcy5zc25Gb3JDU1IpIH0gOiB7fTtcbiAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2VcbiAgICAgICAgLmdldDxMb2FkZXJNb2RlbD4oYCR7c2VydmljZVVybFZhbHVlfWAsIG9wdGlvbnMpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyTW9kZWwgPSByZXM7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcImxvYWRlciBtb2RlbCAgPSBcIiArIHRoaXMubG9hZGVyTW9kZWwpOyAgICAgICBcbiAgICAgICAgICAgIHRoaXMuYmxvY2tVaSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYodGhpcy5sb2FkZXJNb2RlbCAmJiB0aGlzLmxvYWRlck1vZGVsLmRpc2FibGVDb250cm9sTmFtZXMpe1xuICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gdGhpcy5sb2FkZXJNb2RlbC5kaXNhYmxlQ29udHJvbE5hbWVzO1xuICAgICAgICAgICAgICBmb3IgKGxldCBjbnRybE5hbWUgb2YgdGhpcy5yZWFkT25seUZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdPy5nZXQoY250cmxOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5xY3MuZ2V0RGF0YSh0aGlzLmFjdGl2ZUluZGV4KSAhPSBudWxsKXtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IEpTT04ucGFyc2UodGhpcy5xY3MuZ2V0RGF0YSh0aGlzLmFjdGl2ZUluZGV4KSk7XG4gICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0ucGF0Y2hWYWx1ZSh0aGlzLmZvcm1EYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHRoaXMubG9hZGVyTW9kZWwgJiYgdGhpcy5sb2FkZXJNb2RlbC5kYXRhKXtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IHRoaXMubG9hZGVyTW9kZWwuZGF0YTtcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtVmFsdWVzKHRoaXMuZm9ybURhdGEpO1xuICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICAgICAgICB0aGlzLmJsb2NrVWkgPSBmYWxzZTtcbiAgICAgICAgICB9KVxuICAgIH0gXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJ2xvYWRlciBtb2RlbCBlbHNlIHNlY3Rpb24gLSBkeW5hbWljIGZvcm0nKVxuICAgIGNvbnNvbGUubG9nKCdsb2FkZXIgbW9kZWwgZm9ybSBkYXRhIGZyb20gZHluYW1pYyAgPSAnLCB0aGlzLmZvcm1EYXRhKTtcbiAgICBpZih0aGlzLnFjcy5nZXREYXRhKHRoaXMuYWN0aXZlSW5kZXgpICE9IG51bGwpe1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IEpTT04ucGFyc2UodGhpcy5xY3MuZ2V0RGF0YSh0aGlzLmFjdGl2ZUluZGV4KSk7XG4gICAgICB0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdLnBhdGNoVmFsdWUodGhpcy5mb3JtRGF0YSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdkYXRhID09PT09ICcgLCB0aGlzLmRhdGEpO1xuICAgIGlmKHRoaXMuZGF0YSl7XG4gICAgICB0aGlzLmZvcm1EYXRhID0gdGhpcy5kYXRhO1xuICAgICAgdGhpcy5zZXRGb3JtVmFsdWVzKHRoaXMuZm9ybURhdGEpO1xuICAgIH0gICAgIFxuICB9IFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0luaXQgbWV0aG9kIGNhbGxlZCBmcm9tIGR5bmFtaWMgZm9ybScsIHRoaXMucXVlc3Rpb25zKVxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCcgYmFja0J1dHRvblBhZ2UgJywgdGhpcy5iYWNrQnV0dG9uUGFnZSwgJyBuZXh0QnV0dG9uUGFnZScsIHRoaXMubmV4dEJ1dHRvblBhZ2UpO1xuICAgIGlmICghdGhpcy5xdWVzdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5oaWRlU3RlcCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNGaXJzdCA9IHRydWU7XG4gICAgfVxuICAgIGxldCBzdHJLZXkgPSBbXTtcbiAgICBsZXQgcGFyYW1NYXAgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgc3RyS2V5ID0gW10gPSBwYXJhbXMua2V5cztcbiAgICAgIHRoaXMuaWRlbnRpZmllciA9IHBhcmFtcy5nZXQoJ2lkZW50aWZpZXInKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyS2V5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdzdHJpbmdLZXkgJywgc3RyS2V5W2ldLCBwYXJhbXMuZ2V0KHN0cktleVtpXSkpO1xuICAgICAgICBwYXJhbU1hcC5zZXQoc3RyS2V5W2ldLCBwYXJhbXMuZ2V0KHN0cktleVtpXSkpO1xuICAgICAgfVxuICAgICAgaWYocGFyYW1NYXAuZ2V0KFwia2V5XCIpICE9IG51bGwpe1xuICAgICAgICB0aGlzLnNzbkZvckNTUiA9IGF0b2IocGFyYW1NYXAuZ2V0KFwia2V5XCIpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgKTtcbiAgICBcbiAgICBsZXQgY291bnRlciA9IHRoaXMucXVlc3Rpb25zWzBdLnN0ZXBDb3VudGVyO1xuICAgIHRoaXMuYWN0aXZlSW5kZXggPSBjb3VudGVyID8gY291bnRlciA6IDAgO1xuICAgIC8vdGhpcy5zdGVwcGVyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiQmxvY2sgc3RhdGVtZW50IGV4ZWN1dGlvbiBuby5cIiwgdGhpcy5xdWVzdGlvbnNbMF0ucGFnZXMubGVuZ3RoKTtcbiAgICAgIGZvcm1Hcm91cCA9IHRoaXMucWNzLnRvRm9ybUdyb3VwKHRoaXMucXVlc3Rpb25zLCBpLCBwYXJhbU1hcCk7XG4gICAgICB0aGlzLnNldFZhbGlkYXRpb24oaSwgZm9ybUdyb3VwKTtcblxuICAgICAgdGhpcy5zZXRWYWx1ZVN1YnNjcmlwdGlvbihpLCBmb3JtR3JvdXApO1xuICAgICAgdGhpcy5zZXRSZWFkT25seShpLCBmb3JtR3JvdXApO1xuICAgICAgdmFyIHBhZ2VzOiBhbnkgPSB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlc1tpXTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdwYWdlcycsIHBhZ2VzKVxuICAgICAgbGV0IHZhbGlkYXRvckZ1bmN0aW9uTGlzdDogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XG4gICAgICBpZiAocGFnZXMuZWxlbWVudHMpIHtcbiAgICAgICAgcGFnZXMuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCA6IEVsZW1lbnRzTW9kZWwpID0+IHtcblxuICAgICAgICAgIGxldCBjb250cmxUeXBlOiBzdHJpbmcgPSBlbGVtZW50LnR5cGU7XG4gICAgICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdwYW5lbCcpIHtcbiAgICAgICAgICAgIC8vdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBJZicsZWxlbWVudClcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudHMuZm9yRWFjaChwYW5lbEVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICBpZiAocGFuZWxFbGVtZW50LnJlcXVpcmVkSWYgJiYgcGFuZWxFbGVtZW50LnR5cGUgIT0gJ2J1dHRvbicgJiYgcGFuZWxFbGVtZW50LnR5cGUgIT0gJ3NpbXBsZUxhYmVsJykge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuc2V0UmVxdWlyZWRJZlZhbGlkYXRpb24ocGFuZWxFbGVtZW50LCB0aGlzLnFjcy5nZXRBbGxEYXRhKCkpKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChwYW5lbEVsZW1lbnQudmFsaWRhdG9ycykge1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gcGFuZWxFbGVtZW50LnZhbGlkYXRvcnM7XG4gICAgICAgICAgICAgICAgLy90aGlzLmxvZ2dlci5kZWJ1ZyhcInBhbmVsIHZhbGlkYXRpb24uMTExXCIscGFuZWxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2godmFsaWRhdG9yID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2V4cHJlc3Npb24nICYmIHBhbmVsRWxlbWVudC5pbnB1dFR5cGUgJiYgcGFuZWxFbGVtZW50LmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuc2V0RGF0ZVZhbGlkYXRpb24ocGFuZWxFbGVtZW50LCB0aGlzLnFjcy5nZXRBbGxEYXRhKCkpKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2V4cHJlc3Npb24nICYmIHBhbmVsRWxlbWVudC5pbnB1dFR5cGUgJiYgcGFuZWxFbGVtZW50LmlucHV0VHlwZSA9PT0gJ3RleHQnXG4gICAgICAgICAgICAgICAgICAgICYmIHBhbmVsRWxlbWVudC5jdXN0b21UYWcgJiYgKHBhbmVsRWxlbWVudC5jdXN0b21UYWcgPT09ICdwYXNzd29yZCcgfHwgIHBhbmVsRWxlbWVudC5jdXN0b21UYWcgPT09ICdlbWFpbCcgfHwgIHBhbmVsRWxlbWVudC5jdXN0b21UYWcgPT09ICdzc24nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLnNldFBhc3N3b3JkVmFsaWRhdGlvbihwYW5lbEVsZW1lbnQsIHRoaXMucWNzLmdldEFsbERhdGEoKSkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnY3VzdG9tdmFsaWRhdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goQXBwVmFsaWRhdG9ycy5jdXN0b21WYWxpZGF0aW9uKHBhbmVsRWxlbWVudCwgdmFsaWRhdG9yLCB0aGlzLnV0aWwuZ2V0U3RhdGUoKSkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgZWxzZScsZWxlbWVudClcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnJlcXVpcmVkSWYgJiYgZWxlbWVudC50eXBlICE9ICdidXR0b24nICYmIGVsZW1lbnQudHlwZSAhPSAnc2ltcGxlTGFiZWwnKSB7XG4gICAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuc2V0UmVxdWlyZWRJZlZhbGlkYXRpb24oZWxlbWVudCwgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC52YWxpZGF0b3JzKSB7XG4gICAgICAgICAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gZWxlbWVudC52YWxpZGF0b3JzO1xuICAgICAgICAgICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2godmFsaWRhdG9yID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdleHByZXNzaW9uJyAmJiBlbGVtZW50LmlucHV0VHlwZSAmJiBlbGVtZW50LmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goQXBwVmFsaWRhdG9ycy5zZXREYXRlVmFsaWRhdGlvbihlbGVtZW50LCB0aGlzLnFjcy5nZXRBbGxEYXRhKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnY3VzdG9tdmFsaWRhdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuY3VzdG9tVmFsaWRhdGlvbihlbGVtZW50LCB2YWxpZGF0b3IsIHRoaXMudXRpbC5nZXRTdGF0ZSgpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuc2VydmljZVR5cGUgJiYgZWxlbWVudC5zZXJ2aWNlVHlwZSA9PT0gJ1ZBTElEQVRFJykge1xuICAgICAgICAgICAgICAvL3ZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuY3JlYXRlVmFsaWRhdG9yKHRoaXMudmFsaWRhdGlvblNlcnZpY2UsZWxlbWVudCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmb3JtR3JvdXAuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JGdW5jdGlvbkxpc3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXkucHVzaChmb3JtR3JvdXApO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJwYWdlcy5xZURhdGFcIiwgcGFnZXMucWVEYXRhKTtcbiAgICAgIGlmKHBhZ2VzLnFlRGF0YSl7XG4gICAgICAgIGZvcm1Hcm91cC5wYXRjaFZhbHVlKHBhZ2VzLnFlRGF0YSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInNldCB2YWx1ZXMgYXMgcGVyIGxvYWRlciBzZXJ2aWNlID0gXCIsIHRoaXMuZm9ybURhdGEpO1xuICAgICAgaWYgKHRoaXMuZm9ybURhdGEgJiYgdGhpcy5mb3JtRGF0YSkge1xuICAgICAgICB0aGlzLnNldEZvcm1WYWx1ZXModGhpcy5mb3JtRGF0YSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mb3JtUmVhZE9ubHkpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVtpXS5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZWFkT25seUZpZWxkcyAmJiB0aGlzLnJlYWRPbmx5RmllbGRzKSB7XG4gICAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiB0aGlzLnJlYWRPbmx5RmllbGRzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwQXJyYXlbaV0uZ2V0KGNudHJsTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbaV0uZ2V0KGNudHJsTmFtZSkuZGlzYWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0dXBMb2FkZXJNb2RlbCgpO1xuICAgIFxuICAgIGlmICh0aGlzLnBhZ2VUeXBlID09PSAnUE9QVVAnKSB7XG4gICAgICBsZXQgbW9kZWwgPSBuZXcgQ2xhaW1BcHBFbXBsb3llckRldGFpbHNNb2RlbCgpO1xuICAgICAgbW9kZWwgPSB0aGlzLmRhdGE7XG4gICAgICB0aGlzLmZvcm1Hcm91cEFycmF5WzBdLnBhdGNoVmFsdWUobW9kZWwpO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3RoaXMuZm9ybUdyb3VwQXJyYXkgYWZ0ZXIgSUYnLCB0aGlzLmZvcm1Hcm91cEFycmF5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYWdlVHlwZSA9PT0gJ0pzb24nICYmIHRoaXMuZm9ybURhdGEpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbMF0ucGF0Y2hWYWx1ZSh0aGlzLmZvcm1EYXRhKTtcbiAgICAgIGlmICh0aGlzLmZvcm1SZWFkT25seSkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cEFycmF5WzBdLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiB0aGlzLnJlYWRPbmx5RmllbGRzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwQXJyYXlbMF0uZ2V0KGNudHJsTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbMF0uZ2V0KGNudHJsTmFtZSkuZGlzYWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjdXJyZW50UWUgPSB0aGlzLnFlcy5zZWFyY2hCcy5nZXRWYWx1ZSgpO1xuICAgIHRoaXMucG90ZW50aWFsSXNzdWVJZCA9IGN1cnJlbnRRZT8ucG90ZW50aWFsSXNzdWVJZDtcbiAgfVxuXG4gIHNldFZhbHVlU3Vic2NyaXB0aW9uKHBhZ2VJbmRleDogbnVtYmVyLCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICB2YXIgcGFnZXM6IGFueSA9IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzW3BhZ2VJbmRleF07XG4gICAgaWYgKHBhZ2VzLmVsZW1lbnRzKSB7XG4gICAgICBwYWdlcy5lbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBsZXQgY29udHJsVHlwZTogc3RyaW5nID0gZWxlbWVudC50eXBlO1xuICAgICAgICBpZiAoZWxlbWVudC5zdWJzY3JpYmVWYWx1ZU9mKSB7XG4gICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQuc3Vic2NyaWJlVmFsdWVPZl1cbiAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnNldFZhbHVlKHZhbHVlKSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAncGFuZWwnKSB7XG4gICAgICAgICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgcGFuZWxDb250cmxUeXBlJywgIGVsZW1lbnQuZWxlbWVudHMpXG4gICAgICAgICAgZWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKHBhbmVsRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAocGFuZWxFbGVtZW50LnN1YnNjcmliZVZhbHVlT2YpIHtcbiAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW3BhbmVsRWxlbWVudC5zdWJzY3JpYmVWYWx1ZU9mXS52YWx1ZUNoYW5nZXMuXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlKChjaGFuZ2UpID0+IGZvcm1Hcm91cC5jb250cm9sc1twYW5lbEVsZW1lbnQubmFtZV0uc2V0VmFsdWUoY2hhbmdlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0UmVhZE9ubHkocGFnZUluZGV4OiBudW1iZXIsIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIHZhciBwYWdlczogYW55ID0gdGhpcy5xdWVzdGlvbnNbMF0ucGFnZXNbcGFnZUluZGV4XTtcbiAgICBpZiAocGFnZXMuZWxlbWVudHMpIHtcbiAgICAgIHBhZ2VzLmVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGxldCBjb250cmxUeXBlOiBzdHJpbmcgPSBlbGVtZW50LnR5cGU7XG4gICAgICAgIGlmIChlbGVtZW50LnJlYWRvbmx5KSB7XG4gICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0uZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdwYW5lbCcpIHtcbiAgICAgICAgICAvLyAgdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBwYW5lbENvbnRybFR5cGUnLCAgZWxlbWVudC5lbGVtZW50cylcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLmZvckVhY2gocGFuZWxFbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1twYW5lbEVsZW1lbnQubmFtZV0uZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFZhbGlkYXRpb24ocGFnZUluZGV4OiBudW1iZXIsIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIHZhciBwYWdlczogYW55ID0gdGhpcy5xdWVzdGlvbnNbMF0ucGFnZXNbcGFnZUluZGV4XTtcbiAgICAvL3RoaXMucXVlc3Rpb25zWzBdLnBhZ2VzLmZvckVhY2gocGFnZXMgPT4ge1xuICAgIGlmIChwYWdlcy5lbGVtZW50cykge1xuICAgICAgcGFnZXMuZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgbGV0IGNvbnRybFR5cGU6IHN0cmluZyA9IGVsZW1lbnQudHlwZTtcbiAgICAgICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdlbGVtZW50ID09ICcsZWxlbWVudCk7XG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAndGV4dCcgfHwgY29udHJsVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbGlkYXRpb25Gb3JUZXh0Q29udHJvbChlbGVtZW50LCBmb3JtR3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbGlkYXRpb25Gb3JDb21tZW50Q29udHJvbChlbGVtZW50LCBmb3JtR3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yRHJvcERvd25Db250cm9sKGVsZW1lbnQsIGZvcm1Hcm91cCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdyYWRpb2dyb3VwJyB8fCBjb250cmxUeXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvclJhZGlvQ29udHJvbChlbGVtZW50LCBmb3JtR3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAnY2hlY2tib3gnIHx8IGNvbnRybFR5cGUgPT09ICdzaW5nbGVzZWxlY3RjaGVja2JveCcgfHwgY29udHJsVHlwZSA9PT0gJ3NpbXBsZWNoZWNrYm94JyB8fCBjb250cmxUeXBlID09PSAnbXVsdGljaGVja2JveCcpIHtcbiAgICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1Zygnc2luZ2xlc2VsZWN0Y2hlY2tib3ggY2FsbGVkJyxlbGVtZW50KTtcbiAgICAgICAgICB0aGlzLnNldFZhbGlkYXRpb25Gb3JDaGVja0JveENvbnRyb2woZWxlbWVudCwgZm9ybUdyb3VwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAncGFuZWwnKSB7XG4gICAgICAgICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgcGFuZWxDb250cmxUeXBlJywgIGVsZW1lbnQuZWxlbWVudHMpXG4gICAgICAgICAgZWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKHBhbmVsRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBsZXQgcGFuZWxDb250cmxUeXBlOiBzdHJpbmcgPSBwYW5lbEVsZW1lbnQudHlwZTtcblxuICAgICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIHBhbmVsQ29udHJsVHlwZScsIHBhbmVsRWxlbWVudClcbiAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yRHJvcERvd25Db250cm9sKHBhbmVsRWxlbWVudCwgZm9ybUdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICd0ZXh0JyB8fCBwYW5lbENvbnRybFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdwYW5lbENvbnRybFR5cGUnLCAgcGFuZWxDb250cmxUeXBlLCdwYW5lbEVsZW1lbnQnLHBhbmVsRWxlbWVudClcbiAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yVGV4dENvbnRyb2wocGFuZWxFbGVtZW50LCBmb3JtR3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ3JhZGlvZ3JvdXAnIHx8IHBhbmVsQ29udHJsVHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yUmFkaW9Db250cm9sKHBhbmVsRWxlbWVudCwgZm9ybUdyb3VwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBwYW5lbENvbnRybFR5cGUgPT09ICdzaW5nbGVzZWxlY3RjaGVja2JveCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yQ2hlY2tCb3hDb250cm9sKHBhbmVsRWxlbWVudCwgZm9ybUdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgICAvL30pO1xuICB9XG5cblxuICBzZXRWYWxpZGF0aW9uRm9yQ2hlY2tCb3hDb250cm9sKGVsZW1lbnQ6IGFueSwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgaWYgKGZvcm1Hcm91cCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXSkge1xuICAgICAgbGV0IHZhbGlkYXRvckZ1bmN0aW9uTGlzdDogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XG4gICAgICBpZiAoZWxlbWVudC5pc1JlcXVpcmVkICYmICFlbGVtZW50LnJlcXVpcmVkSWYpIHtcbiAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvckZ1bmN0aW9uTGlzdCk7XG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0VmFsaWRhdGlvbkZvclJhZGlvQ29udHJvbChlbGVtZW50OiBhbnksIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0pIHtcbiAgICAgIGxldCB2YWxpZGF0b3JGdW5jdGlvbkxpc3Q6IEFycmF5PFZhbGlkYXRvckZuPiA9IFtdO1xuXG4gICAgICBpZiAoZWxlbWVudC5pc1JlcXVpcmVkICYmICFlbGVtZW50LnJlcXVpcmVkSWYpIHtcbiAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvckZ1bmN0aW9uTGlzdCk7XG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICB9XG5cblxuICBzZXRWYWxpZGF0aW9uRm9yRHJvcERvd25Db250cm9sKGVsZW1lbnQ6IGFueSwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgaWYgKGZvcm1Hcm91cCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXSkge1xuICAgICAgbGV0IHZhbGlkYXRvckZ1bmN0aW9uTGlzdDogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XG4gICAgICAvL1ZhbGlkYXRpb24gbmVlZCB0byBiZSBjaGVja1xuICAgICAgaWYgKGVsZW1lbnQuaXNSZXF1aXJlZCAmJiAhZWxlbWVudC5yZXF1aXJlZElmKSB7XG4gICAgICAgIC8vdGhpcy5sb2dnZXIuZGVidWcoJ3NldFZhbGlkYXRpb25Gb3JEcm9wRG93bkNvbnRyb2wnLCBlbGVtZW50Lm5hbWUpXG4gICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JGdW5jdGlvbkxpc3QpO1xuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXG4gICAgfVxuICAgIC8vdGhpcy5sb2dnZXIuZGVidWcoZWxlbWVudC5uYW1lLCdmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXScsZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0pO1xuICB9XG5cblxuICBzZXRWYWxpZGF0aW9uRm9yQ29tbWVudENvbnRyb2woZWxlbWVudDogYW55LCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBpZiAoZm9ybUdyb3VwICYmIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdKSB7XG4gICAgICBsZXQgdmFsaWRhdG9yRnVuY3Rpb25MaXN0OiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcbiAgICAgIGlmIChlbGVtZW50LmlzUmVxdWlyZWQgJiYgIWVsZW1lbnQucmVxdWlyZWRJZikge1xuICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnNldFZhbGlkYXRvcnModmFsaWRhdG9yRnVuY3Rpb25MaXN0KTtcbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uRm9yVGV4dENvbnRyb2woZWxlbWVudDogYW55LCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1Zygnc2V0VmFsaWRhdGlvbkZvclRleHRDb250cm9sJyxlbGVtZW50KTtcbiAgICBpZiAoZm9ybUdyb3VwICYmIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdKSB7XG4gICAgICBsZXQgdmFsaWRhdG9yRnVuY3Rpb25MaXN0OiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcbiAgICAgIGlmIChlbGVtZW50LmlzUmVxdWlyZWQgJiYgIWVsZW1lbnQucmVxdWlyZWRJZikge1xuICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1Zygnc2V0VmFsaWRhdGlvbkZvclRleHRDb250cm9sIGlzUmVxdWlyZWQgJyxlbGVtZW50KTtcbiAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICBpZiAoZWxlbWVudC52YWxpZGF0b3JzKSB7XG4gICAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gZWxlbWVudC52YWxpZGF0b3JzO1xuICAgICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2godmFsaWRhdG9yID0+IHtcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdleHByZXNzaW9uJyAmJiBlbGVtZW50LmlucHV0VHlwZSAmJiBlbGVtZW50LmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAvLyB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLnNldERhdGVWYWxpZGF0aW9uKHZhbGlkYXRvci5leHByZXNzaW9uLCB0aGlzLnFjcy5nZXRBbGxEYXRhKCksIHsgZGF0ZUNvbXBhcmlzaW9uOiB0cnVlIH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAncmVnZXgnKSB7XG4gICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odmFsaWRhdG9yLnJlZ2V4KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3RleHQnICYmIHZhbGlkYXRvci5taW5MZW5ndGgpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRvci5taW5MZW5ndGgpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAndGV4dCcgJiYgdmFsaWRhdG9yLm1heExlbmd0aCkge1xuICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdG9yLm1heExlbmd0aCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdudW1lcmljJykge1xuICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdG9yLm1heFZhbHVlKSk7XG4gICAgICAgICAgfVxuXG5cbiAgICAgICAgfSlcblxuICAgICAgfVxuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JGdW5jdGlvbkxpc3QpO1xuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXG4gICAgfVxuICB9XG5cbiAgbmV4dFBhZ2UoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwibmV4dCBwYWdlIGNhbGxlZCAtLS0tIFwiKVxuICAgIGxldCBmb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cEFycmF5W2luZGV4XTtcbiAgICBpZiAoZm9ybUdyb3VwLmludmFsaWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgaWYnLCBmb3JtR3JvdXApO1xuICAgICAgZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIE9iamVjdC52YWx1ZXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnFjcy5zZXREYXRhKHRoaXMuYWN0aXZlSW5kZXgsIEpTT04uc3RyaW5naWZ5KGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKSk7XG4gICAgLy9Mb2dpYyB0byBzYXZlIHN0YXJ0XG4gICAgbGV0IHN0ckludG9PYmo7XG4gICAgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBzdHJJbnRvT2JqID0gKGRhdGEpO1xuICAgICAgdGhpcy5wYXlMb2FkID0gKHRoaXMucGF5TG9hZCArIHN0ckludG9PYmopO1xuICAgIH0pO1xuXG4gICAgbGV0IHNhdmVEYXRhID0ge30gYXMgUXVlc3Rpb25uYWlyZVNhdmVNb2RlbDtcbiAgICBsZXQgY3VycmVudFFlID0gdGhpcy5xZXMuc2VhcmNoQnMuZ2V0VmFsdWUoKTtcbiAgICBsZXQgZW1wbG95ZWVEYXRhID0gdGhpcy5xZXMuZW1wbG95ZWVCcy5nZXRWYWx1ZSgpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdlbXBsb3llZURhdGEgJywgZW1wbG95ZWVEYXRhKTtcbiAgICBpZiAodGhpcy5mb3JTY3JlZW5RdWVzdGlvbm5haXJlKSB7XG4gICAgICBsZXQgZGF0YUFycjogc3RyaW5nW10gPSBbXTtcbiAgICAgIHRoaXMucWNzLmdldEFsbERhdGEoKS5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgICBkYXRhQXJyLnB1c2goZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIHNhdmVEYXRhLnNjcmVlblF1ZXN0aW9ubmFpcmVEYXRhID0gZGF0YUFycjtcbiAgICAgIHNhdmVEYXRhLnVzZXJUeXBlID0gY3VycmVudFFlLnVzZXJUeXBlO1xuICAgICAgc2F2ZURhdGEuZmxvd0Zyb20gPSBjdXJyZW50UWUuZmxvd0Zyb207XG4gICAgICBzYXZlRGF0YS5xdWVzdGlvbm5haXJlSWRzID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZHM7XG4gICAgICBzYXZlRGF0YS5lbXBNb2RlbCA9IGVtcGxveWVlRGF0YTtcbiAgICAgIHNhdmVEYXRhLnV1aWQgPSB0aGlzLmlkZW50aWZpZXI7Ly9jdXJyZW50UWUudXVpZDtcbiAgICAgIHNhdmVEYXRhLmZsb3dLZXkgPSBjdXJyZW50UWUuZmxvd0tleTtcbiAgICAgIHNhdmVEYXRhLmFjdGl2ZVBhZ2VJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXg7XG4gICAgICBzYXZlRGF0YS5xdWVzdGlvbm5haXJlSWQgPSBjdXJyZW50UWUucXVlc3Rpb25uYWlyZUlkO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3NhdmUgRGF0YSAnLCBzYXZlRGF0YSlcbiAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XG4gICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlXG4gICAgICAgIC5zYXZlU2NyZWVuUXVlc3Rpb25uYWlyZShzYXZlRGF0YSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcocmVzKTtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJyZXMgdXVpZCA9PT09IFwiICwgcmVzW0ZiQ29uc3RhbnRzLnV1aWRdKTtcbiAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS51dWlkLm5leHQocmVzW0ZiQ29uc3RhbnRzLnV1aWRdKTtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy51dWlkLCByZXNbRmJDb25zdGFudHMudXVpZF0pO1xuICAgICAgICAgICAgICBpZihyZXNbJ3JlZGlyZWN0VG9FbmQnXSA9PT0gdHJ1ZSl7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5zdWNjZXNzRWxlbWVudC5uZXh0KHJlc1tGYkNvbnN0YW50cy5zdWNjZXNzUGFnZUVsZW1lbnRdKTtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLndhaXRGb3JQcm9jZXNzaW5nLm5leHQocmVzW0ZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5wYWdlVG9PcGVuLm5leHQocmVzW0ZiQ29uc3RhbnRzLnBhZ2VUb09wZW5dKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50LCByZXNbRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50XSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy53YWl0Rm9yUHJvY2Vzc2luZywgcmVzW0ZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nXSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy5wYWdlVG9PcGVuLCByZXNbRmJDb25zdGFudHMucGFnZVRvT3Blbl0pO1xuICAgICAgICAgICAgICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QoYC8ke3RoaXMubmV4dEJ1dHRvblBhZ2V9P2lkZW50aWZpZXI9JHtyZXNbJ3V1aWQnXX1gKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UHJldkFuZE5leHRCdXR0b24oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSByZXNbJ3V1aWQnXTsgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmVycm9yT2NjdXJlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xuXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuXG4gIH1cblxuICBwcmV2UGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4IC0gMTtcbiAgICB0aGlzLnNldFByZXZBbmROZXh0QnV0dG9uKCk7XG4gIH1cblxuICB2aXNpYmxlSWYoc3RyRXhwOiBzdHJpbmcsIGVsZW1lbnROYW1lOiBzdHJpbmcsIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCwgZWxlbWVudDogYW55KSB7XG5cblxuICAgIGlmICghc3RyRXhwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IGlzVmlzaWJsZSA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZihzdHJFeHAuaW5jbHVkZXMoJyYmJykpe1xuICAgICAgbGV0IGV4cHIgOiBzdHJpbmdbXSA9IHN0ckV4cC5zcGxpdCgnJiYnKTtcbiAgICAgIGlzVmlzaWJsZSA9IEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMF0udHJpbSgpLCBmb3JtR3JvdXApICYmIEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMV0udHJpbSgpLCBmb3JtR3JvdXApXG4gICAgfVxuXG4gICAgaWYoc3RyRXhwLmluY2x1ZGVzKCd8fCcpKXtcbiAgICAgIGxldCBleHByIDogc3RyaW5nW10gPSBzdHJFeHAuc3BsaXQoJ3x8Jyk7XG4gICAgICBpc1Zpc2libGUgPSBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzBdLnRyaW0oKSwgZm9ybUdyb3VwKSB8fCBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzFdLnRyaW0oKSwgZm9ybUdyb3VwKVxuICAgIH1cblxuICAgIGlmKCFzdHJFeHAuaW5jbHVkZXMoJ3x8JykgJiYgIXN0ckV4cC5pbmNsdWRlcygnJiYnKSl7XG4gICAgICBpc1Zpc2libGUgPSBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShzdHJFeHAudHJpbSgpLCBmb3JtR3JvdXApO1xuICAgIH1cblxuICAgIGlmKGlzVmlzaWJsZSl7XG4gICAgICByZXR1cm4gaXNWaXNpYmxlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoZWxlbWVudE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnROYW1lXSAmJiAhZWxlbWVudC5zdWJzY3JpYmVWYWx1ZU9mKSB7XG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudE5hbWVdLnNldFZhbHVlKG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG5cbiAgY29tcGxldGUoKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2NvbXBsZXRlIG1ldGhvZCBjYWxsZWQgPT09PT09PScpO1xuICAgIGlmKHRoaXMubWZhUmVxdWlyZWQgJiYgdGhpcy5zaG93TWZhICYmIHRoaXMubWZhKXtcbiAgICAgIHRoaXMubWZhLnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIGxldCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1N1Ym1pdCBjYWxsZWQgZnJvbSBjb21wbGV0ZSBtZXRob2QgaW4gZHluYW1pYyBmb3JtJylcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5mb3JtR3JvdXBBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXBBcnJheVtpXTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgaWYnLCBmb3JtR3JvdXApO1xuICAgICAgaWYgKGZvcm1Hcm91cC5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgaWYnLCBmb3JtR3JvdXApO1xuICAgICAgICBmb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgICBPYmplY3QudmFsdWVzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKCdjb250cm9sJywgY29udHJvbCk7XG4gICAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlRm9ybS5vblN1Ym1pdCh1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGZvcm1Hcm91cCA9IHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF07XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2Zvcm1Hcm91cCcsIGZvcm1Hcm91cCk7XG4gICAgdGhpcy5xY3Muc2V0RGF0YSh0aGlzLmFjdGl2ZUluZGV4LCBKU09OLnN0cmluZ2lmeShmb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSkpO1xuICAgIGxldCBzdHJJbnRvT2JqO1xuICAgIHRoaXMucGF5TG9hZCA9ICcnO1xuICAgIHRoaXMucWNzLmdldEFsbERhdGEoKS5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgc3RySW50b09iaiA9IChkYXRhKTtcbiAgICAgIHRoaXMucGF5TG9hZCA9ICh0aGlzLnBheUxvYWQgKyBzdHJJbnRvT2JqKTtcbiAgICB9KTtcblxuICAgIGxldCBzYXZlRGF0YSA9IHt9IGFzIFF1ZXN0aW9ubmFpcmVTYXZlTW9kZWw7XG4gICAgbGV0IGN1cnJlbnRRZSA9IHRoaXMuYXV0b1NhdmUgPyB0aGlzLnFlcy5zZWFyY2hCcy5nZXRWYWx1ZSgpIDogdGhpcy5xdWVyeU1vZGVsO1xuXG4gICAgaWYgKHRoaXMucGFnZVR5cGUgPT09ICdQT1BVUCcgfHwgdGhpcy5wYWdlVHlwZSA9PT0gJ0pzb24nKSB7XG4gICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdChmb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSk7XG4gICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZvclNjcmVlblF1ZXN0aW9ubmFpcmUpIHtcbiAgICAgIHNhdmVEYXRhLmRhdGEgPSB0aGlzLnBheUxvYWQvL0pTT04uc3RyaW5naWZ5KHRoaXMucGF5TG9hZCk7XG4gICAgICBzYXZlRGF0YS5wb3RlbnRpYWxJc3N1ZUlkID0gY3VycmVudFFlLnBvdGVudGlhbElzc3VlSWQ7XG4gICAgICBzYXZlRGF0YS5mbG93QWJsZUFuZEF2YWlsYWJsZSA9IGN1cnJlbnRRZS5mbG93QWJsZUFuZEF2YWlsYWJsZTtcbiAgICAgIHNhdmVEYXRhLnVzZXJUeXBlID0gY3VycmVudFFlLnVzZXJUeXBlO1xuICAgICAgc2F2ZURhdGEuZmxvd0Zyb20gPSBjdXJyZW50UWUuZmxvd0Zyb207XG4gICAgICBzYXZlRGF0YS5mbG93V0NBYmxlQW5kQXZhaWxhYmxlID0gY3VycmVudFFlLmZsb3dXQ0FibGVBbmRBdmFpbGFibGU7XG4gICAgICBzYXZlRGF0YS5jbGFpbUFwcGxpY2F0aW9uSWQgPSBjdXJyZW50UWUuY2xhaW1BcHBsaWNhdGlvbklkO1xuICAgICAgc2F2ZURhdGEucXVlc3Rpb25uYWlyZUlkcyA9IGN1cnJlbnRRZS5xdWVzdGlvbm5haXJlSWRzO1xuICAgICAgc2F2ZURhdGEucXVlc3Rpb25uYWlyZUlkID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZDtcbiAgICAgIHNhdmVEYXRhLmFjdGl2ZVBhZ2VJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXg7XG4gICAgICBpZighdGhpcy5hdXRvU2F2ZSl7XG4gICAgICAgIHNhdmVEYXRhLmF1dG9TYXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KHNhdmVEYXRhKTtcbiAgICAgICAgdGhpcy5xY3Muc2hhcmVkRGF0YS5jbGVhcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuYmxvY2tGb3JtVWkoKVxuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZVxuICAgICAgICAuc2F2ZVF1ZXN0aW9ubmFpcmUoc2F2ZURhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xuICAgICAgICAgICAgdGhpcy5xZXMuc2VhcmNoTW9kZWwuc3BsaWNlKHRoaXMucWVzLnNlYXJjaE1vZGVsLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ucG90ZW50aWFsSXNzdWVJZCA9PSBjdXJyZW50UWUucG90ZW50aWFsSXNzdWVJZCksIDEpO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3JlbWFpbmluZyBlbGVtZW50cycsIHRoaXMucWVzLnNlYXJjaE1vZGVsKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnFlcy5zZWFyY2hNb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMucWVzLnNlYXJjaEJzLm5leHQodGhpcy5xZXMuc2VhcmNoTW9kZWxbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ05vIEVsZW1lbnQgUHJlc2VudCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQocmVzKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnVuYmxvY2tGb3JtVWkoKTtcbiAgICAgICAgICAgIHRoaXMuY2FwdGNoYS5yZXNldENhcHRjaGEoKTtcbiAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KGVycik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGF0YUFycjogc3RyaW5nW10gPSBbXTtcbiAgICAgIHRoaXMucWNzLmdldEFsbERhdGEoKS5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgICBkYXRhQXJyLnB1c2goZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIHNhdmVEYXRhLnNjcmVlblF1ZXN0aW9ubmFpcmVEYXRhID0gZGF0YUFycjtcbiAgICAgIHNhdmVEYXRhLnVzZXJUeXBlID0gY3VycmVudFFlLnVzZXJUeXBlO1xuICAgICAgc2F2ZURhdGEuZmxvd0Zyb20gPSBjdXJyZW50UWUuZmxvd0Zyb207XG4gICAgICBzYXZlRGF0YS5pc1NjcmVlblF1ZXN0aW9ubmFpcmUgPSB0cnVlO1xuICAgICAgc2F2ZURhdGEucXVlc3Rpb25uYWlyZUlkcyA9IGN1cnJlbnRRZS5xdWVzdGlvbm5haXJlSWRzO1xuICAgICAgc2F2ZURhdGEudXVpZCA9IHRoaXMuaWRlbnRpZmllcjsvL2N1cnJlbnRRZS51dWlkO1xuICAgICAgc2F2ZURhdGEuZmxvd0tleSA9IGN1cnJlbnRRZS5mbG93S2V5O1xuICAgICAgc2F2ZURhdGEucXVlc3Rpb25uYWlyZUlkID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZDtcbiAgICAgIHNhdmVEYXRhLmFjdGl2ZVBhZ2VJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXg7XG5cbiAgICAgIGlmKCF0aGlzLmF1dG9TYXZlKXtcbiAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQoc2F2ZURhdGEpO1xuICAgICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmKHRoaXMubWZhUmVxdWlyZWQpe1xuICAgICAgICB0aGlzLnNob3dNZmEgPSB0cnVlO1xuICAgICAgICB0aGlzLm1mYURhdGEgPSBzYXZlRGF0YTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2NyZWVuUXVlc3Rpb25uYWlyZShzYXZlRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZVNjcmVlblF1ZXN0aW9ubmFpcmUoZGF0YSl7XG4gICAgdGhpcy5ibG9ja0Zvcm1VaSgpXG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZVxuICAgICAgICAuc2F2ZVNjcmVlblF1ZXN0aW9ubmFpcmUoZGF0YSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLnN1Y2Nlc3NFbGVtZW50Lm5leHQocmVzW0ZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudF0pO1xuICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLnV1aWQubmV4dChyZXNbRmJDb25zdGFudHMudXVpZF0pO1xuICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLndhaXRGb3JQcm9jZXNzaW5nLm5leHQocmVzW0ZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nXSk7XG4gICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2Uud2FpdENoZWNrU2VydmljZVVyaS5uZXh0KHJlc1tGYkNvbnN0YW50cy53YWl0Q2hlY2tTZXJ2aWNlVXJpXSk7XG4gICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UucGFnZVRvT3Blbi5uZXh0KHJlc1tGYkNvbnN0YW50cy5wYWdlVG9PcGVuXSk7XG5cbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy5zdWNjZXNzUGFnZUVsZW1lbnQsIHJlc1tGYkNvbnN0YW50cy5zdWNjZXNzUGFnZUVsZW1lbnRdKTtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy53YWl0Rm9yUHJvY2Vzc2luZywgcmVzW0ZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nXSk7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoRmJDb25zdGFudHMud2FpdENoZWNrU2VydmljZVVyaSwgcmVzW0ZiQ29uc3RhbnRzLndhaXRDaGVja1NlcnZpY2VVcmldKTtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy5wYWdlVG9PcGVuLCByZXNbRmJDb25zdGFudHMucGFnZVRvT3Blbl0pO1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KEZiQ29uc3RhbnRzLnV1aWQsIHJlc1tGYkNvbnN0YW50cy51dWlkXSk7XG5cbiAgICAgICAgICAgICAgaWYodGhpcy5uZXh0QnV0dG9uUGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QoYC8ke3RoaXMubmV4dEJ1dHRvblBhZ2V9P2lkZW50aWZpZXI9JHtyZXNbJ3V1aWQnXX1gKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdChkYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xuICAgICAgICAgICAgdGhpcy5zaG93TWZhID0gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0Vycm9yIG9jY3VyZWQnLCBlcnIpO1xuICAgICAgICAgICAgaWYodGhpcy5tZmFSZXF1aXJlZCl7XG4gICAgICAgICAgICAgIHRoaXMubWZhRXJyb3IgPSBlcnI7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgdGhpcy5vbkVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xuICAgICAgICAgICAgdGhpcy5jYXB0Y2hhLnJlc2V0Q2FwdGNoYSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgfVxuXG4gIHNldFByZXZBbmROZXh0QnV0dG9uKCkge1xuICAgIGxldCBjb21wYXJlVmFsdWU6IG51bWJlciA9IDA7XG4gICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPiAwKSB7XG4gICAgICBjb21wYXJlVmFsdWUgPSAxO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID4gMCkge1xuICAgICAgdGhpcy5pc0ZpcnN0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPT09IDEgJiYgdGhpcy5pc1ByZXZpb3VzUGFnZUFQbGFjZWhvbGRlcih0aGlzLnF1ZXN0aW9uc1swXS5wYWdlc1swXSkpIHtcbiAgICAgIHRoaXMuaXNGaXJzdCA9IHRydWU7XG4gICAgICB0aGlzLmlzTGFzdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLmlzRmlyc3QgPSB0cnVlO1xuICAgICAgdGhpcy5pc0xhc3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA9PT0gdGhpcy5xdWVzdGlvbnNbMF0ucGFnZXMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5pc0xhc3QgPSB0cnVlO1xuICAgICAgdGhpcy5pc0ZpcnN0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPCB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLmlzTGFzdCA9IGZhbHNlO1xuICAgIH0gICBcbiAgICB0aGlzLnNldHVwTG9hZGVyTW9kZWwoKTtcbiAgfVxuXG4gIGlzUHJldmlvdXNQYWdlQVBsYWNlaG9sZGVyKHBhZ2UgOiBhbnkpe1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiaXNQbGFjZUhvbGRlciA9IFwiICsgcGFnZVtcImlzUGxhY2VIb2xkZXJcIl0pO1xuICAgIGxldCBwbGFjZUhvbGRlcjogYm9vbGVhbiA9ICBwYWdlW1wiaXNQbGFjZUhvbGRlclwiXTtcbiAgICByZXR1cm4gcGxhY2VIb2xkZXIudmFsdWVPZigpO1xuICB9XG5cbiAgc3RlcENoYW5nZWQoZXZlbnQ6IFN0ZXBwZXJTZWxlY3Rpb25FdmVudCkge1xuICAgIGlmIChldmVudC5wcmV2aW91c2x5U2VsZWN0ZWRJbmRleCA+IGV2ZW50LnNlbGVjdGVkSW5kZXgpIHtcbiAgICAgIGV2ZW50LnByZXZpb3VzbHlTZWxlY3RlZFN0ZXAuaW50ZXJhY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbEFjdGlvbigpIHtcbiAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVSb290KHRoaXMuYmFja0J1dHRvblBhZ2UpO1xuICB9XG5cbiAgY2FuY2VsUG9wVXAoKSB7XG4gICAgbGV0IGZvcm1Hcm91cCA9IHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF07XG4gICAgdGhpcy5tb2RlbENhbmNlbC5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnY2FuY2VsUG9wVXAgY2FsbGVkJywgZm9ybUdyb3VwKVxuICB9XG5cbiAgdXBsb2FkRmlsZShxdWV1ZTogRmlsZVtdKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ3F1ZXVlMTExICcsIHF1ZXVlKTtcbiAgICAvL3F1ZXVlWzBdLnNpemVcbiAgfVxuXG4gIGJsb2NrRm9ybVVpKCl7XG4gICAgdGhpcy5ibG9ja1VpID0gdHJ1ZTtcbiAgfVxuXG4gIHVuYmxvY2tGb3JtVWkoKXtcbiAgICB0aGlzLmJsb2NrVWkgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3VsZEZpdENvbnRlbnQoZWxlbWVudHMgOiBFbGVtZW50c01vZGVsW10pe1xuICAgIGxldCBzaG91bGRGaXRDb250ZW50IDogYm9vbGVhbiA9IHRydWU7IFxuICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZihlbGVtZW50LmN1c3RvbVRhZyA9PSAnY29tcG9uZW50Jyl7XG4gICAgICAgIHNob3VsZEZpdENvbnRlbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzaG91bGRGaXRDb250ZW50O1xuICB9XG5cbiAgdXBkYXRlRHluYW1pY1BhcmFtKGV2ZW50KXtcbiAgICBpZihBcnJheS5pc0FycmF5KGV2ZW50KSl7XG4gICAgICB0aGlzLmR5bmFtaWNQYXJhbSA9IFsuLi5ldmVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHluYW1pY1BhcmFtID0gT2JqZWN0LmFzc2lnbih7fSAsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBvblN1Ym1pdCgpe1xuICAgIHRoaXMuZm9jdXNPblN1Ym1pdCgpO1xuICB9XG5cbiAgZm9jdXNPblN1Ym1pdCgpIHtcbiAgICB2YXIgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgdGhpcy5mb2N1c2FibGVzLm1hcCh4ID0+IGAke3h9Lm5nLWludmFsaWRgKS5qb2luKFwiLFwiKVxuICAgICk7XG5cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIHByaW1lTmdDb21wb25lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIHRoaXMuZm9jdXNhYmxlcy5tYXAoeCA9PiBgJHt4fS5wLWNvbXBvbmVudGApLmpvaW4oXCIsXCIpXG4gICAgICApO1xuICAgICAgaWYgKHByaW1lTmdDb21wb25lbnQpIHtcbiAgICAgICAgcHJpbWVOZ0NvbXBvbmVudC5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICAvL0Jsb2NrIGZvciBSYWRpbyBCdXR0b24gU3RhcnRcbiAgICAgIHZhciBwcmltZU5nQ29tcG9uZW50MSA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcImRpdi5wLXNlbGVjdGJ1dHRvblwiKTtcbiAgICAgIGlmIChwcmltZU5nQ29tcG9uZW50MSkge1xuICAgICAgICB2YXIgcHJpbWVOZ0NvbXBvbmVudDIgPSBwcmltZU5nQ29tcG9uZW50MS5xdWVyeVNlbGVjdG9yKFwiZGl2LnAtY29tcG9uZW50XCIpO1xuICAgICAgICBpZiAocHJpbWVOZ0NvbXBvbmVudDIpIHtcbiAgICAgICAgICBwcmltZU5nQ29tcG9uZW50Mi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0Jsb2NrIGZvciBSYWRpbyBCdXR0b24gRW5kXG4gICAgfVxuICB9XG59XG4iLCI8cC1ibG9ja1VJIFtibG9ja2VkXT1cImJsb2NrVWlcIj5cclxuICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cclxuPC9wLWJsb2NrVUk+XHJcbjxkaXYgKm5nSWY9XCJxdWVzdGlvbnMgJiYgcXVlc3Rpb25zWzBdICYmICFzaG93TWZhXCIgI2Zvcm1NYWluRGl2PlxyXG4gIDxmb3JtIGZvY3VzSW52YWxpZElucHV0IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdXCIgW25nQ2xhc3NdPVwibXVsdGlNb2RlID8gJ3FlLWZvcm0tbXVsdGlwbGUnIDogJ3FlLWZvcm0nXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIiAjcXVlc3Rpb25uYWlyZUZvcm09XCJuZ0Zvcm1cIj5cclxuICAgIDxpb24tZ3JpZD5cclxuICAgICAgPGlvbi1yb3cgKm5nSWY9XCJxdWVzdGlvbnNbMF0ucGFnZXNbYWN0aXZlSW5kZXhdLm5hbWVcIj5cclxuICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBbc2l6ZVhzXT1cInNpemVYc1wiIFtzaXplU21dPVwic2l6ZVNtXCIgW3NpemVNZF09XCJzaXplTWRcIiBbc2l6ZUxnXT1cInNpemVMZ1wiIFtzaXplWGxdPVwic2l6ZVhsXCJcclxuICAgICAgICAgIFtvZmZzZXRYc109XCJvZmZzZXRYc1wiIFtvZmZzZXRTbV09XCJvZmZzZXRTbVwiIFtvZmZzZXRNZF09XCJvZmZzZXRNZFwiIFtvZmZzZXRMZ109XCJvZmZzZXRMZ1wiIFtvZmZzZXRYbF09XCJvZmZzZXRYbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtZm9ybWdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cIihxdWVzdGlvbk51bWJlciA/IHF1ZXN0aW9uTnVtYmVyICsgJyAnIDogJycpICsgcXVlc3Rpb25zWzBdLnBhZ2VzW2FjdGl2ZUluZGV4XS5uYW1lIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIiBbbmdDbGFzc109XCJtdWx0aU1vZGUgPyAnZmItaGVhZGluZy1mb2xsb3d1cCcgOiAnZmItaGVhZGluZydcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgPGlvbi1jb2wgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDBweDtcIiBjbGFzcz1cImlvbi1wYWRkaW5nLWVuZFwiIHNpemU9XCIxMlwiIFtzaXplWHNdPVwic2l6ZVhzXCIgW3NpemVTbV09XCJzaXplU21cIlxyXG4gICAgICAgICAgW3NpemVNZF09XCJzaXplTWRcIiBbc2l6ZUxnXT1cInNpemVMZ1wiIFtzaXplWGxdPVwic2l6ZVhsXCIgW29mZnNldFhzXT1cIm9mZnNldFhzXCIgW29mZnNldFNtXT1cIm9mZnNldFNtXCJcclxuICAgICAgICAgIFtvZmZzZXRNZF09XCJvZmZzZXRNZFwiIFtvZmZzZXRMZ109XCJvZmZzZXRMZ1wiIFtvZmZzZXRYbF09XCJvZmZzZXRYbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtZm9ybWdyaWRcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4O1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHF1ZXN0aW9uc1swXS5wYWdlc1thY3RpdmVJbmRleF0uZWxlbWVudHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC50eXBlPT09J3BhbmVsJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwidmlzaWJsZUlmKGVsZW1lbnQudmlzaWJsZUlmLCcnLGZvcm1Hcm91cEFycmF5W2FjdGl2ZUluZGV4XSxlbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxpb24tY29sIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwcHg7XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwcHg7XCIgY2xhc3M9XCJoZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tlbGVtZW50LnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPC9pb24tY29sPiAtLT5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYW5lbEVsZW1lbnQgb2YgZWxlbWVudC5lbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIFtzaXplWGxdPVwicGFuZWxFbGVtZW50LnNpemVYTCA/IHBhbmVsRWxlbWVudC5zaXplWEwgOiAzXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDBweDsgbWF4LXdpZHRoOiBmaXQtY29udGVudDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NpemVMZ109XCJwYW5lbEVsZW1lbnQuc2l6ZUxHID8gcGFuZWxFbGVtZW50LnNpemVMRyA6IDNcIiBbc2l6ZVNtXT1cInBhbmVsRWxlbWVudC5zaXplU00gPyBwYW5lbEVsZW1lbnQuc2l6ZVNNIDogMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NpemVYc109XCJwYW5lbEVsZW1lbnQuc2l6ZVhTID8gcGFuZWxFbGVtZW50LnNpemVYUyA6IDEyXCIgW3NpemVNZF09XCJwYW5lbEVsZW1lbnQuc2l6ZU1EID8gcGFuZWxFbGVtZW50LnNpemVNRCA6IDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbEVsZW1lbnQuY29sRWxlbWVudD09PSdDT0wxJyAmJiB2aXNpYmxlSWYocGFuZWxFbGVtZW50LnZpc2libGVJZixwYW5lbEVsZW1lbnQubmFtZSxmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF0scGFuZWxFbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzaG91bGRGaXRDb250ZW50KGVsZW1lbnQuZWxlbWVudHMpID8gJ2NvbC1maXQtY29udGVudCcgOiAnJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtcXVlc3Rpb24gW3BvdGVudGlhbElzc3VlSWRdPVwicG90ZW50aWFsSXNzdWVJZFwiIFtxdWVzdGlvbl09XCJwYW5lbEVsZW1lbnRcIiBbZm9ybV09XCJmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9yU2NyZWVuUXVlc3Rpb25uYWlyZV09XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlXCIgKG9uRHluYW1pY1BhcmFtVXBkYXRlKT1cInVwZGF0ZUR5bmFtaWNQYXJhbSgkZXZlbnQpXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXF1ZXN0aW9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW9uLWNvbCBzaXplPVwiMVwiICpuZ0lmPVwicGFuZWxFbGVtZW50LmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMjhweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInBhbmVsRWxlbWVudC5kZXNjcmlwdGlvblwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDwhLS0gPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+IC0tPlxyXG5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVsZW1lbnQudHlwZSE9J3BhbmVsJyAmJiBlbGVtZW50LnR5cGUhPSdoaWRkZW4nICYmIHZpc2libGVJZihlbGVtZW50LnZpc2libGVJZixlbGVtZW50Lm5hbWUsZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdLGVsZW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW3NpemVMZ109XCJlbGVtZW50LnNpemVMRz4wP2VsZW1lbnQuc2l6ZUxHOicnXCIgW3NpemVTbV09XCJlbGVtZW50LnNpemVTTVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVYc109XCJlbGVtZW50LnNpemVYU1wiIFtzaXplWGxdPVwiZWxlbWVudC5zaXplWEw+MCA/ZWxlbWVudC5zaXplWEw6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaXplTWRdPVwiZWxlbWVudC5zaXplTUQ+MCA/ZWxlbWVudC5zaXplTUQ6JydcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZpZWxkXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcXVlc3Rpb24gW3BvdGVudGlhbElzc3VlSWRdPVwicG90ZW50aWFsSXNzdWVJZFwiIFtxdWVzdGlvbl09XCJlbGVtZW50XCIgW2Zvcm1dPVwiZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JTY3JlZW5RdWVzdGlvbm5haXJlXT1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uRHluYW1pY1BhcmFtVXBkYXRlKT1cInVwZGF0ZUR5bmFtaWNQYXJhbSgkZXZlbnQpXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYXBwLXF1ZXN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGlvbi1jb2wgc2l6ZT1cIjFcIiAqbmdJZj1cImVsZW1lbnQuZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctdG9wOiAzNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiZWxlbWVudC5kZXNjcmlwdGlvblwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1wYWRkaW5nLXN0YXJ0XCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIFtzaXplTWRdPVwicGFnZVR5cGU9PT0nUE9QVVAnPzY6MTJcIlxyXG4gICAgICAgICAgW3NpemVMZ109XCJwYWdlVHlwZT09PSdQT1BVUCc/NjoxMFwiIFtzaXplWGxdPVwicGFnZVR5cGU9PT0nUE9QVVAnPzU6MTBcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMHB4O1wiXHJcbiAgICAgICAgICBbb2Zmc2V0WGxdPVwicGFnZVR5cGU9PT0nUE9QVVAnPzA6MVwiIFtvZmZzZXRMZ109XCJwYWdlVHlwZT09PSdQT1BVUCc/MDoxXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgcXVlc3Rpb25zWzBdLnBhZ2VzW2FjdGl2ZUluZGV4XS5lbGVtZW50czsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIgdmlzaWJsZUlmKGVsZW1lbnQudmlzaWJsZUlmLCcnLGZvcm1Hcm91cEFycmF5W2FjdGl2ZUluZGV4XSxlbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhbmVsRWxlbWVudCBvZiBlbGVtZW50LmVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW3NpemVTbV09XCJwYW5lbEVsZW1lbnQuc2l6ZVNNXCIgW3NpemVYc109XCJwYW5lbEVsZW1lbnQuc2l6ZVhTXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzaXplTGddPVwicGFuZWxFbGVtZW50LnNpemVMRz4wP3BhbmVsRWxlbWVudC5zaXplTEc6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NpemVYbF09XCJwYW5lbEVsZW1lbnQuc2l6ZVhMPjAgP3BhbmVsRWxlbWVudC5zaXplWEw6JydcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZU1kXT1cInBhbmVsRWxlbWVudC5zaXplTUQ+MD9wYW5lbEVsZW1lbnQuc2l6ZU1EOicnXCIgKm5nSWY9XCJwYW5lbEVsZW1lbnQuY29sRWxlbWVudD09PSdDT0wyJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVJZihwYW5lbEVsZW1lbnQudmlzaWJsZUlmLHBhbmVsRWxlbWVudC5uYW1lLGZvcm1Hcm91cEFycmF5W2FjdGl2ZUluZGV4XSxwYW5lbEVsZW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGFuZWwtYXBwIFtxdWVzdGlvbl09XCJwYW5lbEVsZW1lbnRcIiBbZm9ybV09XCJmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JTY3JlZW5RdWVzdGlvbm5haXJlXT1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wYW5lbC1hcHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPC9pb24tcm93PlxyXG4gICAgPC9pb24tZ3JpZD5cclxuXHJcbiAgICA8aW9uLWZvb3RlciAqbmdJZj1cIiFoaWRlRm9vdGVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwiJ2Zvb3Rlci1maXhlZCdcIj5cclxuICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0OyBiYWNrZ3JvdW5kOiB3aGl0ZTsgbWFyZ2luLWxlZnQ6IC01cHg7XCJcclxuICAgICAgICAqbmdJZj1cImhpZGVTdGVwICYmIHBhZ2VUeXBlIT0nUE9QVVAnICYmIHBhZ2VUeXBlIT0nU0NSRUVOJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIHAtbm9ndXR0ZXJcIiBzdHlsZT1cImhlaWdodDogNjBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBpb24tdGV4dC1sZWZ0XCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbmNlbEFjdGlvbigpXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBpb24tdGV4dC1yaWdodFwiIHN0eWxlPVwicGFkZGluZzogOHB4O1wiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImNvbXBsZXRlKClcIiBmaWxsPVwic29saWRcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgTmV4dFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDsgYmFja2dyb3VuZDogd2hpdGU7IG1hcmdpbi1sZWZ0OiAtNXB4O1wiXHJcbiAgICAgICAgKm5nSWY9XCJoaWRlU3RlcCAmJiBwYWdlVHlwZT09J1NDUkVFTicgJiYgcXVlc3Rpb25zWzBdLmlzRmlyc3RQYWdlU3VibWl0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgcC1ub2d1dHRlclwiIHN0eWxlPVwiaGVpZ2h0OiA2MHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGlvbi10ZXh0LWxlZnRcIiBzdHlsZT1cInBhZGRpbmc6IDhweDtcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsQWN0aW9uKClcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGlvbi10ZXh0LXJpZ2h0XCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiY29tcGxldGUoKVwiIGZpbGw9XCJzb2xpZFwiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICBEb25lXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGlvbi1ncmlkICpuZ0lmPVwiaGlkZVN0ZXAgJiYgcGFnZVR5cGU9PT0nUE9QVVAnXCI+XHJcbiAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnQgaW9uLXBhZGRpbmctc3RhcnRcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsUG9wVXAoKVwiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodCBpb24tcGFkZGluZy1lbmRcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJjb21wbGV0ZSgpXCIgZmlsbD1cInNvbGlkXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgIEFkZFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICA8L2lvbi1ncmlkPlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFoaWRlU3RlcFwiPlxyXG4gICAgICAgIDxtYXQtaG9yaXpvbnRhbC1zdGVwcGVyIGxpbmVhciAjbWF0SG9yaXpvbnRhbFN0ZXBwZXIgW3NlbGVjdGVkSW5kZXhdPVwicXVlc3Rpb25zWzBdLnN0ZXBDb3VudGVyXCJcclxuICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic3RlcENoYW5nZWQoJGV2ZW50KTtcIiBzdHlsZT1cInRleHQtYWxpZ246IC13ZWJraXQtY2VudGVyO1wiIGFyaWEtYnVzeT1cInRydWVcIj5cclxuICAgICAgICAgIDxtYXQtc3RlcCAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiAgcXVlc3Rpb25zWzBdLnBhZ2VzOyAgbGV0IGkgPSBpbmRleDtcIiBbc3RlcENvbnRyb2xdPVwiZm9ybUdyb3VwQXJyYXlbaV1cIlxyXG4gICAgICAgICAgICBbY29tcGxldGVkXT1cIiAgaSA8IGFjdGl2ZUluZGV4IFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPnt7cXVlc3Rpb25zWzBdLnBhZ2VzW2ldLm5hdmlnYXRpb25UaXRsZX19PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uc1swXS5pc0ZpcnN0UGFnZVN1Ym1pdCAmJiAhaXNMYXN0ICYmIGlzRmlyc3QgJiYgIWlzRW5hYmxlQmFja0J1dHRvblwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZXZlcnNlXCIgZWRpdGFibGU9XCJmYWxzZVwiIGRpc2FibGVkIG1hdC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzPkJhY2s8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZm9yd2FyZFwiIG1hdC1idXR0b24gbWF0U3RlcHBlck5leHQgKGNsaWNrKT1cIm5leHRQYWdlKGFjdGl2ZUluZGV4KVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25zWzBdLmlzRmlyc3RQYWdlU3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJldmVyc2VcIiAoY2xpY2spPVwiY2FuY2VsQWN0aW9uKClcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5CYWNrPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZvcndhcmRcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJOZXh0IChjbGljayk9XCJjb21wbGV0ZSgpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcXVlc3Rpb25zWzBdLmlzRmlyc3RQYWdlU3VibWl0ICYmIGlzTGFzdCAmJiAhaXNGaXJzdFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZXZlcnNlXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXMgKGNsaWNrKT1cInByZXZQYWdlKGFjdGl2ZUluZGV4KVwiPkJhY2s8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZm9yd2FyZFwiIG1hdC1idXR0b24gbWF0U3RlcHBlck5leHQgKGNsaWNrKT1cImNvbXBsZXRlKClcIj5Eb25lPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWVzdGlvbnNbMF0uaXNGaXJzdFBhZ2VTdWJtaXQgJiYgIWlzTGFzdCAmJiAhaXNGaXJzdFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZXZlcnNlXCIgZWRpdGFibGU9XCJmYWxzZVwiIG1hdC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzIFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJwcmV2UGFnZShhY3RpdmVJbmRleClcIj5CYWNrPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZvcndhcmRcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJOZXh0IChjbGljayk9XCJuZXh0UGFnZShhY3RpdmVJbmRleClcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRW5hYmxlQmFja0J1dHRvbiAmJiAhcXVlc3Rpb25zWzBdLmlzRmlyc3RQYWdlU3VibWl0ICYmICFpc0xhc3QgJiYgaXNGaXJzdFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZXZlcnNlXCIgZWRpdGFibGU9XCJmYWxzZVwiIG1hdC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzIFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWxBY3Rpb24oKVwiPkJhY2s8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZm9yd2FyZFwiIG1hdC1idXR0b24gbWF0U3RlcHBlck5leHQgKGNsaWNrKT1cIm5leHRQYWdlKGFjdGl2ZUluZGV4KVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgIDwvbWF0LXN0ZXA+XHJcblxyXG4gICAgICAgIDwvbWF0LWhvcml6b250YWwtc3RlcHBlcj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvaW9uLWZvb3Rlcj5cclxuICA8L2Zvcm0+XHJcblxyXG5cclxuXHJcblxyXG4gIDwhLS0gPGRpdiAqbmdJZj1cInBheUxvYWRcIiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICAgIDxzdHJvbmc+U2F2ZWQgdGhlIGZvbGxvd2luZyB2YWx1ZXM8L3N0cm9uZz48YnI+e3twYXlMb2FkfX1cclxuICAgIDwvZGl2PiAgLS0+XHJcblxyXG5cclxuPC9kaXY+XHJcblxyXG48YXBwLW1mYSAjbWZhIFt1c2VyXT1cImxzLmdldFVzZXIoKVwiICpuZ0lmPVwic2hvd01mYVwiIChzdWNjZXNzKT1cInNhdmVTY3JlZW5RdWVzdGlvbm5haXJlKCRldmVudClcIiBbZGF0YV09XCJtZmFEYXRhXCIgW3JlcXVlc3RDb2RlXT1cInRydWVcIiBcclxuICAgICAgICAgW21mYUVycm9yXT1cIm1mYUVycm9yXCIgW2hpZGVCdXR0b25zXT1cInRydWVcIj48L2FwcC1tZmE+Il19