ng-virtual-list 16.11.4 → 16.12.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 (274) hide show
  1. package/README.md +73 -45
  2. package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +133 -31
  3. package/esm2022/lib/components/ng-list-item/const/index.mjs +13 -2
  4. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +35 -42
  5. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.module.mjs +5 -5
  6. package/esm2022/lib/components/ng-list-item/utils/create-display-id.mjs +7 -1
  7. package/esm2022/lib/components/ng-list-item/utils/get-element-by-index.mjs +17 -3
  8. package/esm2022/lib/components/ng-list-item/utils/index.mjs +3 -2
  9. package/esm2022/lib/components/ng-list-item/utils/matrix-3d.mjs +18 -0
  10. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +28 -18
  11. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +32 -16
  12. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.mjs +5 -5
  13. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +8 -6
  14. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.mjs +3 -3
  15. package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +38 -8
  16. package/esm2022/lib/components/ng-prerender-container/interfaces/refresh-params.mjs +1 -1
  17. package/esm2022/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +7 -6
  18. package/esm2022/lib/components/ng-prerender-container/types/cache.mjs +1 -1
  19. package/esm2022/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.mjs +1 -1
  20. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +68 -27
  21. package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +108 -21
  22. package/esm2022/lib/components/ng-scroll-view/const/index.mjs +4 -2
  23. package/esm2022/lib/components/ng-scroll-view/interfaces/scroll-to-params.mjs +1 -1
  24. package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +551 -71
  25. package/esm2022/lib/components/ng-scroll-view/utils/calculate-direction.mjs +7 -1
  26. package/esm2022/lib/components/ng-scroll-view/utils/calculate-velocity.mjs +12 -0
  27. package/esm2022/lib/components/ng-scroll-view/utils/get-dir.mjs +10 -0
  28. package/esm2022/lib/components/ng-scroll-view/utils/index.mjs +4 -2
  29. package/esm2022/lib/components/ng-scroll-view/utils/matrix-3d.mjs +15 -0
  30. package/esm2022/lib/components/ng-scroller/enums/scroller-directions.mjs +1 -1
  31. package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +199 -123
  32. package/esm2022/lib/components/ng-scroller/utils/scroll-box.mjs +2 -2
  33. package/esm2022/lib/const/index.mjs +50 -10
  34. package/esm2022/lib/core/cache-map.mjs +1 -54
  35. package/esm2022/lib/core/const/index.mjs +3 -0
  36. package/esm2022/lib/core/enums/index.mjs +3 -0
  37. package/esm2022/lib/core/enums/item-display-methods.mjs +14 -0
  38. package/esm2022/lib/core/events/index.mjs +3 -0
  39. package/esm2022/lib/core/events/track-box-events.mjs +12 -0
  40. package/esm2022/lib/core/interfaces/get-item-position-options.mjs +2 -0
  41. package/esm2022/lib/core/interfaces/get-metrics-returns.mjs +2 -0
  42. package/esm2022/lib/core/interfaces/index.mjs +2 -0
  43. package/esm2022/lib/core/interfaces/item.mjs +2 -0
  44. package/esm2022/lib/core/interfaces/metrics.mjs +2 -0
  45. package/esm2022/lib/core/interfaces/recalculate-metrics-options.mjs +2 -0
  46. package/esm2022/lib/core/interfaces/update-collection-options.mjs +2 -0
  47. package/esm2022/lib/core/interfaces/update-collection-returns.mjs +2 -0
  48. package/esm2022/lib/core/track-box.mjs +619 -204
  49. package/esm2022/lib/core/tracker.mjs +24 -15
  50. package/esm2022/lib/core/types/cache-map-events.mjs +2 -0
  51. package/esm2022/lib/core/types/cache-map-listeners.mjs +2 -0
  52. package/esm2022/lib/core/types/cache.mjs +2 -0
  53. package/esm2022/lib/core/types/index.mjs +2 -0
  54. package/esm2022/lib/core/types/on-change-event-listener.mjs +2 -0
  55. package/esm2022/lib/core/types/on-tick-event-listener.mjs +2 -0
  56. package/esm2022/lib/core/utils/get-service-id-prop.mjs +10 -0
  57. package/esm2022/lib/core/utils/index.mjs +3 -0
  58. package/esm2022/lib/directives/index.mjs +3 -3
  59. package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +2 -1
  60. package/esm2022/lib/directives/virtual-click/virtual-click.directive.mjs +67 -0
  61. package/esm2022/lib/directives/virtual-click/virtual-click.module.mjs +19 -0
  62. package/esm2022/lib/enums/alignments.mjs +12 -0
  63. package/esm2022/lib/enums/collapsing-modes.mjs +22 -0
  64. package/esm2022/lib/enums/index.mjs +8 -4
  65. package/esm2022/lib/enums/selecting-modes-types.mjs +22 -0
  66. package/esm2022/lib/enums/selecting-modes.mjs +22 -0
  67. package/esm2022/lib/enums/snap-to-item-aligns.mjs +22 -0
  68. package/esm2022/lib/enums/spreading-modes.mjs +18 -0
  69. package/esm2022/lib/interfaces/animation-params.mjs +1 -1
  70. package/esm2022/lib/interfaces/base-virtual-list-item-component.mjs +2 -9
  71. package/esm2022/lib/interfaces/index.mjs +1 -1
  72. package/esm2022/lib/interfaces/item-transformation.mjs +2 -0
  73. package/esm2022/lib/interfaces/point.mjs +2 -0
  74. package/esm2022/lib/interfaces/scroll-options.mjs +1 -1
  75. package/esm2022/lib/interfaces/scroll-params.mjs +1 -1
  76. package/esm2022/lib/models/item-config-map.model.mjs +1 -1
  77. package/esm2022/lib/models/item.model.mjs +1 -1
  78. package/esm2022/lib/models/render-item-config.model.mjs +1 -1
  79. package/esm2022/lib/models/render-item-measures.model.mjs +1 -1
  80. package/esm2022/lib/ng-virtual-list-public.service.mjs +6 -7
  81. package/esm2022/lib/ng-virtual-list.component.mjs +1074 -354
  82. package/esm2022/lib/ng-virtual-list.service.mjs +83 -28
  83. package/esm2022/lib/transformations/deck-of-cards-3d.mjs +57 -0
  84. package/esm2022/lib/transformations/deck-of-cards.mjs +54 -0
  85. package/esm2022/lib/transformations/event-horizon.mjs +47 -0
  86. package/esm2022/lib/transformations/index.mjs +13 -0
  87. package/esm2022/lib/transformations/linear.mjs +47 -0
  88. package/esm2022/lib/transformations/swipe-3d.mjs +51 -0
  89. package/esm2022/lib/types/alignment.mjs +2 -0
  90. package/esm2022/lib/types/arithmetic-expression.mjs +2 -0
  91. package/esm2022/lib/types/collapsing-mode.mjs +2 -0
  92. package/esm2022/lib/types/collection-mode.mjs +2 -0
  93. package/esm2022/lib/types/color.mjs +2 -0
  94. package/esm2022/lib/types/direction.mjs +2 -0
  95. package/esm2022/lib/types/float-or-persentage-value.mjs +2 -0
  96. package/esm2022/lib/types/focus-item-params.mjs +1 -1
  97. package/esm2022/lib/types/gradient-color-position.mjs +1 -1
  98. package/esm2022/lib/types/index.mjs +1 -1
  99. package/esm2022/lib/types/item-transform.mjs +2 -0
  100. package/esm2022/lib/types/scroll-direction.mjs +1 -1
  101. package/esm2022/lib/types/selecting-mode.mjs +2 -0
  102. package/esm2022/lib/types/snap-to-item-align.mjs +2 -0
  103. package/esm2022/lib/types/snapping-distance.mjs +2 -0
  104. package/esm2022/lib/types/snapping-method.mjs +2 -0
  105. package/esm2022/lib/types/spreading-mode.mjs +2 -0
  106. package/esm2022/lib/types/text-direction.mjs +2 -0
  107. package/esm2022/lib/utils/animator/animator.mjs +28 -8
  108. package/esm2022/lib/utils/animator/const/index.mjs +2 -0
  109. package/esm2022/lib/utils/animator/ease.mjs +1 -13
  110. package/esm2022/lib/utils/animator/index.mjs +3 -2
  111. package/esm2022/lib/utils/animator/interfaces/animator-params.mjs +2 -0
  112. package/esm2022/lib/utils/animator/interfaces/animator-update-data.mjs +2 -0
  113. package/esm2022/lib/utils/animator/interfaces/index.mjs +2 -0
  114. package/esm2022/lib/utils/animator/types/easing.mjs +1 -1
  115. package/esm2022/lib/utils/event-emitter/event-emitter.mjs +2 -2
  116. package/esm2022/lib/utils/event-emitter/interfaces/event-emitter.mjs +1 -1
  117. package/esm2022/lib/utils/get-scroll-state-version.mjs +12 -0
  118. package/esm2022/lib/utils/is-collapse-mode.mjs +18 -0
  119. package/esm2022/lib/utils/is-collection-mode.mjs +1 -1
  120. package/esm2022/lib/utils/is-direction.mjs +1 -1
  121. package/esm2022/lib/utils/is-persentage-value.mjs +14 -0
  122. package/esm2022/lib/utils/is-select-mode.mjs +18 -0
  123. package/esm2022/lib/utils/is-spreading-mode.mjs +15 -0
  124. package/esm2022/lib/utils/normalize-collection.mjs +42 -0
  125. package/esm2022/lib/utils/parse-arithmetic-expression.mjs +53 -0
  126. package/esm2022/lib/utils/parse-float-or-persentage-value.mjs +17 -0
  127. package/esm2022/lib/utils/scrolling-direction.mjs +29 -0
  128. package/esm2022/lib/utils/snapping-method.mjs +1 -1
  129. package/esm2022/public-api.mjs +4 -1
  130. package/fesm2022/ng-virtual-list.mjs +5789 -3121
  131. package/fesm2022/ng-virtual-list.mjs.map +1 -1
  132. package/lib/components/ng-list-item/base/base-virtual-list-item-component.d.ts +19 -4
  133. package/lib/components/ng-list-item/const/index.d.ts +1 -1
  134. package/lib/components/ng-list-item/ng-virtual-list-item.component.d.ts +1 -1
  135. package/lib/components/ng-list-item/ng-virtual-list-item.module.d.ts +2 -2
  136. package/lib/components/ng-list-item/utils/create-display-id.d.ts +6 -0
  137. package/lib/components/ng-list-item/utils/get-element-by-index.d.ts +15 -1
  138. package/lib/components/ng-list-item/utils/index.d.ts +2 -1
  139. package/lib/components/ng-list-item/utils/matrix-3d.d.ts +7 -0
  140. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.d.ts +11 -7
  141. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.d.ts +2 -2
  142. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.d.ts +2 -2
  143. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +3 -3
  144. package/lib/components/ng-prerender-container/core/prerender-track-box.d.ts +1 -1
  145. package/lib/components/ng-prerender-container/interfaces/refresh-params.d.ts +2 -1
  146. package/lib/components/ng-prerender-container/ng-prerender-container.component.d.ts +5 -4
  147. package/lib/components/ng-prerender-container/types/cache.d.ts +1 -1
  148. package/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.d.ts +1 -1
  149. package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +11 -6
  150. package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +30 -10
  151. package/lib/components/ng-scroll-view/const/index.d.ts +3 -1
  152. package/lib/components/ng-scroll-view/interfaces/scroll-to-params.d.ts +4 -1
  153. package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +65 -7
  154. package/lib/components/ng-scroll-view/utils/calculate-direction.d.ts +6 -0
  155. package/lib/components/ng-scroll-view/utils/calculate-velocity.d.ts +7 -0
  156. package/lib/components/ng-scroll-view/utils/get-dir.d.ts +7 -0
  157. package/lib/components/ng-scroll-view/utils/index.d.ts +3 -1
  158. package/lib/components/ng-scroll-view/utils/matrix-3d.d.ts +7 -0
  159. package/lib/components/ng-scroller/enums/scroller-directions.d.ts +2 -1
  160. package/lib/components/ng-scroller/ng-scroller.component.d.ts +40 -26
  161. package/lib/components/ng-scroller/utils/scroll-box.d.ts +1 -1
  162. package/lib/const/index.d.ts +46 -5
  163. package/lib/core/cache-map.d.ts +0 -10
  164. package/lib/core/const/index.d.ts +1 -0
  165. package/lib/core/enums/index.d.ts +2 -0
  166. package/lib/core/enums/item-display-methods.d.ts +12 -0
  167. package/lib/core/events/index.d.ts +2 -0
  168. package/lib/core/events/track-box-events.d.ts +10 -0
  169. package/lib/core/interfaces/get-item-position-options.d.ts +10 -0
  170. package/lib/core/interfaces/get-metrics-returns.d.ts +11 -0
  171. package/lib/core/interfaces/index.d.ts +8 -0
  172. package/lib/core/interfaces/item.d.ts +9 -0
  173. package/lib/core/interfaces/metrics.d.ts +51 -0
  174. package/lib/core/interfaces/recalculate-metrics-options.d.ts +33 -0
  175. package/lib/core/interfaces/update-collection-options.d.ts +10 -0
  176. package/lib/core/interfaces/update-collection-returns.d.ts +14 -0
  177. package/lib/core/track-box.d.ts +26 -96
  178. package/lib/core/tracker.d.ts +1 -1
  179. package/lib/core/types/cache-map-events.d.ts +8 -0
  180. package/lib/core/types/cache-map-listeners.d.ts +9 -0
  181. package/lib/core/types/cache.d.ts +12 -0
  182. package/lib/core/types/index.d.ts +6 -0
  183. package/lib/core/types/on-change-event-listener.d.ts +7 -0
  184. package/lib/core/types/on-tick-event-listener.d.ts +7 -0
  185. package/lib/core/utils/get-service-id-prop.d.ts +7 -0
  186. package/lib/core/utils/index.d.ts +2 -0
  187. package/lib/directives/index.d.ts +2 -2
  188. package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +1 -1
  189. package/lib/directives/{item-click/item-click.directive.d.ts → virtual-click/virtual-click.directive.d.ts} +4 -4
  190. package/lib/directives/virtual-click/virtual-click.module.d.ts +8 -0
  191. package/lib/enums/alignments.d.ts +10 -0
  192. package/lib/enums/collapsing-modes.d.ts +20 -0
  193. package/lib/enums/index.d.ts +7 -9
  194. package/lib/enums/{method-for-selecting-types.d.ts → selecting-modes-types.d.ts} +3 -3
  195. package/lib/enums/{methods-for-selecting.d.ts → selecting-modes.d.ts} +3 -3
  196. package/lib/enums/snap-to-item-aligns.d.ts +20 -0
  197. package/lib/enums/spreading-modes.d.ts +16 -0
  198. package/lib/interfaces/animation-params.d.ts +1 -0
  199. package/lib/interfaces/base-virtual-list-item-component.d.ts +13 -13
  200. package/lib/interfaces/index.d.ts +3 -2
  201. package/lib/interfaces/item-transformation.d.ts +22 -0
  202. package/lib/interfaces/point.d.ts +16 -0
  203. package/lib/interfaces/scroll-options.d.ts +4 -0
  204. package/lib/interfaces/scroll-params.d.ts +2 -1
  205. package/lib/models/item-config-map.model.d.ts +5 -0
  206. package/lib/models/item.model.d.ts +7 -0
  207. package/lib/models/render-item-config.model.d.ts +50 -0
  208. package/lib/models/render-item-measures.model.d.ts +71 -0
  209. package/lib/ng-virtual-list-public.service.d.ts +4 -5
  210. package/lib/ng-virtual-list.component.d.ts +252 -53
  211. package/lib/ng-virtual-list.service.d.ts +30 -12
  212. package/lib/transformations/deck-of-cards-3d.d.ts +54 -0
  213. package/lib/transformations/deck-of-cards.d.ts +50 -0
  214. package/lib/transformations/event-horizon.d.ts +26 -0
  215. package/lib/transformations/index.d.ts +7 -0
  216. package/lib/transformations/linear.d.ts +26 -0
  217. package/lib/transformations/swipe-3d.d.ts +38 -0
  218. package/lib/types/alignment.d.ts +8 -0
  219. package/lib/types/arithmetic-expression.d.ts +10 -0
  220. package/lib/types/collapsing-mode.d.ts +8 -0
  221. package/lib/{enums → types}/collection-mode.d.ts +1 -1
  222. package/lib/types/color.d.ts +4 -0
  223. package/lib/{enums → types}/direction.d.ts +1 -1
  224. package/lib/types/float-or-persentage-value.d.ts +7 -0
  225. package/lib/types/focus-item-params.d.ts +6 -0
  226. package/lib/types/gradient-color-position.d.ts +1 -1
  227. package/lib/types/index.d.ts +15 -1
  228. package/lib/types/item-transform.d.ts +9 -0
  229. package/lib/types/scroll-direction.d.ts +2 -0
  230. package/lib/types/selecting-mode.d.ts +8 -0
  231. package/lib/types/snap-to-item-align.d.ts +8 -0
  232. package/lib/types/snapping-distance.d.ts +8 -0
  233. package/lib/{enums → types}/snapping-method.d.ts +1 -1
  234. package/lib/types/spreading-mode.d.ts +8 -0
  235. package/lib/{enums → types}/text-direction.d.ts +1 -1
  236. package/lib/utils/animator/animator.d.ts +10 -17
  237. package/lib/utils/animator/const/index.d.ts +1 -0
  238. package/lib/utils/animator/ease.d.ts +0 -12
  239. package/lib/utils/animator/index.d.ts +2 -1
  240. package/lib/utils/animator/interfaces/animator-params.d.ts +18 -0
  241. package/lib/utils/animator/interfaces/animator-update-data.d.ts +13 -0
  242. package/lib/utils/animator/interfaces/index.d.ts +3 -0
  243. package/lib/utils/animator/types/easing.d.ts +1 -1
  244. package/lib/utils/event-emitter/event-emitter.d.ts +1 -1
  245. package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +1 -1
  246. package/lib/utils/get-scroll-state-version.d.ts +1 -0
  247. package/lib/utils/is-collapse-mode.d.ts +8 -0
  248. package/lib/utils/is-collection-mode.d.ts +1 -1
  249. package/lib/utils/is-direction.d.ts +1 -1
  250. package/lib/utils/is-persentage-value.d.ts +7 -0
  251. package/lib/utils/is-select-mode.d.ts +8 -0
  252. package/lib/utils/is-spreading-mode.d.ts +8 -0
  253. package/lib/utils/normalize-collection.d.ts +8 -0
  254. package/lib/utils/parse-arithmetic-expression.d.ts +8 -0
  255. package/lib/utils/parse-float-or-persentage-value.d.ts +7 -0
  256. package/lib/utils/scrolling-direction.d.ts +17 -0
  257. package/lib/utils/snapping-method.d.ts +1 -1
  258. package/package.json +1 -1
  259. package/public-api.d.ts +3 -0
  260. package/esm2022/lib/components/ng-scroller/const/index.mjs +0 -2
  261. package/esm2022/lib/directives/item-click/item-click.directive.mjs +0 -66
  262. package/esm2022/lib/directives/item-click/item-click.module.mjs +0 -19
  263. package/esm2022/lib/enums/collection-mode.mjs +0 -2
  264. package/esm2022/lib/enums/direction.mjs +0 -2
  265. package/esm2022/lib/enums/method-for-selecting-types.mjs +0 -22
  266. package/esm2022/lib/enums/method-for-selecting.mjs +0 -2
  267. package/esm2022/lib/enums/methods-for-selecting.mjs +0 -22
  268. package/esm2022/lib/enums/snapping-method.mjs +0 -2
  269. package/esm2022/lib/enums/text-direction.mjs +0 -2
  270. package/esm2022/lib/utils/is-method-for-selecting.mjs +0 -18
  271. package/lib/components/ng-scroller/const/index.d.ts +0 -1
  272. package/lib/directives/item-click/item-click.module.d.ts +0 -8
  273. package/lib/enums/method-for-selecting.d.ts +0 -8
  274. package/lib/utils/is-method-for-selecting.d.ts +0 -8
