@reusa/ngx-reusa-app-lib 0.0.1331 → 0.0.1333

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 (528) hide show
  1. package/esm2022/lib/components/add-employer/add-employer.component.mjs +1251 -2377
  2. package/esm2022/lib/components/add-participant/add-participant.component.mjs +99 -158
  3. package/esm2022/lib/components/add-payment/add-payment.component.mjs +16 -36
  4. package/esm2022/lib/components/address/address.component.mjs +81 -267
  5. package/esm2022/lib/components/bank-details/bank-details.component.mjs +123 -47
  6. package/esm2022/lib/components/contact-us/contact-us.component.mjs +16 -4
  7. package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +9 -3
  8. package/esm2022/lib/components/dashboard-card/dashboard-card.component.mjs +4 -32
  9. package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +15 -30
  10. package/esm2022/lib/components/disclosure/disclosure.component.mjs +1 -1
  11. package/esm2022/lib/components/dropdown/dropdown.component.mjs +4 -4
  12. package/esm2022/lib/components/dropdown/dropdown.interface.mjs +1 -1
  13. package/esm2022/lib/components/email-update/email-update.component.mjs +36 -16
  14. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +435 -319
  15. package/esm2022/lib/components/error/error.component.mjs +5 -22
  16. package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +1 -1
  17. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +49 -178
  18. package/esm2022/lib/components/footer/footer.component.mjs +67 -90
  19. package/esm2022/lib/components/header/header.component.mjs +136 -456
  20. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +13 -13
  21. package/esm2022/lib/components/info/info.component.mjs +12 -4
  22. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +1 -1
  23. package/esm2022/lib/components/job-title/job-title.component.mjs +94 -93
  24. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +331 -142
  25. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +340 -0
  26. package/esm2022/lib/components/link/link.component.mjs +1 -1
  27. package/esm2022/lib/components/menu/menu.component.mjs +53 -60
  28. package/esm2022/lib/components/mfa/mfa.component.mjs +188 -116
  29. package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +18 -11
  30. package/esm2022/lib/components/mfa2/mfa2.component.mjs +261 -0
  31. package/esm2022/lib/components/money-expect/money-expect.component.mjs +36 -148
  32. package/esm2022/lib/components/profile/profile.component.mjs +338 -748
  33. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +33 -110
  34. package/esm2022/lib/components/questionnaire/AppValidators.mjs +47 -296
  35. package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +65 -110
  36. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +129 -386
  37. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +70 -72
  38. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +1085 -862
  39. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +565 -186
  40. package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +22 -28
  41. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +29 -113
  42. package/esm2022/lib/components/questionnaire/question-control.service.mjs +1 -2
  43. package/esm2022/lib/components/questionnaire/question.service.mjs +7 -5
  44. package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +29 -15
  45. package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +237 -497
  46. package/esm2022/lib/components/search-employer/search-employer.component.mjs +27 -155
  47. package/esm2022/lib/components/security-question/security-question.component.mjs +189 -0
  48. package/esm2022/lib/components/sign-ssn/sign-ssn.component.mjs +3 -3
  49. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +4 -4
  50. package/esm2022/lib/components/user-login/user-login.component.mjs +300 -116
  51. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +241 -612
  52. package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +59 -114
  53. package/esm2022/lib/guards/auth.guard.mjs +2 -50
  54. package/esm2022/lib/guards/no-login/no-login.guard.mjs +1 -1
  55. package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +3 -51
  56. package/esm2022/lib/interceptors/header-interceptor/http-header.interceptor.mjs +1 -1
  57. package/esm2022/lib/models/EmployerDetailSearchResult.mjs +1 -1
  58. package/esm2022/lib/models/LexisNexisAccountCreationModel.mjs +2 -0
  59. package/esm2022/lib/models/LexisNexisAuthSelectionRequestModel.mjs +2 -0
  60. package/esm2022/lib/models/LexisNexisAuthSelectionResponseModel.mjs +2 -0
  61. package/esm2022/lib/models/LexisNexisEnabledResponseModel.mjs +2 -0
  62. package/esm2022/lib/models/LexisNexisResponseModel.mjs +3 -0
  63. package/esm2022/lib/models/LibConstants.mjs +6 -45
  64. package/esm2022/lib/models/PartialEmploymentModel.mjs +3 -0
  65. package/esm2022/lib/models/PaymentComponentModel.mjs +1 -1
  66. package/esm2022/lib/models/SecurityQuestionModel.mjs +3 -0
  67. package/esm2022/lib/models/dashboard-model.mjs +1 -1
  68. package/esm2022/lib/models/dependent.model.mjs +1 -1
  69. package/esm2022/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +1 -1
  70. package/esm2022/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +1 -2
  71. package/esm2022/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +1 -1
  72. package/esm2022/lib/models/questionnaire/ComboModel.mjs +179 -101
  73. package/esm2022/lib/models/questionnaire/ElementsModel.mjs +1 -1
  74. package/esm2022/lib/models/questionnaire/LegalDiscaimarModel.mjs +1 -1
  75. package/esm2022/lib/models/questionnaire/StatusModel.mjs +1 -1
  76. package/esm2022/lib/ngx-reusa-app-lib.module.mjs +23 -135
  77. package/esm2022/lib/pages/BasePage.mjs +23 -4
  78. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +18 -22
  79. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +124 -142
  80. package/esm2022/lib/pages/common/landing/landing.component.mjs +8 -7
  81. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +4 -4
  82. package/esm2022/lib/pages/common/login/login.component.mjs +5 -6
  83. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +14 -14
  84. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +5 -5
  85. package/esm2022/lib/pages/popovers/language/language.page.mjs +1 -1
  86. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +4 -4
  87. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +2 -7
  88. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +1 -1
  89. package/esm2022/lib/services/base-service.mjs +1 -4
  90. package/esm2022/lib/services/chatbot/chatbot.service.mjs +2 -1
  91. package/esm2022/lib/services/claimant-service/claimant-usps-redirect.service.mjs +36 -0
  92. package/esm2022/lib/services/claimant-service/claimant.service.mjs +13 -7
  93. package/esm2022/lib/services/claims/claims.service.mjs +14 -105
  94. package/esm2022/lib/services/help/help.service.mjs +1 -1
  95. package/esm2022/lib/services/lexis-nexis/lexis.nexis.service.mjs +60 -0
  96. package/esm2022/lib/services/logger/logger.service.mjs +1 -1
  97. package/esm2022/lib/services/login/login.service.mjs +11 -29
  98. package/esm2022/lib/services/ovp/ovp.service.mjs +43 -0
  99. package/esm2022/lib/services/questionnaire/questionnaire.service.mjs +1 -4
  100. package/esm2022/lib/services/questionnaire/validation.service.mjs +1 -4
  101. package/esm2022/lib/services/security-service/security.service.mjs +6 -23
  102. package/esm2022/lib/services/util/util.service.mjs +5 -61
  103. package/esm2022/lib/services/weekly-cert/weekly-cert-v2.service.mjs +14 -186
  104. package/esm2022/lib/validations/AppRegex.mjs +3 -1
  105. package/esm2022/lib/validations/AppValidators.mjs +62 -78
  106. package/esm2022/public-api.mjs +5 -47
  107. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +25008 -44522
  108. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  109. package/lib/components/add-employer/add-employer.component.d.ts +52 -85
  110. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  111. package/lib/components/add-participant/add-participant.component.d.ts +2 -11
  112. package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
  113. package/lib/components/add-payment/add-payment.component.d.ts +2 -7
  114. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  115. package/lib/components/address/address.component.d.ts +5 -41
  116. package/lib/components/address/address.component.d.ts.map +1 -1
  117. package/lib/components/bank-details/bank-details.component.d.ts +6 -0
  118. package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
  119. package/lib/components/correspondence-download/correspondence-download.component.d.ts.map +1 -1
  120. package/lib/components/dashboard-card/dashboard-card.component.d.ts.map +1 -1
  121. package/lib/components/email-update/email-update.component.d.ts +7 -1
  122. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  123. package/lib/components/employer-grid/employer-grid.component.d.ts +12 -1
  124. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  125. package/lib/components/error/error.component.d.ts +2 -3
  126. package/lib/components/error/error.component.d.ts.map +1 -1
  127. package/lib/components/file-uploader/file-uploader.component.d.ts +1 -5
  128. package/lib/components/file-uploader/file-uploader.component.d.ts.map +1 -1
  129. package/lib/components/footer/footer.component.d.ts.map +1 -1
  130. package/lib/components/header/header.component.d.ts +2 -17
  131. package/lib/components/header/header.component.d.ts.map +1 -1
  132. package/lib/components/job-title/job-title.component.d.ts +21 -22
  133. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  134. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +2 -5
  135. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  136. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts +59 -0
  137. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -0
  138. package/lib/components/menu/menu.component.d.ts +1 -2
  139. package/lib/components/menu/menu.component.d.ts.map +1 -1
  140. package/lib/components/mfa/mfa.component.d.ts +14 -7
  141. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  142. package/lib/components/mfa-popup/mfa-popup.component.d.ts +8 -6
  143. package/lib/components/mfa-popup/mfa-popup.component.d.ts.map +1 -1
  144. package/lib/components/mfa2/mfa2.component.d.ts +48 -0
  145. package/lib/components/mfa2/mfa2.component.d.ts.map +1 -0
  146. package/lib/components/money-expect/money-expect.component.d.ts +4 -15
  147. package/lib/components/money-expect/money-expect.component.d.ts.map +1 -1
  148. package/lib/components/profile/profile.component.d.ts +49 -82
  149. package/lib/components/profile/profile.component.d.ts.map +1 -1
  150. package/lib/components/profile-redirect/profile-redirect.component.d.ts +2 -9
  151. package/lib/components/profile-redirect/profile-redirect.component.d.ts.map +1 -1
  152. package/lib/components/questionnaire/AppValidators.d.ts +0 -1
  153. package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
  154. package/lib/components/questionnaire/account-success/account-success.page.d.ts +10 -13
  155. package/lib/components/questionnaire/account-success/account-success.page.d.ts.map +1 -1
  156. package/lib/components/questionnaire/common-success/common-success.page.d.ts +0 -7
  157. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  158. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts +1 -3
  159. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts.map +1 -1
  160. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +34 -31
  161. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  162. package/lib/components/questionnaire/dynamic-form.component.d.ts +34 -10
  163. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  164. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +7 -0
  165. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
  166. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +1 -7
  167. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
  168. package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
  169. package/lib/components/questionnaire/question.service.d.ts +1 -0
  170. package/lib/components/questionnaire/question.service.d.ts.map +1 -1
  171. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +7 -1
  172. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
  173. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +3 -11
  174. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts.map +1 -1
  175. package/lib/components/search-employer/search-employer.component.d.ts +4 -5
  176. package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
  177. package/lib/components/security-question/security-question.component.d.ts +37 -0
  178. package/lib/components/security-question/security-question.component.d.ts.map +1 -0
  179. package/lib/components/user-login/user-login.component.d.ts +32 -5
  180. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  181. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +3 -26
  182. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  183. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +3 -9
  184. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts.map +1 -1
  185. package/lib/guards/auth.guard.d.ts.map +1 -1
  186. package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts.map +1 -1
  187. package/lib/models/EmployerDetailSearchResult.d.ts +1 -4
  188. package/lib/models/EmployerDetailSearchResult.d.ts.map +1 -1
  189. package/lib/models/LexisNexisAccountCreationModel.d.ts +15 -0
  190. package/lib/models/LexisNexisAccountCreationModel.d.ts.map +1 -0
  191. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts +16 -0
  192. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts.map +1 -0
  193. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts +39 -0
  194. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts.map +1 -0
  195. package/lib/models/LexisNexisEnabledResponseModel.d.ts +5 -0
  196. package/lib/models/LexisNexisEnabledResponseModel.d.ts.map +1 -0
  197. package/lib/models/LexisNexisResponseModel.d.ts +7 -0
  198. package/lib/models/LexisNexisResponseModel.d.ts.map +1 -0
  199. package/lib/models/LibConstants.d.ts +1 -40
  200. package/lib/models/LibConstants.d.ts.map +1 -1
  201. package/lib/models/PartialEmploymentModel.d.ts +6 -0
  202. package/lib/models/PartialEmploymentModel.d.ts.map +1 -0
  203. package/lib/models/PaymentComponentModel.d.ts +1 -1
  204. package/lib/models/PaymentComponentModel.d.ts.map +1 -1
  205. package/lib/models/SecurityQuestionModel.d.ts +7 -0
  206. package/lib/models/SecurityQuestionModel.d.ts.map +1 -0
  207. package/lib/models/dashboard-model.d.ts +0 -22
  208. package/lib/models/dashboard-model.d.ts.map +1 -1
  209. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +0 -3
  210. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts.map +1 -1
  211. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +4 -13
  212. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts.map +1 -1
  213. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +1 -4
  214. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts.map +1 -1
  215. package/lib/models/questionnaire/ComboModel.d.ts +16 -28
  216. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  217. package/lib/models/questionnaire/ElementsModel.d.ts +1 -0
  218. package/lib/models/questionnaire/ElementsModel.d.ts.map +1 -1
  219. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +0 -2
  220. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts.map +1 -1
  221. package/lib/models/questionnaire/StatusModel.d.ts +0 -1
  222. package/lib/models/questionnaire/StatusModel.d.ts.map +1 -1
  223. package/lib/ngx-reusa-app-lib.module.d.ts +86 -124
  224. package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
  225. package/lib/pages/BasePage.d.ts +6 -3
  226. package/lib/pages/BasePage.d.ts.map +1 -1
  227. package/lib/pages/common/change-password/change-password.page.d.ts +0 -3
  228. package/lib/pages/common/change-password/change-password.page.d.ts.map +1 -1
  229. package/lib/pages/common/login/login.component.d.ts.map +1 -1
  230. package/lib/pages/popovers/my-profile/my-profile.page.d.ts.map +1 -1
  231. package/lib/services/base-service.d.ts +0 -12
  232. package/lib/services/base-service.d.ts.map +1 -1
  233. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts +16 -0
  234. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts.map +1 -0
  235. package/lib/services/claimant-service/claimant.service.d.ts +6 -5
  236. package/lib/services/claimant-service/claimant.service.d.ts.map +1 -1
  237. package/lib/services/claims/claims.service.d.ts +5 -39
  238. package/lib/services/claims/claims.service.d.ts.map +1 -1
  239. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts +26 -0
  240. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts.map +1 -0
  241. package/lib/services/login/login.service.d.ts +3 -5
  242. package/lib/services/login/login.service.d.ts.map +1 -1
  243. package/lib/services/ovp/ovp.service.d.ts +17 -0
  244. package/lib/services/ovp/ovp.service.d.ts.map +1 -0
  245. package/lib/services/questionnaire/questionnaire.service.d.ts +0 -1
  246. package/lib/services/questionnaire/questionnaire.service.d.ts.map +1 -1
  247. package/lib/services/questionnaire/validation.service.d.ts +0 -3
  248. package/lib/services/questionnaire/validation.service.d.ts.map +1 -1
  249. package/lib/services/security-service/security.service.d.ts +4 -12
  250. package/lib/services/security-service/security.service.d.ts.map +1 -1
  251. package/lib/services/util/util.service.d.ts +0 -6
  252. package/lib/services/util/util.service.d.ts.map +1 -1
  253. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts +5 -47
  254. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts.map +1 -1
  255. package/lib/validations/AppRegex.d.ts +2 -0
  256. package/lib/validations/AppRegex.d.ts.map +1 -1
  257. package/lib/validations/AppValidators.d.ts +24 -20
  258. package/lib/validations/AppValidators.d.ts.map +1 -1
  259. package/package.json +2 -2
  260. package/public-api.d.ts +4 -46
  261. package/public-api.d.ts.map +1 -1
  262. package/esm2022/lib/components/add-wage/add-wage.component.mjs +0 -161
  263. package/esm2022/lib/components/address-popup/address-popup.component.mjs +0 -97
  264. package/esm2022/lib/components/address-suggestion/address-suggestion.component.mjs +0 -289
  265. package/esm2022/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.mjs +0 -245
  266. package/esm2022/lib/components/associate-ssn/associate-ssn.component.mjs +0 -203
  267. package/esm2022/lib/components/claim-info/claim-info.component.mjs +0 -408
  268. package/esm2022/lib/components/dua-request-page/dua-request-page.component.mjs +0 -596
  269. package/esm2022/lib/components/dua-request-popup/dua-request-popup.component.mjs +0 -356
  270. package/esm2022/lib/components/employer-info/employer-info.component.mjs +0 -319
  271. package/esm2022/lib/components/employer-pay/employer-pay.component.mjs +0 -238
  272. package/esm2022/lib/components/employer-pay-grid/employer-pay-grid.component.mjs +0 -302
  273. package/esm2022/lib/components/farm-usage/farm-usage.component.mjs +0 -172
  274. package/esm2022/lib/components/gross-earnings/gross-earnings.component.mjs +0 -201
  275. package/esm2022/lib/components/history-page/history-page.component.mjs +0 -571
  276. package/esm2022/lib/components/idme/idme.component.mjs +0 -84
  277. package/esm2022/lib/components/offline-add-employer/offline-add-employer.component.mjs +0 -3661
  278. package/esm2022/lib/components/offline-bank-details/offline-bank-details.component.mjs +0 -258
  279. package/esm2022/lib/components/offline-employer-grid/offline-employer-grid.component.mjs +0 -853
  280. package/esm2022/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.mjs +0 -251
  281. package/esm2022/lib/components/proof-of-anything/proof-of-anything.component.mjs +0 -261
  282. package/esm2022/lib/components/proof-of-document-upload/proof-of-document-upload.component.mjs +0 -560
  283. package/esm2022/lib/components/scrollable-text/scrollable-text.component.mjs +0 -25
  284. package/esm2022/lib/components/sms/sms.component.mjs +0 -336
  285. package/esm2022/lib/components/wage-calculator/wage-calculator.component.mjs +0 -527
  286. package/esm2022/lib/components/wage-grid/wage-grid.component.mjs +0 -274
  287. package/esm2022/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.mjs +0 -147
  288. package/esm2022/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.mjs +0 -167
  289. package/esm2022/lib/components/weekly-certification/weekly-certification.component.mjs +0 -806
  290. package/esm2022/lib/components/weekly-confirmation/confirmation.component.mjs +0 -129
  291. package/esm2022/lib/components/weekly-interim-confirmation/interim-confirmation.component.mjs +0 -136
  292. package/esm2022/lib/components/weekly-summary-v2/summary.component-v2.mjs +0 -72
  293. package/esm2022/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.mjs +0 -50
  294. package/esm2022/lib/components/weekly-work-search-counter/work-search-counter.component.mjs +0 -92
  295. package/esm2022/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.mjs +0 -1190
  296. package/esm2022/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.mjs +0 -684
  297. package/esm2022/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.mjs +0 -524
  298. package/esm2022/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.mjs +0 -394
  299. package/esm2022/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.mjs +0 -640
  300. package/esm2022/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.mjs +0 -33
  301. package/esm2022/lib/enums/AddressValidationResponseEnum.mjs +0 -9
  302. package/esm2022/lib/enums/AddressValidationSourceFunctionEnum.mjs +0 -5
  303. package/esm2022/lib/models/ActiveClaimModel.mjs +0 -3
  304. package/esm2022/lib/models/CountyModel.mjs +0 -3
  305. package/esm2022/lib/models/DuaAppDataModel.mjs +0 -3
  306. package/esm2022/lib/models/DuaRequestModel.mjs +0 -3
  307. package/esm2022/lib/models/DuaRetroWeeksComponentModel.mjs +0 -6
  308. package/esm2022/lib/models/EmployerInfoComponentModel.mjs +0 -4
  309. package/esm2022/lib/models/EmployerPayInfoModel.mjs +0 -6
  310. package/esm2022/lib/models/FarmUsageComponentModel.mjs +0 -2
  311. package/esm2022/lib/models/GrossEarningsModel.mjs +0 -3
  312. package/esm2022/lib/models/HelpConstants.mjs +0 -5
  313. package/esm2022/lib/models/LexisNexisOtpDetailsResponseModel.mjs +0 -3
  314. package/esm2022/lib/models/ReasonSeparationRequestModel.mjs +0 -3
  315. package/esm2022/lib/models/RetroWeeksModel.mjs +0 -3
  316. package/esm2022/lib/models/SecurityQuestionAnswerModel.mjs +0 -3
  317. package/esm2022/lib/models/SendOtpRequestModel.mjs +0 -3
  318. package/esm2022/lib/models/VerifyOtpRequestModel.mjs +0 -3
  319. package/esm2022/lib/models/WageCalculatorModel.mjs +0 -3
  320. package/esm2022/lib/models/WageInfoModel.mjs +0 -4
  321. package/esm2022/lib/models/addressValidation/AddressRecommendationModel.mjs +0 -3
  322. package/esm2022/lib/models/addressValidation/AddressValidationRequestComponentModel.mjs +0 -3
  323. package/esm2022/lib/models/addressValidation/AddressValidationResponseComponentModel.mjs +0 -3
  324. package/esm2022/lib/models/addressValidation/AddressValidationReturnComponentModel.mjs +0 -3
  325. package/esm2022/lib/models/combo-model.mjs +0 -343
  326. package/esm2022/lib/models/fileupload/DocUploadModel.mjs +0 -7
  327. package/esm2022/lib/models/fileupload/EmployerDataModel.mjs +0 -3
  328. package/esm2022/lib/models/fileupload/FileObject.mjs +0 -3
  329. package/esm2022/lib/models/fileupload/FileObjectArray.mjs +0 -7
  330. package/esm2022/lib/models/questionnaire/AppealParticipantModel.mjs +0 -8
  331. package/esm2022/lib/models/questionnaire/ScrollableTextModel.mjs +0 -3
  332. package/esm2022/lib/models/questionnaire/WbaHelperTextModel.mjs +0 -3
  333. package/esm2022/lib/models/weekly-cert/WorkSearchWaiverModel.mjs +0 -3
  334. package/esm2022/lib/models/weekly-cert/address-detail-model.mjs +0 -2
  335. package/esm2022/lib/models/weekly-cert/admin-leave-details-model.mjs +0 -7
  336. package/esm2022/lib/models/weekly-cert/employer-info-v2-model.mjs +0 -7
  337. package/esm2022/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.mjs +0 -6
  338. package/esm2022/lib/models/weekly-cert/weekly-certification-v2-model.mjs +0 -34
  339. package/esm2022/lib/models/weekly-cert/work-search-record-v2-model.mjs +0 -15
  340. package/esm2022/lib/models/weekly-cert/work-search-v2-model.mjs +0 -11
  341. package/esm2022/lib/pipes/format-worksearch/format-worksearch.pipe.mjs +0 -101
  342. package/esm2022/lib/services/address-validation-service/address-validation.service.mjs +0 -151
  343. package/esm2022/lib/services/appeal/appeal.service.mjs +0 -37
  344. package/esm2022/lib/services/birt-service/birt.service.mjs +0 -57
  345. package/esm2022/lib/services/employer/employer-service.mjs +0 -35
  346. package/esm2022/lib/services/event-service/event-service.mjs +0 -44
  347. package/esm2022/lib/services/offline-claims/offline-claims.service.mjs +0 -327
  348. package/esm2022/lib/services/weekly-cert/review.service.mjs +0 -101
  349. package/esm2022/lib/services/weekly-cert/weekly-cert.service.mjs +0 -37
  350. package/esm2022/lib/services/weekly-cert/work-search.service.mjs +0 -58
  351. package/lib/components/add-wage/add-wage.component.d.ts +0 -30
  352. package/lib/components/add-wage/add-wage.component.d.ts.map +0 -1
  353. package/lib/components/address-popup/address-popup.component.d.ts +0 -16
  354. package/lib/components/address-popup/address-popup.component.d.ts.map +0 -1
  355. package/lib/components/address-suggestion/address-suggestion.component.d.ts +0 -43
  356. package/lib/components/address-suggestion/address-suggestion.component.d.ts.map +0 -1
  357. package/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.d.ts +0 -37
  358. package/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.d.ts.map +0 -1
  359. package/lib/components/associate-ssn/associate-ssn.component.d.ts +0 -33
  360. package/lib/components/associate-ssn/associate-ssn.component.d.ts.map +0 -1
  361. package/lib/components/claim-info/claim-info.component.d.ts +0 -49
  362. package/lib/components/claim-info/claim-info.component.d.ts.map +0 -1
  363. package/lib/components/dua-request-page/dua-request-page.component.d.ts +0 -74
  364. package/lib/components/dua-request-page/dua-request-page.component.d.ts.map +0 -1
  365. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts +0 -61
  366. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts.map +0 -1
  367. package/lib/components/employer-info/employer-info.component.d.ts +0 -50
  368. package/lib/components/employer-info/employer-info.component.d.ts.map +0 -1
  369. package/lib/components/employer-pay/employer-pay.component.d.ts +0 -51
  370. package/lib/components/employer-pay/employer-pay.component.d.ts.map +0 -1
  371. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts +0 -43
  372. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts.map +0 -1
  373. package/lib/components/farm-usage/farm-usage.component.d.ts +0 -33
  374. package/lib/components/farm-usage/farm-usage.component.d.ts.map +0 -1
  375. package/lib/components/gross-earnings/gross-earnings.component.d.ts +0 -42
  376. package/lib/components/gross-earnings/gross-earnings.component.d.ts.map +0 -1
  377. package/lib/components/history-page/history-page.component.d.ts +0 -80
  378. package/lib/components/history-page/history-page.component.d.ts.map +0 -1
  379. package/lib/components/idme/idme.component.d.ts +0 -19
  380. package/lib/components/idme/idme.component.d.ts.map +0 -1
  381. package/lib/components/offline-add-employer/offline-add-employer.component.d.ts +0 -311
  382. package/lib/components/offline-add-employer/offline-add-employer.component.d.ts.map +0 -1
  383. package/lib/components/offline-bank-details/offline-bank-details.component.d.ts +0 -33
  384. package/lib/components/offline-bank-details/offline-bank-details.component.d.ts.map +0 -1
  385. package/lib/components/offline-employer-grid/offline-employer-grid.component.d.ts +0 -97
  386. package/lib/components/offline-employer-grid/offline-employer-grid.component.d.ts.map +0 -1
  387. package/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.d.ts +0 -33
  388. package/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.d.ts.map +0 -1
  389. package/lib/components/proof-of-anything/proof-of-anything.component.d.ts +0 -54
  390. package/lib/components/proof-of-anything/proof-of-anything.component.d.ts.map +0 -1
  391. package/lib/components/proof-of-document-upload/proof-of-document-upload.component.d.ts +0 -74
  392. package/lib/components/proof-of-document-upload/proof-of-document-upload.component.d.ts.map +0 -1
  393. package/lib/components/scrollable-text/scrollable-text.component.d.ts +0 -11
  394. package/lib/components/scrollable-text/scrollable-text.component.d.ts.map +0 -1
  395. package/lib/components/sms/sms.component.d.ts +0 -63
  396. package/lib/components/sms/sms.component.d.ts.map +0 -1
  397. package/lib/components/wage-calculator/wage-calculator.component.d.ts +0 -44
  398. package/lib/components/wage-calculator/wage-calculator.component.d.ts.map +0 -1
  399. package/lib/components/wage-grid/wage-grid.component.d.ts +0 -43
  400. package/lib/components/wage-grid/wage-grid.component.d.ts.map +0 -1
  401. package/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.d.ts +0 -28
  402. package/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.d.ts.map +0 -1
  403. package/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.d.ts +0 -28
  404. package/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.d.ts.map +0 -1
  405. package/lib/components/weekly-certification/weekly-certification.component.d.ts +0 -101
  406. package/lib/components/weekly-certification/weekly-certification.component.d.ts.map +0 -1
  407. package/lib/components/weekly-confirmation/confirmation.component.d.ts +0 -21
  408. package/lib/components/weekly-confirmation/confirmation.component.d.ts.map +0 -1
  409. package/lib/components/weekly-interim-confirmation/interim-confirmation.component.d.ts +0 -34
  410. package/lib/components/weekly-interim-confirmation/interim-confirmation.component.d.ts.map +0 -1
  411. package/lib/components/weekly-summary-v2/summary.component-v2.d.ts +0 -17
  412. package/lib/components/weekly-summary-v2/summary.component-v2.d.ts.map +0 -1
  413. package/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.d.ts +0 -10
  414. package/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.d.ts.map +0 -1
  415. package/lib/components/weekly-work-search-counter/work-search-counter.component.d.ts +0 -17
  416. package/lib/components/weekly-work-search-counter/work-search-counter.component.d.ts.map +0 -1
  417. package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts +0 -105
  418. package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts.map +0 -1
  419. package/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.d.ts +0 -71
  420. package/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.d.ts.map +0 -1
  421. package/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.d.ts +0 -59
  422. package/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.d.ts.map +0 -1
  423. package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts +0 -47
  424. package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts.map +0 -1
  425. package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts +0 -78
  426. package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts.map +0 -1
  427. package/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.d.ts +0 -8
  428. package/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.d.ts.map +0 -1
  429. package/lib/enums/AddressValidationResponseEnum.d.ts +0 -8
  430. package/lib/enums/AddressValidationResponseEnum.d.ts.map +0 -1
  431. package/lib/enums/AddressValidationSourceFunctionEnum.d.ts +0 -4
  432. package/lib/enums/AddressValidationSourceFunctionEnum.d.ts.map +0 -1
  433. package/lib/models/ActiveClaimModel.d.ts +0 -8
  434. package/lib/models/ActiveClaimModel.d.ts.map +0 -1
  435. package/lib/models/CountyModel.d.ts +0 -8
  436. package/lib/models/CountyModel.d.ts.map +0 -1
  437. package/lib/models/DuaAppDataModel.d.ts +0 -5
  438. package/lib/models/DuaAppDataModel.d.ts.map +0 -1
  439. package/lib/models/DuaRequestModel.d.ts +0 -10
  440. package/lib/models/DuaRequestModel.d.ts.map +0 -1
  441. package/lib/models/DuaRetroWeeksComponentModel.d.ts +0 -5
  442. package/lib/models/DuaRetroWeeksComponentModel.d.ts.map +0 -1
  443. package/lib/models/EmployerInfoComponentModel.d.ts +0 -9
  444. package/lib/models/EmployerInfoComponentModel.d.ts.map +0 -1
  445. package/lib/models/EmployerPayInfoModel.d.ts +0 -20
  446. package/lib/models/EmployerPayInfoModel.d.ts.map +0 -1
  447. package/lib/models/FarmUsageComponentModel.d.ts +0 -10
  448. package/lib/models/FarmUsageComponentModel.d.ts.map +0 -1
  449. package/lib/models/GrossEarningsModel.d.ts +0 -6
  450. package/lib/models/GrossEarningsModel.d.ts.map +0 -1
  451. package/lib/models/HelpConstants.d.ts +0 -5
  452. package/lib/models/HelpConstants.d.ts.map +0 -1
  453. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts +0 -7
  454. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts.map +0 -1
  455. package/lib/models/ReasonSeparationRequestModel.d.ts +0 -7
  456. package/lib/models/ReasonSeparationRequestModel.d.ts.map +0 -1
  457. package/lib/models/RetroWeeksModel.d.ts +0 -11
  458. package/lib/models/RetroWeeksModel.d.ts.map +0 -1
  459. package/lib/models/SecurityQuestionAnswerModel.d.ts +0 -7
  460. package/lib/models/SecurityQuestionAnswerModel.d.ts.map +0 -1
  461. package/lib/models/SendOtpRequestModel.d.ts +0 -12
  462. package/lib/models/SendOtpRequestModel.d.ts.map +0 -1
  463. package/lib/models/VerifyOtpRequestModel.d.ts +0 -8
  464. package/lib/models/VerifyOtpRequestModel.d.ts.map +0 -1
  465. package/lib/models/WageCalculatorModel.d.ts +0 -15
  466. package/lib/models/WageCalculatorModel.d.ts.map +0 -1
  467. package/lib/models/WageInfoModel.d.ts +0 -9
  468. package/lib/models/WageInfoModel.d.ts.map +0 -1
  469. package/lib/models/addressValidation/AddressRecommendationModel.d.ts +0 -12
  470. package/lib/models/addressValidation/AddressRecommendationModel.d.ts.map +0 -1
  471. package/lib/models/addressValidation/AddressValidationRequestComponentModel.d.ts +0 -11
  472. package/lib/models/addressValidation/AddressValidationRequestComponentModel.d.ts.map +0 -1
  473. package/lib/models/addressValidation/AddressValidationResponseComponentModel.d.ts +0 -6
  474. package/lib/models/addressValidation/AddressValidationResponseComponentModel.d.ts.map +0 -1
  475. package/lib/models/addressValidation/AddressValidationReturnComponentModel.d.ts +0 -16
  476. package/lib/models/addressValidation/AddressValidationReturnComponentModel.d.ts.map +0 -1
  477. package/lib/models/combo-model.d.ts +0 -42
  478. package/lib/models/combo-model.d.ts.map +0 -1
  479. package/lib/models/fileupload/DocUploadModel.d.ts +0 -22
  480. package/lib/models/fileupload/DocUploadModel.d.ts.map +0 -1
  481. package/lib/models/fileupload/EmployerDataModel.d.ts +0 -6
  482. package/lib/models/fileupload/EmployerDataModel.d.ts.map +0 -1
  483. package/lib/models/fileupload/FileObject.d.ts +0 -8
  484. package/lib/models/fileupload/FileObject.d.ts.map +0 -1
  485. package/lib/models/fileupload/FileObjectArray.d.ts +0 -8
  486. package/lib/models/fileupload/FileObjectArray.d.ts.map +0 -1
  487. package/lib/models/questionnaire/AppealParticipantModel.d.ts +0 -17
  488. package/lib/models/questionnaire/AppealParticipantModel.d.ts.map +0 -1
  489. package/lib/models/questionnaire/ScrollableTextModel.d.ts +0 -4
  490. package/lib/models/questionnaire/ScrollableTextModel.d.ts.map +0 -1
  491. package/lib/models/questionnaire/WbaHelperTextModel.d.ts +0 -4
  492. package/lib/models/questionnaire/WbaHelperTextModel.d.ts.map +0 -1
  493. package/lib/models/weekly-cert/WorkSearchWaiverModel.d.ts +0 -9
  494. package/lib/models/weekly-cert/WorkSearchWaiverModel.d.ts.map +0 -1
  495. package/lib/models/weekly-cert/address-detail-model.d.ts +0 -14
  496. package/lib/models/weekly-cert/address-detail-model.d.ts.map +0 -1
  497. package/lib/models/weekly-cert/admin-leave-details-model.d.ts +0 -15
  498. package/lib/models/weekly-cert/admin-leave-details-model.d.ts.map +0 -1
  499. package/lib/models/weekly-cert/employer-info-v2-model.d.ts +0 -27
  500. package/lib/models/weekly-cert/employer-info-v2-model.d.ts.map +0 -1
  501. package/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.d.ts +0 -57
  502. package/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.d.ts.map +0 -1
  503. package/lib/models/weekly-cert/weekly-certification-v2-model.d.ts +0 -59
  504. package/lib/models/weekly-cert/weekly-certification-v2-model.d.ts.map +0 -1
  505. package/lib/models/weekly-cert/work-search-record-v2-model.d.ts +0 -66
  506. package/lib/models/weekly-cert/work-search-record-v2-model.d.ts.map +0 -1
  507. package/lib/models/weekly-cert/work-search-v2-model.d.ts +0 -18
  508. package/lib/models/weekly-cert/work-search-v2-model.d.ts.map +0 -1
  509. package/lib/pipes/format-worksearch/format-worksearch.pipe.d.ts +0 -14
  510. package/lib/pipes/format-worksearch/format-worksearch.pipe.d.ts.map +0 -1
  511. package/lib/services/address-validation-service/address-validation.service.d.ts +0 -44
  512. package/lib/services/address-validation-service/address-validation.service.d.ts.map +0 -1
  513. package/lib/services/appeal/appeal.service.d.ts +0 -16
  514. package/lib/services/appeal/appeal.service.d.ts.map +0 -1
  515. package/lib/services/birt-service/birt.service.d.ts +0 -17
  516. package/lib/services/birt-service/birt.service.d.ts.map +0 -1
  517. package/lib/services/employer/employer-service.d.ts +0 -16
  518. package/lib/services/employer/employer-service.d.ts.map +0 -1
  519. package/lib/services/event-service/event-service.d.ts +0 -20
  520. package/lib/services/event-service/event-service.d.ts.map +0 -1
  521. package/lib/services/offline-claims/offline-claims.service.d.ts +0 -64
  522. package/lib/services/offline-claims/offline-claims.service.d.ts.map +0 -1
  523. package/lib/services/weekly-cert/review.service.d.ts +0 -23
  524. package/lib/services/weekly-cert/review.service.d.ts.map +0 -1
  525. package/lib/services/weekly-cert/weekly-cert.service.d.ts +0 -17
  526. package/lib/services/weekly-cert/weekly-cert.service.d.ts.map +0 -1
  527. package/lib/services/weekly-cert/work-search.service.d.ts +0 -26
  528. package/lib/services/weekly-cert/work-search.service.d.ts.map +0 -1
