@reusa/ngx-reusa-app-lib 0.0.731 → 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,419 +1,420 @@
1
- import { Injectable } from '@angular/core';
2
- import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class QuestionControlService {
6
- constructor(datepipe) {
7
- this.datepipe = datepipe;
8
- this.sharedData = new Map();
9
- }
10
- toFormGroup(questions, pageIndex, params) {
11
- //console.log('params',params);
12
- const group = {};
13
- let dataFound = false;
14
- let pages = questions[0].pages[pageIndex];
15
- if (pages && pages.isPlaceHolder) {
16
- return new UntypedFormGroup(group);
17
- }
18
- let strIntoObj;
19
- if (this.getData(pageIndex)) {
20
- strIntoObj = JSON.parse(this.getData(pageIndex));
21
- dataFound = true;
22
- //console.log('strIntoObj ',strIntoObj['claimantEmpName102']);
23
- }
24
- else {
25
- dataFound = false;
26
- }
27
- //console.log('dataFound', dataFound);
28
- ///console.log('pages',pages);
29
- pages.elements.forEach(element => {
30
- let contrlType = element.type;
31
- if (contrlType === 'comment') {
32
- if (dataFound) {
33
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
34
- }
35
- else {
36
- group[element.name] = new UntypedFormControl(null);
37
- }
38
- }
39
- if (contrlType === 'dropdown') {
40
- if (dataFound) {
41
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
42
- }
43
- else {
44
- if (element.defaultValue) {
45
- console.log('element.defaultValue', element.defaultValue);
46
- const choice = element.defaultValue;
47
- var jsonObject = JSON.parse(choice);
48
- console.log('element.defaultValue cho', jsonObject);
49
- group[element.name] = new UntypedFormControl(null);
50
- group[element.name]?.patchValue(element.choices.filter(c => c.value == jsonObject.value)[0]);
51
- group[element.name]?.updateValueAndValidity();
52
- console.log('group[element.name]', group[element.name].value);
53
- }
54
- else {
55
- group[element.name] = new UntypedFormControl(null);
56
- }
57
- }
58
- }
59
- if (contrlType === 'text' && element.inputType != 'date') {
60
- if (element.customTag && element.customTag === 'dueamt') {
61
- group[element.name] = new UntypedFormControl("121");
62
- }
63
- else if (element.customTag && element.customTag === 'ean') {
64
- group[element.name] = new UntypedFormControl("81-00586-0-01");
65
- }
66
- else {
67
- if (dataFound) {
68
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
69
- }
70
- else if (element.defaultValue) {
71
- group[element.name] = new UntypedFormControl(element.defaultValue);
72
- }
73
- else {
74
- group[element.name] = new UntypedFormControl(params.get(element.name));
75
- }
76
- }
77
- }
78
- if (contrlType === 'text' && element.inputType === 'date') {
79
- if (dataFound) {
80
- // console.log('Date strIntoObj[element.name]', strIntoObj[element.name])
81
- group[element.name] = new UntypedFormControl(new Date(strIntoObj[element.name]));
82
- }
83
- else {
84
- if (params.get(element.name)) {
85
- var splitArray = params.get(element.name).split('-');
86
- //console.log('splitArray',splitArray)
87
- let date;
88
- date = new Date();
89
- date.setMonth(Number(splitArray[0]) - 1);
90
- date.setFullYear(Number(splitArray[2]));
91
- date.setDate(Number(splitArray[1]));
92
- let formattedDate = this.datepipe.transform(date, 'MM-dd-yyyy');
93
- // console.log('maxDate',date,'formattedDate',formattedDate);
94
- group[element.name] = new UntypedFormControl(formattedDate);
95
- }
96
- else if (element.defaultValue) {
97
- var dateString = element.defaultValue.trim().split('-');
98
- let date;
99
- date = new Date();
100
- date.setMonth(Number(dateString[0]) - 1);
101
- date.setFullYear(Number(dateString[2]));
102
- date.setDate(Number(dateString[1]));
103
- let formattedDate = this.datepipe.transform(date, 'MM-dd-yyyy');
104
- group[element.name] = new UntypedFormControl(formattedDate);
105
- }
106
- else {
107
- group[element.name] = new UntypedFormControl(null);
108
- }
109
- }
110
- }
111
- if (contrlType === 'radiogroup') {
112
- if (dataFound) {
113
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
114
- }
115
- else if (element.defaultValue) {
116
- group[element.name] = new UntypedFormControl(element.defaultValue);
117
- }
118
- else if (params.get(element.name)) {
119
- group[element.name] = new UntypedFormControl(params.get(element.name));
120
- }
121
- else {
122
- group[element.name] = new UntypedFormControl(null);
123
- }
124
- }
125
- if (contrlType === 'checkbox' || contrlType === 'singleselectcheckbox') {
126
- if (dataFound) {
127
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
128
- }
129
- else if (element.defaultValue) {
130
- group[element.name] = new UntypedFormControl(element.defaultValue);
131
- }
132
- else if (params.get(element.name)) {
133
- group[element.name] = new UntypedFormControl(params.get(element.name));
134
- }
135
- else {
136
- group[element.name] = new UntypedFormControl(null);
137
- }
138
- }
139
- if (contrlType === 'autocomplete') {
140
- if (dataFound) {
141
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
142
- }
143
- else {
144
- group[element.name] = new UntypedFormControl(null);
145
- }
146
- }
147
- if (contrlType === 'simplecheckbox') {
148
- if (dataFound) {
149
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
150
- }
151
- else if (params.get(element.name)) {
152
- group[element.name] = new UntypedFormControl(params.get(element.name));
153
- }
154
- else {
155
- group[element.name] = new UntypedFormControl(null);
156
- }
157
- }
158
- if (contrlType === 'multicheckbox') {
159
- if (dataFound) {
160
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
161
- }
162
- else if (params.get(element.name)) {
163
- group[element.name] = new UntypedFormControl(params.get(element.name));
164
- }
165
- else {
166
- group[element.name] = new UntypedFormControl(null);
167
- }
168
- }
169
- if (contrlType === 'button') {
170
- if (dataFound) {
171
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
172
- }
173
- else {
174
- group[element.name] = new UntypedFormControl();
175
- }
176
- }
177
- if (contrlType === 'displaytextaslabel') {
178
- if (dataFound) {
179
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
180
- }
181
- else {
182
- group[element.name] = new UntypedFormControl(null);
183
- }
184
- }
185
- if (contrlType === 'hidden') {
186
- if (dataFound) {
187
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
188
- }
189
- else if (element.defaultValue) {
190
- group[element.name] = new UntypedFormControl(element.defaultValue);
191
- }
192
- else {
193
- group[element.name] = new UntypedFormControl(null);
194
- }
195
- }
196
- if (contrlType === 'number') {
197
- if (dataFound) {
198
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
199
- }
200
- else if (element.defaultValue) {
201
- group[element.name] = new UntypedFormControl(element.defaultValue);
202
- }
203
- else {
204
- group[element.name] = new UntypedFormControl(null);
205
- }
206
- }
207
- if (contrlType === 'decimal') {
208
- if (dataFound) {
209
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
210
- }
211
- else if (element.defaultValue) {
212
- group[element.name] = new UntypedFormControl(element.defaultValue);
213
- }
214
- else {
215
- group[element.name] = new UntypedFormControl(null);
216
- }
217
- }
218
- if (contrlType === 'currency') {
219
- if (dataFound) {
220
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
221
- }
222
- else if (element.defaultValue) {
223
- group[element.name] = new UntypedFormControl(element.defaultValue);
224
- }
225
- else {
226
- group[element.name] = new UntypedFormControl(null);
227
- }
228
- }
229
- if (contrlType === 'label-with-checkbox') {
230
- if (dataFound) {
231
- group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
232
- }
233
- else if (element.defaultValue) {
234
- group[element.name] = new UntypedFormControl(element.defaultValue);
235
- }
236
- else {
237
- group[element.name] = new UntypedFormControl(null);
238
- }
239
- }
240
- if (contrlType === 'panel') {
241
- element.elements.forEach(panelElement => {
242
- let panelContrlType = panelElement.type;
243
- if (panelContrlType === 'dropdown') {
244
- if (dataFound) {
245
- // console.log('panelElement.name',panelElement.name,' strIntoObj[panelElement.name]',strIntoObj[panelElement.name]);
246
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
247
- }
248
- else {
249
- if (panelElement.defaultValue) {
250
- const choice = panelElement.defaultValue;
251
- var jsonObject = JSON.parse(choice);
252
- let defaultChoice = new Choices();
253
- defaultChoice.text = jsonObject.text;
254
- defaultChoice.value = jsonObject.value;
255
- group[panelElement.name] = new UntypedFormControl(defaultChoice);
256
- }
257
- else {
258
- group[panelElement.name] = new UntypedFormControl(null);
259
- }
260
- }
261
- }
262
- if (panelContrlType === 'text' && panelElement.inputType != 'date') {
263
- if (dataFound) {
264
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
265
- }
266
- else if (panelElement.defaultValue) {
267
- group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
268
- }
269
- else {
270
- group[panelElement.name] = new UntypedFormControl(params.get(panelElement.name));
271
- }
272
- }
273
- if (panelContrlType === 'text' && panelElement.inputType === 'date') {
274
- if (dataFound) {
275
- //console.log('Date strIntoObj[panelElement.name]', strIntoObj[panelElement.name])
276
- group[panelElement.name] = new UntypedFormControl(new Date(strIntoObj[panelElement.name]));
277
- }
278
- else if (panelElement.defaultValue) {
279
- var dateString = panelElement.defaultValue.trim().split('-');
280
- let date;
281
- date = new Date();
282
- date.setMonth(Number(dateString[0]) - 1);
283
- date.setFullYear(Number(dateString[2]));
284
- date.setDate(Number(dateString[1]));
285
- let formattedDate = this.datepipe.transform(date, 'MM-dd-yyyy');
286
- group[panelElement.name] = new UntypedFormControl(formattedDate);
287
- }
288
- else {
289
- group[panelElement.name] = new UntypedFormControl(null);
290
- }
291
- }
292
- if (panelContrlType === 'radiogroup') {
293
- if (dataFound) {
294
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
295
- }
296
- else if (panelElement.defaultValue) {
297
- group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
298
- }
299
- else if (params.get(panelElement.name)) {
300
- group[panelElement.name] = new UntypedFormControl(params.get(panelElement.name));
301
- }
302
- else {
303
- group[panelElement.name] = new UntypedFormControl(null);
304
- }
305
- }
306
- if (panelContrlType === 'checkbox' || panelContrlType === 'singleselectcheckbox') {
307
- if (dataFound) {
308
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
309
- }
310
- else if (panelElement.defaultValue) {
311
- group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
312
- }
313
- else if (params.get(panelElement.name)) {
314
- group[panelElement.name] = new UntypedFormControl(params.get(panelElement.name));
315
- }
316
- else {
317
- group[panelElement.name] = new UntypedFormControl(null);
318
- }
319
- }
320
- if (panelContrlType === 'button') {
321
- if (dataFound) {
322
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
323
- }
324
- else {
325
- group[panelElement.name] = new UntypedFormControl(null);
326
- }
327
- }
328
- if (panelContrlType === 'autocomplete') {
329
- if (dataFound) {
330
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
331
- }
332
- else {
333
- group[panelElement.name] = new UntypedFormControl(null);
334
- }
335
- }
336
- if (panelContrlType === 'displaytextaslabel') {
337
- if (dataFound) {
338
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
339
- }
340
- else {
341
- group[panelElement.name] = new UntypedFormControl(null);
342
- }
343
- }
344
- if (panelContrlType === 'hidden') {
345
- if (dataFound) {
346
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
347
- }
348
- else {
349
- group[panelElement.name] = new UntypedFormControl(null);
350
- }
351
- }
352
- if (panelContrlType === 'number') {
353
- if (dataFound) {
354
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
355
- }
356
- else if (panelElement.defaultValue) {
357
- group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
358
- }
359
- else {
360
- group[panelElement.name] = new UntypedFormControl(null);
361
- }
362
- }
363
- if (panelContrlType === 'decimal') {
364
- if (dataFound) {
365
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
366
- }
367
- else if (panelElement.defaultValue) {
368
- group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
369
- }
370
- else {
371
- group[panelElement.name] = new UntypedFormControl(null);
372
- }
373
- }
374
- if (panelContrlType === 'currency') {
375
- if (dataFound) {
376
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
377
- }
378
- else if (panelElement.defaultValue) {
379
- group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
380
- }
381
- else {
382
- group[panelElement.name] = new UntypedFormControl(null);
383
- }
384
- }
385
- if (panelContrlType === 'label-with-checkbox') {
386
- if (dataFound) {
387
- group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
388
- }
389
- else if (panelElement.defaultValue) {
390
- group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
391
- }
392
- else {
393
- group[panelElement.name] = new UntypedFormControl(null);
394
- }
395
- }
396
- });
397
- }
398
- });
399
- // console.log('group',group);
400
- return new UntypedFormGroup(group);
401
- }
402
- setData(index, data) {
403
- this.sharedData.set(index, data);
404
- }
405
- getData(index) {
406
- return this.sharedData.get(index);
407
- }
408
- getAllData() {
409
- return this.sharedData;
410
- }
411
- }
412
- QuestionControlService.ɵfac = function QuestionControlService_Factory(t) { return new (t || QuestionControlService)(i0.ɵɵinject(i1.DatePipe)); };
413
- QuestionControlService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: QuestionControlService, factory: QuestionControlService.ɵfac });
414
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QuestionControlService, [{
415
- type: Injectable
416
- }], function () { return [{ type: i1.DatePipe }]; }, null); })();
417
- export class Choices {
418
- }
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tY29udHJvbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb24tY29udHJvbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJdkYsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUFtQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRHJDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2dCLENBQUM7SUFDeEMsV0FBVyxDQUFDLFNBQWlDLEVBQUUsU0FBaUIsRUFBQyxNQUF5QjtRQUUxRiwrQkFBK0I7UUFFN0IsTUFBTSxLQUFLLEdBQWlELEVBQUUsQ0FBQztRQUMvRCxJQUFJLFNBQVMsR0FBWSxLQUFLLENBQUM7UUFFL0IsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUxQyxJQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFDO1lBQzlCLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztRQUVELElBQUksVUFBYyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzQixVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDakQsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNqQixnRUFBZ0U7U0FDakU7YUFBTTtZQUNM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QkFDbEY7NkJBQUssSUFBRyxZQUFZLENBQUMsWUFBWSxFQUFDOzRCQUNqQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksa0JBQWtCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO3lCQUM5RTs2QkFBTTs0QkFDTCxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ3pEO3FCQUNGO2dCQUVILENBQUMsQ0FBQyxDQUFBO2FBRUg7UUFFSCxDQUFDLENBQUMsQ0FBQztRQUNILDhCQUE4QjtRQUM5QixPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUlELE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELE9BQU8sQ0FBQyxLQUFLO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOzs0RkF6WlUsc0JBQXNCOzRFQUF0QixzQkFBc0IsV0FBdEIsc0JBQXNCO3VGQUF0QixzQkFBc0I7Y0FEbEMsVUFBVTs7QUE2WlgsTUFBTSxPQUFPLE9BQU87Q0FHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFF1ZXN0aW9uQmFzZSB9IGZyb20gJy4vcXVlc3Rpb24tYmFzZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbkNvbnRyb2xTZXJ2aWNlIHtcblxuICBzaGFyZWREYXRhID0gbmV3IE1hcCgpO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0ZXBpcGU6IERhdGVQaXBlKXt9XG4gIHRvRm9ybUdyb3VwKHF1ZXN0aW9uczogUXVlc3Rpb25CYXNlPHN0cmluZz5bXSwgcGFnZUluZGV4OiBudW1iZXIscGFyYW1zOk1hcDxzdHJpbmcsc3RyaW5nPikge1xuICAgIFxuICAvL2NvbnNvbGUubG9nKCdwYXJhbXMnLHBhcmFtcyk7XG4gICBcbiAgICBjb25zdCBncm91cDogIHtba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O30gPSB7fTtcbiAgICBsZXQgZGF0YUZvdW5kOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBsZXQgcGFnZXMgPSBxdWVzdGlvbnNbMF0ucGFnZXNbcGFnZUluZGV4XTtcblxuICAgIGlmKHBhZ2VzICYmIHBhZ2VzLmlzUGxhY2VIb2xkZXIpe1xuICAgICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUdyb3VwKGdyb3VwKTtcbiAgICB9XG5cbiAgICBsZXQgc3RySW50b09iajogW107XG4gICAgaWYgKHRoaXMuZ2V0RGF0YShwYWdlSW5kZXgpKSB7XG4gICAgICBzdHJJbnRvT2JqID0gSlNPTi5wYXJzZSh0aGlzLmdldERhdGEocGFnZUluZGV4KSk7XG4gICAgICBkYXRhRm91bmQgPSB0cnVlO1xuICAgICAgLy9jb25zb2xlLmxvZygnc3RySW50b09iaiAgICcsc3RySW50b09ialsnY2xhaW1hbnRFbXBOYW1lMTAyJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhRm91bmQgPSBmYWxzZTtcbiAgICB9XG4gICAgLy9jb25zb2xlLmxvZygnZGF0YUZvdW5kJywgZGF0YUZvdW5kKTtcbiAgICBcbiAgICAvLy9jb25zb2xlLmxvZygncGFnZXMnLHBhZ2VzKTtcblxuICAgIHBhZ2VzLmVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsZXQgY29udHJsVHlwZTogc3RyaW5nID0gZWxlbWVudC50eXBlO1xuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdjb21tZW50Jykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdkcm9wZG93bicpIHtcbiAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYoZWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2VsZW1lbnQuZGVmYXVsdFZhbHVlJyxlbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBjaG9pY2U6c3RyaW5nPWVsZW1lbnQuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgdmFyIGpzb25PYmplY3Q6IENob2ljZXMgPSBKU09OLnBhcnNlKGNob2ljZSk7ICBcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlbGVtZW50LmRlZmF1bHRWYWx1ZSBjaG8nLGpzb25PYmplY3QpO1xuICAgICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdPy5wYXRjaFZhbHVlKGVsZW1lbnQuY2hvaWNlcy5maWx0ZXIoYyA9PiBjLnZhbHVlID09IGpzb25PYmplY3QudmFsdWUpWzBdKTtcbiAgICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdncm91cFtlbGVtZW50Lm5hbWVdJyxncm91cFtlbGVtZW50Lm5hbWVdLnZhbHVlKTtcbiAgICAgICAgICB9IGVsc2V7XG4gICAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAndGV4dCcgJiYgZWxlbWVudC5pbnB1dFR5cGUgIT0gJ2RhdGUnKSB7XG5cbiAgICAgICAgaWYgKGVsZW1lbnQuY3VzdG9tVGFnICYmIGVsZW1lbnQuY3VzdG9tVGFnID09PSAnZHVlYW10Jykge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKFwiMTIxXCIpO1xuICAgICAgICB9IFxuICAgICAgICBlbHNlIGlmIChlbGVtZW50LmN1c3RvbVRhZyAmJiBlbGVtZW50LmN1c3RvbVRhZyA9PT0gJ2VhbicpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChcIjgxLTAwNTg2LTAtMDFcIik7XG4gICAgICAgIH0gXG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICB9IFxuICAgICAgICAgIGVsc2UgaWYoZWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFyYW1zLmdldChlbGVtZW50Lm5hbWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAndGV4dCcgJiYgZWxlbWVudC5pbnB1dFR5cGUgPT09ICdkYXRlJykge1xuXG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgLy8gIGNvbnNvbGUubG9nKCdEYXRlIHN0ckludG9PYmpbZWxlbWVudC5uYW1lXScsIHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSlcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChuZXcgRGF0ZShzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZihwYXJhbXMuZ2V0KGVsZW1lbnQubmFtZSkpe1xuXG4gICAgICAgICAgICB2YXIgc3BsaXRBcnJheSA9IHBhcmFtcy5nZXQoZWxlbWVudC5uYW1lKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnc3BsaXRBcnJheScsc3BsaXRBcnJheSlcbiAgICAgICAgICAgIGxldCBkYXRlIDogRGF0ZTtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgZGF0ZS5zZXRNb250aChOdW1iZXIoc3BsaXRBcnJheVswXSkgLSAxKTtcbiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoTnVtYmVyKHNwbGl0QXJyYXlbMl0pKTtcbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZShOdW1iZXIoc3BsaXRBcnJheVsxXSkpO1xuICAgICAgICAgICAgbGV0IGZvcm1hdHRlZERhdGUgPXRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKGRhdGUsICdNTS1kZC15eXl5Jyk7XG4gICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdtYXhEYXRlJyxkYXRlLCdmb3JtYXR0ZWREYXRlJyxmb3JtYXR0ZWREYXRlKTtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChmb3JtYXR0ZWREYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZihlbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgICB2YXIgZGF0ZVN0cmluZyA9IGVsZW1lbnQuZGVmYXVsdFZhbHVlLnRyaW0oKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgbGV0IGRhdGUgOiBEYXRlO1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBkYXRlLnNldE1vbnRoKE51bWJlcihkYXRlU3RyaW5nWzBdKSAtIDEpO1xuICAgICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoZGF0ZVN0cmluZ1syXSkpO1xuICAgICAgICAgICAgZGF0ZS5zZXREYXRlKE51bWJlcihkYXRlU3RyaW5nWzFdKSk7XG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVkRGF0ZSA9dGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ01NLWRkLXl5eXknKTtcbiAgICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZvcm1hdHRlZERhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3JhZGlvZ3JvdXAnKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9IFxuICAgICAgICBlbHNlIGlmKGVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChlbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihwYXJhbXMuZ2V0KGVsZW1lbnQubmFtZSkpe1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhcmFtcy5nZXQoZWxlbWVudC5uYW1lKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnY2hlY2tib3gnIHx8IGNvbnRybFR5cGUgPT09ICdzaW5nbGVzZWxlY3RjaGVja2JveCcpIHtcbiAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH0gXG4gICAgICAgIGVsc2UgaWYoZWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKHBhcmFtcy5nZXQoZWxlbWVudC5uYW1lKSl7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFyYW1zLmdldChlbGVtZW50Lm5hbWUpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnc2ltcGxlY2hlY2tib3gnKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9IFxuICAgICAgICBlbHNlIGlmKHBhcmFtcy5nZXQoZWxlbWVudC5uYW1lKSl7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFyYW1zLmdldChlbGVtZW50Lm5hbWUpKTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnbXVsdGljaGVja2JveCcpIHtcbiAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH0gXG4gICAgICAgIGVsc2UgaWYocGFyYW1zLmdldChlbGVtZW50Lm5hbWUpKXtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChwYXJhbXMuZ2V0KGVsZW1lbnQubmFtZSkpO1xuICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdidXR0b24nKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdkaXNwbGF5dGV4dGFzbGFiZWwnKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnaGlkZGVuJykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfWVsc2UgaWYoZWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH1lbHNlIGlmKGVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChlbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdkZWNpbWFsJykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfWVsc2UgaWYoZWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ2N1cnJlbmN5Jykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfWVsc2UgaWYoZWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ2xhYmVsLXdpdGgtY2hlY2tib3gnKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9ZWxzZSBpZihlbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgIFxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdwYW5lbCcpIHtcbiAgICAgICAgZWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKHBhbmVsRWxlbWVudCA9PiB7XG4gICAgICAgICAgbGV0IHBhbmVsQ29udHJsVHlwZTogc3RyaW5nID0gcGFuZWxFbGVtZW50LnR5cGU7XG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdwYW5lbEVsZW1lbnQubmFtZScscGFuZWxFbGVtZW50Lm5hbWUsJyAgc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0nLHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZihwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICAgICAgICBjb25zdCBjaG9pY2U6c3RyaW5nPXBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgdmFyIGpzb25PYmplY3Q6IENob2ljZXMgPSBKU09OLnBhcnNlKGNob2ljZSk7ICBcbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdENob2ljZTpDaG9pY2VzPSBuZXcgQ2hvaWNlcygpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRDaG9pY2UudGV4dD1qc29uT2JqZWN0LnRleHQ7XG4gICAgICAgICAgICAgICAgZGVmYXVsdENob2ljZS52YWx1ZT1qc29uT2JqZWN0LnZhbHVlO1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRlZmF1bHRDaG9pY2UpO1xuICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICd0ZXh0JyAmJiBwYW5lbEVsZW1lbnQuaW5wdXRUeXBlICE9ICdkYXRlJykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBlbHNlICBpZihwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhcmFtcy5nZXQocGFuZWxFbGVtZW50Lm5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ3RleHQnICYmIHBhbmVsRWxlbWVudC5pbnB1dFR5cGUgPT09ICdkYXRlJykge1xuICAgIFxuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdEYXRlIHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdJywgc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pXG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobmV3IERhdGUoc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pKTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBlbHNlIGlmKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgICB2YXIgZGF0ZVN0cmluZyA9IHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUudHJpbSgpLnNwbGl0KCctJyk7XG4gICAgICAgICAgICAgIGxldCBkYXRlIDogRGF0ZTtcbiAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgIGRhdGUuc2V0TW9udGgoTnVtYmVyKGRhdGVTdHJpbmdbMF0pIC0gMSk7XG4gICAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoTnVtYmVyKGRhdGVTdHJpbmdbMl0pKTtcbiAgICAgICAgICAgICAgZGF0ZS5zZXREYXRlKE51bWJlcihkYXRlU3RyaW5nWzFdKSk7XG4gICAgICAgICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID10aGlzLmRhdGVwaXBlLnRyYW5zZm9ybShkYXRlLCAnTU0tZGQteXl5eScpO1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZvcm1hdHRlZERhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ3JhZGlvZ3JvdXAnKSB7XG4gICAgICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGVsc2UgIGlmKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZihwYXJhbXMuZ2V0KHBhbmVsRWxlbWVudC5uYW1lKSl7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFyYW1zLmdldChwYW5lbEVsZW1lbnQubmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBwYW5lbENvbnRybFR5cGUgPT09ICdzaW5nbGVzZWxlY3RjaGVja2JveCcpIHtcbiAgICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgZWxzZSAgaWYocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKHBhcmFtcy5nZXQocGFuZWxFbGVtZW50Lm5hbWUpKXtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChwYXJhbXMuZ2V0KHBhbmVsRWxlbWVudC5uYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ2J1dHRvbicpIHtcbiAgICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ2Rpc3BsYXl0ZXh0YXNsYWJlbCcpIHtcbiAgICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnZGVjaW1hbCcpIHtcbiAgICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ2N1cnJlbmN5Jykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnbGFiZWwtd2l0aC1jaGVja2JveCcpIHtcbiAgICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICB9ZWxzZSBpZihwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pXG5cbiAgICAgIH1cblxuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKCdncm91cCcsZ3JvdXApO1xuICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Hcm91cChncm91cCk7XG4gIH1cblxuXG5cbiAgc2V0RGF0YShpbmRleCwgZGF0YSkge1xuICAgIHRoaXMuc2hhcmVkRGF0YS5zZXQoaW5kZXgsIGRhdGEpO1xuICB9XG4gIGdldERhdGEoaW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFyZWREYXRhLmdldChpbmRleCk7XG4gIH1cblxuICBnZXRBbGxEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLnNoYXJlZERhdGE7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENob2ljZXMge1xuICB2YWx1ZT86IHN0cmluZztcbiAgdGV4dD86IHN0cmluZztcbn0iXX0=
1
+ import { Injectable } from '@angular/core';
2
+ import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class QuestionControlService {
6
+ constructor(datepipe) {
7
+ this.datepipe = datepipe;
8
+ this.sharedData = new Map();
9
+ }
10
+ toFormGroup(questions, pageIndex, params) {
11
+ //console.log('params',params);
12
+ const group = {};
13
+ let dataFound = false;
14
+ let pages = questions[0].pages[pageIndex];
15
+ if (pages && pages.isPlaceHolder) {
16
+ return new UntypedFormGroup(group);
17
+ }
18
+ let strIntoObj;
19
+ if (this.getData(pageIndex)) {
20
+ strIntoObj = JSON.parse(this.getData(pageIndex));
21
+ dataFound = true;
22
+ //console.log('strIntoObj ',strIntoObj['claimantEmpName102']);
23
+ }
24
+ else {
25
+ dataFound = false;
26
+ }
27
+ //console.log('dataFound', dataFound);
28
+ ///console.log('pages',pages);
29
+ pages.elements.forEach(element => {
30
+ let contrlType = element.type;
31
+ if (contrlType === 'comment') {
32
+ if (dataFound) {
33
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
34
+ }
35
+ else {
36
+ group[element.name] = new UntypedFormControl(null);
37
+ }
38
+ }
39
+ if (contrlType === 'dropdown') {
40
+ if (dataFound) {
41
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
42
+ }
43
+ else {
44
+ if (element.defaultValue) {
45
+ console.log('element.defaultValue', element.defaultValue);
46
+ const choice = element.defaultValue;
47
+ var jsonObject = JSON.parse(choice);
48
+ console.log('element.defaultValue cho', jsonObject);
49
+ group[element.name] = new UntypedFormControl(null);
50
+ group[element.name]?.patchValue(element.choices.filter(c => c.value == jsonObject.value)[0]);
51
+ group[element.name]?.updateValueAndValidity();
52
+ console.log('group[element.name]', group[element.name].value);
53
+ }
54
+ else {
55
+ group[element.name] = new UntypedFormControl(null);
56
+ }
57
+ }
58
+ }
59
+ if (contrlType === 'text' && element.inputType != 'date') {
60
+ if (element.customTag && element.customTag === 'dueamt') {
61
+ group[element.name] = new UntypedFormControl("121");
62
+ }
63
+ else if (element.customTag && element.customTag === 'ean') {
64
+ group[element.name] = new UntypedFormControl("81-00586-0-01");
65
+ }
66
+ else {
67
+ if (dataFound) {
68
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
69
+ }
70
+ else if (element.defaultValue) {
71
+ group[element.name] = new UntypedFormControl(element.defaultValue);
72
+ }
73
+ else {
74
+ group[element.name] = new UntypedFormControl(params.get(element.name));
75
+ }
76
+ }
77
+ }
78
+ if (contrlType === 'text' && element.inputType === 'date') {
79
+ if (dataFound) {
80
+ // console.log('Date strIntoObj[element.name]', strIntoObj[element.name])
81
+ group[element.name] = new UntypedFormControl(new Date(strIntoObj[element.name]));
82
+ }
83
+ else {
84
+ if (params.get(element.name)) {
85
+ var splitArray = params.get(element.name).split('-');
86
+ //console.log('splitArray',splitArray)
87
+ let date;
88
+ date = new Date();
89
+ date.setMonth(Number(splitArray[0]) - 1);
90
+ date.setFullYear(Number(splitArray[2]));
91
+ date.setDate(Number(splitArray[1]));
92
+ let formattedDate = this.datepipe.transform(date, 'MM-dd-yyyy');
93
+ // console.log('maxDate',date,'formattedDate',formattedDate);
94
+ group[element.name] = new UntypedFormControl(formattedDate);
95
+ }
96
+ else if (element.defaultValue) {
97
+ var dateString = element.defaultValue.trim().split('-');
98
+ let date;
99
+ date = new Date();
100
+ date.setMonth(Number(dateString[0]) - 1);
101
+ date.setFullYear(Number(dateString[2]));
102
+ date.setDate(Number(dateString[1]));
103
+ let formattedDate = this.datepipe.transform(date, 'MM-dd-yyyy');
104
+ group[element.name] = new UntypedFormControl(formattedDate);
105
+ }
106
+ else {
107
+ group[element.name] = new UntypedFormControl(null);
108
+ }
109
+ }
110
+ }
111
+ if (contrlType === 'radiogroup') {
112
+ if (dataFound) {
113
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
114
+ }
115
+ else if (element.defaultValue) {
116
+ group[element.name] = new UntypedFormControl(element.defaultValue);
117
+ }
118
+ else if (params.get(element.name)) {
119
+ group[element.name] = new UntypedFormControl(params.get(element.name));
120
+ }
121
+ else {
122
+ group[element.name] = new UntypedFormControl(null);
123
+ }
124
+ }
125
+ if (contrlType === 'checkbox' || contrlType === 'singleselectcheckbox') {
126
+ if (dataFound) {
127
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
128
+ }
129
+ else if (element.defaultValue) {
130
+ group[element.name] = new UntypedFormControl(element.defaultValue);
131
+ }
132
+ else if (params.get(element.name)) {
133
+ group[element.name] = new UntypedFormControl(params.get(element.name));
134
+ }
135
+ else {
136
+ group[element.name] = new UntypedFormControl(null);
137
+ }
138
+ }
139
+ if (contrlType === 'autocomplete') {
140
+ if (dataFound) {
141
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
142
+ }
143
+ else {
144
+ group[element.name] = new UntypedFormControl(null);
145
+ }
146
+ }
147
+ if (contrlType === 'simplecheckbox') {
148
+ if (dataFound) {
149
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
150
+ }
151
+ else if (params.get(element.name)) {
152
+ group[element.name] = new UntypedFormControl(params.get(element.name));
153
+ }
154
+ else {
155
+ group[element.name] = new UntypedFormControl(null);
156
+ }
157
+ }
158
+ if (contrlType === 'multicheckbox') {
159
+ if (dataFound) {
160
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
161
+ }
162
+ else if (params.get(element.name)) {
163
+ group[element.name] = new UntypedFormControl(params.get(element.name));
164
+ }
165
+ else {
166
+ group[element.name] = new UntypedFormControl(null);
167
+ }
168
+ }
169
+ if (contrlType === 'button') {
170
+ if (dataFound) {
171
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
172
+ }
173
+ else {
174
+ group[element.name] = new UntypedFormControl();
175
+ }
176
+ }
177
+ if (contrlType === 'displaytextaslabel') {
178
+ if (dataFound) {
179
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
180
+ }
181
+ else {
182
+ group[element.name] = new UntypedFormControl(null);
183
+ }
184
+ }
185
+ if (contrlType === 'hidden') {
186
+ if (dataFound) {
187
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
188
+ }
189
+ else if (element.defaultValue) {
190
+ group[element.name] = new UntypedFormControl(element.defaultValue);
191
+ }
192
+ else {
193
+ group[element.name] = new UntypedFormControl(null);
194
+ }
195
+ }
196
+ if (contrlType === 'number') {
197
+ if (dataFound) {
198
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
199
+ }
200
+ else if (element.defaultValue) {
201
+ group[element.name] = new UntypedFormControl(element.defaultValue);
202
+ }
203
+ else {
204
+ group[element.name] = new UntypedFormControl(null);
205
+ }
206
+ }
207
+ if (contrlType === 'decimal') {
208
+ if (dataFound) {
209
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
210
+ }
211
+ else if (element.defaultValue) {
212
+ group[element.name] = new UntypedFormControl(element.defaultValue);
213
+ }
214
+ else {
215
+ group[element.name] = new UntypedFormControl(null);
216
+ }
217
+ }
218
+ if (contrlType === 'currency') {
219
+ if (dataFound) {
220
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
221
+ }
222
+ else if (element.defaultValue) {
223
+ group[element.name] = new UntypedFormControl(element.defaultValue);
224
+ }
225
+ else {
226
+ group[element.name] = new UntypedFormControl(null);
227
+ }
228
+ }
229
+ if (contrlType === 'label-with-checkbox') {
230
+ if (dataFound) {
231
+ group[element.name] = new UntypedFormControl(strIntoObj[element.name]);
232
+ }
233
+ else if (element.defaultValue) {
234
+ group[element.name] = new UntypedFormControl(element.defaultValue);
235
+ }
236
+ else {
237
+ group[element.name] = new UntypedFormControl(null);
238
+ }
239
+ }
240
+ if (contrlType === 'panel') {
241
+ element.elements.forEach(panelElement => {
242
+ let panelContrlType = panelElement.type;
243
+ if (panelContrlType === 'dropdown') {
244
+ if (dataFound) {
245
+ // console.log('panelElement.name',panelElement.name,' strIntoObj[panelElement.name]',strIntoObj[panelElement.name]);
246
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
247
+ }
248
+ else {
249
+ if (panelElement.defaultValue) {
250
+ console.log('element.defaultValue', element.defaultValue);
251
+ const choice = element.defaultValue;
252
+ var jsonObject = JSON.parse(choice);
253
+ let defaultChoice = new Choices();
254
+ defaultChoice.text = jsonObject.text;
255
+ defaultChoice.value = jsonObject.value;
256
+ group[panelElement.name] = new UntypedFormControl(defaultChoice);
257
+ }
258
+ else {
259
+ group[panelElement.name] = new UntypedFormControl(null);
260
+ }
261
+ }
262
+ }
263
+ if (panelContrlType === 'text' && panelElement.inputType != 'date') {
264
+ if (dataFound) {
265
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
266
+ }
267
+ else if (panelElement.defaultValue) {
268
+ group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
269
+ }
270
+ else {
271
+ group[panelElement.name] = new UntypedFormControl(params.get(panelElement.name));
272
+ }
273
+ }
274
+ if (panelContrlType === 'text' && panelElement.inputType === 'date') {
275
+ if (dataFound) {
276
+ //console.log('Date strIntoObj[panelElement.name]', strIntoObj[panelElement.name])
277
+ group[panelElement.name] = new UntypedFormControl(new Date(strIntoObj[panelElement.name]));
278
+ }
279
+ else if (panelElement.defaultValue) {
280
+ var dateString = panelElement.defaultValue.trim().split('-');
281
+ let date;
282
+ date = new Date();
283
+ date.setMonth(Number(dateString[0]) - 1);
284
+ date.setFullYear(Number(dateString[2]));
285
+ date.setDate(Number(dateString[1]));
286
+ let formattedDate = this.datepipe.transform(date, 'MM-dd-yyyy');
287
+ group[panelElement.name] = new UntypedFormControl(formattedDate);
288
+ }
289
+ else {
290
+ group[panelElement.name] = new UntypedFormControl(null);
291
+ }
292
+ }
293
+ if (panelContrlType === 'radiogroup') {
294
+ if (dataFound) {
295
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
296
+ }
297
+ else if (panelElement.defaultValue) {
298
+ group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
299
+ }
300
+ else if (params.get(panelElement.name)) {
301
+ group[panelElement.name] = new UntypedFormControl(params.get(panelElement.name));
302
+ }
303
+ else {
304
+ group[panelElement.name] = new UntypedFormControl(null);
305
+ }
306
+ }
307
+ if (panelContrlType === 'checkbox' || panelContrlType === 'singleselectcheckbox') {
308
+ if (dataFound) {
309
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
310
+ }
311
+ else if (panelElement.defaultValue) {
312
+ group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
313
+ }
314
+ else if (params.get(panelElement.name)) {
315
+ group[panelElement.name] = new UntypedFormControl(params.get(panelElement.name));
316
+ }
317
+ else {
318
+ group[panelElement.name] = new UntypedFormControl(null);
319
+ }
320
+ }
321
+ if (panelContrlType === 'button') {
322
+ if (dataFound) {
323
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
324
+ }
325
+ else {
326
+ group[panelElement.name] = new UntypedFormControl(null);
327
+ }
328
+ }
329
+ if (panelContrlType === 'autocomplete') {
330
+ if (dataFound) {
331
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
332
+ }
333
+ else {
334
+ group[panelElement.name] = new UntypedFormControl(null);
335
+ }
336
+ }
337
+ if (panelContrlType === 'displaytextaslabel') {
338
+ if (dataFound) {
339
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
340
+ }
341
+ else {
342
+ group[panelElement.name] = new UntypedFormControl(null);
343
+ }
344
+ }
345
+ if (panelContrlType === 'hidden') {
346
+ if (dataFound) {
347
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
348
+ }
349
+ else {
350
+ group[panelElement.name] = new UntypedFormControl(null);
351
+ }
352
+ }
353
+ if (panelContrlType === 'number') {
354
+ if (dataFound) {
355
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
356
+ }
357
+ else if (panelElement.defaultValue) {
358
+ group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
359
+ }
360
+ else {
361
+ group[panelElement.name] = new UntypedFormControl(null);
362
+ }
363
+ }
364
+ if (panelContrlType === 'decimal') {
365
+ if (dataFound) {
366
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
367
+ }
368
+ else if (panelElement.defaultValue) {
369
+ group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
370
+ }
371
+ else {
372
+ group[panelElement.name] = new UntypedFormControl(null);
373
+ }
374
+ }
375
+ if (panelContrlType === 'currency') {
376
+ if (dataFound) {
377
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
378
+ }
379
+ else if (panelElement.defaultValue) {
380
+ group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
381
+ }
382
+ else {
383
+ group[panelElement.name] = new UntypedFormControl(null);
384
+ }
385
+ }
386
+ if (panelContrlType === 'label-with-checkbox') {
387
+ if (dataFound) {
388
+ group[panelElement.name] = new UntypedFormControl(strIntoObj[panelElement.name]);
389
+ }
390
+ else if (panelElement.defaultValue) {
391
+ group[panelElement.name] = new UntypedFormControl(panelElement.defaultValue);
392
+ }
393
+ else {
394
+ group[panelElement.name] = new UntypedFormControl(null);
395
+ }
396
+ }
397
+ });
398
+ }
399
+ });
400
+ // console.log('group',group);
401
+ return new UntypedFormGroup(group);
402
+ }
403
+ setData(index, data) {
404
+ this.sharedData.set(index, data);
405
+ }
406
+ getData(index) {
407
+ return this.sharedData.get(index);
408
+ }
409
+ getAllData() {
410
+ return this.sharedData;
411
+ }
412
+ static { this.ɵfac = function QuestionControlService_Factory(t) { return new (t || QuestionControlService)(i0.ɵɵinject(i1.DatePipe)); }; }
413
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: QuestionControlService, factory: QuestionControlService.ɵfac }); }
414
+ }
415
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QuestionControlService, [{
416
+ type: Injectable
417
+ }], () => [{ type: i1.DatePipe }], null); })();
418
+ export class Choices {
419
+ }
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tY29udHJvbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb24tY29udHJvbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJdkYsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUFtQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRHJDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2dCLENBQUM7SUFDeEMsV0FBVyxDQUFDLFNBQWlDLEVBQUUsU0FBaUIsRUFBQyxNQUF5QjtRQUUxRiwrQkFBK0I7UUFFN0IsTUFBTSxLQUFLLEdBQWlELEVBQUUsQ0FBQztRQUMvRCxJQUFJLFNBQVMsR0FBWSxLQUFLLENBQUM7UUFFL0IsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUxQyxJQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFDO1lBQzlCLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztRQUVELElBQUksVUFBYyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzQixVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDakQsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNqQixnRUFBZ0U7U0FDakU7YUFBTTtZQUNM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LEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7eUJBQ2xGOzZCQUFLLElBQUcsWUFBWSxDQUFDLFlBQVksRUFBQzs0QkFDakMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQzt5QkFDOUU7NkJBQU07NEJBQ0wsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUN6RDtxQkFDRjtnQkFFSCxDQUFDLENBQUMsQ0FBQTthQUVIO1FBRUgsQ0FBQyxDQUFDLENBQUM7UUFDSCw4QkFBOEI7UUFDOUIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFJRCxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxPQUFPLENBQUMsS0FBSztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQzt1RkExWlUsc0JBQXNCO3VFQUF0QixzQkFBc0IsV0FBdEIsc0JBQXNCOztpRkFBdEIsc0JBQXNCO2NBRGxDLFVBQVU7O0FBOFpYLE1BQU0sT0FBTyxPQUFPO0NBR25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBRdWVzdGlvbkJhc2UgfSBmcm9tICcuL3F1ZXN0aW9uLWJhc2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25Db250cm9sU2VydmljZSB7XG5cbiAgc2hhcmVkRGF0YSA9IG5ldyBNYXAoKTtcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGVwaXBlOiBEYXRlUGlwZSl7fVxuICB0b0Zvcm1Hcm91cChxdWVzdGlvbnM6IFF1ZXN0aW9uQmFzZTxzdHJpbmc+W10sIHBhZ2VJbmRleDogbnVtYmVyLHBhcmFtczpNYXA8c3RyaW5nLHN0cmluZz4pIHtcbiAgICBcbiAgLy9jb25zb2xlLmxvZygncGFyYW1zJyxwYXJhbXMpO1xuICAgXG4gICAgY29uc3QgZ3JvdXA6ICB7W2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55Pjt9ID0ge307XG4gICAgbGV0IGRhdGFGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgbGV0IHBhZ2VzID0gcXVlc3Rpb25zWzBdLnBhZ2VzW3BhZ2VJbmRleF07XG5cbiAgICBpZihwYWdlcyAmJiBwYWdlcy5pc1BsYWNlSG9sZGVyKXtcbiAgICAgIHJldHVybiBuZXcgVW50eXBlZEZvcm1Hcm91cChncm91cCk7XG4gICAgfVxuXG4gICAgbGV0IHN0ckludG9PYmo6IFtdO1xuICAgIGlmICh0aGlzLmdldERhdGEocGFnZUluZGV4KSkge1xuICAgICAgc3RySW50b09iaiA9IEpTT04ucGFyc2UodGhpcy5nZXREYXRhKHBhZ2VJbmRleCkpO1xuICAgICAgZGF0YUZvdW5kID0gdHJ1ZTtcbiAgICAgIC8vY29uc29sZS5sb2coJ3N0ckludG9PYmogICAnLHN0ckludG9PYmpbJ2NsYWltYW50RW1wTmFtZTEwMiddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YUZvdW5kID0gZmFsc2U7XG4gICAgfVxuICAgIC8vY29uc29sZS5sb2coJ2RhdGFGb3VuZCcsIGRhdGFGb3VuZCk7XG4gICAgXG4gICAgLy8vY29uc29sZS5sb2coJ3BhZ2VzJyxwYWdlcyk7XG5cbiAgICBwYWdlcy5lbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbGV0IGNvbnRybFR5cGU6IHN0cmluZyA9IGVsZW1lbnQudHlwZTtcbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmKGVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlbGVtZW50LmRlZmF1bHRWYWx1ZScsZWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgY2hvaWNlOnN0cmluZz1lbGVtZW50LmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIHZhciBqc29uT2JqZWN0OiBDaG9pY2VzID0gSlNPTi5wYXJzZShjaG9pY2UpOyAgXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZWxlbWVudC5kZWZhdWx0VmFsdWUgY2hvJyxqc29uT2JqZWN0KTtcbiAgICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXT8ucGF0Y2hWYWx1ZShlbGVtZW50LmNob2ljZXMuZmlsdGVyKGMgPT4gYy52YWx1ZSA9PSBqc29uT2JqZWN0LnZhbHVlKVswXSk7XG4gICAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZ3JvdXBbZWxlbWVudC5uYW1lXScsZ3JvdXBbZWxlbWVudC5uYW1lXS52YWx1ZSk7XG4gICAgICAgICAgfSBlbHNle1xuICAgICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3RleHQnICYmIGVsZW1lbnQuaW5wdXRUeXBlICE9ICdkYXRlJykge1xuXG4gICAgICAgIGlmIChlbGVtZW50LmN1c3RvbVRhZyAmJiBlbGVtZW50LmN1c3RvbVRhZyA9PT0gJ2R1ZWFtdCcpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChcIjEyMVwiKTtcbiAgICAgICAgfSBcbiAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5jdXN0b21UYWcgJiYgZWxlbWVudC5jdXN0b21UYWcgPT09ICdlYW4nKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXCI4MS0wMDU4Ni0wLTAxXCIpO1xuICAgICAgICB9IFxuICAgICAgICBlbHNlIHtcblxuICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgfSBcbiAgICAgICAgICBlbHNlIGlmKGVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcblxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhcmFtcy5nZXQoZWxlbWVudC5uYW1lKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3RleHQnICYmIGVsZW1lbnQuaW5wdXRUeXBlID09PSAnZGF0ZScpIHtcblxuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgIC8vICBjb25zb2xlLmxvZygnRGF0ZSBzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0nLCBzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pXG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobmV3IERhdGUoc3RySW50b09ialtlbGVtZW50Lm5hbWVdKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYocGFyYW1zLmdldChlbGVtZW50Lm5hbWUpKXtcblxuICAgICAgICAgICAgdmFyIHNwbGl0QXJyYXkgPSBwYXJhbXMuZ2V0KGVsZW1lbnQubmFtZSkuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ3NwbGl0QXJyYXknLHNwbGl0QXJyYXkpXG4gICAgICAgICAgICBsZXQgZGF0ZSA6IERhdGU7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGRhdGUuc2V0TW9udGgoTnVtYmVyKHNwbGl0QXJyYXlbMF0pIC0gMSk7XG4gICAgICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKE51bWJlcihzcGxpdEFycmF5WzJdKSk7XG4gICAgICAgICAgICBkYXRlLnNldERhdGUoTnVtYmVyKHNwbGl0QXJyYXlbMV0pKTtcbiAgICAgICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID10aGlzLmRhdGVwaXBlLnRyYW5zZm9ybShkYXRlLCAnTU0tZGQteXl5eScpO1xuICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbWF4RGF0ZScsZGF0ZSwnZm9ybWF0dGVkRGF0ZScsZm9ybWF0dGVkRGF0ZSk7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZm9ybWF0dGVkRGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoZWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgdmFyIGRhdGVTdHJpbmcgPSBlbGVtZW50LmRlZmF1bHRWYWx1ZS50cmltKCkuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGxldCBkYXRlIDogRGF0ZTtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgZGF0ZS5zZXRNb250aChOdW1iZXIoZGF0ZVN0cmluZ1swXSkgLSAxKTtcbiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoTnVtYmVyKGRhdGVTdHJpbmdbMl0pKTtcbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZShOdW1iZXIoZGF0ZVN0cmluZ1sxXSkpO1xuICAgICAgICAgICAgbGV0IGZvcm1hdHRlZERhdGUgPXRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKGRhdGUsICdNTS1kZC15eXl5Jyk7XG4gICAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChmb3JtYXR0ZWREYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdyYWRpb2dyb3VwJykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfSBcbiAgICAgICAgZWxzZSBpZihlbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYocGFyYW1zLmdldChlbGVtZW50Lm5hbWUpKXtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChwYXJhbXMuZ2V0KGVsZW1lbnQubmFtZSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBjb250cmxUeXBlID09PSAnc2luZ2xlc2VsZWN0Y2hlY2tib3gnKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9IFxuICAgICAgICBlbHNlIGlmKGVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChlbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihwYXJhbXMuZ2V0KGVsZW1lbnQubmFtZSkpe1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhcmFtcy5nZXQoZWxlbWVudC5uYW1lKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3NpbXBsZWNoZWNrYm94Jykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfSBcbiAgICAgICAgZWxzZSBpZihwYXJhbXMuZ2V0KGVsZW1lbnQubmFtZSkpe1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhcmFtcy5nZXQoZWxlbWVudC5uYW1lKSk7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ211bHRpY2hlY2tib3gnKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9IFxuICAgICAgICBlbHNlIGlmKHBhcmFtcy5nZXQoZWxlbWVudC5uYW1lKSl7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFyYW1zLmdldChlbGVtZW50Lm5hbWUpKTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnYnV0dG9uJykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnZGlzcGxheXRleHRhc2xhYmVsJykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH1lbHNlIGlmKGVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChlbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW2VsZW1lbnQubmFtZV0pO1xuICAgICAgICB9ZWxzZSBpZihlbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250cmxUeXBlID09PSAnZGVjaW1hbCcpIHtcbiAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH1lbHNlIGlmKGVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChlbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdjdXJyZW5jeScpIHtcbiAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH1lbHNlIGlmKGVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChlbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdsYWJlbC13aXRoLWNoZWNrYm94Jykge1xuICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgZ3JvdXBbZWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfWVsc2UgaWYoZWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgIGdyb3VwW2VsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cFtlbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICBcbiAgICAgIGlmIChjb250cmxUeXBlID09PSAncGFuZWwnKSB7XG4gICAgICAgIGVsZW1lbnQuZWxlbWVudHMuZm9yRWFjaChwYW5lbEVsZW1lbnQgPT4ge1xuICAgICAgICAgIGxldCBwYW5lbENvbnRybFR5cGU6IHN0cmluZyA9IHBhbmVsRWxlbWVudC50eXBlO1xuICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdkcm9wZG93bicpIHtcbiAgICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygncGFuZWxFbGVtZW50Lm5hbWUnLHBhbmVsRWxlbWVudC5uYW1lLCcgIHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdJyxzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2VsZW1lbnQuZGVmYXVsdFZhbHVlJyxlbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hvaWNlOnN0cmluZz1lbGVtZW50LmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgICAgICB2YXIganNvbk9iamVjdDogQ2hvaWNlcyA9IEpTT04ucGFyc2UoY2hvaWNlKTsgIFxuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0Q2hvaWNlOkNob2ljZXM9IG5ldyBDaG9pY2VzKCk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdENob2ljZS50ZXh0PWpzb25PYmplY3QudGV4dDtcbiAgICAgICAgICAgICAgICBkZWZhdWx0Q2hvaWNlLnZhbHVlPWpzb25PYmplY3QudmFsdWU7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZGVmYXVsdENob2ljZSk7XG4gICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ3RleHQnICYmIHBhbmVsRWxlbWVudC5pbnB1dFR5cGUgIT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGVsc2UgIGlmKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFyYW1zLmdldChwYW5lbEVsZW1lbnQubmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAndGV4dCcgJiYgcGFuZWxFbGVtZW50LmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgXG4gICAgICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ0RhdGUgc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0nLCBzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSlcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChuZXcgRGF0ZShzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSkpO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGVsc2UgaWYocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgICAgIHZhciBkYXRlU3RyaW5nID0gcGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZS50cmltKCkuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgICAgbGV0IGRhdGUgOiBEYXRlO1xuICAgICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgZGF0ZS5zZXRNb250aChOdW1iZXIoZGF0ZVN0cmluZ1swXSkgLSAxKTtcbiAgICAgICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoZGF0ZVN0cmluZ1syXSkpO1xuICAgICAgICAgICAgICBkYXRlLnNldERhdGUoTnVtYmVyKGRhdGVTdHJpbmdbMV0pKTtcbiAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZERhdGUgPXRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKGRhdGUsICdNTS1kZC15eXl5Jyk7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZm9ybWF0dGVkRGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAncmFkaW9ncm91cCcpIHtcbiAgICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgZWxzZSAgaWYocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKHBhcmFtcy5nZXQocGFuZWxFbGVtZW50Lm5hbWUpKXtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChwYXJhbXMuZ2V0KHBhbmVsRWxlbWVudC5uYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnY2hlY2tib3gnIHx8IHBhbmVsQ29udHJsVHlwZSA9PT0gJ3NpbmdsZXNlbGVjdGNoZWNrYm94Jykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBlbHNlICBpZihwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKXtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChwYW5lbEVsZW1lbnQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYocGFyYW1zLmdldChwYW5lbEVsZW1lbnQubmFtZSkpe1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhcmFtcy5nZXQocGFuZWxFbGVtZW50Lm5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnYnV0dG9uJykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnZGlzcGxheXRleHRhc2xhYmVsJykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgICAgICAgIGlmIChkYXRhRm91bmQpIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChzdHJJbnRvT2JqW3BhbmVsRWxlbWVudC5uYW1lXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pO1xuICAgICAgICAgICAgfWVsc2UgaWYocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdkZWNpbWFsJykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnY3VycmVuY3knKSB7XG4gICAgICAgICAgICBpZiAoZGF0YUZvdW5kKSB7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woc3RySW50b09ialtwYW5lbEVsZW1lbnQubmFtZV0pO1xuICAgICAgICAgICAgfWVsc2UgaWYocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSl7XG4gICAgICAgICAgICAgIGdyb3VwW3BhbmVsRWxlbWVudC5uYW1lXSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wocGFuZWxFbGVtZW50LmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdsYWJlbC13aXRoLWNoZWNrYm94Jykge1xuICAgICAgICAgICAgaWYgKGRhdGFGb3VuZCkge1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHN0ckludG9PYmpbcGFuZWxFbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpe1xuICAgICAgICAgICAgICBncm91cFtwYW5lbEVsZW1lbnQubmFtZV0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHBhbmVsRWxlbWVudC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JvdXBbcGFuZWxFbGVtZW50Lm5hbWVdID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgfSlcblxuICAgICAgfVxuXG4gICAgfSk7XG4gICAgLy8gY29uc29sZS5sb2coJ2dyb3VwJyxncm91cCk7XG4gICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUdyb3VwKGdyb3VwKTtcbiAgfVxuXG5cblxuICBzZXREYXRhKGluZGV4LCBkYXRhKSB7XG4gICAgdGhpcy5zaGFyZWREYXRhLnNldChpbmRleCwgZGF0YSk7XG4gIH1cbiAgZ2V0RGF0YShpbmRleCkge1xuICAgIHJldHVybiB0aGlzLnNoYXJlZERhdGEuZ2V0KGluZGV4KTtcbiAgfVxuXG4gIGdldEFsbERhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVkRGF0YTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hvaWNlcyB7XG4gIHZhbHVlPzogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nO1xufSJdfQ==