@messaia/cdk 14.0.0 → 15.0.0-rc01

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 (557) hide show
  1. package/esm2020/lib/base/base.module.mjs +8 -8
  2. package/esm2020/lib/base/components/base.component.mjs +3 -3
  3. package/esm2020/lib/base/components/dynamic-table-config-dialog.comnponent.mjs +21 -21
  4. package/esm2020/lib/base/components/generic-form-base.component.mjs +3 -3
  5. package/esm2020/lib/base/components/generic-form.component.mjs +3 -3
  6. package/esm2020/lib/base/components/generic-list.component.mjs +3 -3
  7. package/esm2020/lib/base/components/generic-reactive-form.component.mjs +3 -3
  8. package/esm2020/lib/base/interceptors/base.interceptor.mjs +3 -3
  9. package/esm2020/lib/base/interceptors/caching-interceptor.mjs +3 -3
  10. package/esm2020/lib/base/interceptors/loading.interceptor.mjs +3 -3
  11. package/esm2020/lib/base/services/file.service.mjs +3 -3
  12. package/esm2020/lib/base/services/loading-screen.service.mjs +3 -3
  13. package/esm2020/lib/base/services/print.service.mjs +3 -3
  14. package/esm2020/lib/chips/chips.module.mjs +4 -4
  15. package/esm2020/lib/chips/components/chips.component.mjs +6 -6
  16. package/esm2020/lib/chips/directives/autocomplete-option.directive.mjs +3 -3
  17. package/esm2020/lib/chips/directives/chip.directive.mjs +3 -3
  18. package/esm2020/lib/common/common.module.mjs +4 -4
  19. package/esm2020/lib/common/directives/disable-control.directive.mjs +3 -3
  20. package/esm2020/lib/common/functions/utils.mjs +4 -4
  21. package/esm2020/lib/common/helpers/app-storage.mjs +4 -4
  22. package/esm2020/lib/common/helpers/dynamic-builder.mjs +3 -3
  23. package/esm2020/lib/common/helpers/dynamic-component-compiler.mjs +3 -3
  24. package/esm2020/lib/common/models/app-setting.mjs +3 -3
  25. package/esm2020/lib/common/models/audit-entity.mjs +1 -1
  26. package/esm2020/lib/common/models/base-entity.mjs +1 -1
  27. package/esm2020/lib/common/models/displayname-number-projection.mjs +1 -1
  28. package/esm2020/lib/common/models/displayname-projection.mjs +1 -1
  29. package/esm2020/lib/common/models/name-number-projection.mjs +1 -1
  30. package/esm2020/lib/common/models/name-projection.mjs +1 -1
  31. package/esm2020/lib/common/models/title-projection.mjs +1 -1
  32. package/esm2020/lib/common/pipes/data-source.pipe.mjs +3 -3
  33. package/esm2020/lib/common/pipes/enum.pipe.mjs +3 -3
  34. package/esm2020/lib/common/pipes/file-size.pipe.mjs +3 -3
  35. package/esm2020/lib/common/pipes/filter.pipe.mjs +3 -3
  36. package/esm2020/lib/common/pipes/first-letter.mjs +3 -3
  37. package/esm2020/lib/common/pipes/form-control.pipe.mjs +3 -3
  38. package/esm2020/lib/common/pipes/form-group.pipe.mjs +3 -3
  39. package/esm2020/lib/common/pipes/func.pipe.mjs +3 -3
  40. package/esm2020/lib/common/pipes/keys.mjs +3 -3
  41. package/esm2020/lib/common/pipes/month-name.pipe.mjs +3 -3
  42. package/esm2020/lib/common/pipes/only-number.mjs +3 -3
  43. package/esm2020/lib/common/pipes/order.pipe.mjs +3 -3
  44. package/esm2020/lib/common/pipes/placeholder.pipe.mjs +3 -3
  45. package/esm2020/lib/common/pipes/safe-html.pipe.mjs +3 -3
  46. package/esm2020/lib/common/pipes/time.pipe.mjs +3 -3
  47. package/esm2020/lib/common/pipes/titlecase.pipe.mjs +3 -3
  48. package/esm2020/lib/common/pipes/truncate.pipe.mjs +3 -3
  49. package/esm2020/lib/common/pipes/values.mjs +3 -3
  50. package/esm2020/lib/common/services/base.service.mjs +3 -3
  51. package/esm2020/lib/common/services/enum.service.mjs +3 -3
  52. package/esm2020/lib/dialogs/alert-dialog/alert-dialog.component.mjs +18 -6
  53. package/esm2020/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +20 -6
  54. package/esm2020/lib/dialogs/dialog.component.mjs +12 -12
  55. package/esm2020/lib/dialogs/dialogs.module.mjs +4 -4
  56. package/esm2020/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +5 -5
  57. package/esm2020/lib/dialogs/services/dialog.service.mjs +3 -3
  58. package/esm2020/lib/file/file-input.component.mjs +33 -33
  59. package/esm2020/lib/file/file.module.mjs +4 -4
  60. package/esm2020/lib/form-validators/abstract/typed-form.mjs +1 -1
  61. package/esm2020/lib/form-validators/algorithm/luhn-algorithm.mjs +1 -1
  62. package/esm2020/lib/form-validators/const/app-validators.const.mjs +1 -1
  63. package/esm2020/lib/form-validators/const/app.const.mjs +1 -1
  64. package/esm2020/lib/form-validators/const/config-names.const.mjs +1 -1
  65. package/esm2020/lib/form-validators/const/config-required-fields.const.mjs +1 -1
  66. package/esm2020/lib/form-validators/const/decorators.const.mjs +1 -1
  67. package/esm2020/lib/form-validators/const/events.const.mjs +1 -1
  68. package/esm2020/lib/form-validators/const/html-elements.const.mjs +1 -1
  69. package/esm2020/lib/form-validators/const/iban-country-wise-regex.const.mjs +1 -1
  70. package/esm2020/lib/form-validators/const/index.mjs +1 -1
  71. package/esm2020/lib/form-validators/const/operators.const.mjs +1 -1
  72. package/esm2020/lib/form-validators/const/validation-alphabet-locale.const.mjs +1 -1
  73. package/esm2020/lib/form-validators/const/validator.const.mjs +1 -1
  74. package/esm2020/lib/form-validators/core/defaultContainer.mjs +1 -1
  75. package/esm2020/lib/form-validators/core/validator.interface.mjs +1 -1
  76. package/esm2020/lib/form-validators/core/validator.static.mjs +1 -1
  77. package/esm2020/lib/form-validators/decorators/allOf.decorator.mjs +1 -1
  78. package/esm2020/lib/form-validators/decorators/alpha.decorator.mjs +1 -1
  79. package/esm2020/lib/form-validators/decorators/alphaNumeric.decorator.mjs +1 -1
  80. package/esm2020/lib/form-validators/decorators/and.decorator.mjs +1 -1
  81. package/esm2020/lib/form-validators/decorators/ascii.decorator.mjs +1 -1
  82. package/esm2020/lib/form-validators/decorators/async.decorator.mjs +1 -1
  83. package/esm2020/lib/form-validators/decorators/base-decorator.function.mjs +1 -1
  84. package/esm2020/lib/form-validators/decorators/choice.decorator.mjs +1 -1
  85. package/esm2020/lib/form-validators/decorators/compare.decorator.mjs +1 -1
  86. package/esm2020/lib/form-validators/decorators/compose.decorator.mjs +1 -1
  87. package/esm2020/lib/form-validators/decorators/contains.decorator.mjs +1 -1
  88. package/esm2020/lib/form-validators/decorators/credit-card.decorator.mjs +1 -1
  89. package/esm2020/lib/form-validators/decorators/cusip.decorator.mjs +1 -1
  90. package/esm2020/lib/form-validators/decorators/custom.decorator.mjs +1 -1
  91. package/esm2020/lib/form-validators/decorators/dataUri.decorator.mjs +1 -1
  92. package/esm2020/lib/form-validators/decorators/date.decorator.mjs +1 -1
  93. package/esm2020/lib/form-validators/decorators/different.decorator.mjs +1 -1
  94. package/esm2020/lib/form-validators/decorators/digit.decorator.mjs +1 -1
  95. package/esm2020/lib/form-validators/decorators/email.decorator.mjs +1 -1
  96. package/esm2020/lib/form-validators/decorators/endsWith.decorator.mjs +1 -1
  97. package/esm2020/lib/form-validators/decorators/even.decorator.mjs +1 -1
  98. package/esm2020/lib/form-validators/decorators/extension.decorator.mjs +1 -1
  99. package/esm2020/lib/form-validators/decorators/factor.decorator.mjs +1 -1
  100. package/esm2020/lib/form-validators/decorators/file.decorator.mjs +1 -1
  101. package/esm2020/lib/form-validators/decorators/fileSize.decorator.mjs +1 -1
  102. package/esm2020/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +1 -1
  103. package/esm2020/lib/form-validators/decorators/greater-than.decorator.mjs +1 -1
  104. package/esm2020/lib/form-validators/decorators/grid.decorator.mjs +1 -1
  105. package/esm2020/lib/form-validators/decorators/hexColor.decorator.mjs +1 -1
  106. package/esm2020/lib/form-validators/decorators/image.decorator.mjs +1 -1
  107. package/esm2020/lib/form-validators/decorators/index.mjs +1 -1
  108. package/esm2020/lib/form-validators/decorators/json.decorator.mjs +1 -1
  109. package/esm2020/lib/form-validators/decorators/latLong.decorator.mjs +1 -1
  110. package/esm2020/lib/form-validators/decorators/latitude.decorator.mjs +1 -1
  111. package/esm2020/lib/form-validators/decorators/leapYear.decorator.mjs +1 -1
  112. package/esm2020/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +1 -1
  113. package/esm2020/lib/form-validators/decorators/less-than.decorator.mjs +1 -1
  114. package/esm2020/lib/form-validators/decorators/longitude.decorator.mjs +1 -1
  115. package/esm2020/lib/form-validators/decorators/lowercase.decorator.mjs +1 -1
  116. package/esm2020/lib/form-validators/decorators/mac.decorator.mjs +1 -1
  117. package/esm2020/lib/form-validators/decorators/mask.decorator.mjs +1 -1
  118. package/esm2020/lib/form-validators/decorators/maxDate.decorator.mjs +1 -1
  119. package/esm2020/lib/form-validators/decorators/maxLength.decorator.mjs +1 -1
  120. package/esm2020/lib/form-validators/decorators/maxNumber.decorator.mjs +1 -1
  121. package/esm2020/lib/form-validators/decorators/maxTime.decorator.mjs +1 -1
  122. package/esm2020/lib/form-validators/decorators/minDate.decorator.mjs +1 -1
  123. package/esm2020/lib/form-validators/decorators/minLength.decorator.mjs +1 -1
  124. package/esm2020/lib/form-validators/decorators/minNumber.decorator.mjs +1 -1
  125. package/esm2020/lib/form-validators/decorators/minTime.decorator.mjs +1 -1
  126. package/esm2020/lib/form-validators/decorators/model.decorator.mjs +1 -1
  127. package/esm2020/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +1 -1
  128. package/esm2020/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +1 -1
  129. package/esm2020/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +1 -1
  130. package/esm2020/lib/form-validators/decorators/non-validation-decorators/update-on.decorator.mjs +1 -1
  131. package/esm2020/lib/form-validators/decorators/noneOf.decorator.mjs +1 -1
  132. package/esm2020/lib/form-validators/decorators/not.decorator.mjs +1 -1
  133. package/esm2020/lib/form-validators/decorators/notEmpty.decorator.mjs +1 -1
  134. package/esm2020/lib/form-validators/decorators/numeric.decorator.mjs +1 -1
  135. package/esm2020/lib/form-validators/decorators/odd.decorator.mjs +1 -1
  136. package/esm2020/lib/form-validators/decorators/oneOf.decorator.mjs +1 -1
  137. package/esm2020/lib/form-validators/decorators/or.decorator.mjs +1 -1
  138. package/esm2020/lib/form-validators/decorators/password.decorator.mjs +1 -1
  139. package/esm2020/lib/form-validators/decorators/pattern.decorator.mjs +1 -1
  140. package/esm2020/lib/form-validators/decorators/port.decorator.mjs +1 -1
  141. package/esm2020/lib/form-validators/decorators/primeNumber.decorator.mjs +1 -1
  142. package/esm2020/lib/form-validators/decorators/prop-array.decorator.mjs +1 -1
  143. package/esm2020/lib/form-validators/decorators/prop-object.decorator.mjs +1 -1
  144. package/esm2020/lib/form-validators/decorators/prop.decorator.mjs +1 -1
  145. package/esm2020/lib/form-validators/decorators/range.decorator.mjs +1 -1
  146. package/esm2020/lib/form-validators/decorators/required.decorator.mjs +1 -1
  147. package/esm2020/lib/form-validators/decorators/requiredTrue.decorator.mjs +1 -1
  148. package/esm2020/lib/form-validators/decorators/rule.decorator.mjs +1 -1
  149. package/esm2020/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +1 -1
  150. package/esm2020/lib/form-validators/decorators/sanitize/escape.decorator.mjs +1 -1
  151. package/esm2020/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +1 -1
  152. package/esm2020/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +1 -1
  153. package/esm2020/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +1 -1
  154. package/esm2020/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +1 -1
  155. package/esm2020/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +1 -1
  156. package/esm2020/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +1 -1
  157. package/esm2020/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +1 -1
  158. package/esm2020/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +1 -1
  159. package/esm2020/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +1 -1
  160. package/esm2020/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +1 -1
  161. package/esm2020/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +1 -1
  162. package/esm2020/lib/form-validators/decorators/sanitize/toString.decorator.mjs +1 -1
  163. package/esm2020/lib/form-validators/decorators/sanitize/trim.decorator.mjs +1 -1
  164. package/esm2020/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +1 -1
  165. package/esm2020/lib/form-validators/decorators/startsWith.decorator.mjs +1 -1
  166. package/esm2020/lib/form-validators/decorators/time.decorator.mjs +1 -1
  167. package/esm2020/lib/form-validators/decorators/unique.decorator.mjs +1 -1
  168. package/esm2020/lib/form-validators/decorators/uppercase.decorator.mjs +1 -1
  169. package/esm2020/lib/form-validators/decorators/url.decorator.mjs +1 -1
  170. package/esm2020/lib/form-validators/directives/base-directive.mjs +4 -4
  171. package/esm2020/lib/form-validators/directives/control-host.directive.mjs +4 -4
  172. package/esm2020/lib/form-validators/directives/html-control-template.directive.mjs +4 -4
  173. package/esm2020/lib/form-validators/directives/rx-form.directive.mjs +4 -4
  174. package/esm2020/lib/form-validators/directives/template-validations/async-validation.directive.mjs +4 -4
  175. package/esm2020/lib/form-validators/directives/template-validations/base-validator.directive.mjs +4 -4
  176. package/esm2020/lib/form-validators/directives/template-validations/control-expression-process.mjs +4 -4
  177. package/esm2020/lib/form-validators/directives/template-validations/file-control.directive.mjs +4 -4
  178. package/esm2020/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +4 -4
  179. package/esm2020/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +4 -4
  180. package/esm2020/lib/form-validators/domain/disable-provider.mjs +1 -1
  181. package/esm2020/lib/form-validators/domain/element-processor/decimal.provider.mjs +4 -4
  182. package/esm2020/lib/form-validators/domain/element-processor/mask.provider.mjs +1 -1
  183. package/esm2020/lib/form-validators/domain/form-data.mjs +1 -1
  184. package/esm2020/lib/form-validators/enums/error-message-binding-strategy.mjs +1 -1
  185. package/esm2020/lib/form-validators/enums/index.mjs +1 -1
  186. package/esm2020/lib/form-validators/enums/ip-version.mjs +1 -1
  187. package/esm2020/lib/form-validators/enums/numeric-value-type.mjs +1 -1
  188. package/esm2020/lib/form-validators/enums/reset-type.mjs +1 -1
  189. package/esm2020/lib/form-validators/enums/url-validation-type.mjs +1 -1
  190. package/esm2020/lib/form-validators/models/config/alpha-config.mjs +1 -1
  191. package/esm2020/lib/form-validators/models/config/array-config.mjs +1 -1
  192. package/esm2020/lib/form-validators/models/config/base-config-fn.mjs +1 -1
  193. package/esm2020/lib/form-validators/models/config/base-config.mjs +1 -1
  194. package/esm2020/lib/form-validators/models/config/base-date-config.mjs +1 -1
  195. package/esm2020/lib/form-validators/models/config/choice-config.mjs +1 -1
  196. package/esm2020/lib/form-validators/models/config/compare-config.mjs +1 -1
  197. package/esm2020/lib/form-validators/models/config/component-config.mjs +1 -1
  198. package/esm2020/lib/form-validators/models/config/compose-config.mjs +1 -1
  199. package/esm2020/lib/form-validators/models/config/contains-config.mjs +1 -1
  200. package/esm2020/lib/form-validators/models/config/credit-card-config.mjs +1 -1
  201. package/esm2020/lib/form-validators/models/config/custom-config.mjs +1 -1
  202. package/esm2020/lib/form-validators/models/config/date-config.mjs +1 -1
  203. package/esm2020/lib/form-validators/models/config/default-config.mjs +1 -1
  204. package/esm2020/lib/form-validators/models/config/digit-config.mjs +1 -1
  205. package/esm2020/lib/form-validators/models/config/disable-config.mjs +1 -1
  206. package/esm2020/lib/form-validators/models/config/element-class-config.mjs +1 -1
  207. package/esm2020/lib/form-validators/models/config/email-config.mjs +1 -1
  208. package/esm2020/lib/form-validators/models/config/error-config.mjs +1 -1
  209. package/esm2020/lib/form-validators/models/config/extension-config.mjs +1 -1
  210. package/esm2020/lib/form-validators/models/config/factor-config.mjs +1 -1
  211. package/esm2020/lib/form-validators/models/config/field-config.mjs +1 -1
  212. package/esm2020/lib/form-validators/models/config/file-config.mjs +1 -1
  213. package/esm2020/lib/form-validators/models/config/hex-color-config.mjs +1 -1
  214. package/esm2020/lib/form-validators/models/config/iban-config.mjs +1 -1
  215. package/esm2020/lib/form-validators/models/config/image-config.mjs +1 -1
  216. package/esm2020/lib/form-validators/models/config/index.mjs +1 -1
  217. package/esm2020/lib/form-validators/models/config/ip-config.mjs +1 -1
  218. package/esm2020/lib/form-validators/models/config/logical-operator-config.mjs +1 -1
  219. package/esm2020/lib/form-validators/models/config/mask-config.mjs +1 -1
  220. package/esm2020/lib/form-validators/models/config/max-date-config.mjs +1 -1
  221. package/esm2020/lib/form-validators/models/config/message-config.mjs +1 -1
  222. package/esm2020/lib/form-validators/models/config/min-date-config.mjs +1 -1
  223. package/esm2020/lib/form-validators/models/config/model-config.mjs +1 -1
  224. package/esm2020/lib/form-validators/models/config/number-config.mjs +1 -1
  225. package/esm2020/lib/form-validators/models/config/numeric-config.mjs +1 -1
  226. package/esm2020/lib/form-validators/models/config/password-config.mjs +1 -1
  227. package/esm2020/lib/form-validators/models/config/pattern-config.mjs +1 -1
  228. package/esm2020/lib/form-validators/models/config/prop-config.mjs +1 -1
  229. package/esm2020/lib/form-validators/models/config/props-config.mjs +1 -1
  230. package/esm2020/lib/form-validators/models/config/range-config.mjs +1 -1
  231. package/esm2020/lib/form-validators/models/config/relational-operator-config.mjs +1 -1
  232. package/esm2020/lib/form-validators/models/config/required-config.mjs +1 -1
  233. package/esm2020/lib/form-validators/models/config/rule-config.mjs +1 -1
  234. package/esm2020/lib/form-validators/models/config/sanitize-config.mjs +1 -1
  235. package/esm2020/lib/form-validators/models/config/size-config.mjs +1 -1
  236. package/esm2020/lib/form-validators/models/config/string-comparison-config.mjs +1 -1
  237. package/esm2020/lib/form-validators/models/config/string-value-config.mjs +1 -1
  238. package/esm2020/lib/form-validators/models/config/time-config.mjs +1 -1
  239. package/esm2020/lib/form-validators/models/config/todate-config.mjs +1 -1
  240. package/esm2020/lib/form-validators/models/config/unique-config.mjs +1 -1
  241. package/esm2020/lib/form-validators/models/config/update-on-config.mjs +1 -1
  242. package/esm2020/lib/form-validators/models/config/url-config.mjs +1 -1
  243. package/esm2020/lib/form-validators/models/form-builder-configuration.mjs +1 -1
  244. package/esm2020/lib/form-validators/models/index.mjs +1 -1
  245. package/esm2020/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +1 -1
  246. package/esm2020/lib/form-validators/models/interface/auto-instance-config.interface.mjs +1 -1
  247. package/esm2020/lib/form-validators/models/interface/form-data-config.mjs +1 -1
  248. package/esm2020/lib/form-validators/models/interface/i-abstract-control.mjs +1 -1
  249. package/esm2020/lib/form-validators/models/interface/i-form-group.mjs +1 -1
  250. package/esm2020/lib/form-validators/models/interface/instance-argument.interface.mjs +1 -1
  251. package/esm2020/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +1 -1
  252. package/esm2020/lib/form-validators/models/interface/options.mjs +1 -1
  253. package/esm2020/lib/form-validators/models/password-validation.model.mjs +1 -1
  254. package/esm2020/lib/form-validators/models/prop-validation-config.mjs +1 -1
  255. package/esm2020/lib/form-validators/reactive-form-validators/allOf.validator.mjs +1 -1
  256. package/esm2020/lib/form-validators/reactive-form-validators/alpha.validator.mjs +1 -1
  257. package/esm2020/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +1 -1
  258. package/esm2020/lib/form-validators/reactive-form-validators/and.validator.mjs +1 -1
  259. package/esm2020/lib/form-validators/reactive-form-validators/ascii.validator.mjs +1 -1
  260. package/esm2020/lib/form-validators/reactive-form-validators/choice.validator.mjs +1 -1
  261. package/esm2020/lib/form-validators/reactive-form-validators/compare.validator.mjs +1 -1
  262. package/esm2020/lib/form-validators/reactive-form-validators/compose.validator.mjs +1 -1
  263. package/esm2020/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +1 -1
  264. package/esm2020/lib/form-validators/reactive-form-validators/contains.validator.mjs +1 -1
  265. package/esm2020/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +1 -1
  266. package/esm2020/lib/form-validators/reactive-form-validators/cusip.validator.mjs +1 -1
  267. package/esm2020/lib/form-validators/reactive-form-validators/custom.validator.mjs +1 -1
  268. package/esm2020/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +1 -1
  269. package/esm2020/lib/form-validators/reactive-form-validators/date.validator.mjs +1 -1
  270. package/esm2020/lib/form-validators/reactive-form-validators/different.validator.mjs +1 -1
  271. package/esm2020/lib/form-validators/reactive-form-validators/digit.validator.mjs +1 -1
  272. package/esm2020/lib/form-validators/reactive-form-validators/email.validator.mjs +1 -1
  273. package/esm2020/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +1 -1
  274. package/esm2020/lib/form-validators/reactive-form-validators/even.validator.mjs +1 -1
  275. package/esm2020/lib/form-validators/reactive-form-validators/extension.validator.mjs +1 -1
  276. package/esm2020/lib/form-validators/reactive-form-validators/factor.validator.mjs +1 -1
  277. package/esm2020/lib/form-validators/reactive-form-validators/file.validator.mjs +1 -1
  278. package/esm2020/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +1 -1
  279. package/esm2020/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +1 -1
  280. package/esm2020/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +1 -1
  281. package/esm2020/lib/form-validators/reactive-form-validators/grid.validator.mjs +1 -1
  282. package/esm2020/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +1 -1
  283. package/esm2020/lib/form-validators/reactive-form-validators/iban.validator.mjs +1 -1
  284. package/esm2020/lib/form-validators/reactive-form-validators/image.validator.mjs +1 -1
  285. package/esm2020/lib/form-validators/reactive-form-validators/index.mjs +1 -1
  286. package/esm2020/lib/form-validators/reactive-form-validators/ip.validator.mjs +1 -1
  287. package/esm2020/lib/form-validators/reactive-form-validators/json.validator.mjs +1 -1
  288. package/esm2020/lib/form-validators/reactive-form-validators/latLong.validator.mjs +1 -1
  289. package/esm2020/lib/form-validators/reactive-form-validators/latitude.validator.mjs +1 -1
  290. package/esm2020/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +1 -1
  291. package/esm2020/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +1 -1
  292. package/esm2020/lib/form-validators/reactive-form-validators/less-than.validator.mjs +1 -1
  293. package/esm2020/lib/form-validators/reactive-form-validators/longitude.validator.mjs +1 -1
  294. package/esm2020/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +1 -1
  295. package/esm2020/lib/form-validators/reactive-form-validators/mac.validator.mjs +1 -1
  296. package/esm2020/lib/form-validators/reactive-form-validators/mask.validator.mjs +1 -1
  297. package/esm2020/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +1 -1
  298. package/esm2020/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +1 -1
  299. package/esm2020/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +1 -1
  300. package/esm2020/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +1 -1
  301. package/esm2020/lib/form-validators/reactive-form-validators/minDate.validator.mjs +1 -1
  302. package/esm2020/lib/form-validators/reactive-form-validators/minLength.validator.mjs +1 -1
  303. package/esm2020/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +1 -1
  304. package/esm2020/lib/form-validators/reactive-form-validators/minTime.validator.mjs +1 -1
  305. package/esm2020/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +1 -1
  306. package/esm2020/lib/form-validators/reactive-form-validators/not.validator.mjs +1 -1
  307. package/esm2020/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +1 -1
  308. package/esm2020/lib/form-validators/reactive-form-validators/numeric.validator.mjs +1 -1
  309. package/esm2020/lib/form-validators/reactive-form-validators/odd.validator.mjs +1 -1
  310. package/esm2020/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +1 -1
  311. package/esm2020/lib/form-validators/reactive-form-validators/or.validator.mjs +1 -1
  312. package/esm2020/lib/form-validators/reactive-form-validators/password.validator.mjs +1 -1
  313. package/esm2020/lib/form-validators/reactive-form-validators/pattern.validator.mjs +1 -1
  314. package/esm2020/lib/form-validators/reactive-form-validators/port.validator.mjs +1 -1
  315. package/esm2020/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +1 -1
  316. package/esm2020/lib/form-validators/reactive-form-validators/range.validator.mjs +1 -1
  317. package/esm2020/lib/form-validators/reactive-form-validators/required.validator.mjs +1 -1
  318. package/esm2020/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +1 -1
  319. package/esm2020/lib/form-validators/reactive-form-validators/rule.validator.mjs +1 -1
  320. package/esm2020/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +1 -1
  321. package/esm2020/lib/form-validators/reactive-form-validators/time.validator.mjs +1 -1
  322. package/esm2020/lib/form-validators/reactive-form-validators/unique.validator.mjs +1 -1
  323. package/esm2020/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +1 -1
  324. package/esm2020/lib/form-validators/reactive-form-validators/url.validator.mjs +1 -1
  325. package/esm2020/lib/form-validators/services/base-form-builder.mjs +1 -1
  326. package/esm2020/lib/form-validators/services/entity.service.mjs +1 -1
  327. package/esm2020/lib/form-validators/services/form-control.mjs +1 -1
  328. package/esm2020/lib/form-validators/services/form-group.mjs +1 -1
  329. package/esm2020/lib/form-validators/services/reactive-form.module.mjs +9 -9
  330. package/esm2020/lib/form-validators/services/rx-form-array.mjs +1 -1
  331. package/esm2020/lib/form-validators/services/rx-form-builder.mjs +4 -4
  332. package/esm2020/lib/form-validators/services/rx-form-group.mjs +1 -1
  333. package/esm2020/lib/form-validators/services/typed-form-builder.mjs +4 -4
  334. package/esm2020/lib/form-validators/util/alphabet-regex.locale.mjs +1 -1
  335. package/esm2020/lib/form-validators/util/app-util.mjs +1 -1
  336. package/esm2020/lib/form-validators/util/check-length.mjs +1 -1
  337. package/esm2020/lib/form-validators/util/config-provider.mjs +1 -1
  338. package/esm2020/lib/form-validators/util/date-checker.function.mjs +1 -1
  339. package/esm2020/lib/form-validators/util/date-provider.mjs +1 -1
  340. package/esm2020/lib/form-validators/util/form-const.mjs +1 -1
  341. package/esm2020/lib/form-validators/util/form-provider.mjs +1 -1
  342. package/esm2020/lib/form-validators/util/index.mjs +1 -1
  343. package/esm2020/lib/form-validators/util/instance-provider.function.mjs +1 -1
  344. package/esm2020/lib/form-validators/util/ip-checker.mjs +1 -1
  345. package/esm2020/lib/form-validators/util/linq.mjs +1 -1
  346. package/esm2020/lib/form-validators/util/object-maker.mjs +1 -1
  347. package/esm2020/lib/form-validators/util/reactive-form-config.mjs +1 -1
  348. package/esm2020/lib/form-validators/util/regex-rules.mjs +1 -1
  349. package/esm2020/lib/form-validators/util/regex-validator.mjs +1 -1
  350. package/esm2020/lib/form-validators/util/relational-checker.function.mjs +1 -1
  351. package/esm2020/lib/form-validators/util/reset-form.mjs +1 -1
  352. package/esm2020/lib/form-validators/util/sanitizers.mjs +1 -1
  353. package/esm2020/lib/form-validators/util/time-checker.function.mjs +1 -1
  354. package/esm2020/lib/form-validators/util/type.mjs +1 -1
  355. package/esm2020/lib/form-validators/util/validator-value-checker.mjs +1 -1
  356. package/esm2020/lib/form-validators/validators-extension/allOf-validator.extension.mjs +1 -1
  357. package/esm2020/lib/form-validators/validators-extension/alpha-validator.extension.mjs +1 -1
  358. package/esm2020/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +1 -1
  359. package/esm2020/lib/form-validators/validators-extension/and-validator.extension.mjs +1 -1
  360. package/esm2020/lib/form-validators/validators-extension/ascii-validator.extension.mjs +1 -1
  361. package/esm2020/lib/form-validators/validators-extension/base-validator.function.mjs +1 -1
  362. package/esm2020/lib/form-validators/validators-extension/choice-validator.extension.mjs +1 -1
  363. package/esm2020/lib/form-validators/validators-extension/compare-validator.extension.mjs +1 -1
  364. package/esm2020/lib/form-validators/validators-extension/compose-validator.extension.mjs +1 -1
  365. package/esm2020/lib/form-validators/validators-extension/contains-validator.extension.mjs +1 -1
  366. package/esm2020/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +1 -1
  367. package/esm2020/lib/form-validators/validators-extension/cusip-validator.extension.mjs +1 -1
  368. package/esm2020/lib/form-validators/validators-extension/custom-validator.extension.mjs +1 -1
  369. package/esm2020/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +1 -1
  370. package/esm2020/lib/form-validators/validators-extension/date-validator.extension.mjs +1 -1
  371. package/esm2020/lib/form-validators/validators-extension/different-validator.extension.mjs +1 -1
  372. package/esm2020/lib/form-validators/validators-extension/digit-validator.extension.mjs +1 -1
  373. package/esm2020/lib/form-validators/validators-extension/email-validator.extension.mjs +1 -1
  374. package/esm2020/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +1 -1
  375. package/esm2020/lib/form-validators/validators-extension/even-validator.extension.mjs +1 -1
  376. package/esm2020/lib/form-validators/validators-extension/extension-validator.extension.mjs +1 -1
  377. package/esm2020/lib/form-validators/validators-extension/factor-validator.extension.mjs +1 -1
  378. package/esm2020/lib/form-validators/validators-extension/file-validator.extension.mjs +1 -1
  379. package/esm2020/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +1 -1
  380. package/esm2020/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +1 -1
  381. package/esm2020/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +1 -1
  382. package/esm2020/lib/form-validators/validators-extension/grid-validator.extension.mjs +1 -1
  383. package/esm2020/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +1 -1
  384. package/esm2020/lib/form-validators/validators-extension/iban-validator.extension.mjs +1 -1
  385. package/esm2020/lib/form-validators/validators-extension/image-validator.extension.mjs +1 -1
  386. package/esm2020/lib/form-validators/validators-extension/index.mjs +1 -1
  387. package/esm2020/lib/form-validators/validators-extension/ip-validator.extension.mjs +1 -1
  388. package/esm2020/lib/form-validators/validators-extension/json-validator.extension.mjs +1 -1
  389. package/esm2020/lib/form-validators/validators-extension/latLong-validator.extension.mjs +1 -1
  390. package/esm2020/lib/form-validators/validators-extension/latitude-validator.extension.mjs +1 -1
  391. package/esm2020/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +1 -1
  392. package/esm2020/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +1 -1
  393. package/esm2020/lib/form-validators/validators-extension/less-than-validator.extension.mjs +1 -1
  394. package/esm2020/lib/form-validators/validators-extension/longitude-validator.extension.mjs +1 -1
  395. package/esm2020/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +1 -1
  396. package/esm2020/lib/form-validators/validators-extension/mac-validator.extension.mjs +1 -1
  397. package/esm2020/lib/form-validators/validators-extension/mask-validator.extension.mjs +1 -1
  398. package/esm2020/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +1 -1
  399. package/esm2020/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +1 -1
  400. package/esm2020/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +1 -1
  401. package/esm2020/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +1 -1
  402. package/esm2020/lib/form-validators/validators-extension/minDate-validator.extension.mjs +1 -1
  403. package/esm2020/lib/form-validators/validators-extension/minLength-validator.extension.mjs +1 -1
  404. package/esm2020/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +1 -1
  405. package/esm2020/lib/form-validators/validators-extension/minTime-validator.extension.mjs +1 -1
  406. package/esm2020/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +1 -1
  407. package/esm2020/lib/form-validators/validators-extension/not-validator.extension.mjs +1 -1
  408. package/esm2020/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +1 -1
  409. package/esm2020/lib/form-validators/validators-extension/numeric-validator.extension.mjs +1 -1
  410. package/esm2020/lib/form-validators/validators-extension/odd-validator.extension.mjs +1 -1
  411. package/esm2020/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +1 -1
  412. package/esm2020/lib/form-validators/validators-extension/or-validator.extension.mjs +1 -1
  413. package/esm2020/lib/form-validators/validators-extension/password-validator.extension.mjs +1 -1
  414. package/esm2020/lib/form-validators/validators-extension/pattern-validator.extension.mjs +1 -1
  415. package/esm2020/lib/form-validators/validators-extension/port-validator.extension.mjs +1 -1
  416. package/esm2020/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +1 -1
  417. package/esm2020/lib/form-validators/validators-extension/range-validator.extension.mjs +1 -1
  418. package/esm2020/lib/form-validators/validators-extension/required-validator.extension.mjs +1 -1
  419. package/esm2020/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +1 -1
  420. package/esm2020/lib/form-validators/validators-extension/rxweb-validators.mjs +1 -1
  421. package/esm2020/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +1 -1
  422. package/esm2020/lib/form-validators/validators-extension/time-validator.extension.mjs +1 -1
  423. package/esm2020/lib/form-validators/validators-extension/unique-validator.extension.mjs +1 -1
  424. package/esm2020/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +1 -1
  425. package/esm2020/lib/form-validators/validators-extension/url-validator.extension.mjs +1 -1
  426. package/esm2020/lib/form-validators/validators-function/alpha-validation.function.mjs +1 -1
  427. package/esm2020/lib/form-validators/validators-function/regex-validation.function.mjs +1 -1
  428. package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +17 -17
  429. package/esm2020/lib/forms/directives/mat-form-field-editor.directive.mjs +3 -3
  430. package/esm2020/lib/forms/directives/mat-form-field-readonly.directive.mjs +3 -3
  431. package/esm2020/lib/forms/forms.module.mjs +4 -4
  432. package/esm2020/lib/forms/helpers/abstract-mat-form-field.mjs +17 -7
  433. package/esm2020/lib/forms/helpers/value-accessor-base.mjs +3 -3
  434. package/esm2020/lib/forms/validators/empty-string-reset.directive.mjs +3 -3
  435. package/esm2020/lib/forms/validators/equal-validator.directive.mjs +3 -3
  436. package/esm2020/lib/forms/validators/native-element-injector.directive.mjs +3 -3
  437. package/esm2020/lib/forms/validators/unique-validator-directive.mjs +3 -3
  438. package/esm2020/lib/http/http.module.mjs +4 -4
  439. package/esm2020/lib/layout/dynamic-menu/dynamic-menu.component.mjs +3 -3
  440. package/esm2020/lib/layout/layout-card-over/layout-card-over.component.mjs +5 -5
  441. package/esm2020/lib/layout/layout-footer/layout-footer.component.mjs +3 -3
  442. package/esm2020/lib/layout/layout-manage-list/layout-manage-list.component.mjs +4 -4
  443. package/esm2020/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +9 -9
  444. package/esm2020/lib/layout/layout-nav/layout-nav.component.mjs +3 -3
  445. package/esm2020/lib/layout/layout-nav-list/layout-nav-list.component.mjs +3 -3
  446. package/esm2020/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +9 -9
  447. package/esm2020/lib/layout/layout-toggle.class.mjs +3 -3
  448. package/esm2020/lib/layout/layout.component.mjs +3 -3
  449. package/esm2020/lib/layout/layout.directives.mjs +9 -9
  450. package/esm2020/lib/layout/layout.module.mjs +4 -4
  451. package/esm2020/lib/layout/list-toolbar/list-toolbar.component.mjs +3 -3
  452. package/esm2020/lib/layout/navigation-drawer/navigation-drawer.component.mjs +10 -10
  453. package/esm2020/lib/media/directives/media-toggle.directive.mjs +3 -3
  454. package/esm2020/lib/media/media.module.mjs +4 -4
  455. package/esm2020/lib/media/services/media.service.mjs +3 -3
  456. package/esm2020/lib/menu/components/menu.component.mjs +6 -7
  457. package/esm2020/lib/menu/menu.module.mjs +4 -4
  458. package/esm2020/lib/menu/models/menu-item.mjs +1 -1
  459. package/esm2020/lib/menu/models/menu.mjs +1 -1
  460. package/esm2020/lib/menu/services/menu-items.service.mjs +3 -3
  461. package/esm2020/lib/menu/services/menu.resolve.mjs +6 -6
  462. package/esm2020/lib/menu/services/menu.service.mjs +3 -3
  463. package/esm2020/lib/search/search.module.mjs +4 -4
  464. package/esm2020/lib/search/vd-search-box/vd-search-box.component.mjs +4 -4
  465. package/esm2020/lib/search/vd-search-input/vd-search-input.component.mjs +7 -7
  466. package/esm2020/lib/select/components/select.component.mjs +14 -10
  467. package/esm2020/lib/select/directives/vd-select-option.directive.mjs +3 -3
  468. package/esm2020/lib/select/directives/vd-select-trigger.directive.mjs +3 -3
  469. package/esm2020/lib/select/select.module.mjs +4 -4
  470. package/esm2020/lib/table/components/dynamic-table/dynamic-table.component.mjs +5 -5
  471. package/esm2020/lib/table/components/filter-clear.component.mjs +10 -10
  472. package/esm2020/lib/table/components/filter-date.component.mjs +28 -19
  473. package/esm2020/lib/table/components/filter-input.component.mjs +31 -20
  474. package/esm2020/lib/table/components/filter-select.component.mjs +41 -15
  475. package/esm2020/lib/table/directives/data-source-filter.directive.mjs +3 -3
  476. package/esm2020/lib/table/functions/decorators.mjs +2 -2
  477. package/esm2020/lib/table/models/table-column-config.mjs +1 -1
  478. package/esm2020/lib/table/paginator-intl.mjs +3 -3
  479. package/esm2020/lib/table/table.module.mjs +4 -4
  480. package/fesm2015/messaia-cdk.mjs +660 -573
  481. package/fesm2015/messaia-cdk.mjs.map +1 -1
  482. package/fesm2020/messaia-cdk.mjs +661 -574
  483. package/fesm2020/messaia-cdk.mjs.map +1 -1
  484. package/lib/base/components/base.component.d.ts +1 -1
  485. package/lib/base/components/dynamic-table-config-dialog.comnponent.d.ts +1 -1
  486. package/lib/base/components/generic-form-base.component.d.ts +1 -1
  487. package/lib/base/components/generic-form.component.d.ts +1 -1
  488. package/lib/base/components/generic-list.component.d.ts +1 -1
  489. package/lib/base/components/generic-reactive-form.component.d.ts +1 -1
  490. package/lib/chips/components/chips.component.d.ts +1 -1
  491. package/lib/chips/directives/autocomplete-option.directive.d.ts +1 -1
  492. package/lib/chips/directives/chip.directive.d.ts +1 -1
  493. package/lib/common/directives/disable-control.directive.d.ts +1 -1
  494. package/lib/common/functions/utils.d.ts +1 -1
  495. package/lib/common/helpers/app-storage.d.ts +1 -1
  496. package/lib/common/pipes/only-number.d.ts +1 -1
  497. package/lib/common/pipes/order.pipe.d.ts +1 -1
  498. package/lib/common/styles/_common-theme.scss +8 -7
  499. package/lib/common/styles/_layout.scss +1 -1
  500. package/lib/common/styles/core/_button.scss +1 -1
  501. package/lib/common/styles/core/_card.scss +40 -36
  502. package/lib/common/styles/core/_icons.scss +2 -1
  503. package/lib/common/styles/core/_sidenav.scss +2 -1
  504. package/lib/common/styles/utilities/_general.scss +211 -31
  505. package/lib/common/theming/_all-theme.scss +4 -0
  506. package/lib/dialogs/alert-dialog/alert-dialog.component.d.ts +1 -1
  507. package/lib/dialogs/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  508. package/lib/dialogs/dialog.component.d.ts +4 -4
  509. package/lib/dialogs/prompt-dialog/prompt-dialog.component.d.ts +1 -1
  510. package/lib/file/file-input.component.d.ts +1 -1
  511. package/lib/form-validators/directives/base-directive.d.ts +1 -1
  512. package/lib/form-validators/directives/control-host.directive.d.ts +1 -1
  513. package/lib/form-validators/directives/html-control-template.directive.d.ts +1 -1
  514. package/lib/form-validators/directives/rx-form.directive.d.ts +1 -1
  515. package/lib/form-validators/directives/template-validations/async-validation.directive.d.ts +1 -1
  516. package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +1 -1
  517. package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +1 -1
  518. package/lib/form-validators/directives/template-validations/file-control.directive.d.ts +1 -1
  519. package/lib/form-validators/directives/template-validations/image-file-control.directive.d.ts +1 -1
  520. package/lib/form-validators/directives/template-validations/rxformcontrol.directive.d.ts +1 -1
  521. package/lib/forms/components/generic-form/generic-form.component.d.ts +5 -5
  522. package/lib/forms/directives/mat-form-field-editor.directive.d.ts +1 -1
  523. package/lib/forms/directives/mat-form-field-readonly.directive.d.ts +1 -1
  524. package/lib/forms/helpers/abstract-mat-form-field.d.ts +8 -3
  525. package/lib/forms/helpers/value-accessor-base.d.ts +1 -1
  526. package/lib/forms/validators/empty-string-reset.directive.d.ts +1 -1
  527. package/lib/forms/validators/equal-validator.directive.d.ts +1 -1
  528. package/lib/forms/validators/native-element-injector.directive.d.ts +1 -1
  529. package/lib/forms/validators/unique-validator-directive.d.ts +1 -1
  530. package/lib/layout/_layout-theme.scss +120 -2
  531. package/lib/layout/dynamic-menu/dynamic-menu.component.d.ts +1 -1
  532. package/lib/layout/layout-card-over/layout-card-over.component.d.ts +1 -1
  533. package/lib/layout/layout-footer/layout-footer.component.d.ts +1 -1
  534. package/lib/layout/layout-manage-list/layout-manage-list.component.d.ts +1 -1
  535. package/lib/layout/layout-manage-list/layout-manage-list.directives.d.ts +3 -3
  536. package/lib/layout/layout-nav/layout-nav.component.d.ts +1 -1
  537. package/lib/layout/layout-nav-list/layout-nav-list.component.d.ts +1 -1
  538. package/lib/layout/layout-nav-list/layout-nav-list.directives.d.ts +3 -3
  539. package/lib/layout/layout-toggle.class.d.ts +1 -1
  540. package/lib/layout/layout.component.d.ts +1 -1
  541. package/lib/layout/layout.directives.d.ts +3 -3
  542. package/lib/layout/list-toolbar/list-toolbar.component.d.ts +1 -1
  543. package/lib/layout/navigation-drawer/navigation-drawer.component.d.ts +3 -3
  544. package/lib/media/directives/media-toggle.directive.d.ts +1 -1
  545. package/lib/menu/components/menu.component.d.ts +1 -1
  546. package/lib/search/vd-search-box/vd-search-box.component.d.ts +1 -1
  547. package/lib/search/vd-search-input/vd-search-input.component.d.ts +1 -1
  548. package/lib/select/components/select.component.d.ts +4 -5
  549. package/lib/select/directives/vd-select-option.directive.d.ts +1 -1
  550. package/lib/select/directives/vd-select-trigger.directive.d.ts +1 -1
  551. package/lib/table/components/dynamic-table/dynamic-table.component.d.ts +1 -1
  552. package/lib/table/components/filter-clear.component.d.ts +1 -1
  553. package/lib/table/components/filter-date.component.d.ts +10 -1
  554. package/lib/table/components/filter-input.component.d.ts +10 -1
  555. package/lib/table/components/filter-select.component.d.ts +11 -2
  556. package/lib/table/directives/data-source-filter.directive.d.ts +1 -1
  557. package/package.json +1 -1