@@ -1,12 +1,13 @@
1
- import { ChangeDetectorRef, ElementRef, inject } from '@angular/core';
2
- import { DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PART_DEFAULT_ITEM, PART_ITEM_COLLAPSED, PART_ITEM_EVEN, PART_ITEM_FOCUSED, PART_ITEM_NEW, PART_ITEM_ODD, PART_ITEM_SELECTED, PART_ITEM_SNAPPED, POSITION_ABSOLUTE, PX, SIZE_100_PERSENT, SIZE_AUTO, TRANSLATE_3D, VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, } from '../../../const';
3
- import { CLASS_NAME_FOCUS, CLASS_NAME_SNAPPED, CLASS_NAME_SNAPPED_OUT, DEFAULT_TEMPLATE_CONTEXT, ID, ITEM_ID, POSITION, POSITION_ZERO, TRANSLATE_3D_HIDDEN, } from '../const';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, ViewChild } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, map, takeUntil, tap } from 'rxjs';
3
+ import { DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PART_DEFAULT_ITEM, PART_ITEM_COLLAPSED, PART_ITEM_EVEN, PART_ITEM_FOCUSED, PART_ITEM_NEW, PART_ITEM_ODD, PART_ITEM_SELECTED, PART_ITEM_SNAPPED, PART_DEFAULT_ITEM_FX, PART_ITEM_FX_COLLAPSED, PART_ITEM_FX_EVEN, PART_ITEM_FX_FOCUSED, PART_ITEM_FX_NEW, PART_ITEM_FX_ODD, PART_ITEM_FX_SELECTED, PART_ITEM_FX_SNAPPED, PX, SIZE_100_PERSENT, SIZE_AUTO, TRANSLATE_3D, VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, PART_ITEM_ROW_ODD, PART_ITEM_ROW_EVEN, PART_ITEM_ROW_FX_ODD, PART_ITEM_ROW_FX_EVEN, } from '../../../const';
4
+ import { CLASS_NAME_FOCUS, CLASS_NAME_SNAPPED, CLASS_NAME_SNAPPED_OUT, DEFAULT_TEMPLATE_CONTEXT, ID, ITEM_ID, POSITION, POSITION_ZERO, } from '../const';
4
5
  import { TextDirections } from '../../../enums';
