@angular/material 19.0.0-next.0 → 19.0.0-next.2

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 (646) hide show
  1. package/_index.scss +4 -5
  2. package/button/_button-base.scss +2 -4
  3. package/button/index.d.ts +2 -10
  4. package/checkbox/_checkbox-common.scss +7 -7
  5. package/checkbox/index.d.ts +0 -7
  6. package/chips/index.d.ts +1 -10
  7. package/core/_core.scss +9 -7
  8. package/core/focus-indicators/_private.scss +20 -81
  9. package/core/index.d.ts +8 -10
  10. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +5 -4
  11. package/core/style/_elevation.scss +1 -1
  12. package/core/style/_list-common.scss +2 -2
  13. package/core/style/_menu-common.scss +1 -0
  14. package/core/theming/_palettes.scss +132 -45
  15. package/core/tokens/_m3-system.scss +228 -0
  16. package/core/tokens/_m3-tokens.scss +8 -149
  17. package/core/tokens/_token-utils.scss +13 -12
  18. package/core/tokens/m2/mat/_datepicker.scss +1 -1
  19. package/core/tokens/m3/mat/_datepicker.scss +2 -2
  20. package/core/tokens/m3/mat/_sidenav.scss +0 -1
  21. package/dialog/index.d.ts +2 -2
  22. package/fesm2022/autocomplete.mjs +2 -2
  23. package/fesm2022/autocomplete.mjs.map +1 -1
  24. package/fesm2022/badge.mjs +7 -20
  25. package/fesm2022/badge.mjs.map +1 -1
  26. package/fesm2022/bottom-sheet.mjs +2 -2
  27. package/fesm2022/bottom-sheet.mjs.map +1 -1
  28. package/fesm2022/button-toggle.mjs +2 -2
  29. package/fesm2022/button-toggle.mjs.map +1 -1
  30. package/fesm2022/button.mjs +16 -27
  31. package/fesm2022/button.mjs.map +1 -1
  32. package/fesm2022/card.mjs +2 -2
  33. package/fesm2022/card.mjs.map +1 -1
  34. package/fesm2022/checkbox.mjs +2 -5
  35. package/fesm2022/checkbox.mjs.map +1 -1
  36. package/fesm2022/chips.mjs +8 -19
  37. package/fesm2022/chips.mjs.map +1 -1
  38. package/fesm2022/core.mjs +64 -40
  39. package/fesm2022/core.mjs.map +1 -1
  40. package/fesm2022/datepicker.mjs +8 -8
  41. package/fesm2022/datepicker.mjs.map +1 -1
  42. package/fesm2022/dialog.mjs +5 -5
  43. package/fesm2022/dialog.mjs.map +1 -1
  44. package/fesm2022/divider.mjs +2 -2
  45. package/fesm2022/divider.mjs.map +1 -1
  46. package/fesm2022/expansion.mjs +4 -4
  47. package/fesm2022/expansion.mjs.map +1 -1
  48. package/fesm2022/form-field.mjs +2 -2
  49. package/fesm2022/form-field.mjs.map +1 -1
  50. package/fesm2022/icon.mjs +4 -5
  51. package/fesm2022/icon.mjs.map +1 -1
  52. package/fesm2022/input/testing.mjs +7 -1
  53. package/fesm2022/input/testing.mjs.map +1 -1
  54. package/fesm2022/input.mjs +43 -9
  55. package/fesm2022/input.mjs.map +1 -1
  56. package/fesm2022/list.mjs +14 -14
  57. package/fesm2022/list.mjs.map +1 -1
  58. package/fesm2022/menu.mjs +4 -4
  59. package/fesm2022/menu.mjs.map +1 -1
  60. package/fesm2022/paginator.mjs +2 -2
  61. package/fesm2022/paginator.mjs.map +1 -1
  62. package/fesm2022/progress-bar.mjs +2 -2
  63. package/fesm2022/progress-bar.mjs.map +1 -1
  64. package/fesm2022/progress-spinner.mjs +2 -2
  65. package/fesm2022/progress-spinner.mjs.map +1 -1
  66. package/fesm2022/radio.mjs +2 -2
  67. package/fesm2022/radio.mjs.map +1 -1
  68. package/fesm2022/select.mjs +6 -6
  69. package/fesm2022/select.mjs.map +1 -1
  70. package/fesm2022/sidenav.mjs +4 -4
  71. package/fesm2022/sidenav.mjs.map +1 -1
  72. package/fesm2022/slide-toggle.mjs +2 -2
  73. package/fesm2022/slide-toggle.mjs.map +1 -1
  74. package/fesm2022/slider.mjs +4 -4
  75. package/fesm2022/slider.mjs.map +1 -1
  76. package/fesm2022/snack-bar.mjs +2 -2
  77. package/fesm2022/snack-bar.mjs.map +1 -1
  78. package/fesm2022/stepper.mjs +4 -4
  79. package/fesm2022/stepper.mjs.map +1 -1
  80. package/fesm2022/table.mjs +2 -2
  81. package/fesm2022/table.mjs.map +1 -1
  82. package/fesm2022/tabs.mjs +9 -9
  83. package/fesm2022/tabs.mjs.map +1 -1
  84. package/fesm2022/toolbar.mjs +2 -2
  85. package/fesm2022/toolbar.mjs.map +1 -1
  86. package/fesm2022/tooltip.mjs +16 -4
  87. package/fesm2022/tooltip.mjs.map +1 -1
  88. package/fesm2022/tree.mjs +2 -2
  89. package/fesm2022/tree.mjs.map +1 -1
  90. package/form-field/_mdc-text-field-structure.scss +6 -0
  91. package/input/index.d.ts +18 -1
  92. package/package.json +2 -146
  93. package/prebuilt-themes/azure-blue.css +1 -1
  94. package/prebuilt-themes/cyan-orange.css +1 -1
  95. package/prebuilt-themes/deeppurple-amber.css +1 -1
  96. package/prebuilt-themes/indigo-pink.css +1 -1
  97. package/prebuilt-themes/magenta-violet.css +1 -1
  98. package/prebuilt-themes/pink-bluegrey.css +1 -1
  99. package/prebuilt-themes/purple-green.css +1 -1
  100. package/prebuilt-themes/rose-red.css +1 -1
  101. package/schematics/ng-add/index.js +1 -1
  102. package/schematics/ng-add/index.mjs +1 -1
  103. package/select/index.d.ts +2 -2
  104. package/slide-toggle/_slide-toggle-theme.scss +8 -6
  105. package/tabs/_tabs-common.scss +12 -10
  106. package/core/focus-indicators/_focus-indicators-theme.scss +0 -11
  107. package/core/focus-indicators/_focus-indicators.scss +0 -6
  108. package/esm2022/autocomplete/animations.mjs +0 -24
  109. package/esm2022/autocomplete/autocomplete-origin.mjs +0 -31
  110. package/esm2022/autocomplete/autocomplete-trigger.mjs +0 -902
  111. package/esm2022/autocomplete/autocomplete.mjs +0 -238
  112. package/esm2022/autocomplete/autocomplete_public_index.mjs +0 -5
  113. package/esm2022/autocomplete/index.mjs +0 -9
  114. package/esm2022/autocomplete/module.mjs +0 -61
  115. package/esm2022/autocomplete/public-api.mjs +0 -14
  116. package/esm2022/autocomplete/testing/autocomplete-harness-filters.mjs +0 -9
  117. package/esm2022/autocomplete/testing/autocomplete-harness.mjs +0 -105
  118. package/esm2022/autocomplete/testing/index.mjs +0 -9
  119. package/esm2022/autocomplete/testing/public-api.mjs +0 -10
  120. package/esm2022/badge/badge-module.mjs +0 -27
  121. package/esm2022/badge/badge.mjs +0 -301
  122. package/esm2022/badge/badge_public_index.mjs +0 -5
  123. package/esm2022/badge/index.mjs +0 -9
  124. package/esm2022/badge/public-api.mjs +0 -10
  125. package/esm2022/badge/testing/badge-harness-filters.mjs +0 -9
  126. package/esm2022/badge/testing/badge-harness.mjs +0 -71
  127. package/esm2022/badge/testing/index.mjs +0 -9
  128. package/esm2022/badge/testing/public-api.mjs +0 -10
  129. package/esm2022/bottom-sheet/bottom-sheet-animations.mjs +0 -26
  130. package/esm2022/bottom-sheet/bottom-sheet-config.mjs +0 -48
  131. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +0 -85
  132. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +0 -28
  133. package/esm2022/bottom-sheet/bottom-sheet-ref.mjs +0 -104
  134. package/esm2022/bottom-sheet/bottom-sheet.mjs +0 -115
  135. package/esm2022/bottom-sheet/bottom-sheet_public_index.mjs +0 -5
  136. package/esm2022/bottom-sheet/index.mjs +0 -9
  137. package/esm2022/bottom-sheet/public-api.mjs +0 -14
  138. package/esm2022/bottom-sheet/testing/bottom-sheet-harness-filters.mjs +0 -9
  139. package/esm2022/bottom-sheet/testing/bottom-sheet-harness.mjs +0 -35
  140. package/esm2022/bottom-sheet/testing/index.mjs +0 -9
  141. package/esm2022/bottom-sheet/testing/public-api.mjs +0 -10
  142. package/esm2022/button/button-base.mjs +0 -230
  143. package/esm2022/button/button.mjs +0 -67
  144. package/esm2022/button/button_public_index.mjs +0 -5
  145. package/esm2022/button/fab.mjs +0 -166
  146. package/esm2022/button/icon-button.mjs +0 -56
  147. package/esm2022/button/index.mjs +0 -9
  148. package/esm2022/button/module.mjs +0 -65
  149. package/esm2022/button/public-api.mjs +0 -13
  150. package/esm2022/button/testing/button-harness-filters.mjs +0 -9
  151. package/esm2022/button/testing/button-harness.mjs +0 -80
  152. package/esm2022/button/testing/index.mjs +0 -9
  153. package/esm2022/button/testing/public-api.mjs +0 -10
  154. package/esm2022/button-toggle/button-toggle-module.mjs +0 -24
  155. package/esm2022/button-toggle/button-toggle.mjs +0 -651
  156. package/esm2022/button-toggle/button-toggle_public_index.mjs +0 -5
  157. package/esm2022/button-toggle/index.mjs +0 -9
  158. package/esm2022/button-toggle/public-api.mjs +0 -10
  159. package/esm2022/button-toggle/testing/button-toggle-group-harness-filters.mjs +0 -9
  160. package/esm2022/button-toggle/testing/button-toggle-group-harness.mjs +0 -47
  161. package/esm2022/button-toggle/testing/button-toggle-harness-filters.mjs +0 -9
  162. package/esm2022/button-toggle/testing/button-toggle-harness.mjs +0 -105
  163. package/esm2022/button-toggle/testing/index.mjs +0 -9
  164. package/esm2022/button-toggle/testing/public-api.mjs +0 -12
  165. package/esm2022/card/card.mjs +0 -273
  166. package/esm2022/card/card_public_index.mjs +0 -5
  167. package/esm2022/card/index.mjs +0 -9
  168. package/esm2022/card/module.mjs +0 -67
  169. package/esm2022/card/public-api.mjs +0 -10
  170. package/esm2022/card/testing/card-harness-filters.mjs +0 -9
  171. package/esm2022/card/testing/card-harness.mjs +0 -50
  172. package/esm2022/card/testing/index.mjs +0 -9
  173. package/esm2022/card/testing/public-api.mjs +0 -10
  174. package/esm2022/checkbox/checkbox-config.mjs +0 -22
  175. package/esm2022/checkbox/checkbox-required-validator.mjs +0 -41
  176. package/esm2022/checkbox/checkbox.mjs +0 -443
  177. package/esm2022/checkbox/checkbox_public_index.mjs +0 -5
  178. package/esm2022/checkbox/index.mjs +0 -9
  179. package/esm2022/checkbox/module.mjs +0 -41
  180. package/esm2022/checkbox/public-api.mjs +0 -12
  181. package/esm2022/checkbox/testing/checkbox-harness-filters.mjs +0 -9
  182. package/esm2022/checkbox/testing/checkbox-harness.mjs +0 -138
  183. package/esm2022/checkbox/testing/index.mjs +0 -9
  184. package/esm2022/checkbox/testing/public-api.mjs +0 -9
  185. package/esm2022/chips/chip-action.mjs +0 -113
  186. package/esm2022/chips/chip-edit-input.mjs +0 -61
  187. package/esm2022/chips/chip-grid.mjs +0 -420
  188. package/esm2022/chips/chip-icons.mjs +0 -107
  189. package/esm2022/chips/chip-input.mjs +0 -192
  190. package/esm2022/chips/chip-listbox.mjs +0 -369
  191. package/esm2022/chips/chip-option.mjs +0 -190
  192. package/esm2022/chips/chip-row.mjs +0 -173
  193. package/esm2022/chips/chip-set.mjs +0 -283
  194. package/esm2022/chips/chip-text-control.mjs +0 -9
  195. package/esm2022/chips/chip.mjs +0 -322
  196. package/esm2022/chips/chips_public_index.mjs +0 -5
  197. package/esm2022/chips/index.mjs +0 -9
  198. package/esm2022/chips/module.mjs +0 -85
  199. package/esm2022/chips/public-api.mjs +0 -20
  200. package/esm2022/chips/testing/chip-avatar-harness.mjs +0 -22
  201. package/esm2022/chips/testing/chip-edit-input-harness.mjs +0 -33
  202. package/esm2022/chips/testing/chip-grid-harness.mjs +0 -45
  203. package/esm2022/chips/testing/chip-harness-filters.mjs +0 -9
  204. package/esm2022/chips/testing/chip-harness.mjs +0 -62
  205. package/esm2022/chips/testing/chip-input-harness.mjs +0 -85
  206. package/esm2022/chips/testing/chip-listbox-harness.mjs +0 -61
  207. package/esm2022/chips/testing/chip-option-harness.mjs +0 -45
  208. package/esm2022/chips/testing/chip-remove-harness.mjs +0 -26
  209. package/esm2022/chips/testing/chip-row-harness.mjs +0 -40
  210. package/esm2022/chips/testing/chip-set-harness.mjs +0 -26
  211. package/esm2022/chips/testing/index.mjs +0 -9
  212. package/esm2022/chips/testing/public-api.mjs +0 -19
  213. package/esm2022/chips/tokens.mjs +0 -39
  214. package/esm2022/core/animation/animation.mjs +0 -21
  215. package/esm2022/core/common-behaviors/color.mjs +0 -33
  216. package/esm2022/core/common-behaviors/common-module.mjs +0 -127
  217. package/esm2022/core/common-behaviors/constructor.mjs +0 -9
  218. package/esm2022/core/common-behaviors/disable-ripple.mjs +0 -24
  219. package/esm2022/core/common-behaviors/disabled.mjs +0 -23
  220. package/esm2022/core/common-behaviors/error-state.mjs +0 -66
  221. package/esm2022/core/common-behaviors/index.mjs +0 -15
  222. package/esm2022/core/common-behaviors/initialized.mjs +0 -62
  223. package/esm2022/core/common-behaviors/tabindex.mjs +0 -25
  224. package/esm2022/core/core_public_index.mjs +0 -5
  225. package/esm2022/core/datetime/date-adapter.mjs +0 -109
  226. package/esm2022/core/datetime/date-formats.mjs +0 -10
  227. package/esm2022/core/datetime/index.mjs +0 -46
  228. package/esm2022/core/datetime/native-date-adapter.mjs +0 -221
  229. package/esm2022/core/datetime/native-date-formats.mjs +0 -19
  230. package/esm2022/core/error/error-options.mjs +0 -33
  231. package/esm2022/core/index.mjs +0 -9
  232. package/esm2022/core/internal-form-field/internal-form-field.mjs +0 -29
  233. package/esm2022/core/line/line.mjs +0 -64
  234. package/esm2022/core/option/index.mjs +0 -30
  235. package/esm2022/core/option/optgroup.mjs +0 -71
  236. package/esm2022/core/option/option-parent.mjs +0 -13
  237. package/esm2022/core/option/option.mjs +0 -283
  238. package/esm2022/core/private/index.mjs +0 -9
  239. package/esm2022/core/private/ripple-loader.mjs +0 -160
  240. package/esm2022/core/public-api.mjs +0 -19
  241. package/esm2022/core/ripple/index.mjs +0 -27
  242. package/esm2022/core/ripple/ripple-event-manager.mjs +0 -69
  243. package/esm2022/core/ripple/ripple-ref.mjs +0 -39
  244. package/esm2022/core/ripple/ripple-renderer.mjs +0 -354
  245. package/esm2022/core/ripple/ripple.mjs +0 -156
  246. package/esm2022/core/selection/index.mjs +0 -10
  247. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +0 -24
  248. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +0 -62
  249. package/esm2022/core/testing/index.mjs +0 -9
  250. package/esm2022/core/testing/optgroup-harness-filters.mjs +0 -9
  251. package/esm2022/core/testing/optgroup-harness.mjs +0 -43
  252. package/esm2022/core/testing/option-harness-filters.mjs +0 -9
  253. package/esm2022/core/testing/option-harness.mjs +0 -53
  254. package/esm2022/core/testing/public-api.mjs +0 -12
  255. package/esm2022/core/version.mjs +0 -11
  256. package/esm2022/datepicker/aria-accessible-name.mjs +0 -159
  257. package/esm2022/datepicker/calendar-body.mjs +0 -509
  258. package/esm2022/datepicker/calendar.mjs +0 -426
  259. package/esm2022/datepicker/date-range-input-parts.mjs +0 -372
  260. package/esm2022/datepicker/date-range-input.mjs +0 -369
  261. package/esm2022/datepicker/date-range-picker.mjs +0 -51
  262. package/esm2022/datepicker/date-range-selection-strategy.mjs +0 -97
  263. package/esm2022/datepicker/date-selection-model.mjs +0 -188
  264. package/esm2022/datepicker/datepicker-actions.mjs +0 -91
  265. package/esm2022/datepicker/datepicker-animations.mjs +0 -35
  266. package/esm2022/datepicker/datepicker-base.mjs +0 -609
  267. package/esm2022/datepicker/datepicker-errors.mjs +0 -14
  268. package/esm2022/datepicker/datepicker-input-base.mjs +0 -311
  269. package/esm2022/datepicker/datepicker-input.mjs +0 -200
  270. package/esm2022/datepicker/datepicker-intl.mjs +0 -69
  271. package/esm2022/datepicker/datepicker-module.mjs +0 -138
  272. package/esm2022/datepicker/datepicker-toggle.mjs +0 -113
  273. package/esm2022/datepicker/datepicker.mjs +0 -38
  274. package/esm2022/datepicker/datepicker_public_index.mjs +0 -5
  275. package/esm2022/datepicker/index.mjs +0 -9
  276. package/esm2022/datepicker/month-view.mjs +0 -460
  277. package/esm2022/datepicker/multi-year-view.mjs +0 -330
  278. package/esm2022/datepicker/public-api.mjs +0 -27
  279. package/esm2022/datepicker/testing/calendar-cell-harness.mjs +0 -138
  280. package/esm2022/datepicker/testing/calendar-harness.mjs +0 -83
  281. package/esm2022/datepicker/testing/date-range-input-harness.mjs +0 -98
  282. package/esm2022/datepicker/testing/datepicker-harness-filters.mjs +0 -9
  283. package/esm2022/datepicker/testing/datepicker-input-harness-base.mjs +0 -81
  284. package/esm2022/datepicker/testing/datepicker-input-harness.mjs +0 -58
  285. package/esm2022/datepicker/testing/datepicker-toggle-harness.mjs +0 -41
  286. package/esm2022/datepicker/testing/datepicker-trigger-harness-base.mjs +0 -65
  287. package/esm2022/datepicker/testing/index.mjs +0 -9
  288. package/esm2022/datepicker/testing/public-api.mjs +0 -14
  289. package/esm2022/datepicker/year-view.mjs +0 -324
  290. package/esm2022/dialog/dialog-animations.mjs +0 -38
  291. package/esm2022/dialog/dialog-config.mjs +0 -59
  292. package/esm2022/dialog/dialog-container.mjs +0 -253
  293. package/esm2022/dialog/dialog-content-directives.mjs +0 -212
  294. package/esm2022/dialog/dialog-ref.mjs +0 -177
  295. package/esm2022/dialog/dialog.mjs +0 -212
  296. package/esm2022/dialog/dialog_public_index.mjs +0 -5
  297. package/esm2022/dialog/index.mjs +0 -9
  298. package/esm2022/dialog/module.mjs +0 -45
  299. package/esm2022/dialog/public-api.mjs +0 -15
  300. package/esm2022/dialog/testing/dialog-harness-filters.mjs +0 -9
  301. package/esm2022/dialog/testing/dialog-harness.mjs +0 -84
  302. package/esm2022/dialog/testing/dialog-opener.mjs +0 -58
  303. package/esm2022/dialog/testing/index.mjs +0 -10
  304. package/esm2022/dialog/testing/public-api.mjs +0 -10
  305. package/esm2022/divider/divider-module.mjs +0 -24
  306. package/esm2022/divider/divider.mjs +0 -48
  307. package/esm2022/divider/divider_public_index.mjs +0 -5
  308. package/esm2022/divider/index.mjs +0 -9
  309. package/esm2022/divider/public-api.mjs +0 -10
  310. package/esm2022/divider/testing/divider-harness-filters.mjs +0 -9
  311. package/esm2022/divider/testing/divider-harness.mjs +0 -22
  312. package/esm2022/divider/testing/index.mjs +0 -9
  313. package/esm2022/divider/testing/public-api.mjs +0 -10
  314. package/esm2022/expansion/accordion-base.mjs +0 -14
  315. package/esm2022/expansion/accordion.mjs +0 -96
  316. package/esm2022/expansion/expansion-animations.mjs +0 -51
  317. package/esm2022/expansion/expansion-module.mjs +0 -65
  318. package/esm2022/expansion/expansion-panel-base.mjs +0 -14
  319. package/esm2022/expansion/expansion-panel-content.mjs +0 -35
  320. package/esm2022/expansion/expansion-panel-header.mjs +0 -218
  321. package/esm2022/expansion/expansion-panel.mjs +0 -211
  322. package/esm2022/expansion/expansion_public_index.mjs +0 -5
  323. package/esm2022/expansion/index.mjs +0 -9
  324. package/esm2022/expansion/public-api.mjs +0 -16
  325. package/esm2022/expansion/testing/accordion-harness.mjs +0 -31
  326. package/esm2022/expansion/testing/expansion-harness-filters.mjs +0 -9
  327. package/esm2022/expansion/testing/expansion-harness.mjs +0 -128
  328. package/esm2022/expansion/testing/index.mjs +0 -9
  329. package/esm2022/expansion/testing/public-api.mjs +0 -11
  330. package/esm2022/form-field/directives/error.mjs +0 -48
  331. package/esm2022/form-field/directives/floating-label.mjs +0 -135
  332. package/esm2022/form-field/directives/hint.mjs +0 -40
  333. package/esm2022/form-field/directives/label.mjs +0 -22
  334. package/esm2022/form-field/directives/line-ripple.mjs +0 -60
  335. package/esm2022/form-field/directives/notched-outline.mjs +0 -66
  336. package/esm2022/form-field/directives/prefix.mjs +0 -38
  337. package/esm2022/form-field/directives/suffix.mjs +0 -38
  338. package/esm2022/form-field/form-field-animations.mjs +0 -24
  339. package/esm2022/form-field/form-field-control.mjs +0 -11
  340. package/esm2022/form-field/form-field-errors.mjs +0 -20
  341. package/esm2022/form-field/form-field.mjs +0 -620
  342. package/esm2022/form-field/form-field_public_index.mjs +0 -5
  343. package/esm2022/form-field/index.mjs +0 -9
  344. package/esm2022/form-field/module.mjs +0 -51
  345. package/esm2022/form-field/public-api.mjs +0 -18
  346. package/esm2022/form-field/testing/control/form-field-control-harness.mjs +0 -15
  347. package/esm2022/form-field/testing/control/index.mjs +0 -9
  348. package/esm2022/form-field/testing/error-harness.mjs +0 -29
  349. package/esm2022/form-field/testing/form-field-harness-filters.mjs +0 -9
  350. package/esm2022/form-field/testing/form-field-harness.mjs +0 -179
  351. package/esm2022/form-field/testing/index.mjs +0 -9
  352. package/esm2022/form-field/testing/public-api.mjs +0 -15
  353. package/esm2022/grid-list/grid-list-base.mjs +0 -14
  354. package/esm2022/grid-list/grid-list-module.mjs +0 -59
  355. package/esm2022/grid-list/grid-list.mjs +0 -146
  356. package/esm2022/grid-list/grid-list_public_index.mjs +0 -5
  357. package/esm2022/grid-list/grid-tile.mjs +0 -128
  358. package/esm2022/grid-list/index.mjs +0 -9
  359. package/esm2022/grid-list/public-api.mjs +0 -14
  360. package/esm2022/grid-list/testing/grid-list-harness-filters.mjs +0 -9
  361. package/esm2022/grid-list/testing/grid-list-harness.mjs +0 -76
  362. package/esm2022/grid-list/testing/grid-tile-harness.mjs +0 -71
  363. package/esm2022/grid-list/testing/index.mjs +0 -9
  364. package/esm2022/grid-list/testing/public-api.mjs +0 -11
  365. package/esm2022/grid-list/tile-coordinator.mjs +0 -145
  366. package/esm2022/grid-list/tile-styler.mjs +0 -231
  367. package/esm2022/icon/fake-svgs.mjs +0 -62
  368. package/esm2022/icon/icon-module.mjs +0 -24
  369. package/esm2022/icon/icon-registry.mjs +0 -593
  370. package/esm2022/icon/icon.mjs +0 -379
  371. package/esm2022/icon/icon_public_index.mjs +0 -5
  372. package/esm2022/icon/index.mjs +0 -9
  373. package/esm2022/icon/public-api.mjs +0 -11
  374. package/esm2022/icon/testing/fake-icon-registry.mjs +0 -92
  375. package/esm2022/icon/testing/icon-harness-filters.mjs +0 -14
  376. package/esm2022/icon/testing/icon-harness.mjs +0 -60
  377. package/esm2022/icon/testing/index.mjs +0 -9
  378. package/esm2022/icon/testing/public-api.mjs +0 -11
  379. package/esm2022/icon/testing/testing_public_index.mjs +0 -5
  380. package/esm2022/icon/trusted-types.mjs +0 -43
  381. package/esm2022/index.mjs +0 -14
  382. package/esm2022/input/index.mjs +0 -9
  383. package/esm2022/input/input-errors.mjs +0 -12
  384. package/esm2022/input/input-value-accessor.mjs +0 -16
  385. package/esm2022/input/input.mjs +0 -490
  386. package/esm2022/input/input_public_index.mjs +0 -5
  387. package/esm2022/input/module.mjs +0 -26
  388. package/esm2022/input/public-api.mjs +0 -14
  389. package/esm2022/input/testing/index.mjs +0 -9
  390. package/esm2022/input/testing/input-harness-filters.mjs +0 -9
  391. package/esm2022/input/testing/input-harness.mjs +0 -113
  392. package/esm2022/input/testing/native-option-harness.mjs +0 -42
  393. package/esm2022/input/testing/native-select-harness-filters.mjs +0 -9
  394. package/esm2022/input/testing/native-select-harness.mjs +0 -79
  395. package/esm2022/input/testing/public-api.mjs +0 -13
  396. package/esm2022/list/action-list.mjs +0 -31
  397. package/esm2022/list/index.mjs +0 -9
  398. package/esm2022/list/list-base.mjs +0 -284
  399. package/esm2022/list/list-item-sections.mjs +0 -144
  400. package/esm2022/list/list-module.mjs +0 -97
  401. package/esm2022/list/list-option-types.mjs +0 -16
  402. package/esm2022/list/list-option.mjs +0 -295
  403. package/esm2022/list/list.mjs +0 -103
  404. package/esm2022/list/list_public_index.mjs +0 -5
  405. package/esm2022/list/nav-list.mjs +0 -37
  406. package/esm2022/list/public-api.mjs +0 -18
  407. package/esm2022/list/selection-list.mjs +0 -391
  408. package/esm2022/list/subheader.mjs +0 -28
  409. package/esm2022/list/testing/action-list-harness.mjs +0 -59
  410. package/esm2022/list/testing/index.mjs +0 -9
  411. package/esm2022/list/testing/list-harness-base.mjs +0 -95
  412. package/esm2022/list/testing/list-harness-filters.mjs +0 -9
  413. package/esm2022/list/testing/list-harness.mjs +0 -41
  414. package/esm2022/list/testing/list-item-harness-base.mjs +0 -162
  415. package/esm2022/list/testing/nav-list-harness.mjs +0 -69
  416. package/esm2022/list/testing/public-api.mjs +0 -14
  417. package/esm2022/list/testing/selection-list-harness.mjs +0 -122
  418. package/esm2022/list/tokens.mjs +0 -11
  419. package/esm2022/menu/index.mjs +0 -9
  420. package/esm2022/menu/menu-animations.mjs +0 -61
  421. package/esm2022/menu/menu-content.mjs +0 -87
  422. package/esm2022/menu/menu-errors.mjs +0 -35
  423. package/esm2022/menu/menu-item.mjs +0 -148
  424. package/esm2022/menu/menu-panel.mjs +0 -14
  425. package/esm2022/menu/menu-positions.mjs +0 -9
  426. package/esm2022/menu/menu-trigger.mjs +0 -542
  427. package/esm2022/menu/menu.mjs +0 -405
  428. package/esm2022/menu/menu_public_index.mjs +0 -5
  429. package/esm2022/menu/module.mjs +0 -63
  430. package/esm2022/menu/public-api.mjs +0 -16
  431. package/esm2022/menu/testing/index.mjs +0 -9
  432. package/esm2022/menu/testing/menu-harness-filters.mjs +0 -9
  433. package/esm2022/menu/testing/menu-harness.mjs +0 -166
  434. package/esm2022/menu/testing/public-api.mjs +0 -10
  435. package/esm2022/paginator/index.mjs +0 -9
  436. package/esm2022/paginator/module.mjs +0 -28
  437. package/esm2022/paginator/paginator-intl.mjs +0 -62
  438. package/esm2022/paginator/paginator.mjs +0 -266
  439. package/esm2022/paginator/paginator_public_index.mjs +0 -5
  440. package/esm2022/paginator/public-api.mjs +0 -11
  441. package/esm2022/paginator/testing/index.mjs +0 -9
  442. package/esm2022/paginator/testing/paginator-harness-filters.mjs +0 -9
  443. package/esm2022/paginator/testing/paginator-harness.mjs +0 -98
  444. package/esm2022/paginator/testing/public-api.mjs +0 -10
  445. package/esm2022/progress-bar/index.mjs +0 -9
  446. package/esm2022/progress-bar/module.mjs +0 -24
  447. package/esm2022/progress-bar/progress-bar.mjs +0 -181
  448. package/esm2022/progress-bar/progress-bar_public_index.mjs +0 -5
  449. package/esm2022/progress-bar/public-api.mjs +0 -10
  450. package/esm2022/progress-bar/testing/index.mjs +0 -9
  451. package/esm2022/progress-bar/testing/progress-bar-harness-filters.mjs +0 -9
  452. package/esm2022/progress-bar/testing/progress-bar-harness.mjs +0 -33
  453. package/esm2022/progress-bar/testing/public-api.mjs +0 -10
  454. package/esm2022/progress-bar/testing/testing_public_index.mjs +0 -5
  455. package/esm2022/progress-spinner/index.mjs +0 -9
  456. package/esm2022/progress-spinner/module.mjs +0 -25
  457. package/esm2022/progress-spinner/progress-spinner.mjs +0 -166
  458. package/esm2022/progress-spinner/progress-spinner_public_index.mjs +0 -5
  459. package/esm2022/progress-spinner/public-api.mjs +0 -10
  460. package/esm2022/progress-spinner/testing/index.mjs +0 -9
  461. package/esm2022/progress-spinner/testing/progress-spinner-harness-filters.mjs +0 -9
  462. package/esm2022/progress-spinner/testing/progress-spinner-harness.mjs +0 -35
  463. package/esm2022/progress-spinner/testing/public-api.mjs +0 -10
  464. package/esm2022/progress-spinner/testing/testing_public_index.mjs +0 -5
  465. package/esm2022/radio/index.mjs +0 -9
  466. package/esm2022/radio/module.mjs +0 -25
  467. package/esm2022/radio/public-api.mjs +0 -10
  468. package/esm2022/radio/radio.mjs +0 -680
  469. package/esm2022/radio/radio_public_index.mjs +0 -5
  470. package/esm2022/radio/testing/index.mjs +0 -9
  471. package/esm2022/radio/testing/public-api.mjs +0 -10
  472. package/esm2022/radio/testing/radio-harness-filters.mjs +0 -9
  473. package/esm2022/radio/testing/radio-harness.mjs +0 -228
  474. package/esm2022/select/index.mjs +0 -9
  475. package/esm2022/select/module.mjs +0 -59
  476. package/esm2022/select/public-api.mjs +0 -15
  477. package/esm2022/select/select-animations.mjs +0 -38
  478. package/esm2022/select/select-errors.mjs +0 -35
  479. package/esm2022/select/select.mjs +0 -1160
  480. package/esm2022/select/select_public_index.mjs +0 -5
  481. package/esm2022/select/testing/index.mjs +0 -9
  482. package/esm2022/select/testing/public-api.mjs +0 -10
  483. package/esm2022/select/testing/select-harness-filters.mjs +0 -9
  484. package/esm2022/select/testing/select-harness.mjs +0 -129
  485. package/esm2022/sidenav/drawer-animations.mjs +0 -33
  486. package/esm2022/sidenav/drawer.mjs +0 -863
  487. package/esm2022/sidenav/index.mjs +0 -9
  488. package/esm2022/sidenav/public-api.mjs +0 -12
  489. package/esm2022/sidenav/sidenav-module.mjs +0 -60
  490. package/esm2022/sidenav/sidenav.mjs +0 -148
  491. package/esm2022/sidenav/sidenav_public_index.mjs +0 -5
  492. package/esm2022/sidenav/testing/drawer-container-harness.mjs +0 -36
  493. package/esm2022/sidenav/testing/drawer-content-harness.mjs +0 -23
  494. package/esm2022/sidenav/testing/drawer-harness-filters.mjs +0 -9
  495. package/esm2022/sidenav/testing/drawer-harness.mjs +0 -49
  496. package/esm2022/sidenav/testing/index.mjs +0 -9
  497. package/esm2022/sidenav/testing/public-api.mjs +0 -15
  498. package/esm2022/sidenav/testing/sidenav-container-harness.mjs +0 -36
  499. package/esm2022/sidenav/testing/sidenav-content-harness.mjs +0 -23
  500. package/esm2022/sidenav/testing/sidenav-harness.mjs +0 -28
  501. package/esm2022/slide-toggle/index.mjs +0 -9
  502. package/esm2022/slide-toggle/module.mjs +0 -41
  503. package/esm2022/slide-toggle/public-api.mjs +0 -12
  504. package/esm2022/slide-toggle/slide-toggle-config.mjs +0 -14
  505. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +0 -44
  506. package/esm2022/slide-toggle/slide-toggle.mjs +0 -273
  507. package/esm2022/slide-toggle/slide-toggle_public_index.mjs +0 -5
  508. package/esm2022/slide-toggle/testing/index.mjs +0 -9
  509. package/esm2022/slide-toggle/testing/public-api.mjs +0 -10
  510. package/esm2022/slide-toggle/testing/slide-toggle-harness-filters.mjs +0 -9
  511. package/esm2022/slide-toggle/testing/slide-toggle-harness.mjs +0 -110
  512. package/esm2022/slider/index.mjs +0 -9
  513. package/esm2022/slider/module.mjs +0 -39
  514. package/esm2022/slider/public-api.mjs +0 -13
  515. package/esm2022/slider/slider-input.mjs +0 -701
  516. package/esm2022/slider/slider-interface.mjs +0 -56
  517. package/esm2022/slider/slider-thumb.mjs +0 -231
  518. package/esm2022/slider/slider.mjs +0 -746
  519. package/esm2022/slider/slider_public_index.mjs +0 -5
  520. package/esm2022/slider/testing/index.mjs +0 -9
  521. package/esm2022/slider/testing/public-api.mjs +0 -11
  522. package/esm2022/slider/testing/slider-harness-filters.mjs +0 -7
  523. package/esm2022/slider/testing/slider-harness.mjs +0 -67
  524. package/esm2022/slider/testing/slider-thumb-harness.mjs +0 -95
  525. package/esm2022/snack-bar/index.mjs +0 -9
  526. package/esm2022/snack-bar/module.mjs +0 -47
  527. package/esm2022/snack-bar/public-api.mjs +0 -16
  528. package/esm2022/snack-bar/simple-snack-bar.mjs +0 -40
  529. package/esm2022/snack-bar/snack-bar-animations.mjs +0 -30
  530. package/esm2022/snack-bar/snack-bar-config.mjs +0 -33
  531. package/esm2022/snack-bar/snack-bar-container.mjs +0 -277
  532. package/esm2022/snack-bar/snack-bar-content.mjs +0 -55
  533. package/esm2022/snack-bar/snack-bar-ref.mjs +0 -89
  534. package/esm2022/snack-bar/snack-bar.mjs +0 -267
  535. package/esm2022/snack-bar/snack-bar_public_index.mjs +0 -5
  536. package/esm2022/snack-bar/testing/index.mjs +0 -9
  537. package/esm2022/snack-bar/testing/public-api.mjs +0 -10
  538. package/esm2022/snack-bar/testing/snack-bar-harness-filters.mjs +0 -9
  539. package/esm2022/snack-bar/testing/snack-bar-harness.mjs +0 -101
  540. package/esm2022/sort/index.mjs +0 -9
  541. package/esm2022/sort/public-api.mjs +0 -14
  542. package/esm2022/sort/sort-animations.mjs +0 -69
  543. package/esm2022/sort/sort-direction.mjs +0 -9
  544. package/esm2022/sort/sort-errors.mjs +0 -24
  545. package/esm2022/sort/sort-header-intl.mjs +0 -41
  546. package/esm2022/sort/sort-header.mjs +0 -317
  547. package/esm2022/sort/sort-module.mjs +0 -27
  548. package/esm2022/sort/sort.mjs +0 -155
  549. package/esm2022/sort/sort_public_index.mjs +0 -5
  550. package/esm2022/sort/testing/index.mjs +0 -9
  551. package/esm2022/sort/testing/public-api.mjs +0 -11
  552. package/esm2022/sort/testing/sort-harness-filters.mjs +0 -2
  553. package/esm2022/sort/testing/sort-harness.mjs +0 -36
  554. package/esm2022/sort/testing/sort-header-harness.mjs +0 -56
  555. package/esm2022/stepper/index.mjs +0 -9
  556. package/esm2022/stepper/public-api.mjs +0 -17
  557. package/esm2022/stepper/step-content.mjs +0 -27
  558. package/esm2022/stepper/step-header.mjs +0 -105
  559. package/esm2022/stepper/step-label.mjs +0 -22
  560. package/esm2022/stepper/stepper-animations.mjs +0 -47
  561. package/esm2022/stepper/stepper-button.mjs +0 -43
  562. package/esm2022/stepper/stepper-icon.mjs +0 -30
  563. package/esm2022/stepper/stepper-intl.mjs +0 -43
  564. package/esm2022/stepper/stepper-module.mjs +0 -88
  565. package/esm2022/stepper/stepper.mjs +0 -205
  566. package/esm2022/stepper/stepper_public_index.mjs +0 -5
  567. package/esm2022/stepper/testing/index.mjs +0 -9
  568. package/esm2022/stepper/testing/public-api.mjs +0 -12
  569. package/esm2022/stepper/testing/step-harness-filters.mjs +0 -7
  570. package/esm2022/stepper/testing/step-harness.mjs +0 -90
  571. package/esm2022/stepper/testing/stepper-button-harnesses.mjs +0 -48
  572. package/esm2022/stepper/testing/stepper-harness.mjs +0 -51
  573. package/esm2022/table/cell.mjs +0 -147
  574. package/esm2022/table/index.mjs +0 -9
  575. package/esm2022/table/module.mjs +0 -93
  576. package/esm2022/table/public-api.mjs +0 -14
  577. package/esm2022/table/row.mjs +0 -163
  578. package/esm2022/table/table-data-source.mjs +0 -317
  579. package/esm2022/table/table.mjs +0 -122
  580. package/esm2022/table/table_public_index.mjs +0 -5
  581. package/esm2022/table/testing/cell-harness.mjs +0 -77
  582. package/esm2022/table/testing/index.mjs +0 -9
  583. package/esm2022/table/testing/public-api.mjs +0 -12
  584. package/esm2022/table/testing/row-harness.mjs +0 -84
  585. package/esm2022/table/testing/table-harness-filters.mjs +0 -2
  586. package/esm2022/table/testing/table-harness.mjs +0 -86
  587. package/esm2022/table/text-column.mjs +0 -60
  588. package/esm2022/tabs/index.mjs +0 -9
  589. package/esm2022/tabs/ink-bar.mjs +0 -149
  590. package/esm2022/tabs/module.mjs +0 -60
  591. package/esm2022/tabs/paginated-tab-header.mjs +0 -539
  592. package/esm2022/tabs/public-api.mjs +0 -21
  593. package/esm2022/tabs/tab-body.mjs +0 -199
  594. package/esm2022/tabs/tab-config.mjs +0 -11
  595. package/esm2022/tabs/tab-content.mjs +0 -32
  596. package/esm2022/tabs/tab-group.mjs +0 -469
  597. package/esm2022/tabs/tab-header.mjs +0 -86
  598. package/esm2022/tabs/tab-label-wrapper.mjs +0 -49
  599. package/esm2022/tabs/tab-label.mjs +0 -44
  600. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +0 -388
  601. package/esm2022/tabs/tab.mjs +0 -128
  602. package/esm2022/tabs/tabs-animations.mjs +0 -45
  603. package/esm2022/tabs/tabs_public_index.mjs +0 -5
  604. package/esm2022/tabs/testing/index.mjs +0 -9
  605. package/esm2022/tabs/testing/public-api.mjs +0 -13
  606. package/esm2022/tabs/testing/tab-group-harness.mjs +0 -56
  607. package/esm2022/tabs/testing/tab-harness-filters.mjs +0 -2
  608. package/esm2022/tabs/testing/tab-harness.mjs +0 -66
  609. package/esm2022/tabs/testing/tab-link-harness.mjs +0 -40
  610. package/esm2022/tabs/testing/tab-nav-bar-harness.mjs +0 -66
  611. package/esm2022/tabs/testing/tab-nav-panel-harness.mjs +0 -27
  612. package/esm2022/toolbar/index.mjs +0 -9
  613. package/esm2022/toolbar/public-api.mjs +0 -10
  614. package/esm2022/toolbar/testing/index.mjs +0 -9
  615. package/esm2022/toolbar/testing/public-api.mjs +0 -10
  616. package/esm2022/toolbar/testing/toolbar-harness-filters.mjs +0 -9
  617. package/esm2022/toolbar/testing/toolbar-harness.mjs +0 -44
  618. package/esm2022/toolbar/toolbar-module.mjs +0 -24
  619. package/esm2022/toolbar/toolbar.mjs +0 -84
  620. package/esm2022/toolbar/toolbar_public_index.mjs +0 -5
  621. package/esm2022/tooltip/index.mjs +0 -9
  622. package/esm2022/tooltip/module.mjs +0 -29
  623. package/esm2022/tooltip/public-api.mjs +0 -11
  624. package/esm2022/tooltip/testing/index.mjs +0 -9
  625. package/esm2022/tooltip/testing/public-api.mjs +0 -10
  626. package/esm2022/tooltip/testing/tooltip-harness-filters.mjs +0 -9
  627. package/esm2022/tooltip/testing/tooltip-harness.mjs +0 -66
  628. package/esm2022/tooltip/tooltip-animations.mjs +0 -24
  629. package/esm2022/tooltip/tooltip.mjs +0 -920
  630. package/esm2022/tooltip/tooltip_public_index.mjs +0 -5
  631. package/esm2022/tree/data-source/flat-data-source.mjs +0 -156
  632. package/esm2022/tree/data-source/nested-data-source.mjs +0 -38
  633. package/esm2022/tree/index.mjs +0 -9
  634. package/esm2022/tree/node.mjs +0 -220
  635. package/esm2022/tree/outlet.mjs +0 -46
  636. package/esm2022/tree/padding.mjs +0 -46
  637. package/esm2022/tree/public-api.mjs +0 -16
  638. package/esm2022/tree/testing/index.mjs +0 -9
  639. package/esm2022/tree/testing/node-harness.mjs +0 -73
  640. package/esm2022/tree/testing/public-api.mjs +0 -11
  641. package/esm2022/tree/testing/tree-harness-filters.mjs +0 -9
  642. package/esm2022/tree/testing/tree-harness.mjs +0 -123
  643. package/esm2022/tree/toggle.mjs +0 -27
  644. package/esm2022/tree/tree-module.mjs +0 -50
  645. package/esm2022/tree/tree.mjs +0 -34
  646. package/esm2022/tree/tree_public_index.mjs +0 -5