@@ -1,765 +1,374 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
1
+ import { Component, EventEmitter, Output, ViewChild } from '@angular/core';
2
2
  import { ComboOption } from '../../models/questionnaire/ComboModel';
3
- import { Validators } from '@angular/forms';
4
- import { BasePage } from '../../pages/BasePage';
5
- import { LibConstants } from '../../models/LibConstants';
6
- import { AddressPopupComponent } from '../address-popup/address-popup.component';
7
3
  import * as i0 from "@angular/core";
8
- import * as i1 from "../../services/logger/logger.service";
4
+ import * as i1 from "../../services/util/util.service";
9
5
  import * as i2 from "../../services/login/login.service";
10
- import * as i3 from "../../services/claimant-service/claimant.service";
11
- import * as i4 from "../../services/birt-service/birt.service";
12
- import * as i5 from "../../services/claims/claims.service";
13
- import * as i6 from "@ionic/angular";
14
- import * as i7 from "../../services/security-service/security.service";
15
- import * as i8 from "../../services/util/util.service";
16
- import * as i9 from "@angular/forms";
17
- import * as i10 from "@angular/platform-browser";
18
- import * as i11 from "@angular/common";
19
- import * as i12 from "primeng/api";
20
- import * as i13 from "@angular/material/form-field";
21
- import * as i14 from "primeng/dialog";
22
- import * as i15 from "primeng/inputtext";
23
- import * as i16 from "primeng/inputmask";
24
- import * as i17 from "primeng/selectbutton";
25
- import * as i18 from "../error/error.component";
26
- import * as i19 from "../questionnaire/form-builder/form-builder.page";
27
- import * as i20 from "@ngx-translate/core";
6
+ import * as i3 from "@ionic/angular";
7
+ import * as i4 from "../../services/claimant-service/claimant.service";
8
+ import * as i5 from "@angular/router";
9
+ import * as i6 from "../../services/claimant-service/claimant-usps-redirect.service";
10
+ import * as i7 from "../../services/lexis-nexis/lexis.nexis.service";
11
+ import * as i8 from "@angular/common";
12
+ import * as i9 from "primeng/api";
13
+ import * as i10 from "@angular/forms";
14
+ import * as i11 from "primeng/dialog";
15
+ import * as i12 from "primeng/selectbutton";
16
+ import * as i13 from "../questionnaire/form-builder/form-builder.page";
17
+ import * as i14 from "../security-question/security-question.component";
18
+ import * as i15 from "../lexis-nexis/lexis-nexis.component";
19
+ import * as i16 from "@ngx-translate/core";
28
20
  const _c0 = ["fb"];
29
- const _c1 = ["otpFormDirective"];
30
- const _c2 = ["securityQuestionFormDirective"];
31
- function ProfileComponent_ng_template_1_p_selectButton_9_Template(rf, ctx) { if (rf & 1) {
32
- const _r13 = i0.ɵɵgetCurrentView();
33
- i0.ɵɵelementStart(0, "p-selectButton", 11);
34
- i0.ɵɵlistener("ngModelChange", function ProfileComponent_ng_template_1_p_selectButton_9_Template_p_selectButton_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r12.selected = $event); })("onOptionClick", function ProfileComponent_ng_template_1_p_selectButton_9_Template_p_selectButton_onOptionClick_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r14 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r14.onValueChange($event)); });
35
- i0.ɵɵelementEnd();
36
- } if (rf & 2) {
37
- const ctx_r10 = i0.ɵɵnextContext(2);
38
- i0.ɵɵproperty("options", ctx_r10.profileOpts)("ngModel", ctx_r10.selected);
39
- } }
40
- function ProfileComponent_ng_template_1_p_selectButton_10_Template(rf, ctx) { if (rf & 1) {
41
- const _r16 = i0.ɵɵgetCurrentView();
42
- i0.ɵɵelementStart(0, "p-selectButton", 11);
43
- i0.ɵɵlistener("ngModelChange", function ProfileComponent_ng_template_1_p_selectButton_10_Template_p_selectButton_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r15.selected = $event); })("onOptionClick", function ProfileComponent_ng_template_1_p_selectButton_10_Template_p_selectButton_onOptionClick_0_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r17 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r17.onValueChange($event)); });
44
- i0.ɵɵelementEnd();
45
- } if (rf & 2) {
46
- const ctx_r11 = i0.ɵɵnextContext(2);
47
- i0.ɵɵproperty("options", ctx_r11.profileOptsIVR)("ngModel", ctx_r11.selected);
48
- } }
49
21
  function ProfileComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "ion-grid")(1, "ion-row")(2, "ion-col", 8);
22
+ const _r8 = i0.ɵɵgetCurrentView();
23
+ i0.ɵɵelementStart(0, "ion-grid")(1, "ion-row")(2, "ion-col", 7);
51
24
  i0.ɵɵtext(3);
52
25
  i0.ɵɵpipe(4, "translate");
53
- i0.ɵɵelementStart(5, "span", 9);
26
+ i0.ɵɵelementStart(5, "span", 8);
54
27
  i0.ɵɵtext(6);
55
28
  i0.ɵɵelementEnd()()();
56
- i0.ɵɵelementStart(7, "ion-row")(8, "ion-col");
57
- i0.ɵɵtemplate(9, ProfileComponent_ng_template_1_p_selectButton_9_Template, 1, 2, "p-selectButton", 10)(10, ProfileComponent_ng_template_1_p_selectButton_10_Template, 1, 2, "p-selectButton", 10);
58
- i0.ɵɵelementEnd()()();
29
+ i0.ɵɵelementStart(7, "ion-row")(8, "ion-col")(9, "p-selectButton", 9);
30
+ i0.ɵɵlistener("ngModelChange", function ProfileComponent_ng_template_1_Template_p_selectButton_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.selected = $event); })("onOptionClick", function ProfileComponent_ng_template_1_Template_p_selectButton_onOptionClick_9_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.onValueChange($event)); });
31
+ i0.ɵɵelementEnd()()()();
59
32
  } if (rf & 2) {
60
33
  const ctx_r0 = i0.ɵɵnextContext();
61
34
  i0.ɵɵadvance(3);
62
35
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 4, "Your Account"), " ");
63
36
  i0.ɵɵadvance(3);
64
- i0.ɵɵtextInterpolate1("(CLAIMANT ID ", ctx_r0.ls.getUser().claimantId, ")");
65
- i0.ɵɵadvance(3);
66
- i0.ɵɵproperty("ngIf", !ctx_r0.isME());
67
- i0.ɵɵadvance(1);
68
- i0.ɵɵproperty("ngIf", ctx_r0.isME());
69
- } }
70
- function ProfileComponent_div_2_app_form_builder_1_Template(rf, ctx) { if (rf & 1) {
71
- const _r24 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "app-form-builder", 14, 15);
73
- i0.ɵɵlistener("onError", function ProfileComponent_div_2_app_form_builder_1_Template_app_form_builder_onError_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.handleError($event)); })("onComplete", function ProfileComponent_div_2_app_form_builder_1_Template_app_form_builder_onComplete_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.success($event)); });
74
- i0.ɵɵelementEnd();
75
- } if (rf & 2) {
76
- const ctx_r18 = i0.ɵɵnextContext(2);
77
- i0.ɵɵproperty("flowKey", ctx_r18.selected)("showOnlyQuestion", true)("hideHeader", true)("hideFooter", true)("sizeXs", 12)("sizeSm", 12)("sizeMd", 12)("sizeLg", 12)("sizeXl", 12)("offsetXl", 0)("offsetLg", 0);
78
- } }
79
- function ProfileComponent_div_2_div_2_div_1_Template(rf, ctx) { if (rf & 1) {
80
- i0.ɵɵelementStart(0, "div", 17);
81
- i0.ɵɵelement(1, "ion-icon", 18);
82
- i0.ɵɵelementStart(2, "span");
83
- i0.ɵɵtext(3);
84
- i0.ɵɵelementEnd()();
85
- } if (rf & 2) {
86
- const ctx_r26 = i0.ɵɵnextContext(3);
37
+ i0.ɵɵtextInterpolate1("(CID ", ctx_r0.ls.getUser().claimantId, ")");
87
38
  i0.ɵɵadvance(3);
88
- i0.ɵɵtextInterpolate(ctx_r26.errorText);
89
- } }
90
- function ProfileComponent_div_2_div_2_app_form_builder_2_Template(rf, ctx) { if (rf & 1) {
91
- const _r30 = i0.ɵɵgetCurrentView();
92
- i0.ɵɵelementStart(0, "app-form-builder", 14, 15);
93
- i0.ɵɵlistener("onError", function ProfileComponent_div_2_div_2_app_form_builder_2_Template_app_form_builder_onError_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r29 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r29.handleError($event)); })("onComplete", function ProfileComponent_div_2_div_2_app_form_builder_2_Template_app_form_builder_onComplete_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r31 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r31.success($event)); });
94
- i0.ɵɵelementEnd();
95
- } if (rf & 2) {
96
- const ctx_r27 = i0.ɵɵnextContext(3);
97
- i0.ɵɵproperty("flowKey", ctx_r27.selected)("showOnlyQuestion", true)("hideHeader", true)("hideFooter", true)("sizeXs", 12)("sizeSm", 12)("sizeMd", 12)("sizeLg", 12)("sizeXl", 12)("offsetXl", 0)("offsetLg", 0);
98
- } }
99
- function ProfileComponent_div_2_div_2_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "div");
101
- i0.ɵɵtemplate(1, ProfileComponent_div_2_div_2_div_1_Template, 4, 1, "div", 16)(2, ProfileComponent_div_2_div_2_app_form_builder_2_Template, 2, 11, "app-form-builder", 13);
102
- i0.ɵɵelementEnd();
103
- } if (rf & 2) {
104
- const ctx_r19 = i0.ɵɵnextContext(2);
105
- i0.ɵɵadvance(1);
106
- i0.ɵɵproperty("ngIf", ctx_r19.showInlineError && ctx_r19.selected === "contact-details");
107
- i0.ɵɵadvance(1);
108
- i0.ɵɵproperty("ngIf", ctx_r19.selected == "contact-details");
109
- } }
110
- function ProfileComponent_div_2_app_form_builder_3_Template(rf, ctx) { if (rf & 1) {
111
- const _r34 = i0.ɵɵgetCurrentView();
112
- i0.ɵɵelementStart(0, "app-form-builder", 14, 15);
113
- i0.ɵɵlistener("onError", function ProfileComponent_div_2_app_form_builder_3_Template_app_form_builder_onError_0_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r33.handleError($event)); })("onComplete", function ProfileComponent_div_2_app_form_builder_3_Template_app_form_builder_onComplete_0_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r35 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r35.success($event)); });
114
- i0.ɵɵelementEnd();
115
- } if (rf & 2) {
116
- const ctx_r20 = i0.ɵɵnextContext(2);
117
- i0.ɵɵproperty("flowKey", ctx_r20.selected)("showOnlyQuestion", true)("hideHeader", true)("hideFooter", true)("sizeXs", 12)("sizeSm", 12)("sizeMd", 12)("sizeLg", 12)("sizeXl", 12)("offsetXl", 0)("offsetLg", 0);
118
- } }
119
- function ProfileComponent_div_2_app_form_builder_4_Template(rf, ctx) { if (rf & 1) {
120
- const _r38 = i0.ɵɵgetCurrentView();
121
- i0.ɵɵelementStart(0, "app-form-builder", 14, 15);
122
- i0.ɵɵlistener("onError", function ProfileComponent_div_2_app_form_builder_4_Template_app_form_builder_onError_0_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r37.handleError($event)); })("onComplete", function ProfileComponent_div_2_app_form_builder_4_Template_app_form_builder_onComplete_0_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r39 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r39.success($event)); });
123
- i0.ɵɵelementEnd();
124
- } if (rf & 2) {
125
- const ctx_r21 = i0.ɵɵnextContext(2);
126
- i0.ɵɵproperty("flowKey", ctx_r21.selected)("showOnlyQuestion", true)("hideHeader", true)("hideFooter", true)("sizeXs", 12)("sizeSm", 12)("sizeMd", 12)("sizeLg", 12)("sizeXl", 12)("offsetXl", 0)("offsetLg", 0);
127
- } }
128
- function ProfileComponent_div_2_Template(rf, ctx) { if (rf & 1) {
129
- i0.ɵɵelementStart(0, "div", 12);
130
- i0.ɵɵtemplate(1, ProfileComponent_div_2_app_form_builder_1_Template, 2, 11, "app-form-builder", 13)(2, ProfileComponent_div_2_div_2_Template, 3, 2, "div", 5)(3, ProfileComponent_div_2_app_form_builder_3_Template, 2, 11, "app-form-builder", 13)(4, ProfileComponent_div_2_app_form_builder_4_Template, 2, 11, "app-form-builder", 13);
131
- i0.ɵɵelementEnd();
132
- } if (rf & 2) {
133
- const ctx_r1 = i0.ɵɵnextContext();
134
- i0.ɵɵadvance(1);
135
- i0.ɵɵproperty("ngIf", ctx_r1.selected == "personal-details");
136
- i0.ɵɵadvance(1);
137
- i0.ɵɵproperty("ngIf", ctx_r1.selected == "contact-details");
138
- i0.ɵɵadvance(1);
139
- i0.ɵɵproperty("ngIf", ctx_r1.selected == "payment-details");
140
- i0.ɵɵadvance(1);
141
- i0.ɵɵproperty("ngIf", ctx_r1.selected == "update-ivr");
39
+ i0.ɵɵproperty("options", ctx_r0.profileOpts)("ngModel", ctx_r0.selected);
142
40
  } }
143
- function ProfileComponent_div_3_div_1_ion_col_3_div_16_Template(rf, ctx) { if (rf & 1) {
41
+ function ProfileComponent_div_2_div_1_Template(rf, ctx) { if (rf & 1) {
144
42
  i0.ɵɵelementStart(0, "div");
145
43
  i0.ɵɵtext(1);
146
- i0.ɵɵpipe(2, "translate");
147
44
  i0.ɵɵelementEnd();
148
45
  } if (rf & 2) {
46
+ const ctx_r10 = i0.ɵɵnextContext(2);
149
47
  i0.ɵɵadvance(1);
150
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "profile.proof.of.unemployment.status.download.start"));
48
+ i0.ɵɵtextInterpolate1(" ", ctx_r10.getSecQuestionsPaymentOptions(), " ");
151
49
  } }
152
- function ProfileComponent_div_3_div_1_ion_col_3_mat_error_17_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelementStart(0, "mat-error");
154
- i0.ɵɵtext(1);
155
- i0.ɵɵpipe(2, "translate");
50
+ function ProfileComponent_div_2_app_form_builder_2_Template(rf, ctx) { if (rf & 1) {
51
+ const _r16 = i0.ɵɵgetCurrentView();
52
+ i0.ɵɵelementStart(0, "app-form-builder", 12, 13);
53
+ i0.ɵɵlistener("onError", function ProfileComponent_div_2_app_form_builder_2_Template_app_form_builder_onError_0_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r15.handleError($event)); })("onComplete", function ProfileComponent_div_2_app_form_builder_2_Template_app_form_builder_onComplete_0_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r17 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r17.success($event)); });
156
54
  i0.ɵɵelementEnd();
157
55
  } if (rf & 2) {
158
- i0.ɵɵadvance(1);
159
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "profile.proof.of.unemployment.status.download.error"));
56
+ const ctx_r11 = i0.ɵɵnextContext(2);
57
+ i0.ɵɵproperty("flowKey", ctx_r11.selected)("showOnlyQuestion", true)("hideHeader", true)("hideFooter", true)("sizeXs", 12)("sizeSm", 12)("sizeMd", 12)("sizeLg", 12)("sizeXl", 12)("offsetXl", 0)("offsetLg", 0);
160
58
  } }
161
- function ProfileComponent_div_3_div_1_ion_col_3_Template(rf, ctx) { if (rf & 1) {
162
- const _r49 = i0.ɵɵgetCurrentView();
163
- i0.ɵɵelementStart(0, "ion-col", 25)(1, "ion-card", 26)(2, "ion-header", 27)(3, "ion-card-title");
164
- i0.ɵɵelement(4, "i", 33);
165
- i0.ɵɵtext(5);
166
- i0.ɵɵpipe(6, "translate");
167
- i0.ɵɵelementEnd()();
168
- i0.ɵɵelementStart(7, "ion-card-content", 29)(8, "label");
169
- i0.ɵɵtext(9);
170
- i0.ɵɵpipe(10, "translate");
171
- i0.ɵɵelementEnd();
172
- i0.ɵɵelementStart(11, "div", 30)(12, "ion-button", 34);
173
- i0.ɵɵlistener("click", function ProfileComponent_div_3_div_1_ion_col_3_Template_ion_button_click_12_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r48.getExternalClaimantReport()); });
174
- i0.ɵɵelement(13, "ion-icon", 32);
175
- i0.ɵɵtext(14);
176
- i0.ɵɵpipe(15, "translate");
59
+ function ProfileComponent_div_2_app_form_builder_3_Template(rf, ctx) { if (rf & 1) {
60
+ const _r20 = i0.ɵɵgetCurrentView();
61
+ i0.ɵɵelementStart(0, "app-form-builder", 12, 13);
62
+ i0.ɵɵlistener("onError", function ProfileComponent_div_2_app_form_builder_3_Template_app_form_builder_onError_0_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.handleError($event)); })("onComplete", function ProfileComponent_div_2_app_form_builder_3_Template_app_form_builder_onComplete_0_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.success($event)); });
177
63
  i0.ɵɵelementEnd();