@@ -43,7 +43,7 @@ export class VdChipsComponent extends AbstractMatFormField {
43
43
  * @param elementRef
44
44
  */
45
45
  constructor(injector, media, changeDetectorRef, ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, focusMonitor, elementRef) {
46
- super("app-vd-chips", ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, focusMonitor, elementRef);
46
+ super("app-vd-chips", ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, focusMonitor, elementRef, changeDetectorRef);
47
47
  this.injector = injector;
48
48
  this.media = media;
49
49
  this.changeDetectorRef = changeDetectorRef;
@@ -395,11 +395,11 @@ export class VdChipsComponent extends AbstractMatFormField {
395
395
  this.dataSourceSubscription?.unsubscribe();
396
396
  }
397
397
  }
398
- /** @nocollapse */ VdChipsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdChipsComponent, deps: [{ token: i0.Injector }, { token: i1.VdMediaService }, { token: i0.ChangeDetectorRef }, { token: i2.NgControl, optional: true, self: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: i4.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
399
- /** @nocollapse */ VdChipsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: VdChipsComponent, selector: "vd-chips", inputs: { classType: "classType", chips: "chips", endpoint: "endpoint", params: "params", projection: "projection", paginated: "paginated", context: "context", key: "key", searchField: "searchField", searchFields: "searchFields", removable: "removable", debounce: "debounce", autocompleteCssClass: "autocompleteCssClass", suffixButtons: "suffixButtons" }, outputs: { initSelect: "initSelect", selected: "selected", cleared: "cleared", onLaunch: "launch", chipFocus: "chipFocus" }, providers: [{ provide: MatFormFieldControl, useExisting: VdChipsComponent }], queries: [{ propertyName: "chipTemplate", first: true, predicate: VdChipDirective, descendants: true }, { propertyName: "autocompleteOptionTemplate", first: true, predicate: VdAutocompleteOptionDirective, descendants: true }], viewQueries: [{ propertyName: "dynamicTable", first: true, predicate: VdDynamicTableComponent, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-chip-list #chipList [required]=\"required\" [disabled]=\"readonly\" matAutocompleteOrigin #origin=\"matAutocompleteOrigin\">\r\n\t<!-- #region Chips -->\r\n\t<ng-template let-chip let-first=\"first\" let-index=\"index\" ngFor [ngForOf]=\"chips\">\r\n\t\t<mat-basic-chip [selectable]=\"!readonly\" [removable]=\"!readonly\" (removed)=\"handleRemovedEvent()\" disableRipple>\r\n\t\t\t<span class=\"vd-chip-content\">\r\n\t\t\t\t<span *ngIf=\"!chipTemplate?.templateRef\">\r\n\t\t\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ chip }}</span>\r\n\t\t\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: chip }\"></ng-template>\r\n\t\t\t\t</span>\r\n\t\t\t\t<ng-template *ngIf=\"chipTemplate?.templateRef\" [ngTemplateOutlet]=\"chipTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ chip: chip }\"></ng-template>\r\n\t\t\t</span>\r\n\t\t\t<ng-template let-button let-first=\"first\" ngFor [ngForOf]=\"suffixButtons\">\r\n\t\t\t\t<a mat-icon-button *ngIf=\"!button.hide || !button.hide(chips[0], context)\" (click)=\"$event.stopPropagation(); button.event && button.event(chips[0], context)\">\r\n\t\t\t\t\t<mat-icon>{{button.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-template>\r\n\t\t\t<a mat-icon-button *ngIf=\"onLaunch?.observers?.length > 0\" (click)=\"$event.stopPropagation(); handleLaunchClicked()\">\r\n\t\t\t\t<mat-icon>launch</mat-icon>\r\n\t\t\t</a>\r\n\t\t\t<a mat-icon-button *ngIf=\"!readonly\">\r\n\t\t\t\t<mat-icon matChipRemove>close</mat-icon>\r\n\t\t\t</a>\r\n\t\t</mat-basic-chip>\r\n\t</ng-template>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Search box -->\r\n\t<input matInput [hidden]=\"value && !empty\" placeholder=\"{{placeholder}}\" (focus)=\"connect()\" [readonly]=\"readonly\" [matChipInputFor]=\"chipList\" [matAutocomplete]=\"auto\" [matAutocompleteConnectedTo]=\"origin\" [formControl]=\"autoCompleteChipList\" #filterInput />\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Reset button -->\r\n\t<a mat-icon-button trailingIcon *ngIf=\"filterInput.value\" class=\"reset-input\" (click)=\"filterInput.value = ''\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</a>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Progress -->\r\n\t<!-- <mat-spinner diameter=\"18\" *ngIf=\"dataSource?.isLoading\"></mat-spinner> -->\r\n\t<!-- #endregion -->\r\n</mat-chip-list>\r\n\r\n<!-- #region Autocomplete -->\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"addChip($event.option.value, filterInput)\" class=\"{{autocompleteCssClass}}{{classType?' table-autocomplete':''}}\">\r\n\t<ng-template *ngIf=\"!classType && opened\" let-item let-first=\"first\" ngFor [ngForOf]=\"dataSource?.items\">\r\n\t\t<mat-option [value]=\"item\">\r\n\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{item}}</span>\r\n\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: item }\"></ng-template>\r\n\t\t</mat-option>\r\n\t</ng-template>\r\n\t<ng-container *ngIf=\"classType && opened\">\r\n\t\t<mat-option hide=\"true\"></mat-option>\r\n\t\t<vd-dynamic-table [dataSource]=\"dataSource\" [classType]=\"classType\" (rowClick)=\"addChip($event, filterInput)\" matSort [sortActive]=\"sortActive||'id'\" [sortDirection]=\"sortDirection\"></vd-dynamic-table>\r\n\t</ng-container>\r\n\t<mat-paginator [length]=\"dataSource?.total\" [pageIndex]=\"dataSource?.pageIndex\" [pageSize]=\"dataSource?.pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\" hidePageSize=\"true\"></mat-paginator>\r\n</mat-autocomplete>\r\n<!-- #endregion -->", styles: [":host ::ng-deep .mat-chip-list-wrapper{min-height:24px}:host ::ng-deep .mat-chip{display:flex;flex-direction:row;width:100%;padding:0 5px;justify-content:center}:host ::ng-deep .mat-chip.mat-chip-disabled{opacity:.6}:host ::ng-deep .mat-chip .vd-chip-content{flex-grow:1!important;font-weight:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;justify-content:center}:host ::ng-deep .mat-chip .mat-icon{cursor:pointer}:host ::ng-deep .mat-chip .vd-chip-launch{font-size:18px;position:absolute;right:4px;top:0;cursor:pointer}:host ::ng-deep .mat-chip .vd-chip-launch.removable{right:34px}:host ::ng-deep .mat-icon-button{display:inline-flex;justify-content:center;align-items:center;width:2em;height:2em;margin-top:-6px}:host ::ng-deep .mat-icon-button .mat-button-wrapper{line-height:20px}:host ::ng-deep .mat-icon-button .mat-button-wrapper .mat-icon{font-size:21px;line-height:21px}::ng-deep .mat-autocomplete-panel{margin-top:9px}::ng-deep .mat-autocomplete-panel .mat-paginator{position:sticky;bottom:0}::ng-deep .mat-autocomplete-panel .mat-paginator .mat-paginator-container{padding:0}::ng-deep .mat-autocomplete-panel .mat-paginator .mat-paginator-container .mat-paginator-range-actions{align-items:baseline}::ng-deep .mat-autocomplete-panel .mat-paginator .mat-paginator-container .mat-paginator-range-actions .mat-paginator-range-label{margin:0 16px 0 24px}::ng-deep .mat-autocomplete-panel.table-autocomplete{max-height:400px}mat-spinner{margin-top:-9px;margin-right:6px}::ng-deep mat-form-field.mat-form-field-type-app-vd-chips .mat-form-field-infix{display:flex;align-items:center;flex-direction:row}::ng-deep mat-form-field.multiline .vd-chip-content{margin-top:-4px}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.VdDynamicTableComponent, selector: "vd-dynamic-table", inputs: ["dataSource", "data", "classType", "context", "dataSourceFilter", "static", "filterable", "paginable", "selectable", "sortActive", "sortDirection", "stickyHeader", "stickyFilter", "rowNgClass", "detailsTemplate", "readonly", "selectAllFilter", "columns", "rowMenuItems", "excludedColumns", "pageSize", "pageSizeOptions"], outputs: ["rowClick"] }, { kind: "component", type: i7.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i7.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i7.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i7.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i11.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i11.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdChipsComponent, decorators: [{
398
+ /** @nocollapse */ VdChipsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdChipsComponent, deps: [{ token: i0.Injector }, { token: i1.VdMediaService }, { token: i0.ChangeDetectorRef }, { token: i2.NgControl, optional: true, self: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: i4.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
399
+ /** @nocollapse */ VdChipsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: VdChipsComponent, selector: "vd-chips", inputs: { classType: "classType", chips: "chips", endpoint: "endpoint", params: "params", projection: "projection", paginated: "paginated", context: "context", key: "key", searchField: "searchField", searchFields: "searchFields", removable: "removable", debounce: "debounce", autocompleteCssClass: "autocompleteCssClass", suffixButtons: "suffixButtons" }, outputs: { initSelect: "initSelect", selected: "selected", cleared: "cleared", onLaunch: "launch", chipFocus: "chipFocus" }, providers: [{ provide: MatFormFieldControl, useExisting: VdChipsComponent }], queries: [{ propertyName: "chipTemplate", first: true, predicate: VdChipDirective, descendants: true }, { propertyName: "autocompleteOptionTemplate", first: true, predicate: VdAutocompleteOptionDirective, descendants: true }], viewQueries: [{ propertyName: "dynamicTable", first: true, predicate: VdDynamicTableComponent, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-chip-grid #chipList [required]=\"required\" [disabled]=\"readonly\" matAutocompleteOrigin #origin=\"matAutocompleteOrigin\">\r\n\t<!-- #region Chips -->\r\n\t<ng-template let-chip let-first=\"first\" let-index=\"index\" ngFor [ngForOf]=\"chips\">\r\n\t\t<mat-basic-chip [removable]=\"!readonly\" (removed)=\"handleRemovedEvent()\" disableRipple>\r\n\t\t\t<span class=\"vd-chip-content\">\r\n\t\t\t\t<span *ngIf=\"!chipTemplate?.templateRef\">\r\n\t\t\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ chip }}</span>\r\n\t\t\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: chip }\"></ng-template>\r\n\t\t\t\t</span>\r\n\t\t\t\t<ng-template *ngIf=\"chipTemplate?.templateRef\" [ngTemplateOutlet]=\"chipTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ chip: chip }\"></ng-template>\r\n\t\t\t</span>\r\n\t\t\t<ng-template let-button let-first=\"first\" ngFor [ngForOf]=\"suffixButtons\">\r\n\t\t\t\t<a mat-icon-button *ngIf=\"!button.hide || !button.hide(chips[0], context)\" (click)=\"$event.stopPropagation(); button.event && button.event(chips[0], context)\">\r\n\t\t\t\t\t<mat-icon>{{button.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-template>\r\n\t\t\t<a mat-icon-button *ngIf=\"onLaunch?.observers?.length > 0\" (click)=\"$event.stopPropagation(); handleLaunchClicked()\">\r\n\t\t\t\t<mat-icon>launch</mat-icon>\r\n\t\t\t</a>\r\n\t\t\t<a mat-icon-button *ngIf=\"!readonly\">\r\n\t\t\t\t<mat-icon matChipRemove>close</mat-icon>\r\n\t\t\t</a>\r\n\t\t</mat-basic-chip>\r\n\t</ng-template>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Search box -->\r\n\t<input matInput [hidden]=\"value && !empty\" placeholder=\"{{placeholder}}\" (focus)=\"connect()\" [readonly]=\"readonly\" [matChipInputFor]=\"chipList\" [matAutocomplete]=\"auto\" [matAutocompleteConnectedTo]=\"origin\" [formControl]=\"autoCompleteChipList\" #filterInput />\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Reset button -->\r\n\t<a mat-icon-button trailingIcon *ngIf=\"filterInput.value\" class=\"reset-input\" (click)=\"filterInput.value = ''\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</a>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Progress -->\r\n\t<!-- <mat-spinner diameter=\"18\" *ngIf=\"dataSource?.isLoading\"></mat-spinner> -->\r\n\t<!-- #endregion -->\r\n</mat-chip-grid>\r\n\r\n<!-- #region Autocomplete -->\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"addChip($event.option.value, filterInput)\" class=\"{{autocompleteCssClass}}{{classType?' table-autocomplete':''}}\">\r\n\t<ng-template *ngIf=\"!classType && opened\" let-item let-first=\"first\" ngFor [ngForOf]=\"dataSource?.items\">\r\n\t\t<mat-option [value]=\"item\">\r\n\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{item}}</span>\r\n\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: item }\"></ng-template>\r\n\t\t</mat-option>\r\n\t</ng-template>\r\n\t<ng-container *ngIf=\"classType && opened\">\r\n\t\t<mat-option hide=\"true\"></mat-option>\r\n\t\t<vd-dynamic-table [dataSource]=\"dataSource\" [classType]=\"classType\" (rowClick)=\"addChip($event, filterInput)\" matSort [sortActive]=\"sortActive||'id'\" [sortDirection]=\"sortDirection\"></vd-dynamic-table>\r\n\t</ng-container>\r\n\t<mat-paginator [length]=\"dataSource?.total\" [pageIndex]=\"dataSource?.pageIndex\" [pageSize]=\"dataSource?.pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\" hidePageSize=\"true\"></mat-paginator>\r\n</mat-autocomplete>\r\n<!-- #endregion -->", styles: [":host ::ng-deep .mat-chip-list-wrapper{min-height:24px}:host ::ng-deep .mat-mdc-chip{display:flex;flex-direction:row;width:100%;padding:0 5px;justify-content:center}:host ::ng-deep .mat-mdc-chip.mat-chip-disabled{opacity:.6}:host ::ng-deep .mat-mdc-chip .vd-chip-content{flex-grow:1!important;font-weight:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;justify-content:center}:host ::ng-deep .mat-mdc-chip .mat-icon{cursor:pointer}:host ::ng-deep .mat-mdc-chip .vd-chip-launch{font-size:18px;position:absolute;right:4px;top:0;cursor:pointer}:host ::ng-deep .mat-mdc-chip .vd-chip-launch.removable{right:34px}:host ::ng-deep .mat-mdc-icon-button{display:inline-flex;justify-content:center;align-items:center;width:2em;height:2em;margin-top:-6px}:host ::ng-deep .mat-mdc-icon-button .mat-button-wrapper{line-height:20px}:host ::ng-deep .mat-mdc-icon-button .mat-button-wrapper .mat-icon{font-size:21px;line-height:21px}::ng-deep .mat-autocomplete-panel{margin-top:9px}::ng-deep .mat-autocomplete-panel .mat-mdc-paginator{position:sticky;bottom:0}::ng-deep .mat-autocomplete-panel .mat-mdc-paginator .mat-mdc-paginator-container{padding:0}::ng-deep .mat-autocomplete-panel .mat-mdc-paginator .mat-mdc-paginator-container .mat-mdc-paginator-range-actions{align-items:baseline}::ng-deep .mat-autocomplete-panel .mat-mdc-paginator .mat-mdc-paginator-container .mat-mdc-paginator-range-actions .mat-mdc-paginator-range-label{margin:0 16px 0 24px}::ng-deep .mat-autocomplete-panel.table-autocomplete{max-height:400px}mat-spinner{margin-top:-9px;margin-right:6px}::ng-deep mat-form-field.mat-form-field-type-app-vd-chips .mat-form-field-infix{display:flex;align-items:center;flex-direction:row}::ng-deep mat-form-field.multiline .vd-chip-content{margin-top:-4px}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.VdDynamicTableComponent, selector: "vd-dynamic-table", inputs: ["dataSource", "data", "classType", "context", "dataSourceFilter", "static", "filterable", "paginable", "selectable", "sortActive", "sortDirection", "stickyHeader", "stickyFilter", "rowNgClass", "detailsTemplate", "readonly", "selectAllFilter", "columns", "rowMenuItems", "excludedColumns", "pageSize", "pageSizeOptions"], outputs: ["rowClick"] }, { kind: "component", type: i7.MatChip, selector: "mat-basic-chip, mat-chip", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i7.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i7.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i7.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i11.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i11.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdChipsComponent, decorators: [{
401
401
  type: Component,
402
- args: [{ selector: 'vd-chips', providers: [{ provide: MatFormFieldControl, useExisting: VdChipsComponent }], template: "<mat-chip-list #chipList [required]=\"required\" [disabled]=\"readonly\" matAutocompleteOrigin #origin=\"matAutocompleteOrigin\">\r\n\t<!-- #region Chips -->\r\n\t<ng-template let-chip let-first=\"first\" let-index=\"index\" ngFor [ngForOf]=\"chips\">\r\n\t\t<mat-basic-chip [selectable]=\"!readonly\" [removable]=\"!readonly\" (removed)=\"handleRemovedEvent()\" disableRipple>\r\n\t\t\t<span class=\"vd-chip-content\">\r\n\t\t\t\t<span *ngIf=\"!chipTemplate?.templateRef\">\r\n\t\t\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ chip }}</span>\r\n\t\t\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: chip }\"></ng-template>\r\n\t\t\t\t</span>\r\n\t\t\t\t<ng-template *ngIf=\"chipTemplate?.templateRef\" [ngTemplateOutlet]=\"chipTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ chip: chip }\"></ng-template>\r\n\t\t\t</span>\r\n\t\t\t<ng-template let-button let-first=\"first\" ngFor [ngForOf]=\"suffixButtons\">\r\n\t\t\t\t<a mat-icon-button *ngIf=\"!button.hide || !button.hide(chips[0], context)\" (click)=\"$event.stopPropagation(); button.event && button.event(chips[0], context)\">\r\n\t\t\t\t\t<mat-icon>{{button.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-template>\r\n\t\t\t<a mat-icon-button *ngIf=\"onLaunch?.observers?.length > 0\" (click)=\"$event.stopPropagation(); handleLaunchClicked()\">\r\n\t\t\t\t<mat-icon>launch</mat-icon>\r\n\t\t\t</a>\r\n\t\t\t<a mat-icon-button *ngIf=\"!readonly\">\r\n\t\t\t\t<mat-icon matChipRemove>close</mat-icon>\r\n\t\t\t</a>\r\n\t\t</mat-basic-chip>\r\n\t</ng-template>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Search box -->\r\n\t<input matInput [hidden]=\"value && !empty\" placeholder=\"{{placeholder}}\" (focus)=\"connect()\" [readonly]=\"readonly\" [matChipInputFor]=\"chipList\" [matAutocomplete]=\"auto\" [matAutocompleteConnectedTo]=\"origin\" [formControl]=\"autoCompleteChipList\" #filterInput />\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Reset button -->\r\n\t<a mat-icon-button trailingIcon *ngIf=\"filterInput.value\" class=\"reset-input\" (click)=\"filterInput.value = ''\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</a>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Progress -->\r\n\t<!-- <mat-spinner diameter=\"18\" *ngIf=\"dataSource?.isLoading\"></mat-spinner> -->\r\n\t<!-- #endregion -->\r\n</mat-chip-list>\r\n\r\n<!-- #region Autocomplete -->\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"addChip($event.option.value, filterInput)\" class=\"{{autocompleteCssClass}}{{classType?' table-autocomplete':''}}\">\r\n\t<ng-template *ngIf=\"!classType && opened\" let-item let-first=\"first\" ngFor [ngForOf]=\"dataSource?.items\">\r\n\t\t<mat-option [value]=\"item\">\r\n\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{item}}</span>\r\n\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: item }\"></ng-template>\r\n\t\t</mat-option>\r\n\t</ng-template>\r\n\t<ng-container *ngIf=\"classType && opened\">\r\n\t\t<mat-option hide=\"true\"></mat-option>\r\n\t\t<vd-dynamic-table [dataSource]=\"dataSource\" [classType]=\"classType\" (rowClick)=\"addChip($event, filterInput)\" matSort [sortActive]=\"sortActive||'id'\" [sortDirection]=\"sortDirection\"></vd-dynamic-table>\r\n\t</ng-container>\r\n\t<mat-paginator [length]=\"dataSource?.total\" [pageIndex]=\"dataSource?.pageIndex\" [pageSize]=\"dataSource?.pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\" hidePageSize=\"true\"></mat-paginator>\r\n</mat-autocomplete>\r\n<!-- #endregion -->", styles: [":host ::ng-deep .mat-chip-list-wrapper{min-height:24px}:host ::ng-deep .mat-chip{display:flex;flex-direction:row;width:100%;padding:0 5px;justify-content:center}:host ::ng-deep .mat-chip.mat-chip-disabled{opacity:.6}:host ::ng-deep .mat-chip .vd-chip-content{flex-grow:1!important;font-weight:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;justify-content:center}:host ::ng-deep .mat-chip .mat-icon{cursor:pointer}:host ::ng-deep .mat-chip .vd-chip-launch{font-size:18px;position:absolute;right:4px;top:0;cursor:pointer}:host ::ng-deep .mat-chip .vd-chip-launch.removable{right:34px}:host ::ng-deep .mat-icon-button{display:inline-flex;justify-content:center;align-items:center;width:2em;height:2em;margin-top:-6px}:host ::ng-deep .mat-icon-button .mat-button-wrapper{line-height:20px}:host ::ng-deep .mat-icon-button .mat-button-wrapper .mat-icon{font-size:21px;line-height:21px}::ng-deep .mat-autocomplete-panel{margin-top:9px}::ng-deep .mat-autocomplete-panel .mat-paginator{position:sticky;bottom:0}::ng-deep .mat-autocomplete-panel .mat-paginator .mat-paginator-container{padding:0}::ng-deep .mat-autocomplete-panel .mat-paginator .mat-paginator-container .mat-paginator-range-actions{align-items:baseline}::ng-deep .mat-autocomplete-panel .mat-paginator .mat-paginator-container .mat-paginator-range-actions .mat-paginator-range-label{margin:0 16px 0 24px}::ng-deep .mat-autocomplete-panel.table-autocomplete{max-height:400px}mat-spinner{margin-top:-9px;margin-right:6px}::ng-deep mat-form-field.mat-form-field-type-app-vd-chips .mat-form-field-infix{display:flex;align-items:center;flex-direction:row}::ng-deep mat-form-field.multiline .vd-chip-content{margin-top:-4px}\n"] }]
402
+ args: [{ selector: 'vd-chips', providers: [{ provide: MatFormFieldControl, useExisting: VdChipsComponent }], template: "<mat-chip-grid #chipList [required]=\"required\" [disabled]=\"readonly\" matAutocompleteOrigin #origin=\"matAutocompleteOrigin\">\r\n\t<!-- #region Chips -->\r\n\t<ng-template let-chip let-first=\"first\" let-index=\"index\" ngFor [ngForOf]=\"chips\">\r\n\t\t<mat-basic-chip [removable]=\"!readonly\" (removed)=\"handleRemovedEvent()\" disableRipple>\r\n\t\t\t<span class=\"vd-chip-content\">\r\n\t\t\t\t<span *ngIf=\"!chipTemplate?.templateRef\">\r\n\t\t\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ chip }}</span>\r\n\t\t\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: chip }\"></ng-template>\r\n\t\t\t\t</span>\r\n\t\t\t\t<ng-template *ngIf=\"chipTemplate?.templateRef\" [ngTemplateOutlet]=\"chipTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ chip: chip }\"></ng-template>\r\n\t\t\t</span>\r\n\t\t\t<ng-template let-button let-first=\"first\" ngFor [ngForOf]=\"suffixButtons\">\r\n\t\t\t\t<a mat-icon-button *ngIf=\"!button.hide || !button.hide(chips[0], context)\" (click)=\"$event.stopPropagation(); button.event && button.event(chips[0], context)\">\r\n\t\t\t\t\t<mat-icon>{{button.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-template>\r\n\t\t\t<a mat-icon-button *ngIf=\"onLaunch?.observers?.length > 0\" (click)=\"$event.stopPropagation(); handleLaunchClicked()\">\r\n\t\t\t\t<mat-icon>launch</mat-icon>\r\n\t\t\t</a>\r\n\t\t\t<a mat-icon-button *ngIf=\"!readonly\">\r\n\t\t\t\t<mat-icon matChipRemove>close</mat-icon>\r\n\t\t\t</a>\r\n\t\t</mat-basic-chip>\r\n\t</ng-template>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Search box -->\r\n\t<input matInput [hidden]=\"value && !empty\" placeholder=\"{{placeholder}}\" (focus)=\"connect()\" [readonly]=\"readonly\" [matChipInputFor]=\"chipList\" [matAutocomplete]=\"auto\" [matAutocompleteConnectedTo]=\"origin\" [formControl]=\"autoCompleteChipList\" #filterInput />\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Reset button -->\r\n\t<a mat-icon-button trailingIcon *ngIf=\"filterInput.value\" class=\"reset-input\" (click)=\"filterInput.value = ''\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</a>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Progress -->\r\n\t<!-- <mat-spinner diameter=\"18\" *ngIf=\"dataSource?.isLoading\"></mat-spinner> -->\r\n\t<!-- #endregion -->\r\n</mat-chip-grid>\r\n\r\n<!-- #region Autocomplete -->\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"addChip($event.option.value, filterInput)\" class=\"{{autocompleteCssClass}}{{classType?' table-autocomplete':''}}\">\r\n\t<ng-template *ngIf=\"!classType && opened\" let-item let-first=\"first\" ngFor [ngForOf]=\"dataSource?.items\">\r\n\t\t<mat-option [value]=\"item\">\r\n\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{item}}</span>\r\n\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: item }\"></ng-template>\r\n\t\t</mat-option>\r\n\t</ng-template>\r\n\t<ng-container *ngIf=\"classType && opened\">\r\n\t\t<mat-option hide=\"true\"></mat-option>\r\n\t\t<vd-dynamic-table [dataSource]=\"dataSource\" [classType]=\"classType\" (rowClick)=\"addChip($event, filterInput)\" matSort [sortActive]=\"sortActive||'id'\" [sortDirection]=\"sortDirection\"></vd-dynamic-table>\r\n\t</ng-container>\r\n\t<mat-paginator [length]=\"dataSource?.total\" [pageIndex]=\"dataSource?.pageIndex\" [pageSize]=\"dataSource?.pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\" hidePageSize=\"true\"></mat-paginator>\r\n</mat-autocomplete>\r\n<!-- #endregion -->", styles: [":host ::ng-deep .mat-chip-list-wrapper{min-height:24px}:host ::ng-deep .mat-mdc-chip{display:flex;flex-direction:row;width:100%;padding:0 5px;justify-content:center}:host ::ng-deep .mat-mdc-chip.mat-chip-disabled{opacity:.6}:host ::ng-deep .mat-mdc-chip .vd-chip-content{flex-grow:1!important;font-weight:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;justify-content:center}:host ::ng-deep .mat-mdc-chip .mat-icon{cursor:pointer}:host ::ng-deep .mat-mdc-chip .vd-chip-launch{font-size:18px;position:absolute;right:4px;top:0;cursor:pointer}:host ::ng-deep .mat-mdc-chip .vd-chip-launch.removable{right:34px}:host ::ng-deep .mat-mdc-icon-button{display:inline-flex;justify-content:center;align-items:center;width:2em;height:2em;margin-top:-6px}:host ::ng-deep .mat-mdc-icon-button .mat-button-wrapper{line-height:20px}:host ::ng-deep .mat-mdc-icon-button .mat-button-wrapper .mat-icon{font-size:21px;line-height:21px}::ng-deep .mat-autocomplete-panel{margin-top:9px}::ng-deep .mat-autocomplete-panel .mat-mdc-paginator{position:sticky;bottom:0}::ng-deep .mat-autocomplete-panel .mat-mdc-paginator .mat-mdc-paginator-container{padding:0}::ng-deep .mat-autocomplete-panel .mat-mdc-paginator .mat-mdc-paginator-container .mat-mdc-paginator-range-actions{align-items:baseline}::ng-deep .mat-autocomplete-panel .mat-mdc-paginator .mat-mdc-paginator-container .mat-mdc-paginator-range-actions .mat-mdc-paginator-range-label{margin:0 16px 0 24px}::ng-deep .mat-autocomplete-panel.table-autocomplete{max-height:400px}mat-spinner{margin-top:-9px;margin-right:6px}::ng-deep mat-form-field.mat-form-field-type-app-vd-chips .mat-form-field-infix{display:flex;align-items:center;flex-direction:row}::ng-deep mat-form-field.multiline .vd-chip-content{margin-top:-4px}\n"] }]
403
403
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.VdMediaService }, { type: i0.ChangeDetectorRef }, { type: i2.NgControl, decorators: [{
404
404
  type: Optional
405
405
  }, {
@@ -469,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
469
469
  }], chipFocus: [{
470
470
  type: Output
471
471
  }] } });
472
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY29tcG9uZW50cy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jaGlwcy9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pNLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUs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YixNQUFNO2dCQU9BLFFBQVE7c0JBRGQsTUFBTTt1QkFBQyxRQUFRO2dCQU9ULGFBQWE7c0JBRG5CLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiwgVHlwZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIFN1ZmZpeEJ1dHRvbiB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNYXRGb3JtRmllbGQgfSBmcm9tICcuLi8uLi9mb3Jtcy9oZWxwZXJzL2Fic3RyYWN0LW1hdC1mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgVmRNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZWRpYS9zZXJ2aWNlcy9tZWRpYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5kYXRhLXNvdXJjZSc7XHJcbmltcG9ydCB7IFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9hdXRvY29tcGxldGUtb3B0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFZkQ2hpcERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY2hpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICd2ZC1jaGlwcycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFZkQ2hpcHNDb21wb25lbnQgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkQ2hpcHNDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE1hdEZvcm1GaWVsZDxhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHQvKipcclxuXHQgKiBfZHluYW1pY1RhYmxlOiBNYXRQYWdpbmF0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIF9keW5hbWljVGFibGU6IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChWZER5bmFtaWNUYWJsZUNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGdldCBkeW5hbWljVGFibGUoKTogVmREeW5hbWljVGFibGVDb21wb25lbnQgeyByZXR1cm4gdGhpcy5fZHluYW1pY1RhYmxlOyB9XHJcblx0cHVibGljIHNldCBkeW5hbWljVGFibGUoZHluYW1pY1RhYmxlOiBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCkge1xyXG5cdFx0dGhpcy5fZHluYW1pY1RhYmxlID0gZHluYW1pY1RhYmxlO1xyXG5cdFx0aWYgKHRoaXMuX2R5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuX2R5bmFtaWNUYWJsZS5tYXRTb3J0O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHR5cGUgb2YgdGhlIGNsYXNzIGZvciB0aGUgZHl5bmFtaWMgdGFibGVcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjbGFzc1R5cGU6IFR5cGU8YW55PjtcclxuXHJcblx0LyoqXHJcblx0ICogX3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kUGFnaW5hdG9yIGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikgeyB0aGlzLl9wYWdpbmF0b3IgPSBwYWdpbmF0b3I7IH1cclxuXHRwdWJsaWMgZ2V0IHBhZ2luYXRvcigpOiBNYXRQYWdpbmF0b3IgeyByZXR1cm4gdGhpcy5fcGFnaW5hdG9yOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kU29ydCBhdHRyaWJ1dGVcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBzb3J0OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbNSwgMTAsIDE1LCAyMCwgMzAsIDUwLCAxMDAsIDIwMF07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBjb2x1bW5cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIERhdGEtdGFibGUgZGF0YXNvdXJjZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkYXRhU291cmNlOiBUYWJsZURhdGFTb3VyY2U8YW55LCBhbnk+IHwgbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogZGF0YVNvdXJjZU9ic2VydmFibGU6IFN1YnNjcmlwdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkYXRhU291cmNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB1cCByZWFjdGl2ZSBmb3JtY29udHJvbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhdXRvQ29tcGxldGVDaGlwTGlzdDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoT3BlcmF0b3JzOiBzdHJpbmdbXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWFyY2hPcGVyYXRvcnM6IHN0cmluZ1tdID0gW1wiIT1cIiwgXCIhXCIsIFwiPD5cIiwgXCI+PVwiLCBcIj5cIiwgXCI8PVwiLCBcIjxcIiwgXCJeXCIsIFwiJFwiLCBcIn5cIl07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBsaXN0IG9mIGNoaXBzXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2hpcHMgPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogVmRDaGlwIHRlbXBsYXRlXHJcblx0ICovXHJcblx0QENvbnRlbnRDaGlsZChWZENoaXBEaXJlY3RpdmUpXHJcblx0cHVibGljIGNoaXBUZW1wbGF0ZTogVmRDaGlwRGlyZWN0aXZlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBdXRvY29tcGxldGVPcHRpb24gdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlKVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZTogVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGUsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZTtcclxuXHJcblx0LyoqXHJcblx0ICogYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlclxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcilcclxuXHRwdWJsaWMgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcblx0LyoqXHJcblx0ICogX2VuZHBvaW50OiBzdHJpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgX2VuZHBvaW50OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIGVuZHBvaW50XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHwgRnVuY3Rpb24geyByZXR1cm4gdGhpcy5fZW5kcG9pbnQ7IH1cclxuXHRzZXQgZW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XHJcblx0XHR0aGlzLl9lbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gdHlwZW9mIGVuZHBvaW50ID09PSAnZnVuY3Rpb24nID8gZW5kcG9pbnQodGhpcykgOiAoPHN0cmluZz5lbmRwb2ludCk7XHJcblx0XHR0aGlzLmNsZWFyKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhcmFtczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBwYXJhbXM6IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHBhcmFtcygpIHsgcmV0dXJuIHRoaXMuX3BhcmFtczsgfVxyXG5cdHNldCBwYXJhbXMocGFyYW1zOiBhbnkpIHtcclxuXHRcdC8qIFJlbW92ZSBlbXB0eSBwYXJhbXMgKi9cclxuXHRcdFV0aWxzLmNsZWFuT2JqZWN0KHBhcmFtcyk7XHJcblxyXG5cdFx0aWYgKCFVdGlscy5lcXVhbHModGhpcy5fcGFyYW1zLCBwYXJhbXMpKSB7XHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3Byb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwcm9qZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcHJvamVjdGlvbjsgfVxyXG5cdHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcblx0XHR0aGlzLl9wcm9qZWN0aW9uID0gcHJvamVjdGlvbjtcclxuXHRcdHRoaXMuY2xlYXIoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGRpc2FibGVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcblx0XHRpZiAodGhpcy5fcmVhZG9ubHkpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHN1cGVyLmRpc2FibGVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVhZG9ubHlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhZ2luYXRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE11bHRpcGxlIHNlbGVjdCBvcHRpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwYWdpbmF0ZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9wYWdpbmF0ZWQ7IH1cclxuXHRzZXQgcGFnaW5hdGVkKHBhZ2luYXRlZDogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5fcGFnaW5hdGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHBhZ2luYXRlZCk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBjb250ZXh0OiBhbnlcclxuXHQgKiBUaGUgY3VycmVudCBjb250ZXh0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY29udGV4dDogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBrZXk6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGtleTogc3RyaW5nID0gJ2lkJztcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGQ6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNlYXJjaEZpZWxkOiBzdHJpbmcgPSAnc2VhcmNoJztcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGRzOiBzdHJpbmdcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJlbW92YWJsZTogYm9vbGVhblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHJlbW92YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGRlYm91bmNlPzogbnVtYmVyXHJcblx0ICogRGVib3VuY2UgdGltZW91dCBiZXR3ZWVuIGtleXByZXNzZXMuIERlZmF1bHRzIHRvIDQwMC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBkZWJvdW5jZTogbnVtYmVyID0gNDAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBhdXRvY29tcGxldGVDc3NDbGFzczogc3RyaW5nXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYXV0b2NvbXBsZXRlQ3NzQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBvcGVuZWQ6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRwdWJsaWMgb3BlbmVkOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBpbml0U2VsZWN0PzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgaW5pdFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogY2xlYXJlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxhdW5jaD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnbGF1bmNoJylcclxuXHRwdWJsaWMgb25MYXVuY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHN1ZmZpeEJ1dHRvbnM6IFN1ZmZpeEJ1dHRvbjxhbnk+W11cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzdWZmaXhCdXR0b25zOiBTdWZmaXhCdXR0b25bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBjaGlwRm9jdXM/OiBmdW5jdGlvblxyXG5cdCAqIE1ldGhvZCB0byBiZSBleGVjdXRlZCB3aGVuIGEgY2hpcCBpcyBmb2N1c2VkLlxyXG5cdCAqIFNlbmRzIGNoaXAgdmFsdWUgYXMgZXZlbnQuXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNoaXBGb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqIFxyXG5cdCAqIFdoZXRoZXIgdGhlIHNlbGVjdCBoYXMgYSB2YWx1ZS5cclxuXHQgKi9cclxuXHRnZXQgZW1wdHkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNoaXBzLmxlbmd0aCA8PSAwOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGBNYXRGb3JtRmllbGRgIGxhYmVsIHNob3VsZCB0cnkgdG8gZmxvYXQuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4geyByZXR1cm4gc3VwZXIuc2hvdWxkTGFiZWxGbG9hdCB8fCB0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0Py52YWx1ZTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBsb2FkaW5nOiBib29sZWFuXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIGVtcHR5UmVzdWx0OiBib29sZWFuXHJcblx0ICovXHJcblx0cHVibGljIGVtcHR5UmVzdWx0OiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXJ2aWNlOiBCYXNlU2VydmljZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IG5ldyBCYXNlU2VydmljZSgpO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBpbmplY3RvciBcclxuXHQgKiBAcGFyYW0gbWVkaWEgXHJcblx0ICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIFxyXG5cdCAqIEBwYXJhbSBuZ0NvbnRyb2wgXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm0gXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm1Hcm91cCBcclxuXHQgKiBAcGFyYW0gZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIFxyXG5cdCAqIEBwYXJhbSBmb2N1c01vbml0b3IgXHJcblx0ICogQHBhcmFtIGVsZW1lbnRSZWYgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG5cdFx0cHVibGljIG1lZGlhOiBWZE1lZGlhU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0XHRAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG5cdFx0QE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxyXG5cdFx0QE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcblx0XHRkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxyXG5cdFx0Zm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXHJcblx0XHRlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihcImFwcC12ZC1jaGlwc1wiLCBuZ0NvbnRyb2wsIHBhcmVudEZvcm0sIHBhcmVudEZvcm1Hcm91cCwgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBmb2N1c01vbml0b3IsIGVsZW1lbnRSZWYpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIG9mIGEgXHJcblx0ICogZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbmdPbkluaXQoKSB7XHJcblx0XHQvKiBMaXN0ZW4gdG8gdmFsdWUgY2hhbmdlcyBvZiB0aGUgc2VhcmNoIGlucHV0ICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LnZhbHVlQ2hhbmdlc1xyXG5cdFx0XHQucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXHJcblx0XHRcdC5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJPcHRpb25zKHYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5uZ0NvbnRyb2w/LnZhbHVlQ2hhbmdlcz8ucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0aWYgKCF2YWx1ZSkge1xyXG5cdFx0XHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHRcdFx0XHR0aGlzLl92YWx1ZSA9IFwiXCI7XHJcblx0XHRcdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5zZXRWYWx1ZShcIlwiKTtcclxuXHRcdFx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmVuYWJsZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5tZWRpYS5icm9hZGNhc3QoKTtcclxuXHJcblx0XHQvKiBJbml0aWxpYWxpemUgdGhlIGRhdGEgc291cmNlIHdpdGggdGhlIGN1cnJlbnQgc2VydmljZSwgcGFnaW5hdG9yIGFuZCBzb3J0ICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UgPz89IG5ldyBUYWJsZURhdGFTb3VyY2U8YW55LCBhbnk+KHRoaXMuc2VydmljZSEsIHRoaXMucGFnaW5hdG9yLCB0aGlzLnNvcnQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0LyogU2V0IHRoZSB2YWx1ZSAqL1xyXG5cdFx0dGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuXHJcblx0XHQvKiBDbGVhciB0aGUgY2hpcHMgbGlzdCAqL1xyXG5cdFx0dGhpcy5jaGlwcyA9IFtdO1xyXG5cclxuXHRcdGlmICh2YWx1ZSAmJiB0aGlzLmNoaXBzPy5sZW5ndGggPD0gMCkge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRsZXQgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdFx0XHQvKiBBZGQgaW5jbHVkZXMgZnJvbSBwYXJhbXMsIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGhpcy5fcGFyYW1zPy5pbmNsdWRlcykge1xyXG5cdFx0XHRcdF9wYXJhbXMuaW5jbHVkZXMgPSB0aGlzLl9wYXJhbXMuaW5jbHVkZXM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uIGZyb20gcGFyYW1zLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRoaXMuX3BhcmFtcz8ucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdF9wYXJhbXMucHJvamVjdGlvbiA9IHRoaXMuX3BhcmFtcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBZGQgcHJvamVjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdGlmICh0aGlzLnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRfcGFyYW1zLnByb2plY3Rpb24gPSBBcnJheS5pc0FycmF5KHRoaXMucHJvamVjdGlvbikgPyB0aGlzLnByb2plY3Rpb24uam9pbignLCcpIDogdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBHZXQgYmFzZSB1cmwgKi9cclxuXHRcdFx0dmFyIHVybFBhcnRzID0gdGhpcy5zZXJ2aWNlPy5lbmRwb2ludD8uc3BsaXQoJz8nKTtcclxuXHRcdFx0dGhpcy5zZXJ2aWNlLmh0dHAuZ2V0KGAke3VybFBhcnRzWzBdfS8ke3ZhbHVlfSR7dXJsUGFydHMubGVuZ3RoID4gMSA/IGA/JHt1cmxQYXJ0c1sxXX1gIDogJyd9YCwgeyBwYXJhbXM6IFV0aWxzLmNsZWFuT2JqZWN0KF9wYXJhbXMpIH0pLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHg6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdFx0LyogQWRkIGNoaXAgZm9yIHNlbGVjdGVkIG9wdGlvbiAqL1xyXG5cdFx0XHRcdFx0dGhpcy5jaGlwcy5wdXNoKHgpO1xyXG5cclxuXHRcdFx0XHRcdC8qIEVtaXQgc2VsZWN0ZWQgZXZlbnQgKi9cclxuXHRcdFx0XHRcdHRoaXMuaW5pdFNlbGVjdC5lbWl0KHgpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6ICgpID0+IHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5jbGVhcihmYWxzZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25uZWN0cyB0aGUgZGF0YSBzb3VyY2UgYW5kIHN1YnNjcmliZSB0byB0aGUgZGF0YSBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHVibGljIGNvbm5lY3QoKTogdm9pZCB7XHJcblx0XHQvKiBTZXQgZm9jdXMgKi9cclxuXHRcdHRoaXMub3BlbmVkID0gdHJ1ZTtcclxuXHJcblx0XHQvKiBTZXQgc29tZSBwYXJhbXMgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5maWVsZEZpbHRlcnMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKCk7XHJcblxyXG5cdFx0LyogQ29ubmVjdCB0aGUgZGF0YSBzb3VyY2UgbWFudWFsbHkgZm9yICdtYXQtb3B0aW9uJyB0cmlnZ2VycyAqL1xyXG5cdFx0aWYgKCF0aGlzLmNsYXNzVHlwZSAmJiAhdGhpcy5kYXRhU291cmNlPy5pc0Nvbm5lY3RlZCkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZVN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ2hlY2sgdGhlIGNoYW5nZSBkZXRlY3RvciBhbmQgaXRzIGNoaWxkcmVuICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgY29udHJvbCBmb2N1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcclxuXHRcdC8vIHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3Q/LmZvY3VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIGEgY2hpcFxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKiBAcGFyYW0gaW5wdXQgXHJcblx0ICovXHJcblx0cHVibGljIGFkZENoaXAodmFsdWU6IGFueSwgaW5wdXQ6IGFueSk6IHZvaWQge1xyXG5cdFx0LyogQWRkIGNoaXAgZm9yIHNlbGVjdGVkIG9wdGlvbiAqL1xyXG5cdFx0dGhpcy5jaGlwcyA9IFt2YWx1ZV07XHJcblxyXG5cdFx0LyogRW1pdCBzZWxlY3RlZCBldmVudCAqL1xyXG5cdFx0dGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlKTtcclxuXHJcblx0XHQvKiBcdFNldCB0aGUgdmFsdWUgKG5nTW9kZWwpICovXHJcblx0XHR0aGlzLnZhbHVlID0gdmFsdWVbdGhpcy5rZXldO1xyXG5cclxuXHRcdC8qIERpYWJsZWQgdGhlIGlucHV0LCBhbGxvdyBvbmx5IG9uZSBjaGlwICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5wYXRjaFZhbHVlKCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dCB0ZXh0IHZhbHVlICovXHJcblx0XHRpZiAoaW5wdXQpIHtcclxuXHRcdFx0aW5wdXQudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHJcblx0XHQvKiBDbG9zZSB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsLCBpZiBub3QgYWxyZWFkeSBkb25lIChmb3IgdGFibGUgcm93IGNsaWNrKSAqL1xyXG5cdFx0dGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbW92ZXMgYWxsIGNoaXBzXHJcblx0ICovXHJcblx0cHVibGljIGNsZWFyKHRyaWdnZXJTdGF0ZUNoYW5nZXM6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHQvKiBSZW1vdmUga2V5IGZyb20gY2hpcHMgYXJyYXkgKi9cclxuXHRcdHRoaXMudmFsdWUgPSBudWxsO1xyXG5cdFx0dGhpcy5jaGlwcyA9IFtdO1xyXG5cclxuXHRcdC8qIE1hcmsgdGhlIGNvbnRyb2wgYXMgdG91Y2hlZCAqL1xyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIHZhbHVlIChuZ01vZGVsKSAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5wYXRjaFZhbHVlKCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0aWYgKHRyaWdnZXJTdGF0ZUNoYW5nZXMpIHtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEVuYWJsZSB0aGUgaW5wdXQgKi9cclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcblx0XHQvKiBDaGVjayB0aGUgY2hhbmdlIGRldGVjdG9yIGFuZCBpdHMgY2hpbGRyZW4gKi9cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRmlsdGVycyBvcHRpb25zXHJcblx0ICogQHBhcmFtIHRleHQgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBmaWx0ZXJPcHRpb25zKHRleHQ6IHN0cmluZykge1xyXG5cdFx0LyogRmlsdGVyIHRoZSByZXN1bHRzICovXHJcblx0XHRpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcblx0XHRcdC8qIEluaXQgcGFyYW1zIGlmIG51bGwgKi9cclxuXHRcdFx0bGV0IF9wYXJhbXMgPSB7IC4uLnRoaXMuZ2V0UXVlcnlQYXJhbXMoKSB9O1xyXG5cclxuXHRcdFx0LyogQWRkIHNlYXJjaCB3b3JkIHRvIHRoZSBwYXJhbXMgKi9cclxuXHRcdFx0aWYgKHRoaXMuc2VhcmNoRmllbGQgJiYgdGhpcy5zZWFyY2hGaWVsZHMubGVuZ3RoIDw9IDApIHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gbmV3IFJlZ0V4cChgKFxcXFwke3RoaXMuc2VhcmNoT3BlcmF0b3JzLmpvaW4oJ3xcXFxcJyl9KT8oLiopYCkuZXhlYyh0aGlzLnNlYXJjaEZpZWxkKTtcclxuXHRcdFx0XHRfcGFyYW1zW3Jlc3VsdFsyXV0gPSBgJHtyZXN1bHRbMV0gPyByZXN1bHRbMV0gOiAnJ30ke3RleHR9YDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQWRkIHNlYXJjaCB3b3JkIHRvIHRoZSBwYXJhbXMgKi9cclxuXHRcdFx0dGhpcy5zZWFyY2hGaWVsZHM/Lm1hcCh4ID0+IHgudHJpbSgpKT8uZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gbmV3IFJlZ0V4cChgKFxcXFwke3RoaXMuc2VhcmNoT3BlcmF0b3JzLmpvaW4oJ3xcXFxcJyl9KT8oLiopYCkuZXhlYyh4KTtcclxuXHRcdFx0XHRfcGFyYW1zW3Jlc3VsdFsyXV0gPSBgJHtyZXN1bHRbMV0gPyByZXN1bHRbMV0gOiAnJ30ke3RleHR9YDtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBOb3RoaW5nIGhhcyBjaGFuZ2VkPyAqL1xyXG5cdFx0XHRpZiAoVXRpbHMuZXF1YWxzKHRoaXMuX3BhcmFtcywgX3BhcmFtcykpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIFNldCBwYXJhbXMgKi9cclxuXHRcdFx0dGhpcy5fcGFyYW1zID0gX3BhcmFtcztcclxuXHJcblx0XHRcdC8qIEdldCByZXN1bHRzIGZyb20gc2VydmVyICovXHJcblx0XHRcdHRoaXMubG9hZGluZyA9IHRydWU7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5hcHBseUZpbHRlcnModGhpcy5fcGFyYW1zKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgcmVtb3ZlZCBldmVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVSZW1vdmVkRXZlbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNsZWFyZWQ/LmVtaXQodGhpcy52YWx1ZSk7XHJcblx0XHRpZiAodGhpcy5yZW1vdmFibGUpIHtcclxuXHRcdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBsYXVuY2ggYnV0dG9uIGNsaWNrXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUxhdW5jaENsaWNrZWQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5jaGlwcz8ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLm9uTGF1bmNoLmVtaXQodGhpcy5jaGlwc1swXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHF1ZXJ5IHBhcmFtc1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRRdWVyeVBhcmFtcygpOiBhbnkge1xyXG5cdFx0LyogSW5pdCBwYXJhbXMgaWYgbnVsbCAqL1xyXG5cdFx0dmFyIHBhcmFtcyA9IHRoaXMuX3BhcmFtcyB8fCB7fTtcclxuXHJcblx0XHQvKiBBZGQgcHJvamVjdGlvbiwgaWYgYW55ICovXHJcblx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdHBhcmFtcy5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBwYXJhbXM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHBlcmZvcm1zIGN1c3RvbSBjbGVhbi11cCwgaW52b2tlZCBpbW1lZGlhdGVseVxyXG5cdCAqIGJlZm9yZSBhIGRpcmVjdGl2ZSwgcGlwZSwgb3Igc2VydmljZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxufSIsIjxtYXQtY2hpcC1saXN0ICNjaGlwTGlzdCBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBtYXRBdXRvY29tcGxldGVPcmlnaW4gI29yaWdpbj1cIm1hdEF1dG9jb21wbGV0ZU9yaWdpblwiPlxyXG5cdDwhLS0gI3JlZ2lvbiBDaGlwcyAtLT5cclxuXHQ8bmctdGVtcGxhdGUgbGV0LWNoaXAgbGV0LWZpcnN0PVwiZmlyc3RcIiBsZXQtaW5kZXg9XCJpbmRleFwiIG5nRm9yIFtuZ0Zvck9mXT1cImNoaXBzXCI+XHJcblx0XHQ8bWF0LWJhc2ljLWNoaXAgW3NlbGVjdGFibGVdPVwiIXJlYWRvbmx5XCIgW3JlbW92YWJsZV09XCIhcmVhZG9ubHlcIiAocmVtb3ZlZCk9XCJoYW5kbGVSZW1vdmVkRXZlbnQoKVwiIGRpc2FibGVSaXBwbGU+XHJcblx0XHRcdDxzcGFuIGNsYXNzPVwidmQtY2hpcC1jb250ZW50XCI+XHJcblx0XHRcdFx0PHNwYW4gKm5nSWY9XCIhY2hpcFRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPlxyXG5cdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+e3sgY2hpcCB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogY2hpcCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiY2hpcFRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjaGlwOiBjaGlwIH1cIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSBsZXQtYnV0dG9uIGxldC1maXJzdD1cImZpcnN0XCIgbmdGb3IgW25nRm9yT2ZdPVwic3VmZml4QnV0dG9uc1wiPlxyXG5cdFx0XHRcdDxhIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFidXR0b24uaGlkZSB8fCAhYnV0dG9uLmhpZGUoY2hpcHNbMF0sIGNvbnRleHQpXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgYnV0dG9uLmV2ZW50ICYmIGJ1dHRvbi5ldmVudChjaGlwc1swXSwgY29udGV4dClcIj5cclxuXHRcdFx0XHRcdDxtYXQtaWNvbj57e2J1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG5cdFx0XHRcdDwvYT5cclxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0PGEgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwib25MYXVuY2g/Lm9ic2VydmVycz8ubGVuZ3RoID4gMFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGhhbmRsZUxhdW5jaENsaWNrZWQoKVwiPlxyXG5cdFx0XHRcdDxtYXQtaWNvbj5sYXVuY2g8L21hdC1pY29uPlxyXG5cdFx0XHQ8L2E+XHJcblx0XHRcdDxhIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFyZWFkb25seVwiPlxyXG5cdFx0XHRcdDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlPmNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdFx0PC9hPlxyXG5cdFx0PC9tYXQtYmFzaWMtY2hpcD5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0PCEtLSAjcmVnaW9uIFNlYXJjaCBib3ggLS0+XHJcblx0PGlucHV0IG1hdElucHV0IFtoaWRkZW5dPVwidmFsdWUgJiYgIWVtcHR5XCIgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIiAoZm9jdXMpPVwiY29ubmVjdCgpXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFttYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUb109XCJvcmlnaW5cIiBbZm9ybUNvbnRyb2xdPVwiYXV0b0NvbXBsZXRlQ2hpcExpc3RcIiAjZmlsdGVySW5wdXQgLz5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBSZXNldCBidXR0b24gLS0+XHJcblx0PGEgbWF0LWljb24tYnV0dG9uIHRyYWlsaW5nSWNvbiAqbmdJZj1cImZpbHRlcklucHV0LnZhbHVlXCIgY2xhc3M9XCJyZXNldC1pbnB1dFwiIChjbGljayk9XCJmaWx0ZXJJbnB1dC52YWx1ZSA9ICcnXCI+XHJcblx0XHQ8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG5cdDwvYT5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBQcm9ncmVzcyAtLT5cclxuXHQ8IS0tIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjE4XCIgKm5nSWY9XCJkYXRhU291cmNlPy5pc0xvYWRpbmdcIj48L21hdC1zcGlubmVyPiAtLT5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcbjwvbWF0LWNoaXAtbGlzdD5cclxuXHJcbjwhLS0gI3JlZ2lvbiBBdXRvY29tcGxldGUgLS0+XHJcbjxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cImFkZENoaXAoJGV2ZW50Lm9wdGlvbi52YWx1ZSwgZmlsdGVySW5wdXQpXCIgY2xhc3M9XCJ7e2F1dG9jb21wbGV0ZUNzc0NsYXNzfX17e2NsYXNzVHlwZT8nIHRhYmxlLWF1dG9jb21wbGV0ZSc6Jyd9fVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFjbGFzc1R5cGUgJiYgb3BlbmVkXCIgbGV0LWl0ZW0gbGV0LWZpcnN0PVwiZmlyc3RcIiBuZ0ZvciBbbmdGb3JPZl09XCJkYXRhU291cmNlPy5pdGVtc1wiPlxyXG5cdFx0PG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW1cIj5cclxuXHRcdFx0PHNwYW4gKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+e3tpdGVtfX08L3NwYW4+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvbWF0LW9wdGlvbj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJjbGFzc1R5cGUgJiYgb3BlbmVkXCI+XHJcblx0XHQ8bWF0LW9wdGlvbiBoaWRlPVwidHJ1ZVwiPjwvbWF0LW9wdGlvbj5cclxuXHRcdDx2ZC1keW5hbWljLXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbY2xhc3NUeXBlXT1cImNsYXNzVHlwZVwiIChyb3dDbGljayk9XCJhZGRDaGlwKCRldmVudCwgZmlsdGVySW5wdXQpXCIgbWF0U29ydCBbc29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlfHwnaWQnXCIgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiPjwvdmQtZHluYW1pYy10YWJsZT5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8bWF0LXBhZ2luYXRvciBbbGVuZ3RoXT1cImRhdGFTb3VyY2U/LnRvdGFsXCIgW3BhZ2VJbmRleF09XCJkYXRhU291cmNlPy5wYWdlSW5kZXhcIiBbcGFnZVNpemVdPVwiZGF0YVNvdXJjZT8ucGFnZVNpemVcIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIHNob3dGaXJzdExhc3RCdXR0b25zPVwidHJ1ZVwiIGhpZGVQYWdlU2l6ZT1cInRydWVcIj48L21hdC1wYWdpbmF0b3I+XHJcbjwvbWF0LWF1dG9jb21wbGV0ZT5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPiJdfQ==
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY29tcG9uZW50cy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jaGlwcy9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pNLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUs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T0EsT0FBTztzQkFEYixNQUFNO2dCQU9BLFFBQVE7c0JBRGQsTUFBTTt1QkFBQyxRQUFRO2dCQU9ULGFBQWE7c0JBRG5CLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiwgVHlwZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIFN1ZmZpeEJ1dHRvbiB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNYXRGb3JtRmllbGQgfSBmcm9tICcuLi8uLi9mb3Jtcy9oZWxwZXJzL2Fic3RyYWN0LW1hdC1mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgVmRNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZWRpYS9zZXJ2aWNlcy9tZWRpYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5kYXRhLXNvdXJjZSc7XHJcbmltcG9ydCB7IFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9hdXRvY29tcGxldGUtb3B0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFZkQ2hpcERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY2hpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICd2ZC1jaGlwcycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFZkQ2hpcHNDb21wb25lbnQgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkQ2hpcHNDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE1hdEZvcm1GaWVsZDxhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHQvKipcclxuXHQgKiBfZHluYW1pY1RhYmxlOiBNYXRQYWdpbmF0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIF9keW5hbWljVGFibGU6IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChWZER5bmFtaWNUYWJsZUNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGdldCBkeW5hbWljVGFibGUoKTogVmREeW5hbWljVGFibGVDb21wb25lbnQgeyByZXR1cm4gdGhpcy5fZHluYW1pY1RhYmxlOyB9XHJcblx0cHVibGljIHNldCBkeW5hbWljVGFibGUoZHluYW1pY1RhYmxlOiBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCkge1xyXG5cdFx0dGhpcy5fZHluYW1pY1RhYmxlID0gZHluYW1pY1RhYmxlO1xyXG5cdFx0aWYgKHRoaXMuX2R5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuX2R5bmFtaWNUYWJsZS5tYXRTb3J0O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHR5cGUgb2YgdGhlIGNsYXNzIGZvciB0aGUgZHl5bmFtaWMgdGFibGVcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjbGFzc1R5cGU6IFR5cGU8YW55PjtcclxuXHJcblx0LyoqXHJcblx0ICogX3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kUGFnaW5hdG9yIGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikgeyB0aGlzLl9wYWdpbmF0b3IgPSBwYWdpbmF0b3I7IH1cclxuXHRwdWJsaWMgZ2V0IHBhZ2luYXRvcigpOiBNYXRQYWdpbmF0b3IgeyByZXR1cm4gdGhpcy5fcGFnaW5hdG9yOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kU29ydCBhdHRyaWJ1dGVcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBzb3J0OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbNSwgMTAsIDE1LCAyMCwgMzAsIDUwLCAxMDAsIDIwMF07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBjb2x1bW5cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIERhdGEtdGFibGUgZGF0YXNvdXJjZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkYXRhU291cmNlOiBUYWJsZURhdGFTb3VyY2U8YW55LCBhbnk+IHwgbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogZGF0YVNvdXJjZU9ic2VydmFibGU6IFN1YnNjcmlwdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkYXRhU291cmNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB1cCByZWFjdGl2ZSBmb3JtY29udHJvbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhdXRvQ29tcGxldGVDaGlwTGlzdDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoT3BlcmF0b3JzOiBzdHJpbmdbXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWFyY2hPcGVyYXRvcnM6IHN0cmluZ1tdID0gW1wiIT1cIiwgXCIhXCIsIFwiPD5cIiwgXCI+PVwiLCBcIj5cIiwgXCI8PVwiLCBcIjxcIiwgXCJeXCIsIFwiJFwiLCBcIn5cIl07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBsaXN0IG9mIGNoaXBzXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2hpcHMgPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogVmRDaGlwIHRlbXBsYXRlXHJcblx0ICovXHJcblx0QENvbnRlbnRDaGlsZChWZENoaXBEaXJlY3RpdmUpXHJcblx0cHVibGljIGNoaXBUZW1wbGF0ZTogVmRDaGlwRGlyZWN0aXZlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBdXRvY29tcGxldGVPcHRpb24gdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlKVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZTogVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGUsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZTtcclxuXHJcblx0LyoqXHJcblx0ICogYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlclxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcilcclxuXHRwdWJsaWMgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcblx0LyoqXHJcblx0ICogX2VuZHBvaW50OiBzdHJpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgX2VuZHBvaW50OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIGVuZHBvaW50XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHwgRnVuY3Rpb24geyByZXR1cm4gdGhpcy5fZW5kcG9pbnQ7IH1cclxuXHRzZXQgZW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XHJcblx0XHR0aGlzLl9lbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gdHlwZW9mIGVuZHBvaW50ID09PSAnZnVuY3Rpb24nID8gZW5kcG9pbnQodGhpcykgOiAoPHN0cmluZz5lbmRwb2ludCk7XHJcblx0XHR0aGlzLmNsZWFyKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhcmFtczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBwYXJhbXM6IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHBhcmFtcygpIHsgcmV0dXJuIHRoaXMuX3BhcmFtczsgfVxyXG5cdHNldCBwYXJhbXMocGFyYW1zOiBhbnkpIHtcclxuXHRcdC8qIFJlbW92ZSBlbXB0eSBwYXJhbXMgKi9cclxuXHRcdFV0aWxzLmNsZWFuT2JqZWN0KHBhcmFtcyk7XHJcblxyXG5cdFx0aWYgKCFVdGlscy5lcXVhbHModGhpcy5fcGFyYW1zLCBwYXJhbXMpKSB7XHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3Byb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwcm9qZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcHJvamVjdGlvbjsgfVxyXG5cdHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcblx0XHR0aGlzLl9wcm9qZWN0aW9uID0gcHJvamVjdGlvbjtcclxuXHRcdHRoaXMuY2xlYXIoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGRpc2FibGVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcblx0XHRpZiAodGhpcy5fcmVhZG9ubHkpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHN1cGVyLmRpc2FibGVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVhZG9ubHlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhZ2luYXRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE11bHRpcGxlIHNlbGVjdCBvcHRpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwYWdpbmF0ZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9wYWdpbmF0ZWQ7IH1cclxuXHRzZXQgcGFnaW5hdGVkKHBhZ2luYXRlZDogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5fcGFnaW5hdGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHBhZ2luYXRlZCk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBjb250ZXh0OiBhbnlcclxuXHQgKiBUaGUgY3VycmVudCBjb250ZXh0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY29udGV4dDogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBrZXk6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGtleTogc3RyaW5nID0gJ2lkJztcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGQ6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNlYXJjaEZpZWxkOiBzdHJpbmcgPSAnc2VhcmNoJztcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGRzOiBzdHJpbmdcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJlbW92YWJsZTogYm9vbGVhblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHJlbW92YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGRlYm91bmNlPzogbnVtYmVyXHJcblx0ICogRGVib3VuY2UgdGltZW91dCBiZXR3ZWVuIGtleXByZXNzZXMuIERlZmF1bHRzIHRvIDQwMC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBkZWJvdW5jZTogbnVtYmVyID0gNDAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBhdXRvY29tcGxldGVDc3NDbGFzczogc3RyaW5nXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYXV0b2NvbXBsZXRlQ3NzQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBvcGVuZWQ6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRwdWJsaWMgb3BlbmVkOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBpbml0U2VsZWN0PzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgaW5pdFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogY2xlYXJlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxhdW5jaD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnbGF1bmNoJylcclxuXHRwdWJsaWMgb25MYXVuY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHN1ZmZpeEJ1dHRvbnM6IFN1ZmZpeEJ1dHRvbjxhbnk+W11cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzdWZmaXhCdXR0b25zOiBTdWZmaXhCdXR0b25bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBjaGlwRm9jdXM/OiBmdW5jdGlvblxyXG5cdCAqIE1ldGhvZCB0byBiZSBleGVjdXRlZCB3aGVuIGEgY2hpcCBpcyBmb2N1c2VkLlxyXG5cdCAqIFNlbmRzIGNoaXAgdmFsdWUgYXMgZXZlbnQuXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNoaXBGb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqIFxyXG5cdCAqIFdoZXRoZXIgdGhlIHNlbGVjdCBoYXMgYSB2YWx1ZS5cclxuXHQgKi9cclxuXHRnZXQgZW1wdHkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNoaXBzLmxlbmd0aCA8PSAwOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGBNYXRGb3JtRmllbGRgIGxhYmVsIHNob3VsZCB0cnkgdG8gZmxvYXQuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4geyByZXR1cm4gc3VwZXIuc2hvdWxkTGFiZWxGbG9hdCB8fCB0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0Py52YWx1ZTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBsb2FkaW5nOiBib29sZWFuXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIGVtcHR5UmVzdWx0OiBib29sZWFuXHJcblx0ICovXHJcblx0cHVibGljIGVtcHR5UmVzdWx0OiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXJ2aWNlOiBCYXNlU2VydmljZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IG5ldyBCYXNlU2VydmljZSgpO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBpbmplY3RvciBcclxuXHQgKiBAcGFyYW0gbWVkaWEgXHJcblx0ICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIFxyXG5cdCAqIEBwYXJhbSBuZ0NvbnRyb2wgXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm0gXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm1Hcm91cCBcclxuXHQgKiBAcGFyYW0gZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIFxyXG5cdCAqIEBwYXJhbSBmb2N1c01vbml0b3IgXHJcblx0ICogQHBhcmFtIGVsZW1lbnRSZWYgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG5cdFx0cHVibGljIG1lZGlhOiBWZE1lZGlhU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0XHRAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG5cdFx0QE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxyXG5cdFx0QE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcblx0XHRkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxyXG5cdFx0Zm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXHJcblx0XHRlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihcImFwcC12ZC1jaGlwc1wiLCBuZ0NvbnRyb2wsIHBhcmVudEZvcm0sIHBhcmVudEZvcm1Hcm91cCwgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBmb2N1c01vbml0b3IsIGVsZW1lbnRSZWYsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBvZiBhIFxyXG5cdCAqIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0cHVibGljIG5nT25Jbml0KCkge1xyXG5cdFx0LyogTGlzdGVuIHRvIHZhbHVlIGNoYW5nZXMgb2YgdGhlIHNlYXJjaCBpbnB1dCAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC52YWx1ZUNoYW5nZXNcclxuXHRcdFx0LnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKHYgPT4ge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRcdHRoaXMuZmlsdGVyT3B0aW9ucyh2KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdHRoaXMubmdDb250cm9sPy52YWx1ZUNoYW5nZXM/LnBpcGUoc2tpcCgxKSkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGlmICghdmFsdWUpIHtcclxuXHRcdFx0XHR0aGlzLmNoaXBzID0gW107XHJcblx0XHRcdFx0dGhpcy5fdmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3Quc2V0VmFsdWUoXCJcIik7XHJcblx0XHRcdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5lbmFibGUoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBhIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0cHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMubWVkaWEuYnJvYWRjYXN0KCk7XHJcblxyXG5cdFx0LyogSW5pdGlsaWFsaXplIHRoZSBkYXRhIHNvdXJjZSB3aXRoIHRoZSBjdXJyZW50IHNlcnZpY2UsIHBhZ2luYXRvciBhbmQgc29ydCAqL1xyXG5cdFx0dGhpcy5kYXRhU291cmNlID8/PSBuZXcgVGFibGVEYXRhU291cmNlPGFueSwgYW55Pih0aGlzLnNlcnZpY2UhLCB0aGlzLnBhZ2luYXRvciwgdGhpcy5zb3J0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuXHRcdC8qIFNldCB0aGUgdmFsdWUgKi9cclxuXHRcdHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcblxyXG5cdFx0LyogQ2xlYXIgdGhlIGNoaXBzIGxpc3QgKi9cclxuXHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHJcblx0XHRpZiAodmFsdWUgJiYgdGhpcy5jaGlwcz8ubGVuZ3RoIDw9IDApIHtcclxuXHRcdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdFx0bGV0IF9wYXJhbXM6IGFueSA9IHt9O1xyXG5cclxuXHRcdFx0LyogQWRkIGluY2x1ZGVzIGZyb20gcGFyYW1zLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRoaXMuX3BhcmFtcz8uaW5jbHVkZXMpIHtcclxuXHRcdFx0XHRfcGFyYW1zLmluY2x1ZGVzID0gdGhpcy5fcGFyYW1zLmluY2x1ZGVzO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBZGQgcHJvamVjdGlvbiBmcm9tIHBhcmFtcywgaWYgYW55ICovXHJcblx0XHRcdGlmICh0aGlzLl9wYXJhbXM/LnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRfcGFyYW1zLnByb2plY3Rpb24gPSB0aGlzLl9wYXJhbXMucHJvamVjdGlvbjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQWRkIHByb2plY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdFx0X3BhcmFtcy5wcm9qZWN0aW9uID0gQXJyYXkuaXNBcnJheSh0aGlzLnByb2plY3Rpb24pID8gdGhpcy5wcm9qZWN0aW9uLmpvaW4oJywnKSA6IHRoaXMucHJvamVjdGlvbjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogR2V0IGJhc2UgdXJsICovXHJcblx0XHRcdHZhciB1cmxQYXJ0cyA9IHRoaXMuc2VydmljZT8uZW5kcG9pbnQ/LnNwbGl0KCc/Jyk7XHJcblx0XHRcdHRoaXMuc2VydmljZS5odHRwLmdldChgJHt1cmxQYXJ0c1swXX0vJHt2YWx1ZX0ke3VybFBhcnRzLmxlbmd0aCA+IDEgPyBgPyR7dXJsUGFydHNbMV19YCA6ICcnfWAsIHsgcGFyYW1zOiBVdGlscy5jbGVhbk9iamVjdChfcGFyYW1zKSB9KS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh4OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRcdC8qIEFkZCBjaGlwIGZvciBzZWxlY3RlZCBvcHRpb24gKi9cclxuXHRcdFx0XHRcdHRoaXMuY2hpcHMucHVzaCh4KTtcclxuXHJcblx0XHRcdFx0XHQvKiBFbWl0IHNlbGVjdGVkIGV2ZW50ICovXHJcblx0XHRcdFx0XHR0aGlzLmluaXRTZWxlY3QuZW1pdCh4KTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVycm9yOiAoKSA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuY2xlYXIoZmFsc2UpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29ubmVjdHMgdGhlIGRhdGEgc291cmNlIGFuZCBzdWJzY3JpYmUgdG8gdGhlIGRhdGEgY2hhbmdlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25uZWN0KCk6IHZvaWQge1xyXG5cdFx0LyogU2V0IGZvY3VzICovXHJcblx0XHR0aGlzLm9wZW5lZCA9IHRydWU7XHJcblxyXG5cdFx0LyogU2V0IHNvbWUgcGFyYW1zICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuZmllbGRGaWx0ZXJzID0gdGhpcy5nZXRRdWVyeVBhcmFtcygpO1xyXG5cclxuXHRcdC8qIENvbm5lY3QgdGhlIGRhdGEgc291cmNlIG1hbnVhbGx5IGZvciAnbWF0LW9wdGlvbicgdHJpZ2dlcnMgKi9cclxuXHRcdGlmICghdGhpcy5jbGFzc1R5cGUgJiYgIXRoaXMuZGF0YVNvdXJjZT8uaXNDb25uZWN0ZWQpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2VTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFTb3VyY2UuY29ubmVjdCgpLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIENoZWNrIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgYW5kIGl0cyBjaGlsZHJlbiAqL1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGNvbnRyb2wgZm9jdXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZm9jdXMoKTogdm9pZCB7XHJcblx0XHQvLyB0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0Py5mb2N1cygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkcyBhIGNoaXBcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICogQHBhcmFtIGlucHV0IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRDaGlwKHZhbHVlOiBhbnksIGlucHV0OiBhbnkpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBjaGlwIGZvciBzZWxlY3RlZCBvcHRpb24gKi9cclxuXHRcdHRoaXMuY2hpcHMgPSBbdmFsdWVdO1xyXG5cclxuXHRcdC8qIEVtaXQgc2VsZWN0ZWQgZXZlbnQgKi9cclxuXHRcdHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZSk7XHJcblxyXG5cdFx0LyogXHRTZXQgdGhlIHZhbHVlIChuZ01vZGVsKSAqL1xyXG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlW3RoaXMua2V5XTtcclxuXHJcblx0XHQvKiBEaWFibGVkIHRoZSBpbnB1dCwgYWxsb3cgb25seSBvbmUgY2hpcCAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QucGF0Y2hWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuXHRcdC8qIFJlc2V0IHRoZSBhdXRvY29tcGxldGUgaW5wdXQgdGV4dCB2YWx1ZSAqL1xyXG5cdFx0aWYgKGlucHV0KSB7XHJcblx0XHRcdGlucHV0LnZhbHVlID0gJyc7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ2xvc2UgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCwgaWYgbm90IGFscmVhZHkgZG9uZSAoZm9yIHRhYmxlIHJvdyBjbGljaykgKi9cclxuXHRcdHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlci5jbG9zZVBhbmVsKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmVzIGFsbCBjaGlwc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjbGVhcih0cmlnZ2VyU3RhdGVDaGFuZ2VzOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0LyogUmVtb3ZlIGtleSBmcm9tIGNoaXBzIGFycmF5ICovXHJcblx0XHR0aGlzLnZhbHVlID0gbnVsbDtcclxuXHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHJcblx0XHQvKiBNYXJrIHRoZSBjb250cm9sIGFzIHRvdWNoZWQgKi9cclxuXHRcdGlmICh0aGlzLm5nQ29udHJvbC5jb250cm9sKSB7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFJlc2V0IHRoZSB2YWx1ZSAobmdNb2RlbCkgKi9cclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QucGF0Y2hWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuXHRcdGlmICh0cmlnZ2VyU3RhdGVDaGFuZ2VzKSB7XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBFbmFibGUgdGhlIGlucHV0ICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0LyogQ2hlY2sgdGhlIGNoYW5nZSBkZXRlY3RvciBhbmQgaXRzIGNoaWxkcmVuICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZpbHRlcnMgb3B0aW9uc1xyXG5cdCAqIEBwYXJhbSB0ZXh0IFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZmlsdGVyT3B0aW9ucyh0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdC8qIEZpbHRlciB0aGUgcmVzdWx0cyAqL1xyXG5cdFx0aWYgKHRoaXMuZGF0YVNvdXJjZSkge1xyXG5cdFx0XHQvKiBJbml0IHBhcmFtcyBpZiBudWxsICovXHJcblx0XHRcdGxldCBfcGFyYW1zID0geyAuLi50aGlzLmdldFF1ZXJ5UGFyYW1zKCkgfTtcclxuXHJcblx0XHRcdC8qIEFkZCBzZWFyY2ggd29yZCB0byB0aGUgcGFyYW1zICovXHJcblx0XHRcdGlmICh0aGlzLnNlYXJjaEZpZWxkICYmIHRoaXMuc2VhcmNoRmllbGRzLmxlbmd0aCA8PSAwKSB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IG5ldyBSZWdFeHAoYChcXFxcJHt0aGlzLnNlYXJjaE9wZXJhdG9ycy5qb2luKCd8XFxcXCcpfSk/KC4qKWApLmV4ZWModGhpcy5zZWFyY2hGaWVsZCk7XHJcblx0XHRcdFx0X3BhcmFtc1tyZXN1bHRbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEFkZCBzZWFyY2ggd29yZCB0byB0aGUgcGFyYW1zICovXHJcblx0XHRcdHRoaXMuc2VhcmNoRmllbGRzPy5tYXAoeCA9PiB4LnRyaW0oKSk/LmZvckVhY2goeCA9PiB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IG5ldyBSZWdFeHAoYChcXFxcJHt0aGlzLnNlYXJjaE9wZXJhdG9ycy5qb2luKCd8XFxcXCcpfSk/KC4qKWApLmV4ZWMoeCk7XHJcblx0XHRcdFx0X3BhcmFtc1tyZXN1bHRbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogTm90aGluZyBoYXMgY2hhbmdlZD8gKi9cclxuXHRcdFx0aWYgKFV0aWxzLmVxdWFscyh0aGlzLl9wYXJhbXMsIF9wYXJhbXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBTZXQgcGFyYW1zICovXHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IF9wYXJhbXM7XHJcblxyXG5cdFx0XHQvKiBHZXQgcmVzdWx0cyBmcm9tIHNlcnZlciAqL1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UuYXBwbHlGaWx0ZXJzKHRoaXMuX3BhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIHJlbW92ZWQgZXZlbnRcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlUmVtb3ZlZEV2ZW50KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jbGVhcmVkPy5lbWl0KHRoaXMudmFsdWUpO1xyXG5cdFx0aWYgKHRoaXMucmVtb3ZhYmxlKSB7XHJcblx0XHRcdHRoaXMuY2xlYXIoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgbGF1bmNoIGJ1dHRvbiBjbGlja1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVMYXVuY2hDbGlja2VkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuY2hpcHM/Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5vbkxhdW5jaC5lbWl0KHRoaXMuY2hpcHNbMF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBxdWVyeSBwYXJhbXNcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0UXVlcnlQYXJhbXMoKTogYW55IHtcclxuXHRcdC8qIEluaXQgcGFyYW1zIGlmIG51bGwgKi9cclxuXHRcdHZhciBwYXJhbXMgPSB0aGlzLl9wYXJhbXMgfHwge307XHJcblxyXG5cdFx0LyogQWRkIHByb2plY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0aWYgKHRoaXMucHJvamVjdGlvbikge1xyXG5cdFx0XHRwYXJhbXMucHJvamVjdGlvbiA9IHRoaXMucHJvamVjdGlvbjtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcGFyYW1zO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBwZXJmb3JtcyBjdXN0b20gY2xlYW4tdXAsIGludm9rZWQgaW1tZWRpYXRlbHlcclxuXHQgKiBiZWZvcmUgYSBkaXJlY3RpdmUsIHBpcGUsIG9yIHNlcnZpY2UgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHR9XHJcbn0iLCI8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgbWF0QXV0b2NvbXBsZXRlT3JpZ2luICNvcmlnaW49XCJtYXRBdXRvY29tcGxldGVPcmlnaW5cIj5cclxuXHQ8IS0tICNyZWdpb24gQ2hpcHMgLS0+XHJcblx0PG5nLXRlbXBsYXRlIGxldC1jaGlwIGxldC1maXJzdD1cImZpcnN0XCIgbGV0LWluZGV4PVwiaW5kZXhcIiBuZ0ZvciBbbmdGb3JPZl09XCJjaGlwc1wiPlxyXG5cdFx0PG1hdC1iYXNpYy1jaGlwIFtyZW1vdmFibGVdPVwiIXJlYWRvbmx5XCIgKHJlbW92ZWQpPVwiaGFuZGxlUmVtb3ZlZEV2ZW50KClcIiBkaXNhYmxlUmlwcGxlPlxyXG5cdFx0XHQ8c3BhbiBjbGFzcz1cInZkLWNoaXAtY29udGVudFwiPlxyXG5cdFx0XHRcdDxzcGFuICpuZ0lmPVwiIWNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIj5cclxuXHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiIWF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPnt7IGNoaXAgfX08L3NwYW4+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IGNoaXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY2hpcDogY2hpcCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0PC9zcGFuPlxyXG5cdFx0XHQ8bmctdGVtcGxhdGUgbGV0LWJ1dHRvbiBsZXQtZmlyc3Q9XCJmaXJzdFwiIG5nRm9yIFtuZ0Zvck9mXT1cInN1ZmZpeEJ1dHRvbnNcIj5cclxuXHRcdFx0XHQ8YSBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhYnV0dG9uLmhpZGUgfHwgIWJ1dHRvbi5oaWRlKGNoaXBzWzBdLCBjb250ZXh0KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGJ1dHRvbi5ldmVudCAmJiBidXR0b24uZXZlbnQoY2hpcHNbMF0sIGNvbnRleHQpXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWljb24+e3tidXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuXHRcdFx0XHQ8L2E+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDxhIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIm9uTGF1bmNoPy5vYnNlcnZlcnM/Lmxlbmd0aCA+IDBcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBoYW5kbGVMYXVuY2hDbGlja2VkKClcIj5cclxuXHRcdFx0XHQ8bWF0LWljb24+bGF1bmNoPC9tYXQtaWNvbj5cclxuXHRcdFx0PC9hPlxyXG5cdFx0XHQ8YSBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhcmVhZG9ubHlcIj5cclxuXHRcdFx0XHQ8bWF0LWljb24gbWF0Q2hpcFJlbW92ZT5jbG9zZTwvbWF0LWljb24+XHJcblx0XHRcdDwvYT5cclxuXHRcdDwvbWF0LWJhc2ljLWNoaXA+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBTZWFyY2ggYm94IC0tPlxyXG5cdDxpbnB1dCBtYXRJbnB1dCBbaGlkZGVuXT1cInZhbHVlICYmICFlbXB0eVwiIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCIgKGZvY3VzKT1cImNvbm5lY3QoKVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbbWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG9dPVwib3JpZ2luXCIgW2Zvcm1Db250cm9sXT1cImF1dG9Db21wbGV0ZUNoaXBMaXN0XCIgI2ZpbHRlcklucHV0IC8+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHQ8IS0tICNyZWdpb24gUmVzZXQgYnV0dG9uIC0tPlxyXG5cdDxhIG1hdC1pY29uLWJ1dHRvbiB0cmFpbGluZ0ljb24gKm5nSWY9XCJmaWx0ZXJJbnB1dC52YWx1ZVwiIGNsYXNzPVwicmVzZXQtaW5wdXRcIiAoY2xpY2spPVwiZmlsdGVySW5wdXQudmFsdWUgPSAnJ1wiPlxyXG5cdFx0PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuXHQ8L2E+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHQ8IS0tICNyZWdpb24gUHJvZ3Jlc3MgLS0+XHJcblx0PCEtLSA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCIxOFwiICpuZ0lmPVwiZGF0YVNvdXJjZT8uaXNMb2FkaW5nXCI+PC9tYXQtc3Bpbm5lcj4gLS0+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG48L21hdC1jaGlwLWdyaWQ+XHJcblxyXG48IS0tICNyZWdpb24gQXV0b2NvbXBsZXRlIC0tPlxyXG48bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJhZGRDaGlwKCRldmVudC5vcHRpb24udmFsdWUsIGZpbHRlcklucHV0KVwiIGNsYXNzPVwie3thdXRvY29tcGxldGVDc3NDbGFzc319e3tjbGFzc1R5cGU/JyB0YWJsZS1hdXRvY29tcGxldGUnOicnfX1cIj5cclxuXHQ8bmctdGVtcGxhdGUgKm5nSWY9XCIhY2xhc3NUeXBlICYmIG9wZW5lZFwiIGxldC1pdGVtIGxldC1maXJzdD1cImZpcnN0XCIgbmdGb3IgW25nRm9yT2ZdPVwiZGF0YVNvdXJjZT8uaXRlbXNcIj5cclxuXHRcdDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XHJcblx0XHRcdDxzcGFuICpuZ0lmPVwiIWF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPnt7aXRlbX19PC9zcGFuPlxyXG5cdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHQ8L21hdC1vcHRpb24+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwiY2xhc3NUeXBlICYmIG9wZW5lZFwiPlxyXG5cdFx0PG1hdC1vcHRpb24gaGlkZT1cInRydWVcIj48L21hdC1vcHRpb24+XHJcblx0XHQ8dmQtZHluYW1pYy10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW2NsYXNzVHlwZV09XCJjbGFzc1R5cGVcIiAocm93Q2xpY2spPVwiYWRkQ2hpcCgkZXZlbnQsIGZpbHRlcklucHV0KVwiIG1hdFNvcnQgW3NvcnRBY3RpdmVdPVwic29ydEFjdGl2ZXx8J2lkJ1wiIFtzb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIj48L3ZkLWR5bmFtaWMtdGFibGU+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblx0PG1hdC1wYWdpbmF0b3IgW2xlbmd0aF09XCJkYXRhU291cmNlPy50b3RhbFwiIFtwYWdlSW5kZXhdPVwiZGF0YVNvdXJjZT8ucGFnZUluZGV4XCIgW3BhZ2VTaXplXT1cImRhdGFTb3VyY2U/LnBhZ2VTaXplXCIgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIiBzaG93Rmlyc3RMYXN0QnV0dG9ucz1cInRydWVcIiBoaWRlUGFnZVNpemU9XCJ0cnVlXCI+PC9tYXQtcGFnaW5hdG9yPlxyXG48L21hdC1hdXRvY29tcGxldGU+XHJcbjwhLS0gI2VuZHJlZ2lvbiAtLT4iXX0=
@@ -9,9 +9,9 @@ export class VdAutocompleteOptionDirective extends CdkPortal {
9
9
  super(templateRef, viewContainerRef);
10
10
  }
11
11
  }
12
- /** @nocollapse */ VdAutocompleteOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdAutocompleteOptionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
13
- /** @nocollapse */ VdAutocompleteOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template", usesInheritance: true, ngImport: i0 });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdAutocompleteOptionDirective, decorators: [{
12
+ /** @nocollapse */ VdAutocompleteOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdAutocompleteOptionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
13
+ /** @nocollapse */ VdAutocompleteOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template", usesInheritance: true, ngImport: i0 });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdAutocompleteOptionDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{ selector: '[vd-autocomplete-option]ng-template' }]
17
17
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -9,9 +9,9 @@ export class VdChipDirective extends CdkPortal {
9
9
  super(templateRef, viewContainerRef);
10
10
  }
11
11
  }
12
- /** @nocollapse */ VdChipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdChipDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
13
- /** @nocollapse */ VdChipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: VdChipDirective, selector: "[vd-chip]ng-template", usesInheritance: true, ngImport: i0 });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdChipDirective, decorators: [{
12
+ /** @nocollapse */ VdChipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdChipDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
13
+ /** @nocollapse */ VdChipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: VdChipDirective, selector: "[vd-chip]ng-template", usesInheritance: true, ngImport: i0 });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdChipDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{ selector: '[vd-chip]ng-template' }]
17
17
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -84,8 +84,8 @@ const COMMON_DECLARATIONS = [
84
84
  ];
85
85
  export class VdCommonModule {
86
86
  }
87
- /** @nocollapse */ VdCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
88
- /** @nocollapse */ VdCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.0", ngImport: i0, type: VdCommonModule, declarations: [DataSourcePipe,
87
+ /** @nocollapse */ VdCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
88
+ /** @nocollapse */ VdCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: VdCommonModule, declarations: [DataSourcePipe,
89
89
  DisableControlDirective,
90
90
  EnumPipe,
91
91
  FileSizePipe,
@@ -122,8 +122,8 @@ export class VdCommonModule {
122
122
  TitleCase,
123
123
  TruncatePipe,
124
124
  ValuesPipe] });
