@messaia/cdk 17.1.0-rc15 → 17.1.0-rc16

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 (312) hide show
  1. package/esm2022/lib/form-validators/abstract/typed-form.mjs +10 -1
  2. package/esm2022/lib/form-validators/algorithm/luhn-algorithm.mjs +25 -7
  3. package/esm2022/lib/form-validators/const/app-validators.const.mjs +2 -2
  4. package/esm2022/lib/form-validators/const/app.const.mjs +49 -1
  5. package/esm2022/lib/form-validators/const/config-names.const.mjs +25 -1
  6. package/esm2022/lib/form-validators/const/config-required-fields.const.mjs +26 -2
  7. package/esm2022/lib/form-validators/const/events.const.mjs +40 -1
  8. package/esm2022/lib/form-validators/const/html-elements.const.mjs +19 -1
  9. package/esm2022/lib/form-validators/const/validator.const.mjs +22 -1
  10. package/esm2022/lib/form-validators/core/{validator.static.mjs → annotation-types.mjs} +1 -1
  11. package/esm2022/lib/form-validators/core/default-container.mjs +493 -0
  12. package/esm2022/lib/form-validators/decorators/allOf.decorator.mjs +2 -2
  13. package/esm2022/lib/form-validators/decorators/alpha.decorator.mjs +3 -3
  14. package/esm2022/lib/form-validators/decorators/alphaNumeric.decorator.mjs +3 -3
  15. package/esm2022/lib/form-validators/decorators/and.decorator.mjs +2 -2
  16. package/esm2022/lib/form-validators/decorators/ascii.decorator.mjs +2 -2
  17. package/esm2022/lib/form-validators/decorators/async.decorator.mjs +2 -2
  18. package/esm2022/lib/form-validators/decorators/base-decorator.function.mjs +2 -2
  19. package/esm2022/lib/form-validators/decorators/choice.decorator.mjs +2 -2
  20. package/esm2022/lib/form-validators/decorators/compare.decorator.mjs +2 -2
  21. package/esm2022/lib/form-validators/decorators/compose.decorator.mjs +2 -2
  22. package/esm2022/lib/form-validators/decorators/contains.decorator.mjs +2 -2
  23. package/esm2022/lib/form-validators/decorators/credit-card.decorator.mjs +2 -2
  24. package/esm2022/lib/form-validators/decorators/cusip.decorator.mjs +2 -2
  25. package/esm2022/lib/form-validators/decorators/custom.decorator.mjs +2 -2
  26. package/esm2022/lib/form-validators/decorators/dataUri.decorator.mjs +2 -2
  27. package/esm2022/lib/form-validators/decorators/date.decorator.mjs +3 -3
  28. package/esm2022/lib/form-validators/decorators/different.decorator.mjs +2 -2
  29. package/esm2022/lib/form-validators/decorators/digit.decorator.mjs +2 -2
  30. package/esm2022/lib/form-validators/decorators/email.decorator.mjs +2 -2
  31. package/esm2022/lib/form-validators/decorators/endsWith.decorator.mjs +2 -2
  32. package/esm2022/lib/form-validators/decorators/even.decorator.mjs +2 -2
  33. package/esm2022/lib/form-validators/decorators/extension.decorator.mjs +2 -2
  34. package/esm2022/lib/form-validators/decorators/factor.decorator.mjs +2 -2
  35. package/esm2022/lib/form-validators/decorators/file.decorator.mjs +2 -2
  36. package/esm2022/lib/form-validators/decorators/fileSize.decorator.mjs +2 -2
  37. package/esm2022/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +2 -2
  38. package/esm2022/lib/form-validators/decorators/greater-than.decorator.mjs +2 -2
  39. package/esm2022/lib/form-validators/decorators/grid.decorator.mjs +2 -2
  40. package/esm2022/lib/form-validators/decorators/hexColor.decorator.mjs +2 -2
  41. package/esm2022/lib/form-validators/decorators/image.decorator.mjs +2 -2
  42. package/esm2022/lib/form-validators/decorators/json.decorator.mjs +2 -2
  43. package/esm2022/lib/form-validators/decorators/latLong.decorator.mjs +2 -2
  44. package/esm2022/lib/form-validators/decorators/latitude.decorator.mjs +2 -2
  45. package/esm2022/lib/form-validators/decorators/leapYear.decorator.mjs +2 -2
  46. package/esm2022/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +2 -2
  47. package/esm2022/lib/form-validators/decorators/less-than.decorator.mjs +2 -2
  48. package/esm2022/lib/form-validators/decorators/longitude.decorator.mjs +2 -2
  49. package/esm2022/lib/form-validators/decorators/lowercase.decorator.mjs +2 -2
  50. package/esm2022/lib/form-validators/decorators/mac.decorator.mjs +2 -2
  51. package/esm2022/lib/form-validators/decorators/mask.decorator.mjs +2 -2
  52. package/esm2022/lib/form-validators/decorators/maxDate.decorator.mjs +2 -2
  53. package/esm2022/lib/form-validators/decorators/maxLength.decorator.mjs +2 -2
  54. package/esm2022/lib/form-validators/decorators/maxNumber.decorator.mjs +2 -2
  55. package/esm2022/lib/form-validators/decorators/maxTime.decorator.mjs +2 -2
  56. package/esm2022/lib/form-validators/decorators/minDate.decorator.mjs +2 -2
  57. package/esm2022/lib/form-validators/decorators/minLength.decorator.mjs +2 -2
  58. package/esm2022/lib/form-validators/decorators/minNumber.decorator.mjs +2 -2
  59. package/esm2022/lib/form-validators/decorators/minTime.decorator.mjs +2 -2
  60. package/esm2022/lib/form-validators/decorators/model.decorator.mjs +2 -2
  61. package/esm2022/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +2 -2
  62. package/esm2022/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +2 -2
  63. package/esm2022/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +2 -2
  64. package/esm2022/lib/form-validators/decorators/non-validation-decorators/update-on.decorator.mjs +2 -2
  65. package/esm2022/lib/form-validators/decorators/noneOf.decorator.mjs +2 -2
  66. package/esm2022/lib/form-validators/decorators/not.decorator.mjs +2 -2
  67. package/esm2022/lib/form-validators/decorators/notEmpty.decorator.mjs +2 -2
  68. package/esm2022/lib/form-validators/decorators/numeric.decorator.mjs +2 -2
  69. package/esm2022/lib/form-validators/decorators/odd.decorator.mjs +2 -2
  70. package/esm2022/lib/form-validators/decorators/oneOf.decorator.mjs +2 -2
  71. package/esm2022/lib/form-validators/decorators/or.decorator.mjs +2 -2
  72. package/esm2022/lib/form-validators/decorators/password.decorator.mjs +2 -2
  73. package/esm2022/lib/form-validators/decorators/pattern.decorator.mjs +2 -2
  74. package/esm2022/lib/form-validators/decorators/port.decorator.mjs +2 -2
  75. package/esm2022/lib/form-validators/decorators/primeNumber.decorator.mjs +2 -2
  76. package/esm2022/lib/form-validators/decorators/prop-array.decorator.mjs +2 -2
  77. package/esm2022/lib/form-validators/decorators/prop-object.decorator.mjs +2 -2
  78. package/esm2022/lib/form-validators/decorators/prop.decorator.mjs +2 -2
  79. package/esm2022/lib/form-validators/decorators/range.decorator.mjs +2 -2
  80. package/esm2022/lib/form-validators/decorators/required.decorator.mjs +2 -2
  81. package/esm2022/lib/form-validators/decorators/requiredTrue.decorator.mjs +2 -2
  82. package/esm2022/lib/form-validators/decorators/rule.decorator.mjs +2 -2
  83. package/esm2022/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +2 -2
  84. package/esm2022/lib/form-validators/decorators/sanitize/escape.decorator.mjs +2 -2
  85. package/esm2022/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +2 -2
  86. package/esm2022/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +2 -2
  87. package/esm2022/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +2 -2
  88. package/esm2022/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +2 -2
  89. package/esm2022/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +2 -2
  90. package/esm2022/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +2 -2
  91. package/esm2022/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +2 -2
  92. package/esm2022/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +2 -2
  93. package/esm2022/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +2 -2
  94. package/esm2022/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +2 -2
  95. package/esm2022/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +2 -2
  96. package/esm2022/lib/form-validators/decorators/sanitize/toString.decorator.mjs +2 -2
  97. package/esm2022/lib/form-validators/decorators/sanitize/trim.decorator.mjs +2 -2
  98. package/esm2022/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +2 -2
  99. package/esm2022/lib/form-validators/decorators/startsWith.decorator.mjs +2 -2
  100. package/esm2022/lib/form-validators/decorators/time.decorator.mjs +2 -2
  101. package/esm2022/lib/form-validators/decorators/unique.decorator.mjs +2 -2
  102. package/esm2022/lib/form-validators/decorators/uppercase.decorator.mjs +2 -2
  103. package/esm2022/lib/form-validators/decorators/url.decorator.mjs +2 -2
  104. package/esm2022/lib/form-validators/directives/base-directive.mjs +34 -3
  105. package/esm2022/lib/form-validators/directives/control-host.directive.mjs +18 -1
  106. package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +15 -1
  107. package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +108 -14
  108. package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +2 -4
  109. package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +17 -7
  110. package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +22 -8
  111. package/esm2022/lib/form-validators/domain/disable-provider.mjs +107 -4
  112. package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +67 -7
  113. package/esm2022/lib/form-validators/domain/element-processor/mask.provider.mjs +4 -3
  114. package/esm2022/lib/form-validators/domain/form-data.mjs +53 -7
  115. package/esm2022/lib/form-validators/models/control-info.mjs +2 -0
  116. package/esm2022/lib/form-validators/models/data-sanitizer.mjs +2 -0
  117. package/esm2022/lib/form-validators/models/decorator-configuration.mjs +2 -0
  118. package/esm2022/lib/form-validators/models/form-builder-configuration.mjs +35 -13
  119. package/esm2022/lib/form-validators/models/instance-container.mjs +2 -0
  120. package/esm2022/lib/form-validators/models/password-validation.model.mjs +1 -1
  121. package/esm2022/lib/form-validators/models/prop-validation-config.mjs +1 -1
  122. package/esm2022/lib/form-validators/models/property-info.mjs +2 -0
  123. package/esm2022/lib/form-validators/reactive-form-validators/allOf.validator.mjs +2 -2
  124. package/esm2022/lib/form-validators/reactive-form-validators/alpha.validator.mjs +2 -2
  125. package/esm2022/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +2 -2
  126. package/esm2022/lib/form-validators/reactive-form-validators/and.validator.mjs +2 -2
  127. package/esm2022/lib/form-validators/reactive-form-validators/ascii.validator.mjs +2 -2
  128. package/esm2022/lib/form-validators/reactive-form-validators/choice.validator.mjs +2 -2
  129. package/esm2022/lib/form-validators/reactive-form-validators/compare.validator.mjs +2 -2
  130. package/esm2022/lib/form-validators/reactive-form-validators/compose.validator.mjs +2 -2
  131. package/esm2022/lib/form-validators/reactive-form-validators/contains.validator.mjs +2 -2
  132. package/esm2022/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +2 -2
  133. package/esm2022/lib/form-validators/reactive-form-validators/cusip.validator.mjs +2 -2
  134. package/esm2022/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +2 -2
  135. package/esm2022/lib/form-validators/reactive-form-validators/date.validator.mjs +2 -2
  136. package/esm2022/lib/form-validators/reactive-form-validators/different.validator.mjs +2 -2
  137. package/esm2022/lib/form-validators/reactive-form-validators/digit.validator.mjs +2 -2
  138. package/esm2022/lib/form-validators/reactive-form-validators/email.validator.mjs +2 -2
  139. package/esm2022/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +2 -2
  140. package/esm2022/lib/form-validators/reactive-form-validators/even.validator.mjs +2 -2
  141. package/esm2022/lib/form-validators/reactive-form-validators/extension.validator.mjs +2 -2
  142. package/esm2022/lib/form-validators/reactive-form-validators/factor.validator.mjs +2 -2
  143. package/esm2022/lib/form-validators/reactive-form-validators/file.validator.mjs +2 -2
  144. package/esm2022/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +2 -2
  145. package/esm2022/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +2 -2
  146. package/esm2022/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +2 -2
  147. package/esm2022/lib/form-validators/reactive-form-validators/grid.validator.mjs +2 -2
  148. package/esm2022/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +2 -2
  149. package/esm2022/lib/form-validators/reactive-form-validators/iban.validator.mjs +2 -2
  150. package/esm2022/lib/form-validators/reactive-form-validators/image.validator.mjs +2 -2
  151. package/esm2022/lib/form-validators/reactive-form-validators/ip.validator.mjs +2 -2
  152. package/esm2022/lib/form-validators/reactive-form-validators/json.validator.mjs +2 -2
  153. package/esm2022/lib/form-validators/reactive-form-validators/latLong.validator.mjs +2 -2
  154. package/esm2022/lib/form-validators/reactive-form-validators/latitude.validator.mjs +2 -2
  155. package/esm2022/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +2 -2
  156. package/esm2022/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +2 -2
  157. package/esm2022/lib/form-validators/reactive-form-validators/less-than.validator.mjs +2 -2
  158. package/esm2022/lib/form-validators/reactive-form-validators/longitude.validator.mjs +2 -2
  159. package/esm2022/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +2 -2
  160. package/esm2022/lib/form-validators/reactive-form-validators/mac.validator.mjs +2 -2
  161. package/esm2022/lib/form-validators/reactive-form-validators/mask.validator.mjs +2 -2
  162. package/esm2022/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +2 -2
  163. package/esm2022/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +2 -2
  164. package/esm2022/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +2 -2
  165. package/esm2022/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +2 -2
  166. package/esm2022/lib/form-validators/reactive-form-validators/minDate.validator.mjs +2 -2
  167. package/esm2022/lib/form-validators/reactive-form-validators/minLength.validator.mjs +2 -2
  168. package/esm2022/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +2 -2
  169. package/esm2022/lib/form-validators/reactive-form-validators/minTime.validator.mjs +2 -2
  170. package/esm2022/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +2 -2
  171. package/esm2022/lib/form-validators/reactive-form-validators/not.validator.mjs +2 -2
  172. package/esm2022/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +2 -2
  173. package/esm2022/lib/form-validators/reactive-form-validators/numeric.validator.mjs +2 -2
  174. package/esm2022/lib/form-validators/reactive-form-validators/odd.validator.mjs +2 -2
  175. package/esm2022/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +2 -2
  176. package/esm2022/lib/form-validators/reactive-form-validators/or.validator.mjs +2 -2
  177. package/esm2022/lib/form-validators/reactive-form-validators/password.validator.mjs +2 -2
  178. package/esm2022/lib/form-validators/reactive-form-validators/port.validator.mjs +2 -2
  179. package/esm2022/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +2 -2
  180. package/esm2022/lib/form-validators/reactive-form-validators/range.validator.mjs +2 -2
  181. package/esm2022/lib/form-validators/reactive-form-validators/required.validator.mjs +2 -2
  182. package/esm2022/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +2 -2
  183. package/esm2022/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +2 -2
  184. package/esm2022/lib/form-validators/reactive-form-validators/time.validator.mjs +2 -2
  185. package/esm2022/lib/form-validators/reactive-form-validators/unique.validator.mjs +2 -2
  186. package/esm2022/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +2 -2
  187. package/esm2022/lib/form-validators/reactive-form-validators/url.validator.mjs +2 -2
  188. package/esm2022/lib/form-validators/services/base-form-builder.mjs +105 -6
  189. package/esm2022/lib/form-validators/services/form-control.mjs +2 -2
  190. package/esm2022/lib/form-validators/services/reactive-form.module.mjs +2 -2
  191. package/esm2022/lib/form-validators/services/rx-form-builder.mjs +479 -39
  192. package/esm2022/lib/form-validators/services/rx-form-group.mjs +197 -52
  193. package/esm2022/lib/form-validators/util/date-checker.function.mjs +2 -2
  194. package/esm2022/lib/form-validators/util/instance-provider.function.mjs +2 -2
  195. package/esm2022/lib/form-validators/util/relational-checker.function.mjs +2 -2
  196. package/esm2022/lib/form-validators/util/time-checker.function.mjs +2 -2
  197. package/esm2022/lib/form-validators/validators-extension/allOf-validator.extension.mjs +4 -4
  198. package/esm2022/lib/form-validators/validators-extension/alpha-validator.extension.mjs +4 -4
  199. package/esm2022/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +4 -4
  200. package/esm2022/lib/form-validators/validators-extension/and-validator.extension.mjs +2 -2
  201. package/esm2022/lib/form-validators/validators-extension/ascii-validator.extension.mjs +2 -2
  202. package/esm2022/lib/form-validators/validators-extension/base-validator.function.mjs +2 -2
  203. package/esm2022/lib/form-validators/validators-extension/choice-validator.extension.mjs +4 -4
  204. package/esm2022/lib/form-validators/validators-extension/compare-validator.extension.mjs +2 -2
  205. package/esm2022/lib/form-validators/validators-extension/compose-validator.extension.mjs +2 -2
  206. package/esm2022/lib/form-validators/validators-extension/contains-validator.extension.mjs +4 -4
  207. package/esm2022/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +4 -4
  208. package/esm2022/lib/form-validators/validators-extension/cusip-validator.extension.mjs +2 -2
  209. package/esm2022/lib/form-validators/validators-extension/custom-validator.extension.mjs +4 -4
  210. package/esm2022/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +2 -2
  211. package/esm2022/lib/form-validators/validators-extension/date-validator.extension.mjs +4 -4
  212. package/esm2022/lib/form-validators/validators-extension/different-validator.extension.mjs +2 -2
  213. package/esm2022/lib/form-validators/validators-extension/digit-validator.extension.mjs +2 -2
  214. package/esm2022/lib/form-validators/validators-extension/email-validator.extension.mjs +2 -2
  215. package/esm2022/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +4 -4
  216. package/esm2022/lib/form-validators/validators-extension/even-validator.extension.mjs +2 -2
  217. package/esm2022/lib/form-validators/validators-extension/extension-validator.extension.mjs +2 -2
  218. package/esm2022/lib/form-validators/validators-extension/factor-validator.extension.mjs +4 -4
  219. package/esm2022/lib/form-validators/validators-extension/file-validator.extension.mjs +2 -2
  220. package/esm2022/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +2 -2
  221. package/esm2022/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +4 -4
  222. package/esm2022/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +4 -4
  223. package/esm2022/lib/form-validators/validators-extension/grid-validator.extension.mjs +2 -2
  224. package/esm2022/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +2 -2
  225. package/esm2022/lib/form-validators/validators-extension/iban-validator.extension.mjs +4 -4
  226. package/esm2022/lib/form-validators/validators-extension/image-validator.extension.mjs +2 -2
  227. package/esm2022/lib/form-validators/validators-extension/ip-validator.extension.mjs +4 -4
  228. package/esm2022/lib/form-validators/validators-extension/json-validator.extension.mjs +2 -2
  229. package/esm2022/lib/form-validators/validators-extension/latLong-validator.extension.mjs +2 -2
  230. package/esm2022/lib/form-validators/validators-extension/latitude-validator.extension.mjs +2 -2
  231. package/esm2022/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +2 -2
  232. package/esm2022/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +4 -4
  233. package/esm2022/lib/form-validators/validators-extension/less-than-validator.extension.mjs +4 -4
  234. package/esm2022/lib/form-validators/validators-extension/longitude-validator.extension.mjs +2 -2
  235. package/esm2022/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +2 -2
  236. package/esm2022/lib/form-validators/validators-extension/mac-validator.extension.mjs +2 -2
  237. package/esm2022/lib/form-validators/validators-extension/mask-validator.extension.mjs +2 -2
  238. package/esm2022/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +4 -4
  239. package/esm2022/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +4 -4
  240. package/esm2022/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +4 -4
  241. package/esm2022/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +4 -4
  242. package/esm2022/lib/form-validators/validators-extension/minDate-validator.extension.mjs +4 -4
  243. package/esm2022/lib/form-validators/validators-extension/minLength-validator.extension.mjs +4 -4
  244. package/esm2022/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +4 -4
  245. package/esm2022/lib/form-validators/validators-extension/minTime-validator.extension.mjs +4 -4
  246. package/esm2022/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +4 -4
  247. package/esm2022/lib/form-validators/validators-extension/not-validator.extension.mjs +2 -2
  248. package/esm2022/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +2 -2
  249. package/esm2022/lib/form-validators/validators-extension/numeric-validator.extension.mjs +4 -4
  250. package/esm2022/lib/form-validators/validators-extension/odd-validator.extension.mjs +2 -2
  251. package/esm2022/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +4 -4
  252. package/esm2022/lib/form-validators/validators-extension/or-validator.extension.mjs +2 -2
  253. package/esm2022/lib/form-validators/validators-extension/password-validator.extension.mjs +4 -4
  254. package/esm2022/lib/form-validators/validators-extension/pattern-validator.extension.mjs +4 -4
  255. package/esm2022/lib/form-validators/validators-extension/port-validator.extension.mjs +2 -2
  256. package/esm2022/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +2 -2
  257. package/esm2022/lib/form-validators/validators-extension/range-validator.extension.mjs +4 -4
  258. package/esm2022/lib/form-validators/validators-extension/required-validator.extension.mjs +2 -2
  259. package/esm2022/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +2 -2
  260. package/esm2022/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +4 -4
  261. package/esm2022/lib/form-validators/validators-extension/time-validator.extension.mjs +4 -4
  262. package/esm2022/lib/form-validators/validators-extension/unique-validator.extension.mjs +2 -2
  263. package/esm2022/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +2 -2
  264. package/esm2022/lib/form-validators/validators-extension/url-validator.extension.mjs +4 -4
  265. package/esm2022/lib/form-validators/validators-function/alpha-validation.function.mjs +28 -1
  266. package/esm2022/lib/form-validators/validators-function/regex-validation.function.mjs +17 -1
  267. package/fesm2022/messaia-cdk.mjs +1777 -203
  268. package/fesm2022/messaia-cdk.mjs.map +1 -1
  269. package/lib/form-validators/abstract/typed-form.d.ts +9 -0
  270. package/lib/form-validators/algorithm/luhn-algorithm.d.ts +7 -0
  271. package/lib/form-validators/const/app.const.d.ts +48 -0
  272. package/lib/form-validators/const/config-names.const.d.ts +24 -0
  273. package/lib/form-validators/const/config-required-fields.const.d.ts +3 -0
  274. package/lib/form-validators/const/events.const.d.ts +39 -0
  275. package/lib/form-validators/const/html-elements.const.d.ts +18 -0
  276. package/lib/form-validators/const/validator.const.d.ts +21 -0
  277. package/lib/form-validators/core/default-container.d.ts +153 -0
  278. package/lib/form-validators/directives/base-directive.d.ts +17 -0
  279. package/lib/form-validators/directives/control-host.directive.d.ts +17 -0
  280. package/lib/form-validators/directives/html-control-template.directive.d.ts +13 -0
  281. package/lib/form-validators/directives/rx-form.directive.d.ts +34 -3
  282. package/lib/form-validators/directives/template-validations/async-validation.directive.d.ts +1 -3
  283. package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +15 -5
  284. package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +19 -8
  285. package/lib/form-validators/domain/disable-provider.d.ts +54 -0
  286. package/lib/form-validators/domain/element-processor/decimal.provider.d.ts +36 -1
  287. package/lib/form-validators/domain/form-data.d.ts +21 -0
  288. package/lib/form-validators/models/control-info.d.ts +25 -0
  289. package/lib/form-validators/models/data-sanitizer.d.ts +13 -0
  290. package/lib/form-validators/models/decorator-configuration.d.ts +37 -0
  291. package/lib/form-validators/models/form-builder-configuration.d.ts +33 -0
  292. package/lib/form-validators/models/instance-container.d.ts +47 -0
  293. package/lib/form-validators/models/password-validation.model.d.ts +54 -0
  294. package/lib/form-validators/models/prop-validation-config.d.ts +156 -0
  295. package/lib/form-validators/models/property-info.d.ts +49 -0
  296. package/lib/form-validators/services/base-form-builder.d.ts +59 -2
  297. package/lib/form-validators/services/form-control.d.ts +1 -1
  298. package/lib/form-validators/services/rx-form-builder.d.ts +197 -1
  299. package/lib/form-validators/services/rx-form-group.d.ts +121 -0
  300. package/lib/form-validators/util/instance-provider.function.d.ts +1 -1
  301. package/lib/form-validators/validators-extension/allOf-validator.extension.d.ts +1 -1
  302. package/lib/form-validators/validators-extension/alpha-validator.extension.d.ts +1 -1
  303. package/lib/form-validators/validators-extension/iban-validator.extension.d.ts +1 -1
  304. package/lib/form-validators/validators-extension/maxLength-validator.extension.d.ts +1 -1
  305. package/lib/form-validators/validators-function/alpha-validation.function.d.ts +7 -0
  306. package/lib/form-validators/validators-function/regex-validation.function.d.ts +16 -0
  307. package/package.json +1 -1
  308. package/esm2022/lib/form-validators/core/defaultContainer.mjs +0 -257
  309. package/esm2022/lib/form-validators/core/validator.interface.mjs +0 -2
  310. package/lib/form-validators/core/defaultContainer.d.ts +0 -18
  311. package/lib/form-validators/core/validator.interface.d.ts +0 -62
  312. /package/lib/form-validators/core/{validator.static.d.ts → annotation-types.d.ts} +0 -0