178
- i0.ɵɵtemplate(16, ProfileComponent_div_3_div_1_ion_col_3_div_16_Template, 3, 3, "div", 5)(17, ProfileComponent_div_3_div_1_ion_col_3_mat_error_17_Template, 3, 3, "mat-error", 5);
179
- i0.ɵɵelementEnd()()()();
180
64
  } if (rf & 2) {
181
- const ctx_r43 = i0.ɵɵnextContext(3);
182
- i0.ɵɵadvance(5);
183
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 5, "profile.proof.of.unemployment.phase.two.label.download.unemployment.claim.report"));
184
- i0.ɵɵadvance(4);
185
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 7, "profile.proof.of.unemployment.phase.two.overlay.unemployment.claim.report"), " ");
186
- i0.ɵɵadvance(5);
187
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(15, 9, "profile.proof.of.unemployment.phase.two.button.download.report"), " ");
188
- i0.ɵɵadvance(2);
189
- i0.ɵɵproperty("ngIf", ctx_r43.downloadStatusForHistory == "started");
190
- i0.ɵɵadvance(1);
191
- i0.ɵɵproperty("ngIf", ctx_r43.downloadStatusForHistory == "error");
65
+ const ctx_r12 = i0.ɵɵnextContext(2);
66
+ i0.ɵɵproperty("flowKey", ctx_r12.selected)("showOnlyQuestion", true)("hideHeader", true)("hideFooter", true)("sizeXs", 12)("sizeSm", 12)("sizeMd", 12)("sizeLg", 12)("sizeXl", 12)("offsetXl", 0)("offsetLg", 0);
192
67
  } }
193
- function ProfileComponent_div_3_div_1_div_20_Template(rf, ctx) { if (rf & 1) {
194
- i0.ɵɵelementStart(0, "div");
195
- i0.ɵɵtext(1);
196
- i0.ɵɵpipe(2, "translate");
68
+ function ProfileComponent_div_2_div_4_app_form_builder_1_Template(rf, ctx) { if (rf & 1) {
69
+ const _r25 = i0.ɵɵgetCurrentView();
70
+ i0.ɵɵelementStart(0, "app-form-builder", 12, 13);
71
+ i0.ɵɵlistener("onError", function ProfileComponent_div_2_div_4_app_form_builder_1_Template_app_form_builder_onError_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r24.handleError($event)); })("onComplete", function ProfileComponent_div_2_div_4_app_form_builder_1_Template_app_form_builder_onComplete_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r26 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r26.success($event)); });
197
72
  i0.ɵɵelementEnd();
198
73
  } if (rf & 2) {
199
- i0.ɵɵadvance(1);
200
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "profile.proof.of.unemployment.status.download.start"));
74
+ const ctx_r22 = i0.ɵɵnextContext(3);
75
+ i0.ɵɵproperty("flowKey", ctx_r22.selected)("showOnlyQuestion", true)("hideHeader", true)("hideFooter", true)("sizeXs", 12)("sizeSm", 12)("sizeMd", 12)("sizeLg", 12)("sizeXl", 12)("offsetXl", 0)("offsetLg", 0);
201
76
  } }
202
- function ProfileComponent_div_3_div_1_mat_error_21_Template(rf, ctx) { if (rf & 1) {
203
- i0.ɵɵelementStart(0, "mat-error");
204
- i0.ɵɵtext(1);
205
- i0.ɵɵpipe(2, "translate");
77
+ function ProfileComponent_div_2_div_4_Template(rf, ctx) { if (rf & 1) {
78
+ i0.ɵɵelementStart(0, "div");
79
+ i0.ɵɵtemplate(1, ProfileComponent_div_2_div_4_app_form_builder_1_Template, 2, 11, "app-form-builder", 11);
206
80
  i0.ɵɵelementEnd();
207
81
  } if (rf & 2) {
82
+ const ctx_r13 = i0.ɵɵnextContext(2);
208
83
  i0.ɵɵadvance(1);
209
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "profile.proof.of.unemployment.status.download.error"));
84
+ i0.ɵɵproperty("ngIf", ctx_r13.selected == "payment-details");
210
85
  } }
211
- function ProfileComponent_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
212
- const _r51 = i0.ɵɵgetCurrentView();
213
- i0.ɵɵelementStart(0, "div", 22)(1, "ion-grid", 23)(2, "ion-row");
214
- i0.ɵɵtemplate(3, ProfileComponent_div_3_div_1_ion_col_3_Template, 18, 11, "ion-col", 24);
215
- i0.ɵɵelementStart(4, "ion-col", 25)(5, "ion-card", 26)(6, "ion-header", 27)(7, "ion-card-title");
216
- i0.ɵɵelement(8, "i", 28);
217
- i0.ɵɵtext(9);
218
- i0.ɵɵpipe(10, "translate");
219
- i0.ɵɵelementEnd()();
220
- i0.ɵɵelementStart(11, "ion-card-content", 29)(12, "label");
221
- i0.ɵɵtext(13);
222
- i0.ɵɵpipe(14, "translate");
223
- i0.ɵɵelementEnd();
224
- i0.ɵɵelementStart(15, "div", 30)(16, "ion-button", 31);
225
- i0.ɵɵlistener("click", function ProfileComponent_div_3_div_1_Template_ion_button_click_16_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r50.getVerificationReport()); });
226
- i0.ɵɵelement(17, "ion-icon", 32);
227
- i0.ɵɵtext(18);
228
- i0.ɵɵpipe(19, "translate");
86
+ function ProfileComponent_div_2_Template(rf, ctx) { if (rf & 1) {
87
+ i0.ɵɵelementStart(0, "div", 10);
88
+ i0.ɵɵtemplate(1, ProfileComponent_div_2_div_1_Template, 2, 1, "div", 3)(2, ProfileComponent_div_2_app_form_builder_2_Template, 2, 11, "app-form-builder", 11)(3, ProfileComponent_div_2_app_form_builder_3_Template, 2, 11, "app-form-builder", 11)(4, ProfileComponent_div_2_div_4_Template, 2, 1, "div", 3);
229
89
  i0.ɵɵelementEnd();
230
- i0.ɵɵtemplate(20, ProfileComponent_div_3_div_1_div_20_Template, 3, 3, "div", 5)(21, ProfileComponent_div_3_div_1_mat_error_21_Template, 3, 3, "mat-error", 5);
231
- i0.ɵɵelementEnd()()()()()()();
232
90
  } if (rf & 2) {
233
- const ctx_r40 = i0.ɵɵnextContext(2);
234
- i0.ɵɵadvance(3);
235
- i0.ɵɵproperty("ngIf", !ctx_r40.isME());
236
- i0.ɵɵadvance(6);
237
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 6, "profile.proof.of.unemployment.phase.two.label.summary.unemployment.claim"), "");
238
- i0.ɵɵadvance(4);
239
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 8, "profile.proof.of.unemployment.phase.two.overlay.summary.unemployment.claim"), " ");
240
- i0.ɵɵadvance(5);
241
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 10, "profile.proof.of.unemployment.phase.two.button.download.report"), " ");
242
- i0.ɵɵadvance(2);
243
- i0.ɵɵproperty("ngIf", ctx_r40.downloadStatusForVerification == "started");
91
+ const ctx_r1 = i0.ɵɵnextContext();
244
92
  i0.ɵɵadvance(1);
245
- i0.ɵɵproperty("ngIf", ctx_r40.downloadStatusForVerification == "error");
246
- } }
247
- function ProfileComponent_div_3_ng_template_2_ion_col_2_div_10_Template(rf, ctx) { if (rf & 1) {
248
- i0.ɵɵelementStart(0, "div");
249
- i0.ɵɵtext(1);
250
- i0.ɵɵpipe(2, "translate");
251
- i0.ɵɵelementEnd();
252
- } if (rf & 2) {
93
+ i0.ɵɵproperty("ngIf", ctx_r1.selected == "payment-details" && !ctx_r1.isPaymentOptionQuestionsEnabled && ctx_r1.isPaymentOptionDivEnabled);
253
94
  i0.ɵɵadvance(1);
254
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "profile.proof.of.unemployment.status.download.start"));
255
- } }
256
- function ProfileComponent_div_3_ng_template_2_ion_col_2_mat_error_11_Template(rf, ctx) { if (rf & 1) {
257
- i0.ɵɵelementStart(0, "mat-error");
258
- i0.ɵɵtext(1);
259
- i0.ɵɵpipe(2, "translate");
260
- i0.ɵɵelementEnd();
261
- } if (rf & 2) {
95
+ i0.ɵɵproperty("ngIf", ctx_r1.selected == "personal-details");
262
96
  i0.ɵɵadvance(1);
263
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "profile.proof.of.unemployment.status.download.error"));
264
- } }
265
- function ProfileComponent_div_3_ng_template_2_ion_col_2_Template(rf, ctx) { if (rf & 1) {
266
- const _r56 = i0.ɵɵgetCurrentView();
267
- i0.ɵɵelementStart(0, "ion-col", 36)(1, "label");
268
- i0.ɵɵtext(2);
269
- i0.ɵɵpipe(3, "translate");
270
- i0.ɵɵelementEnd();
271
- i0.ɵɵelement(4, "br");
272
- i0.ɵɵelementStart(5, "ion-button", 38);
273
- i0.ɵɵlistener("click", function ProfileComponent_div_3_ng_template_2_ion_col_2_Template_ion_button_click_5_listener() { i0.ɵɵrestoreView(_r56); const ctx_r55 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r55.getExternalClaimantReport()); });
274
- i0.ɵɵelement(6, "ion-icon", 39);
275
- i0.ɵɵtext(7);
276
- i0.ɵɵpipe(8, "translate");
277
- i0.ɵɵelementEnd();
278
- i0.ɵɵelement(9, "br");
279
- i0.ɵɵtemplate(10, ProfileComponent_div_3_ng_template_2_ion_col_2_div_10_Template, 3, 3, "div", 5)(11, ProfileComponent_div_3_ng_template_2_ion_col_2_mat_error_11_Template, 3, 3, "mat-error", 5);
280
- i0.ɵɵelementEnd();
281
- } if (rf & 2) {
282
- const ctx_r52 = i0.ɵɵnextContext(3);
283
- i0.ɵɵadvance(2);
284
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, "profile.proof.of.unemployment.label.download.unemployment.claim.report"), " ");
285
- i0.ɵɵadvance(5);
286
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(8, 6, "profile.proof.of.unemployment.button.external.claimant.report"), " ");
287
- i0.ɵɵadvance(3);
288
- i0.ɵɵproperty("ngIf", ctx_r52.downloadStatusForHistory == "started");
97
+ i0.ɵɵproperty("ngIf", ctx_r1.selected == "contact-details");
289
98
  i0.ɵɵadvance(1);
290
- i0.ɵɵproperty("ngIf", ctx_r52.downloadStatusForHistory == "error");
291
- } }
292
- function ProfileComponent_div_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
293
- const _r58 = i0.ɵɵgetCurrentView();
294
- i0.ɵɵelementStart(0, "ion-grid", 23)(1, "ion-row");
295
- i0.ɵɵtemplate(2, ProfileComponent_div_3_ng_template_2_ion_col_2_Template, 12, 8, "ion-col", 35);
296
- i0.ɵɵelementStart(3, "ion-col", 36)(4, "label");
297
- i0.ɵɵtext(5);
298
- i0.ɵɵpipe(6, "translate");
299
- i0.ɵɵelementEnd();
300
- i0.ɵɵelement(7, "br");
301
- i0.ɵɵelementStart(8, "ion-button", 37);
302
- i0.ɵɵlistener("click", function ProfileComponent_div_3_ng_template_2_Template_ion_button_click_8_listener() { i0.ɵɵrestoreView(_r58); const ctx_r57 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r57.redirectLink(".claimantsummaryverification")); });
303
- i0.ɵɵtext(9);
304
- i0.ɵɵpipe(10, "translate");
305
- i0.ɵɵelementEnd()()()();
306
- } if (rf & 2) {
307
- const ctx_r41 = i0.ɵɵnextContext(2);
308
- i0.ɵɵadvance(2);
309
- i0.ɵɵproperty("ngIf", !ctx_r41.isME());
310
- i0.ɵɵadvance(3);
311
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 3, "profile.proof.of.unemployment.label.summary.unemployment.claim"), " ");
312
- i0.ɵɵadvance(4);
313
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(10, 5, "profile.proof.of.unemployment.button.unemployment.verification"));
99
+ i0.ɵɵproperty("ngIf", ctx_r1.isPaymentOptionQuestionsEnabled);
314
100
  } }
315
101
  function ProfileComponent_div_3_Template(rf, ctx) { if (rf & 1) {
316
- i0.ɵɵelementStart(0, "div", 19);
317
- i0.ɵɵtemplate(1, ProfileComponent_div_3_div_1_Template, 22, 12, "div", 20)(2, ProfileComponent_div_3_ng_template_2_Template, 11, 7, "ng-template", null, 21, i0.ɵɵtemplateRefExtractor);
318
- i0.ɵɵelementEnd();
319
- } if (rf & 2) {
320
- const _r42 = i0.ɵɵreference(3);
321
- const ctx_r2 = i0.ɵɵnextContext();
322
- i0.ɵɵadvance(1);
323
- i0.ɵɵproperty("ngIf", ctx_r2.phaseTwoProofOfUIView === "true")("ngIfElse", _r42);
102
+ i0.ɵɵelementStart(0, "div")(1, "div", 14);
103
+ i0.ɵɵelement(2, "ion-icon", 15);
104
+ i0.ɵɵelementStart(3, "h1");
105
+ i0.ɵɵtext(4, "Saved successfully.");
106
+ i0.ɵɵelementEnd()()();
324
107
  } }
325
- const _c3 = a0 => ({ type: a0 });
326
- const _c4 = () => ({ required: "Authcode is required.", minlength: "Authcode should have 6 numbers." });
327
108
  function ProfileComponent_div_4_Template(rf, ctx) { if (rf & 1) {
328
- const _r61 = i0.ɵɵgetCurrentView();
329
- i0.ɵɵelementStart(0, "div", 40)(1, "form", 41, 42)(3, "ion-row")(4, "div", 43)(5, "ion-row");
330
- i0.ɵɵelement(6, "label", 44);
331
- i0.ɵɵpipe(7, "translate");
332
- i0.ɵɵelementEnd();
333
- i0.ɵɵelementStart(8, "ion-row")(9, "ion-col");
334
- i0.ɵɵelement(10, "p-inputMask", 45)(11, "app-error", 46);
335
- i0.ɵɵelementEnd();
336
- i0.ɵɵelementStart(12, "ion-col")(13, "ion-button", 47);
337
- i0.ɵɵlistener("click", function ProfileComponent_div_4_Template_ion_button_click_13_listener() { i0.ɵɵrestoreView(_r61); const ctx_r60 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r60.verify()); });
338
- i0.ɵɵtext(14);
339
- i0.ɵɵpipe(15, "translate");
340
- i0.ɵɵelementEnd()()()()()()();
341
- } if (rf & 2) {
342
- const _r59 = i0.ɵɵreference(2);
343
- const ctx_r3 = i0.ɵɵnextContext();
344
- i0.ɵɵadvance(1);
345
- i0.ɵɵproperty("formGroup", ctx_r3.otpForm);
346
- i0.ɵɵadvance(5);
347
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(7, 7, "profile.contact.details.label.otp", i0.ɵɵpureFunction1(12, _c3, ctx_r3.type)), i0.ɵɵsanitizeHtml);
348
- i0.ɵɵadvance(4);
349
- i0.ɵɵproperty("autoFocus", true);
350
- i0.ɵɵadvance(1);
351
- i0.ɵɵproperty("field", ctx_r3.otp)("form", _r59)("errDef", i0.ɵɵpureFunction0(14, _c4));
352
- i0.ɵɵadvance(3);
353
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 10, "profile.contact.details.button.verify"));
354
- } }
355
- const _c5 = a0 => ({ securityQuestionToAsk: a0 });
356
- const _c6 = () => ({ required: "Security Answer is required." });
357
- function ProfileComponent_div_5_Template(rf, ctx) { if (rf & 1) {
358
- const _r64 = i0.ɵɵgetCurrentView();
359
- i0.ɵɵelementStart(0, "div", 40)(1, "form", 41, 48)(3, "ion-row")(4, "div", 43)(5, "ion-row");
360
- i0.ɵɵelement(6, "label", 49);
361
- i0.ɵɵpipe(7, "translate");
362
- i0.ɵɵelementEnd();
363
- i0.ɵɵelementStart(8, "ion-row")(9, "ion-col");
364
- i0.ɵɵelement(10, "input", 50)(11, "app-error", 46);
365
- i0.ɵɵelementEnd();
366
- i0.ɵɵelementStart(12, "ion-col")(13, "ion-button", 47);
367
- i0.ɵɵlistener("click", function ProfileComponent_div_5_Template_ion_button_click_13_listener() { i0.ɵɵrestoreView(_r64); const ctx_r63 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r63.verifySecurityQuestion()); });
368
- i0.ɵɵtext(14);
369
- i0.ɵɵpipe(15, "translate");
370
- i0.ɵɵelementEnd()()()()()()();
371
- } if (rf & 2) {
372
- const _r62 = i0.ɵɵreference(2);
373
- const ctx_r4 = i0.ɵɵnextContext();
374
- i0.ɵɵadvance(1);
375
- i0.ɵɵproperty("formGroup", ctx_r4.securityQuestionForm);
376
- i0.ɵɵadvance(5);
377
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(7, 6, "profile.contact.details.label.securityQuestion", i0.ɵɵpureFunction1(11, _c5, ctx_r4.securityQuestionToAsk)), i0.ɵɵsanitizeHtml);
378
- i0.ɵɵadvance(5);
379
- i0.ɵɵproperty("field", ctx_r4.securityQuestionAnswer)("form", _r62)("errDef", i0.ɵɵpureFunction0(13, _c6));
380
- i0.ɵɵadvance(3);
381
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 9, "profile.contact.details.button.verify"));
382
- } }
383
- function ProfileComponent_mat_error_6_Template(rf, ctx) { if (rf & 1) {
384
- i0.ɵɵelementStart(0, "mat-error");
385
- i0.ɵɵtext(1);
386
- i0.ɵɵelementEnd();
387
- } if (rf & 2) {
388
- const ctx_r5 = i0.ɵɵnextContext();
389
- i0.ɵɵadvance(1);
390
- i0.ɵɵtextInterpolate(ctx_r5.errorDtls);
391
- } }
392
- function ProfileComponent_ion_label_7_Template(rf, ctx) { if (rf & 1) {
393
- i0.ɵɵelementStart(0, "ion-label", 51);
394
- i0.ɵɵtext(1);
395
- i0.ɵɵelement(2, "br");
396
- i0.ɵɵelementEnd();
397
- } if (rf & 2) {
398
- const ctx_r6 = i0.ɵɵnextContext();
399
- i0.ɵɵadvance(1);
400
- i0.ɵɵtextInterpolate(ctx_r6.successDtls);
401
- } }
402
- function ProfileComponent_div_8_Template(rf, ctx) { if (rf & 1) {
403
- i0.ɵɵelementStart(0, "div")(1, "div", 52);
404
- i0.ɵɵelement(2, "ion-icon", 53);
109
+ i0.ɵɵelementStart(0, "div")(1, "div", 14);
110
+ i0.ɵɵelement(2, "ion-icon", 16);
405
111
  i0.ɵɵelementStart(3, "h1");
406
112
  i0.ɵɵtext(4);
407
- i0.ɵɵpipe(5, "translate");
408
113
  i0.ɵɵelementEnd()()();
409
114
  } if (rf & 2) {
115
+ const ctx_r3 = i0.ɵɵnextContext();
410
116
  i0.ɵɵadvance(4);
411
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 1, "profile.banner.success"));
412
- } }
413
- function ProfileComponent_div_9_section_3_Template(rf, ctx) { if (rf & 1) {
414
- i0.ɵɵelementStart(0, "section")(1, "h1");
415
- i0.ɵɵtext(2);
416
- i0.ɵɵpipe(3, "translate");
417
- i0.ɵɵelementEnd()();
418
- } if (rf & 2) {
419
- const ctx_r65 = i0.ɵɵnextContext(2);
420
- i0.ɵɵadvance(2);
421
- i0.ɵɵtextInterpolate(ctx_r65.errorText ? ctx_r65.errorText : i0.ɵɵpipeBind1(3, 1, "profile.banner.request.process.failure"));
117
+ i0.ɵɵtextInterpolate(ctx_r3.errorText ? ctx_r3.errorText : "Opps, could not process your request. Please try again.");
422
118
  } }
423
- function ProfileComponent_div_9_section_4_Template(rf, ctx) { if (rf & 1) {
424
- i0.ɵɵelementStart(0, "section")(1, "h1");
425
- i0.ɵɵtext(2);
426
- i0.ɵɵpipe(3, "translate");
427
- i0.ɵɵelementEnd()();
119
+ function ProfileComponent_ng_template_5_ion_button_8_Template(rf, ctx) { if (rf & 1) {
120
+ const _r29 = i0.ɵɵgetCurrentView();
121
+ i0.ɵɵelementStart(0, "ion-button", 22);
122
+ i0.ɵɵlistener("click", function ProfileComponent_ng_template_5_ion_button_8_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.save()); })("keydown.enter", function ProfileComponent_ng_template_5_ion_button_8_Template_ion_button_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r30.save()); });
123
+ i0.ɵɵtext(1, "Save");
124
+ i0.ɵɵelementEnd();
428
125
  } if (rf & 2) {
429
- const ctx_r66 = i0.ɵɵnextContext(2);
430
- i0.ɵɵadvance(2);
431
- i0.ɵɵtextInterpolate(ctx_r66.errorText ? ctx_r66.errorText : i0.ɵɵpipeBind1(3, 1, "profile.banner.request.process.failure"));
126
+ const ctx_r27 = i0.ɵɵnextContext(2);
127
+ i0.ɵɵproperty("disabled", ctx_r27.isButtonDisabled);
432
128
  } }
433
- function ProfileComponent_div_9_Template(rf, ctx) { if (rf & 1) {
434
- i0.ɵɵelementStart(0, "div")(1, "div", 52);
435
- i0.ɵɵelement(2, "ion-icon", 54);
436
- i0.ɵɵtemplate(3, ProfileComponent_div_9_section_3_Template, 4, 3, "section", 5)(4, ProfileComponent_div_9_section_4_Template, 4, 3, "section", 5);
129
+ function ProfileComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
130
+ const _r32 = i0.ɵɵgetCurrentView();
131
+ i0.ɵɵelementStart(0, "ion-grid")(1, "ion-row")(2, "ion-col", 17)(3, "ion-button", 18);
132
+ i0.ɵɵlistener("click", function ProfileComponent_ng_template_5_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r31.logout()); })("keydown.enter", function ProfileComponent_ng_template_5_Template_ion_button_keydown_enter_3_listener() { i0.ɵɵrestoreView(_r32); const ctx_r33 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r33.logout()); });
133
+ i0.ɵɵtext(4, "Logout");
437
134
  i0.ɵɵelementEnd()();
135
+ i0.ɵɵelementStart(5, "ion-col", 19)(6, "ion-button", 20);
136
+ i0.ɵɵlistener("click", function ProfileComponent_ng_template_5_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r32); const ctx_r34 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r34.cancel()); })("keydown.enter", function ProfileComponent_ng_template_5_Template_ion_button_keydown_enter_6_listener() { i0.ɵɵrestoreView(_r32); const ctx_r35 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r35.cancel()); });
137
+ i0.ɵɵtext(7, "Close");
138
+ i0.ɵɵelementEnd();
139
+ i0.ɵɵtemplate(8, ProfileComponent_ng_template_5_ion_button_8_Template, 2, 1, "ion-button", 21);
140
+ i0.ɵɵelementEnd()()();
438
141
  } if (rf & 2) {
439
- const ctx_r8 = i0.ɵɵnextContext();
142
+ const ctx_r4 = i0.ɵɵnextContext();
440
143
  i0.ɵɵadvance(3);
441
- i0.ɵɵproperty("ngIf", ctx_r8.isMS());
442
- i0.ɵɵadvance(1);
443
- i0.ɵɵproperty("ngIf", !ctx_r8.isMS());
144
+ i0.ɵɵproperty("disabled", ctx_r4.isButtonDisabled);
145
+ i0.ɵɵadvance(3);
146
+ i0.ɵɵproperty("disabled", ctx_r4.isButtonDisabled);
147
+ i0.ɵɵadvance(2);
148
+ i0.ɵɵproperty("ngIf", !(ctx_r4.showSuccess || ctx_r4.showError));
444
149
  } }
445
- function ProfileComponent_ng_template_10_ion_button_10_Template(rf, ctx) { if (rf & 1) {
446
- const _r69 = i0.ɵɵgetCurrentView();
447
- i0.ɵɵelementStart(0, "ion-button", 60);
448
- i0.ɵɵlistener("click", function ProfileComponent_ng_template_10_ion_button_10_Template_ion_button_click_0_listener() { i0.ɵɵrestoreView(_r69); const ctx_r68 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r68.save()); });
449
- i0.ɵɵtext(1);
450
- i0.ɵɵpipe(2, "translate");
150
+ function ProfileComponent_app_lexis_nexis_6_Template(rf, ctx) { if (rf & 1) {
151
+ const _r37 = i0.ɵɵgetCurrentView();
152
+ i0.ɵɵelementStart(0, "app-lexis-nexis", 23);
153
+ i0.ɵɵlistener("success", function ProfileComponent_app_lexis_nexis_6_Template_app_lexis_nexis_success_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r36.onSecurityQuestionSuccess()); })("error", function ProfileComponent_app_lexis_nexis_6_Template_app_lexis_nexis_error_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.triggerUdol()); })("usps", function ProfileComponent_app_lexis_nexis_6_Template_app_lexis_nexis_usps_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r39 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r39.triggerUdol()); });
451
154
  i0.ɵɵelementEnd();
452
155
  } if (rf & 2) {
453
- const ctx_r67 = i0.ɵɵnextContext(2);
454
- i0.ɵɵproperty("disabled", ctx_r67.isOtpSent == true || ctx_r67.displaySecurityQuestion == true);
455
- i0.ɵɵadvance(1);
456
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, "profile.button.save"));
156
+ const ctx_r5 = i0.ɵɵnextContext();
157
+ i0.ɵɵproperty("display", ctx_r5.isLexisNexisPopupEnabled)("userName", ctx_r5.userName)("customerEventType", ctx_r5.customerEventType);
457
158
  } }
458
- function ProfileComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
459
- const _r71 = i0.ɵɵgetCurrentView();
460
- i0.ɵɵelementStart(0, "ion-grid")(1, "ion-row")(2, "ion-col", 55)(3, "ion-button", 56);
461
- i0.ɵɵlistener("click", function ProfileComponent_ng_template_10_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r71); const ctx_r70 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r70.logout()); });
462
- i0.ɵɵtext(4);
463
- i0.ɵɵpipe(5, "translate");
464
- i0.ɵɵelementEnd()();
465
- i0.ɵɵelementStart(6, "ion-col", 57)(7, "ion-button", 58);
466
- i0.ɵɵlistener("click", function ProfileComponent_ng_template_10_Template_ion_button_click_7_listener() { i0.ɵɵrestoreView(_r71); const ctx_r72 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r72.cancel()); });
467
- i0.ɵɵtext(8);
468
- i0.ɵɵpipe(9, "translate");
159
+ function ProfileComponent_app_security_question_7_Template(rf, ctx) { if (rf & 1) {
160
+ const _r41 = i0.ɵɵgetCurrentView();
161
+ i0.ɵɵelementStart(0, "app-security-question", 24);
162
+ i0.ɵɵlistener("success", function ProfileComponent_app_security_question_7_Template_app_security_question_success_0_listener() { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r40.onSecurityQuestionSuccess()); })("clear", function ProfileComponent_app_security_question_7_Template_app_security_question_clear_0_listener() { i0.ɵɵrestoreView(_r41); const ctx_r42 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r42.enableLexisNexis()); });
469
163
  i0.ɵɵelementEnd();