125
- /** @nocollapse */ VdCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdCommonModule, providers: [...RUNTIME_COMPILER_PROVIDERS] });
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdCommonModule, decorators: [{
125
+ /** @nocollapse */ VdCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCommonModule, providers: [...RUNTIME_COMPILER_PROVIDERS] });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdCommonModule, decorators: [{
127
127
  type: NgModule,
128
128
  args: [{
129
129
  imports: [],
@@ -23,9 +23,9 @@ export class DisableControlDirective {
23
23
  }
24
24
  }
25
25
  }
26
- /** @nocollapse */ DisableControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DisableControlDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
27
- /** @nocollapse */ DisableControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: DisableControlDirective, selector: "[disableControl]", inputs: { disableControl: "disableControl" }, ngImport: i0 });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DisableControlDirective, decorators: [{
26
+ /** @nocollapse */ DisableControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DisableControlDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
27
+ /** @nocollapse */ DisableControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: DisableControlDirective, selector: "[disableControl]", inputs: { disableControl: "disableControl" }, ngImport: i0 });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DisableControlDirective, decorators: [{
29
29
  type: Directive,
30
30
  args: [{ selector: '[disableControl]' }]
31
31
  }], ctorParameters: function () { return [{ type: i1.NgControl }]; }, propDecorators: { disableControl: [{
@@ -192,9 +192,9 @@ Utils.germanMonthNames = [
192
192
  { name: 'November', id: 11 },
193
193
  { name: 'Dezember', id: 12 }
194
194
  ];
195
- /** @nocollapse */ Utils.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: Utils, deps: [], target: i0.ɵɵFactoryTarget.Directive });
196
- /** @nocollapse */ Utils.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: Utils, ngImport: i0 });
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: Utils, decorators: [{
195
+ /** @nocollapse */ Utils.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: Utils, deps: [], target: i0.ɵɵFactoryTarget.Directive });
196
+ /** @nocollapse */ Utils.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: Utils, ngImport: i0 });
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: Utils, decorators: [{
198
198
  type: Directive
199
199
  }] });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vZnVuY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyxVQUFVO0FBRVYsTUFBTSxPQUFPLEtBQUs7SUFvQmQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxJQUFZO1FBQ3pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVE7UUFDcEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNyQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQzthQUM3QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVUsRUFBRSxXQUFX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RUFBRSxDQUFDLEVBQUU7SUFDNUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDM0IsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDOUIsQ0FBQTtxSEFsQk8sS0FBSzt5R0FBTCxLQUFLOzJGQUFMLEtBQUs7a0JBRGpCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBVdGlscyB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb250aCBuYW1lc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdlcm1hbk1vbnRoTmFtZXM6IHsgbmFtZTogc3RyaW5nLCBpZDogbnVtYmVyIH1bXSA9IFtcclxuICAgICAgICB7IG5hbWU6ICdKYW51YXInLCBpZDogMSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0ZlYnJ1YXInLCBpZDogMiB9LFxyXG4gICAgICAgIHsgbmFtZTogJ03DpHJ6JywgaWQ6IDMgfSxcclxuICAgICAgICB7IG5hbWU6ICdBcHJpbCcsIGlkOiA0IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnTWFpJywgaWQ6IDUgfSxcclxuICAgICAgICB7IG5hbWU6ICdKdW5pJywgaWQ6IDYgfSxcclxuICAgICAgICB7IG5hbWU6ICdKdWxpJywgaWQ6IDcgfSxcclxuICAgICAgICB7IG5hbWU6ICdBdWd1c3QnLCBpZDogOCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ1NlcHRlbWJlcicsIGlkOiA5IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnT2t0b2JlcicsIGlkOiAxMCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ05vdmVtYmVyJywgaWQ6IDExIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnRGV6ZW1iZXInLCBpZDogMTIgfVxyXG4gICAgXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSByYW5nZVxyXG4gICAgICogQHBhcmFtIHNpemUgXHJcbiAgICAgKiBAcGFyYW0gc3RhcnRBdCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBzdG9wOiBudW1iZXIsIHN0ZXA6IG51bWJlcik6IFJlYWRvbmx5QXJyYXk8bnVtYmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IChzdG9wIC0gc3RhcnQpIC8gc3RlcCArIDEgfSwgKF8sIGkpID0+IHN0YXJ0ICsgKGkgKiBzdGVwKSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgZW1wdHkgdmFsdWVzIGZyb20gdGhlIHNwZWNpZmllZCBvYmplY3RcclxuICAgICAqIEBwYXJhbSBvYmogXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlRW1wdHlWYWx1ZXMob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKFtfLCB2XSkgPT4gdiAhPSBudWxsKVxyXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIFtrLCB2XSkgPT4gKHsgLi4uYWNjLCBba106IHYgfSksIHt9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbnVtYmVyIG9mIGRheXMgbGVmdCBpbiB0aGUgc3BlY2lmaWVkIG1vbnRoXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSBcclxuICAgICAqIEBwYXJhbSBtb250aE9mZnNldCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBkYXlzTGVmdEluTW9udGgoZGF0ZTogRGF0ZSwgbW9udGhPZmZzZXQgPSAwKTogbnVtYmVyIHtcclxuICAgICAgICB2YXIgdGltZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTtcclxuICAgICAgICB0aW1lLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRoT2Zmc2V0KTtcclxuICAgICAgICB0aW1lLnNldERhdGUoMCk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIHRpbWUuZ2V0RGF0ZSgpID4gZGF0ZS5nZXREYXRlKCkgPyB0aW1lLmdldERhdGUoKSAtIGRhdGUuZ2V0RGF0ZSgpIDogMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmZWQgb2JqZWN0IGFuZCBwcm9wZXJ0eVxyXG4gICAgICogQHBhcmFtIG9iamVjdCBcclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5VmFsdWUob2JqZWN0OiBPYmplY3QsIHByb3BlcnR5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIC8qIFByb3BlcnR5IG5vdCBmb3VuZCAqL1xyXG4gICAgICAgIGlmICghb2JqZWN0IHx8IHR5cGVvZiBvYmplY3QgPT09ICd1bmRlZmluZWQnIHx8ICFwcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEluZGV4IG9mIG5leHQgcHJvcGVydHkgc3BsaXQgKi9cclxuICAgICAgICB2YXIgaW5kZXggPSBwcm9wZXJ0eS5pbmRleE9mKCcuJylcclxuXHJcbiAgICAgICAgLyogUHJvcGVydHkgc3BsaXQgZm91bmQ7IHJlY3Vyc2l2ZSBjYWxsICovXHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShvYmplY3RbcHJvcGVydHkuc3Vic3RyaW5nKDAsIGluZGV4KV0sIHByb3BlcnR5LnN1YnN0cihpbmRleCArIDEpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIE5vIHNwbGl0OyBnZXQgcHJvcGVydHkgKi9cclxuICAgICAgICByZXR1cm4gb2JqZWN0W3Byb3BlcnR5XTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNvcnRzIGFuIGFycmF5IG9mIG9iamVjdCBieSB0aGUgc3BlY2lmaWVkIHByb3BlcnR5XHJcbiAgICAgKiBAcGFyYW0gYXJyYXkgXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzb3J0QXJyYXk8VD4oYXJyYXk6IFRbXSwgcHJvcGVydHk6IHN0cmluZywgcmV2ZXJzZT86IGJvb2xlYW4pIHtcclxuICAgICAgICBsZXQgc29ydERpciA9IHJldmVyc2UgPT09IHRydWUgPyAtMSA6IDE7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5ID0gKGFycmF5Py5zb3J0KChhOiBULCBiOiBUKSA9PiAoYVtwcm9wZXJ0eV0gPiBiW3Byb3BlcnR5XSkgPyBzb3J0RGlyIDogKChiW3Byb3BlcnR5XSA+IGFbcHJvcGVydHldKSA/IChzb3J0RGlyICogLTEpIDogMCkpIHx8IFtdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogVGFrZXMgYW4gQXJyYXk8Vj4sIGFuZCBhIGdyb3VwaW5nIGZ1bmN0aW9uLFxyXG4gICAgICogYW5kIHJldHVybnMgYSBNYXAgb2YgdGhlIGFycmF5IGdyb3VwZWQgYnkgdGhlIGdyb3VwaW5nIGZ1bmN0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBsaXN0IEFuIGFycmF5IG9mIHR5cGUgVi5cclxuICAgICAqIEBwYXJhbSBrZXlHZXR0ZXIgQSBGdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0aGUgQXJyYXkgdHlwZSBWIGFzIGFuIGlucHV0LCBhbmQgcmV0dXJucyBhIHZhbHVlIG9mIHR5cGUgSy5cclxuICAgICAqICAgICAgICAgICAgICAgICAgSyBpcyBnZW5lcmFsbHkgaW50ZW5kZWQgdG8gYmUgYSBwcm9wZXJ0eSBrZXkgb2YgVi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBNYXAgb2YgdGhlIGFycmF5IGdyb3VwZWQgYnkgdGhlIGdyb3VwaW5nIGZ1bmN0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdyb3VwQXJyYXlCeTxLLCBWPihsaXN0OiBBcnJheTxWPiwga2V5R2V0dGVyOiAoaW5wdXQ6IFYpID0+IEspOiBNYXA8SywgQXJyYXk8Vj4+IHtcclxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPEssIEFycmF5PFY+PigpO1xyXG4gICAgICAgIGxpc3Q/LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5R2V0dGVyKGl0ZW0pO1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gbWFwLmdldChrZXkpO1xyXG4gICAgICAgICAgICBpZiAoIWNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIG1hcC5zZXQoa2V5LCBbaXRlbV0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBtYXA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcnVuY2F0ZXMgYSB0ZXh0XHJcbiAgICAgKiBAcGFyYW0gdGV4dCBcclxuICAgICAqIEBwYXJhbSBsZW5ndGggXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyB0cnVuY2F0ZVRleHQodGV4dDogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgLyogSWYgdGV4dCBpcyBub3QgYSBzdHJpbmcsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgKi9cclxuICAgICAgICBpZiAodHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFJlbW92ZSBodG1sIHRhZ3MgKi9cclxuICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgXCJcIik7XHJcblxyXG4gICAgICAgIC8qIFRydW5jYXRlIHRoZSBzdHJpbmcgKi9cclxuICAgICAgICBsZXQgdHJ1bmNhdGVkVGV4dDogc3RyaW5nID0gdGV4dC5zdWJzdHIoMCwgbGVuZ3RoKTtcclxuXHJcbiAgICAgICAgLyogQWRkIGVsbGlwc2lzIHRvIHRoZSB0ZXh0ICovXHJcbiAgICAgICAgaWYgKHRleHQubGVuZ3RoID4gbGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRydW5jYXRlZFRleHQgPSBgJHt0cnVuY2F0ZWRUZXh0LnRyaW0oKX0uLi5gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydW5jYXRlZFRleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0IE9iamVjdCB0byBIdHRwUGFyYW1zXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBib2R5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdG9IdHRwUGFyYW1zKGJvZHk6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgICAgIGlmICghYm9keSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2goKGtleSkgPT4gKGJvZHlba2V5XSA9PSBudWxsIHx8IGJvZHlba2V5XSA9PSAnJyB8fCBib2R5W2tleV0gPT0gJ3VuZGVmaW5lZCcpICYmIGJvZHlba2V5XSAhPSAwICYmIGRlbGV0ZSBib2R5W2tleV0pO1xyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGJvZHkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbGVhbnMgdGhlIG9iamVjdHNcclxuICAgICAqIFJlbW92ZXMgZW1wdHkgcHJvcGVydGllc1xyXG4gICAgICogQHBhcmFtIG9iaiBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjbGVhbk9iamVjdChvYmo6IGFueSk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqW3Byb3BOYW1lXSA9PT0gbnVsbCB8fCBvYmpbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgfHwgb2JqW3Byb3BOYW1lXSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpbcHJvcE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgb2JqZWN0cyBhcmUgZXF1YWxcclxuICAgICAqIEBwYXJhbSBvYmoxIFxyXG4gICAgICogQHBhcmFtIG9iajIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBlcXVhbHMob2JqMTogYW55LCBvYmoyOiBhbnkpIHtcclxuICAgICAgICB0cnkgeyByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpOyB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcXVlcnkgcGFyYW1zIGFuZCB0aGUgaGFzaCBmcm9tIHRoZSBzcGVjaWZpZWQgdXJsXHJcbiAgICAgKiBAcGFyYW0gdXJsIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VXJsUGFydHModXJsOiBzdHJpbmcpOiB7IHVybDogc3RyaW5nLCBwYXJhbXM6IE9iamVjdCwgaGFzaDogc3RyaW5nIH0ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8qIEdldCB1cmxzIHBhcnRzICovXHJcbiAgICAgICAgICAgIHZhciB1cmxIYXNoUGFydHMgPSB1cmw/LnNwbGl0KCcjJykgPz8gW107XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgaGFzaCAqL1xyXG4gICAgICAgICAgICB2YXIgdXJsSGFzaCA9IHVybEhhc2hQYXJ0c1sxXSA/PyBudWxsO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHF1ZXJ5IHBhcnRzICovXHJcbiAgICAgICAgICAgIHZhciB1cmxRdWVyeVBhcnRzID0gdXJsSGFzaFBhcnRzWzBdPy5zcGxpdCgnPycpO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHF1ZXJ5IHBhcmFtcyBhcyBvYmplY3QgKi9cclxuICAgICAgICAgICAgdmFyIHVybFBhcmFtczogT2JqZWN0ID0gdXJsUXVlcnlQYXJ0c1sxXT8uc3BsaXQoXCImXCIpLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIHAgPSBjdXJyLnNwbGl0KFwiPVwiKTtcclxuICAgICAgICAgICAgICAgIHByZXZbZGVjb2RlVVJJQ29tcG9uZW50KHBbMF0pXSA9IGRlY29kZVVSSUNvbXBvbmVudChwWzFdKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xyXG4gICAgICAgICAgICB9LCB7fSkgPz8gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7IHVybDogdXJsUXVlcnlQYXJ0c1swXSwgcGFyYW1zOiB1cmxQYXJhbXMsIGhhc2g6IHVybEhhc2ggfTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4geyB1cmw6IHVybCwgcGFyYW1zOiBudWxsLCBoYXNoOiBudWxsIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vZnVuY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyxVQUFVO0FBRVYsTUFBTSxPQUFPLEtBQUs7SUFvQmQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxJQUFZO1FBQ3pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVE7UUFDcEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNyQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQzthQUM3QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVUsRUFBRSxXQUFX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RUFBRSxDQUFDLEVBQUU7SUFDNUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDM0IsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDL0IsQ0FBQztxSEFsQk8sS0FBSzt5R0FBTCxLQUFLOzJGQUFMLEtBQUs7a0JBRGpCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBVdGlscyB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb250aCBuYW1lc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdlcm1hbk1vbnRoTmFtZXM6IHsgbmFtZTogc3RyaW5nLCBpZDogbnVtYmVyIH1bXSA9IFtcclxuICAgICAgICB7IG5hbWU6ICdKYW51YXInLCBpZDogMSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ0ZlYnJ1YXInLCBpZDogMiB9LFxyXG4gICAgICAgIHsgbmFtZTogJ03DpHJ6JywgaWQ6IDMgfSxcclxuICAgICAgICB7IG5hbWU6ICdBcHJpbCcsIGlkOiA0IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnTWFpJywgaWQ6IDUgfSxcclxuICAgICAgICB7IG5hbWU6ICdKdW5pJywgaWQ6IDYgfSxcclxuICAgICAgICB7IG5hbWU6ICdKdWxpJywgaWQ6IDcgfSxcclxuICAgICAgICB7IG5hbWU6ICdBdWd1c3QnLCBpZDogOCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ1NlcHRlbWJlcicsIGlkOiA5IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnT2t0b2JlcicsIGlkOiAxMCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ05vdmVtYmVyJywgaWQ6IDExIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnRGV6ZW1iZXInLCBpZDogMTIgfVxyXG4gICAgXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSByYW5nZVxyXG4gICAgICogQHBhcmFtIHNpemUgXHJcbiAgICAgKiBAcGFyYW0gc3RhcnRBdCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBzdG9wOiBudW1iZXIsIHN0ZXA6IG51bWJlcik6IFJlYWRvbmx5QXJyYXk8bnVtYmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IChzdG9wIC0gc3RhcnQpIC8gc3RlcCArIDEgfSwgKF8sIGkpID0+IHN0YXJ0ICsgKGkgKiBzdGVwKSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgZW1wdHkgdmFsdWVzIGZyb20gdGhlIHNwZWNpZmllZCBvYmplY3RcclxuICAgICAqIEBwYXJhbSBvYmogXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlRW1wdHlWYWx1ZXMob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKFtfLCB2XSkgPT4gdiAhPSBudWxsKVxyXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIFtrLCB2XSkgPT4gKHsgLi4uYWNjLCBba106IHYgfSksIHt9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbnVtYmVyIG9mIGRheXMgbGVmdCBpbiB0aGUgc3BlY2lmaWVkIG1vbnRoXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSBcclxuICAgICAqIEBwYXJhbSBtb250aE9mZnNldCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBkYXlzTGVmdEluTW9udGgoZGF0ZTogRGF0ZSwgbW9udGhPZmZzZXQgPSAwKTogbnVtYmVyIHtcclxuICAgICAgICB2YXIgdGltZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTtcclxuICAgICAgICB0aW1lLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRoT2Zmc2V0KTtcclxuICAgICAgICB0aW1lLnNldERhdGUoMCk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIHRpbWUuZ2V0RGF0ZSgpID4gZGF0ZS5nZXREYXRlKCkgPyB0aW1lLmdldERhdGUoKSAtIGRhdGUuZ2V0RGF0ZSgpIDogMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmZWQgb2JqZWN0IGFuZCBwcm9wZXJ0eVxyXG4gICAgICogQHBhcmFtIG9iamVjdCBcclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5VmFsdWUob2JqZWN0OiBPYmplY3QsIHByb3BlcnR5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIC8qIFByb3BlcnR5IG5vdCBmb3VuZCAqL1xyXG4gICAgICAgIGlmICghb2JqZWN0IHx8IHR5cGVvZiBvYmplY3QgPT09ICd1bmRlZmluZWQnIHx8ICFwcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEluZGV4IG9mIG5leHQgcHJvcGVydHkgc3BsaXQgKi9cclxuICAgICAgICB2YXIgaW5kZXggPSBwcm9wZXJ0eS5pbmRleE9mKCcuJylcclxuXHJcbiAgICAgICAgLyogUHJvcGVydHkgc3BsaXQgZm91bmQ7IHJlY3Vyc2l2ZSBjYWxsICovXHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShvYmplY3RbcHJvcGVydHkuc3Vic3RyaW5nKDAsIGluZGV4KV0sIHByb3BlcnR5LnN1YnN0cihpbmRleCArIDEpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIE5vIHNwbGl0OyBnZXQgcHJvcGVydHkgKi9cclxuICAgICAgICByZXR1cm4gb2JqZWN0W3Byb3BlcnR5XTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNvcnRzIGFuIGFycmF5IG9mIG9iamVjdCBieSB0aGUgc3BlY2lmaWVkIHByb3BlcnR5XHJcbiAgICAgKiBAcGFyYW0gYXJyYXkgXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzb3J0QXJyYXk8VD4oYXJyYXk6IFRbXSwgcHJvcGVydHk6IHN0cmluZywgcmV2ZXJzZT86IGJvb2xlYW4pIHtcclxuICAgICAgICBsZXQgc29ydERpciA9IHJldmVyc2UgPT09IHRydWUgPyAtMSA6IDE7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5ID0gKGFycmF5Py5zb3J0KChhOiBULCBiOiBUKSA9PiAoYVtwcm9wZXJ0eV0gPiBiW3Byb3BlcnR5XSkgPyBzb3J0RGlyIDogKChiW3Byb3BlcnR5XSA+IGFbcHJvcGVydHldKSA/IChzb3J0RGlyICogLTEpIDogMCkpIHx8IFtdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogVGFrZXMgYW4gQXJyYXk8Vj4sIGFuZCBhIGdyb3VwaW5nIGZ1bmN0aW9uLFxyXG4gICAgICogYW5kIHJldHVybnMgYSBNYXAgb2YgdGhlIGFycmF5IGdyb3VwZWQgYnkgdGhlIGdyb3VwaW5nIGZ1bmN0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBsaXN0IEFuIGFycmF5IG9mIHR5cGUgVi5cclxuICAgICAqIEBwYXJhbSBrZXlHZXR0ZXIgQSBGdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0aGUgQXJyYXkgdHlwZSBWIGFzIGFuIGlucHV0LCBhbmQgcmV0dXJucyBhIHZhbHVlIG9mIHR5cGUgSy5cclxuICAgICAqICAgICAgICAgICAgICAgICAgSyBpcyBnZW5lcmFsbHkgaW50ZW5kZWQgdG8gYmUgYSBwcm9wZXJ0eSBrZXkgb2YgVi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBNYXAgb2YgdGhlIGFycmF5IGdyb3VwZWQgYnkgdGhlIGdyb3VwaW5nIGZ1bmN0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdyb3VwQXJyYXlCeTxLLCBWPihsaXN0OiBBcnJheTxWPiwga2V5R2V0dGVyOiAoaW5wdXQ6IFYpID0+IEspOiBNYXA8SywgQXJyYXk8Vj4+IHtcclxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPEssIEFycmF5PFY+PigpO1xyXG4gICAgICAgIGxpc3Q/LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5R2V0dGVyKGl0ZW0pO1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gbWFwLmdldChrZXkpO1xyXG4gICAgICAgICAgICBpZiAoIWNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIG1hcC5zZXQoa2V5LCBbaXRlbV0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBtYXA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcnVuY2F0ZXMgYSB0ZXh0XHJcbiAgICAgKiBAcGFyYW0gdGV4dCBcclxuICAgICAqIEBwYXJhbSBsZW5ndGggXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyB0cnVuY2F0ZVRleHQodGV4dDogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgLyogSWYgdGV4dCBpcyBub3QgYSBzdHJpbmcsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgKi9cclxuICAgICAgICBpZiAodHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFJlbW92ZSBodG1sIHRhZ3MgKi9cclxuICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgXCJcIik7XHJcblxyXG4gICAgICAgIC8qIFRydW5jYXRlIHRoZSBzdHJpbmcgKi9cclxuICAgICAgICBsZXQgdHJ1bmNhdGVkVGV4dDogc3RyaW5nID0gdGV4dC5zdWJzdHIoMCwgbGVuZ3RoKTtcclxuXHJcbiAgICAgICAgLyogQWRkIGVsbGlwc2lzIHRvIHRoZSB0ZXh0ICovXHJcbiAgICAgICAgaWYgKHRleHQubGVuZ3RoID4gbGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRydW5jYXRlZFRleHQgPSBgJHt0cnVuY2F0ZWRUZXh0LnRyaW0oKX0uLi5gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydW5jYXRlZFRleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0IE9iamVjdCB0byBIdHRwUGFyYW1zXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBib2R5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdG9IdHRwUGFyYW1zKGJvZHk6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgICAgIGlmICghYm9keSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2goKGtleSkgPT4gKGJvZHlba2V5XSA9PSBudWxsIHx8IGJvZHlba2V5XSA9PSAnJyB8fCBib2R5W2tleV0gPT0gJ3VuZGVmaW5lZCcpICYmIGJvZHlba2V5XSAhPSAwICYmIGRlbGV0ZSBib2R5W2tleV0pO1xyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGJvZHkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbGVhbnMgdGhlIG9iamVjdHNcclxuICAgICAqIFJlbW92ZXMgZW1wdHkgcHJvcGVydGllc1xyXG4gICAgICogQHBhcmFtIG9iaiBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjbGVhbk9iamVjdChvYmo6IGFueSk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqW3Byb3BOYW1lXSA9PT0gbnVsbCB8fCBvYmpbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgfHwgb2JqW3Byb3BOYW1lXSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpbcHJvcE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgb2JqZWN0cyBhcmUgZXF1YWxcclxuICAgICAqIEBwYXJhbSBvYmoxIFxyXG4gICAgICogQHBhcmFtIG9iajIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBlcXVhbHMob2JqMTogYW55LCBvYmoyOiBhbnkpIHtcclxuICAgICAgICB0cnkgeyByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpOyB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcXVlcnkgcGFyYW1zIGFuZCB0aGUgaGFzaCBmcm9tIHRoZSBzcGVjaWZpZWQgdXJsXHJcbiAgICAgKiBAcGFyYW0gdXJsIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VXJsUGFydHModXJsOiBzdHJpbmcpOiB7IHVybDogc3RyaW5nLCBwYXJhbXM6IE9iamVjdCwgaGFzaDogc3RyaW5nIH0ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8qIEdldCB1cmxzIHBhcnRzICovXHJcbiAgICAgICAgICAgIHZhciB1cmxIYXNoUGFydHMgPSB1cmw/LnNwbGl0KCcjJykgPz8gW107XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgaGFzaCAqL1xyXG4gICAgICAgICAgICB2YXIgdXJsSGFzaCA9IHVybEhhc2hQYXJ0c1sxXSA/PyBudWxsO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHF1ZXJ5IHBhcnRzICovXHJcbiAgICAgICAgICAgIHZhciB1cmxRdWVyeVBhcnRzID0gdXJsSGFzaFBhcnRzWzBdPy5zcGxpdCgnPycpO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHF1ZXJ5IHBhcmFtcyBhcyBvYmplY3QgKi9cclxuICAgICAgICAgICAgdmFyIHVybFBhcmFtczogT2JqZWN0ID0gdXJsUXVlcnlQYXJ0c1sxXT8uc3BsaXQoXCImXCIpLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIHAgPSBjdXJyLnNwbGl0KFwiPVwiKTtcclxuICAgICAgICAgICAgICAgIHByZXZbZGVjb2RlVVJJQ29tcG9uZW50KHBbMF0pXSA9IGRlY29kZVVSSUNvbXBvbmVudChwWzFdKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xyXG4gICAgICAgICAgICB9LCB7fSkgPz8gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7IHVybDogdXJsUXVlcnlQYXJ0c1swXSwgcGFyYW1zOiB1cmxQYXJhbXMsIGhhc2g6IHVybEhhc2ggfTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4geyB1cmw6IHVybCwgcGFyYW1zOiBudWxsLCBoYXNoOiBudWxsIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