@@ -1,490 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
9
- import { getSupportedInputTypes, Platform } from '@angular/cdk/platform';
10
- import { AutofillMonitor } from '@angular/cdk/text-field';
11
- import { Directive, ElementRef, Inject, Input, NgZone, Optional, Self, } from '@angular/core';
12
- import { FormGroupDirective, NgControl, NgForm, Validators } from '@angular/forms';
13
- import { ErrorStateMatcher, _ErrorStateTracker } from '@angular/material/core';
14
- import { MatFormFieldControl, MatFormField, MAT_FORM_FIELD } from '@angular/material/form-field';
15
- import { Subject } from 'rxjs';
16
- import { getMatInputUnsupportedTypeError } from './input-errors';
17
- import { MAT_INPUT_VALUE_ACCESSOR } from './input-value-accessor';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "@angular/cdk/platform";
20
- import * as i2 from "@angular/forms";
21
- import * as i3 from "@angular/material/core";
22
- import * as i4 from "@angular/cdk/text-field";
23
- import * as i5 from "@angular/material/form-field";
24
- // Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.
25
- const MAT_INPUT_INVALID_TYPES = [
26
- 'button',
27
- 'checkbox',
28
- 'file',
29
- 'hidden',
30
- 'image',
31
- 'radio',
32
- 'range',
33
- 'reset',
34
- 'submit',
35
- ];
36
- let nextUniqueId = 0;
37
- export class MatInput {
38
- /**
39
- * Implemented as part of MatFormFieldControl.
40
- * @docs-private
41
- */
42
- get disabled() {
43
- return this._disabled;
44
- }
45
- set disabled(value) {
46
- this._disabled = coerceBooleanProperty(value);
47
- // Browsers may not fire the blur event if the input is disabled too quickly.
48
- // Reset from here to ensure that the element doesn't become stuck.
49
- if (this.focused) {
50
- this.focused = false;
51
- this.stateChanges.next();
52
- }
53
- }
54
- /**
55
- * Implemented as part of MatFormFieldControl.
56
- * @docs-private
57
- */
58
- get id() {
59
- return this._id;
60
- }
61
- set id(value) {
62
- this._id = value || this._uid;
63
- }
64
- /**
65
- * Implemented as part of MatFormFieldControl.
66
- * @docs-private
67
- */
68
- get required() {
69
- return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
70
- }
71
- set required(value) {
72
- this._required = coerceBooleanProperty(value);
73
- }
74
- /** Input type of the element. */
75
- get type() {
76
- return this._type;
77
- }
78
- set type(value) {
79
- this._type = value || 'text';
80
- this._validateType();
81
- // When using Angular inputs, developers are no longer able to set the properties on the native
82
- // input element. To ensure that bindings for `type` work, we need to sync the setter
83
- // with the native property. Textarea elements don't support the type property or attribute.
84
- if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {
85
- this._elementRef.nativeElement.type = this._type;
86
- }
87
- this._ensureWheelDefaultBehavior();
88
- }
89
- /** An object used to control when error messages are shown. */
90
- get errorStateMatcher() {
91
- return this._errorStateTracker.matcher;
92
- }
93
- set errorStateMatcher(value) {
94
- this._errorStateTracker.matcher = value;
95
- }
96
- /**
97
- * Implemented as part of MatFormFieldControl.
98
- * @docs-private
99
- */
100
- get value() {
101
- return this._inputValueAccessor.value;
102
- }
103
- set value(value) {
104
- if (value !== this.value) {
105
- this._inputValueAccessor.value = value;
106
- this.stateChanges.next();
107
- }
108
- }
109
- /** Whether the element is readonly. */
110
- get readonly() {
111
- return this._readonly;
112
- }
113
- set readonly(value) {
114
- this._readonly = coerceBooleanProperty(value);
115
- }
116
- /** Whether the input is in an error state. */
117
- get errorState() {
118
- return this._errorStateTracker.errorState;
119
- }
120
- set errorState(value) {
121
- this._errorStateTracker.errorState = value;
122
- }
123
- constructor(_elementRef, _platform, ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, _autofillMonitor, _ngZone,
124
- // TODO: Remove this once the legacy appearance has been removed. We only need
125
- // to inject the form field for determining whether the placeholder has been promoted.
126
- _formField) {
127
- this._elementRef = _elementRef;
128
- this._platform = _platform;
129
- this.ngControl = ngControl;
130
- this._autofillMonitor = _autofillMonitor;
131
- this._ngZone = _ngZone;
132
- this._formField = _formField;
133
- this._uid = `mat-input-${nextUniqueId++}`;
134
- this._webkitBlinkWheelListenerAttached = false;
135
- /**
136
- * Implemented as part of MatFormFieldControl.
137
- * @docs-private
138
- */
139
- this.focused = false;
140
- /**
141
- * Implemented as part of MatFormFieldControl.
142
- * @docs-private
143
- */
144
- this.stateChanges = new Subject();
145
- /**
146
- * Implemented as part of MatFormFieldControl.
147
- * @docs-private
148
- */
149
- this.controlType = 'mat-input';
150
- /**
151
- * Implemented as part of MatFormFieldControl.
152
- * @docs-private
153
- */
154
- this.autofilled = false;
155
- this._disabled = false;
156
- this._type = 'text';
157
- this._readonly = false;
158
- this._neverEmptyInputTypes = [
159
- 'date',
160
- 'datetime',
161
- 'datetime-local',
162
- 'month',
163
- 'time',
164
- 'week',
165
- ].filter(t => getSupportedInputTypes().has(t));
166
- this._iOSKeyupListener = (event) => {
167
- const el = event.target;
168
- // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two
169
- // indicate different things. If the value is 0, it means that the caret is at the start
170
- // of the input, whereas a value of `null` means that the input doesn't support
171
- // manipulating the selection range. Inputs that don't support setting the selection range
172
- // will throw an error so we want to avoid calling `setSelectionRange` on them. See:
173
- // https://html.spec.whatwg.org/multipage/input.html#do-not-apply
174
- if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {
175
- // Note: Just setting `0, 0` doesn't fix the issue. Setting
176
- // `1, 1` fixes it for the first time that you type text and
177
- // then hold delete. Toggling to `1, 1` and then back to
178
- // `0, 0` seems to completely fix it.
179
- el.setSelectionRange(1, 1);
180
- el.setSelectionRange(0, 0);
181
- }
182
- };
183
- this._webkitBlinkWheelListener = () => {
184
- // This is a noop function and is used to enable mouse wheel input
185
- // on number inputs
186
- // on blink and webkit browsers.
187
- };
188
- const element = this._elementRef.nativeElement;
189
- const nodeName = element.nodeName.toLowerCase();
190
- // If no input value accessor was explicitly specified, use the element as the input value
191
- // accessor.
192
- this._inputValueAccessor = inputValueAccessor || element;
193
- this._previousNativeValue = this.value;
194
- // Force setter to be called in case id was not specified.
195
- this.id = this.id;
196
- // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete
197
- // key. In order to get around this we need to "jiggle" the caret loose. Since this bug only
198
- // exists on iOS, we only bother to install the listener on iOS.
199
- if (_platform.IOS) {
200
- _ngZone.runOutsideAngular(() => {
201
- _elementRef.nativeElement.addEventListener('keyup', this._iOSKeyupListener);
202
- });
203
- }
204
- this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, ngControl, parentFormGroup, parentForm, this.stateChanges);
205
- this._isServer = !this._platform.isBrowser;
206
- this._isNativeSelect = nodeName === 'select';
207
- this._isTextarea = nodeName === 'textarea';
208
- this._isInFormField = !!_formField;
209
- if (this._isNativeSelect) {
210
- this.controlType = element.multiple
211
- ? 'mat-native-select-multiple'
212
- : 'mat-native-select';
213
- }
214
- }
215
- ngAfterViewInit() {
216
- if (this._platform.isBrowser) {
217
- this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {
218
- this.autofilled = event.isAutofilled;
219
- this.stateChanges.next();
220
- });
221
- }
222
- }
223
- ngOnChanges() {
224
- this.stateChanges.next();
225
- }
226
- ngOnDestroy() {
227
- this.stateChanges.complete();
228
- if (this._platform.isBrowser) {
229
- this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);
230
- }
231
- if (this._platform.IOS) {
232
- this._elementRef.nativeElement.removeEventListener('keyup', this._iOSKeyupListener);
233
- }
234
- if (this._webkitBlinkWheelListenerAttached) {
235
- this._elementRef.nativeElement.removeEventListener('wheel', this._webkitBlinkWheelListener);
236
- }
237
- }
238
- ngDoCheck() {
239
- if (this.ngControl) {
240
- // We need to re-evaluate this on every change detection cycle, because there are some
241
- // error triggers that we can't subscribe to (e.g. parent form submissions). This means
242
- // that whatever logic is in here has to be super lean or we risk destroying the performance.
243
- this.updateErrorState();
244
- // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when
245
- // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it
246
- // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming
247
- // disabled.
248
- if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {
249
- this.disabled = this.ngControl.disabled;
250
- this.stateChanges.next();
251
- }
252
- }
253
- // We need to dirty-check the native element's value, because there are some cases where
254
- // we won't be notified when it changes (e.g. the consumer isn't using forms or they're
255
- // updating the value using `emitEvent: false`).
256
- this._dirtyCheckNativeValue();
257
- // We need to dirty-check and set the placeholder attribute ourselves, because whether it's
258
- // present or not depends on a query which is prone to "changed after checked" errors.
259
- this._dirtyCheckPlaceholder();
260
- }
261
- /** Focuses the input. */
262
- focus(options) {
263
- this._elementRef.nativeElement.focus(options);
264
- }
265
- /** Refreshes the error state of the input. */
266
- updateErrorState() {
267
- this._errorStateTracker.updateErrorState();
268
- }
269
- /** Callback for the cases where the focused state of the input changes. */
270
- _focusChanged(isFocused) {
271
- if (isFocused !== this.focused) {
272
- this.focused = isFocused;
273
- this.stateChanges.next();
274
- }
275
- }
276
- _onInput() {
277
- // This is a noop function and is used to let Angular know whenever the value changes.
278
- // Angular will run a new change detection each time the `input` event has been dispatched.
279
- // It's necessary that Angular recognizes the value change, because when floatingLabel
280
- // is set to false and Angular forms aren't used, the placeholder won't recognize the
281
- // value changes and will not disappear.
282
- // Listening to the input event wouldn't be necessary when the input is using the
283
- // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
284
- }
285
- /** Does some manual dirty checking on the native input `value` property. */
286
- _dirtyCheckNativeValue() {
287
- const newValue = this._elementRef.nativeElement.value;
288
- if (this._previousNativeValue !== newValue) {
289
- this._previousNativeValue = newValue;
290
- this.stateChanges.next();
291
- }
292
- }
293
- /** Does some manual dirty checking on the native input `placeholder` attribute. */
294
- _dirtyCheckPlaceholder() {
295
- const placeholder = this._getPlaceholder();
296
- if (placeholder !== this._previousPlaceholder) {
297
- const element = this._elementRef.nativeElement;
298
- this._previousPlaceholder = placeholder;
299
- placeholder
300
- ? element.setAttribute('placeholder', placeholder)
301
- : element.removeAttribute('placeholder');
302
- }
303
- }
304
- /** Gets the current placeholder of the form field. */
305
- _getPlaceholder() {
306
- return this.placeholder || null;
307
- }
308
- /** Make sure the input is a supported type. */
309
- _validateType() {
310
- if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&
311
- (typeof ngDevMode === 'undefined' || ngDevMode)) {
312
- throw getMatInputUnsupportedTypeError(this._type);
313
- }
314
- }
315
- /** Checks whether the input type is one of the types that are never empty. */
316
- _isNeverEmpty() {
317
- return this._neverEmptyInputTypes.indexOf(this._type) > -1;
318
- }
319
- /** Checks whether the input is invalid based on the native validation. */
320
- _isBadInput() {
321
- // The `validity` property won't be present on platform-server.
322
- let validity = this._elementRef.nativeElement.validity;
323
- return validity && validity.badInput;
324
- }
325
- /**
326
- * Implemented as part of MatFormFieldControl.
327
- * @docs-private
328
- */
329
- get empty() {
330
- return (!this._isNeverEmpty() &&
331
- !this._elementRef.nativeElement.value &&
332
- !this._isBadInput() &&
333
- !this.autofilled);
334
- }
335
- /**
336
- * Implemented as part of MatFormFieldControl.
337
- * @docs-private
338
- */
339
- get shouldLabelFloat() {
340
- if (this._isNativeSelect) {
341
- // For a single-selection `<select>`, the label should float when the selected option has
342
- // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid
343
- // overlapping the label with the options.
344
- const selectElement = this._elementRef.nativeElement;
345
- const firstOption = selectElement.options[0];
346
- // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be
347
- // -1 if the `value` is set to something, that isn't in the list of options, at a later point.
348
- return (this.focused ||
349
- selectElement.multiple ||
350
- !this.empty ||
351
- !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label));
352
- }
353
- else {
354
- return this.focused || !this.empty;
355
- }
356
- }
357
- /**
358
- * Implemented as part of MatFormFieldControl.
359
- * @docs-private
360
- */
361
- setDescribedByIds(ids) {
362
- if (ids.length) {
363
- this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));
364
- }
365
- else {
366
- this._elementRef.nativeElement.removeAttribute('aria-describedby');
367
- }
368
- }
369
- /**
370
- * Implemented as part of MatFormFieldControl.
371
- * @docs-private
372
- */
373
- onContainerClick() {
374
- // Do not re-focus the input element if the element is already focused. Otherwise it can happen
375
- // that someone clicks on a time input and the cursor resets to the "hours" field while the
376
- // "minutes" field was actually clicked. See: https://github.com/angular/components/issues/12849
377
- if (!this.focused) {
378
- this.focus();
379
- }
380
- }
381
- /** Whether the form control is a native select that is displayed inline. */
382
- _isInlineSelect() {
383
- const element = this._elementRef.nativeElement;
384
- return this._isNativeSelect && (element.multiple || element.size > 1);
385
- }
386
- /**
387
- * In blink and webkit browsers a focused number input does not increment or decrement its value
388
- * on mouse wheel interaction unless a wheel event listener is attached to it or one of its ancestors or a passive wheel listener is attached somewhere in the DOM.
389
- * For example: Hitting a tooltip once enables the mouse wheel input for all number inputs as long as it exists.
390
- * In order to get reliable and intuitive behavior we apply a wheel event on our own
391
- * thus making sure increment and decrement by mouse wheel works every time.
392
- * @docs-private
393
- */
394
- _ensureWheelDefaultBehavior() {
395
- if (!this._webkitBlinkWheelListenerAttached &&
396
- this._type === 'number' &&
397
- (this._platform.BLINK || this._platform.WEBKIT)) {
398
- this._ngZone.runOutsideAngular(() => {
399
- this._elementRef.nativeElement.addEventListener('wheel', this._webkitBlinkWheelListener);
400
- });
401
- this._webkitBlinkWheelListenerAttached = true;
402
- }
403
- if (this._webkitBlinkWheelListenerAttached && this._type !== 'number') {
404
- this._elementRef.nativeElement.removeEventListener('wheel', this._webkitBlinkWheelListener);
405
- this._webkitBlinkWheelListenerAttached = true;
406
- }
407
- }
408
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatInput, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i2.NgControl, optional: true, self: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MAT_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i4.AutofillMonitor }, { token: i0.NgZone }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
409
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0-next.2", type: MatInput, isStandalone: true, selector: "input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]", inputs: { disabled: "disabled", id: "id", placeholder: "placeholder", name: "name", required: "required", type: "type", errorStateMatcher: "errorStateMatcher", userAriaDescribedBy: ["aria-describedby", "userAriaDescribedBy"], value: "value", readonly: "readonly" }, host: { listeners: { "focus": "_focusChanged(true)", "blur": "_focusChanged(false)", "input": "_onInput()" }, properties: { "class.mat-input-server": "_isServer", "class.mat-mdc-form-field-textarea-control": "_isInFormField && _isTextarea", "class.mat-mdc-form-field-input-control": "_isInFormField", "class.mdc-text-field__input": "_isInFormField", "class.mat-mdc-native-select-inline": "_isInlineSelect()", "id": "id", "disabled": "disabled", "required": "required", "attr.name": "name || null", "attr.readonly": "readonly && !_isNativeSelect || null", "attr.aria-invalid": "(empty && required) ? null : errorState", "attr.aria-required": "required", "attr.id": "id" }, classAttribute: "mat-mdc-input-element" }, providers: [{ provide: MatFormFieldControl, useExisting: MatInput }], exportAs: ["matInput"], usesOnChanges: true, ngImport: i0 }); }
410
- }
411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatInput, decorators: [{
412
- type: Directive,
413
- args: [{
414
- selector: `input[matInput], textarea[matInput], select[matNativeControl],
415
- input[matNativeControl], textarea[matNativeControl]`,
416
- exportAs: 'matInput',
417
- host: {
418
- 'class': 'mat-mdc-input-element',
419
- // The BaseMatInput parent class adds `mat-input-element`, `mat-form-field-control` and
420
- // `mat-form-field-autofill-control` to the CSS class list, but this should not be added for
421
- // this MDC equivalent input.
422
- '[class.mat-input-server]': '_isServer',
423
- '[class.mat-mdc-form-field-textarea-control]': '_isInFormField && _isTextarea',
424
- '[class.mat-mdc-form-field-input-control]': '_isInFormField',
425
- '[class.mdc-text-field__input]': '_isInFormField',
426
- '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',
427
- // Native input properties that are overwritten by Angular inputs need to be synced with
428
- // the native input element. Otherwise property bindings for those don't work.
429
- '[id]': 'id',
430
- '[disabled]': 'disabled',
431
- '[required]': 'required',
432
- '[attr.name]': 'name || null',
433
- '[attr.readonly]': 'readonly && !_isNativeSelect || null',
434
- // Only mark the input as invalid for assistive technology if it has a value since the
435
- // state usually overlaps with `aria-required` when the input is empty and can be redundant.
436
- '[attr.aria-invalid]': '(empty && required) ? null : errorState',
437
- '[attr.aria-required]': 'required',
438
- // Native input properties that are overwritten by Angular inputs need to be synced with
439
- // the native input element. Otherwise property bindings for those don't work.
440
- '[attr.id]': 'id',
441
- '(focus)': '_focusChanged(true)',
442
- '(blur)': '_focusChanged(false)',
443
- '(input)': '_onInput()',
444
- },
445
- providers: [{ provide: MatFormFieldControl, useExisting: MatInput }],
446
- standalone: true,
447
- }]
448
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i2.NgControl, decorators: [{
449
- type: Optional
450
- }, {
451
- type: Self
452
- }] }, { type: i2.NgForm, decorators: [{
453
- type: Optional
454
- }] }, { type: i2.FormGroupDirective, decorators: [{
455
- type: Optional
456
- }] }, { type: i3.ErrorStateMatcher }, { type: undefined, decorators: [{
457
- type: Optional
458
- }, {
459
- type: Self
460
- }, {
461
- type: Inject,
462
- args: [MAT_INPUT_VALUE_ACCESSOR]
463
- }] }, { type: i4.AutofillMonitor }, { type: i0.NgZone }, { type: i5.MatFormField, decorators: [{
464
- type: Optional
465
- }, {
466
- type: Inject,
467
- args: [MAT_FORM_FIELD]
468
- }] }], propDecorators: { disabled: [{
469
- type: Input
470
- }], id: [{
471
- type: Input
472
- }], placeholder: [{
473
- type: Input
474
- }], name: [{
475
- type: Input
476
- }], required: [{
477
- type: Input
478
- }], type: [{
479
- type: Input
480
- }], errorStateMatcher: [{
481
- type: Input
482
- }], userAriaDescribedBy: [{
483
- type: Input,
484
- args: ['aria-describedby']
485
- }], value: [{
486
- type: Input
487
- }], readonly: [{
488
- type: Input
489
- }] } });
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvaW5wdXQvaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFDLHNCQUFzQixFQUFFLFFBQVEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBRUwsU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzdFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQUVoRSxxRkFBcUY7QUFDckYsTUFBTSx1QkFBdUIsR0FBRztJQUM5QixRQUFRO0lBQ1IsVUFBVTtJQUNWLE1BQU07SUFDTixRQUFRO0lBQ1IsT0FBTztJQUNQLE9BQU87SUFDUCxPQUFPO0lBQ1AsT0FBTztJQUNQLFFBQVE7Q0FDVCxDQUFDO0FBRUYsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBcUNyQixNQUFN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QkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBRVIsUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUtuRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7eUNBOUloQyxRQUFRO3NCQURYLEtBQUs7Z0JBcUJGLEVBQUU7c0JBREwsS0FBSztnQkFhRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBV0YsSUFBSTtzQkFEUCxLQUFLO2dCQXFCRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBWXFCLG1CQUFtQjtzQkFBN0MsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBT3JCLEtBQUs7c0JBRFIsS0FBSztnQkFhRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7Z2V0U3VwcG9ydGVkSW5wdXRUeXBlcywgUGxhdGZvcm19IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge0F1dG9maWxsTW9uaXRvcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RXJyb3JTdGF0ZU1hdGNoZXIsIF9FcnJvclN0YXRlVHJhY2tlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge01hdEZvcm1GaWVsZENvbnRyb2wsIE1hdEZvcm1GaWVsZCwgTUFUX0ZPUk1fRklFTER9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Z2V0TWF0SW5wdXRVbnN1cHBvcnRlZFR5cGVFcnJvcn0gZnJvbSAnLi9pbnB1dC1lcnJvcnMnO1xuaW1wb3J0IHtNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1J9IGZyb20gJy4vaW5wdXQtdmFsdWUtYWNjZXNzb3InO1xuXG4vLyBJbnZhbGlkIGlucHV0IHR5cGUuIFVzaW5nIG9uZSBvZiB0aGVzZSB3aWxsIHRocm93IGFuIE1hdElucHV0VW5zdXBwb3J0ZWRUeXBlRXJyb3IuXG5jb25zdCBNQVRfSU5QVVRfSU5WQUxJRF9UWVBFUyA9IFtcbiAgJ2J1dHRvbicsXG4gICdjaGVja2JveCcsXG4gICdmaWxlJyxcbiAgJ2hpZGRlbicsXG4gICdpbWFnZScsXG4gICdyYWRpbycsXG4gICdyYW5nZScsXG4gICdyZXNldCcsXG4gICdzdWJtaXQnLFxuXTtcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogYGlucHV0W21hdElucHV0XSwgdGV4dGFyZWFbbWF0SW5wdXRdLCBzZWxlY3RbbWF0TmF0aXZlQ29udHJvbF0sXG4gICAgICBpbnB1dFttYXROYXRpdmVDb250cm9sXSwgdGV4dGFyZWFbbWF0TmF0aXZlQ29udHJvbF1gLFxuICBleHBvcnRBczogJ21hdElucHV0JyxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtYXQtbWRjLWlucHV0LWVsZW1lbnQnLFxuICAgIC8vIFRoZSBCYXNlTWF0SW5wdXQgcGFyZW50IGNsYXNzIGFkZHMgYG1hdC1pbnB1dC1lbGVtZW50YCwgYG1hdC1mb3JtLWZpZWxkLWNvbnRyb2xgIGFuZFxuICAgIC8vIGBtYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sYCB0byB0aGUgQ1NTIGNsYXNzIGxpc3QsIGJ1dCB0aGlzIHNob3VsZCBub3QgYmUgYWRkZWQgZm9yXG4gICAgLy8gdGhpcyBNREMgZXF1aXZhbGVudCBpbnB1dC5cbiAgICAnW2NsYXNzLm1hdC1pbnB1dC1zZXJ2ZXJdJzogJ19pc1NlcnZlcicsXG4gICAgJ1tjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtdGV4dGFyZWEtY29udHJvbF0nOiAnX2lzSW5Gb3JtRmllbGQgJiYgX2lzVGV4dGFyZWEnLFxuICAgICdbY2xhc3MubWF0LW1kYy1mb3JtLWZpZWxkLWlucHV0LWNvbnRyb2xdJzogJ19pc0luRm9ybUZpZWxkJyxcbiAgICAnW2NsYXNzLm1kYy10ZXh0LWZpZWxkX19pbnB1dF0nOiAnX2lzSW5Gb3JtRmllbGQnLFxuICAgICdbY2xhc3MubWF0LW1kYy1uYXRpdmUtc2VsZWN0LWlubGluZV0nOiAnX2lzSW5saW5lU2VsZWN0KCknLFxuICAgIC8vIE5hdGl2ZSBpbnB1dCBwcm9wZXJ0aWVzIHRoYXQgYXJlIG92ZXJ3cml0dGVuIGJ5IEFuZ3VsYXIgaW5wdXRzIG5lZWQgdG8gYmUgc3luY2VkIHdpdGhcbiAgICAvLyB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuIE90aGVyd2lzZSBwcm9wZXJ0eSBiaW5kaW5ncyBmb3IgdGhvc2UgZG9uJ3Qgd29yay5cbiAgICAnW2lkXSc6ICdpZCcsXG4gICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2F0dHIubmFtZV0nOiAnbmFtZSB8fCBudWxsJyxcbiAgICAnW2F0dHIucmVhZG9ubHldJzogJ3JlYWRvbmx5ICYmICFfaXNOYXRpdmVTZWxlY3QgfHwgbnVsbCcsXG4gICAgLy8gT25seSBtYXJrIHRoZSBpbnB1dCBhcyBpbnZhbGlkIGZvciBhc3Npc3RpdmUgdGVjaG5vbG9neSBpZiBpdCBoYXMgYSB2YWx1ZSBzaW5jZSB0aGVcbiAgICAvLyBzdGF0ZSB1c3VhbGx5IG92ZXJsYXBzIHdpdGggYGFyaWEtcmVxdWlyZWRgIHdoZW4gdGhlIGlucHV0IGlzIGVtcHR5IGFuZCBjYW4gYmUgcmVkdW5kYW50LlxuICAgICdbYXR0ci5hcmlhLWludmFsaWRdJzogJyhlbXB0eSAmJiByZXF1aXJlZCkgPyBudWxsIDogZXJyb3JTdGF0ZScsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAvLyBOYXRpdmUgaW5wdXQgcHJvcGVydGllcyB0aGF0IGFyZSBvdmVyd3JpdHRlbiBieSBBbmd1bGFyIGlucHV0cyBuZWVkIHRvIGJlIHN5bmNlZCB3aXRoXG4gICAgLy8gdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50LiBPdGhlcndpc2UgcHJvcGVydHkgYmluZGluZ3MgZm9yIHRob3NlIGRvbid0IHdvcmsuXG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJyhmb2N1cyknOiAnX2ZvY3VzQ2hhbmdlZCh0cnVlKScsXG4gICAgJyhibHVyKSc6ICdfZm9jdXNDaGFuZ2VkKGZhbHNlKScsXG4gICAgJyhpbnB1dCknOiAnX29uSW5wdXQoKScsXG4gIH0sXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTWF0SW5wdXR9XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0SW5wdXRcbiAgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPGFueT4sIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBEb0NoZWNrXG57XG4gIHByb3RlY3RlZCBfdWlkID0gYG1hdC1pbnB1dC0ke25leHRVbmlxdWVJZCsrfWA7XG4gIHByb3RlY3RlZCBfcHJldmlvdXNOYXRpdmVWYWx1ZTogYW55O1xuICBwcml2YXRlIF9pbnB1dFZhbHVlQWNjZXNzb3I6IHt2YWx1ZTogYW55fTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNQbGFjZWhvbGRlcjogc3RyaW5nIHwgbnVsbDtcbiAgcHJpdmF0ZSBfZXJyb3JTdGF0ZVRyYWNrZXI6IF9FcnJvclN0YXRlVHJhY2tlcjtcbiAgcHJpdmF0ZSBfd2Via2l0QmxpbmtXaGVlbExpc3RlbmVyQXR0YWNoZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGJlaW5nIHJlbmRlcmVkIG9uIHRoZSBzZXJ2ZXIuICovXG4gIHJlYWRvbmx5IF9pc1NlcnZlcjogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGEgbmF0aXZlIGh0bWwgc2VsZWN0LiAqL1xuICByZWFkb25seSBfaXNOYXRpdmVTZWxlY3Q6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBhIHRleHRhcmVhLiAqL1xuICByZWFkb25seSBfaXNUZXh0YXJlYTogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgaW5zaWRlIG9mIGEgZm9ybSBmaWVsZC4gKi9cbiAgcmVhZG9ubHkgX2lzSW5Gb3JtRmllbGQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgY29udHJvbFR5cGU6IHN0cmluZyA9ICdtYXQtaW5wdXQnO1xuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIGF1dG9maWxsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAvLyBSZXNldCBmcm9tIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgZG9lc24ndCBiZWNvbWUgc3R1Y2suXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgfVxuICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaW5wdXQuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XG4gIH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJvdGVjdGVkIF9yZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKiogSW5wdXQgdHlwZSBvZiB0aGUgZWxlbWVudC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuICBzZXQgdHlwZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHlwZSA9IHZhbHVlIHx8ICd0ZXh0JztcbiAgICB0aGlzLl92YWxpZGF0ZVR5cGUoKTtcblxuICAgIC8vIFdoZW4gdXNpbmcgQW5ndWxhciBpbnB1dHMsIGRldmVsb3BlcnMgYXJlIG5vIGxvbmdlciBhYmxlIHRvIHNldCB0aGUgcHJvcGVydGllcyBvbiB0aGUgbmF0aXZlXG4gICAgLy8gaW5wdXQgZWxlbWVudC4gVG8gZW5zdXJlIHRoYXQgYmluZGluZ3MgZm9yIGB0eXBlYCB3b3JrLCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHNldHRlclxuICAgIC8vIHdpdGggdGhlIG5hdGl2ZSBwcm9wZXJ0eS4gVGV4dGFyZWEgZWxlbWVudHMgZG9uJ3Qgc3VwcG9ydCB0aGUgdHlwZSBwcm9wZXJ0eSBvciBhdHRyaWJ1dGUuXG4gICAgaWYgKCF0aGlzLl9pc1RleHRhcmVhICYmIGdldFN1cHBvcnRlZElucHV0VHlwZXMoKS5oYXModGhpcy5fdHlwZSkpIHtcbiAgICAgICh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZSA9IHRoaXMuX3R5cGU7XG4gICAgfVxuXG4gICAgdGhpcy5fZW5zdXJlV2hlZWxEZWZhdWx0QmVoYXZpb3IoKTtcbiAgfVxuICBwcm90ZWN0ZWQgX3R5cGUgPSAndGV4dCc7XG5cbiAgLyoqIEFuIG9iamVjdCB1c2VkIHRvIGNvbnRyb2wgd2hlbiBlcnJvciBtZXNzYWdlcyBhcmUgc2hvd24uICovXG4gIEBJbnB1dCgpXG4gIGdldCBlcnJvclN0YXRlTWF0Y2hlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JTdGF0ZVRyYWNrZXIubWF0Y2hlcjtcbiAgfVxuICBzZXQgZXJyb3JTdGF0ZU1hdGNoZXIodmFsdWU6IEVycm9yU3RhdGVNYXRjaGVyKSB7XG4gICAgdGhpcy5fZXJyb3JTdGF0ZVRyYWNrZXIubWF0Y2hlciA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQElucHV0KCdhcmlhLWRlc2NyaWJlZGJ5JykgdXNlckFyaWFEZXNjcmliZWRCeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIHJlYWRvbmx5LiAqL1xuICBASW5wdXQoKVxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG4gIHNldCByZWFkb25seSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX3JlYWRvbmx5ID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGluIGFuIGVycm9yIHN0YXRlLiAqL1xuICBnZXQgZXJyb3JTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JTdGF0ZVRyYWNrZXIuZXJyb3JTdGF0ZTtcbiAgfVxuICBzZXQgZXJyb3JTdGF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Vycm9yU3RhdGVUcmFja2VyLmVycm9yU3RhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbmV2ZXJFbXB0eUlucHV0VHlwZXMgPSBbXG4gICAgJ2RhdGUnLFxuICAgICdkYXRldGltZScsXG4gICAgJ2RhdGV0aW1lLWxvY2FsJyxcbiAgICAnbW9udGgnLFxuICAgICd0aW1lJyxcbiAgICAnd2VlaycsXG4gIF0uZmlsdGVyKHQgPT4gZ2V0U3VwcG9ydGVkSW5wdXRUeXBlcygpLmhhcyh0KSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ+LFxuICAgIHByb3RlY3RlZCBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1IpIGlucHV0VmFsdWVBY2Nlc3NvcjogYW55LFxuICAgIHByaXZhdGUgX2F1dG9maWxsTW9uaXRvcjogQXV0b2ZpbGxNb25pdG9yLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIG9uY2UgdGhlIGxlZ2FjeSBhcHBlYXJhbmNlIGhhcyBiZWVuIHJlbW92ZWQuIFdlIG9ubHkgbmVlZFxuICAgIC8vIHRvIGluamVjdCB0aGUgZm9ybSBmaWVsZCBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUgcGxhY2Vob2xkZXIgaGFzIGJlZW4gcHJvbW90ZWQuXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRk9STV9GSUVMRCkgcHJvdGVjdGVkIF9mb3JtRmllbGQ/OiBNYXRGb3JtRmllbGQsXG4gICkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBJZiBubyBpbnB1dCB2YWx1ZSBhY2Nlc3NvciB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQsIHVzZSB0aGUgZWxlbWVudCBhcyB0aGUgaW5wdXQgdmFsdWVcbiAgICAvLyBhY2Nlc3Nvci5cbiAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IgPSBpbnB1dFZhbHVlQWNjZXNzb3IgfHwgZWxlbWVudDtcblxuICAgIHRoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgLy8gRm9yY2Ugc2V0dGVyIHRvIGJlIGNhbGxlZCBpbiBjYXNlIGlkIHdhcyBub3Qgc3BlY2lmaWVkLlxuICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuXG4gICAgLy8gT24gc29tZSB2ZXJzaW9ucyBvZiBpT1MgdGhlIGNhcmV0IGdldHMgc3R1Y2sgaW4gdGhlIHdyb25nIHBsYWNlIHdoZW4gaG9sZGluZyBkb3duIHRoZSBkZWxldGVcbiAgICAvLyBrZXkuIEluIG9yZGVyIHRvIGdldCBhcm91bmQgdGhpcyB3ZSBuZWVkIHRvIFwiamlnZ2xlXCIgdGhlIGNhcmV0IGxvb3NlLiBTaW5jZSB0aGlzIGJ1ZyBvbmx5XG4gICAgLy8gZXhpc3RzIG9uIGlPUywgd2Ugb25seSBib3RoZXIgdG8gaW5zdGFsbCB0aGUgbGlzdGVuZXIgb24gaU9TLlxuICAgIGlmIChfcGxhdGZvcm0uSU9TKSB7XG4gICAgICBfbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuX2lPU0tleXVwTGlzdGVuZXIpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZXJyb3JTdGF0ZVRyYWNrZXIgPSBuZXcgX0Vycm9yU3RhdGVUcmFja2VyKFxuICAgICAgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgbmdDb250cm9sLFxuICAgICAgcGFyZW50Rm9ybUdyb3VwLFxuICAgICAgcGFyZW50Rm9ybSxcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLFxuICAgICk7XG4gICAgdGhpcy5faXNTZXJ2ZXIgPSAhdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyO1xuICAgIHRoaXMuX2lzTmF0aXZlU2VsZWN0ID0gbm9kZU5hbWUgPT09ICdzZWxlY3QnO1xuICAgIHRoaXMuX2lzVGV4dGFyZWEgPSBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJztcbiAgICB0aGlzLl9pc0luRm9ybUZpZWxkID0gISFfZm9ybUZpZWxkO1xuXG4gICAgaWYgKHRoaXMuX2lzTmF0aXZlU2VsZWN0KSB7XG4gICAgICB0aGlzLmNvbnRyb2xUeXBlID0gKGVsZW1lbnQgYXMgSFRNTFNlbGVjdEVsZW1lbnQpLm11bHRpcGxlXG4gICAgICAgID8gJ21hdC1uYXRpdmUtc2VsZWN0LW11bHRpcGxlJ1xuICAgICAgICA6ICdtYXQtbmF0aXZlLXNlbGVjdCc7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgIHRoaXMuX2F1dG9maWxsTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgdGhpcy5hdXRvZmlsbGVkID0gZXZlbnQuaXNBdXRvZmlsbGVkO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuXG4gICAgaWYgKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgdGhpcy5fYXV0b2ZpbGxNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BsYXRmb3JtLklPUykge1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5faU9TS2V5dXBMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3dlYmtpdEJsaW5rV2hlZWxMaXN0ZW5lckF0dGFjaGVkKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl93ZWJraXRCbGlua1doZWVsTGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lXG4gICAgICAvLyBlcnJvciB0cmlnZ2VycyB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0byAoZS5nLiBwYXJlbnQgZm9ybSBzdWJtaXNzaW9ucykuIFRoaXMgbWVhbnNcbiAgICAgIC8vIHRoYXQgd2hhdGV2ZXIgbG9naWMgaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIGRlc3Ryb3lpbmcgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG5cbiAgICAgIC8vIFNpbmNlIHRoZSBpbnB1dCBpc24ndCBhIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAsIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSBvZiBrbm93aW5nIHdoZW5cbiAgICAgIC8vIHRoZSBkaXNhYmxlZCBzdGF0ZSBoYXMgY2hhbmdlZC4gV2UgY2FuJ3QgdXNlIHRoZSBgbmdDb250cm9sLnN0YXR1c0NoYW5nZXNgLCBiZWNhdXNlIGl0XG4gICAgICAvLyB3b24ndCBmaXJlIGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB3aXRoIGBlbWl0RXZlbnRzID0gZmFsc2VgLCBkZXNwaXRlIHRoZSBpbnB1dCBiZWNvbWluZ1xuICAgICAgLy8gZGlzYWJsZWQuXG4gICAgICBpZiAodGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2UgbmVlZCB0byBkaXJ0eS1jaGVjayB0aGUgbmF0aXZlIGVsZW1lbnQncyB2YWx1ZSwgYmVjYXVzZSB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZVxuICAgIC8vIHdlIHdvbid0IGJlIG5vdGlmaWVkIHdoZW4gaXQgY2hhbmdlcyAoZS5nLiB0aGUgY29uc3VtZXIgaXNuJ3QgdXNpbmcgZm9ybXMgb3IgdGhleSdyZVxuICAgIC8vIHVwZGF0aW5nIHRoZSB2YWx1ZSB1c2luZyBgZW1pdEV2ZW50OiBmYWxzZWApLlxuICAgIHRoaXMuX2RpcnR5Q2hlY2tOYXRpdmVWYWx1ZSgpO1xuXG4gICAgLy8gV2UgbmVlZCB0byBkaXJ0eS1jaGVjayBhbmQgc2V0IHRoZSBwbGFjZWhvbGRlciBhdHRyaWJ1dGUgb3Vyc2VsdmVzLCBiZWNhdXNlIHdoZXRoZXIgaXQnc1xuICAgIC8vIHByZXNlbnQgb3Igbm90IGRlcGVuZHMgb24gYSBxdWVyeSB3aGljaCBpcyBwcm9uZSB0byBcImNoYW5nZWQgYWZ0ZXIgY2hlY2tlZFwiIGVycm9ycy5cbiAgICB0aGlzLl9kaXJ0eUNoZWNrUGxhY2Vob2xkZXIoKTtcbiAgfVxuXG4gIC8qKiBGb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBSZWZyZXNoZXMgdGhlIGVycm9yIHN0YXRlIG9mIHRoZSBpbnB1dC4gKi9cbiAgdXBkYXRlRXJyb3JTdGF0ZSgpIHtcbiAgICB0aGlzLl9lcnJvclN0YXRlVHJhY2tlci51cGRhdGVFcnJvclN0YXRlKCk7XG4gIH1cblxuICAvKiogQ2FsbGJhY2sgZm9yIHRoZSBjYXNlcyB3aGVyZSB0aGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgaW5wdXQgY2hhbmdlcy4gKi9cbiAgX2ZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNGb2N1c2VkICE9PSB0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBfb25JbnB1dCgpIHtcbiAgICAvLyBUaGlzIGlzIGEgbm9vcCBmdW5jdGlvbiBhbmQgaXMgdXNlZCB0byBsZXQgQW5ndWxhciBrbm93IHdoZW5ldmVyIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgIC8vIEFuZ3VsYXIgd2lsbCBydW4gYSBuZXcgY2hhbmdlIGRldGVjdGlvbiBlYWNoIHRpbWUgdGhlIGBpbnB1dGAgZXZlbnQgaGFzIGJlZW4gZGlzcGF0Y2hlZC5cbiAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0aGF0IEFuZ3VsYXIgcmVjb2duaXplcyB0aGUgdmFsdWUgY2hhbmdlLCBiZWNhdXNlIHdoZW4gZmxvYXRpbmdMYWJlbFxuICAgIC8vIGlzIHNldCB0byBmYWxzZSBhbmQgQW5ndWxhciBmb3JtcyBhcmVuJ3QgdXNlZCwgdGhlIHBsYWNlaG9sZGVyIHdvbid0IHJlY29nbml6ZSB0aGVcbiAgICAvLyB2YWx1ZSBjaGFuZ2VzIGFuZCB3aWxsIG5vdCBkaXNhcHBlYXIuXG4gICAgLy8gTGlzdGVuaW5nIHRvIHRoZSBpbnB1dCBldmVudCB3b3VsZG4ndCBiZSBuZWNlc3Nhcnkgd2hlbiB0aGUgaW5wdXQgaXMgdXNpbmcgdGhlXG4gICAgLy8gRm9ybXNNb2R1bGUgb3IgUmVhY3RpdmVGb3Jtc01vZHVsZSwgYmVjYXVzZSBBbmd1bGFyIGZvcm1zIGFsc28gbGlzdGVucyB0byBpbnB1dCBldmVudHMuXG4gIH1cblxuICAvKiogRG9lcyBzb21lIG1hbnVhbCBkaXJ0eSBjaGVja2luZyBvbiB0aGUgbmF0aXZlIGlucHV0IGB2YWx1ZWAgcHJvcGVydHkuICovXG4gIHByb3RlY3RlZCBfZGlydHlDaGVja05hdGl2ZVZhbHVlKCkge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c05hdGl2ZVZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERvZXMgc29tZSBtYW51YWwgZGlydHkgY2hlY2tpbmcgb24gdGhlIG5hdGl2ZSBpbnB1dCBgcGxhY2Vob2xkZXJgIGF0dHJpYnV0ZS4gKi9cbiAgcHJpdmF0ZSBfZGlydHlDaGVja1BsYWNlaG9sZGVyKCkge1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5fZ2V0UGxhY2Vob2xkZXIoKTtcbiAgICBpZiAocGxhY2Vob2xkZXIgIT09IHRoaXMuX3ByZXZpb3VzUGxhY2Vob2xkZXIpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB0aGlzLl9wcmV2aW91c1BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICBwbGFjZWhvbGRlclxuICAgICAgICA/IGVsZW1lbnQuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsIHBsYWNlaG9sZGVyKVxuICAgICAgICA6IGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBjdXJyZW50IHBsYWNlaG9sZGVyIG9mIHRoZSBmb3JtIGZpZWxkLiAqL1xuICBwcm90ZWN0ZWQgX2dldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IG51bGw7XG4gIH1cblxuICAvKiogTWFrZSBzdXJlIHRoZSBpbnB1dCBpcyBhIHN1cHBvcnRlZCB0eXBlLiAqL1xuICBwcm90ZWN0ZWQgX3ZhbGlkYXRlVHlwZSgpIHtcbiAgICBpZiAoXG4gICAgICBNQVRfSU5QVVRfSU5WQUxJRF9UWVBFUy5pbmRleE9mKHRoaXMuX3R5cGUpID4gLTEgJiZcbiAgICAgICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpXG4gICAgKSB7XG4gICAgICB0aHJvdyBnZXRNYXRJbnB1dFVuc3VwcG9ydGVkVHlwZUVycm9yKHRoaXMuX3R5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgaW5wdXQgdHlwZSBpcyBvbmUgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIG5ldmVyIGVtcHR5LiAqL1xuICBwcm90ZWN0ZWQgX2lzTmV2ZXJFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmV2ZXJFbXB0eUlucHV0VHlwZXMuaW5kZXhPZih0aGlzLl90eXBlKSA+IC0xO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBpbnZhbGlkIGJhc2VkIG9uIHRoZSBuYXRpdmUgdmFsaWRhdGlvbi4gKi9cbiAgcHJvdGVjdGVkIF9pc0JhZElucHV0KCkge1xuICAgIC8vIFRoZSBgdmFsaWRpdHlgIHByb3BlcnR5IHdvbid0IGJlIHByZXNlbnQgb24gcGxhdGZvcm0tc2VydmVyLlxuICAgIGxldCB2YWxpZGl0eSA9ICh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsaWRpdHk7XG4gICAgcmV0dXJuIHZhbGlkaXR5ICYmIHZhbGlkaXR5LmJhZElucHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5faXNOZXZlckVtcHR5KCkgJiZcbiAgICAgICF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgJiZcbiAgICAgICF0aGlzLl9pc0JhZElucHV0KCkgJiZcbiAgICAgICF0aGlzLmF1dG9maWxsZWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2lzTmF0aXZlU2VsZWN0KSB7XG4gICAgICAvLyBGb3IgYSBzaW5nbGUtc2VsZWN0aW9uIGA8c2VsZWN0PmAsIHRoZSBsYWJlbCBzaG91bGQgZmxvYXQgd2hlbiB0aGUgc2VsZWN0ZWQgb3B0aW9uIGhhc1xuICAgICAgLy8gYSBub24tZW1wdHkgZGlzcGxheSB2YWx1ZS4gRm9yIGEgYDxzZWxlY3QgbXVsdGlwbGU+YCwgdGhlIGxhYmVsICphbHdheXMqIGZsb2F0cyB0byBhdm9pZFxuICAgICAgLy8gb3ZlcmxhcHBpbmcgdGhlIGxhYmVsIHdpdGggdGhlIG9wdGlvbnMuXG4gICAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxTZWxlY3RFbGVtZW50O1xuICAgICAgY29uc3QgZmlyc3RPcHRpb246IEhUTUxPcHRpb25FbGVtZW50IHwgdW5kZWZpbmVkID0gc2VsZWN0RWxlbWVudC5vcHRpb25zWzBdO1xuXG4gICAgICAvLyBPbiBtb3N0IGJyb3dzZXJzIHRoZSBgc2VsZWN0ZWRJbmRleGAgd2lsbCBhbHdheXMgYmUgMCwgaG93ZXZlciBvbiBJRSBhbmQgRWRnZSBpdCdsbCBiZVxuICAgICAgLy8gLTEgaWYgdGhlIGB2YWx1ZWAgaXMgc2V0IHRvIHNvbWV0aGluZywgdGhhdCBpc24ndCBpbiB0aGUgbGlzdCBvZiBvcHRpb25zLCBhdCBhIGxhdGVyIHBvaW50LlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5mb2N1c2VkIHx8XG4gICAgICAgIHNlbGVjdEVsZW1lbnQubXVsdGlwbGUgfHxcbiAgICAgICAgIXRoaXMuZW1wdHkgfHxcbiAgICAgICAgISEoc2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID4gLTEgJiYgZmlyc3RPcHRpb24gJiYgZmlyc3RPcHRpb24ubGFiZWwpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICBpZiAoaWRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIGlkcy5qb2luKCcgJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgb25Db250YWluZXJDbGljaygpIHtcbiAgICAvLyBEbyBub3QgcmUtZm9jdXMgdGhlIGlucHV0IGVsZW1lbnQgaWYgdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBmb2N1c2VkLiBPdGhlcndpc2UgaXQgY2FuIGhhcHBlblxuICAgIC8vIHRoYXQgc29tZW9uZSBjbGlja3Mgb24gYSB0aW1lIGlucHV0IGFuZCB0aGUgY3Vyc29yIHJlc2V0cyB0byB0aGUgXCJob3Vyc1wiIGZpZWxkIHdoaWxlIHRoZVxuICAgIC8vIFwibWludXRlc1wiIGZpZWxkIHdhcyBhY3R1YWxseSBjbGlja2VkLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzEyODQ5XG4gICAgaWYgKCF0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZm9ybSBjb250cm9sIGlzIGEgbmF0aXZlIHNlbGVjdCB0aGF0IGlzIGRpc3BsYXllZCBpbmxpbmUuICovXG4gIF9pc0lubGluZVNlbGVjdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxTZWxlY3RFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLl9pc05hdGl2ZVNlbGVjdCAmJiAoZWxlbWVudC5tdWx0aXBsZSB8fCBlbGVtZW50LnNpemUgPiAxKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lPU0tleXVwTGlzdGVuZXIgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgZWwgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIC8vIE5vdGU6IFdlIHNwZWNpZmljYWxseSBjaGVjayBmb3IgMCwgcmF0aGVyIHRoYW4gYCFlbC5zZWxlY3Rpb25TdGFydGAsIGJlY2F1c2UgdGhlIHR3b1xuICAgIC8vIGluZGljYXRlIGRpZmZlcmVudCB0aGluZ3MuIElmIHRoZSB2YWx1ZSBpcyAwLCBpdCBtZWFucyB0aGF0IHRoZSBjYXJldCBpcyBhdCB0aGUgc3RhcnRcbiAgICAvLyBvZiB0aGUgaW5wdXQsIHdoZXJlYXMgYSB2YWx1ZSBvZiBgbnVsbGAgbWVhbnMgdGhhdCB0aGUgaW5wdXQgZG9lc24ndCBzdXBwb3J0XG4gICAgLy8gbWFuaXB1bGF0aW5nIHRoZSBzZWxlY3Rpb24gcmFuZ2UuIElucHV0cyB0aGF0IGRvbid0IHN1cHBvcnQgc2V0dGluZyB0aGUgc2VsZWN0aW9uIHJhbmdlXG4gICAgLy8gd2lsbCB0aHJvdyBhbiBlcnJvciBzbyB3ZSB3YW50IHRvIGF2b2lkIGNhbGxpbmcgYHNldFNlbGVjdGlvblJhbmdlYCBvbiB0aGVtLiBTZWU6XG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5wdXQuaHRtbCNkby1ub3QtYXBwbHlcbiAgICBpZiAoIWVsLnZhbHVlICYmIGVsLnNlbGVjdGlvblN0YXJ0ID09PSAwICYmIGVsLnNlbGVjdGlvbkVuZCA9PT0gMCkge1xuICAgICAgLy8gTm90ZTogSnVzdCBzZXR0aW5nIGAwLCAwYCBkb2Vzbid0IGZpeCB0aGUgaXNzdWUuIFNldHRpbmdcbiAgICAgIC8vIGAxLCAxYCBmaXhlcyBpdCBmb3IgdGhlIGZpcnN0IHRpbWUgdGhhdCB5b3UgdHlwZSB0ZXh0IGFuZFxuICAgICAgLy8gdGhlbiBob2xkIGRlbGV0ZS4gVG9nZ2xpbmcgdG8gYDEsIDFgIGFuZCB0aGVuIGJhY2sgdG9cbiAgICAgIC8vIGAwLCAwYCBzZWVtcyB0byBjb21wbGV0ZWx5IGZpeCBpdC5cbiAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKDEsIDEpO1xuICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3dlYmtpdEJsaW5rV2hlZWxMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcbiAgICAvLyBUaGlzIGlzIGEgbm9vcCBmdW5jdGlvbiBhbmQgaXMgdXNlZCB0byBlbmFibGUgbW91c2Ugd2hlZWwgaW5wdXRcbiAgICAvLyBvbiBudW1iZXIgaW5wdXRzXG4gICAgLy8gb24gYmxpbmsgYW5kIHdlYmtpdCBicm93c2Vycy5cbiAgfTtcblxuICAvKipcbiAgICogSW4gYmxpbmsgYW5kIHdlYmtpdCBicm93c2VycyBhIGZvY3VzZWQgbnVtYmVyIGlucHV0IGRvZXMgbm90IGluY3JlbWVudCBvciBkZWNyZW1lbnQgaXRzIHZhbHVlXG4gICAqIG9uIG1vdXNlIHdoZWVsIGludGVyYWN0aW9uIHVubGVzcyBhIHdoZWVsIGV2ZW50IGxpc3RlbmVyIGlzIGF0dGFjaGVkIHRvIGl0IG9yIG9uZSBvZiBpdHMgYW5jZXN0b3JzIG9yIGEgcGFzc2l2ZSB3aGVlbCBsaXN0ZW5lciBpcyBhdHRhY2hlZCBzb21ld2hlcmUgaW4gdGhlIERPTS5cbiAgICogRm9yIGV4YW1wbGU6IEhpdHRpbmcgYSB0b29sdGlwIG9uY2UgZW5hYmxlcyB0aGUgbW91c2Ugd2hlZWwgaW5wdXQgZm9yIGFsbCBudW1iZXIgaW5wdXRzIGFzIGxvbmcgYXMgaXQgZXhpc3RzLlxuICAgKiBJbiBvcmRlciB0byBnZXQgcmVsaWFibGUgYW5kIGludHVpdGl2ZSBiZWhhdmlvciB3ZSBhcHBseSBhIHdoZWVsIGV2ZW50IG9uIG91ciBvd25cbiAgICogdGh1cyBtYWtpbmcgc3VyZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBieSBtb3VzZSB3aGVlbCB3b3JrcyBldmVyeSB0aW1lLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9lbnN1cmVXaGVlbERlZmF1bHRCZWhhdmlvcigpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fd2Via2l0QmxpbmtXaGVlbExpc3RlbmVyQXR0YWNoZWQgJiZcbiAgICAgIHRoaXMuX3R5cGUgPT09ICdudW1iZXInICYmXG4gICAgICAodGhpcy5fcGxhdGZvcm0uQkxJTksgfHwgdGhpcy5fcGxhdGZvcm0uV0VCS0lUKVxuICAgICkge1xuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5fd2Via2l0QmxpbmtXaGVlbExpc3RlbmVyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fd2Via2l0QmxpbmtXaGVlbExpc3RlbmVyQXR0YWNoZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl93ZWJraXRCbGlua1doZWVsTGlzdGVuZXJBdHRhY2hlZCAmJiB0aGlzLl90eXBlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5fd2Via2l0QmxpbmtXaGVlbExpc3RlbmVyKTtcbiAgICAgIHRoaXMuX3dlYmtpdEJsaW5rV2hlZWxMaXN0ZW5lckF0dGFjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRfcHVibGljX2luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL2lucHV0L2lucHV0X3B1YmxpY19pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,26 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { TextFieldModule } from '@angular/cdk/text-field';
9
- import { NgModule } from '@angular/core';
10
- import { MatCommonModule } from '@angular/material/core';
11
- import { MatFormFieldModule } from '@angular/material/form-field';
12
- import { MatInput } from './input';
13
- import * as i0 from "@angular/core";
14
- export class MatInputModule {
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatInputModule, imports: [MatCommonModule, MatFormFieldModule, MatInput], exports: [MatInput, MatFormFieldModule, TextFieldModule, MatCommonModule] }); }
17
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatInputModule, imports: [MatCommonModule, MatFormFieldModule, MatFormFieldModule, TextFieldModule, MatCommonModule] }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatInputModule, decorators: [{
20
- type: NgModule,
21
- args: [{
22
- imports: [MatCommonModule, MatFormFieldModule, MatInput],
23
- exports: [MatInput, MatFormFieldModule, TextFieldModule, MatCommonModule],
24
- }]
25
- }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL2lucHV0L21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFNBQVMsQ0FBQzs7QUFNakMsTUFBTSxPQUFPLGNBQWM7cUhBQWQsY0FBYztzSEFBZCxjQUFjLFlBSGYsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsYUFDN0MsUUFBUSxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxlQUFlO3NIQUU3RCxjQUFjLFlBSGYsZUFBZSxFQUFFLGtCQUFrQixFQUN6QixrQkFBa0IsRUFBRSxlQUFlLEVBQUUsZUFBZTs7a0dBRTdELGNBQWM7a0JBSjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQztvQkFDeEQsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUM7aUJBQzFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7VGV4dEZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gJy4vaW5wdXQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbTWF0Q29tbW9uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0XSxcbiAgZXhwb3J0czogW01hdElucHV0LCBNYXRGb3JtRmllbGRNb2R1bGUsIFRleHRGaWVsZE1vZHVsZSwgTWF0Q29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0SW5wdXRNb2R1bGUge31cbiJdfQ==
@@ -1,14 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export { MatInput } from './input';
9
- export { MatInputModule } from './module';
10
- export * from './input-value-accessor';
11
- export * from './input-errors';
12
- // Re-provide these for convenience since they used to be provided implicitly.
13
- export { MatFormField, MatLabel, MatHint, MatError, MatPrefix, MatSuffix, } from '@angular/material/form-field';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9pbnB1dC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsOEVBQThFO0FBQzlFLE9BQU8sRUFDTCxZQUFZLEVBQ1osUUFBUSxFQUNSLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCB7TWF0SW5wdXR9IGZyb20gJy4vaW5wdXQnO1xuZXhwb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnLi9tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC12YWx1ZS1hY2Nlc3Nvcic7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LWVycm9ycyc7XG5cbi8vIFJlLXByb3ZpZGUgdGhlc2UgZm9yIGNvbnZlbmllbmNlIHNpbmNlIHRoZXkgdXNlZCB0byBiZSBwcm92aWRlZCBpbXBsaWNpdGx5LlxuZXhwb3J0IHtcbiAgTWF0Rm9ybUZpZWxkLFxuICBNYXRMYWJlbCxcbiAgTWF0SGludCxcbiAgTWF0RXJyb3IsXG4gIE1hdFByZWZpeCxcbiAgTWF0U3VmZml4LFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbiJdfQ==
@@ -1,9 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export * from './public-api';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvaW5wdXQvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19