@@ -1,128 +1,222 @@
1
1
  import { Directive, Input } from "@angular/core";
2
2
  import { FormArray, FormGroup, NgForm } from "@angular/forms";
3
3
  import { CONDITIONAL_VALIDATOR, MODEL } from '../const/app.const';
4
- import { defaultContainer } from "../core/defaultContainer";
5
- import { AnnotationTypes } from "../core/validator.static";
4
+ import { AnnotationTypes } from "../core/annotation-types";
5
+ import { defaultContainer } from "../core/default-container";
6
6
  import { conditionalChangeValidator } from '../reactive-form-validators/conditional-change.validator';
7
7
  import { Linq } from "../util/linq";
8
8
  import { BaseDirective } from "./base-directive";
9
9
  import * as i0 from "@angular/core";
10
+ /**
11
+ * This directive provides functionality for integrating RxWebForms with Angular forms.
12
+ */
10
13
  export class RxwebFormDirective extends BaseDirective {
14
+ /**
15
+ * Timeout ID for clearing the timeout
16
+ */
11
17
  clearTimeoutNumber = 0;
18
+ /**
19
+ * Object to store validation rules
20
+ */
12
21
  validationRule = {};
22
+ /**
23
+ * The formGroup input property for binding the form group to the directive.
24
+ */
13
25
  formGroup;
26
+ /**
27
+ * The ngForm input property for binding the NgForm to the directive.
28
+ */
14
29
  ngForm;
30
+ /**
31
+ * After the content is initialized, this method configures model validations based on the formGroup or ngForm.
32
+ */
15
33
  ngAfterContentInit() {
34
+ /* If the formGroup exists, doesn't have the MODEL property, and has no parent (i.e., it's a top-level form) */
16
35
  if (this.formGroup && !this.formGroup[MODEL] && this.formGroup.parent == null) {
36
+ /* Process expressions for configuring model validations */
17
37
  this.expressionProcessor(this.formGroup.controls);
38
+ /* Set conditional validators based on the validation rule */
18
39
  this.setConditionalValidator(this.formGroup.controls);
19
40
  }
41
+ /* If the formGroup exists, doesn't have the MODEL property, and its parent is an instance of FormArray */
20
42
  else if (this.formGroup && !this.formGroup[MODEL] && this.formGroup.parent instanceof FormArray) {
43
+ /* Process expressions for configuring model validations */
21
44
  this.expressionProcessor(this.formGroup.controls);
45
+ /* Set conditional validators based on the validation rule */
22
46
  this.setConditionalValidator(this.formGroup.controls);
23
47
  }
48
+ /* If ngForm is present */
24
49
  else if (this.ngForm) {
50
+ /* Configure model validations */
25
51
  this.configureModelValidations();
26
52
  }
27
53
  }
54
+ /**
55
+ * Configures model validations based on the ngForm if present.
56
+ */
28
57
  configureModelValidations() {
58
+ /* If ngForm is present */
29
59
  if (this.ngForm) {
60
+ /* Set a timeout to apply validations after a delay */
30
61
  this.clearTimeoutNumber = setTimeout(() => {
62
+ /* Clear the timeout to prevent multiple calls */
31
63
  clearTimeout(this.clearTimeoutNumber);
64
+ /* Apply validations to the form controls */
32
65
  this.applyValidations(this.ngForm.form.controls);
66
+ /* Process expressions for configuring model validations */
33
67
  this.expressionProcessor(this.ngForm.form.controls);
68
+ /* Set conditional validators based on the validation rule */
34
69
  this.setConditionalValidator(this.ngForm.form.controls);
70
+ /* Update the value and validity of the form controls */
35
71
  this.updateValueAndValidity(this.ngForm.form.controls);
36
72
  }, 500);
37
73
  }
38
74
  }
75
+ /**
76
+ * Updates the value and validity of the form controls.
77
+ */
39
78
  updateValueAndValidity(controls) {
79
+ /* Iterate over the keys of the controls object */
40
80
  Object.keys(controls).forEach(key => {
41
- if (controls[key] instanceof FormGroup)
81
+ /* Check if the control is an instance of FormGroup */
82
+ if (controls[key] instanceof FormGroup) {
83
+ /* Recursively update value and validity for controls within the FormGroup */
42
84
  this.updateValueAndValidity(controls[key].controls);
43
- else if (controls[key] instanceof FormArray)
85
+ }
86
+ /* Check if the control is an instance of FormArray */
87
+ else if (controls[key] instanceof FormArray) {
88
+ /* Recursively update value and validity for controls within the FormArray */
44
89
  this.updateValueAndValidity(controls[key].controls);
45
- else
90
+ }
91
+ else {
92
+ /* Update value and validity for the control */
46
93
  controls[key].updateValueAndValidity();
94
+ }
47
95
  });
48
96
  }
97
+ /**
98
+ * Processes the expressions for configuring model validations.
99
+ * @param controls - The form controls to process.
100
+ * @param rootFieldName - The root field name for nested controls.
101
+ */
49
102
  expressionProcessor(controls, rootFieldName = "") {
103
+ /* Iterate over the keys of the controls object */
50
104
  Object.keys(controls).forEach(fieldName => {
105
+ /* Get the control corresponding to the current field name */
51
106
  let formControl = controls[fieldName];
107
+ /* Check if the control has validatorConfig */
52
108
  if (formControl.validatorConfig) {
109
+ /* Iterate over the keys of AnnotationTypes */
53
110
  Object.keys(AnnotationTypes).forEach(validatorName => {
111
+ /* Check if the current validator exists in the validatorConfig and has disableExpression */
54
112
  if (formControl.validatorConfig[validatorName] && formControl.validatorConfig[validatorName].disableExpression) {
113
+ /* Set the disableExpression property for the formControl */
55
114
  formControl["disableExpression"] = formControl.validatorConfig[validatorName].disableExpression;
115
+ /* Extract columns from the disableExpression and set conditional value properties */
56
116
  let columns = Linq.expressionColumns(formControl.validatorConfig[validatorName].disableExpression);
57
117
  columns.forEach(t => {
58
118
  defaultContainer.setConditionalValueProp(this.validationRule, rootFieldName + t.propName, fieldName);
59
119
  });
60
120
  }
121
+ /* Check if the current validator exists in the validatorConfig and has conditionalExpression */
61
122
  if (formControl.validatorConfig[validatorName] && formControl.validatorConfig[validatorName].conditionalExpression) {
123
+ /* Extract columns from the conditionalExpression and set conditional value properties */
62
124
  let columns = Linq.expressionColumns(formControl.validatorConfig[validatorName].conditionalExpression);
63
125
  columns.forEach(t => {
64
126
  defaultContainer.setConditionalValueProp(this.validationRule, rootFieldName + t.propName, fieldName);
65
127
  });
66
128
  }
129
+ /* Check if the current validator exists in the validatorConfig and has dynamicConfig */
67
130
  if (formControl.validatorConfig[validatorName] && formControl.validatorConfig[validatorName].dynamicConfig) {
131
+ /* Parse dynamicConfig, extract columns, and set conditional value properties */
68
132
  let columns = Linq.dynamicConfigParser(formControl.validatorConfig[validatorName].dynamicConfig, fieldName);
69
133
  columns.forEach(t => {
70
134
  defaultContainer.setConditionalValueProp(this.validationRule, rootFieldName + t.propName, fieldName);
71
135
  });
72
136
  }
137
+ /* Check if the current validator exists in the validatorConfig and is a logical validator */
73
138
  if (formControl.validatorConfig[validatorName] && (validatorName == AnnotationTypes.and || validatorName == AnnotationTypes.or || validatorName == AnnotationTypes.not)) {
139
+ /* Iterate over the validation rules, set logical conditionals */
74
140
  Object.keys(formControl.validatorConfig[validatorName].validation).forEach(t => {
75
- if (typeof formControl.validatorConfig[validatorName].validation[t] !== "boolean")
141
+ if (typeof formControl.validatorConfig[validatorName].validation[t] !== "boolean") {
76
142
  defaultContainer.setLogicalConditional(this.validationRule, t, formControl.validatorConfig[validatorName].validation[t].fieldName, fieldName);
143
+ }
77
144
  });
78
145
  }
146
+ /* Check if the current validator exists in the validatorConfig and is a comparison or range validator */
79
147
  else if (formControl.validatorConfig[validatorName] && ((validatorName == AnnotationTypes.compare || validatorName == AnnotationTypes.greaterThan || validatorName == AnnotationTypes.greaterThanEqualTo || validatorName == AnnotationTypes.lessThan || validatorName == AnnotationTypes.lessThanEqualTo || validatorName == AnnotationTypes.different || validatorName == AnnotationTypes.factor || validatorName == AnnotationTypes.minTime || validatorName == AnnotationTypes.maxTime) || (validatorName == AnnotationTypes.creditCard && formControl.validatorConfig[validatorName].fieldName) || ((validatorName == AnnotationTypes.minDate || validatorName == AnnotationTypes.maxDate) && formControl.validatorConfig[validatorName].fieldName))) {
148
+ /* Set conditional value properties */
80
149
  defaultContainer.setConditionalValueProp(this.validationRule, formControl.validatorConfig[validatorName].fieldName, fieldName);
81
150
  }
82
151
  });
83
152
  }
153
+ /* Check if the control is an instance of FormGroup */
84
154
  else if (formControl instanceof FormGroup) {
155
+ /* Recursively process controls within the FormGroup */
85
156
  this.expressionProcessor(formControl.controls, `${fieldName}.`);
86
157
  }
158
+ /* Check if the control is an instance of FormArray */
87
159
  else if (formControl instanceof FormArray) {
88
- if (formControl.controls)
160
+ /* Process each control within the FormArray */
161
+ if (formControl.controls) {
89
162
  formControl.controls.forEach((t, i) => {
90
- if (t.controls)
163
+ if (t.controls) {
91
164
  this.expressionProcessor(t.controls, `${fieldName}[]`);
165
+ }
92
166
  });
167
+ }
93
168
  }
94
169
  });
95
170
  }
171
+ /**
172
+ * Sets conditional validators based on the validation rule.
173
+ */
96
174
  setConditionalValidator(controls) {
175
+ /* Iterates through the form controls and sets conditional validators based on validation rules */
97
176
  Object.keys(controls).forEach(fieldName => {
177
+ /* If conditional validation properties are defined for the field, set the conditional validator */
98
178
  if (this.validationRule.conditionalValidationProps && this.validationRule.conditionalValidationProps[fieldName]) {
99
179
  controls[fieldName][CONDITIONAL_VALIDATOR] = conditionalChangeValidator(this.validationRule.conditionalValidationProps[fieldName]);
100
180
  }
181
+ /* If the field is a FormGroup and conditional object properties are defined, set conditional validators for nested fields */
101
182
  else if (controls[fieldName] instanceof FormGroup && this.validationRule.conditionalObjectProps) {
183
+ /* Filter conditional object properties based on the current field name */
102
184
  var fields = this.validationRule.conditionalObjectProps.filter((t) => t.objectPropName == fieldName);
185
+ /* Access the nested FormGroup corresponding to the current field */
103
186
  let nestedFormGroup = controls[fieldName];
187
+ /* Initialize an object to store conditional controls grouped by property name */
104
188
  let propWiseConditionalControls = {};
189
+ /* Iterate through the filtered fields and group conditional controls by property name */
105
190
  fields.forEach((x) => {
106
- if (!propWiseConditionalControls[x.propName])
191
+ /* If the property name doesn't exist in the grouping object, initialize it */
192
+ if (!propWiseConditionalControls[x.propName]) {
107
193
  propWiseConditionalControls[x.propName] = [];
194
+ }
195
+ /* Push the reference property name to the array corresponding to the property name */
108
196
  propWiseConditionalControls[x.propName].push(x.referencePropName);
109
197
  });
198
+ /* Set conditional validators for nested form controls */
110
199
  Object.keys(propWiseConditionalControls).forEach(key => {
111
200
  nestedFormGroup.controls[key][CONDITIONAL_VALIDATOR] = conditionalChangeValidator(propWiseConditionalControls[key]);
112
201
  });
113
202
  }
203
+ /* If the field is a FormArray, recursively set conditional validators for its controls */
114
204
  else if (controls[fieldName] instanceof FormArray) {
205
+ /* Iterate through the controls of the current FormArray */
115
206
  controls[fieldName].controls.forEach((t, i) => {
116
- if (t.controls == undefined)
207
+ /* If the control doesn't have child controls (i.e., it's not a FormGroup or FormArray) */
208
+ if (t.controls == undefined) {
209
+ /* Set conditional validator for the individual control */
117
210
  this.setConditionalValidator({ [i]: t });
118
- else
211
+ }
212
+ else {
213
+ /* Set conditional validator for the child controls */
119
214
  this.setConditionalValidator(t.controls);
215
+ }
120
216
  });
121
217
  }
122
218
  });
123
219
  }
124
- ngOnDestroy() {
125
- }
126
220
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: RxwebFormDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
127
221
  /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: { formGroup: "formGroup", ngForm: ["rxwebForm", "ngForm"] }, usesInheritance: true, ngImport: i0 });
