@grafana/scenes 6.7.0 → 6.8.0

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 (331) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
  3. package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
  4. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
  5. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
  6. package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
  7. package/dist/esm/dist/esm/components/NestedScene.js +95 -0
  8. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
  9. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
  10. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
  11. package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
  12. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
  13. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
  14. package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
  15. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
  16. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
  17. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
  18. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
  19. package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
  20. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
  21. package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
  22. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
  23. package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
  24. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
  25. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
  26. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
  27. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
  28. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  29. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  30. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
  31. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  32. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  33. package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
  34. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
  35. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
  36. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
  37. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  38. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
  39. package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
  40. package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
  41. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
  42. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
  43. package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
  44. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
  45. package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
  46. package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
  47. package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
  48. package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
  49. package/dist/esm/dist/esm/core/events.js +11 -0
  50. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
  51. package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
  52. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
  53. package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
  54. package/dist/esm/dist/esm/core/types.js +15 -0
  55. package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
  56. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
  57. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
  58. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
  59. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
  60. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
  61. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
  62. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
  63. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
  64. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  65. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
  66. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  67. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  68. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
  69. package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
  70. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
  71. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
  72. package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
  73. package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
  74. package/dist/esm/dist/esm/services/utils.js +71 -0
  75. package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
  76. package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
  77. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
  78. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  79. package/dist/esm/dist/esm/utils/date.js +15 -0
  80. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
  81. package/dist/esm/dist/esm/utils/explore.js +47 -0
  82. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
  83. package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
  84. package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
  85. package/dist/esm/dist/esm/utils/metricTree.js +53 -0
  86. package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
  87. package/dist/esm/dist/esm/utils/utils.js +11 -0
  88. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
  89. package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
  90. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
  91. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
  92. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
  93. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
  94. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  95. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  96. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  97. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  98. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  99. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  104. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  105. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
  106. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
  107. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
  108. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
  109. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
  110. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
  111. package/dist/esm/dist/esm/variables/constants.js +9 -0
  112. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
  113. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
  114. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  115. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  116. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
  117. package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
  118. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
  119. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
  120. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
  121. package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
  122. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
  123. package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
  124. package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
  125. package/dist/esm/dist/esm/variables/macros/index.js +26 -0
  126. package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
  127. package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
  128. package/dist/esm/dist/esm/variables/macros/types.js +11 -0
  129. package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
  130. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
  131. package/dist/esm/dist/esm/variables/types.js +11 -0
  132. package/dist/esm/dist/esm/variables/utils.js +172 -0
  133. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
  134. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
  135. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
  136. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
  137. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
  138. package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
  139. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
  140. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
  141. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
  142. package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
  143. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
  144. package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
  145. package/dist/esm/index.js +1 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/querying/DataProviderSharer.js +39 -0
  148. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
  149. package/dist/esm/src/behaviors/CursorSync.js +76 -0
  150. package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
  151. package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
  152. package/dist/esm/src/behaviors/index.js +5 -0
  153. package/dist/esm/src/components/EmbeddedScene.js +59 -0
  154. package/dist/esm/src/components/NestedScene.js +95 -0
  155. package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
  156. package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
  157. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
  158. package/dist/esm/src/components/SceneApp/utils.js +42 -0
  159. package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
  160. package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
  161. package/dist/esm/src/components/SceneCanvasText.js +32 -0
  162. package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
  163. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
  164. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
  165. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
  166. package/dist/esm/src/components/SceneReactObject.js +34 -0
  167. package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
  168. package/dist/esm/src/components/SceneTimePicker.js +139 -0
  169. package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
  170. package/dist/esm/src/components/SceneToolbarButton.js +33 -0
  171. package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
  172. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
  173. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
  174. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
  175. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  176. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  177. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
  178. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  179. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  180. package/dist/esm/src/components/layout/LazyLoader.js +103 -0
  181. package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
  182. package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
  183. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
  184. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  185. package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
  186. package/dist/esm/src/components/layout/grid/constants.js +7 -0
  187. package/dist/esm/src/components/layout/grid/utils.js +36 -0
  188. package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
  189. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
  190. package/dist/esm/src/components/layout/split/Splitter.js +386 -0
  191. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
  192. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
  193. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
  194. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
  195. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
  196. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
  197. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
  198. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
  199. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
  200. package/dist/esm/src/core/PanelBuilders/index.js +116 -0
  201. package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
  202. package/dist/esm/src/core/SceneDataNode.js +43 -0
  203. package/dist/esm/src/core/SceneObjectBase.js +286 -0
  204. package/dist/esm/src/core/SceneObjectRef.js +32 -0
  205. package/dist/esm/src/core/SceneTimeRange.js +231 -0
  206. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
  207. package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
  208. package/dist/esm/src/core/events.js +11 -0
  209. package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
  210. package/dist/esm/src/core/sceneGraph/index.js +25 -0
  211. package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
  212. package/dist/esm/src/core/sceneGraph/utils.js +64 -0
  213. package/dist/esm/src/core/types.js +15 -0
  214. package/dist/esm/src/index.js +108 -0
  215. package/dist/esm/src/querying/DataLayersMerger.js +46 -0
  216. package/dist/esm/src/querying/DataProviderProxy.js +37 -0
  217. package/dist/esm/src/querying/DataProviderSharer.js +108 -0
  218. package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
  219. package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
  220. package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
  221. package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
  222. package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
  223. package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
  224. package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
  225. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
  226. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
  227. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  228. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
  229. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  230. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  231. package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
  232. package/dist/esm/src/querying/layers/index.js +2 -0
  233. package/dist/esm/src/querying/registerQueryWithController.js +41 -0
  234. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
  235. package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
  236. package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
  237. package/dist/esm/src/services/UrlSyncManager.js +167 -0
  238. package/dist/esm/src/services/useUrlSync.js +29 -0
  239. package/dist/esm/src/services/utils.js +75 -0
  240. package/dist/esm/src/utils/ControlsLabel.js +107 -0
  241. package/dist/esm/src/utils/LoadingIndicator.js +19 -0
  242. package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
  243. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  244. package/dist/esm/src/utils/date.js +15 -0
  245. package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
  246. package/dist/esm/src/utils/explore.js +47 -0
  247. package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
  248. package/dist/esm/src/utils/getDataSource.js +18 -0
  249. package/dist/esm/src/utils/getMessageFromError.js +24 -0
  250. package/dist/esm/src/utils/metricTree.js +53 -0
  251. package/dist/esm/src/utils/parseUrlParam.js +41 -0
  252. package/dist/esm/src/utils/utils.js +11 -0
  253. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
  254. package/dist/esm/src/utils/writeSceneLog.js +12 -0
  255. package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
  256. package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
  257. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
  258. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
  259. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  260. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  261. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  262. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  263. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  264. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  269. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  270. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
  271. package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
  272. package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
  273. package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
  274. package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
  275. package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
  276. package/dist/esm/src/variables/constants.js +9 -0
  277. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
  278. package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
  279. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  280. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  281. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
  282. package/dist/esm/src/variables/interpolation/defaults.js +21 -0
  283. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
  284. package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
  285. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
  286. package/dist/esm/src/variables/lookupVariable.js +20 -0
  287. package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
  288. package/dist/esm/src/variables/macros/contextMacros.js +43 -0
  289. package/dist/esm/src/variables/macros/dataMacros.js +134 -0
  290. package/dist/esm/src/variables/macros/index.js +35 -0
  291. package/dist/esm/src/variables/macros/templateProxies.js +51 -0
  292. package/dist/esm/src/variables/macros/timeMacros.js +86 -0
  293. package/dist/esm/src/variables/macros/types.js +11 -0
  294. package/dist/esm/src/variables/macros/urlMacros.js +56 -0
  295. package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
  296. package/dist/esm/src/variables/types.js +11 -0
  297. package/dist/esm/src/variables/utils.js +172 -0
  298. package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
  299. package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
  300. package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
  301. package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
  302. package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
  303. package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
  304. package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
  305. package/dist/esm/src/variables/variants/TestVariable.js +117 -0
  306. package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
  307. package/dist/esm/src/variables/variants/guards.js +27 -0
  308. package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
  309. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
  310. package/dist/esm/src/variables/variants/query/guards.js +28 -0
  311. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
  312. package/dist/esm/src/variables/variants/query/utils.js +124 -0
  313. package/dist/esm/variables/components/VariableValueSelect.js +13 -9
  314. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  315. package/dist/esm/variables/variants/ConstantVariable.js +22 -0
  316. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  317. package/dist/esm/variables/variants/CustomVariable.js +3 -2
  318. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  319. package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
  320. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  321. package/dist/esm/variables/variants/JsonVariable.js +96 -0
  322. package/dist/esm/variables/variants/TestVariable.js +3 -2
  323. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  324. package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
  325. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
  326. package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
  327. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  328. package/dist/index.d.ts +14 -6
  329. package/dist/index.js +35 -13
  330. package/dist/index.js.map +1 -1
  331. package/package.json +2 -2