5
6
  import { NgVirtualListPublicService } from '../../../ng-virtual-list-public.service';
6
- import { BehaviorSubject, combineLatest, takeUntil, tap } from 'rxjs';
7
+ import { createDisplayId, matrix3d } from '../utils';
7
8
  import { DisposableComponent } from '../../../utils/disposable-component';
8
9
  import { NgVirtualListService } from '../../../ng-virtual-list.service';
9
- import { createDisplayId } from '../utils';
10
+ import * as i0 from "@angular/core";
10
11
  /**
11
12
  * BaseVirtualListItemComponent
12
13
  * @link https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/components/list-item/base/base-virtual-list-item-component.ts
@@ -14,6 +15,8 @@ import { createDisplayId } from '../utils';
14
15
  * @email djonnyx@gmail.com
15
16
  */
16
17
  export class BaseVirtualListItemComponent extends DisposableComponent {
18
+ _item;
19
+ _container;
17
20
  _apiService = inject(NgVirtualListPublicService);
18
21
  _service = inject(NgVirtualListService);
19
22
  _cdr = inject(ChangeDetectorRef);
@@ -30,6 +33,13 @@ export class BaseVirtualListItemComponent extends DisposableComponent {
30
33
  return this._displayId;
31
34
  }
32
35
  _isSelected = false;
36
+ set isSelected(v) {
37
+ if (this._isSelected !== v) {
38
+ this._isSelected = v;
39
+ this.update();
40
+ }
41
+ }
42
+ get isSelected() { return this._isSelected; }
33
43
  _isCollapsed = false;
34
44
  _$config = new BehaviorSubject({});
35
45
  $config = this._$config.asObservable();
@@ -39,6 +49,8 @@ export class BaseVirtualListItemComponent extends DisposableComponent {
39
49
  $focused = this._$focused.asObservable();
40
50
  _$part = new BehaviorSubject(PART_DEFAULT_ITEM);
41
51
  $part = this._$part.asObservable();
52
+ _$fxPart = new BehaviorSubject(PART_DEFAULT_ITEM_FX);
53
+ $fxPart = this._$fxPart.asObservable();
42
54
  _data = null;
43
55
  get data() { return this._data; }
44
56
  _$data = new BehaviorSubject(this._data);
@@ -61,6 +73,7 @@ export class BaseVirtualListItemComponent extends DisposableComponent {
61
73
  _$templateContext = new BehaviorSubject(DEFAULT_TEMPLATE_CONTEXT);
62
74
  $templateContext = this._$templateContext.asObservable();
63
75
  regular = false;
76
+ _blendColor = null;
64
77
  _scrollBarSize = 0;
65
78
  _langTextDir = TextDirections.LTR;
66
79
  _regularLength = SIZE_100_PERSENT;
@@ -77,6 +90,12 @@ export class BaseVirtualListItemComponent extends DisposableComponent {
77
90
  get itemId() {
78
91
  return this._data?.id;
79
92
  }
93
+ get zIndex() {
94
+ return this._elementRef.nativeElement.style.zIndex;
95
+ }
96
+ get visibility() {
97
+ return this._elementRef.nativeElement.style.visibility;
98
+ }
80
99
  itemRenderer;
81
100
  set renderer(v) {
82
101
  if (this.itemRenderer === v) {
@@ -94,12 +113,21 @@ export class BaseVirtualListItemComponent extends DisposableComponent {
94
113
  this._id = this._service.generateComponentId();
95
114
  this._listId = this._service.id;
96
115
  this._displayId = createDisplayId(this._listId, this._id);
97
- const $data = this.$data, $config = this.$config, $measures = this.$measures, $focused = this.$focused;
98
- combineLatest([$data, $focused]).pipe(takeUntil(this._$unsubscribe), tap(([data, focused]) => {
99
- this._$classes.next({
116
+ const $part = this.$part;
117
+ $part.pipe(takeUntil(this._$unsubscribe), tap(part => {
118
+ this._elementRef.nativeElement.setAttribute('part', part);
119
+ })).subscribe();
120
+ const $focus = this._service.$focusedId.pipe(takeUntil(this._$unsubscribe), map(id => id === this.itemId));
121
+ $focus.pipe(takeUntil(this._$unsubscribe), tap(() => {
122
+ this.updatePartStr(this._data, this._isSelected, this._isCollapsed);
123
+ })).subscribe();
124
+ const $data = this.$data, $config = this.$config, $measures = this.$measures;
125
+ combineLatest([$data, $focus]).pipe(takeUntil(this._$unsubscribe), tap(([data, focus]) => {
126
+ const f = focus ?? false, classes = {
100
127
  [CLASS_NAME_SNAPPED]: data?.config?.snapped ?? false, [CLASS_NAME_SNAPPED_OUT]: data?.config?.snappedOut ?? false,
101
- [CLASS_NAME_FOCUS]: focused,
102
- });
128
+ [CLASS_NAME_FOCUS]: f,
129
+ };
130
+ this._$classes.next(classes);
103
131
  })).subscribe();
104
132
  $config.pipe(takeUntil(this._$unsubscribe), tap(config => {
105
133
  this._$index.next(config?.tabIndex ?? -1);
@@ -110,69 +138,125 @@ export class BaseVirtualListItemComponent extends DisposableComponent {
110
138
  config, reseted: false, index: data?.index ?? -1, api: this._apiService,
111
139
  });
112
140
  })).subscribe();
141
+ if (this._service.isVertical) {
142
+ this._elementRef.nativeElement.style.height = `${this._service.itemSize}px`;
143
+ }
144
+ else {
145
+ this._elementRef.nativeElement.style.width = `${this._service.itemSize}px`;
146
+ }
147
+ this.hide();
113
148
  }
114
149
  updateMeasures(v) {
115
150
  this._$measures.next(v?.measures ? { ...v.measures } : null);
151
+ this._cdr.markForCheck();
116
152
  }
117
153
  updateConfig(v) {
118
154
  this._$config.next({
119
155
  ...v?.config || {}, selected: this._isSelected, collapsed: this._isCollapsed, focused: this._$focused.getValue(),
120
156
  });
157
+ this._cdr.markForCheck();
121
158
  }
122
159
  update() {
123
- const data = this._data, regular = this.regular, length = this._regularLength, el = this._elementRef.nativeElement;
124
- if (data) {
160
+ const data = this._data, regular = this.regular, length = this._regularLength, el = this._elementRef.nativeElement, itemElement = this._item?.nativeElement, containerElement = this._container?.nativeElement;
161
+ if (!!data && !!el && !!itemElement && !!containerElement) {
125
162
  el.setAttribute(ITEM_ID, `${data.id}`);
126
- const styles = el.style;
127
- styles.zIndex = data.config.zIndex;
128
- styles.position = POSITION_ABSOLUTE;
129
- if (data.config.isStub === true) {
163
+ const styles = el.style, itemElementStyles = itemElement.style;
164
+ if (this._service.zIndexWhenSelecting !== null && this._isSelected) {
165
+ styles.zIndex = this._service.zIndexWhenSelecting;
166
+ }
167
+ else {
168
+ styles.zIndex = data.config.zIndex;
169
+ }
170
+ this._blendColor = data.config.blendColor ?? null;
171
+ if (!!containerElement && !!data.config.blendColor) {
172
+ containerElement.style.opacity = String(data.config.opacity);
173
+ }
174
+ if (!!data.config.filter) {
175
+ styles.filter = data.config.filter;
176
+ }
177
+ if (this.item?.config?.dynamic && data.config.isStub === true) {
130
178
  el.style.visibility = VISIBILITY_HIDDEN;
131
179
  }
132
180
  if (regular) {
133
181
  el.setAttribute(POSITION, POSITION_ZERO);
134
- styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ? (this._langTextDir === TextDirections.RTL ? this._scrollBarSize : 0) : data.measures.delta}${PX}, ${data.config.isVertical ? data.measures.delta : 0}${PX}, ${POSITION_ZERO})`;
182
+ styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ?
183
+ (this._langTextDir === TextDirections.RTL ? this._scrollBarSize : 0) :
184
+ data.measures.delta}${PX}, ${data.config.isVertical ? data.measures.delta : 0}${PX}, ${POSITION_ZERO})`;
135
185
  }
136
186
  else {
137
187
  el.setAttribute(POSITION, `${data.config.isVertical ? data.measures.y : data.measures.x}`);
138
- styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.x}${PX}, ${data.config.isVertical ? data.measures.y : 0}${PX}, ${POSITION_ZERO})`;
188
+ styles.transform = matrix3d(data.measures.transformedX, data.measures.transformedY, data.measures.z, data.measures.scaleX, data.measures.scaleY, data.measures.scaleZ, data.measures.rotationX, data.measures.rotationY, data.measures.rotationZ);
189
+ }
190
+ if (data.config.divides > 1) {
191
+ styles.height = data.config.isVertical ? `${data.measures.row.size}${PX}` : `${data.measures.height}${PX}`;
192
+ styles.width = data.config.isVertical ? `${data.measures.width}${PX}` : `${data.measures.row.size}${PX}`;
193
+ itemElementStyles.minWidth = styles.minWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.minWidth}${PX}`;
194
+ itemElementStyles.maxWidth = styles.maxWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.maxWidth}${PX}`;
195
+ itemElementStyles.minHeight = styles.minHeight = data.config.isVertical ? `${data.measures.minHeight}${PX}` : SIZE_AUTO;
196
+ itemElementStyles.maxHeight = styles.maxHeight = data.config.isVertical ? `${data.measures.maxHeight}${PX}` : SIZE_AUTO;
197
+ itemElementStyles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : `${data.measures.height}${PX}`;
198
+ itemElementStyles.width = data.config.isVertical ? regular ? length : `${data.measures.width}${PX}` : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;
199
+ }
200
+ else {
201
+ styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : `${data.measures.height}${PX}`;
202
+ styles.width = data.config.isVertical ? regular ? length : `${data.measures.width}${PX}` : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;
203
+ styles.minWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.minWidth}${PX}`;
204
+ styles.maxWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.maxWidth}${PX}`;
205
+ styles.minHeight = data.config.isVertical ? `${data.measures.minHeight}${PX}` : SIZE_AUTO;
206
+ styles.maxHeight = data.config.isVertical ? `${data.measures.maxHeight}${PX}` : SIZE_AUTO;
139
207
  }
140
- styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : SIZE_100_PERSENT;
141
- styles.width = data.config.isVertical ? regular ? length : SIZE_100_PERSENT : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;
142
208
  }
143
209
  else {
144
210
  el.removeAttribute(ID);
145
211
  }
212
+ this._cdr.markForCheck();
146
213
  }
147
214
  updatePartStr(v, isSelected, isCollapsed) {
148
- let odd = false;
149
- if (v?.index !== undefined) {
150
- odd = v.index % 2 === 0;
151
- }
152
- let part = PART_DEFAULT_ITEM;
215
+ const odd = v?.config.odd, rowOdd = v?.measures.row.odd;
216
+ let part = PART_DEFAULT_ITEM, fxPart = PART_DEFAULT_ITEM_FX;
153
217
  part += odd ? PART_ITEM_ODD : PART_ITEM_EVEN;
218
+ part += rowOdd ? PART_ITEM_ROW_ODD : PART_ITEM_ROW_EVEN;
219
+ fxPart += odd ? PART_ITEM_FX_ODD : PART_ITEM_FX_EVEN;
220
+ fxPart += rowOdd ? PART_ITEM_ROW_FX_ODD : PART_ITEM_ROW_FX_EVEN;
154
221
  if (v ? v.config.snapped : false) {
155
222
  part += PART_ITEM_SNAPPED;
223
+ fxPart += PART_ITEM_FX_SNAPPED;
156
224
  }
157
225
  if (isSelected) {
158
226
  part += PART_ITEM_SELECTED;
227
+ fxPart += PART_ITEM_FX_SELECTED;
159
228
  }
160
229
  if (isCollapsed) {
161
230
  part += PART_ITEM_COLLAPSED;
231
+ fxPart += PART_ITEM_FX_COLLAPSED;
162
232
  }
163
233
  if (v ? v.config.new : false) {
164
234
  part += PART_ITEM_NEW;
235
+ fxPart += PART_ITEM_FX_NEW;
165
236
  }
166
- if (this._$focused.getValue()) {
237
+ if (this.hasFocus()) {
167
238
  part += PART_ITEM_FOCUSED;
239
+ fxPart += PART_ITEM_FX_FOCUSED;
168
240
  }
169
241
  this._$part.next(part);
242
+ this._$fxPart.next(fxPart);
243
+ this._cdr.markForCheck();
244
+ }
245
+ hasFocus() {
246
+ return this._service.focusedId === this.itemId;
170
247
  }
171
248
  getBounds() {
172
- const el = this._elementRef.nativeElement, { width, height } = el.getBoundingClientRect();
173
- return { width: width > 0 ? width : 1, height: height > 0 ? height : 1, };
249
+ const el = this._item?.nativeElement;
250
+ if (!!el) {
251
+ const width = el.offsetWidth, height = el.offsetHeight;
252
+ return { width, height, };
253
+ }
254
+ return { width: 0, height: 0 };
174
255
  }
175
256
  show() {
257
+ if (!this.item?.config?.dynamic) {
258
+ return;
259
+ }
176
260
  const el = this._elementRef.nativeElement, styles = el.style;
177
261
  styles.zIndex = this._data?.config?.zIndex ?? DEFAULT_ZINDEX;
178
262
  if (this.regular) {
@@ -192,9 +276,10 @@ export class BaseVirtualListItemComponent extends DisposableComponent {
192
276
  }
193
277
  }
194
278
  hide() {
279
+ if (!this.item?.config?.dynamic) {
280
+ return;
281
+ }
195
282
  const el = this._elementRef.nativeElement, styles = el.style;
196
- styles.position = POSITION_ABSOLUTE;
197
- styles.transform = TRANSLATE_3D_HIDDEN;
198
283
  styles.zIndex = HIDDEN_ZINDEX;
199
284
  if (this.regular) {
200
285
  if (styles.display === DISPLAY_NONE) {
@@ -209,5 +294,22 @@ export class BaseVirtualListItemComponent extends DisposableComponent {
209
294
  styles.visibility = VISIBILITY_HIDDEN;
210
295
  }
211
296
  }
297
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseVirtualListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
298
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseVirtualListItemComponent, selector: "ng-base-virtual-list-item", viewQueries: [{ propertyName: "_item", first: true, predicate: ["item"], descendants: true }, { propertyName: "_container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
212
299
  }
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9iYXNlL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBSW5GLE9BQU8sRUFDTCxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUNsSCxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFDL0gsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsR0FDL0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixHQUNsSixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQWlCLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFF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WSxDQUFDO1NBQy9CO2FBQU07WUFDTCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssaUJBQWlCLEVBQUU7Z0JBQzNDLE9BQU87YUFDUjtZQUVELE1BQU0sQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7U0FDdkM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgaW5qZWN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJU2l6ZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3JlbmRlci1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgSURpc3BsYXlPYmplY3RDb25maWcsIElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfWklOREVYLCBESVNQTEFZX0JMT0NLLCBESVNQTEFZX05PTkUsIEhJRERFTl9aSU5ERVgsIFBBUlRfREVGQVVMVF9JVEVNLCBQQVJUX0lURU1fQ09MTEFQU0VELCBQQVJUX0lURU1fRVZFTixcclxuICBQQVJUX0lURU1fRk9DVVNFRCwgUEFSVF9JVEVNX05FVywgUEFSVF9JVEVNX09ERCwgUEFSVF9JVEVNX1NFTEVDVEVELCBQQVJUX0lURU1fU05BUFBFRCwgUE9TSVRJT05fQUJTT0xVVEUsIFBYLCBTSVpFXzEwMF9QRVJTRU5ULFxyXG4gIFNJWkVfQVVUTywgVFJBTlNMQVRFXzNELCBWSVNJQklMSVRZX0hJRERFTiwgVklTSUJJTElUWV9WSVNJQkxFLFxyXG59IGZyb20gJy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgSVRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQge1xyXG4gIENMQVNTX05BTUVfRk9DVVMsIENMQVNTX05BTUVfU05BUFBFRCwgQ0xBU1NfTkFNRV9TTkFQUEVEX09VVCwgREVGQVVMVF9URU1QTEFURV9DT05URVhULCBJRCwgSVRFTV9JRCwgUE9TSVRJT04sIFBPU0lUSU9OX1pFUk8sIFRSQU5TTEFURV8zRF9ISURERU4sXHJcbn0gZnJvbSAnLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9uLCBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgTmdWaXJ0dWFsTGlzdFB1YmxpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9uZy12aXJ0dWFsLWxpc3QtcHVibGljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vbmctdmlydHVhbC1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjcmVhdGVEaXNwbGF5SWQgfSBmcm9tICcuLi91dGlscyc7XHJcblxyXG4vKipcclxuICogQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudFxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNi54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC1pdGVtL2Jhc2UvYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX2FwaVNlcnZpY2UgPSBpbmplY3QoTmdWaXJ0dWFsTGlzdFB1YmxpY1NlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3NlcnZpY2UgPSBpbmplY3QoTmdWaXJ0dWFsTGlzdFNlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByb3RlY3RlZCBfaWQhOiBudW1iZXI7XHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9saXN0SWQhOiBudW1iZXI7XHJcbiAgZ2V0IGxpc3RJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9saXN0SWQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2Rpc3BsYXlJZCE6IHN0cmluZztcclxuICBnZXQgZGlzcGxheUlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlJZDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgX2lzQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByb3RlY3RlZCBfJGNvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURpc3BsYXlPYmplY3RDb25maWc+KHt9IGFzIElEaXNwbGF5T2JqZWN0Q29uZmlnKTtcclxuICAkY29uZmlnID0gdGhpcy5fJGNvbmZpZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJvdGVjdGVkIF8kbWVhc3VyZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfCBudWxsPihudWxsKTtcclxuICAkbWVhc3VyZXMgPSB0aGlzLl8kbWVhc3VyZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfJGZvY3VzZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAkZm9jdXNlZCA9IHRoaXMuXyRmb2N1c2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcm90ZWN0ZWQgXyRwYXJ0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFBBUlRfREVGQVVMVF9JVEVNKTtcclxuICAkcGFydCA9IHRoaXMuXyRwYXJ0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcm90ZWN0ZWQgX2RhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCBudWxsID0gbnVsbDtcclxuICBnZXQgZGF0YSgpIHsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgXyRkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgbnVsbD4odGhpcy5fZGF0YSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5ICRkYXRhID0gdGhpcy5fJGRhdGEuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHNldCBpdGVtKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fZGF0YSA9PT0gdiB8fCB0aGlzLl9kYXRhPy5pZCA9PT0gLTEgfHwgIXYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2RhdGEgPSB2O1xyXG5cclxuICAgIHRoaXMudXBkYXRlUGFydFN0cih2LCB0aGlzLl9pc1NlbGVjdGVkLCB0aGlzLl9pc0NvbGxhcHNlZCk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVDb25maWcodik7XHJcblxyXG4gICAgdGhpcy51cGRhdGVNZWFzdXJlcyh2KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG5cclxuICAgIHRoaXMuXyRkYXRhLm5leHQodik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF8kY2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW47IH0+KHt9KTtcclxuICAkY2xhc3NlcyA9IHRoaXMuXyRjbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kaW5kZXggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xyXG4gICRpbmRleCA9IHRoaXMuXyRpbmRleC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHRlbXBsYXRlQ29udGV4dCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRlbXBsYXRlQ29udGV4dD4oREVGQVVMVF9URU1QTEFURV9DT05URVhUKTtcclxuICAkdGVtcGxhdGVDb250ZXh0ID0gdGhpcy5fJHRlbXBsYXRlQ29udGV4dC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHVibGljIHJlZ3VsYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJvdGVjdGVkIF9zY3JvbGxCYXJTaXplOiBudW1iZXIgPSAwO1xyXG5cclxuICBwcm90ZWN0ZWQgX2xhbmdUZXh0RGlyOiBUZXh0RGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbnMuTFRSO1xyXG5cclxuICBwcm90ZWN0ZWQgX3JlZ3VsYXJMZW5ndGg6IHN0cmluZyA9IFNJWkVfMTAwX1BFUlNFTlQ7XHJcbiAgc2V0IHJlZ3VsYXJMZW5ndGgodjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fcmVndWxhckxlbmd0aCA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVndWxhckxlbmd0aCA9IHY7XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbUlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE/LmlkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGl0ZW1SZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgc2V0IHJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLml0ZW1SZW5kZXJlciA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pdGVtUmVuZGVyZXIgPSB2O1xyXG5cclxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XHJcbiAgZ2V0IGVsZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5faWQgPSB0aGlzLl9zZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50SWQoKTtcclxuICAgIHRoaXMuX2xpc3RJZCA9IHRoaXMuX3NlcnZpY2UuaWQ7XHJcbiAgICB0aGlzLl9kaXNwbGF5SWQgPSBjcmVhdGVEaXNwbGF5SWQodGhpcy5fbGlzdElkLCB0aGlzLl9pZCk7XHJcblxyXG4gICAgY29uc3QgJGRhdGEgPSB0aGlzLiRkYXRhLFxyXG4gICAgICAkY29uZmlnID0gdGhpcy4kY29uZmlnLFxyXG4gICAgICAkbWVhc3VyZXMgPSB0aGlzLiRtZWFzdXJlcyxcclxuICAgICAgJGZvY3VzZWQgPSB0aGlzLiRmb2N1c2VkO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRkYXRhLCAkZm9jdXNlZF0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtkYXRhLCBmb2N1c2VkXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRjbGFzc2VzLm5leHQoe1xyXG4gICAgICAgICAgW0NMQVNTX05BTUVfU05BUFBFRF06IGRhdGE/LmNvbmZpZz8uc25hcHBlZCA/PyBmYWxzZSwgW0NMQVNTX05BTUVfU05BUFBFRF9PVVRdOiBkYXRhPy5jb25maWc/LnNuYXBwZWRPdXQgPz8gZmFsc2UsXHJcbiAgICAgICAgICBbQ0xBU1NfTkFNRV9GT0NVU106IGZvY3VzZWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAkY29uZmlnLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoY29uZmlnID0+IHtcclxuICAgICAgICB0aGlzLl8kaW5kZXgubmV4dChjb25maWc/LnRhYkluZGV4ID8/IC0xKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRkYXRhLCAkY29uZmlnLCAkbWVhc3VyZXNdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKChbZGF0YSwgY29uZmlnLCBtZWFzdXJlc10pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGVtcGxhdGVDb250ZXh0Lm5leHQoe1xyXG4gICAgICAgICAgZGF0YTogZGF0YT8uZGF0YSwgcHJldkRhdGE6IGRhdGE/LnByZXZpb3VzZURhdGEsIG5leHREYXRhOiBkYXRhPy5uZXh0RGF0YSwgbWVhc3VyZXMsXHJcbiAgICAgICAgICBjb25maWcsIHJlc2V0ZWQ6IGZhbHNlLCBpbmRleDogZGF0YT8uaW5kZXggPz8gLSAxLCBhcGk6IHRoaXMuX2FwaVNlcnZpY2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVNZWFzdXJlcyh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCBudWxsKSB7XHJcbiAgICB0aGlzLl8kbWVhc3VyZXMubmV4dCh2Py5tZWFzdXJlcyA/IHsgLi4udi5tZWFzdXJlcyB9IDogbnVsbClcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVDb25maWcodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgbnVsbCkge1xyXG4gICAgdGhpcy5fJGNvbmZpZy5uZXh0KHtcclxuICAgICAgLi4udj8uY29uZmlnIHx8IHt9IGFzIElEaXNwbGF5T2JqZWN0Q29uZmlnLCBzZWxlY3RlZDogdGhpcy5faXNTZWxlY3RlZCwgY29sbGFwc2VkOiB0aGlzLl9pc0NvbGxhcHNlZCwgZm9jdXNlZDogdGhpcy5fJGZvY3VzZWQuZ2V0VmFsdWUoKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhLCByZWd1bGFyID0gdGhpcy5yZWd1bGFyLCBsZW5ndGggPSB0aGlzLl9yZWd1bGFyTGVuZ3RoLCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShJVEVNX0lELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICBjb25zdCBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgICAgc3R5bGVzLnpJbmRleCA9IGRhdGEuY29uZmlnLnpJbmRleDtcclxuICAgICAgc3R5bGVzLnBvc2l0aW9uID0gUE9TSVRJT05fQUJTT0xVVEU7XHJcbiAgICAgIGlmIChkYXRhLmNvbmZpZy5pc1N0dWIgPT09IHRydWUpIHtcclxuICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlZ3VsYXIpIHtcclxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoUE9TSVRJT04sIFBPU0lUSU9OX1pFUk8pO1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/ICh0aGlzLl9sYW5nVGV4dERpciA9PT0gVGV4dERpcmVjdGlvbnMuUlRMID8gdGhpcy5fc2Nyb2xsQmFyU2l6ZSA6IDApIDogZGF0YS5tZWFzdXJlcy5kZWx0YX0ke1BYfSwgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy5kZWx0YSA6IDB9JHtQWH0sICR7UE9TSVRJT05fWkVST30pYDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoUE9TSVRJT04sIGAke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLm1lYXN1cmVzLnkgOiBkYXRhLm1lYXN1cmVzLnh9YCk7XHJcbiAgICAgICAgc3R5bGVzLnRyYW5zZm9ybSA9IGAke1RSQU5TTEFURV8zRH0oJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gMCA6IGRhdGEubWVhc3VyZXMueH0ke1BYfSwgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy55IDogMH0ke1BYfSwgJHtQT1NJVElPTl9aRVJPfSlgO1xyXG4gICAgICB9XHJcbiAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YCA6IHJlZ3VsYXIgPyBsZW5ndGggOiBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IFNJWkVfMTAwX1BFUlNFTlQgOiBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoSUQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZVBhcnRTdHIodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwsIGlzU2VsZWN0ZWQ6IGJvb2xlYW4sIGlzQ29sbGFwc2VkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgb2RkID0gZmFsc2U7XHJcbiAgICBpZiAodj8uaW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvZGQgPSB2LmluZGV4ICUgMiA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcGFydCA9IFBBUlRfREVGQVVMVF9JVEVNO1xyXG4gICAgcGFydCArPSBvZGQgPyBQQVJUX0lURU1fT0REIDogUEFSVF9JVEVNX0VWRU47XHJcbiAgICBpZiAodiA/IHYuY29uZmlnLnNuYXBwZWQgOiBmYWxzZSkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9TTkFQUEVEO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU2VsZWN0ZWQpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fU0VMRUNURUQ7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNDb2xsYXBzZWQpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fQ09MTEFQU0VEO1xyXG4gICAgfVxyXG4gICAgaWYgKHYgPyB2LmNvbmZpZy5uZXcgOiBmYWxzZSkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9ORVc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fJGZvY3VzZWQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9GT0NVU0VEO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fJHBhcnQubmV4dChwYXJ0KTtcclxuICB9XHJcblxyXG4gIGdldEJvdW5kcygpOiBJU2l6ZSB7XHJcbiAgICBjb25zdCBlbDogSFRNTEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHsgd2lkdGgsIGhlaWdodCB9ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICByZXR1cm4geyB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAxLCBoZWlnaHQ6IGhlaWdodCA+IDAgPyBoZWlnaHQgOiAxLCB9O1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgIHN0eWxlcy56SW5kZXggPSB0aGlzLl9kYXRhPy5jb25maWc/LnpJbmRleCA/PyBERUZBVUxUX1pJTkRFWDtcclxuICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfQkxPQ0s7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpc1N0dWIgPSB0aGlzLl9kYXRhPy5jb25maWc/LmlzU3R1YiA/PyBmYWxzZTtcclxuICAgICAgaWYgKCFpc1N0dWIpIHtcclxuICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfVklTSUJMRTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgIHN0eWxlcy5wb3NpdGlvbiA9IFBPU0lUSU9OX0FCU09MVVRFO1xyXG4gICAgc3R5bGVzLnRyYW5zZm9ybSA9IFRSQU5TTEFURV8zRF9ISURERU47XHJcbiAgICBzdHlsZXMuekluZGV4ID0gSElEREVOX1pJTkRFWDtcclxuICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX05PTkUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0eWxlcy5kaXNwbGF5ID0gRElTUExBWV9OT05FO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHN0eWxlcy52aXNpYmlsaXR5ID09PSBWSVNJQklMSVRZX0hJRERFTikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX0hJRERFTjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseVirtualListItemComponent, decorators: [{
301
+ type: Component,
302
+ args: [{
303
+ selector: 'ng-base-virtual-list-item',
304
+ template: '',
305
+ standalone: false,
306
+ changeDetection: ChangeDetectionStrategy.OnPush,
307
+ }]
308
+ }], ctorParameters: function () { return []; }, propDecorators: { _item: [{
309
+ type: ViewChild,
310
+ args: ['item']
311
+ }], _container: [{
312
+ type: ViewChild,
313
+ args: ['container']
314
+ }] } });
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9iYXNlL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJM0UsT0FBTyxFQUNMLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQ2xILGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQ3BJLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUN4SCxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFDM0gsb0JBQW9CLEVBQUUscUJBQXFCLEdBQzVDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsR0FDN0gsTUFBTSxVQUFVLENB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LENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3BHO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUMzRyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDekcsaUJBQWlCLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDckgsaUJBQWlCLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDckgsaUJBQWlCLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDeEgsaUJBQWlCLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFFeEgsaUJBQWlCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDekssaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUN2SztpQkFBTTtnQkFDTCxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElB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QUFNLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQzt3R0FoWFUsNEJBQTRCOzRGQUE1Qiw0QkFBNEIsaVJBSjdCLEVBQUU7OzRGQUlELDRCQUE0QjtrQkFOeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsS0FBSztvQkFDakIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzBFQUdXLEtBQUs7c0JBRGQsU0FBUzt1QkFBQyxNQUFNO2dCQUlQLFVBQVU7c0JBRG5CLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVuZGVyLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBJRGlzcGxheU9iamVjdENvbmZpZywgSURpc3BsYXlPYmplY3RNZWFzdXJlcyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgREVGQVVMVF9aSU5ERVgsIERJU1BMQVlfQkxPQ0ssIERJU1BMQVlfTk9ORSwgSElEREVOX1pJTkRFWCwgUEFSVF9ERUZBVUxUX0lURU0sIFBBUlRfSVRFTV9DT0xMQVBTRUQsIFBBUlRfSVRFTV9FVkVOLFxyXG4gIFBBUlRfSVRFTV9GT0NVU0VELCBQQVJUX0lURU1fTkVXLCBQQVJUX0lURU1fT0RELCBQQVJUX0lURU1fU0VMRUNURUQsIFBBUlRfSVRFTV9TTkFQUEVELCBQQVJUX0RFRkFVTFRfSVRFTV9GWCwgUEFSVF9JVEVNX0ZYX0NPTExBUFNFRCxcclxuICBQQVJUX0lURU1fRlhfRVZFTiwgUEFSVF9JVEVNX0ZYX0ZPQ1VTRUQsIFBBUlRfSVRFTV9GWF9ORVcsIFBBUlRfSVRFTV9GWF9PREQsIFBBUlRfSVRFTV9GWF9TRUxFQ1RFRCwgUEFSVF9JVEVNX0ZYX1NOQVBQRUQsXHJcbiAgUFgsIFNJWkVfMTAwX1BFUlNFTlQsIFNJWkVfQVVUTywgVFJBTlNMQVRFXzNELCBWSVNJQklMSVRZX0hJRERFTiwgVklTSUJJTElUWV9WSVNJQkxFLCBQQVJUX0lURU1fUk9XX09ERCwgUEFSVF9JVEVNX1JPV19FVkVOLFxyXG4gIFBBUlRfSVRFTV9ST1dfRlhfT0RELCBQQVJUX0lURU1fUk9XX0ZYX0VWRU4sXHJcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBJVGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgQ0xBU1NfTkFNRV9GT0NVUywgQ0xBU1NfTkFNRV9TTkFQUEVELCBDTEFTU19OQU1FX1NOQVBQRURfT1VULCBERUZBVUxUX1RFTVBMQVRFX0NPTlRFWFQsIElELCBJVEVNX0lELCBQT1NJVElPTiwgUE9TSVRJT05fWkVSTyxcclxufSBmcm9tICcuLi9jb25zdCc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0UHVibGljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL25nLXZpcnR1YWwtbGlzdC1wdWJsaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IGNyZWF0ZURpc3BsYXlJZCwgbWF0cml4M2QgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vbmctdmlydHVhbC1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcclxuXHJcbi8qKlxyXG4gKiBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50XHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE2LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vYmFzZS9iYXNlLXZpcnR1YWwtbGlzdC1pdGVtLWNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctYmFzZS12aXJ0dWFsLWxpc3QtaXRlbScsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQgaW1wbGVtZW50cyBJQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnaXRlbScpXHJcbiAgcHJvdGVjdGVkIF9pdGVtOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJylcclxuICBwcm90ZWN0ZWQgX2NvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgX2FwaVNlcnZpY2UgPSBpbmplY3QoTmdWaXJ0dWFsTGlzdFB1YmxpY1NlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3NlcnZpY2UgPSBpbmplY3QoTmdWaXJ0dWFsTGlzdFNlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByb3RlY3RlZCBfaWQhOiBudW1iZXI7XHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9saXN0SWQhOiBudW1iZXI7XHJcbiAgZ2V0IGxpc3RJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9saXN0SWQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2Rpc3BsYXlJZCE6IHN0cmluZztcclxuICBnZXQgZGlzcGxheUlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlJZDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNldCBpc1NlbGVjdGVkKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl9pc1NlbGVjdGVkICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSB2O1xyXG5cclxuICAgICAgdGhpcy51cGRhdGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGlzU2VsZWN0ZWQoKSB7IHJldHVybiB0aGlzLl9pc1NlbGVjdGVkOyB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJvdGVjdGVkIF8kY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGlzcGxheU9iamVjdENvbmZpZz4oe30gYXMgSURpc3BsYXlPYmplY3RDb25maWcpO1xyXG4gICRjb25maWcgPSB0aGlzLl8kY29uZmlnLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcm90ZWN0ZWQgXyRtZWFzdXJlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURpc3BsYXlPYmplY3RNZWFzdXJlcyB8IG51bGw+KG51bGwpO1xyXG4gICRtZWFzdXJlcyA9IHRoaXMuXyRtZWFzdXJlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJvdGVjdGVkIF8kZm9jdXNlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICRmb2N1c2VkID0gdGhpcy5fJGZvY3VzZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfJHBhcnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oUEFSVF9ERUZBVUxUX0lURU0pO1xyXG4gICRwYXJ0ID0gdGhpcy5fJHBhcnQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfJGZ4UGFydCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihQQVJUX0RFRkFVTFRfSVRFTV9GWCk7XHJcbiAgJGZ4UGFydCA9IHRoaXMuXyRmeFBhcnQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwgPSBudWxsO1xyXG4gIGdldCBkYXRhKCkgeyByZXR1cm4gdGhpcy5fZGF0YTsgfVxyXG4gIHByb3RlY3RlZCByZWFkb25seSBfJGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCBudWxsPih0aGlzLl9kYXRhKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgJGRhdGEgPSB0aGlzLl8kZGF0YS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgc2V0IGl0ZW0odjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl9kYXRhID09PSB2IHx8IHRoaXMuX2RhdGE/LmlkID09PSAtMSB8fCAhdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGF0YSA9IHY7XHJcblxyXG4gICAgdGhpcy51cGRhdGVQYXJ0U3RyKHYsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZyh2KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZU1lYXN1cmVzKHYpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlKCk7XHJcblxyXG4gICAgdGhpcy5fJGRhdGEubmV4dCh2KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgXyRjbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbjsgfT4oe30pO1xyXG4gICRjbGFzc2VzID0gdGhpcy5fJGNsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRpbmRleCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XHJcbiAgJGluZGV4ID0gdGhpcy5fJGluZGV4LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGVtcGxhdGVDb250ZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJVGVtcGxhdGVDb250ZXh0PihERUZBVUxUX1RFTVBMQVRFX0NPTlRFWFQpO1xyXG4gICR0ZW1wbGF0ZUNvbnRleHQgPSB0aGlzLl8kdGVtcGxhdGVDb250ZXh0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwdWJsaWMgcmVndWxhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgX2JsZW5kQ29sb3I6IENvbG9yIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByb3RlY3RlZCBfc2Nyb2xsQmFyU2l6ZTogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJvdGVjdGVkIF9sYW5nVGV4dERpcjogVGV4dERpcmVjdGlvbiA9IFRleHREaXJlY3Rpb25zLkxUUjtcclxuXHJcbiAgcHJvdGVjdGVkIF9yZWd1bGFyTGVuZ3RoOiBzdHJpbmcgPSBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gIHNldCByZWd1bGFyTGVuZ3RoKHY6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuX3JlZ3VsYXJMZW5ndGggPT09IHYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JlZ3VsYXJMZW5ndGggPSB2O1xyXG5cclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW1JZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhPy5pZDtcclxuICB9XHJcblxyXG4gIGdldCB6SW5kZXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnpJbmRleDtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmlsaXR5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGl0ZW1SZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgc2V0IHJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLml0ZW1SZW5kZXJlciA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pdGVtUmVuZGVyZXIgPSB2O1xyXG5cclxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XHJcbiAgZ2V0IGVsZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5faWQgPSB0aGlzLl9zZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50SWQoKTtcclxuICAgIHRoaXMuX2xpc3RJZCA9IHRoaXMuX3NlcnZpY2UuaWQ7XHJcbiAgICB0aGlzLl9kaXNwbGF5SWQgPSBjcmVhdGVEaXNwbGF5SWQodGhpcy5fbGlzdElkLCB0aGlzLl9pZCk7XHJcblxyXG4gICAgY29uc3QgJHBhcnQgPSB0aGlzLiRwYXJ0O1xyXG4gICAgJHBhcnQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcChwYXJ0ID0+IHtcclxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdwYXJ0JywgcGFydCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkZm9jdXMgPSB0aGlzLl9zZXJ2aWNlLiRmb2N1c2VkSWQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIG1hcChpZCA9PiBpZCA9PT0gdGhpcy5pdGVtSWQpLFxyXG4gICAgKTtcclxuXHJcbiAgICAkZm9jdXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuX2RhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRkYXRhID0gdGhpcy4kZGF0YSxcclxuICAgICAgJGNvbmZpZyA9IHRoaXMuJGNvbmZpZyxcclxuICAgICAgJG1lYXN1cmVzID0gdGhpcy4kbWVhc3VyZXM7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGRhdGEsICRmb2N1c10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtkYXRhLCBmb2N1c10pID0+IHtcclxuICAgICAgICBjb25zdCBmID0gZm9jdXMgPz8gZmFsc2UsXHJcbiAgICAgICAgICBjbGFzc2VzID0ge1xyXG4gICAgICAgICAgICBbQ0xBU1NfTkFNRV9TTkFQUEVEXTogZGF0YT8uY29uZmlnPy5zbmFwcGVkID8/IGZhbHNlLCBbQ0xBU1NfTkFNRV9TTkFQUEVEX09VVF06IGRhdGE/LmNvbmZpZz8uc25hcHBlZE91dCA/PyBmYWxzZSxcclxuICAgICAgICAgICAgW0NMQVNTX05BTUVfRk9DVVNdOiBmLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB0aGlzLl8kY2xhc3Nlcy5uZXh0KGNsYXNzZXMpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgJGNvbmZpZy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKGNvbmZpZyA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGluZGV4Lm5leHQoY29uZmlnPy50YWJJbmRleCA/PyAtMSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZGF0YSwgJGNvbmZpZywgJG1lYXN1cmVzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoW2RhdGEsIGNvbmZpZywgbWVhc3VyZXNdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHRlbXBsYXRlQ29udGV4dC5uZXh0KHtcclxuICAgICAgICAgIGRhdGE6IGRhdGE/LmRhdGEsIHByZXZEYXRhOiBkYXRhPy5wcmV2aW91c2VEYXRhLCBuZXh0RGF0YTogZGF0YT8ubmV4dERhdGEsIG1lYXN1cmVzLFxyXG4gICAgICAgICAgY29uZmlnLCByZXNldGVkOiBmYWxzZSwgaW5kZXg6IGRhdGE/LmluZGV4ID8/IC0gMSwgYXBpOiB0aGlzLl9hcGlTZXJ2aWNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX3NlcnZpY2UuaXNWZXJ0aWNhbCkge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy5fc2VydmljZS5pdGVtU2l6ZX1weGA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt0aGlzLl9zZXJ2aWNlLml0ZW1TaXplfXB4YDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVNZWFzdXJlcyh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCBudWxsKSB7XHJcbiAgICB0aGlzLl8kbWVhc3VyZXMubmV4dCh2Py5tZWFzdXJlcyA/IHsgLi4udi5tZWFzdXJlcyB9IDogbnVsbCk7XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZUNvbmZpZyh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCBudWxsKSB7XHJcbiAgICB0aGlzLl8kY29uZmlnLm5leHQoe1xyXG4gICAgICAuLi52Py5jb25maWcgfHwge30gYXMgSURpc3BsYXlPYmplY3RDb25maWcsIHNlbGVjdGVkOiB0aGlzLl9pc1NlbGVjdGVkLCBjb2xsYXBzZWQ6IHRoaXMuX2lzQ29sbGFwc2VkLCBmb2N1c2VkOiB0aGlzLl8kZm9jdXNlZC5nZXRWYWx1ZSgpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhLCByZWd1bGFyID0gdGhpcy5yZWd1bGFyLCBsZW5ndGggPSB0aGlzLl9yZWd1bGFyTGVuZ3RoLCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgaXRlbUVsZW1lbnQgPSB0aGlzLl9pdGVtPy5uYXRpdmVFbGVtZW50LCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5fY29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCEhZGF0YSAmJiAhIWVsICYmICEhaXRlbUVsZW1lbnQgJiYgISFjb250YWluZXJFbGVtZW50KSB7XHJcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShJVEVNX0lELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICBjb25zdCBzdHlsZXMgPSBlbC5zdHlsZSwgaXRlbUVsZW1lbnRTdHlsZXMgPSBpdGVtRWxlbWVudC5zdHlsZTtcclxuICAgICAgaWYgKHRoaXMuX3NlcnZpY2UuekluZGV4V2hlblNlbGVjdGluZyAhPT0gbnVsbCAmJiB0aGlzLl9pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgc3R5bGVzLnpJbmRleCA9IHRoaXMuX3NlcnZpY2UuekluZGV4V2hlblNlbGVjdGluZztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzdHlsZXMuekluZGV4ID0gZGF0YS5jb25maWcuekluZGV4O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2JsZW5kQ29sb3IgPSBkYXRhLmNvbmZpZy5ibGVuZENvbG9yID8/IG51bGw7XHJcbiAgICAgIGlmICghIWNvbnRhaW5lckVsZW1lbnQgJiYgISFkYXRhLmNvbmZpZy5ibGVuZENvbG9yKSB7XHJcbiAgICAgICAgY29udGFpbmVyRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gU3RyaW5nKGRhdGEuY29uZmlnLm9wYWNpdHkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghIWRhdGEuY29uZmlnLmZpbHRlcikge1xyXG4gICAgICAgIHN0eWxlcy5maWx0ZXIgPSBkYXRhLmNvbmZpZy5maWx0ZXI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbT8uY29uZmlnPy5keW5hbWljICYmIGRhdGEuY29uZmlnLmlzU3R1YiA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX0hJRERFTjtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVndWxhcikge1xyXG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZShQT1NJVElPTiwgUE9TSVRJT05fWkVSTyk7XHJcbiAgICAgICAgc3R5bGVzLnRyYW5zZm9ybSA9IGAke1RSQU5TTEFURV8zRH0oJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID9cclxuICAgICAgICAgICh0aGlzLl9sYW5nVGV4dERpciA9PT0gVGV4dERpcmVjdGlvbnMuUlRMID8gdGhpcy5fc2Nyb2xsQmFyU2l6ZSA6IDApIDpcclxuICAgICAgICAgIGRhdGEubWVhc3VyZXMuZGVsdGF9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMuZGVsdGEgOiAwfSR7UFh9LCAke1BPU0lUSU9OX1pFUk99KWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKFBPU0lUSU9OLCBgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy55IDogZGF0YS5tZWFzdXJlcy54fWApO1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBtYXRyaXgzZChkYXRhLm1lYXN1cmVzLnRyYW5zZm9ybWVkWCwgZGF0YS5tZWFzdXJlcy50cmFuc2Zvcm1lZFksIGRhdGEubWVhc3VyZXMueiwgZGF0YS5tZWFzdXJlcy5zY2FsZVgsIGRhdGEubWVhc3VyZXMuc2NhbGVZLFxyXG4gICAgICAgICAgZGF0YS5tZWFzdXJlcy5zY2FsZVosIGRhdGEubWVhc3VyZXMucm90YXRpb25YLCBkYXRhLm1lYXN1cmVzLnJvdGF0aW9uWSwgZGF0YS5tZWFzdXJlcy5yb3RhdGlvblopO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkYXRhLmNvbmZpZy5kaXZpZGVzID4gMSkge1xyXG4gICAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gYCR7ZGF0YS5tZWFzdXJlcy5yb3cuc2l6ZX0ke1BYfWAgOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgc3R5bGVzLndpZHRoID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogYCR7ZGF0YS5tZWFzdXJlcy5yb3cuc2l6ZX0ke1BYfWA7XHJcbiAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWluV2lkdGggPSBzdHlsZXMubWluV2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5taW5XaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWF4V2lkdGggPSBzdHlsZXMubWF4V2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5tYXhXaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWluSGVpZ2h0ID0gc3R5bGVzLm1pbkhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBgJHtkYXRhLm1lYXN1cmVzLm1pbkhlaWdodH0ke1BYfWAgOiBTSVpFX0FVVE87XHJcbiAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWF4SGVpZ2h0ID0gc3R5bGVzLm1heEhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBgJHtkYXRhLm1lYXN1cmVzLm1heEhlaWdodH0ke1BYfWAgOiBTSVpFX0FVVE87XHJcblxyXG4gICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICBpdGVtRWxlbWVudFN0eWxlcy53aWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyByZWd1bGFyID8gbGVuZ3RoIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWAgOiBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gO1xyXG4gICAgICAgIHN0eWxlcy5taW5XaWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLm1pbldpZHRofSR7UFh9YDtcclxuICAgICAgICBzdHlsZXMubWF4V2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5tYXhXaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgc3R5bGVzLm1pbkhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBgJHtkYXRhLm1lYXN1cmVzLm1pbkhlaWdodH0ke1BYfWAgOiBTSVpFX0FVVE87XHJcbiAgICAgICAgc3R5bGVzLm1heEhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBgJHtkYXRhLm1lYXN1cmVzLm1heEhlaWdodH0ke1BYfWAgOiBTSVpFX0FVVE87XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZVBhcnRTdHIodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwsIGlzU2VsZWN0ZWQ6IGJvb2xlYW4sIGlzQ29sbGFwc2VkOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBvZGQgPSB2Py5jb25maWcub2RkLCByb3dPZGQgPSB2Py5tZWFzdXJlcy5yb3cub2RkO1xyXG5cclxuICAgIGxldCBwYXJ0ID0gUEFSVF9ERUZBVUxUX0lURU0sIGZ4UGFydCA9IFBBUlRfREVGQVVMVF9JVEVNX0ZYO1xyXG4gICAgcGFydCArPSBvZGQgPyBQQVJUX0lURU1fT0REIDogUEFSVF9JVEVNX0VWRU47XHJcbiAgICBwYXJ0ICs9IHJvd09kZCA/IFBBUlRfSVRFTV9ST1dfT0REIDogUEFSVF9JVEVNX1JPV19FVkVOO1xyXG4gICAgZnhQYXJ0ICs9IG9kZCA/IFBBUlRfSVRFTV9GWF9PREQgOiBQQVJUX0lURU1fRlhfRVZFTjtcclxuICAgIGZ4UGFydCArPSByb3dPZGQgPyBQQVJUX0lURU1fUk9XX0ZYX09ERCA6IFBBUlRfSVRFTV9ST1dfRlhfRVZFTjtcclxuICAgIGlmICh2ID8gdi5jb25maWcuc25hcHBlZCA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NOQVBQRUQ7XHJcbiAgICAgIGZ4UGFydCArPSBQQVJUX0lURU1fRlhfU05BUFBFRDtcclxuICAgIH1cclxuICAgIGlmIChpc1NlbGVjdGVkKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NFTEVDVEVEO1xyXG4gICAgICBmeFBhcnQgKz0gUEFSVF9JVEVNX0ZYX1NFTEVDVEVEO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQ29sbGFwc2VkKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX0NPTExBUFNFRDtcclxuICAgICAgZnhQYXJ0ICs9IFBBUlRfSVRFTV9GWF9DT0xMQVBTRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAodiA/IHYuY29uZmlnLm5ldyA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX05FVztcclxuICAgICAgZnhQYXJ0ICs9IFBBUlRfSVRFTV9GWF9ORVc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNGb2N1cygpKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX0ZPQ1VTRUQ7XHJcbiAgICAgIGZ4UGFydCArPSBQQVJUX0lURU1fRlhfRk9DVVNFRDtcclxuICAgIH1cclxuICAgIHRoaXMuXyRwYXJ0Lm5leHQocGFydCk7XHJcbiAgICB0aGlzLl8kZnhQYXJ0Lm5leHQoZnhQYXJ0KTtcclxuXHJcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaGFzRm9jdXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZS5mb2N1c2VkSWQgPT09IHRoaXMuaXRlbUlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0Qm91bmRzKCk6IElTaXplIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5faXRlbT8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghIWVsKSB7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gZWwub2Zmc2V0V2lkdGgsIGhlaWdodCA9IGVsLm9mZnNldEhlaWdodDtcclxuICAgICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCwgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICBpZiAoIXRoaXMuaXRlbT8uY29uZmlnPy5keW5hbWljKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgIHN0eWxlcy56SW5kZXggPSB0aGlzLl9kYXRhPy5jb25maWc/LnpJbmRleCA/PyBERUZBVUxUX1pJTkRFWDtcclxuICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfQkxPQ0s7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpc1N0dWIgPSB0aGlzLl9kYXRhPy5jb25maWc/LmlzU3R1YiA/PyBmYWxzZTtcclxuICAgICAgaWYgKCFpc1N0dWIpIHtcclxuICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfVklTSUJMRTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIGlmICghdGhpcy5pdGVtPy5jb25maWc/LmR5bmFtaWMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHN0eWxlcyA9IGVsLnN0eWxlO1xyXG4gICAgc3R5bGVzLnpJbmRleCA9IEhJRERFTl9aSU5ERVg7XHJcbiAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9OT05FKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfTk9ORTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9ISURERU4pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,4 +1,5 @@
1
- export const ID = 'id', TRANSLATE_3D_HIDDEN = 'translate3d(-1000px,-1000px,0)', ATTR_AREA_SELECTED = 'area-selected', POSITION = 'position', POSITION_ZERO = '0', ITEM_ID = 'item-id', KEY_SPACE = ' ', KEY_ARR_LEFT = 'ArrowLeft', KEY_ARR_UP = 'ArrowUp', KEY_ARR_RIGHT = 'ArrowRight', KEY_ARR_DOWN = 'ArrowDown', EVENT_FOCUS_IN = 'focusin', EVENT_FOCUS_OUT = 'focusout', EVENT_KEY_DOWN = 'keydown', CLASS_NAME_SNAPPED = 'snapped', CLASS_NAME_SNAPPED_OUT = 'snapped-out', CLASS_NAME_FOCUS = 'focus';
1
+ import { matrix3d } from "../utils";
2
+ export const ID = 'id', NGVL_VISIBILITY = 'ngvl-visibility', MATRIX_3D_HIDDEN = matrix3d(-1000, -1000, 0, 1, 1, 1, 0, 0, 0), ATTR_AREA_SELECTED = 'area-selected', POSITION = 'position', POSITION_ZERO = '0', ITEM_ID = 'item-id', KEY_SPACE = ' ', KEY_ARR_LEFT = 'ArrowLeft', KEY_ARR_UP = 'ArrowUp', KEY_ARR_RIGHT = 'ArrowRight', KEY_ARR_DOWN = 'ArrowDown', EVENT_FOCUS_IN = 'focusin', EVENT_FOCUS_OUT = 'focusout', EVENT_KEY_DOWN = 'keydown', CLASS_NAME_SNAPPED = 'snapped', CLASS_NAME_SNAPPED_OUT = 'snapped-out', CLASS_NAME_FOCUS = 'focus';
2
3
  export const DEFAULT_TEMPLATE_CONTEXT = {
3
4
  data: undefined,
4
5
  prevData: undefined,
@@ -22,9 +23,19 @@ export const DEFAULT_TEMPLATE_CONTEXT = {
22
23
  isSnappingMethodAdvanced: false,
23
24
  tabIndex: 0,
24
25
  zIndex: '0',
26
+ layoutOffset: 0,
27
+ layoutIndexOffset: 0,
28
+ opacity: 0,
29
+ divides: 0,
30
+ snapToItem: false,
31
+ snapToItemAlign: "center",
32
+ isFirst: false,
33
+ isLast: false,
34
+ fullSize: false,
35
+ totalItems: 0,
25
36
  },
26
37
  reseted: false,
27
38
  index: -1,
28
39
  api: null,
29
40
  };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9jb25zdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUNsQixtQkFBbUIsR0FBRyxnQ0FBZ0MsRUFDdEQsa0JBQWtCLEdBQUcsZUFBZSxFQUNwQyxRQUFRLEdBQUcsVUFBVSxFQUNyQixhQUFhLEdBQUcsR0FBRyxFQUNuQixPQUFPLEdBQUcsU0FBUyxFQUNuQixTQUFTLEdBQUcsR0FBRyxFQUNmLFlBQVksR0FBRyxXQUFXLEVBQzFCLFVBQVUsR0FBRyxTQUFTLEVBQ3RCLGFBQWEsR0FBRyxZQUFZLEVBQzVCLFlBQVksR0FBRyxXQUFXLEVBQzFCLGNBQWMsR0FBRyxTQUFTLEVBQzFCLGVBQWUsR0FBRyxVQUFVLEVBQzVCLGNBQWMsR0FBRyxTQUFTLEVBQzFCLGtCQUFrQixHQUFHLFNBQVMsRUFDOUIsc0JBQXNCLEdBQUcsYUFBYSxFQUN0QyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7QUFHM0IsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXFCO0lBQ3RELElBQUksRUFBRSxTQUFTO0lBQ2YsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxLQUFLO1FBQ2YsU0FBUyxFQUFFLEtBQUs7UUFDaEIsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsS0FBSztRQUNWLElBQUksRUFBRSxLQUFLO1FBQ1gsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLENBQUM7UUFDVCxVQUFVLEVBQUUsS0FBSztRQUNqQixJQUFJLEVBQUUsS0FBSztRQUNYLE9BQU8sRUFBRSxLQUFLO1FBQ2QsVUFBVSxFQUFFLEtBQUs7UUFDakIsVUFBVSxFQUFFLEtBQUs7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCx3QkFBd0IsRUFBRSxLQUFLO1FBQy9CLFFBQVEsRUFBRSxDQUFDO1FBQ1gsTUFBTSxFQUFFLEdBQUc7S0FDZDtJQUNELE9BQU8sRUFBRSxLQUFLO0lBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNULEdBQUcsRUFBRSxJQUFJO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElUZW1wbGF0ZUNvbnRleHQgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IElEID0gJ2lkJyxcclxuICAgIFRSQU5TTEFURV8zRF9ISURERU4gPSAndHJhbnNsYXRlM2QoLTEwMDBweCwtMTAwMHB4LDApJyxcclxuICAgIEFUVFJfQVJFQV9TRUxFQ1RFRCA9ICdhcmVhLXNlbGVjdGVkJyxcclxuICAgIFBPU0lUSU9OID0gJ3Bvc2l0aW9uJyxcclxuICAgIFBPU0lUSU9OX1pFUk8gPSAnMCcsXHJcbiAgICBJVEVNX0lEID0gJ2l0ZW0taWQnLFxyXG4gICAgS0VZX1NQQUNFID0gJyAnLFxyXG4gICAgS0VZX0FSUl9MRUZUID0gJ0Fycm93TGVmdCcsXHJcbiAgICBLRVlfQVJSX1VQID0gJ0Fycm93VXAnLFxyXG4gICAgS0VZX0FSUl9SSUdIVCA9ICdBcnJvd1JpZ2h0JyxcclxuICAgIEtFWV9BUlJfRE9XTiA9ICdBcnJvd0Rvd24nLFxyXG4gICAgRVZFTlRfRk9DVVNfSU4gPSAnZm9jdXNpbicsXHJcbiAgICBFVkVOVF9GT0NVU19PVVQgPSAnZm9jdXNvdXQnLFxyXG4gICAgRVZFTlRfS0VZX0RPV04gPSAna2V5ZG93bicsXHJcbiAgICBDTEFTU19OQU1FX1NOQVBQRUQgPSAnc25hcHBlZCcsXHJcbiAgICBDTEFTU19OQU1FX1NOQVBQRURfT1VUID0gJ3NuYXBwZWQtb3V0JyxcclxuICAgIENMQVNTX05BTUVfRk9DVVMgPSAnZm9jdXMnO1xyXG5cclxuXHJcbiAgICBleHBvcnQgY29uc3QgREVGQVVMVF9URU1QTEFURV9DT05URVhUOiBJVGVtcGxhdGVDb250ZXh0ID0ge1xyXG4gICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcclxuICAgICAgICBwcmV2RGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgIG5leHREYXRhOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbWVhc3VyZXM6IG51bGwsXHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIGZvY3VzZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG5ldzogZmFsc2UsXHJcbiAgICAgICAgICAgIG9kZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGV2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICBjb2xsYXBzYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN0aWNreTogMCxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXA6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwcGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZE91dDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzVmVydGljYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBkeW5hbWljOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNTbmFwcGluZ01ldGhvZEFkdmFuY2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgdGFiSW5kZXg6IDAsXHJcbiAgICAgICAgICAgIHpJbmRleDogJzAnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRlZDogZmFsc2UsXHJcbiAgICAgICAgaW5kZXg6IC0xLFxyXG4gICAgICAgIGFwaTogbnVsbCxcclxuICAgIH07XHJcbiAgICAiXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9jb25zdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3BDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQ2xCLGVBQWUsR0FBRyxpQkFBaUIsRUFDbkMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUM5RCxrQkFBa0IsR0FBRyxlQUFlLEVBQ3BDLFFBQVEsR0FBRyxVQUFVLEVBQ3JCLGFBQWEsR0FBRyxHQUFHLEVBQ25CLE9BQU8sR0FBRyxTQUFTLEVBQ25CLFNBQVMsR0FBRyxHQUFHLEVBQ2YsWUFBWSxHQUFHLFdBQVcsRUFDMUIsVUFBVSxHQUFHLFNBQVMsRUFDdEIsYUFBYSxHQUFHLFlBQVksRUFDNUIsWUFBWSxHQUFHLFdBQVcsRUFDMUIsY0FBYyxHQUFHLFNBQVMsRUFDMUIsZUFBZSxHQUFHLFVBQVUsRUFDNUIsY0FBYyxHQUFHLFNBQVMsRUFDMUIsa0JBQWtCLEdBQUcsU0FBUyxFQUM5QixzQkFBc0IsR0FBRyxhQUFhLEVBQ3RDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztBQUUzQixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBcUI7SUFDdEQsSUFBSSxFQUFFLFNBQVM7SUFDZixRQUFRLEVBQUUsU0FBUztJQUNuQixRQUFRLEVBQUUsU0FBUztJQUNuQixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRTtRQUNKLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLEtBQUs7UUFDZixTQUFTLEVBQUUsS0FBSztRQUNoQixHQUFHLEVBQUUsS0FBSztRQUNWLEdBQUcsRUFBRSxLQUFLO1FBQ1YsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsQ0FBQztRQUNULFVBQVUsRUFBRSxLQUFLO1FBQ2pCLElBQUksRUFBRSxLQUFLO1FBQ1gsT0FBTyxFQUFFLEtBQUs7UUFDZCxVQUFVLEVBQUUsS0FBSztRQUNqQixVQUFVLEVBQUUsS0FBSztRQUNqQixPQUFPLEVBQUUsS0FBSztRQUNkLHdCQUF3QixFQUFFLEtBQUs7UUFDL0IsUUFBUSxFQUFFLENBQUM7UUFDWCxNQUFNLEVBQUUsR0FBRztRQUNYLFlBQVksRUFBRSxDQUFDO1FBQ2YsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1YsVUFBVSxFQUFFLEtBQUs7UUFDakIsZUFBZSxFQUFFLFFBQVE7UUFDekIsT0FBTyxFQUFFLEtBQUs7UUFDZCxNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxLQUFLO1FBQ2YsVUFBVSxFQUFFLENBQUM7S0FDaEI7SUFDRCxPQUFPLEVBQUUsS0FBSztJQUNkLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDVCxHQUFHLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXRyaXgzZCB9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQgeyBJVGVtcGxhdGVDb250ZXh0IH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBJRCA9ICdpZCcsXHJcbiAgICBOR1ZMX1ZJU0lCSUxJVFkgPSAnbmd2bC12aXNpYmlsaXR5JyxcclxuICAgIE1BVFJJWF8zRF9ISURERU4gPSBtYXRyaXgzZCgtMTAwMCwgLTEwMDAsIDAsIDEsIDEsIDEsIDAsIDAsIDApLFxyXG4gICAgQVRUUl9BUkVBX1NFTEVDVEVEID0gJ2FyZWEtc2VsZWN0ZWQnLFxyXG4gICAgUE9TSVRJT04gPSAncG9zaXRpb24nLFxyXG4gICAgUE9TSVRJT05fWkVSTyA9ICcwJyxcclxuICAgIElURU1fSUQgPSAnaXRlbS1pZCcsXHJcbiAgICBLRVlfU1BBQ0UgPSAnICcsXHJcbiAgICBLRVlfQVJSX0xFRlQgPSAnQXJyb3dMZWZ0JyxcclxuICAgIEtFWV9BUlJfVVAgPSAnQXJyb3dVcCcsXHJcbiAgICBLRVlfQVJSX1JJR0hUID0gJ0Fycm93UmlnaHQnLFxyXG4gICAgS0VZX0FSUl9ET1dOID0gJ0Fycm93RG93bicsXHJcbiAgICBFVkVOVF9GT0NVU19JTiA9ICdmb2N1c2luJyxcclxuICAgIEVWRU5UX0ZPQ1VTX09VVCA9ICdmb2N1c291dCcsXHJcbiAgICBFVkVOVF9LRVlfRE9XTiA9ICdrZXlkb3duJyxcclxuICAgIENMQVNTX05BTUVfU05BUFBFRCA9ICdzbmFwcGVkJyxcclxuICAgIENMQVNTX05BTUVfU05BUFBFRF9PVVQgPSAnc25hcHBlZC1vdXQnLFxyXG4gICAgQ0xBU1NfTkFNRV9GT0NVUyA9ICdmb2N1cyc7XHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IERFRkFVTFRfVEVNUExBVEVfQ09OVEVYVDogSVRlbXBsYXRlQ29udGV4dCA9IHtcclxuICAgICAgICBkYXRhOiB1bmRlZmluZWQsXHJcbiAgICAgICAgcHJldkRhdGE6IHVuZGVmaW5lZCxcclxuICAgICAgICBuZXh0RGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgIG1lYXN1cmVzOiBudWxsLFxyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgICBmb2N1c2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBuZXc6IGZhbHNlLFxyXG4gICAgICAgICAgICBvZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBldmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgY29sbGFwc2FibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzdGlja3k6IDAsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBwZWRPdXQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc1ZlcnRpY2FsOiBmYWxzZSxcclxuICAgICAgICAgICAgZHluYW1pYzogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzU25hcHBpbmdNZXRob2RBZHZhbmNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHRhYkluZGV4OiAwLFxyXG4gICAgICAgICAgICB6SW5kZXg6ICcwJyxcclxuICAgICAgICAgICAgbGF5b3V0T2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICBsYXlvdXRJbmRleE9mZnNldDogMCxcclxuICAgICAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICAgICAgZGl2aWRlczogMCxcclxuICAgICAgICAgICAgc25hcFRvSXRlbTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBUb0l0ZW1BbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgaXNGaXJzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzTGFzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZ1bGxTaXplOiBmYWxzZSxcclxuICAgICAgICAgICAgdG90YWxJdGVtczogMCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGluZGV4OiAtMSxcclxuICAgICAgICBhcGk6IG51bGwsXHJcbiAgICB9O1xyXG4iXX0=