@angular/material 15.0.0-rc.0 → 15.0.0-rc.1

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 (401) hide show
  1. package/chips/_chips-theme.scss +11 -19
  2. package/esm2020/autocomplete/autocomplete-origin.mjs +6 -6
  3. package/esm2020/autocomplete/autocomplete-trigger.mjs +6 -6
  4. package/esm2020/autocomplete/autocomplete.mjs +6 -6
  5. package/esm2020/autocomplete/module.mjs +4 -4
  6. package/esm2020/badge/badge-module.mjs +4 -4
  7. package/esm2020/badge/badge.mjs +3 -3
  8. package/esm2020/bottom-sheet/bottom-sheet-container.mjs +3 -3
  9. package/esm2020/bottom-sheet/bottom-sheet-module.mjs +4 -4
  10. package/esm2020/bottom-sheet/bottom-sheet.mjs +3 -3
  11. package/esm2020/button/button-base.mjs +6 -6
  12. package/esm2020/button/button.mjs +8 -8
  13. package/esm2020/button/fab.mjs +16 -16
  14. package/esm2020/button/icon-button.mjs +6 -6
  15. package/esm2020/button/module.mjs +4 -4
  16. package/esm2020/button-toggle/button-toggle-module.mjs +4 -4
  17. package/esm2020/button-toggle/button-toggle.mjs +6 -6
  18. package/esm2020/card/card.mjs +42 -42
  19. package/esm2020/card/module.mjs +4 -4
  20. package/esm2020/checkbox/checkbox-required-validator.mjs +3 -3
  21. package/esm2020/checkbox/checkbox.mjs +6 -6
  22. package/esm2020/checkbox/module.mjs +8 -8
  23. package/esm2020/chips/chip-action.mjs +3 -3
  24. package/esm2020/chips/chip-edit-input.mjs +3 -3
  25. package/esm2020/chips/chip-grid.mjs +3 -3
  26. package/esm2020/chips/chip-icons.mjs +9 -9
  27. package/esm2020/chips/chip-input.mjs +3 -3
  28. package/esm2020/chips/chip-listbox.mjs +3 -3
  29. package/esm2020/chips/chip-option.mjs +5 -5
  30. package/esm2020/chips/chip-row.mjs +5 -5
  31. package/esm2020/chips/chip-set.mjs +3 -3
  32. package/esm2020/chips/chip.mjs +4 -4
  33. package/esm2020/chips/module.mjs +4 -4
  34. package/esm2020/core/common-behaviors/common-module.mjs +4 -4
  35. package/esm2020/core/datetime/index.mjs +8 -8
  36. package/esm2020/core/datetime/native-date-adapter.mjs +3 -3
  37. package/esm2020/core/error/error-options.mjs +6 -6
  38. package/esm2020/core/line/line.mjs +7 -7
  39. package/esm2020/core/option/index.mjs +4 -4
  40. package/esm2020/core/option/optgroup.mjs +6 -6
  41. package/esm2020/core/option/option.mjs +6 -6
  42. package/esm2020/core/ripple/index.mjs +4 -4
  43. package/esm2020/core/ripple/ripple.mjs +3 -3
  44. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +4 -4
  45. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  46. package/esm2020/core/version.mjs +1 -1
  47. package/esm2020/datepicker/calendar-body.mjs +3 -3
  48. package/esm2020/datepicker/calendar.mjs +6 -6
  49. package/esm2020/datepicker/date-range-input-parts.mjs +12 -12
  50. package/esm2020/datepicker/date-range-input.mjs +3 -3
  51. package/esm2020/datepicker/date-range-picker.mjs +3 -3
  52. package/esm2020/datepicker/date-range-selection-strategy.mjs +3 -3
  53. package/esm2020/datepicker/date-selection-model.mjs +9 -9
  54. package/esm2020/datepicker/datepicker-actions.mjs +9 -9
  55. package/esm2020/datepicker/datepicker-base.mjs +6 -6
  56. package/esm2020/datepicker/datepicker-input-base.mjs +3 -3
  57. package/esm2020/datepicker/datepicker-input.mjs +3 -3
  58. package/esm2020/datepicker/datepicker-intl.mjs +3 -3
  59. package/esm2020/datepicker/datepicker-module.mjs +4 -4
  60. package/esm2020/datepicker/datepicker-toggle.mjs +6 -6
  61. package/esm2020/datepicker/datepicker.mjs +3 -3
  62. package/esm2020/datepicker/month-view.mjs +3 -3
  63. package/esm2020/datepicker/multi-year-view.mjs +3 -3
  64. package/esm2020/datepicker/year-view.mjs +3 -3
  65. package/esm2020/dialog/dialog-container.mjs +7 -7
  66. package/esm2020/dialog/dialog-content-directives.mjs +12 -12
  67. package/esm2020/dialog/dialog.mjs +6 -6
  68. package/esm2020/dialog/module.mjs +4 -4
  69. package/esm2020/divider/divider-module.mjs +4 -4
  70. package/esm2020/divider/divider.mjs +3 -3
  71. package/esm2020/expansion/accordion.mjs +3 -3
  72. package/esm2020/expansion/expansion-module.mjs +4 -4
  73. package/esm2020/expansion/expansion-panel-content.mjs +3 -3
  74. package/esm2020/expansion/expansion-panel-header.mjs +9 -9
  75. package/esm2020/expansion/expansion-panel.mjs +6 -6
  76. package/esm2020/form-field/directives/error.mjs +3 -3
  77. package/esm2020/form-field/directives/floating-label.mjs +3 -3
  78. package/esm2020/form-field/directives/hint.mjs +3 -3
  79. package/esm2020/form-field/directives/label.mjs +3 -3
  80. package/esm2020/form-field/directives/line-ripple.mjs +3 -3
  81. package/esm2020/form-field/directives/notched-outline.mjs +3 -3
  82. package/esm2020/form-field/directives/prefix.mjs +3 -3
  83. package/esm2020/form-field/directives/suffix.mjs +3 -3
  84. package/esm2020/form-field/form-field-control.mjs +3 -3
  85. package/esm2020/form-field/form-field.mjs +3 -3
  86. package/esm2020/form-field/module.mjs +4 -4
  87. package/esm2020/grid-list/grid-list-module.mjs +4 -4
  88. package/esm2020/grid-list/grid-list.mjs +3 -3
  89. package/esm2020/grid-list/grid-tile.mjs +15 -15
  90. package/esm2020/icon/icon-module.mjs +4 -4
  91. package/esm2020/icon/icon-registry.mjs +3 -3
  92. package/esm2020/icon/icon.mjs +3 -3
  93. package/esm2020/icon/testing/fake-icon-registry.mjs +7 -7
  94. package/esm2020/input/input.mjs +3 -3
  95. package/esm2020/input/module.mjs +4 -4
  96. package/esm2020/legacy-autocomplete/autocomplete-module.mjs +4 -4
  97. package/esm2020/legacy-autocomplete/autocomplete-origin.mjs +3 -3
  98. package/esm2020/legacy-autocomplete/autocomplete-trigger.mjs +3 -3
  99. package/esm2020/legacy-autocomplete/autocomplete.mjs +3 -3
  100. package/esm2020/legacy-button/button-module.mjs +4 -4
  101. package/esm2020/legacy-button/button.mjs +6 -6
  102. package/esm2020/legacy-card/card-module.mjs +4 -4
  103. package/esm2020/legacy-card/card.mjs +42 -42
  104. package/esm2020/legacy-checkbox/checkbox-module.mjs +4 -4
  105. package/esm2020/legacy-checkbox/checkbox.mjs +3 -3
  106. package/esm2020/legacy-chips/chip-input.mjs +3 -3
  107. package/esm2020/legacy-chips/chip-list.mjs +3 -3
  108. package/esm2020/legacy-chips/chip.mjs +12 -12
  109. package/esm2020/legacy-chips/chips-module.mjs +4 -4
  110. package/esm2020/legacy-core/option/index.mjs +4 -4
  111. package/esm2020/legacy-core/option/optgroup.mjs +3 -3
  112. package/esm2020/legacy-core/option/option.mjs +3 -3
  113. package/esm2020/legacy-dialog/dialog-container.mjs +3 -3
  114. package/esm2020/legacy-dialog/dialog-content-directives.mjs +12 -12
  115. package/esm2020/legacy-dialog/dialog-module.mjs +4 -4
  116. package/esm2020/legacy-dialog/dialog.mjs +3 -3
  117. package/esm2020/legacy-form-field/error.mjs +3 -3
  118. package/esm2020/legacy-form-field/form-field-module.mjs +4 -4
  119. package/esm2020/legacy-form-field/form-field.mjs +3 -3
  120. package/esm2020/legacy-form-field/hint.mjs +3 -3
  121. package/esm2020/legacy-form-field/label.mjs +3 -3
  122. package/esm2020/legacy-form-field/placeholder.mjs +3 -3
  123. package/esm2020/legacy-form-field/prefix.mjs +3 -3
  124. package/esm2020/legacy-form-field/suffix.mjs +3 -3
  125. package/esm2020/legacy-input/input-module.mjs +4 -4
  126. package/esm2020/legacy-input/input.mjs +3 -3
  127. package/esm2020/legacy-list/list-module.mjs +4 -4
  128. package/esm2020/legacy-list/list.mjs +18 -18
  129. package/esm2020/legacy-list/selection-list.mjs +6 -6
  130. package/esm2020/legacy-menu/menu-content.mjs +3 -3
  131. package/esm2020/legacy-menu/menu-item.mjs +3 -3
  132. package/esm2020/legacy-menu/menu-module.mjs +4 -4
  133. package/esm2020/legacy-menu/menu-trigger.mjs +3 -3
  134. package/esm2020/legacy-menu/menu.mjs +3 -3
  135. package/esm2020/legacy-paginator/paginator-module.mjs +4 -4
  136. package/esm2020/legacy-paginator/paginator.mjs +3 -3
  137. package/esm2020/legacy-progress-bar/progress-bar-module.mjs +4 -4
  138. package/esm2020/legacy-progress-bar/progress-bar.mjs +3 -3
  139. package/esm2020/legacy-progress-spinner/progress-spinner-module.mjs +4 -4
  140. package/esm2020/legacy-progress-spinner/progress-spinner.mjs +3 -3
  141. package/esm2020/legacy-radio/radio-module.mjs +4 -4
  142. package/esm2020/legacy-radio/radio.mjs +6 -6
  143. package/esm2020/legacy-select/select-module.mjs +4 -4
  144. package/esm2020/legacy-select/select.mjs +6 -6
  145. package/esm2020/legacy-slide-toggle/slide-toggle-module.mjs +4 -4
  146. package/esm2020/legacy-slide-toggle/slide-toggle.mjs +3 -3
  147. package/esm2020/legacy-slider/slider-module.mjs +4 -4
  148. package/esm2020/legacy-slider/slider.mjs +3 -3
  149. package/esm2020/legacy-snack-bar/simple-snack-bar.mjs +3 -3
  150. package/esm2020/legacy-snack-bar/snack-bar-container.mjs +3 -3
  151. package/esm2020/legacy-snack-bar/snack-bar-module.mjs +4 -4
  152. package/esm2020/legacy-snack-bar/snack-bar.mjs +3 -3
  153. package/esm2020/legacy-table/cell.mjs +21 -21
  154. package/esm2020/legacy-table/row.mjs +21 -21
  155. package/esm2020/legacy-table/table-module.mjs +4 -4
  156. package/esm2020/legacy-table/table.mjs +6 -6
  157. package/esm2020/legacy-table/text-column.mjs +3 -3
  158. package/esm2020/legacy-tabs/ink-bar.mjs +3 -3
  159. package/esm2020/legacy-tabs/tab-body.mjs +6 -6
  160. package/esm2020/legacy-tabs/tab-content.mjs +3 -3
  161. package/esm2020/legacy-tabs/tab-group.mjs +3 -3
  162. package/esm2020/legacy-tabs/tab-header.mjs +3 -3
  163. package/esm2020/legacy-tabs/tab-label-wrapper.mjs +3 -3
  164. package/esm2020/legacy-tabs/tab-label.mjs +3 -3
  165. package/esm2020/legacy-tabs/tab-nav-bar/tab-nav-bar.mjs +9 -9
  166. package/esm2020/legacy-tabs/tab.mjs +3 -3
  167. package/esm2020/legacy-tabs/tabs-module.mjs +4 -4
  168. package/esm2020/legacy-tooltip/tooltip-module.mjs +4 -4
  169. package/esm2020/legacy-tooltip/tooltip.mjs +6 -6
  170. package/esm2020/list/action-list.mjs +3 -3
  171. package/esm2020/list/list-base.mjs +6 -6
  172. package/esm2020/list/list-item-sections.mjs +18 -18
  173. package/esm2020/list/list-module.mjs +4 -4
  174. package/esm2020/list/list-option.mjs +3 -3
  175. package/esm2020/list/list.mjs +6 -6
  176. package/esm2020/list/nav-list.mjs +3 -3
  177. package/esm2020/list/selection-list.mjs +16 -6
  178. package/esm2020/list/subheader.mjs +3 -3
  179. package/esm2020/menu/menu-content.mjs +6 -6
  180. package/esm2020/menu/menu-item.mjs +3 -3
  181. package/esm2020/menu/menu-trigger.mjs +6 -6
  182. package/esm2020/menu/menu.mjs +6 -6
  183. package/esm2020/menu/module.mjs +4 -4
  184. package/esm2020/paginator/module.mjs +4 -4
  185. package/esm2020/paginator/paginator-intl.mjs +3 -3
  186. package/esm2020/paginator/paginator.mjs +6 -6
  187. package/esm2020/progress-bar/module.mjs +4 -4
  188. package/esm2020/progress-bar/progress-bar.mjs +3 -3
  189. package/esm2020/progress-spinner/module.mjs +4 -4
  190. package/esm2020/progress-spinner/progress-spinner.mjs +3 -3
  191. package/esm2020/radio/module.mjs +4 -4
  192. package/esm2020/radio/radio.mjs +12 -12
  193. package/esm2020/select/module.mjs +4 -4
  194. package/esm2020/select/select.mjs +9 -9
  195. package/esm2020/sidenav/drawer.mjs +9 -9
  196. package/esm2020/sidenav/sidenav-module.mjs +4 -4
  197. package/esm2020/sidenav/sidenav.mjs +9 -9
  198. package/esm2020/slide-toggle/module.mjs +8 -8
  199. package/esm2020/slide-toggle/slide-toggle-required-validator.mjs +3 -3
  200. package/esm2020/slide-toggle/slide-toggle.mjs +7 -7
  201. package/esm2020/slider/module.mjs +10 -8
  202. package/esm2020/slider/public-api.mjs +4 -2
  203. package/esm2020/slider/slider-input.mjs +611 -0
  204. package/esm2020/slider/slider-interface.mjs +34 -0
  205. package/esm2020/slider/slider-thumb.mjs +229 -0
  206. package/esm2020/slider/slider.mjs +523 -925
  207. package/esm2020/snack-bar/module.mjs +4 -4
  208. package/esm2020/snack-bar/simple-snack-bar.mjs +3 -3
  209. package/esm2020/snack-bar/snack-bar-container.mjs +8 -8
  210. package/esm2020/snack-bar/snack-bar-content.mjs +9 -9
  211. package/esm2020/snack-bar/snack-bar.mjs +6 -6
  212. package/esm2020/sort/sort-header-intl.mjs +3 -3
  213. package/esm2020/sort/sort-header.mjs +3 -3
  214. package/esm2020/sort/sort-module.mjs +4 -4
  215. package/esm2020/sort/sort.mjs +3 -3
  216. package/esm2020/stepper/step-content.mjs +3 -3
  217. package/esm2020/stepper/step-header.mjs +3 -3
  218. package/esm2020/stepper/step-label.mjs +3 -3
  219. package/esm2020/stepper/stepper-button.mjs +6 -6
  220. package/esm2020/stepper/stepper-icon.mjs +3 -3
  221. package/esm2020/stepper/stepper-intl.mjs +3 -3
  222. package/esm2020/stepper/stepper-module.mjs +4 -4
  223. package/esm2020/stepper/stepper.mjs +6 -6
  224. package/esm2020/table/cell.mjs +21 -21
  225. package/esm2020/table/module.mjs +4 -4
  226. package/esm2020/table/row.mjs +21 -21
  227. package/esm2020/table/table.mjs +8 -8
  228. package/esm2020/table/text-column.mjs +3 -3
  229. package/esm2020/tabs/module.mjs +4 -4
  230. package/esm2020/tabs/paginated-tab-header.mjs +3 -3
  231. package/esm2020/tabs/tab-body.mjs +9 -9
  232. package/esm2020/tabs/tab-content.mjs +3 -3
  233. package/esm2020/tabs/tab-group.mjs +6 -6
  234. package/esm2020/tabs/tab-header.mjs +6 -6
  235. package/esm2020/tabs/tab-label-wrapper.mjs +6 -6
  236. package/esm2020/tabs/tab-label.mjs +3 -3
  237. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +15 -15
  238. package/esm2020/tabs/tab.mjs +6 -6
  239. package/esm2020/toolbar/toolbar-module.mjs +4 -4
  240. package/esm2020/toolbar/toolbar.mjs +6 -6
  241. package/esm2020/tooltip/module.mjs +4 -4
  242. package/esm2020/tooltip/tooltip.mjs +12 -12
  243. package/esm2020/tree/node.mjs +9 -9
  244. package/esm2020/tree/outlet.mjs +3 -3
  245. package/esm2020/tree/padding.mjs +3 -3
  246. package/esm2020/tree/toggle.mjs +3 -3
  247. package/esm2020/tree/tree-module.mjs +4 -4
  248. package/esm2020/tree/tree.mjs +3 -3
  249. package/fesm2015/autocomplete.mjs +22 -22
  250. package/fesm2015/badge.mjs +7 -7
  251. package/fesm2015/bottom-sheet.mjs +10 -10
  252. package/fesm2015/button-toggle.mjs +10 -10
  253. package/fesm2015/button.mjs +40 -40
  254. package/fesm2015/button.mjs.map +1 -1
  255. package/fesm2015/card.mjs +46 -46
  256. package/fesm2015/checkbox.mjs +17 -17
  257. package/fesm2015/chips.mjs +45 -45
  258. package/fesm2015/chips.mjs.map +1 -1
  259. package/fesm2015/core.mjs +59 -59
  260. package/fesm2015/core.mjs.map +1 -1
  261. package/fesm2015/datepicker.mjs +84 -84
  262. package/fesm2015/datepicker.mjs.map +1 -1
  263. package/fesm2015/dialog.mjs +29 -29
  264. package/fesm2015/dialog.mjs.map +1 -1
  265. package/fesm2015/divider.mjs +7 -7
  266. package/fesm2015/expansion.mjs +25 -25
  267. package/fesm2015/form-field.mjs +34 -34
  268. package/fesm2015/grid-list.mjs +22 -22
  269. package/fesm2015/icon/testing.mjs +7 -7
  270. package/fesm2015/icon.mjs +10 -10
  271. package/fesm2015/input.mjs +7 -7
  272. package/fesm2015/legacy-autocomplete.mjs +13 -13
  273. package/fesm2015/legacy-button.mjs +10 -10
  274. package/fesm2015/legacy-card.mjs +46 -46
  275. package/fesm2015/legacy-checkbox.mjs +7 -7
  276. package/fesm2015/legacy-chips.mjs +22 -22
  277. package/fesm2015/legacy-core.mjs +10 -10
  278. package/fesm2015/legacy-dialog.mjs +22 -22
  279. package/fesm2015/legacy-form-field.mjs +25 -25
  280. package/fesm2015/legacy-input.mjs +7 -7
  281. package/fesm2015/legacy-list.mjs +28 -28
  282. package/fesm2015/legacy-menu.mjs +16 -16
  283. package/fesm2015/legacy-paginator.mjs +7 -7
  284. package/fesm2015/legacy-progress-bar.mjs +7 -7
  285. package/fesm2015/legacy-progress-spinner.mjs +7 -7
  286. package/fesm2015/legacy-radio.mjs +10 -10
  287. package/fesm2015/legacy-select.mjs +10 -10
  288. package/fesm2015/legacy-slide-toggle.mjs +7 -7
  289. package/fesm2015/legacy-slider.mjs +7 -7
  290. package/fesm2015/legacy-snack-bar.mjs +13 -13
  291. package/fesm2015/legacy-table.mjs +55 -55
  292. package/fesm2015/legacy-tabs.mjs +40 -40
  293. package/fesm2015/legacy-tooltip.mjs +10 -10
  294. package/fesm2015/list.mjs +61 -51
  295. package/fesm2015/list.mjs.map +1 -1
  296. package/fesm2015/menu.mjs +25 -25
  297. package/fesm2015/paginator.mjs +13 -13
  298. package/fesm2015/progress-bar.mjs +7 -7
  299. package/fesm2015/progress-spinner.mjs +7 -7
  300. package/fesm2015/radio.mjs +16 -16
  301. package/fesm2015/select.mjs +13 -13
  302. package/fesm2015/sidenav.mjs +22 -22
  303. package/fesm2015/slide-toggle.mjs +18 -18
  304. package/fesm2015/slide-toggle.mjs.map +1 -1
  305. package/fesm2015/slider.mjs +1300 -902
  306. package/fesm2015/slider.mjs.map +1 -1
  307. package/fesm2015/snack-bar.mjs +29 -29
  308. package/fesm2015/snack-bar.mjs.map +1 -1
  309. package/fesm2015/sort.mjs +13 -13
  310. package/fesm2015/stepper.mjs +31 -31
  311. package/fesm2015/table.mjs +57 -57
  312. package/fesm2015/table.mjs.map +1 -1
  313. package/fesm2015/tabs.mjs +61 -61
  314. package/fesm2015/toolbar.mjs +10 -10
  315. package/fesm2015/tooltip.mjs +16 -16
  316. package/fesm2015/tree.mjs +25 -25
  317. package/fesm2020/autocomplete.mjs +22 -22
  318. package/fesm2020/badge.mjs +7 -7
  319. package/fesm2020/bottom-sheet.mjs +10 -10
  320. package/fesm2020/button-toggle.mjs +10 -10
  321. package/fesm2020/button.mjs +40 -40
  322. package/fesm2020/button.mjs.map +1 -1
  323. package/fesm2020/card.mjs +46 -46
  324. package/fesm2020/checkbox.mjs +17 -17
  325. package/fesm2020/chips.mjs +45 -45
  326. package/fesm2020/chips.mjs.map +1 -1
  327. package/fesm2020/core.mjs +59 -59
  328. package/fesm2020/core.mjs.map +1 -1
  329. package/fesm2020/datepicker.mjs +84 -84
  330. package/fesm2020/datepicker.mjs.map +1 -1
  331. package/fesm2020/dialog.mjs +29 -29
  332. package/fesm2020/dialog.mjs.map +1 -1
  333. package/fesm2020/divider.mjs +7 -7
  334. package/fesm2020/expansion.mjs +25 -25
  335. package/fesm2020/form-field.mjs +34 -34
  336. package/fesm2020/grid-list.mjs +22 -22
  337. package/fesm2020/icon/testing.mjs +7 -7
  338. package/fesm2020/icon.mjs +10 -10
  339. package/fesm2020/input.mjs +7 -7
  340. package/fesm2020/legacy-autocomplete.mjs +13 -13
  341. package/fesm2020/legacy-button.mjs +10 -10
  342. package/fesm2020/legacy-card.mjs +46 -46
  343. package/fesm2020/legacy-checkbox.mjs +7 -7
  344. package/fesm2020/legacy-chips.mjs +22 -22
  345. package/fesm2020/legacy-core.mjs +10 -10
  346. package/fesm2020/legacy-dialog.mjs +22 -22
  347. package/fesm2020/legacy-form-field.mjs +25 -25
  348. package/fesm2020/legacy-input.mjs +7 -7
  349. package/fesm2020/legacy-list.mjs +28 -28
  350. package/fesm2020/legacy-menu.mjs +16 -16
  351. package/fesm2020/legacy-paginator.mjs +7 -7
  352. package/fesm2020/legacy-progress-bar.mjs +7 -7
  353. package/fesm2020/legacy-progress-spinner.mjs +7 -7
  354. package/fesm2020/legacy-radio.mjs +10 -10
  355. package/fesm2020/legacy-select.mjs +10 -10
  356. package/fesm2020/legacy-slide-toggle.mjs +7 -7
  357. package/fesm2020/legacy-slider.mjs +7 -7
  358. package/fesm2020/legacy-snack-bar.mjs +13 -13
  359. package/fesm2020/legacy-table.mjs +55 -55
  360. package/fesm2020/legacy-tabs.mjs +40 -40
  361. package/fesm2020/legacy-tooltip.mjs +10 -10
  362. package/fesm2020/list.mjs +61 -51
  363. package/fesm2020/list.mjs.map +1 -1
  364. package/fesm2020/menu.mjs +25 -25
  365. package/fesm2020/paginator.mjs +13 -13
  366. package/fesm2020/progress-bar.mjs +7 -7
  367. package/fesm2020/progress-spinner.mjs +7 -7
  368. package/fesm2020/radio.mjs +16 -16
  369. package/fesm2020/select.mjs +13 -13
  370. package/fesm2020/sidenav.mjs +22 -22
  371. package/fesm2020/slide-toggle.mjs +18 -18
  372. package/fesm2020/slide-toggle.mjs.map +1 -1
  373. package/fesm2020/slider.mjs +1289 -882
  374. package/fesm2020/slider.mjs.map +1 -1
  375. package/fesm2020/snack-bar.mjs +29 -29
  376. package/fesm2020/snack-bar.mjs.map +1 -1
  377. package/fesm2020/sort.mjs +13 -13
  378. package/fesm2020/stepper.mjs +31 -31
  379. package/fesm2020/table.mjs +57 -57
  380. package/fesm2020/table.mjs.map +1 -1
  381. package/fesm2020/tabs.mjs +61 -61
  382. package/fesm2020/toolbar.mjs +10 -10
  383. package/fesm2020/tooltip.mjs +16 -16
  384. package/fesm2020/tree.mjs +25 -25
  385. package/legacy-prebuilt-themes/legacy-deeppurple-amber.css +1 -1
  386. package/legacy-prebuilt-themes/legacy-indigo-pink.css +1 -1
  387. package/legacy-prebuilt-themes/legacy-pink-bluegrey.css +1 -1
  388. package/legacy-prebuilt-themes/legacy-purple-green.css +1 -1
  389. package/list/index.d.ts +4 -1
  390. package/package.json +49 -49
  391. package/prebuilt-themes/deeppurple-amber.css +1 -1
  392. package/prebuilt-themes/indigo-pink.css +1 -1
  393. package/prebuilt-themes/pink-bluegrey.css +1 -1
  394. package/prebuilt-themes/purple-green.css +1 -1
  395. package/schematics/ng-add/index.js +1 -1
  396. package/schematics/ng-add/index.mjs +1 -1
  397. package/schematics/ng-generate/mdc-migration/index_bundled.js +94 -10
  398. package/schematics/ng-generate/mdc-migration/index_bundled.js.map +3 -3
  399. package/schematics/ng-generate/mdc-migration/mdc_migration_bundle_metadata.json +1 -1
  400. package/slider/index.d.ts +443 -235
  401. package/esm2020/slider/global-change-and-input-listener.mjs +0 -59