@@ -0,0 +1,57 @@
1
+ import React, { useState, useEffect } from 'react';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
+ var __objRest = (source, exclude) => {
23
+ var target = {};
24
+ for (var prop in source)
25
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
26
+ target[prop] = source[prop];
27
+ if (source != null && __getOwnPropSymbols)
28
+ for (var prop of __getOwnPropSymbols(source)) {
29
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
30
+ target[prop] = source[prop];
31
+ }
32
+ return target;
33
+ };
34
+ function SceneComponentWrapperWithoutMemo(_a) {
35
+ var _b = _a, { model } = _b, otherProps = __objRest(_b, ["model"]);
36
+ var _a2;
37
+ const Component = (_a2 = model.constructor["Component"]) != null ? _a2 : EmptyRenderer;
38
+ const [_, setValue] = useState(0);
39
+ useEffect(() => {
40
+ const unsub = model.activate();
41
+ setValue((prevState) => prevState + 1);
42
+ return unsub;
43
+ }, [model]);
44
+ if (!model.isActive && !model.renderBeforeActivation) {
45
+ return null;
46
+ }
47
+ return /* @__PURE__ */ React.createElement(Component, __spreadProps(__spreadValues({}, otherProps), {
48
+ model
49
+ }));
50
+ }
51
+ const SceneComponentWrapper = React.memo(SceneComponentWrapperWithoutMemo);
52
+ function EmptyRenderer(_) {
53
+ return null;
54
+ }
55
+
56
+ export { SceneComponentWrapper };
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVDb21wb25lbnRXcmFwcGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL1NjZW5lQ29tcG9uZW50V3JhcHBlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG52YXIgX19vYmpSZXN0ID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0uY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIFNjZW5lQ29tcG9uZW50V3JhcHBlcldpdGhvdXRNZW1vKF9hKSB7XG4gIHZhciBfYiA9IF9hLCB7IG1vZGVsIH0gPSBfYiwgb3RoZXJQcm9wcyA9IF9fb2JqUmVzdChfYiwgW1wibW9kZWxcIl0pO1xuICB2YXIgX2EyO1xuICBjb25zdCBDb21wb25lbnQgPSAoX2EyID0gbW9kZWwuY29uc3RydWN0b3JbXCJDb21wb25lbnRcIl0pICE9IG51bGwgPyBfYTIgOiBFbXB0eVJlbmRlcmVyO1xuICBjb25zdCBbXywgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdW5zdWIgPSBtb2RlbC5hY3RpdmF0ZSgpO1xuICAgIHNldFZhbHVlKChwcmV2U3RhdGUpID0+IHByZXZTdGF0ZSArIDEpO1xuICAgIHJldHVybiB1bnN1YjtcbiAgfSwgW21vZGVsXSk7XG4gIGlmICghbW9kZWwuaXNBY3RpdmUgJiYgIW1vZGVsLnJlbmRlckJlZm9yZUFjdGl2YXRpb24pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBvdGhlclByb3BzKSwge1xuICAgIG1vZGVsXG4gIH0pKTtcbn1cbmNvbnN0IFNjZW5lQ29tcG9uZW50V3JhcHBlciA9IFJlYWN0Lm1lbW8oU2NlbmVDb21wb25lbnRXcmFwcGVyV2l0aG91dE1lbW8pO1xuZnVuY3Rpb24gRW1wdHlSZW5kZXJlcihfKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgeyBTY2VuZUNvbXBvbmVudFdyYXBwZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVkRiMjF3YjI1bGJuUlhjbUZ3Y0dWeUxtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZZMjl5WlM5VFkyVnVaVU52YlhCdmJtVnVkRmR5WVhCd1pYSXVkSE40SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCU1pXRmpkQ3dnZXlCMWMyVkZabVpsWTNRc0lIVnpaVk4wWVhSbElIMGdabkp2YlNBbmNtVmhZM1FuTzF4dVhHNXBiWEJ2Y25RZ2V5QlRZMlZ1WlVOdmJYQnZibVZ1ZEZCeWIzQnpMQ0JUWTJWdVpVOWlhbVZqZENCOUlHWnliMjBnSnk0dmRIbHdaWE1uTzF4dVhHNW1kVzVqZEdsdmJpQlRZMlZ1WlVOdmJYQnZibVZ1ZEZkeVlYQndaWEpYYVhSb2IzVjBUV1Z0Ynp4VUlHVjRkR1Z1WkhNZ1UyTmxibVZQWW1wbFkzUStLSHNnYlc5a1pXd3NJQzR1TG05MGFHVnlVSEp2Y0hNZ2ZUb2dVMk5sYm1WRGIyMXdiMjVsYm5SUWNtOXdjenhVUGlrZ2UxeHVJQ0JqYjI1emRDQkRiMjF3YjI1bGJuUWdQU0FvYlc5a1pXd2dZWE1nWVc1NUtTNWpiMjV6ZEhKMVkzUnZjbHNuUTI5dGNHOXVaVzUwSjEwZ1B6OGdSVzF3ZEhsU1pXNWtaWEpsY2p0Y2JpQWdZMjl1YzNRZ1cxOHNJSE5sZEZaaGJIVmxYU0E5SUhWelpWTjBZWFJsS0RBcE8xeHVYRzRnSUhWelpVVm1abVZqZENnb0tTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ2RXNXpkV0lnUFNCdGIyUmxiQzVoWTNScGRtRjBaU2dwTzF4dUlDQWdJSE5sZEZaaGJIVmxLQ2h3Y21WMlUzUmhkR1VwSUQwK0lIQnlaWFpUZEdGMFpTQXJJREVwTzF4dUlDQWdJSEpsZEhWeWJpQjFibk4xWWp0Y2JpQWdmU3dnVzIxdlpHVnNYU2s3WEc1Y2JpQWdMeThnUW5rZ2JtOTBJSEpsYm1SbGNtbHVaeUIwYUdVZ1kyOXRjRzl1Wlc1MElIVnVkR2xzSUhSb1pTQnRiMlJsYkNCcGN5QmhZM1JwWVhaMFpXUWdkMlVnYldGclpTQnpkWEpsSUhSb1lYUWdjR0Z5Wlc1MElHMXZaR1ZzY3lCblpYUWdZV04wYVhaaGRHVmtJR0psWm05eVpTQmphR2xzWkNCdGIyUmxiSE5jYmlBZ0x5OGdUM1JvWlhKM2FYTmxJR05vYVd4a0lHMXZaR1ZzY3lCM2IzVnNaQ0JpWlNCaFkzUnBkbUYwWldRZ1ltVm1iM0psSUhCaGNtVnVkSE1nWVhNZ2RHaGhkQ0JwY3lCMGFHVWdiM0prWlhJZ2IyWWdVbVZoWTNRZ2JXOTFiblFnWldabVpXTjBjeTVjYmlBZ0x5OGdWR2hwY3lCaGJITnZJR1Z1WVdKc1pYTWdjM1JoZEdsaklHeHZaMmxqSUhSdklHaGhjSEJsYmlCcGJuTnBaR1VnWVdOMGFYWmhkR1VnZEdoaGRDQmpZVzRnWTJoaGJtZGxJSE4wWVhSbElHSmxabTl5WlNCMGFHVWdabWx5YzNRZ2NtVnVaR1Z5TGx4dUlDQnBaaUFvSVcxdlpHVnNMbWx6UVdOMGFYWmxJQ1ltSUNGdGIyUmxiQzV5Wlc1a1pYSkNaV1p2Y21WQlkzUnBkbUYwYVc5dUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdQRU52YlhCdmJtVnVkQ0I3TGk0dWIzUm9aWEpRY205d2MzMGdiVzlrWld3OWUyMXZaR1ZzZlNBdlBqdGNibjFjYmx4dVpYaHdiM0owSUdOdmJuTjBJRk5qWlc1bFEyOXRjRzl1Wlc1MFYzSmhjSEJsY2lBOUlGSmxZV04wTG0xbGJXOG9VMk5sYm1WRGIyMXdiMjVsYm5SWGNtRndjR1Z5VjJsMGFHOTFkRTFsYlc4cE8xeHVYRzVtZFc1amRHbHZiaUJGYlhCMGVWSmxibVJsY21WeVBGUStLRjg2SUZOalpXNWxRMjl0Y0c5dVpXNTBVSEp2Y0hNOFZENHBPaUJTWldGamRDNVNaV0ZqZEVWc1pXMWxiblFnZkNCdWRXeHNJSHRjYmlBZ2NtVjBkWEp1SUc1MWJHdzdYRzU5WEc0aVhTd2libUZ0WlhNaU9sc2lYMkVpWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0QlFVbEJMRk5CUVZNc2FVTkJRWGRFTEVWQlFXdEVMRVZCUVVFN1FVRkJiRVFzUlVGQlFTeEpRVUZCTEVWQlFVRXNSMEZCUVN4RlFVRkJMRVZCUVVVc1JVRktia1VzUzBGQlFTeEZRVUZCTEVkQlNXbEZMRVZCUVZrc1JVRkJRU3hWUVVGQkxFZEJRVUVzVTBGQlFTeERRVUZhTEVsQlFWa3NRMEZCVml4UFFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJTbTVGTEVWQlFVRkJMRWxCUVVGQkxFZEJRVUZCTEVOQlFVRkJPMEZCUzBVc1JVRkJRU3hOUVVGTkxHRkJRV0ZCTEVkQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVdNc1YwRkJXU3hEUVVGQkxGZEJRVUVzUTBGQlFTeExRVUV4UWl4UFFVRkJRU3hIUVVFd1F5eEhRVUZCTEdGQlFVRXNRMEZCUVR0QlFVTTNSQ3hGUVVGQkxFMUJRVTBzUTBGQlF5eERRVUZCTEVWQlFVY3NVVUZCVVN4RFFVRkJMRWRCUVVrc1UwRkJVeXhEUVVGRExFTkJRVUVzUTBGQlFUdEJRVVZvUXl4RlFVRkJMRk5CUVVFc1EwRkJWU3hOUVVGTk8wRkJRMlFzU1VGQlRTeE5RVUZCTEV0QlFVRXNSMEZCVVN4TlFVRk5MRkZCUVZNc1JVRkJRU3hEUVVGQk8wRkJRemRDTEVsQlFWTXNVVUZCUVN4RFFVRkJMRU5CUVVNc1UwRkJZeXhMUVVGQkxGTkJRVUVzUjBGQldTeERRVUZETEVOQlFVRXNRMEZCUVR0QlFVTnlReXhKUVVGUExFOUJRVUVzUzBGQlFTeERRVUZCTzBGQlFVRXNSMEZEVkN4RlFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVUVzUTBGQlFUdEJRVXRXTEVWQlFVRXNTVUZCU1N4RFFVRkRMRXRCUVVFc1EwRkJUU3hSUVVGWkxFbEJRVUVzUTBGQlF5eE5RVUZOTEhOQ1FVRjNRaXhGUVVGQk8wRkJRM0JFTEVsQlFVOHNUMEZCUVN4SlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJSVUVzUlVGQlR5eDFRa0ZCUVN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGRExEUkRRVUZqTEZWQlFXUXNRMEZCUVN4RlFVRkJPMEZCUVVFc1NVRkJNRUlzUzBGQlFUdEJRVUZCTEVkQlFXTXNRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkRiRVFzUTBGQlFUdEJRVVZoTEUxQlFVRXNjVUpCUVVFc1IwRkJkMElzUzBGQlRTeERRVUZCTEVsQlFVRXNRMEZCU3l4blEwRkJaME1zUlVGQlFUdEJRVVZvUml4VFFVRlRMR05CUVdsQ0xFTkJRWE5FTEVWQlFVRTdRVUZET1VVc1JVRkJUeXhQUVVGQkxFbEJRVUVzUTBGQlFUdEJRVU5VT3pzN095SjlcbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsU0FBUyxpQ0FBd0QsRUFBa0QsRUFBQTtBQUFsRCxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUUsRUFBQSxFQUpuRSxLQUFBLEVBQUEsR0FJaUUsRUFBWSxFQUFBLFVBQUEsR0FBQSxTQUFaLENBQUEsRUFBQSxFQUFZLENBQVYsT0FBQSxDQUFBLENBQUEsQ0FBQTtBQUpuRUEsRUFBQUEsSUFBQUEsR0FBQUEsQ0FBQUE7QUFLRSxFQUFBLE1BQU0sYUFBYUEsR0FBQSxHQUFBLEtBQUEsQ0FBYyxXQUFZLENBQUEsV0FBQSxDQUFBLEtBQTFCLE9BQUFBLEdBQTBDLEdBQUEsYUFBQSxDQUFBO0FBQzdELEVBQUEsTUFBTSxDQUFDLENBQUEsRUFBRyxRQUFRLENBQUEsR0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBO0FBRWhDLEVBQUEsU0FBQSxDQUFVLE1BQU07QUFDUixJQUFBLE1BQUEsS0FBQSxHQUFRLE1BQU0sUUFBUyxFQUFBLENBQUE7QUFDcEIsSUFBQSxRQUFBLENBQUEsQ0FBQyxTQUFjLEtBQUEsU0FBQSxHQUFZLENBQUMsQ0FBQSxDQUFBO0FBQzlCLElBQUEsT0FBQSxLQUFBLENBQUE7R0FDTixFQUFBLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQTtBQUtWLEVBQUEsSUFBSSxDQUFDLEtBQUEsQ0FBTSxRQUFZLElBQUEsQ0FBQyxNQUFNLHNCQUF3QixFQUFBO0FBQzdDLElBQUEsT0FBQSxJQUFBLENBQUE7QUFBQSxHQUFBO0FBR0YsRUFBQSx1QkFBQSxLQUFBLENBQUEsY0FBQyxTQUFBLEVBQUEsYUFBQSxDQUFBLGVBQUEsRUFBQSxFQUFjLFVBQWQsQ0FBQSxFQUFBO0FBQTBCLElBQUEsS0FBQTtBQUFBLEdBQWMsQ0FBQSxDQUFBLENBQUE7QUFDbEQsQ0FBQTtBQUVhLE1BQUEscUJBQUEsR0FBd0IsS0FBTSxDQUFBLElBQUEsQ0FBSyxnQ0FBZ0MsRUFBQTtBQUVoRixTQUFTLGNBQWlCLENBQXNELEVBQUE7QUFDdkUsRUFBQSxPQUFBLElBQUEsQ0FBQTtBQUNUOzs7OyJ9
@@ -0,0 +1,43 @@
1
+ import { getDefaultTimeRange } from '@grafana/data';
2
+ import { LoadingState } from '@grafana/schema';
3
+ import { of } from 'rxjs';
4
+ import { SceneObjectBase } from './SceneObjectBase.js';
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ class SceneDataNode extends SceneObjectBase {
23
+ constructor(state) {
24
+ super(__spreadValues({
25
+ data: emptyPanelData
26
+ }, state));
27
+ }
28
+ getResultsStream() {
29
+ const result = {
30
+ origin: this,
31
+ data: this.state.data
32
+ };
33
+ return of(result);
34
+ }
35
+ }
36
+ const emptyPanelData = {
37
+ state: LoadingState.Done,
38
+ series: [],
39
+ timeRange: getDefaultTimeRange()
40
+ };
41
+
42
+ export { SceneDataNode, emptyPanelData };
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVEYXRhTm9kZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29yZS9TY2VuZURhdGFOb2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldERlZmF1bHRUaW1lUmFuZ2UgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi9TY2VuZU9iamVjdEJhc2UuanMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5jbGFzcyBTY2VuZURhdGFOb2RlIGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlIHtcbiAgY29uc3RydWN0b3Ioc3RhdGUpIHtcbiAgICBzdXBlcihfX3NwcmVhZFZhbHVlcyh7XG4gICAgICBkYXRhOiBlbXB0eVBhbmVsRGF0YVxuICAgIH0sIHN0YXRlKSk7XG4gIH1cbiAgZ2V0UmVzdWx0c1N0cmVhbSgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBvcmlnaW46IHRoaXMsXG4gICAgICBkYXRhOiB0aGlzLnN0YXRlLmRhdGFcbiAgICB9O1xuICAgIHJldHVybiBvZihyZXN1bHQpO1xuICB9XG59XG5jb25zdCBlbXB0eVBhbmVsRGF0YSA9IHtcbiAgc3RhdGU6IExvYWRpbmdTdGF0ZS5Eb25lLFxuICBzZXJpZXM6IFtdLFxuICB0aW1lUmFuZ2U6IGdldERlZmF1bHRUaW1lUmFuZ2UoKVxufTtcblxuZXhwb3J0IHsgU2NlbmVEYXRhTm9kZSwgZW1wdHlQYW5lbERhdGEgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVkVZWFJoVG05a1pTNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dmMzSmpMMk52Y21VdlUyTmxibVZFWVhSaFRtOWtaUzUwY3lKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5Qm5aWFJFWldaaGRXeDBWR2x0WlZKaGJtZGxMQ0JRWVc1bGJFUmhkR0VnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzlrWVhSaEp6dGNibWx0Y0c5eWRDQjdJRXh2WVdScGJtZFRkR0YwWlNCOUlHWnliMjBnSjBCbmNtRm1ZVzVoTDNOamFHVnRZU2M3WEc1cGJYQnZjblFnZXlCdlppQjlJR1p5YjIwZ0ozSjRhbk1uTzF4dVhHNXBiWEJ2Y25RZ2V5QlRZMlZ1WlU5aWFtVmpkRUpoYzJVZ2ZTQm1jbTl0SUNjdUwxTmpaVzVsVDJKcVpXTjBRbUZ6WlNjN1hHNXBiWEJ2Y25RZ2V5QlRZMlZ1WlVSaGRHRlFjbTkyYVdSbGNpd2dVMk5sYm1WRVlYUmhVSEp2ZG1sa1pYSlNaWE4xYkhRc0lGTmpaVzVsUkdGMFlWTjBZWFJsSUgwZ1puSnZiU0FuTGk5MGVYQmxjeWM3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1UyTmxibVZFWVhSaFRtOWtaVk4wWVhSbElHVjRkR1Z1WkhNZ1UyTmxibVZFWVhSaFUzUmhkR1VnZTF4dUlDQmtZWFJoT2lCUVlXNWxiRVJoZEdFN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlRZMlZ1WlVSaGRHRk9iMlJsSUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNSQ1lYTmxQRk5qWlc1bFJHRjBZVTV2WkdWVGRHRjBaVDRnYVcxd2JHVnRaVzUwY3lCVFkyVnVaVVJoZEdGUWNtOTJhV1JsY2lCN1hHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWh6ZEdGMFpUODZJRkJoY25ScFlXdzhVMk5sYm1WRVlYUmhUbTlrWlZOMFlYUmxQaWtnZTF4dUlDQWdJSE4xY0dWeUtIdGNiaUFnSUNBZ0lHUmhkR0U2SUdWdGNIUjVVR0Z1Wld4RVlYUmhMRnh1SUNBZ0lDQWdMaTR1YzNSaGRHVXNYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwVW1WemRXeDBjMU4wY21WaGJTZ3BJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFE2SUZOalpXNWxSR0YwWVZCeWIzWnBaR1Z5VW1WemRXeDBJRDBnZTF4dUlDQWdJQ0FnYjNKcFoybHVPaUIwYUdsekxGeHVJQ0FnSUNBZ1pHRjBZVG9nZEdocGN5NXpkR0YwWlM1a1lYUmhMRnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQnlaWFIxY200Z2IyWW9jbVZ6ZFd4MEtUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1pXMXdkSGxRWVc1bGJFUmhkR0U2SUZCaGJtVnNSR0YwWVNBOUlIdGNiaUFnYzNSaGRHVTZJRXh2WVdScGJtZFRkR0YwWlM1RWIyNWxMRnh1SUNCelpYSnBaWE02SUZ0ZExGeHVJQ0IwYVcxbFVtRnVaMlU2SUdkbGRFUmxabUYxYkhSVWFXMWxVbUZ1WjJVb0tTeGNibjA3WEc0aVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenM3T3pzN08wRkJWMDhzVFVGQlRTeHpRa0ZCYzBJc1pVRkJhVVVzUTBGQlFUdEJRVUZCTEVWQlF6TkdMRmxCUVZrc1MwRkJjVU1zUlVGQlFUdEJRVU4wUkN4SlFVRk5MRXRCUVVFc1EwRkJRU3hqUVVGQkxFTkJRVUU3UVVGQlFTeE5RVU5LTEVsQlFVMHNSVUZCUVN4alFVRkJPMEZCUVVFc1MwRkJRU3hGUVVOSUxFdEJRMG9zUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTklPMEZCUVVFc1JVRkZUeXhuUWtGQmJVSXNSMEZCUVR0QlFVTjRRaXhKUVVGQkxFMUJRVTBzVFVGQmEwTXNSMEZCUVR0QlFVRkJMRTFCUTNSRExFMUJRVkVzUlVGQlFTeEpRVUZCTzBGQlFVRXNUVUZEVWl4SlFVRkJMRVZCUVUwc1MwRkJTeXhMUVVGTkxFTkJRVUVzU1VGQlFUdEJRVUZCTEV0QlEyNUNMRU5CUVVFN1FVRkZRU3hKUVVGQkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTJ4Q08wRkJRMFlzUTBGQlFUdEJRVVZQTEUxQlFVMHNZMEZCTkVJc1IwRkJRVHRCUVVGQkxFVkJRM1pETEU5QlFVOHNXVUZCWVN4RFFVRkJMRWxCUVVFN1FVRkJRU3hGUVVOd1FpeFJRVUZSTEVWQlFVTTdRVUZCUVN4RlFVTlVMRmRCUVZjc2JVSkJRVzlDTEVWQlFVRTdRVUZEYWtNN096czdJbjA9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV08sTUFBTSxzQkFBc0IsZUFBaUUsQ0FBQTtBQUMzRixFQUFBLFdBQUEsQ0FBWSxLQUFxQyxFQUFBO0FBQ2hELElBQUEsS0FBQSxDQUFBLGNBQUEsQ0FBQTtNQUNKLElBQU0sRUFBQSxjQUFBO0FBQUEsS0FBQSxFQUNILEtBQ0osQ0FBQSxDQUFBLENBQUE7QUFBQSxHQUFBO0VBR0ksZ0JBQW1CLEdBQUE7QUFDeEIsSUFBQSxNQUFNLE1BQWtDLEdBQUE7TUFDdEMsTUFBUSxFQUFBLElBQUE7QUFDUixNQUFBLElBQUEsRUFBTSxLQUFLLEtBQU0sQ0FBQSxJQUFBO0FBQUEsS0FBQSxDQUFBO0FBR25CLElBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQUVwQixDQUFBO0FBRU8sTUFBTSxjQUE0QixHQUFBO0FBQ3ZDLEVBQUEsS0FBQSxFQUFPLFlBQWEsQ0FBQSxJQUFBO0FBQ3BCLEVBQUEsTUFBQSxFQUFRLEVBQUE7QUFDUixFQUFBLFNBQUEsRUFBVyxtQkFBb0IsRUFBQTtBQUNqQzs7OzsifQ==
@@ -0,0 +1,286 @@
1
+ import { useState, useEffect } from 'react';
2
+ import { Subscription } from 'rxjs';
3
+ import { v4 } from 'uuid';
4
+ import { EventBusSrv } from '@grafana/data';
5
+ import { SceneComponentWrapper } from './SceneComponentWrapper.js';
6
+ import { SceneObjectStateChangedEvent } from './events.js';
7
+ import { cloneSceneObject } from './sceneGraph/utils.js';
8
+ import { SceneObjectRef } from './SceneObjectRef.js';
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __spreadValues = (a, b) => {
16
+ for (var prop in b || (b = {}))
17
+ if (__hasOwnProp.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ if (__getOwnPropSymbols)
20
+ for (var prop of __getOwnPropSymbols(b)) {
21
+ if (__propIsEnum.call(b, prop))
22
+ __defNormalProp(a, prop, b[prop]);
23
+ }
24
+ return a;
25
+ };
26
+ class SceneObjectBase {
27
+ constructor(state) {
28
+ this._isActive = false;
29
+ this._activationHandlers = [];
30
+ this._deactivationHandlers = /* @__PURE__ */ new Map();
31
+ this._subs = new Subscription();
32
+ this._refCount = 0;
33
+ this._renderBeforeActivation = false;
34
+ if (!state.key) {
35
+ state.key = v4();
36
+ }
37
+ this._events = new EventBusSrv();
38
+ this._state = Object.freeze(state);
39
+ this._setParent(this._state);
40
+ }
41
+ get state() {
42
+ return this._state;
43
+ }
44
+ get isActive() {
45
+ return this._isActive;
46
+ }
47
+ get renderBeforeActivation() {
48
+ return this._renderBeforeActivation;
49
+ }
50
+ get parent() {
51
+ return this._parent;
52
+ }
53
+ get variableDependency() {
54
+ return this._variableDependency;
55
+ }
56
+ get urlSync() {
57
+ return this._urlSync;
58
+ }
59
+ get Component() {
60
+ return SceneComponentWrapper;
61
+ }
62
+ _setParent(state) {
63
+ forEachChild(state, (child) => {
64
+ if (child._parent && child._parent !== this) {
65
+ console.warn(
66
+ "SceneObject already has a parent set that is different from the new parent. You cannot share the same SceneObject instance in multiple scenes or in multiple different places of the same scene graph. Use SceneObject.clone() to duplicate a SceneObject or store a state key reference and use sceneGraph.findObject to locate it.",
67
+ child,
68
+ this
69
+ );
70
+ }
71
+ child._parent = this;
72
+ });
73
+ }
74
+ clearParent() {
75
+ this._parent = void 0;
76
+ }
77
+ subscribeToState(handler) {
78
+ return this._events.subscribe(SceneObjectStateChangedEvent, (event) => {
79
+ if (event.payload.changedObject === this) {
80
+ handler(event.payload.newState, event.payload.prevState);
81
+ }
82
+ });
83
+ }
84
+ subscribeToEvent(eventType, handler) {
85
+ return this._events.subscribe(eventType, handler);
86
+ }
87
+ setState(update) {
88
+ const prevState = this._state;
89
+ const newState = __spreadValues(__spreadValues({}, this._state), update);
90
+ this._state = Object.freeze(newState);
91
+ this._setParent(update);
92
+ this._handleActivationOfChangedStateProps(prevState, newState);
93
+ this.publishEvent(
94
+ new SceneObjectStateChangedEvent({
95
+ prevState,
96
+ newState,
97
+ partialUpdate: update,
98
+ changedObject: this
99
+ }),
100
+ true
101
+ );
102
+ }
103
+ _handleActivationOfChangedStateProps(prevState, newState) {
104
+ if (!this.isActive) {
105
+ return;
106
+ }
107
+ if (prevState.$behaviors !== newState.$behaviors) {
108
+ this._handleChangedBehaviors(prevState.$behaviors, newState.$behaviors);
109
+ }
110
+ if (prevState.$data !== newState.$data) {
111
+ this._handleChangedStateActivation(prevState.$data, newState.$data);
112
+ }
113
+ if (prevState.$variables !== newState.$variables) {
114
+ this._handleChangedStateActivation(prevState.$variables, newState.$variables);
115
+ }
116
+ if (prevState.$timeRange !== newState.$timeRange) {
117
+ this._handleChangedStateActivation(prevState.$timeRange, newState.$timeRange);
118
+ }
119
+ }
120
+ _handleChangedStateActivation(oldValue, newValue) {
121
+ if (oldValue) {
122
+ const deactivationHandler = this._deactivationHandlers.get(oldValue);
123
+ if (deactivationHandler) {
124
+ deactivationHandler();
125
+ this._deactivationHandlers.delete(oldValue);
126
+ }
127
+ }
128
+ if (newValue) {
129
+ this._deactivationHandlers.set(newValue, newValue.activate());
130
+ }
131
+ }
132
+ _handleChangedBehaviors(oldValue, newValue) {
133
+ if (oldValue) {
134
+ for (const oldBehavior of oldValue) {
135
+ if (!newValue || !newValue.includes(oldBehavior)) {
136
+ const deactivationHandler = this._deactivationHandlers.get(oldBehavior);
137
+ if (deactivationHandler) {
138
+ deactivationHandler();
139
+ this._deactivationHandlers.delete(oldBehavior);
140
+ }
141
+ }
142
+ }
143
+ }
144
+ if (newValue) {
145
+ for (const newBehavior of newValue) {
146
+ if (!oldValue || !oldValue.includes(newBehavior)) {
147
+ this._activateBehavior(newBehavior);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ publishEvent(event, bubble) {
153
+ this._events.publish(event);
154
+ if (bubble && this.parent) {
155
+ this.parent.publishEvent(event, bubble);
156
+ }
157
+ }
158
+ getRoot() {
159
+ return !this._parent ? this : this._parent.getRoot();
160
+ }
161
+ _internalActivate() {
162
+ this._isActive = true;
163
+ const { $data, $variables, $timeRange, $behaviors } = this.state;
164
+ this._activationHandlers.forEach((handler) => {
165
+ const result = handler();
166
+ if (result) {
167
+ this._deactivationHandlers.set(result, result);
168
+ }
169
+ });
170
+ if ($timeRange && !$timeRange.isActive) {
171
+ this._deactivationHandlers.set($timeRange, $timeRange.activate());
172
+ }
173
+ if ($variables && !$variables.isActive) {
174
+ this._deactivationHandlers.set($variables, $variables.activate());
175
+ }
176
+ if ($data && !$data.isActive) {
177
+ this._deactivationHandlers.set($data, $data.activate());
178
+ }
179
+ if ($behaviors) {
180
+ for (const behavior of $behaviors) {
181
+ this._activateBehavior(behavior);
182
+ }
183
+ }
184
+ }
185
+ _activateBehavior(behavior) {
186
+ if (behavior instanceof SceneObjectBase) {
187
+ this._deactivationHandlers.set(behavior, behavior.activate());
188
+ } else if (typeof behavior === "function") {
189
+ const deactivate = behavior(this);
190
+ if (deactivate) {
191
+ this._deactivationHandlers.set(behavior, deactivate);
192
+ }
193
+ }
194
+ }
195
+ activate() {
196
+ if (!this.isActive) {
197
+ this._internalActivate();
198
+ }
199
+ this._refCount++;
200
+ let called = false;
201
+ return () => {
202
+ this._refCount--;
203
+ if (called) {
204
+ const msg = `SceneObject cancelation handler returned by activate() called a second time`;
205
+ throw new Error(msg);
206
+ }
207
+ called = true;
208
+ if (this._refCount === 0) {
209
+ this._internalDeactivate();
210
+ }
211
+ };
212
+ }
213
+ _internalDeactivate() {
214
+ this._isActive = false;
215
+ for (let handler of this._deactivationHandlers.values()) {
216
+ handler();
217
+ }
218
+ this._deactivationHandlers.clear();
219
+ this._events.removeAllListeners();
220
+ this._subs.unsubscribe();
221
+ this._subs = new Subscription();
222
+ }
223
+ useState() {
224
+ return useSceneObjectState(this);
225
+ }
226
+ forceRender() {
227
+ this.setState({});
228
+ }
229
+ clone(withState) {
230
+ return cloneSceneObject(this, withState);
231
+ }
232
+ addActivationHandler(handler) {
233
+ this._activationHandlers.push(handler);
234
+ }
235
+ forEachChild(callback) {
236
+ forEachChild(this.state, callback);
237
+ }
238
+ getRef() {
239
+ if (!this._ref) {
240
+ this._ref = new SceneObjectRef(this);
241
+ }
242
+ return this._ref;
243
+ }
244
+ }
245
+ function useSceneObjectState(model, options) {
246
+ var _a;
247
+ const [_, setState] = useState(model.state);
248
+ const stateAtFirstRender = model.state;
249
+ const shouldActivateOrKeepAlive = (_a = options == null ? void 0 : options.shouldActivateOrKeepAlive) != null ? _a : false;
250
+ useEffect(() => {
251
+ let unactivate;
252
+ if (shouldActivateOrKeepAlive) {
253
+ unactivate = model.activate();
254
+ }
255
+ const s = model.subscribeToState((state) => {
256
+ setState(state);
257
+ });
258
+ if (model.state !== stateAtFirstRender) {
259
+ setState(model.state);
260
+ }
261
+ return () => {
262
+ s.unsubscribe();
263
+ if (unactivate) {
264
+ unactivate();
265
+ }
266
+ };
267
+ }, [model, shouldActivateOrKeepAlive]);
268
+ return model.state;
269
+ }
270
+ function forEachChild(state, callback) {
271
+ for (const propValue of Object.values(state)) {
272
+ if (propValue instanceof SceneObjectBase) {
273
+ callback(propValue);
274
+ }
275
+ if (Array.isArray(propValue)) {
276
+ for (const child of propValue) {
277
+ if (child instanceof SceneObjectBase) {
278
+ callback(child);
279
+ }
280
+ }
281
+ }
282
+ }
283
+ }
284
+
285
+ export { SceneObjectBase, useSceneObjectState };
286
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVPYmplY3RCYXNlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRXZlbnRCdXNTcnYgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IFNjZW5lQ29tcG9uZW50V3JhcHBlciB9IGZyb20gJy4vU2NlbmVDb21wb25lbnRXcmFwcGVyLmpzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0U3RhdGVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL2V2ZW50cy5qcyc7XG5pbXBvcnQgeyBjbG9uZVNjZW5lT2JqZWN0IH0gZnJvbSAnLi9zY2VuZUdyYXBoL3V0aWxzLmpzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0UmVmIH0gZnJvbSAnLi9TY2VuZU9iamVjdFJlZi5qcyc7XG5cbnZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0gPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmNsYXNzIFNjZW5lT2JqZWN0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlKSB7XG4gICAgdGhpcy5faXNBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9hY3RpdmF0aW9uSGFuZGxlcnMgPSBbXTtcbiAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgdGhpcy5fc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLl9yZWZDb3VudCA9IDA7XG4gICAgdGhpcy5fcmVuZGVyQmVmb3JlQWN0aXZhdGlvbiA9IGZhbHNlO1xuICAgIGlmICghc3RhdGUua2V5KSB7XG4gICAgICBzdGF0ZS5rZXkgPSB2NCgpO1xuICAgIH1cbiAgICB0aGlzLl9ldmVudHMgPSBuZXcgRXZlbnRCdXNTcnYoKTtcbiAgICB0aGlzLl9zdGF0ZSA9IE9iamVjdC5mcmVlemUoc3RhdGUpO1xuICAgIHRoaXMuX3NldFBhcmVudCh0aGlzLl9zdGF0ZSk7XG4gIH1cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuICBnZXQgaXNBY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQWN0aXZlO1xuICB9XG4gIGdldCByZW5kZXJCZWZvcmVBY3RpdmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9yZW5kZXJCZWZvcmVBY3RpdmF0aW9uO1xuICB9XG4gIGdldCBwYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudDtcbiAgfVxuICBnZXQgdmFyaWFibGVEZXBlbmRlbmN5KCkge1xuICAgIHJldHVybiB0aGlzLl92YXJpYWJsZURlcGVuZGVuY3k7XG4gIH1cbiAgZ2V0IHVybFN5bmMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VybFN5bmM7XG4gIH1cbiAgZ2V0IENvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gU2NlbmVDb21wb25lbnRXcmFwcGVyO1xuICB9XG4gIF9zZXRQYXJlbnQoc3RhdGUpIHtcbiAgICBmb3JFYWNoQ2hpbGQoc3RhdGUsIChjaGlsZCkgPT4ge1xuICAgICAgaWYgKGNoaWxkLl9wYXJlbnQgJiYgY2hpbGQuX3BhcmVudCAhPT0gdGhpcykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgXCJTY2VuZU9iamVjdCBhbHJlYWR5IGhhcyBhIHBhcmVudCBzZXQgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmV3IHBhcmVudC4gWW91IGNhbm5vdCBzaGFyZSB0aGUgc2FtZSBTY2VuZU9iamVjdCBpbnN0YW5jZSBpbiBtdWx0aXBsZSBzY2VuZXMgb3IgaW4gbXVsdGlwbGUgZGlmZmVyZW50IHBsYWNlcyBvZiB0aGUgc2FtZSBzY2VuZSBncmFwaC4gVXNlIFNjZW5lT2JqZWN0LmNsb25lKCkgdG8gZHVwbGljYXRlIGEgU2NlbmVPYmplY3Qgb3Igc3RvcmUgYSBzdGF0ZSBrZXkgcmVmZXJlbmNlIGFuZCB1c2Ugc2NlbmVHcmFwaC5maW5kT2JqZWN0IHRvIGxvY2F0ZSBpdC5cIixcbiAgICAgICAgICBjaGlsZCxcbiAgICAgICAgICB0aGlzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjaGlsZC5fcGFyZW50ID0gdGhpcztcbiAgICB9KTtcbiAgfVxuICBjbGVhclBhcmVudCgpIHtcbiAgICB0aGlzLl9wYXJlbnQgPSB2b2lkIDA7XG4gIH1cbiAgc3Vic2NyaWJlVG9TdGF0ZShoYW5kbGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5zdWJzY3JpYmUoU2NlbmVPYmplY3RTdGF0ZUNoYW5nZWRFdmVudCwgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQucGF5bG9hZC5jaGFuZ2VkT2JqZWN0ID09PSB0aGlzKSB7XG4gICAgICAgIGhhbmRsZXIoZXZlbnQucGF5bG9hZC5uZXdTdGF0ZSwgZXZlbnQucGF5bG9hZC5wcmV2U3RhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHN1YnNjcmliZVRvRXZlbnQoZXZlbnRUeXBlLCBoYW5kbGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5zdWJzY3JpYmUoZXZlbnRUeXBlLCBoYW5kbGVyKTtcbiAgfVxuICBzZXRTdGF0ZSh1cGRhdGUpIHtcbiAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLl9zdGF0ZTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IF9fc3ByZWFkVmFsdWVzKF9fc3ByZWFkVmFsdWVzKHt9LCB0aGlzLl9zdGF0ZSksIHVwZGF0ZSk7XG4gICAgdGhpcy5fc3RhdGUgPSBPYmplY3QuZnJlZXplKG5ld1N0YXRlKTtcbiAgICB0aGlzLl9zZXRQYXJlbnQodXBkYXRlKTtcbiAgICB0aGlzLl9oYW5kbGVBY3RpdmF0aW9uT2ZDaGFuZ2VkU3RhdGVQcm9wcyhwcmV2U3RhdGUsIG5ld1N0YXRlKTtcbiAgICB0aGlzLnB1Ymxpc2hFdmVudChcbiAgICAgIG5ldyBTY2VuZU9iamVjdFN0YXRlQ2hhbmdlZEV2ZW50KHtcbiAgICAgICAgcHJldlN0YXRlLFxuICAgICAgICBuZXdTdGF0ZSxcbiAgICAgICAgcGFydGlhbFVwZGF0ZTogdXBkYXRlLFxuICAgICAgICBjaGFuZ2VkT2JqZWN0OiB0aGlzXG4gICAgICB9KSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG4gIF9oYW5kbGVBY3RpdmF0aW9uT2ZDaGFuZ2VkU3RhdGVQcm9wcyhwcmV2U3RhdGUsIG5ld1N0YXRlKSB7XG4gICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwcmV2U3RhdGUuJGJlaGF2aW9ycyAhPT0gbmV3U3RhdGUuJGJlaGF2aW9ycykge1xuICAgICAgdGhpcy5faGFuZGxlQ2hhbmdlZEJlaGF2aW9ycyhwcmV2U3RhdGUuJGJlaGF2aW9ycywgbmV3U3RhdGUuJGJlaGF2aW9ycyk7XG4gICAgfVxuICAgIGlmIChwcmV2U3RhdGUuJGRhdGEgIT09IG5ld1N0YXRlLiRkYXRhKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDaGFuZ2VkU3RhdGVBY3RpdmF0aW9uKHByZXZTdGF0ZS4kZGF0YSwgbmV3U3RhdGUuJGRhdGEpO1xuICAgIH1cbiAgICBpZiAocHJldlN0YXRlLiR2YXJpYWJsZXMgIT09IG5ld1N0YXRlLiR2YXJpYWJsZXMpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNoYW5nZWRTdGF0ZUFjdGl2YXRpb24ocHJldlN0YXRlLiR2YXJpYWJsZXMsIG5ld1N0YXRlLiR2YXJpYWJsZXMpO1xuICAgIH1cbiAgICBpZiAocHJldlN0YXRlLiR0aW1lUmFuZ2UgIT09IG5ld1N0YXRlLiR0aW1lUmFuZ2UpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNoYW5nZWRTdGF0ZUFjdGl2YXRpb24ocHJldlN0YXRlLiR0aW1lUmFuZ2UsIG5ld1N0YXRlLiR0aW1lUmFuZ2UpO1xuICAgIH1cbiAgfVxuICBfaGFuZGxlQ2hhbmdlZFN0YXRlQWN0aXZhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpIHtcbiAgICBpZiAob2xkVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRlYWN0aXZhdGlvbkhhbmRsZXIgPSB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5nZXQob2xkVmFsdWUpO1xuICAgICAgaWYgKGRlYWN0aXZhdGlvbkhhbmRsZXIpIHtcbiAgICAgICAgZGVhY3RpdmF0aW9uSGFuZGxlcigpO1xuICAgICAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5kZWxldGUob2xkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChuZXdWYWx1ZSwgbmV3VmFsdWUuYWN0aXZhdGUoKSk7XG4gICAgfVxuICB9XG4gIF9oYW5kbGVDaGFuZ2VkQmVoYXZpb3JzKG9sZFZhbHVlLCBuZXdWYWx1ZSkge1xuICAgIGlmIChvbGRWYWx1ZSkge1xuICAgICAgZm9yIChjb25zdCBvbGRCZWhhdmlvciBvZiBvbGRWYWx1ZSkge1xuICAgICAgICBpZiAoIW5ld1ZhbHVlIHx8ICFuZXdWYWx1ZS5pbmNsdWRlcyhvbGRCZWhhdmlvcikpIHtcbiAgICAgICAgICBjb25zdCBkZWFjdGl2YXRpb25IYW5kbGVyID0gdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuZ2V0KG9sZEJlaGF2aW9yKTtcbiAgICAgICAgICBpZiAoZGVhY3RpdmF0aW9uSGFuZGxlcikge1xuICAgICAgICAgICAgZGVhY3RpdmF0aW9uSGFuZGxlcigpO1xuICAgICAgICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuZGVsZXRlKG9sZEJlaGF2aW9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBmb3IgKGNvbnN0IG5ld0JlaGF2aW9yIG9mIG5ld1ZhbHVlKSB7XG4gICAgICAgIGlmICghb2xkVmFsdWUgfHwgIW9sZFZhbHVlLmluY2x1ZGVzKG5ld0JlaGF2aW9yKSkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2YXRlQmVoYXZpb3IobmV3QmVoYXZpb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHB1Ymxpc2hFdmVudChldmVudCwgYnViYmxlKSB7XG4gICAgdGhpcy5fZXZlbnRzLnB1Ymxpc2goZXZlbnQpO1xuICAgIGlmIChidWJibGUgJiYgdGhpcy5wYXJlbnQpIHtcbiAgICAgIHRoaXMucGFyZW50LnB1Ymxpc2hFdmVudChldmVudCwgYnViYmxlKTtcbiAgICB9XG4gIH1cbiAgZ2V0Um9vdCgpIHtcbiAgICByZXR1cm4gIXRoaXMuX3BhcmVudCA/IHRoaXMgOiB0aGlzLl9wYXJlbnQuZ2V0Um9vdCgpO1xuICB9XG4gIF9pbnRlcm5hbEFjdGl2YXRlKCkge1xuICAgIHRoaXMuX2lzQWN0aXZlID0gdHJ1ZTtcbiAgICBjb25zdCB7ICRkYXRhLCAkdmFyaWFibGVzLCAkdGltZVJhbmdlLCAkYmVoYXZpb3JzIH0gPSB0aGlzLnN0YXRlO1xuICAgIHRoaXMuX2FjdGl2YXRpb25IYW5kbGVycy5mb3JFYWNoKChoYW5kbGVyKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVyKCk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChyZXN1bHQsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCR0aW1lUmFuZ2UgJiYgISR0aW1lUmFuZ2UuaXNBY3RpdmUpIHtcbiAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldCgkdGltZVJhbmdlLCAkdGltZVJhbmdlLmFjdGl2YXRlKCkpO1xuICAgIH1cbiAgICBpZiAoJHZhcmlhYmxlcyAmJiAhJHZhcmlhYmxlcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KCR2YXJpYWJsZXMsICR2YXJpYWJsZXMuYWN0aXZhdGUoKSk7XG4gICAgfVxuICAgIGlmICgkZGF0YSAmJiAhJGRhdGEuaXNBY3RpdmUpIHtcbiAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldCgkZGF0YSwgJGRhdGEuYWN0aXZhdGUoKSk7XG4gICAgfVxuICAgIGlmICgkYmVoYXZpb3JzKSB7XG4gICAgICBmb3IgKGNvbnN0IGJlaGF2aW9yIG9mICRiZWhhdmlvcnMpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVCZWhhdmlvcihiZWhhdmlvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIF9hY3RpdmF0ZUJlaGF2aW9yKGJlaGF2aW9yKSB7XG4gICAgaWYgKGJlaGF2aW9yIGluc3RhbmNlb2YgU2NlbmVPYmplY3RCYXNlKSB7XG4gICAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5zZXQoYmVoYXZpb3IsIGJlaGF2aW9yLmFjdGl2YXRlKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJlaGF2aW9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGNvbnN0IGRlYWN0aXZhdGUgPSBiZWhhdmlvcih0aGlzKTtcbiAgICAgIGlmIChkZWFjdGl2YXRlKSB7XG4gICAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChiZWhhdmlvciwgZGVhY3RpdmF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFjdGl2YXRlKCkge1xuICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5faW50ZXJuYWxBY3RpdmF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLl9yZWZDb3VudCsrO1xuICAgIGxldCBjYWxsZWQgPSBmYWxzZTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5fcmVmQ291bnQtLTtcbiAgICAgIGlmIChjYWxsZWQpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYFNjZW5lT2JqZWN0IGNhbmNlbGF0aW9uIGhhbmRsZXIgcmV0dXJuZWQgYnkgYWN0aXZhdGUoKSBjYWxsZWQgYSBzZWNvbmQgdGltZWA7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLl9yZWZDb3VudCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9pbnRlcm5hbERlYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIF9pbnRlcm5hbERlYWN0aXZhdGUoKSB7XG4gICAgdGhpcy5faXNBY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBoYW5kbGVyIG9mIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnZhbHVlcygpKSB7XG4gICAgICBoYW5kbGVyKCk7XG4gICAgfVxuICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLmNsZWFyKCk7XG4gICAgdGhpcy5fZXZlbnRzLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIHRoaXMuX3N1YnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICB9XG4gIHVzZVN0YXRlKCkge1xuICAgIHJldHVybiB1c2VTY2VuZU9iamVjdFN0YXRlKHRoaXMpO1xuICB9XG4gIGZvcmNlUmVuZGVyKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe30pO1xuICB9XG4gIGNsb25lKHdpdGhTdGF0ZSkge1xuICAgIHJldHVybiBjbG9uZVNjZW5lT2JqZWN0KHRoaXMsIHdpdGhTdGF0ZSk7XG4gIH1cbiAgYWRkQWN0aXZhdGlvbkhhbmRsZXIoaGFuZGxlcikge1xuICAgIHRoaXMuX2FjdGl2YXRpb25IYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xuICB9XG4gIGZvckVhY2hDaGlsZChjYWxsYmFjaykge1xuICAgIGZvckVhY2hDaGlsZCh0aGlzLnN0YXRlLCBjYWxsYmFjayk7XG4gIH1cbiAgZ2V0UmVmKCkge1xuICAgIGlmICghdGhpcy5fcmVmKSB7XG4gICAgICB0aGlzLl9yZWYgPSBuZXcgU2NlbmVPYmplY3RSZWYodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWY7XG4gIH1cbn1cbmZ1bmN0aW9uIHVzZVNjZW5lT2JqZWN0U3RhdGUobW9kZWwsIG9wdGlvbnMpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBbXywgc2V0U3RhdGVdID0gdXNlU3RhdGUobW9kZWwuc3RhdGUpO1xuICBjb25zdCBzdGF0ZUF0Rmlyc3RSZW5kZXIgPSBtb2RlbC5zdGF0ZTtcbiAgY29uc3Qgc2hvdWxkQWN0aXZhdGVPcktlZXBBbGl2ZSA9IChfYSA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuc2hvdWxkQWN0aXZhdGVPcktlZXBBbGl2ZSkgIT0gbnVsbCA/IF9hIDogZmFsc2U7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IHVuYWN0aXZhdGU7XG4gICAgaWYgKHNob3VsZEFjdGl2YXRlT3JLZWVwQWxpdmUpIHtcbiAgICAgIHVuYWN0aXZhdGUgPSBtb2RlbC5hY3RpdmF0ZSgpO1xuICAgIH1cbiAgICBjb25zdCBzID0gbW9kZWwuc3Vic2NyaWJlVG9TdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIHNldFN0YXRlKHN0YXRlKTtcbiAgICB9KTtcbiAgICBpZiAobW9kZWwuc3RhdGUgIT09IHN0YXRlQXRGaXJzdFJlbmRlcikge1xuICAgICAgc2V0U3RhdGUobW9kZWwuc3RhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcy51bnN1YnNjcmliZSgpO1xuICAgICAgaWYgKHVuYWN0aXZhdGUpIHtcbiAgICAgICAgdW5hY3RpdmF0ZSgpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFttb2RlbCwgc2hvdWxkQWN0aXZhdGVPcktlZXBBbGl2ZV0pO1xuICByZXR1cm4gbW9kZWwuc3RhdGU7XG59XG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGQoc3RhdGUsIGNhbGxiYWNrKSB7XG4gIGZvciAoY29uc3QgcHJvcFZhbHVlIG9mIE9iamVjdC52YWx1ZXMoc3RhdGUpKSB7XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFNjZW5lT2JqZWN0QmFzZSkge1xuICAgICAgY2FsbGJhY2socHJvcFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgU2NlbmVPYmplY3RCYXNlKSB7XG4gICAgICAgICAgY2FsbGJhY2soY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IFNjZW5lT2JqZWN0QmFzZSwgdXNlU2NlbmVPYmplY3RTdGF0ZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lVMk5sYm1WUFltcGxZM1JDWVhObExtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZZMjl5WlM5VFkyVnVaVTlpYW1WamRFSmhjMlV1ZEhONElsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJSFZ6WlVWbVptVmpkQ3dnZFhObFUzUmhkR1VnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJUZFdKelkzSnBjSFJwYjI0c0lGVnVjM1ZpYzJOeWFXSmhZbXhsSUgwZ1puSnZiU0FuY25ocWN5YzdYRzVwYlhCdmNuUWdleUIyTkNCaGN5QjFkV2xrZGpRZ2ZTQm1jbTl0SUNkMWRXbGtKenRjYmx4dWFXMXdiM0owSUhzZ1FuVnpSWFpsYm5Rc0lFSjFjMFYyWlc1MFNHRnVaR3hsY2l3Z1FuVnpSWFpsYm5SVWVYQmxMQ0JGZG1WdWRFSjFjeXdnUlhabGJuUkNkWE5UY25ZZ2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5a1lYUmhKenRjYm1sdGNHOXlkQ0I3WEc0Z0lGTmpaVzVsVDJKcVpXTjBMRnh1SUNCVFkyVnVaVU52YlhCdmJtVnVkQ3hjYmlBZ1UyTmxibVZQWW1wbFkzUlZjbXhUZVc1alNHRnVaR3hsY2l4Y2JpQWdVMk5sYm1WVGRHRjBaVU5vWVc1blpXUklZVzVrYkdWeUxGeHVJQ0JUWTJWdVpVRmpkR2wyWVhScGIyNUlZVzVrYkdWeUxGeHVJQ0JUWTJWdVpVUmxZV04wYVhaaGRHbHZia2hoYm1Sc1pYSXNYRzRnSUVOaGJtTmxiRUZqZEdsMllYUnBiMjVJWVc1a2JHVnlMRnh1SUNCVFkyVnVaVTlpYW1WamRGTjBZWFJsTEZ4dUlDQlZjMlZUZEdGMFpVaHZiMnRQY0hScGIyNXpMRnh1SUNCVFkyVnVaVk4wWVhSbGJHVnpjMEpsYUdGMmFXOXlMRnh1ZlNCbWNtOXRJQ2N1TDNSNWNHVnpKenRjYmx4dWFXMXdiM0owSUhzZ1UyTmxibVZEYjIxd2IyNWxiblJYY21Gd2NHVnlJSDBnWm5KdmJTQW5MaTlUWTJWdVpVTnZiWEJ2Ym1WdWRGZHlZWEJ3WlhJbk8xeHVhVzF3YjNKMElIc2dVMk5sYm1WUFltcGxZM1JUZEdGMFpVTm9ZVzVuWldSRmRtVnVkQ0I5SUdaeWIyMGdKeTR2WlhabGJuUnpKenRjYm1sdGNHOXlkQ0I3SUdOc2IyNWxVMk5sYm1WUFltcGxZM1FnZlNCbWNtOXRJQ2N1TDNOalpXNWxSM0poY0dndmRYUnBiSE1uTzF4dWFXMXdiM0owSUhzZ1UyTmxibVZXWVhKcFlXSnNaVVJsY0dWdVpHVnVZM2xEYjI1bWFXZE1hV3RsSUgwZ1puSnZiU0FuTGk0dmRtRnlhV0ZpYkdWekwzUjVjR1Z6Snp0Y2JtbHRjRzl5ZENCN0lGTmpaVzVsVDJKcVpXTjBVbVZtSUgwZ1puSnZiU0FuTGk5VFkyVnVaVTlpYW1WamRGSmxaaWM3WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJUWTJWdVpVOWlhbVZqZEVKaGMyVThWRk4wWVhSbElHVjRkR1Z1WkhNZ1UyTmxibVZQWW1wbFkzUlRkR0YwWlNBOUlGTmpaVzVsVDJKcVpXTjBVM1JoZEdVK1hHNGdJR2x0Y0d4bGJXVnVkSE1nVTJObGJtVlBZbXBsWTNROFZGTjBZWFJsUGx4dWUxeHVJQ0J3Y21sMllYUmxJRjlwYzBGamRHbDJaU0E5SUdaaGJITmxPMXh1SUNCd2NtbDJZWFJsSUY5emRHRjBaVG9nVkZOMFlYUmxPMXh1SUNCd2NtbDJZWFJsSUY5aFkzUnBkbUYwYVc5dVNHRnVaR3hsY25NNklGTmpaVzVsUVdOMGFYWmhkR2x2YmtoaGJtUnNaWEpiWFNBOUlGdGRPMXh1SUNCd2NtbDJZWFJsSUY5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5QTlJRzVsZHlCTllYQThiMkpxWldOMExDQlRZMlZ1WlVSbFlXTjBhWFpoZEdsdmJraGhibVJzWlhJK0tDazdYRzRnSUhCeWFYWmhkR1VnWDNKbFpqODZJRk5qWlc1bFQySnFaV04wVW1WbVBIUm9hWE0rTzF4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JmWlhabGJuUnpQem9nUlhabGJuUkNkWE03WEc0Z0lIQnliM1JsWTNSbFpDQmZjR0Z5Wlc1MFB6b2dVMk5sYm1WUFltcGxZM1E3WEc0Z0lIQnliM1JsWTNSbFpDQmZjM1ZpY3lBOUlHNWxkeUJUZFdKelkzSnBjSFJwYjI0b0tUdGNiaUFnY0hKdmRHVmpkR1ZrSUY5eVpXWkRiM1Z1ZENBOUlEQTdYRzRnSUhCeWIzUmxZM1JsWkNCZmNtVnVaR1Z5UW1WbWIzSmxRV04wYVhaaGRHbHZiaUE5SUdaaGJITmxPMXh1WEc0Z0lIQnliM1JsWTNSbFpDQmZkbUZ5YVdGaWJHVkVaWEJsYm1SbGJtTjVPaUJUWTJWdVpWWmhjbWxoWW14bFJHVndaVzVrWlc1amVVTnZibVpwWjB4cGEyVWdmQ0IxYm1SbFptbHVaV1E3WEc0Z0lIQnliM1JsWTNSbFpDQmZkWEpzVTNsdVl6b2dVMk5sYm1WUFltcGxZM1JWY214VGVXNWpTR0Z1Wkd4bGNpQjhJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9jM1JoZEdVNklGUlRkR0YwWlNrZ2UxeHVJQ0FnSUdsbUlDZ2hjM1JoZEdVdWEyVjVLU0I3WEc0Z0lDQWdJQ0J6ZEdGMFpTNXJaWGtnUFNCMWRXbGtkalFvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxsOWxkbVZ1ZEhNZ1BTQnVaWGNnUlhabGJuUkNkWE5UY25Zb0tUdGNibHh1SUNBZ0lIUm9hWE11WDNOMFlYUmxJRDBnVDJKcVpXTjBMbVp5WldWNlpTaHpkR0YwWlNrN1hHNGdJQ0FnZEdocGN5NWZjMlYwVUdGeVpXNTBLSFJvYVhNdVgzTjBZWFJsS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJEZFhKeVpXNTBJSE4wWVhSbElDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ2MzUmhkR1VvS1RvZ1ZGTjBZWFJsSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmMzUmhkR1U3WEc0Z0lIMWNibHh1SUNBdktpb2dWSEoxWlNCcFppQmpkWEp5Wlc1MGJIa2dZbVZwYm1jZ1lXTjBhWFpsSUNocFpTQmthWE53YkdGNVpXUWdabTl5SUhacGMzVmhiQ0J2WW1wbFkzUnpLU0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBJR2x6UVdOMGFYWmxLQ2s2SUdKdmIyeGxZVzRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5cGMwRmpkR2wyWlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdjbVZ1WkdWeVFtVm1iM0psUVdOMGFYWmhkR2x2YmlncE9pQmliMjlzWldGdUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZjbVZ1WkdWeVFtVm1iM0psUVdOMGFYWmhkR2x2Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJTWlhSMWNtNXpJSFJvWlNCd1lYSmxiblFzSUhWdVpHVm1hVzVsWkNCbWIzSWdjbTl2ZENCdlltcGxZM1FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkQ0J3WVhKbGJuUW9LVG9nVTJObGJtVlBZbXBsWTNRZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl3WVhKbGJuUTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1VtVjBkWEp1Y3lCMllYSnBZV0pzWlNCa1pYQmxibVJsYm1ONUlHTnZibVpwWnlBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwSUhaaGNtbGhZbXhsUkdWd1pXNWtaVzVqZVNncE9pQlRZMlZ1WlZaaGNtbGhZbXhsUkdWd1pXNWtaVzVqZVVOdmJtWnBaMHhwYTJVZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDkyWVhKcFlXSnNaVVJsY0dWdVpHVnVZM2s3WEc0Z0lIMWNibHh1SUNBdktpb2dVbVYwZFhKdWN5QjFjbXdnYzNsdVl5QmpiMjVtYVdjZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZENCMWNteFRlVzVqS0NrNklGTmpaVzVsVDJKcVpXTjBWWEpzVTNsdVkwaGhibVJzWlhJZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDkxY214VGVXNWpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWelpXUWdhVzRnY21WdVpHVnlJR1oxYm1OMGFXOXVjeUIzYUdWdUlISmxibVJsY21sdVp5QmhJRk5qWlc1bFQySnFaV04wTGx4dUlDQWdLaUJYY21Gd2N5QjBhR1VnWTI5dGNHOXVaVzUwSUdsdUlHRnVJRVZrYVhSWGNtRndjR1Z5SUhSb1lYUWdhR0Z1Wkd4bGN5QmxaR2wwSUcxdlpHVmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnUTI5dGNHOXVaVzUwS0NrNklGTmpaVzVsUTI5dGNHOXVaVzUwUEhSb2FYTStJSHRjYmlBZ0lDQnlaWFIxY200Z1UyTmxibVZEYjIxd2IyNWxiblJYY21Gd2NHVnlJR0Z6SUZOalpXNWxRMjl0Y0c5dVpXNTBQSFJvYVhNK08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmZjMlYwVUdGeVpXNTBLSE4wWVhSbE9pQlFZWEowYVdGc1BGUlRkR0YwWlQ0cElIdGNiaUFnSUNCbWIzSkZZV05vUTJocGJHUW9jM1JoZEdVc0lDaGphR2xzWkNrZ1BUNGdlMXh1SUNBZ0lDQWdMeThnU1dZZ2QyVWdZV3h5WldGa2VTQm9ZWFpsSUdFZ2NHRnlaVzUwSUdGdVpDQnBkQ2R6SUc1dmRDQjBhR2x6TENCMGFHVnVJSGRsSUd4cGEyVnNlU0JvWVhabElHRWdZblZuWEc0Z0lDQWdJQ0JwWmlBb1kyaHBiR1F1WDNCaGNtVnVkQ0FtSmlCamFHbHNaQzVmY0dGeVpXNTBJQ0U5UFNCMGFHbHpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGNiaUFnSUNBZ0lDQWdJQ0FuVTJObGJtVlBZbXBsWTNRZ1lXeHlaV0ZrZVNCb1lYTWdZU0J3WVhKbGJuUWdjMlYwSUhSb1lYUWdhWE1nWkdsbVptVnlaVzUwSUdaeWIyMGdkR2hsSUc1bGR5QndZWEpsYm5RdUlGbHZkU0JqWVc1dWIzUWdjMmhoY21VZ2RHaGxJSE5oYldVZ1UyTmxibVZQWW1wbFkzUWdhVzV6ZEdGdVkyVWdhVzRnYlhWc2RHbHdiR1VnYzJObGJtVnpJRzl5SUdsdUlHMTFiSFJwY0d4bElHUnBabVpsY21WdWRDQndiR0ZqWlhNZ2IyWWdkR2hsSUhOaGJXVWdjMk5sYm1VZ1ozSmhjR2d1SUZWelpTQlRZMlZ1WlU5aWFtVmpkQzVqYkc5dVpTZ3BJSFJ2SUdSMWNHeHBZMkYwWlNCaElGTmpaVzVsVDJKcVpXTjBJRzl5SUhOMGIzSmxJR0VnYzNSaGRHVWdhMlY1SUhKbFptVnlaVzVqWlNCaGJtUWdkWE5sSUhOalpXNWxSM0poY0dndVptbHVaRTlpYW1WamRDQjBieUJzYjJOaGRHVWdhWFF1Snl4Y2JpQWdJQ0FnSUNBZ0lDQmphR2xzWkN4Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCamFHbHNaQzVmY0dGeVpXNTBJRDBnZEdocGN6dGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJUYjIxbGRHbHRaWE1nZVc5MUlIZGhiblFnZEc4Z2JXOTJaU0J2Ym1VZ2FXNXpkR0Z1WTJVZ2RHOGdZVzV2ZEdobGNpQndZWEpsYm5RdVhHNGdJQ0FxSUZSb2FYTWdhWE1nWVNCM1lYa2dkRzhnWkc4Z2RHaGhkQ0IzYVhSb2IzVjBJR2RsZEhScGJtY2dkR2hsSUdOdmJuTnZiR1VnZDJGeWJtbHVaeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJqYkdWaGNsQmhjbVZ1ZENncElIdGNiaUFnSUNCMGFHbHpMbDl3WVhKbGJuUWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1UzVmljMk55YVdKbElIUnZJSFJvWlNCelkyVnVaU0J6ZEdGMFpTQnpkV0pxWldOMFhHNGdJQ0FxS2k5Y2JpQWdjSFZpYkdsaklITjFZbk5qY21saVpWUnZVM1JoZEdVb2FHRnVaR3hsY2pvZ1UyTmxibVZUZEdGMFpVTm9ZVzVuWldSSVlXNWtiR1Z5UEZSVGRHRjBaVDRwT2lCVmJuTjFZbk5qY21saVlXSnNaU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJWMlpXNTBjeUV1YzNWaWMyTnlhV0psS0ZOalpXNWxUMkpxWldOMFUzUmhkR1ZEYUdGdVoyVmtSWFpsYm5Rc0lDaGxkbVZ1ZENrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0dWMlpXNTBMbkJoZVd4dllXUXVZMmhoYm1kbFpFOWlhbVZqZENBOVBUMGdkR2hwY3lrZ2UxeHVJQ0FnSUNBZ0lDQm9ZVzVrYkdWeUtHVjJaVzUwTG5CaGVXeHZZV1F1Ym1WM1UzUmhkR1VnWVhNZ1ZGTjBZWFJsTENCbGRtVnVkQzV3WVhsc2IyRmtMbkJ5WlhaVGRHRjBaU0JoY3lCVVUzUmhkR1VwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTjFZbk5qY21saVpTQjBieUIwYUdVZ2MyTmxibVVnWlhabGJuUmNiaUFnSUNvcUwxeHVJQ0J3ZFdKc2FXTWdjM1ZpYzJOeWFXSmxWRzlGZG1WdWREeFVJR1Y0ZEdWdVpITWdRblZ6UlhabGJuUStLR1YyWlc1MFZIbHdaVG9nUW5WelJYWmxiblJVZVhCbFBGUStMQ0JvWVc1a2JHVnlPaUJDZFhORmRtVnVkRWhoYm1Sc1pYSThWRDRwT2lCVmJuTjFZbk5qY21saVlXSnNaU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJWMlpXNTBjeUV1YzNWaWMyTnlhV0psS0dWMlpXNTBWSGx3WlN3Z2FHRnVaR3hsY2lrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2MyVjBVM1JoZEdVb2RYQmtZWFJsT2lCUVlYSjBhV0ZzUEZSVGRHRjBaVDRwSUh0Y2JpQWdJQ0JqYjI1emRDQndjbVYyVTNSaGRHVWdQU0IwYUdsekxsOXpkR0YwWlR0Y2JpQWdJQ0JqYjI1emRDQnVaWGRUZEdGMFpUb2dWRk4wWVhSbElEMGdlMXh1SUNBZ0lDQWdMaTR1ZEdocGN5NWZjM1JoZEdVc1hHNGdJQ0FnSUNBdUxpNTFjR1JoZEdVc1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUhSb2FYTXVYM04wWVhSbElEMGdUMkpxWldOMExtWnlaV1Y2WlNodVpYZFRkR0YwWlNrN1hHNGdJQ0FnZEdocGN5NWZjMlYwVUdGeVpXNTBLSFZ3WkdGMFpTazdYRzVjYmlBZ0lDQXZMeUJJWVc1a2JHVnpJR05oYzJWeklIZG9aVzRnSkdSaGRHRXNJQ1IwYVcxbFVtRnVaMlVzSUc5eUlDUjJZWEpwWVdKc1pYTWdZWEpsSUdOb1lXNW5aV1JjYmlBZ0lDQjBhR2x6TGw5b1lXNWtiR1ZCWTNScGRtRjBhVzl1VDJaRGFHRnVaMlZrVTNSaGRHVlFjbTl3Y3lod2NtVjJVM1JoZEdVc0lHNWxkMU4wWVhSbEtUdGNibHh1SUNBZ0lDOHZJRUoxWW1Kc1pTQnpkR0YwWlNCamFHRnVaMlVnWlhabGJuUXVJRlJvYVhNZ2FYTWdaWFpsYm5RZ2FYTWdjM1ZpYzJOeWFXSmxaQ0IwYnlCaWVTQlZjbXhUZVc1alRXRnVZV2RsY2lCaGJtUWdWVzVrYjAxaGJtRm5aWEpjYmlBZ0lDQjBhR2x6TG5CMVlteHBjMmhGZG1WdWRDaGNiaUFnSUNBZ0lHNWxkeUJUWTJWdVpVOWlhbVZqZEZOMFlYUmxRMmhoYm1kbFpFVjJaVzUwS0h0Y2JpQWdJQ0FnSUNBZ2NISmxkbE4wWVhSbExGeHVJQ0FnSUNBZ0lDQnVaWGRUZEdGMFpTeGNiaUFnSUNBZ0lDQWdjR0Z5ZEdsaGJGVndaR0YwWlRvZ2RYQmtZWFJsTEZ4dUlDQWdJQ0FnSUNCamFHRnVaMlZrVDJKcVpXTjBPaUIwYUdsekxGeHVJQ0FnSUNBZ2ZTa3NYRzRnSUNBZ0lDQjBjblZsWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHbHpJR2hoYm1Sc1pYTWdZV04wYVhaaGRHbHZiaUJoYm1RZ1pHVmhZM1JwZG1GMGFXOXVJRzltSUNSa1lYUmhMQ0FrZEdsdFpWSmhibWRsSUdGdVpDQWtkbUZ5YVdGaWJHVnpJSGRvWlc0Z2RHaGxlU0JqYUdGdVoyVmNiaUFnSUNvZ1pIVnlhVzVuSUhSb1pTQmhZM1JwZG1VZ2NHaGhjMlVnYjJZZ2RHaGxJSE5qWlc1bElHOWlhbVZqZEM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gyaGhibVJzWlVGamRHbDJZWFJwYjI1UFprTm9ZVzVuWldSVGRHRjBaVkJ5YjNCektIQnlaWFpUZEdGMFpUb2dWRk4wWVhSbExDQnVaWGRUZEdGMFpUb2dWRk4wWVhSbEtTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtbHpRV04wYVhabEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIQnlaWFpUZEdGMFpTNGtZbVZvWVhacGIzSnpJQ0U5UFNCdVpYZFRkR0YwWlM0a1ltVm9ZWFpwYjNKektTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5b1lXNWtiR1ZEYUdGdVoyVmtRbVZvWVhacGIzSnpLSEJ5WlhaVGRHRjBaUzRrWW1Wb1lYWnBiM0p6TENCdVpYZFRkR0YwWlM0a1ltVm9ZWFpwYjNKektUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jSEpsZGxOMFlYUmxMaVJrWVhSaElDRTlQU0J1WlhkVGRHRjBaUzRrWkdGMFlTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmFHRnVaR3hsUTJoaGJtZGxaRk4wWVhSbFFXTjBhWFpoZEdsdmJpaHdjbVYyVTNSaGRHVXVKR1JoZEdFc0lHNWxkMU4wWVhSbExpUmtZWFJoS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2NISmxkbE4wWVhSbExpUjJZWEpwWVdKc1pYTWdJVDA5SUc1bGQxTjBZWFJsTGlSMllYSnBZV0pzWlhNcElIdGNiaUFnSUNBZ0lIUm9hWE11WDJoaGJtUnNaVU5vWVc1blpXUlRkR0YwWlVGamRHbDJZWFJwYjI0b2NISmxkbE4wWVhSbExpUjJZWEpwWVdKc1pYTXNJRzVsZDFOMFlYUmxMaVIyWVhKcFlXSnNaWE1wTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNod2NtVjJVM1JoZEdVdUpIUnBiV1ZTWVc1blpTQWhQVDBnYm1WM1UzUmhkR1V1SkhScGJXVlNZVzVuWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmYUdGdVpHeGxRMmhoYm1kbFpGTjBZWFJsUVdOMGFYWmhkR2x2Ymlod2NtVjJVM1JoZEdVdUpIUnBiV1ZTWVc1blpTd2dibVYzVTNSaGRHVXVKSFJwYldWU1lXNW5aU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmYUdGdVpHeGxRMmhoYm1kbFpGTjBZWFJsUVdOMGFYWmhkR2x2YmlodmJHUldZV3gxWlRvZ1UyTmxibVZQWW1wbFkzUWdmQ0IxYm1SbFptbHVaV1FzSUc1bGQxWmhiSFZsT2lCVFkyVnVaVTlpYW1WamRDQjhJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlDQWdJR2xtSUNodmJHUldZV3gxWlNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWkdWaFkzUnBkbUYwYVc5dVNHRnVaR3hsY2lBOUlIUm9hWE11WDJSbFlXTjBhWFpoZEdsdmJraGhibVJzWlhKekxtZGxkQ2h2YkdSV1lXeDFaU2s3WEc0Z0lDQWdJQ0JwWmlBb1pHVmhZM1JwZG1GMGFXOXVTR0Z1Wkd4bGNpa2dlMXh1SUNBZ0lDQWdJQ0JrWldGamRHbDJZWFJwYjI1SVlXNWtiR1Z5S0NrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJSbFlXTjBhWFpoZEdsdmJraGhibVJzWlhKekxtUmxiR1YwWlNodmJHUldZV3gxWlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHNWxkMVpoYkhWbEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5NXpaWFFvYm1WM1ZtRnNkV1VzSUc1bGQxWmhiSFZsTG1GamRHbDJZWFJsS0NrcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gyaGhibVJzWlVOb1lXNW5aV1JDWldoaGRtbHZjbk1vWEc0Z0lDQWdiMnhrVm1Gc2RXVTZJRUZ5Y21GNVBGTmpaVzVsVDJKcVpXTjBJSHdnVTJObGJtVlRkR0YwWld4bGMzTkNaV2hoZG1sdmNqNGdmQ0IxYm1SbFptbHVaV1FzWEc0Z0lDQWdibVYzVm1Gc2RXVTZJRUZ5Y21GNVBGTmpaVzVsVDJKcVpXTjBJSHdnVTJObGJtVlRkR0YwWld4bGMzTkNaV2hoZG1sdmNqNGdmQ0IxYm1SbFptbHVaV1JjYmlBZ0tTQjdYRzRnSUNBZ0x5OGdTR0Z1Wkd4bElISmxiVzkyWldRZ1ltVm9ZWFpwYjNKelhHNGdJQ0FnYVdZZ0tHOXNaRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJRzlzWkVKbGFHRjJhVzl5SUc5bUlHOXNaRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaGJtVjNWbUZzZFdVZ2ZId2dJVzVsZDFaaGJIVmxMbWx1WTJ4MVpHVnpLRzlzWkVKbGFHRjJhVzl5S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHUmxZV04wYVhaaGRHbHZia2hoYm1Sc1pYSWdQU0IwYUdsekxsOWtaV0ZqZEdsMllYUnBiMjVJWVc1a2JHVnljeTVuWlhRb2IyeGtRbVZvWVhacGIzSXBPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGtaV0ZqZEdsMllYUnBiMjVJWVc1a2JHVnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaV0ZqZEdsMllYUnBiMjVJWVc1a2JHVnlLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TGw5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5NWtaV3hsZEdVb2IyeGtRbVZvWVhacGIzSXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFaGhibVJzWlNCdVpYY2dZbVZvWVhacGIzSnpYRzRnSUNBZ2FXWWdLRzVsZDFaaGJIVmxLU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUc1bGQwSmxhR0YyYVc5eUlHOW1JRzVsZDFaaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hiMnhrVm1Gc2RXVWdmSHdnSVc5c1pGWmhiSFZsTG1sdVkyeDFaR1Z6S0c1bGQwSmxhR0YyYVc5eUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVYMkZqZEdsMllYUmxRbVZvWVhacGIzSW9ibVYzUW1Wb1lYWnBiM0lwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5cGNiaUFnSUNvZ1VIVmliR2x6YUNCaGJpQmxkbVZ1ZENCaGJtUWdiM0IwYVc5dVlXeHNlU0JpZFdKaWJHVWdhWFFnZFhBZ2RHaGxJSE5qWlc1bFhHNGdJQ0FxS2k5Y2JpQWdjSFZpYkdsaklIQjFZbXhwYzJoRmRtVnVkQ2hsZG1WdWREb2dRblZ6UlhabGJuUXNJR0oxWW1Kc1pUODZJR0p2YjJ4bFlXNHBJSHRjYmlBZ0lDQjBhR2x6TGw5bGRtVnVkSE1oTG5CMVlteHBjMmdvWlhabGJuUXBPMXh1WEc0Z0lDQWdhV1lnS0dKMVltSnNaU0FtSmlCMGFHbHpMbkJoY21WdWRDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1d1lYSmxiblF1Y0hWaWJHbHphRVYyWlc1MEtHVjJaVzUwTENCaWRXSmliR1VwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSU2IyOTBLQ2s2SUZOalpXNWxUMkpxWldOMElIdGNiaUFnSUNCeVpYUjFjbTRnSVhSb2FYTXVYM0JoY21WdWRDQS9JSFJvYVhNZ09pQjBhR2x6TGw5d1lYSmxiblF1WjJWMFVtOXZkQ2dwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZmFXNTBaWEp1WVd4QlkzUnBkbUYwWlNncElIdGNiaUFnSUNCMGFHbHpMbDlwYzBGamRHbDJaU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQmpiMjV6ZENCN0lDUmtZWFJoTENBa2RtRnlhV0ZpYkdWekxDQWtkR2x0WlZKaGJtZGxMQ0FrWW1Wb1lYWnBiM0p6SUgwZ1BTQjBhR2x6TG5OMFlYUmxPMXh1WEc0Z0lDQWdkR2hwY3k1ZllXTjBhWFpoZEdsdmJraGhibVJzWlhKekxtWnZja1ZoWTJnb0tHaGhibVJzWlhJcElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElISmxjM1ZzZENBOUlHaGhibVJzWlhJb0tUdGNiaUFnSUNBZ0lHbG1JQ2h5WlhOMWJIUXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZaR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjbk11YzJWMEtISmxjM1ZzZEN3Z2NtVnpkV3gwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUdsbUlDZ2tkR2x0WlZKaGJtZGxJQ1ltSUNFa2RHbHRaVkpoYm1kbExtbHpRV04wYVhabEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5NXpaWFFvSkhScGJXVlNZVzVuWlN3Z0pIUnBiV1ZTWVc1blpTNWhZM1JwZG1GMFpTZ3BLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvSkhaaGNtbGhZbXhsY3lBbUppQWhKSFpoY21saFlteGxjeTVwYzBGamRHbDJaU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZaR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjbk11YzJWMEtDUjJZWEpwWVdKc1pYTXNJQ1IyWVhKcFlXSnNaWE11WVdOMGFYWmhkR1VvS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDUmtZWFJoSUNZbUlDRWtaR0YwWVM1cGMwRmpkR2wyWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWkdWaFkzUnBkbUYwYVc5dVNHRnVaR3hsY25NdWMyVjBLQ1JrWVhSaExDQWtaR0YwWVM1aFkzUnBkbUYwWlNncEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9KR0psYUdGMmFXOXljeWtnZTF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCaVpXaGhkbWx2Y2lCdlppQWtZbVZvWVhacGIzSnpLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYMkZqZEdsMllYUmxRbVZvWVhacGIzSW9ZbVZvWVhacGIzSXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMkZqZEdsMllYUmxRbVZvWVhacGIzSW9ZbVZvWVhacGIzSTZJRk5qWlc1bFQySnFaV04wSUh3Z1UyTmxibVZUZEdGMFpXeGxjM05DWldoaGRtbHZjaWs2SUZOalpXNWxSR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjaUI4SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2hpWldoaGRtbHZjaUJwYm5OMFlXNWpaVzltSUZOalpXNWxUMkpxWldOMFFtRnpaU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZaR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjbk11YzJWMEtHSmxhR0YyYVc5eUxDQmlaV2hoZG1sdmNpNWhZM1JwZG1GMFpTZ3BLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmlaV2hoZG1sdmNpQTlQVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWkdWaFkzUnBkbUYwWlNBOUlHSmxhR0YyYVc5eUtIUm9hWE1wTzF4dUlDQWdJQ0FnYVdZZ0tHUmxZV04wYVhaaGRHVXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZaR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjbk11YzJWMEtHSmxhR0YyYVc5eUxDQmtaV0ZqZEdsMllYUmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdocGN5QnBjeUJ3Y21sdFlYSnBiSGtnWTJGc2JHVmtJR1p5YjIwZ1UyTmxibVZEYjIxd2IyNWxiblJYY21Gd2NHVnlJSGRvWlc0Z2RHaGxJRk5qWlc1bFQySnFaV04wSjNNZ1EyOXRjRzl1Wlc1MElHbHpJRzF2ZFc1MFpXUXVYRzRnSUNBcUlFSjFkQ0JwYmlCemIyMWxJSE5qWlc1aGNtbHZjeUIwYUdseklHTmhiaUJoYkhOdklHSmxJR05oYkd4bFpDQmthWEpsWTNSc2VTQm1jbTl0SUdGdWIzUm9aWElnYzJObGJtVWdiMkpxWldOMExpQlhhR1Z1SUdOaGJHeGxaQ0J0WVc1MVlXeHNlU0JtY205dElHRnViM1JvWlhJZ2MyTmxibVVnYjJKcVpXTjBYRzRnSUNBcUlHMWhhMlVnYzNWeVpTQjBieUJqWVd4c0lIUm9aU0J5WlhSMWNtNWxaQ0JtZFc1amRHbHZiaUIzYUdWdUlIUm9aU0J6YjNWeVkyVWdjMk5sYm1VZ2IySnFaV04wSUdseklHUmxZV04wYVhaaGRHVmtMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0ZqZEdsMllYUmxLQ2s2SUVOaGJtTmxiRUZqZEdsMllYUnBiMjVJWVc1a2JHVnlJSHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXVhWE5CWTNScGRtVXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgybHVkR1Z5Ym1Gc1FXTjBhWFpoZEdVb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbDl5WldaRGIzVnVkQ3NyTzF4dVhHNGdJQ0FnYkdWMElHTmhiR3hsWkNBOUlHWmhiSE5sTzF4dVhHNGdJQ0FnY21WMGRYSnVJQ2dwSUQwK0lIdGNiaUFnSUNBZ0lIUm9hWE11WDNKbFprTnZkVzUwTFMwN1hHNWNiaUFnSUNBZ0lHbG1JQ2hqWVd4c1pXUXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiWE5uSUQwZ1lGTmpaVzVsVDJKcVpXTjBJR05oYm1ObGJHRjBhVzl1SUdoaGJtUnNaWElnY21WMGRYSnVaV1FnWW5rZ1lXTjBhWFpoZEdVb0tTQmpZV3hzWldRZ1lTQnpaV052Ym1RZ2RHbHRaV0E3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWh0YzJjcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmpZV3hzWldRZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1ZmNtVm1RMjkxYm5RZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmYVc1MFpYSnVZV3hFWldGamRHbDJZWFJsS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRZV3hzWldRZ1lua2dkR2hsSUZOalpXNWxRMjl0Y0c5dVpXNTBWM0poY0hCbGNpQjNhR1Z1SUhSb1pTQnlaV0ZqZENCamIyMXdiMjVsYm5RZ2FYTWdkVzV0YjNWdWRHVmtMbHh1SUNBZ0tpQkViMjRuZENCdmRtVnljbWxrWlNCMGFHbHpMQ0JwYm5OMFpXRmtJSFZ6WlNCaFpHUkJZM1JwZG1GMGFXOXVTR0Z1Wkd4bGNpNGdWR2hsSUdGamRHbDJZWFJwYjI0Z2FHRnVaR3hsY2lCallXNGdjbVYwZFhKdUlHRWdaR1ZoWTNScGRtRjBhVzl1SUdoaGJtUnNaWEl1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5cGJuUmxjbTVoYkVSbFlXTjBhWFpoZEdVb0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZhWE5CWTNScGRtVWdQU0JtWVd4elpUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHaGhibVJzWlhJZ2IyWWdkR2hwY3k1ZlpHVmhZM1JwZG1GMGFXOXVTR0Z1Wkd4bGNuTXVkbUZzZFdWektDa3BJSHRjYmlBZ0lDQWdJR2hoYm1Sc1pYSW9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TGw5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5NWpiR1ZoY2lncE8xeHVYRzRnSUNBZ0x5OGdRMnhsWVhJZ2MzVmljMk55YVhCMGFXOXVjeUJoYm1RZ2JHbHpkR1Z1WlhKelhHNGdJQ0FnZEdocGN5NWZaWFpsYm5SeklTNXlaVzF2ZG1WQmJHeE1hWE4wWlc1bGNuTW9LVHRjYmlBZ0lDQjBhR2x6TGw5emRXSnpMblZ1YzNWaWMyTnlhV0psS0NrN1hHNGdJQ0FnZEdocGN5NWZjM1ZpY3lBOUlHNWxkeUJUZFdKelkzSnBjSFJwYjI0b0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWZEdsc2FYUjVJR2h2YjJzZ2RHOGdaMlYwSUdGdVpDQnpkV0p6WTNKcFltVWdkRzhnYzNSaGRHVmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QjFjMlZUZEdGMFpTZ3BPaUJVVTNSaGRHVWdlMXh1SUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQnlaV0ZqZEMxb2IyOXJjeTl5ZFd4bGN5MXZaaTFvYjI5cmMxeHVJQ0FnSUhKbGRIVnliaUIxYzJWVFkyVnVaVTlpYW1WamRGTjBZWFJsS0hSb2FYTXBPMXh1SUNCOVhHNWNiaUFnTHlvcUlFWnZjbU5sSUdFZ2NtVXRjbVZ1WkdWeUxDQnphRzkxYkdRZ2IyNXNlU0JpWlNCdVpXVmtaV1FnZDJobGJpQjJZWEpwWVdKc1pTQjJZV3gxWlhNZ1kyaGhibWRsSUNvdlhHNGdJSEIxWW14cFl5Qm1iM0pqWlZKbGJtUmxjaWdwT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0h0OUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJYYVd4c0lHTnlaV0YwWlNCdVpYY2dVMk5sYm1WUFltcGxZM1FnZDJsMGFDQnphR0ZzYkc5M0xXTnNiMjVsWkNCemRHRjBaU3dnWW5WMElHRnNiQ0J6ZEdGMFpTQnBkR1Z0Y3lCdlppQjBlWEJsSUZOalpXNWxUMkpxWldOMElHRnlaU0JrWldWd0lHTnNiMjVsWkZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOc2IyNWxLSGRwZEdoVGRHRjBaVDg2SUZCaGNuUnBZV3c4VkZOMFlYUmxQaWs2SUhSb2FYTWdlMXh1SUNBZ0lISmxkSFZ5YmlCamJHOXVaVk5qWlc1bFQySnFaV04wS0hSb2FYTXNJSGRwZEdoVGRHRjBaU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FXeHNiM2R6SUdWNGRHVnlibUZzSUdOdlpHVWdkRzhnY21WbmFYTjBaWElnWTI5a1pTQjBhR0YwSUdseklHVjRaV04xZEdWa0lHOXVJR0ZqZEdsMllYUmxJR0Z1WkNCa1pXRmpkR2wyWVhSbExpQlVhR2x6SUdGc2JHOTNJSGx2ZFZ4dUlDQWdLaUIwYnlCM2FYSmxJSFZ3SUhOalpXNWxJRzlpYW1WamRITWdkR2hoZENCdVpXVmtJSFJ2SUhKbGMzQnZibVFnZEc4Z2MzUmhkR1VnWTJoaGJtZGxjeUJwYmlCdmRHaGxjaUJ2WW1wbFkzUnpJR1p5YjIwZ2RHaGxJRzkxZEhOcFpHVXVYRzRnSUNBcUtpOWNiaUFnY0hWaWJHbGpJR0ZrWkVGamRHbDJZWFJwYjI1SVlXNWtiR1Z5S0doaGJtUnNaWEk2SUZOalpXNWxRV04wYVhaaGRHbHZia2hoYm1Sc1pYSXBJSHRjYmlBZ0lDQjBhR2x6TGw5aFkzUnBkbUYwYVc5dVNHRnVaR3hsY25NdWNIVnphQ2hvWVc1a2JHVnlLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCTWIyOXdJSFJvY205MVoyZ2djM1JoZEdVZ1lXNWtJR05oYkd3Z1kyRnNiR0poWTJzZ1ptOXlJR1ZoWTJnZ1pHbHlaV04wSUdOb2FXeGtJSE5qWlc1bElHOWlhbVZqZEM1Y2JpQWdJQ29nUTJobFkydHpJREVnYkdWMlpXd2daR1ZsY0NCd2NtOXdaWEowYVdWeklHRnVaQ0JoY25KaGVYTXVJRk52SUdFZ2MyTmxibVVnYjJKcVpXTjBJR2hwWkdSbGJpQnBiaUJoSUc1bGMzUmxaQ0J3YkdGcGJpQnZZbXBsWTNRZ2QybHNiQ0J1YjNRZ1ltVWdaR1YwWldOMFpXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdabTl5UldGamFFTm9hV3hrS0dOaGJHeGlZV05yT2lBb1kyaHBiR1E2SUZOalpXNWxUMkpxWldOMFFtRnpaU2tnUFQ0Z2RtOXBaQ2tnZTF4dUlDQWdJR1p2Y2tWaFkyaERhR2xzWkNoMGFHbHpMbk4wWVhSbExDQmpZV3hzWW1GamF5azdYRzRnSUgxY2JseHVJQ0F2S2lvZ1VtVjBkWEp1Y3lCaElGTmpaVzVsVDJKcVpXTjBVbVZtSUhSb1lYUWdkMmxzYkNCeVpYTnZiSFpsSUhSdklIUm9hWE1nYjJKcVpXTjBJQ292WEc0Z0lIQjFZbXhwWXlCblpYUlNaV1lvS1RvZ1UyTmxibVZQWW1wbFkzUlNaV1k4ZEdocGN6NGdlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NWZjbVZtS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDl5WldZZ1BTQnVaWGNnVTJObGJtVlBZbXBsWTNSU1pXWW9kR2hwY3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzSmxaanRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUZSb2FYTWdhRzl2YXlCcGN5QmhiSGRoZVhNZ2NtVjBkWEp1YVc1bklHMXZaR1ZzTG5OMFlYUmxJR2x1YzNSbFlXUWdiMllnWVNCMWMyVlRkR0YwWlNCMGFHRjBJSEpsYldWdFltVnljeUIwYUdVZ2JHRnpkQ0J6ZEdGMFpTQmxiV2wwZEdWa0lHOXVJSFJvWlNCemRXSnFaV04wWEc0Z0tpQlVhR1VnY21WaGMyOXVJR1p2Y2lCMGFHbHpJR2x6SUhOdklIUm9ZWFFnYVdZZ2RHaGxJRzF2WkdWc0lHbHVjM1JoYm1ObElHTm9ZVzVuWlNCMGFHbHpJR1oxYm1OMGFXOXVJSGRwYkd3Z1lXeDNZWGx6SUhKbGRIVnliaUIwYUdVZ2JHRjBaWE4wSUhOMFlYUmxMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RYTmxVMk5sYm1WUFltcGxZM1JUZEdGMFpUeFVVM1JoZEdVZ1pYaDBaVzVrY3lCVFkyVnVaVTlpYW1WamRGTjBZWFJsUGloY2JpQWdiVzlrWld3NklGTmpaVzVsVDJKcVpXTjBQRlJUZEdGMFpUNHNYRzRnSUc5d2RHbHZibk0vT2lCVmMyVlRkR0YwWlVodmIydFBjSFJwYjI1elhHNHBPaUJVVTNSaGRHVWdlMXh1SUNCamIyNXpkQ0JiWHl3Z2MyVjBVM1JoZEdWZElEMGdkWE5sVTNSaGRHVThWRk4wWVhSbFBpaHRiMlJsYkM1emRHRjBaU2s3WEc0Z0lHTnZibk4wSUhOMFlYUmxRWFJHYVhKemRGSmxibVJsY2lBOUlHMXZaR1ZzTG5OMFlYUmxPMXh1SUNCamIyNXpkQ0J6YUc5MWJHUkJZM1JwZG1GMFpVOXlTMlZsY0VGc2FYWmxJRDBnYjNCMGFXOXVjejh1YzJodmRXeGtRV04wYVhaaGRHVlBja3RsWlhCQmJHbDJaU0EvUHlCbVlXeHpaVHRjYmx4dUlDQjFjMlZGWm1abFkzUW9LQ2tnUFQ0Z2UxeHVJQ0FnSUd4bGRDQjFibUZqZEdsMllYUmxPaUJEWVc1alpXeEJZM1JwZG1GMGFXOXVTR0Z1Wkd4bGNpQjhJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJR2xtSUNoemFHOTFiR1JCWTNScGRtRjBaVTl5UzJWbGNFRnNhWFpsS1NCN1hHNGdJQ0FnSUNCMWJtRmpkR2wyWVhSbElEMGdiVzlrWld3dVlXTjBhWFpoZEdVb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J6SUQwZ2JXOWtaV3d1YzNWaWMyTnlhV0psVkc5VGRHRjBaU2dvYzNSaGRHVXBJRDArSUh0Y2JpQWdJQ0FnSUhObGRGTjBZWFJsS0hOMFlYUmxLVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJQzh2SUZKbExYSmxibVJsY2lCamIyMXdiMjVsYm5RZ2FXWWdkR2hsSUhOMFlYUmxJR05vWVc1blpXUWdZbVYwZDJWbGJpQm1hWEp6ZENCeVpXNWtaWElnWVc1a0lIVnpaVVZtWm1WamRDQW9iVzkxYm5RcFhHNGdJQ0FnYVdZZ0tHMXZaR1ZzTG5OMFlYUmxJQ0U5UFNCemRHRjBaVUYwUm1seWMzUlNaVzVrWlhJcElIdGNiaUFnSUNBZ0lITmxkRk4wWVhSbEtHMXZaR1ZzTG5OMFlYUmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z0tDa2dQVDRnZTF4dUlDQWdJQ0FnY3k1MWJuTjFZbk5qY21saVpTZ3BPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RXNWhZM1JwZG1GMFpTa2dlMXh1SUNBZ0lDQWdJQ0IxYm1GamRHbDJZWFJsS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlR0Y2JpQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnY21WaFkzUXRhRzl2YTNNdlpYaG9ZWFZ6ZEdsMlpTMWtaWEJ6WEc0Z0lIMHNJRnR0YjJSbGJDd2djMmh2ZFd4a1FXTjBhWFpoZEdWUGNrdGxaWEJCYkdsMlpWMHBPMXh1WEc0Z0lISmxkSFZ5YmlCdGIyUmxiQzV6ZEdGMFpUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1ptOXlSV0ZqYUVOb2FXeGtQRlFnWlhoMFpXNWtjeUJ2WW1wbFkzUStLSE4wWVhSbE9pQlVMQ0JqWVd4c1ltRmphem9nS0dOb2FXeGtPaUJUWTJWdVpVOWlhbVZqZEVKaGMyVXBJRDArSUhadmFXUXBJSHRjYmlBZ1ptOXlJQ2hqYjI1emRDQndjbTl3Vm1Gc2RXVWdiMllnVDJKcVpXTjBMblpoYkhWbGN5aHpkR0YwWlNrcElIdGNiaUFnSUNCcFppQW9jSEp2Y0ZaaGJIVmxJR2x1YzNSaGJtTmxiMllnVTJObGJtVlBZbXBsWTNSQ1lYTmxLU0I3WEc0Z0lDQWdJQ0JqWVd4c1ltRmpheWh3Y205d1ZtRnNkV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSEJ5YjNCV1lXeDFaU2twSUh0Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyaHBiR1FnYjJZZ2NISnZjRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoamFHbHNaQ0JwYm5OMFlXNWpaVzltSUZOalpXNWxUMkpxWldOMFFtRnpaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTmhiR3hpWVdOcktHTm9hV3hrS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dUlsMHNJbTVoYldWeklqcGJJblYxYVdSMk5DSmRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRCUVhkQ1R5eE5RVUZsTEdWQlJYUkNMRU5CUVVFN1FVRkJRU3hGUVdkQ1V5eFpRVUZaTEV0QlFXVXNSVUZCUVR0QlFXWnNReXhKUVVGQkxFbEJRVUVzUTBGQlVTeFRRVUZaTEVkQlFVRXNTMEZCUVN4RFFVRkJPMEZCUlhCQ0xFbEJRVUVzU1VGQlFTeERRVUZSTEhOQ1FVRm5SQ3hGUVVGRExFTkJRVUU3UVVGRGVrUXNTVUZCVVN4SlFVRkJMRU5CUVVFc2NVSkJRVUVzZFVKQlFUUkNMRWRCUVhORExFVkJRVUVzUTBGQlFUdEJRVXN4UlN4SlFVRlZMRWxCUVVFc1EwRkJRU3hMUVVGQkxFZEJRVkVzU1VGQlNTeFpRVUZoTEVWQlFVRXNRMEZCUVR0QlFVTnVReXhKUVVGQkxFbEJRVUVzUTBGQlZTeFRRVUZaTEVkQlFVRXNRMEZCUVN4RFFVRkJPMEZCUTNSQ0xFbEJRVUVzU1VGQlFTeERRVUZWTEhWQ1FVRXdRaXhIUVVGQkxFdEJRVUVzUTBGQlFUdEJRVTFzUXl4SlFVRkpMRWxCUVVFc1EwRkJReXhOUVVGTkxFZEJRVXNzUlVGQlFUdEJRVU5rTEUxQlFVRXNTMEZCUVN4RFFVRk5MRTFCUVUxQkxFVkJRVThzUlVGQlFTeERRVUZCTzBGQlFVRXNTMEZEY2tJN1FVRkZRU3hKUVVGTExFbEJRVUVzUTBGQlFTeFBRVUZCTEVkQlFWVXNTVUZCU1N4WFFVRlpMRVZCUVVFc1EwRkJRVHRCUVVVdlFpeEpRVUZMTEVsQlFVRXNRMEZCUVN4TlFVRkJMRWRCUVZNc1RVRkJUeXhEUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTnFReXhKUVVGTExFbEJRVUVzUTBGQlFTeFZRVUZCTEVOQlFWY3NTMEZCU3l4TlFVRk5MRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRemRDTzBGQlFVRXNSVUZIUVN4SlFVRlhMRXRCUVdkQ0xFZEJRVUU3UVVGRGVrSXNTVUZCUVN4UFFVRlBMRWxCUVVzc1EwRkJRU3hOUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5rTzBGQlFVRXNSVUZIUVN4SlFVRlhMRkZCUVc5Q0xFZEJRVUU3UVVGRE4wSXNTVUZCUVN4UFFVRlBMRWxCUVVzc1EwRkJRU3hUUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5rTzBGQlFVRXNSVUZGUVN4SlFVRlhMSE5DUVVGclF5eEhRVUZCTzBGQlF6TkRMRWxCUVVFc1QwRkJUeXhKUVVGTExFTkJRVUVzZFVKQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTJRN1FVRkJRU3hGUVVkQkxFbEJRVmNzVFVGQmEwTXNSMEZCUVR0QlFVTXpReXhKUVVGQkxFOUJRVThzU1VGQlN5eERRVUZCTEU5QlFVRXNRMEZCUVR0QlFVRkJMRWRCUTJRN1FVRkJRU3hGUVVkQkxFbEJRVmNzYTBKQlFXOUZMRWRCUVVFN1FVRkROMFVzU1VGQlFTeFBRVUZQTEVsQlFVc3NRMEZCUVN4dFFrRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFpEdEJRVUZCTEVWQlIwRXNTVUZCVnl4UFFVRnBSQ3hIUVVGQk8wRkJRekZFTEVsQlFVRXNUMEZCVHl4SlFVRkxMRU5CUVVFc1VVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFpEdEJRVUZCTEVWQlRVRXNTVUZCVnl4VFFVRnJReXhIUVVGQk8wRkJRek5ETEVsQlFVOHNUMEZCUVN4eFFrRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZEdEJRVUZCTEVWQlJWRXNWMEZCVnl4TFFVRjNRaXhGUVVGQk8wRkJRM3BETEVsQlFXRXNXVUZCUVN4RFFVRkJMRXRCUVVFc1JVRkJUeXhEUVVGRExFdEJRVlVzUzBGQlFUdEJRVVUzUWl4TlFVRkJMRWxCUVVrc1MwRkJUU3hEUVVGQkxFOUJRVUVzU1VGQlZ5eExRVUZOTEVOQlFVRXNUMEZCUVN4TFFVRlpMRWxCUVUwc1JVRkJRVHRCUVVNelF5eFJRVUZSTEU5QlFVRXNRMEZCUVN4SlFVRkJPMEZCUVVFc1ZVRkRUaXh6VlVGQlFUdEJRVUZCTEZWQlEwRXNTMEZCUVR0QlFVRkJMRlZCUTBFc1NVRkJRVHRCUVVGQkxGTkJRMFlzUTBGQlFUdEJRVUZCTEU5QlEwWTdRVUZEUVN4TlFVRkJMRXRCUVVFc1EwRkJUU3hQUVVGVkxFZEJRVUVzU1VGQlFTeERRVUZCTzBGQlFVRXNTMEZEYWtJc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFNEdEJRVUZCTEVWQlRVOHNWMEZCWXl4SFFVRkJPMEZCUTI1Q0xFbEJRVUVzU1VGQlFTeERRVUZMTEU5QlFWVXNSMEZCUVN4TFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRMnBDTzBGQlFVRXNSVUZMVHl4cFFrRkJhVUlzVDBGQk1rUXNSVUZCUVR0QlFVTnFSaXhKUVVGQkxFOUJRVThzU1VGQlN5eERRVUZCTEU5QlFVRXNRMEZCVXl4VFFVRlZMRU5CUVVFc05FSkJRVUVzUlVGQk9FSXNRMEZCUXl4TFFVRlZMRXRCUVVFN1FVRkRkRVVzVFVGQlNTeEpRVUZCTEV0QlFVRXNRMEZCVFN4UFFVRlJMRU5CUVVFc1lVRkJRU3hMUVVGclFpeEpRVUZOTEVWQlFVRTdRVUZEZUVNc1VVRkJRU3hQUVVGQkxFTkJRVkVzUzBGQlRTeERRVUZCTEU5QlFVRXNRMEZCVVN4UlFVRnZRaXhGUVVGQkxFdEJRVUVzUTBGQlRTeFJRVUZSTEZOQlFXMUNMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRemRGTzBGQlFVRXNTMEZEUkN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOSU8wRkJRVUVzUlVGTFR5eG5Ra0ZCUVN4RFFVRnhReXhYUVVFMFFpeFBRVUUyUXl4RlFVRkJPMEZCUTI1SUxFbEJRVUVzVDBGQlR5eEpRVUZMTEVOQlFVRXNUMEZCUVN4RFFVRlRMRk5CUVZVc1EwRkJRU3hUUVVGQkxFVkJRVmNzVDBGQlR5eERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTnVSRHRCUVVGQkxFVkJSVThzVTBGQlV5eE5RVUY1UWl4RlFVRkJPMEZCUTNaRExFbEJRVUVzVFVGQlRTeFpRVUZaTEVsQlFVc3NRMEZCUVN4TlFVRkJMRU5CUVVFN1FVRkRka0lzU1VGQlRTeE5RVUZCTEZGQlFVRXNSMEZCYlVJc1kwRkRjRUlzUTBGQlFTeGpRVUZCTEVOQlFVRXNSVUZCUVN4RlFVRkJMRWxCUVVFc1EwRkJTeXhOUVVOTUxFTkJRVUVzUlVGQlFTeE5RVUZCTEVOQlFVRXNRMEZCUVR0QlFVZE1MRWxCUVVzc1NVRkJRU3hEUVVGQkxFMUJRVUVzUjBGQlV5eE5RVUZQTEVOQlFVRXNUVUZCUVN4RFFVRlBMRkZCUVZFc1EwRkJRU3hEUVVGQk8wRkJRM0JETEVsQlFVRXNTVUZCUVN4RFFVRkxMRmRCUVZjc1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGSGRFSXNTVUZCU3l4SlFVRkJMRU5CUVVFc2IwTkJRVUVzUTBGQmNVTXNWMEZCVnl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVjM1JDeEpRVUZMTEVsQlFVRXNRMEZCUVN4WlFVRkJPMEZCUVVFc1RVRkRTQ3hKUVVGSkxEUkNRVUUyUWl4RFFVRkJPMEZCUVVFc1VVRkRMMElzVTBGQlFUdEJRVUZCTEZGQlEwRXNVVUZCUVR0QlFVRkJMRkZCUTBFc1lVRkJaU3hGUVVGQkxFMUJRVUU3UVVGQlFTeFJRVU5tTEdGQlFXVXNSVUZCUVN4SlFVRkJPMEZCUVVFc1QwRkRhRUlzUTBGQlFUdEJRVUZCTEUxQlEwUXNTVUZCUVR0QlFVRkJMRXRCUTBZc1EwRkJRVHRCUVVGQkxFZEJRMFk3UVVGQlFTeEZRVTFSTEc5RFFVRkJMRU5CUVhGRExGZEJRVzFDTEZGQlFXdENMRVZCUVVFN1FVRkRhRVlzU1VGQlNTeEpRVUZCTEVOQlFVTXNTMEZCU3l4UlFVRlZMRVZCUVVFN1FVRkRiRUlzVFVGQlFTeFBRVUZCTzBGQlFVRXNTMEZEUmp0QlFVVkJMRWxCUVVrc1NVRkJRU3hUUVVGQkxFTkJRVlVzVlVGQlpTeExRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlpMRVZCUVVFN1FVRkRhRVFzVFVGQlFTeEpRVUZCTEVOQlFVc3NkVUpCUVhkQ0xFTkJRVUVzVTBGQlFTeERRVUZWTEZWQlFWa3NSVUZCUVN4UlFVRkJMRU5CUVZNc1ZVRkJWU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU40UlR0QlFVVkJMRWxCUVVrc1NVRkJRU3hUUVVGQkxFTkJRVlVzUzBGQlZTeExRVUZCTEZGQlFVRXNRMEZCVXl4TFFVRlBMRVZCUVVFN1FVRkRkRU1zVFVGQlFTeEpRVUZCTEVOQlFVc3NOa0pCUVRoQ0xFTkJRVUVzVTBGQlFTeERRVUZWTEV0QlFVOHNSVUZCUVN4UlFVRkJMRU5CUVZNc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU53UlR0QlFVVkJMRWxCUVVrc1NVRkJRU3hUUVVGQkxFTkJRVlVzVlVGQlpTeExRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlpMRVZCUVVFN1FVRkRhRVFzVFVGQlFTeEpRVUZCTEVOQlFVc3NOa0pCUVRoQ0xFTkJRVUVzVTBGQlFTeERRVUZWTEZWQlFWa3NSVUZCUVN4UlFVRkJMRU5CUVZNc1ZVRkJWU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU01UlR0QlFVVkJMRWxCUVVrc1NVRkJRU3hUUVVGQkxFTkJRVlVzVlVGQlpTeExRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlpMRVZCUVVFN1FVRkRhRVFzVFVGQlFTeEpRVUZCTEVOQlFVc3NOa0pCUVRoQ0xFTkJRVUVzVTBGQlFTeERRVUZWTEZWQlFWa3NSVUZCUVN4UlFVRkJMRU5CUVZNc1ZVRkJWU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU01UlR0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVVWUkxEWkNRVUZCTEVOQlFUaENMRlZCUVcxRExGRkJRVzFETEVWQlFVRTdRVUZETVVjc1NVRkJRU3hKUVVGSkxGRkJRVlVzUlVGQlFUdEJRVU5hTEUxQlFVRXNUVUZCVFN4dFFrRkJjMElzUjBGQlFTeEpRVUZCTEVOQlFVc3NjVUpCUVhOQ0xFTkJRVUVzUjBGQlFTeERRVUZKTEZGQlFWRXNRMEZCUVN4RFFVRkJPMEZCUTI1RkxFMUJRVUVzU1VGQlNTeHRRa0ZCY1VJc1JVRkJRVHRCUVVOMlFpeFJRVUZ2UWl4dFFrRkJRU3hGUVVGQkxFTkJRVUU3UVVGRGNFSXNVVUZCU3l4SlFVRkJMRU5CUVVFc2NVSkJRVUVzUTBGQmMwSXNUMEZCVHl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRelZETzBGQlFVRXNTMEZEUmp0QlFVVkJMRWxCUVVFc1NVRkJTU3hSUVVGVkxFVkJRVUU3UVVGRFdpeE5RVUZCTEVsQlFVRXNRMEZCU3l4eFFrRkJjMElzUTBGQlFTeEhRVUZCTEVOQlFVa3NVVUZCVlN4RlFVRkJMRkZCUVVFc1EwRkJVeXhWUVVGVkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlF6bEVPMEZCUVVFc1IwRkRSanRCUVVGQkxFVkJSVkVzZFVKQlFVRXNRMEZEVGl4VlFVTkJMRkZCUTBFc1JVRkJRVHRCUVVWQkxFbEJRVUVzU1VGQlNTeFJRVUZWTEVWQlFVRTdRVUZEV2l4TlFVRkJMRXRCUVVFc1RVRkJWeXhsUVVGbExGRkJRVlVzUlVGQlFUdEJRVU5zUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGWkxFbEJRVUVzUTBGQlF5eFJRVUZUTEVOQlFVRXNVVUZCUVN4RFFVRlRMRmRCUVZjc1EwRkJSeXhGUVVGQk8wRkJRMmhFTEZWQlFVRXNUVUZCVFN4dFFrRkJjMElzUjBGQlFTeEpRVUZCTEVOQlFVc3NjVUpCUVhOQ0xFTkJRVUVzUjBGQlFTeERRVUZKTEZkQlFWY3NRMEZCUVN4RFFVRkJPMEZCUTNSRkxGVkJRVUVzU1VGQlNTeHRRa0ZCY1VJc1JVRkJRVHRCUVVOMlFpeFpRVUZ2UWl4dFFrRkJRU3hGUVVGQkxFTkJRVUU3UVVGRGNFSXNXVUZCU3l4SlFVRkJMRU5CUVVFc2NVSkJRVUVzUTBGQmMwSXNUMEZCVHl4WFFVRlhMRU5CUVVFc1EwRkJRVHRCUVVGQkxGZEJReTlETzBGQlFVRXNVMEZEUmp0QlFVRkJMRTlCUTBZN1FVRkJRU3hMUVVOR08wRkJSMEVzU1VGQlFTeEpRVUZKTEZGQlFWVXNSVUZCUVR0QlFVTmFMRTFCUVVFc1MwRkJRU3hOUVVGWExHVkJRV1VzVVVGQlZTeEZRVUZCTzBGQlEyeERMRkZCUVVFc1NVRkJTU3hEUVVGRExGRkJRVmtzU1VGQlFTeERRVUZETEZGQlFWTXNRMEZCUVN4UlFVRkJMRU5CUVZNc1YwRkJWeXhEUVVGSExFVkJRVUU3UVVGRGFFUXNWVUZCUVN4SlFVRkJMRU5CUVVzc2EwSkJRV3RDTEZkQlFWY3NRMEZCUVN4RFFVRkJPMEZCUVVFc1UwRkRjRU03UVVGQlFTeFBRVU5HTzBGQlFVRXNTMEZEUmp0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVV0UExGbEJRVUVzUTBGQllTeFBRVUZwUWl4TlFVRnJRaXhGUVVGQk8wRkJRM0pFTEVsQlFVc3NTVUZCUVN4RFFVRkJMRTlCUVVFc1EwRkJVeXhSUVVGUkxFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlJUTkNMRWxCUVVrc1NVRkJRU3hOUVVGQkxFbEJRVlVzUzBGQlN5eE5RVUZSTEVWQlFVRTdRVUZEZWtJc1RVRkJTeXhKUVVGQkxFTkJRVUVzVFVGQlFTeERRVUZQTEZsQlFXRXNRMEZCUVN4TFFVRkJMRVZCUVU4c1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU40UXp0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVVWUExFOUJRWFZDTEVkQlFVRTdRVUZETlVJc1NVRkJRU3hQUVVGUExFTkJRVU1zU1VGQlN5eERRVUZCTEU5QlFVRXNSMEZCVlN4SlFVRlBMRWRCUVVFc1NVRkJRU3hEUVVGTExGRkJRVkVzVDBGQlVTeEZRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTnlSRHRCUVVGQkxFVkJSVkVzYVVKQlFXOUNMRWRCUVVFN1FVRkRNVUlzU1VGQlFTeEpRVUZCTEVOQlFVc3NVMEZCV1N4SFFVRkJMRWxCUVVFc1EwRkJRVHRCUVVWcVFpeEpRVUZCTEUxQlFVMHNSVUZCUlN4TFFVRlBMRVZCUVVFc1ZVRkJRU3hGUVVGWkxGVkJRVmtzUlVGQlFTeFZRVUZCTEV0QlFXVXNTVUZCU3l4RFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVVelJDeEpRVUZMTEVsQlFVRXNRMEZCUVN4dFFrRkJRU3hEUVVGdlFpeFBRVUZSTEVOQlFVRXNRMEZCUXl4UFFVRlpMRXRCUVVFN1FVRkROVU1zVFVGQlFTeE5RVUZOTEZOQlFWTXNUMEZCVVN4RlFVRkJMRU5CUVVFN1FVRkRka0lzVFVGQlFTeEpRVUZKTEUxQlFWRXNSVUZCUVR0QlFVTldMRkZCUVVzc1NVRkJRU3hEUVVGQkxIRkNRVUZCTEVOQlFYTkNMRWRCUVVrc1EwRkJRU3hOUVVGQkxFVkJRVkVzVFVGQlRTeERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTXZRenRCUVVGQkxFdEJRMFFzUTBGQlFTeERRVUZCTzBGQlJVUXNTVUZCU1N4SlFVRkJMRlZCUVVFc1NVRkJZeXhEUVVGRExGVkJRVUVzUTBGQlZ5eFJRVUZWTEVWQlFVRTdRVUZEZEVNc1RVRkJRU3hKUVVGQkxFTkJRVXNzY1VKQlFYTkNMRU5CUVVFc1IwRkJRU3hEUVVGSkxGVkJRVmtzUlVGQlFTeFZRVUZCTEVOQlFWY3NWVUZCVlN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOc1JUdEJRVVZCTEVsQlFVa3NTVUZCUVN4VlFVRkJMRWxCUVdNc1EwRkJReXhWUVVGQkxFTkJRVmNzVVVGQlZTeEZRVUZCTzBGQlEzUkRMRTFCUVVFc1NVRkJRU3hEUVVGTExIRkNRVUZ6UWl4RFFVRkJMRWRCUVVFc1EwRkJTU3hWUVVGWkxFVkJRVUVzVlVGQlFTeERRVUZYTEZWQlFWVXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRiRVU3UVVGRlFTeEpRVUZKTEVsQlFVRXNTMEZCUVN4SlFVRlRMRU5CUVVNc1MwRkJRU3hEUVVGTkxGRkJRVlVzUlVGQlFUdEJRVU0xUWl4TlFVRkJMRWxCUVVFc1EwRkJTeXh4UWtGQmMwSXNRMEZCUVN4SFFVRkJMRU5CUVVrc1MwRkJUeXhGUVVGQkxFdEJRVUVzUTBGQlRTeFZRVUZWTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTNoRU8wRkJSVUVzU1VGQlFTeEpRVUZKTEZWQlFWa3NSVUZCUVR0QlFVTmtMRTFCUVVFc1MwRkJRU3hOUVVGWExGbEJRVmtzVlVGQldTeEZRVUZCTzBGQlEycERMRkZCUVVFc1NVRkJRU3hEUVVGTExHdENRVUZyUWl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRMnBETzBGQlFVRXNTMEZEUmp0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVVWUkxHdENRVUZyUWl4UlFVRnBSaXhGUVVGQk8wRkJRM3BITEVsQlFVRXNTVUZCU1N4dlFrRkJiMElzWlVGQmFVSXNSVUZCUVR0QlFVTjJReXhOUVVGQkxFbEJRVUVzUTBGQlN5eHhRa0ZCYzBJc1EwRkJRU3hIUVVGQkxFTkJRVWtzVVVGQlZTeEZRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlZMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRemxFTEUxQlFVRXNTVUZCVnl4UFFVRlBMRkZCUVVFc1MwRkJZU3hWUVVGWkxFVkJRVUU3UVVGRGVrTXNUVUZCVFN4TlFVRkJMRlZCUVVFc1IwRkJZU3hUUVVGVExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlEyaERMRTFCUVVFc1NVRkJTU3hWUVVGWkxFVkJRVUU3UVVGRFpDeFJRVUZMTEVsQlFVRXNRMEZCUVN4eFFrRkJRU3hEUVVGelFpeEhRVUZKTEVOQlFVRXNVVUZCUVN4RlFVRlZMRlZCUVZVc1EwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRGNrUTdRVUZCUVN4TFFVTkdPMEZCUVVFc1IwRkRSanRCUVVGQkxFVkJUMDhzVVVGQmIwTXNSMEZCUVR0QlFVTjZReXhKUVVGSkxFbEJRVUVzUTBGQlF5eExRVUZMTEZGQlFWVXNSVUZCUVR0QlFVTnNRaXhOUVVGQkxFbEJRVUVzUTBGQlN5eHBRa0ZCYTBJc1JVRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGVrSTdRVUZGUVN4SlFVRkxMRWxCUVVFc1EwRkJRU3hUUVVGQkxFVkJRVUVzUTBGQlFUdEJRVVZNTEVsQlFVRXNTVUZCU1N4TlFVRlRMRWRCUVVFc1MwRkJRU3hEUVVGQk8wRkJSV0lzU1VGQlFTeFBRVUZQTEUxQlFVMDdRVUZEV0N4TlFVRkxMRWxCUVVFc1EwRkJRU3hUUVVGQkxFVkJRVUVzUTBGQlFUdEJRVVZNTEUxQlFVRXNTVUZCU1N4TlFVRlJMRVZCUVVFN1FVRkRWaXhSUVVGQkxFMUJRVTBzUjBGQlRTeEhRVUZCTEVOQlFVRXNNa1ZCUVVFc1EwRkJRU3hEUVVGQk8wRkJRMW9zVVVGQlRTeE5RVUZCTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRM0pDTzBGQlJVRXNUVUZCVXl4TlFVRkJMRWRCUVVFc1NVRkJRU3hEUVVGQk8wRkJSVlFzVFVGQlNTeEpRVUZCTEVsQlFVRXNRMEZCU3l4alFVRmpMRU5CUVVjc1JVRkJRVHRCUVVONFFpeFJRVUZCTEVsQlFVRXNRMEZCU3l4dFFrRkJiMElzUlVGQlFTeERRVUZCTzBGQlFVRXNUMEZETTBJN1FVRkJRU3hMUVVOR0xFTkJRVUU3UVVGQlFTeEhRVU5HTzBGQlFVRXNSVUZOVVN4dFFrRkJORUlzUjBGQlFUdEJRVU5zUXl4SlFVRkJMRWxCUVVFc1EwRkJTeXhUUVVGWkxFZEJRVUVzUzBGQlFTeERRVUZCTzBGQlJXcENMRWxCUVVFc1MwRkJRU3hKUVVGVExFOUJRVmNzU1VGQlFTeEpRVUZCTEVOQlFVc3NjVUpCUVhOQ0xFTkJRVUVzVFVGQlFTeEZRVUZWTEVWQlFVRTdRVUZEZGtRc1RVRkJVU3hQUVVGQkxFVkJRVUVzUTBGQlFUdEJRVUZCTEV0QlExWTdRVUZGUVN4SlFVRkJMRWxCUVVFc1EwRkJTeXh6UWtGQmMwSXNTMEZCVFN4RlFVRkJMRU5CUVVFN1FVRkhha01zU1VGQlFTeEpRVUZCTEVOQlFVc3NVVUZCVXl4clFrRkJiVUlzUlVGQlFTeERRVUZCTzBGQlEycERMRWxCUVVFc1NVRkJRU3hEUVVGTExFMUJRVTBzVjBGQldTeEZRVUZCTEVOQlFVRTdRVUZEZGtJc1NVRkJTeXhKUVVGQkxFTkJRVUVzUzBGQlFTeEhRVUZSTEVsQlFVa3NXVUZCWVN4RlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOb1F6dEJRVUZCTEVWQlMwOHNVVUZCYlVJc1IwRkJRVHRCUVVWNFFpeEpRVUZCTEU5QlFVOHNiMEpCUVc5Q0xFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZEYWtNN1FVRkJRU3hGUVVkUExGZEJRVzlDTEVkQlFVRTdRVUZEZWtJc1NVRkJTeXhKUVVGQkxFTkJRVUVzVVVGQlFTeERRVUZUTEVWQlFVVXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRiRUk3UVVGQlFTeEZRVXRQTEUxQlFVMHNVMEZCYlVNc1JVRkJRVHRCUVVNNVF5eEpRVUZQTEU5QlFVRXNaMEpCUVVFc1EwRkJhVUlzVFVGQlRTeFRRVUZUTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTNwRE8wRkJRVUVzUlVGTlR5eHhRa0ZCY1VJc1QwRkJhVU1zUlVGQlFUdEJRVU16UkN4SlFVRkxMRWxCUVVFc1EwRkJRU3h0UWtGQlFTeERRVUZ2UWl4TFFVRkxMRTlCUVU4c1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGRrTTdRVUZCUVN4RlFVMVBMR0ZCUVdFc1VVRkJORU1zUlVGQlFUdEJRVU01UkN4SlFVRmhMRmxCUVVFc1EwRkJRU3hKUVVGQkxFTkJRVXNzVDBGQlR5eFJRVUZSTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTI1RE8wRkJRVUVzUlVGSFR5eE5RVUVyUWl4SFFVRkJPMEZCUTNCRExFbEJRVWtzU1VGQlFTeERRVUZETEV0QlFVc3NTVUZCVFN4RlFVRkJPMEZCUTJRc1RVRkJTeXhKUVVGQkxFTkJRVUVzU1VGQlFTeEhRVUZQTEVsQlFVa3NZMEZCUVN4RFFVRmxMRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGNrTTdRVUZGUVN4SlFVRkJMRTlCUVU4c1NVRkJTeXhEUVVGQkxFbEJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyUTdRVUZEUml4RFFVRkJPMEZCVFdkQ0xGTkJRVUVzYlVKQlFVRXNRMEZEWkN4UFFVTkJMRTlCUTFFc1JVRkJRVHRCUVRkWVZpeEZRVUZCTEVsQlFVRXNSVUZCUVN4RFFVRkJPMEZCT0ZoRkxFVkJRVUVzVFVGQlRTeERRVUZETEVOQlFVY3NSVUZCUVN4UlFVRlJMRU5CUVVrc1IwRkJRU3hSUVVGQkxFTkJRV2xDTEUxQlFVMHNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkRiRVFzUlVGQlFTeE5RVUZOTEhGQ1FVRnhRaXhMUVVGTkxFTkJRVUVzUzBGQlFTeERRVUZCTzBGQlEycERMRVZCUVUwc1RVRkJRU3g1UWtGQlFTeEhRVUZCTEVOQlFUUkNMRVZCUVZNc1IwRkJRU3hQUVVGQkxFbEJRVUVzU1VGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRTlCUVVFc1EwRkJRU3g1UWtGQlFTeExRVUZVTEVsQlFYTkRMRWRCUVVFc1JVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFUdEJRVVY0UlN4RlFVRkJMRk5CUVVFc1EwRkJWU3hOUVVGTk8wRkJRMlFzU1VGQlNTeEpRVUZCTEZWQlFVRXNRMEZCUVR0QlFVVktMRWxCUVVFc1NVRkJTU3g1UWtGQk1rSXNSVUZCUVR0QlFVTTNRaXhOUVVGQkxGVkJRVUVzUjBGQllTeE5RVUZOTEZGQlFWTXNSVUZCUVN4RFFVRkJPMEZCUVVFc1MwRkRPVUk3UVVGRlFTeEpRVUZCTEUxQlFVMHNRMEZCU1N4SFFVRkJMRXRCUVVFc1EwRkJUU3huUWtGQmFVSXNRMEZCUVN4RFFVRkRMRXRCUVZVc1MwRkJRVHRCUVVNeFF5eE5RVUZCTEZGQlFVRXNRMEZCVXl4TFFVRkxMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRMllzUTBGQlFTeERRVUZCTzBGQlIwUXNTVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hWUVVGVkxHdENRVUZ2UWl4RlFVRkJPMEZCUTNSRExFMUJRVUVzVVVGQlFTeERRVUZUTEUxQlFVMHNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOMFFqdEJRVVZCTEVsQlFVRXNUMEZCVHl4TlFVRk5PMEZCUTFnc1RVRkJRU3hEUVVGQkxFTkJRVVVzVjBGQldTeEZRVUZCTEVOQlFVRTdRVUZGWkN4TlFVRkJMRWxCUVVrc1ZVRkJXU3hGUVVGQk8wRkJRMlFzVVVGQlZ5eFZRVUZCTEVWQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTJJN1FVRkJRU3hMUVVOR0xFTkJRVUU3UVVGQlFTeEhRVVZETEVWQlFVRXNRMEZCUXl4TFFVRlBMRVZCUVVFc2VVSkJRWGxDTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUlhKRExFVkJRVUVzVDBGQlR5eExRVUZOTEVOQlFVRXNTMEZCUVN4RFFVRkJPMEZCUTJZc1EwRkJRVHRCUVVWQkxGTkJRVk1zV1VGQlFTeERRVUVyUWl4UFFVRlZMRkZCUVRSRExFVkJRVUU3UVVGRE5VWXNSVUZCUVN4TFFVRkJMRTFCUVZjc1UwRkJZU3hKUVVGQkxFMUJRVUVzUTBGQlR5eE5RVUZQTEVOQlFVRXNTMEZCU3l4RFFVRkhMRVZCUVVFN1FVRkROVU1zU1VGQlFTeEpRVUZKTEhGQ1FVRnhRaXhsUVVGcFFpeEZRVUZCTzBGQlEzaERMRTFCUVVFc1VVRkJRU3hEUVVGVExGTkJRVk1zUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEY0VJN1FVRkZRU3hKUVVGSkxFbEJRVUVzUzBGQlFTeERRVUZOTEU5QlFWRXNRMEZCUVN4VFFVRlRMRU5CUVVjc1JVRkJRVHRCUVVNMVFpeE5RVUZCTEV0QlFVRXNUVUZCVnl4VFFVRlRMRk5CUVZjc1JVRkJRVHRCUVVNM1FpeFJRVUZCTEVsQlFVa3NhVUpCUVdsQ0xHVkJRV2xDTEVWQlFVRTdRVUZEY0VNc1ZVRkJRU3hSUVVGQkxFTkJRVk1zUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4VFFVTm9RanRCUVVGQkxFOUJRMFk3UVVGQlFTeExRVU5HTzBGQlFVRXNSMEZEUmp0QlFVTkdPenM3T3lKOVxuIl0sIm5hbWVzIjpbInV1aWR2NCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCTyxNQUFlLGVBRXRCLENBQUE7QUFnQlMsRUFBQSxXQUFBLENBQVksS0FBZSxFQUFBO0FBZmxDLElBQUEsSUFBQSxDQUFRLFNBQVksR0FBQSxLQUFBLENBQUE7QUFFcEIsSUFBQSxJQUFBLENBQVEsc0JBQWdELEVBQUEsQ0FBQTtBQUNoRCxJQUFBLElBQUEsQ0FBQSxxQkFBQSx1QkFBNEIsR0FBc0MsRUFBQSxDQUFBO0FBS2hFLElBQUEsSUFBQSxDQUFBLEtBQUEsR0FBUSxJQUFJLFlBQWEsRUFBQSxDQUFBO0FBQ25DLElBQUEsSUFBQSxDQUFVLFNBQVksR0FBQSxDQUFBLENBQUE7QUFDdEIsSUFBQSxJQUFBLENBQVUsdUJBQTBCLEdBQUEsS0FBQSxDQUFBO0FBTTlCLElBQUEsSUFBQSxDQUFDLE1BQU0sR0FBSyxFQUFBO0FBQ2QsTUFBQSxLQUFBLENBQU0sTUFBTUEsRUFBTyxFQUFBLENBQUE7QUFBQSxLQUFBO0FBR2hCLElBQUEsSUFBQSxDQUFBLE9BQUEsR0FBVSxJQUFJLFdBQVksRUFBQSxDQUFBO0FBRTFCLElBQUEsSUFBQSxDQUFBLE1BQUEsR0FBUyxNQUFPLENBQUEsTUFBQSxDQUFPLEtBQUssQ0FBQSxDQUFBO0FBQzVCLElBQUEsSUFBQSxDQUFBLFVBQUEsQ0FBVyxLQUFLLE1BQU0sQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQUk3QixFQUFBLElBQVcsS0FBZ0IsR0FBQTtBQUN6QixJQUFBLE9BQU8sSUFBSyxDQUFBLE1BQUEsQ0FBQTtBQUFBLEdBQUE7QUFJZCxFQUFBLElBQVcsUUFBb0IsR0FBQTtBQUM3QixJQUFBLE9BQU8sSUFBSyxDQUFBLFNBQUEsQ0FBQTtBQUFBLEdBQUE7QUFHZCxFQUFBLElBQVcsc0JBQWtDLEdBQUE7QUFDM0MsSUFBQSxPQUFPLElBQUssQ0FBQSx1QkFBQSxDQUFBO0FBQUEsR0FBQTtBQUlkLEVBQUEsSUFBVyxNQUFrQyxHQUFBO0FBQzNDLElBQUEsT0FBTyxJQUFLLENBQUEsT0FBQSxDQUFBO0FBQUEsR0FBQTtBQUlkLEVBQUEsSUFBVyxrQkFBb0UsR0FBQTtBQUM3RSxJQUFBLE9BQU8sSUFBSyxDQUFBLG1CQUFBLENBQUE7QUFBQSxHQUFBO0FBSWQsRUFBQSxJQUFXLE9BQWlELEdBQUE7QUFDMUQsSUFBQSxPQUFPLElBQUssQ0FBQSxRQUFBLENBQUE7QUFBQSxHQUFBO0FBT2QsRUFBQSxJQUFXLFNBQWtDLEdBQUE7QUFDcEMsSUFBQSxPQUFBLHFCQUFBLENBQUE7QUFBQSxHQUFBO0FBR0QsRUFBQSxVQUFBLENBQVcsS0FBd0IsRUFBQTtBQUM1QixJQUFBLFlBQUEsQ0FBQSxLQUFBLEVBQU8sQ0FBQyxLQUFVLEtBQUE7QUFFN0IsTUFBQSxJQUFJLEtBQU0sQ0FBQSxPQUFBLElBQVcsS0FBTSxDQUFBLE9BQUEsS0FBWSxJQUFNLEVBQUE7QUFDbkMsUUFBQSxPQUFBLENBQUEsSUFBQTtBQUNOLFVBQUEsc1VBQUE7QUFDQSxVQUFBLEtBQUE7QUFDQSxVQUFBLElBQUE7QUFBQSxTQUFBLENBQUE7QUFDRixPQUFBO0FBRUYsTUFBQSxLQUFBLENBQU0sT0FBVSxHQUFBLElBQUEsQ0FBQTtLQUNqQixDQUFBLENBQUE7QUFBQSxHQUFBO0VBT0ksV0FBYyxHQUFBO0FBQ25CLElBQUEsSUFBQSxDQUFLLE9BQVUsR0FBQSxLQUFBLENBQUEsQ0FBQTtBQUFBLEdBQUE7QUFNVixFQUFBLGdCQUFBLENBQWlCLE9BQTJELEVBQUE7QUFDakYsSUFBQSxPQUFPLElBQUssQ0FBQSxPQUFBLENBQVMsU0FBVSxDQUFBLDRCQUFBLEVBQThCLENBQUMsS0FBVSxLQUFBO0FBQ2xFLE1BQUEsSUFBQSxLQUFBLENBQU0sT0FBUSxDQUFBLGFBQUEsS0FBa0IsSUFBTSxFQUFBO0FBQ3hDLFFBQUEsT0FBQSxDQUFRLEtBQU0sQ0FBQSxPQUFBLENBQVEsUUFBb0IsRUFBQSxLQUFBLENBQU0sUUFBUSxTQUFtQixDQUFBLENBQUE7QUFBQSxPQUFBO0tBRTlFLENBQUEsQ0FBQTtBQUFBLEdBQUE7QUFNSSxFQUFBLGdCQUFBLENBQXFDLFdBQTRCLE9BQTZDLEVBQUE7QUFDbkgsSUFBQSxPQUFPLElBQUssQ0FBQSxPQUFBLENBQVMsU0FBVSxDQUFBLFNBQUEsRUFBVyxPQUFPLENBQUEsQ0FBQTtBQUFBLEdBQUE7QUFHNUMsRUFBQSxRQUFBLENBQVMsTUFBeUIsRUFBQTtBQUN2QyxJQUFBLE1BQU0sWUFBWSxJQUFLLENBQUEsTUFBQSxDQUFBO0FBQ2pCLElBQUEsTUFBQSxRQUFBLEdBQW1CLGVBQ3BCLGNBQUEsQ0FBQSxJQUFBLElBQUssQ0FBQSxNQUNMLEdBQUEsTUFBQSxDQUFBLENBQUE7QUFHQSxJQUFBLElBQUEsQ0FBQSxNQUFBLEdBQVMsTUFBTyxDQUFBLE1BQUEsQ0FBTyxRQUFRLENBQUEsQ0FBQTtBQUNwQyxJQUFBLElBQUEsQ0FBSyxXQUFXLE1BQU0sQ0FBQSxDQUFBO0FBR2pCLElBQUEsSUFBQSxDQUFBLG9DQUFBLENBQXFDLFdBQVcsUUFBUSxDQUFBLENBQUE7QUFHeEQsSUFBQSxJQUFBLENBQUEsWUFBQTtBQUNILE1BQUEsSUFBSSw0QkFBNkIsQ0FBQTtBQUMvQixRQUFBLFNBQUE7QUFDQSxRQUFBLFFBQUE7UUFDQSxhQUFlLEVBQUEsTUFBQTtRQUNmLGFBQWUsRUFBQSxJQUFBO09BQ2hCLENBQUE7QUFDRCxNQUFBLElBQUE7QUFBQSxLQUFBLENBQUE7QUFDRixHQUFBO0FBT00sRUFBQSxvQ0FBQSxDQUFxQyxXQUFtQixRQUFrQixFQUFBO0FBQzVFLElBQUEsSUFBQSxDQUFDLEtBQUssUUFBVSxFQUFBO0FBQ2xCLE1BQUEsT0FBQTtBQUFBLEtBQUE7QUFHRSxJQUFBLElBQUEsU0FBQSxDQUFVLFVBQWUsS0FBQSxRQUFBLENBQVMsVUFBWSxFQUFBO0FBQ2hELE1BQUEsSUFBQSxDQUFLLHVCQUF3QixDQUFBLFNBQUEsQ0FBVSxVQUFZLEVBQUEsUUFBQSxDQUFTLFVBQVUsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUdwRSxJQUFBLElBQUEsU0FBQSxDQUFVLEtBQVUsS0FBQSxRQUFBLENBQVMsS0FBTyxFQUFBO0FBQ3RDLE1BQUEsSUFBQSxDQUFLLDZCQUE4QixDQUFBLFNBQUEsQ0FBVSxLQUFPLEVBQUEsUUFBQSxDQUFTLEtBQUssQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUdoRSxJQUFBLElBQUEsU0FBQSxDQUFVLFVBQWUsS0FBQSxRQUFBLENBQVMsVUFBWSxFQUFBO0FBQ2hELE1BQUEsSUFBQSxDQUFLLDZCQUE4QixDQUFBLFNBQUEsQ0FBVSxVQUFZLEVBQUEsUUFBQSxDQUFTLFVBQVUsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUcxRSxJQUFBLElBQUEsU0FBQSxDQUFVLFVBQWUsS0FBQSxRQUFBLENBQVMsVUFBWSxFQUFBO0FBQ2hELE1BQUEsSUFBQSxDQUFLLDZCQUE4QixDQUFBLFNBQUEsQ0FBVSxVQUFZLEVBQUEsUUFBQSxDQUFTLFVBQVUsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUM5RSxHQUFBO0FBR00sRUFBQSw2QkFBQSxDQUE4QixVQUFtQyxRQUFtQyxFQUFBO0FBQzFHLElBQUEsSUFBSSxRQUFVLEVBQUE7QUFDWixNQUFBLE1BQU0sbUJBQXNCLEdBQUEsSUFBQSxDQUFLLHFCQUFzQixDQUFBLEdBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQTtBQUNuRSxNQUFBLElBQUksbUJBQXFCLEVBQUE7QUFDSCxRQUFBLG1CQUFBLEVBQUEsQ0FBQTtBQUNmLFFBQUEsSUFBQSxDQUFBLHFCQUFBLENBQXNCLE9BQU8sUUFBUSxDQUFBLENBQUE7QUFBQSxPQUFBO0FBQzVDLEtBQUE7QUFHRixJQUFBLElBQUksUUFBVSxFQUFBO0FBQ1osTUFBQSxJQUFBLENBQUsscUJBQXNCLENBQUEsR0FBQSxDQUFJLFFBQVUsRUFBQSxRQUFBLENBQVMsVUFBVSxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQzlELEdBQUE7QUFHTSxFQUFBLHVCQUFBLENBQ04sVUFDQSxRQUNBLEVBQUE7QUFFQSxJQUFBLElBQUksUUFBVSxFQUFBO0FBQ1osTUFBQSxLQUFBLE1BQVcsZUFBZSxRQUFVLEVBQUE7QUFDbEMsUUFBQSxJQUFJLENBQUMsUUFBWSxJQUFBLENBQUMsUUFBUyxDQUFBLFFBQUEsQ0FBUyxXQUFXLENBQUcsRUFBQTtBQUNoRCxVQUFBLE1BQU0sbUJBQXNCLEdBQUEsSUFBQSxDQUFLLHFCQUFzQixDQUFBLEdBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQTtBQUN0RSxVQUFBLElBQUksbUJBQXFCLEVBQUE7QUFDSCxZQUFBLG1CQUFBLEVBQUEsQ0FBQTtBQUNmLFlBQUEsSUFBQSxDQUFBLHFCQUFBLENBQXNCLE9BQU8sV0FBVyxDQUFBLENBQUE7QUFBQSxXQUFBO0FBQy9DLFNBQUE7QUFDRixPQUFBO0FBQ0YsS0FBQTtBQUlGLElBQUEsSUFBSSxRQUFVLEVBQUE7QUFDWixNQUFBLEtBQUEsTUFBVyxlQUFlLFFBQVUsRUFBQTtBQUNsQyxRQUFBLElBQUksQ0FBQyxRQUFZLElBQUEsQ0FBQyxRQUFTLENBQUEsUUFBQSxDQUFTLFdBQVcsQ0FBRyxFQUFBO0FBQ2hELFVBQUEsSUFBQSxDQUFLLGtCQUFrQixXQUFXLENBQUEsQ0FBQTtBQUFBLFNBQUE7QUFDcEMsT0FBQTtBQUNGLEtBQUE7QUFDRixHQUFBO0FBTUssRUFBQSxZQUFBLENBQWEsT0FBaUIsTUFBa0IsRUFBQTtBQUNoRCxJQUFBLElBQUEsQ0FBQSxPQUFBLENBQVMsUUFBUSxLQUFLLENBQUEsQ0FBQTtBQUV2QixJQUFBLElBQUEsTUFBQSxJQUFVLEtBQUssTUFBUSxFQUFBO0FBQ3BCLE1BQUEsSUFBQSxDQUFBLE1BQUEsQ0FBTyxZQUFhLENBQUEsS0FBQSxFQUFPLE1BQU0sQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUN4QyxHQUFBO0VBR0ssT0FBdUIsR0FBQTtBQUM1QixJQUFBLE9BQU8sQ0FBQyxJQUFLLENBQUEsT0FBQSxHQUFVLElBQU8sR0FBQSxJQUFBLENBQUssUUFBUSxPQUFRLEVBQUEsQ0FBQTtBQUFBLEdBQUE7RUFHN0MsaUJBQW9CLEdBQUE7QUFDMUIsSUFBQSxJQUFBLENBQUssU0FBWSxHQUFBLElBQUEsQ0FBQTtBQUVqQixJQUFBLE1BQU0sRUFBRSxLQUFPLEVBQUEsVUFBQSxFQUFZLFVBQVksRUFBQSxVQUFBLEtBQWUsSUFBSyxDQUFBLEtBQUEsQ0FBQTtBQUV0RCxJQUFBLElBQUEsQ0FBQSxtQkFBQSxDQUFvQixPQUFRLENBQUEsQ0FBQyxPQUFZLEtBQUE7QUFDNUMsTUFBQSxNQUFNLFNBQVMsT0FBUSxFQUFBLENBQUE7QUFDdkIsTUFBQSxJQUFJLE1BQVEsRUFBQTtBQUNMLFFBQUEsSUFBQSxDQUFBLHFCQUFBLENBQXNCLEdBQUksQ0FBQSxNQUFBLEVBQVEsTUFBTSxDQUFBLENBQUE7QUFBQSxPQUFBO0tBRWhELENBQUEsQ0FBQTtBQUVHLElBQUEsSUFBQSxVQUFBLElBQWMsQ0FBQyxVQUFBLENBQVcsUUFBVSxFQUFBO0FBQ3RDLE1BQUEsSUFBQSxDQUFLLHFCQUFzQixDQUFBLEdBQUEsQ0FBSSxVQUFZLEVBQUEsVUFBQSxDQUFXLFVBQVUsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUc5RCxJQUFBLElBQUEsVUFBQSxJQUFjLENBQUMsVUFBQSxDQUFXLFFBQVUsRUFBQTtBQUN0QyxNQUFBLElBQUEsQ0FBSyxxQkFBc0IsQ0FBQSxHQUFBLENBQUksVUFBWSxFQUFBLFVBQUEsQ0FBVyxVQUFVLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFHOUQsSUFBQSxJQUFBLEtBQUEsSUFBUyxDQUFDLEtBQUEsQ0FBTSxRQUFVLEVBQUE7QUFDNUIsTUFBQSxJQUFBLENBQUsscUJBQXNCLENBQUEsR0FBQSxDQUFJLEtBQU8sRUFBQSxLQUFBLENBQU0sVUFBVSxDQUFBLENBQUE7QUFBQSxLQUFBO0FBR3hELElBQUEsSUFBSSxVQUFZLEVBQUE7QUFDZCxNQUFBLEtBQUEsTUFBVyxZQUFZLFVBQVksRUFBQTtBQUNqQyxRQUFBLElBQUEsQ0FBSyxrQkFBa0IsUUFBUSxDQUFBLENBQUE7QUFBQSxPQUFBO0FBQ2pDLEtBQUE7QUFDRixHQUFBO0FBR00sRUFBQSxpQkFBQSxDQUFrQixRQUFpRixFQUFBO0FBQ3pHLElBQUEsSUFBSSxvQkFBb0IsZUFBaUIsRUFBQTtBQUN2QyxNQUFBLElBQUEsQ0FBSyxxQkFBc0IsQ0FBQSxHQUFBLENBQUksUUFBVSxFQUFBLFFBQUEsQ0FBUyxVQUFVLENBQUEsQ0FBQTtLQUNuRCxNQUFBLElBQUEsT0FBTyxhQUFhLFVBQVksRUFBQTtBQUNuQyxNQUFBLE1BQUEsVUFBQSxHQUFhLFNBQVMsSUFBSSxDQUFBLENBQUE7QUFDaEMsTUFBQSxJQUFJLFVBQVksRUFBQTtBQUNULFFBQUEsSUFBQSxDQUFBLHFCQUFBLENBQXNCLEdBQUksQ0FBQSxRQUFBLEVBQVUsVUFBVSxDQUFBLENBQUE7QUFBQSxPQUFBO0FBQ3JELEtBQUE7QUFDRixHQUFBO0VBUUssUUFBb0MsR0FBQTtBQUNyQyxJQUFBLElBQUEsQ0FBQyxLQUFLLFFBQVUsRUFBQTtBQUNsQixNQUFBLElBQUEsQ0FBSyxpQkFBa0IsRUFBQSxDQUFBO0FBQUEsS0FBQTtBQUdwQixJQUFBLElBQUEsQ0FBQSxTQUFBLEVBQUEsQ0FBQTtBQUVMLElBQUEsSUFBSSxNQUFTLEdBQUEsS0FBQSxDQUFBO0FBRWIsSUFBQSxPQUFPLE1BQU07QUFDTixNQUFBLElBQUEsQ0FBQSxTQUFBLEVBQUEsQ0FBQTtBQUVMLE1BQUEsSUFBSSxNQUFRLEVBQUE7QUFDVixRQUFBLE1BQU0sR0FBTSxHQUFBLENBQUEsMkVBQUEsQ0FBQSxDQUFBO0FBQ04sUUFBQSxNQUFBLElBQUksTUFBTSxHQUFHLENBQUEsQ0FBQTtBQUFBLE9BQUE7QUFHWixNQUFBLE1BQUEsR0FBQSxJQUFBLENBQUE7QUFFTCxNQUFBLElBQUEsSUFBQSxDQUFLLGNBQWMsQ0FBRyxFQUFBO0FBQ3hCLFFBQUEsSUFBQSxDQUFLLG1CQUFvQixFQUFBLENBQUE7QUFBQSxPQUFBO0FBQzNCLEtBQUEsQ0FBQTtBQUNGLEdBQUE7RUFPTSxtQkFBNEIsR0FBQTtBQUNsQyxJQUFBLElBQUEsQ0FBSyxTQUFZLEdBQUEsS0FBQSxDQUFBO0FBRWpCLElBQUEsS0FBQSxJQUFTLE9BQVcsSUFBQSxJQUFBLENBQUsscUJBQXNCLENBQUEsTUFBQSxFQUFVLEVBQUE7QUFDL0MsTUFBQSxPQUFBLEVBQUEsQ0FBQTtBQUFBLEtBQUE7QUFHVixJQUFBLElBQUEsQ0FBSyxzQkFBc0IsS0FBTSxFQUFBLENBQUE7QUFHakMsSUFBQSxJQUFBLENBQUssUUFBUyxrQkFBbUIsRUFBQSxDQUFBO0FBQ2pDLElBQUEsSUFBQSxDQUFLLE1BQU0sV0FBWSxFQUFBLENBQUE7QUFDbEIsSUFBQSxJQUFBLENBQUEsS0FBQSxHQUFRLElBQUksWUFBYSxFQUFBLENBQUE7QUFBQSxHQUFBO0VBTXpCLFFBQW1CLEdBQUE7QUFFeEIsSUFBQSxPQUFPLG9CQUFvQixJQUFJLENBQUEsQ0FBQTtBQUFBLEdBQUE7RUFJMUIsV0FBb0IsR0FBQTtBQUNwQixJQUFBLElBQUEsQ0FBQSxRQUFBLENBQVMsRUFBRSxDQUFBLENBQUE7QUFBQSxHQUFBO0FBTVgsRUFBQSxLQUFBLENBQU0sU0FBbUMsRUFBQTtBQUN2QyxJQUFBLE9BQUEsZ0JBQUEsQ0FBaUIsTUFBTSxTQUFTLENBQUEsQ0FBQTtBQUFBLEdBQUE7QUFPbEMsRUFBQSxvQkFBQSxDQUFxQixPQUFpQyxFQUFBO0FBQ3RELElBQUEsSUFBQSxDQUFBLG1CQUFBLENBQW9CLEtBQUssT0FBTyxDQUFBLENBQUE7QUFBQSxHQUFBO0FBT2hDLEVBQUEsWUFBQSxDQUFhLFFBQTRDLEVBQUE7QUFDakQsSUFBQSxZQUFBLENBQUEsSUFBQSxDQUFLLE9BQU8sUUFBUSxDQUFBLENBQUE7QUFBQSxHQUFBO0VBSTVCLE1BQStCLEdBQUE7QUFDaEMsSUFBQSxJQUFBLENBQUMsS0FBSyxJQUFNLEVBQUE7QUFDVCxNQUFBLElBQUEsQ0FBQSxJQUFBLEdBQU8sSUFBSSxjQUFBLENBQWUsSUFBSSxDQUFBLENBQUE7QUFBQSxLQUFBO0FBR3JDLElBQUEsT0FBTyxJQUFLLENBQUEsSUFBQSxDQUFBO0FBQUEsR0FBQTtBQUVoQixDQUFBO0FBTWdCLFNBQUEsbUJBQUEsQ0FDZCxPQUNBLE9BQ1EsRUFBQTtBQTdYVixFQUFBLElBQUEsRUFBQSxDQUFBO0FBOFhFLEVBQUEsTUFBTSxDQUFDLENBQUcsRUFBQSxRQUFRLENBQUksR0FBQSxRQUFBLENBQWlCLE1BQU0sS0FBSyxDQUFBLENBQUE7QUFDbEQsRUFBQSxNQUFNLHFCQUFxQixLQUFNLENBQUEsS0FBQSxDQUFBO0FBQzNCLEVBQUEsTUFBQSx5QkFBQSxHQUFBLENBQTRCLEtBQVMsT0FBQSxJQUFBLElBQUEsR0FBQSxTQUFBLE9BQUEsQ0FBQSx5QkFBQSxLQUFULE9BQXNDLEVBQUEsR0FBQSxLQUFBLENBQUE7QUFFeEUsRUFBQSxTQUFBLENBQVUsTUFBTTtBQUNWLElBQUEsSUFBQSxVQUFBLENBQUE7QUFFSixJQUFBLElBQUkseUJBQTJCLEVBQUE7QUFDN0IsTUFBQSxVQUFBLEdBQWEsTUFBTSxRQUFTLEVBQUEsQ0FBQTtBQUFBLEtBQUE7QUFHOUIsSUFBQSxNQUFNLENBQUksR0FBQSxLQUFBLENBQU0sZ0JBQWlCLENBQUEsQ0FBQyxLQUFVLEtBQUE7QUFDMUMsTUFBQSxRQUFBLENBQVMsS0FBSyxDQUFBLENBQUE7S0FDZixDQUFBLENBQUE7QUFHRyxJQUFBLElBQUEsS0FBQSxDQUFNLFVBQVUsa0JBQW9CLEVBQUE7QUFDdEMsTUFBQSxRQUFBLENBQVMsTUFBTSxLQUFLLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFHdEIsSUFBQSxPQUFPLE1BQU07QUFDWCxNQUFBLENBQUEsQ0FBRSxXQUFZLEVBQUEsQ0FBQTtBQUVkLE1BQUEsSUFBSSxVQUFZLEVBQUE7QUFDSCxRQUFBLFVBQUEsRUFBQSxDQUFBO0FBQUEsT0FBQTtBQUNiLEtBQUEsQ0FBQTtHQUdELEVBQUEsQ0FBQyxLQUFPLEVBQUEseUJBQXlCLENBQUMsQ0FBQSxDQUFBO0FBRXJDLEVBQUEsT0FBTyxLQUFNLENBQUEsS0FBQSxDQUFBO0FBQ2YsQ0FBQTtBQUVBLFNBQVMsWUFBQSxDQUErQixPQUFVLFFBQTRDLEVBQUE7QUFDNUYsRUFBQSxLQUFBLE1BQVcsU0FBYSxJQUFBLE1BQUEsQ0FBTyxNQUFPLENBQUEsS0FBSyxDQUFHLEVBQUE7QUFDNUMsSUFBQSxJQUFJLHFCQUFxQixlQUFpQixFQUFBO0FBQ3hDLE1BQUEsUUFBQSxDQUFTLFNBQVMsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUdoQixJQUFBLElBQUEsS0FBQSxDQUFNLE9BQVEsQ0FBQSxTQUFTLENBQUcsRUFBQTtBQUM1QixNQUFBLEtBQUEsTUFBVyxTQUFTLFNBQVcsRUFBQTtBQUM3QixRQUFBLElBQUksaUJBQWlCLGVBQWlCLEVBQUE7QUFDcEMsVUFBQSxRQUFBLENBQVMsS0FBSyxDQUFBLENBQUE7QUFBQSxTQUFBO0FBQ2hCLE9BQUE7QUFDRixLQUFBO0FBQ0YsR0FBQTtBQUVKOzs7OyJ9
@@ -0,0 +1,32 @@
1
+ var __accessCheck = (obj, member, msg) => {
2
+ if (!member.has(obj))
3
+ throw TypeError("Cannot " + msg);
4
+ };
5
+ var __privateGet = (obj, member, getter) => {
6
+ __accessCheck(obj, member, "read from private field");
7
+ return getter ? getter.call(obj) : member.get(obj);
8
+ };
9
+ var __privateAdd = (obj, member, value) => {
10
+ if (member.has(obj))
11
+ throw TypeError("Cannot add the same private member more than once");
12
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
+ };
14
+ var __privateSet = (obj, member, value, setter) => {
15
+ __accessCheck(obj, member, "write to private field");
16
+ setter ? setter.call(obj, value) : member.set(obj, value);
17
+ return value;
18
+ };
19
+ var _ref;
20
+ class SceneObjectRef {
21
+ constructor(ref) {
22
+ __privateAdd(this, _ref, void 0);
23
+ __privateSet(this, _ref, ref);
24
+ }
25
+ resolve() {
26
+ return __privateGet(this, _ref);
27
+ }
28
+ }
29
+ _ref = /* @__PURE__ */ new WeakMap();
30
+
31
+ export { SceneObjectRef };
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVPYmplY3RSZWYuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvcmUvU2NlbmVPYmplY3RSZWYuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYWNjZXNzQ2hlY2sgPSAob2JqLCBtZW1iZXIsIG1zZykgPT4ge1xuICBpZiAoIW1lbWJlci5oYXMob2JqKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJDYW5ub3QgXCIgKyBtc2cpO1xufTtcbnZhciBfX3ByaXZhdGVHZXQgPSAob2JqLCBtZW1iZXIsIGdldHRlcikgPT4ge1xuICBfX2FjY2Vzc0NoZWNrKG9iaiwgbWVtYmVyLCBcInJlYWQgZnJvbSBwcml2YXRlIGZpZWxkXCIpO1xuICByZXR1cm4gZ2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IG1lbWJlci5nZXQob2JqKTtcbn07XG52YXIgX19wcml2YXRlQWRkID0gKG9iaiwgbWVtYmVyLCB2YWx1ZSkgPT4ge1xuICBpZiAobWVtYmVyLmhhcyhvYmopKVxuICAgIHRocm93IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgdGhlIHNhbWUgcHJpdmF0ZSBtZW1iZXIgbW9yZSB0aGFuIG9uY2VcIik7XG4gIG1lbWJlciBpbnN0YW5jZW9mIFdlYWtTZXQgPyBtZW1iZXIuYWRkKG9iaikgOiBtZW1iZXIuc2V0KG9iaiwgdmFsdWUpO1xufTtcbnZhciBfX3ByaXZhdGVTZXQgPSAob2JqLCBtZW1iZXIsIHZhbHVlLCBzZXR0ZXIpID0+IHtcbiAgX19hY2Nlc3NDaGVjayhvYmosIG1lbWJlciwgXCJ3cml0ZSB0byBwcml2YXRlIGZpZWxkXCIpO1xuICBzZXR0ZXIgPyBzZXR0ZXIuY2FsbChvYmosIHZhbHVlKSA6IG1lbWJlci5zZXQob2JqLCB2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG52YXIgX3JlZjtcbmNsYXNzIFNjZW5lT2JqZWN0UmVmIHtcbiAgY29uc3RydWN0b3IocmVmKSB7XG4gICAgX19wcml2YXRlQWRkKHRoaXMsIF9yZWYsIHZvaWQgMCk7XG4gICAgX19wcml2YXRlU2V0KHRoaXMsIF9yZWYsIHJlZik7XG4gIH1cbiAgcmVzb2x2ZSgpIHtcbiAgICByZXR1cm4gX19wcml2YXRlR2V0KHRoaXMsIF9yZWYpO1xuICB9XG59XG5fcmVmID0gbmV3IFdlYWtNYXAoKTtcblxuZXhwb3J0IHsgU2NlbmVPYmplY3RSZWYgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVlBZbXBsWTNSU1pXWXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwzTnlZeTlqYjNKbEwxTmpaVzVsVDJKcVpXTjBVbVZtTG5SeklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbVY0Y0c5eWRDQmpiR0Z6Y3lCVFkyVnVaVTlpYW1WamRGSmxaanhVUGlCN1hHNGdJQ055WldZNklGUTdYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtISmxaam9nVkNrZ2UxeHVJQ0FnSUhSb2FYTXVJM0psWmlBOUlISmxaanRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ5WlhOdmJIWmxLQ2s2SUZRZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxpTnlaV1k3WEc0Z0lIMWNibjFjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3T3pzN096czdPenM3UVVGQlFTeEpRVUZCTEVsQlFVRXNRMEZCUVR0QlFVRlBMRTFCUVUwc1kwRkJhMElzUTBGQlFUdEJRVUZCTEVWQlIzUkNMRmxCUVZrc1IwRkJVU3hGUVVGQk8wRkJSak5DTEVsQlFVRXNXVUZCUVN4RFFVRkJMRWxCUVVFc1JVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVZEZMRWxCUVVFc1dVRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlN5eEpRVUZQTEVWQlFVRXNSMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOa08wRkJRVUVzUlVGRlR5eFBRVUZoTEVkQlFVRTdRVUZEYkVJc1NVRkJRU3hQUVVGUExGbEJRVXNzUTBGQlFTeEpRVUZCTEVWQlFVRXNTVUZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOa08wRkJRMFlzUTBGQlFUdEJRVlJGTEVsQlFVRXNSMEZCUVN4SlFVRkJMRTlCUVVFc1JVRkJRVHM3T3pzaWZRPT1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLElBQUEsQ0FBQTtBQUFPLE1BQU0sY0FBa0IsQ0FBQTtBQUd0QixFQUFBLFdBQUEsQ0FBWSxHQUFRLEVBQUE7QUFGM0IsSUFBQSxZQUFBLENBQUEsSUFBQSxFQUFBLE1BQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUdFLElBQUEsWUFBQSxDQUFBLElBQUEsRUFBSyxNQUFPLEdBQUEsQ0FBQSxDQUFBO0FBQUEsR0FBQTtFQUdQLE9BQWEsR0FBQTtBQUNsQixJQUFPLE9BQUEsWUFBQSxDQUFLLE1BQUEsSUFBQSxDQUFBLENBQUE7QUFBQSxHQUFBO0FBRWhCLENBQUE7QUFURSxJQUFBLHVCQUFBLE9BQUEsRUFBQTs7OzsifQ==