@piserve-tech/form-submission 1.3.314 → 1.3.316

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 (443) hide show
  1. package/README.md +24 -24
  2. package/ng-package.json +30 -0
  3. package/package.json +33 -46
  4. package/{assets → src/assets}/icons/close-sidebar-mark-icon.svg +3 -3
  5. package/{assets → src/assets}/icons/copy-icon.svg +5 -5
  6. package/{assets → src/assets}/icons/delete-icon.svg +7 -7
  7. package/{assets → src/assets}/icons/delete-no-outline-icon.svg +7 -7
  8. package/src/environment/environment.ts +6 -0
  9. package/src/form-fields/aggregate-function/aggregate-function.component.html +63 -0
  10. package/src/form-fields/aggregate-function/aggregate-function.component.scss +1 -0
  11. package/src/form-fields/aggregate-function/aggregate-function.component.spec.ts +21 -0
  12. package/src/form-fields/aggregate-function/aggregate-function.component.ts +148 -0
  13. package/src/form-fields/check-box-fields/check-box-fields.component.html +81 -0
  14. package/src/form-fields/check-box-fields/check-box-fields.component.scss +28 -0
  15. package/src/form-fields/check-box-fields/check-box-fields.component.spec.ts +21 -0
  16. package/src/form-fields/check-box-fields/check-box-fields.component.ts +538 -0
  17. package/src/form-fields/currency-fields/currency-fields.component.html +85 -0
  18. package/src/form-fields/currency-fields/currency-fields.component.scss +48 -0
  19. package/src/form-fields/currency-fields/currency-fields.component.spec.ts +21 -0
  20. package/src/form-fields/currency-fields/currency-fields.component.ts +589 -0
  21. package/src/form-fields/date-time-fields/date-time-fields.component.html +268 -0
  22. package/src/form-fields/date-time-fields/date-time-fields.component.scss +88 -0
  23. package/src/form-fields/date-time-fields/date-time-fields.component.spec.ts +21 -0
  24. package/src/form-fields/date-time-fields/date-time-fields.component.ts +693 -0
  25. package/src/form-fields/drop-down-fields/drop-down-fields.component.html +77 -0
  26. package/src/form-fields/drop-down-fields/drop-down-fields.component.scss +12 -0
  27. package/src/form-fields/drop-down-fields/drop-down-fields.component.spec.ts +21 -0
  28. package/src/form-fields/drop-down-fields/drop-down-fields.component.ts +698 -0
  29. package/src/form-fields/file-picker-fields/file-picker-fields.component.html +72 -0
  30. package/src/form-fields/file-picker-fields/file-picker-fields.component.scss +33 -0
  31. package/src/form-fields/file-picker-fields/file-picker-fields.component.spec.ts +21 -0
  32. package/src/form-fields/file-picker-fields/file-picker-fields.component.ts +256 -0
  33. package/src/form-fields/form-fields.module.ts +110 -0
  34. package/src/form-fields/hidden-field/hidden-field.component.scss +0 -0
  35. package/src/form-fields/hidden-field/hidden-field.component.spec.ts +21 -0
  36. package/src/form-fields/hidden-field/hidden-field.component.ts +156 -0
  37. package/src/form-fields/iframe-fields/iframe-fields.component.html +31 -0
  38. package/src/form-fields/iframe-fields/iframe-fields.component.scss +0 -0
  39. package/src/form-fields/iframe-fields/iframe-fields.component.spec.ts +21 -0
  40. package/src/form-fields/iframe-fields/iframe-fields.component.ts +225 -0
  41. package/src/form-fields/location-fields/location-fields.component.html +54 -0
  42. package/src/form-fields/location-fields/location-fields.component.scss +22 -0
  43. package/src/form-fields/location-fields/location-fields.component.spec.ts +21 -0
  44. package/src/form-fields/location-fields/location-fields.component.ts +83 -0
  45. package/src/form-fields/mail-fields/mail-fields.component.html +66 -0
  46. package/src/form-fields/mail-fields/mail-fields.component.scss +10 -0
  47. package/src/form-fields/mail-fields/mail-fields.component.spec.ts +21 -0
  48. package/src/form-fields/mail-fields/mail-fields.component.ts +127 -0
  49. package/src/form-fields/mobile-fields/mobile-fields.component.html +97 -0
  50. package/src/form-fields/mobile-fields/mobile-fields.component.scss +52 -0
  51. package/src/form-fields/mobile-fields/mobile-fields.component.spec.ts +21 -0
  52. package/src/form-fields/mobile-fields/mobile-fields.component.ts +310 -0
  53. package/src/form-fields/number-fields/number-fields.component.html +70 -0
  54. package/src/form-fields/number-fields/number-fields.component.scss +17 -0
  55. package/src/form-fields/number-fields/number-fields.component.spec.ts +21 -0
  56. package/src/form-fields/number-fields/number-fields.component.ts +256 -0
  57. package/src/form-fields/password-fields/password-fields.component.html +113 -0
  58. package/src/form-fields/password-fields/password-fields.component.scss +61 -0
  59. package/src/form-fields/password-fields/password-fields.component.spec.ts +21 -0
  60. package/src/form-fields/password-fields/password-fields.component.ts +273 -0
  61. package/src/form-fields/radio-button-fields/radio-button-fields.component.html +82 -0
  62. package/src/form-fields/radio-button-fields/radio-button-fields.component.scss +28 -0
  63. package/src/form-fields/radio-button-fields/radio-button-fields.component.spec.ts +21 -0
  64. package/src/form-fields/radio-button-fields/radio-button-fields.component.ts +391 -0
  65. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.html +67 -0
  66. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.scss +23 -0
  67. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.spec.ts +21 -0
  68. package/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.ts +145 -0
  69. package/src/form-fields/section-fields/section-fields.component.html +4 -0
  70. package/src/form-fields/section-fields/section-fields.component.scss +37 -0
  71. package/src/form-fields/section-fields/section-fields.component.spec.ts +21 -0
  72. package/src/form-fields/section-fields/section-fields.component.ts +25 -0
  73. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.html +93 -0
  74. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.scss +52 -0
  75. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.spec.ts +21 -0
  76. package/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.ts +155 -0
  77. package/src/form-fields/signature-fields/signature-fields.component.html +43 -0
  78. package/src/form-fields/signature-fields/signature-fields.component.scss +10 -0
  79. package/src/form-fields/signature-fields/signature-fields.component.spec.ts +21 -0
  80. package/src/form-fields/signature-fields/signature-fields.component.ts +25 -0
  81. package/src/form-fields/slider-fields/slider-fields.component.html +67 -0
  82. package/src/form-fields/slider-fields/slider-fields.component.scss +55 -0
  83. package/src/form-fields/slider-fields/slider-fields.component.spec.ts +21 -0
  84. package/src/form-fields/slider-fields/slider-fields.component.ts +63 -0
  85. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.html +52 -0
  86. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.scss +85 -0
  87. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.spec.ts +21 -0
  88. package/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.ts +62 -0
  89. package/src/form-fields/text-area-fields/text-area-fields.component.html +68 -0
  90. package/src/form-fields/text-area-fields/text-area-fields.component.scss +19 -0
  91. package/src/form-fields/text-area-fields/text-area-fields.component.spec.ts +21 -0
  92. package/src/form-fields/text-area-fields/text-area-fields.component.ts +166 -0
  93. package/src/form-fields/text-fields/text-fields.component.html +67 -0
  94. package/src/form-fields/text-fields/text-fields.component.scss +26 -0
  95. package/src/form-fields/text-fields/text-fields.component.spec.ts +21 -0
  96. package/src/form-fields/text-fields/text-fields.component.ts +248 -0
  97. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.html +70 -0
  98. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.scss +112 -0
  99. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.spec.ts +21 -0
  100. package/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.ts +74 -0
  101. package/src/form-fields/url-fields/url-fields.component.html +109 -0
  102. package/src/form-fields/url-fields/url-fields.component.scss +22 -0
  103. package/src/form-fields/url-fields/url-fields.component.spec.ts +21 -0
  104. package/src/form-fields/url-fields/url-fields.component.ts +123 -0
  105. package/src/form-submission/form-submission.module.ts +40 -0
  106. package/src/form-submission/header/header.component.html +6 -0
  107. package/src/form-submission/header/header.component.scss +26 -0
  108. package/src/form-submission/header/header.component.spec.ts +21 -0
  109. package/src/form-submission/header/header.component.ts +12 -0
  110. package/src/form-submission/navigation-tabs/navigation-tabs.component.html +134 -0
  111. package/src/form-submission/navigation-tabs/navigation-tabs.component.scss +200 -0
  112. package/src/form-submission/navigation-tabs/navigation-tabs.component.spec.ts +21 -0
  113. package/src/form-submission/navigation-tabs/navigation-tabs.component.ts +134 -0
  114. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.html +207 -0
  115. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.scss +208 -0
  116. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.spec.ts +21 -0
  117. package/src/form-submission/next-prev-navigation/next-prev-navigation.component.ts +74 -0
  118. package/src/form-submission/save-as-draft/saveDraftModalComponent .ts +60 -0
  119. package/src/form-submission/save-as-draft/saveDraftModalComponent.html +33 -0
  120. package/src/form-submission/save-as-draft/saveDraftModalComponent.scss +195 -0
  121. package/src/form-submission/submission-container/submission-container.component.html +30 -0
  122. package/src/form-submission/submission-container/submission-container.component.scss +67 -0
  123. package/src/form-submission/submission-container/submission-container.component.spec.ts +21 -0
  124. package/src/form-submission/submission-container/submission-container.component.ts +14 -0
  125. package/src/form-submission/submit-form/submit-form.component.html +76 -0
  126. package/src/form-submission/submit-form/submit-form.component.scss +88 -0
  127. package/src/form-submission/submit-form/submit-form.component.spec.ts +21 -0
  128. package/src/form-submission/submit-form/submit-form.component.ts +1953 -0
  129. package/src/lib/form-submission.component.html +15 -0
  130. package/src/lib/form-submission.component.scss +1 -0
  131. package/src/lib/form-submission.component.ts +120 -0
  132. package/src/lib/form-submission.module.ts +31 -0
  133. package/src/lib/form-submission.service.spec.ts +16 -0
  134. package/src/lib/form-submission.service.ts +9 -0
  135. package/src/models/aggregate.model.ts +4 -0
  136. package/{models/answer.model.d.ts → src/models/answer.model.ts} +25 -23
  137. package/src/models/appearance.model.ts +64 -0
  138. package/{models/attachment.model.d.ts → src/models/attachment.model.ts} +6 -6
  139. package/{models/defaultAnswerEntry.model.d.ts → src/models/defaultAnswerEntry.model.ts} +7 -5
  140. package/{models/defaultAnswersModel.model.d.ts → src/models/defaultAnswersModel.model.ts} +5 -4
  141. package/{models/defaultQuestionAnswer.model.d.ts → src/models/defaultQuestionAnswer.model.ts} +6 -6
  142. package/src/models/elementOptionAPI.model.ts +13 -0
  143. package/src/models/elementOptionAPIData.model.ts +5 -0
  144. package/src/models/elementOptionDB.model.ts +9 -0
  145. package/src/models/elementOptionDBCriteria.model.ts +7 -0
  146. package/{models/emitters.model.d.ts → src/models/emitters.model.ts} +8 -8
  147. package/{models/enum/condition.enum.d.ts → src/models/enum/condition.enum.ts} +2 -2
  148. package/src/models/enum/elementType .enum.ts +22 -0
  149. package/src/models/enum/entityType.enum.ts +10 -0
  150. package/{models/formConfiguration.model.d.ts → src/models/formConfiguration.model.ts} +2 -2
  151. package/{models/formElement.model.d.ts → src/models/formElement.model.ts} +22 -22
  152. package/{models/formElementType.model.d.ts → src/models/formElementType.model.ts} +3 -2
  153. package/{models/grid.model.d.ts → src/models/grid.model.ts} +14 -13
  154. package/{models/hiddenField.model.d.ts → src/models/hiddenField.model.ts} +5 -5
  155. package/{models/iFrameProperties.model.d.ts → src/models/iFrameProperties.model.ts} +13 -13
  156. package/src/models/logic.model.ts +11 -0
  157. package/src/models/multifields.model.ts +12 -0
  158. package/{models/option.model.d.ts → src/models/option.model.ts} +5 -5
  159. package/src/models/page.model.ts +7 -0
  160. package/src/models/publicForm.model.ts +19 -0
  161. package/src/models/question.model.ts +27 -0
  162. package/src/models/questionAnswer.model.ts +8 -0
  163. package/src/models/questionGroup.model.ts +12 -0
  164. package/src/models/response.model.ts +9 -0
  165. package/src/models/result.model.ts +5 -0
  166. package/{models/row.model.d.ts → src/models/row.model.ts} +2 -1
  167. package/src/models/scoring.model.ts +10 -0
  168. package/src/models/section.model.ts +6 -0
  169. package/src/models/subForm.model.ts +25 -0
  170. package/src/models/subformConfiguration.model.ts +4 -0
  171. package/src/models/subformPropery.model.ts +8 -0
  172. package/{models/submission.model.d.ts → src/models/submission.model.ts} +16 -14
  173. package/{models/submissionCopyConfig.mopdel.d.ts → src/models/submissionCopyConfig.mopdel.ts} +4 -4
  174. package/{models/terms&condition.model.d.ts → src/models/terms&condition.model.ts} +1 -1
  175. package/src/models/validation.model.ts +48 -0
  176. package/src/models/whenClause.model.ts +7 -0
  177. package/{models/whenClauseCondition.model.d.ts → src/models/whenClauseCondition.model.ts} +6 -6
  178. package/{models/whenClauseElements.model.d.ts → src/models/whenClauseElements.model.ts} +6 -5
  179. package/{public-api.d.ts → src/public-api.ts} +4 -0
  180. package/src/question/card-subform/card-subform.component.html +282 -0
  181. package/src/question/card-subform/card-subform.component.scss +49 -0
  182. package/src/question/card-subform/card-subform.component.spec.ts +21 -0
  183. package/src/question/card-subform/card-subform.component.ts +407 -0
  184. package/src/question/confirm-dialog/confirm-dialog.component.html +32 -0
  185. package/src/question/confirm-dialog/confirm-dialog.component.scss +109 -0
  186. package/src/question/confirm-dialog/confirm-dialog.component.spec.ts +21 -0
  187. package/src/question/confirm-dialog/confirm-dialog.component.ts +24 -0
  188. package/src/question/form-elements/form-elements.component.html +28 -0
  189. package/src/question/form-elements/form-elements.component.scss +0 -0
  190. package/src/question/form-elements/form-elements.component.spec.ts +21 -0
  191. package/src/question/form-elements/form-elements.component.ts +41 -0
  192. package/src/question/inline-multiple-subform/inline-multiple-subform.component.html +321 -0
  193. package/src/question/inline-multiple-subform/inline-multiple-subform.component.scss +78 -0
  194. package/src/question/inline-multiple-subform/inline-multiple-subform.component.spec.ts +21 -0
  195. package/src/question/inline-multiple-subform/inline-multiple-subform.component.ts +425 -0
  196. package/src/question/multifields/multifields.component.html +78 -0
  197. package/src/question/multifields/multifields.component.scss +6 -0
  198. package/src/question/multifields/multifields.component.spec.ts +21 -0
  199. package/src/question/multifields/multifields.component.ts +27 -0
  200. package/src/question/multiple-subform/multiple-subform.component.html +185 -0
  201. package/src/question/multiple-subform/multiple-subform.component.scss +52 -0
  202. package/src/question/multiple-subform/multiple-subform.component.spec.ts +21 -0
  203. package/src/question/multiple-subform/multiple-subform.component.ts +481 -0
  204. package/src/question/question/question.component.html +51 -0
  205. package/src/question/question/question.component.scss +0 -0
  206. package/src/question/question/question.component.spec.ts +21 -0
  207. package/src/question/question/question.component.ts +129 -0
  208. package/src/question/question-group/question-group.component.html +147 -0
  209. package/src/question/question-group/question-group.component.scss +36 -0
  210. package/src/question/question-group/question-group.component.spec.ts +21 -0
  211. package/src/question/question-group/question-group.component.ts +94 -0
  212. package/src/question/question.module.ts +22 -0
  213. package/src/question/recursive-logic/recursive-logic.component.html +33 -0
  214. package/src/question/recursive-logic/recursive-logic.component.scss +0 -0
  215. package/src/question/recursive-logic/recursive-logic.component.spec.ts +21 -0
  216. package/src/question/recursive-logic/recursive-logic.component.ts +29 -0
  217. package/src/question/sub-form/sub-form.component.html +254 -0
  218. package/src/question/sub-form/sub-form.component.scss +83 -0
  219. package/src/question/sub-form/sub-form.component.spec.ts +21 -0
  220. package/src/question/sub-form/sub-form.component.ts +421 -0
  221. package/src/services/aggregate.service.ts +148 -0
  222. package/src/services/countryService.ts +92 -0
  223. package/src/services/data.service.ts +36 -0
  224. package/src/services/element-tracker.service.spec.ts +16 -0
  225. package/src/services/element-tracker.service.ts +24 -0
  226. package/src/services/form-validation.service.ts +151 -0
  227. package/src/services/form.service.spec.ts +16 -0
  228. package/src/services/form.service.ts +407 -0
  229. package/src/services/mapper.service.ts +625 -0
  230. package/src/services/recaptcha.service.spec.ts +16 -0
  231. package/src/services/recaptcha.service.ts +179 -0
  232. package/src/services/score.service.ts +352 -0
  233. package/src/services/subform-copy.service.ts +148 -0
  234. package/src/services/validation.service.spec.ts +16 -0
  235. package/src/services/validation.service.ts +33 -0
  236. package/src/services/whenClause.service.ts +502 -0
  237. package/src/shared/shared.module.ts +58 -0
  238. package/src/styles/shared-style.scss +86 -0
  239. package/src/sub-form/sub-form.module.ts +24 -0
  240. package/src/sub-form/submission-modal/submission-modal.component.html +160 -0
  241. package/src/sub-form/submission-modal/submission-modal.component.scss +54 -0
  242. package/src/sub-form/submission-modal/submission-modal.component.spec.ts +21 -0
  243. package/src/sub-form/submission-modal/submission-modal.component.ts +127 -0
  244. package/tsconfig.lib.json +14 -0
  245. package/tsconfig.lib.prod.json +10 -0
  246. package/tsconfig.spec.json +14 -0
  247. package/environment/environment.d.ts +0 -5
  248. package/esm2022/environment/environment.mjs +0 -6
  249. package/esm2022/form-fields/aggregate-function/aggregate-function.component.mjs +0 -146
  250. package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +0 -473
  251. package/esm2022/form-fields/currency-fields/currency-fields.component.mjs +0 -502
  252. package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +0 -608
  253. package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +0 -585
  254. package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +0 -224
  255. package/esm2022/form-fields/form-fields.module.mjs +0 -174
  256. package/esm2022/form-fields/hidden-field/hidden-field.component.mjs +0 -137
  257. package/esm2022/form-fields/iframe-fields/iframe-fields.component.mjs +0 -198
  258. package/esm2022/form-fields/location-fields/location-fields.component.mjs +0 -85
  259. package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +0 -131
  260. package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +0 -270
  261. package/esm2022/form-fields/number-fields/number-fields.component.mjs +0 -242
  262. package/esm2022/form-fields/password-fields/password-fields.component.mjs +0 -257
  263. package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +0 -346
  264. package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +0 -148
  265. package/esm2022/form-fields/section-fields/section-fields.component.mjs +0 -29
  266. package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +0 -158
  267. package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +0 -32
  268. package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +0 -73
  269. package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +0 -66
  270. package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +0 -159
  271. package/esm2022/form-fields/text-fields/text-fields.component.mjs +0 -245
  272. package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +0 -85
  273. package/esm2022/form-fields/url-fields/url-fields.component.mjs +0 -124
  274. package/esm2022/form-submission/form-submission.module.mjs +0 -64
  275. package/esm2022/form-submission/header/header.component.mjs +0 -20
  276. package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +0 -171
  277. package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +0 -124
  278. package/esm2022/form-submission/save-as-draft/saveDraftModalComponent .mjs +0 -50
  279. package/esm2022/form-submission/submission-container/submission-container.component.mjs +0 -17
  280. package/esm2022/form-submission/submit-form/submit-form.component.mjs +0 -1610
  281. package/esm2022/lib/form-submission.component.mjs +0 -113
  282. package/esm2022/lib/form-submission.module.mjs +0 -56
  283. package/esm2022/lib/form-submission.service.mjs +0 -14
  284. package/esm2022/models/aggregate.model.mjs +0 -2
  285. package/esm2022/models/answer.model.mjs +0 -2
  286. package/esm2022/models/appearance.model.mjs +0 -2
  287. package/esm2022/models/attachment.model.mjs +0 -2
  288. package/esm2022/models/defaultAnswerEntry.model.mjs +0 -2
  289. package/esm2022/models/defaultAnswersModel.model.mjs +0 -2
  290. package/esm2022/models/defaultQuestionAnswer.model.mjs +0 -2
  291. package/esm2022/models/elementOptionAPI.model.mjs +0 -2
  292. package/esm2022/models/elementOptionAPIData.model.mjs +0 -2
  293. package/esm2022/models/elementOptionDB.model.mjs +0 -2
  294. package/esm2022/models/elementOptionDBCriteria.model.mjs +0 -2
  295. package/esm2022/models/emitters.model.mjs +0 -2
  296. package/esm2022/models/enum/condition.enum.mjs +0 -18
  297. package/esm2022/models/enum/elementType .enum.mjs +0 -24
  298. package/esm2022/models/enum/entityType.enum.mjs +0 -12
  299. package/esm2022/models/formConfiguration.model.mjs +0 -2
  300. package/esm2022/models/formElement.model.mjs +0 -2
  301. package/esm2022/models/formElementType.model.mjs +0 -2
  302. package/esm2022/models/grid.model.mjs +0 -2
  303. package/esm2022/models/hiddenField.model.mjs +0 -2
  304. package/esm2022/models/iFrameProperties.model.mjs +0 -2
  305. package/esm2022/models/logic.model.mjs +0 -2
  306. package/esm2022/models/multifields.model.mjs +0 -2
  307. package/esm2022/models/option.model.mjs +0 -2
  308. package/esm2022/models/page.model.mjs +0 -2
  309. package/esm2022/models/publicForm.model.mjs +0 -2
  310. package/esm2022/models/question.model.mjs +0 -2
  311. package/esm2022/models/questionAnswer.model.mjs +0 -2
  312. package/esm2022/models/questionGroup.model.mjs +0 -2
  313. package/esm2022/models/row.model.mjs +0 -2
  314. package/esm2022/models/scoring.model.mjs +0 -2
  315. package/esm2022/models/section.model.mjs +0 -2
  316. package/esm2022/models/subForm.model.mjs +0 -2
  317. package/esm2022/models/subformConfiguration.model.mjs +0 -2
  318. package/esm2022/models/subformPropery.model.mjs +0 -2
  319. package/esm2022/models/submission.model.mjs +0 -2
  320. package/esm2022/models/submissionCopyConfig.mopdel.mjs +0 -2
  321. package/esm2022/models/terms&condition.model.mjs +0 -2
  322. package/esm2022/models/validation.model.mjs +0 -2
  323. package/esm2022/models/whenClause.model.mjs +0 -2
  324. package/esm2022/models/whenClauseCondition.model.mjs +0 -2
  325. package/esm2022/models/whenClauseElements.model.mjs +0 -2
  326. package/esm2022/piserve-tech-form-submission.mjs +0 -5
  327. package/esm2022/public-api.mjs +0 -7
  328. package/esm2022/question/card-subform/card-subform.component.mjs +0 -354
  329. package/esm2022/question/confirm-dialog/confirm-dialog.component.mjs +0 -27
  330. package/esm2022/question/form-elements/form-elements.component.mjs +0 -62
  331. package/esm2022/question/inline-multiple-subform/inline-multiple-subform.component.mjs +0 -384
  332. package/esm2022/question/multifields/multifields.component.mjs +0 -54
  333. package/esm2022/question/multiple-subform/multiple-subform.component.mjs +0 -413
  334. package/esm2022/question/question/question.component.mjs +0 -145
  335. package/esm2022/question/question-group/question-group.component.mjs +0 -102
  336. package/esm2022/question/recursive-logic/recursive-logic.component.mjs +0 -49
  337. package/esm2022/question/sub-form/sub-form.component.mjs +0 -351
  338. package/esm2022/services/aggregate.service.mjs +0 -139
  339. package/esm2022/services/countryService.mjs +0 -89
  340. package/esm2022/services/data.service.mjs +0 -36
  341. package/esm2022/services/element-tracker.service.mjs +0 -27
  342. package/esm2022/services/form-validation.service.mjs +0 -128
  343. package/esm2022/services/form.service.mjs +0 -333
  344. package/esm2022/services/mapper.service.mjs +0 -519
  345. package/esm2022/services/recaptcha.service.mjs +0 -136
  346. package/esm2022/services/score.service.mjs +0 -268
  347. package/esm2022/services/subform-copy.service.mjs +0 -122
  348. package/esm2022/services/validation.service.mjs +0 -35
  349. package/esm2022/services/whenClause.service.mjs +0 -423
  350. package/esm2022/shared/shared.module.mjs +0 -97
  351. package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +0 -133
  352. package/fesm2022/piserve-tech-form-submission.mjs +0 -11658
  353. package/fesm2022/piserve-tech-form-submission.mjs.map +0 -1
  354. package/form-fields/aggregate-function/aggregate-function.component.d.ts +0 -43
  355. package/form-fields/check-box-fields/check-box-fields.component.d.ts +0 -73
  356. package/form-fields/currency-fields/currency-fields.component.d.ts +0 -62
  357. package/form-fields/date-time-fields/date-time-fields.component.d.ts +0 -96
  358. package/form-fields/drop-down-fields/drop-down-fields.component.d.ts +0 -88
  359. package/form-fields/file-picker-fields/file-picker-fields.component.d.ts +0 -72
  360. package/form-fields/form-fields.module.d.ts +0 -40
  361. package/form-fields/hidden-field/hidden-field.component.d.ts +0 -38
  362. package/form-fields/iframe-fields/iframe-fields.component.d.ts +0 -35
  363. package/form-fields/location-fields/location-fields.component.d.ts +0 -29
  364. package/form-fields/mail-fields/mail-fields.component.d.ts +0 -41
  365. package/form-fields/mobile-fields/mobile-fields.component.d.ts +0 -71
  366. package/form-fields/number-fields/number-fields.component.d.ts +0 -53
  367. package/form-fields/password-fields/password-fields.component.d.ts +0 -57
  368. package/form-fields/radio-button-fields/radio-button-fields.component.d.ts +0 -70
  369. package/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.d.ts +0 -46
  370. package/form-fields/section-fields/section-fields.component.d.ts +0 -10
  371. package/form-fields/selection-matrix-fields/selection-matrix-fields.component.d.ts +0 -45
  372. package/form-fields/signature-fields/signature-fields.component.d.ts +0 -13
  373. package/form-fields/slider-fields/slider-fields.component.d.ts +0 -32
  374. package/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.d.ts +0 -26
  375. package/form-fields/text-area-fields/text-area-fields.component.d.ts +0 -49
  376. package/form-fields/text-fields/text-fields.component.d.ts +0 -49
  377. package/form-fields/toggle-switch-fields/toggle-switch-fields.component.d.ts +0 -29
  378. package/form-fields/url-fields/url-fields.component.d.ts +0 -41
  379. package/form-submission/form-submission.module.d.ts +0 -20
  380. package/form-submission/header/header.component.d.ts +0 -7
  381. package/form-submission/navigation-tabs/navigation-tabs.component.d.ts +0 -57
  382. package/form-submission/next-prev-navigation/next-prev-navigation.component.d.ts +0 -46
  383. package/form-submission/save-as-draft/saveDraftModalComponent .d.ts +0 -17
  384. package/form-submission/submission-container/submission-container.component.d.ts +0 -7
  385. package/form-submission/submit-form/submit-form.component.d.ts +0 -237
  386. package/index.d.ts +0 -5
  387. package/lib/form-submission.component.d.ts +0 -30
  388. package/lib/form-submission.module.d.ts +0 -16
  389. package/lib/form-submission.service.d.ts +0 -6
  390. package/models/aggregate.model.d.ts +0 -4
  391. package/models/appearance.model.d.ts +0 -64
  392. package/models/elementOptionAPI.model.d.ts +0 -12
  393. package/models/elementOptionAPIData.model.d.ts +0 -5
  394. package/models/elementOptionDB.model.d.ts +0 -8
  395. package/models/elementOptionDBCriteria.model.d.ts +0 -7
  396. package/models/enum/elementType .enum.d.ts +0 -22
  397. package/models/enum/entityType.enum.d.ts +0 -10
  398. package/models/logic.model.d.ts +0 -9
  399. package/models/multifields.model.d.ts +0 -11
  400. package/models/page.model.d.ts +0 -6
  401. package/models/publicForm.model.d.ts +0 -18
  402. package/models/question.model.d.ts +0 -26
  403. package/models/questionAnswer.model.d.ts +0 -7
  404. package/models/questionGroup.model.d.ts +0 -11
  405. package/models/scoring.model.d.ts +0 -10
  406. package/models/section.model.d.ts +0 -6
  407. package/models/subForm.model.d.ts +0 -24
  408. package/models/subformConfiguration.model.d.ts +0 -4
  409. package/models/subformPropery.model.d.ts +0 -7
  410. package/models/validation.model.d.ts +0 -48
  411. package/models/whenClause.model.d.ts +0 -6
  412. package/question/card-subform/card-subform.component.d.ts +0 -44
  413. package/question/confirm-dialog/confirm-dialog.component.d.ts +0 -12
  414. package/question/form-elements/form-elements.component.d.ts +0 -20
  415. package/question/inline-multiple-subform/inline-multiple-subform.component.d.ts +0 -47
  416. package/question/multifields/multifields.component.d.ts +0 -11
  417. package/question/multiple-subform/multiple-subform.component.d.ts +0 -39
  418. package/question/question/question.component.d.ts +0 -30
  419. package/question/question-group/question-group.component.d.ts +0 -29
  420. package/question/recursive-logic/recursive-logic.component.d.ts +0 -19
  421. package/question/sub-form/sub-form.component.d.ts +0 -70
  422. package/services/aggregate.service.d.ts +0 -29
  423. package/services/countryService.d.ts +0 -21
  424. package/services/data.service.d.ts +0 -19
  425. package/services/element-tracker.service.d.ts +0 -10
  426. package/services/form-validation.service.d.ts +0 -16
  427. package/services/form.service.d.ts +0 -27
  428. package/services/mapper.service.d.ts +0 -31
  429. package/services/recaptcha.service.d.ts +0 -46
  430. package/services/score.service.d.ts +0 -27
  431. package/services/subform-copy.service.d.ts +0 -10
  432. package/services/validation.service.d.ts +0 -14
  433. package/services/whenClause.service.d.ts +0 -45
  434. package/shared/shared.module.d.ts +0 -25
  435. package/sub-form/submission-modal/submission-modal.component.d.ts +0 -31
  436. /package/{assets → src/assets}/fonts/Garamond.woff2 +0 -0
  437. /package/{assets → src/assets}/fonts/Georgia.woff2 +0 -0
  438. /package/{assets → src/assets}/fonts/Poppins.woff2 +0 -0
  439. /package/{assets → src/assets}/fonts/Tahoma.woff2 +0 -0
  440. /package/{assets → src/assets}/fonts/Tajawal.woff2 +0 -0
  441. /package/{assets → src/assets}/fonts/Verdana.woff2 +0 -0
  442. /package/{assets → src/assets}/icons/left_arrow.svg +0 -0
  443. /package/{assets → src/assets}/icons/right_arrow.svg +0 -0