128
222
  }
@@ -137,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
137
231
  type: Input,
138
232
  args: ['rxwebForm']
139
233
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGlyZWN0aXZlcy9yeC1mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFtQixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBS2pELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxhQUFhO0lBQ3pDLGtCQUFrQixHQUFRLENBQUMsQ0FBQztJQUM1QixjQUFjLEdBQVEsRUFBRSxDQUFDO0lBRTFCLFNBQVMsQ0FBYTtJQUd0QixNQUFNLENBQVU7SUFFdkIsa0JBQWtCO1FBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUUsSUFBSSxDQUFDLFNBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ3BGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyx1QkFBdUIs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LElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxTQUFTO3dCQUN2QixJQUFJLENBQUMsdUJBQXVCLENBQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7O3dCQUU5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztJQUVYLENBQUM7MEhBN0hRLGtCQUFrQjs4R0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3RDOzhCQUtVLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXAsIE5nRm9ybSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDT05ESVRJT05BTF9WQUxJREFUT1IsIE1PREVMIH0gZnJvbSAnLi4vY29uc3QvYXBwLmNvbnN0JztcclxuaW1wb3J0IHsgZGVmYXVsdENvbnRhaW5lciB9IGZyb20gXCIuLi9jb3JlL2RlZmF1bHRDb250YWluZXJcIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4uL2NvcmUvdmFsaWRhdG9yLnN0YXRpY1wiO1xyXG5pbXBvcnQgeyBjb25kaXRpb25hbENoYW5nZVZhbGlkYXRvciB9IGZyb20gJy4uL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jb25kaXRpb25hbC1jaGFuZ2UudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgTGlucSB9IGZyb20gXCIuLi91dGlsL2xpbnFcIjtcclxuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gXCIuL2Jhc2UtZGlyZWN0aXZlXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2Zvcm1Hcm91cF0sW3J4d2ViRm9ybV0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUnh3ZWJGb3JtRGlyZWN0aXZlIGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBwcml2YXRlIGNsZWFyVGltZW91dE51bWJlcjogYW55ID0gMDtcclxuICAgIHByaXZhdGUgdmFsaWRhdGlvblJ1bGU6IGFueSA9IHt9O1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XHJcblxyXG4gICAgQElucHV0KCdyeHdlYkZvcm0nKVxyXG4gICAgcHVibGljIG5nRm9ybT86IE5nRm9ybTtcclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmICEodGhpcy5mb3JtR3JvdXAgYXMgYW55KVtNT0RFTF0gJiYgdGhpcy5mb3JtR3JvdXAucGFyZW50ID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uUHJvY2Vzc29yKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbGlkYXRvcih0aGlzLmZvcm1Hcm91cC5jb250cm9scylcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZm9ybUdyb3VwICYmICEodGhpcy5mb3JtR3JvdXAgYXMgYW55KVtNT0RFTF0gJiYgdGhpcy5mb3JtR3JvdXAucGFyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvblByb2Nlc3Nvcih0aGlzLmZvcm1Hcm91cC5jb250cm9scyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q29uZGl0aW9uYWxWYWxpZGF0b3IodGhpcy5mb3JtR3JvdXAuY29udHJvbHMpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmICh0aGlzLm5nRm9ybSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZU1vZGVsVmFsaWRhdGlvbnMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb25maWd1cmVNb2RlbFZhbGlkYXRpb25zKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5nRm9ybSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dE51bWJlciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xlYXJUaW1lb3V0TnVtYmVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlWYWxpZGF0aW9ucyh0aGlzLm5nRm9ybSEuZm9ybS5jb250cm9scyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25Qcm9jZXNzb3IodGhpcy5uZ0Zvcm0hLmZvcm0uY29udHJvbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbGlkYXRvcih0aGlzLm5nRm9ybSEuZm9ybS5jb250cm9scylcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh0aGlzLm5nRm9ybSEuZm9ybS5jb250cm9scyk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShjb250cm9sczogYW55KSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2xzW2tleV0gaW5zdGFuY2VvZiBGb3JtR3JvdXApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoY29udHJvbHNba2V5XS5jb250cm9scyk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRyb2xzW2tleV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoY29udHJvbHNba2V5XS5jb250cm9scyk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGNvbnRyb2xzW2tleV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBleHByZXNzaW9uUHJvY2Vzc29yKGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCByb290RmllbGROYW1lOiBzdHJpbmcgPSBcIlwiKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbHMpLmZvckVhY2goZmllbGROYW1lID0+IHtcclxuICAgICAgICAgICAgbGV0IGZvcm1Db250cm9sOiBhbnkgPSBjb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhBbm5vdGF0aW9uVHlwZXMpLmZvckVhY2godmFsaWRhdG9yTmFtZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXSAmJiBmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0uZGlzYWJsZUV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xbXCJkaXNhYmxlRXhwcmVzc2lvblwiXSA9IGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXS5kaXNhYmxlRXhwcmVzc2lvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbnMgPSBMaW5xLmV4cHJlc3Npb25Db2x1bW5zKGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXS5kaXNhYmxlRXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250YWluZXIuc2V0Q29uZGl0aW9uYWxWYWx1ZVByb3AodGhpcy52YWxpZGF0aW9uUnVsZSwgcm9vdEZpZWxkTmFtZSArIHQucHJvcE5hbWUsIGZpZWxkTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0gJiYgZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLmNvbmRpdGlvbmFsRXhwcmVzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1ucyA9IExpbnEuZXhwcmVzc2lvbkNvbHVtbnMoZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLmNvbmRpdGlvbmFsRXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250YWluZXIuc2V0Q29uZGl0aW9uYWxWYWx1ZVByb3AodGhpcy52YWxpZGF0aW9uUnVsZSwgcm9vdEZpZWxkTmFtZSArIHQucHJvcE5hbWUsIGZpZWxkTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0gJiYgZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLmR5bmFtaWNDb25maWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbnMgPSBMaW5xLmR5bmFtaWNDb25maWdQYXJzZXIoZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLmR5bmFtaWNDb25maWcsIGZpZWxkTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250YWluZXIuc2V0Q29uZGl0aW9uYWxWYWx1ZVByb3AodGhpcy52YWxpZGF0aW9uUnVsZSwgcm9vdEZpZWxkTmFtZSArIHQucHJvcE5hbWUsIGZpZWxkTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdICYmICh2YWxpZGF0b3JOYW1lID09IEFubm90YXRpb25UeXBlcy5hbmQgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMub3IgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMubm90KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0udmFsaWRhdGlvbikuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLnZhbGlkYXRpb25bdF0gIT09IFwiYm9vbGVhblwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250YWluZXIuc2V0TG9naWNhbENvbmRpdGlvbmFsKHRoaXMudmFsaWRhdGlvblJ1bGUsIHQsIGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXS52YWxpZGF0aW9uW3RdLmZpZWxkTmFtZSwgZmllbGROYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdICYmICgodmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMuY29tcGFyZSB8fCB2YWxpZGF0b3JOYW1lID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fCB2YWxpZGF0b3JOYW1lID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbkVxdWFsVG8gfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW4gfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvIHx8IHZhbGlkYXRvck5hbWUgPT0gQW5ub3RhdGlvblR5cGVzLmRpZmZlcmVudCB8fCB2YWxpZGF0b3JOYW1lID09IEFubm90YXRpb25UeXBlcy5mYWN0b3IgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMubWluVGltZSB8fCB2YWxpZGF0b3JOYW1lID09IEFubm90YXRpb25UeXBlcy5tYXhUaW1lKSB8fCAodmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMuY3JlZGl0Q2FyZCAmJiBmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0uZmllbGROYW1lKSB8fCAoKHZhbGlkYXRvck5hbWUgPT0gQW5ub3RhdGlvblR5cGVzLm1pbkRhdGUgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMubWF4RGF0ZSkgJiYgZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLmZpZWxkTmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250YWluZXIuc2V0Q29uZGl0aW9uYWxWYWx1ZVByb3AodGhpcy52YWxpZGF0aW9uUnVsZSwgZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLmZpZWxkTmFtZSwgZmllbGROYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvblByb2Nlc3Nvcihmb3JtQ29udHJvbC5jb250cm9scywgYCR7ZmllbGROYW1lfS5gKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sLmNvbnRyb2xzKVxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLmNvbnRyb2xzLmZvckVhY2goKHQ6IGFueSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5jb250cm9scylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvblByb2Nlc3Nvcih0LmNvbnRyb2xzLCBgJHtmaWVsZE5hbWV9W11gKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRDb25kaXRpb25hbFZhbGlkYXRvcihjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2w7IH0pIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhjb250cm9scykuZm9yRWFjaChmaWVsZE5hbWUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0aW9uUnVsZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyAmJiB0aGlzLnZhbGlkYXRpb25SdWxlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW2ZpZWxkTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIChjb250cm9scyBhcyBhbnkpW2ZpZWxkTmFtZV1bQ09ORElUSU9OQUxfVkFMSURBVE9SXSA9IGNvbmRpdGlvbmFsQ2hhbmdlVmFsaWRhdG9yKHRoaXMudmFsaWRhdGlvblJ1bGUuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbZmllbGROYW1lXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKGNvbnRyb2xzIGFzIGFueSlbZmllbGROYW1lXSBpbnN0YW5jZW9mIEZvcm1Hcm91cCAmJiB0aGlzLnZhbGlkYXRpb25SdWxlLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBmaWVsZHMgPSB0aGlzLnZhbGlkYXRpb25SdWxlLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKCh0OiBhbnkpID0+IHQub2JqZWN0UHJvcE5hbWUgPT0gZmllbGROYW1lKTtcclxuICAgICAgICAgICAgICAgIGxldCBuZXN0ZWRGb3JtR3JvdXAgPSAoY29udHJvbHMgYXMgYW55KVtmaWVsZE5hbWVdIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9wV2lzZUNvbmRpdGlvbmFsQ29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgZmllbGRzLmZvckVhY2goKHg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvcFdpc2VDb25kaXRpb25hbENvbnRyb2xzW3gucHJvcE5hbWVdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wV2lzZUNvbmRpdGlvbmFsQ29udHJvbHNbeC5wcm9wTmFtZV0gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wV2lzZUNvbmRpdGlvbmFsQ29udHJvbHNbeC5wcm9wTmFtZV0ucHVzaCh4LnJlZmVyZW5jZVByb3BOYW1lKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcFdpc2VDb25kaXRpb25hbENvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgKG5lc3RlZEZvcm1Hcm91cC5jb250cm9scyBhcyBhbnkpW2tleV1bQ09ORElUSU9OQUxfVkFMSURBVE9SXSA9IGNvbmRpdGlvbmFsQ2hhbmdlVmFsaWRhdG9yKHByb3BXaXNlQ29uZGl0aW9uYWxDb250cm9sc1trZXldKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKChjb250cm9scyBhcyBhbnkpW2ZpZWxkTmFtZV0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIChjb250cm9scyBhcyBhbnkpW2ZpZWxkTmFtZV0uY29udHJvbHMuZm9yRWFjaCgodDogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodC5jb250cm9scyA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29uZGl0aW9uYWxWYWxpZGF0b3IoPGFueT57IFtpXTogdCB9KTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29uZGl0aW9uYWxWYWxpZGF0b3IodC5jb250cm9scyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG5cclxuICAgIH1cclxufVxyXG4iXX0=
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGlyZWN0aXZlcy9yeC1mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFtQixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRWpEOztHQUVHO0FBSUgsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFDakQ7O09BRUc7SUFDSyxrQkFBa0IsR0FBUSxDQUFDLENBQUM7SUFFcEM7O09BRUc7SUFDSyxjQUFjLEdBQVEsRUFBRSxDQUFDO0lBRWpDOztPQUVHO0lBRUksU0FBUyxDQUFhO0lBRTdCOztPQUVHO0lBRUksTUFBTSxDQUFVO0lBRXZCOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2QsK0dBQStHO1FBQy9HLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFFLElBQUksQ0FBQyxTQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRTtZQUNwRiwy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b0JBQzFGLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7d0JBQ3pCLDBEQUEwRDt3QkFDMUQsSUFBSSxDQUFDLHVCQUF1QixDQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNqRDt5QkFBTTt3QkFDSCxzREFBc0Q7d0JBQ3RELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQzVDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7MEhBalBRLGtCQUFrQjs4R0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3RDOzhCQWdCVSxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsTUFBTTtzQkFEWixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCwgTmdGb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENPTkRJVElPTkFMX1ZBTElEQVRPUiwgTU9ERUwgfSBmcm9tICcuLi9jb25zdC9hcHAuY29uc3QnO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vY29yZS9hbm5vdGF0aW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7IGRlZmF1bHRDb250YWluZXIgfSBmcm9tIFwiLi4vY29yZS9kZWZhdWx0LWNvbnRhaW5lclwiO1xyXG5pbXBvcnQgeyBjb25kaXRpb25hbENoYW5nZVZhbGlkYXRvciB9IGZyb20gJy4uL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jb25kaXRpb25hbC1jaGFuZ2UudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgTGlucSB9IGZyb20gXCIuLi91dGlsL2xpbnFcIjtcclxuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gXCIuL2Jhc2UtZGlyZWN0aXZlXCI7XHJcblxyXG4vKipcclxuICogVGhpcyBkaXJlY3RpdmUgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgaW50ZWdyYXRpbmcgUnhXZWJGb3JtcyB3aXRoIEFuZ3VsYXIgZm9ybXMuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2Zvcm1Hcm91cF0sW3J4d2ViRm9ybV0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUnh3ZWJGb3JtRGlyZWN0aXZlIGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaW1lb3V0IElEIGZvciBjbGVhcmluZyB0aGUgdGltZW91dFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNsZWFyVGltZW91dE51bWJlcjogYW55ID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9iamVjdCB0byBzdG9yZSB2YWxpZGF0aW9uIHJ1bGVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdmFsaWRhdGlvblJ1bGU6IGFueSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGZvcm1Hcm91cCBpbnB1dCBwcm9wZXJ0eSBmb3IgYmluZGluZyB0aGUgZm9ybSBncm91cCB0byB0aGUgZGlyZWN0aXZlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBuZ0Zvcm0gaW5wdXQgcHJvcGVydHkgZm9yIGJpbmRpbmcgdGhlIE5nRm9ybSB0byB0aGUgZGlyZWN0aXZlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoJ3J4d2ViRm9ybScpXHJcbiAgICBwdWJsaWMgbmdGb3JtPzogTmdGb3JtO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWZ0ZXIgdGhlIGNvbnRlbnQgaXMgaW5pdGlhbGl6ZWQsIHRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgbW9kZWwgdmFsaWRhdGlvbnMgYmFzZWQgb24gdGhlIGZvcm1Hcm91cCBvciBuZ0Zvcm0uXHJcbiAgICAgKi9cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvKiBJZiB0aGUgZm9ybUdyb3VwIGV4aXN0cywgZG9lc24ndCBoYXZlIHRoZSBNT0RFTCBwcm9wZXJ0eSwgYW5kIGhhcyBubyBwYXJlbnQgKGkuZS4sIGl0J3MgYSB0b3AtbGV2ZWwgZm9ybSkgKi9cclxuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAgJiYgISh0aGlzLmZvcm1Hcm91cCBhcyBhbnkpW01PREVMXSAmJiB0aGlzLmZvcm1Hcm91cC5wYXJlbnQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvKiBQcm9jZXNzIGV4cHJlc3Npb25zIGZvciBjb25maWd1cmluZyBtb2RlbCB2YWxpZGF0aW9ucyAqL1xyXG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25Qcm9jZXNzb3IodGhpcy5mb3JtR3JvdXAuY29udHJvbHMpO1xyXG5cclxuICAgICAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIHZhbGlkYXRvcnMgYmFzZWQgb24gdGhlIHZhbGlkYXRpb24gcnVsZSAqL1xyXG4gICAgICAgICAgICB0aGlzLnNldENvbmRpdGlvbmFsVmFsaWRhdG9yKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIElmIHRoZSBmb3JtR3JvdXAgZXhpc3RzLCBkb2Vzbid0IGhhdmUgdGhlIE1PREVMIHByb3BlcnR5LCBhbmQgaXRzIHBhcmVudCBpcyBhbiBpbnN0YW5jZSBvZiBGb3JtQXJyYXkgKi9cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmZvcm1Hcm91cCAmJiAhKHRoaXMuZm9ybUdyb3VwIGFzIGFueSlbTU9ERUxdICYmIHRoaXMuZm9ybUdyb3VwLnBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICAvKiBQcm9jZXNzIGV4cHJlc3Npb25zIGZvciBjb25maWd1cmluZyBtb2RlbCB2YWxpZGF0aW9ucyAqL1xyXG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25Qcm9jZXNzb3IodGhpcy5mb3JtR3JvdXAuY29udHJvbHMpO1xyXG5cclxuICAgICAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIHZhbGlkYXRvcnMgYmFzZWQgb24gdGhlIHZhbGlkYXRpb24gcnVsZSAqL1xyXG4gICAgICAgICAgICB0aGlzLnNldENvbmRpdGlvbmFsVmFsaWRhdG9yKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIElmIG5nRm9ybSBpcyBwcmVzZW50ICovXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5uZ0Zvcm0pIHtcclxuICAgICAgICAgICAgLyogQ29uZmlndXJlIG1vZGVsIHZhbGlkYXRpb25zICovXHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJlTW9kZWxWYWxpZGF0aW9ucygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbmZpZ3VyZXMgbW9kZWwgdmFsaWRhdGlvbnMgYmFzZWQgb24gdGhlIG5nRm9ybSBpZiBwcmVzZW50LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyZU1vZGVsVmFsaWRhdGlvbnMoKSB7XHJcbiAgICAgICAgLyogSWYgbmdGb3JtIGlzIHByZXNlbnQgKi9cclxuICAgICAgICBpZiAodGhpcy5uZ0Zvcm0pIHtcclxuICAgICAgICAgICAgLyogU2V0IGEgdGltZW91dCB0byBhcHBseSB2YWxpZGF0aW9ucyBhZnRlciBhIGRlbGF5ICovXHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0TnVtYmVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvKiBDbGVhciB0aGUgdGltZW91dCB0byBwcmV2ZW50IG11bHRpcGxlIGNhbGxzICovXHJcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jbGVhclRpbWVvdXROdW1iZXIpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IHZhbGlkYXRpb25zIHRvIHRoZSBmb3JtIGNvbnRyb2xzICovXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5VmFsaWRhdGlvbnModGhpcy5uZ0Zvcm0hLmZvcm0uY29udHJvbHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIFByb2Nlc3MgZXhwcmVzc2lvbnMgZm9yIGNvbmZpZ3VyaW5nIG1vZGVsIHZhbGlkYXRpb25zICovXHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25Qcm9jZXNzb3IodGhpcy5uZ0Zvcm0hLmZvcm0uY29udHJvbHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIFNldCBjb25kaXRpb25hbCB2YWxpZGF0b3JzIGJhc2VkIG9uIHRoZSB2YWxpZGF0aW9uIHJ1bGUgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29uZGl0aW9uYWxWYWxpZGF0b3IodGhpcy5uZ0Zvcm0hLmZvcm0uY29udHJvbHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgdmFsdWUgYW5kIHZhbGlkaXR5IG9mIHRoZSBmb3JtIGNvbnRyb2xzICovXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodGhpcy5uZ0Zvcm0hLmZvcm0uY29udHJvbHMpO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHZhbHVlIGFuZCB2YWxpZGl0eSBvZiB0aGUgZm9ybSBjb250cm9scy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGNvbnRyb2xzOiBhbnkpIHtcclxuICAgICAgICAvKiBJdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRyb2xzIG9iamVjdCAqL1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjb250cm9sIGlzIGFuIGluc3RhbmNlIG9mIEZvcm1Hcm91cCAqL1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbHNba2V5XSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIFJlY3Vyc2l2ZWx5IHVwZGF0ZSB2YWx1ZSBhbmQgdmFsaWRpdHkgZm9yIGNvbnRyb2xzIHdpdGhpbiB0aGUgRm9ybUdyb3VwICovXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoY29udHJvbHNba2V5XS5jb250cm9scyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjb250cm9sIGlzIGFuIGluc3RhbmNlIG9mIEZvcm1BcnJheSAqL1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjb250cm9sc1trZXldIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAvKiBSZWN1cnNpdmVseSB1cGRhdGUgdmFsdWUgYW5kIHZhbGlkaXR5IGZvciBjb250cm9scyB3aXRoaW4gdGhlIEZvcm1BcnJheSAqL1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGNvbnRyb2xzW2tleV0uY29udHJvbHMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSB2YWx1ZSBhbmQgdmFsaWRpdHkgZm9yIHRoZSBjb250cm9sICovXHJcbiAgICAgICAgICAgICAgICBjb250cm9sc1trZXldLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3NlcyB0aGUgZXhwcmVzc2lvbnMgZm9yIGNvbmZpZ3VyaW5nIG1vZGVsIHZhbGlkYXRpb25zLlxyXG4gICAgICogQHBhcmFtIGNvbnRyb2xzIC0gVGhlIGZvcm0gY29udHJvbHMgdG8gcHJvY2Vzcy5cclxuICAgICAqIEBwYXJhbSByb290RmllbGROYW1lIC0gVGhlIHJvb3QgZmllbGQgbmFtZSBmb3IgbmVzdGVkIGNvbnRyb2xzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGV4cHJlc3Npb25Qcm9jZXNzb3IoY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIHJvb3RGaWVsZE5hbWU6IHN0cmluZyA9IFwiXCIpIHtcclxuICAgICAgICAvKiBJdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRyb2xzIG9iamVjdCAqL1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XHJcbiAgICAgICAgICAgIC8qIEdldCB0aGUgY29udHJvbCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50IGZpZWxkIG5hbWUgKi9cclxuICAgICAgICAgICAgbGV0IGZvcm1Db250cm9sOiBhbnkgPSBjb250cm9sc1tmaWVsZE5hbWVdO1xyXG5cclxuICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGNvbnRyb2wgaGFzIHZhbGlkYXRvckNvbmZpZyAqL1xyXG4gICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgQW5ub3RhdGlvblR5cGVzICovXHJcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhBbm5vdGF0aW9uVHlwZXMpLmZvckVhY2godmFsaWRhdG9yTmFtZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdmFsaWRhdG9yIGV4aXN0cyBpbiB0aGUgdmFsaWRhdG9yQ29uZmlnIGFuZCBoYXMgZGlzYWJsZUV4cHJlc3Npb24gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdICYmIGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXS5kaXNhYmxlRXhwcmVzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBTZXQgdGhlIGRpc2FibGVFeHByZXNzaW9uIHByb3BlcnR5IGZvciB0aGUgZm9ybUNvbnRyb2wgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xbXCJkaXNhYmxlRXhwcmVzc2lvblwiXSA9IGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXS5kaXNhYmxlRXhwcmVzc2lvbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEV4dHJhY3QgY29sdW1ucyBmcm9tIHRoZSBkaXNhYmxlRXhwcmVzc2lvbiBhbmQgc2V0IGNvbmRpdGlvbmFsIHZhbHVlIHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbnMgPSBMaW5xLmV4cHJlc3Npb25Db2x1bW5zKGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXS5kaXNhYmxlRXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250YWluZXIuc2V0Q29uZGl0aW9uYWxWYWx1ZVByb3AodGhpcy52YWxpZGF0aW9uUnVsZSwgcm9vdEZpZWxkTmFtZSArIHQucHJvcE5hbWUsIGZpZWxkTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdmFsaWRhdG9yIGV4aXN0cyBpbiB0aGUgdmFsaWRhdG9yQ29uZmlnIGFuZCBoYXMgY29uZGl0aW9uYWxFeHByZXNzaW9uICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXSAmJiBmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0uY29uZGl0aW9uYWxFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEV4dHJhY3QgY29sdW1ucyBmcm9tIHRoZSBjb25kaXRpb25hbEV4cHJlc3Npb24gYW5kIHNldCBjb25kaXRpb25hbCB2YWx1ZSBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0uY29uZGl0aW9uYWxFeHByZXNzaW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdENvbnRhaW5lci5zZXRDb25kaXRpb25hbFZhbHVlUHJvcCh0aGlzLnZhbGlkYXRpb25SdWxlLCByb290RmllbGROYW1lICsgdC5wcm9wTmFtZSwgZmllbGROYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY3VycmVudCB2YWxpZGF0b3IgZXhpc3RzIGluIHRoZSB2YWxpZGF0b3JDb25maWcgYW5kIGhhcyBkeW5hbWljQ29uZmlnICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXSAmJiBmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0uZHluYW1pY0NvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBQYXJzZSBkeW5hbWljQ29uZmlnLCBleHRyYWN0IGNvbHVtbnMsIGFuZCBzZXQgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1ucyA9IExpbnEuZHluYW1pY0NvbmZpZ1BhcnNlcihmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0uZHluYW1pY0NvbmZpZywgZmllbGROYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdENvbnRhaW5lci5zZXRDb25kaXRpb25hbFZhbHVlUHJvcCh0aGlzLnZhbGlkYXRpb25SdWxlLCByb290RmllbGROYW1lICsgdC5wcm9wTmFtZSwgZmllbGROYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY3VycmVudCB2YWxpZGF0b3IgZXhpc3RzIGluIHRoZSB2YWxpZGF0b3JDb25maWcgYW5kIGlzIGEgbG9naWNhbCB2YWxpZGF0b3IgKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdICYmICh2YWxpZGF0b3JOYW1lID09IEFubm90YXRpb25UeXBlcy5hbmQgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMub3IgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMubm90KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVyYXRlIG92ZXIgdGhlIHZhbGlkYXRpb24gcnVsZXMsIHNldCBsb2dpY2FsIGNvbmRpdGlvbmFscyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhmb3JtQ29udHJvbC52YWxpZGF0b3JDb25maWdbdmFsaWRhdG9yTmFtZV0udmFsaWRhdGlvbikuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLnZhbGlkYXRpb25bdF0gIT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdENvbnRhaW5lci5zZXRMb2dpY2FsQ29uZGl0aW9uYWwodGhpcy52YWxpZGF0aW9uUnVsZSwgdCwgZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLnZhbGlkYXRpb25bdF0uZmllbGROYW1lLCBmaWVsZE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjdXJyZW50IHZhbGlkYXRvciBleGlzdHMgaW4gdGhlIHZhbGlkYXRvckNvbmZpZyBhbmQgaXMgYSBjb21wYXJpc29uIG9yIHJhbmdlIHZhbGlkYXRvciAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXSAmJiAoKHZhbGlkYXRvck5hbWUgPT0gQW5ub3RhdGlvblR5cGVzLmNvbXBhcmUgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMuZ3JlYXRlclRoYW4gfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMuZ3JlYXRlclRoYW5FcXVhbFRvIHx8IHZhbGlkYXRvck5hbWUgPT0gQW5ub3RhdGlvblR5cGVzLmxlc3NUaGFuIHx8IHZhbGlkYXRvck5hbWUgPT0gQW5ub3RhdGlvblR5cGVzLmxlc3NUaGFuRXF1YWxUbyB8fCB2YWxpZGF0b3JOYW1lID09IEFubm90YXRpb25UeXBlcy5kaWZmZXJlbnQgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMuZmFjdG9yIHx8IHZhbGlkYXRvck5hbWUgPT0gQW5ub3RhdGlvblR5cGVzLm1pblRpbWUgfHwgdmFsaWRhdG9yTmFtZSA9PSBBbm5vdGF0aW9uVHlwZXMubWF4VGltZSkgfHwgKHZhbGlkYXRvck5hbWUgPT0gQW5ub3RhdGlvblR5cGVzLmNyZWRpdENhcmQgJiYgZm9ybUNvbnRyb2wudmFsaWRhdG9yQ29uZmlnW3ZhbGlkYXRvck5hbWVdLmZpZWxkTmFtZSkgfHwgKCh2YWxpZGF0b3JOYW1lID09IEFubm90YXRpb25UeXBlcy5taW5EYXRlIHx8IHZhbGlkYXRvck5hbWUgPT0gQW5ub3RhdGlvblR5cGVzLm1heERhdGUpICYmIGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXS5maWVsZE5hbWUpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBTZXQgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Q29udGFpbmVyLnNldENvbmRpdGlvbmFsVmFsdWVQcm9wKHRoaXMudmFsaWRhdGlvblJ1bGUsIGZvcm1Db250cm9sLnZhbGlkYXRvckNvbmZpZ1t2YWxpZGF0b3JOYW1lXS5maWVsZE5hbWUsIGZpZWxkTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjb250cm9sIGlzIGFuIGluc3RhbmNlIG9mIEZvcm1Hcm91cCAqL1xyXG4gICAgICAgICAgICBlbHNlIGlmIChmb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgLyogUmVjdXJzaXZlbHkgcHJvY2VzcyBjb250cm9scyB3aXRoaW4gdGhlIEZvcm1Hcm91cCAqL1xyXG4gICAgICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uUHJvY2Vzc29yKGZvcm1Db250cm9sLmNvbnRyb2xzLCBgJHtmaWVsZE5hbWV9LmApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY29udHJvbCBpcyBhbiBpbnN0YW5jZSBvZiBGb3JtQXJyYXkgKi9cclxuICAgICAgICAgICAgZWxzZSBpZiAoZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIC8qIFByb2Nlc3MgZWFjaCBjb250cm9sIHdpdGhpbiB0aGUgRm9ybUFycmF5ICovXHJcbiAgICAgICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5jb250cm9scy5mb3JFYWNoKCh0OiBhbnksIGkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvblByb2Nlc3Nvcih0LmNvbnRyb2xzLCBgJHtmaWVsZE5hbWV9W11gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIGNvbmRpdGlvbmFsIHZhbGlkYXRvcnMgYmFzZWQgb24gdGhlIHZhbGlkYXRpb24gcnVsZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRDb25kaXRpb25hbFZhbGlkYXRvcihjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2w7IH0pIHtcclxuICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIHRoZSBmb3JtIGNvbnRyb2xzIGFuZCBzZXRzIGNvbmRpdGlvbmFsIHZhbGlkYXRvcnMgYmFzZWQgb24gdmFsaWRhdGlvbiBydWxlcyAqL1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XHJcbiAgICAgICAgICAgIC8qIElmIGNvbmRpdGlvbmFsIHZhbGlkYXRpb24gcHJvcGVydGllcyBhcmUgZGVmaW5lZCBmb3IgdGhlIGZpZWxkLCBzZXQgdGhlIGNvbmRpdGlvbmFsIHZhbGlkYXRvciAqL1xyXG4gICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0aW9uUnVsZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyAmJiB0aGlzLnZhbGlkYXRpb25SdWxlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW2ZpZWxkTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIChjb250cm9scyBhcyBhbnkpW2ZpZWxkTmFtZV1bQ09ORElUSU9OQUxfVkFMSURBVE9SXSA9IGNvbmRpdGlvbmFsQ2hhbmdlVmFsaWRhdG9yKHRoaXMudmFsaWRhdGlvblJ1bGUuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbZmllbGROYW1lXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIElmIHRoZSBmaWVsZCBpcyBhIEZvcm1Hcm91cCBhbmQgY29uZGl0aW9uYWwgb2JqZWN0IHByb3BlcnRpZXMgYXJlIGRlZmluZWQsIHNldCBjb25kaXRpb25hbCB2YWxpZGF0b3JzIGZvciBuZXN0ZWQgZmllbGRzICovXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChjb250cm9scyBhcyBhbnkpW2ZpZWxkTmFtZV0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgJiYgdGhpcy52YWxpZGF0aW9uUnVsZS5jb25kaXRpb25hbE9iamVjdFByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBGaWx0ZXIgY29uZGl0aW9uYWwgb2JqZWN0IHByb3BlcnRpZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgZmllbGQgbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkcyA9IHRoaXMudmFsaWRhdGlvblJ1bGUuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5maWx0ZXIoKHQ6IGFueSkgPT4gdC5vYmplY3RQcm9wTmFtZSA9PSBmaWVsZE5hbWUpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFjY2VzcyB0aGUgbmVzdGVkIEZvcm1Hcm91cCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50IGZpZWxkICovXHJcbiAgICAgICAgICAgICAgICBsZXQgbmVzdGVkRm9ybUdyb3VwID0gKGNvbnRyb2xzIGFzIGFueSlbZmllbGROYW1lXSBhcyBGb3JtR3JvdXA7XHJcblxyXG4gICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSBhbiBvYmplY3QgdG8gc3RvcmUgY29uZGl0aW9uYWwgY29udHJvbHMgZ3JvdXBlZCBieSBwcm9wZXJ0eSBuYW1lICovXHJcbiAgICAgICAgICAgICAgICBsZXQgcHJvcFdpc2VDb25kaXRpb25hbENvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlIHRocm91Z2ggdGhlIGZpbHRlcmVkIGZpZWxkcyBhbmQgZ3JvdXAgY29uZGl0aW9uYWwgY29udHJvbHMgYnkgcHJvcGVydHkgbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgZmllbGRzLmZvckVhY2goKHg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBuYW1lIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGdyb3VwaW5nIG9iamVjdCwgaW5pdGlhbGl6ZSBpdCAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvcFdpc2VDb25kaXRpb25hbENvbnRyb2xzW3gucHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BXaXNlQ29uZGl0aW9uYWxDb250cm9sc1t4LnByb3BOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvKiBQdXNoIHRoZSByZWZlcmVuY2UgcHJvcGVydHkgbmFtZSB0byB0aGUgYXJyYXkgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BXaXNlQ29uZGl0aW9uYWxDb250cm9sc1t4LnByb3BOYW1lXS5wdXNoKHgucmVmZXJlbmNlUHJvcE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIHZhbGlkYXRvcnMgZm9yIG5lc3RlZCBmb3JtIGNvbnRyb2xzICovXHJcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wV2lzZUNvbmRpdGlvbmFsQ29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAobmVzdGVkRm9ybUdyb3VwLmNvbnRyb2xzIGFzIGFueSlba2V5XVtDT05ESVRJT05BTF9WQUxJREFUT1JdID0gY29uZGl0aW9uYWxDaGFuZ2VWYWxpZGF0b3IocHJvcFdpc2VDb25kaXRpb25hbENvbnRyb2xzW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIElmIHRoZSBmaWVsZCBpcyBhIEZvcm1BcnJheSwgcmVjdXJzaXZlbHkgc2V0IGNvbmRpdGlvbmFsIHZhbGlkYXRvcnMgZm9yIGl0cyBjb250cm9scyAqL1xyXG4gICAgICAgICAgICBlbHNlIGlmICgoY29udHJvbHMgYXMgYW55KVtmaWVsZE5hbWVdIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlIHRocm91Z2ggdGhlIGNvbnRyb2xzIG9mIHRoZSBjdXJyZW50IEZvcm1BcnJheSAqL1xyXG4gICAgICAgICAgICAgICAgKGNvbnRyb2xzIGFzIGFueSlbZmllbGROYW1lXS5jb250cm9scy5mb3JFYWNoKCh0OiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBjb250cm9sIGRvZXNuJ3QgaGF2ZSBjaGlsZCBjb250cm9scyAoaS5lLiwgaXQncyBub3QgYSBGb3JtR3JvdXAgb3IgRm9ybUFycmF5KSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbnRyb2xzID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBTZXQgY29uZGl0aW9uYWwgdmFsaWRhdG9yIGZvciB0aGUgaW5kaXZpZHVhbCBjb250cm9sICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29uZGl0aW9uYWxWYWxpZGF0b3IoPGFueT57IFtpXTogdCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBTZXQgY29uZGl0aW9uYWwgdmFsaWRhdG9yIGZvciB0aGUgY2hpbGQgY29udHJvbHMgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbGlkYXRvcih0LmNvbnRyb2xzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
@@ -4,15 +4,13 @@ import { of } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export class AsyncValidationDirective {
6
6
  /**
7
- * @property
7
+ * The async validation function.
8
8
  */
9
9
  async;
10
10
  /**
11
- * @description
12
11
  * Method that performs async validation against the provided control.
13
12
  *
14
13
  * @param control The control to validate against.
15
- *
16
14
  * @returns A promise or observable that resolves a map of validation errors
17
15
  * if validation fails, otherwise null.
18
16
  */
@@ -39,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
39
37
  }], propDecorators: { async: [{
40
38
  type: Input
41
39
  }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdmFsaWRhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGlyZWN0aXZlcy90ZW1wbGF0ZS12YWxpZGF0aW9ucy9hc3luYy12YWxpZGF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFtQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVN0QyxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDOztPQUVHO0lBRUksS0FBSyxDQUFNO0lBRWxCOzs7Ozs7OztPQVFHO0lBQ0gsUUFBUSxDQUFDLE9BQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7MEhBbEJRLHdCQUF3Qjs4R0FBeEIsd0JBQXdCLGdHQU50QixDQUFDO2dCQUNSLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLEVBQUM7Z0JBQ3ZELEtBQUssRUFBRSxJQUFJO2FBQ2QsQ0FBQzs7MkZBRU8sd0JBQXdCO2tCQVJwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQ0FBMkM7b0JBQ3JELFNBQVMsRUFBRSxDQUFDOzRCQUNSLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHlCQUF5QixFQUFDOzRCQUN2RCxLQUFLLEVBQUUsSUFBSTt5QkFDZCxDQUFDO2lCQUNMOzhCQU1VLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvciwgTkdfQVNZTkNfVkFMSURBVE9SUywgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tuZ01vZGVsXSxbZm9ybUNvbnRyb2xOYW1lXSxbZm9ybUNvbnRyb2xdJyxcclxuICAgIHByb3ZpZGVyczogW3tcclxuICAgICAgICBwcm92aWRlOiBOR19BU1lOQ19WQUxJREFUT1JTLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFzeW5jVmFsaWRhdGlvbkRpcmVjdGl2ZSksXHJcbiAgICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3luY1ZhbGlkYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBc3luY1ZhbGlkYXRvciB7XHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFzeW5jOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIE1ldGhvZCB0aGF0IHBlcmZvcm1zIGFzeW5jIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgY29udHJvbC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBUaGUgY29udHJvbCB0byB2YWxpZGF0ZSBhZ2FpbnN0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvciBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgYSBtYXAgb2YgdmFsaWRhdGlvbiBlcnJvcnNcclxuICAgICAqIGlmIHZhbGlkYXRpb24gZmFpbHMsIG90aGVyd2lzZSBudWxsLlxyXG4gICAgICovXHJcbiAgICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hc3luYyA/IHRoaXMuYXN5bmMoY29udHJvbCkgOiBvZihudWxsKTtcclxuICAgIH1cclxufSJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdmFsaWRhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGlyZWN0aXZlcy90ZW1wbGF0ZS12YWxpZGF0aW9ucy9hc3luYy12YWxpZGF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFtQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVV0QyxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDOztPQUVHO0lBRUksS0FBSyxDQUFNO0lBRWxCOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxPQUF3QjtRQUNwQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDOzBIQWhCUSx3QkFBd0I7OEdBQXhCLHdCQUF3QixnR0FOdEIsQ0FBQztnQkFDUixPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixFQUFDO2dCQUN2RCxLQUFLLEVBQUUsSUFBSTthQUNkLENBQUM7OzJGQUVPLHdCQUF3QjtrQkFScEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMkNBQTJDO29CQUNyRCxTQUFTLEVBQUUsQ0FBQzs0QkFDUixPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSx5QkFBeUIsRUFBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ2QsQ0FBQztpQkFDTDs4QkFNVSxLQUFLO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3IsIE5HX0FTWU5DX1ZBTElEQVRPUlMsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW25nTW9kZWxdLFtmb3JtQ29udHJvbE5hbWVdLFtmb3JtQ29udHJvbF0nLFxyXG4gICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IE5HX0FTWU5DX1ZBTElEQVRPUlMsXHJcbiAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXN5bmNWYWxpZGF0aW9uRGlyZWN0aXZlKSxcclxuICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFzeW5jVmFsaWRhdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFzeW5jVmFsaWRhdG9yIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGFzeW5jIHZhbGlkYXRpb24gZnVuY3Rpb24uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXN5bmM6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IHBlcmZvcm1zIGFzeW5jIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgY29udHJvbC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgVGhlIGNvbnRyb2wgdG8gdmFsaWRhdGUgYWdhaW5zdC5cclxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvciBvYnNlcnZhYmxlIHRoYXQgcmVzb2x2ZXMgYSBtYXAgb2YgdmFsaWRhdGlvbiBlcnJvcnNcclxuICAgICAqIGlmIHZhbGlkYXRpb24gZmFpbHMsIG90aGVyd2lzZSBudWxsLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmMgPyB0aGlzLmFzeW5jKGNvbnRyb2wpIDogb2YobnVsbCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -7,15 +7,25 @@ import * as i0 from "@angular/core";
7
7
  * It extends ControlExpressionProcess to handle control expressions.
8
8
  */
9
9
  export class BaseValidator extends ControlExpressionProcess {
10
- /** Input property for the form control associated with the validator. */
10
+ /**
11
+ * Input property for the form control associated with the validator.
12
+ */
11
13
  formControl;
12
- /** Array to store the validator functions. */
14
+ /**
15
+ * Array to store the validator functions.
16
+ */
13
17
  validators = [];
14
- /** Reference to the HTML element associated with the validator. */
18
+ /**
19
+ * Reference to the HTML element associated with the validator.
20
+ */
15
21
  element;
16
- /** Name of the event triggering the validation. */
22
+ /**
23
+ * Name of the event triggering the validation.
24
+ */
17
25
  eventName;
18
- /** Provider for handling masks in validation. */
26
+ /**
27
+ * Provider for handling masks in validation.
28
+ */
19
29
  maskProvider;
20
30
  /**
21
31
  * Performs validation on the provided control using the defined validators and mask provider.
@@ -43,7 +53,7 @@ export class BaseValidator extends ControlExpressionProcess {
43
53
  */
44
54
  setEventName() {
45
55
  var eventName = '';
46
- // Determine event based on HTML element type.
56
+ /* Determine event based on HTML element type */
47
57
  switch (this.element.tagName) {
48
58
  case INPUT:
49
59
  case TEXTAREA:
@@ -63,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
63
73
  }], propDecorators: { formControl: [{
64
74
  type: Input
65
75
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12YWxpZGF0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL2RpcmVjdGl2ZXMvdGVtcGxhdGUtdmFsaWRhdGlvbnMvYmFzZS12YWxpZGF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRXhFOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFjLFNBQVEsd0JBQXdCO0lBRXZELHlFQUF5RTtJQUNoRSxXQUFXLENBQWlDO0lBRXJELDhDQUE4QztJQUNwQyxVQUFVLEdBQWtCLEVBQUUsQ0FBQztJQUV6QyxtRUFBbUU7SUFDekQsT0FBTyxDQUFNO0lBRXZCLG1EQUFtRDtJQUN6QyxTQUFTLENBQVU7SUFFN0IsaURBQWlEO0lBQ3ZDLFlBQVksQ0FBZ0I7SUFFdEM7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxPQUF3QjtRQUMvQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbEIsMkVBQTJFO1FBQzNFLEtBQUssSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLElBQUksTUFBTSxFQUFFO2dCQUNSLE1BQU07YUFDVDtTQUNKO1FBRUQsdUZBQXVGO1FBQ3ZGLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM5QixNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN6QztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxZQUFZO1FBQ2xCLElBQUksU0FBUyxHQUFXLEVBQUUsQ0FBQztRQUUzQiw4Q0FBOEM7UUFDOUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUMxQixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssUUFBUTtnQkFDVCxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDeEgsTUFBTTtZQUNWLEtBQUssTUFBTTtnQkFDUCxTQUFTLEdBQUcsTUFBTSxDQUFDO2dCQUNuQixNQUFNO1NBQ2I7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxDQUFDOzBIQTVEUSxhQUFhOzhHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFNBQVM7OEJBSUcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ0hBTkdFLCBDSEVDS0JPWCwgRklMRSwgSU5QVVQsIFJBRElPLCBTRUxFQ1QsIFRFWFRBUkVBIH0gZnJvbSBcIi4uLy4uL2NvbnN0XCI7XHJcblxyXG5pbXBvcnQgeyBNYXNrUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9kb21haW4vZWxlbWVudC1wcm9jZXNzb3IvbWFzay5wcm92aWRlcic7XHJcbmltcG9ydCB7IENvbnRyb2xFeHByZXNzaW9uUHJvY2VzcyB9IGZyb20gJy4vY29udHJvbC1leHByZXNzaW9uLXByb2Nlc3MnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2VWYWxpZGF0b3IgaXMgYSBiYXNlIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgY3VzdG9tIHZhbGlkYXRvcnMgaW4gQW5ndWxhci5cclxuICogSXQgZXh0ZW5kcyBDb250cm9sRXhwcmVzc2lvblByb2Nlc3MgdG8gaGFuZGxlIGNvbnRyb2wgZXhwcmVzc2lvbnMuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIEJhc2VWYWxpZGF0b3IgZXh0ZW5kcyBDb250cm9sRXhwcmVzc2lvblByb2Nlc3Mge1xyXG5cclxuICAgIC8qKiBJbnB1dCBwcm9wZXJ0eSBmb3IgdGhlIGZvcm0gY29udHJvbCBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbGlkYXRvci4gKi9cclxuICAgIEBJbnB1dCgpIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2wgfCBBYnN0cmFjdENvbnRyb2w7XHJcblxyXG4gICAgLyoqIEFycmF5IHRvIHN0b3JlIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25zLiAqL1xyXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBIVE1MIGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWxpZGF0b3IuICovXHJcbiAgICBwcm90ZWN0ZWQgZWxlbWVudDogYW55O1xyXG5cclxuICAgIC8qKiBOYW1lIG9mIHRoZSBldmVudCB0cmlnZ2VyaW5nIHRoZSB2YWxpZGF0aW9uLiAqL1xyXG4gICAgcHJvdGVjdGVkIGV2ZW50TmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvKiogUHJvdmlkZXIgZm9yIGhhbmRsaW5nIG1hc2tzIGluIHZhbGlkYXRpb24uICovXHJcbiAgICBwcm90ZWN0ZWQgbWFza1Byb3ZpZGVyPzogTWFza1Byb3ZpZGVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVyZm9ybXMgdmFsaWRhdGlvbiBvbiB0aGUgcHJvdmlkZWQgY29udHJvbCB1c2luZyB0aGUgZGVmaW5lZCB2YWxpZGF0b3JzIGFuZCBtYXNrIHByb3ZpZGVyLlxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgVGhlIGFic3RyYWN0IGNvbnRyb2wgdG8gYmUgdmFsaWRhdGVkLlxyXG4gICAgICogQHJldHVybnMgQSB2YWxpZGF0aW9uIHJlc3VsdCwgb3IgbnVsbCBpZiB2YWxpZGF0aW9uIHBhc3Nlcy5cclxuICAgICAqL1xyXG4gICAgdmFsaWRhdGlvbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcclxuXHJcbiAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHZhbGlkYXRvcnMgYW5kIGJyZWFrIG9uIHRoZSBmaXJzdCB2YWxpZGF0aW9uIGZhaWx1cmUuICovXHJcbiAgICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIHRoaXMudmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICByZXN1bHQgPSB2YWxpZGF0b3IoY29udHJvbCk7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBJZiBubyB2YWxpZGF0aW9uIGZhaWx1cmUgYW5kIGEgbWFzayBwcm92aWRlciBpcyBkZWZpbmVkLCB2YWxpZGF0ZSB1c2luZyB0aGUgbWFzay4gKi9cclxuICAgICAgICBpZiAoIXJlc3VsdCAmJiB0aGlzLm1hc2tQcm92aWRlcikge1xyXG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1hc2tQcm92aWRlci52YWxpZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGV2ZW50IG5hbWUgYmFzZWQgb24gdGhlIHR5cGUgb2YgSFRNTCBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsaWRhdG9yLlxyXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgZXZlbnQgdGhhdCB0cmlnZ2VycyB2YWxpZGF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgc2V0RXZlbnROYW1lKCkge1xyXG4gICAgICAgIHZhciBldmVudE5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgICAgICAvLyBEZXRlcm1pbmUgZXZlbnQgYmFzZWQgb24gSFRNTCBlbGVtZW50IHR5cGUuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmVsZW1lbnQudGFnTmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlIElOUFVUOlxyXG4gICAgICAgICAgICBjYXNlIFRFWFRBUkVBOlxyXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lID0gKHRoaXMuZWxlbWVudC50eXBlID09IENIRUNLQk9YIHx8IHRoaXMuZWxlbWVudC50eXBlID09IFJBRElPIHx8IHRoaXMuZWxlbWVudC50eXBlID09IEZJTEUpID8gQ0hBTkdFIDogSU5QVVQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTRUxFQ1Q6XHJcbiAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBDSEFOR0U7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnROYW1lID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12YWxpZGF0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL2RpcmVjdGl2ZXMvdGVtcGxhdGUtdmFsaWRhdGlvbnMvYmFzZS12YWxpZGF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRXhFOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFjLFNBQVEsd0JBQXdCO0lBQ3ZEOztPQUVHO0lBRUksV0FBVyxDQUFpQztJQUVuRDs7T0FFRztJQUNPLFVBQVUsR0FBa0IsRUFBRSxDQUFDO0lBRXpDOztPQUVHO0lBQ08sT0FBTyxDQUFNO0lBRXZCOztPQUVHO0lBQ08sU0FBUyxDQUFVO0lBRTdCOztPQUVHO0lBQ08sWUFBWSxDQUFnQjtJQUV0Qzs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLE9BQXdCO1FBQ3RDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUVsQiwyRUFBMkU7UUFDM0UsS0FBSyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25DLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsTUFBTTthQUNUO1NBQ0o7UUFFRCx1RkFBdUY7UUFDdkYsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzlCLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFlBQVk7UUFDbEIsSUFBSSxTQUFTLEdBQVcsRUFBRSxDQUFDO1FBRTNCLGdEQUFnRDtRQUNoRCxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQzFCLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxRQUFRO2dCQUNULFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUN4SCxNQUFNO1lBRVYsS0FBSyxNQUFNO2dCQUNQLFNBQVMsR0FBRyxNQUFNLENBQUM7Z0JBQ25CLE1BQU07U0FDYjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdDLENBQUM7MEhBdkVRLGFBQWE7OEdBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsU0FBUzs4QkFNQyxXQUFXO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDSEFOR0UsIENIRUNLQk9YLCBGSUxFLCBJTlBVVCwgUkFESU8sIFNFTEVDVCwgVEVYVEFSRUEgfSBmcm9tIFwiLi4vLi4vY29uc3RcIjtcclxuXHJcbmltcG9ydCB7IE1hc2tQcm92aWRlciB9IGZyb20gJy4uLy4uL2RvbWFpbi9lbGVtZW50LXByb2Nlc3Nvci9tYXNrLnByb3ZpZGVyJztcclxuaW1wb3J0IHsgQ29udHJvbEV4cHJlc3Npb25Qcm9jZXNzIH0gZnJvbSAnLi9jb250cm9sLWV4cHJlc3Npb24tcHJvY2Vzcyc7XHJcblxyXG4vKipcclxuICogQmFzZVZhbGlkYXRvciBpcyBhIGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGluZyBjdXN0b20gdmFsaWRhdG9ycyBpbiBBbmd1bGFyLlxyXG4gKiBJdCBleHRlbmRzIENvbnRyb2xFeHByZXNzaW9uUHJvY2VzcyB0byBoYW5kbGUgY29udHJvbCBleHByZXNzaW9ucy5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgQmFzZVZhbGlkYXRvciBleHRlbmRzIENvbnRyb2xFeHByZXNzaW9uUHJvY2VzcyB7XHJcbiAgICAvKipcclxuICAgICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgZm9ybSBjb250cm9sIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsaWRhdG9yLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2wgfCBBYnN0cmFjdENvbnRyb2w7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSB0byBzdG9yZSB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9ucy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgSFRNTCBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsaWRhdG9yLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZWxlbWVudDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBvZiB0aGUgZXZlbnQgdHJpZ2dlcmluZyB0aGUgdmFsaWRhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGV2ZW50TmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3ZpZGVyIGZvciBoYW5kbGluZyBtYXNrcyBpbiB2YWxpZGF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbWFza1Byb3ZpZGVyPzogTWFza1Byb3ZpZGVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVyZm9ybXMgdmFsaWRhdGlvbiBvbiB0aGUgcHJvdmlkZWQgY29udHJvbCB1c2luZyB0aGUgZGVmaW5lZCB2YWxpZGF0b3JzIGFuZCBtYXNrIHByb3ZpZGVyLlxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgVGhlIGFic3RyYWN0IGNvbnRyb2wgdG8gYmUgdmFsaWRhdGVkLlxyXG4gICAgICogQHJldHVybnMgQSB2YWxpZGF0aW9uIHJlc3VsdCwgb3IgbnVsbCBpZiB2YWxpZGF0aW9uIHBhc3Nlcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHZhbGlkYXRpb24oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB2YWxpZGF0b3JzIGFuZCBicmVhayBvbiB0aGUgZmlyc3QgdmFsaWRhdGlvbiBmYWlsdXJlLiAqL1xyXG4gICAgICAgIGZvciAobGV0IHZhbGlkYXRvciBvZiB0aGlzLnZhbGlkYXRvcnMpIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gdmFsaWRhdG9yKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogSWYgbm8gdmFsaWRhdGlvbiBmYWlsdXJlIGFuZCBhIG1hc2sgcHJvdmlkZXIgaXMgZGVmaW5lZCwgdmFsaWRhdGUgdXNpbmcgdGhlIG1hc2suICovXHJcbiAgICAgICAgaWYgKCFyZXN1bHQgJiYgdGhpcy5tYXNrUHJvdmlkZXIpIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tYXNrUHJvdmlkZXIudmFsaWRhdGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBldmVudCBuYW1lIGJhc2VkIG9uIHRoZSB0eXBlIG9mIEhUTUwgZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbGlkYXRvci5cclxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGV2ZW50IHRoYXQgdHJpZ2dlcnMgdmFsaWRhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHNldEV2ZW50TmFtZSgpIHtcclxuICAgICAgICB2YXIgZXZlbnROYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIGV2ZW50IGJhc2VkIG9uIEhUTUwgZWxlbWVudCB0eXBlICovXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmVsZW1lbnQudGFnTmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlIElOUFVUOlxyXG4gICAgICAgICAgICBjYXNlIFRFWFRBUkVBOlxyXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lID0gKHRoaXMuZWxlbWVudC50eXBlID09IENIRUNLQk9YIHx8IHRoaXMuZWxlbWVudC50eXBlID09IFJBRElPIHx8IHRoaXMuZWxlbWVudC50eXBlID09IEZJTEUpID8gQ0hBTkdFIDogSU5QVVQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgU0VMRUNUOlxyXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lID0gQ0hBTkdFO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -5,19 +5,33 @@ import * as i0 from "@angular/core";
5
5
  * Abstract class providing common functionality for processing control expressions in Angular directives.
6
6
  */
7
7
  export class ControlExpressionProcess {
8
- /** Validator function for the control. */
8
+ /**
9
+ * Validator function for the control.
10
+ */
9
11
  validator;
10
- /** Conditional validator function for the control. */
12
+ /**
13
+ * Conditional validator function for the control.
14
+ */
11
15
  conditionalValidator;
12
- /** Configuration for the control. */
16
+ /**
17
+ * Configuration for the control.
18
+ */
13
19
  controlConfig = {};
14
- /** Optional name for the control. */
20
+ /**
21
+ * Optional name for the control.
22
+ */
15
23
  name;
16
- /** Optional form control name. */
24
+ /**
25
+ * Optional form control name.
26
+ */
17
27
  formControlName;
18
- /** Flag indicating whether control processing has occurred. */
28
+ /*
29
+ * Flag indicating whether control processing has occurred.
30
+ */
19
31
  isProcessed = false;
20
- /** Collection of form controls associated with the directive. */
32
+ /**
33
+ * Collection of form controls associated with the directive.
34
+ */
21
35
  controls;
22
36
  /**
23
37
  * Sets the configuration for the control model.
@@ -43,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
43
57
  }], formControlName: [{
44
58
  type: Input
45
59
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC1leHByZXNzaW9uLXByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGlyZWN0aXZlcy90ZW1wbGF0ZS12YWxpZGF0aW9ucy9jb250cm9sLWV4cHJlc3Npb24tcHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFekQ7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLHdCQUF3QjtJQUUxQywwQ0FBMEM7SUFDaEMsU0FBUyxDQUFlO0lBRWxDLHNEQUFzRDtJQUM1QyxvQkFBb0IsQ0FBZTtJQUU3QyxxQ0FBcUM7SUFDM0IsYUFBYSxHQUF1QyxFQUFFLENBQUM7SUFFakUscUNBQXFDO0lBQzVCLElBQUksQ0FBVTtJQUV2QixrQ0FBa0M7SUFDekIsZUFBZSxDQUFVO0lBRWxDLCtEQUErRDtJQUMvRCxXQUFXLEdBQVksS0FBSyxDQUFDO0lBRTdCLGlFQUFpRTtJQUN2RCxRQUFRLENBQWtDO0lBRXBEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsT0FBd0I7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFeEIsc0VBQXNFO1FBQ3RFLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRTtZQUN6RCxPQUFlLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQztZQUV4RSxzQ0FBc0M7WUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7U0FDbEM7SUFDTCxDQUFDOzBIQXRDaUIsd0JBQXdCOzhHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRDdDLFNBQVM7OEJBYUcsSUFBSTtzQkFBWixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFZBTElEQVRPUl9DT05GSUcgfSBmcm9tIFwiLi4vLi4vY29uc3QvYXBwLmNvbnN0XCI7XHJcblxyXG4vKipcclxuICogQWJzdHJhY3QgY2xhc3MgcHJvdmlkaW5nIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBwcm9jZXNzaW5nIGNvbnRyb2wgZXhwcmVzc2lvbnMgaW4gQW5ndWxhciBkaXJlY3RpdmVzLlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250cm9sRXhwcmVzc2lvblByb2Nlc3Mge1xyXG5cclxuICAgIC8qKiBWYWxpZGF0b3IgZnVuY3Rpb24gZm9yIHRoZSBjb250cm9sLiAqL1xyXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvcj86IFZhbGlkYXRvckZuO1xyXG5cclxuICAgIC8qKiBDb25kaXRpb25hbCB2YWxpZGF0b3IgZnVuY3Rpb24gZm9yIHRoZSBjb250cm9sLiAqL1xyXG4gICAgcHJvdGVjdGVkIGNvbmRpdGlvbmFsVmFsaWRhdG9yPzogVmFsaWRhdG9yRm47XHJcblxyXG4gICAgLyoqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb250cm9sLiAqL1xyXG4gICAgcHJvdGVjdGVkIGNvbnRyb2xDb25maWc6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQgPSB7fTtcclxuXHJcbiAgICAvKiogT3B0aW9uYWwgbmFtZSBmb3IgdGhlIGNvbnRyb2wuICovXHJcbiAgICBASW5wdXQoKSBuYW1lPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBPcHRpb25hbCBmb3JtIGNvbnRyb2wgbmFtZS4gKi9cclxuICAgIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvKiogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgY29udHJvbCBwcm9jZXNzaW5nIGhhcyBvY2N1cnJlZC4gKi9cclxuICAgIGlzUHJvY2Vzc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIENvbGxlY3Rpb24gb2YgZm9ybSBjb250cm9scyBhc3NvY2lhdGVkIHdpdGggdGhlIGRpcmVjdGl2ZS4gKi9cclxuICAgIHByb3RlY3RlZCBjb250cm9scz86IHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb250cm9sIG1vZGVsLlxyXG4gICAgICogTWFya3MgdGhlIHByb2Nlc3NpbmcgYXMgY29tcGxldGVkIGFuZCBhc3NpZ25zIHRoZSB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiB0byB0aGUgY29udHJvbCBpZiBwcmVzZW50LlxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgVGhlIGFic3RyYWN0IGNvbnRyb2wgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaXJlY3RpdmUuXHJcbiAgICAgKi9cclxuICAgIHNldE1vZGVsQ29uZmlnKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG4gICAgICAgIHRoaXMuaXNQcm9jZXNzZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAvKiBJZiB0aGVyZSBpcyBhIHZhbGlkYXRvciBjb25maWd1cmF0aW9uLCBhc3NpZ24gaXQgdG8gdGhlIGNvbnRyb2wuICovXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbENvbmZpZyAmJiB0aGlzLmNvbnRyb2xDb25maWcudmFsaWRhdG9yQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIChjb250cm9sIGFzIGFueSlbVkFMSURBVE9SX0NPTkZJR10gPSB0aGlzLmNvbnRyb2xDb25maWcudmFsaWRhdG9yQ29uZmlnO1xyXG5cclxuICAgICAgICAgICAgLyogQ2xlYXIgdGhlIGNvbnRyb2wgY29uZmlndXJhdGlvbi4gKi9cclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQ29uZmlnID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC1leHByZXNzaW9uLXByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGlyZWN0aXZlcy90ZW1wbGF0ZS12YWxpZGF0aW9ucy9jb250cm9sLWV4cHJlc3Npb24tcHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFekQ7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLHdCQUF3QjtJQUMxQzs7T0FFRztJQUNPLFNBQVMsQ0FBZTtJQUVsQzs7T0FFRztJQUNPLG9CQUFvQixDQUFlO0lBRTdDOztPQUVHO0lBQ08sYUFBYSxHQUF1QyxFQUFFLENBQUM7SUFFakU7O09BRUc7SUFFSSxJQUFJLENBQVU7SUFFckI7O09BRUc7SUFFSSxlQUFlLENBQVU7SUFFaEM7O09BRUc7SUFDSSxXQUFXLEdBQVksS0FBSyxDQUFDO0lBRXBDOztPQUVHO0lBQ08sUUFBUSxDQUFtQztJQUVyRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLE9BQXdCO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXhCLHNFQUFzRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUU7WUFDekQsT0FBZSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUM7WUFFeEUsc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQzswSEFyRGlCLHdCQUF3Qjs4R0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUQ3QyxTQUFTOzhCQXFCQyxJQUFJO3NCQURWLEtBQUs7Z0JBT0MsZUFBZTtzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVkFMSURBVE9SX0NPTkZJRyB9IGZyb20gXCIuLi8uLi9jb25zdC9hcHAuY29uc3RcIjtcclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBjbGFzcyBwcm92aWRpbmcgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIHByb2Nlc3NpbmcgY29udHJvbCBleHByZXNzaW9ucyBpbiBBbmd1bGFyIGRpcmVjdGl2ZXMuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbnRyb2xFeHByZXNzaW9uUHJvY2VzcyB7XHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRvciBmdW5jdGlvbiBmb3IgdGhlIGNvbnRyb2wuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCB2YWxpZGF0b3I/OiBWYWxpZGF0b3JGbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbmRpdGlvbmFsIHZhbGlkYXRvciBmdW5jdGlvbiBmb3IgdGhlIGNvbnRyb2wuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjb25kaXRpb25hbFZhbGlkYXRvcj86IFZhbGlkYXRvckZuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnRyb2wuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjb250cm9sQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkID0ge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcHRpb25hbCBuYW1lIGZvciB0aGUgY29udHJvbC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBuYW1lPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3B0aW9uYWwgZm9ybSBjb250cm9sIG5hbWUuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZm9ybUNvbnRyb2xOYW1lPzogc3RyaW5nO1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBjb250cm9sIHByb2Nlc3NpbmcgaGFzIG9jY3VycmVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNQcm9jZXNzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbGxlY3Rpb24gb2YgZm9ybSBjb250cm9scyBhc3NvY2lhdGVkIHdpdGggdGhlIGRpcmVjdGl2ZS5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNvbnRyb2xzPzogeyBbbmFtZTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb250cm9sIG1vZGVsLlxyXG4gICAgICogTWFya3MgdGhlIHByb2Nlc3NpbmcgYXMgY29tcGxldGVkIGFuZCBhc3NpZ25zIHRoZSB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiB0byB0aGUgY29udHJvbCBpZiBwcmVzZW50LlxyXG4gICAgICogQHBhcmFtIGNvbnRyb2wgVGhlIGFic3RyYWN0IGNvbnRyb2wgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaXJlY3RpdmUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRNb2RlbENvbmZpZyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLmlzUHJvY2Vzc2VkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLyogSWYgdGhlcmUgaXMgYSB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiwgYXNzaWduIGl0IHRvIHRoZSBjb250cm9sLiAqL1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xDb25maWcgJiYgdGhpcy5jb250cm9sQ29uZmlnLnZhbGlkYXRvckNvbmZpZykge1xyXG4gICAgICAgICAgICAoY29udHJvbCBhcyBhbnkpW1ZBTElEQVRPUl9DT05GSUddID0gdGhpcy5jb250cm9sQ29uZmlnLnZhbGlkYXRvckNvbmZpZztcclxuXHJcbiAgICAgICAgICAgIC8qIENsZWFyIHRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24uICovXHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbENvbmZpZyA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19