@@ -69,9 +69,9 @@ AppStorage.getObjectEncoded = (key, defaultValue) => {
69
69
  return defaultValue;
70
70
  }
71
71
  };
72
- /** @nocollapse */ AppStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AppStorage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
73
- /** @nocollapse */ AppStorage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: AppStorage, ngImport: i0 });
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AppStorage, decorators: [{
72
+ /** @nocollapse */ AppStorage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AppStorage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
73
+ /** @nocollapse */ AppStorage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: AppStorage, ngImport: i0 });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AppStorage, decorators: [{
75
75
  type: Directive
76
76
  }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vaGVscGVycy9hcHAtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyxVQUFVO0FBRVYsTUFBTSxPQUFnQixVQUFVOztBQUU1Qjs7O0dBR0c7QUFDVyxpQkFBTSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRyxDQUFBO0FBRWpEOzs7O0dBSUc7QUFDVyxvQkFBUyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBRSxDQUFBO0FBRTlHOzs7R0FHRztBQUNXLG9CQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBRSxDQUFBO0FBRWhHOzs7O0dBSUc7QUFDVyxvQkFBUyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxFQUFFO0lBQ2xELElBQUk7UUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDcEQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdkI7QUFDTCxDQUFDLENBQUE7QUFFRDs7OztHQUlHO0FBQ1csMkJBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVSxFQUFFLEVBQUU7SUFDekQsSUFBSTtRQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxRDtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN2QjtBQUNMLENBQUMsQ0FBQTtBQUVEOzs7R0FHRztBQUNXLG9CQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQUUsWUFBa0IsRUFBTyxFQUFFO0lBQy9ELElBQUk7UUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQztLQUNoRTtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osT0FBTyxZQUFZLENBQUM7S0FDdkI7QUFDTCxDQUFDLENBQUE7QUFFRDs7O0dBR0c7QUFDVywyQkFBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxZQUFrQixFQUFPLEVBQUU7SUFDdEUsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDO0tBQ3RFO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixPQUFPLFlBQVksQ0FBQztLQUN2QjtBQUNMLENBQUMsQ0FBQTswSEFyRWlCLFVBQVU7OEdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUQvQixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBTdG9yYWdlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgc3RvcmFnZSBrZXlcclxuICAgICAqIEBwYXJhbSBrZXkgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0S2V5ID0gKGtleTogc3RyaW5nKSA9PiBgJHtrZXl9YDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgYSBzdHJpbmcgZnJvbSBsb2NhbFN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbSB0byBzdG9yZVxyXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzdG9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHNldFN0cmluZyA9IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gbG9jYWxTdG9yYWdlLnNldEl0ZW0oQXBwU3RvcmFnZS5nZXRLZXkoa2V5KSwgdmFsdWUpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhIHN0cmluZyBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IGxvY2FsU3RvcmFnZS5nZXRJdGVtKEFwcFN0b3JhZ2UuZ2V0S2V5KGtleSkpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBhbiBvYmplY3QgZnJvbSBsb2NhbFN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbSB0byBzdG9yZVxyXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzdG9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHNldE9iamVjdCA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIEFwcFN0b3JhZ2Uuc2V0U3RyaW5nKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgYW4gb2JqZWN0IGZyb20gbG9jYWxTdG9yYWdlXHJcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIGl0ZW0gdG8gc3RvcmVcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc3RvcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzZXRPYmplY3RFbmNvZGVkID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgQXBwU3RvcmFnZS5zZXRTdHJpbmcoa2V5LCBidG9hKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhbiBvYmplY3QgZnJvbSBsb2NhbFN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldE9iamVjdCA9IChrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KTogYW55ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShBcHBTdG9yYWdlLmdldFN0cmluZyhrZXkpKSB8fCBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFuIG9iamVjdCBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0T2JqZWN0RW5jb2RlZCA9IChrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KTogYW55ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShhdG9iKEFwcFN0b3JhZ2UuZ2V0U3RyaW5nKGtleSkpKSB8fCBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vaGVscGVycy9hcHAtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyxVQUFVO0FBRVYsTUFBTSxPQUFnQixVQUFVOztBQUU1Qjs7O0dBR0c7QUFDVyxpQkFBTSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBRWpEOzs7O0dBSUc7QUFDVyxvQkFBUyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRTlHOzs7R0FHRztBQUNXLG9CQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRWhHOzs7O0dBSUc7QUFDVyxvQkFBUyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxFQUFFO0lBQ2xELElBQUk7UUFDQSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDcEQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdkI7QUFDTCxDQUFDLENBQUE7QUFFRDs7OztHQUlHO0FBQ1csMkJBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVSxFQUFFLEVBQUU7SUFDekQsSUFBSTtRQUNBLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxRDtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN2QjtBQUNMLENBQUMsQ0FBQTtBQUVEOzs7R0FHRztBQUNXLG9CQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQUUsWUFBa0IsRUFBTyxFQUFFO0lBQy9ELElBQUk7UUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQztLQUNoRTtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osT0FBTyxZQUFZLENBQUM7S0FDdkI7QUFDTCxDQUFDLENBQUE7QUFFRDs7O0dBR0c7QUFDVywyQkFBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxZQUFrQixFQUFPLEVBQUU7SUFDdEUsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDO0tBQ3RFO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixPQUFPLFlBQVksQ0FBQztLQUN2QjtBQUNMLENBQUMsQ0FBQTswSEFyRWlCLFVBQVU7OEdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUQvQixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBTdG9yYWdlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgc3RvcmFnZSBrZXlcclxuICAgICAqIEBwYXJhbSBrZXkgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0S2V5ID0gKGtleTogc3RyaW5nKSA9PiBgJHtrZXl9YDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgYSBzdHJpbmcgZnJvbSBsb2NhbFN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbSB0byBzdG9yZVxyXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzdG9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHNldFN0cmluZyA9IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gbG9jYWxTdG9yYWdlLnNldEl0ZW0oQXBwU3RvcmFnZS5nZXRLZXkoa2V5KSwgdmFsdWUpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhIHN0cmluZyBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IGxvY2FsU3RvcmFnZS5nZXRJdGVtKEFwcFN0b3JhZ2UuZ2V0S2V5KGtleSkpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBhbiBvYmplY3QgZnJvbSBsb2NhbFN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbSB0byBzdG9yZVxyXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzdG9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHNldE9iamVjdCA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIEFwcFN0b3JhZ2Uuc2V0U3RyaW5nKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgYW4gb2JqZWN0IGZyb20gbG9jYWxTdG9yYWdlXHJcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIGl0ZW0gdG8gc3RvcmVcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc3RvcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzZXRPYmplY3RFbmNvZGVkID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgQXBwU3RvcmFnZS5zZXRTdHJpbmcoa2V5LCBidG9hKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhbiBvYmplY3QgZnJvbSBsb2NhbFN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSBvZiB0aGUgaXRlbVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldE9iamVjdCA9IChrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KTogYW55ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShBcHBTdG9yYWdlLmdldFN0cmluZyhrZXkpKSB8fCBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFuIG9iamVjdCBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0T2JqZWN0RW5jb2RlZCA9IChrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KTogYW55ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShhdG9iKEFwcFN0b3JhZ2UuZ2V0U3RyaW5nKGtleSkpKSB8fCBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
@@ -40,9 +40,9 @@ export class DynamicBuilder {
40
40
  return componentRef;
41
41
  }
42
42
  }