@@ -0,0 +1,34 @@
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 { InjectionToken } from '@angular/core';
9
+ /**
10
+ * Injection token that can be used for a `MatSlider` to provide itself as a
11
+ * parent to the `MatSliderThumb` and `MatSliderRangeThumb`.
12
+ * Used primarily to avoid circular imports.
13
+ * @docs-private
14
+ */
15
+ export const MAT_SLIDER = new InjectionToken('_MatSlider');
16
+ /**
17
+ * Injection token that can be used to query for a `MatSliderThumb`.
18
+ * Used primarily to avoid circular imports.
19
+ * @docs-private
20
+ */
21
+ export const MAT_SLIDER_THUMB = new InjectionToken('_MatSliderThumb');
22
+ /**
23
+ * Injection token that can be used to query for a `MatSliderRangeThumb`.
24
+ * Used primarily to avoid circular imports.
25
+ * @docs-private
26
+ */
27
+ export const MAT_SLIDER_RANGE_THUMB = new InjectionToken('_MatSliderRangeThumb');
28
+ /**
29
+ * Injection token that can be used to query for a `MatSliderVisualThumb`.
30
+ * Used primarily to avoid circular imports.
31
+ * @docs-private
32
+ */
33
+ export const MAT_SLIDER_VISUAL_THUMB = new InjectionToken('_MatSliderVisualThumb');
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zbGlkZXIvc2xpZGVyLWludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBa0I3Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBSyxZQUFZLENBQUMsQ0FBQztBQUUvRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQUssaUJBQWlCLENBQUMsQ0FBQztBQUUxRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQUssc0JBQXNCLENBQUMsQ0FBQztBQUVyRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQUssdUJBQXVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0UmlwcGxlLCBSaXBwbGVHbG9iYWxPcHRpb25zfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuLyoqXG4gKiBUaHVtYiB0eXBlczogcmFuZ2Ugc2xpZGVyIGhhcyB0d28gdGh1bWJzIChTVEFSVCwgRU5EKSB3aGVyZWFzIHNpbmdsZSBwb2ludFxuICogc2xpZGVyIG9ubHkgaGFzIG9uZSB0aHVtYiAoRU5EKS5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gX01hdFRodW1iIHtcbiAgU1RBUlQgPSAxLFxuICBFTkQgPSAyLFxufVxuXG4vKiogVGljayBtYXJrIGVudW0sIGZvciBkaXNjcmV0ZSBzbGlkZXJzLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gX01hdFRpY2tNYXJrIHtcbiAgQUNUSVZFID0gMCxcbiAgSU5BQ1RJVkUgPSAxLFxufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIGZvciBhIGBNYXRTbGlkZXJgIHRvIHByb3ZpZGUgaXRzZWxmIGFzIGFcbiAqIHBhcmVudCB0byB0aGUgYE1hdFNsaWRlclRodW1iYCBhbmQgYE1hdFNsaWRlclJhbmdlVGh1bWJgLlxuICogVXNlZCBwcmltYXJpbHkgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0cy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9TTElERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48e30+KCdfTWF0U2xpZGVyJyk7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcXVlcnkgZm9yIGEgYE1hdFNsaWRlclRodW1iYC5cbiAqIFVzZWQgcHJpbWFyaWx5IHRvIGF2b2lkIGNpcmN1bGFyIGltcG9ydHMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBNQVRfU0xJREVSX1RIVU1CID0gbmV3IEluamVjdGlvblRva2VuPHt9PignX01hdFNsaWRlclRodW1iJyk7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcXVlcnkgZm9yIGEgYE1hdFNsaWRlclJhbmdlVGh1bWJgLlxuICogVXNlZCBwcmltYXJpbHkgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0cy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9TTElERVJfUkFOR0VfVEhVTUIgPSBuZXcgSW5qZWN0aW9uVG9rZW48e30+KCdfTWF0U2xpZGVyUmFuZ2VUaHVtYicpO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IGZvciBhIGBNYXRTbGlkZXJWaXN1YWxUaHVtYmAuXG4gKiBVc2VkIHByaW1hcmlseSB0byBhdm9pZCBjaXJjdWxhciBpbXBvcnRzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgTUFUX1NMSURFUl9WSVNVQUxfVEhVTUIgPSBuZXcgSW5qZWN0aW9uVG9rZW48e30+KCdfTWF0U2xpZGVyVmlzdWFsVGh1bWInKTtcblxuLyoqIFJlcHJlc2VudHMgYSBkcmFnIGV2ZW50IGVtaXR0ZWQgYnkgdGhlIE1hdFNsaWRlciBjb21wb25lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdFNsaWRlckRyYWdFdmVudCB7XG4gIC8qKiBUaGUgTWF0U2xpZGVyVGh1bWIgdGhhdCB3YXMgaW50ZXJhY3RlZCB3aXRoLiAqL1xuICBzb3VyY2U6IF9NYXRTbGlkZXJUaHVtYjtcblxuICAvKiogVGhlIE1hdFNsaWRlciB0aGF0IHdhcyBpbnRlcmFjdGVkIHdpdGguICovXG4gIHBhcmVudDogX01hdFNsaWRlcjtcblxuICAvKiogVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNsaWRlci4gKi9cbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBfTWF0U2xpZGVyIHtcbiAgLyoqIEdldHMgdGhlIHNsaWRlciB0aHVtYiBpbnB1dCBvZiB0aGUgZ2l2ZW4gdGh1bWIgcG9zaXRpb24uICovXG4gIF9nZXRJbnB1dCh0aHVtYlBvc2l0aW9uOiBfTWF0VGh1bWIpOiBfTWF0U2xpZGVyVGh1bWIgfCBfTWF0U2xpZGVyUmFuZ2VUaHVtYiB8IHVuZGVmaW5lZDtcblxuICAvKiogR2V0cyB0aGUgc2xpZGVyIHRodW1iIEhUTUwgaW5wdXQgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gdGh1bWIgcG9zaXRpb24uICovXG4gIF9nZXRUaHVtYih0aHVtYlBvc2l0aW9uOiBfTWF0VGh1bWIpOiBfTWF0U2xpZGVyVmlzdWFsVGh1bWI7XG5cbiAgLyoqIFRoZSBtaW5pbXVtIHZhbHVlIHRoYXQgdGhlIHNsaWRlciBjYW4gaGF2ZS4gKi9cbiAgbWluOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBtYXhpbXVtIHZhbHVlIHRoYXQgdGhlIHNsaWRlciBjYW4gaGF2ZS4gKi9cbiAgbWF4OiBudW1iZXI7XG5cbiAgLyoqIFRoZSBhbW91bnQgdGhhdCBzbGlkZXIgdmFsdWVzIGNhbiBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LiAqL1xuICBzdGVwOiBudW1iZXI7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNsaWRlciBpcyBkaXNhYmxlZC4gKi9cbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNsaWRlciBpcyBhIHJhbmdlIHNsaWRlci4gKi9cbiAgX2lzUmFuZ2U6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNsaWRlciBpcyBydGwuICovXG4gIF9pc1J0bDogYm9vbGVhbjtcblxuICAvKiogVGhlIHN0b3JlZCB3aWR0aCBvZiB0aGUgaG9zdCBlbGVtZW50J3MgYm91bmRpbmcgY2xpZW50IHJlY3QuICovXG4gIF9jYWNoZWRXaWR0aDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgc3RvcmVkIHdpZHRoIG9mIHRoZSBob3N0IGVsZW1lbnQncyBib3VuZGluZyBjbGllbnQgcmVjdC4gKi9cbiAgX2NhY2hlZExlZnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHBhZGRpbmcgb2YgdGhlIG5hdGl2ZSBzbGlkZXIgaW5wdXQuIFRoaXMgaXMgYWRkZWQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgcmVnaW9uIHdoZXJlIHRoZVxuICAgKiB0aHVtYiByaXBwbGUgZXh0ZW5kcyBwYXN0IHRoZSBlbmQgb2YgdGhlIHNsaWRlciB0cmFjayBjbGlja2FibGUuXG4gICAqL1xuICBfaW5wdXRQYWRkaW5nOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvZmZzZXQgcmVwcmVzZW50cyBsZWZ0IG1vc3QgdHJhbnNsYXRlWCBvZiB0aGUgc2xpZGVyIGtub2IuIEludmVyc2VseSxcbiAgICogKHNsaWRlciB3aWR0aCAtIG9mZnNldCkgPSB0aGUgcmlnaHQgbW9zdCB0cmFuc2xhdGVYIG9mIHRoZSBzbGlkZXIga25vYi5cbiAgICpcbiAgICogTm90ZTpcbiAgICogICAgKiBUaGUgbmF0aXZlIHNsaWRlciBrbm9iIGRpZmZlcnMgZnJvbSB0aGUgdmlzdWFsIHNsaWRlci4gSXQncyBrbm9iIGNhbm5vdCBzbGlkZSBwYXN0XG4gICAqICAgICAgdGhlIGVuZCBvZiB0aGUgdHJhY2sgQVQgQUxMLlxuICAgKiAgICAqIFRoZSB2aXN1YWwgc2xpZGVyIGtub2IgQ0FOIHNsaWRlIHBhc3QgdGhlIGVuZCBvZiB0aGUgdHJhY2sgc2xpZ2h0bHkuIEl0J3Mga25vYiBjYW4gc2xpZGVcbiAgICogICAgICBwYXN0IHRoZSBlbmQgb2YgdGhlIHRyYWNrIHN1Y2ggdGhhdCBpdCdzIGNlbnRlciBsaW5lcyB1cCB3aXRoIHRoZSBlbmQgb2YgdGhlIHRyYWNrLlxuICAgKi9cbiAgX2lucHV0T2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqIFRoZSByYWRpdXMgb2YgdGhlIHZpc3VhbCBzbGlkZXIncyByaXBwbGUuICovXG4gIF9yaXBwbGVSYWRpdXM6IG51bWJlcjtcblxuICAvKiogVGhlIGdsb2JhbCBjb25maWd1cmF0aW9uIGZvciBgbWF0UmlwcGxlYCBpbnN0YW5jZXMuICovXG4gIHJlYWRvbmx5IF9nbG9iYWxSaXBwbGVPcHRpb25zPzogUmlwcGxlR2xvYmFsT3B0aW9ucztcblxuICAvKiogV2hldGhlciBhbmltYXRpb25zIGhhdmUgYmVlbiBkaXNhYmxlZC4gKi9cbiAgX25vb3BBbmltYXRpb25zOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgc2xpZGVyIHNob3VsZCB1c2UgYW5pbWF0aW9ucy4gKi9cbiAgX2hhc0FuaW1hdGlvbjogYm9vbGVhbjtcblxuICAvKiogVHJpZ2dlcnMgVUkgdXBkYXRlcyB0aGF0IGFyZSBuZWVkZWQgYWZ0ZXIgYSBzbGlkZXIgaW5wdXQgdmFsdWUgaGFzIGNoYW5nZWQuICovXG4gIF9vblZhbHVlQ2hhbmdlOiAoc291cmNlOiBfTWF0U2xpZGVyVGh1bWIpID0+IHZvaWQ7XG5cbiAgLyoqIFRyaWdnZXJzIFVJIHVwZGF0ZXMgdGhhdCBhcmUgbmVlZGVkIGFmdGVyIHRoZSBzbGlkZXIgdGh1bWIgcG9zaXRpb24gaGFzIGNoYW5nZWQuICovXG4gIF9vblRyYW5zbGF0ZVhDaGFuZ2U6IChzb3VyY2U6IF9NYXRTbGlkZXJUaHVtYikgPT4gdm9pZDtcblxuICAvKiogVXBkYXRlcyB0aGUgc3RvcmVkIHNsaWRlciBkaW1lbnNpb25zIHVzaW5nIHRoZSBjdXJyZW50IGJvdW5kaW5nIGNsaWVudCByZWN0LiAqL1xuICBfdXBkYXRlRGltZW5zaW9uczogKCkgPT4gdm9pZDtcblxuICAvKiogVXNlZCB0byBzZXQgdGhlIHRyYW5zaXRpb24gZHVyYXRpb24gZm9yIHRodW1iIGFuZCB0cmFjayBhbmltYXRpb25zLiAqL1xuICBfc2V0VHJhbnNpdGlvbjogKHdpdGhBbmltYXRpb246IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgX01hdFNsaWRlclRodW1iIHtcbiAgLyoqIFRoZSBtaW5pbXVtIHZhbHVlIHRoYXQgdGhlIHNsaWRlciBjYW4gaGF2ZS4gKi9cbiAgbWluOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBtYXhpbXVtIHZhbHVlIHRoYXQgdGhlIHNsaWRlciBjYW4gaGF2ZS4gKi9cbiAgbWF4OiBudW1iZXI7XG5cbiAgLyoqIFRoZSBhbW91bnQgdGhhdCBzbGlkZXIgdmFsdWVzIGNhbiBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LiAqL1xuICBzdGVwOiBudW1iZXI7XG5cbiAgLyoqIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoaXMgc2xpZGVyIGlucHV0LiAqL1xuICB2YWx1ZTogbnVtYmVyO1xuXG4gIC8qKiBUaGUgY3VycmVudCB0cmFuc2xhdGVYIGluIHB4IG9mIHRoZSBzbGlkZXIgdmlzdWFsIHRodW1iLiAqL1xuICB0cmFuc2xhdGVYOiBudW1iZXI7XG5cbiAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgdGh1bWIgaXMgdGhlIHN0YXJ0IG9yIGVuZCB0aHVtYi4gKi9cbiAgdGh1bWJQb3NpdGlvbjogX01hdFRodW1iO1xuXG4gIC8qKiBTaW1pbGFyIHRvIHBlcmNlbnRhZ2UgYnV0IGNhbGN1YWx0ZWQgdXNpbmcgdHJhbnNsYXRlWCByZWxhdGl2ZSB0byB0aGUgdG90YWwgdHJhY2sgd2lkdGguICovXG4gIGZpbGxQZXJjZW50YWdlOiBudW1iZXI7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNsaWRlciBpcyBkaXNhYmxlZC4gKi9cbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBob3N0IG5hdGl2ZSBIVE1MIGlucHV0IGVsZW1lbnQuICovXG4gIF9ob3N0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcblxuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgY3VycmVudGx5IGZvY3VzZWQgKGVpdGhlciBieSB0YWIgb3IgYWZ0ZXIgY2xpY2tpbmcpLiAqL1xuICBfaXNGb2N1c2VkOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgYXJpYS12YWx1ZXRleHQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCdzIHZhbHVlLiAqL1xuICBfdmFsdWV0ZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIFVJIHVwZGF0ZXMgc2hvdWxkIGJlIHNraXBwZWQuXG4gICAqXG4gICAqIFRoaXMgZmxhZyBpcyB1c2VkIHRvIGF2b2lkIGZsaWNrZXJpbmdcbiAgICogd2hlbiBjb3JyZWN0aW5nIHZhbHVlcyBvbiBwb2ludGVyIHVwL2Rvd24uXG4gICAqL1xuICBfc2tpcFVJVXBkYXRlOiBib29sZWFuO1xuXG4gIC8qKiBIYW5kbGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBwcm9wZXJ0aWVzIGZvciB0aGUgc2xpZGVyIGlucHV0LiAqL1xuICBpbml0UHJvcHM6ICgpID0+IHZvaWQ7XG5cbiAgLyoqIEhhbmRsZXMgVUkgaW5pdGlhbGl6YXRpb24gY29udHJvbGxlZCBieSB0aGlzIHNsaWRlciBpbnB1dC4gKi9cbiAgaW5pdFVJOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBDYWxjdWxhdGVzIHRoZSB2aXN1YWwgdGh1bWIncyB0cmFuc2xhdGVYIGJhc2VkIG9uIHRoZSBzbGlkZXIgaW5wdXQncyBjdXJyZW50IHZhbHVlLiAqL1xuICBfY2FsY1RyYW5zbGF0ZVhCeVZhbHVlOiAoKSA9PiBudW1iZXI7XG5cbiAgLyoqIFVwZGF0ZXMgdGhlIHZpc3VhbCB0aHVtYiBiYXNlZCBvbiB0aGUgc2xpZGVyIGlucHV0J3MgY3VycmVudCB2YWx1ZS4gKi9cbiAgX3VwZGF0ZVRodW1iVUlCeVZhbHVlOiAoKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzbGlkZXIgaW5wdXQgdG8gZGlzcHJvcG9ydGlvbmF0ZSBkaW1lbnNpb25zIHRvIGFsbG93IGZvciB0b3VjaFxuICAgKiBldmVudHMgdG8gYmUgY2FwdHVyZWQgb24gdG91Y2ggZGV2aWNlcy5cbiAgICovXG4gIF91cGRhdGVXaWR0aEluYWN0aXZlOiAoKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNldCB0aGUgc2xpZGVyIHdpZHRoIHRvIHRoZSBjb3JyZWN0XG4gICAqIGRpbWVuc2lvbnMgd2hpbGUgdGhlIHVzZXIgaXMgZHJhZ2dpbmcuXG4gICAqL1xuICBfdXBkYXRlV2lkdGhBY3RpdmU6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgX01hdFNsaWRlclJhbmdlVGh1bWIgZXh0ZW5kcyBfTWF0U2xpZGVyVGh1bWIge1xuICAvKiogV2hldGhlciB0aGlzIHNsaWRlciBjb3JyZXNwb25kcyB0byB0aGUgaW5wdXQgb24gdGhlIGxlZnQgaGFuZCBzaWRlLiAqL1xuICBfaXNMZWZ0VGh1bWI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpYmxpbmcgTWF0U2xpZGVyUmFuZ2VUaHVtYi5cbiAgICogUmV0dXJucyB1bmRlZmluZWQgaWYgaXQgaXMgdG9vIGVhcmx5IGluIEFuZ3VsYXIncyBsaWZlIGN5Y2xlLlxuICAgKi9cbiAgZ2V0U2libGluZzogKCkgPT4gX01hdFNsaWRlclJhbmdlVGh1bWIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgdG8gY2FjaGUgd2hldGhlciB0aGlzIHNsaWRlciBpbnB1dCBjb3JyZXNwb25kcyB0byB0aGUgdmlzdWFsIGxlZnQgdGh1bWIuICovXG4gIF9zZXRJc0xlZnRUaHVtYjogKCkgPT4gdm9pZDtcblxuICAvKiogVXBkYXRlcyB0aGUgaW5wdXQgc3R5bGVzIHRvIGNvbnRyb2wgd2hldGhlciBpdCBpcyBwaW5uZWQgdG8gdGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUgbWF0LXNsaWRlci4gKi9cbiAgX3VwZGF0ZVN0YXRpY1N0eWxlczogKCkgPT4gdm9pZDtcblxuICAvKiogVXBkYXRlcyB0aGUgbWluIGFuZCBtYXggcHJvcGVydGllcyBvZiB0aGlzIHNsaWRlciBpbnB1dCBhY2NvcmRpbmcgdG8gaXQncyBzaWJsaW5nLiAqL1xuICBfdXBkYXRlTWluTWF4OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIF9NYXRTbGlkZXJWaXN1YWxUaHVtYiB7XG4gIC8qKiBUaGUgTWF0UmlwcGxlIGZvciB0aGlzIHNsaWRlciB0aHVtYi4gKi9cbiAgX3JpcHBsZTogTWF0UmlwcGxlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgdGh1bWIgaXMgY3VycmVudGx5IGJlaW5nIHByZXNzZWQuICovXG4gIF9pc0FjdGl2ZTogYm9vbGVhbjtcblxuICAvKiogVGhlIGhvc3QgbmF0aXZlIEhUTUwgaW5wdXQgZWxlbWVudC4gKi9cbiAgX2hvc3RFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAvKiogU2hvd3MgdGhlIHZhbHVlIGluZGljYXRvciB1aS4gKi9cbiAgX3Nob3dWYWx1ZUluZGljYXRvcjogKCkgPT4gdm9pZDtcblxuICAvKiogSGlkZXMgdGhlIHZhbHVlIGluZGljYXRvciB1aS4gKi9cbiAgX2hpZGVWYWx1ZUluZGljYXRvcjogKCkgPT4gdm9pZDtcblxuICAvKiogV2hldGhlciB0aGUgc2xpZGVyIHZpc3VhbCB0aHVtYiBpcyBjdXJyZW50bHkgc2hvd2luZyBhbnkgcmlwcGxlLiAqL1xuICBfaXNTaG93aW5nQW55UmlwcGxlOiAoKSA9PiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,229 @@
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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Input, NgZone, ViewChild, ViewEncapsulation, } from '@angular/core';
9
+ import { MatRipple } from '@angular/material/core';
10
+ import { MAT_SLIDER, MAT_SLIDER_VISUAL_THUMB, } from './slider-interface';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@angular/material/core";
14
+ /**
15
+ * The visual slider thumb.
16
+ *
17
+ * Handles the slider thumb ripple states (hover, focus, and active),
18
+ * and displaying the value tooltip on discrete sliders.
19
+ * @docs-private
20
+ */
21
+ export class MatSliderVisualThumb {
22
+ constructor(_cdr, _ngZone, _elementRef, _slider) {
23
+ this._cdr = _cdr;
24
+ this._ngZone = _ngZone;
25
+ this._slider = _slider;
26
+ /** Whether the slider thumb is currently being hovered. */
27
+ this._isHovered = false;
28
+ /** Whether the slider thumb is currently being pressed. */
29
+ this._isActive = false;
30
+ /** Whether the value indicator tooltip is visible. */
31
+ this._isValueIndicatorVisible = false;
32
+ this._onPointerMove = (event) => {
33
+ if (this._sliderInput._isFocused) {
34
+ return;
35
+ }
36
+ const rect = this._hostElement.getBoundingClientRect();
37
+ const isHovered = this._isSliderThumbHovered(event, rect);
38
+ this._isHovered = isHovered;
39
+ if (isHovered) {
40
+ this._showHoverRipple();
41
+ }
42
+ else {
43
+ this._hideRipple(this._hoverRippleRef);
44
+ }
45
+ };
46
+ this._onMouseLeave = () => {
47
+ this._isHovered = false;
48
+ this._hideRipple(this._hoverRippleRef);
49
+ };
50
+ this._onFocus = () => {
51
+ // We don't want to show the hover ripple on top of the focus ripple.
52
+ // Happen when the users cursor is over a thumb and then the user tabs to it.
53
+ this._hideRipple(this._hoverRippleRef);
54
+ this._showFocusRipple();
55
+ this._hostElement.classList.add('mdc-slider__thumb--focused');
56
+ };
57
+ this._onBlur = () => {
58
+ // Happens when the user tabs away while still dragging a thumb.
59
+ if (!this._isActive) {
60
+ this._hideRipple(this._focusRippleRef);
61
+ }
62
+ // Happens when the user tabs away from a thumb but their cursor is still over it.
63
+ if (this._isHovered) {
64
+ this._showHoverRipple();
65
+ }
66
+ this._hostElement.classList.remove('mdc-slider__thumb--focused');
67
+ };
68
+ this._onDragStart = () => {
69
+ this._isActive = true;
70
+ this._showActiveRipple();
71
+ };
72
+ this._onDragEnd = () => {
73
+ this._isActive = false;
74
+ this._hideRipple(this._activeRippleRef);
75
+ // Happens when the user starts dragging a thumb, tabs away, and then stops dragging.
76
+ if (!this._sliderInput._isFocused) {
77
+ this._hideRipple(this._focusRippleRef);
78
+ }
79
+ };
80
+ this._hostElement = _elementRef.nativeElement;
81
+ }
82
+ ngAfterViewInit() {
83
+ this._ripple.radius = 24;
84
+ this._sliderInput = this._slider._getInput(this.thumbPosition);
85
+ this._sliderInputEl = this._sliderInput._hostElement;
86
+ const input = this._sliderInputEl;
87
+ // These listeners don't update any data bindings so we bind them outside
88
+ // of the NgZone to prevent Angular from needlessly running change detection.
89
+ this._ngZone.runOutsideAngular(() => {
90
+ input.addEventListener('pointermove', this._onPointerMove);
91
+ input.addEventListener('pointerdown', this._onDragStart);
92
+ input.addEventListener('pointerup', this._onDragEnd);
93
+ input.addEventListener('pointerleave', this._onMouseLeave);
94
+ input.addEventListener('focus', this._onFocus);
95
+ input.addEventListener('blur', this._onBlur);
96
+ });
97
+ }
98
+ ngOnDestroy() {
99
+ const input = this._sliderInputEl;
100
+ input.removeEventListener('pointermove', this._onPointerMove);
101
+ input.removeEventListener('pointerdown', this._onDragStart);
102
+ input.removeEventListener('pointerup', this._onDragEnd);
103
+ input.removeEventListener('pointerleave', this._onMouseLeave);
104
+ input.removeEventListener('focus', this._onFocus);
105
+ input.removeEventListener('blur', this._onBlur);
106
+ }
107
+ /** Handles displaying the hover ripple. */
108
+ _showHoverRipple() {
109
+ if (!this._isShowingRipple(this._hoverRippleRef)) {
110
+ this._hoverRippleRef = this._showRipple({ enterDuration: 0, exitDuration: 0 });
111
+ this._hoverRippleRef?.element.classList.add('mat-mdc-slider-hover-ripple');
112
+ }
113
+ }
114
+ /** Handles displaying the focus ripple. */
115
+ _showFocusRipple() {
116
+ // Show the focus ripple event if noop animations are enabled.
117
+ if (!this._isShowingRipple(this._focusRippleRef)) {
118
+ this._focusRippleRef = this._showRipple({ enterDuration: 0, exitDuration: 0 }, true);
119
+ this._focusRippleRef?.element.classList.add('mat-mdc-slider-focus-ripple');
120
+ }
121
+ }
122
+ /** Handles displaying the active ripple. */
123
+ _showActiveRipple() {
124
+ if (!this._isShowingRipple(this._activeRippleRef)) {
125
+ this._activeRippleRef = this._showRipple({ enterDuration: 225, exitDuration: 400 });
126
+ this._activeRippleRef?.element.classList.add('mat-mdc-slider-active-ripple');
127
+ }
128
+ }
129
+ /** Whether the given rippleRef is currently fading in or visible. */
130
+ _isShowingRipple(rippleRef) {
131
+ return rippleRef?.state === 0 /* RippleState.FADING_IN */ || rippleRef?.state === 1 /* RippleState.VISIBLE */;
132
+ }
133
+ /** Manually launches the slider thumb ripple using the specified ripple animation config. */
134
+ _showRipple(animation, ignoreGlobalRippleConfig) {
135
+ if (this._slider.disabled) {
136
+ return;
137
+ }
138
+ this._showValueIndicator();
139
+ if (this._slider._isRange) {
140
+ const sibling = this._slider._getThumb(this.thumbPosition === 1 /* _MatThumb.START */ ? 2 /* _MatThumb.END */ : 1 /* _MatThumb.START */);
141
+ sibling._showValueIndicator();
142
+ }
143
+ if (this._slider._globalRippleOptions?.disabled && !ignoreGlobalRippleConfig) {
144
+ return;
145
+ }
146
+ return this._ripple.launch({
147
+ animation: this._slider._noopAnimations ? { enterDuration: 0, exitDuration: 0 } : animation,
148
+ centered: true,
149
+ persistent: true,
150
+ });
151
+ }
152
+ /**
153
+ * Fades out the given ripple.
154
+ * Also hides the value indicator if no ripple is showing.
155
+ */
156
+ _hideRipple(rippleRef) {
157
+ rippleRef?.fadeOut();
158
+ if (this._isShowingAnyRipple()) {
159
+ return;
160
+ }
161
+ if (!this._slider._isRange) {
162
+ this._hideValueIndicator();
163
+ }
164
+ const sibling = this._getSibling();
165
+ if (!sibling._isShowingAnyRipple()) {
166
+ this._hideValueIndicator();
167
+ sibling._hideValueIndicator();
168
+ }
169
+ }
170
+ /** Shows the value indicator ui. */
171
+ _showValueIndicator() {
172
+ this._hostElement.classList.add('mdc-slider__thumb--with-indicator');
173
+ }
174
+ /** Hides the value indicator ui. */
175
+ _hideValueIndicator() {
176
+ this._hostElement.classList.remove('mdc-slider__thumb--with-indicator');
177
+ }
178
+ _getSibling() {
179
+ return this._slider._getThumb(this.thumbPosition === 1 /* _MatThumb.START */ ? 2 /* _MatThumb.END */ : 1 /* _MatThumb.START */);
180
+ }
181
+ /** Gets the value indicator container's native HTML element. */
182
+ _getValueIndicatorContainer() {
183
+ return this._valueIndicatorContainer?.nativeElement;
184
+ }
185
+ /** Gets the native HTML element of the slider thumb knob. */
186
+ _getKnob() {
187
+ return this._knob.nativeElement;
188
+ }
189
+ _isShowingAnyRipple() {
190
+ return (this._isShowingRipple(this._hoverRippleRef) ||
191
+ this._isShowingRipple(this._focusRippleRef) ||
192
+ this._isShowingRipple(this._activeRippleRef));
193
+ }
194
+ _isSliderThumbHovered(event, rect) {
195
+ const radius = rect.width / 2;
196
+ const centerX = rect.x + radius;
197
+ const centerY = rect.y + radius;
198
+ const dx = event.clientX - centerX;
199
+ const dy = event.clientY - centerY;
200
+ return Math.pow(dx, 2) + Math.pow(dy, 2) < Math.pow(radius, 2);
201
+ }
202
+ }
203
+ MatSliderVisualThumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-rc.1", ngImport: i0, type: MatSliderVisualThumb, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: MAT_SLIDER }], target: i0.ɵɵFactoryTarget.Component });
204
+ MatSliderVisualThumb.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-rc.1", type: MatSliderVisualThumb, selector: "mat-slider-visual-thumb", inputs: { discrete: "discrete", thumbPosition: "thumbPosition", valueIndicatorText: "valueIndicatorText" }, host: { classAttribute: "mdc-slider__thumb mat-mdc-slider-visual-thumb" }, providers: [{ provide: MAT_SLIDER_VISUAL_THUMB, useExisting: MatSliderVisualThumb }], viewQueries: [{ propertyName: "_ripple", first: true, predicate: MatRipple, descendants: true }, { propertyName: "_knob", first: true, predicate: ["knob"], descendants: true }, { propertyName: "_valueIndicatorContainer", first: true, predicate: ["valueIndicatorContainer"], descendants: true }], ngImport: i0, template: "<div class=\"mdc-slider__value-indicator-container\" *ngIf=\"discrete\" #valueIndicatorContainer>\n <div class=\"mdc-slider__value-indicator\">\n <span class=\"mdc-slider__value-indicator-text\">{{valueIndicatorText}}</span>\n </div>\n</div>\n<div class=\"mdc-slider__thumb-knob\" #knob></div>\n<div matRipple class=\"mat-mdc-focus-indicator\" [matRippleDisabled]=\"true\"></div>\n", styles: [".mat-mdc-slider-visual-thumb .mat-ripple{height:100%;width:100%}.mat-mdc-slider .mdc-slider__tick-marks{justify-content:start}.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--active,.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--inactive{position:absolute;left:2px}"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-rc.1", ngImport: i0, type: MatSliderVisualThumb, decorators: [{
206
+ type: Component,
207
+ args: [{ selector: 'mat-slider-visual-thumb', host: {
208
+ 'class': 'mdc-slider__thumb mat-mdc-slider-visual-thumb',
209
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: MAT_SLIDER_VISUAL_THUMB, useExisting: MatSliderVisualThumb }], template: "<div class=\"mdc-slider__value-indicator-container\" *ngIf=\"discrete\" #valueIndicatorContainer>\n <div class=\"mdc-slider__value-indicator\">\n <span class=\"mdc-slider__value-indicator-text\">{{valueIndicatorText}}</span>\n </div>\n</div>\n<div class=\"mdc-slider__thumb-knob\" #knob></div>\n<div matRipple class=\"mat-mdc-focus-indicator\" [matRippleDisabled]=\"true\"></div>\n", styles: [".mat-mdc-slider-visual-thumb .mat-ripple{height:100%;width:100%}.mat-mdc-slider .mdc-slider__tick-marks{justify-content:start}.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--active,.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--inactive{position:absolute;left:2px}"] }]
210
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: undefined, decorators: [{
211
+ type: Inject,
212
+ args: [MAT_SLIDER]
213
+ }] }]; }, propDecorators: { discrete: [{
214
+ type: Input
215
+ }], thumbPosition: [{
216
+ type: Input
217
+ }], valueIndicatorText: [{
218
+ type: Input
219
+ }], _ripple: [{
220
+ type: ViewChild,
221
+ args: [MatRipple]
222
+ }], _knob: [{
223
+ type: ViewChild,
224
+ args: ['knob']
225
+ }], _valueIndicatorContainer: [{
226
+ type: ViewChild,
227
+ args: ['valueIndicatorContainer']
228
+ }] } });
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXRodW1iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NsaWRlci9zbGlkZXItdGh1bWIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2xpZGVyL3NsaWRlci10aHVtYi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFnRCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hHLE9BQU8sRUFLTCxVQUFVLEVBQ1YsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFNUI7Ozs7OztHQU1HO0FBWUgsTUFBTSxPQUFPLG9CQUFvQjtJQStDL0IsWUFDVyxJQUF1QixFQUNmLE9BQWUsRUFDaEMsV0FBb0MsRUFDUixPQUFtQjtRQUh0QyxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFFSixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBaEJqRCwyREFBMkQ7UUFDbkQsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVwQywyREFBMkQ7UUFDM0QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixzREFBc0Q7UUFDdEQsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBMENsQyxtQkFBYyxHQUFHLENBQUMsS0FBbUIsRUFBUSxFQUFFO1lBQ3JELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hDLE9BQU87YUFDUjtZQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN2RCxNQUFN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QUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7c0hBalFVLG9CQUFvQixtR0FtRHJCLFVBQVU7MEdBbkRULG9CQUFvQix5T0FGcEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQyxtRUFhdkUsU0FBUyxzUEM1RHRCLG9ZQU9BO2dHRDBDYSxvQkFBb0I7a0JBWGhDLFNBQVM7K0JBQ0UseUJBQXlCLFFBRzdCO3dCQUNKLE9BQU8sRUFBRSwrQ0FBK0M7cUJBQ3pELG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxzQkFBc0IsRUFBQyxDQUFDOzswQkFxRC9FLE1BQU07MkJBQUMsVUFBVTs0Q0FqRFgsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHeUIsT0FBTztzQkFBckMsU0FBUzt1QkFBQyxTQUFTO2dCQUdELEtBQUs7c0JBQXZCLFNBQVM7dUJBQUMsTUFBTTtnQkFJakIsd0JBQXdCO3NCQUR2QixTQUFTO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRSaXBwbGUsIFJpcHBsZUFuaW1hdGlvbkNvbmZpZywgUmlwcGxlUmVmLCBSaXBwbGVTdGF0ZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge1xuICBfTWF0VGh1bWIsXG4gIF9NYXRTbGlkZXIsXG4gIF9NYXRTbGlkZXJUaHVtYixcbiAgX01hdFNsaWRlclZpc3VhbFRodW1iLFxuICBNQVRfU0xJREVSLFxuICBNQVRfU0xJREVSX1ZJU1VBTF9USFVNQixcbn0gZnJvbSAnLi9zbGlkZXItaW50ZXJmYWNlJztcblxuLyoqXG4gKiBUaGUgdmlzdWFsIHNsaWRlciB0aHVtYi5cbiAqXG4gKiBIYW5kbGVzIHRoZSBzbGlkZXIgdGh1bWIgcmlwcGxlIHN0YXRlcyAoaG92ZXIsIGZvY3VzLCBhbmQgYWN0aXZlKSxcbiAqIGFuZCBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0b29sdGlwIG9uIGRpc2NyZXRlIHNsaWRlcnMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1zbGlkZXItdmlzdWFsLXRodW1iJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci10aHVtYi5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3NsaWRlci10aHVtYi5jc3MnXSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtZGMtc2xpZGVyX190aHVtYiBtYXQtbWRjLXNsaWRlci12aXN1YWwtdGh1bWInLFxuICB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE1BVF9TTElERVJfVklTVUFMX1RIVU1CLCB1c2VFeGlzdGluZzogTWF0U2xpZGVyVmlzdWFsVGh1bWJ9XSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0U2xpZGVyVmlzdWFsVGh1bWIgaW1wbGVtZW50cyBfTWF0U2xpZGVyVmlzdWFsVGh1bWIsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgZGlzcGxheXMgYSBudW1lcmljIHZhbHVlIGxhYmVsIHVwb24gcHJlc3NpbmcgdGhlIHRodW1iLiAqL1xuICBASW5wdXQoKSBkaXNjcmV0ZTogYm9vbGVhbjtcblxuICAvKiogSW5kaWNhdGVzIHdoaWNoIHNsaWRlciB0aHVtYiB0aGlzIGlucHV0IGNvcnJlc3BvbmRzIHRvLiAqL1xuICBASW5wdXQoKSB0aHVtYlBvc2l0aW9uOiBfTWF0VGh1bWI7XG5cbiAgLyoqIFRoZSBkaXNwbGF5IHZhbHVlIG9mIHRoZSBzbGlkZXIgdGh1bWIuICovXG4gIEBJbnB1dCgpIHZhbHVlSW5kaWNhdG9yVGV4dDogc3RyaW5nO1xuXG4gIC8qKiBUaGUgTWF0UmlwcGxlIGZvciB0aGlzIHNsaWRlciB0aHVtYi4gKi9cbiAgQFZpZXdDaGlsZChNYXRSaXBwbGUpIHJlYWRvbmx5IF9yaXBwbGU6IE1hdFJpcHBsZTtcblxuICAvKiogVGhlIHNsaWRlciB0aHVtYiBrbm9iLiAqL1xuICBAVmlld0NoaWxkKCdrbm9iJykgX2tub2I6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKiBUaGUgc2xpZGVyIHRodW1iIHZhbHVlIGluZGljYXRvciBjb250YWluZXIuICovXG4gIEBWaWV3Q2hpbGQoJ3ZhbHVlSW5kaWNhdG9yQ29udGFpbmVyJylcbiAgX3ZhbHVlSW5kaWNhdG9yQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKiogVGhlIHNsaWRlciBpbnB1dCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgc2xpZGVyIHRodW1iLiAqL1xuICBwcml2YXRlIF9zbGlkZXJJbnB1dDogX01hdFNsaWRlclRodW1iO1xuXG4gIC8qKiBUaGUgbmF0aXZlIGh0bWwgZWxlbWVudCBvZiB0aGUgc2xpZGVyIGlucHV0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyB0aHVtYi4gKi9cbiAgcHJpdmF0ZSBfc2xpZGVySW5wdXRFbDogSFRNTElucHV0RWxlbWVudDtcblxuICAvKiogVGhlIFJpcHBsZVJlZiBmb3IgdGhlIHNsaWRlciB0aHVtYnMgaG92ZXIgc3RhdGUuICovXG4gIHByaXZhdGUgX2hvdmVyUmlwcGxlUmVmOiBSaXBwbGVSZWYgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFRoZSBSaXBwbGVSZWYgZm9yIHRoZSBzbGlkZXIgdGh1bWJzIGZvY3VzIHN0YXRlLiAqL1xuICBwcml2YXRlIF9mb2N1c1JpcHBsZVJlZjogUmlwcGxlUmVmIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBUaGUgUmlwcGxlUmVmIGZvciB0aGUgc2xpZGVyIHRodW1icyBhY3RpdmUgc3RhdGUuICovXG4gIHByaXZhdGUgX2FjdGl2ZVJpcHBsZVJlZjogUmlwcGxlUmVmIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgdGh1bWIgaXMgY3VycmVudGx5IGJlaW5nIGhvdmVyZWQuICovXG4gIHByaXZhdGUgX2lzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBzbGlkZXIgdGh1bWIgaXMgY3VycmVudGx5IGJlaW5nIHByZXNzZWQuICovXG4gIF9pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSB2YWx1ZSBpbmRpY2F0b3IgdG9vbHRpcCBpcyB2aXNpYmxlLiAqL1xuICBfaXNWYWx1ZUluZGljYXRvclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVGhlIGhvc3QgbmF0aXZlIEhUTUwgaW5wdXQgZWxlbWVudC4gKi9cbiAgX2hvc3RFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgQEluamVjdChNQVRfU0xJREVSKSBwcml2YXRlIF9zbGlkZXI6IF9NYXRTbGlkZXIsXG4gICkge1xuICAgIHRoaXMuX2hvc3RFbGVtZW50ID0gX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9yaXBwbGUucmFkaXVzID0gMjQ7XG4gICAgdGhpcy5fc2xpZGVySW5wdXQgPSB0aGlzLl9zbGlkZXIuX2dldElucHV0KHRoaXMudGh1bWJQb3NpdGlvbikhO1xuICAgIHRoaXMuX3NsaWRlcklucHV0RWwgPSB0aGlzLl9zbGlkZXJJbnB1dC5faG9zdEVsZW1lbnQ7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLl9zbGlkZXJJbnB1dEVsO1xuXG4gICAgLy8gVGhlc2UgbGlzdGVuZXJzIGRvbid0IHVwZGF0ZSBhbnkgZGF0YSBiaW5kaW5ncyBzbyB3ZSBiaW5kIHRoZW0gb3V0c2lkZVxuICAgIC8vIG9mIHRoZSBOZ1pvbmUgdG8gcHJldmVudCBBbmd1bGFyIGZyb20gbmVlZGxlc3NseSBydW5uaW5nIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgdGhpcy5fb25Qb2ludGVyTW92ZSk7XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIHRoaXMuX29uRHJhZ1N0YXJ0KTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHRoaXMuX29uRHJhZ0VuZCk7XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCB0aGlzLl9vbk1vdXNlTGVhdmUpO1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLl9vbkZvY3VzKTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLl9vbkJsdXIpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLl9zbGlkZXJJbnB1dEVsO1xuICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgdGhpcy5fb25Qb2ludGVyTW92ZSk7XG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCB0aGlzLl9vbkRyYWdTdGFydCk7XG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgdGhpcy5fb25EcmFnRW5kKTtcbiAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCB0aGlzLl9vbk1vdXNlTGVhdmUpO1xuICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5fb25Gb2N1cyk7XG4gICAgaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuX29uQmx1cik7XG4gIH1cblxuICBwcml2YXRlIF9vblBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5fc2xpZGVySW5wdXQuX2lzRm9jdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9ob3N0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBpc0hvdmVyZWQgPSB0aGlzLl9pc1NsaWRlclRodW1iSG92ZXJlZChldmVudCwgcmVjdCk7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gaXNIb3ZlcmVkO1xuXG4gICAgaWYgKGlzSG92ZXJlZCkge1xuICAgICAgdGhpcy5fc2hvd0hvdmVyUmlwcGxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hpZGVSaXBwbGUodGhpcy5faG92ZXJSaXBwbGVSZWYpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9vbk1vdXNlTGVhdmUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5faGlkZVJpcHBsZSh0aGlzLl9ob3ZlclJpcHBsZVJlZik7XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25Gb2N1cyA9ICgpOiB2b2lkID0+IHtcbiAgICAvLyBXZSBkb24ndCB3YW50IHRvIHNob3cgdGhlIGhvdmVyIHJpcHBsZSBvbiB0b3Agb2YgdGhlIGZvY3VzIHJpcHBsZS5cbiAgICAvLyBIYXBwZW4gd2hlbiB0aGUgdXNlcnMgY3Vyc29yIGlzIG92ZXIgYSB0aHVtYiBhbmQgdGhlbiB0aGUgdXNlciB0YWJzIHRvIGl0LlxuICAgIHRoaXMuX2hpZGVSaXBwbGUodGhpcy5faG92ZXJSaXBwbGVSZWYpO1xuICAgIHRoaXMuX3Nob3dGb2N1c1JpcHBsZSgpO1xuICAgIHRoaXMuX2hvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21kYy1zbGlkZXJfX3RodW1iLS1mb2N1c2VkJyk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25CbHVyID0gKCk6IHZvaWQgPT4ge1xuICAgIC8vIEhhcHBlbnMgd2hlbiB0aGUgdXNlciB0YWJzIGF3YXkgd2hpbGUgc3RpbGwgZHJhZ2dpbmcgYSB0aHVtYi5cbiAgICBpZiAoIXRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICB0aGlzLl9oaWRlUmlwcGxlKHRoaXMuX2ZvY3VzUmlwcGxlUmVmKTtcbiAgICB9XG4gICAgLy8gSGFwcGVucyB3aGVuIHRoZSB1c2VyIHRhYnMgYXdheSBmcm9tIGEgdGh1bWIgYnV0IHRoZWlyIGN1cnNvciBpcyBzdGlsbCBvdmVyIGl0LlxuICAgIGlmICh0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgIHRoaXMuX3Nob3dIb3ZlclJpcHBsZSgpO1xuICAgIH1cbiAgICB0aGlzLl9ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtZGMtc2xpZGVyX190aHVtYi0tZm9jdXNlZCcpO1xuICB9O1xuXG4gIHByaXZhdGUgX29uRHJhZ1N0YXJ0ID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzQWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLl9zaG93QWN0aXZlUmlwcGxlKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25EcmFnRW5kID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzQWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5faGlkZVJpcHBsZSh0aGlzLl9hY3RpdmVSaXBwbGVSZWYpO1xuICAgIC8vIEhhcHBlbnMgd2hlbiB0aGUgdXNlciBzdGFydHMgZHJhZ2dpbmcgYSB0aHVtYiwgdGFicyBhd2F5LCBhbmQgdGhlbiBzdG9wcyBkcmFnZ2luZy5cbiAgICBpZiAoIXRoaXMuX3NsaWRlcklucHV0Ll9pc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMuX2hpZGVSaXBwbGUodGhpcy5fZm9jdXNSaXBwbGVSZWYpO1xuICAgIH1cbiAgfTtcblxuICAvKiogSGFuZGxlcyBkaXNwbGF5aW5nIHRoZSBob3ZlciByaXBwbGUuICovXG4gIHByaXZhdGUgX3Nob3dIb3ZlclJpcHBsZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd2luZ1JpcHBsZSh0aGlzLl9ob3ZlclJpcHBsZVJlZikpIHtcbiAgICAgIHRoaXMuX2hvdmVyUmlwcGxlUmVmID0gdGhpcy5fc2hvd1JpcHBsZSh7ZW50ZXJEdXJhdGlvbjogMCwgZXhpdER1cmF0aW9uOiAwfSk7XG4gICAgICB0aGlzLl9ob3ZlclJpcHBsZVJlZj8uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXQtbWRjLXNsaWRlci1ob3Zlci1yaXBwbGUnKTtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBkaXNwbGF5aW5nIHRoZSBmb2N1cyByaXBwbGUuICovXG4gIHByaXZhdGUgX3Nob3dGb2N1c1JpcHBsZSgpOiB2b2lkIHtcbiAgICAvLyBTaG93IHRoZSBmb2N1cyByaXBwbGUgZXZlbnQgaWYgbm9vcCBhbmltYXRpb25zIGFyZSBlbmFibGVkLlxuICAgIGlmICghdGhpcy5faXNTaG93aW5nUmlwcGxlKHRoaXMuX2ZvY3VzUmlwcGxlUmVmKSkge1xuICAgICAgdGhpcy5fZm9jdXNSaXBwbGVSZWYgPSB0aGlzLl9zaG93UmlwcGxlKHtlbnRlckR1cmF0aW9uOiAwLCBleGl0RHVyYXRpb246IDB9LCB0cnVlKTtcbiAgICAgIHRoaXMuX2ZvY3VzUmlwcGxlUmVmPy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21hdC1tZGMtc2xpZGVyLWZvY3VzLXJpcHBsZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGRpc3BsYXlpbmcgdGhlIGFjdGl2ZSByaXBwbGUuICovXG4gIHByaXZhdGUgX3Nob3dBY3RpdmVSaXBwbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3dpbmdSaXBwbGUodGhpcy5fYWN0aXZlUmlwcGxlUmVmKSkge1xuICAgICAgdGhpcy5fYWN0aXZlUmlwcGxlUmVmID0gdGhpcy5fc2hvd1JpcHBsZSh7ZW50ZXJEdXJhdGlvbjogMjI1LCBleGl0RHVyYXRpb246IDQwMH0pO1xuICAgICAgdGhpcy5fYWN0aXZlUmlwcGxlUmVmPy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21hdC1tZGMtc2xpZGVyLWFjdGl2ZS1yaXBwbGUnKTtcbiAgICB9XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ2l2ZW4gcmlwcGxlUmVmIGlzIGN1cnJlbnRseSBmYWRpbmcgaW4gb3IgdmlzaWJsZS4gKi9cbiAgcHJpdmF0ZSBfaXNTaG93aW5nUmlwcGxlKHJpcHBsZVJlZj86IFJpcHBsZVJlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByaXBwbGVSZWY/LnN0YXRlID09PSBSaXBwbGVTdGF0ZS5GQURJTkdfSU4gfHwgcmlwcGxlUmVmPy5zdGF0ZSA9PT0gUmlwcGxlU3RhdGUuVklTSUJMRTtcbiAgfVxuXG4gIC8qKiBNYW51YWxseSBsYXVuY2hlcyB0aGUgc2xpZGVyIHRodW1iIHJpcHBsZSB1c2luZyB0aGUgc3BlY2lmaWVkIHJpcHBsZSBhbmltYXRpb24gY29uZmlnLiAqL1xuICBwcml2YXRlIF9zaG93UmlwcGxlKFxuICAgIGFuaW1hdGlvbjogUmlwcGxlQW5pbWF0aW9uQ29uZmlnLFxuICAgIGlnbm9yZUdsb2JhbFJpcHBsZUNvbmZpZz86IGJvb2xlYW4sXG4gICk6IFJpcHBsZVJlZiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX3NsaWRlci5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zaG93VmFsdWVJbmRpY2F0b3IoKTtcbiAgICBpZiAodGhpcy5fc2xpZGVyLl9pc1JhbmdlKSB7XG4gICAgICBjb25zdCBzaWJsaW5nID0gdGhpcy5fc2xpZGVyLl9nZXRUaHVtYihcbiAgICAgICAgdGhpcy50aHVtYlBvc2l0aW9uID09PSBfTWF0VGh1bWIuU1RBUlQgPyBfTWF0VGh1bWIuRU5EIDogX01hdFRodW1iLlNUQVJULFxuICAgICAgKTtcbiAgICAgIHNpYmxpbmcuX3Nob3dWYWx1ZUluZGljYXRvcigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc2xpZGVyLl9nbG9iYWxSaXBwbGVPcHRpb25zPy5kaXNhYmxlZCAmJiAhaWdub3JlR2xvYmFsUmlwcGxlQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yaXBwbGUubGF1bmNoKHtcbiAgICAgIGFuaW1hdGlvbjogdGhpcy5fc2xpZGVyLl9ub29wQW5pbWF0aW9ucyA/IHtlbnRlckR1cmF0aW9uOiAwLCBleGl0RHVyYXRpb246IDB9IDogYW5pbWF0aW9uLFxuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBwZXJzaXN0ZW50OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhZGVzIG91dCB0aGUgZ2l2ZW4gcmlwcGxlLlxuICAgKiBBbHNvIGhpZGVzIHRoZSB2YWx1ZSBpbmRpY2F0b3IgaWYgbm8gcmlwcGxlIGlzIHNob3dpbmcuXG4gICAqL1xuICBwcml2YXRlIF9oaWRlUmlwcGxlKHJpcHBsZVJlZj86IFJpcHBsZVJlZik6IHZvaWQge1xuICAgIHJpcHBsZVJlZj8uZmFkZU91dCgpO1xuXG4gICAgaWYgKHRoaXMuX2lzU2hvd2luZ0FueVJpcHBsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zbGlkZXIuX2lzUmFuZ2UpIHtcbiAgICAgIHRoaXMuX2hpZGVWYWx1ZUluZGljYXRvcigpO1xuICAgIH1cblxuICAgIGNvbnN0IHNpYmxpbmcgPSB0aGlzLl9nZXRTaWJsaW5nKCk7XG4gICAgaWYgKCFzaWJsaW5nLl9pc1Nob3dpbmdBbnlSaXBwbGUoKSkge1xuICAgICAgdGhpcy5faGlkZVZhbHVlSW5kaWNhdG9yKCk7XG4gICAgICBzaWJsaW5nLl9oaWRlVmFsdWVJbmRpY2F0b3IoKTtcbiAgICB9XG4gIH1cblxuICAvKiogU2hvd3MgdGhlIHZhbHVlIGluZGljYXRvciB1aS4gKi9cbiAgX3Nob3dWYWx1ZUluZGljYXRvcigpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtZGMtc2xpZGVyX190aHVtYi0td2l0aC1pbmRpY2F0b3InKTtcbiAgfVxuXG4gIC8qKiBIaWRlcyB0aGUgdmFsdWUgaW5kaWNhdG9yIHVpLiAqL1xuICBfaGlkZVZhbHVlSW5kaWNhdG9yKCk6IHZvaWQge1xuICAgIHRoaXMuX2hvc3RFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ21kYy1zbGlkZXJfX3RodW1iLS13aXRoLWluZGljYXRvcicpO1xuICB9XG5cbiAgX2dldFNpYmxpbmcoKTogX01hdFNsaWRlclZpc3VhbFRodW1iIHtcbiAgICByZXR1cm4gdGhpcy5fc2xpZGVyLl9nZXRUaHVtYihcbiAgICAgIHRoaXMudGh1bWJQb3NpdGlvbiA9PT0gX01hdFRodW1iLlNUQVJUID8gX01hdFRodW1iLkVORCA6IF9NYXRUaHVtYi5TVEFSVCxcbiAgICApO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIHZhbHVlIGluZGljYXRvciBjb250YWluZXIncyBuYXRpdmUgSFRNTCBlbGVtZW50LiAqL1xuICBfZ2V0VmFsdWVJbmRpY2F0b3JDb250YWluZXIoKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUluZGljYXRvckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBuYXRpdmUgSFRNTCBlbGVtZW50IG9mIHRoZSBzbGlkZXIgdGh1bWIga25vYi4gKi9cbiAgX2dldEtub2IoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9rbm9iLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBfaXNTaG93aW5nQW55UmlwcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9pc1Nob3dpbmdSaXBwbGUodGhpcy5faG92ZXJSaXBwbGVSZWYpIHx8XG4gICAgICB0aGlzLl9pc1Nob3dpbmdSaXBwbGUodGhpcy5fZm9jdXNSaXBwbGVSZWYpIHx8XG4gICAgICB0aGlzLl9pc1Nob3dpbmdSaXBwbGUodGhpcy5fYWN0aXZlUmlwcGxlUmVmKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pc1NsaWRlclRodW1iSG92ZXJlZChldmVudDogUG9pbnRlckV2ZW50LCByZWN0OiBET01SZWN0KSB7XG4gICAgY29uc3QgcmFkaXVzID0gcmVjdC53aWR0aCAvIDI7XG4gICAgY29uc3QgY2VudGVyWCA9IHJlY3QueCArIHJhZGl1cztcbiAgICBjb25zdCBjZW50ZXJZID0gcmVjdC55ICsgcmFkaXVzO1xuICAgIGNvbnN0IGR4ID0gZXZlbnQuY2xpZW50WCAtIGNlbnRlclg7XG4gICAgY29uc3QgZHkgPSBldmVudC5jbGllbnRZIC0gY2VudGVyWTtcbiAgICByZXR1cm4gTWF0aC5wb3coZHgsIDIpICsgTWF0aC5wb3coZHksIDIpIDwgTWF0aC5wb3cocmFkaXVzLCAyKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1kYy1zbGlkZXJfX3ZhbHVlLWluZGljYXRvci1jb250YWluZXJcIiAqbmdJZj1cImRpc2NyZXRlXCIgI3ZhbHVlSW5kaWNhdG9yQ29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwibWRjLXNsaWRlcl9fdmFsdWUtaW5kaWNhdG9yXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtZGMtc2xpZGVyX192YWx1ZS1pbmRpY2F0b3ItdGV4dFwiPnt7dmFsdWVJbmRpY2F0b3JUZXh0fX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibWRjLXNsaWRlcl9fdGh1bWIta25vYlwiICNrbm9iPjwvZGl2PlxuPGRpdiBtYXRSaXBwbGUgY2xhc3M9XCJtYXQtbWRjLWZvY3VzLWluZGljYXRvclwiIFttYXRSaXBwbGVEaXNhYmxlZF09XCJ0cnVlXCI+PC9kaXY+XG4iXX0=