q2-tecton-elements 1.51.1 → 1.52.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 (613) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +16 -5
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-9aa4a776.js → index-07285783.js} +86 -2
  4. package/dist/cjs/index-07285783.js.map +1 -0
  5. package/dist/cjs/{index-14c3693c.js → index-e7e68b1e.js} +40 -5
  6. package/dist/cjs/index-e7e68b1e.js.map +1 -0
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/q2-action-group.cjs.entry.js +2 -2
  9. package/dist/cjs/q2-action-sheet.cjs.entry.js +3 -3
  10. package/dist/cjs/q2-avatar.cjs.entry.js +2 -2
  11. package/dist/cjs/q2-badge_7.cjs.entry.js +49 -44
  12. package/dist/cjs/q2-badge_7.cjs.entry.js.map +1 -1
  13. package/dist/cjs/q2-calendar.cjs.entry.js +17 -20
  14. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-card.cjs.entry.js +4 -2
  16. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  17. package/dist/cjs/q2-carousel-pane.cjs.entry.js +4 -4
  18. package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-chart-area.cjs.entry.js +16 -3
  20. package/dist/cjs/q2-chart-area.cjs.entry.js.map +1 -1
  21. package/dist/cjs/q2-chart-bar.cjs.entry.js +3 -3
  22. package/dist/cjs/q2-chart-donut.cjs.entry.js +19 -3
  23. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-checkbox-group.cjs.entry.js +6 -5
  25. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-checkbox.cjs.entry.js +2 -2
  27. package/dist/cjs/q2-currency.cjs.entry.js +14 -2
  28. package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-data-table.cjs.entry.js +3 -3
  30. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  31. package/dist/cjs/q2-detail.cjs.entry.js +3 -3
  32. package/dist/cjs/q2-dropdown-item.cjs.entry.js +12 -14
  33. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  34. package/dist/cjs/q2-dropdown.cjs.entry.js +7 -5
  35. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  36. package/dist/cjs/q2-editable-field.cjs.entry.js +3 -3
  37. package/dist/cjs/q2-example.cjs.entry.js +145 -0
  38. package/dist/cjs/q2-example.cjs.entry.js.map +1 -0
  39. package/dist/cjs/q2-formatted-text.cjs.entry.js +2 -2
  40. package/dist/cjs/q2-item.cjs.entry.js +3 -3
  41. package/dist/cjs/q2-legend.cjs.entry.js +2 -2
  42. package/dist/cjs/q2-link.cjs.entry.js +4 -4
  43. package/dist/cjs/q2-link.cjs.entry.js.map +1 -1
  44. package/dist/cjs/q2-list.cjs.entry.js +6 -7
  45. package/dist/cjs/q2-list.cjs.entry.js.map +1 -1
  46. package/dist/cjs/q2-loading-element.cjs.entry.js +2 -2
  47. package/dist/cjs/q2-loc.cjs.entry.js +52 -3
  48. package/dist/cjs/q2-loc.cjs.entry.js.map +1 -1
  49. package/dist/cjs/q2-message.cjs.entry.js +3 -3
  50. package/dist/cjs/q2-month-picker.cjs.entry.js +4 -4
  51. package/dist/cjs/q2-optgroup.cjs.entry.js +5 -4
  52. package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
  53. package/dist/cjs/q2-option-list.cjs.entry.js +2 -2
  54. package/dist/cjs/q2-option.cjs.entry.js +50 -33
  55. package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
  56. package/dist/cjs/q2-pagination.cjs.entry.js +11 -7
  57. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-pill.cjs.entry.js +19 -18
  59. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  60. package/dist/cjs/q2-radio-group.cjs.entry.js +5 -5
  61. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  62. package/dist/cjs/q2-radio.cjs.entry.js +3 -3
  63. package/dist/cjs/q2-relative-time.cjs.entry.js +3 -3
  64. package/dist/cjs/q2-resize-observer.cjs.entry.js +2 -2
  65. package/dist/cjs/q2-section.cjs.entry.js +8 -6
  66. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  67. package/dist/cjs/q2-select.cjs.entry.js +6 -5
  68. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  69. package/dist/cjs/q2-stepper-pane.cjs.entry.js +5 -4
  70. package/dist/cjs/q2-stepper-pane.cjs.entry.js.map +1 -1
  71. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +16 -4
  72. package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
  73. package/dist/cjs/q2-stepper.cjs.entry.js +6 -4
  74. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  75. package/dist/cjs/q2-tag.cjs.entry.js +6 -4
  76. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  77. package/dist/cjs/q2-tecton-elements.cjs.js +2 -2
  78. package/dist/cjs/q2-textarea.cjs.entry.js +3 -3
  79. package/dist/cjs/q2-tooltip.cjs.entry.js +2 -2
  80. package/dist/cjs/{shapes-be198cc0.js → shapes-5d45fc11.js} +2 -2
  81. package/dist/cjs/{shapes-be198cc0.js.map → shapes-5d45fc11.js.map} +1 -1
  82. package/dist/cjs/tecton-tab-pane.cjs.entry.js +3 -3
  83. package/dist/collection/collection-manifest.json +1 -0
  84. package/dist/collection/components/q2-action-group/q2-action-group.js +1 -1
  85. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +1 -1
  86. package/dist/collection/components/q2-avatar/q2-avatar.js +1 -1
  87. package/dist/collection/components/q2-calendar/q2-calendar.js +16 -18
  88. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  89. package/dist/collection/components/q2-calendar/q2-month-picker.js +2 -2
  90. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +27 -0
  91. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  92. package/dist/collection/components/q2-card/q2-card.js +2 -0
  93. package/dist/collection/components/q2-card/q2-card.js.map +1 -1
  94. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.js +2 -2
  95. package/dist/collection/components/q2-chart-area/q2-chart-area.js +42 -1
  96. package/dist/collection/components/q2-chart-area/q2-chart-area.js.map +1 -1
  97. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js +15 -0
  98. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.e2e.js.map +1 -1
  99. package/dist/collection/components/q2-chart-bar/q2-chart-bar.js +1 -1
  100. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +41 -1
  101. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  102. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js +11 -0
  103. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.e2e.js.map +1 -1
  104. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +30 -23
  105. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js +4 -3
  106. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.js.map +1 -1
  107. package/dist/collection/components/q2-currency/q2-currency.js +37 -1
  108. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  109. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js +34 -23
  110. package/dist/collection/components/q2-currency/test/q2-currency-test.e2e.js.map +1 -1
  111. package/dist/collection/components/q2-data-table/q2-data-table.js +1 -1
  112. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  113. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js +6 -4
  114. package/dist/collection/components/q2-data-table/test/q2-data-table-test.e2e.js.map +1 -1
  115. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  116. package/dist/collection/components/q2-dropdown/q2-dropdown.css +5 -0
  117. package/dist/collection/components/q2-dropdown/q2-dropdown.js +10 -4
  118. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  119. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +59 -14
  120. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  121. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +29 -11
  122. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +9 -11
  123. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  124. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js +108 -74
  125. package/dist/collection/components/q2-dropdown-item/test/q2-dropdown-item-test.e2e.js.map +1 -1
  126. package/dist/collection/components/q2-editable-field/q2-editable-field.js +1 -1
  127. package/dist/collection/components/q2-example/q2-example.css +66 -0
  128. package/dist/collection/components/q2-example/q2-example.js +312 -0
  129. package/dist/collection/components/q2-example/q2-example.js.map +1 -0
  130. package/dist/collection/components/q2-example/test/q2-example.e2e.js +27 -0
  131. package/dist/collection/components/q2-example/test/q2-example.e2e.js.map +1 -0
  132. package/dist/collection/components/q2-example/test/q2-example.spec.js +126 -0
  133. package/dist/collection/components/q2-example/test/q2-example.spec.js.map +1 -0
  134. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  135. package/dist/collection/components/q2-input/formatting/alpha.spec.js +10 -0
  136. package/dist/collection/components/q2-input/formatting/alpha.spec.js.map +1 -0
  137. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js +7 -0
  138. package/dist/collection/components/q2-input/formatting/alphanumeric.spec.js.map +1 -0
  139. package/dist/collection/components/q2-input/formatting/currency.spec.js +20 -0
  140. package/dist/collection/components/q2-input/formatting/currency.spec.js.map +1 -0
  141. package/dist/collection/components/q2-input/formatting/date.js +1 -1
  142. package/dist/collection/components/q2-input/formatting/date.js.map +1 -1
  143. package/dist/collection/components/q2-input/formatting/date.spec.js +17 -0
  144. package/dist/collection/components/q2-input/formatting/date.spec.js.map +1 -0
  145. package/dist/collection/components/q2-input/formatting/numeric.spec.js +32 -0
  146. package/dist/collection/components/q2-input/formatting/numeric.spec.js.map +1 -0
  147. package/dist/collection/components/q2-input/formatting/phone.spec.js +16 -0
  148. package/dist/collection/components/q2-input/formatting/phone.spec.js.map +1 -0
  149. package/dist/collection/components/q2-input/formatting/postal.js +1 -1
  150. package/dist/collection/components/q2-input/formatting/postal.js.map +1 -1
  151. package/dist/collection/components/q2-input/formatting/postal.spec.js +28 -0
  152. package/dist/collection/components/q2-input/formatting/postal.spec.js.map +1 -0
  153. package/dist/collection/components/q2-input/formatting/ssn.spec.js +7 -0
  154. package/dist/collection/components/q2-input/formatting/ssn.spec.js.map +1 -0
  155. package/dist/collection/components/q2-input/formatting/tin.spec.js +7 -0
  156. package/dist/collection/components/q2-input/formatting/tin.spec.js.map +1 -0
  157. package/dist/collection/components/q2-input/q2-input.js +58 -44
  158. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  159. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js +259 -2106
  160. package/dist/collection/components/q2-input/test/q2-input-test.e2e.js.map +1 -1
  161. package/dist/collection/components/q2-input/test/q2-input-test.spec.js +4035 -0
  162. package/dist/collection/components/q2-input/test/q2-input-test.spec.js.map +1 -0
  163. package/dist/collection/components/q2-item/q2-item.js +1 -1
  164. package/dist/collection/components/q2-legend/q2-legend.js +1 -1
  165. package/dist/collection/components/q2-link/q2-link.css +17 -20
  166. package/dist/collection/components/q2-link/q2-link.js +2 -2
  167. package/dist/collection/components/q2-link/q2-link.js.map +1 -1
  168. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js +6 -6
  169. package/dist/collection/components/q2-link/test/q2-link-test.e2e.js.map +1 -1
  170. package/dist/collection/components/q2-list/q2-list.js +4 -5
  171. package/dist/collection/components/q2-list/q2-list.js.map +1 -1
  172. package/dist/collection/components/q2-loc/q2-loc.js +66 -4
  173. package/dist/collection/components/q2-loc/q2-loc.js.map +1 -1
  174. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js +19 -30
  175. package/dist/collection/components/q2-loc/test/q2-loc-test.e2e.js.map +1 -1
  176. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js +164 -0
  177. package/dist/collection/components/q2-loc/test/q2-loc-test.spec.js.map +1 -0
  178. package/dist/collection/components/q2-message/q2-message.js +1 -1
  179. package/dist/collection/components/q2-optgroup/q2-optgroup.js +3 -2
  180. package/dist/collection/components/q2-optgroup/q2-optgroup.js.map +1 -1
  181. package/dist/collection/components/q2-option/q2-option.css +1 -1
  182. package/dist/collection/components/q2-option/q2-option.js +57 -34
  183. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  184. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js +110 -106
  185. package/dist/collection/components/q2-option/test/q2-option-test.e2e.js.map +1 -1
  186. package/dist/collection/components/q2-option/test/q2-option-test.spec.js +532 -0
  187. package/dist/collection/components/q2-option/test/q2-option-test.spec.js.map +1 -0
  188. package/dist/collection/components/q2-pagination/q2-pagination.js +9 -5
  189. package/dist/collection/components/q2-pagination/q2-pagination.js.map +1 -1
  190. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js +18 -1
  191. package/dist/collection/components/q2-pagination/test/q2-pagination-test.e2e.js.map +1 -1
  192. package/dist/collection/components/q2-pill/q2-pill.js +18 -17
  193. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  194. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +128 -57
  195. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  196. package/dist/collection/components/q2-popover/q2-popover.js +17 -4
  197. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  198. package/dist/collection/components/q2-radio/q2-radio.js +1 -1
  199. package/dist/collection/components/q2-radio-group/q2-radio-group.css +19 -9
  200. package/dist/collection/components/q2-radio-group/q2-radio-group.js +2 -2
  201. package/dist/collection/components/q2-radio-group/q2-radio-group.js.map +1 -1
  202. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  203. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  204. package/dist/collection/components/q2-section/q2-section.js +6 -4
  205. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  206. package/dist/collection/components/q2-select/q2-select.js +5 -3
  207. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  208. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js +123 -62
  209. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  210. package/dist/collection/components/q2-stepper/q2-stepper.js +4 -2
  211. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  212. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +3 -2
  213. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js.map +1 -1
  214. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +46 -2
  215. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js.map +1 -1
  216. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js +26 -0
  217. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.e2e.js.map +1 -1
  218. package/dist/collection/components/q2-tab-container/q2-tab-container.js +4 -3
  219. package/dist/collection/components/q2-tab-container/q2-tab-container.js.map +1 -1
  220. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  221. package/dist/collection/components/q2-tag/q2-tag.js +5 -2
  222. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  223. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +55 -4
  224. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  225. package/dist/collection/components/q2-textarea/q2-textarea.js +1 -1
  226. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  227. package/dist/collection/utils/helpers.js +63 -41
  228. package/dist/collection/utils/helpers.js.map +1 -1
  229. package/dist/collection/utils/index.js +83 -0
  230. package/dist/collection/utils/index.js.map +1 -1
  231. package/dist/components/index.js +2 -0
  232. package/dist/components/index.js.map +1 -1
  233. package/dist/components/index2.js +84 -1
  234. package/dist/components/index2.js.map +1 -1
  235. package/dist/components/q2-action-group.js +1 -1
  236. package/dist/components/q2-action-sheet.js +1 -1
  237. package/dist/components/q2-avatar2.js +1 -1
  238. package/dist/components/q2-calendar.js +16 -18
  239. package/dist/components/q2-calendar.js.map +1 -1
  240. package/dist/components/q2-card.js +2 -0
  241. package/dist/components/q2-card.js.map +1 -1
  242. package/dist/components/q2-carousel-pane.js +2 -2
  243. package/dist/components/q2-chart-area.js +16 -2
  244. package/dist/components/q2-chart-area.js.map +1 -1
  245. package/dist/components/q2-chart-bar.js +1 -1
  246. package/dist/components/q2-chart-donut.js +19 -2
  247. package/dist/components/q2-chart-donut.js.map +1 -1
  248. package/dist/components/q2-checkbox-group.js +5 -4
  249. package/dist/components/q2-checkbox-group.js.map +1 -1
  250. package/dist/components/q2-currency.js +15 -2
  251. package/dist/components/q2-currency.js.map +1 -1
  252. package/dist/components/q2-data-table.js +1 -1
  253. package/dist/components/q2-data-table.js.map +1 -1
  254. package/dist/components/q2-detail.js +1 -1
  255. package/dist/components/q2-dropdown-item2.js +12 -26
  256. package/dist/components/q2-dropdown-item2.js.map +1 -1
  257. package/dist/components/q2-dropdown.js +6 -3
  258. package/dist/components/q2-dropdown.js.map +1 -1
  259. package/dist/components/q2-editable-field.js +1 -1
  260. package/dist/components/q2-example.d.ts +11 -0
  261. package/dist/components/q2-example.js +170 -0
  262. package/dist/components/q2-example.js.map +1 -0
  263. package/dist/components/q2-formatted-text.js +1 -1
  264. package/dist/components/q2-input2.js +41 -37
  265. package/dist/components/q2-input2.js.map +1 -1
  266. package/dist/components/q2-item.js +1 -1
  267. package/dist/components/q2-legend2.js +1 -1
  268. package/dist/components/q2-link.js +3 -3
  269. package/dist/components/q2-link.js.map +1 -1
  270. package/dist/components/q2-list.js +4 -5
  271. package/dist/components/q2-list.js.map +1 -1
  272. package/dist/components/q2-loc.js +55 -2
  273. package/dist/components/q2-loc.js.map +1 -1
  274. package/dist/components/q2-message2.js +1 -1
  275. package/dist/components/q2-month-picker.js +2 -2
  276. package/dist/components/q2-optgroup2.js +3 -2
  277. package/dist/components/q2-optgroup2.js.map +1 -1
  278. package/dist/components/q2-option-list2.js +1 -1
  279. package/dist/components/q2-option2.js +52 -33
  280. package/dist/components/q2-option2.js.map +1 -1
  281. package/dist/components/q2-pagination.js +9 -5
  282. package/dist/components/q2-pagination.js.map +1 -1
  283. package/dist/components/q2-pill.js +18 -17
  284. package/dist/components/q2-pill.js.map +1 -1
  285. package/dist/components/q2-popover2.js +16 -4
  286. package/dist/components/q2-popover2.js.map +1 -1
  287. package/dist/components/q2-radio-group.js +3 -3
  288. package/dist/components/q2-radio-group.js.map +1 -1
  289. package/dist/components/q2-radio.js +1 -1
  290. package/dist/components/q2-relative-time.js +1 -1
  291. package/dist/components/q2-resize-observer2.js +1 -1
  292. package/dist/components/q2-section.js +6 -4
  293. package/dist/components/q2-section.js.map +1 -1
  294. package/dist/components/q2-select2.js +6 -4
  295. package/dist/components/q2-select2.js.map +1 -1
  296. package/dist/components/q2-stepper-pane.js +3 -2
  297. package/dist/components/q2-stepper-pane.js.map +1 -1
  298. package/dist/components/q2-stepper-vertical.js +16 -3
  299. package/dist/components/q2-stepper-vertical.js.map +1 -1
  300. package/dist/components/q2-stepper.js +4 -2
  301. package/dist/components/q2-stepper.js.map +1 -1
  302. package/dist/components/q2-tab-container.js +4 -3
  303. package/dist/components/q2-tab-container.js.map +1 -1
  304. package/dist/components/q2-tab-pane.js +1 -1
  305. package/dist/components/q2-tag.js +5 -2
  306. package/dist/components/q2-tag.js.map +1 -1
  307. package/dist/components/q2-textarea.js +1 -1
  308. package/dist/components/tecton-tab-pane.js +2 -2
  309. package/dist/esm/click-elsewhere_2.entry.js +16 -5
  310. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  311. package/dist/esm/{index-1e1ce94e.js → index-7a5365e2.js} +40 -5
  312. package/dist/esm/index-7a5365e2.js.map +1 -0
  313. package/dist/esm/{index-844fc010.js → index-d18e2a20.js} +86 -3
  314. package/dist/esm/index-d18e2a20.js.map +1 -0
  315. package/dist/esm/loader.js +3 -3
  316. package/dist/esm/q2-action-group.entry.js +2 -2
  317. package/dist/esm/q2-action-sheet.entry.js +3 -3
  318. package/dist/esm/q2-avatar.entry.js +2 -2
  319. package/dist/esm/q2-badge_7.entry.js +49 -44
  320. package/dist/esm/q2-badge_7.entry.js.map +1 -1
  321. package/dist/esm/q2-calendar.entry.js +17 -20
  322. package/dist/esm/q2-calendar.entry.js.map +1 -1
  323. package/dist/esm/q2-card.entry.js +4 -2
  324. package/dist/esm/q2-card.entry.js.map +1 -1
  325. package/dist/esm/q2-carousel-pane.entry.js +4 -4
  326. package/dist/esm/q2-carousel.entry.js +2 -2
  327. package/dist/esm/q2-chart-area.entry.js +16 -3
  328. package/dist/esm/q2-chart-area.entry.js.map +1 -1
  329. package/dist/esm/q2-chart-bar.entry.js +3 -3
  330. package/dist/esm/q2-chart-donut.entry.js +19 -3
  331. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  332. package/dist/esm/q2-checkbox-group.entry.js +6 -5
  333. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  334. package/dist/esm/q2-checkbox.entry.js +2 -2
  335. package/dist/esm/q2-currency.entry.js +14 -2
  336. package/dist/esm/q2-currency.entry.js.map +1 -1
  337. package/dist/esm/q2-data-table.entry.js +3 -3
  338. package/dist/esm/q2-data-table.entry.js.map +1 -1
  339. package/dist/esm/q2-detail.entry.js +3 -3
  340. package/dist/esm/q2-dropdown-item.entry.js +12 -14
  341. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  342. package/dist/esm/q2-dropdown.entry.js +7 -5
  343. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  344. package/dist/esm/q2-editable-field.entry.js +3 -3
  345. package/dist/esm/q2-example.entry.js +141 -0
  346. package/dist/esm/q2-example.entry.js.map +1 -0
  347. package/dist/esm/q2-formatted-text.entry.js +2 -2
  348. package/dist/esm/q2-item.entry.js +3 -3
  349. package/dist/esm/q2-legend.entry.js +2 -2
  350. package/dist/esm/q2-link.entry.js +4 -4
  351. package/dist/esm/q2-link.entry.js.map +1 -1
  352. package/dist/esm/q2-list.entry.js +6 -7
  353. package/dist/esm/q2-list.entry.js.map +1 -1
  354. package/dist/esm/q2-loading-element.entry.js +2 -2
  355. package/dist/esm/q2-loc.entry.js +52 -3
  356. package/dist/esm/q2-loc.entry.js.map +1 -1
  357. package/dist/esm/q2-message.entry.js +3 -3
  358. package/dist/esm/q2-month-picker.entry.js +4 -4
  359. package/dist/esm/q2-optgroup.entry.js +5 -4
  360. package/dist/esm/q2-optgroup.entry.js.map +1 -1
  361. package/dist/esm/q2-option-list.entry.js +2 -2
  362. package/dist/esm/q2-option.entry.js +50 -33
  363. package/dist/esm/q2-option.entry.js.map +1 -1
  364. package/dist/esm/q2-pagination.entry.js +11 -7
  365. package/dist/esm/q2-pagination.entry.js.map +1 -1
  366. package/dist/esm/q2-pill.entry.js +19 -18
  367. package/dist/esm/q2-pill.entry.js.map +1 -1
  368. package/dist/esm/q2-radio-group.entry.js +5 -5
  369. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  370. package/dist/esm/q2-radio.entry.js +3 -3
  371. package/dist/esm/q2-relative-time.entry.js +3 -3
  372. package/dist/esm/q2-resize-observer.entry.js +2 -2
  373. package/dist/esm/q2-section.entry.js +8 -6
  374. package/dist/esm/q2-section.entry.js.map +1 -1
  375. package/dist/esm/q2-select.entry.js +6 -5
  376. package/dist/esm/q2-select.entry.js.map +1 -1
  377. package/dist/esm/q2-stepper-pane.entry.js +5 -4
  378. package/dist/esm/q2-stepper-pane.entry.js.map +1 -1
  379. package/dist/esm/q2-stepper-vertical.entry.js +16 -4
  380. package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
  381. package/dist/esm/q2-stepper.entry.js +6 -4
  382. package/dist/esm/q2-stepper.entry.js.map +1 -1
  383. package/dist/esm/q2-tag.entry.js +6 -4
  384. package/dist/esm/q2-tag.entry.js.map +1 -1
  385. package/dist/esm/q2-tecton-elements.js +3 -3
  386. package/dist/esm/q2-textarea.entry.js +3 -3
  387. package/dist/esm/q2-tooltip.entry.js +2 -2
  388. package/dist/esm/{shapes-36183b2a.js → shapes-c7e1a3fa.js} +2 -2
  389. package/dist/esm/{shapes-36183b2a.js.map → shapes-c7e1a3fa.js.map} +1 -1
  390. package/dist/esm/tecton-tab-pane.entry.js +3 -3
  391. package/dist/q2-tecton-elements/action-sheet-e64cb6f7.js +77 -0
  392. package/dist/q2-tecton-elements/{p-b7554a79.js.map → action-sheet-e64cb6f7.js.map} +1 -1
  393. package/dist/q2-tecton-elements/app-globals-0f993ce5.js +4 -0
  394. package/dist/q2-tecton-elements/{p-e1255160.js.map → app-globals-0f993ce5.js.map} +1 -1
  395. package/dist/q2-tecton-elements/charting-1abfb877.js +34872 -0
  396. package/dist/q2-tecton-elements/{p-2941aafa.js.map → charting-1abfb877.js.map} +1 -1
  397. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +410 -0
  398. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +1 -0
  399. package/dist/q2-tecton-elements/dataSample-7b62e101.js +2602 -0
  400. package/dist/q2-tecton-elements/{p-ad80aef0.js.map → dataSample-7b62e101.js.map} +1 -1
  401. package/dist/q2-tecton-elements/index-3184c760.js +18168 -0
  402. package/dist/q2-tecton-elements/{p-f1e887f5.js.map → index-3184c760.js.map} +1 -1
  403. package/dist/q2-tecton-elements/index-7a5365e2.js +1792 -0
  404. package/dist/q2-tecton-elements/index-7a5365e2.js.map +1 -0
  405. package/dist/q2-tecton-elements/index-d18e2a20.js +323 -0
  406. package/dist/q2-tecton-elements/index-d18e2a20.js.map +1 -0
  407. package/dist/q2-tecton-elements/q2-action-group.entry.js +56 -0
  408. package/dist/q2-tecton-elements/{p-5637c486.entry.js.map → q2-action-group.entry.js.map} +1 -1
  409. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +1480 -0
  410. package/dist/q2-tecton-elements/{p-188eb162.entry.js.map → q2-action-sheet.entry.js.map} +1 -1
  411. package/dist/q2-tecton-elements/q2-avatar.entry.js +101 -0
  412. package/dist/q2-tecton-elements/{p-07d1c3ae.entry.js.map → q2-avatar.entry.js.map} +1 -1
  413. package/dist/q2-tecton-elements/q2-badge_7.entry.js +5449 -0
  414. package/dist/q2-tecton-elements/q2-badge_7.entry.js.map +1 -0
  415. package/dist/q2-tecton-elements/q2-calendar.entry.js +1313 -0
  416. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -0
  417. package/dist/q2-tecton-elements/q2-card.entry.js +170 -0
  418. package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -0
  419. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +130 -0
  420. package/dist/q2-tecton-elements/{p-7aef0c08.entry.js.map → q2-carousel-pane.entry.js.map} +1 -1
  421. package/dist/q2-tecton-elements/q2-carousel.entry.js +4613 -0
  422. package/dist/q2-tecton-elements/{p-e216ef3f.entry.js.map → q2-carousel.entry.js.map} +1 -1
  423. package/dist/q2-tecton-elements/q2-chart-area.entry.js +4330 -0
  424. package/dist/q2-tecton-elements/q2-chart-area.entry.js.map +1 -0
  425. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1479 -0
  426. package/dist/q2-tecton-elements/{p-7906f49e.entry.js.map → q2-chart-bar.entry.js.map} +1 -1
  427. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +4537 -0
  428. package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -0
  429. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +166 -0
  430. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -0
  431. package/dist/q2-tecton-elements/q2-checkbox.entry.js +223 -0
  432. package/dist/q2-tecton-elements/{p-b7de110e.entry.js.map → q2-checkbox.entry.js.map} +1 -1
  433. package/dist/q2-tecton-elements/q2-currency.entry.js +153 -0
  434. package/dist/q2-tecton-elements/q2-currency.entry.js.map +1 -0
  435. package/dist/q2-tecton-elements/q2-data-table.entry.js +622 -0
  436. package/dist/q2-tecton-elements/{p-7903cd15.entry.js.map → q2-data-table.entry.js.map} +1 -1
  437. package/dist/q2-tecton-elements/q2-detail.entry.js +128 -0
  438. package/dist/q2-tecton-elements/{p-f5f23659.entry.js.map → q2-detail.entry.js.map} +1 -1
  439. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +146 -0
  440. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -0
  441. package/dist/q2-tecton-elements/q2-dropdown.entry.js +430 -0
  442. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -0
  443. package/dist/q2-tecton-elements/q2-editable-field.entry.js +296 -0
  444. package/dist/q2-tecton-elements/{p-896c7008.entry.js.map → q2-editable-field.entry.js.map} +1 -1
  445. package/dist/q2-tecton-elements/q2-example.entry.js +152 -0
  446. package/dist/q2-tecton-elements/q2-example.entry.js.map +1 -0
  447. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +73 -0
  448. package/dist/q2-tecton-elements/{p-7c9f8b62.entry.js.map → q2-formatted-text.entry.js.map} +1 -1
  449. package/dist/q2-tecton-elements/q2-item.entry.js +158 -0
  450. package/dist/q2-tecton-elements/{p-7c9a0122.entry.js.map → q2-item.entry.js.map} +1 -1
  451. package/dist/q2-tecton-elements/q2-legend.entry.js +146 -0
  452. package/dist/q2-tecton-elements/{p-ff8f1a32.entry.js.map → q2-legend.entry.js.map} +1 -1
  453. package/dist/q2-tecton-elements/q2-link.entry.js +83 -0
  454. package/dist/q2-tecton-elements/q2-link.entry.js.map +1 -0
  455. package/dist/q2-tecton-elements/q2-list.entry.js +100 -0
  456. package/dist/q2-tecton-elements/q2-list.entry.js.map +1 -0
  457. package/dist/q2-tecton-elements/q2-loading-element.entry.js +36 -0
  458. package/dist/q2-tecton-elements/{p-a068c84c.entry.js.map → q2-loading-element.entry.js.map} +1 -1
  459. package/dist/q2-tecton-elements/q2-loc.entry.js +82 -0
  460. package/dist/q2-tecton-elements/q2-loc.entry.js.map +1 -0
  461. package/dist/q2-tecton-elements/q2-message.entry.js +99 -0
  462. package/dist/q2-tecton-elements/{p-8d2b02e1.entry.js.map → q2-message.entry.js.map} +1 -1
  463. package/dist/q2-tecton-elements/q2-month-picker.entry.js +198 -0
  464. package/dist/q2-tecton-elements/{p-8d07cf91.entry.js.map → q2-month-picker.entry.js.map} +1 -1
  465. package/dist/q2-tecton-elements/q2-optgroup.entry.js +88 -0
  466. package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -0
  467. package/dist/q2-tecton-elements/q2-option-list.entry.js +585 -0
  468. package/dist/q2-tecton-elements/{p-a5d0e252.entry.js.map → q2-option-list.entry.js.map} +1 -1
  469. package/dist/q2-tecton-elements/q2-option.entry.js +110 -0
  470. package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -0
  471. package/dist/q2-tecton-elements/q2-pagination.entry.js +377 -0
  472. package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -0
  473. package/dist/q2-tecton-elements/q2-pill.entry.js +434 -0
  474. package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -0
  475. package/dist/q2-tecton-elements/q2-radio-group.entry.js +227 -0
  476. package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -0
  477. package/dist/q2-tecton-elements/q2-radio.entry.js +144 -0
  478. package/dist/q2-tecton-elements/{p-c235ab3f.entry.js.map → q2-radio.entry.js.map} +1 -1
  479. package/dist/q2-tecton-elements/q2-relative-time.entry.js +162 -0
  480. package/dist/q2-tecton-elements/{p-95a7c042.entry.js.map → q2-relative-time.entry.js.map} +1 -1
  481. package/dist/q2-tecton-elements/q2-resize-observer.entry.js +100 -0
  482. package/dist/q2-tecton-elements/{p-e2c800ef.entry.js.map → q2-resize-observer.entry.js.map} +1 -1
  483. package/dist/q2-tecton-elements/q2-section.entry.js +256 -0
  484. package/dist/q2-tecton-elements/q2-section.entry.js.map +1 -0
  485. package/dist/q2-tecton-elements/q2-select.entry.js +684 -0
  486. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -0
  487. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +124 -0
  488. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js.map +1 -0
  489. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +356 -0
  490. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -0
  491. package/dist/q2-tecton-elements/q2-stepper.entry.js +332 -0
  492. package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -0
  493. package/dist/q2-tecton-elements/q2-tag.entry.js +213 -0
  494. package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -0
  495. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +21 -1
  496. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  497. package/dist/q2-tecton-elements/q2-textarea.entry.js +364 -0
  498. package/dist/q2-tecton-elements/{p-f135b265.entry.js.map → q2-textarea.entry.js.map} +1 -1
  499. package/dist/q2-tecton-elements/q2-tooltip.entry.js +105 -0
  500. package/dist/q2-tecton-elements/{p-c5667d5d.entry.js.map → q2-tooltip.entry.js.map} +1 -1
  501. package/dist/q2-tecton-elements/sectorHelper-183cedd0.js +949 -0
  502. package/dist/q2-tecton-elements/{p-eea5aa01.js.map → sectorHelper-183cedd0.js.map} +1 -1
  503. package/dist/q2-tecton-elements/shapes-c7e1a3fa.js +132 -0
  504. package/dist/q2-tecton-elements/{p-50b425de.js.map → shapes-c7e1a3fa.js.map} +1 -1
  505. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +134 -0
  506. package/dist/q2-tecton-elements/{p-96b1406c.entry.js.map → tecton-tab-pane.entry.js.map} +1 -1
  507. package/dist/types/components/q2-calendar/q2-calendar.d.ts +4 -5
  508. package/dist/types/components/q2-chart-area/q2-chart-area.d.ts +6 -0
  509. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +6 -0
  510. package/dist/types/components/q2-currency/q2-currency.d.ts +7 -0
  511. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +1 -1
  512. package/dist/types/components/q2-dropdown-item/q2-dropdown-item.d.ts +2 -2
  513. package/dist/types/components/q2-example/q2-example.d.ts +119 -0
  514. package/dist/types/components/q2-input/formatting/date.d.ts +22 -0
  515. package/dist/types/components/q2-input/formatting/postal.d.ts +197 -0
  516. package/dist/types/components/q2-input/q2-input.d.ts +15 -12
  517. package/dist/types/components/q2-loc/q2-loc.d.ts +15 -1
  518. package/dist/types/components/q2-option/q2-option.d.ts +11 -3
  519. package/dist/types/components/q2-pill/q2-pill.d.ts +3 -3
  520. package/dist/types/components/q2-popover/q2-popover.d.ts +1 -0
  521. package/dist/types/components/q2-select/q2-select.d.ts +1 -1
  522. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +6 -0
  523. package/dist/types/components/q2-tag/q2-tag.d.ts +1 -1
  524. package/dist/types/components.d.ts +104 -14
  525. package/dist/types/utils/helpers.d.ts +13 -0
  526. package/dist/types/utils/index.d.ts +11 -0
  527. package/package.json +7 -7
  528. package/dist/cjs/index-14c3693c.js.map +0 -1
  529. package/dist/cjs/index-9aa4a776.js.map +0 -1
  530. package/dist/esm/index-1e1ce94e.js.map +0 -1
  531. package/dist/esm/index-844fc010.js.map +0 -1
  532. package/dist/q2-tecton-elements/p-06701928.entry.js +0 -2
  533. package/dist/q2-tecton-elements/p-06701928.entry.js.map +0 -1
  534. package/dist/q2-tecton-elements/p-07d1c3ae.entry.js +0 -2
  535. package/dist/q2-tecton-elements/p-1305f7ca.entry.js +0 -2
  536. package/dist/q2-tecton-elements/p-1305f7ca.entry.js.map +0 -1
  537. package/dist/q2-tecton-elements/p-15ac45d6.js +0 -2
  538. package/dist/q2-tecton-elements/p-15ac45d6.js.map +0 -1
  539. package/dist/q2-tecton-elements/p-16910682.entry.js +0 -2
  540. package/dist/q2-tecton-elements/p-16910682.entry.js.map +0 -1
  541. package/dist/q2-tecton-elements/p-188eb162.entry.js +0 -3
  542. package/dist/q2-tecton-elements/p-1c760a89.entry.js +0 -2
  543. package/dist/q2-tecton-elements/p-1c760a89.entry.js.map +0 -1
  544. package/dist/q2-tecton-elements/p-1c88d057.entry.js +0 -2
  545. package/dist/q2-tecton-elements/p-1c88d057.entry.js.map +0 -1
  546. package/dist/q2-tecton-elements/p-20a3d6ed.entry.js +0 -2
  547. package/dist/q2-tecton-elements/p-20a3d6ed.entry.js.map +0 -1
  548. package/dist/q2-tecton-elements/p-2733583e.entry.js +0 -2
  549. package/dist/q2-tecton-elements/p-2733583e.entry.js.map +0 -1
  550. package/dist/q2-tecton-elements/p-2941aafa.js +0 -39
  551. package/dist/q2-tecton-elements/p-3e428290.entry.js +0 -2
  552. package/dist/q2-tecton-elements/p-3e428290.entry.js.map +0 -1
  553. package/dist/q2-tecton-elements/p-4774e5b3.entry.js +0 -2
  554. package/dist/q2-tecton-elements/p-4774e5b3.entry.js.map +0 -1
  555. package/dist/q2-tecton-elements/p-490ef8e5.entry.js +0 -2
  556. package/dist/q2-tecton-elements/p-490ef8e5.entry.js.map +0 -1
  557. package/dist/q2-tecton-elements/p-4e10550d.entry.js +0 -2
  558. package/dist/q2-tecton-elements/p-4e10550d.entry.js.map +0 -1
  559. package/dist/q2-tecton-elements/p-50b425de.js +0 -2
  560. package/dist/q2-tecton-elements/p-50f7328f.entry.js +0 -2
  561. package/dist/q2-tecton-elements/p-50f7328f.entry.js.map +0 -1
  562. package/dist/q2-tecton-elements/p-5637c486.entry.js +0 -2
  563. package/dist/q2-tecton-elements/p-56df21b0.entry.js +0 -2
  564. package/dist/q2-tecton-elements/p-56df21b0.entry.js.map +0 -1
  565. package/dist/q2-tecton-elements/p-5a834214.entry.js +0 -2
  566. package/dist/q2-tecton-elements/p-5a834214.entry.js.map +0 -1
  567. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js +0 -2
  568. package/dist/q2-tecton-elements/p-5f99a4a8.entry.js.map +0 -1
  569. package/dist/q2-tecton-elements/p-72d948b4.entry.js +0 -2
  570. package/dist/q2-tecton-elements/p-72d948b4.entry.js.map +0 -1
  571. package/dist/q2-tecton-elements/p-7903cd15.entry.js +0 -2
  572. package/dist/q2-tecton-elements/p-7906f49e.entry.js +0 -2
  573. package/dist/q2-tecton-elements/p-7aef0c08.entry.js +0 -2
  574. package/dist/q2-tecton-elements/p-7c9a0122.entry.js +0 -2
  575. package/dist/q2-tecton-elements/p-7c9f8b62.entry.js +0 -2
  576. package/dist/q2-tecton-elements/p-81fbe718.entry.js +0 -2
  577. package/dist/q2-tecton-elements/p-81fbe718.entry.js.map +0 -1
  578. package/dist/q2-tecton-elements/p-896c7008.entry.js +0 -2
  579. package/dist/q2-tecton-elements/p-8d07cf91.entry.js +0 -2
  580. package/dist/q2-tecton-elements/p-8d2b02e1.entry.js +0 -2
  581. package/dist/q2-tecton-elements/p-95a7c042.entry.js +0 -2
  582. package/dist/q2-tecton-elements/p-96b1406c.entry.js +0 -2
  583. package/dist/q2-tecton-elements/p-a068c84c.entry.js +0 -2
  584. package/dist/q2-tecton-elements/p-a47597dd.entry.js +0 -2
  585. package/dist/q2-tecton-elements/p-a47597dd.entry.js.map +0 -1
  586. package/dist/q2-tecton-elements/p-a5d0e252.entry.js +0 -2
  587. package/dist/q2-tecton-elements/p-a5f18e27.js +0 -3
  588. package/dist/q2-tecton-elements/p-a5f18e27.js.map +0 -1
  589. package/dist/q2-tecton-elements/p-ac6aa392.entry.js +0 -2
  590. package/dist/q2-tecton-elements/p-ac6aa392.entry.js.map +0 -1
  591. package/dist/q2-tecton-elements/p-ad057d10.entry.js +0 -2
  592. package/dist/q2-tecton-elements/p-ad057d10.entry.js.map +0 -1
  593. package/dist/q2-tecton-elements/p-ad80aef0.js +0 -2
  594. package/dist/q2-tecton-elements/p-b0e5e9dc.entry.js +0 -2
  595. package/dist/q2-tecton-elements/p-b0e5e9dc.entry.js.map +0 -1
  596. package/dist/q2-tecton-elements/p-b1784be3.entry.js +0 -2
  597. package/dist/q2-tecton-elements/p-b1784be3.entry.js.map +0 -1
  598. package/dist/q2-tecton-elements/p-b7554a79.js +0 -2
  599. package/dist/q2-tecton-elements/p-b7de110e.entry.js +0 -2
  600. package/dist/q2-tecton-elements/p-c235ab3f.entry.js +0 -2
  601. package/dist/q2-tecton-elements/p-c5667d5d.entry.js +0 -2
  602. package/dist/q2-tecton-elements/p-e1255160.js +0 -2
  603. package/dist/q2-tecton-elements/p-e216ef3f.entry.js +0 -2
  604. package/dist/q2-tecton-elements/p-e2c800ef.entry.js +0 -2
  605. package/dist/q2-tecton-elements/p-eea5aa01.js +0 -2
  606. package/dist/q2-tecton-elements/p-f135b265.entry.js +0 -2
  607. package/dist/q2-tecton-elements/p-f1e887f5.js +0 -2
  608. package/dist/q2-tecton-elements/p-f5f23659.entry.js +0 -2
  609. package/dist/q2-tecton-elements/p-f7867f21.entry.js +0 -2
  610. package/dist/q2-tecton-elements/p-f7867f21.entry.js.map +0 -1
  611. package/dist/q2-tecton-elements/p-ff8f1a32.entry.js +0 -2
  612. package/dist/q2-tecton-elements/p-fff01dc1.entry.js +0 -2
  613. package/dist/q2-tecton-elements/p-fff01dc1.entry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-input-test.spec.js","sourceRoot":"","sources":["../../../../src/components/q2-input/test/q2-input-test.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACH,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,SAAS,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,cAAc,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,kBAAkB,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,WAAW,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,aAAa,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,gDAAgD;AAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACpC,MAAM,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACvC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACtF,MAAM,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAExC,kDAAkD;AACjD,aAAqB,GAAG,iBAAiB,CAAC;AAC1C,eAAuB,GAAG,mBAAmB,CAAC;AAC9C,gBAAwB,GAAG,oBAAoB,CAAC;AAChD,SAAiB,GAAG,aAAa,CAAC;AAEnC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,IAAI,QAAkB,CAAC;IACvB,IAAI,UAAU,CAAC;IACf,IAAI,YAAY,CAAC;IACjB,IAAI,gBAAgB,CAAC;IACrB,MAAM,sBAAsB,GAAG;QAC3B,4BAA4B,EAAE,UAAU;QACxC,kCAAkC,EAAE,gBAAgB;QACpD,4BAA4B,EAAE,UAAU;QACxC,2BAA2B,EAAE,SAAS;QACtC,+BAA+B,EAAE,YAAY;QAC7C,+BAA+B,EAAE,aAAa;QAC9C,2CAA2C,EAAE,MAAM;QACnD,2CAA2C,EAAE,MAAM;KACtD,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACZ,4FAA4F;QAC5F,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE;YACvD,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE;gBACD,OAAO,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,GAAG,EAAE,UAAU,KAAK;gBAChB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC/B,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;gBACzE,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE;YACrD,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE;gBACD,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,GAAG,EAAE,UAAU,KAAK;gBAChB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;oBACjC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC3E,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM;YACnF,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF,yEAAyE;QACzE,oEAAoE;QACpE,MAAM,CAAC,YAAY,GAAG,GAAG,EAAE;YACvB,OAAO;gBACH,QAAQ,EAAE,GAAG,EAAE;oBACX,OAAO,aAAa,IAAI,EAAE,CAAC;gBAC/B,CAAC;aACJ,CAAC;QACN,CAAC,CAAC;QAEF,sFAAsF;QACtF,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;YACpC,kFAAkF;YAClF,MAAM,CAAC,UAAU,GAAG,MAAM,UAAW,SAAQ,KAAK;gBAC9C,YAAY,IAAc,EAAE,OAAO,GAAG,EAAE;oBACpC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzB,CAAC;aACJ,CAAC;QACN,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,cAAc;QACd,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAC9B,mBAAmB,CAAC,SAAS,EAAE,CAAC;QAChC,oBAAoB,CAAC,SAAS,EAAE,CAAC;QACjC,aAAa,CAAC,SAAS,EAAE,CAAC;QAC1B,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC7B,qBAAqB,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAC7B,QAAQ,GAAG,MAAM,oBAAoB,CACjC;gBACI,UAAU,EAAE,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,0DAA0D;aACnE,EACD,sBAAsB,CACzB,CAAC;YACF,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;YACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACnC,QAAQ,GAAG,MAAM,oBAAoB,CACjC;gBACI,UAAU,EAAE,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,sEAAsE;aAC/E,EACD,sBAAsB,CACzB,CAAC;YACF,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;YACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACrC,QAAQ,GAAG,MAAM,oBAAoB,CACjC;gBACI,UAAU,EAAE,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,wCAAwC;aACjD,EACD,sBAAsB,CACzB,CAAC;YACF,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;YACnC,UAAU,CAAC,MAAM,GAAG,CAAC,4BAA4B,CAAC,CAAC;YACnD,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;YACnF,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACpC,QAAQ,GAAG,MAAM,oBAAoB,CACjC;gBACI,UAAU,EAAE,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,wCAAwC;aACjD,EACD,sBAAsB,CACzB,CAAC;YACF,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;YACnC,UAAU,CAAC,KAAK,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACjD,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;YAClF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACtC,QAAQ,GAAG,MAAM,oBAAoB,CACjC;gBACI,UAAU,EAAE,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,iDAAiD;aAC1D,EACD,sBAAsB,CACzB,CAAC;YACF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACtC,QAAQ,GAAG,MAAM,oBAAoB,CACjC;gBACI,UAAU,EAAE,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,iDAAiD;aAC1D,EACD,sBAAsB,CACzB,CAAC;YACF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;YAC3B,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;gBAC9E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,uDAAuD;iBAChE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACjD,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACtC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;gBACjC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,uDAAuD;iBAChE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,YAAY,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;YAC/C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;gBAChC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAClC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,sEAAsE;iBAC/E,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,6DAA6D;iBACtE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACtF,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC3B,EAAE,CAAC,oCAAoC,KAAK,oBAAoB,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE;oBACjF,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,6CAA6C,KAAK,eAAe;qBAC1E,CAAC,CAAC;oBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC5C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACnE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,sDAAsD;iBAC/D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,gEAAgE;iBACzE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;gBAC1C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,mEAAmE;iBAC5E,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACvD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,0DAA0D;iBACnE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC5D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,+DAA+D;iBACxE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;gBAC1D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,0DAA0D;iBACnE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACvD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC5B,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;gBACnD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACnD,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC5B,UAAU,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;gBAC7C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,8EAA8E;iBACvF,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,gFAAgF;iBACzF,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACnE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;gBAC9C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,+EAA+E;iBACxF,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;gBAChE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wDAAwD;iBACjE,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACvD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wDAAwD;iBACjE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;gBAC7E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,kDAAkD;iBAC3D,CAAC,CAAC;gBACH,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;gBAC1F,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBAC9E,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;gBAC1D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,uDAAuD;iBAChE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;gBACjC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,YAAY,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;gBACjC,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBACnF,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACnE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;gBAClD,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC7B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;gBAC7D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,oEAAoE;iBAC7E,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,mDAAmD;iBAC5D,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACxC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,2DAA2D;iBACpE,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;gBACvB,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;oBACtE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,sDAAsD;qBAC/D,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;oBACjC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;gBACxB,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;oBACrE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,8DAA8D;qBACvE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;oBACjC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBAClF,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBAC/C,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,0DAA0D;iBACnE,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACnE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC5D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,2DAA2D;iBACpE,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;gBACnE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACpE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;gBACnE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACvD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;gBAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;gBAC1F,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,0EAA0E;iBACnF,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,YAAY,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC7E,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACvD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,uDAAuD;iBAChE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACpE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wDAAwD;iBACjE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;gBAC1E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,oEAAoE;iBAC7E,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,YAAY,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;gBAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;gBAC1F,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,0EAA0E;iBACnF,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,YAAY,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC/E,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC5D,QAAQ,GAAG,MAAM,oBAAoB,CACjC;oBACI,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,EACD,sBAAsB,CACzB,CAAC;gBACF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;gBACnD,QAAQ,GAAG,MAAM,oBAAoB,CACjC;oBACI,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,EACD,sBAAsB,CACzB,CAAC;gBACF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACrD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,8DAA8D;iBACvE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,oDAAoD;iBAC7D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,QAAQ,GAAG,MAAM,oBAAoB,CACjC;oBACI,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,sEAAsE;iBAC/E,EACD,sBAAsB,CACzB,CAAC;gBACF,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,+CAA+C;iBACxD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;gBAC1C,QAAQ,GAAG,MAAM,oBAAoB,CACjC;oBACI,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,EACD,sBAAsB,CACzB,CAAC;gBACF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;gBACjC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,YAAY,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,+DAA+D;iBACxE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;gBAC7C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,mDAAmD;iBAC5D,CAAC,CAAC;gBACH,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAC1E,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAClC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBACjC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;oBACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,uFAAuF;qBAChG,CAAC,CAAC;oBACH,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;oBAC1F,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBACrC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;oBACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,2FAA2F;qBACpG,CAAC,CAAC;oBACH,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;oBAC1F,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAChC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;oBACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,8FAA8F;qBACvG,CAAC,CAAC;oBACH,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;oBAC1F,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAChC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;oBACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,6FAA6F;qBACtG,CAAC,CAAC;oBACH,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;oBAC1F,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;gBACxF,QAAQ,GAAG,MAAM,oBAAoB,CACjC;oBACI,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,2FAA2F;iBACpG,EACD,sBAAsB,CACzB,CAAC;gBACF,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;gBAC1F,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACnE,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC9B,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACnE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,uFAAuF;iBAChG,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvD,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC7B,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3D,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC9B,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;gBAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,iDAAiD;iBAC1D,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wDAAwD;iBACjE,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,oDAAoD;iBAC7D,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,oCAAoC;iBAC7C,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,uBAAuB;iBAChC,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;gBACnD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC;gBACnC,YAAY,CAAC,KAAK,GAAG,GAAG,CAAC;gBACzB,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE;oBAC5C,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;wBACR,KAAK,EAAE,KAAK;wBACZ,eAAe,EAAE,IAAI;qBACxB,CAAC;oBACF,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;gBACH,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC3B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;oBAChC,KAAK,EAAE,KAAK;oBACZ,eAAe,EAAE,IAAI;iBACxB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;gBAChE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBACzC,QAAQ,GAAG,MAAM,oBAAoB,CACjC;oBACI,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,0DAA0D;iBACnE,EACD,sBAAsB,CACzB,CAAC;gBACF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;gBAClF,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACxD,UAAU,CAAC,KAAK,GAAG,cAAc,CAAC;gBAClC,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;oBACnC,KAAK,EAAE,cAAc;oBACrB,cAAc,EAAE,cAAc;oBAC9B,kBAAkB,EAAE,SAAS;iBAChC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,mEAAmE;iBAC5E,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACtD,MAAM,WAAW,GAAgB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBACnG,WAAW,CAAC,KAAK,EAAE,CAAC;gBACpB,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACrD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,mDAAmD;iBAC5D,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC9D,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;gBAChC,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/C,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACxC,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC;oBACtC,KAAK,EAAE,UAAU;oBACjB,cAAc,EAAE,YAAY;oBAC5B,mBAAmB,EAAE,YAAY;oBACjC,wBAAwB,EAAE,CAAC;oBAC3B,gBAAgB,EAAE,UAAU;oBAC5B,kBAAkB,EAAE,EAAE;oBACtB,SAAS,EAAE,EAAE;oBACb,MAAM,EAAE,EAAE;iBACb,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;gBACnD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACtD,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;gBAChC,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAE/C,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC;oBAClC,KAAK,EAAE,UAAU;oBACjB,cAAc,EAAE,UAAU;iBAC7B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;gBACtF,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,2DAA2D;iBACpE,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC;gBACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1D,YAAY,CAAC,KAAK,GAAG,GAAG,CAAC;gBACzB,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE;oBAC5C,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;wBACR,KAAK,EAAE,KAAK;wBACZ,eAAe,EAAE,IAAI;qBACxB,CAAC;oBACF,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;gBACH,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/C,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC3B,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC1C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACxC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAClC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,sCAAsC,GAAG,OAAO,CAAC,SAAS,CAAC,6BAA6B,CAAC;gBAC/F,OAAO,CAAC,SAAS,CAAC,6BAA6B,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC5D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAClC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC3E,OAAO,CAAC,SAAS,CAAC,6BAA6B,GAAG,sCAAsC,CAAC;YAC7F,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBACjC,MAAM,oBAAoB,GAAG;oBACzB,UAAU,EAAE,cAAc;iBAC7B,CAAC;gBACF,UAAU,CAAC,gBAAgB,GAAG,oBAAmD,CAAC;gBAClF,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAClC,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC3C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAClC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC5D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wDAAwD;iBACjE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBACxD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;oBAC5C,KAAK,EAAE,UAAU;oBACjB,cAAc,EAAE,UAAU;oBAC1B,kBAAkB,EAAE,SAAS;oBAC7B,wBAAwB,EAAE,CAAC;oBAC3B,mBAAmB,EAAE,UAAU;oBAC/B,gBAAgB,EAAE,UAAU;iBAC/B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;gBACnC,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;oBAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBAC/D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAC1C,QAAQ,CAAC,IAAI,EACb,gBAAgB,EAChB,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CACzD,CAAC;oBACF,iBAAiB,CAAC,WAAW,EAAE,CAAC;gBACpC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;oBACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,oEAAoE;qBAC7E,CAAC,CAAC;oBACH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;oBACpE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,QAAQ,CAAC,YAAY,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBAClD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,MAAM,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;gBACnD,MAAM,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC;gBACrD,MAAM,sCAAsC,GAAG,OAAO,CAAC,SAAS,CAAC,6BAA6B,CAAC;gBAC/F,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAClC,OAAO,CAAC,SAAS,CAAC,6BAA6B,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC5D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC3E,OAAO,CAAC,SAAS,CAAC,6BAA6B,GAAG,sCAAsC,CAAC;gBACzF,MAAM,CAAC,cAAc,GAAG,sBAAsB,CAAC;YACnD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC9B,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;gBACnC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;gBAC7F,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,oEAAoE;iBAC7E,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACpF,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACnD,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC5B,UAAU,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACvB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACjC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;gBACrD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;gBAC3E,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAChD,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;gBACzE,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,YAAY,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpD,MAAM,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;gBACrD,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;oBACxD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBACnD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;oBAC3C,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBACxE,UAAU,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;oBAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;gBACjD,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;oBAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;oBAC3C,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBACnD,UAAU,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;oBAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACxC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;oBACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAC7B,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBAC5E,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC9C,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;oBAC/E,UAAU,CAAC,aAAa,EAAE,CAAC;oBAC3B,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACrD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;oBAC9C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAC7B,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBAC5E,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;oBACjE,UAAU,CAAC,aAAa,EAAE,CAAC;oBAC3B,MAAM,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAChD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;oBAC9E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,2DAA2D;qBACpE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAC7B,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBAC5E,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC9C,UAAU,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC1D,UAAU,CAAC,aAAa,EAAE,CAAC;oBAC3B,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;gBACxB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;wBAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7B,UAAU,CAAC,UAAU,EAAE,CAAC;wBACxB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACpC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;wBAC7C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mEAAmE;yBAC5E,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;wBAC7D,UAAU,CAAC,UAAU,EAAE,CAAC;wBACxB,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBAC7C,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;wBACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mEAAmE;yBAC5E,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;wBACtD,UAAU,CAAC,UAAU,EAAE,CAAC;wBACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC;4BAClC,KAAK,EAAE,EAAE;4BACT,cAAc,EAAE,EAAE;4BAClB,kBAAkB,EAAE,SAAS;yBAChC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;wBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mEAAmE;yBAC5E,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACxD,UAAU,CAAC,UAAU,EAAE,CAAC;wBACxB,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;4BACnC,KAAK,EAAE,EAAE;4BACT,cAAc,EAAE,EAAE;4BAClB,kBAAkB,EAAE,SAAS;yBAChC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mEAAmE;yBAC5E,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;wBACtD,UAAU,CAAC,UAAU,EAAE,CAAC;wBACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACxC,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;wBAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mEAAmE;yBAC5E,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;wBACnD,UAAU,CAAC,UAAU,EAAE,CAAC;wBACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACxC,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;gBACtB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;oBAC5C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBACnD,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACxC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;oBACtC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;oBACnE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAe,CAAC;oBACnE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;oBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAChC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;oBACzE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,mDAAmD;qBAC5D,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAChC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;oBACvC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;oBACnE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAe,CAAC;oBACnE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;gBAChE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;gBACtE,UAAU,CAAC,SAAS,GAAG,eAAe,CAAC;gBACvC,MAAM,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;gBAC9E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,kDAAkD;iBAC3D,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;gBAClF,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACjD,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC7B,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;gBACnC,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;oBAC3D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvD,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC3B,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;oBACjC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACpC,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;oBACnE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvD,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC5B,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;oBACjC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;gBAC9E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;gBAC/F,UAAU,CAAC,cAAc,GAAG,KAAK,CAAC;gBAClC,MAAM,CAAC,+BAA+B,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAClC,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;gBACzE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC9D,MAAM,wBAAwB,GAAG;oBAC7B,KAAK,EAAE,cAAc;oBACrB,cAAc,EAAE,cAAc;oBAC9B,kBAAkB,EAAE,SAAS;oBAC7B,wBAAwB,EAAE,CAAC;oBAC3B,mBAAmB,EAAE,cAAc;oBACnC,gBAAgB,EAAE,cAAc;iBACnC,CAAC;gBACF,UAAU,CAAC,oBAAoB,GAAG,wBAAwB,CAAC;gBAC3D,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACxC,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,mBAClC,wBAAwB,EAC7B,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;gBACnC,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;oBAC1D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvD,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC3B,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC/B,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACpC,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;oBAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvD,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC5B,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC/B,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACjE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;gBAC/F,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,+BAA+B,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,yDAAyD;iBAClE,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,MAAM,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;gBAC/F,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC;gBAC/B,MAAM,CAAC,+BAA+B,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;gBAC5B,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;oBAC5C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;wBACtC,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC;wBAClD,YAAY,EAAE,oBAAoB,CAAC,UAAU,CAAC,YAAY,EAAE;4BACxD,MAAM;4BACN,OAAO;4BACP,MAAM;4BACN,SAAS;4BACT,MAAM;4BACN,MAAM;4BACN,QAAQ;yBACX,CAAC;wBACF,YAAY,EAAE,oBAAoB,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wBAC9E,oBAAoB,EAAE,oBAAoB,CAAC,UAAU,CAAC,oBAAoB,CAAC;qBAC9E,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;gBAC7B,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;oBAC1C,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,qDAAqD;yBAC9D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;oBAC3C,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,sDAAsD;yBAC/D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;oBAC/D,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mDAAmD;yBAC5D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;oBACrD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBACjC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;wBACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,0DAA0D;yBACnE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;wBACtB,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;wBACtC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,iDAAiD;yBAC1D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7B,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;wBACvC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;wBAC7C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;wBACvC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBAClC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;oBAClC,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;wBACxC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBACvE,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;oBAC1C,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;oBACtC,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;wBAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,0DAA0D;yBACnE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;gBACtC,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;oBAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACvE,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;oBAChE,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;wBACrD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;wBAC1D,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;oBAC7E,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC9B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;oBACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,0DAA0D;qBACnE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;oBACpD,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;wBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;wBAC1D,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;oBACxD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;oBAChC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;wBAC9B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,sDAAsD;yBAC/D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;oBAC5D,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;wBACxC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;wBAC/D,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC7D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;oBAC/C,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;wBAC5B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,2DAA2D;yBACpE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;oBAC5C,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;wBACjE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,qDAAqD;yBAC9D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;oBAC1C,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;wBACrC,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;4BAChC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,oEAAoE;6BAC7E,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACrD,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;wBACjC,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;4BAChC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,gEAAgE;6BACzE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACrD,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;wBAChC,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;4BAChC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,+DAA+D;6BACxE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACrD,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBAClC,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;oBACzE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,4FAA4F;qBACrG,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;oBAC1E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;gBACtB,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;oBACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;oBACjC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;oBACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;oBACvB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC9B,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;oBACrE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,oFAAoF;qBAC7F,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;oBACtE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;oBACtE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,sFAAsF;qBAC/F,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;oBACvE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC9B,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;oBACvC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;wBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC/B,MAAM,iBAAiB,GAAG,cAAc,UAAU,CAAC,IAAI,cAAc,CAAC;wBACtE,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAChE,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;oBACxC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;oBACxD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;gBACxB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;oBAC7C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;gBACrB,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;oBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,QAAQ,GAAG,cAAc,UAAU,CAAC,IAAI,EAAE,CAAC;oBACjD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;gBACvB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;oBAChC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mDAAmD;yBAC5D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;oBAChC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mDAAmD;yBAC5D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACpC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,uDAAuD;yBAChE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;oBACvC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,0DAA0D;yBACnE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBACjC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,oDAAoD;yBAC7D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;oBACxC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,2DAA2D;yBACpE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;oBACvC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;wBAC/B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;oBACzD,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,sDAAsD;yBAC/D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;oBAClC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,qDAAqD;yBAC9D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;oBAChC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mDAAmD;yBAC5D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;oBAChC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mDAAmD;yBAC5D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;oBACzC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,4DAA4D;yBACrE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;oBAClC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,qDAAqD;yBAC9D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACpC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,uDAAuD;yBAChE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;oBACvC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,0DAA0D;yBACnE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;oBACnC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,sDAAsD;yBAC/D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBACjC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,oDAAoD;yBAC7D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;oBACxC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,2DAA2D;yBACpE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;gBACtB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;wBACtC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;wBACjC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBAC3D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACpC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;wBACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC/B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;oBACpD,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;wBAC3C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;wBACjC,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC/B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;wBACvD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;oBAClD,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;wBACpC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC5C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACpC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;oBACzC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;gBACnC,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;oBAC1D,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;wBAC3B,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;oBACzC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACpC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;wBAC5B,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;oBACxC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,2DAA2D;yBACpE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;oBAC1D,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;wBAC1D,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,yEAAyE,EAAE,GAAG,EAAE;oBACrF,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;oBACxE,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;wBAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;wBACjC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;oBACvC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;wBACjC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;wBAC/B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;oBAC3C,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;gBACzB,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACpC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;wBAC3C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAChD,MAAM,CAAC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;oBAC7D,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;wBAC3C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;wBACvB,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3C,MAAM,CAAC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACrD,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;wBACxB,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC5C,MAAM,CAAC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;oBACrD,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;wBACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;wBACpC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;oBACxC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;wBACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;gBACvC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;wBAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,oDAAoD;yBAC7D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBACnG,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;oBACtC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;wBAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBACnG,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBAClC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;wBAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,oDAAoD;yBAC7D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;oBACrF,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;oBACtC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;wBAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;oBACrF,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;gBAC5B,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;oBACvB,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;wBACnC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;4BACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;4BACjC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BACzD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;wBACpC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;4BAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BAC7D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;oBACvB,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;wBAClC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;4BACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BACzD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;wBACjC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;4BAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BAC7D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;oBACvB,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;wBACxD,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;4BACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,mEAAmE;6BAC5E,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BACzD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;wBACvD,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;4BAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,kDAAkD;6BAC3D,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BAC7D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;wBACzD,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;4BAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BAC7D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;oBACvB,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;wBACnC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;4BACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;4BAC3B,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BACzD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;wBACpC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;4BAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;4BAC5B,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;4BAC7D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;oBACtB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;wBAC/B,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;4BAC1B,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;4BACxD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;wBAChC,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;4BAC7D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;4BAC3B,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;4BAC5D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;oBACxB,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;wBACxD,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;4BACvD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;4BACvD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;4BAC1D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;wBACvD,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;4BAC/D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;4BACjD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;4BAC9D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;oBAC3B,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;wBAC7C,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;4BAC1D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,0DAA0D;6BACnE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;4BAC7D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;wBAC5C,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;4BAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;4BACjE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;oBAChC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;wBACzC,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;4BAC/D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,2DAA2D;6BACpE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;4BAClE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;wBAC1C,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;4BACvE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;4BACtE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;oBACxB,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;wBACxD,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;4BACvD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;4BACvD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;4BAC1D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;wBACvD,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;4BAC/D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;4BACjD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;4BAC9D,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;oBAC5B,QAAQ,CAAC,mEAAmE,EAAE,GAAG,EAAE;wBAC/E,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;4BAC3D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,2DAA2D;6BACpE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;4BACjD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;wBAClE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,kEAAkE,EAAE,GAAG,EAAE;wBAC9E,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;4BACnE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;4BACvD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;wBACtE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;oBAC3B,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;wBACrC,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;4BAC1D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wDAAwD;6BACjE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;wBACjE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;oBAC1B,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;wBACzC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;4BACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,oDAAoD;6BAC7D,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;wBAChE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;oBAChC,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;wBAC/C,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;4BAC/D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yEAAyE;6BAClF,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;wBACtE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;wBAChD,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;4BACvE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;wBAC1E,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;gBAC5C,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;oBAC5D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBAEnC,MAAM,cAAc,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;oBACnE,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBAC1D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;oBACrD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;oBAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;oBAC9B,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;wBAC/C,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;4BAC9C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;4BACtE,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;4BAChC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;wBACnF,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;wBACnD,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;4BAC7D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACtE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;oBACzB,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;wBACxC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;4BACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACjE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;wBACvC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;4BAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC3C,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBACjC,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;wBACxC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;4BACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;wBACxE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;wBACvC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;4BACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;wBACxE,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;oBAC1B,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;wBAC/C,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;4BAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;4BACtE,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;4BAChD,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;4BAChC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/C,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;wBACnD,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;4BAC3B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAChD,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;gBAC5C,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;oBAC5D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBAEnC,MAAM,cAAc,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;oBACnE,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBAC1D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;oBACrD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;oBAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;oBAC9B,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;wBAC/C,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;4BAC9C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;4BACtE,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;4BAChC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;wBACnF,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;wBACnD,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;4BAC1B,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,yDAAyD;6BAClE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;4BAC/D,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAChD,CAAC,CAAC,CAAC;wBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;4BACjC,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gCAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oCACrB,IAAI,EAAE,wFAAwF;iCACjG,CAAC,CAAC;gCACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gCACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;gCAC/D,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACpC,UAAU,CAAC,oBAAoB,CAAC,cAAc,CAAC,MAAM,CACxD,CAAC;4BACN,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;oBACzB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;wBAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,qFAAqF;yBAC9F,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;wBAC/D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAC/F,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBACjC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;wBAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;wBAC/D,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACzE,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;oBAC1B,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;wBAClC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,UAAU,GAAG,UAAU,CAAC,8BAA8B,EAAE,CAAC;wBAC/D,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;gBAC1C,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;oBACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;oBACtE,UAAU,CAAC,4BAA4B,EAAE,CAAC;oBAC1C,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACjD,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;oBAC7B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;wBAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,4BAA4B,EAAE,CAAC;wBAC1C,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACzD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;oBACzD,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;wBACrD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,mDAAmD;yBAC5D,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,cAAc,GAAG,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;wBACjE,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBAC/C,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;wBACxD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;wBAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;wBAChD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC;wBAClE,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;wBACnD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;wBAC5D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;wBACrC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;4BAC1D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wDAAwD;6BACjE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;4BACzC,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBAC3C,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;wBAClC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;4BAC1D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,qDAAqD;6BAC9D,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;4BACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACxC,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;wBAChC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;4BAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,mDAAmD;6BAC5D,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;4BACzC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACtC,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;wBAChC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;4BAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,mDAAmD;6BAC5D,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;4BACzC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACtC,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;wBACzC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;4BAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,4DAA4D;6BACrE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;4BAChD,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBAC3C,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;wBAClC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;4BACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,qDAAqD;6BAC9D,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;4BACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACxC,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;wBACpC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;4BACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,uDAAuD;6BAChE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;4BACzC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACtC,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;wBACvC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;4BACpE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,0DAA0D;6BACnE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;4BACnC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBAC7C,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;wBACnC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;4BAC1D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,sDAAsD;6BAC/D,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;4BACtC,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACzC,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;wBACjC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;4BAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,oDAAoD;6BAC7D,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;4BAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACvC,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;wBACxC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;4BACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BACjE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,2DAA2D;6BACpE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;4BACjD,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACzC,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;oBACjE,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;wBACvE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,cAAc,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;wBACtD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBAC/C,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;wBACxD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;wBAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC;wBAClE,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;wBACvD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,cAAc,GAAG,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;wBAChE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC9C,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACvD,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC5D,MAAM,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACxD,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACpC,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;oBAC/C,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;wBACtE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wEAAwE;yBACjF,CAAC,CAAC;wBAEH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;wBAC3E,UAAU,CAAC,uBAAuB,GAAG,IAAI,CAAC;wBAE1C,UAAU,CAAC,sBAAsB,EAAE,CAAC;wBAEpC,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;wBACpD,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACvD,oBAAoB,CAAC,WAAW,EAAE,CAAC;oBACvC,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;oBACnD,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;wBAChG,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,uEAAuE;yBAChF,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;wBAC3E,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;wBAChC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;wBAC9B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE;4BACzC,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE,IAAI;yBACnB,CAAC,CAAC;wBACH,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE;4BAC5C,KAAK,EAAE,uBAAuB;4BAC9B,UAAU,EAAE,IAAI;yBACnB,CAAC,CAAC;wBACH,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE;4BACzC,KAAK,EAAE,YAAY;4BACnB,UAAU,EAAE,IAAI;yBACnB,CAAC,CAAC;wBAEH,UAAU,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;wBAC/C,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBAChD,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACxD,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;wBAC7C,oBAAoB,CAAC,WAAW,EAAE,CAAC;oBACvC,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;wBAC9D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,uEAAuE;yBAChF,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;wBAChC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;wBAC9B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE;4BACzC,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE,IAAI;yBACnB,CAAC,CAAC;wBACH,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE;4BAC5C,KAAK,EAAE,uBAAuB;4BAC9B,UAAU,EAAE,IAAI;yBACnB,CAAC,CAAC;wBACH,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE;4BACzC,KAAK,EAAE,YAAY;4BACnB,UAAU,EAAE,IAAI;yBACnB,CAAC,CAAC;wBAEH,UAAU,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;wBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBAC7C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;gBACnC,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;oBACnD,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;wBACpD,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;4BACtD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,uEAAuE;6BAChF,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;4BACtE,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;4BAChC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;4BAE9B,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,aAAa,EAAE,CAAC;4BAC3D,MAAM,YAAY,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;4BACxE,UAAU,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;4BAC/C,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3D,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;oBACxD,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;wBACrD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,uEAAuE;yBAChF,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;wBAChC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;wBAE9B,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,aAAa,EAAE,CAAC;wBAC3D,MAAM,YAAY,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;wBACxE,UAAU,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;wBAC/C,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;gBAC7B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;oBACpC,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;wBACnF,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;wBACzB,MAAM,uBAAuB,GAAG,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;wBAC9E,UAAU,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;wBACpD,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC7D,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;4BAC5C,KAAK,EAAE,OAAO;4BACd,cAAc,EAAE,OAAO;4BACvB,kBAAkB,EAAE,SAAS;4BAC7B,wBAAwB,EAAE,CAAC;4BAC3B,mBAAmB,EAAE,OAAO;4BAC5B,gBAAgB,EAAE,OAAO;yBAC5B,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;oBACzC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;wBACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,uBAAuB,GAAG,UAAU,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;wBACnF,UAAU,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;wBACpD,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;4BAC5C,KAAK,EAAE,oBAAoB;4BAC3B,cAAc,EAAE,oBAAoB;4BACpC,kBAAkB,EAAE,SAAS;4BAC7B,wBAAwB,EAAE,CAAC;4BAC3B,mBAAmB,EAAE,oBAAoB;4BACzC,gBAAgB,EAAE,oBAAoB;yBACzC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBAClC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;oBACtE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,oEAAoE;qBAC7E,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtD,UAAU,CAAC,oBAAoB,EAAE,CAAC;oBAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC;wBAClC,KAAK,EAAE,UAAU;wBACjB,cAAc,EAAE,YAAY;wBAC5B,kBAAkB,EAAE,EAAE;qBACzB,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;oBACrC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,oEAAoE;qBAC7E,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;oBACjE,UAAU,CAAC,oBAAoB,EAAE,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC5C,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;oBACrC,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;wBAC/D,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,oEAAoE;yBAC7E,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,oBAAoB,EAAE,CAAC;wBAClC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;oBAC7F,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;oBACtD,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;wBACjC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,oEAAoE;yBAC7E,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;wBACtD,UAAU,CAAC,oBAAoB,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC3C,UAAU,CAAC,oBAAoB,EAAE,CAAC;wBAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACxC,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBAClC,0BAA0B;YAC9B,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;oBACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,oEAAoE;qBAC7E,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtD,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC;wBAClC,KAAK,EAAE,EAAE;wBACT,cAAc,EAAE,EAAE;wBAClB,kBAAkB,EAAE,EAAE;qBACzB,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;oBACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,oEAAoE;qBAC7E,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACxD,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;wBACnC,KAAK,EAAE,EAAE;wBACT,cAAc,EAAE,EAAE;wBAClB,kBAAkB,EAAE,EAAE;qBACzB,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;oBACjC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,oEAAoE;qBAC7E,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBACvD,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACzC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;oBACnD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,oEAAoE;qBAC7E,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBACnD,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACxC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;gBACzB,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;oBACpC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC3B,UAAU,CAAC,WAAW,EAAE,CAAC;oBACzB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;oBACpC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,WAAW,EAAE,CAAC;oBACzB,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACpD,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,oEAAoE,EAAE,GAAG,EAAE;oBAChF,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;wBACjF,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,YAAY,GAAG,oBAAoB,CAAC;wBAC/C,UAAU,CAAC,WAAW,EAAE,CAAC;wBACzB,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBAChF,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;wBACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,YAAY,GAAG,oBAAoB,CAAC;wBAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACxD,UAAU,CAAC,WAAW,EAAE,CAAC;wBACzB,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;4BACnC,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,KAAK;4BAC5C,cAAc,EAAE,UAAU,CAAC,oBAAoB,CAAC,mBAAmB;4BACnE,kBAAkB,EAAE,UAAU,CAAC,oBAAoB,CAAC,kBAAkB;yBACzE,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;oBACnD,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;wBACpC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;wBAClE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;wBAC3B,UAAU,CAAC,YAAY,EAAE,CAAC;wBAC1B,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;oBACpD,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;wBAC5C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,0CAA0C;yBACnD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;wBAClE,UAAU,CAAC,YAAY,EAAE,CAAC;wBAC1B,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;oBAClD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;oBACnC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC5B,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;oBACpC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACpD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;oBAChE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,YAAY,GAAG,EAAE,CAAC;oBAC7B,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;oBAChD,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;wBACtD,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;4BAChD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wDAAwD;6BACjE,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;4BAClE,UAAU,CAAC,YAAY,EAAE,CAAC;4BAC1B,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,0DAA0D;4BAChG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BACvD,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBAC9C,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;wBACvD,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;4BACjD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;gCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;gCACrB,IAAI,EAAE,wCAAwC;6BACjD,CAAC,CAAC;4BACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;4BACnC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;4BACjE,UAAU,CAAC,YAAY,EAAE,CAAC;4BAC1B,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,0DAA0D;4BAChG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BACvD,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBAC5C,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;oBACzC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;oBACvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;wBACnC,KAAK,EAAE,YAAY;wBACnB,UAAU,EAAE,IAAI;qBACnB,CAAC,CAAC;oBACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;oBAChE,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC/B,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;oBACjE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,uEAAuE;qBAChF,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;oBACvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;wBACnC,KAAK,EAAE,YAAY;wBACnB,UAAU,EAAE,IAAI;qBACnB,CAAC,CAAC;oBACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;oBAC3E,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC/B,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACjD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;oBACnC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;oBACvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;wBACnC,KAAK,EAAE,YAAY;wBACnB,UAAU,EAAE,IAAI;qBACnB,CAAC,CAAC;oBACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;oBACrE,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC/B,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAClD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;oBACjC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;oBACvC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;wBACnC,KAAK,EAAE,YAAY;wBACnB,UAAU,EAAE,IAAI;qBACnB,CAAC,CAAC;oBACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;oBACjE,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC/B,MAAM,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAChD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;gBAC5B,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;oBACnC,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;wBACzC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;wBACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;wBAC1E,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACjC,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,uEAAuE,EAAE,GAAG,EAAE;oBACnF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;wBAC/C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;wBACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;wBAC9D,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;wBAC3B,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACjC,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACjD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,gFAAgF,EAAE,GAAG,EAAE;oBAC5F,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;wBACpE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,YAAY,GAAG,oBAAoB,CAAC;wBAC/C,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;wBAC7D,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACjC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBAChF,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;wBACpD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,yDAAyD;yBAClE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,YAAY,GAAG,oBAAoB,CAAC;wBAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACxD,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;wBAC7D,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACjC,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;4BACnC,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,KAAK;4BAC5C,cAAc,EAAE,UAAU,CAAC,oBAAoB,CAAC,mBAAmB;4BACnE,kBAAkB,EAAE,UAAU,CAAC,oBAAoB,CAAC,kBAAkB;yBACzE,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;gBAC1B,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;oBACnC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;wBACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,KAAK,GAAG;4BACV,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;4BACzB,aAAa,EAAE;gCACX,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;6BAC5C;yBACyB,CAAC;wBAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;wBAC9D,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBAC/B,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACjD,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;wBACnC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wDAAwD;yBACjE,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,KAAK,GAAG;4BACV,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;4BACzB,aAAa,EAAE;gCACX,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;6BAC5C;yBACyB,CAAC;wBAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;wBACrE,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBAC/B,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBAClD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAChC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;oBACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC;oBAC9B,UAAU,CAAC,kBAAkB,EAAE,CAAC;oBAChC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;gBAC5B,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;oBAC5C,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;wBACnD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;wBACnD,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;wBACjC,UAAU,CAAC,cAAc,EAAE,CAAC;wBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACxC,CAAC,CAAC,CAAC;oBACH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;wBACpC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,wCAAwC;yBACjD,CAAC,CAAC;wBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;wBACnC,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;wBACjC,UAAU,CAAC,cAAc,EAAE,CAAC;wBAC5B,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACpD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAChC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;oBACzD,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBAC7E,UAAU,CAAC,kBAAkB,EAAE,CAAC;oBAChC,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAe,CAAC;oBACpE,MAAM,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBAC5C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;oBACrE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC7B,UAAU,CAAC,kBAAkB,EAAE,CAAC;oBAChC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC9B,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;oBACzF,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yDAAyD;qBAClE,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;oBAChC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;oBAE9B,UAAU,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACpE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,QAAQ,CAAC,+DAA+D,EAAE,GAAG,EAAE;oBAC3E,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;wBACrC,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;4BACzD,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gCAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oCACrB,IAAI,EAAE,uEAAuE;iCAChF,CAAC,CAAC;gCACH,MAAM,UAAU,GAAG;oCACf,gBAAgB,EAAE,CAAC;oCACnB,WAAW,EAAE,CAAC;oCACd,mBAAmB,EAAE,CAAC;oCACtB,YAAY,EAAE,KAAK;iCACtB,CAAC;gCACF,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gCACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gCACtE,YAAY,CAAC,iBAAiB,GAAG,qBAAqB,CAAC;gCACvD,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gCACzC,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gCACjD,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC7D,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;wBACH,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;4BAC7D,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;gCAC1E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oCACrB,IAAI,EAAE,wEAAwE;iCACjF,CAAC,CAAC;gCACH,MAAM,UAAU,GAAG;oCACf,gBAAgB,EAAE,CAAC;oCACnB,WAAW,EAAE,CAAC;oCACd,mBAAmB,EAAE,CAAC;oCACtB,YAAY,EAAE,KAAK;iCACtB,CAAC;gCACF,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gCACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gCACtE,YAAY,CAAC,iBAAiB,GAAG,qBAAqB,CAAC;gCACvD,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gCACzC,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gCACjD,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC7D,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;wBACzC,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;4BAClD,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;gCAC1E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oCACrB,IAAI,EAAE,uEAAuE;iCAChF,CAAC,CAAC;gCACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gCACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gCACtE,YAAY,CAAC,iBAAiB,GAAG,qBAAqB,CAAC;gCACvD,MAAM,UAAU,GAAG;oCACf,gBAAgB,EAAE,CAAC;oCACnB,WAAW,EAAE,CAAC;oCACd,mBAAmB,EAAE,EAAE;oCACvB,YAAY,EAAE,KAAK;iCACtB,CAAC;gCACF,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gCACzC,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gCACjD,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC7D,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;wBACH,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;4BAC3D,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gCACpE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oCAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oCACrB,IAAI,EAAE,uEAAuE;iCAChF,CAAC,CAAC;gCACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gCACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gCACtE,YAAY,CAAC,iBAAiB,GAAG,qBAAqB,CAAC;gCACvD,MAAM,UAAU,GAAG;oCACf,gBAAgB,EAAE,CAAC;oCACnB,WAAW,EAAE,CAAC;oCACd,mBAAmB,EAAE,CAAC;oCACtB,YAAY,EAAE,KAAK;iCACtB,CAAC;gCACF,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gCACzC,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gCACjD,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC7D,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;oBACrF,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,wCAAwC;qBACjD,CAAC,CAAC;oBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;oBAChC,UAAU,CAAC,aAAa,EAAE,CAAC;oBAC3B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBACpC,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;oBACzC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,+DAA+D;qBACxE,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;oBACrE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACnC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;oBAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,+DAA+D;qBACxE,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;oBACrE,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;oBACxC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;wBACtE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;4BAClC,UAAU,EAAE,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,8EAA8E;yBACvF,CAAC,CAAC;wBACH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;wBACrE,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACxC,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACrC,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACjE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;gBACxF,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;gBACzF,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;gBAC/E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;gBACzF,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBAC9E,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACpC,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;gBAC9C,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACnC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACpE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACnE,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,wCAAwC;iBACjD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACrD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC1D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACpD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACpD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACrD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC7D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC1D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC/D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC1D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC5D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACrD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACzD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACzD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBAC/C,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;oBAC5E,QAAQ,GAAG,MAAM,oBAAoB,CAAC;wBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;wBACrB,IAAI,EAAE,yEAAyE;qBAClF,CAAC,CAAC;oBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAC/D,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;oBAC3F,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACtC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAClC,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;gBACtC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,+CAA+C;iBACxD,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACvC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,4EAA4E;iBACrF,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;gBACjC,QAAQ,GAAG,MAAM,oBAAoB,CAAC;oBAClC,UAAU,EAAE,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,gEAAgE;iBACzE,CAAC,CAAC;gBACH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACtE,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { SpecPage } from '@stencil/core/testing';\nimport { setupSpecPageWithLoc } from '@/utils/helpers';\nimport {\n getAriaValueFromProp,\n handleAriaLabel,\n overrideFocus,\n setMessageHeight,\n nextPaint,\n} from '../../../utils/index';\nimport * as formatCurrency from '../formatting/currency';\nimport * as formatPhoneNumber from '../formatting/phone';\nimport * as formatSSN from '../formatting/ssn';\nimport * as formatTIN from '../formatting/tin';\nimport * as formatAlphanumeric from '../formatting/alphanumeric';\nimport * as formatAlpha from '../formatting/alpha';\nimport * as formatNumeric from '../formatting/numeric';\nimport * as formatPostalCode from '../formatting/postal';\nimport * as formatDate from '../formatting/date';\nimport * as formatCreditCard from '../formatting/credit-card';\nimport { Q2Input } from '../q2-input';\n\n// function we want to validate are being called\nconst overrideFocusMock = jest.fn();\nconst handleAriaLabelMock = jest.fn();\nconst setMessageHeightMock = jest.fn();\nconst nextPaintMock = jest.fn();\nconst getSelectionMock = jest.fn().mockImplementation(() => ({ toString: () => '' }));\nconst setSelectionRangeMock = jest.fn();\n\n// reassigning the helper functions to their mocks\n(overrideFocus as any) = overrideFocusMock;\n(handleAriaLabel as any) = handleAriaLabelMock;\n(setMessageHeight as any) = setMessageHeightMock;\n(nextPaint as any) = nextPaintMock;\n\ndescribe('q2-input', () => {\n let specPage: SpecPage;\n let inputClass;\n let inputElement;\n let containerElement;\n const translationStringsDict = {\n 'tecton.element.input.label': 'My Label',\n 'tecton.element.input.placeholder': 'My Placeholder',\n 'tecton.element.input.error': 'My Error',\n 'tecton.element.input.hint': 'My Hint',\n 'tecton.element.input.optional': '(optional)',\n 'tecton.element.input.readonly': '(read only)',\n 'tecton.element.input.toggleAriaLabel.hide': 'Hide',\n 'tecton.element.input.toggleAriaLabel.show': 'Show',\n };\n\n beforeEach(() => {\n // create our own methods in the test environment so we can validate our cursor method logic\n let selectionText = '';\n\n Object.defineProperty(window, 'getSelection', { value: getSelectionMock, writable: true });\n Object.defineProperty(Q2Input.prototype, 'selectionStart', {\n configurable: true,\n get: function () {\n return this._selectionStart || 0;\n },\n set: function (value) {\n this._selectionStart = value;\n if (value !== this._selectionEnd) {\n selectionText = this.value.substring(value, this._selectionEnd || 0);\n }\n },\n });\n\n Object.defineProperty(Q2Input.prototype, 'selectionEnd', {\n configurable: true,\n get: function () {\n return this._selectionEnd || 0;\n },\n set: function (value) {\n this._selectionEnd = value;\n if (this._selectionStart !== value) {\n selectionText = this.value.substring(this._selectionStart || 0, value);\n }\n },\n });\n\n HTMLInputElement.prototype.setSelectionRange = function (start, end, direction = 'none') {\n this._selectionStart = start;\n this._selectionEnd = end;\n this._selectionDirection = direction;\n selectionText = this.value.substring(start, end);\n };\n\n // add a getSelection method to the window object in the test environment\n // @ts-expect-error (TS doesn't like overriding window.getSelection)\n window.getSelection = () => {\n return {\n toString: () => {\n return selectionText || '';\n },\n };\n };\n\n // compensates for the errors when InputEvent is not available in the test environment\n if (typeof InputEvent === 'undefined') {\n // @ts-expect-error (TS doesn't like the limited implementation of the InputEvent)\n global.InputEvent = class InputEvent extends Event {\n constructor(type: 'string', options = {}) {\n super(type, options);\n }\n };\n }\n });\n\n afterEach(() => {\n // clear mocks\n overrideFocusMock.mockClear();\n handleAriaLabelMock.mockClear();\n setMessageHeightMock.mockClear();\n nextPaintMock.mockClear();\n getSelectionMock.mockClear();\n setSelectionRangeMock.mockClear();\n });\n\n describe('Localization', () => {\n it('localizes label', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"tecton.element.input.label\"></q2-input>',\n },\n translationStringsDict\n );\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).toEqualText('My Label');\n });\n it('localizes placeholder', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input placeholder=\"tecton.element.input.placeholder\"></q2-input>',\n },\n translationStringsDict\n );\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('placeholder')).toBe('My Placeholder');\n });\n it('localizes error message', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n },\n translationStringsDict\n );\n inputClass = specPage.rootInstance;\n inputClass.errors = ['tecton.element.input.error'];\n await specPage.waitForChanges();\n const errorElement = specPage.root.shadowRoot.querySelector('.messages-container');\n expect(errorElement).toEqualText('My Error');\n });\n it('localizes hint message', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n },\n translationStringsDict\n );\n inputClass = specPage.rootInstance;\n inputClass.hints = ['tecton.element.input.hint'];\n await specPage.waitForChanges();\n const hintElement = specPage.root.shadowRoot.querySelector('.messages-container');\n expect(hintElement).toEqualText('My Hint');\n });\n it('localizes optional label', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" optional></q2-input>',\n },\n translationStringsDict\n );\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).toEqualText('My Label(optional)');\n });\n it('localizes readonly label', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" readonly></q2-input>',\n },\n translationStringsDict\n );\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).toEqualText('My Label(read only)');\n });\n });\n\n describe('Props', () => {\n describe('_preventEntry', () => {\n it('sets readonly attribute true without adding the (readonly) label', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" _prevent-entry></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(inputElement).toHaveAttribute('readonly');\n expect(label).toEqualText('My Label');\n expect(label).not.toEqualText('My Label (readonly)');\n });\n it('prevents user input', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" _prevent-entry></q2-input>',\n });\n inputElement = specPage.root;\n inputElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'a' }));\n expect(inputElement.value).toBeUndefined();\n });\n });\n describe('_role', () => {\n it('is null by default', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root;\n expect(inputElement.getAttribute('role')).toBeNull();\n });\n it('sets the role attribute on the input', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" _role=\"combobox\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('role')).toBe('combobox');\n });\n });\n describe('ariaActivedescendant', () => {\n it('sets the aria-activedescendant attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" aria-activedescendant=\"my-id\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('aria-activedescendant')).toBe('my-id');\n });\n });\n describe('ariaExpanded', () => {\n it('sets the value of the aria-expanded attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" aria-expanded=\"true\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('aria-expanded')).toBe('true');\n });\n it('is not added when not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.hasAttribute('aria-expanded')).toBe(false);\n });\n });\n describe('ariaHaspopup', () => {\n const hasPopupValues = ['true', 'false', 'menu', 'listbox', 'tree', 'grid', 'dialog'];\n hasPopupValues.forEach(value => {\n it(`sets aria-haspopup attribute to \"${value}\" when provided \"${value}\"`, async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: `<q2-input label=\"My Label\" aria-haspopup=\"${value}\"></q2-input>`,\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('aria-haspopup')).toBe(value);\n });\n });\n it('is not added when not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.hasAttribute('aria-haspopup')).toBe(false);\n });\n it('is set as an empty string when provided with no value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" aria-haspopup></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('aria-haspopup')).toBe('');\n });\n it('is set to null when provided an invalid value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" aria-haspopup=\"invalid\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('aria-haspopup')).toBeNull();\n });\n });\n describe('ariaLabel', () => {\n it('is set to null when provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" aria-label=\"My Aria Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('aria-label')).toBeNull();\n });\n });\n describe('ariaOwns', () => {\n it('sets the value of the aria-owns attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" aria-owns=\"my-id\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('aria-owns')).toBe('my-id');\n });\n });\n describe('autocapitalize', () => {\n it('sets the value of the autocapitalize attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" autocapitalize=\"words\"></q2-input>',\n });\n inputElement = specPage.root;\n expect(inputElement.getAttribute('autocapitalize')).toBe('words');\n });\n });\n describe('autocomplete', () => {\n it('sets the value of the autocomplete attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" autocomplete=\"on\"></q2-input>',\n });\n inputElement = specPage.root;\n expect(inputElement.getAttribute('autocomplete')).toBe('on');\n });\n });\n describe('autocorrect', () => {\n it('sets the value of the autocorrect attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" autocorrect=\"on\"></q2-input>',\n });\n inputElement = specPage.root;\n expect(inputElement.getAttribute('autocorrect')).toBe('on');\n });\n });\n describe('autofocus', () => {\n it('sets the value of the autofocus attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.autofocus = true;\n await specPage.waitForChanges();\n inputElement = specPage.root;\n expect(inputElement).toHaveAttribute('autofocus');\n });\n it('focuses the <input> element when true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const focusSpy = jest.spyOn(inputElement, 'focus');\n inputClass.autofocus = true;\n inputClass.componentDidLoad();\n await specPage.waitForChanges();\n expect(focusSpy).toHaveBeenCalled();\n });\n });\n describe('badgeTheme', () => {\n it('sets the badge theme to primary', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" badge-value=\"4\" badge-theme=\"primary\"></q2-input>',\n });\n inputElement = specPage.root;\n const badge = specPage.root.shadowRoot.querySelector('q2-badge');\n expect(inputElement.getAttribute('badge-theme')).toBe('primary');\n expect(badge.getAttribute('theme')).toBe('primary');\n });\n it('sets the badge theme to secondary', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" badge-value=\"4\" badge-theme=\"secondary\"></q2-input>',\n });\n inputElement = specPage.root;\n const badge = specPage.root.shadowRoot.querySelector('q2-badge');\n expect(inputElement.getAttribute('badge-theme')).toBe('secondary');\n expect(badge.getAttribute('theme')).toBe('secondary');\n });\n it('sets the badge theme to tertiary', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" badge-value=\"4\" badge-theme=\"tertiary\"></q2-input>',\n });\n inputElement = specPage.root;\n const badge = specPage.root.shadowRoot.querySelector('q2-badge');\n expect(inputElement.getAttribute('badge-theme')).toBe('tertiary');\n expect(badge.getAttribute('theme')).toBe('tertiary');\n });\n });\n describe('badgeValue', () => {\n it('displays a q2-badge on the right side of the input', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" badge-value=\"4\"></q2-input>',\n });\n const badge = specPage.root.shadowRoot.querySelector('q2-badge');\n expect(badge).not.toBeNull();\n });\n it('displays the provided value as a q2-badge', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" badge-value=\"4\"></q2-input>',\n });\n inputElement = specPage.root;\n const badge = specPage.root.shadowRoot.querySelector('q2-badge');\n expect(inputElement.getAttribute('badge-value')).toBe('4');\n expect(badge).toEqualText('4');\n });\n });\n describe('clearable', () => {\n it('renders a clear button in the input-icons-container-right <div>', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable></q2-input>',\n });\n containerElement = specPage.root.shadowRoot.querySelector('.input-icons-container-right');\n const clearButton = containerElement.querySelector('[test-id=\"clearButton\"]');\n expect(clearButton).not.toBeNull();\n });\n });\n describe('current', () => {\n it('sets the value of the aria-current attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" current=\"page\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('aria-current')).toBe('page');\n });\n });\n describe('disabled', () => {\n it('sets the value of the disabled attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" disabled></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement).toHaveAttribute('disabled');\n });\n it('prevents user input', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" disabled></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'a' }));\n expect(inputElement.value).toBe('');\n });\n it('prevents focusing the input field', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" disabled></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.focus();\n expect(document.activeElement).not.toEqual(inputElement);\n });\n });\n describe('errors', () => {\n it('displays an error message', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n await specPage.waitForChanges();\n const errorElement = specPage.root.shadowRoot.querySelector('.messages-container');\n expect(errorElement).toEqualText('My Error');\n });\n it('displays multiple error messages in an unordered list', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error', 'Another Error'];\n await specPage.waitForChanges();\n const message = specPage.root.shadowRoot.querySelector('.messages-container');\n expect(message).not.toBeNull();\n const listItems = message.querySelectorAll('li');\n expect(listItems.length).toBe(2);\n expect(listItems[0]).toEqualText('My Error');\n expect(listItems[1]).toEqualText('Another Error');\n });\n });\n describe('formatModifiers', () => {\n it('sets the value of the formatModifiers attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" format-modifiers=\"currency\"></q2-input>',\n });\n inputElement = specPage.root;\n expect(inputElement.getAttribute('format-modifiers')).toBe('currency');\n });\n });\n describe('hideLabel', () => {\n it('hides the label when true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" hide-label></q2-input>',\n });\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).toHaveClass('sr');\n });\n it('shows the label when false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" hide-label=\"false\"></q2-input>',\n });\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).not.toHaveClass('sr');\n });\n });\n describe('hideMessages', () => {\n describe('when true', () => {\n it('contributes to the showMessages() getter returning false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" hide-messages></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n expect(inputClass.showMessages).toBe(false);\n });\n });\n describe('when false', () => {\n it('contributes to the showMessages() getter returning true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" hide-messages=\"false\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n expect(inputClass.showMessages).toBe(true);\n });\n });\n });\n describe('hints', () => {\n it('displays a hint message', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.hints = ['My Hint'];\n await specPage.waitForChanges();\n const hintElement = specPage.root.shadowRoot.querySelector('.messages-container');\n expect(hintElement).toEqualText('My Hint');\n });\n it('displays multiple hint messages in an unordered list', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.hints = ['My Hint', 'Another Hint'];\n await specPage.waitForChanges();\n const message = specPage.root.shadowRoot.querySelector('.messages-container');\n expect(message).not.toBeNull();\n const listItems = message.querySelectorAll('li');\n expect(listItems.length).toBe(2);\n expect(listItems[0]).toEqualText('My Hint');\n expect(listItems[1]).toEqualText('Another Hint');\n });\n });\n describe('iconLeft', () => {\n it('renders an icon on the left side of the input', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" icon-left=\"apple\"></q2-input>',\n });\n const icon = specPage.root.shadowRoot.querySelector('.icon-left');\n expect(icon).not.toBeNull();\n });\n it('does not render an icon when iconLeft is not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n const icon = specPage.root.shadowRoot.querySelector('.icon-left');\n expect(icon).toBeNull();\n });\n });\n describe('iconRight', () => {\n it('renders an icon on the right side of the input', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" icon-right=\"apple\"></q2-input>',\n });\n const icon = specPage.root.shadowRoot.querySelector('.icon-right');\n expect(icon).not.toBeNull();\n });\n it('does not render an icon when iconRight is not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n const icon = specPage.root.shadowRoot.querySelector('.icon-right');\n expect(icon).toBeNull();\n });\n });\n describe('label', () => {\n it('displays the value in the <label> element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).toEqualText('My Label');\n });\n });\n describe('max', () => {\n it('sets the value of the max attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" max=\"10\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('max')).toBe('10');\n });\n it('does not set the max attribute when not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.hasAttribute('max')).toBe(false);\n });\n it('limits the incremented numerical value of the input field when type=\"number\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"number\" max=\"10\" value=\"10\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp' }));\n expect(inputElement.value).toBe('10');\n });\n });\n describe('maxLength', () => {\n it('sets the value of the maxlength attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" maxlength=\"10\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('maxlength')).toBe('10');\n });\n it('does not set the maxlength attribute when not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.hasAttribute('maxlength')).toBe(false);\n });\n it('sets maxlength undefined if maxlength isNaN', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" maxlength=\"abc\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('maxlength')).toBeNull();\n });\n it('limits the number of characters entered into the input field', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" maxlength=\"5\" value=\"abcde\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'f' }));\n expect(inputElement.value).toBe('abcde');\n });\n });\n describe('min', () => {\n it('sets the value of the min attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" min=\"10\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('min')).toBe('10');\n });\n it('does not set the min attribute when not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.hasAttribute('min')).toBe(false);\n });\n it('limits the decremented numerical value of the input field when type=\"number\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"number\" min=\"10\" value=\"10\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown' }));\n expect(inputElement.value).toBe('10');\n });\n });\n describe('optional', () => {\n it('does not display the optional label when false', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" optional=\"false\"></q2-input>',\n },\n translationStringsDict\n );\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).not.toEqualText('My Label(optional)');\n });\n it('displays the optional label when true', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" optional></q2-input>',\n },\n translationStringsDict\n );\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).toEqualText('My Label(optional)');\n });\n });\n describe('pattern', () => {\n it('sets the value of the pattern attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" pattern=\"[A-Za-z]{3}\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('pattern')).toBe('[A-Za-z]{3}');\n });\n it('does not set the pattern attribute when not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.hasAttribute('pattern')).toBe(false);\n });\n });\n describe('placeholder', () => {\n it('sets the value of the placeholder attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input placeholder=\"My Placeholder\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('placeholder')).toBe('My Placeholder');\n });\n it('localizes the placeholder', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input placeholder=\"tecton.element.input.placeholder\"></q2-input>',\n },\n translationStringsDict\n );\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('placeholder')).toBe('My Placeholder');\n });\n });\n describe('pseudo', () => {\n it('displays the component as a button', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" pseudo></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.tagName).toBe('BUTTON');\n });\n });\n describe('readonly', () => {\n it('sets the value of the readonly attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" readonly></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement).toHaveAttribute('readonly');\n });\n it('localizes the readonly label', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" readonly></q2-input>',\n },\n translationStringsDict\n );\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).toEqualText('My Label(read only)');\n });\n it('prevents user input', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" readonly></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'a' }));\n expect(inputElement.value).toBe('');\n });\n });\n describe('role (deprecated)', () => {\n it('sets the role attribute in pseudo mode', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" role=\"combobox\" pseudo></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('role')).toBe('combobox');\n });\n });\n describe('showCount', () => {\n it('shows a character count element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" show-count></q2-input>',\n });\n const countElement = specPage.root.shadowRoot.querySelector('.count-tag');\n expect(countElement).not.toBeNull();\n });\n });\n describe('showVisibilityToggle', () => {\n describe('when type is \"text\"', () => {\n it('displays a visibility toggle button', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"text\" value=\"abc\" show-visibility-toggle></q2-input>',\n });\n const visibilityToggle = specPage.root.shadowRoot.querySelector('.btn-visibility-toggle');\n expect(visibilityToggle).not.toBeNull();\n });\n });\n describe('when type is \"password\"', () => {\n it('displays a visibility toggle button', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"password\" value=\"abc\" show-visibility-toggle></q2-input>',\n });\n const visibilityToggle = specPage.root.shadowRoot.querySelector('.btn-visibility-toggle');\n expect(visibilityToggle).not.toBeNull();\n });\n });\n describe('when type is \"ssn\"', () => {\n it('displays a visibility toggle button', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"123-45-6789\" show-visibility-toggle></q2-input>',\n });\n const visibilityToggle = specPage.root.shadowRoot.querySelector('.btn-visibility-toggle');\n expect(visibilityToggle).not.toBeNull();\n });\n });\n describe('when type is \"tin\"', () => {\n it('displays a visibility toggle button', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"tin\" value=\"12-3456789\" show-visibility-toggle></q2-input>',\n });\n const visibilityToggle = specPage.root.shadowRoot.querySelector('.btn-visibility-toggle');\n expect(visibilityToggle).not.toBeNull();\n });\n });\n it('translates the localized show/hide message on the visibility toggle button', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"password\" value=\"abc\" show-visibility-toggle></q2-input>',\n },\n translationStringsDict\n );\n inputClass = specPage.rootInstance;\n const visibilityToggle = specPage.root.shadowRoot.querySelector('.btn-visibility-toggle');\n expect(visibilityToggle.getAttribute('label')).toEqualText('Show');\n inputClass.textHidden = false;\n await specPage.waitForChanges();\n expect(visibilityToggle.getAttribute('label')).toEqualText('Hide');\n });\n it('switches the input type between \"text\" and \"password\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"text\" value=\"abc\" show-visibility-toggle></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('type')).toBe('text');\n inputClass.textHidden = true;\n await specPage.waitForChanges();\n expect(inputElement.getAttribute('type')).toBe('password');\n inputClass.textHidden = false;\n await specPage.waitForChanges();\n expect(inputElement.getAttribute('type')).toBe('text');\n });\n });\n describe('step', () => {\n it('sets the value of the input field step attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" step=\"2\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('step')).toBe('2');\n });\n });\n describe('textHidden', () => {\n it('defaults to true when type is \"password\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"password\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.textHidden).toBe(true);\n });\n it('defaults to false when type is not \"password\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.textHidden).toBe(false);\n });\n it('persists when added as an attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" text-hidden></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.textHidden).toBe(true);\n });\n });\n describe('type', () => {\n it('sets the value of the type attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input type=\"email\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('type')).toBe('email');\n });\n it('defaults to \"text\" when not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('type')).toBe('text');\n });\n });\n describe('validity', () => {\n it('gets set when validateInput is called', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputClass.inputRef = inputElement;\n inputElement.value = '1';\n Object.defineProperty(inputElement, 'validity', {\n get: () => ({\n valid: false,\n patternMismatch: true,\n }),\n configurable: true,\n });\n inputClass.validateInput();\n expect(inputClass.validity).toEqual({\n valid: false,\n patternMismatch: true,\n });\n });\n });\n describe('value', () => {\n it('sets the value of the input field', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.value).toBe('My Value');\n });\n it('does not set the value attribute when not provided', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.value).toBe('');\n });\n it('translates localized labels', async () => {\n specPage = await setupSpecPageWithLoc(\n {\n components: [Q2Input],\n html: '<q2-input label=\"tecton.element.input.label\"></q2-input>',\n },\n translationStringsDict\n );\n const label = specPage.root.shadowRoot.querySelector('label');\n expect(label).toEqualText('My Label');\n });\n });\n });\n\n describe('Events', () => {\n describe('change', () => {\n it('emits a change event when the input value is changed and loses focus', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const changeSpy = jest.spyOn(inputClass.change, 'emit');\n inputClass.value = 'My New Value';\n await specPage.waitForChanges();\n inputElement.blur();\n expect(changeSpy).toHaveBeenCalled();\n expect(changeSpy).toHaveBeenCalledWith({\n value: 'My New Value',\n formattedValue: 'My New Value',\n minFormattedLength: undefined,\n });\n });\n });\n\n describe('clear', () => {\n it('emits when the clear button is clicked', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\" clearable></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const clearSpy = jest.spyOn(inputClass.clear, 'emit');\n const clearButton: HTMLElement = specPage.root.shadowRoot.querySelector('[test-id=\"clearButton\"]');\n clearButton.click();\n expect(clearSpy).toHaveBeenCalled();\n });\n });\n\n describe('formatted', () => {\n it('emits when the input value is formatted', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const formattedSpy = jest.spyOn(inputClass.formatted, 'emit');\n inputElement.value = '12345678';\n inputElement.dispatchEvent(new Event('input'));\n expect(formattedSpy).toHaveBeenCalled();\n expect(formattedSpy).toHaveBeenCalledWith({\n value: '12345678',\n formattedValue: '123-45-678',\n fullyFormattedValue: '123-45-678',\n formattingCharacterCount: 2,\n unformattedValue: '12345678',\n minFormattedLength: 11,\n maxlength: 11,\n prefix: '',\n });\n });\n });\n\n describe('input', () => {\n it('emits when the input value is changed', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const inputSpy = jest.spyOn(inputClass.input, 'emit');\n inputElement.value = 'My Value';\n inputElement.dispatchEvent(new Event('input'));\n\n expect(inputSpy).toHaveBeenCalled();\n expect(inputSpy).toHaveBeenCalledWith({\n value: 'My Value',\n formattedValue: 'My Value',\n });\n });\n });\n\n describe('invalid', () => {\n it('emits when the input value is invalid according to the pattern attribute', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" pattern=\"[a-zA-Z]\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputClass.inputRef = inputElement;\n const invalidSpy = jest.spyOn(inputClass.invalid, 'emit');\n inputElement.value = '1';\n Object.defineProperty(inputElement, 'validity', {\n get: () => ({\n valid: false,\n patternMismatch: true,\n }),\n configurable: true,\n });\n inputElement.dispatchEvent(new Event('input'));\n inputClass.validateInput();\n expect(invalidSpy).toHaveBeenCalled();\n });\n });\n });\n\n describe('Component Lifecycle Events', () => {\n describe('disconnectedCallback', () => {\n it('calls manageClearableResizeObserver', async () => {\n const originalManagedClearableResizeObserver = Q2Input.prototype.manageClearableResizeObserver;\n Q2Input.prototype.manageClearableResizeObserver = jest.fn();\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.disconnectedCallback();\n expect(Q2Input.prototype.manageClearableResizeObserver).toHaveBeenCalled();\n Q2Input.prototype.manageClearableResizeObserver = originalManagedClearableResizeObserver;\n });\n it('calls disconnect() on mutationObserver', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const disconnectMock = jest.fn();\n const mockMutationObserver = {\n disconnect: disconnectMock,\n };\n inputClass.mutationObserver = mockMutationObserver as unknown as MutationObserver;\n inputClass.disconnectedCallback();\n expect(disconnectMock).toHaveBeenCalled();\n });\n it('sets mutationObserver to null', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.disconnectedCallback();\n expect(inputClass.mutationObserver).toBeNull();\n });\n });\n describe('componentWillLoad', () => {\n it('sets maxlength to undefined if maxlength isNaN', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" maxlength=\"abc\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.getAttribute('maxlength')).toBeNull();\n });\n it('sets the value of the formattedValueObject', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.formattedValueObject).toEqual({\n value: 'My Value',\n formattedValue: 'My Value',\n minFormattedLength: undefined,\n formattingCharacterCount: 0,\n fullyFormattedValue: 'My Value',\n unformattedValue: 'My Value',\n });\n });\n describe('formattedValue getter', () => {\n it('defines formattedValue getter on host element', async () => {\n const definePropertySpy = jest.spyOn(Object, 'defineProperty');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n expect(definePropertySpy).toHaveBeenCalledWith(\n specPage.root,\n 'formattedValue',\n expect.objectContaining({ get: expect.any(Function) })\n );\n definePropertySpy.mockRestore();\n });\n it('getter returns correctly formatted value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"98765432\"></q2-input>',\n });\n expect(specPage.root.formattedValue).toBe('987-65-432');\n });\n it('returns empty string when formattedValueObject is null', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n specPage.rootInstance.formattedValueObject = null;\n expect(specPage.root.formattedValue).toBe('');\n });\n });\n it('calls handleAriaLabel()', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n expect(handleAriaLabelMock).toHaveBeenCalled();\n });\n it('calls manageClearableResizeObserver()', async () => {\n const originalDefineProperty = Object.defineProperty;\n const originalManagedClearableResizeObserver = Q2Input.prototype.manageClearableResizeObserver;\n Object.defineProperty = jest.fn();\n Q2Input.prototype.manageClearableResizeObserver = jest.fn();\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(Q2Input.prototype.manageClearableResizeObserver).toHaveBeenCalled();\n Q2Input.prototype.manageClearableResizeObserver = originalManagedClearableResizeObserver;\n Object.defineProperty = originalDefineProperty;\n });\n });\n describe('componentDidLoad', () => {\n it('calls overrideFocus()', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n expect(overrideFocusMock).toHaveBeenCalled();\n });\n it('sets the value of the input field to the formattedValue when not in pseudo mode', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputClass = specPage.rootInstance;\n expect(inputElement.value).toBe(inputClass.formattedValueObject.formattedValue);\n });\n it('calls focus on the inputField when autofocus is true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const focusSpy = jest.spyOn(inputElement, 'focus');\n inputClass.autofocus = true;\n inputClass.componentDidLoad();\n await specPage.waitForChanges();\n expect(focusSpy).toHaveBeenCalled();\n });\n });\n });\n\n describe('Listeners', () => {\n describe('onHostElementChange', () => {\n it('fires when the change event is consumed', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n const hostElementChangeSpy = jest.spyOn(inputClass, 'onHostElementChange');\n inputElement.dispatchEvent(new Event('change'));\n expect(hostElementChangeSpy).toHaveBeenCalled();\n });\n });\n describe('onHostElementFocus', () => {\n it('fires when the focus event is consumed', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const hostElementFocusSpy = jest.spyOn(inputClass, 'onHostElementFocus');\n inputElement = specPage.root;\n inputElement.dispatchEvent(new FocusEvent('focus'));\n expect(hostElementFocusSpy).toHaveBeenCalled();\n });\n describe('when event is NOT from the host element', () => {\n it('does NOT call focus() on the input element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.focus = jest.fn();\n const focusSpy = jest.spyOn(inputElement, 'focus');\n const differentElement = document.createElement('div');\n const focusEvent = new FocusEvent('focus');\n focusEvent.composedPath = jest.fn().mockReturnValue([differentElement]);\n inputClass.onHostElementFocus(focusEvent);\n expect(focusSpy).not.toHaveBeenCalled();\n });\n });\n describe('when event is from the host element', () => {\n it('calls focus() on the input element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.focus = jest.fn();\n const focusEvent = new FocusEvent('focus');\n focusEvent.composedPath = jest.fn().mockReturnValue([inputClass.hostElement]);\n const focusSpy = jest.spyOn(inputElement, 'focus');\n inputClass.onHostElementFocus(focusEvent);\n expect(focusSpy).toHaveBeenCalled();\n });\n });\n });\n });\n\n describe('Public Methods API', () => {\n describe('Public Methods', () => {\n describe('checkValidity', () => {\n it('fires checkValidity on the input element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n inputClass.inputRef = inputElement.shadowRoot.querySelector('.input-field');\n inputClass.inputRef.checkValidity = jest.fn();\n const inputCheckValiditySpy = jest.spyOn(inputClass.inputRef, 'checkValidity');\n inputClass.checkValidity();\n expect(inputCheckValiditySpy).toHaveBeenCalled();\n });\n it('fires validateInput local method', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n inputClass.inputRef = inputElement.shadowRoot.querySelector('.input-field');\n inputClass.inputRef.checkValidity = jest.fn();\n const validateInputSpy = jest.spyOn(inputClass, 'validateInput');\n inputClass.checkValidity();\n expect(validateInputSpy).toHaveBeenCalled();\n });\n it('emits invalid event when ValidityState object has `valid: false`', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" pattern=\"[a-zA-Z]\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n inputClass.inputRef = inputElement.shadowRoot.querySelector('.input-field');\n inputClass.inputRef.checkValidity = jest.fn();\n inputClass.inputRef.validity = { valid: false };\n const invalidSpy = jest.spyOn(inputClass.invalid, 'emit');\n inputClass.checkValidity();\n expect(invalidSpy).toHaveBeenCalled();\n });\n });\n });\n describe('Test Methods', () => {\n describe('clearValue', () => {\n describe('when clearable is false', () => {\n it('does nothing if clearable is false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n inputClass.clearValue();\n expect(inputClass.value).toBe('My Value');\n });\n });\n\n describe('when clearable is true', () => {\n it('fires onClearInput local method', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n const clearInputSpy = jest.spyOn(inputClass, 'onClearInput');\n inputClass.clearValue();\n expect(clearInputSpy).toHaveBeenCalled();\n });\n it('emits input event with empty values', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n const inputSpy = jest.spyOn(inputClass.input, 'emit');\n inputClass.clearValue();\n expect(inputSpy).toHaveBeenCalledWith({\n value: '',\n formattedValue: '',\n minFormattedLength: undefined,\n });\n });\n it('emits change event with empty values', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n const changeSpy = jest.spyOn(inputClass.change, 'emit');\n inputClass.clearValue();\n expect(changeSpy).toHaveBeenCalledWith({\n value: '',\n formattedValue: '',\n minFormattedLength: undefined,\n });\n });\n it('emits clear event', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n const clearSpy = jest.spyOn(inputClass.clear, 'emit');\n inputClass.clearValue();\n expect(clearSpy).toHaveBeenCalled();\n });\n it('calls focus() on the input element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const focusSpy = jest.spyOn(inputElement, 'focus');\n inputClass.clearValue();\n expect(focusSpy).toHaveBeenCalled();\n });\n });\n });\n describe('setValue', () => {\n it('calls focus on the input field', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const focusSpy = jest.spyOn(inputElement, 'focus');\n inputClass.setValue('My Value');\n expect(focusSpy).toHaveBeenCalled();\n });\n it('dispatches a focus event', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const dispatchEventSpy = jest.spyOn(inputElement, 'dispatchEvent');\n inputClass.setValue('My Value');\n const focusEvent = dispatchEventSpy.mock.calls[0][0] as FocusEvent;\n expect(focusEvent.type).toBe('focus');\n });\n it('updates the value of the input field', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputClass.setValue('My Value');\n expect(inputElement.value).toBe('My Value');\n });\n it('updates the value of the input field with a formatted value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputClass.setValue('12345678');\n expect(inputElement.value).toBe('123-45-678');\n });\n it('dispatches an input event', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const dispatchEventSpy = jest.spyOn(inputElement, 'dispatchEvent');\n inputClass.setValue('My Value');\n const inputEvent = dispatchEventSpy.mock.calls[1][0] as InputEvent;\n expect(inputEvent.type).toBe('input');\n });\n });\n });\n });\n\n describe('Watchers', () => {\n describe('ariaLabel', () => {\n it('ariaLabelObserver() calls handleAriaLabel() helper', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(handleAriaLabelMock).toHaveBeenCalledTimes(2); // initial calls\n inputClass.ariaLabel = 'My Aria Label';\n expect(handleAriaLabelMock).toHaveBeenCalledTimes(3);\n });\n });\n describe('clearable', () => {\n it('manageClearableResizeObserver() is called when clearable changes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const resizeObserverSpy = jest.spyOn(inputClass, 'manageClearableResizeObserver');\n expect(resizeObserverSpy).not.toHaveBeenCalled();\n inputClass.clearable = false;\n expect(resizeObserverSpy).toHaveBeenCalled();\n });\n });\n describe('errors', () => {\n describe('when hasFocus is true', () => {\n it('errorsObserver() queues up setMessageHeight()', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.scheduledAfterRender.length).toBe(0);\n inputClass.hasFocus = true;\n inputClass.errors = ['My Error'];\n expect(inputClass.scheduledAfterRender.length).toBe(1);\n });\n });\n describe('when hasFocus is false', () => {\n it('errorsObserver() does not queue up setMessageHeight()', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.scheduledAfterRender.length).toBe(0);\n inputClass.hasFocus = false;\n inputClass.errors = ['My Error'];\n expect(inputClass.scheduledAfterRender.length).toBe(0);\n });\n });\n });\n describe('formatModifier', () => {\n it('calls formatAndUpdateValueFromProp() when formatModifier changes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const formatAndUpdateValueFromPropSpy = jest.spyOn(inputClass, 'formatAndUpdateValueFromProp');\n inputClass.formatModifier = 'ssn';\n expect(formatAndUpdateValueFromPropSpy).toHaveBeenCalled();\n });\n });\n describe('formattedValueObject', () => {\n it('emits the formatted event when formattedValueObject changes', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const formattedSpy = jest.spyOn(inputClass.formatted, 'emit');\n const formattedValueObjectMock = {\n value: 'My New Value',\n formattedValue: 'My New Value',\n minFormattedLength: undefined,\n formattingCharacterCount: 0,\n fullyFormattedValue: 'My New Value',\n unformattedValue: 'My New Value',\n };\n inputClass.formattedValueObject = formattedValueObjectMock;\n expect(formattedSpy).toHaveBeenCalled();\n expect(formattedSpy).toHaveBeenCalledWith({\n ...formattedValueObjectMock,\n });\n });\n });\n describe('hints', () => {\n describe('when hasFocus is true', () => {\n it('hinstObserver() queues up setMessageHeight()', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.scheduledAfterRender.length).toBe(0);\n inputClass.hasFocus = true;\n inputClass.hints = ['My Hint'];\n expect(inputClass.scheduledAfterRender.length).toBe(1);\n });\n });\n describe('when hasFocus is false', () => {\n it('hintsObserver() does not queue up setMessageHeight()', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.scheduledAfterRender.length).toBe(0);\n inputClass.hasFocus = false;\n inputClass.hints = ['My Hint'];\n expect(inputClass.scheduledAfterRender.length).toBe(0);\n });\n });\n });\n describe('type', () => {\n it('typeObserver() calls formatAndUpdateValueFromProp()', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const formatAndUpdateValueFromPropSpy = jest.spyOn(inputClass, 'formatAndUpdateValueFromProp');\n inputClass.type = 'ssn';\n expect(formatAndUpdateValueFromPropSpy).toHaveBeenCalled();\n });\n });\n describe('value', () => {\n it('valueObserver() calls formatAndUpdateValueFromProp()', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const formatAndUpdateValueFromPropSpy = jest.spyOn(inputClass, 'formatAndUpdateValueFromProp');\n inputClass.value = 'New Value';\n expect(formatAndUpdateValueFromPropSpy).toHaveBeenCalled();\n });\n });\n });\n\n describe('Local Methods', () => {\n describe('Getters', () => {\n describe('ariaAttributes', () => {\n it('returns aria attributes object', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.ariaAttributes).toEqual({\n ariOwns: getAriaValueFromProp(inputClass.ariaOwns),\n ariaHasPopup: getAriaValueFromProp(inputClass.ariaHasPopup, [\n 'true',\n 'false',\n 'menu',\n 'listbox',\n 'tree',\n 'grid',\n 'dialog',\n ]),\n ariaExpanded: getAriaValueFromProp(inputClass.ariaExpanded, ['true', 'false']),\n ariaActiveDescendant: getAriaValueFromProp(inputClass.ariaActiveDescendant),\n });\n });\n });\n describe('canSetSelection', () => {\n describe('when computedType is \"email\"', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"email\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.canSetSelection).toBe(false);\n });\n });\n describe('when computedType is \"number\"', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"number\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.canSetSelection).toBe(false);\n });\n });\n describe('when computedType is neither \"email\" nor \"number\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.canSetSelection).toBe(true);\n });\n });\n });\n describe('clearClasses', () => {\n it('returns an array with \"btn-clear\" class', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.clearClasses).toContain('btn-clear');\n });\n describe('adds \"hidden\" class', () => {\n it('when clearable is false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable=\"false\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.value = '';\n expect(inputClass.clearClasses).toContain('hidden');\n });\n it('when value prop is falsy', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n expect(inputElement.value).toBeFalsy();\n expect(inputClass.clearClasses).toContain('hidden');\n });\n it('when input field value is falsy', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.value).toBeFalsy();\n expect(inputClass.clearClasses).toContain('hidden');\n });\n });\n });\n describe('computedAutocomplete', () => {\n describe('if type = \"currency\"', () => {\n it('returns transaction-amount', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedAutocomplete).toBe('transaction-amount');\n });\n });\n describe('when autocomplete is not set', () => {\n it('returns \"off\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedAutocomplete).toBe('off');\n });\n });\n describe('when autocomplete is set', () => {\n it('returns the value of autocomplete', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" autocomplete=\"on\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedAutocomplete).toBe('on');\n });\n });\n });\n describe('computedClassForIconLeft', () => {\n it('returns a string with \"icon-left\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedClassForIconLeft).toContain('icon-left');\n });\n describe('when leftIconMuted is true in formattedValueObject', () => {\n it('returns a string with \"icon-left-muted\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { leftIconMuted: true };\n expect(inputClass.computedClassForIconLeft).toContain('icon-left-muted');\n });\n });\n });\n describe('computedIconLeft', () => {\n it('returns \"iconLeft\" prop value by default', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" icon-left=\"apple\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedIconLeft).toBe('apple');\n });\n describe('when formattedValueObject has a prefix', () => {\n it('short circuits and returns undefined', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { prefix: 'My Prefix' };\n expect(inputClass.computedIconLeft).toBeUndefined();\n });\n });\n describe('when type=\"search\"', () => {\n it('returns \"search\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"search\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedIconLeft).toBe('search');\n });\n });\n describe('when formattedValueObject has a leftIcon value', () => {\n it('returns the leftIcon value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { leftIcon: 'My Left Icon' };\n expect(inputClass.computedIconLeft).toBe('My Left Icon');\n });\n });\n });\n describe('computedType', () => {\n describe('when provided an unsupported type', () => {\n it('returns \"text\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"unsupported\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedType).toBe('text');\n });\n });\n describe('when provided a supported type', () => {\n it('returns the valid type from the inputTypeMap object', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"phone\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedType).toBe('tel');\n });\n });\n describe('when textHidden prop is true', () => {\n describe('when type is \"password\"', () => {\n it('returns \"password\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"password\" text-hidden></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedType).toBe('password');\n });\n });\n describe('when type is \"text\"', () => {\n it('returns \"password\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"text\" text-hidden></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedType).toBe('password');\n });\n });\n describe('when type is \"ssn\"', () => {\n it('returns \"password\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" text-hidden></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.computedType).toBe('password');\n });\n });\n });\n });\n describe('hasCustomDisplaySlot', () => {\n it('returns true when an element uses the \"custom-display\" slot', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"><span slot=\"custom-display\">My Custom Display</span></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.hasCustomDisplaySlot).toBe(true);\n });\n it('returns false when no element uses the \"custom-display\" slot', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.hasCustomDisplaySlot).toBe(false);\n });\n });\n describe('hasError', () => {\n it('returns true when errors array is not empty', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n expect(inputClass.hasError).toBe(true);\n });\n it('returns false when errors array is empty', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = [];\n expect(inputClass.hasError).toBe(false);\n });\n });\n describe('hasInputLeftSlot', () => {\n it('returns true when an element uses the \"input-left\" slot', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"><span slot=\"input-left\">My Input Left</span></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.hasInputLeftSlot).toBe(true);\n });\n it('returns false when no element uses the \"input-left\" slot', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.hasInputLeftSlot).toBe(false);\n });\n });\n describe('hasInputRightSlot', () => {\n it('returns true when an element uses the \"input-right\" slot', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"><span slot=\"input-right\">My Input Right</span></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.hasInputRightSlot).toBe(true);\n });\n it('returns false when no element uses the \"input-right\" slot', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.hasInputRightSlot).toBe(false);\n });\n });\n describe('inputDescribedBy', () => {\n describe('when showMessages is true', () => {\n it('returns a string with the input guid', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.hints = ['My Hint'];\n const describedByString = `input-guid-${inputClass.guid}-description`;\n expect(inputClass.inputDescribedBy).toBe(describedByString);\n });\n });\n describe('when showMessages is false', () => {\n it('returns undefined', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputDescribedBy).toBeUndefined();\n });\n });\n });\n describe('inputField', () => {\n it('returns the input field element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputClass.inputField).toBe(inputElement);\n });\n });\n describe('inputId', () => {\n it('returns a string with the input guid', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const idString = `input-guid-${inputClass.guid}`;\n expect(inputClass.inputId).toBe(idString);\n });\n });\n describe('inputMode', () => {\n describe('when type is \"currency\"', () => {\n it('returns \"numeric\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputMode).toBe('numeric');\n });\n });\n describe('when type is \"ssn\"', () => {\n it('returns \"numeric\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputMode).toBe('numeric');\n });\n });\n describe('when type is \"tin\"', () => {\n it('returns \"numeric\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"tin\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputMode).toBe('numeric');\n });\n });\n describe('when type is \"numeric\"', () => {\n it('returns \"decimal\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"numeric\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputMode).toBe('decimal');\n });\n });\n describe('when type is \"percentage\"', () => {\n it('returns \"decimal\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"percentage\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputMode).toBe('decimal');\n });\n });\n describe('when type is \"date\"', () => {\n it('returns \"numeric\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"date\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputMode).toBe('numeric');\n });\n });\n describe('when type is \"credit-card\"', () => {\n it('returns \"numeric\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"credit-card\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputMode).toBe('numeric');\n });\n });\n describe('when type is not provided', () => {\n it('returns undefined', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.inputMode).toBeUndefined();\n });\n });\n });\n describe('isMaskedType', () => {\n describe('when type is not in the \"maskedTypes\" array', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"search\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(false);\n });\n });\n describe('when type is \"currency\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"phone\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"phone\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"ssn\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"tin\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"tin\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"alphanumeric\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"alphanumeric\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"alpha\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"alpha\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"numeric\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"numeric\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"percentage\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"percentage\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"postal\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"postal\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"date\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"date\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n describe('when type is \"credit-card\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"credit-card\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.isMaskedType).toBe(true);\n });\n });\n });\n describe('messages', () => {\n describe('when errors are present', () => {\n it('returns the errors array', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n expect(inputClass.messages).toEqual(inputClass.errors);\n });\n });\n describe('when hints are present', () => {\n it('returns the hints array', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.hints = ['My Hint'];\n expect(inputClass.messages).toEqual(inputClass.hints);\n });\n });\n describe('when errors and hints are both present', () => {\n it('returns only the errors array', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n inputClass.hints = ['My Hint'];\n expect(inputClass.messages).toEqual(inputClass.errors);\n expect(inputClass.messages).not.toEqual(inputClass.hints);\n });\n });\n describe('when errors and hints are both empty', () => {\n it('returns an empty array', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.messages).toEqual([]);\n });\n });\n });\n describe('shouldCursorStartAtEnd', () => {\n describe('when type is \"currency\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.shouldCursorStartAtEnd).toBe(true);\n });\n });\n describe('when type is NOT \"currency\"', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.shouldCursorStartAtEnd).toBe(false);\n });\n });\n });\n describe('shouldCursorStayAtEnd', () => {\n describe('when type is \"currency\" and isMobile is true', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.isMobile = true;\n expect(inputClass.shouldCursorStayAtEnd).toBe(true);\n });\n });\n describe('when type is NOT \"currency\"', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.shouldCursorStayAtEnd).toBe(false);\n });\n });\n describe('when isMobile is false', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.isMobile = false;\n expect(inputClass.shouldCursorStayAtEnd).toBe(false);\n });\n });\n });\n describe('showIconSeparator', () => {\n describe('when type is \"credit-card\"', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"credit-card\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.showIconSeparator).toBe(true);\n });\n });\n describe('when formattedValueObject.prefix has a value', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { prefix: 'My Prefix' };\n expect(inputClass.showIconSeparator).toBe(true);\n });\n });\n describe('when typs is NOT \"credit-card\" and formattedValueObject.prefix is empty', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.showIconSeparator).toBe(false);\n });\n });\n });\n describe('showMessages', () => {\n describe('when messages getter has length, and hideMessages is false', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n expect(inputClass.showMessages).toBe(true);\n });\n });\n describe('when hideMessages is true', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n inputClass.hideMessages = true;\n expect(inputClass.showMessages).toBe(false);\n });\n });\n describe('when messages getter is empty', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.showMessages).toBe(false);\n });\n });\n });\n describe('stringValue', () => {\n describe('when value is provided', () => {\n it('returns the value as a string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.stringValue).toBe('My Value');\n expect(typeof inputClass.stringValue).toBe('string');\n });\n });\n describe('when value is a coercable, non-string data type', () => {\n it('returns the value as a string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.value = 123;\n expect(inputClass.stringValue).toBe('123');\n expect(typeof inputClass.stringValue).toBe('string');\n inputClass.value = true;\n expect(inputClass.stringValue).toBe('true');\n expect(typeof inputClass.stringValue).toBe('string');\n });\n });\n describe('when value is a non-coercable data type', () => {\n it('returns an empty string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.value = { key: 'value' };\n expect(inputClass.stringValue).toBe('');\n });\n });\n describe('when value is not provided', () => {\n it('returns an empty string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.stringValue).toBe('');\n });\n });\n });\n describe('visibilityToggleAriaLabel', () => {\n describe('when textHidden is true', () => {\n it('returns the proper translation key', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" text-hidden></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.visibilityToggleAriaLabel).toBe('tecton.element.input.toggleAriaLabel.show');\n });\n });\n describe('when textHidden is false', () => {\n it('returns the proper translation key', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.visibilityToggleAriaLabel).toBe('tecton.element.input.toggleAriaLabel.hide');\n });\n });\n });\n describe('visibilityToggleText', () => {\n describe('when textHidden is true', () => {\n it('returns the proper translation key', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" text-hidden></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.visibilityToggleText).toBe('tecton.element.input.toggle.show');\n });\n });\n describe('when textHidden is false', () => {\n it('returns the proper translation key', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.visibilityToggleText).toBe('tecton.element.input.toggle.hide');\n });\n });\n });\n describe('wrapperClasses', () => {\n describe('has-error', () => {\n describe('when hasError is true', () => {\n it('includes \"has-error\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n expect(inputClass.wrapperClasses).toContain('has-error');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n describe('when hasError is false', () => {\n it('does not include \"has-error\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).not.toContain('has-error');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n describe('has-value', () => {\n describe('when value is truthy', () => {\n it('includes \"has-value\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).toContain('has-value');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n describe('when value is falsy', () => {\n it('does not include \"has-value\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).not.toContain('has-value');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n describe('has-clear', () => {\n describe('when clearable is true and value is truthy', () => {\n it('includes \"has-clear\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).toContain('has-clear');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n describe('when clearable is true and value is falsy', () => {\n it('does not include \"has-clear\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" clearable></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).not.toContain('has-clear');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n describe('when clearable is false and value is truthy', () => {\n it('does not include \"has-clear\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).not.toContain('has-clear');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n describe('has-focus', () => {\n describe('when hasFocus is true', () => {\n it('includes \"has-focus\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.hasFocus = true;\n expect(inputClass.wrapperClasses).toContain('has-focus');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n\n describe('when hasFocus is false', () => {\n it('does not include \"has-focus\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.hasFocus = false;\n expect(inputClass.wrapperClasses).not.toContain('has-focus');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n\n describe('is-small', () => {\n describe('when isSmall true', () => {\n it('includes \"is-small\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.isSmall = true;\n expect(inputClass.wrapperClasses).toContain('is-small');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n describe('when isSmall false', () => {\n it('does not include \"is-small\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.isSmall = false;\n expect(inputClass.wrapperClasses).not.toContain('is-small');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n describe('has-prefix', () => {\n describe('when formattedValueObject.prefix is truthy', () => {\n it('includes \"has-prefix\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { prefix: 'Prefix' };\n expect(inputClass.wrapperClasses).toContain('has-prefix');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n\n describe('when formattedValueObject.prefix is falsy', () => {\n it('does not include \"has-prefix\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { prefix: '' };\n expect(inputClass.wrapperClasses).not.toContain('has-prefix');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n\n describe('has-icon-left', () => {\n describe('when computedIconLeft is truthy', () => {\n it('includes \"has-icon-left\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" icon-left=\"apple\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).toContain('has-icon-left');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n\n describe('when computedIconLeft is falsy', () => {\n it('does not include \"has-icon-left\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).not.toContain('has-icon-left');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n\n describe('has-icon-separator', () => {\n describe('when showIconSeparator true', () => {\n it('includes \"has-icon-separator\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"credit-card\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).toContain('has-icon-separator');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n\n describe('when showIconSeparator false', () => {\n it('does not include \"has-icon-separator\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).not.toContain('has-icon-separator');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n\n describe('has-suffix', () => {\n describe('when formattedValueObject.suffix is truthy', () => {\n it('includes \"has-suffix\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { suffix: 'Suffix' };\n expect(inputClass.wrapperClasses).toContain('has-suffix');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n\n describe('when formattedValueObject.suffix is falsy', () => {\n it('does not include \"has-suffix\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { suffix: '' };\n expect(inputClass.wrapperClasses).not.toContain('has-suffix');\n expect(inputClass.wrapperClasses).toContain('field-container');\n });\n });\n });\n\n describe('has-icon-right', () => {\n describe('when formattedValueObject.suffix is falsy and iconRight is truthy', () => {\n it('includes \"has-icon-right\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" icon-right=\"apple\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { suffix: '' };\n expect(inputClass.wrapperClasses).toContain('has-icon-right');\n });\n });\n\n describe('when formattedValueObject.suffix is truthy or iconRight is falsy', () => {\n it('does not include \"has-icon-right\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formattedValueObject = { suffix: 'Suffix' };\n expect(inputClass.wrapperClasses).not.toContain('has-icon-right');\n });\n });\n });\n\n describe('right-aligned', () => {\n describe('when type is \"currency\"', () => {\n it('includes \"right-aligned\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).toContain('right-aligned');\n });\n });\n });\n\n describe('left-aligned', () => {\n describe('when type is NOT \"currency\"', () => {\n it('includes \"left-aligned\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"text\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).toContain('left-aligned');\n });\n });\n });\n\n describe('has-custom-display', () => {\n describe('when hasCustomDisplaySlot is true', () => {\n it('includes \"has-custom-display\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"><div slot=\"custom-display\"></div></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).toContain('has-custom-display');\n });\n });\n\n describe('when hasCustomDisplaySlot is false', () => {\n it('does not include \"has-custom-display\" in the class string', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n expect(inputClass.wrapperClasses).not.toContain('has-custom-display');\n });\n });\n });\n });\n });\n\n describe('Methods', () => {\n describe('calculateCursorPositionOnFocus', () => {\n it('returns an object with cursor position details', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n\n const cursorPosition = inputClass.calculateCursorPositionOnFocus();\n expect(cursorPosition).toHaveProperty('startingPosition');\n expect(cursorPosition).toHaveProperty('valueLength');\n expect(cursorPosition).toHaveProperty('previousValueLength');\n expect(cursorPosition).toHaveProperty('hasSelection');\n });\n describe('startingPosition', () => {\n describe('when input field text is selected', () => {\n it('returns the selectionStart value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.selectionStart = 2;\n const cursorData = inputClass.calculateCursorPositionOnFocus();\n expect(cursorData.startingPosition).toBe(inputClass.inputField.selectionStart);\n });\n });\n describe('when input field text is NOT selected', () => {\n it('returns the valueLength as the startingPosition', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnFocus();\n expect(cursorData.startingPosition).toBe(inputClass.value.length);\n });\n });\n });\n describe('valueLength', () => {\n describe('when input field has value', () => {\n it('returns the valueLength', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnFocus();\n expect(cursorData.valueLength).toBe(inputClass.value.length);\n });\n });\n describe('when input field is empty', () => {\n it('returns zero', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnFocus();\n expect(cursorData.valueLength).toBe(0);\n });\n });\n });\n describe('previousValueLength', () => {\n describe('when input field has value', () => {\n it('returns the valueLength', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnFocus();\n expect(cursorData.previousValueLength).toBe(cursorData.valueLength);\n });\n });\n describe('when input field is empty', () => {\n it('returns the valueLength', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnFocus();\n expect(cursorData.previousValueLength).toBe(cursorData.valueLength);\n });\n });\n });\n describe('hasSelection', () => {\n describe('when input field text is selected', () => {\n it('returns true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.setSelectionRange(2, 5, 'forward');\n await specPage.waitForChanges();\n const cursorData = inputClass.calculateCursorPositionOnFocus();\n expect(cursorData.hasSelection).toBe(true);\n });\n });\n describe('when input field text is NOT selected', () => {\n it('returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnFocus();\n expect(cursorData.hasSelection).toBe(false);\n });\n });\n });\n });\n describe('calculateCursorPositionOnInput', () => {\n it('returns an object with cursor position details', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n\n const cursorPosition = inputClass.calculateCursorPositionOnInput();\n expect(cursorPosition).toHaveProperty('startingPosition');\n expect(cursorPosition).toHaveProperty('valueLength');\n expect(cursorPosition).toHaveProperty('previousValueLength');\n expect(cursorPosition).toHaveProperty('hasSelection');\n });\n describe('startingPosition', () => {\n describe('when input field text is selected', () => {\n it('returns the selectionStart value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.selectionStart = 2;\n const cursorData = inputClass.calculateCursorPositionOnInput();\n expect(cursorData.startingPosition).toBe(inputClass.inputField.selectionStart);\n });\n });\n describe('when input field text is NOT selected', () => {\n it('returns zero', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnInput();\n expect(cursorData.startingPosition).toBe(0);\n });\n describe('if type is currency', () => {\n it('returns the formattedValue length', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\" type=\"currency\" value=\"123456\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnInput();\n expect(cursorData.startingPosition).toBe(\n inputClass.formattedValueObject.formattedValue.length\n );\n });\n });\n });\n });\n describe('valueLength', () => {\n it('returns the fomrattedValue length', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnInput();\n expect(cursorData.valueLength).toBe(inputClass.formattedValueObject.formattedValue.length);\n });\n });\n describe('previousValueLength', () => {\n it('returns the input field value length', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnInput();\n expect(cursorData.previousValueLength).toBe(inputClass.value.length);\n });\n });\n describe('hasSelection', () => {\n it('always returns false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const cursorData = inputClass.calculateCursorPositionOnInput();\n expect(cursorData.hasSelection).toBe(false);\n });\n });\n });\n describe('formatAndUpdateValueFromProp', () => {\n it('calls getFormattedValue', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const formattedValueSpy = jest.spyOn(inputClass, 'getFormattedValue');\n inputClass.formatAndUpdateValueFromProp();\n expect(formattedValueSpy).toHaveBeenCalled();\n });\n describe('when not pseudo', () => {\n it('sets the value of the input field', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.formatAndUpdateValueFromProp();\n expect(inputClass.inputField.value).toBe('My Value');\n });\n });\n });\n describe('getFormattedValue', () => {\n describe('when the type requires a formattingFunction', () => {\n it('returns an object of formatting results', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const formattedValue = inputClass.getFormattedValue('123456789');\n expect(formattedValue).toHaveProperty('value');\n expect(formattedValue).toHaveProperty('formattedValue');\n expect(formattedValue).toHaveProperty('fullyFormattedValue');\n expect(formattedValue).toHaveProperty('prefix');\n expect(formattedValue).toHaveProperty('formattingCharacterCount');\n expect(formattedValue).toHaveProperty('maxlength');\n expect(formattedValue).toHaveProperty('minFormattedLength');\n expect(formattedValue).toHaveProperty('unformattedValue');\n });\n describe('when type is \"currency\"', () => {\n it('calls the associated formatter function', async () => {\n const currencySpy = jest.spyOn(formatCurrency, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('12345678');\n expect(currencySpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"phone\"', () => {\n it('calls the associated formatter function', async () => {\n const phoneSpy = jest.spyOn(formatPhoneNumber, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"phone\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('12345678');\n expect(phoneSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"ssn\"', () => {\n it('calls the associated formatter function', async () => {\n const ssnSpy = jest.spyOn(formatSSN, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('12345678');\n expect(ssnSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"tin\"', () => {\n it('calls the associated formatter function', async () => {\n const tinSpy = jest.spyOn(formatTIN, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"tin\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('12345678');\n expect(tinSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"alphanumeric\"', () => {\n it('calls the associated formatter function', async () => {\n const alphaNumSpy = jest.spyOn(formatAlphanumeric, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"alphanumeric\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('12345678abcdefg');\n expect(alphaNumSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"alpha\"', () => {\n it('calls the associated formatter function', async () => {\n const alphaSpy = jest.spyOn(formatAlpha, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"alpha\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('abcdefg');\n expect(alphaSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"numeric\"', () => {\n it('calls the associated formatter function', async () => {\n const numSpy = jest.spyOn(formatNumeric, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"numeric\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('12345678');\n expect(numSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"percentage\"', () => {\n it('calls the associated formatter function', async () => {\n const percentageSpy = jest.spyOn(formatNumeric, 'formatPercentage');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"percentage\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('50');\n expect(percentageSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"postal\"', () => {\n it('calls the associated formatter function', async () => {\n const postalSpy = jest.spyOn(formatPostalCode, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"postal\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('12345');\n expect(postalSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"date\"', () => {\n it('calls the associated formatter function', async () => {\n const dateSpy = jest.spyOn(formatDate, 'default');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"date\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('2023-01-01');\n expect(dateSpy).toHaveBeenCalled();\n });\n });\n describe('when type is \"credit-card\"', () => {\n it('calls the associated formatter function', async () => {\n const creditSpy = jest.spyOn(formatCreditCard.default, 'format');\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"credit-card\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.getFormattedValue('4111111111111111');\n expect(creditSpy).toHaveBeenCalled();\n });\n });\n });\n describe('when the type does NOT require a formattingFunction', () => {\n it('returns a slightly different object of formatting results', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const formattedValue = inputClass.getFormattedValue();\n expect(formattedValue).toHaveProperty('value');\n expect(formattedValue).toHaveProperty('formattedValue');\n expect(formattedValue).toHaveProperty('fullyFormattedValue');\n expect(formattedValue).toHaveProperty('formattingCharacterCount');\n expect(formattedValue).toHaveProperty('unformattedValue');\n });\n it('returns an object with the correct values', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const formattedValue = inputClass.getFormattedValue('My Value');\n expect(formattedValue.value).toBe('My Value');\n expect(formattedValue.formattedValue).toBe('My Value');\n expect(formattedValue.fullyFormattedValue).toBe('My Value');\n expect(formattedValue.formattingCharacterCount).toBe(0);\n expect(formattedValue.unformattedValue).toBe('My Value');\n });\n });\n });\n describe('handleCurrencyDeletion', () => {\n describe('if text was selected for deletion', () => {\n it('does nothing except update textSelectedForDeletion value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"Amount\" type=\"currency\" value=\"$1,234.56\"></q2-input>',\n });\n\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const setSelectionRangeSpy = jest.spyOn(inputElement, 'setSelectionRange');\n inputClass.textSelectedForDeletion = true;\n\n inputClass.handleCurrencyDeletion();\n\n expect(setSelectionRangeSpy).not.toHaveBeenCalled();\n expect(inputClass.textSelectedForDeletion).toBe(false);\n setSelectionRangeSpy.mockRestore();\n });\n });\n describe('if text was NOT selected for deletion', () => {\n it('calls setSelectionRange to enforce a cursor position after \"Backspace\" or \"Delete\"', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\" value=\"123456\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const setSelectionRangeSpy = jest.spyOn(inputElement, 'setSelectionRange');\n inputElement.selectionStart = 3;\n inputElement.selectionEnd = 3;\n const deleteEvent = new CustomEvent('input', {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(deleteEvent, 'inputType', {\n value: 'deleteContentBackward',\n enumerable: true,\n });\n Object.defineProperty(deleteEvent, 'target', {\n value: inputElement,\n enumerable: true,\n });\n\n inputClass.handleCurrencyDeletion(deleteEvent);\n expect(setSelectionRangeSpy).toHaveBeenCalled();\n expect(setSelectionRangeSpy).toHaveBeenCalledWith(3, 3);\n expect(nextPaintMock).not.toHaveBeenCalled();\n setSelectionRangeSpy.mockRestore();\n });\n it('calls nextPaint if the newCursorPosition is zero', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\" value=\"123456\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.selectionStart = 0;\n inputElement.selectionEnd = 0;\n const deleteEvent = new CustomEvent('input', {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(deleteEvent, 'inputType', {\n value: 'deleteContentBackward',\n enumerable: true,\n });\n Object.defineProperty(deleteEvent, 'target', {\n value: inputElement,\n enumerable: true,\n });\n\n inputClass.handleCurrencyDeletion(deleteEvent);\n expect(nextPaintMock).toHaveBeenCalled();\n });\n });\n });\n describe('handleCurrencyKeydown', () => {\n describe('when keys are \"Backspace\" or \"Delete\"', () => {\n describe('when selection start and end are equal', () => {\n it('updates textSelectedForDeletion to false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\" value=\"123456\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.selectionStart = 2;\n inputElement.selectionEnd = 2;\n\n expect(inputClass.textSelectedForDeletion).toBeUndefined();\n const keydownEvent = new KeyboardEvent('keydown', { key: 'Backspace' });\n inputClass.handleCurrencyKeydown(keydownEvent);\n expect(inputClass.textSelectedForDeletion).toBe(false);\n });\n });\n });\n describe('when selection start and end are NOT equal', () => {\n it('updates textSelectedForDeletion to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\" value=\"123456\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.selectionStart = 2;\n inputElement.selectionEnd = 4;\n\n expect(inputClass.textSelectedForDeletion).toBeUndefined();\n const keydownEvent = new KeyboardEvent('keydown', { key: 'Backspace' });\n inputClass.handleCurrencyKeydown(keydownEvent);\n expect(inputClass.textSelectedForDeletion).toBe(true);\n });\n });\n });\n describe('handleDataInput', () => {\n describe('when maxlength is true', () => {\n it('updates formattedValueObject with a new one at the expected maxlength', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.maxlength = 5;\n const newFormattedValueObject = inputClass.getFormattedValue('My Long Value');\n inputClass.handleDataInput(newFormattedValueObject);\n expect(inputClass.formattedValueObject.value.length).toBe(5);\n expect(inputClass.formattedValueObject).toEqual({\n value: 'My Lo',\n formattedValue: 'My Lo',\n minFormattedLength: undefined,\n formattingCharacterCount: 0,\n fullyFormattedValue: 'My Lo',\n unformattedValue: 'My Lo',\n });\n });\n });\n describe('when maxlength is undefined', () => {\n it('updates formattedValueObject with a new one', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const newFormattedValueObject = inputClass.getFormattedValue('Another Long Value');\n inputClass.handleDataInput(newFormattedValueObject);\n expect(inputClass.formattedValueObject).toEqual({\n value: 'Another Long Value',\n formattedValue: 'Another Long Value',\n minFormattedLength: undefined,\n formattingCharacterCount: 0,\n fullyFormattedValue: 'Another Long Value',\n unformattedValue: 'Another Long Value',\n });\n });\n });\n });\n describe('handleValueAndCursor', () => {\n it('emits an input event with data from formattedValueObject', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const inputSpy = jest.spyOn(inputClass.input, 'emit');\n inputClass.handleValueAndCursor();\n expect(inputSpy).toHaveBeenCalled();\n expect(inputSpy).toHaveBeenCalledWith({\n value: '12345678',\n formattedValue: '123-45-678',\n minFormattedLength: 11,\n });\n });\n it('calls setCursorPosition', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const setCursorSpy = jest.spyOn(inputClass, 'setCursorPosition');\n inputClass.handleValueAndCursor();\n expect(setCursorSpy).toHaveBeenCalled();\n });\n describe('when type is NOT number', () => {\n it('input field value is updated with formatted value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.handleValueAndCursor();\n expect(inputClass.inputField.value).toBe(inputClass.formattedValueObject.formattedValue);\n });\n });\n describe('when formattedValueObject value is falsy', () => {\n it('emits a clear event', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const clearSpy = jest.spyOn(inputClass.clear, 'emit');\n inputClass.formattedValueObject.value = '';\n inputClass.handleValueAndCursor();\n expect(clearSpy).toHaveBeenCalled();\n });\n });\n });\n describe('initMutationObserver', () => {\n // Can't test this... yet?\n });\n describe('onClearInput', () => {\n it('emits an input event with event detail', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const inputSpy = jest.spyOn(inputClass.input, 'emit');\n inputClass.onClearInput();\n expect(inputSpy).toHaveBeenCalled();\n expect(inputSpy).toHaveBeenCalledWith({\n value: '',\n formattedValue: '',\n minFormattedLength: 11,\n });\n });\n it('emits a change event with event detail', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const changeSpy = jest.spyOn(inputClass.change, 'emit');\n inputClass.onClearInput();\n expect(changeSpy).toHaveBeenCalled();\n expect(changeSpy).toHaveBeenCalledWith({\n value: '',\n formattedValue: '',\n minFormattedLength: 11,\n });\n });\n it('emits a clear event', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const changeSpy = jest.spyOn(inputClass.clear, 'emit');\n inputClass.onClearInput();\n expect(changeSpy).toHaveBeenCalled();\n });\n it('calls focus on the inputField element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"ssn\" value=\"12345678\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const focusSpy = jest.spyOn(inputElement, 'focus');\n inputClass.onClearInput();\n expect(focusSpy).toHaveBeenCalled();\n });\n });\n describe('onInputBlur', () => {\n it('sets hasFocus to false', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.hasFocus = true;\n inputClass.onInputBlur();\n expect(inputClass.hasFocus).toBe(false);\n });\n it('calls setMessageHeight', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.onInputBlur();\n expect(setMessageHeightMock).toHaveBeenCalled();\n });\n describe('when valueOnFocus is different from the formattedValueObject value', () => {\n it('updates the valueOnFocus property to the formattedValueObject value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.valueOnFocus = 'My Different Value';\n inputClass.onInputBlur();\n expect(inputClass.valueOnFocus).toBe(inputClass.formattedValueObject.value);\n });\n it('emits a change event with event detail', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.valueOnFocus = 'My Different Value';\n const changeSpy = jest.spyOn(inputClass.change, 'emit');\n inputClass.onInputBlur();\n expect(changeSpy).toHaveBeenCalled();\n expect(changeSpy).toHaveBeenCalledWith({\n value: inputClass.formattedValueObject.value,\n formattedValue: inputClass.formattedValueObject.fullyFormattedValue,\n minFormattedLength: inputClass.formattedValueObject.minFormattedLength,\n });\n });\n });\n });\n describe('onInputClick', () => {\n describe('if shouldCursorStayAtEnd returns true', () => {\n it('calls placeCursorAtEnd', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const placeCursorSpy = jest.spyOn(inputClass, 'placeCursorAtEnd');\n inputClass.isMobile = true;\n inputClass.onInputClick();\n expect(placeCursorSpy).toHaveBeenCalled();\n });\n });\n describe('if shouldCursorStayAtEnd returns false', () => {\n it('does not call placeCursorAtEnd', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" \"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const placeCursorSpy = jest.spyOn(inputClass, 'placeCursorAtEnd');\n inputClass.onInputClick();\n expect(placeCursorSpy).not.toHaveBeenCalled();\n });\n });\n });\n describe('onInputFocus', () => {\n it('sets hasFocus to true', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.hasFocus = false;\n inputClass.onInputFocus();\n expect(inputClass.hasFocus).toBe(true);\n });\n it('calls setMessageHeight', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.onInputFocus();\n expect(setMessageHeightMock).toHaveBeenCalled();\n });\n it('sets valueOnFocus to the current input field value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.valueOnFocus = '';\n inputClass.onInputFocus();\n expect(inputClass.valueOnFocus).toBe(inputClass.inputField.value);\n });\n describe('when inputField tagname is \"INPUT\"', () => {\n describe('when shouldCursorStartAtEnd returns true', () => {\n it('adds placeCursorAtEnd to the queue', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const placeCursorSpy = jest.spyOn(inputClass, 'placeCursorAtEnd');\n inputClass.onInputFocus();\n inputClass.scheduledAfterRender[0](); // call it to verify the expected function is in the queue\n expect(inputClass.scheduledAfterRender.length).toBe(1);\n expect(placeCursorSpy).toHaveBeenCalled();\n });\n });\n describe('when shouldCursorStartAtEnd returns false', () => {\n it('adds setCursorPosition to the queue', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const setCursorSpy = jest.spyOn(inputClass, 'setCursorPosition');\n inputClass.onInputFocus();\n inputClass.scheduledAfterRender[0](); // call it to verify the expected function is in the queue\n expect(inputClass.scheduledAfterRender.length).toBe(1);\n expect(setCursorSpy).toHaveBeenCalled();\n });\n });\n });\n });\n describe('onInputInput', () => {\n it('calls event.stopPropogation', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const event = new CustomEvent('input');\n Object.defineProperty(event, 'target', {\n value: inputElement,\n enumerable: true,\n });\n const stopPropagationSpy = jest.spyOn(event, 'stopPropagation');\n inputClass.onInputInput(event);\n expect(stopPropagationSpy).toHaveBeenCalled();\n });\n it('if type is \"currency\", calls handleCurrencyDeletion', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\" value=\"123456\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const event = new CustomEvent('input');\n Object.defineProperty(event, 'target', {\n value: inputElement,\n enumerable: true,\n });\n const handleCurrencySpy = jest.spyOn(inputClass, 'handleCurrencyDeletion');\n inputClass.onInputInput(event);\n expect(handleCurrencySpy).toHaveBeenCalled();\n });\n it('calls handleDataInput', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const event = new CustomEvent('input');\n Object.defineProperty(event, 'target', {\n value: inputElement,\n enumerable: true,\n });\n const handleDataInputSpy = jest.spyOn(inputClass, 'handleDataInput');\n inputClass.onInputInput(event);\n expect(handleDataInputSpy).toHaveBeenCalled();\n });\n it('calls validateInput', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const event = new CustomEvent('input');\n Object.defineProperty(event, 'target', {\n value: inputElement,\n enumerable: true,\n });\n const validateInputSpy = jest.spyOn(inputClass, 'validateInput');\n inputClass.onInputInput(event);\n expect(validateInputSpy).toHaveBeenCalled();\n });\n });\n describe('onInputKeydown', () => {\n describe('when type is currency', () => {\n it('calls handleCurrencyKeydown', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const event = new KeyboardEvent('keydown', { key: 'Backspace' });\n const handleCurrencySpy = jest.spyOn(inputClass, 'handleCurrencyKeydown');\n inputClass.onInputKeydown(event);\n expect(handleCurrencySpy).toHaveBeenCalled();\n });\n });\n describe('when shouldCursorStayAtEnd returns true and specific keys are pressed', () => {\n it('calls preventDefault on the event', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const event = new KeyboardEvent('keydown', { key: 'ArrowLeft' });\n const preventDefaultSpy = jest.spyOn(event, 'preventDefault');\n inputClass.isMobile = true;\n inputClass.onInputKeydown(event);\n expect(preventDefaultSpy).toHaveBeenCalled();\n });\n });\n describe('when key is \"Enter\" and valueOnFocus does not match formattedValueObject.value', () => {\n it('updates valueOnFocus to the formattedValueObject value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.valueOnFocus = 'My Different Value';\n const event = new KeyboardEvent('keydown', { key: 'Enter' });\n inputClass.onInputKeydown(event);\n expect(inputClass.valueOnFocus).toBe(inputClass.formattedValueObject.value);\n });\n it('emits a change event with event detail', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.valueOnFocus = 'My Different Value';\n const changeSpy = jest.spyOn(inputClass.change, 'emit');\n const event = new KeyboardEvent('keydown', { key: 'Enter' });\n inputClass.onInputKeydown(event);\n expect(changeSpy).toHaveBeenCalled();\n expect(changeSpy).toHaveBeenCalledWith({\n value: inputClass.formattedValueObject.value,\n formattedValue: inputClass.formattedValueObject.fullyFormattedValue,\n minFormattedLength: inputClass.formattedValueObject.minFormattedLength,\n });\n });\n });\n });\n describe('onInputPaste', () => {\n describe('when type is currency', () => {\n it('calls preventDefault on the clipboard event', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const event = {\n preventDefault: jest.fn(),\n clipboardData: {\n getData: jest.fn().mockReturnValue('123'),\n },\n } as unknown as ClipboardEvent;\n const preventDefaultSpy = jest.spyOn(event, 'preventDefault');\n inputClass.onInputPaste(event);\n expect(preventDefaultSpy).toHaveBeenCalled();\n });\n it('calls handleDataInput', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const event = {\n preventDefault: jest.fn(),\n clipboardData: {\n getData: jest.fn().mockReturnValue('123'),\n },\n } as unknown as ClipboardEvent;\n const handleDataInputSpy = jest.spyOn(inputClass, 'handleDataInput');\n inputClass.onInputPaste(event);\n expect(handleDataInputSpy).toHaveBeenCalled();\n });\n });\n });\n describe('onMutationObserved', () => {\n it('updates checkSlotCount to force a re-render', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.checkSlotCount = 0;\n inputClass.onMutationObserved();\n expect(inputClass.checkSlotCount).toBe(1);\n });\n });\n describe('onRefocusInput', () => {\n describe('when showMessages returns true', () => {\n it('calls focus on the inputField element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n const focusSpy = jest.spyOn(inputElement, 'focus');\n inputClass.errors = ['My Error'];\n inputClass.onRefocusInput();\n expect(focusSpy).toHaveBeenCalled();\n });\n it('calls setMessageHeight', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.errors = ['My Error'];\n inputClass.onRefocusInput();\n expect(setMessageHeightMock).toHaveBeenCalled();\n });\n });\n });\n describe('onToggleVisibility', () => {\n it('dispatches a focus event on the hostElement', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n const dispatchEventSpy = jest.spyOn(inputClass.hostElement, 'dispatchEvent');\n inputClass.onToggleVisibility();\n const calledEvent = dispatchEventSpy.mock.calls[0][0] as FocusEvent;\n expect(dispatchEventSpy).toHaveBeenCalled();\n expect(calledEvent.type).toBe('focus');\n });\n it('changes textHidden to the opposite of its current value', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputClass.textHidden = true;\n inputClass.onToggleVisibility();\n expect(inputClass.textHidden).toBe(false);\n });\n });\n describe('placeCursorAtEnd', () => {\n it('updates the selectionStart and selectionEnd to the input field value length', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.selectionStart = 0;\n inputElement.selectionEnd = 5;\n\n inputClass.placeCursorAtEnd();\n expect(inputElement.selectionStart).toBe(inputElement.value.length);\n expect(inputElement.selectionEnd).toBe(inputElement.value.length);\n });\n });\n describe('setCursorPosition', () => {\n describe('when canSetSelection returns true and cursor has no selection', () => {\n describe('when type is \"currency\"', () => {\n describe('when previousValueLength - valueLength is 1', () => {\n it('calls setSelectionRange 1 less than startingPosition', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\" value=\"123456\"></q2-input>',\n });\n const cursorData = {\n startingPosition: 3,\n valueLength: 6,\n previousValueLength: 7,\n hasSelection: false,\n };\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.setSelectionRange = setSelectionRangeMock;\n inputClass.setCursorPosition(cursorData);\n expect(setSelectionRangeMock).toHaveBeenCalled();\n expect(setSelectionRangeMock).toHaveBeenCalledWith(2, 2);\n });\n });\n describe('when previousValueLength - valueLength is NOT 1', () => {\n it('calls setSelectionRange at the startingPosition - difference', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"currency\" value=\"1234567\"></q2-input>',\n });\n const cursorData = {\n startingPosition: 3,\n valueLength: 5,\n previousValueLength: 7,\n hasSelection: false,\n };\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.setSelectionRange = setSelectionRangeMock;\n inputClass.setCursorPosition(cursorData);\n expect(setSelectionRangeMock).toHaveBeenCalled();\n expect(setSelectionRangeMock).toHaveBeenCalledWith(1, 1);\n });\n });\n });\n describe('when type is NOT \"currency\"', () => {\n describe('when difference is greater than zero', () => {\n it('calls setSelectionRange at the startingPosition + difference', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"text\" value=\"Test Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.setSelectionRange = setSelectionRangeMock;\n const cursorData = {\n startingPosition: 3,\n valueLength: 8,\n previousValueLength: 10,\n hasSelection: false,\n };\n inputClass.setCursorPosition(cursorData);\n expect(setSelectionRangeMock).toHaveBeenCalled();\n expect(setSelectionRangeMock).toHaveBeenCalledWith(3, 3);\n });\n });\n describe('when difference is less than or equal to zero', () => {\n it('calls setSelectionRange with only the startingPosition', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" type=\"text\" value=\"Test Value\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.setSelectionRange = setSelectionRangeMock;\n const cursorData = {\n startingPosition: 3,\n valueLength: 8,\n previousValueLength: 8,\n hasSelection: false,\n };\n inputClass.setCursorPosition(cursorData);\n expect(setSelectionRangeMock).toHaveBeenCalled();\n expect(setSelectionRangeMock).toHaveBeenCalledWith(3, 3);\n });\n });\n });\n });\n });\n describe('validateInput', () => {\n it('updates the validity property to the validity object of the input field', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n inputElement.value = 'My Value';\n inputClass.validateInput();\n expect(inputClass.validity).toBe(inputElement.validity);\n });\n });\n });\n });\n\n describe('Render Methods', () => {\n describe('renderCountDOM', () => {\n describe('when showCount is true', () => {\n it('renders a character counter', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"abc\" show-count></q2-input>',\n });\n const counter = specPage.root.shadowRoot.querySelector('.count-tag');\n expect(counter).not.toBeNull();\n });\n it('displays the number of characters in the input field', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"abc\" show-count></q2-input>',\n });\n const counter = specPage.root.shadowRoot.querySelector('.count-tag');\n expect(counter).toEqualText('3');\n });\n describe('when maxlength is provided', () => {\n it('renders a character counter in relation to the maxlength', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" maxlength=\"10\" value=\"abc\" show-count></q2-input>',\n });\n const counter = specPage.root.shadowRoot.querySelector('.count-tag');\n expect(counter).toEqualText('3/10');\n });\n });\n });\n });\n describe('renderInputContainerDOM', () => {\n it('renders a div with class input-icons-container-left', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n containerElement = inputElement.shadowRoot.querySelector('.input-icons-container-left');\n expect(containerElement).not.toBeNull();\n });\n it('renders a div with class input-icons-container-right', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n containerElement = inputElement.shadowRoot.querySelector('.input-icons-container-right');\n expect(containerElement).not.toBeNull();\n });\n it('renders a clear button in the input-icons-container-right element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n containerElement = inputElement.shadowRoot.querySelector('.input-icons-container-right');\n const clearButton = containerElement.querySelector('[test-id=\"clearButton\"]');\n expect(clearButton).not.toBeNull();\n });\n });\n describe('renderStandardInputDOM', () => {\n it('renders a standard input element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputClass = specPage.rootInstance;\n inputElement = specPage.root;\n const input = inputElement.shadowRoot.querySelector('.input-field');\n expect(input).not.toBeNull();\n });\n it('sets expected default attributes on the input element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('input');\n expect(inputElement.getAttribute('type')).toBe('text');\n expect(inputElement.getAttribute('size')).toBeNull();\n expect(inputElement.getAttribute('maxlength')).toBeNull();\n expect(inputElement.getAttribute('min')).toBeNull();\n expect(inputElement.getAttribute('max')).toBeNull();\n expect(inputElement.getAttribute('step')).toBeNull();\n expect(inputElement.getAttribute('aria-current')).toBeNull();\n expect(inputElement.getAttribute('aria-describedby')).toBeNull();\n expect(inputElement.getAttribute('aria-required')).toBe('true');\n expect(inputElement.getAttribute('aria-invalid')).toBe('false');\n expect(inputElement.getAttribute('aria-owns')).toBeNull();\n expect(inputElement.getAttribute('aria-haspopup')).toBeNull();\n expect(inputElement.getAttribute('aria-expanded')).toBeNull();\n expect(inputElement.getAttribute('aria-activedescendant')).toBeNull();\n expect(inputElement.getAttribute('autocomplete')).toBe('off');\n expect(inputElement.getAttribute('autocapitalize')).toBeNull();\n expect(inputElement.getAttribute('autocorrect')).toBe('off');\n expect(inputElement.getAttribute('autofocus')).toBeNull();\n expect(inputElement.getAttribute('placeholder')).toBeNull();\n expect(inputElement.getAttribute('role')).toBeNull();\n expect(inputElement.getAttribute('test-id')).toBe('inputField');\n expect(inputElement.getAttribute('readonly')).toBeNull();\n expect(inputElement.getAttribute('disabled')).toBeNull();\n expect(inputElement.getAttribute('input-mode')).toBeNull();\n });\n describe('when hasCustomDisplaySlot is true', () => {\n it('renders a slotted element and puts the \"sr\" class on the input', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\"><div slot=\"custom-display\"></div></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('input');\n const slottedElement = specPage.root.shadowRoot.querySelector('.custom-display-container');\n expect(slottedElement).not.toBeNull();\n expect(inputElement.className).toContain('sr');\n });\n });\n });\n describe('renderPseudoInputDOM', () => {\n it('renders a button element', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" pseudo></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement.tagName).toBe('BUTTON');\n });\n it('displays placeholder text', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" placeholder=\"My Placeholder\" pseudo></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement).toEqualText('My Placeholder');\n });\n it('displays value text', async () => {\n specPage = await setupSpecPageWithLoc({\n components: [Q2Input],\n html: '<q2-input label=\"My Label\" value=\"My Value\" pseudo></q2-input>',\n });\n inputElement = specPage.root.shadowRoot.querySelector('.input-field');\n expect(inputElement).toEqualText('My Value');\n });\n });\n });\n});\n"]}