43
- /** @nocollapse */ DynamicBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DynamicBuilder, deps: [{ token: i0.Compiler }], target: i0.ɵɵFactoryTarget.Injectable });
44
- /** @nocollapse */ DynamicBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DynamicBuilder, providedIn: 'root' });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DynamicBuilder, decorators: [{
43
+ /** @nocollapse */ DynamicBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DynamicBuilder, deps: [{ token: i0.Compiler }], target: i0.ɵɵFactoryTarget.Injectable });
44
+ /** @nocollapse */ DynamicBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DynamicBuilder, providedIn: 'root' });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DynamicBuilder, decorators: [{
46
46
  type: Injectable,
47
47
  args: [{ providedIn: 'root' }]
48
48
  }], ctorParameters: function () { return [{ type: i0.Compiler }]; } });
@@ -2,9 +2,9 @@ import { Injectable } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class DynamicComponentCompiler {
4
4
  }
5
- /** @nocollapse */ DynamicComponentCompiler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DynamicComponentCompiler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
- /** @nocollapse */ DynamicComponentCompiler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DynamicComponentCompiler, providedIn: 'root' });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DynamicComponentCompiler, decorators: [{
5
+ /** @nocollapse */ DynamicComponentCompiler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DynamicComponentCompiler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
+ /** @nocollapse */ DynamicComponentCompiler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DynamicComponentCompiler, providedIn: 'root' });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DynamicComponentCompiler, decorators: [{
8
8
  type: Injectable,
9
9
  args: [{ providedIn: 'root' }]
10
10
  }] });