470
- i0.ɵɵtemplate(10, ProfileComponent_ng_template_10_ion_button_10_Template, 3, 4, "ion-button", 59);
471
- i0.ɵɵelementEnd()()();
472
164
  } if (rf & 2) {
473
- const ctx_r9 = i0.ɵɵnextContext();
474
- i0.ɵɵadvance(4);
475
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 3, "profile.button.logout"));
476
- i0.ɵɵadvance(4);
477
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 5, "profile.button.close"));
478
- i0.ɵɵadvance(2);
479
- i0.ɵɵproperty("ngIf", !(ctx_r9.showSuccess || ctx_r9.showError) && ctx_r9.selected != "proof-of-unemployment");
165
+ const ctx_r6 = i0.ɵɵnextContext();
166
+ i0.ɵɵproperty("display", ctx_r6.isSecurityQuestionEnabled)("questionsAndAnswers", ctx_r6.usersQuesAndAns)("questionsAndKeysOfUser", ctx_r6.mappedKeysQuestionsForUser);
480
167
  } }
481
- const _c7 = () => ({ width: "60vw" });
482
- const _c8 = () => ({ "1024px": "75vw", "768px": "85vw", "640px": "100vw" });
483
- export class ProfileComponent extends BasePage {
484
- constructor(logger, ls, cs, bs, claimService, nav, ss, util, formbuilder, titleService, modalCtrl) {
485
- super();
486
- this.logger = logger;
168
+ const _c1 = () => ({ width: "60vw" });
169
+ const _c2 = () => ({ "1024px": "75vw", "768px": "85vw", "640px": "100vw" });
170
+ export class ProfileComponent {
171
+ constructor(util, ls, nav, cs, router, ur, ln) {
172
+ this.util = util;
487
173
  this.ls = ls;
488
- this.cs = cs;
489
- this.bs = bs;
490
- this.claimService = claimService;
491
174
  this.nav = nav;
492
- this.ss = ss;
493
- this.util = util;
494
- this.formbuilder = formbuilder;
495
- this.titleService = titleService;
496
- this.modalCtrl = modalCtrl;
175
+ this.cs = cs;
176
+ this.router = router;
177
+ this.ur = ur;
178
+ this.ln = ln;
497
179
  this.showSuccess = false;
498
180
  this.showError = false;
499
- this.phaseTwoProofOfUIView = LibConstants.PhaseTwoProofOfUIView;
500
- this.downloadStatusForHistory = "";
501
- this.downloadStatusForVerification = "";
502
- this.docFileLink = "assets/images/sampleDoc.png";
503
- this.claimantAddressId = 0;
504
- this.lastValidatedAddress = null;
505
- this.lastValidateResult = '';
506
- this.attemptCount = 0;
507
- this.isAddressValidated = '0';
508
- this.showInlineError = false;
509
181
  this.onCancel = new EventEmitter();
182
+ this.error = new EventEmitter();
510
183
  this.profileOpts = ComboOption.CLAIMANT_PROFILE_OPTS;
511
- this.profileOptsIVR = ComboOption.CLAIMANT_PROFILE_OPTS_IVR;
512
184
  this.selected = 'personal-details';
513
- this.failCounter = 0;
514
- this.accepted = new EventEmitter();
185
+ this.isReturningUser = true;
186
+ this.isSecurityQuestionEnabled = false;
187
+ this.isPaymentOptionQuestionsEnabled = false;
188
+ this.isPaymentOptionDivEnabled = true;
189
+ this.isLexisNexisPopupEnabled = false;
190
+ this.isButtonDisabled = false;
191
+ this.isLexisNexisProofedWithinTwentyFourHours = false;
515
192
  }
516
193
  ngOnInit() {
194
+ this.getUserDetails();
195
+ //Get user personal-details
196
+ this.getPersonalDetails();
197
+ }
198
+ ngAfterViewInit() {
199
+ const pDialog = document.querySelector('div[role=dialog]');
200
+ pDialog?.setAttribute('aria-labelledby', 'pdialog-title');
201
+ setTimeout(() => {
202
+ document.querySelectorAll('div .ionButton').forEach(element => {
203
+ element.setAttribute('role', 'button');
204
+ });
205
+ }, 1000);
206
+ }
207
+ getUserDetails() {
208
+ this.cs.getUserDetailsForLoggedInUser().subscribe((res) => {
209
+ this.ssn = res?.ssn;
210
+ this.verificationPreference = res;
211
+ this.userName = res?.userName;
212
+ this.isLexisNexisProofedWithin24Hours(this.userName);
213
+ }, (err) => {
214
+ console.log(err);
215
+ });
216
+ }
217
+ isLexisNexisProofedWithin24Hours(ssn) {
218
+ this.ln.isLexisNexisProofedWithin24Hours(this.userName).subscribe((res) => {
219
+ this.isLexisNexisProofedWithinTwentyFourHours = res;
220
+ });
517
221
  }
518
222
  onValueChange(event) {
519
223
  this.showError = false;
520
224
  this.showSuccess = false;
521
- this.downloadStatusForHistory = "";
522
- this.downloadStatusForVerification = "";
523
- if (this.selected === 'proof-of-unemployment') {
524
- this.titleService.setTitle("Proof of Unemployment");
525
- this.getListOfActiveClaim();
225
+ if (this.selected != 'payment-details') {
226
+ this.isPaymentOptionQuestionsEnabled = true;
526
227
  }
527
228
  }
528
229
  cancel() {
230
+ this.util.hideLoader();
529
231
  this.onCancel.emit();
530
232
  }
531
- initilizeForm() {
532
- this.otpForm = this.formbuilder.group({
533
- 'otp': [null, [Validators.required, Validators.minLength(6)]],
534
- });
535
- }
536
- initializeSecurityQuestionForm() {
537
- this.securityQuestionForm = this.formbuilder.group({
538
- 'securityQuestionAnswer': [null, [Validators.required]],
539
- });
540
- }
541
- get otp() {
542
- return this.otpForm.get('otp');
543
- }
544
- get securityQuestionAnswer() {
545
- return this.securityQuestionForm.get('securityQuestionAnswer');
546
- }
547
- async save() {
548
- if (this.isMS()) {
549
- if (this.otpVerified) {
550
- this.logger.debug("OTP VERIFIED AND SAVING");
551
- this.fb.submitQuestionnaire();
552
- }
553
- else if (this.selected == 'contact-details') {
554
- let formData = this.fb.questionnaire.questionnaire.questionnaireForm.value;
555
- //Code for the address validation popup
556
- //
557
- // const form = this.fb.questionnaire.questionnaire.questionnaireForm;
558
- // const v = form.value;
559
- // //Determine Current address and type based on the answer to mailing address question
560
- // const currentType = v.diffmailaddress == 'Y' ? 'mail' : 'res';
561
- // const currentAddress = currentType == 'mail' ? v.mailAddress : v.resAdress;
562
- // this.showInlineError = false
563
- // //check if address changed since last validation and if no change continue without interruption
564
- // if (this.lastValidatedAddress != null) {
565
- // const lastAddressType = this.lastValidatedAddress.diffmailaddress == 'Y' ? 'mail' : 'res';
566
- // if (lastAddressType == currentType
567
- // && !this.isAddressChanged(currentAddress, this.lastValidatedAddress)) {
568
- // this.isAddressValidated = '1';
569
- // return this.finishAndSave(form.value, this.isAddressValidated);
570
- // }
571
- // }
572
- // //Starting the process to validate the address
573
- // const returnComponent = await this.addrSvc.validateAddressProcess(currentType, currentAddress, form);
574
- // this.lastValidatedAddress = returnComponent.lastValidatedAddress
575
- // if (returnComponent.showInlineError == true) {
576
- // this.errorText = returnComponent.errorText;
577
- // this.showInlineError = returnComponent.showInlineError;
578
- // }
579
- // if (returnComponent.showPopup == true) {
580
- // await this.handleRecommendations(returnComponent.addressValidationResponse, returnComponent.addressValidationRequest, v);
581
- // }
582
- // if (returnComponent.showInlineError == false && returnComponent.showPopup == false) {
583
- // this.finishAndSave(form.value, returnComponent.isAddressValidated);
584
- // }
585
- if ((formData['phone'] == formData['hidOriginalPhone']) && (formData['email'] == formData['hidOriginalEmail'])) {
586
- this.logger.debug("Phone or Email Not Changed");
587
- this.isOtpSent = false;
588
- this.fb.submitQuestionnaire();
589
- }
590
- else if (formData["hidIsEmailChanged"] === "Y" && formData["hidIsPhoneChanged"] === "Y") {
591
- this.logger.debug("Both Email and Phone Changed");
592
- this.errorText = "Please contact MDES support for assistance updating Email Address.";
593
- this.showError = true;
594
- }
595
- else if (formData["hidOriginalPhone"] === "null" && formData["hidIsEmailChanged"] === "Y") {
596
- this.logger.debug("Trying to change email but phone number is not present");
597
- this.errorText = "Please contact MDES support for assistance updating Email Address and Cell Phone Number.";
598
- this.showError = true;
233
+ save() {
234
+ if (this.fb.invalid) {
235
+ console.log(this.fb);
236
+ return;
237
+ }
238
+ const dirtyItems = this.fb.getDirtyItems();
239
+ this.util.showLoader();
240
+ // this.saveQuestionnaire(); // First saving the change in the db
241
+ if (this.selected === 'personal-details') {
242
+ const nameControls = ['fstname', 'middlename', 'lstname'];
243
+ if (dirtyItems.some(item => nameControls.includes(item))) {
244
+ this.customerEventType = 'name';
245
+ // Uncomment to enable Lexis Nexis
246
+ const dirtyItemWithValues = this.fb.getDirtyItemsWithValues();
247
+ if (this.isLexisNexisProofedWithinTwentyFourHours && this.validateNameChange(dirtyItemWithValues)) {
248
+ this.util.hideLoader();
249
+ this.enableLexisNexis();
599
250
  }
600
251
  else {
601
- if (formData["hidIsEmailChanged"] === "Y") {
602
- this.logger.debug("Email Changed");
603
- this.type = 'text';
604
- }
605
- else if (formData["hidIsPhoneChanged"] === "Y") {
606
- this.logger.debug("Phone Changed");
607
- this.type = 'email';
608
- }
609
- this.isOtpSent = true;
610
- this.initilizeForm();
611
- this.ss.sendOtpWithoutCaptcha(this.type).subscribe(res => {
612
- this.successDtls = "Access code sent successfully.";
613
- }, err => {
614
- this.isOtpSent = false;
615
- this.successDtls = null;
616
- this.errorDtls = err.msg;
617
- });
252
+ this.util.showLoader();
253
+ this.saveQuestionnaire();
618
254
  }
255
+ // Comment to enable Lexis Nexis
256
+ // this.onCancel.emit();
257
+ // this.triggerUdol();
619
258
  }
620
- else if ((this.selected == 'personal-details') || (this.selected == 'payment-details')) {
621
- this.fb.submitQuestionnaire();
259
+ else {
260
+ this.util.showLoader();
261
+ this.saveQuestionnaire();
622
262
  }
263
+ this.util.hideLoader();
623
264
  }
624
- else if (this.isME()) {
625
- if (this.securityQuestionVerified) {
626
- this.logger.debug("SECURITY QUESTION VERIFIED AND SAVING");
627
- this.fb.submitQuestionnaire();
628
- }
629
- else if (this.selected == 'contact-details') {
630
- this.ss.getRandomSecurityQuestionSelf().subscribe({
631
- next: (res) => {
632
- this.randomSecurityQuestionModel = res;
633
- this.securityQuestionToAsk = this.randomSecurityQuestionModel.securityQuestionDescription;
634
- this.successDtls = null;
635
- }, error: (err) => {
636
- this.displaySecurityQuestion = false;
637
- this.successDtls = null;
638
- this.errorDtls = err.message;
639
- }
640
- });
641
- this.initializeSecurityQuestionForm();
642
- this.displaySecurityQuestion = true;
265
+ else if (this.selected === 'contact-details') {
266
+ const contactdetailsControls = ['phone'];
267
+ // dirtyItems.forEach((item) => {
268
+ if (dirtyItems.some(item => contactdetailsControls.includes(item))) {
269
+ // if (item === 'phone') {
270
+ this.customerEventType = 'phone';
271
+ this.util.hideLoader();
272
+ if (this.isLexisNexisProofedWithinTwentyFourHours) {
273
+ this.getAllSecurityQuestions();
274
+ }
275
+ else {
276
+ this.saveQuestionnaire();
277
+ }
643
278
  }
644
279
  else {
645
- this.fb.submitQuestionnaire();
280
+ this.saveQuestionnaire();
646
281
  }
282
+ // });
647
283
  }
648
- else {
649
- this.fb.submitQuestionnaire();
284
+ else if (this.selected === 'payment-details') {
285
+ this.saveQuestionnaire();
286
+ // this.isPaymentOptionQuestionsEnabled=false;
287
+ this.isSecurityQuestionEnabled = false;
288
+ this.isLexisNexisPopupEnabled = false;
289
+ this.isButtonDisabled = false;
290
+ // this.isPaymentOptionDivEnabled=true;
650
291
  }
651
292
  }
652
- /** Handle Recommendation Popup */
653
- async handleRecommendations(res, req, v) {
654
- const suggestions = Array.from(res.addressRecommendationModel ?? []);
655
- if (!suggestions.length)
656
- return;
657
- const modal = await this.modalCtrl.create({
658
- component: AddressPopupComponent,
659
- componentProps: { original: req, choices: suggestions },
660
- backdropDismiss: false,
661
- animated: true,
662
- showBackdrop: true
663
- });
664
- document.body.appendChild(modal);
665
- await modal.present();
666
- const { data, role } = await modal.onWillDismiss();
667
- if (role !== 'confirm' || !data?.selected)
668
- return;
669
- this.patchFormWithSelectedAddress(data.selected, v.diffmailaddress === 'Y');
670
- }
671
- /** Patch Form With Selected Address */
672
- patchFormWithSelectedAddress(sel, isMail) {
673
- const patchObj = isMail
674
- ? { mailAddress: this.mapAddress(sel) }
675
- : { resAdress: this.mapAddress(sel),
676
- mailAddress: this.mapAddress(sel)
677
- };
678
- this.lastValidatedAddress = this.mapAddress(sel);
679
- this.fb.questionnaire.questionnaire.questionnaireForm.form.patchValue(patchObj);
680
- }
681
- mapAddress(sel) {
682
- if (sel.isOriginal) {
683
- // Original Address
684
- return {
685
- streetAddress: sel.line1,
686
- optionalAddress: sel.line2,
687
- city: sel.city,
688
- state: { label: sel.state, value: sel.state },
689
- zip: sel.zipCode,
690
- country: { label: sel.country, value: sel.country }
691
- };
293
+ onSecurityQuestionSuccess() {
294
+ if (this.selected != 'payment-details') {
295
+ this.util.showLoader();
296
+ this.saveQuestionnaire();
692
297
  }
693
298
  else {
694
- // USPS Recommended Address
695
- return {
696
- streetAddress: sel.deliveryLine1,
697
- optionalAddress: sel.deliveryLine2,
698
- city: sel.cityName,
699
- state: { label: sel.stateAbbrevation, value: sel.stateAbbrevation },
700
- zip: sel.zipCode,
701
- country: { label: sel.country, value: sel.country }
702
- };
299
+ this.isPaymentOptionQuestionsEnabled = true;
300
+ // this.isPaymentOptionDivEnabled=true;
703
301
  }
302
+ this.isSecurityQuestionEnabled = false;
303
+ this.isLexisNexisPopupEnabled = false;
304
+ this.isButtonDisabled = false;
704
305
  }
705
- verify() {
706
- this.otpCode = this.otpForm.get('otp')?.value;
707
- this.ss.validateOtpForClaimant(this.otpCode).subscribe(res => {
708
- this.otpVerified = true;
709
- this.isOtpSent = false;
710
- this.successDtls = null;
711
- this.accepted.emit(true);
712
- }, err => {
713
- this.logger.debug('Verify status error ', err);
714
- this.otpVerified = false;
715
- this.successDtls = null;
716
- this.accepted.emit(false);
717
- this.errorDtls = err.msg;
718
- });
306
+ saveQuestionnaire() {
307
+ this.fb.submitQuestionnaire();
719
308
  }
720
- verifySecurityQuestion() {
721
- this.securityAnswer = this.securityQuestionForm.get('securityQuestionAnswer')?.value;
722
- if (this.securityAnswer !== null) {
723
- this.randomSecurityQuestionModel.securityAnswer = this.securityAnswer;
724
- this.ss.validateUserSecurityInformation(this.randomSecurityQuestionModel).subscribe(res => {
725
- this.securityQuestionVerified = true;
726
- this.displaySecurityQuestion = false;
727
- this.successDtls = null;
728
- this.errorDtls = null;
729
- this.accepted.emit(true);
730
- }, err => {
731
- this.logger.debug('Verify status error ', err);
732
- this.securityQuestionVerified = false;
733
- this.successDtls = null;
734
- this.errorDtls = err.msg;
735
- this.accepted.emit(false);
736
- });
737
- }
309
+ getAllSecurityQuestions() {
310
+ this.cs.getAllSecurityQuestion().subscribe((res) => {
311
+ this.allSecurityQuestions = res;
312
+ this.loadSecurityQuestionsOfClaimant(res);
313
+ // this.saveQuestionnaire();
314
+ }, (err) => { });
738
315
  }
739
- redirectLink(view) {
740
- let userModel = this.ls.getUser();
741
- this.util.showLoader().then(() => {
742
- window.open(`${LibConstants.benefitsUrlExternal}/faces/virtual/contextswitch.xhtml?a=${userModel.access_token}&r=${userModel.refresh_token}&v=2299&CLAIMANT_PORTAL=true&view=${view}`, "_self");
316
+ loadSecurityQuestionsOfClaimant(allQuestionWithKeys) {
317
+ var userName = this.userName;
318
+ this.util.get(`user/security/${userName}`).subscribe((res) => {
319
+ this.usersQuesAndAns = res;
320
+ // Initialize mappedKeysQuestionsForUser
321
+ this.mappedKeysQuestionsForUser = [];
322
+ // List of possible security question fields
323
+ const securityQuestionFields = [
324
+ 'securityQuestion',
325
+ 'securityQuestion2',
326
+ 'securityQuestion3',
327
+ ];
328
+ // Create a map for quick lookup of question descriptions
329
+ const questionMap = new Map();
330
+ for (const item of allQuestionWithKeys) {
331
+ questionMap.set(item.key, item.description || '');
332
+ }
333
+ // Iterate through each security question field
334
+ for (const field of securityQuestionFields) {
335
+ const fieldValue = this.usersQuesAndAns[field];
336
+ if (fieldValue && questionMap.has(fieldValue)) {
337
+ this.mappedKeysQuestionsForUser.push({
338
+ question: questionMap.get(fieldValue),
339
+ questionKey: fieldValue,
340
+ });
341
+ }
342
+ }
343
+ this.isSecurityQuestionEnabled = true;
344
+ }, (err) => {
345
+ console.error('Error loading security questions:', err);
743
346
  });
744
347
  }
745
- getExternalClaimantReport() {
746
- this.downloadStatusForHistory = "started";
747
- return this.bs.getExternalClaimantReport(this.ls.getUser().ssn).subscribe(res => {
748
- this.downloadRawFile(res, 'ExternalAgencyReport.pdf');
749
- }, err => {
750
- this.downloadStatusForHistory = "error";
751
- this.logger.debug('Getting External Claimant Report error', err);
348
+ enableLexisNexis() {
349
+ this.util.showLoader();
350
+ this.isButtonDisabled = true;
351
+ this.isSecurityQuestionEnabled = false;
352
+ this.ln.isLexisNexisIdProofingEnabledWithUserId(this.userName).subscribe((res) => {
353
+ // If lexis-nexis id proofing is enabled
354
+ if (res) {
355
+ this.isLexisNexisPopupEnabled = true;
356
+ }
357
+ else {
358
+ this.util.showError("The claimant account with user name" + this.userName + " has been blocked. Please contact KDOL.");
359
+ }
752
360
  });
361
+ //this.onCancel.emit();
362
+ // usps redirect call
363
+ //this.triggerUdol();
753
364
  }
754
- downloadRawFile(res, filename) {
755
- let binaryData = [];
756
- binaryData.push(res);
757
- const url = window.URL.createObjectURL(new Blob(binaryData, { type: "application/xlsx" }));
758
- const a = document.createElement('a');
759
- a.href = url;
760
- a.download = filename;
761
- a.click();
762
- URL.revokeObjectURL(url);
365
+ triggerUdol() {
366
+ this.onCancel.emit();
367
+ this.util.hideLoader();
368
+ console.log("usps is triggered");
369
+ localStorage.setItem('userId', this.userName);
370
+ this.ls.logout();
371
+ setTimeout(() => this.router.navigate(['/usps-redirect', ""]), 1000);
763
372
  }
764
373
  handleError(error) {
765
374
  if (error?.errorCode == '422') {
@@ -774,122 +383,103 @@ export class ProfileComponent extends BasePage {
774
383
  this.nav.navigateRoot('/landing');
775
384
  this.ls.logout();
776
385
  }
777
- getListOfActiveClaim() {
778
- this.claimService.getListOfActiveClaim().subscribe((res) => {
779
- this.listOfActiveClaim = res;
780
- });
781
- }
782
- getVerificationReport() {
783
- this.downloadStatusForVerification = "started";
784
- return this.bs.getVerificationReport(this.ls.getUser().claimantId).subscribe(res => {
785
- this.downloadRawFile(res, 'UnemploymentVerificationReport.pdf');
786
- }, err => {
787
- this.downloadStatusForVerification = "error";
788
- this.logger.debug('Getting Unemployment Verification Report error', err);
386
+ getPersonalDetails() {
387
+ this.cs.getUserPersonalDetails().subscribe({
388
+ next: (res) => {
389
+ if (res) {
390
+ this.userPersonalDetail = res;
391
+ }
392
+ else {
393
+ this.util.showError("Failed to get the user info.");
394
+ }
395
+ },
396
+ error: (err) => {
397
+ // Log the error for debugging purposes
398
+ console.error('Error fetching user details:', err);
399
+ this.util.showError("An error occurred while fetching user information.");
400
+ }
789
401
  });
790
402
  }
791
- finishAndSave(formData, isAddressValidated) {
792
- this.showInlineError = false;
793
- this.fb.questionnaire.questionnaire.questionnaireForm.form.controls['hidIsAddressValidated'].setValue(isAddressValidated);
794
- if ((formData['phone'] == formData['hidOriginalPhone']) && (formData['email'] == formData['hidOriginalEmail'])) {
795
- this.logger.debug("Phone or Email Not Changed");
796
- this.isOtpSent = false;
797
- console.log("address validation form flag", formData.hidIsAddressValidated);
798
- this.fb.submitQuestionnaire();
799
- }
800
- else if (formData["hidIsEmailChanged"] === "Y" && formData["hidIsPhoneChanged"] === "Y") {
801
- this.logger.debug("Both Email and Phone Changed");
802
- this.errorText = "Please contact MDES support for assistance updating Email Address.";
803
- this.showError = true;
804
- }
805
- else if (formData["hidOriginalPhone"] === "null" && formData["hidIsEmailChanged"] === "Y") {
806
- this.logger.debug("Trying to change email but phone number is not present");
807
- this.errorText = "Please contact MDES support for assistance updating Email Address and Cell Phone Number.";
808
- this.showError = true;
809
- }
810
- else {
811
- if (formData["hidIsEmailChanged"] === "Y") {
812
- this.logger.debug("Email Changed");
813
- this.type = 'text';
403
+ getSecQuestionsPaymentOptions() {
404
+ if (this.selected === 'payment-details') {
405
+ this.isPaymentOptionDivEnabled = false;
406
+ this.customerEventType = 'account';
407
+ this.util.hideLoader();
408
+ // this.isLexisNexisProofedWithinTwentyFourHours=true;
409
+ if (this.isLexisNexisProofedWithinTwentyFourHours) {
410
+ this.getAllSecurityQuestions();
814
411
  }
815
- else if (formData["hidIsPhoneChanged"] === "Y") {
816
- this.logger.debug("Phone Changed");
817
- this.type = 'email';
412
+ else {
413
+ //this.saveQuestionnaire();
414
+ this.isPaymentOptionDivEnabled = false;
415
+ this.isPaymentOptionQuestionsEnabled = true;
818
416
  }
819
- this.isOtpSent = true;
820
- this.initilizeForm();
821
- this.ss.sendOtpWithoutCaptcha(this.type).subscribe(res => {
822
- this.successDtls = "Access code sent successfully.";
823
- }, err => {
824
- this.isOtpSent = false;
825
- this.successDtls = null;
826
- this.errorDtls = err.msg;
827
- });
828
417
  }
829
418
  }
830
- isAddressChanged(current, last) {
831
- return current.streetAddress !== last.streetAddress ||
832
- current.optionalAddress !== last.optionalAddress ||
833
- current.city !== last.city ||
834
- current.state?.value !== last.state?.value ||
835
- current.zip !== last.zip ||
836
- current.country?.value !== last.country?.value;
419
+ validateNameChange(formData) {
420
+ const keysToCheck = ['fstname', 'middlename', 'lstname'];
421
+ // Iterate through the form data and check if the control has changed
422
+ for (let item of formData) {
423
+ const controlName = item.controlName.toLowerCase();
424
+ // Find the matching key in the response data
425
+ const matchedKey = keysToCheck.find(key => key.toLowerCase() === controlName);
426
+ if (matchedKey) {
427
+ // Retrieve the current value from the user data and the form value
428
+ const userPersonValue = this.userPersonalDetail.data[matchedKey];
429
+ const formControlValue = item.controlValue;
430
+ // Check if values are null, undefined, or empty, or if they differ (ignoring case)
431
+ const userIsEmpty = this.isNullOrEmpty(userPersonValue);
432
+ const formIsEmpty = this.isNullOrEmpty(formControlValue);
433
+ // Case-insensitive comparison of the values
434
+ if ((userIsEmpty && !formIsEmpty) || (!userIsEmpty && formIsEmpty) ||
435
+ (userPersonValue && formControlValue && userPersonValue.toLowerCase() !== formControlValue.toLowerCase())) {
436
+ // If values differ (ignoring case), return true (change detected)
437
+ return true;
438
+ }
439
+ }
440
+ }
441
+ // If no differences were found, return false (no changes)
442
+ return false;
443
+ }
444
+ // Utility method to check for null,undefined or empty string
445
+ isNullOrEmpty(value) {
446
+ return value === null || value === "" || value === undefined;
837
447
  }
838
- static { this.ɵfac = function ProfileComponent_Factory(t) { return new (t || ProfileComponent)(i0.ɵɵdirectiveInject(i1.LoggerService), i0.ɵɵdirectiveInject(i2.LoginService), i0.ɵɵdirectiveInject(i3.ClaimantService), i0.ɵɵdirectiveInject(i4.BirtService), i0.ɵɵdirectiveInject(i5.ClaimService), i0.ɵɵdirectiveInject(i6.NavController), i0.ɵɵdirectiveInject(i7.SecurityService), i0.ɵɵdirectiveInject(i8.UtilService), i0.ɵɵdirectiveInject(i9.UntypedFormBuilder), i0.ɵɵdirectiveInject(i10.Title), i0.ɵɵdirectiveInject(i6.ModalController)); }; }
448
+ static { this.ɵfac = function ProfileComponent_Factory(t) { return new (t || ProfileComponent)(i0.ɵɵdirectiveInject(i1.UtilService), i0.ɵɵdirectiveInject(i2.LoginService), i0.ɵɵdirectiveInject(i3.NavController), i0.ɵɵdirectiveInject(i4.ClaimantService), i0.ɵɵdirectiveInject(i5.Router), i0.ɵɵdirectiveInject(i6.ClaimantUspsRedirectService), i0.ɵɵdirectiveInject(i7.LexisNexisService)); }; }
839
449
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProfileComponent, selectors: [["app-profile"]], viewQuery: function ProfileComponent_Query(rf, ctx) { if (rf & 1) {
840
450
  i0.ɵɵviewQuery(_c0, 5);
841
- i0.ɵɵviewQuery(_c1, 5);
842
- i0.ɵɵviewQuery(_c2, 5);
843
451
  } if (rf & 2) {
844
452
  let _t;
845
453
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fb = _t.first);
846
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.otpFormDirective = _t.first);
847
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.securityQuestionFormDirective = _t.first);
848
- } }, inputs: { form: "form", question: "question" }, outputs: { onCancel: "onCancel", accepted: "accepted" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 13, consts: [["visible", "true", "modal", "true", "appendTo", "body", "position", "top", 3, "breakpoints"], ["pTemplate", "header"], ["style", "margin-left: -8px;", 4, "ngIf"], ["class", "proof-of-unemployment", 4, "ngIf"], ["style", "margin-top: -90px;", 4, "ngIf"], [4, "ngIf"], ["style", "color: var(--ion-color-green)", 4, "ngIf"], ["pTemplate", "footer"], [1, "ion-text-left", "heading", 2, "padding-left", "24px"], [2, "font-size", "16px"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick", 4, "ngIf"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick"], [2, "margin-left", "-8px"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete", 4, "ngIf"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete"], ["fb", ""], ["class", "error-banner", 4, "ngIf"], [1, "error-banner"], ["name", "alert-circle-outline", 2, "color", "var(--ion-color-danger)", "font-size", "18px", "margin-right", "8px"], [1, "proof-of-unemployment"], ["style", "padding: 0px 1rem", 4, "ngIf", "ngIfElse"], ["nonPhraseTwoView", ""], [2, "padding", "0px 1rem"], [2, "margin-top", "15px"], ["class", "flex align-items-center flex-column", "layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 1, "flex", "align-items-center", "flex-column", 2, "margin", "3px"], [1, "p-4", 2, "height", "100%", "width", "100%"], [2, "box-shadow", "0 0 0 0"], [1, "pi", "pi-check-circle", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], [1, "pl-0", "pr-0", "flex", "align-items-center", "flex-column", 2, "height", "100%", "justify-content", "space-between"], [1, "flex", "flex-column", "align-items-center", 2, "padding-bottom", "30px"], ["shape", "round", 1, "Claimant-summary-ver-btn", 2, "width", "10rem", 3, "click"], ["name", "download-outline", 1, "pr-1", "pb-1"], [1, "pi", "pi-file", 2, "color", "var(--ion-color-primary)", "font-size", "30px"], ["shape", "round", 1, "Claimant-report-btn", 2, "width", "'10rem'", 3, "click"], ["layout", "row", "style", "margin:3px;", 4, "ngIf"], ["layout", "row", 2, "margin", "3px"], ["shape", "round", "fill", "outline", 1, "Claimant-summary-ver-btn", 3, "click"], ["shape", "round", "fill", "outline", 1, "Claimant-report-btn", 3, "click"], ["name", "download-outline"], [2, "margin-top", "-90px"], [3, "formGroup"], ["otpFormDirective", "ngForm"], [1, "p-fluid", "p-formgrid"], ["for", "otp", 3, "innerHTML"], ["formControlName", "otp", "mask", "999999", "size", "6", "maxlength", "6", "minlength", "6", "title", "Enter Authcode", 3, "autoFocus"], [3, "field", "form", "errDef"], ["shape", "round", "type", "submit", 3, "click"], ["securityQuestionFormDirective", "ngForm"], ["for", "securityQuestionAnswer", 3, "innerHTML"], ["pInputText", "", "formControlName", "securityQuestionAnswer", "size", "30", "maxlength", "30", "title", "Security Answer"], [2, "color", "var(--ion-color-green)"], [1, "ion-text-center", "ion-padding-top"], ["name", "checkmark-circle", 2, "font-size", "80px", "color", "var(--ion-color-green)"], ["name", "close-circle-outline", 2, "font-size", "80px", "color", "var(--ion-color-danger)"], ["size", "12", "sizeXl", "4", "sizeLg", "4", "sizeMd", "5", 1, "ion-text-left"], ["shape", "round", "fill", "outline", "type", "button", 3, "click"], ["size", "12", "sizeXl", "8", "sizeLg", "8", "sizeMd", "7", 1, "ion-text-right"], ["shape", "round", "fill", "outline", "type", "reset", 3, "click"], ["shape", "round", "type", "submit", 3, "disabled", "click", 4, "ngIf"], ["shape", "round", "type", "submit", 3, "disabled", "click"]], template: function ProfileComponent_Template(rf, ctx) { if (rf & 1) {
454
+ } }, outputs: { onCancel: "onCancel", error: "error" }, decls: 8, vars: 10, consts: [["visible", "true", "modal", "true", "appendTo", "body", "position", "top", 3, "breakpoints"], ["pTemplate", "header"], ["style", "margin-left: -8px;", 4, "ngIf"], [4, "ngIf"], ["pTemplate", "footer"], [3, "display", "userName", "customerEventType", "success", "error", "usps", 4, "ngIf"], [3, "display", "questionsAndAnswers", "questionsAndKeysOfUser", "success", "clear", 4, "ngIf"], ["id", "pdialog-title", 1, "ion-text-left", "heading", 2, "padding-left", "24px"], [2, "font-size", "16px"], ["styleClass", "ion-padding-start", "optionLabel", "text", "optionValue", "value", 3, "options", "ngModel", "ngModelChange", "onOptionClick"], [2, "margin-left", "-8px"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete", 4, "ngIf"], [3, "flowKey", "showOnlyQuestion", "hideHeader", "hideFooter", "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg", "onError", "onComplete"], ["fb", ""], [1, "ion-text-center", "ion-padding-top"], ["name", "checkmark-circle", 2, "font-size", "80px", "color", "var(--ion-color-green)"], ["name", "close-circle-outline", 2, "font-size", "80px", "color", "var(--ion-color-danger)"], ["size", "12", "sizeXl", "4", "sizeLg", "4", "sizeMd", "5", 1, "ion-text-left"], ["tabindex", "0", "shape", "round", "fill", "outline", "type", "button", 1, "ionButton", 3, "disabled", "click", "keydown.enter"], ["size", "12", "sizeXl", "8", "sizeLg", "8", "sizeMd", "7", 1, "ion-text-right"], ["tabindex", "0", "shape", "round", "fill", "outline", "type", "reset", 1, "ionButton", 3, "disabled", "click", "keydown.enter"], ["tabindex", "0", "shape", "round", "type", "submit", "class", "ionButton", 3, "disabled", "click", "keydown.enter", 4, "ngIf"], ["tabindex", "0", "shape", "round", "type", "submit", 1, "ionButton", 3, "disabled", "click", "keydown.enter"], [3, "display", "userName", "customerEventType", "success", "error", "usps"], [3, "display", "questionsAndAnswers", "questionsAndKeysOfUser", "success", "clear"]], template: function ProfileComponent_Template(rf, ctx) { if (rf & 1) {
849
455
  i0.ɵɵelementStart(0, "p-dialog", 0);
850
- i0.ɵɵtemplate(1, ProfileComponent_ng_template_1_Template, 11, 6, "ng-template", 1)(2, ProfileComponent_div_2_Template, 5, 4, "div", 2)(3, ProfileComponent_div_3_Template, 4, 2, "div", 3)(4, ProfileComponent_div_4_Template, 16, 15, "div", 4)(5, ProfileComponent_div_5_Template, 16, 14, "div", 4)(6, ProfileComponent_mat_error_6_Template, 2, 1, "mat-error", 5)(7, ProfileComponent_ion_label_7_Template, 3, 1, "ion-label", 6)(8, ProfileComponent_div_8_Template, 6, 3, "div", 5)(9, ProfileComponent_div_9_Template, 5, 2, "div", 5)(10, ProfileComponent_ng_template_10_Template, 11, 7, "ng-template", 7);
456
+ i0.ɵɵtemplate(1, ProfileComponent_ng_template_1_Template, 10, 6, "ng-template", 1)(2, ProfileComponent_div_2_Template, 5, 4, "div", 2)(3, ProfileComponent_div_3_Template, 5, 0, "div", 3)(4, ProfileComponent_div_4_Template, 5, 1, "div", 3)(5, ProfileComponent_ng_template_5_Template, 9, 3, "ng-template", 4)(6, ProfileComponent_app_lexis_nexis_6_Template, 1, 3, "app-lexis-nexis", 5)(7, ProfileComponent_app_security_question_7_Template, 1, 3, "app-security-question", 6);
851
457
  i0.ɵɵelementEnd();
852
458
  } if (rf & 2) {
853
- i0.ɵɵstyleMap(i0.ɵɵpureFunction0(11, _c7));
854
- i0.ɵɵproperty("breakpoints", i0.ɵɵpureFunction0(12, _c8));
459
+ i0.ɵɵstyleMap(i0.ɵɵpureFunction0(8, _c1));
460
+ i0.ɵɵproperty("breakpoints", i0.ɵɵpureFunction0(9, _c2));
855
461
  i0.ɵɵadvance(2);
856
462
  i0.ɵɵproperty("ngIf", !(ctx.showSuccess || ctx.showError));
857
463
  i0.ɵɵadvance(1);
858
- i0.ɵɵproperty("ngIf", ctx.selected == "proof-of-unemployment");
859
- i0.ɵɵadvance(1);
860
- i0.ɵɵproperty("ngIf", ctx.isMS() && ctx.selected == "contact-details" && ctx.isOtpSent == true);
861
- i0.ɵɵadvance(1);
862
- i0.ɵɵproperty("ngIf", ctx.isME() && ctx.selected == "contact-details" && ctx.displaySecurityQuestion == true);
863
- i0.ɵɵadvance(1);
864
- i0.ɵɵproperty("ngIf", ctx.errorDtls);
865
- i0.ɵɵadvance(1);
866
- i0.ɵɵproperty("ngIf", ctx.successDtls);
867
- i0.ɵɵadvance(1);
868
464
  i0.ɵɵproperty("ngIf", ctx.showSuccess);
869
465
  i0.ɵɵadvance(1);
870
466
  i0.ɵɵproperty("ngIf", ctx.showError);
871
- } }, dependencies: [i6.IonButton, i6.IonCard, i6.IonCardContent, i6.IonCardTitle, i6.IonCol, i6.IonGrid, i6.IonHeader, i6.IonIcon, i6.IonLabel, i6.IonRow, i11.NgIf, i12.PrimeTemplate, i13.MatError, i9.ɵNgNoValidate, i9.DefaultValueAccessor, i9.NgControlStatus, i9.NgControlStatusGroup, i9.MinLengthValidator, i9.MaxLengthValidator, i9.FormGroupDirective, i9.FormControlName, i9.NgModel, i14.Dialog, i15.InputText, i16.InputMask, i17.SelectButton, i18.ErrorComponent, i19.FormBuilderPage, i20.TranslatePipe], styles: ["ion-col[_ngcontent-%COMP%]{margin-left:0!important}.Claimant-report-btn[_ngcontent-%COMP%]{margin-inline-end:3%}.proof-unemployment-btn-label[_ngcontent-%COMP%]{margin-bottom:3px}.error-banner[_ngcontent-%COMP%]{display:flex;align-items:center;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:8px 12px;margin-bottom:10px;font-size:14px}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-right:none}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}"] }); }
467
+ i0.ɵɵadvance(2);
468
+ i0.ɵɵproperty("ngIf", ctx.isLexisNexisPopupEnabled);
469
+ i0.ɵɵadvance(1);
470
+ i0.ɵɵproperty("ngIf", ctx.isSecurityQuestionEnabled);
471
+ } }, dependencies: [i3.IonButton, i3.IonCol, i3.IonGrid, i3.IonIcon, i3.IonRow, i8.NgIf, i9.PrimeTemplate, i10.NgControlStatus, i10.NgModel, i11.Dialog, i12.SelectButton, i13.FormBuilderPage, i14.SecurityQuestionComponent, i15.LexisNexisComponent, i16.TranslatePipe], styles: ["ion-col[_ngcontent-%COMP%]{margin-left:0!important}ion-button[_ngcontent-%COMP%]:focus{outline:none}"] }); }
872
472
  }
873
473
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProfileComponent, [{
874
474
  type: Component,
875
- args: [{ selector: 'app-profile', template: "<p-dialog visible=\"true\" modal=\"true\" appendTo=\"body\"\r\n [breakpoints]=\"{'1024px': '75vw', '768px': '85vw', '640px': '100vw'}\" [style]=\"{width: '60vw'}\" position=\"top\">\r\n <ng-template pTemplate=\"header\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left heading\" style=\"padding-left: 24px;\">\r\n {{\"Your Account\" | translate}} <span style=\"font-size: 16px;\">(CLAIMANT ID\r\n {{ls.getUser().claimantId}})</span>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-selectButton *ngIf=\"!isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOpts\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n <p-selectButton *ngIf=\"isME()\" styleClass=\"ion-padding-start\" [options]=\"profileOptsIVR\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n <div *ngIf=\"!(showSuccess || showError)\" style=\"margin-left: -8px;\">\r\n <app-form-builder #fb *ngIf=\"selected == 'personal-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <div *ngIf=\"selected == 'contact-details'\">\r\n <div *ngIf=\"showInlineError && selected === 'contact-details'\" class=\"error-banner\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"color: var(--ion-color-danger); font-size: 18px; margin-right: 8px;\"></ion-icon>\r\n <span>{{ errorText }}</span>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'contact-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'payment-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <app-form-builder #fb *ngIf=\"selected == 'update-ivr'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\"\r\n [hideHeader]=\"true\" [hideFooter]=\"true\" [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\"\r\n [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n <div class=\"proof-of-unemployment\" *ngIf=\"selected == 'proof-of-unemployment'\">\r\n <div *ngIf=\"phaseTwoProofOfUIView==='true';else nonPhraseTwoView\" style=\"padding: 0px 1rem\">\r\n <!-- <h2 style=\"font-family: 'Open Sans, Light';\">\r\n {{ \"profile.proof.of.unemployment.label.proof.of.unemployment.pay\"| translate}}\r\n </h2>\r\n <div *ngIf=\"!listOfActiveClaim || listOfActiveClaim.length === 0; else activeClaimTable\">\r\n <h3 style=\"font-family: 'Open Sans, Light';\">\r\n {{\"profile.proof.of.unemployment.label.no.active.claim\"| translate}}\r\n </h3>\r\n </div>\r\n <ng-template #activeClaimTable>\r\n <p-table [value]=\"listOfActiveClaim\" dataKey=\"claimId\" [rowExpandMode]=\"'single'\" styleClass=\"seperate-row\" class=\"seperate-row\"\r\n [tableStyle]=\"{'border-collapse': 'separate','border-spacing': '0 8px'}\"\r\n >\r\n <ng-template pTemplate=\"body\" let-data let-expanded=\"expanded\">\r\n <tr>\r\n <td>\r\n <a href=\"#\" [pRowToggler]=\"data\">\r\n <i [ngClass]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\" style=\"font-size: 1.5rem;\"></i>\r\n </a> \r\n <td >\r\n {{data.effectiveDate}} - {{data.byeDate}}\r\n </td>\r\n <td>\r\n {{data.entitlementType}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"rowexpansion\" let-data>\r\n <tr>\r\n <td colspan=\"7\" style=\" border-left: 1px solid #e4e4e4;border-right: 1px solid #e4e4e4;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col style=\"display: flex;justify-content: center;\">\r\n <img [src]=\"docFileLink\" height='500px' width='420px'/>\r\n </ion-col>\r\n <ion-col style=\"display: flex;flex-direction: column;justify-content: space-between;\">\r\n <ion-row >\r\n <span [innerHTML]=\"data.description\" style=\"font-size: 19px;\"></span>\r\n </ion-row>\r\n <ion-row>\r\n \r\n <ion-button fill=\"outline\" shape=\"round\" style=\"padding-inline-end: 2rem;\" (click)=\"getVerificationReport()\">\r\n {{ \"profile.proof.of.unemployment.button.download.report\"| translate}}\r\n </ion-button>\r\n </ion-row>\r\n </ion-col>\r\n </ion-row>\r\n \r\n </ion-grid>\r\n \r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-template> -->\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" class=\"flex align-items-center flex-column\" layout=\"row\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%; width:100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-file\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i>{{ \"profile.proof.of.unemployment.phase.two.label.download.unemployment.claim.report\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.unemployment.claim.report'| translate}}\r\n </label>\r\n <div class=\"flex flex-column align-items-center\" style=\"padding-bottom:30px\">\r\n <ion-button shape=\"round\" (click)=\"getExternalClaimantReport()\" style=\"width:'10rem'\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon>{{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n <div *ngIf=\"downloadStatusForHistory=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForHistory=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </div>\r\n \r\n </ion-card-content>\r\n </ion-card>\r\n \r\n </ion-col>\r\n <ion-col layout=\"row\" class=\"flex align-items-center flex-column\" style = \"margin:3px;\">\r\n <ion-card class=\"p-4\" style=\"height: 100%; width:100%;\">\r\n <ion-header style=\"box-shadow: 0 0 0 0\">\r\n <ion-card-title><i class=\"pi pi-check-circle\" style=\"color: var(--ion-color-primary);font-size: 30px;\"></i> {{ \"profile.proof.of.unemployment.phase.two.label.summary.unemployment.claim\"| translate}}</ion-card-title>\r\n </ion-header>\r\n <ion-card-content class=\"pl-0 pr-0 flex align-items-center flex-column\" style=\"height: 100%; justify-content: space-between;\">\r\n <label>\r\n {{'profile.proof.of.unemployment.phase.two.overlay.summary.unemployment.claim'| translate}}\r\n </label>\r\n <div class=\"flex flex-column align-items-center\" style=\"padding-bottom:30px\">\r\n <ion-button shape=\"round\" (click)=\"getVerificationReport()\" style=\"width:10rem\"\r\n class=\"Claimant-summary-ver-btn\">\r\n <ion-icon name=\"download-outline\" class=\"pr-1 pb-1\"></ion-icon> {{ \"profile.proof.of.unemployment.phase.two.button.download.report\"| translate}}\r\n </ion-button>\r\n <div *ngIf=\"downloadStatusForVerification=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForVerification=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </div>\r\n \r\n </ion-card-content>\r\n \r\n </ion-card>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n </div>\r\n <ng-template #nonPhraseTwoView>\r\n <ion-grid style=\"margin-top: 15px;\">\r\n <ion-row>\r\n <ion-col *ngIf=\"!isME()\" layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.download.unemployment.claim.report\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"getExternalClaimantReport()\"\r\n class=\"Claimant-report-btn\">\r\n <ion-icon name=\"download-outline\"></ion-icon>{{ \"profile.proof.of.unemployment.button.external.claimant.report\"| translate}}\r\n </ion-button>\r\n <br>\r\n <div *ngIf=\"downloadStatusForHistory=='started'\">{{ \"profile.proof.of.unemployment.status.download.start\"| translate}}</div>\r\n <mat-error *ngIf=\"downloadStatusForHistory=='error'\">{{ \"profile.proof.of.unemployment.status.download.error\"| translate}}</mat-error>\r\n </ion-col>\r\n <ion-col layout=\"row\" style = \"margin:3px;\">\r\n <label>\r\n {{ \"profile.proof.of.unemployment.label.summary.unemployment.claim\"| translate}}\r\n </label>\r\n <br>\r\n <ion-button shape=\"round\" fill=\"outline\" (click)=\"redirectLink('.claimantsummaryverification')\"\r\n class=\"Claimant-summary-ver-btn\">{{ \"profile.proof.of.unemployment.button.unemployment.verification\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"isMS() && selected == 'contact-details' && isOtpSent == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"otpForm\" #otpFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"otp\" [innerHTML]=\"'profile.contact.details.label.otp' | translate:{ type: type }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-inputMask formControlName=\"otp\" mask=\"999999\" size=\"6\" maxlength=\"6\" minlength=\"6\"\r\n [autoFocus]='true' title='Enter Authcode'></p-inputMask>\r\n <app-error [field]='otp' [form]=\"otpFormDirective\" [errDef]=\"{ \r\n required: 'Authcode is required.',\r\n minlength: 'Authcode should have 6 numbers.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verify()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <div *ngIf=\"isME() && selected == 'contact-details' && displaySecurityQuestion == true\" style=\"margin-top: -90px;\">\r\n <form [formGroup]=\"securityQuestionForm\" #securityQuestionFormDirective=\"ngForm\">\r\n <ion-row>\r\n <div class=\"p-fluid p-formgrid\">\r\n <ion-row>\r\n <label for=\"securityQuestionAnswer\" [innerHTML]=\"'profile.contact.details.label.securityQuestion' | translate:{ securityQuestionToAsk: securityQuestionToAsk }\"></label>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n \t<input pInputText formControlName=\"securityQuestionAnswer\" size=\"30\" maxlength=\"30\" title=\"Security Answer\" />\r\n <app-error [field]='securityQuestionAnswer' [form]=\"securityQuestionFormDirective\" [errDef]=\"{ \r\n required: 'Security Answer is required.'\r\n }\"></app-error>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"verifySecurityQuestion()\">{{ \"profile.contact.details.button.verify\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n </ion-row>\r\n </form>\r\n </div>\r\n <mat-error *ngIf=\"errorDtls\">{{errorDtls}}</mat-error>\r\n <ion-label *ngIf=\"successDtls\" style=\"color: var(--ion-color-green)\">{{successDtls}}<br /></ion-label>\r\n\r\n <div *ngIf=\"showSuccess\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"checkmark-circle\" style=\"font-size: 80px; color: var(--ion-color-green);\"></ion-icon>\r\n <h1>{{ \"profile.banner.success\"| translate}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showError\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"close-circle-outline\" style=\"font-size: 80px; color: var(--ion-color-danger);\"></ion-icon>\r\n <section *ngIf=\"isMS()\">\r\n <h1>{{ errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n <section *ngIf=\"!isMS()\">\r\n <h1>{{errorText ? errorText : ('profile.banner.request.process.failure' | translate) }}</h1>\r\n </section>\r\n </div>\r\n </div>\r\n <ng-template pTemplate=\"footer\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left\" size=\"12\" sizeXl=\"4\" sizeLg=\"4\" sizeMd=\"5\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"button\" (click)=\"logout()\">{{ \"profile.button.logout\"| translate}}</ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right\" size=\"12\" sizeXl=\"8\" sizeLg=\"8\" sizeMd=\"7\">\r\n <ion-button shape=\"round\" fill=\"outline\" type=\"reset\" (click)=\"cancel()\">{{ \"profile.button.close\"| translate}}</ion-button>\r\n <ion-button shape=\"round\" type=\"submit\" (click)=\"save()\" *ngIf=\"!(showSuccess || showError) && selected!='proof-of-unemployment'\"\r\n [disabled]=\"isOtpSent== true || displaySecurityQuestion== true\">{{ \"profile.button.save\"| translate}}</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n</p-dialog>", styles: ["ion-col{margin-left:0!important}.Claimant-report-btn{margin-inline-end:3%}.proof-unemployment-btn-label{margin-bottom:3px}.error-banner{display:flex;align-items:center;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;padding:8px 12px;margin-bottom:10px;font-size:14px}.seperate-row td:not(:first-child):not(:last-child){border-left:none;border-right:none}.seperate-row td:first-child{border-right:none}.seperate-row td:last-child{border-left:none;padding:1rem .55rem;padding-right:20px}.seperate-row td{border:1px solid #e4e4e4;font-family:\"Open Sans, Light\";font-size:26px;padding:1rem .55rem}\n"] }]
876
- }], () => [{ type: i1.LoggerService }, { type: i2.LoginService }, { type: i3.ClaimantService }, { type: i4.BirtService }, { type: i5.ClaimService }, { type: i6.NavController }, { type: i7.SecurityService }, { type: i8.UtilService }, { type: i9.UntypedFormBuilder }, { type: i10.Title }, { type: i6.ModalController }], { fb: [{
475
+ args: [{ selector: 'app-profile', template: "<p-dialog visible=\"true\" modal=\"true\" appendTo=\"body\" [breakpoints]=\"{'1024px': '75vw', '768px': '85vw', '640px': '100vw'}\"\r\n [style]=\"{width: '60vw'}\" position=\"top\">\r\n <ng-template pTemplate=\"header\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left heading\" style=\"padding-left: 24px;\" id=\"pdialog-title\">\r\n {{\"Your Account\" | translate}} <span style=\"font-size: 16px;\">(CID\r\n {{ls.getUser().claimantId}})</span>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col>\r\n <p-selectButton styleClass=\"ion-padding-start\" [options]=\"profileOpts\" optionLabel=\"text\"\r\n optionValue=\"value\" [(ngModel)]=\"selected\" (onOptionClick)=\"onValueChange($event)\">\r\n </p-selectButton>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template> \r\n \r\n <div *ngIf=\"!(showSuccess || showError)\" style=\"margin-left: -8px;\">\r\n <div *ngIf=\"selected == 'payment-details' && !isPaymentOptionQuestionsEnabled && isPaymentOptionDivEnabled\"> \r\n {{ getSecQuestionsPaymentOptions() }} \r\n </div>\r\n <app-form-builder #fb *ngIf=\"selected == 'personal-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\" [hideHeader]=\"true\" [hideFooter]=\"true\"\r\n [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\" [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <app-form-builder #fb *ngIf=\"selected == 'contact-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\" [hideHeader]=\"true\" [hideFooter]=\"true\"\r\n [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\" [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n <div *ngIf=\"(isPaymentOptionQuestionsEnabled)\">\r\n <app-form-builder #fb *ngIf=\"selected == 'payment-details'\" [flowKey]=\"selected\" [showOnlyQuestion]=\"true\" [hideHeader]=\"true\" [hideFooter]=\"true\"\r\n [sizeXs]=\"12\" [sizeSm]=\"12\" [sizeMd]=\"12\" [sizeLg]=\"12\" [sizeXl]=\"12\" [offsetXl]=\"0\" [offsetLg]=\"0\" (onError)=\"handleError($event)\" (onComplete)=\"success($event)\">\r\n </app-form-builder>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showSuccess\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"checkmark-circle\" style=\"font-size: 80px; color: var(--ion-color-green);\"></ion-icon>\r\n <h1>Saved successfully.</h1>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showError\">\r\n <div class=\"ion-text-center ion-padding-top\">\r\n <ion-icon name=\"close-circle-outline\" style=\"font-size: 80px; color: var(--ion-color-danger);\"></ion-icon>\r\n <h1>{{errorText ? errorText : 'Opps, could not process your request. Please try again.'}}</h1>\r\n </div>\r\n </div>\r\n \r\n <ng-template pTemplate=\"footer\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col class=\"ion-text-left\" size=\"12\" sizeXl=\"4\" sizeLg=\"4\" sizeMd=\"5\">\r\n <ion-button tabindex=\"0\" shape=\"round\" fill=\"outline\" type=\"button\" [disabled]=\"isButtonDisabled\" (click)=\"logout()\" (keydown.enter)=\"logout()\" class=\"ionButton\">Logout</ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right\" size=\"12\" sizeXl=\"8\" sizeLg=\"8\" sizeMd=\"7\">\r\n <ion-button tabindex=\"0\" shape=\"round\" fill=\"outline\" type=\"reset\" [disabled]=\"isButtonDisabled\" (click)=\"cancel()\" (keydown.enter)=\"cancel()\" class=\"ionButton\">Close</ion-button>\r\n <ion-button tabindex=\"0\" shape=\"round\" type=\"submit\" [disabled]=\"isButtonDisabled\" (click)=\"save()\" (keydown.enter)=\"save()\" *ngIf=\"!(showSuccess || showError)\" class=\"ionButton\">Save</ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ng-template>\r\n <app-lexis-nexis *ngIf=\"isLexisNexisPopupEnabled\" [display]=\"isLexisNexisPopupEnabled\" [userName] = 'this.userName' [customerEventType] = 'this.customerEventType' (success)=\"onSecurityQuestionSuccess()\" (error)=\"triggerUdol()\" (usps)=\"triggerUdol()\"></app-lexis-nexis>\r\n <!-- Uncomment to enable lexis - nexis -->\r\n <app-security-question *ngIf=\"isSecurityQuestionEnabled\" [display]=\"isSecurityQuestionEnabled\" [questionsAndAnswers]=\"usersQuesAndAns\" [questionsAndKeysOfUser]=\"mappedKeysQuestionsForUser\" (success)=\"onSecurityQuestionSuccess()\" (clear)=\"enableLexisNexis()\"></app-security-question>\r\n <!-- Comment when lexis nexis is enabled -->\r\n <!-- <app-security-question *ngIf=\"isSecurityQuestionEnabled\" [display]=\"isSecurityQuestionEnabled\" [questionsAndAnswers]=\"usersQuesAndAns\" [questionsAndKeysOfUser]=\"mappedKeysQuestionsForUser\" (success)=\"onSecurityQuestionSuccess()\" (clear)=\"triggerUdol()\"></app-security-question> -->\r\n \r\n</p-dialog>", styles: ["ion-col{margin-left:0!important}ion-button:focus{outline:none}\n"] }]
476
+ }], () => [{ type: i1.UtilService }, { type: i2.LoginService }, { type: i3.NavController }, { type: i4.ClaimantService }, { type: i5.Router }, { type: i6.ClaimantUspsRedirectService }, { type: i7.LexisNexisService }], { fb: [{
877
477
  type: ViewChild,
878
478
  args: ['fb']
879
479
  }], onCancel: [{
880
480
  type: Output
881
- }], otpFormDirective: [{
882
- type: ViewChild,
883
- args: ['otpFormDirective', { static: false }]
884
- }], securityQuestionFormDirective: [{
885
- type: ViewChild,
886
- args: ['securityQuestionFormDirective', { static: false }]
887
- }], form: [{
888
- type: Input
889
- }], question: [{
890
- type: Input
891
- }], accepted: [{
481
+ }], error: [{
892
482
  type: Output
893
483
  }] }); })();
894
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProfileComponent, { className: "ProfileComponent", filePath: "lib\\components\\profile\\profile.component.ts", lineNumber: 32 }); })();
895
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTXBFLE9BQU8sRUFBZ0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDUDdELDBDQUN1RjtJQUEvRCxvUUFBc0IsME1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGOEMsNkNBQXVCLDZCQUFBOzs7O0lBR3RGLDBDQUN1RjtJQUEvRCxxUUFBc0IsMk1BQWtCLGVBQUEsNkJBQXFCLENBQUEsSUFBdkM7SUFDOUMsaUJBQWlCOzs7SUFGNkMsZ0RBQTBCLDZCQUFBOzs7SUFacEcsZ0NBQVUsY0FBQSxpQkFBQTtJQUdFLFlBQStCOztJQUFBLCtCQUErQjtJQUFBLFlBQzlCO0lBQUEsaUJBQU8sRUFBQSxFQUFBO0lBRy9DLCtCQUFTLGNBQUE7SUFFRCxzR0FF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Q0FBaUI7WUFFdkIsZUFBaUI7WUFBakIsc0NBQWlCO1lBT2pCLGVBQWU7WUFBZixvQ0FBZTs7O2lGRDdNWixnQkFBZ0I7Y0FMNUIsU0FBUzsyQkFDRSxhQUFhO29VQWtCTixFQUFFO2tCQUFsQixTQUFTO21CQUFDLElBQUk7WUFHZixRQUFRO2tCQURQLE1BQU07WUFtQkEsZ0JBQWdCO2tCQUZ0QixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQTBCekMsNkJBQTZCO2tCQUZuQyxTQUFTO21CQUFDLCtCQUErQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUtwRCxJQUFJO2tCQUFaLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0ksUUFBUTtrQkFBakIsTUFBTTs7a0ZBaEVJLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tYm9PcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9Db21ib01vZGVsJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXJQYWdlIH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLnBhZ2UnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTZWN1cml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWN1cml0eS1zZXJ2aWNlL3NlY3VyaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmdGb3JtLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEVsZW1lbnRzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9FbGVtZW50c01vZGVsJztcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vcGFnZXMvQmFzZVBhZ2UnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IEJpcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmlydC1zZXJ2aWNlL2JpcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDbGFpbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbXMvY2xhaW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZlQ2xhaW1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9BY3RpdmVDbGFpbU1vZGVsJzsgXG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hZGRyZXNzLXZhbGlkYXRpb24tc2VydmljZS9hZGRyZXNzLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBZGRyZXNzUmVjb21tZW5kYXRpb25Nb2RlbCBhcyBBZGRyUmVjfSBmcm9tICcuLi8uLi9tb2RlbHMvYWRkcmVzc1ZhbGlkYXRpb24vQWRkcmVzc1JlY29tbWVuZGF0aW9uTW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkcmVzcy1wb3B1cC9hZGRyZXNzLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBZGRyZXNzVmFsaWRhdGlvblJlcXVlc3RDb21wb25lbnRNb2RlbCBhcyBBZGRyUmVxfSBmcm9tICcuLi8uLi9tb2RlbHMvYWRkcmVzc1ZhbGlkYXRpb24vQWRkcmVzc1ZhbGlkYXRpb25SZXF1ZXN0Q29tcG9uZW50TW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc1ZhbGlkYXRpb25SZXNwb25zZUNvbXBvbmVudE1vZGVsIGFzIEFkZHJSZXN9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzVmFsaWRhdGlvbi9BZGRyZXNzVmFsaWRhdGlvblJlc3BvbnNlQ29tcG9uZW50TW9kZWwnO1xuaW1wb3J0IHsgU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NlY3VyaXR5UXVlc3Rpb25BbnN3ZXJNb2RlbCc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZmlsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNob3dTdWNjZXNzID0gZmFsc2U7XG4gIHNob3dFcnJvciA9IGZhbHNlO1xuICBwaGFzZVR3b1Byb29mT2ZVSVZpZXcgPSBMaWJDb25zdGFudHMuUGhhc2VUd29Qcm9vZk9mVUlWaWV3O1xuICBkb3dubG9hZFN0YXR1c0Zvckhpc3RvcnkgPSBcIlwiO1xuICBkb3dubG9hZFN0YXR1c0ZvclZlcmlmaWNhdGlvbiA9IFwiXCI7XG4gIGRvY0ZpbGVMaW5rOnN0cmluZyA9IFwiYXNzZXRzL2ltYWdlcy9zYW1wbGVEb2MucG5nXCI7XG4gIGVycm9yVGV4dDogc3RyaW5nO1xuICBjbGFpbWFudEFkZHJlc3NJZDogbnVtYmVyPSAwO1xuICBsYXN0VmFsaWRhdGVkQWRkcmVzczogYW55ID0gbnVsbDtcbiAgbGFzdFZhbGlkYXRlUmVzdWx0OiBzdHJpbmcgPScnO1xuICBhdHRlbXB0Q291bnQ6IG51bWJlciA9IDA7XG4gIGlzQWRkcmVzc1ZhbGlkYXRlZDogc3RyaW5nID0gJzAnO1xuICBzaG93SW5saW5lRXJyb3IgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZmInKSBmYjogRm9ybUJ1aWxkZXJQYWdlXG5cbiAgQE91dHB1dCgpXG4gIG9uQ2FuY2VsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgcHJvZmlsZU9wdHMgPSBDb21ib09wdGlvbi5DTEFJTUFOVF9QUk9GSUxFX09QVFM7XG5cbiAgcHVibGljIHByb2ZpbGVPcHRzSVZSID0gQ29tYm9PcHRpb24uQ0xBSU1BTlRfUFJPRklMRV9PUFRTX0lWUjtcblxuICBwdWJsaWMgc2VsZWN0ZWQgPSAncGVyc29uYWwtZGV0YWlscyc7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgaXNPdHBTZW50OiBib29sZWFuO1xuXG4gIHB1YmxpYyBzdWNjZXNzRHRscztcblxuICBwdWJsaWMgZXJyb3JEdGxzO1xuXG4gIEBWaWV3Q2hpbGQoJ290cEZvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcblxuICBwdWJsaWMgb3RwRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xuXG4gIHB1YmxpYyBvdHBGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBvdHBDb2RlO1xuXG4gIHB1YmxpYyBvdHBWZXJpZmllZDogYm9vbGVhbjtcblxuICBwdWJsaWMgZGlzcGxheVNlY3VyaXR5UXVlc3Rpb246IGJvb2xlYW47XG5cbiAgcHVibGljIHNlY3VyaXR5UXVlc3Rpb25Gb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uVG9Bc2s7XG5cbiAgcHVibGljIHNlY3VyaXR5QW5zd2VyO1xuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbDogU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsO1xuXG4gIHB1YmxpYyBmYWlsQ291bnRlcjogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdzZWN1cml0eVF1ZXN0aW9uRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuXG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xuXG4gIHB1YmxpYyBwcm9vZk9mVW5lbXBsb3ltZW50RGF0YTphbnk7XG4gIEBJbnB1dCgpIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBFbGVtZW50c01vZGVsO1xuICBAT3V0cHV0KCkgYWNjZXB0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIGxpc3RPZkFjdGl2ZUNsYWltOkFjdGl2ZUNsYWltTW9kZWxbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwdWJsaWMgbHM6IExvZ2luU2VydmljZSwgcHVibGljIGNzOiBDbGFpbWFudFNlcnZpY2UsIHB1YmxpYyBiczogQmlydFNlcnZpY2UsIHB1YmxpYyBjbGFpbVNlcnZpY2U6IENsYWltU2VydmljZSxcbiAgICBwdWJsaWMgbmF2OiBOYXZDb250cm9sbGVyLCBwdWJsaWMgc3M6IFNlY3VyaXR5U2VydmljZSwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgZm9ybWJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixwdWJsaWMgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcbiAgICBwcml2YXRlIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyKSB7XG4gICAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dTdWNjZXNzID0gZmFsc2U7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1c0Zvckhpc3RvcnkgPSBcIlwiO1xuICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JWZXJpZmljYXRpb24gPSBcIlwiO1xuICAgIGlmKHRoaXMuc2VsZWN0ZWQ9PT0ncHJvb2Ytb2YtdW5lbXBsb3ltZW50Jyl7XG4gICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZShcIlByb29mIG9mIFVuZW1wbG95bWVudFwiKVxuICAgICAgdGhpcy5nZXRMaXN0T2ZBY3RpdmVDbGFpbSgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIGluaXRpbGl6ZUZvcm0oKSB7XG4gICAgdGhpcy5vdHBGb3JtID0gdGhpcy5mb3JtYnVpbGRlci5ncm91cCh7XG4gICAgICAnb3RwJzogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KV1dLFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVNlY3VyaXR5UXVlc3Rpb25Gb3JtKCkge1xuXHQgIHRoaXMuc2VjdXJpdHlRdWVzdGlvbkZvcm0gPSB0aGlzLmZvcm1idWlsZGVyLmdyb3VwKHtcbiAgICAgICdzZWN1cml0eVF1ZXN0aW9uQW5zd2VyJzogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgfSk7XG4gIH1cblxuICBnZXQgb3RwKCkge1xuICAgIHJldHVybiB0aGlzLm90cEZvcm0uZ2V0KCdvdHAnKTtcbiAgfVxuXG4gIGdldCBzZWN1cml0eVF1ZXN0aW9uQW5zd2VyKCkge1xuICAgIHJldHVybiB0aGlzLnNlY3VyaXR5UXVlc3Rpb25Gb3JtLmdldCgnc2VjdXJpdHlRdWVzdGlvbkFuc3dlcicpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICBpZiAodGhpcy5pc01TKCkpIHtcbiAgICAgIGlmICh0aGlzLm90cFZlcmlmaWVkKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiT1RQIFZFUklGSUVEIEFORCBTQVZJTkdcIik7XG4gICAgICAgIHRoaXMuZmIuc3VibWl0UXVlc3Rpb25uYWlyZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnKSB7XG4gICAgICAgIGxldCBmb3JtRGF0YSA9IHRoaXMuZmIucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtLnZhbHVlO1xuICAgICAgICAvL0NvZGUgZm9yIHRoZSBhZGRyZXNzIHZhbGlkYXRpb24gcG9wdXBcbiAgICAgICAgLy9cbiAgICAgICAgLy8gY29uc3QgZm9ybSA9IHRoaXMuZmIucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtO1xuICAgICAgICAvLyBjb25zdCB2ID0gZm9ybS52YWx1ZTtcblxuICAgICAgICAvLyAvL0RldGVybWluZSBDdXJyZW50IGFkZHJlc3MgYW5kIHR5cGUgYmFzZWQgb24gdGhlIGFuc3dlciB0byBtYWlsaW5nIGFkZHJlc3MgcXVlc3Rpb25cbiAgICAgICAgLy8gY29uc3QgY3VycmVudFR5cGUgPSB2LmRpZmZtYWlsYWRkcmVzcyA9PSAnWScgPyAnbWFpbCcgOiAncmVzJztcbiAgICAgICAgLy8gY29uc3QgY3VycmVudEFkZHJlc3MgPSBjdXJyZW50VHlwZSA9PSAnbWFpbCcgPyB2Lm1haWxBZGRyZXNzIDogdi5yZXNBZHJlc3M7XG4gICAgICAgIC8vIHRoaXMuc2hvd0lubGluZUVycm9yID0gZmFsc2VcbiAgICAgICAgLy8gLy9jaGVjayBpZiBhZGRyZXNzIGNoYW5nZWQgc2luY2UgbGFzdCB2YWxpZGF0aW9uIGFuZCBpZiBubyBjaGFuZ2UgY29udGludWUgd2l0aG91dCBpbnRlcnJ1cHRpb25cbiAgICAgICAgLy8gaWYgKHRoaXMubGFzdFZhbGlkYXRlZEFkZHJlc3MgIT0gbnVsbCkge1xuICAgICAgICAvLyAgIGNvbnN0IGxhc3RBZGRyZXNzVHlwZSA9IHRoaXMubGFzdFZhbGlkYXRlZEFkZHJlc3MuZGlmZm1haWxhZGRyZXNzID09ICdZJyA/ICdtYWlsJyA6ICdyZXMnO1xuXG4gICAgICAgIC8vICAgaWYgKGxhc3RBZGRyZXNzVHlwZSA9PSBjdXJyZW50VHlwZVxuICAgICAgICAvLyAgICAgJiYgIXRoaXMuaXNBZGRyZXNzQ2hhbmdlZChjdXJyZW50QWRkcmVzcywgdGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcykpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuaXNBZGRyZXNzVmFsaWRhdGVkID0gJzEnO1xuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuZmluaXNoQW5kU2F2ZShmb3JtLnZhbHVlLCB0aGlzLmlzQWRkcmVzc1ZhbGlkYXRlZCk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG4gICAgICAgIC8vIC8vU3RhcnRpbmcgdGhlIHByb2Nlc3MgdG8gdmFsaWRhdGUgdGhlIGFkZHJlc3NcbiAgICAgICAgLy8gY29uc3QgcmV0dXJuQ29tcG9uZW50ID0gYXdhaXQgdGhpcy5hZGRyU3ZjLnZhbGlkYXRlQWRkcmVzc1Byb2Nlc3MoY3VycmVudFR5cGUsIGN1cnJlbnRBZGRyZXNzLCBmb3JtKTtcbiAgICAgICAgLy8gdGhpcy5sYXN0VmFsaWRhdGVkQWRkcmVzcyA9IHJldHVybkNvbXBvbmVudC5sYXN0VmFsaWRhdGVkQWRkcmVzc1xuXG4gICAgICAgIC8vIGlmIChyZXR1cm5Db21wb25lbnQuc2hvd0lubGluZUVycm9yID09IHRydWUpIHtcbiAgICAgICAgLy8gICB0aGlzLmVycm9yVGV4dCA9IHJldHVybkNvbXBvbmVudC5lcnJvclRleHQ7XG4gICAgICAgIC8vICAgdGhpcy5zaG93SW5saW5lRXJyb3IgPSByZXR1cm5Db21wb25lbnQuc2hvd0lubGluZUVycm9yO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vIGlmIChyZXR1cm5Db21wb25lbnQuc2hvd1BvcHVwID09IHRydWUpIHtcbiAgICAgICAgLy8gICBhd2FpdCB0aGlzLmhhbmRsZVJlY29tbWVuZGF0aW9ucyhyZXR1cm5Db21wb25lbnQuYWRkcmVzc1ZhbGlkYXRpb25SZXNwb25zZSwgcmV0dXJuQ29tcG9uZW50LmFkZHJlc3NWYWxpZGF0aW9uUmVxdWVzdCwgdik7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gaWYgKHJldHVybkNvbXBvbmVudC5zaG93SW5saW5lRXJyb3IgPT0gZmFsc2UgJiYgcmV0dXJuQ29tcG9uZW50LnNob3dQb3B1cCA9PSBmYWxzZSkge1xuICAgICAgICAvLyAgIHRoaXMuZmluaXNoQW5kU2F2ZShmb3JtLnZhbHVlLCByZXR1cm5Db21wb25lbnQuaXNBZGRyZXNzVmFsaWRhdGVkKTtcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAoKGZvcm1EYXRhWydwaG9uZSddID09IGZvcm1EYXRhWydoaWRPcmlnaW5hbFBob25lJ10pICYmIChmb3JtRGF0YVsnZW1haWwnXSA9PSBmb3JtRGF0YVsnaGlkT3JpZ2luYWxFbWFpbCddKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiUGhvbmUgb3IgRW1haWwgTm90IENoYW5nZWRcIik7XG4gICAgICAgICAgdGhpcy5pc090cFNlbnQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIiAmJiBmb3JtRGF0YVtcImhpZElzUGhvbmVDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiQm90aCBFbWFpbCBhbmQgUGhvbmUgQ2hhbmdlZFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MuXCI7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkT3JpZ2luYWxQaG9uZVwiXSA9PT0gXCJudWxsXCIgJiYgZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlRyeWluZyB0byBjaGFuZ2UgZW1haWwgYnV0IHBob25lIG51bWJlciBpcyBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MgYW5kIENlbGwgUGhvbmUgTnVtYmVyLlwiO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRW1haWwgQ2hhbmdlZFwiKTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkSXNQaG9uZUNoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIENoYW5nZWRcIik7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1haWwnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pbml0aWxpemVGb3JtKCk7XG4gICAgICAgICAgdGhpcy5zcy5zZW5kT3RwV2l0aG91dENhcHRjaGEodGhpcy50eXBlKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBcIkFjY2VzcyBjb2RlIHNlbnQgc3VjY2Vzc2Z1bGx5LlwiO1xuICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICgodGhpcy5zZWxlY3RlZCA9PSAncGVyc29uYWwtZGV0YWlscycpIHx8ICh0aGlzLnNlbGVjdGVkID09ICdwYXltZW50LWRldGFpbHMnKSkge1xuICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNNRSgpKSB7XG5cdCAgICBpZiAodGhpcy5zZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJTRUNVUklUWSBRVUVTVElPTiBWRVJJRklFRCBBTkQgU0FWSU5HXCIpO1xuICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJykgeyAgXG4gICAgICAgIHRoaXMuc3MuZ2V0UmFuZG9tU2VjdXJpdHlRdWVzdGlvblNlbGYoKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6KHJlczogU2VjdXJpdHlRdWVzdGlvbkFuc3dlck1vZGVsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJhbmRvbVNlY3VyaXR5UXVlc3Rpb25Nb2RlbCA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuc2VjdXJpdHlRdWVzdGlvblRvQXNrID0gdGhpcy5yYW5kb21TZWN1cml0eVF1ZXN0aW9uTW9kZWwuc2VjdXJpdHlRdWVzdGlvbkRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgfSwgZXJyb3I6KGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVNlY3VyaXR5UXVlc3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lcnJvckR0bHMgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1x0XHRcbiAgICAgICAgdGhpcy5pbml0aWFsaXplU2VjdXJpdHlRdWVzdGlvbkZvcm0oKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U2VjdXJpdHlRdWVzdGlvbiA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgIH1cblx0ICB9IGVsc2Uge1xuICAgICAgdGhpcy5mYi5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZSBSZWNvbW1lbmRhdGlvbiBQb3B1cCAqL1xuICBwdWJsaWMgYXN5bmMgaGFuZGxlUmVjb21tZW5kYXRpb25zKHJlczogQWRkclJlcywgcmVxOiBBZGRyUmVxLCB2OiBhbnkpIHtcbiAgIGNvbnN0IHN1Z2dlc3Rpb25zOiBBZGRyUmVjW10gPSBBcnJheS5mcm9tKHJlcy5hZGRyZXNzUmVjb21tZW5kYXRpb25Nb2RlbCA/PyBbXSk7XG4gICBpZiAoIXN1Z2dlc3Rpb25zLmxlbmd0aCkgcmV0dXJuO1xuICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoe1xuICAgICBjb21wb25lbnQ6IEFkZHJlc3NQb3B1cENvbXBvbmVudCxcbiAgICAgY29tcG9uZW50UHJvcHM6IHsgb3JpZ2luYWw6IHJlcSwgY2hvaWNlczogc3VnZ2VzdGlvbnMgfSxcbiAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcbiAgICAgYW5pbWF0ZWQ6IHRydWUsXG4gICAgIHNob3dCYWNrZHJvcDogdHJ1ZVxuICAgfSk7XG4gICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTtcbiAgIGF3YWl0IG1vZGFsLnByZXNlbnQoKTtcbiAgIGNvbnN0IHsgZGF0YSwgcm9sZSB9ID0gYXdhaXQgbW9kYWwub25XaWxsRGlzbWlzcygpO1xuICAgaWYgKHJvbGUgIT09ICdjb25maXJtJyB8fCAhZGF0YT8uc2VsZWN0ZWQpIHJldHVybjtcbiAgIHRoaXMucGF0Y2hGb3JtV2l0aFNlbGVjdGVkQWRkcmVzcyhkYXRhLnNlbGVjdGVkLCB2LmRpZmZtYWlsYWRkcmVzcyA9PT0gJ1knKTtcbiAgfVxuXG4gICAgLyoqIFBhdGNoIEZvcm0gV2l0aCBTZWxlY3RlZCBBZGRyZXNzICovXG5wdWJsaWMgcGF0Y2hGb3JtV2l0aFNlbGVjdGVkQWRkcmVzcyhzZWw6IGFueSwgaXNNYWlsOiBib29sZWFuKSB7XG5jb25zdCBwYXRjaE9iaiA9IGlzTWFpbFxuPyB7IG1haWxBZGRyZXNzOiB0aGlzLm1hcEFkZHJlc3Moc2VsKSB9XG46IHsgcmVzQWRyZXNzOiB0aGlzLm1hcEFkZHJlc3Moc2VsKSxcbiAgbWFpbEFkZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhzZWwpXG4gfTtcbnRoaXMubGFzdFZhbGlkYXRlZEFkZHJlc3M9IHRoaXMubWFwQWRkcmVzcyhzZWwpO1xudGhpcy5mYi5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm0uZm9ybS5wYXRjaFZhbHVlKHBhdGNoT2JqKTtcbn1cblxucHJpdmF0ZSBtYXBBZGRyZXNzKHNlbDogYW55KSB7XG5pZiAoc2VsLmlzT3JpZ2luYWwpIHtcbi8vIE9yaWdpbmFsIEFkZHJlc3NcbnJldHVybiB7XG5zdHJlZXRBZGRyZXNzOiBzZWwubGluZTEsXG5vcHRpb25hbEFkZHJlc3M6IHNlbC5saW5lMixcbmNpdHk6IHNlbC5jaXR5LFxuc3RhdGU6IHsgbGFiZWw6IHNlbC5zdGF0ZSwgdmFsdWU6IHNlbC5zdGF0ZSB9LFxuemlwOiBzZWwuemlwQ29kZSxcbmNvdW50cnk6IHsgbGFiZWw6IHNlbC5jb3VudHJ5LCB2YWx1ZTogc2VsLmNvdW50cnkgfVxufTtcbn0gZWxzZSB7XG4vLyBVU1BTIFJlY29tbWVuZGVkIEFkZHJlc3NcbnJldHVybiB7XG5zdHJlZXRBZGRyZXNzOiBzZWwuZGVsaXZlcnlMaW5lMSxcbm9wdGlvbmFsQWRkcmVzczogc2VsLmRlbGl2ZXJ5TGluZTIsXG5jaXR5OiBzZWwuY2l0eU5hbWUsXG5zdGF0ZTogeyBsYWJlbDogc2VsLnN0YXRlQWJicmV2YXRpb24sIHZhbHVlOiBzZWwuc3RhdGVBYmJyZXZhdGlvbiB9LFxuemlwOiBzZWwuemlwQ29kZSxcbmNvdW50cnk6IHsgbGFiZWw6IHNlbC5jb3VudHJ5LCB2YWx1ZTogc2VsLmNvdW50cnkgfVxufTtcbn1cbn1cblxuICB2ZXJpZnkoKSB7XG4gICAgdGhpcy5vdHBDb2RlID0gdGhpcy5vdHBGb3JtLmdldCgnb3RwJyk/LnZhbHVlO1xuICAgIHRoaXMuc3MudmFsaWRhdGVPdHBGb3JDbGFpbWFudCh0aGlzLm90cENvZGUpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5vdHBWZXJpZmllZCA9IHRydWU7XG4gICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICB0aGlzLmFjY2VwdGVkLmVtaXQodHJ1ZSk7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdWZXJpZnkgc3RhdHVzIGVycm9yICcsIGVycik7XG4gICAgICB0aGlzLm90cFZlcmlmaWVkID0gZmFsc2U7XG4gICAgICB0aGlzLnN1Y2Nlc3NEdGxzID0gbnVsbDsgXG4gICAgICB0aGlzLmFjY2VwdGVkLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5lcnJvckR0bHMgPSBlcnIubXNnO1xuICAgIH0pXG4gIH1cblxuICB2ZXJpZnlTZWN1cml0eVF1ZXN0aW9uKCkge1xuICAgIHRoaXMuc2VjdXJpdHlBbnN3ZXIgPSB0aGlzLnNlY3VyaXR5UXVlc3Rpb25Gb3JtLmdldCgnc2VjdXJpdHlRdWVzdGlvbkFuc3dlcicpPy52YWx1ZTtcbiAgICBpZiAodGhpcy5zZWN1cml0eUFuc3dlciAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5yYW5kb21TZWN1cml0eVF1ZXN0aW9uTW9kZWwuc2VjdXJpdHlBbnN3ZXIgPSB0aGlzLnNlY3VyaXR5QW5zd2VyO1xuICAgICAgdGhpcy5zcy52YWxpZGF0ZVVzZXJTZWN1cml0eUluZm9ybWF0aW9uKHRoaXMucmFuZG9tU2VjdXJpdHlRdWVzdGlvbk1vZGVsKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5zZWN1cml0eVF1ZXN0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICB0aGlzLmVycm9yRHRscyA9IG51bGw7XG4gICAgICAgIHRoaXMuYWNjZXB0ZWQuZW1pdCh0cnVlKTtcbiAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdWZXJpZnkgc3RhdHVzIGVycm9yICcsIGVycik7XG4gICAgICAgIHRoaXMuc2VjdXJpdHlRdWVzdGlvblZlcmlmaWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBudWxsO1xuICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7ICAgICBcbiAgICAgICAgdGhpcy5hY2NlcHRlZC5lbWl0KGZhbHNlKTsgICAgXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJlZGlyZWN0TGluayh2aWV3KSB7XG4gICAgbGV0IHVzZXJNb2RlbCA9IHRoaXMubHMuZ2V0VXNlcigpO1xuICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCkudGhlbigoKSA9PiB7XG4gICAgICB3aW5kb3cub3BlbihgJHtMaWJDb25zdGFudHMuYmVuZWZpdHNVcmxFeHRlcm5hbH0vZmFjZXMvdmlydHVhbC9jb250ZXh0c3dpdGNoLnhodG1sP2E9JHt1c2VyTW9kZWwuYWNjZXNzX3Rva2VufSZyPSR7dXNlck1vZGVsLnJlZnJlc2hfdG9rZW59JnY9MjI5OSZDTEFJTUFOVF9QT1JUQUw9dHJ1ZSZ2aWV3PSR7dmlld31gLCAgXCJfc2VsZlwiKTtcbiAgICB9KTtcbiAgfVxuICBnZXRFeHRlcm5hbENsYWltYW50UmVwb3J0KCkge1xuICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5ID0gXCJzdGFydGVkXCI7XG4gICAgcmV0dXJuIHRoaXMuYnMuZ2V0RXh0ZXJuYWxDbGFpbWFudFJlcG9ydCh0aGlzLmxzLmdldFVzZXIoKS5zc24pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5kb3dubG9hZFJhd0ZpbGUocmVzLCdFeHRlcm5hbEFnZW5jeVJlcG9ydC5wZGYnKVxuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeSA9IFwiZXJyb3JcIjtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdHZXR0aW5nIEV4dGVybmFsIENsYWltYW50IFJlcG9ydCBlcnJvcicsIGVycik7XG4gICAgfSlcbiAgfVxuICBkb3dubG9hZFJhd0ZpbGUocmVzOmFueSwgZmlsZW5hbWU6IHN0cmluZyl7XG4gICAgbGV0IGJpbmFyeURhdGEgPSBbXTtcbiAgICBiaW5hcnlEYXRhLnB1c2gocmVzKTtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihiaW5hcnlEYXRhLCB7IHR5cGU6IFwiYXBwbGljYXRpb24veGxzeFwiIH0pKTtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgYS5jbGljaygpO1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbn1cbiAgaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3I/LmVycm9yQ29kZSA9PSAnNDIyJykge1xuICAgICAgdGhpcy5lcnJvclRleHQgPSBlcnJvci5tc2dbMF07XG4gICAgfVxuICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIHN1Y2Nlc3MobXNnKSB7XG4gICAgdGhpcy5zaG93U3VjY2VzcyA9IHRydWU7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgdGhpcy5uYXYubmF2aWdhdGVSb290KCcvbGFuZGluZycpO1xuICAgIHRoaXMubHMubG9nb3V0KCk7XG4gIH1cblxuIGdldExpc3RPZkFjdGl2ZUNsYWltKCl7XG4gICAgdGhpcy5jbGFpbVNlcnZpY2UuZ2V0TGlzdE9mQWN0aXZlQ2xhaW0oKS5zdWJzY3JpYmUoKHJlcyk9PntcbiAgICAgIHRoaXMubGlzdE9mQWN0aXZlQ2xhaW0gPSByZXM7XG4gICAgfSlcbiAgfVxuXG4gIGdldFZlcmlmaWNhdGlvblJlcG9ydCgpe1xuICAgIHRoaXMuZG93bmxvYWRTdGF0dXNGb3JWZXJpZmljYXRpb24gPSBcInN0YXJ0ZWRcIjtcbiAgICByZXR1cm4gdGhpcy5icy5nZXRWZXJpZmljYXRpb25SZXBvcnQodGhpcy5scy5nZXRVc2VyKCkuY2xhaW1hbnRJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkUmF3RmlsZShyZXMsJ1VuZW1wbG95bWVudFZlcmlmaWNhdGlvblJlcG9ydC5wZGYnKVxuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzRm9yVmVyaWZpY2F0aW9uID0gXCJlcnJvclwiO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0dldHRpbmcgVW5lbXBsb3ltZW50IFZlcmlmaWNhdGlvbiBSZXBvcnQgZXJyb3InLCBlcnIpO1xuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgZmluaXNoQW5kU2F2ZShmb3JtRGF0YTogYW55LCBpc0FkZHJlc3NWYWxpZGF0ZWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dJbmxpbmVFcnJvcj0gZmFsc2U7IFxuICAgICAgIHRoaXMuZmIucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtLmZvcm0uY29udHJvbHNbJ2hpZElzQWRkcmVzc1ZhbGlkYXRlZCddLnNldFZhbHVlKGlzQWRkcmVzc1ZhbGlkYXRlZCk7XG5cbiAgICAgaWYgKChmb3JtRGF0YVsncGhvbmUnXSA9PSBmb3JtRGF0YVsnaGlkT3JpZ2luYWxQaG9uZSddKSAmJiAoZm9ybURhdGFbJ2VtYWlsJ10gPT0gZm9ybURhdGFbJ2hpZE9yaWdpbmFsRW1haWwnXSkpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIG9yIEVtYWlsIE5vdCBDaGFuZ2VkXCIpO1xuICAgICAgICAgIHRoaXMuaXNPdHBTZW50ID0gZmFsc2U7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJhZGRyZXNzIHZhbGlkYXRpb24gZm9ybSBmbGFnXCIsZm9ybURhdGEuaGlkSXNBZGRyZXNzVmFsaWRhdGVkKTtcbiAgICAgICAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtRGF0YVtcImhpZElzRW1haWxDaGFuZ2VkXCJdID09PSBcIllcIiAmJiBmb3JtRGF0YVtcImhpZElzUGhvbmVDaGFuZ2VkXCJdID09PSBcIllcIikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiQm90aCBFbWFpbCBhbmQgUGhvbmUgQ2hhbmdlZFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MuXCI7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkT3JpZ2luYWxQaG9uZVwiXSA9PT0gXCJudWxsXCIgJiYgZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlRyeWluZyB0byBjaGFuZ2UgZW1haWwgYnV0IHBob25lIG51bWJlciBpcyBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFwiUGxlYXNlIGNvbnRhY3QgTURFUyBzdXBwb3J0IGZvciBhc3Npc3RhbmNlIHVwZGF0aW5nIEVtYWlsIEFkZHJlc3MgYW5kIENlbGwgUGhvbmUgTnVtYmVyLlwiO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoZm9ybURhdGFbXCJoaWRJc0VtYWlsQ2hhbmdlZFwiXSA9PT0gXCJZXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRW1haWwgQ2hhbmdlZFwiKTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1EYXRhW1wiaGlkSXNQaG9uZUNoYW5nZWRcIl0gPT09IFwiWVwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlBob25lIENoYW5nZWRcIik7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnZW1haWwnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pbml0aWxpemVGb3JtKCk7XG4gICAgICAgICAgdGhpcy5zcy5zZW5kT3RwV2l0aG91dENhcHRjaGEodGhpcy50eXBlKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0R0bHMgPSBcIkFjY2VzcyBjb2RlIHNlbnQgc3VjY2Vzc2Z1bGx5LlwiO1xuICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzT3RwU2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWNjZXNzRHRscyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmVycm9yRHRscyA9IGVyci5tc2c7XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICB9XG4gIGlzQWRkcmVzc0NoYW5nZWQoY3VycmVudDphbnksIGxhc3Q6YW55KTogYm9vbGVhbntcbiAgcmV0dXJuIGN1cnJlbnQuc3RyZWV0QWRkcmVzcyAhPT0gbGFzdC5zdHJlZXRBZGRyZXNzIHx8XG4gICAgICAgICBjdXJyZW50Lm9wdGlvbmFsQWRkcmVzcyAhPT0gbGFzdC5vcHRpb25hbEFkZHJlc3MgfHwgXG4gICAgICAgICBjdXJyZW50LmNpdHkgIT09IGxhc3QuY2l0eSB8fFxuICAgICAgICAgY3VycmVudC5zdGF0ZT8udmFsdWUgIT09IGxhc3Quc3RhdGU/LnZhbHVlIHx8XG4gICAgICAgICBjdXJyZW50LnppcCAhPT0gbGFzdC56aXAgfHxcbiAgICAgICAgIGN1cnJlbnQuY291bnRyeT8udmFsdWUgIT09IGxhc3QuY291bnRyeT8udmFsdWU7XG4gIH1cbn1cbiIsIjxwLWRpYWxvZyB2aXNpYmxlPVwidHJ1ZVwiIG1vZGFsPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbYnJlYWtwb2ludHNdPVwieycxMDI0cHgnOiAnNzV2dycsICc3NjhweCc6ICc4NXZ3JywgJzY0MHB4JzogJzEwMHZ3J31cIiBbc3R5bGVdPVwie3dpZHRoOiAnNjB2dyd9XCIgcG9zaXRpb249XCJ0b3BcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0IGhlYWRpbmdcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMjRweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e1wiWW91ciBBY2NvdW50XCIgfCB0cmFuc2xhdGV9fSA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMTZweDtcIj4oQ0xBSU1BTlQgSURcclxuICAgICAgICAgICAgICAgICAgICAgICAge3tscy5nZXRVc2VyKCkuY2xhaW1hbnRJZH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiAqbmdJZj1cIiFpc01FKClcIiBzdHlsZUNsYXNzPVwiaW9uLXBhZGRpbmctc3RhcnRcIiBbb3B0aW9uc109XCJwcm9maWxlT3B0c1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgKG9uT3B0aW9uQ2xpY2spPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gKm5nSWY9XCJpc01FKClcIiBzdHlsZUNsYXNzPVwiaW9uLXBhZGRpbmctc3RhcnRcIiBbb3B0aW9uc109XCJwcm9maWxlT3B0c0lWUlwiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgKG9uT3B0aW9uQ2xpY2spPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPGRpdiAqbmdJZj1cIiEoc2hvd1N1Y2Nlc3MgfHwgc2hvd0Vycm9yKVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC04cHg7XCI+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3BlcnNvbmFsLWRldGFpbHMnXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCJcclxuICAgICAgICAgICAgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJ1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SW5saW5lRXJyb3IgJiYgc2VsZWN0ZWQgPT09ICdjb250YWN0LWRldGFpbHMnXCIgY2xhc3M9XCJlcnJvci1iYW5uZXJcIj5cclxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImFsZXJ0LWNpcmNsZS1vdXRsaW5lXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7IGZvbnQtc2l6ZTogMThweDsgbWFyZ2luLXJpZ2h0OiA4cHg7XCI+PC9pb24taWNvbj5cclxuICAgICAgICA8c3Bhbj57eyBlcnJvclRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ2NvbnRhY3QtZGV0YWlscydcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIlxyXG4gICAgICAgICAgICBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3BheW1lbnQtZGV0YWlscydcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIlxyXG4gICAgICAgICAgICBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3VwZGF0ZS1pdnInXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCJcclxuICAgICAgICAgICAgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvb2Ytb2YtdW5lbXBsb3ltZW50XCIgKm5nSWY9XCJzZWxlY3RlZCA9PSAncHJvb2Ytb2YtdW5lbXBsb3ltZW50J1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJwaGFzZVR3b1Byb29mT2ZVSVZpZXc9PT0ndHJ1ZSc7ZWxzZSAgbm9uUGhyYXNlVHdvVmlld1wiIHN0eWxlPVwicGFkZGluZzogMHB4IDFyZW1cIj5cclxuICAgICAgICAgICAgPCEtLSA8aDIgc3R5bGU9XCJmb250LWZhbWlseTogJ09wZW4gU2FucywgTGlnaHQnO1wiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5wcm9vZi5vZi51bmVtcGxveW1lbnQucGF5XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGlzdE9mQWN0aXZlQ2xhaW0gfHwgbGlzdE9mQWN0aXZlQ2xhaW0ubGVuZ3RoID09PSAwOyBlbHNlIGFjdGl2ZUNsYWltVGFibGVcIj5cclxuICAgICAgICAgICAgICAgPGgzIHN0eWxlPVwiZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMsIExpZ2h0JztcIj5cclxuICAgICAgICAgICAgICAgIHt7XCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5uby5hY3RpdmUuY2xhaW1cInwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWN0aXZlQ2xhaW1UYWJsZT5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJsaXN0T2ZBY3RpdmVDbGFpbVwiIGRhdGFLZXk9XCJjbGFpbUlkXCIgW3Jvd0V4cGFuZE1vZGVdPVwiJ3NpbmdsZSdcIiBzdHlsZUNsYXNzPVwic2VwZXJhdGUtcm93XCIgY2xhc3M9XCJzZXBlcmF0ZS1yb3dcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlU3R5bGVdPVwieydib3JkZXItY29sbGFwc2UnOiAnc2VwYXJhdGUnLCdib3JkZXItc3BhY2luZyc6ICcwIDhweCd9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1kYXRhIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIFtwUm93VG9nZ2xlcl09XCJkYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImV4cGFuZGVkID8gJ3BpIHBpLWNoZXZyb24tZG93bicgOiAncGkgcGktY2hldnJvbi1yaWdodCdcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS41cmVtO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lZmZlY3RpdmVEYXRlfX0gLSB7e2RhdGEuYnllRGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lbnRpdGxlbWVudFR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyb3dleHBhbnNpb25cIiBsZXQtZGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI3XCIgc3R5bGU9XCIgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTRlNGU0O2JvcmRlci1yaWdodDogMXB4IHNvbGlkICNlNGU0ZTQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwiZGlzcGxheTogZmxleDtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImRvY0ZpbGVMaW5rXCIgaGVpZ2h0PSc1MDBweCcgd2lkdGg9JzQyMHB4Jy8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwiZGlzcGxheTogZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2p1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3cgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJkYXRhLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJmb250LXNpemU6IDE5cHg7XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBzaGFwZT1cInJvdW5kXCIgc3R5bGU9XCJwYWRkaW5nLWlubGluZS1lbmQ6IDJyZW07XCIgKGNsaWNrKT1cImdldFZlcmlmaWNhdGlvblJlcG9ydCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuYnV0dG9uLmRvd25sb2FkLnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRhYmxlPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgPGlvbi1ncmlkIHN0eWxlPVwibWFyZ2luLXRvcDogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiIWlzTUUoKVwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiBsYXlvdXQ9XCJyb3dcIiBzdHlsZSA9IFwibWFyZ2luOjNweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwicC00XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOjEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWhlYWRlciBzdHlsZT1cImJveC1zaGFkb3c6IDAgMCAwIDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+PGkgY2xhc3M9XCJwaSBwaS1maWxlXCIgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO2ZvbnQtc2l6ZTogMzBweDtcIj48L2k+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ubGFiZWwuZG93bmxvYWQudW5lbXBsb3ltZW50LmNsYWltLnJlcG9ydFwifCB0cmFuc2xhdGV9fTwvaW9uLWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cInBsLTAgcHItMCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ub3ZlcmxheS51bmVtcGxveW1lbnQuY2xhaW0ucmVwb3J0J3wgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206MzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQoKVwiIHN0eWxlPVwid2lkdGg6JzEwcmVtJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtcmVwb3J0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIiBjbGFzcz1cInByLTEgcGItMVwiPjwvaW9uLWljb24+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28uYnV0dG9uLmRvd25sb2FkLnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5PT0nc3RhcnRlZCdcIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnN0YXR1cy5kb3dubG9hZC5zdGFydFwifCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJkb3dubG9hZFN0YXR1c0Zvckhpc3Rvcnk9PSdlcnJvcidcIj57eyBcInByb2ZpbGUucHJvb2Yub2YudW5lbXBsb3ltZW50LnN0YXR1cy5kb3dubG9hZC5lcnJvclwifCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgbGF5b3V0PVwicm93XCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJwLTRcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6MTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taGVhZGVyIHN0eWxlPVwiYm94LXNoYWRvdzogMCAwIDAgMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT48aSBjbGFzcz1cInBpIHBpLWNoZWNrLWNpcmNsZVwiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtmb250LXNpemU6IDMwcHg7XCI+PC9pPiAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28ubGFiZWwuc3VtbWFyeS51bmVtcGxveW1lbnQuY2xhaW1cInwgdHJhbnNsYXRlfX08L2lvbi1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24taGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwbC0wIHByLTAgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiBzdHlsZT1cImhlaWdodDogMTAwJTsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sncHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQucGhhc2UudHdvLm92ZXJsYXkuc3VtbWFyeS51bmVtcGxveW1lbnQuY2xhaW0nfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206MzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImdldFZlcmlmaWNhdGlvblJlcG9ydCgpXCIgc3R5bGU9XCJ3aWR0aDoxMHJlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtc3VtbWFyeS12ZXItYnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG93bmxvYWQtb3V0bGluZVwiIGNsYXNzPVwicHItMSBwYi0xXCI+PC9pb24taWNvbj4ge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5waGFzZS50d28uYnV0dG9uLmRvd25sb2FkLnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1c0ZvclZlcmlmaWNhdGlvbj09J3N0YXJ0ZWQnXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuc3RhcnRcInwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9yVmVyaWZpY2F0aW9uPT0nZXJyb3InXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuZXJyb3JcInwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vblBocmFzZVR3b1ZpZXc+XHJcbiAgICAgICAgICAgIDxpb24tZ3JpZCBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiIWlzTUUoKVwiIGxheW91dD1cInJvd1wiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5kb3dubG9hZC51bmVtcGxveW1lbnQuY2xhaW0ucmVwb3J0XCJ8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImdldEV4dGVybmFsQ2xhaW1hbnRSZXBvcnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtcmVwb3J0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkLW91dGxpbmVcIj48L2lvbi1pY29uPnt7IFwicHJvZmlsZS5wcm9vZi5vZi51bmVtcGxveW1lbnQuYnV0dG9uLmV4dGVybmFsLmNsYWltYW50LnJlcG9ydFwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzRm9ySGlzdG9yeT09J3N0YXJ0ZWQnXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuc3RhcnRcInwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNGb3JIaXN0b3J5PT0nZXJyb3InXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5zdGF0dXMuZG93bmxvYWQuZXJyb3JcInwgdHJhbnNsYXRlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGxheW91dD1cInJvd1wiIHN0eWxlID0gXCJtYXJnaW46M3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5sYWJlbC5zdW1tYXJ5LnVuZW1wbG95bWVudC5jbGFpbVwifCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJyZWRpcmVjdExpbmsoJy5jbGFpbWFudHN1bW1hcnl2ZXJpZmljYXRpb24nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiQ2xhaW1hbnQtc3VtbWFyeS12ZXItYnRuXCI+e3sgXCJwcm9maWxlLnByb29mLm9mLnVuZW1wbG95bWVudC5idXR0b24udW5lbXBsb3ltZW50LnZlcmlmaWNhdGlvblwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImlzTVMoKSAmJiBzZWxlY3RlZCA9PSAnY29udGFjdC1kZXRhaWxzJyAmJiBpc090cFNlbnQgPT0gdHJ1ZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogLTkwcHg7XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJvdHBGb3JtXCIgI290cEZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwib3RwXCIgW2lubmVySFRNTF09XCIncHJvZmlsZS5jb250YWN0LmRldGFpbHMubGFiZWwub3RwJyB8IHRyYW5zbGF0ZTp7IHR5cGU6IHR5cGUgfVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TWFzayBmb3JtQ29udHJvbE5hbWU9XCJvdHBcIiBtYXNrPVwiOTk5OTk5XCIgc2l6ZT1cIjZcIiBtYXhsZW5ndGg9XCI2XCIgbWlubGVuZ3RoPVwiNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9Gb2N1c109J3RydWUnIHRpdGxlPSdFbnRlciBBdXRoY29kZSc+PC9wLWlucHV0TWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nb3RwJyBbZm9ybV09XCJvdHBGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnQXV0aGNvZGUgaXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6ICdBdXRoY29kZSBzaG91bGQgaGF2ZSA2IG51bWJlcnMuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ2ZXJpZnkoKVwiPnt7IFwicHJvZmlsZS5jb250YWN0LmRldGFpbHMuYnV0dG9uLnZlcmlmeVwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNNRSgpICYmIHNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnICYmIGRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uID09IHRydWVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IC05MHB4O1wiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VjdXJpdHlRdWVzdGlvbkZvcm1cIiAjc2VjdXJpdHlRdWVzdGlvbkZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzZWN1cml0eVF1ZXN0aW9uQW5zd2VyXCIgW2lubmVySFRNTF09XCIncHJvZmlsZS5jb250YWN0LmRldGFpbHMubGFiZWwuc2VjdXJpdHlRdWVzdGlvbicgfCB0cmFuc2xhdGU6eyBzZWN1cml0eVF1ZXN0aW9uVG9Bc2s6IHNlY3VyaXR5UXVlc3Rpb25Ub0FzayB9XCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcdDxpbnB1dCBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInNlY3VyaXR5UXVlc3Rpb25BbnN3ZXJcIiBzaXplPVwiMzBcIiBtYXhsZW5ndGg9XCIzMFwiIHRpdGxlPVwiU2VjdXJpdHkgQW5zd2VyXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2ZpZWxkXT0nc2VjdXJpdHlRdWVzdGlvbkFuc3dlcicgW2Zvcm1dPVwic2VjdXJpdHlRdWVzdGlvbkZvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdTZWN1cml0eSBBbnN3ZXIgaXMgcmVxdWlyZWQuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJ2ZXJpZnlTZWN1cml0eVF1ZXN0aW9uKClcIj57eyBcInByb2ZpbGUuY29udGFjdC5kZXRhaWxzLmJ1dHRvbi52ZXJpZnlcInwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImVycm9yRHRsc1wiPnt7ZXJyb3JEdGxzfX08L21hdC1lcnJvcj5cclxuICAgIDxpb24tbGFiZWwgKm5nSWY9XCJzdWNjZXNzRHRsc1wiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1ncmVlbilcIj57e3N1Y2Nlc3NEdGxzfX08YnIgLz48L2lvbi1sYWJlbD5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1N1Y2Nlc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGVcIiBzdHlsZT1cImZvbnQtc2l6ZTogODBweDsgY29sb3I6IHZhcigtLWlvbi1jb2xvci1ncmVlbik7XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPGgxPnt7IFwicHJvZmlsZS5iYW5uZXIuc3VjY2Vzc1wifCB0cmFuc2xhdGV9fTwvaDE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGUtb3V0bGluZVwiIHN0eWxlPVwiZm9udC1zaXplOiA4MHB4OyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpc01TKClcIj5cclxuICAgICAgICAgICAgICAgIDxoMT57eyBlcnJvclRleHQgPyBlcnJvclRleHQgOiAoJ3Byb2ZpbGUuYmFubmVyLnJlcXVlc3QucHJvY2Vzcy5mYWlsdXJlJyB8IHRyYW5zbGF0ZSkgfX08L2gxPlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzTVMoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGgxPnt7ZXJyb3JUZXh0ID8gZXJyb3JUZXh0IDogKCdwcm9maWxlLmJhbm5lci5yZXF1ZXN0LnByb2Nlc3MuZmFpbHVyZScgfCB0cmFuc2xhdGUpIH19PC9oMT5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIHNpemU9XCIxMlwiIHNpemVYbD1cIjRcIiBzaXplTGc9XCI0XCIgc2l6ZU1kPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9nb3V0KClcIj57eyBcInByb2ZpbGUuYnV0dG9uLmxvZ291dFwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBzaXplPVwiMTJcIiBzaXplWGw9XCI4XCIgc2l6ZUxnPVwiOFwiIHNpemVNZD1cIjdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiB0eXBlPVwicmVzZXRcIiAoY2xpY2spPVwiY2FuY2VsKClcIj57eyBcInByb2ZpbGUuYnV0dG9uLmNsb3NlXCJ8IHRyYW5zbGF0ZX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInNhdmUoKVwiICpuZ0lmPVwiIShzaG93U3VjY2VzcyB8fCBzaG93RXJyb3IpICYmIHNlbGVjdGVkIT0ncHJvb2Ytb2YtdW5lbXBsb3ltZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc090cFNlbnQ9PSB0cnVlIHx8IGRpc3BsYXlTZWN1cml0eVF1ZXN0aW9uPT0gdHJ1ZVwiPnt7IFwicHJvZmlsZS5idXR0b24uc2F2ZVwifCB0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPiJdfQ==
484
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProfileComponent, { className: "ProfileComponent", filePath: "lib\\components\\profile\\profile.component.ts", lineNumber: 19 }); })();
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNFNUQsZ0NBQVUsY0FBQSxpQkFBQTtJQUdFLFlBQStCOztJQUFBLCtCQUErQjtJQUFBLFlBQzlCO0lBQUEsaUJBQU8sRUFBQSxFQUFBO0lBRy9DLCtCQUFTLGNBQUEsd0JBQUE7SUFHbUIsK09BQXNCLHNMQUFrQixlQUFBLDRCQUFxQixDQUFBLElBQXZDO0lBQzlDLGlCQUFpQixFQUFBLEVBQUEsRUFBQTs7O0lBUmIsZUFBK0I7SUFBL0IscUVBQStCO0lBQStCLGVBQzlCO0lBRDhCLG1FQUM5QjtJQUtlLGVBQXVCO0lBQXZCLDRDQUF1Qiw0QkFBQTs7O0lBU2xGLDJCQUE2RztJQUNqRyxZQUNaO0lBQUEsaUJBQU07OztJQURNLGVBQ1o7SUFEWSx3RUFDWjs7OztJQUNBLGdEQUN1SztJQUEvRCx1TUFBVyxlQUFBLDJCQUFtQixDQUFBLElBQUMsZ01BQWUsZUFBQSx1QkFBZSxDQUFBLElBQTlCO0lBQ3ZJLGlCQUFtQjs7O0lBRjBDLDBDQUFvQiwwQkFBQSxvQkFBQSxvQkFBQSxjQUFBLGNBQUEsY0FBQSxjQUFBLGNBQUEsZUFBQSxlQUFBOzs7O0lBR2pG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QWdCO2NBTDVCLFNBQVM7MkJBQ0UsYUFBYTtnT0FRTixFQUFFO2tCQUFsQixTQUFTO21CQUFDLElBQUk7WUFHZixRQUFRO2tCQURQLE1BQU07WUFJUCxLQUFLO2tCQURKLE1BQU07O2tGQVRJLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbWJvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQ29tYm9Nb2RlbCc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1zZXJ2aWNlL2NsYWltYW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXJQYWdlIH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLnBhZ2UnO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlck1vZGVsJztcclxuaW1wb3J0IHsgU2VjdXJpdHlRdWVzdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NlY3VyaXR5UXVlc3Rpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENsYWltYW50VXNwc1JlZGlyZWN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQtdXNwcy1yZWRpcmVjdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGV4aXNOZXhpc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sZXhpcy1uZXhpcy9sZXhpcy5uZXhpcy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXByb2ZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBzaG93U3VjY2VzcyA9IGZhbHNlO1xyXG4gIHNob3dFcnJvciA9IGZhbHNlO1xyXG4gIGVycm9yVGV4dDogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZiJykgZmI6IEZvcm1CdWlsZGVyUGFnZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25DYW5jZWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBlcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHB1YmxpYyBwcm9maWxlT3B0cyA9IENvbWJvT3B0aW9uLkNMQUlNQU5UX1BST0ZJTEVfT1BUUztcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkID0gJ3BlcnNvbmFsLWRldGFpbHMnO1xyXG5cclxuICBwdWJsaWMgaXNSZXR1cm5pbmdVc2VyOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgdmVyaWZpY2F0aW9uUHJlZmVyZW5jZTtcclxuXHJcbiAgcHVibGljIHNzbjogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VyTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBjdXN0b21lckV2ZW50VHlwZSA6IHN0cmluZztcclxuICBwdWJsaWMgYWxsU2VjdXJpdHlRdWVzdGlvbnM7XHJcbiAgcHVibGljIHVzZXJzUXVlc0FuZEFucztcclxuICBwdWJsaWMgbWFwcGVkS2V5c1F1ZXN0aW9uc0ZvclVzZXI7XHJcblxyXG4gIHB1YmxpYyBpc1NlY3VyaXR5UXVlc3Rpb25FbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzUGF5bWVudE9wdGlvblF1ZXN0aW9uc0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNQYXltZW50T3B0aW9uRGl2RW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c3BzUmVkaXJlY3RVcmw6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGlzQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNMZXhpc05leGlzUHJvb2ZlZFdpdGhpblR3ZW50eUZvdXJIb3VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgdXNlclBlcnNvbmFsRGV0YWlsOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxzOiBMb2dpblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbmF2OiBOYXZDb250cm9sbGVyLFxyXG4gICAgcHVibGljIGNzOiBDbGFpbWFudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgdXI6IENsYWltYW50VXNwc1JlZGlyZWN0U2VydmljZSxcclxuICAgIHB1YmxpYyBsbjogTGV4aXNOZXhpc1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG5cclxuICAgIC8vR2V0IHVzZXIgcGVyc29uYWwtZGV0YWlsc1xyXG4gICAgdGhpcy5nZXRQZXJzb25hbERldGFpbHMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgY29uc3QgcERpYWxvZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdltyb2xlPWRpYWxvZ10nKTtcclxuICAgICAgcERpYWxvZz8uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCAncGRpYWxvZy10aXRsZScpOyBcclxuICAgICAgXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RpdiAuaW9uQnV0dG9uJykuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2J1dHRvbicpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCAxMDAwKVxyXG4gICAgICBcclxuICB9XHJcblxyXG4gIFxyXG4gIGdldFVzZXJEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5jcy5nZXRVc2VyRGV0YWlsc0ZvckxvZ2dlZEluVXNlcigpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zc24gPSByZXM/LnNzbjtcclxuICAgICAgICB0aGlzLnZlcmlmaWNhdGlvblByZWZlcmVuY2UgPSByZXM7XHJcbiAgICAgICAgdGhpcy51c2VyTmFtZSA9IHJlcz8udXNlck5hbWU7XHJcbiAgICAgICAgdGhpcy5pc0xleGlzTmV4aXNQcm9vZmVkV2l0aGluMjRIb3Vycyh0aGlzLnVzZXJOYW1lKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc0xleGlzTmV4aXNQcm9vZmVkV2l0aGluMjRIb3Vycyhzc24gOiBTdHJpbmcpe1xyXG4gICAgdGhpcy5sbi5pc0xleGlzTmV4aXNQcm9vZmVkV2l0aGluMjRIb3Vycyh0aGlzLnVzZXJOYW1lKS5zdWJzY3JpYmUoKHJlcyA6IGJvb2xlYW4pID0+IHtcclxuICAgICAgdGhpcy5pc0xleGlzTmV4aXNQcm9vZmVkV2l0aGluVHdlbnR5Rm91ckhvdXJzID0gcmVzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblZhbHVlQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICB0aGlzLnNob3dFcnJvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U3VjY2VzcyA9IGZhbHNlOyAgXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkICE9ICdwYXltZW50LWRldGFpbHMnKXtcclxuICAgICAgdGhpcy5pc1BheW1lbnRPcHRpb25RdWVzdGlvbnNFbmFibGVkPXRydWU7XHJcbiAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICBpZiggdGhpcy5mYi5pbnZhbGlkKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuZmIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBkaXJ0eUl0ZW1zID0gdGhpcy5mYi5nZXREaXJ0eUl0ZW1zKCk7XHJcbiAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xyXG5cclxuICAgLy8gdGhpcy5zYXZlUXVlc3Rpb25uYWlyZSgpOyAvLyBGaXJzdCBzYXZpbmcgdGhlIGNoYW5nZSBpbiB0aGUgZGJcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkID09PSAncGVyc29uYWwtZGV0YWlscycpIHtcclxuICAgICAgICAgIGNvbnN0IG5hbWVDb250cm9scyA9IFsnZnN0bmFtZScsICdtaWRkbGVuYW1lJywgJ2xzdG5hbWUnXTtcclxuICAgICAgICAgIGlmIChkaXJ0eUl0ZW1zLnNvbWUoaXRlbSA9PiBuYW1lQ29udHJvbHMuaW5jbHVkZXMoaXRlbSkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWVyRXZlbnRUeXBlID0gJ25hbWUnOyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIFVuY29tbWVudCB0byBlbmFibGUgTGV4aXMgTmV4aXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpcnR5SXRlbVdpdGhWYWx1ZXMgPSB0aGlzLmZiLmdldERpcnR5SXRlbXNXaXRoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTGV4aXNOZXhpc1Byb29mZWRXaXRoaW5Ud2VudHlGb3VySG91cnMgJiYgdGhpcy52YWxpZGF0ZU5hbWVDaGFuZ2UoZGlydHlJdGVtV2l0aFZhbHVlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpOyAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGVMZXhpc05leGlzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1lbHNleyAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVF1ZXN0aW9ubmFpcmUoKTtcclxuICAgICAgICAgICAgICAgICAgfSAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8gQ29tbWVudCB0byBlbmFibGUgTGV4aXMgTmV4aXNcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMub25DYW5jZWwuZW1pdCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy50cmlnZ2VyVWRvbCgpO1xyXG4gICAgICAgICAgfWVsc2V7ICBcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTsgICAgICAgXHJcbiAgICAgICAgICAgICB0aGlzLnNhdmVRdWVzdGlvbm5haXJlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZCA9PT0gJ2NvbnRhY3QtZGV0YWlscycpIHsgIFxyXG4gICAgICAgIGNvbnN0IGNvbnRhY3RkZXRhaWxzQ29udHJvbHMgPSBbJ3Bob25lJ107ICAgICAgIFxyXG4gICAgICAgICAgIC8vIGRpcnR5SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZGlydHlJdGVtcy5zb21lKGl0ZW0gPT4gY29udGFjdGRldGFpbHNDb250cm9scy5pbmNsdWRlcyhpdGVtKSkpIHtcclxuICAgICAgICAgIC8vICAgIGlmIChpdGVtID09PSAncGhvbmUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21lckV2ZW50VHlwZSA9ICdwaG9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNMZXhpc05leGlzUHJvb2ZlZFdpdGhpblR3ZW50eUZvdXJIb3Vycyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxTZWN1cml0eVF1ZXN0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgICB9ZWxzZXsgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVF1ZXN0aW9ubmFpcmUoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVF1ZXN0aW9ubmFpcmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgLy8gICB9KTtcclxuICAgICAgICAgICAgXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWQgPT09ICdwYXltZW50LWRldGFpbHMnKSB7ICAgICAgICAgICBcclxuICAgICAgICAgICAgICB0aGlzLnNhdmVRdWVzdGlvbm5haXJlKCk7IFxyXG4gICAgICAgICAgICAgIC8vICB0aGlzLmlzUGF5bWVudE9wdGlvblF1ZXN0aW9uc0VuYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICB0aGlzLmlzU2VjdXJpdHlRdWVzdGlvbkVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgIHRoaXMuaXNMZXhpc05leGlzUG9wdXBFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICB0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSBmYWxzZTsgXHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gdGhpcy5pc1BheW1lbnRPcHRpb25EaXZFbmFibGVkPXRydWU7XHJcbiAgICB9XHJcbiAgICAgXHJcbiAgfVxyXG5cclxuICBvblNlY3VyaXR5UXVlc3Rpb25TdWNjZXNzKCl7XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkICE9ICdwYXltZW50LWRldGFpbHMnKXtcclxuICAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XHJcbiAgICAgICB0aGlzLnNhdmVRdWVzdGlvbm5haXJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pc1BheW1lbnRPcHRpb25RdWVzdGlvbnNFbmFibGVkPXRydWU7XHJcbiAgICAvLyAgdGhpcy5pc1BheW1lbnRPcHRpb25EaXZFbmFibGVkPXRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzU2VjdXJpdHlRdWVzdGlvbkVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNMZXhpc05leGlzUG9wdXBFbmFibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgXHJcbiAgfVxyXG5cclxuICBzYXZlUXVlc3Rpb25uYWlyZSgpIHsgICAgXHJcbiAgICB0aGlzLmZiLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcclxuICB9XHJcblxyXG4gIGdldEFsbFNlY3VyaXR5UXVlc3Rpb25zKCkge1xyXG4gICAgdGhpcy5jcy5nZXRBbGxTZWN1cml0eVF1ZXN0aW9uKCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hbGxTZWN1cml0eVF1ZXN0aW9ucyA9IHJlcztcclxuICAgICAgICB0aGlzLmxvYWRTZWN1cml0eVF1ZXN0aW9uc09mQ2xhaW1hbnQocmVzKTtcclxuICAgICAgIC8vIHRoaXMuc2F2ZVF1ZXN0aW9ubmFpcmUoKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge31cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2VjdXJpdHlRdWVzdGlvbnNPZkNsYWltYW50KFxyXG4gICAgYWxsUXVlc3Rpb25XaXRoS2V5czogU2VjdXJpdHlRdWVzdGlvbk1vZGVsW11cclxuICApIHtcclxuICAgIHZhciB1c2VyTmFtZSA9IHRoaXMudXNlck5hbWU7XHJcbiAgICB0aGlzLnV0aWwuZ2V0PFVzZXJNb2RlbD4oYHVzZXIvc2VjdXJpdHkvJHt1c2VyTmFtZX1gKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXJzUXVlc0FuZEFucyA9IHJlcztcclxuICAgICAgICAvLyBJbml0aWFsaXplIG1hcHBlZEtleXNRdWVzdGlvbnNGb3JVc2VyXHJcbiAgICAgICAgdGhpcy5tYXBwZWRLZXlzUXVlc3Rpb25zRm9yVXNlciA9IFtdO1xyXG4gICAgICAgIC8vIExpc3Qgb2YgcG9zc2libGUgc2VjdXJpdHkgcXVlc3Rpb24gZmllbGRzXHJcbiAgICAgICAgY29uc3Qgc2VjdXJpdHlRdWVzdGlvbkZpZWxkcyA9IFtcclxuICAgICAgICAgICdzZWN1cml0eVF1ZXN0aW9uJyxcclxuICAgICAgICAgICdzZWN1cml0eVF1ZXN0aW9uMicsXHJcbiAgICAgICAgICAnc2VjdXJpdHlRdWVzdGlvbjMnLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgLy8gQ3JlYXRlIGEgbWFwIGZvciBxdWljayBsb29rdXAgb2YgcXVlc3Rpb24gZGVzY3JpcHRpb25zXHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25NYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYWxsUXVlc3Rpb25XaXRoS2V5cykge1xyXG4gICAgICAgICAgcXVlc3Rpb25NYXAuc2V0KGl0ZW0ua2V5LCBpdGVtLmRlc2NyaXB0aW9uIHx8ICcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIHNlY3VyaXR5IHF1ZXN0aW9uIGZpZWxkXHJcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBzZWN1cml0eVF1ZXN0aW9uRmllbGRzKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy51c2Vyc1F1ZXNBbmRBbnNbZmllbGRdO1xyXG5cclxuICAgICAgICAgIGlmIChmaWVsZFZhbHVlICYmIHF1ZXN0aW9uTWFwLmhhcyhmaWVsZFZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLm1hcHBlZEtleXNRdWVzdGlvbnNGb3JVc2VyLnB1c2goe1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uOiBxdWVzdGlvbk1hcC5nZXQoZmllbGRWYWx1ZSksXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25LZXk6IGZpZWxkVmFsdWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzU2VjdXJpdHlRdWVzdGlvbkVuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHNlY3VyaXR5IHF1ZXN0aW9uczonLCBlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZW5hYmxlTGV4aXNOZXhpcygpIHtcclxuICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XHJcbiAgICB0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5pc1NlY3VyaXR5UXVlc3Rpb25FbmFibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmxuLmlzTGV4aXNOZXhpc0lkUHJvb2ZpbmdFbmFibGVkV2l0aFVzZXJJZCh0aGlzLnVzZXJOYW1lKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAvLyBJZiBsZXhpcy1uZXhpcyBpZCBwcm9vZmluZyBpcyBlbmFibGVkXHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLmlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIlRoZSBjbGFpbWFudCBhY2NvdW50IHdpdGggdXNlciBuYW1lXCIgKyB0aGlzLnVzZXJOYW1lICsgXCIgaGFzIGJlZW4gYmxvY2tlZC4gUGxlYXNlIGNvbnRhY3QgS0RPTC5cIilcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvL3RoaXMub25DYW5jZWwuZW1pdCgpO1xyXG4gICAgLy8gdXNwcyByZWRpcmVjdCBjYWxsXHJcbiAgICAvL3RoaXMudHJpZ2dlclVkb2woKTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJVZG9sKCkge1xyXG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XHJcbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgY29uc29sZS5sb2coXCJ1c3BzIGlzIHRyaWdnZXJlZFwiKVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VzZXJJZCcsIHRoaXMudXNlck5hbWUpO1xyXG4gICAgdGhpcy5scy5sb2dvdXQoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvdXNwcy1yZWRpcmVjdCcsIFwiXCJdKSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvcihlcnJvcikge1xyXG4gICAgaWYgKGVycm9yPy5lcnJvckNvZGUgPT0gJzQyMicpIHtcclxuICAgICAgdGhpcy5lcnJvclRleHQgPSBlcnJvci5tc2dbMF07XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzdWNjZXNzKG1zZykge1xyXG4gICAgdGhpcy5zaG93U3VjY2VzcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoJy9sYW5kaW5nJyk7XHJcbiAgICB0aGlzLmxzLmxvZ291dCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGVyc29uYWxEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5jcy5nZXRVc2VyUGVyc29uYWxEZXRhaWxzKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMudXNlclBlcnNvbmFsRGV0YWlsID0gcmVzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKFwiRmFpbGVkIHRvIGdldCB0aGUgdXNlciBpbmZvLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgLy8gTG9nIHRoZSBlcnJvciBmb3IgZGVidWdnaW5nIHB1cnBvc2VzXHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdXNlciBkZXRhaWxzOicsIGVycik7XHJcbiAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihcIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGZldGNoaW5nIHVzZXIgaW5mb3JtYXRpb24uXCIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VjUXVlc3Rpb25zUGF5bWVudE9wdGlvbnMoKXtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkID09PSAncGF5bWVudC1kZXRhaWxzJykgeyAgXHJcbiAgICAgICAgdGhpcy5pc1BheW1lbnRPcHRpb25EaXZFbmFibGVkPWZhbHNlOyAgIFxyXG4gICAgICAgICAgdGhpcy5jdXN0b21lckV2ZW50VHlwZSA9ICdhY2NvdW50JztcclxuICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7ICAgICBcclxuICAgICAgICAgLy8gdGhpcy5pc0xleGlzTmV4aXNQcm9vZmVkV2l0aGluVHdlbnR5Rm91ckhvdXJzPXRydWU7ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICBpZih0aGlzLmlzTGV4aXNOZXhpc1Byb29mZWRXaXRoaW5Ud2VudHlGb3VySG91cnMpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsU2VjdXJpdHlRdWVzdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLnNhdmVRdWVzdGlvbm5haXJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1BheW1lbnRPcHRpb25EaXZFbmFibGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNQYXltZW50T3B0aW9uUXVlc3Rpb25zRW5hYmxlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbn1cclxuXHJcbiAgdmFsaWRhdGVOYW1lQ2hhbmdlKGZvcm1EYXRhOiBBcnJheTx7IGNvbnRyb2xOYW1lOiBzdHJpbmcsIGNvbnRyb2xWYWx1ZTogYW55IH0+KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBrZXlzVG9DaGVjayA9IFsnZnN0bmFtZScsICdtaWRkbGVuYW1lJywgJ2xzdG5hbWUnXTtcclxuICBcclxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgZm9ybSBkYXRhIGFuZCBjaGVjayBpZiB0aGUgY29udHJvbCBoYXMgY2hhbmdlZFxyXG4gICAgZm9yIChsZXQgaXRlbSBvZiBmb3JtRGF0YSkge1xyXG4gICAgICBjb25zdCBjb250cm9sTmFtZSA9IGl0ZW0uY29udHJvbE5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgXHJcbiAgICAgIC8vIEZpbmQgdGhlIG1hdGNoaW5nIGtleSBpbiB0aGUgcmVzcG9uc2UgZGF0YVxyXG4gICAgICBjb25zdCBtYXRjaGVkS2V5ID0ga2V5c1RvQ2hlY2suZmluZChrZXkgPT4ga2V5LnRvTG93ZXJDYXNlKCkgPT09IGNvbnRyb2xOYW1lKTtcclxuICBcclxuICAgICAgaWYgKG1hdGNoZWRLZXkpIHtcclxuICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBmcm9tIHRoZSB1c2VyIGRhdGEgYW5kIHRoZSBmb3JtIHZhbHVlXHJcbiAgICAgICAgY29uc3QgdXNlclBlcnNvblZhbHVlID0gdGhpcy51c2VyUGVyc29uYWxEZXRhaWwuZGF0YVttYXRjaGVkS2V5XTtcclxuICAgICAgICBjb25zdCBmb3JtQ29udHJvbFZhbHVlID0gaXRlbS5jb250cm9sVmFsdWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdmFsdWVzIGFyZSBudWxsLCB1bmRlZmluZWQsIG9yIGVtcHR5LCBvciBpZiB0aGV5IGRpZmZlciAoaWdub3JpbmcgY2FzZSlcclxuICAgICAgICBjb25zdCB1c2VySXNFbXB0eSA9IHRoaXMuaXNOdWxsT3JFbXB0eSh1c2VyUGVyc29uVmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Jc0VtcHR5ID0gdGhpcy5pc051bGxPckVtcHR5KGZvcm1Db250cm9sVmFsdWUpO1xyXG5cclxuICAgICAgICAvLyBDYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2YgdGhlIHZhbHVlc1xyXG4gICAgICAgIGlmICgodXNlcklzRW1wdHkgJiYgIWZvcm1Jc0VtcHR5KSB8fCAoIXVzZXJJc0VtcHR5ICYmIGZvcm1Jc0VtcHR5KSB8fFxyXG4gICAgICAgICAgICAodXNlclBlcnNvblZhbHVlICYmIGZvcm1Db250cm9sVmFsdWUgJiYgdXNlclBlcnNvblZhbHVlLnRvTG93ZXJDYXNlKCkgIT09IGZvcm1Db250cm9sVmFsdWUudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgIC8vIElmIHZhbHVlcyBkaWZmZXIgKGlnbm9yaW5nIGNhc2UpLCByZXR1cm4gdHJ1ZSAoY2hhbmdlIGRldGVjdGVkKVxyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvLyBJZiBubyBkaWZmZXJlbmNlcyB3ZXJlIGZvdW5kLCByZXR1cm4gZmFsc2UgKG5vIGNoYW5nZXMpXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBVdGlsaXR5IG1ldGhvZCB0byBjaGVjayBmb3IgbnVsbCx1bmRlZmluZWQgIG9yIGVtcHR5IHN0cmluZ1xyXG4gIGlzTnVsbE9yRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBcIlwiIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBcclxuICBcclxufVxyXG4iLCI8cC1kaWFsb2cgdmlzaWJsZT1cInRydWVcIiBtb2RhbD1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIiBbYnJlYWtwb2ludHNdPVwieycxMDI0cHgnOiAnNzV2dycsICc3NjhweCc6ICc4NXZ3JywgJzY0MHB4JzogJzEwMHZ3J31cIlxyXG4gICAgW3N0eWxlXT1cInt3aWR0aDogJzYwdncnfVwiIHBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdCBoZWFkaW5nXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDI0cHg7XCIgaWQ9XCJwZGlhbG9nLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tcIllvdXIgQWNjb3VudFwiIHwgdHJhbnNsYXRlfX0gPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDE2cHg7XCI+KENJRFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xzLmdldFVzZXIoKS5jbGFpbWFudElkfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIHN0eWxlQ2xhc3M9XCJpb24tcGFkZGluZy1zdGFydFwiIFtvcHRpb25zXT1cInByb2ZpbGVPcHRzXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiIChvbk9wdGlvbkNsaWNrKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPiBcclxuIFxyXG4gICAgPGRpdiAqbmdJZj1cIiEoc2hvd1N1Y2Nlc3MgfHwgc2hvd0Vycm9yKVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC04cHg7XCI+XHJcbiAgICAgICAgPGRpdiAgKm5nSWY9XCJzZWxlY3RlZCA9PSAncGF5bWVudC1kZXRhaWxzJyAmJiAhaXNQYXltZW50T3B0aW9uUXVlc3Rpb25zRW5hYmxlZCAmJiBpc1BheW1lbnRPcHRpb25EaXZFbmFibGVkXCI+ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB7eyBnZXRTZWNRdWVzdGlvbnNQYXltZW50T3B0aW9ucygpIH19ICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3BlcnNvbmFsLWRldGFpbHMnXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCIgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCIgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgICAgIDxhcHAtZm9ybS1idWlsZGVyICNmYiAqbmdJZj1cInNlbGVjdGVkID09ICdjb250YWN0LWRldGFpbHMnXCIgW2Zsb3dLZXldPVwic2VsZWN0ZWRcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCIgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiIFtoaWRlRm9vdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCIgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgICAgIDxkaXYgICpuZ0lmPVwiKGlzUGF5bWVudE9wdGlvblF1ZXN0aW9uc0VuYWJsZWQpXCI+XHJcbiAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI2ZiICpuZ0lmPVwic2VsZWN0ZWQgPT0gJ3BheW1lbnQtZGV0YWlscydcIiBbZmxvd0tleV09XCJzZWxlY3RlZFwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIiBbaGlkZUhlYWRlcl09XCJ0cnVlXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NpemVYc109XCIxMlwiIFtzaXplU21dPVwiMTJcIiBbc2l6ZU1kXT1cIjEyXCIgW3NpemVMZ109XCIxMlwiIFtzaXplWGxdPVwiMTJcIiBbb2Zmc2V0WGxdPVwiMFwiIFtvZmZzZXRMZ109XCIwXCIgKG9uRXJyb3IpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiIChvbkNvbXBsZXRlKT1cInN1Y2Nlc3MoJGV2ZW50KVwiPlxyXG4gICAgPC9hcHAtZm9ybS1idWlsZGVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93U3VjY2Vzc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLXBhZGRpbmctdG9wXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLWNpcmNsZVwiIHN0eWxlPVwiZm9udC1zaXplOiA4MHB4OyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWdyZWVuKTtcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICA8aDE+U2F2ZWQgc3VjY2Vzc2Z1bGx5LjwvaDE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGUtb3V0bGluZVwiIHN0eWxlPVwiZm9udC1zaXplOiA4MHB4OyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPGgxPnt7ZXJyb3JUZXh0ID8gZXJyb3JUZXh0IDogJ09wcHMsIGNvdWxkIG5vdCBwcm9jZXNzIHlvdXIgcmVxdWVzdC4gUGxlYXNlIHRyeSBhZ2Fpbi4nfX08L2gxPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cclxuICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgc2l6ZT1cIjEyXCIgc2l6ZVhsPVwiNFwiIHNpemVMZz1cIjRcIiBzaXplTWQ9XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gdGFiaW5kZXg9XCIwXCIgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpc0J1dHRvbkRpc2FibGVkXCIgKGNsaWNrKT1cImxvZ291dCgpXCIgKGtleWRvd24uZW50ZXIpPVwibG9nb3V0KClcIiBjbGFzcz1cImlvbkJ1dHRvblwiPkxvZ291dDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBzaXplPVwiMTJcIiBzaXplWGw9XCI4XCIgc2l6ZUxnPVwiOFwiIHNpemVNZD1cIjdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIjBcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiB0eXBlPVwicmVzZXRcIiBbZGlzYWJsZWRdPVwiaXNCdXR0b25EaXNhYmxlZFwiIChjbGljayk9XCJjYW5jZWwoKVwiIChrZXlkb3duLmVudGVyKT1cImNhbmNlbCgpXCIgY2xhc3M9XCJpb25CdXR0b25cIj5DbG9zZTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIjBcIiBzaGFwZT1cInJvdW5kXCIgdHlwZT1cInN1Ym1pdFwiICBbZGlzYWJsZWRdPVwiaXNCdXR0b25EaXNhYmxlZFwiIChjbGljayk9XCJzYXZlKClcIiAoa2V5ZG93bi5lbnRlcik9XCJzYXZlKClcIiAqbmdJZj1cIiEoc2hvd1N1Y2Nlc3MgfHwgc2hvd0Vycm9yKVwiIGNsYXNzPVwiaW9uQnV0dG9uXCI+U2F2ZTwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPGFwcC1sZXhpcy1uZXhpcyAqbmdJZj1cImlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZFwiIFtkaXNwbGF5XT1cImlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZFwiIFt1c2VyTmFtZV0gPSAndGhpcy51c2VyTmFtZScgW2N1c3RvbWVyRXZlbnRUeXBlXSA9ICd0aGlzLmN1c3RvbWVyRXZlbnRUeXBlJyAoc3VjY2Vzcyk9XCJvblNlY3VyaXR5UXVlc3Rpb25TdWNjZXNzKClcIiAoZXJyb3IpPVwidHJpZ2dlclVkb2woKVwiICh1c3BzKT1cInRyaWdnZXJVZG9sKClcIj48L2FwcC1sZXhpcy1uZXhpcz5cclxuICAgIDwhLS0gVW5jb21tZW50IHRvIGVuYWJsZSBsZXhpcyAtIG5leGlzIC0tPlxyXG4gICAgPGFwcC1zZWN1cml0eS1xdWVzdGlvbiAqbmdJZj1cImlzU2VjdXJpdHlRdWVzdGlvbkVuYWJsZWRcIiBbZGlzcGxheV09XCJpc1NlY3VyaXR5UXVlc3Rpb25FbmFibGVkXCIgW3F1ZXN0aW9uc0FuZEFuc3dlcnNdPVwidXNlcnNRdWVzQW5kQW5zXCIgW3F1ZXN0aW9uc0FuZEtleXNPZlVzZXJdPVwibWFwcGVkS2V5c1F1ZXN0aW9uc0ZvclVzZXJcIiAoc3VjY2Vzcyk9XCJvblNlY3VyaXR5UXVlc3Rpb25TdWNjZXNzKClcIiAoY2xlYXIpPVwiZW5hYmxlTGV4aXNOZXhpcygpXCI+PC9hcHAtc2VjdXJpdHktcXVlc3Rpb24+XHJcbiAgICA8IS0tIENvbW1lbnQgd2hlbiBsZXhpcyBuZXhpcyBpcyBlbmFibGVkIC0tPlxyXG4gICAgPCEtLSA8YXBwLXNlY3VyaXR5LXF1ZXN0aW9uICpuZ0lmPVwiaXNTZWN1cml0eVF1ZXN0aW9uRW5hYmxlZFwiIFtkaXNwbGF5XT1cImlzU2VjdXJpdHlRdWVzdGlvbkVuYWJsZWRcIiBbcXVlc3Rpb25zQW5kQW5zd2Vyc109XCJ1c2Vyc1F1ZXNBbmRBbnNcIiBbcXVlc3Rpb25zQW5kS2V5c09mVXNlcl09XCJtYXBwZWRLZXlzUXVlc3Rpb25zRm9yVXNlclwiIChzdWNjZXNzKT1cIm9uU2VjdXJpdHlRdWVzdGlvblN1Y2Nlc3MoKVwiIChjbGVhcik9XCJ0cmlnZ2VyVWRvbCgpXCI+PC9hcHAtc2VjdXJpdHktcXVlc3Rpb24+IC0tPlxyXG4gICBcclxuPC9wLWRpYWxvZz4iXX0=