@@ -1,35 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ValidationService {
4
- constructor() {
5
- this.invalidQuestions = {};
6
- }
7
- setInvalid(questionId, message, pageIndex) {
8
- this.invalidQuestions[questionId] = { message, pageIndex };
9
- }
10
- clearInvalid(questionId) {
11
- delete this.invalidQuestions[questionId];
12
- }
13
- getFirstInvalid() {
14
- const keys = Object.keys(this.invalidQuestions);
15
- return keys.length > 0 ? {
16
- id: keys[0],
17
- pageIndex: this.invalidQuestions[keys[0]].pageIndex
18
- } : null;
19
- }
20
- getErrorMessage(questionId) {
21
- return this.invalidQuestions[questionId]?.message || null;
22
- }
23
- clearAll() {
24
- this.invalidQuestions = {};
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
27
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationService, providedIn: 'root' }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationService, decorators: [{
30
- type: Injectable,
31
- args: [{
32
- providedIn: 'root'
33
- }]
34
- }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLHFCQUFnQixHQUEwRCxFQUFFLENBQUM7S0F5QnRGO0lBdkJDLFVBQVUsQ0FBQyxVQUFrQixFQUFFLE9BQWUsRUFBRSxTQUFpQjtRQUMvRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUFrQjtRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDWCxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDcEQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUFrQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDOytHQXpCVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgaW52YWxpZFF1ZXN0aW9uczoge1trZXk6IHN0cmluZ106IHttZXNzYWdlOiBzdHJpbmcsIHBhZ2VJbmRleDogbnVtYmVyfX0gPSB7fTtcblxuICBzZXRJbnZhbGlkKHF1ZXN0aW9uSWQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBwYWdlSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuaW52YWxpZFF1ZXN0aW9uc1txdWVzdGlvbklkXSA9IHttZXNzYWdlLCBwYWdlSW5kZXh9O1xuICB9XG5cbiAgY2xlYXJJbnZhbGlkKHF1ZXN0aW9uSWQ6IHN0cmluZykge1xuICAgIGRlbGV0ZSB0aGlzLmludmFsaWRRdWVzdGlvbnNbcXVlc3Rpb25JZF07XG4gIH1cblxuICBnZXRGaXJzdEludmFsaWQoKToge2lkOiBzdHJpbmcsIHBhZ2VJbmRleDogbnVtYmVyfSB8IG51bGwge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmludmFsaWRRdWVzdGlvbnMpO1xuICAgIHJldHVybiBrZXlzLmxlbmd0aCA+IDAgPyB7XG4gICAgICBpZDoga2V5c1swXSxcbiAgICAgIHBhZ2VJbmRleDogdGhpcy5pbnZhbGlkUXVlc3Rpb25zW2tleXNbMF1dLnBhZ2VJbmRleFxuICAgIH0gOiBudWxsO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKHF1ZXN0aW9uSWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmludmFsaWRRdWVzdGlvbnNbcXVlc3Rpb25JZF0/Lm1lc3NhZ2UgfHwgbnVsbDtcbiAgfVxuXG4gIGNsZWFyQWxsKCkge1xuICAgIHRoaXMuaW52YWxpZFF1ZXN0aW9ucyA9IHt9O1xuICB9XG59XG4iXX0=
@@ -1,423 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs/internal/Subject';
3
- import * as i0 from "@angular/core";
4
- export class WhenClauseService {
5
- constructor() {
6
- this.activeWhenClauseGrids = [];
7
- this.questionAnswerMap = {};
8
- this.questionChange$ = new Subject();
9
- this.isInitialLoad = true;
10
- }
11
- markLoadCompleted() {
12
- this.isInitialLoad = false;
13
- }
14
- onQuestionChange() {
15
- return this.questionChange$.asObservable();
16
- }
17
- /**
18
- * Check if a grid has an active when clause
19
- */
20
- isActiveWhenClause(grid) {
21
- const when = grid?.whenClause;
22
- return !!(when &&
23
- when.activate &&
24
- Array.isArray(when.whenClauseCondition) &&
25
- when.whenClauseCondition.length > 0);
26
- }
27
- /**
28
- * Add a grid to tracking list if it has an active when clause
29
- */
30
- addGrid(grid) {
31
- if (!grid)
32
- return;
33
- if (this.isActiveWhenClause(grid)) {
34
- const exists = this.activeWhenClauseGrids.some((g) => g.element?.id === grid.element?.id);
35
- if (!exists) {
36
- this.activeWhenClauseGrids.push(grid);
37
- }
38
- }
39
- }
40
- setQuestionAnswer(questionId, answer, initial = false) {
41
- if (!questionId)
42
- return;
43
- this.questionAnswerMap[questionId] = answer;
44
- this.evaluateAllWhenClauses(initial);
45
- this.questionChange$.next({ questionId });
46
- }
47
- getAnswer(questionId) {
48
- return this.questionAnswerMap[questionId];
49
- }
50
- evaluateAllWhenClauses(initial) {
51
- const visibleGrids = [];
52
- for (const grid of this.activeWhenClauseGrids) {
53
- const when = grid.whenClause;
54
- const conditions = when.whenClauseCondition;
55
- if (!conditions || !conditions.length)
56
- continue;
57
- let overallResult = true;
58
- for (let i = 0; i < conditions.length; i++) {
59
- const clause = conditions[i];
60
- const logic = (clause.logic || (i === 0 ? 'AND' : 'AND')).toUpperCase(); // Default to AND for first
61
- const answer = this.getAnswer(clause.questionid);
62
- const result = this.evaluateCondition(answer, clause.condition, clause.value);
63
- // Combine results based on logic (AND / OR)
64
- if (i === 0) {
65
- overallResult = result; // initialize with first condition
66
- }
67
- else {
68
- if (logic === 'AND') {
69
- overallResult = overallResult && result;
70
- }
71
- else if (logic === 'OR') {
72
- overallResult = overallResult || result;
73
- }
74
- }
75
- }
76
- // safe read actions (could be undefined)
77
- const actions = Array.isArray(when?.whenClauseActions)
78
- ? when.whenClauseActions.map(String)
79
- : [];
80
- // choose the decisive action (use last if multiple)
81
- const action = actions.length > 0 ? actions[actions.length - 1] : undefined;
82
- if (overallResult) {
83
- // Condition(s) satisfied -> perform the action
84
- switch (action) {
85
- case 'SHOW':
86
- grid.show = true;
87
- break;
88
- case 'HIDE':
89
- grid.show = false;
90
- break;
91
- case 'MARK_AS_REQUIRED':
92
- if (grid.element)
93
- grid.element.required = true;
94
- break;
95
- case 'MARK_AS_OPTIONAL':
96
- if (grid.element)
97
- grid.element.required = false;
98
- break;
99
- default:
100
- // no show/hide action — keep current behavior (you can choose default here)
101
- // For safety, if no explicit action, we'll leave grid.show unchanged.
102
- break;
103
- }
104
- // if visible, collect
105
- if (grid.show)
106
- visibleGrids.push(grid);
107
- }
108
- else {
109
- // Condition(s) not satisfied -> revert the action's effect
110
- switch (action) {
111
- case 'SHOW':
112
- // condition no longer true => hide (revert)
113
- grid.show = false;
114
- break;
115
- case 'HIDE':
116
- // condition no longer true => show (revert)
117
- grid.show = true;
118
- break;
119
- case 'MARK_AS_REQUIRED':
120
- if (grid.element)
121
- grid.element.required = false;
122
- break;
123
- case 'MARK_AS_OPTIONAL':
124
- if (grid.element)
125
- grid.element.required = true;
126
- break;
127
- default:
128
- // nothing to revert
129
- break;
130
- }
131
- // if we hid it because overallResult false and it's not initial, clear answer
132
- if (!overallResult && !initial && !grid.show) {
133
- grid.element.answer = null;
134
- }
135
- }
136
- if (overallResult)
137
- visibleGrids.push(grid);
138
- }
139
- }
140
- evaluateCondition(answer, operator, value) {
141
- // treat null/undefined/empty-string/empty-array as "no answer"
142
- if (answer === null || answer === undefined)
143
- return false;
144
- // if (typeof answer === 'string' && answer === '') return false;
145
- if (Array.isArray(answer) && answer.length === 0)
146
- return false;
147
- // helpers to normalize values to arrays of lower-case strings (for string ops)
148
- const toStr = (v) => v === null || v === undefined ? '' : String(v).toLowerCase();
149
- const ensureArray = (v) => {
150
- if (Array.isArray(v))
151
- return v.map((x) => toStr(x));
152
- // if comma-separated string => split, else single element array
153
- if (typeof v === 'string' && v.indexOf(',') !== -1) {
154
- return v
155
- .split(',')
156
- .map((x) => x.trim())
157
- .map((x) => toStr(x));
158
- }
159
- return [toStr(v)];
160
- };
161
- const ansArr = ensureArray(answer);
162
- const valArr = ensureArray(value);
163
- // numeric comparisons: only when both sides are scalars (non-array) and numeric
164
- const isNumericScalar = (x) => !Array.isArray(x) && x !== null && x !== undefined && !Number.isNaN(Number(x));
165
- switch (operator) {
166
- case '<':
167
- if (isNumericScalar(answer) && isNumericScalar(value))
168
- return Number(answer) < Number(value);
169
- return false;
170
- case '>':
171
- if (isNumericScalar(answer) && isNumericScalar(value))
172
- return Number(answer) > Number(value);
173
- return false;
174
- case '<=':
175
- if (isNumericScalar(answer) && isNumericScalar(value))
176
- return Number(answer) <= Number(value);
177
- return false;
178
- case '>=':
179
- if (isNumericScalar(answer) && isNumericScalar(value))
180
- return Number(answer) >= Number(value);
181
- return false;
182
- // equality: true if any answer element equals any value element
183
- case '=':
184
- return ansArr.some((a) => valArr.some((v) => a === v));
185
- case '!=':
186
- return !ansArr.some((a) => valArr.some((v) => a === v));
187
- // LIKE / NOT LIKE: check substring match anywhere in any answer element
188
- case 'LIKE':
189
- return ansArr.some((a) => valArr.some((v) => a.includes(v)));
190
- case 'NOT LIKE':
191
- return !ansArr.some((a) => valArr.some((v) => a.includes(v)));
192
- case 'BEGIN WITH':
193
- return ansArr.some((a) => valArr.some((v) => a.startsWith(v)));
194
- case 'END WITH':
195
- return ansArr.some((a) => valArr.some((v) => a.endsWith(v)));
196
- // IN / NOT IN: true if any answer element exists in value list
197
- case 'IN':
198
- return ansArr.some((a) => valArr.includes(a));
199
- case 'NOT IN':
200
- return !ansArr.some((a) => valArr.includes(a));
201
- default:
202
- return false;
203
- }
204
- }
205
- addGridsFromSubform(subform) {
206
- if (!subform || !Array.isArray(subform.rows))
207
- return;
208
- for (const row of subform.rows) {
209
- if (!row.grid || !Array.isArray(row.grid))
210
- continue;
211
- for (const grid of row.grid) {
212
- // 1️⃣ Add this grid itself if it has an active whenClause
213
- this.addGrid(grid);
214
- // 2️⃣ Then, recursively process nested childLogics inside its element
215
- if (grid.element?.childLogics?.length) {
216
- this.processChildLogics(grid.element.childLogics);
217
- }
218
- }
219
- }
220
- }
221
- /**
222
- * Recursively process childLogics structure
223
- */
224
- processChildLogics(childLogics) {
225
- if (!Array.isArray(childLogics))
226
- return;
227
- for (const logic of childLogics) {
228
- // 1️⃣ Each logic may have its own rows (similar to subform rows)
229
- if (Array.isArray(logic.rows)) {
230
- for (const row of logic.rows) {
231
- if (Array.isArray(row.grid)) {
232
- for (const grid of row.grid) {
233
- // Check whenClause for this nested grid
234
- this.addGrid(grid);
235
- // 2️⃣ Recurse again if this nested question also has its own childLogics
236
- if (grid.element?.childLogics?.length) {
237
- this.processChildLogics(grid.element.childLogics);
238
- }
239
- }
240
- }
241
- }
242
- }
243
- // 3️⃣ A logic itself might directly contain nested logics
244
- if (Array.isArray(logic.childLogics)) {
245
- this.processChildLogics(logic.childLogics);
246
- }
247
- }
248
- }
249
- /**
250
- * Return ALL elements with an active whenClause inside a subform,
251
- * including nested childLogics (recursive)
252
- */
253
- getWhenClauseElements(subform) {
254
- const result = [];
255
- if (!subform || !Array.isArray(subform.rows)) {
256
- return result;
257
- }
258
- for (const row of subform.rows) {
259
- if (!Array.isArray(row.grid))
260
- continue;
261
- for (const grid of row.grid) {
262
- // 1️⃣ Add this grid if it has an active whenClause
263
- if (this.isActiveWhenClause(grid)) {
264
- result.push(grid);
265
- }
266
- // 2️⃣ Process nested childLogics inside this element
267
- if (Array.isArray(grid.element?.childLogics)) {
268
- result.push(...this.getElementsFromChildLogics(grid.element.childLogics));
269
- }
270
- }
271
- }
272
- return result;
273
- }
274
- /**
275
- * Recursively gather grids with active whenClause inside childLogics
276
- */
277
- getElementsFromChildLogics(childLogics) {
278
- const found = [];
279
- if (!Array.isArray(childLogics))
280
- return found;
281
- for (const logic of childLogics) {
282
- // Each logic can have rows
283
- if (Array.isArray(logic.rows)) {
284
- for (const row of logic.rows) {
285
- if (!Array.isArray(row.grid))
286
- continue;
287
- for (const grid of row.grid) {
288
- if (this.isActiveWhenClause(grid)) {
289
- found.push(grid);
290
- }
291
- // Recurse deeper if this grid has nested childLogics
292
- if (Array.isArray(grid.element?.childLogics)) {
293
- found.push(...this.getElementsFromChildLogics(grid.element.childLogics));
294
- }
295
- }
296
- }
297
- }
298
- // Logic itself may have nested childLogics
299
- if (Array.isArray(logic.childLogics)) {
300
- found.push(...this.getElementsFromChildLogics(logic.childLogics));
301
- }
302
- }
303
- return found;
304
- }
305
- checkElementVisibility(id, submission) {
306
- if (!id || !submission || !Array.isArray(submission.answers)) {
307
- return true; // default visible if invalid input
308
- }
309
- const matchedAnswer = submission.answers.find((ans) => ans.questionId === id);
310
- // Return the 'show' flag if found, else default to true
311
- return matchedAnswer ? matchedAnswer.show ?? true : true;
312
- }
313
- evaluateSubformWhenClauses(changedAnswer, submission, changedQuestionId, elementsWithWhenClause) {
314
- if (!elementsWithWhenClause.length)
315
- return;
316
- for (const grid of elementsWithWhenClause) {
317
- const elementId = grid.element.id;
318
- const when = grid.whenClause;
319
- const conditions = when.whenClauseCondition;
320
- if (!conditions?.length)
321
- continue;
322
- let overallResult = true;
323
- for (let i = 0; i < conditions.length; i++) {
324
- const clause = conditions[i];
325
- const logic = (clause.logic || (i === 0 ? 'AND' : 'AND')).toUpperCase();
326
- // Determine which answer to use for this condition
327
- let answerToCheck;
328
- if (clause.questionid === changedQuestionId) {
329
- // Use updated answer for the changed question
330
- answerToCheck = changedAnswer;
331
- }
332
- else {
333
- // Fetch existing value from submission for other questions
334
- const existing = submission.answers.find((a) => a.questionId === clause.questionid);
335
- answerToCheck = existing?.answer;
336
- }
337
- const result = this.evaluateCondition(answerToCheck, clause.condition, clause.value);
338
- // Apply AND/OR logic
339
- if (i === 0) {
340
- overallResult = result;
341
- }
342
- else {
343
- overallResult =
344
- logic === 'AND' ? overallResult && result : overallResult || result;
345
- }
346
- }
347
- // Update show flag for the element controlled by this whenClause
348
- const matchedAnswer = submission.answers.find((ans) => ans.questionId === elementId);
349
- const actions = Array.isArray(when?.whenClauseActions)
350
- ? when.whenClauseActions.map(String)
351
- : [];
352
- // choose the decisive action (use last if multiple)
353
- const action = actions.length > 0 ? actions[actions.length - 1] : undefined;
354
- if (matchedAnswer) {
355
- if (overallResult) {
356
- // Condition(s) satisfied -> perform the action
357
- switch (action) {
358
- case 'SHOW':
359
- matchedAnswer.show = true;
360
- break;
361
- case 'HIDE':
362
- matchedAnswer.show = false;
363
- break;
364
- case 'MARK_AS_REQUIRED':
365
- matchedAnswer.required = true;
366
- break;
367
- case 'MARK_AS_OPTIONAL':
368
- matchedAnswer.required = false;
369
- break;
370
- default:
371
- // no show/hide action — keep current behavior (you can choose default here)
372
- // For safety, if no explicit action, we'll leave grid.show unchanged.
373
- break;
374
- }
375
- }
376
- else {
377
- // Condition(s) not satisfied -> revert the action's effect
378
- switch (action) {
379
- case 'SHOW':
380
- // condition no longer true => hide (revert)
381
- matchedAnswer.show = false;
382
- break;
383
- case 'HIDE':
384
- // condition no longer true => show (revert)
385
- matchedAnswer.show = true;
386
- break;
387
- case 'MARK_AS_REQUIRED':
388
- matchedAnswer.required = false;
389
- break;
390
- case 'MARK_AS_OPTIONAL':
391
- matchedAnswer.required = true;
392
- break;
393
- default:
394
- // nothing to revert
395
- break;
396
- }
397
- }
398
- }
399
- // if (matchedAnswer) {
400
- // matchedAnswer.show = overallResult;
401
- // }
402
- }
403
- }
404
- resetService() {
405
- // Clear tracked grids
406
- this.activeWhenClauseGrids = [];
407
- // Clear stored question → answer map
408
- this.questionAnswerMap = {};
409
- // Reset visibility logic to initial state
410
- }
411
- getActiveWhenClauseGrids() {
412
- return this.activeWhenClauseGrids;
413
- }
414
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WhenClauseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
415
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WhenClauseService, providedIn: 'root' }); }
416
- }
417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WhenClauseService, decorators: [{
418
- type: Injectable,
419
- args: [{
420
- providedIn: 'root',
421
- }]
422
- }], ctorParameters: function () { return []; } });
423
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlbkNsYXVzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy93aGVuQ2xhdXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS2hELE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFQUSwwQkFBcUIsR0FBVSxFQUFFLENBQUM7UUFDbEMsc0JBQWlCLEdBQWtDLEVBQUUsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO1FBSTlELGtCQUFhLEdBQVksSUFBSSxDQUFDO0lBQ2YsQ0FBQztJQUVoQixpQkFBaUI7UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBR0M7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxJQUFTO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxVQUFVLENBQUM7UUFDOUIsT0FBTyxDQUFDLENBQUMsQ0FDUCxJQUFJO1lBQ0osSUFBSSxDQUFDLFFBQVE7WUFDYixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFTO1FBQ2YsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sTUFB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LENBQUM7SUFFRCxZQUFZO1FBQ1Ysc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFaEMscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFNUIsMENBQTBDO0lBQzVDLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQzsrR0E3ZVUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1Ym1pc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvc3VibWlzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJqZWN0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdoZW5DbGF1c2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhY3RpdmVXaGVuQ2xhdXNlR3JpZHM6IGFueVtdID0gW107XG4gIHByaXZhdGUgcXVlc3Rpb25BbnN3ZXJNYXA6IHsgW3F1ZXN0aW9uSWQ6IHN0cmluZ106IGFueSB9ID0ge307XG5wcml2YXRlIHF1ZXN0aW9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHsgcXVlc3Rpb25JZDogc3RyaW5nIH0+KCk7XG5cblxuXG4gIGlzSW5pdGlhbExvYWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbWFya0xvYWRDb21wbGV0ZWQoKSB7XG4gICAgdGhpcy5pc0luaXRpYWxMb2FkID0gZmFsc2U7XG4gIH1cblxuICBvblF1ZXN0aW9uQ2hhbmdlKCkge1xuICByZXR1cm4gdGhpcy5xdWVzdGlvbkNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG59XG5cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBncmlkIGhhcyBhbiBhY3RpdmUgd2hlbiBjbGF1c2VcbiAgICovXG4gIGlzQWN0aXZlV2hlbkNsYXVzZShncmlkOiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB3aGVuID0gZ3JpZD8ud2hlbkNsYXVzZTtcbiAgICByZXR1cm4gISEoXG4gICAgICB3aGVuICYmXG4gICAgICB3aGVuLmFjdGl2YXRlICYmXG4gICAgICBBcnJheS5pc0FycmF5KHdoZW4ud2hlbkNsYXVzZUNvbmRpdGlvbikgJiZcbiAgICAgIHdoZW4ud2hlbkNsYXVzZUNvbmRpdGlvbi5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBncmlkIHRvIHRyYWNraW5nIGxpc3QgaWYgaXQgaGFzIGFuIGFjdGl2ZSB3aGVuIGNsYXVzZVxuICAgKi9cbiAgYWRkR3JpZChncmlkOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWdyaWQpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmlzQWN0aXZlV2hlbkNsYXVzZShncmlkKSkge1xuICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5hY3RpdmVXaGVuQ2xhdXNlR3JpZHMuc29tZShcbiAgICAgICAgKGcpID0+IGcuZWxlbWVudD8uaWQgPT09IGdyaWQuZWxlbWVudD8uaWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlV2hlbkNsYXVzZUdyaWRzLnB1c2goZ3JpZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0UXVlc3Rpb25BbnN3ZXIocXVlc3Rpb25JZDogc3RyaW5nLCBhbnN3ZXI6IGFueSxpbml0aWFsOmJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghcXVlc3Rpb25JZCkgcmV0dXJuO1xuICAgIHRoaXMucXVlc3Rpb25BbnN3ZXJNYXBbcXVlc3Rpb25JZF0gPSBhbnN3ZXI7XG4gICAgdGhpcy5ldmFsdWF0ZUFsbFdoZW5DbGF1c2VzKGluaXRpYWwpO1xuICAgICAgdGhpcy5xdWVzdGlvbkNoYW5nZSQubmV4dCh7IHF1ZXN0aW9uSWQgfSk7XG4gIH1cblxuICBnZXRBbnN3ZXIocXVlc3Rpb25JZDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5xdWVzdGlvbkFuc3dlck1hcFtxdWVzdGlvbklkXTtcbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVBbGxXaGVuQ2xhdXNlcyhpbml0aWFsOmJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlR3JpZHM6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGdyaWQgb2YgdGhpcy5hY3RpdmVXaGVuQ2xhdXNlR3JpZHMpIHtcbiAgICAgIGNvbnN0IHdoZW4gPSBncmlkLndoZW5DbGF1c2U7XG4gICAgICBjb25zdCBjb25kaXRpb25zID0gd2hlbi53aGVuQ2xhdXNlQ29uZGl0aW9uO1xuXG4gICAgICBpZiAoIWNvbmRpdGlvbnMgfHwgIWNvbmRpdGlvbnMubGVuZ3RoKSBjb250aW51ZTtcblxuICAgICAgbGV0IG92ZXJhbGxSZXN1bHQgPSB0cnVlO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmRpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2xhdXNlID0gY29uZGl0aW9uc1tpXTtcbiAgICAgICAgY29uc3QgbG9naWMgPSAoY2xhdXNlLmxvZ2ljIHx8IChpID09PSAwID8gJ0FORCcgOiAnQU5EJykpLnRvVXBwZXJDYXNlKCk7IC8vIERlZmF1bHQgdG8gQU5EIGZvciBmaXJzdFxuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLmdldEFuc3dlcihjbGF1c2UucXVlc3Rpb25pZCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZXZhbHVhdGVDb25kaXRpb24oXG4gICAgICAgICAgYW5zd2VyLFxuICAgICAgICAgIGNsYXVzZS5jb25kaXRpb24sXG4gICAgICAgICAgY2xhdXNlLnZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQ29tYmluZSByZXN1bHRzIGJhc2VkIG9uIGxvZ2ljIChBTkQgLyBPUilcbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICBvdmVyYWxsUmVzdWx0ID0gcmVzdWx0OyAvLyBpbml0aWFsaXplIHdpdGggZmlyc3QgY29uZGl0aW9uXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGxvZ2ljID09PSAnQU5EJykge1xuICAgICAgICAgICAgb3ZlcmFsbFJlc3VsdCA9IG92ZXJhbGxSZXN1bHQgJiYgcmVzdWx0O1xuICAgICAgICAgIH0gZWxzZSBpZiAobG9naWMgPT09ICdPUicpIHtcbiAgICAgICAgICAgIG92ZXJhbGxSZXN1bHQgPSBvdmVyYWxsUmVzdWx0IHx8IHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHNhZmUgcmVhZCBhY3Rpb25zIChjb3VsZCBiZSB1bmRlZmluZWQpXG4gICAgY29uc3QgYWN0aW9uczogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KHdoZW4/LndoZW5DbGF1c2VBY3Rpb25zKVxuICAgID8gd2hlbi53aGVuQ2xhdXNlQWN0aW9ucy5tYXAoU3RyaW5nKVxuICAgIDogW107XG5cbiAgLy8gY2hvb3NlIHRoZSBkZWNpc2l2ZSBhY3Rpb24gKHVzZSBsYXN0IGlmIG11bHRpcGxlKVxuICBjb25zdCBhY3Rpb24gPSBhY3Rpb25zLmxlbmd0aCA+IDAgPyBhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cbiAgaWYgKG92ZXJhbGxSZXN1bHQpIHtcbiAgICAvLyBDb25kaXRpb24ocykgc2F0aXNmaWVkIC0+IHBlcmZvcm0gdGhlIGFjdGlvblxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdTSE9XJzpcbiAgICAgICAgZ3JpZC5zaG93ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdISURFJzpcbiAgICAgICAgZ3JpZC5zaG93ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTUFSS19BU19SRVFVSVJFRCc6XG4gICAgICAgIGlmIChncmlkLmVsZW1lbnQpIGdyaWQuZWxlbWVudC5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTUFSS19BU19PUFRJT05BTCc6XG4gICAgICAgIGlmIChncmlkLmVsZW1lbnQpIGdyaWQuZWxlbWVudC5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIG5vIHNob3cvaGlkZSBhY3Rpb24g4oCUIGtlZXAgY3VycmVudCBiZWhhdmlvciAoeW91IGNhbiBjaG9vc2UgZGVmYXVsdCBoZXJlKVxuICAgICAgICAvLyBGb3Igc2FmZXR5LCBpZiBubyBleHBsaWNpdCBhY3Rpb24sIHdlJ2xsIGxlYXZlIGdyaWQuc2hvdyB1bmNoYW5nZWQuXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIHZpc2libGUsIGNvbGxlY3RcbiAgICBpZiAoZ3JpZC5zaG93KSB2aXNpYmxlR3JpZHMucHVzaChncmlkKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDb25kaXRpb24ocykgbm90IHNhdGlzZmllZCAtPiByZXZlcnQgdGhlIGFjdGlvbidzIGVmZmVjdFxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdTSE9XJzpcbiAgICAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciB0cnVlID0+IGhpZGUgKHJldmVydClcbiAgICAgICAgZ3JpZC5zaG93ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSElERSc6XG4gICAgICAgIC8vIGNvbmRpdGlvbiBubyBsb25nZXIgdHJ1ZSA9PiBzaG93IChyZXZlcnQpXG4gICAgICAgIGdyaWQuc2hvdyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTUFSS19BU19SRVFVSVJFRCc6XG4gICAgICAgIGlmIChncmlkLmVsZW1lbnQpIGdyaWQuZWxlbWVudC5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ01BUktfQVNfT1BUSU9OQUwnOlxuICAgICAgICBpZiAoZ3JpZC5lbGVtZW50KSBncmlkLmVsZW1lbnQucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIG5vdGhpbmcgdG8gcmV2ZXJ0XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBpZiB3ZSBoaWQgaXQgYmVjYXVzZSBvdmVyYWxsUmVzdWx0IGZhbHNlIGFuZCBpdCdzIG5vdCBpbml0aWFsLCBjbGVhciBhbnN3ZXJcbiAgICBpZiAoIW92ZXJhbGxSZXN1bHQgJiYgIWluaXRpYWwgJiYgIWdyaWQuc2hvdykge1xuICAgICAgZ3JpZC5lbGVtZW50LmFuc3dlciA9IG51bGw7XG4gICAgfVxuICB9XG4gICAgICBpZiAob3ZlcmFsbFJlc3VsdCkgdmlzaWJsZUdyaWRzLnB1c2goZ3JpZCk7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGVDb25kaXRpb24oYW5zd2VyOiBhbnksIG9wZXJhdG9yOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblxuICAgIC8vIHRyZWF0IG51bGwvdW5kZWZpbmVkL2VtcHR5LXN0cmluZy9lbXB0eS1hcnJheSBhcyBcIm5vIGFuc3dlclwiXG4gICAgaWYgKGFuc3dlciA9PT0gbnVsbCB8fCBhbnN3ZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGlmICh0eXBlb2YgYW5zd2VyID09PSAnc3RyaW5nJyAmJiBhbnN3ZXIgPT09ICcnKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSAmJiBhbnN3ZXIubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBoZWxwZXJzIHRvIG5vcm1hbGl6ZSB2YWx1ZXMgdG8gYXJyYXlzIG9mIGxvd2VyLWNhc2Ugc3RyaW5ncyAoZm9yIHN0cmluZyBvcHMpXG4gICAgY29uc3QgdG9TdHIgPSAodjogYW55KSA9PlxuICAgICAgdiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgPyAnJyA6IFN0cmluZyh2KS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgY29uc3QgZW5zdXJlQXJyYXkgPSAodjogYW55KTogc3RyaW5nW10gPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHJldHVybiB2Lm1hcCgoeCkgPT4gdG9TdHIoeCkpO1xuICAgICAgLy8gaWYgY29tbWEtc2VwYXJhdGVkIHN0cmluZyA9PiBzcGxpdCwgZWxzZSBzaW5nbGUgZWxlbWVudCBhcnJheVxuICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2LmluZGV4T2YoJywnKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgIC5tYXAoKHgpID0+IHgudHJpbSgpKVxuICAgICAgICAgIC5tYXAoKHgpID0+IHRvU3RyKHgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbdG9TdHIodildO1xuICAgIH07XG5cbiAgICBjb25zdCBhbnNBcnIgPSBlbnN1cmVBcnJheShhbnN3ZXIpO1xuICAgIGNvbnN0IHZhbEFyciA9IGVuc3VyZUFycmF5KHZhbHVlKTtcblxuICAgIC8vIG51bWVyaWMgY29tcGFyaXNvbnM6IG9ubHkgd2hlbiBib3RoIHNpZGVzIGFyZSBzY2FsYXJzIChub24tYXJyYXkpIGFuZCBudW1lcmljXG4gICAgY29uc3QgaXNOdW1lcmljU2NhbGFyID0gKHg6IGFueSkgPT5cbiAgICAgICFBcnJheS5pc0FycmF5KHgpICYmIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHgpKTtcblxuICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgJzwnOlxuICAgICAgICBpZiAoaXNOdW1lcmljU2NhbGFyKGFuc3dlcikgJiYgaXNOdW1lcmljU2NhbGFyKHZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGFuc3dlcikgPCBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICc+JzpcbiAgICAgICAgaWYgKGlzTnVtZXJpY1NjYWxhcihhbnN3ZXIpICYmIGlzTnVtZXJpY1NjYWxhcih2YWx1ZSkpXG4gICAgICAgICAgcmV0dXJuIE51bWJlcihhbnN3ZXIpID4gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnPD0nOlxuICAgICAgICBpZiAoaXNOdW1lcmljU2NhbGFyKGFuc3dlcikgJiYgaXNOdW1lcmljU2NhbGFyKHZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGFuc3dlcikgPD0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnPj0nOlxuICAgICAgICBpZiAoaXNOdW1lcmljU2NhbGFyKGFuc3dlcikgJiYgaXNOdW1lcmljU2NhbGFyKHZhbHVlKSlcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGFuc3dlcikgPj0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBlcXVhbGl0eTogdHJ1ZSBpZiBhbnkgYW5zd2VyIGVsZW1lbnQgZXF1YWxzIGFueSB2YWx1ZSBlbGVtZW50XG4gICAgICBjYXNlICc9JzpcbiAgICAgICAgcmV0dXJuIGFuc0Fyci5zb21lKChhKSA9PiB2YWxBcnIuc29tZSgodikgPT4gYSA9PT0gdikpO1xuXG4gICAgICBjYXNlICchPSc6XG4gICAgICAgIHJldHVybiAhYW5zQXJyLnNvbWUoKGEpID0+IHZhbEFyci5zb21lKCh2KSA9PiBhID09PSB2KSk7XG5cbiAgICAgIC8vIExJS0UgLyBOT1QgTElLRTogY2hlY2sgc3Vic3RyaW5nIG1hdGNoIGFueXdoZXJlIGluIGFueSBhbnN3ZXIgZWxlbWVudFxuICAgICAgY2FzZSAnTElLRSc6XG4gICAgICAgIHJldHVybiBhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLnNvbWUoKHYpID0+IGEuaW5jbHVkZXModikpKTtcbiAgICAgIGNhc2UgJ05PVCBMSUtFJzpcbiAgICAgICAgcmV0dXJuICFhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLnNvbWUoKHYpID0+IGEuaW5jbHVkZXModikpKTtcblxuICAgICAgY2FzZSAnQkVHSU4gV0lUSCc6XG4gICAgICAgIHJldHVybiBhbnNBcnIuc29tZSgoYSkgPT4gdmFsQXJyLnNvbWUoKHYpID0+IGEuc3RhcnRzV2l0aCh2KSkpO1xuICAgICAgY2FzZSAnRU5EIFdJVEgnOlxuICAgICAgICByZXR1cm4gYW5zQXJyLnNvbWUoKGEpID0+IHZhbEFyci5zb21lKCh2KSA9PiBhLmVuZHNXaXRoKHYpKSk7XG5cbiAgICAgIC8vIElOIC8gTk9UIElOOiB0cnVlIGlmIGFueSBhbnN3ZXIgZWxlbWVudCBleGlzdHMgaW4gdmFsdWUgbGlzdFxuICAgICAgY2FzZSAnSU4nOlxuICAgICAgICByZXR1cm4gYW5zQXJyLnNvbWUoKGEpID0+IHZhbEFyci5pbmNsdWRlcyhhKSk7XG4gICAgICBjYXNlICdOT1QgSU4nOlxuICAgICAgICByZXR1cm4gIWFuc0Fyci5zb21lKChhKSA9PiB2YWxBcnIuaW5jbHVkZXMoYSkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYWRkR3JpZHNGcm9tU3ViZm9ybShzdWJmb3JtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXN1YmZvcm0gfHwgIUFycmF5LmlzQXJyYXkoc3ViZm9ybS5yb3dzKSkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCByb3cgb2Ygc3ViZm9ybS5yb3dzKSB7XG4gICAgICBpZiAoIXJvdy5ncmlkIHx8ICFBcnJheS5pc0FycmF5KHJvdy5ncmlkKSkgY29udGludWU7XG5cbiAgICAgIGZvciAoY29uc3QgZ3JpZCBvZiByb3cuZ3JpZCkge1xuICAgICAgICAvLyAx77iP4oOjIEFkZCB0aGlzIGdyaWQgaXRzZWxmIGlmIGl0IGhhcyBhbiBhY3RpdmUgd2hlbkNsYXVzZVxuICAgICAgICB0aGlzLmFkZEdyaWQoZ3JpZCk7XG5cbiAgICAgICAgLy8gMu+4j+KDoyBUaGVuLCByZWN1cnNpdmVseSBwcm9jZXNzIG5lc3RlZCBjaGlsZExvZ2ljcyBpbnNpZGUgaXRzIGVsZW1lbnRcbiAgICAgICAgaWYgKGdyaWQuZWxlbWVudD8uY2hpbGRMb2dpY3M/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0NoaWxkTG9naWNzKGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgcHJvY2VzcyBjaGlsZExvZ2ljcyBzdHJ1Y3R1cmVcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc0NoaWxkTG9naWNzKGNoaWxkTG9naWNzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZExvZ2ljcykpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgbG9naWMgb2YgY2hpbGRMb2dpY3MpIHtcbiAgICAgIC8vIDHvuI/ig6MgRWFjaCBsb2dpYyBtYXkgaGF2ZSBpdHMgb3duIHJvd3MgKHNpbWlsYXIgdG8gc3ViZm9ybSByb3dzKVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9naWMucm93cykpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbG9naWMucm93cykge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvdy5ncmlkKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBncmlkIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgICAgICAgIC8vIENoZWNrIHdoZW5DbGF1c2UgZm9yIHRoaXMgbmVzdGVkIGdyaWRcbiAgICAgICAgICAgICAgdGhpcy5hZGRHcmlkKGdyaWQpO1xuXG4gICAgICAgICAgICAgIC8vIDLvuI/ig6MgUmVjdXJzZSBhZ2FpbiBpZiB0aGlzIG5lc3RlZCBxdWVzdGlvbiBhbHNvIGhhcyBpdHMgb3duIGNoaWxkTG9naWNzXG4gICAgICAgICAgICAgIGlmIChncmlkLmVsZW1lbnQ/LmNoaWxkTG9naWNzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NDaGlsZExvZ2ljcyhncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIDPvuI/ig6MgQSBsb2dpYyBpdHNlbGYgbWlnaHQgZGlyZWN0bHkgY29udGFpbiBuZXN0ZWQgbG9naWNzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2dpYy5jaGlsZExvZ2ljcykpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ2hpbGRMb2dpY3MobG9naWMuY2hpbGRMb2dpY3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gQUxMIGVsZW1lbnRzIHdpdGggYW4gYWN0aXZlIHdoZW5DbGF1c2UgaW5zaWRlIGEgc3ViZm9ybSxcbiAgICogaW5jbHVkaW5nIG5lc3RlZCBjaGlsZExvZ2ljcyAocmVjdXJzaXZlKVxuICAgKi9cbiAgZ2V0V2hlbkNsYXVzZUVsZW1lbnRzKHN1YmZvcm06IGFueSk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cbiAgICBpZiAoIXN1YmZvcm0gfHwgIUFycmF5LmlzQXJyYXkoc3ViZm9ybS5yb3dzKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJvdyBvZiBzdWJmb3JtLnJvd3MpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb3cuZ3JpZCkpIGNvbnRpbnVlO1xuXG4gICAgICBmb3IgKGNvbnN0IGdyaWQgb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgLy8gMe+4j+KDoyBBZGQgdGhpcyBncmlkIGlmIGl0IGhhcyBhbiBhY3RpdmUgd2hlbkNsYXVzZVxuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZVdoZW5DbGF1c2UoZ3JpZCkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChncmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDLvuI/ig6MgUHJvY2VzcyBuZXN0ZWQgY2hpbGRMb2dpY3MgaW5zaWRlIHRoaXMgZWxlbWVudFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncmlkLmVsZW1lbnQ/LmNoaWxkTG9naWNzKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgLi4udGhpcy5nZXRFbGVtZW50c0Zyb21DaGlsZExvZ2ljcyhncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgZ2F0aGVyIGdyaWRzIHdpdGggYWN0aXZlIHdoZW5DbGF1c2UgaW5zaWRlIGNoaWxkTG9naWNzXG4gICAqL1xuICBwcml2YXRlIGdldEVsZW1lbnRzRnJvbUNoaWxkTG9naWNzKGNoaWxkTG9naWNzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCBmb3VuZDogYW55W10gPSBbXTtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZExvZ2ljcykpIHJldHVybiBmb3VuZDtcblxuICAgIGZvciAoY29uc3QgbG9naWMgb2YgY2hpbGRMb2dpY3MpIHtcbiAgICAgIC8vIEVhY2ggbG9naWMgY2FuIGhhdmUgcm93c1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9naWMucm93cykpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbG9naWMucm93cykge1xuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb3cuZ3JpZCkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBncmlkIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZVdoZW5DbGF1c2UoZ3JpZCkpIHtcbiAgICAgICAgICAgICAgZm91bmQucHVzaChncmlkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVjdXJzZSBkZWVwZXIgaWYgdGhpcyBncmlkIGhhcyBuZXN0ZWQgY2hpbGRMb2dpY3NcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyaWQuZWxlbWVudD8uY2hpbGRMb2dpY3MpKSB7XG4gICAgICAgICAgICAgIGZvdW5kLnB1c2goXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRFbGVtZW50c0Zyb21DaGlsZExvZ2ljcyhncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIExvZ2ljIGl0c2VsZiBtYXkgaGF2ZSBuZXN0ZWQgY2hpbGRMb2dpY3NcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvZ2ljLmNoaWxkTG9naWNzKSkge1xuICAgICAgICBmb3VuZC5wdXNoKC4uLnRoaXMuZ2V0RWxlbWVudHNGcm9tQ2hpbGRMb2dpY3MobG9naWMuY2hpbGRMb2dpY3MpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICBjaGVja0VsZW1lbnRWaXNpYmlsaXR5KGlkOiBzdHJpbmcsIHN1Ym1pc3Npb246IFN1Ym1pc3Npb24pOiBib29sZWFuIHtcbiAgICBpZiAoIWlkIHx8ICFzdWJtaXNzaW9uIHx8ICFBcnJheS5pc0FycmF5KHN1Ym1pc3Npb24uYW5zd2VycykpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBkZWZhdWx0IHZpc2libGUgaWYgaW52YWxpZCBpbnB1dFxuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoZWRBbnN3ZXIgPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgIChhbnMpID0+IGFucy5xdWVzdGlvbklkID09PSBpZFxuICAgICk7XG5cbiAgICAvLyBSZXR1cm4gdGhlICdzaG93JyBmbGFnIGlmIGZvdW5kLCBlbHNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgIHJldHVybiBtYXRjaGVkQW5zd2VyID8gbWF0Y2hlZEFuc3dlci5zaG93ID8/IHRydWUgOiB0cnVlO1xuICB9XG5cbiAgZXZhbHVhdGVTdWJmb3JtV2hlbkNsYXVzZXMoXG4gICAgY2hhbmdlZEFuc3dlcjogYW55LFxuICAgIHN1Ym1pc3Npb246IFN1Ym1pc3Npb24sXG4gICAgY2hhbmdlZFF1ZXN0aW9uSWQ6IHN0cmluZyxcbiAgICBlbGVtZW50c1dpdGhXaGVuQ2xhdXNlOiBhbnlcbiAgKSB7XG4gICAgaWYgKCFlbGVtZW50c1dpdGhXaGVuQ2xhdXNlLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBncmlkIG9mIGVsZW1lbnRzV2l0aFdoZW5DbGF1c2UpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGdyaWQuZWxlbWVudC5pZDtcbiAgICAgIGNvbnN0IHdoZW4gPSBncmlkLndoZW5DbGF1c2U7XG4gICAgICBjb25zdCBjb25kaXRpb25zID0gd2hlbi53aGVuQ2xhdXNlQ29uZGl0aW9uO1xuXG4gICAgICBpZiAoIWNvbmRpdGlvbnM/Lmxlbmd0aCkgY29udGludWU7XG5cbiAgICAgIGxldCBvdmVyYWxsUmVzdWx0ID0gdHJ1ZTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25kaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNsYXVzZSA9IGNvbmRpdGlvbnNbaV07XG5cbiAgICAgICAgY29uc3QgbG9naWMgPSAoY2xhdXNlLmxvZ2ljIHx8IChpID09PSAwID8gJ0FORCcgOiAnQU5EJykpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGFuc3dlciB0byB1c2UgZm9yIHRoaXMgY29uZGl0aW9uXG4gICAgICAgIGxldCBhbnN3ZXJUb0NoZWNrOiBhbnk7XG5cbiAgICAgICAgaWYgKGNsYXVzZS5xdWVzdGlvbmlkID09PSBjaGFuZ2VkUXVlc3Rpb25JZCkge1xuICAgICAgICAgIC8vIFVzZSB1cGRhdGVkIGFuc3dlciBmb3IgdGhlIGNoYW5nZWQgcXVlc3Rpb25cbiAgICAgICAgICBhbnN3ZXJUb0NoZWNrID0gY2hhbmdlZEFuc3dlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGZXRjaCBleGlzdGluZyB2YWx1ZSBmcm9tIHN1Ym1pc3Npb24gZm9yIG90aGVyIHF1ZXN0aW9uc1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gc3VibWlzc2lvbi5hbnN3ZXJzLmZpbmQoXG4gICAgICAgICAgICAoYSkgPT4gYS5xdWVzdGlvbklkID09PSBjbGF1c2UucXVlc3Rpb25pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgYW5zd2VyVG9DaGVjayA9IGV4aXN0aW5nPy5hbnN3ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKFxuICAgICAgICAgIGFuc3dlclRvQ2hlY2ssXG4gICAgICAgICAgY2xhdXNlLmNvbmRpdGlvbixcbiAgICAgICAgICBjbGF1c2UudmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBBcHBseSBBTkQvT1IgbG9naWNcbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICBvdmVyYWxsUmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG92ZXJhbGxSZXN1bHQgPVxuICAgICAgICAgICAgbG9naWMgPT09ICdBTkQnID8gb3ZlcmFsbFJlc3VsdCAmJiByZXN1bHQgOiBvdmVyYWxsUmVzdWx0IHx8IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgc2hvdyBmbGFnIGZvciB0aGUgZWxlbWVudCBjb250cm9sbGVkIGJ5IHRoaXMgd2hlbkNsYXVzZVxuICAgICAgY29uc3QgbWF0Y2hlZEFuc3dlciA9IHN1Ym1pc3Npb24uYW5zd2Vycy5maW5kKFxuICAgICAgICAoYW5zKSA9PiBhbnMucXVlc3Rpb25JZCA9PT0gZWxlbWVudElkXG4gICAgICApO1xuXG4gICAgICBjb25zdCBhY3Rpb25zOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkod2hlbj8ud2hlbkNsYXVzZUFjdGlvbnMpXG4gICAgPyB3aGVuLndoZW5DbGF1c2VBY3Rpb25zLm1hcChTdHJpbmcpXG4gICAgOiBbXTtcblxuICAgICAgLy8gY2hvb3NlIHRoZSBkZWNpc2l2ZSBhY3Rpb24gKHVzZSBsYXN0IGlmIG11bHRpcGxlKVxuICAgICAgY29uc3QgYWN0aW9uID0gYWN0aW9ucy5sZW5ndGggPiAwID8gYWN0aW9uc1thY3Rpb25zLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuXG5cbiAgICAgIGlmIChtYXRjaGVkQW5zd2VyKSB7XG4gICAgICAgIGlmIChvdmVyYWxsUmVzdWx0KSB7XG4gICAgICAgICAgLy8gQ29uZGl0aW9uKHMpIHNhdGlzZmllZCAtPiBwZXJmb3JtIHRoZSBhY3Rpb25cbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnU0hPVyc6XG4gICAgICAgICAgICAgIG1hdGNoZWRBbnN3ZXIuc2hvdyA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSElERSc6XG4gICAgICAgICAgICAgIG1hdGNoZWRBbnN3ZXIuc2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ01BUktfQVNfUkVRVUlSRUQnOlxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNQVJLX0FTX09QVElPTkFMJzpcbiAgICAgICAgICAgICAgbWF0Y2hlZEFuc3dlci5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIC8vIG5vIHNob3cvaGlkZSBhY3Rpb24g4oCUIGtlZXAgY3VycmVudCBiZWhhdmlvciAoeW91IGNhbiBjaG9vc2UgZGVmYXVsdCBoZXJlKVxuICAgICAgICAgICAgICAvLyBGb3Igc2FmZXR5LCBpZiBubyBleHBsaWNpdCBhY3Rpb24sIHdlJ2xsIGxlYXZlIGdyaWQuc2hvdyB1bmNoYW5nZWQuXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIENvbmRpdGlvbihzKSBub3Qgc2F0aXNmaWVkIC0+IHJldmVydCB0aGUgYWN0aW9uJ3MgZWZmZWN0XG4gICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ1NIT1cnOlxuICAgICAgICAgICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIHRydWUgPT4gaGlkZSAocmV2ZXJ0KVxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdISURFJzpcbiAgICAgICAgICAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciB0cnVlID0+IHNob3cgKHJldmVydClcbiAgICAgICAgICAgICAgbWF0Y2hlZEFuc3dlci5zaG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNQVJLX0FTX1JFUVVJUkVEJzpcbiAgICAgICAgICAgICAgbWF0Y2hlZEFuc3dlci5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ01BUktfQVNfT1BUSU9OQUwnOlxuICAgICAgICAgICAgICBtYXRjaGVkQW5zd2VyLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAvLyBub3RoaW5nIHRvIHJldmVydFxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG5cblxuICAgICAgLy8gaWYgKG1hdGNoZWRBbnN3ZXIpIHtcbiAgICAgIC8vICAgbWF0Y2hlZEFuc3dlci5zaG93ID0gb3ZlcmFsbFJlc3VsdDtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH1cblxuICByZXNldFNlcnZpY2UoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgdHJhY2tlZCBncmlkc1xuICAgIHRoaXMuYWN0aXZlV2hlbkNsYXVzZUdyaWRzID0gW107XG5cbiAgICAvLyBDbGVhciBzdG9yZWQgcXVlc3Rpb24g4oaSIGFuc3dlciBtYXBcbiAgICB0aGlzLnF1ZXN0aW9uQW5zd2VyTWFwID0ge307XG5cbiAgICAvLyBSZXNldCB2aXNpYmlsaXR5IGxvZ2ljIHRvIGluaXRpYWwgc3RhdGVcbiAgfVxuXG4gIGdldEFjdGl2ZVdoZW5DbGF1c2VHcmlkcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlV2hlbkNsYXVzZUdyaWRzO1xuICB9XG59XG4iXX0=
@@ -1,97 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { RecursiveLogicComponent } from '../question/recursive-logic/recursive-logic.component';
4
- import { QuestionComponent } from '../question/question/question.component';
5
- import { SubFormComponent } from '../question/sub-form/sub-form.component';
6
- import { FormElementsComponent } from '../question/form-elements/form-elements.component';
7
- import { FormFieldsModule } from '../form-fields/form-fields.module';
8
- import { MatDialogModule } from '@angular/material/dialog';
9
- import { MatTableModule } from '@angular/material/table';
10
- import { MatMenuModule } from '@angular/material/menu';
11
- import { MatIconModule } from '@angular/material/icon';
12
- import { MultipleSubformComponent } from '../question/multiple-subform/multiple-subform.component';
13
- import { SubmissionModalComponent } from '../sub-form/submission-modal/submission-modal.component';
14
- import { QuestionGroupComponent } from '../question/question-group/question-group.component';
15
- import { InlineMultipleSubformComponent } from '../question/inline-multiple-subform/inline-multiple-subform.component';
16
- import { MultifieldsComponent } from '../question/multifields/multifields.component';
17
- import { CardSubformComponent } from '../question/card-subform/card-subform.component';
18
- import { QuillModule } from 'ngx-quill';
19
- import { FormsModule } from '@angular/forms';
20
- import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
21
- import * as i0 from "@angular/core";
22
- export class SharedModule {
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
24
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SharedModule, declarations: [RecursiveLogicComponent,
25
- QuestionComponent,
26
- SubFormComponent,
27
- FormElementsComponent,
28
- MultipleSubformComponent,
29
- SubmissionModalComponent,
30
- QuestionGroupComponent,
31
- InlineMultipleSubformComponent,
32
- MultifieldsComponent,
33
- CardSubformComponent], imports: [CommonModule,
34
- FormFieldsModule,
35
- MatDialogModule,
36
- MatTableModule,
37
- MatMenuModule,
38
- MatIconModule,
39
- QuillModule,
40
- FormsModule,
41
- NgbModule], exports: [RecursiveLogicComponent,
42
- QuestionComponent,
43
- SubFormComponent,
44
- FormElementsComponent,
45
- QuestionGroupComponent,
46
- InlineMultipleSubformComponent,
47
- MultifieldsComponent,
48
- CardSubformComponent] }); }
49
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SharedModule, imports: [CommonModule,
50
- FormFieldsModule,
51
- MatDialogModule,
52
- MatTableModule,
53
- MatMenuModule,
54
- MatIconModule,
55
- QuillModule,
56
- FormsModule,
57
- NgbModule] }); }
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SharedModule, decorators: [{
60
- type: NgModule,
61
- args: [{
62
- declarations: [
63
- RecursiveLogicComponent,
64
- QuestionComponent,
65
- SubFormComponent,
66
- FormElementsComponent,
67
- MultipleSubformComponent,
68
- SubmissionModalComponent,
69
- QuestionGroupComponent,
70
- InlineMultipleSubformComponent,
71
- MultifieldsComponent,
72
- CardSubformComponent
73
- ],
74
- imports: [
75
- CommonModule,
76
- FormFieldsModule,
77
- MatDialogModule,
78
- MatTableModule,
79
- MatMenuModule,
80
- MatIconModule,
81
- QuillModule,
82
- FormsModule,
83
- NgbModule
84
- ],
85
- exports: [
86
- RecursiveLogicComponent,
87
- QuestionComponent,
88
- SubFormComponent,
89
- FormElementsComponent,
90
- QuestionGroupComponent,
91
- InlineMultipleSubformComponent,
92
- MultifieldsComponent,
93
- CardSubformComponent
94
- ]
95
- }]
96
- }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvc2hhcmVkL3NoYXJlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFxQ3ZELE1BQU0sT0FBTyxZQUFZOytHQUFaLFlBQVk7Z0hBQVosWUFBWSxpQkFqQ3JCLHVCQUF1QjtZQUN2QixpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLHFCQUFxQjtZQUNyQix3QkFBd0I7WUFDeEIsd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0Qiw4QkFBOEI7WUFDOUIsb0JBQW9CO1lBQ3BCLG9CQUFvQixhQUdwQixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixjQUFjO1lBQ2QsYUFBYTtZQUNiLGFBQWE7WUFDYixXQUFXO1lBQ1gsV0FBVztZQUNYLFNBQVMsYUFHVCx1QkFBdUI7WUFDdkIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixxQkFBcUI7WUFDckIsc0JBQXNCO1lBQ3RCLDhCQUE4QjtZQUM5QixvQkFBb0I7WUFDcEIsb0JBQW9CO2dIQUdYLFlBQVksWUFyQnJCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsYUFBYTtZQUNiLFdBQVc7WUFDWCxXQUFXO1lBQ1gsU0FBUzs7NEZBYUEsWUFBWTtrQkFuQ3hCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsOEJBQThCO3dCQUM5QixvQkFBb0I7d0JBQ3BCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxTQUFTO3FCQUNWO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLHNCQUFzQjt3QkFDdEIsOEJBQThCO3dCQUM5QixvQkFBb0I7d0JBQ3BCLG9CQUFvQjtxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlY3Vyc2l2ZUxvZ2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vcXVlc3Rpb24vcmVjdXJzaXZlLWxvZ2ljL3JlY3Vyc2l2ZS1sb2dpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9xdWVzdGlvbi9xdWVzdGlvbi9xdWVzdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3ViRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3F1ZXN0aW9uL3N1Yi1mb3JtL3N1Yi1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudHNDb21wb25lbnQgfSBmcm9tICcuLi9xdWVzdGlvbi9mb3JtLWVsZW1lbnRzL2Zvcm0tZWxlbWVudHMuY29tcG9uZW50JztcblxuaW1wb3J0IHsgRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uL2Zvcm0tZmllbGRzL2Zvcm0tZmllbGRzLm1vZHVsZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNdWx0aXBsZVN1YmZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9xdWVzdGlvbi9tdWx0aXBsZS1zdWJmb3JtL211bHRpcGxlLXN1YmZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFN1Ym1pc3Npb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3N1Yi1mb3JtL3N1Ym1pc3Npb24tbW9kYWwvc3VibWlzc2lvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL3F1ZXN0aW9uL3F1ZXN0aW9uLWdyb3VwL3F1ZXN0aW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmxpbmVNdWx0aXBsZVN1YmZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9xdWVzdGlvbi9pbmxpbmUtbXVsdGlwbGUtc3ViZm9ybS9pbmxpbmUtbXVsdGlwbGUtc3ViZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTXVsdGlmaWVsZHNDb21wb25lbnQgfSBmcm9tICcuLi9xdWVzdGlvbi9tdWx0aWZpZWxkcy9tdWx0aWZpZWxkcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FyZFN1YmZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9xdWVzdGlvbi9jYXJkLXN1YmZvcm0vY2FyZC1zdWJmb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRdWlsbE1vZHVsZSB9IGZyb20gJ25neC1xdWlsbCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUmVjdXJzaXZlTG9naWNDb21wb25lbnQsXG4gICAgUXVlc3Rpb25Db21wb25lbnQsXG4gICAgU3ViRm9ybUNvbXBvbmVudCxcbiAgICBGb3JtRWxlbWVudHNDb21wb25lbnQsXG4gICAgTXVsdGlwbGVTdWJmb3JtQ29tcG9uZW50LCBcbiAgICBTdWJtaXNzaW9uTW9kYWxDb21wb25lbnQsIFxuICAgIFF1ZXN0aW9uR3JvdXBDb21wb25lbnQsXG4gICAgSW5saW5lTXVsdGlwbGVTdWJmb3JtQ29tcG9uZW50LFxuICAgIE11bHRpZmllbGRzQ29tcG9uZW50LFxuICAgIENhcmRTdWJmb3JtQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybUZpZWxkc01vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIFF1aWxsTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nYk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgUmVjdXJzaXZlTG9naWNDb21wb25lbnQsXG4gICAgUXVlc3Rpb25Db21wb25lbnQsXG4gICAgU3ViRm9ybUNvbXBvbmVudCxcbiAgICBGb3JtRWxlbWVudHNDb21wb25lbnQsXG4gICAgUXVlc3Rpb25Hcm91cENvbXBvbmVudCxcbiAgICBJbmxpbmVNdWx0aXBsZVN1YmZvcm1Db21wb25lbnQsXG4gICAgTXVsdGlmaWVsZHNDb21wb25lbnQsXG4gICAgQ2FyZFN1YmZvcm1Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRNb2R1bGUgeyB9XG4iXX0=