@@ -2,9 +2,9 @@ import { Injectable } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class AppSetting {
4
4
  }
5
- /** @nocollapse */ AppSetting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AppSetting, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
- /** @nocollapse */ AppSetting.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AppSetting });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: AppSetting, decorators: [{
5
+ /** @nocollapse */ AppSetting.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AppSetting, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
+ /** @nocollapse */ AppSetting.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AppSetting });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AppSetting, decorators: [{
8
8
  type: Injectable
9
9
  }] });
10
10
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jb21tb24vbW9kZWxzL2FwcC1zZXR0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxVQUFVOzswSEFBVixVQUFVOzhIQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXBwU2V0dGluZyB7XHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwcm9kdWN0aW9uOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIGRlYnVnOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIGFwaVVybDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIGZyb250ZW5kVXJsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHJvamVjdE5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBjb3B5cmlnaHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBhdXRoVXJsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgc3BhVXJsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcG9zdExvZ2luUm91dGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBhdXRoQ2xpZW50SWQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBhdXRoUmVzcG9uc2VUeXBlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgYXV0aFNjb3BlOiBzdHJpbmc7XHJcbn0iXX0=
@@ -16,4 +16,4 @@ __decorate([
16
16
  Column({ index: 1000, header: $localize `:@@createdDate:Created date`, arrowBefore: true, display: Grid.Sm }),
17
17
  __metadata("design:type", Date)
18
18
  ], AuditEntity.prototype, "createdDate", void 0);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY29tbW9uL21vZGVscy9hdWRpdC1lbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLE9BQWdCLFdBQVksU0FBUSxVQUFVO0lBc0JoRDs7O09BR0c7SUFDSCxZQUFtQixJQUEyQjtRQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUFwQkc7SUFEQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUEsNkJBQTZCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDOzhCQUNoRyxJQUFJO2dEQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JpZCB9IGZyb20gXCIuLi8uLi90YWJsZS9lbnVtcy9ncmlkXCI7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi90YWJsZS9mdW5jdGlvbnMvZGVjb3JhdG9yc1wiO1xyXG5pbXBvcnQgeyBCYXNlRW50aXR5IH0gZnJvbSBcIi4vYmFzZS1lbnRpdHlcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdWRpdEVudGl0eSBleHRlbmRzIEJhc2VFbnRpdHkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgY3JlYXRlZEJ5OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgQENvbHVtbih7IGluZGV4OiAxMDAwLCBoZWFkZXI6ICRsb2NhbGl6ZWA6QEBjcmVhdGVkRGF0ZTpDcmVhdGVkIGRhdGVgLCBhcnJvd0JlZm9yZTogdHJ1ZSwgZGlzcGxheTogR3JpZC5TbSB9KVxyXG4gICAgY3JlYXRlZERhdGU6IERhdGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgdXBkYXRlZEJ5OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgdXBkYXRlZERhdGU6IERhdGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGluaXQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0PzogUGFydGlhbDxBdWRpdEVudGl0eT4pIHtcclxuICAgICAgICBzdXBlcihpbml0KTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xyXG4gICAgfVxyXG59Il19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY29tbW9uL21vZGVscy9hdWRpdC1lbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLE9BQWdCLFdBQVksU0FBUSxVQUFVO0lBc0JoRDs7O09BR0c7SUFDSCxZQUFtQixJQUEyQjtRQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUFyQkc7SUFBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUEsNkJBQTZCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDOzhCQUNoRyxJQUFJO2dEQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JpZCB9IGZyb20gXCIuLi8uLi90YWJsZS9lbnVtcy9ncmlkXCI7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi90YWJsZS9mdW5jdGlvbnMvZGVjb3JhdG9yc1wiO1xyXG5pbXBvcnQgeyBCYXNlRW50aXR5IH0gZnJvbSBcIi4vYmFzZS1lbnRpdHlcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdWRpdEVudGl0eSBleHRlbmRzIEJhc2VFbnRpdHkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgY3JlYXRlZEJ5OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgQENvbHVtbih7IGluZGV4OiAxMDAwLCBoZWFkZXI6ICRsb2NhbGl6ZWA6QEBjcmVhdGVkRGF0ZTpDcmVhdGVkIGRhdGVgLCBhcnJvd0JlZm9yZTogdHJ1ZSwgZGlzcGxheTogR3JpZC5TbSB9KVxyXG4gICAgY3JlYXRlZERhdGU6IERhdGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgdXBkYXRlZEJ5OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgdXBkYXRlZERhdGU6IERhdGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGluaXQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0PzogUGFydGlhbDxBdWRpdEVudGl0eT4pIHtcclxuICAgICAgICBzdXBlcihpbml0KTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xyXG4gICAgfVxyXG59Il19