@grafana/scenes 6.7.0--canary.1091.14350229100.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 +25 -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,172 @@
1
+ import { isEqual } from 'lodash';
2
+ import { sceneGraph } from '../core/sceneGraph/index.js';
3
+ import { SceneQueryRunner } from '../querying/SceneQueryRunner.js';
4
+ import uFuzzy from '@leeoniya/ufuzzy';
5
+
6
+ function isVariableValueEqual(a, b) {
7
+ if (a === b) {
8
+ return true;
9
+ }
10
+ return isEqual(a, b);
11
+ }
12
+ function safeStringifyValue(value) {
13
+ const getCircularReplacer = () => {
14
+ const seen = /* @__PURE__ */ new WeakSet();
15
+ return (_, value2) => {
16
+ if (typeof value2 === "object" && value2 !== null) {
17
+ if (seen.has(value2)) {
18
+ return;
19
+ }
20
+ seen.add(value2);
21
+ }
22
+ return value2;
23
+ };
24
+ };
25
+ try {
26
+ return JSON.stringify(value, getCircularReplacer());
27
+ } catch (error) {
28
+ console.error(error);
29
+ }
30
+ return "";
31
+ }
32
+ function renderPrometheusLabelFilters(filters) {
33
+ return filters.map((filter) => renderFilter(filter)).join(",");
34
+ }
35
+ function renderFilter(filter) {
36
+ var _a, _b;
37
+ let value = "";
38
+ let operator = filter.operator;
39
+ if (operator === "=|") {
40
+ operator = "=~";
41
+ value = (_a = filter.values) == null ? void 0 : _a.map(escapeLabelValueInRegexSelector).join("|");
42
+ } else if (operator === "!=|") {
43
+ operator = "!~";
44
+ value = (_b = filter.values) == null ? void 0 : _b.map(escapeLabelValueInRegexSelector).join("|");
45
+ } else if (operator === "=~" || operator === "!~") {
46
+ value = escapeLabelValueInRegexSelector(filter.value);
47
+ } else {
48
+ value = escapeLabelValueInExactSelector(filter.value);
49
+ }
50
+ return `${filter.key}${operator}"${value}"`;
51
+ }
52
+ function escapeLabelValueInExactSelector(labelValue) {
53
+ return labelValue.replace(/\\/g, "\\\\").replace(/\n/g, "\\n").replace(/"/g, '\\"');
54
+ }
55
+ function escapeLabelValueInRegexSelector(labelValue) {
56
+ return escapeLabelValueInExactSelector(escapeLokiRegexp(labelValue));
57
+ }
58
+ const RE2_METACHARACTERS = /[*+?()|\\.\[\]{}^$]/g;
59
+ function escapeLokiRegexp(value) {
60
+ return value.replace(RE2_METACHARACTERS, "\\$&");
61
+ }
62
+ function getQueriesForVariables(sourceObject) {
63
+ const runners = sceneGraph.findAllObjects(
64
+ sourceObject.getRoot(),
65
+ (o) => o instanceof SceneQueryRunner
66
+ );
67
+ const applicableRunners = filterOutInactiveRunnerDuplicates(runners).filter((r) => {
68
+ var _a, _b;
69
+ return ((_a = r.state.datasource) == null ? void 0 : _a.uid) === ((_b = sourceObject.state.datasource) == null ? void 0 : _b.uid);
70
+ });
71
+ if (applicableRunners.length === 0) {
72
+ return [];
73
+ }
74
+ const result = [];
75
+ applicableRunners.forEach((r) => {
76
+ result.push(...r.state.queries);
77
+ });
78
+ return result;
79
+ }
80
+ function filterOutInactiveRunnerDuplicates(runners) {
81
+ const groupedItems = {};
82
+ for (const item of runners) {
83
+ if (item.state.key) {
84
+ if (!(item.state.key in groupedItems)) {
85
+ groupedItems[item.state.key] = [];
86
+ }
87
+ groupedItems[item.state.key].push(item);
88
+ }
89
+ }
90
+ return Object.values(groupedItems).flatMap((group) => {
91
+ const activeItems = group.filter((item) => item.isActive);
92
+ if (activeItems.length === 0 && group.length === 1) {
93
+ return group;
94
+ }
95
+ return activeItems;
96
+ });
97
+ }
98
+ function escapeUrlPipeDelimiters(value) {
99
+ if (value === null || value === void 0) {
100
+ return "";
101
+ }
102
+ return value = /\|/g[Symbol.replace](value, "__gfp__");
103
+ }
104
+ function escapeUrlCommaDelimiters(value) {
105
+ if (value === null || value === void 0) {
106
+ return "";
107
+ }
108
+ return /,/g[Symbol.replace](value, "__gfc__");
109
+ }
110
+ function unescapeUrlDelimiters(value) {
111
+ if (value === null || value === void 0) {
112
+ return "";
113
+ }
114
+ value = /__gfp__/g[Symbol.replace](value, "|");
115
+ value = /__gfc__/g[Symbol.replace](value, ",");
116
+ return value;
117
+ }
118
+ function toUrlCommaDelimitedString(key, label) {
119
+ if (!label || key === label) {
120
+ return escapeUrlCommaDelimiters(key);
121
+ }
122
+ return [key, label].map(escapeUrlCommaDelimiters).join(",");
123
+ }
124
+ function dataFromResponse(response) {
125
+ return Array.isArray(response) ? response : response.data;
126
+ }
127
+ function responseHasError(response) {
128
+ return !Array.isArray(response) && Boolean(response.error);
129
+ }
130
+ function handleOptionGroups(values) {
131
+ const result = [];
132
+ const groupedResults = /* @__PURE__ */ new Map();
133
+ for (const value of values) {
134
+ const groupLabel = value.group;
135
+ if (groupLabel) {
136
+ let group = groupedResults.get(groupLabel);
137
+ if (!group) {
138
+ group = [];
139
+ groupedResults.set(groupLabel, group);
140
+ result.push({ label: groupLabel, options: group });
141
+ }
142
+ group.push(value);
143
+ } else {
144
+ result.push(value);
145
+ }
146
+ }
147
+ return result;
148
+ }
149
+ function getFuzzySearcher(haystack, limit = 1e4) {
150
+ const ufuzzy = new uFuzzy();
151
+ const FIRST = Array.from({ length: Math.min(limit, haystack.length) }, (_, i) => i);
152
+ return (search) => {
153
+ if (search === "") {
154
+ return FIRST;
155
+ }
156
+ const [idxs, info, order] = ufuzzy.search(haystack, search);
157
+ if (idxs) {
158
+ if (info && order) {
159
+ const outIdxs = Array(Math.min(order.length, limit));
160
+ for (let i = 0; i < outIdxs.length; i++) {
161
+ outIdxs[i] = info.idx[order[i]];
162
+ }
163
+ return outIdxs;
164
+ }
165
+ return idxs.slice(0, limit);
166
+ }
167
+ return [];
168
+ };
169
+ }
170
+
171
+ export { dataFromResponse, escapeLabelValueInExactSelector, escapeLabelValueInRegexSelector, escapeUrlCommaDelimiters, escapeUrlPipeDelimiters, getFuzzySearcher, getQueriesForVariables, handleOptionGroups, isVariableValueEqual, renderPrometheusLabelFilters, responseHasError, safeStringifyValue, toUrlCommaDelimitedString, unescapeUrlDelimiters };
172
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3ZhcmlhYmxlcy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi9jb3JlL3NjZW5lR3JhcGgvaW5kZXguanMnO1xuaW1wb3J0IHsgU2NlbmVRdWVyeVJ1bm5lciB9IGZyb20gJy4uL3F1ZXJ5aW5nL1NjZW5lUXVlcnlSdW5uZXIuanMnO1xuaW1wb3J0IHVGdXp6eSBmcm9tICdAbGVlb25peWEvdWZ1enp5JztcblxuZnVuY3Rpb24gaXNWYXJpYWJsZVZhbHVlRXF1YWwoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBpc0VxdWFsKGEsIGIpO1xufVxuZnVuY3Rpb24gc2FmZVN0cmluZ2lmeVZhbHVlKHZhbHVlKSB7XG4gIGNvbnN0IGdldENpcmN1bGFyUmVwbGFjZXIgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2VlbiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha1NldCgpO1xuICAgIHJldHVybiAoXywgdmFsdWUyKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlMiA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZTIgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlMikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2Vlbi5hZGQodmFsdWUyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTI7XG4gICAgfTtcbiAgfTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIGdldENpcmN1bGFyUmVwbGFjZXIoKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cbiAgcmV0dXJuIFwiXCI7XG59XG5mdW5jdGlvbiByZW5kZXJQcm9tZXRoZXVzTGFiZWxGaWx0ZXJzKGZpbHRlcnMpIHtcbiAgcmV0dXJuIGZpbHRlcnMubWFwKChmaWx0ZXIpID0+IHJlbmRlckZpbHRlcihmaWx0ZXIpKS5qb2luKFwiLFwiKTtcbn1cbmZ1bmN0aW9uIHJlbmRlckZpbHRlcihmaWx0ZXIpIHtcbiAgdmFyIF9hLCBfYjtcbiAgbGV0IHZhbHVlID0gXCJcIjtcbiAgbGV0IG9wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yO1xuICBpZiAob3BlcmF0b3IgPT09IFwiPXxcIikge1xuICAgIG9wZXJhdG9yID0gXCI9flwiO1xuICAgIHZhbHVlID0gKF9hID0gZmlsdGVyLnZhbHVlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLm1hcChlc2NhcGVMYWJlbFZhbHVlSW5SZWdleFNlbGVjdG9yKS5qb2luKFwifFwiKTtcbiAgfSBlbHNlIGlmIChvcGVyYXRvciA9PT0gXCIhPXxcIikge1xuICAgIG9wZXJhdG9yID0gXCIhflwiO1xuICAgIHZhbHVlID0gKF9iID0gZmlsdGVyLnZhbHVlcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLm1hcChlc2NhcGVMYWJlbFZhbHVlSW5SZWdleFNlbGVjdG9yKS5qb2luKFwifFwiKTtcbiAgfSBlbHNlIGlmIChvcGVyYXRvciA9PT0gXCI9flwiIHx8IG9wZXJhdG9yID09PSBcIiF+XCIpIHtcbiAgICB2YWx1ZSA9IGVzY2FwZUxhYmVsVmFsdWVJblJlZ2V4U2VsZWN0b3IoZmlsdGVyLnZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGVzY2FwZUxhYmVsVmFsdWVJbkV4YWN0U2VsZWN0b3IoZmlsdGVyLnZhbHVlKTtcbiAgfVxuICByZXR1cm4gYCR7ZmlsdGVyLmtleX0ke29wZXJhdG9yfVwiJHt2YWx1ZX1cImA7XG59XG5mdW5jdGlvbiBlc2NhcGVMYWJlbFZhbHVlSW5FeGFjdFNlbGVjdG9yKGxhYmVsVmFsdWUpIHtcbiAgcmV0dXJuIGxhYmVsVmFsdWUucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKTtcbn1cbmZ1bmN0aW9uIGVzY2FwZUxhYmVsVmFsdWVJblJlZ2V4U2VsZWN0b3IobGFiZWxWYWx1ZSkge1xuICByZXR1cm4gZXNjYXBlTGFiZWxWYWx1ZUluRXhhY3RTZWxlY3Rvcihlc2NhcGVMb2tpUmVnZXhwKGxhYmVsVmFsdWUpKTtcbn1cbmNvbnN0IFJFMl9NRVRBQ0hBUkFDVEVSUyA9IC9bKis/KCl8XFxcXC5cXFtcXF17fV4kXS9nO1xuZnVuY3Rpb24gZXNjYXBlTG9raVJlZ2V4cCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShSRTJfTUVUQUNIQVJBQ1RFUlMsIFwiXFxcXCQmXCIpO1xufVxuZnVuY3Rpb24gZ2V0UXVlcmllc0ZvclZhcmlhYmxlcyhzb3VyY2VPYmplY3QpIHtcbiAgY29uc3QgcnVubmVycyA9IHNjZW5lR3JhcGguZmluZEFsbE9iamVjdHMoXG4gICAgc291cmNlT2JqZWN0LmdldFJvb3QoKSxcbiAgICAobykgPT4gbyBpbnN0YW5jZW9mIFNjZW5lUXVlcnlSdW5uZXJcbiAgKTtcbiAgY29uc3QgYXBwbGljYWJsZVJ1bm5lcnMgPSBmaWx0ZXJPdXRJbmFjdGl2ZVJ1bm5lckR1cGxpY2F0ZXMocnVubmVycykuZmlsdGVyKChyKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gKChfYSA9IHIuc3RhdGUuZGF0YXNvdXJjZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnVpZCkgPT09ICgoX2IgPSBzb3VyY2VPYmplY3Quc3RhdGUuZGF0YXNvdXJjZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnVpZCk7XG4gIH0pO1xuICBpZiAoYXBwbGljYWJsZVJ1bm5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICBhcHBsaWNhYmxlUnVubmVycy5mb3JFYWNoKChyKSA9PiB7XG4gICAgcmVzdWx0LnB1c2goLi4uci5zdGF0ZS5xdWVyaWVzKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBmaWx0ZXJPdXRJbmFjdGl2ZVJ1bm5lckR1cGxpY2F0ZXMocnVubmVycykge1xuICBjb25zdCBncm91cGVkSXRlbXMgPSB7fTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIHJ1bm5lcnMpIHtcbiAgICBpZiAoaXRlbS5zdGF0ZS5rZXkpIHtcbiAgICAgIGlmICghKGl0ZW0uc3RhdGUua2V5IGluIGdyb3VwZWRJdGVtcykpIHtcbiAgICAgICAgZ3JvdXBlZEl0ZW1zW2l0ZW0uc3RhdGUua2V5XSA9IFtdO1xuICAgICAgfVxuICAgICAgZ3JvdXBlZEl0ZW1zW2l0ZW0uc3RhdGUua2V5XS5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhncm91cGVkSXRlbXMpLmZsYXRNYXAoKGdyb3VwKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlSXRlbXMgPSBncm91cC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaXNBY3RpdmUpO1xuICAgIGlmIChhY3RpdmVJdGVtcy5sZW5ndGggPT09IDAgJiYgZ3JvdXAubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVJdGVtcztcbiAgfSk7XG59XG5mdW5jdGlvbiBlc2NhcGVVcmxQaXBlRGVsaW1pdGVycyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9IC9cXHwvZ1tTeW1ib2wucmVwbGFjZV0odmFsdWUsIFwiX19nZnBfX1wiKTtcbn1cbmZ1bmN0aW9uIGVzY2FwZVVybENvbW1hRGVsaW1pdGVycyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIHJldHVybiAvLC9nW1N5bWJvbC5yZXBsYWNlXSh2YWx1ZSwgXCJfX2dmY19fXCIpO1xufVxuZnVuY3Rpb24gdW5lc2NhcGVVcmxEZWxpbWl0ZXJzKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgdmFsdWUgPSAvX19nZnBfXy9nW1N5bWJvbC5yZXBsYWNlXSh2YWx1ZSwgXCJ8XCIpO1xuICB2YWx1ZSA9IC9fX2dmY19fL2dbU3ltYm9sLnJlcGxhY2VdKHZhbHVlLCBcIixcIik7XG4gIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIHRvVXJsQ29tbWFEZWxpbWl0ZWRTdHJpbmcoa2V5LCBsYWJlbCkge1xuICBpZiAoIWxhYmVsIHx8IGtleSA9PT0gbGFiZWwpIHtcbiAgICByZXR1cm4gZXNjYXBlVXJsQ29tbWFEZWxpbWl0ZXJzKGtleSk7XG4gIH1cbiAgcmV0dXJuIFtrZXksIGxhYmVsXS5tYXAoZXNjYXBlVXJsQ29tbWFEZWxpbWl0ZXJzKS5qb2luKFwiLFwiKTtcbn1cbmZ1bmN0aW9uIGRhdGFGcm9tUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmVzcG9uc2UpID8gcmVzcG9uc2UgOiByZXNwb25zZS5kYXRhO1xufVxuZnVuY3Rpb24gcmVzcG9uc2VIYXNFcnJvcihyZXNwb25zZSkge1xuICByZXR1cm4gIUFycmF5LmlzQXJyYXkocmVzcG9uc2UpICYmIEJvb2xlYW4ocmVzcG9uc2UuZXJyb3IpO1xufVxuZnVuY3Rpb24gaGFuZGxlT3B0aW9uR3JvdXBzKHZhbHVlcykge1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgY29uc3QgZ3JvdXBlZFJlc3VsdHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgIGNvbnN0IGdyb3VwTGFiZWwgPSB2YWx1ZS5ncm91cDtcbiAgICBpZiAoZ3JvdXBMYWJlbCkge1xuICAgICAgbGV0IGdyb3VwID0gZ3JvdXBlZFJlc3VsdHMuZ2V0KGdyb3VwTGFiZWwpO1xuICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICBncm91cCA9IFtdO1xuICAgICAgICBncm91cGVkUmVzdWx0cy5zZXQoZ3JvdXBMYWJlbCwgZ3JvdXApO1xuICAgICAgICByZXN1bHQucHVzaCh7IGxhYmVsOiBncm91cExhYmVsLCBvcHRpb25zOiBncm91cCB9KTtcbiAgICAgIH1cbiAgICAgIGdyb3VwLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRGdXp6eVNlYXJjaGVyKGhheXN0YWNrLCBsaW1pdCA9IDFlNCkge1xuICBjb25zdCB1ZnV6enkgPSBuZXcgdUZ1enp5KCk7XG4gIGNvbnN0IEZJUlNUID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogTWF0aC5taW4obGltaXQsIGhheXN0YWNrLmxlbmd0aCkgfSwgKF8sIGkpID0+IGkpO1xuICByZXR1cm4gKHNlYXJjaCkgPT4ge1xuICAgIGlmIChzZWFyY2ggPT09IFwiXCIpIHtcbiAgICAgIHJldHVybiBGSVJTVDtcbiAgICB9XG4gICAgY29uc3QgW2lkeHMsIGluZm8sIG9yZGVyXSA9IHVmdXp6eS5zZWFyY2goaGF5c3RhY2ssIHNlYXJjaCk7XG4gICAgaWYgKGlkeHMpIHtcbiAgICAgIGlmIChpbmZvICYmIG9yZGVyKSB7XG4gICAgICAgIGNvbnN0IG91dElkeHMgPSBBcnJheShNYXRoLm1pbihvcmRlci5sZW5ndGgsIGxpbWl0KSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3V0SWR4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG91dElkeHNbaV0gPSBpbmZvLmlkeFtvcmRlcltpXV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dElkeHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWR4cy5zbGljZSgwLCBsaW1pdCk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfTtcbn1cblxuZXhwb3J0IHsgZGF0YUZyb21SZXNwb25zZSwgZXNjYXBlTGFiZWxWYWx1ZUluRXhhY3RTZWxlY3RvciwgZXNjYXBlTGFiZWxWYWx1ZUluUmVnZXhTZWxlY3RvciwgZXNjYXBlVXJsQ29tbWFEZWxpbWl0ZXJzLCBlc2NhcGVVcmxQaXBlRGVsaW1pdGVycywgZ2V0RnV6enlTZWFyY2hlciwgZ2V0UXVlcmllc0ZvclZhcmlhYmxlcywgaGFuZGxlT3B0aW9uR3JvdXBzLCBpc1ZhcmlhYmxlVmFsdWVFcXVhbCwgcmVuZGVyUHJvbWV0aGV1c0xhYmVsRmlsdGVycywgcmVzcG9uc2VIYXNFcnJvciwgc2FmZVN0cmluZ2lmeVZhbHVlLCB0b1VybENvbW1hRGVsaW1pdGVkU3RyaW5nLCB1bmVzY2FwZVVybERlbGltaXRlcnMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhScGJITXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwzTnlZeTkyWVhKcFlXSnNaWE12ZFhScGJITXVkSE1pWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhzZ2FYTkZjWFZoYkNCOUlHWnliMjBnSjJ4dlpHRnphQ2M3WEc1cGJYQnZjblFnZXlCV1lYSnBZV0pzWlZaaGJIVmxJSDBnWm5KdmJTQW5MaTkwZVhCbGN5YzdYRzVwYlhCdmNuUWdleUJCWkVodlkxWmhjbWxoWW14bFJtbHNkR1Z5TENCRVlYUmhVWFZsY25sRmNuSnZjaXdnUjJWMFZHRm5VbVZ6Y0c5dWMyVXNJRTFsZEhKcFkwWnBibVJXWVd4MVpTd2dVMlZzWldOMFlXSnNaVlpoYkhWbElIMGdabkp2YlNBblFHZHlZV1poYm1FdlpHRjBZU2M3WEc1cGJYQnZjblFnZXlCelkyVnVaVWR5WVhCb0lIMGdabkp2YlNBbkxpNHZZMjl5WlM5elkyVnVaVWR5WVhCb0p6dGNibWx0Y0c5eWRDQjdJRk5qWlc1bFJHRjBZVkYxWlhKNUxDQlRZMlZ1WlU5aWFtVmpkQ3dnVTJObGJtVlBZbXBsWTNSVGRHRjBaU0I5SUdaeWIyMGdKeTR1TDJOdmNtVXZkSGx3WlhNbk8xeHVhVzF3YjNKMElIc2dVMk5sYm1WUmRXVnllVkoxYm01bGNpQjlJR1p5YjIwZ0p5NHVMM0YxWlhKNWFXNW5MMU5qWlc1bFVYVmxjbmxTZFc1dVpYSW5PMXh1YVcxd2IzSjBJSHNnUkdGMFlWTnZkWEpqWlZKbFppQjlJR1p5YjIwZ0owQm5jbUZtWVc1aEwzTmphR1Z0WVNjN1hHNXBiWEJ2Y25RZ2RVWjFlbnA1SUdaeWIyMGdKMEJzWldWdmJtbDVZUzkxWm5WNmVua25PMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1lYSnBZV0pzWlZaaGJIVmxSWEYxWVd3b1lUb2dWbUZ5YVdGaWJHVldZV3gxWlNCOElHNTFiR3dnZkNCMWJtUmxabWx1WldRc0lHSTZJRlpoY21saFlteGxWbUZzZFdVZ2ZDQnVkV3hzSUh3Z2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUdsbUlDaGhJRDA5UFNCaUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdhWE5GY1hWaGJDaGhMQ0JpS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE5oWm1WVGRISnBibWRwWm5sV1lXeDFaU2gyWVd4MVpUb2dkVzVyYm05M2Jpa2dlMXh1SUNBdkx5QkJkbTlwWkNCamFYSmpkV3hoY2lCeVpXWmxjbVZ1WTJWeklHbG5ibTl5YVc1bklIUm9iM05sSUhKbFptVnlaVzVqWlhOY2JpQWdZMjl1YzNRZ1oyVjBRMmx5WTNWc1lYSlNaWEJzWVdObGNpQTlJQ2dwSUQwK0lIdGNiaUFnSUNCamIyNXpkQ0J6WldWdUlEMGdibVYzSUZkbFlXdFRaWFFvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdLRjg2SUhOMGNtbHVaeXdnZG1Gc2RXVTZJRzlpYW1WamRDQjhJRzUxYkd3cElEMCtJSHRjYmlBZ0lDQWdJR2xtSUNoMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUNkdlltcGxZM1FuSUNZbUlIWmhiSFZsSUNFOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h6WldWdUxtaGhjeWgyWVd4MVpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2MyVmxiaTVoWkdRb2RtRnNkV1VwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0FnSUgwN1hHNGdJSDA3WEc1Y2JpQWdkSEo1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdTbE5QVGk1emRISnBibWRwWm5rb2RtRnNkV1VzSUdkbGRFTnBjbU4xYkdGeVVtVndiR0ZqWlhJb0tTazdYRzRnSUgwZ1kyRjBZMmdnS0dWeWNtOXlLU0I3WEc0Z0lDQWdZMjl1YzI5c1pTNWxjbkp2Y2lobGNuSnZjaWs3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnSnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5Wlc1a1pYSlFjbTl0WlhSb1pYVnpUR0ZpWld4R2FXeDBaWEp6S0dacGJIUmxjbk02SUVGa1NHOWpWbUZ5YVdGaWJHVkdhV3gwWlhKYlhTa2dlMXh1SUNCeVpYUjFjbTRnWm1sc2RHVnljeTV0WVhBb0tHWnBiSFJsY2lrZ1BUNGdjbVZ1WkdWeVJtbHNkR1Z5S0dacGJIUmxjaWtwTG1wdmFXNG9KeXduS1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnY21WdVpHVnlSbWxzZEdWeUtHWnBiSFJsY2pvZ1FXUkliMk5XWVhKcFlXSnNaVVpwYkhSbGNpa2dlMXh1SUNCc1pYUWdkbUZzZFdVZ1BTQW5KenRjYmlBZ2JHVjBJRzl3WlhKaGRHOXlJRDBnWm1sc2RHVnlMbTl3WlhKaGRHOXlPMXh1WEc0Z0lDOHZJRzFoY0NCY0ltOXVaU0J2Wmx3aUlHOXdaWEpoZEc5eUlIUnZJSEpsWjJWNFhHNGdJR2xtSUNodmNHVnlZWFJ2Y2lBOVBUMGdKejE4SnlrZ2UxeHVJQ0FnSUc5d1pYSmhkRzl5SUQwZ0p6MStKenRjYmlBZ0lDQXZMeUJVVDBSUElISmxiVzkyWlNCM2FHVnVJSGRsSjNKbElHOXVJSFJvWlNCc1lYUmxjM1FnZG1WeWMybHZiaUJ2WmlCQVozSmhabUZ1WVM5a1lYUmhYRzRnSUNBZ0x5OGdRSFJ6TFdWNGNHVmpkQzFsY25KdmNseHVJQ0FnSUhaaGJIVmxJRDBnWm1sc2RHVnlMblpoYkhWbGN6OHViV0Z3S0dWelkyRndaVXhoWW1Wc1ZtRnNkV1ZKYmxKbFoyVjRVMlZzWldOMGIzSXBMbXB2YVc0b0ozd25LVHRjYmlBZ2ZTQmxiSE5sSUdsbUlDaHZjR1Z5WVhSdmNpQTlQVDBnSnlFOWZDY3BJSHRjYmlBZ0lDQnZjR1Z5WVhSdmNpQTlJQ2NoZmljN1hHNGdJQ0FnTHk4Z1ZFOUVUeUJ5WlcxdmRtVWdkMmhsYmlCM1pTZHlaU0J2YmlCMGFHVWdiR0YwWlhOMElIWmxjbk5wYjI0Z2IyWWdRR2R5WVdaaGJtRXZaR0YwWVZ4dUlDQWdJQzh2SUVCMGN5MWxlSEJsWTNRdFpYSnliM0pjYmlBZ0lDQjJZV3gxWlNBOUlHWnBiSFJsY2k1MllXeDFaWE0vTG0xaGNDaGxjMk5oY0dWTVlXSmxiRlpoYkhWbFNXNVNaV2RsZUZObGJHVmpkRzl5S1M1cWIybHVLQ2Q4SnlrN1hHNGdJSDBnWld4elpTQnBaaUFvYjNCbGNtRjBiM0lnUFQwOUlDYzlmaWNnZkh3Z2IzQmxjbUYwYjNJZ1BUMDlJQ2NoZmljcElIdGNiaUFnSUNCMllXeDFaU0E5SUdWelkyRndaVXhoWW1Wc1ZtRnNkV1ZKYmxKbFoyVjRVMlZzWldOMGIzSW9abWxzZEdWeUxuWmhiSFZsS1R0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCMllXeDFaU0E5SUdWelkyRndaVXhoWW1Wc1ZtRnNkV1ZKYmtWNFlXTjBVMlZzWldOMGIzSW9abWxzZEdWeUxuWmhiSFZsS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCZ0pIdG1hV3gwWlhJdWEyVjVmU1I3YjNCbGNtRjBiM0o5WENJa2UzWmhiSFZsZlZ3aVlEdGNibjFjYmx4dUx5OGdZbUZ6WldRZ2IyNGdkR2hsSUc5d1pXNXRaWFJ5YVdOekxXUnZZM1Z0Wlc1MFlYUnBiMjRzSUhSb1pTQXpJSE41YldKdmJITWdkMlVnYUdGMlpTQjBieUJvWVc1a2JHVWdZWEpsT2x4dUx5OGdMU0JjWEc0Z0xpNHVJSFJvWlNCdVpYZHNhVzVsSUdOb1lYSmhZM1JsY2x4dUx5OGdMU0JjWENBZ0xpNHVJSFJvWlNCaVlXTnJjMnhoYzJnZ1kyaGhjbUZqZEdWeVhHNHZMeUF0SUZ3aUlDQXVMaTRnZEdobElHUnZkV0pzWlMxeGRXOTBaU0JqYUdGeVlXTjBaWEpjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJsYzJOaGNHVk1ZV0psYkZaaGJIVmxTVzVGZUdGamRGTmxiR1ZqZEc5eUtHeGhZbVZzVm1Gc2RXVTZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUhKbGRIVnliaUJzWVdKbGJGWmhiSFZsTG5KbGNHeGhZMlVvTDF4Y1hGd3ZaeXdnSjF4Y1hGeGNYRnhjSnlrdWNtVndiR0ZqWlNndlhGeHVMMmNzSUNkY1hGeGNiaWNwTG5KbGNHeGhZMlVvTDF3aUwyY3NJQ2RjWEZ4Y1hDSW5LVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVnpZMkZ3WlV4aFltVnNWbUZzZFdWSmJsSmxaMlY0VTJWc1pXTjBiM0lvYkdGaVpXeFdZV3gxWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdjbVYwZFhKdUlHVnpZMkZ3WlV4aFltVnNWbUZzZFdWSmJrVjRZV04wVTJWc1pXTjBiM0lvWlhOallYQmxURzlyYVZKbFoyVjRjQ2hzWVdKbGJGWmhiSFZsS1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzFKbFoyVjRVMlZzWldOMGIzSW9jMlZzWldOMGIzSS9PaUJ6ZEhKcGJtY3BJSHRjYmlBZ2FXWWdLSE5sYkdWamRHOXlJQ1ltSUNoelpXeGxZM1J2Y2k1cGJtTnNkV1JsY3lnblBYNG5LU0I4ZkNCelpXeGxZM1J2Y2k1cGJtTnNkV1JsY3lnbklYNG5LU2twSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzU5WEc1Y2JpOHZJRXh2YTJrZ2NtVm5kV3hoY2kxbGVIQnlaWE56YVc5dWN5QjFjMlVnZEdobElGSkZNaUJ6ZVc1MFlYZ2dLR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzluYjI5bmJHVXZjbVV5TDNkcGEya3ZVM2x1ZEdGNEtTeGNiaTh2SUhOdklHVjJaWEo1SUdOb1lYSmhZM1JsY2lCMGFHRjBJRzFoZEdOb1pYTWdjMjl0WlhSb2FXNW5JR2x1SUhSb1lYUWdiR2x6ZENCb1lYTWdkRzhnWW1VZ1pYTmpZWEJsWkM1Y2JpOHZJSFJvWlNCc2FYTjBJRzltSUcxbGRHRWdZMmhoY21GamRHVnljeUJwY3pvZ0tpcy9LQ2w4WEZ3dVcxMTdmVjRrWEc0dkx5QjNaU0J0WVd0bElHRWdhbUYyWVhOamNtbHdkQ0J5WldkMWJHRnlJR1Y0Y0hKbGMzTnBiMjRnZEdoaGRDQnRZWFJqYUdWeklIUm9iM05sSUdOb1lYSmhZM1JsY25NNlhHNWpiMjV6ZENCU1JUSmZUVVZVUVVOSVFWSkJRMVJGVWxNZ1BTQXZXeW9yUHlncGZGeGNYRnd1WEZ4YlhGeGRlMzFlSkYwdlp6dGNibVoxYm1OMGFXOXVJR1Z6WTJGd1pVeHZhMmxTWldkbGVIQW9kbUZzZFdVNklITjBjbWx1WnlrNklITjBjbWx1WnlCN1hHNGdJSEpsZEhWeWJpQjJZV3gxWlM1eVpYQnNZV05sS0ZKRk1sOU5SVlJCUTBoQlVrRkRWRVZTVXl3Z0oxeGNYRndrSmljcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVkbGRDQmhiR3dnY1hWbGNtbGxjeUJwYmlCMGFHVWdjMk5sYm1VZ2RHaGhkQ0JvWVhabElIUm9aU0J6WVcxbElHUmhkR0Z6YjNWeVkyVWdZWE1nY0hKdmRtbGtaV1FnYzI5MWNtTmxJRzlpYW1WamRGeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFVYVmxjbWxsYzBadmNsWmhjbWxoWW14bGN5aGNiaUFnYzI5MWNtTmxUMkpxWldOME9pQlRZMlZ1WlU5aWFtVmpkRHhUWTJWdVpVOWlhbVZqZEZOMFlYUmxJQ1lnZXlCa1lYUmhjMjkxY21ObE9pQkVZWFJoVTI5MWNtTmxVbVZtSUh3Z2JuVnNiQ0I5UGx4dUtTQjdYRzRnSUdOdmJuTjBJSEoxYm01bGNuTWdQU0J6WTJWdVpVZHlZWEJvTG1acGJtUkJiR3hQWW1wbFkzUnpLRnh1SUNBZ0lITnZkWEpqWlU5aWFtVmpkQzVuWlhSU2IyOTBLQ2tzWEc0Z0lDQWdLRzhwSUQwK0lHOGdhVzV6ZEdGdVkyVnZaaUJUWTJWdVpWRjFaWEo1VW5WdWJtVnlYRzRnSUNrZ1lYTWdVMk5sYm1WUmRXVnllVkoxYm01bGNsdGRPMXh1WEc0Z0lHTnZibk4wSUdGd2NHeHBZMkZpYkdWU2RXNXVaWEp6SUQwZ1ptbHNkR1Z5VDNWMFNXNWhZM1JwZG1WU2RXNXVaWEpFZFhCc2FXTmhkR1Z6S0hKMWJtNWxjbk1wTG1acGJIUmxjaWdvY2lrZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCeUxuTjBZWFJsTG1SaGRHRnpiM1Z5WTJVL0xuVnBaQ0E5UFQwZ2MyOTFjbU5sVDJKcVpXTjBMbk4wWVhSbExtUmhkR0Z6YjNWeVkyVS9MblZwWkR0Y2JpQWdmU2s3WEc1Y2JpQWdhV1lnS0dGd2NHeHBZMkZpYkdWU2RXNXVaWEp6TG14bGJtZDBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lISmxkSFZ5YmlCYlhUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElISmxjM1ZzZERvZ1UyTmxibVZFWVhSaFVYVmxjbmxiWFNBOUlGdGRPMXh1SUNCaGNIQnNhV05oWW14bFVuVnVibVZ5Y3k1bWIzSkZZV05vS0NoeUtTQTlQaUI3WEc0Z0lDQWdjbVZ6ZFd4MExuQjFjMmdvTGk0dWNpNXpkR0YwWlM1eGRXVnlhV1Z6S1R0Y2JpQWdmU2s3WEc1Y2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1THk4Z1JtbHNkR1Z5Y3lCdmRYUWdhVzVoWTNScGRtVWdjblZ1Ym1WeUlHUjFjR3hwWTJGMFpYTXNJR3RsWlhCcGJtY2diMjVzZVNCMGFHVWdiMjVsY3lCMGFHRjBJR0Z5WlNCamRYSnlaVzUwYkhrZ1lXTjBhWFpsTGx4dUx5OGdWR2hwY3lCcGN5QnVaV1ZrWldRZ1ptOXlJSE5qYm1WaGNtbHZjeUIzYUdGdUlHRWdjWFZsY25rZ2NuVnVibVZ5SUdseklHTnNiMjVsWkNCaGJtUWdkR2hsSUc5eWFXZHBibUZzSUdseklHNXZkQ0J5WlcxdmRtVmtJR0oxZENCa1pTMWhZM1JwZG1GMFpXUXVYRzR2THlCRFlXNGdhR0Z3Y0dWdUlHa3VaUzRnZDJobGJpQmxaR2wwYVc1bklHRWdjR0Z1Wld3Z2FXNGdSM0poWm1GdVlTQkRiM0psSUdSaGMyaGliMkZ5WkhNdVhHNW1kVzVqZEdsdmJpQm1hV3gwWlhKUGRYUkpibUZqZEdsMlpWSjFibTVsY2tSMWNHeHBZMkYwWlhNb2NuVnVibVZ5Y3pvZ1UyTmxibVZSZFdWeWVWSjFibTVsY2x0ZEtTQjdYRzRnSUM4dklFZHliM1Z3SUdsMFpXMXpJR0o1SUd0bGVWeHVJQ0JqYjI1emRDQm5jbTkxY0dWa1NYUmxiWE02SUhzZ1cydGxlVG9nYzNSeWFXNW5YVG9nVTJObGJtVlJkV1Z5ZVZKMWJtNWxjbHRkSUgwZ1BTQjdmVHRjYmx4dUlDQm1iM0lnS0dOdmJuTjBJR2wwWlcwZ2IyWWdjblZ1Ym1WeWN5a2dlMXh1SUNBZ0lHbG1JQ2hwZEdWdExuTjBZWFJsTG10bGVTa2dlMXh1SUNBZ0lDQWdhV1lnS0NFb2FYUmxiUzV6ZEdGMFpTNXJaWGtnYVc0Z1ozSnZkWEJsWkVsMFpXMXpLU2tnZTF4dUlDQWdJQ0FnSUNCbmNtOTFjR1ZrU1hSbGJYTmJhWFJsYlM1emRHRjBaUzVyWlhsZElEMGdXMTA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JuY205MWNHVmtTWFJsYlhOYmFYUmxiUzV6ZEdGMFpTNXJaWGxkTG5CMWMyZ29hWFJsYlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5OGdSbWxzZEdWeUlHOTFkQ0JwYm1GamRHbDJaU0JwZEdWdGN5QmhibVFnWTI5dVkyRjBaVzVoZEdVZ1lXTjBhWFpsSUdsMFpXMXpYRzRnSUhKbGRIVnliaUJQWW1wbFkzUXVkbUZzZFdWektHZHliM1Z3WldSSmRHVnRjeWt1Wm14aGRFMWhjQ2dvWjNKdmRYQXBJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQmhZM1JwZG1WSmRHVnRjeUE5SUdkeWIzVndMbVpwYkhSbGNpZ29hWFJsYlNrZ1BUNGdhWFJsYlM1cGMwRmpkR2wyWlNrN1hHNGdJQ0FnTHk4Z1MyVmxjQ0JwYm1GamRHbDJaU0JwZEdWdGN5QnBaaUIwYUdWeVpTZHpJRzl1YkhrZ2IyNWxJR2wwWlcwZ2QybDBhQ0IwYUdVZ2EyVjVYRzRnSUNBZ2FXWWdLR0ZqZEdsMlpVbDBaVzF6TG14bGJtZDBhQ0E5UFQwZ01DQW1KaUJuY205MWNDNXNaVzVuZEdnZ1BUMDlJREVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJuY205MWNEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR0ZqZEdsMlpVbDBaVzF6TzF4dUlDQjlLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVnpZMkZ3WlZWeWJGQnBjR1ZFWld4cGJXbDBaWEp6S0haaGJIVmxPaUJ6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1FwT2lCemRISnBibWNnZTF4dUlDQnBaaUFvZG1Gc2RXVWdQVDA5SUc1MWJHd2dmSHdnZG1Gc2RXVWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUFuSnp0Y2JpQWdmVnh1WEc0Z0lDOHZJRkpsY0d4aFkyVWdkR2hsSUhCcGNHVWdaSFZsSUhSdklIVnphVzVuSUdsMElHRnpJR0VnWm1sc2RHVnlJSE5sY0dGeVlYUnZjbHh1SUNCeVpYUjFjbTRnS0haaGJIVmxJRDBnTDF4Y2ZDOW5XMU41YldKdmJDNXlaWEJzWVdObFhTaDJZV3gxWlN3Z0oxOWZaMlp3WDE4bktTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCbGMyTmhjR1ZWY214RGIyMXRZVVJsYkdsdGFYUmxjbk1vZG1Gc2RXVTZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaQ2s2SUhOMGNtbHVaeUI3WEc0Z0lHbG1JQ2gyWVd4MVpTQTlQVDBnYm5Wc2JDQjhmQ0IyWVd4MVpTQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2NuTzF4dUlDQjlYRzVjYmlBZ0x5OGdVbVZ3YkdGalpTQjBhR1VnWTI5dGJXRWdaSFZsSUhSdklIVnphVzVuSUdsMElHRnpJR0VnZG1Gc2RXVXZiR0ZpWld3Z2MyVndZWEpoZEc5eVhHNGdJSEpsZEhWeWJpQXZMQzluVzFONWJXSnZiQzV5WlhCc1lXTmxYU2gyWVd4MVpTd2dKMTlmWjJaalgxOG5LVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIVnVaWE5qWVhCbFZYSnNSR1ZzYVcxcGRHVnljeWgyWVd4MVpUb2djM1J5YVc1bklId2dkVzVrWldacGJtVmtLVG9nYzNSeWFXNW5JSHRjYmlBZ2FXWWdLSFpoYkhWbElEMDlQU0J1ZFd4c0lIeDhJSFpoYkhWbElEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdKeWM3WEc0Z0lIMWNibHh1SUNCMllXeDFaU0E5SUM5ZlgyZG1jRjlmTDJkYlUzbHRZbTlzTG5KbGNHeGhZMlZkS0haaGJIVmxMQ0FuZkNjcE8xeHVJQ0IyWVd4MVpTQTlJQzlmWDJkbVkxOWZMMmRiVTNsdFltOXNMbkpsY0d4aFkyVmRLSFpoYkhWbExDQW5MQ2NwTzF4dVhHNGdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFJ2VlhKc1EyOXRiV0ZFWld4cGJXbDBaV1JUZEhKcGJtY29hMlY1T2lCemRISnBibWNzSUd4aFltVnNQem9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0x5OGdUMjFwZENCbWIzSWdhV1JsYm5ScFkyRnNJR3RsZVM5c1lXSmxiQ0J2Y2lCM2FHVnVJR3hoWW1Wc0lHbHpJRzV2ZENCelpYUWdZWFFnWVd4c1hHNGdJR2xtSUNnaGJHRmlaV3dnZkh3Z2EyVjVJRDA5UFNCc1lXSmxiQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmxjMk5oY0dWVmNteERiMjF0WVVSbGJHbHRhWFJsY25Nb2EyVjVLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJiYTJWNUxDQnNZV0psYkYwdWJXRndLR1Z6WTJGd1pWVnliRU52YlcxaFJHVnNhVzFwZEdWeWN5a3VhbTlwYmlnbkxDY3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pHRjBZVVp5YjIxU1pYTndiMjV6WlNoeVpYTndiMjV6WlRvZ1IyVjBWR0ZuVW1WemNHOXVjMlVnZkNCTlpYUnlhV05HYVc1a1ZtRnNkV1ZiWFNrZ2UxeHVJQ0J5WlhSMWNtNGdRWEp5WVhrdWFYTkJjbkpoZVNoeVpYTndiMjV6WlNrZ1B5QnlaWE53YjI1elpTQTZJSEpsYzNCdmJuTmxMbVJoZEdFN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5WlhOd2IyNXpaVWhoYzBWeWNtOXlLRnh1SUNCeVpYTndiMjV6WlRvZ1IyVjBWR0ZuVW1WemNHOXVjMlVnZkNCTlpYUnlhV05HYVc1a1ZtRnNkV1ZiWFZ4dUtUb2djbVZ6Y0c5dWMyVWdhWE1nUjJWMFZHRm5VbVZ6Y0c5dWMyVWdKaUI3SUdWeWNtOXlPaUJFWVhSaFVYVmxjbmxGY25KdmNpQjlJSHRjYmlBZ2NtVjBkWEp1SUNGQmNuSmhlUzVwYzBGeWNtRjVLSEpsYzNCdmJuTmxLU0FtSmlCQ2IyOXNaV0Z1S0hKbGMzQnZibk5sTG1WeWNtOXlLVHRjYm4xY2JseHVMeThnUTI5c2JHVmpkQ0JoSUdac1lYUWdiR2x6ZENCdlppQlRaV3hsWTNSaFlteGxWbUZzZFdWeklIZHBkR2dnWVNCZ1ozSnZkWEJnSUhCeWIzQmxjblI1SUdsdWRHOGdZU0JvYVdWeVlYSmphR2xqWVd3Z2JHbHpkQ0IzYVhSb0lHZHliM1Z3YzF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdoaGJtUnNaVTl3ZEdsdmJrZHliM1Z3Y3loMllXeDFaWE02SUZObGJHVmpkR0ZpYkdWV1lXeDFaVnRkS1RvZ1FYSnlZWGs4VTJWc1pXTjBZV0pzWlZaaGJIVmxQSE4wY21sdVp6NCtJSHRjYmlBZ1kyOXVjM1FnY21WemRXeDBPaUJCY25KaGVUeFRaV3hsWTNSaFlteGxWbUZzZFdVOGMzUnlhVzVuUGo0Z1BTQmJYVHRjYmlBZ1kyOXVjM1FnWjNKdmRYQmxaRkpsYzNWc2RITWdQU0J1WlhjZ1RXRndQSE4wY21sdVp5d2dRWEp5WVhrOFUyVnNaV04wWVdKc1pWWmhiSFZsUEhOMGNtbHVaejQrUGlncE8xeHVYRzRnSUdadmNpQW9ZMjl1YzNRZ2RtRnNkV1VnYjJZZ2RtRnNkV1Z6S1NCN1hHNGdJQ0FnWTI5dWMzUWdaM0p2ZFhCTVlXSmxiQ0E5SUhaaGJIVmxMbWR5YjNWd08xeHVJQ0FnSUdsbUlDaG5jbTkxY0V4aFltVnNLU0I3WEc0Z0lDQWdJQ0JzWlhRZ1ozSnZkWEFnUFNCbmNtOTFjR1ZrVW1WemRXeDBjeTVuWlhRb1ozSnZkWEJNWVdKbGJDazdYRzVjYmlBZ0lDQWdJR2xtSUNnaFozSnZkWEFwSUh0Y2JpQWdJQ0FnSUNBZ1ozSnZkWEFnUFNCYlhUdGNiaUFnSUNBZ0lDQWdaM0p2ZFhCbFpGSmxjM1ZzZEhNdWMyVjBLR2R5YjNWd1RHRmlaV3dzSUdkeWIzVndLVHRjYmlBZ0lDQWdJQ0FnY21WemRXeDBMbkIxYzJnb2V5QnNZV0psYkRvZ1ozSnZkWEJNWVdKbGJDd2diM0IwYVc5dWN6b2daM0p2ZFhBZ2ZTazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2R5YjNWd0xuQjFjMmdvZG1Gc2RXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYTjFiSFF1Y0hWemFDaDJZV3gxWlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRVoxZW5wNVUyVmhjbU5vWlhJb2FHRjVjM1JoWTJzNklITjBjbWx1WjF0ZExDQnNhVzFwZENBOUlERXdYekF3TUNrZ2UxeHVJQ0JqYjI1emRDQjFablY2ZW5rZ1BTQnVaWGNnZFVaMWVucDVLQ2s3WEc1Y2JpQWdZMjl1YzNRZ1JrbFNVMVFnUFNCQmNuSmhlUzVtY205dEtIc2diR1Z1WjNSb09pQk5ZWFJvTG0xcGJpaHNhVzFwZEN3Z2FHRjVjM1JoWTJzdWJHVnVaM1JvS1NCOUxDQW9YeXdnYVNrZ1BUNGdhU2s3WEc1Y2JpQWdMeThnY21WMGRYSnVjeUJ0WVhSamFHVmtJR2x1WkdsalpYTWdZbmtnY1hWaGJHbDBlVnh1SUNCeVpYUjFjbTRnS0hObFlYSmphRG9nYzNSeWFXNW5LVG9nYm5WdFltVnlXMTBnUFQ0Z2UxeHVJQ0FnSUdsbUlDaHpaV0Z5WTJnZ1BUMDlJQ2NuS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnUmtsU1UxUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnVzJsa2VITXNJR2x1Wm04c0lHOXlaR1Z5WFNBOUlIVm1kWHA2ZVM1elpXRnlZMmdvYUdGNWMzUmhZMnNzSUhObFlYSmphQ2s3WEc1Y2JpQWdJQ0JwWmlBb2FXUjRjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHbHVabThnSmlZZ2IzSmtaWElwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYjNWMFNXUjRjeUE5SUVGeWNtRjVLRTFoZEdndWJXbHVLRzl5WkdWeUxteGxibWQwYUN3Z2JHbHRhWFFwS1R0Y2JseHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzkxZEVsa2VITXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnZkWFJKWkhoelcybGRJRDBnYVc1bWJ5NXBaSGhiYjNKa1pYSmJhVjFkTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHOTFkRWxrZUhNN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lISmxkSFZ5YmlCcFpIaHpMbk5zYVdObEtEQXNJR3hwYldsMEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnVzEwN1hHNGdJSDA3WEc1OVhHNGlYU3dpYm1GdFpYTWlPbHNpZG1Gc2RXVWlYU3dpYldGd2NHbHVaM01pT2lJN096czdPMEZCVTJkQ0xGTkJRVUVzYjBKQlFVRXNRMEZCY1VJc1IwRkJjVU1zUTBGQmNVTXNSVUZCUVR0QlFVTTNSeXhGUVVGQkxFbEJRVWtzVFVGQlRTeERRVUZITEVWQlFVRTdRVUZEV0N4SlFVRlBMRTlCUVVFc1NVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZEdEJRVVZCTEVWQlFVOHNUMEZCUVN4UFFVRkJMRU5CUVZFc1IwRkJSeXhEUVVGRExFTkJRVUVzUTBGQlFUdEJRVU55UWl4RFFVRkJPMEZCUlU4c1UwRkJVeXh0UWtGQmJVSXNTMEZCWjBJc1JVRkJRVHRCUVVWcVJDeEZRVUZCTEUxQlFVMHNjMEpCUVhOQ0xFMUJRVTA3UVVGRGFFTXNTVUZCVFN4TlFVRkJMRWxCUVVFc2RVSkJRVmNzVDBGQlVTeEZRVUZCTEVOQlFVRTdRVUZEZWtJc1NVRkJUeXhQUVVGQkxFTkJRVU1zUjBGQlYwRXNUVUZCZVVJc1MwRkJRVHRCUVVNeFF5eE5RVUZCTEVsQlFVa3NUMEZCVDBFc1RVRkJRVUVzUzBGQlZTeFJRVUZaUVN4SlFVRkJRU3hOUVVGQlFTeExRVUZWTEVsQlFVMHNSVUZCUVR0QlFVTXZReXhSUVVGSkxFbEJRVUVzU1VGQlFTeERRVUZMTEVkQlFVbEJMRU5CUVVGQkxFMUJRVXNzUTBGQlJ5eEZRVUZCTzBGQlEyNUNMRlZCUVVFc1QwRkJRVHRCUVVGQkxGTkJRMFk3UVVGRFFTeFJRVUZCTEVsQlFVRXNRMEZCU3l4SlFVRkpRU3hOUVVGTExFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEyaENPMEZCUTBFc1RVRkJUMEVzVDBGQlFVRXNUVUZCUVVFc1EwRkJRVUU3UVVGQlFTeExRVU5VTEVOQlFVRTdRVUZCUVN4SFFVTkdMRU5CUVVFN1FVRkZRU3hGUVVGSkxFbEJRVUU3UVVGRFJpeEpRVUZCTEU5QlFVOHNTVUZCU3l4RFFVRkJMRk5CUVVFc1EwRkJWU3hMUVVGUExFVkJRVUVzYlVKQlFVRXNSVUZCY1VJc1EwRkJRU3hEUVVGQk8wRkJRVUVzVjBGRE0wTXNTMEZCVUN4RlFVRkJPMEZCUTBFc1NVRkJRU3hQUVVGQkxFTkJRVkVzVFVGQlRTeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTNKQ08wRkJSVUVzUlVGQlR5eFBRVUZCTEVWQlFVRXNRMEZCUVR0QlFVTlVMRU5CUVVFN1FVRkZUeXhUUVVGVExEWkNRVUUyUWl4UFFVRm5ReXhGUVVGQk8wRkJRek5GTEVWQlFVOHNUMEZCUVN4UFFVRkJMRU5CUVZFc1NVRkJTU3hEUVVGRExFMUJRVUVzUzBGQlZ5eGhRVUZoTEUxQlFVMHNRMEZCUXl4RFFVRkZMRU5CUVVFc1NVRkJRU3hEUVVGTExFZEJRVWNzUTBGQlFTeERRVUZCTzBGQlF5OUVMRU5CUVVFN1FVRkZRU3hUUVVGVExHRkJRV0VzVFVGQk5rSXNSVUZCUVR0QlFUZERia1FzUlVGQlFTeEpRVUZCTEVWQlFVRXNSVUZCUVN4RlFVRkJMRU5CUVVFN1FVRTRRMFVzUlVGQlFTeEpRVUZKTEV0QlFWRXNSMEZCUVN4RlFVRkJMRU5CUVVFN1FVRkRXaXhGUVVGQkxFbEJRVWtzVjBGQlZ5eE5RVUZQTEVOQlFVRXNVVUZCUVN4RFFVRkJPMEZCUjNSQ0xFVkJRVUVzU1VGQlNTeGhRVUZoTEVsQlFVMHNSVUZCUVR0QlFVTnlRaXhKUVVGWExGRkJRVUVzUjBGQlFTeEpRVUZCTEVOQlFVRTdRVUZIV0N4SlFVRkJMRXRCUVVFc1IwRkJRU3hEUVVGUkxFVkJRVThzUjBGQlFTeE5RVUZCTEVOQlFVRXNUVUZCUVN4TFFVRlFMRWxCUVdVc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNSMEZCUVN4RFFVRkpMR2xEUVVGcFF5eEpRVUZMTEVOQlFVRXNSMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOdVJTeE5RVUZCTEVsQlFWY3NZVUZCWVN4TFFVRlBMRVZCUVVFN1FVRkROMElzU1VGQlZ5eFJRVUZCTEVkQlFVRXNTVUZCUVN4RFFVRkJPMEZCUjFnc1NVRkJRU3hMUVVGQkxFZEJRVUVzUTBGQlVTeEZRVUZQTEVkQlFVRXNUVUZCUVN4RFFVRkJMRTFCUVVFc1MwRkJVQ3hKUVVGbExFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRkJMRWRCUVVFc1EwRkJTU3hwUTBGQmFVTXNTVUZCU3l4RFFVRkJMRWRCUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGVFUXNUVUZCUVN4SlFVRkJMRkZCUVVFc1MwRkJZU3hKUVVGUkxFbEJRVUVzVVVGQlFTeExRVUZoTEVsQlFVMHNSVUZCUVR0QlFVTnFSQ3hKUVVGUkxFdEJRVUVzUjBGQlFTd3JRa0ZCUVN4RFFVRm5ReXhQUVVGUExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZETDBNc1RVRkJRVHRCUVVOTUxFbEJRVkVzUzBGQlFTeEhRVUZCTEN0Q1FVRkJMRU5CUVdkRExFOUJRVThzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTjBSRHRCUVVWQkxFVkJRVThzVDBGQlFTeERRVUZCTEVWQlFVY3NUVUZCVHl4RFFVRkJMRWRCUVVFc1EwRkJRU3hGUVVGTkxGRkJRVmtzUTBGQlFTeERRVUZCTEVWQlFVRXNTMEZCUVN4RFFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJRM0pETEVOQlFVRTdRVUZOVHl4VFFVRlRMR2REUVVGblF5eFZRVUUwUWl4RlFVRkJPMEZCUXpGRkxFVkJRVThzVDBGQlFTeFZRVUZCTEVOQlFWY3NUMEZCVVN4RFFVRkJMRXRCUVVFc1JVRkJUeXhOUVVGTkxFTkJRVUVzUTBGQlJTeFBRVUZSTEVOQlFVRXNTMEZCUVN4RlFVRlBMRXRCUVVzc1EwRkJRU3hEUVVGRkxFOUJRVkVzUTBGQlFTeEpRVUZCTEVWQlFVMHNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkRjRVlzUTBGQlFUdEJRVVZQTEZOQlFWTXNaME5CUVdkRExGVkJRVFJDTEVWQlFVRTdRVUZETVVVc1JVRkJUeXhQUVVGQkxDdENRVUZCTEVOQlFXZERMR2RDUVVGcFFpeERRVUZCTEZWQlFWVXNRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkRja1VzUTBGQlFUdEJRV0ZCTEUxQlFVMHNhMEpCUVhGQ0xFZEJRVUVzYzBKQlFVRXNRMEZCUVR0QlFVTXpRaXhUUVVGVExHbENRVUZwUWl4TFFVRjFRaXhGUVVGQk8wRkJReTlETEVWQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVUwc1QwRkJVU3hEUVVGQkxHdENRVUZCTEVWQlFXOUNMRTFCUVUwc1EwRkJRU3hEUVVGQk8wRkJRMnBFTEVOQlFVRTdRVUZMVHl4VFFVRlRMSFZDUVVOa0xGbEJRMEVzUlVGQlFUdEJRVU5CTEVWQlFVRXNUVUZCVFN4VlFVRlZMRlZCUVZjc1EwRkJRU3hqUVVGQk8wRkJRVUVzU1VGRGVrSXNZVUZCWVN4UFFVRlJMRVZCUVVFN1FVRkJRU3hKUVVOeVFpeERRVUZETEUxQlFVMHNRMEZCWVN4WlFVRkJMR2RDUVVGQk8wRkJRVUVzUjBGRGRFSXNRMEZCUVR0QlFVVkJMRVZCUVVFc1RVRkJUU3h2UWtGQmIwSXNhVU5CUVd0RExFTkJRVUVzVDBGQlR5eERRVUZGTEVOQlFVRXNUVUZCUVN4RFFVRlBMRU5CUVVNc1EwRkJUU3hMUVVGQk8wRkJOVWR5Uml4SlFVRkJMRWxCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUTBGQlFUdEJRVFpIU1N4SlFVRlBMRTlCUVVFc1EwRkJRU3hEUVVGQkxFVkJRVUVzUjBGQlFTeERRVUZCTEVOQlFVVXNUVUZCVFN4VlFVRlNMRXRCUVVFc1NVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCYjBJc1YwRkJVU3hGUVVGaExFZEJRVUVzV1VGQlFTeERRVUZCTEV0QlFVRXNRMEZCVFN4bFFVRnVRaXhKUVVFclFpeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRVZCUVVFc1EwRkJRU3hIUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyNUZMRU5CUVVFc1EwRkJRVHRCUVVWRUxFVkJRVWtzU1VGQlFTeHBRa0ZCUVN4RFFVRnJRaXhYUVVGWExFTkJRVWNzUlVGQlFUdEJRVU5zUXl4SlFVRkJMRTlCUVU4c1JVRkJReXhEUVVGQk8wRkJRVUVzUjBGRFZqdEJRVVZCTEVWQlFVRXNUVUZCVFN4VFFVRXlRaXhGUVVGRExFTkJRVUU3UVVGRGJFTXNSVUZCYTBJc2FVSkJRVUVzUTBGQlFTeFBRVUZCTEVOQlFWRXNRMEZCUXl4RFFVRk5MRXRCUVVFN1FVRkRMMElzU1VGQlFTeE5RVUZCTEVOQlFVOHNTVUZCU3l4RFFVRkJMRWRCUVVjc1EwRkJSU3hEUVVGQkxFdEJRVUVzUTBGQlRTeFBRVUZQTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUXk5Q0xFTkJRVUVzUTBGQlFUdEJRVVZFTEVWQlFVOHNUMEZCUVN4TlFVRkJMRU5CUVVFN1FVRkRWQ3hEUVVGQk8wRkJTMEVzVTBGQlV5eHJRMEZCYTBNc1QwRkJOa0lzUlVGQlFUdEJRVVYwUlN4RlFVRkJMRTFCUVUwc1pVRkJjMFFzUlVGQlF5eERRVUZCTzBGQlJUZEVMRVZCUVVFc1MwRkJRU3hOUVVGWExGRkJRVkVzVDBGQlV5eEZRVUZCTzBGQlF6RkNMRWxCUVVrc1NVRkJRU3hKUVVGQkxFTkJRVXNzVFVGQlRTeEhRVUZMTEVWQlFVRTdRVUZEYkVJc1RVRkJRU3hKUVVGSkxFVkJRVVVzU1VGQlFTeERRVUZMTEV0QlFVMHNRMEZCUVN4SFFVRkJMRWxCUVU4c1dVRkJaU3hEUVVGQkxFVkJRVUU3UVVGRGNrTXNVVUZCWVN4WlFVRkJMRU5CUVVFc1NVRkJRU3hEUVVGTExFdEJRVTBzUTBGQlFTeEhRVUZCTEVOQlFVRXNSMEZCVHl4RlFVRkRMRU5CUVVFN1FVRkJRU3hQUVVOc1F6dEJRVU5CTEUxQlFVRXNXVUZCUVN4RFFVRmhMRWxCUVVzc1EwRkJRU3hMUVVGQkxFTkJRVTBzUjBGQlN5eERRVUZCTEVOQlFVRXNTVUZCUVN4RFFVRkxMRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGVFTTdRVUZCUVN4SFFVTkdPMEZCUjBFc1JVRkJRU3hQUVVGUExFOUJRVThzVFVGQlR5eERRVUZCTEZsQlFWa3NRMEZCUlN4RFFVRkJMRTlCUVVFc1EwRkJVU3hEUVVGRExFdEJRVlVzUzBGQlFUdEJRVU53UkN4SlFVRkJMRTFCUVUwc1kwRkJZeXhMUVVGTkxFTkJRVUVzVFVGQlFTeERRVUZQTEVOQlFVTXNTVUZCUVN4TFFVRlRMRXRCUVVzc1VVRkJVU3hEUVVGQkxFTkJRVUU3UVVGRmVFUXNTVUZCUVN4SlFVRkpMRmRCUVZrc1EwRkJRU3hOUVVGQkxFdEJRVmNzUTBGQlN5eEpRVUZCTEV0QlFVRXNRMEZCVFN4WFFVRlhMRU5CUVVjc1JVRkJRVHRCUVVOc1JDeE5RVUZQTEU5QlFVRXNTMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRWRHRCUVVOQkxFbEJRVThzVDBGQlFTeFhRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTlNMRU5CUVVFc1EwRkJRVHRCUVVOSUxFTkJRVUU3UVVGRlR5eFRRVUZUTEhkQ1FVRjNRaXhMUVVGdFF5eEZRVUZCTzBGQlEzcEZMRVZCUVVrc1NVRkJRU3hMUVVGQkxFdEJRVlVzU1VGQlVTeEpRVUZCTEV0QlFVRXNTMEZCVlN4TFFVRlhMRU5CUVVFc1JVRkJRVHRCUVVONlF5eEpRVUZQTEU5QlFVRXNSVUZCUVN4RFFVRkJPMEZCUVVFc1IwRkRWRHRCUVVkQkxFVkJRVUVzVDBGQlVTeExRVUZSTEVkQlFVRXNTMEZCUVN4RFFVRk5MRTFCUVU4c1EwRkJRU3hQUVVGQkxFTkJRVUVzUTBGQlV5eFBRVUZQTEZOQlFWTXNRMEZCUVN4RFFVRkJPMEZCUTNoRUxFTkJRVUU3UVVGRlR5eFRRVUZUTEhsQ1FVRjVRaXhMUVVGdFF5eEZRVUZCTzBGQlF6RkZMRVZCUVVrc1NVRkJRU3hMUVVGQkxFdEJRVlVzU1VGQlVTeEpRVUZCTEV0QlFVRXNTMEZCVlN4TFFVRlhMRU5CUVVFc1JVRkJRVHRCUVVONlF5eEpRVUZQTEU5QlFVRXNSVUZCUVN4RFFVRkJPMEZCUVVFc1IwRkRWRHRCUVVkQkxFVkJRVUVzVDBGQlR5eEpRVUZMTEVOQlFVRXNUVUZCUVN4RFFVRlBMRTlCUVZNc1EwRkJRU3hEUVVGQkxFdEJRVUVzUlVGQlR5eFRRVUZUTEVOQlFVRXNRMEZCUVR0QlFVTTVReXhEUVVGQk8wRkJSVThzVTBGQlV5eHpRa0ZCYzBJc1MwRkJiVU1zUlVGQlFUdEJRVU4yUlN4RlFVRkpMRWxCUVVFc1MwRkJRU3hMUVVGVkxFbEJRVkVzU1VGQlFTeExRVUZCTEV0QlFWVXNTMEZCVnl4RFFVRkJMRVZCUVVFN1FVRkRla01zU1VGQlR5eFBRVUZCTEVWQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTFRN1FVRkZRU3hGUVVGQkxFdEJRVUVzUjBGQlVTeFZRVUZYTEVOQlFVRXNUVUZCUVN4RFFVRlBMRTlCUVZNc1EwRkJRU3hEUVVGQkxFdEJRVUVzUlVGQlR5eEhRVUZITEVOQlFVRXNRMEZCUVR0QlFVTTNReXhGUVVGQkxFdEJRVUVzUjBGQlVTeFZRVUZYTEVOQlFVRXNUVUZCUVN4RFFVRlBMRTlCUVZNc1EwRkJRU3hEUVVGQkxFdEJRVUVzUlVGQlR5eEhRVUZITEVOQlFVRXNRMEZCUVR0QlFVVTNReXhGUVVGUExFOUJRVUVzUzBGQlFTeERRVUZCTzBGQlExUXNRMEZCUVR0QlFVVm5RaXhUUVVGQkxIbENRVUZCTEVOQlFUQkNMRXRCUVdFc1MwRkJkMElzUlVGQlFUdEJRVVUzUlN4RlFVRkpMRWxCUVVFc1EwRkJReXhMUVVGVExFbEJRVUVzUjBGQlFTeExRVUZSTEV0QlFVOHNSVUZCUVR0QlFVTXpRaXhKUVVGQkxFOUJRVThzZVVKQlFYbENMRWRCUVVjc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGNrTTdRVUZGUVN4RlFVRlBMRTlCUVVFc1EwRkJReXhMUVVGTExFdEJRVXNzUTBGQlFTeERRVUZGTEVsQlFVa3NkMEpCUVhkQ0xFTkJRVUVzUTBGQlJTeExRVUZMTEVkQlFVY3NRMEZCUVN4RFFVRkJPMEZCUXpWRUxFTkJRVUU3UVVGRlR5eFRRVUZUTEdsQ1FVRnBRaXhSUVVFNFF5eEZRVUZCTzBGQlF6ZEZMRVZCUVVFc1QwRkJUeXhMUVVGTkxFTkJRVUVzVDBGQlFTeERRVUZSTEZGQlFWRXNRMEZCUVN4SFFVRkpMRmRCUVZjc1VVRkJVeXhEUVVGQkxFbEJRVUVzUTBGQlFUdEJRVU4yUkN4RFFVRkJPMEZCUlU4c1UwRkJVeXhwUWtGRFpDeFJRVU4zUkN4RlFVRkJPMEZCUTNoRUxFVkJRVUVzVDBGQlR5eERRVUZETEV0QlFVMHNRMEZCUVN4UFFVRkJMRU5CUVZFc1VVRkJVU3hEUVVGTExFbEJRVUVzVDBGQlFTeERRVUZSTEZOQlFWTXNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkRNMFFzUTBGQlFUdEJRVWRQTEZOQlFWTXNiVUpCUVcxQ0xFMUJRVEpFTEVWQlFVRTdRVUZETlVZc1JVRkJRU3hOUVVGTkxGTkJRWGxETEVWQlFVTXNRMEZCUVR0QlFVTm9SQ3hGUVVGTkxFMUJRVUVzWTBGQlFTeDFRa0ZCY1VJc1IwRkJORU1zUlVGQlFTeERRVUZCTzBGQlJYWkZMRVZCUVVFc1MwRkJRU3hOUVVGWExGTkJRVk1zVFVGQlVTeEZRVUZCTzBGQlF6RkNMRWxCUVVFc1RVRkJUU3hoUVVGaExFdEJRVTBzUTBGQlFTeExRVUZCTEVOQlFVRTdRVUZEZWtJc1NVRkJRU3hKUVVGSkxGVkJRVmtzUlVGQlFUdEJRVU5rTEUxQlFVa3NTVUZCUVN4TFFVRkJMRWRCUVZFc1kwRkJaU3hEUVVGQkxFZEJRVUVzUTBGQlNTeFZRVUZWTEVOQlFVRXNRMEZCUVR0QlFVVjZReXhOUVVGQkxFbEJRVWtzUTBGQlF5eExRVUZQTEVWQlFVRTdRVUZEVml4UlFVRkJMRXRCUVVFc1IwRkJVU3hGUVVGRExFTkJRVUU3UVVGRFZDeFJRVUZsTEdOQlFVRXNRMEZCUVN4SFFVRkJMRU5CUVVrc1dVRkJXU3hMUVVGTExFTkJRVUVzUTBGQlFUdEJRVU53UXl4UlFVRkJMRTFCUVVFc1EwRkJUeXhMUVVGTExFVkJRVVVzUzBGQlFTeEZRVUZQTEZWQlFWa3NSVUZCUVN4UFFVRkJMRVZCUVZNc1QwRkJUeXhEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU51UkR0QlFVVkJMRTFCUVVFc1MwRkJRU3hEUVVGTkxFdEJRVXNzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTllMRTFCUVVFN1FVRkRUQ3hOUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZMTEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRia0k3UVVGQlFTeEhRVU5HTzBGQlJVRXNSVUZCVHl4UFFVRkJMRTFCUVVFc1EwRkJRVHRCUVVOVUxFTkJRVUU3UVVGRlowSXNVMEZCUVN4blFrRkJRU3hEUVVGcFFpeFJRVUZ2UWl4RlFVRkJMRXRCUVVFc1IwRkJVU3hIUVVGUkxFVkJRVUU3UVVGRGJrVXNSVUZCVFN4TlFVRkJMRTFCUVVFc1IwRkJVeXhKUVVGSkxFMUJRVThzUlVGQlFTeERRVUZCTzBGQlJURkNMRVZCUVVFc1RVRkJUU3hMUVVGUkxFZEJRVUVzUzBGQlFTeERRVUZOTEVsQlFVc3NRMEZCUVN4RlFVRkZMRkZCUVZFc1NVRkJTeXhEUVVGQkxFZEJRVUVzUTBGQlNTeExRVUZQTEVWQlFVRXNVVUZCUVN4RFFVRlRMRTFCUVUwc1EwRkJSU3hGUVVGQkxFVkJRVWNzUTBGQlF5eERRVUZCTEVWQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVkc1JpeEZRVUZCTEU5QlFVOHNRMEZCUXl4TlFVRTJRaXhMUVVGQk8wRkJRMjVETEVsQlFVRXNTVUZCU1N4WFFVRlhMRVZCUVVrc1JVRkJRVHRCUVVOcVFpeE5RVUZQTEU5QlFVRXNTMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRWRHRCUVVWQkxFbEJRVTBzVFVGQlFTeERRVUZETEUxQlFVMHNTVUZCVFN4RlFVRkJMRXRCUVVzc1NVRkJTU3hOUVVGUExFTkJRVUVzVFVGQlFTeERRVUZQTEZWQlFWVXNUVUZCVFN4RFFVRkJMRU5CUVVFN1FVRkZNVVFzU1VGQlFTeEpRVUZKTEVsQlFVMHNSVUZCUVR0QlFVTlNMRTFCUVVFc1NVRkJTU3hSUVVGUkxFdEJRVThzUlVGQlFUdEJRVU5xUWl4UlFVRkJMRTFCUVUwc1ZVRkJWU3hMUVVGTkxFTkJRVUVzU1VGQlFTeERRVUZMTEVsQlFVa3NTMEZCVFN4RFFVRkJMRTFCUVVFc1JVRkJVU3hMUVVGTExFTkJRVU1zUTBGQlFTeERRVUZCTzBGQlJXNUVMRkZCUVVFc1MwRkJRU3hKUVVGVExFTkJRVWtzUjBGQlFTeERRVUZCTEVWQlFVY3NRMEZCU1N4SFFVRkJMRTlCUVVFc1EwRkJVU3hSUVVGUkxFTkJRVXNzUlVGQlFTeEZRVUZCTzBGQlEzWkRMRlZCUVZFc1QwRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlFTeEhRVUZMTEVsQlFVc3NRMEZCUVN4SFFVRkJMRU5CUVVrc1MwRkJUU3hEUVVGQkxFTkJRVUVzUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4VFFVTTVRanRCUVVWQkxGRkJRVThzVDBGQlFTeFBRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTlVPMEZCUlVFc1RVRkJUeXhQUVVGQkxFbEJRVUVzUTBGQlN5eExRVUZOTEVOQlFVRXNRMEZCUVN4RlFVRkhMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRE5VSTdRVUZGUVN4SlFVRkJMRTlCUVU4c1JVRkJReXhEUVVGQk8wRkJRVUVzUjBGRFZpeERRVUZCTzBGQlEwWTdPenM3SW4wPVxuIl0sIm5hbWVzIjpbInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7OztBQVNnQixTQUFBLG9CQUFBLENBQXFCLEdBQXFDLENBQXFDLEVBQUE7QUFDN0csRUFBQSxJQUFJLE1BQU0sQ0FBRyxFQUFBO0FBQ0osSUFBQSxPQUFBLElBQUEsQ0FBQTtBQUFBLEdBQUE7QUFHRixFQUFBLE9BQUEsT0FBQSxDQUFRLEdBQUcsQ0FBQyxDQUFBLENBQUE7QUFDckIsQ0FBQTtBQUVPLFNBQVMsbUJBQW1CLEtBQWdCLEVBQUE7QUFFakQsRUFBQSxNQUFNLHNCQUFzQixNQUFNO0FBQzFCLElBQUEsTUFBQSxJQUFBLHVCQUFXLE9BQVEsRUFBQSxDQUFBO0FBQ2xCLElBQUEsT0FBQSxDQUFDLEdBQVdBLE1BQXlCLEtBQUE7QUFDMUMsTUFBQSxJQUFJLE9BQU9BLE1BQUFBLEtBQVUsUUFBWUEsSUFBQUEsTUFBQUEsS0FBVSxJQUFNLEVBQUE7QUFDM0MsUUFBQSxJQUFBLElBQUEsQ0FBSyxHQUFJQSxDQUFBQSxNQUFLLENBQUcsRUFBQTtBQUNuQixVQUFBLE9BQUE7QUFBQSxTQUFBO0FBRUYsUUFBQSxJQUFBLENBQUssSUFBSUEsTUFBSyxDQUFBLENBQUE7QUFBQSxPQUFBO0FBRVRBLE1BQUFBLE9BQUFBLE1BQUFBLENBQUFBO0FBQUEsS0FBQSxDQUFBO0FBQ1QsR0FBQSxDQUFBO0FBR0UsRUFBQSxJQUFBO0FBQ0YsSUFBQSxPQUFPLElBQUssQ0FBQSxTQUFBLENBQVUsS0FBTyxFQUFBLG1CQUFBLEVBQXFCLENBQUEsQ0FBQTtBQUFBLEdBQUEsQ0FBQSxPQUMzQyxLQUQyQyxFQUFBO0FBRWxELElBQUEsT0FBQSxDQUFRLE1BQU0sS0FBSyxDQUFBLENBQUE7QUFBQSxH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
@@ -0,0 +1,38 @@
1
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
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
+ class ConstantVariable extends SceneObjectBase {
23
+ constructor(initialState) {
24
+ super(__spreadProps(__spreadValues({
25
+ type: "constant",
26
+ value: "",
27
+ name: ""
28
+ }, initialState), {
29
+ skipUrlSync: true
30
+ }));
31
+ }
32
+ getValue() {
33
+ return this.state.value;
34
+ }
35
+ }
36
+
37
+ export { ConstantVariable };
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRWYXJpYWJsZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFyaWFibGVzL3ZhcmlhbnRzL0NvbnN0YW50VmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9TY2VuZU9iamVjdEJhc2UuanMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyA9IChhLCBiKSA9PiBfX2RlZlByb3BzKGEsIF9fZ2V0T3duUHJvcERlc2NzKGIpKTtcbmNsYXNzIENvbnN0YW50VmFyaWFibGUgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2Uge1xuICBjb25zdHJ1Y3Rvcihpbml0aWFsU3RhdGUpIHtcbiAgICBzdXBlcihfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHtcbiAgICAgIHR5cGU6IFwiY29uc3RhbnRcIixcbiAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgbmFtZTogXCJcIlxuICAgIH0sIGluaXRpYWxTdGF0ZSksIHtcbiAgICAgIHNraXBVcmxTeW5jOiB0cnVlXG4gICAgfSkpO1xuICB9XG4gIGdldFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCB7IENvbnN0YW50VmFyaWFibGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUTI5dWMzUmhiblJXWVhKcFlXSnNaUzVxY3lJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwzWmhjbWxoWW14bGN5OTJZWEpwWVc1MGN5OURiMjV6ZEdGdWRGWmhjbWxoWW14bExuUnpJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUZOalpXNWxUMkpxWldOMFFtRnpaU0I5SUdaeWIyMGdKeTR1THk0dUwyTnZjbVV2VTJObGJtVlBZbXBsWTNSQ1lYTmxKenRjYm1sdGNHOXlkQ0I3SUZOalpXNWxWbUZ5YVdGaWJHVXNJRk5qWlc1bFZtRnlhV0ZpYkdWVGRHRjBaU3dnVm1GeWFXRmliR1ZXWVd4MVpTQjlJR1p5YjIwZ0p5NHVMM1I1Y0dWekp6dGNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JEYjI1emRHRnVkRlpoY21saFlteGxVM1JoZEdVZ1pYaDBaVzVrY3lCVFkyVnVaVlpoY21saFlteGxVM1JoZEdVZ2UxeHVJQ0IyWVd4MVpUb2dWbUZ5YVdGaWJHVldZV3gxWlR0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFTnZibk4wWVc1MFZtRnlhV0ZpYkdWY2JpQWdaWGgwWlc1a2N5QlRZMlZ1WlU5aWFtVmpkRUpoYzJVOFEyOXVjM1JoYm5SV1lYSnBZV0pzWlZOMFlYUmxQbHh1SUNCcGJYQnNaVzFsYm5SeklGTmpaVzVsVm1GeWFXRmliR1U4UTI5dWMzUmhiblJXWVhKcFlXSnNaVk4wWVhSbFBseHVlMXh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2FXNXBkR2xoYkZOMFlYUmxPaUJRWVhKMGFXRnNQRU52Ym5OMFlXNTBWbUZ5YVdGaWJHVlRkR0YwWlQ0cElIdGNiaUFnSUNCemRYQmxjaWg3WEc0Z0lDQWdJQ0IwZVhCbE9pQW5ZMjl1YzNSaGJuUW5MRnh1SUNBZ0lDQWdkbUZzZFdVNklDY25MRnh1SUNBZ0lDQWdibUZ0WlRvZ0p5Y3NYRzRnSUNBZ0lDQXVMaTVwYm1sMGFXRnNVM1JoZEdVc1hHNGdJQ0FnSUNCemEybHdWWEpzVTNsdVl6b2dkSEoxWlN4Y2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUldZV3gxWlNncE9pQldZWEpwWVdKc1pWWmhiSFZsSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1emRHRjBaUzUyWVd4MVpUdGNiaUFnZlZ4dWZWeHVJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3T3pzN096czdPenRCUVU5UExFMUJRVTBzZVVKQlEwZ3NaVUZGVml4RFFVRkJPMEZCUVVFc1JVRkRVeXhaUVVGWkxGbEJRVGhETEVWQlFVRTdRVUZETDBRc1NVRkJUU3hMUVVGQkxFTkJRVUVzWVVGQlFTeERRVUZCTEdOQlFVRXNRMEZCUVR0QlFVRkJMRTFCUTBvc1NVRkJUU3hGUVVGQkxGVkJRVUU3UVVGQlFTeE5RVU5PTEV0QlFVOHNSVUZCUVN4RlFVRkJPMEZCUVVFc1RVRkRVQ3hKUVVGTkxFVkJRVUVzUlVGQlFUdEJRVUZCTEV0QlFVRXNSVUZEU0N4WlFVcERMRU5CUVVFc1JVRkJRVHRCUVVGQkxFMUJTMG9zVjBGQllTeEZRVUZCTEVsQlFVRTdRVUZCUVN4TFFVTmtMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFNEdEJRVUZCTEVWQlJVOHNVVUZCTUVJc1IwRkJRVHRCUVVNdlFpeEpRVUZCTEU5QlFVOHNTMEZCU3l4TFFVRk5MRU5CUVVFc1MwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGNFSTdRVUZEUmpzN096c2lmUT09XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT08sTUFBTSx5QkFDSCxlQUVWLENBQUE7QUFDUyxFQUFBLFdBQUEsQ0FBWSxZQUE4QyxFQUFBO0FBQ3pELElBQUEsS0FBQSxDQUFBLGNBQUEsY0FBQSxDQUFBO01BQ0osSUFBTSxFQUFBLFVBQUE7TUFDTixLQUFPLEVBQUEsRUFBQTtNQUNQLElBQU0sRUFBQSxFQUFBO0FBQUEsS0FBQSxFQUNILFlBSkMsQ0FBQSxFQUFBO01BS0osV0FBYSxFQUFBLElBQUE7QUFBQSxLQUNkLENBQUEsQ0FBQSxDQUFBO0FBQUEsR0FBQTtFQUdJLFFBQTBCLEdBQUE7QUFDL0IsSUFBQSxPQUFPLEtBQUssS0FBTSxDQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQUE7QUFFdEI7Ozs7In0=
@@ -0,0 +1,60 @@
1
+ import { of } from 'rxjs';
2
+ import { VariableDependencyConfig } from '../VariableDependencyConfig.js';
3
+ import { renderSelectForVariable } from '../components/VariableValueSelect.js';
4
+ import { MultiValueVariable } from './MultiValueVariable.js';
5
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ class CustomVariable extends MultiValueVariable {
24
+ constructor(initialState) {
25
+ super(__spreadValues({
26
+ type: "custom",
27
+ query: "",
28
+ value: "",
29
+ text: "",
30
+ options: [],
31
+ name: ""
32
+ }, initialState));
33
+ this._variableDependency = new VariableDependencyConfig(this, {
34
+ statePaths: ["query"]
35
+ });
36
+ }
37
+ getValueOptions(args) {
38
+ var _a;
39
+ const interpolated = sceneGraph.interpolate(this, this.state.query);
40
+ const match = (_a = interpolated.match(/(?:\\,|[^,])+/g)) != null ? _a : [];
41
+ const options = match.map((text) => {
42
+ var _a2;
43
+ text = text.replace(/\\,/g, ",");
44
+ const textMatch = (_a2 = /^(.+)\s:\s(.+)$/g.exec(text)) != null ? _a2 : [];
45
+ if (textMatch.length === 3) {
46
+ const [, key, value] = textMatch;
47
+ return { label: key.trim(), value: value.trim() };
48
+ } else {
49
+ return { label: text.trim(), value: text.trim() };
50
+ }
51
+ });
52
+ return of(options);
53
+ }
54
+ }
55
+ CustomVariable.Component = ({ model }) => {
56
+ return renderSelectForVariable(model);
57
+ };
58
+
59
+ export { CustomVariable };
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tVmFyaWFibGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy92YXJpYW50cy9DdXN0b21WYXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmFyaWFibGVEZXBlbmRlbmN5Q29uZmlnIH0gZnJvbSAnLi4vVmFyaWFibGVEZXBlbmRlbmN5Q29uZmlnLmpzJztcbmltcG9ydCB7IHJlbmRlclNlbGVjdEZvclZhcmlhYmxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9WYXJpYWJsZVZhbHVlU2VsZWN0LmpzJztcbmltcG9ydCB7IE11bHRpVmFsdWVWYXJpYWJsZSB9IGZyb20gJy4vTXVsdGlWYWx1ZVZhcmlhYmxlLmpzJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi8uLi9jb3JlL3NjZW5lR3JhcGgvaW5kZXguanMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5jbGFzcyBDdXN0b21WYXJpYWJsZSBleHRlbmRzIE11bHRpVmFsdWVWYXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGluaXRpYWxTdGF0ZSkge1xuICAgIHN1cGVyKF9fc3ByZWFkVmFsdWVzKHtcbiAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICBxdWVyeTogXCJcIixcbiAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgdGV4dDogXCJcIixcbiAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgbmFtZTogXCJcIlxuICAgIH0sIGluaXRpYWxTdGF0ZSkpO1xuICAgIHRoaXMuX3ZhcmlhYmxlRGVwZW5kZW5jeSA9IG5ldyBWYXJpYWJsZURlcGVuZGVuY3lDb25maWcodGhpcywge1xuICAgICAgc3RhdGVQYXRoczogW1wicXVlcnlcIl1cbiAgICB9KTtcbiAgfVxuICBnZXRWYWx1ZU9wdGlvbnMoYXJncykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBpbnRlcnBvbGF0ZWQgPSBzY2VuZUdyYXBoLmludGVycG9sYXRlKHRoaXMsIHRoaXMuc3RhdGUucXVlcnkpO1xuICAgIGNvbnN0IG1hdGNoID0gKF9hID0gaW50ZXJwb2xhdGVkLm1hdGNoKC8oPzpcXFxcLHxbXixdKSsvZykpICE9IG51bGwgPyBfYSA6IFtdO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBtYXRjaC5tYXAoKHRleHQpID0+IHtcbiAgICAgIHZhciBfYTI7XG4gICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXFxcLC9nLCBcIixcIik7XG4gICAgICBjb25zdCB0ZXh0TWF0Y2ggPSAoX2EyID0gL14oLispXFxzOlxccyguKykkL2cuZXhlYyh0ZXh0KSkgIT0gbnVsbCA/IF9hMiA6IFtdO1xuICAgICAgaWYgKHRleHRNYXRjaC5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgY29uc3QgWywga2V5LCB2YWx1ZV0gPSB0ZXh0TWF0Y2g7XG4gICAgICAgIHJldHVybiB7IGxhYmVsOiBrZXkudHJpbSgpLCB2YWx1ZTogdmFsdWUudHJpbSgpIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4geyBsYWJlbDogdGV4dC50cmltKCksIHZhbHVlOiB0ZXh0LnRyaW0oKSB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvZihvcHRpb25zKTtcbiAgfVxufVxuQ3VzdG9tVmFyaWFibGUuQ29tcG9uZW50ID0gKHsgbW9kZWwgfSkgPT4ge1xuICByZXR1cm4gcmVuZGVyU2VsZWN0Rm9yVmFyaWFibGUobW9kZWwpO1xufTtcblxuZXhwb3J0IHsgQ3VzdG9tVmFyaWFibGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUTNWemRHOXRWbUZ5YVdGaWJHVXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMM055WXk5MllYSnBZV0pzWlhNdmRtRnlhV0Z1ZEhNdlEzVnpkRzl0Vm1GeWFXRmliR1V1ZEhONElsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJRTlpYzJWeWRtRmliR1VzSUc5bUlIMGdabkp2YlNBbmNuaHFjeWM3WEc1Y2JtbHRjRzl5ZENCN0lGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITWdmU0JtY205dElDY3VMaTh1TGk5amIzSmxMM1I1Y0dWekp6dGNibWx0Y0c5eWRDQjdJRlpoY21saFlteGxSR1Z3Wlc1a1pXNWplVU52Ym1acFp5QjlJR1p5YjIwZ0p5NHVMMVpoY21saFlteGxSR1Z3Wlc1a1pXNWplVU52Ym1acFp5YzdYRzVwYlhCdmNuUWdleUJ5Wlc1a1pYSlRaV3hsWTNSR2IzSldZWEpwWVdKc1pTQjlJR1p5YjIwZ0p5NHVMMk52YlhCdmJtVnVkSE12Vm1GeWFXRmliR1ZXWVd4MVpWTmxiR1ZqZENjN1hHNXBiWEJ2Y25RZ2V5QldZWEpwWVdKc1pWWmhiSFZsVDNCMGFXOXVJSDBnWm5KdmJTQW5MaTR2ZEhsd1pYTW5PMXh1WEc1cGJYQnZjblFnZXlCTmRXeDBhVlpoYkhWbFZtRnlhV0ZpYkdVc0lFMTFiSFJwVm1Gc2RXVldZWEpwWVdKc1pWTjBZWFJsTENCV1lYSnBZV0pzWlVkbGRFOXdkR2x2Ym5OQmNtZHpJSDBnWm5KdmJTQW5MaTlOZFd4MGFWWmhiSFZsVm1GeWFXRmliR1VuTzF4dWFXMXdiM0owSUhzZ2MyTmxibVZIY21Gd2FDQjlJR1p5YjIwZ0p5NHVMeTR1TDJOdmNtVXZjMk5sYm1WSGNtRndhQ2M3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1EzVnpkRzl0Vm1GeWFXRmliR1ZUZEdGMFpTQmxlSFJsYm1SeklFMTFiSFJwVm1Gc2RXVldZWEpwWVdKc1pWTjBZWFJsSUh0Y2JpQWdjWFZsY25rNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFTjFjM1J2YlZaaGNtbGhZbXhsSUdWNGRHVnVaSE1nVFhWc2RHbFdZV3gxWlZaaGNtbGhZbXhsUEVOMWMzUnZiVlpoY21saFlteGxVM1JoZEdVK0lIdGNiaUFnY0hKdmRHVmpkR1ZrSUY5MllYSnBZV0pzWlVSbGNHVnVaR1Z1WTNrZ1BTQnVaWGNnVm1GeWFXRmliR1ZFWlhCbGJtUmxibU41UTI5dVptbG5LSFJvYVhNc0lIdGNiaUFnSUNCemRHRjBaVkJoZEdoek9pQmJKM0YxWlhKNUoxMHNYRzRnSUgwcE8xeHVYRzRnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2locGJtbDBhV0ZzVTNSaGRHVTZJRkJoY25ScFlXdzhRM1Z6ZEc5dFZtRnlhV0ZpYkdWVGRHRjBaVDRwSUh0Y2JpQWdJQ0J6ZFhCbGNpaDdYRzRnSUNBZ0lDQjBlWEJsT2lBblkzVnpkRzl0Snl4Y2JpQWdJQ0FnSUhGMVpYSjVPaUFuSnl4Y2JpQWdJQ0FnSUhaaGJIVmxPaUFuSnl4Y2JpQWdJQ0FnSUhSbGVIUTZJQ2NuTEZ4dUlDQWdJQ0FnYjNCMGFXOXVjem9nVzEwc1hHNGdJQ0FnSUNCdVlXMWxPaUFuSnl4Y2JpQWdJQ0FnSUM0dUxtbHVhWFJwWVd4VGRHRjBaU3hjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSV1lXeDFaVTl3ZEdsdmJuTW9ZWEpuY3pvZ1ZtRnlhV0ZpYkdWSFpYUlBjSFJwYjI1elFYSm5jeWs2SUU5aWMyVnlkbUZpYkdVOFZtRnlhV0ZpYkdWV1lXeDFaVTl3ZEdsdmJsdGRQaUI3WEc0Z0lDQWdZMjl1YzNRZ2FXNTBaWEp3YjJ4aGRHVmtJRDBnYzJObGJtVkhjbUZ3YUM1cGJuUmxjbkJ2YkdGMFpTaDBhR2x6TENCMGFHbHpMbk4wWVhSbExuRjFaWEo1S1R0Y2JpQWdJQ0JqYjI1emRDQnRZWFJqYUNBOUlHbHVkR1Z5Y0c5c1lYUmxaQzV0WVhSamFDZ3ZLRDg2WEZ4Y1hDeDhXMTRzWFNrckwyY3BJRDgvSUZ0ZE8xeHVYRzRnSUNBZ1kyOXVjM1FnYjNCMGFXOXVjeUE5SUcxaGRHTm9MbTFoY0Nnb2RHVjRkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ2RHVjRkQ0E5SUhSbGVIUXVjbVZ3YkdGalpTZ3ZYRnhjWEN3dlp5d2dKeXduS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSFJsZUhSTllYUmphQ0E5SUM5ZUtDNHJLVnhjY3pwY1hITW9MaXNwSkM5bkxtVjRaV01vZEdWNGRDa2dQejhnVzEwN1hHNGdJQ0FnSUNCcFppQW9kR1Y0ZEUxaGRHTm9MbXhsYm1kMGFDQTlQVDBnTXlrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCYkxDQnJaWGtzSUhaaGJIVmxYU0E5SUhSbGVIUk5ZWFJqYUR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhzZ2JHRmlaV3c2SUd0bGVTNTBjbWx0S0Nrc0lIWmhiSFZsT2lCMllXeDFaUzUwY21sdEtDa2dmVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjdJR3hoWW1Wc09pQjBaWGgwTG5SeWFXMG9LU3dnZG1Gc2RXVTZJSFJsZUhRdWRISnBiU2dwSUgwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnYjJZb2IzQjBhVzl1Y3lrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVOdmJYQnZibVZ1ZENBOUlDaDdJRzF2WkdWc0lIMDZJRk5qWlc1bFEyOXRjRzl1Wlc1MFVISnZjSE04VFhWc2RHbFdZV3gxWlZaaGNtbGhZbXhsUGlrZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCeVpXNWtaWEpUWld4bFkzUkdiM0pXWVhKcFlXSnNaU2h0YjJSbGJDazdYRzRnSUgwN1hHNTlYRzRpWFN3aWJtRnRaWE1pT2xzaVgyRWlYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdPenM3T3pzN096czdRVUZqVHl4TlFVRk5MSFZDUVVGMVFpeHJRa0ZCZDBNc1EwRkJRVHRCUVVGQkxFVkJTMjVGTEZsQlFWa3NXVUZCTkVNc1JVRkJRVHRCUVVNM1JDeEpRVUZOTEV0QlFVRXNRMEZCUVN4alFVRkJMRU5CUVVFN1FVRkJRU3hOUVVOS0xFbEJRVTBzUlVGQlFTeFJRVUZCTzBGQlFVRXNUVUZEVGl4TFFVRlBMRVZCUVVFc1JVRkJRVHRCUVVGQkxFMUJRMUFzUzBGQlR5eEZRVUZCTEVWQlFVRTdRVUZCUVN4TlFVTlFMRWxCUVUwc1JVRkJRU3hGUVVGQk8wRkJRVUVzVFVGRFRpeFRRVUZUTEVWQlFVTTdRVUZCUVN4TlFVTldMRWxCUVUwc1JVRkJRU3hGUVVGQk8wRkJRVUVzUzBGQlFTeEZRVU5JTEZsQlEwb3NRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRmlTQ3hKUVVGVkxFbEJRVUVzUTBGQlFTeHRRa0ZCUVN4SFFVRnpRaXhKUVVGSkxIZENRVUZCTEVOQlFYbENMRWxCUVUwc1JVRkJRVHRCUVVGQkxFMUJRMnBGTEZWQlFVRXNSVUZCV1N4RFFVRkRMRTlCUVU4c1EwRkJRVHRCUVVGQkxFdEJRM0pDTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCV1VRN1FVRkJRU3hGUVVWUExHZENRVUZuUWl4SlFVRnBSU3hGUVVGQk8wRkJMMEl4Uml4SlFVRkJMRWxCUVVFc1JVRkJRU3hEUVVGQk8wRkJaME5KTEVsQlFVRXNUVUZCVFN4bFFVRmxMRlZCUVZjc1EwRkJRU3hYUVVGQkxFTkJRVmtzU1VGQlRTeEZRVUZCTEVsQlFVRXNRMEZCU3l4TlFVRk5MRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJRMnhGTEVsQlFVRXNUVUZCVFN4VFFVRlJMRVZCUVdFc1IwRkJRU3haUVVGQkxFTkJRVUVzUzBGQlFTeERRVUZOTEdkQ1FVRm5RaXhEUVVGQkxFdEJRVzVETEZsQlFYZERMRVZCUVVNc1EwRkJRVHRCUVVWMlJDeEpRVUZCTEUxQlFVMHNUMEZCVlN4SFFVRkJMRXRCUVVFc1EwRkJUU3hIUVVGSkxFTkJRVUVzUTBGQlF5eEpRVUZUTEV0QlFVRTdRVUZ1UTNoRExFMUJRVUZCTEVsQlFVRkJMRWRCUVVGQkxFTkJRVUZCTzBGQmIwTk5MRTFCUVU4c1NVRkJRU3hIUVVGQkxFbEJRVUVzUTBGQlN5eFBRVUZSTEVOQlFVRXNUVUZCUVN4RlFVRlJMRWRCUVVjc1EwRkJRU3hEUVVGQk8wRkJReTlDTEUxQlFVMHNUVUZCUVN4VFFVRkJMRWRCUVVFc1EwRkJXVUVzVFVGQlFTeHJRa0ZCYlVJc1EwRkJRU3hKUVVGQkxFTkJRVXNzU1VGQlNTeERRVUUxUWl4TFFVRkJMRWxCUVVFc1IwRkJRVUVzVFVGQmFVTXNSVUZCUXl4RFFVRkJPMEZCUTNCRUxFMUJRVWtzU1VGQlFTeFRRVUZCTEVOQlFWVXNWMEZCVnl4RFFVRkhMRVZCUVVFN1FVRkRNVUlzVVVGQlFTeE5RVUZOTEVkQlFVY3NSMEZCU3l4RlFVRkJMRXRCUVVzc1EwRkJTU3hIUVVGQkxGTkJRVUVzUTBGQlFUdEJRVU4yUWl4UlFVRlBMRTlCUVVFc1JVRkJSU3hQUVVGUExFZEJRVWtzUTBGQlFTeEpRVUZCTEVsQlFWRXNTMEZCVHl4RlFVRkJMRXRCUVVFc1EwRkJUU3hOUVVGUExFVkJRVUVzUTBGQlFUdEJRVUZCTEU5QlF6TkRMRTFCUVVFN1FVRkRUQ3hSUVVGUExFOUJRVUVzUlVGQlJTeFBRVUZQTEVsQlFVc3NRMEZCUVN4SlFVRkJMRWxCUVZFc1MwRkJUeXhGUVVGQkxFbEJRVUVzUTBGQlN5eE5RVUZQTEVWQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTJ4RU8wRkJRVUVzUzBGRFJDeERRVUZCTEVOQlFVRTdRVUZGUkN4SlFVRkJMRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyNUNPMEZCUzBZc1EwRkJRVHRCUVhSRFlTeGpRVUZCTEVOQmJVTkhMRk5CUVZrc1IwRkJRU3hEUVVGRExFVkJRVVVzUzBGQlFTeEZRVUZ4UkN4TFFVRkJPMEZCUTJoR0xFVkJRVUVzVDBGQlR5eDNRa0ZCZDBJc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGRGRFTXNRMEZCUVRzN096c2lmUT09XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjTyxNQUFNLHVCQUF1QixrQkFBd0MsQ0FBQTtBQUtuRSxFQUFBLFdBQUEsQ0FBWSxZQUE0QyxFQUFBO0FBQ3ZELElBQUEsS0FBQSxDQUFBLGNBQUEsQ0FBQTtNQUNKLElBQU0sRUFBQSxRQUFBO01BQ04sS0FBTyxFQUFBLEVBQUE7TUFDUCxLQUFPLEVBQUEsRUFBQTtNQUNQLElBQU0sRUFBQSxFQUFBO0FBQ04sTUFBQSxPQUFBLEVBQVMsRUFBQTtNQUNULElBQU0sRUFBQSxFQUFBO0FBQUEsS0FBQSxFQUNILFlBQ0osQ0FBQSxDQUFBLENBQUE7QUFiTyxJQUFBLElBQUEsQ0FBQSxtQkFBQSxHQUFzQixJQUFJLHdCQUFBLENBQXlCLElBQU0sRUFBQTtBQUNqRSxNQUFBLFVBQUEsRUFBWSxDQUFDLE9BQU8sQ0FBQTtLQUNyQixDQUFBLENBQUE7QUFBQSxHQUFBO0FBY00sRUFBQSxlQUFBLENBQWdCLElBQWlFLEVBQUE7QUEvQjFGLElBQUEsSUFBQSxFQUFBLENBQUE7QUFnQ0ksSUFBQSxNQUFNLGVBQWUsVUFBVyxDQUFBLFdBQUEsQ0FBWSxJQUFNLEVBQUEsSUFBQSxDQUFLLE1BQU0sS0FBSyxDQUFBLENBQUE7QUFDbEUsSUFBTSxNQUFBLEtBQUEsR0FBQSxDQUFRLEtBQWEsWUFBQSxDQUFBLEtBQUEsQ0FBTSxnQkFBZ0IsQ0FBbkMsS0FBQSxJQUFBLEdBQUEsS0FBd0MsRUFBQSxDQUFBO0FBRXRELElBQUEsTUFBTSxPQUFVLEdBQUEsS0FBQSxDQUFNLEdBQUksQ0FBQSxDQUFDLElBQVMsS0FBQTtBQW5DeENBLE1BQUFBLElBQUFBLEdBQUFBLENBQUFBO0FBb0NhLE1BQUEsSUFBQSxHQUFBLElBQUEsQ0FBSyxPQUFRLENBQUEsTUFBQSxFQUFRLEdBQUcsQ0FBQSxDQUFBO0FBQ3pCLE1BQUEsTUFBQSxTQUFBLEdBQUEsQ0FBWUEsTUFBQSxrQkFBbUIsQ0FBQSxJQUFBLENBQUssSUFBSSxDQUE1QixLQUFBLElBQUEsR0FBQUEsTUFBaUMsRUFBQSxDQUFBO0FBQy9DLE1BQUEsSUFBQSxTQUFBLENBQVUsV0FBVyxDQUFHLEVBQUE7QUFDMUIsUUFBQSxNQUFNLEdBQUcsR0FBSyxFQUFBLEtBQUssQ0FBSSxHQUFBLFNBQUEsQ0FBQTtBQUNoQixRQUFBLE9BQUEsRUFBRSxPQUFPLEdBQUksQ0FBQSxJQUFBLElBQVEsS0FBTyxFQUFBLEtBQUEsQ0FBTSxNQUFPLEVBQUEsQ0FBQTtPQUMzQyxNQUFBO0FBQ0UsUUFBQSxPQUFBLEVBQUUsT0FBTyxJQUFLLENBQUEsSUFBQSxJQUFRLEtBQU8sRUFBQSxJQUFBLENBQUssTUFBTyxFQUFBLENBQUE7QUFBQSxPQUFBO0tBRW5ELENBQUEsQ0FBQTtBQUVELElBQUEsT0FBTyxHQUFHLE9BQU8sQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQU1yQixDQUFBO0FBdENhLGNBQUEsQ0FtQ0csU0FBWSxHQUFBLENBQUMsRUFBRSxLQUFBLEVBQXFELEtBQUE7QUFDaEYsRUFBQSxPQUFPLHdCQUF3QixLQUFLLENBQUEsQ0FBQTtBQUN0QyxDQUFBOzs7OyJ9
@@ -0,0 +1,88 @@
1
+ import { of } from 'rxjs';
2
+ import { stringToJsRegex } from '@grafana/data';
3
+ import { getDataSourceSrv } from '@grafana/runtime';
4
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
5
+ import { VariableDependencyConfig } from '../VariableDependencyConfig.js';
6
+ import { renderSelectForVariable } from '../components/VariableValueSelect.js';
7
+ import { MultiValueVariable } from './MultiValueVariable.js';
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ class DataSourceVariable extends MultiValueVariable {
26
+ constructor(initialState) {
27
+ super(__spreadValues({
28
+ type: "datasource",
29
+ value: "",
30
+ text: "",
31
+ options: [],
32
+ name: "",
33
+ regex: "",
34
+ pluginId: ""
35
+ }, initialState));
36
+ this._variableDependency = new VariableDependencyConfig(this, {
37
+ statePaths: ["regex"]
38
+ });
39
+ }
40
+ getValueOptions(args) {
41
+ if (!this.state.pluginId) {
42
+ return of([]);
43
+ }
44
+ const dataSources = getDataSourceSrv().getList({ metrics: true, variables: false, pluginId: this.state.pluginId });
45
+ let regex;
46
+ if (this.state.regex) {
47
+ const interpolated = sceneGraph.interpolate(this, this.state.regex, void 0, "regex");
48
+ regex = stringToJsRegex(interpolated);
49
+ }
50
+ const options = [];
51
+ for (let i = 0; i < dataSources.length; i++) {
52
+ const source = dataSources[i];
53
+ if (isValid(source, regex)) {
54
+ options.push({ label: source.name, value: source.uid });
55
+ }
56
+ if (this.state.defaultOptionEnabled && isDefault(source, regex)) {
57
+ options.push({ label: "default", value: "default" });
58
+ }
59
+ }
60
+ if (options.length === 0) {
61
+ this.setState({ error: "No data sources found" });
62
+ } else if (this.state.error) {
63
+ this.setState({ error: null });
64
+ }
65
+ return of(options);
66
+ }
67
+ }
68
+ DataSourceVariable.Component = ({ model }) => {
69
+ return renderSelectForVariable(model);
70
+ };
71
+ function isValid(source, regex) {
72
+ if (!regex) {
73
+ return true;
74
+ }
75
+ return regex.exec(source.name);
76
+ }
77
+ function isDefault(source, regex) {
78
+ if (!source.isDefault) {
79
+ return false;
80
+ }
81
+ if (!regex) {
82
+ return true;
83
+ }
84
+ return regex.exec("default");
85
+ }
86
+
87
+ export { DataSourceVariable };
88
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZVZhcmlhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi92YXJpYWJsZXMvdmFyaWFudHMvRGF0YVNvdXJjZVZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdHJpbmdUb0pzUmVnZXggfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IGdldERhdGFTb3VyY2VTcnYgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi8uLi9jb3JlL3NjZW5lR3JhcGgvaW5kZXguanMnO1xuaW1wb3J0IHsgVmFyaWFibGVEZXBlbmRlbmN5Q29uZmlnIH0gZnJvbSAnLi4vVmFyaWFibGVEZXBlbmRlbmN5Q29uZmlnLmpzJztcbmltcG9ydCB7IHJlbmRlclNlbGVjdEZvclZhcmlhYmxlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9WYXJpYWJsZVZhbHVlU2VsZWN0LmpzJztcbmltcG9ydCB7IE11bHRpVmFsdWVWYXJpYWJsZSB9IGZyb20gJy4vTXVsdGlWYWx1ZVZhcmlhYmxlLmpzJztcblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuY2xhc3MgRGF0YVNvdXJjZVZhcmlhYmxlIGV4dGVuZHMgTXVsdGlWYWx1ZVZhcmlhYmxlIHtcbiAgY29uc3RydWN0b3IoaW5pdGlhbFN0YXRlKSB7XG4gICAgc3VwZXIoX19zcHJlYWRWYWx1ZXMoe1xuICAgICAgdHlwZTogXCJkYXRhc291cmNlXCIsXG4gICAgICB2YWx1ZTogXCJcIixcbiAgICAgIHRleHQ6IFwiXCIsXG4gICAgICBvcHRpb25zOiBbXSxcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICByZWdleDogXCJcIixcbiAgICAgIHBsdWdpbklkOiBcIlwiXG4gICAgfSwgaW5pdGlhbFN0YXRlKSk7XG4gICAgdGhpcy5fdmFyaWFibGVEZXBlbmRlbmN5ID0gbmV3IFZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZyh0aGlzLCB7XG4gICAgICBzdGF0ZVBhdGhzOiBbXCJyZWdleFwiXVxuICAgIH0pO1xuICB9XG4gIGdldFZhbHVlT3B0aW9ucyhhcmdzKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLnBsdWdpbklkKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cbiAgICBjb25zdCBkYXRhU291cmNlcyA9IGdldERhdGFTb3VyY2VTcnYoKS5nZXRMaXN0KHsgbWV0cmljczogdHJ1ZSwgdmFyaWFibGVzOiBmYWxzZSwgcGx1Z2luSWQ6IHRoaXMuc3RhdGUucGx1Z2luSWQgfSk7XG4gICAgbGV0IHJlZ2V4O1xuICAgIGlmICh0aGlzLnN0YXRlLnJlZ2V4KSB7XG4gICAgICBjb25zdCBpbnRlcnBvbGF0ZWQgPSBzY2VuZUdyYXBoLmludGVycG9sYXRlKHRoaXMsIHRoaXMuc3RhdGUucmVnZXgsIHZvaWQgMCwgXCJyZWdleFwiKTtcbiAgICAgIHJlZ2V4ID0gc3RyaW5nVG9Kc1JlZ2V4KGludGVycG9sYXRlZCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFTb3VyY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBkYXRhU291cmNlc1tpXTtcbiAgICAgIGlmIChpc1ZhbGlkKHNvdXJjZSwgcmVnZXgpKSB7XG4gICAgICAgIG9wdGlvbnMucHVzaCh7IGxhYmVsOiBzb3VyY2UubmFtZSwgdmFsdWU6IHNvdXJjZS51aWQgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdGF0ZS5kZWZhdWx0T3B0aW9uRW5hYmxlZCAmJiBpc0RlZmF1bHQoc291cmNlLCByZWdleCkpIHtcbiAgICAgICAgb3B0aW9ucy5wdXNoKHsgbGFiZWw6IFwiZGVmYXVsdFwiLCB2YWx1ZTogXCJkZWZhdWx0XCIgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yOiBcIk5vIGRhdGEgc291cmNlcyBmb3VuZFwiIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yOiBudWxsIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb2Yob3B0aW9ucyk7XG4gIH1cbn1cbkRhdGFTb3VyY2VWYXJpYWJsZS5Db21wb25lbnQgPSAoeyBtb2RlbCB9KSA9PiB7XG4gIHJldHVybiByZW5kZXJTZWxlY3RGb3JWYXJpYWJsZShtb2RlbCk7XG59O1xuZnVuY3Rpb24gaXNWYWxpZChzb3VyY2UsIHJlZ2V4KSB7XG4gIGlmICghcmVnZXgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVnZXguZXhlYyhzb3VyY2UubmFtZSk7XG59XG5mdW5jdGlvbiBpc0RlZmF1bHQoc291cmNlLCByZWdleCkge1xuICBpZiAoIXNvdXJjZS5pc0RlZmF1bHQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFyZWdleCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiByZWdleC5leGVjKFwiZGVmYXVsdFwiKTtcbn1cblxuZXhwb3J0IHsgRGF0YVNvdXJjZVZhcmlhYmxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVJHRjBZVk52ZFhKalpWWmhjbWxoWW14bExtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXpjbU12ZG1GeWFXRmliR1Z6TDNaaGNtbGhiblJ6TDBSaGRHRlRiM1Z5WTJWV1lYSnBZV0pzWlM1MGMzZ2lYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnVDJKelpYSjJZV0pzWlN3Z2IyWWdmU0JtY205dElDZHllR3B6Snp0Y2JseHVhVzF3YjNKMElIc2djM1J5YVc1blZHOUtjMUpsWjJWNExDQkVZWFJoVTI5MWNtTmxTVzV6ZEdGdVkyVlRaWFIwYVc1bmN5QjlJR1p5YjIwZ0owQm5jbUZtWVc1aEwyUmhkR0VuTzF4dWFXMXdiM0owSUhzZ1oyVjBSR0YwWVZOdmRYSmpaVk55ZGlCOUlHWnliMjBnSjBCbmNtRm1ZVzVoTDNKMWJuUnBiV1VuTzF4dVhHNXBiWEJ2Y25RZ2V5QnpZMlZ1WlVkeVlYQm9JSDBnWm5KdmJTQW5MaTR2TGk0dlkyOXlaUzl6WTJWdVpVZHlZWEJvSnp0Y2JtbHRjRzl5ZENCN0lGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITWdmU0JtY205dElDY3VMaTh1TGk5amIzSmxMM1I1Y0dWekp6dGNibWx0Y0c5eWRDQjdJRlpoY21saFlteGxSR1Z3Wlc1a1pXNWplVU52Ym1acFp5QjlJR1p5YjIwZ0p5NHVMMVpoY21saFlteGxSR1Z3Wlc1a1pXNWplVU52Ym1acFp5YzdYRzVwYlhCdmNuUWdleUJ5Wlc1a1pYSlRaV3hsWTNSR2IzSldZWEpwWVdKc1pTQjlJR1p5YjIwZ0p5NHVMMk52YlhCdmJtVnVkSE12Vm1GeWFXRmliR1ZXWVd4MVpWTmxiR1ZqZENjN1hHNXBiWEJ2Y25RZ2V5QldZWEpwWVdKc1pWWmhiSFZsVDNCMGFXOXVJSDBnWm5KdmJTQW5MaTR2ZEhsd1pYTW5PMXh1WEc1cGJYQnZjblFnZXlCTmRXeDBhVlpoYkhWbFZtRnlhV0ZpYkdVc0lFMTFiSFJwVm1Gc2RXVldZWEpwWVdKc1pWTjBZWFJsTENCV1lYSnBZV0pzWlVkbGRFOXdkR2x2Ym5OQmNtZHpJSDBnWm5KdmJTQW5MaTlOZFd4MGFWWmhiSFZsVm1GeWFXRmliR1VuTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFUmhkR0ZUYjNWeVkyVldZWEpwWVdKc1pWTjBZWFJsSUdWNGRHVnVaSE1nVFhWc2RHbFdZV3gxWlZaaGNtbGhZbXhsVTNSaGRHVWdlMXh1SUNBdktpcGNiaUFnSUNvZ1NXNWpiSFZrWlNCaGJHd2daR0YwWVNCemIzVnlZMlVnYVc1emRHRnVZMlZ6SUhkcGRHZ2dkR2hwY3lCd2JIVm5hVzRnYVdSY2JpQWdJQ292WEc0Z0lIQnNkV2RwYmtsa09pQnpkSEpwYm1jN1hHNGdJQzhxS2x4dUlDQWdLaUJHYVd4MFpYSWdaR0YwWVNCemIzVnlZMlVnYVc1emRHRnVZMlZ6SUdKaGMyVmtJRzl1SUc1aGJXVmNiaUFnSUNvdlhHNGdJSEpsWjJWNE9pQnpkSEpwYm1jN1hHNGdJQzhxS2x4dUlDQWdLaUJHYjNJZ1ltRmphM2RoY21SeklHTnZiWEJoZEdGaWFXeHBkSGtnZDJsMGFDQnZiR1FnWkdGemFHSnZZWEprY3l3Z2QybHNiQ0JzYVd0bGJIa2dZbVVnY21WdGIzWmxaRnh1SUNBZ0tpOWNiaUFnWkdWbVlYVnNkRTl3ZEdsdmJrVnVZV0pzWldRL09pQmliMjlzWldGdU8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdSR0YwWVZOdmRYSmpaVlpoY21saFlteGxJR1Y0ZEdWdVpITWdUWFZzZEdsV1lXeDFaVlpoY21saFlteGxQRVJoZEdGVGIzVnlZMlZXWVhKcFlXSnNaVk4wWVhSbFBpQjdYRzRnSUhCeWIzUmxZM1JsWkNCZmRtRnlhV0ZpYkdWRVpYQmxibVJsYm1ONUlEMGdibVYzSUZaaGNtbGhZbXhsUkdWd1pXNWtaVzVqZVVOdmJtWnBaeWgwYUdsekxDQjdYRzRnSUNBZ2MzUmhkR1ZRWVhSb2N6b2dXeWR5WldkbGVDZGRMRnh1SUNCOUtUdGNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2FXNXBkR2xoYkZOMFlYUmxPaUJRWVhKMGFXRnNQRVJoZEdGVGIzVnlZMlZXWVhKcFlXSnNaVk4wWVhSbFBpa2dlMXh1SUNBZ0lITjFjR1Z5S0h0Y2JpQWdJQ0FnSUhSNWNHVTZJQ2RrWVhSaGMyOTFjbU5sSnl4Y2JpQWdJQ0FnSUhaaGJIVmxPaUFuSnl4Y2JpQWdJQ0FnSUhSbGVIUTZJQ2NuTEZ4dUlDQWdJQ0FnYjNCMGFXOXVjem9nVzEwc1hHNGdJQ0FnSUNCdVlXMWxPaUFuSnl4Y2JpQWdJQ0FnSUhKbFoyVjRPaUFuSnl4Y2JpQWdJQ0FnSUhCc2RXZHBia2xrT2lBbkp5eGNiaUFnSUNBZ0lDNHVMbWx1YVhScFlXeFRkR0YwWlN4Y2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUldZV3gxWlU5d2RHbHZibk1vWVhKbmN6b2dWbUZ5YVdGaWJHVkhaWFJQY0hScGIyNXpRWEpuY3lrNklFOWljMlZ5ZG1GaWJHVThWbUZ5YVdGaWJHVldZV3gxWlU5d2RHbHZibHRkUGlCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG5OMFlYUmxMbkJzZFdkcGJrbGtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiMllvVzEwcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR1JoZEdGVGIzVnlZMlZ6SUQwZ1oyVjBSR0YwWVZOdmRYSmpaVk55ZGlncExtZGxkRXhwYzNRb2V5QnRaWFJ5YVdOek9pQjBjblZsTENCMllYSnBZV0pzWlhNNklHWmhiSE5sTENCd2JIVm5hVzVKWkRvZ2RHaHBjeTV6ZEdGMFpTNXdiSFZuYVc1SlpDQjlLVHRjYmx4dUlDQWdJR3hsZENCeVpXZGxlRHRjYmlBZ0lDQnBaaUFvZEdocGN5NXpkR0YwWlM1eVpXZGxlQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhVzUwWlhKd2IyeGhkR1ZrSUQwZ2MyTmxibVZIY21Gd2FDNXBiblJsY25CdmJHRjBaU2gwYUdsekxDQjBhR2x6TG5OMFlYUmxMbkpsWjJWNExDQjFibVJsWm1sdVpXUXNJQ2R5WldkbGVDY3BPMXh1SUNBZ0lDQWdjbVZuWlhnZ1BTQnpkSEpwYm1kVWIwcHpVbVZuWlhnb2FXNTBaWEp3YjJ4aGRHVmtLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdmNIUnBiMjV6T2lCV1lYSnBZV0pzWlZaaGJIVmxUM0IwYVc5dVcxMGdQU0JiWFR0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pHRjBZVk52ZFhKalpYTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSE52ZFhKalpTQTlJR1JoZEdGVGIzVnlZMlZ6VzJsZE8xeHVYRzRnSUNBZ0lDQnBaaUFvYVhOV1lXeHBaQ2h6YjNWeVkyVXNJSEpsWjJWNEtTa2dlMXh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpMbkIxYzJnb2V5QnNZV0psYkRvZ2MyOTFjbU5sTG01aGJXVXNJSFpoYkhWbE9pQnpiM1Z5WTJVdWRXbGtJSDBwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1emRHRjBaUzVrWldaaGRXeDBUM0IwYVc5dVJXNWhZbXhsWkNBbUppQnBjMFJsWm1GMWJIUW9jMjkxY21ObExDQnlaV2RsZUNrcElIdGNiaUFnSUNBZ0lDQWdiM0IwYVc5dWN5NXdkWE5vS0hzZ2JHRmlaV3c2SUNka1pXWmhkV3gwSnl3Z2RtRnNkV1U2SUNka1pXWmhkV3gwSnlCOUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NXNaVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9leUJsY25KdmNqb2dKMDV2SUdSaGRHRWdjMjkxY21ObGN5Qm1iM1Z1WkNjZ2ZTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG5OMFlYUmxMbVZ5Y205eUtTQjdYRzRnSUNBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0hzZ1pYSnliM0k2SUc1MWJHd2dmU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHOW1LRzl3ZEdsdmJuTXBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkRiMjF3YjI1bGJuUWdQU0FvZXlCdGIyUmxiQ0I5T2lCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCelBFMTFiSFJwVm1Gc2RXVldZWEpwWVdKc1pUNHBJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ1WkdWeVUyVnNaV04wUm05eVZtRnlhV0ZpYkdVb2JXOWtaV3dwTzF4dUlDQjlPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnBjMVpoYkdsa0tITnZkWEpqWlRvZ1JHRjBZVk52ZFhKalpVbHVjM1JoYm1ObFUyVjBkR2x1WjNNc0lISmxaMlY0UHpvZ1VtVm5SWGh3S1NCN1hHNGdJR2xtSUNnaGNtVm5aWGdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCeVpXZGxlQzVsZUdWaktITnZkWEpqWlM1dVlXMWxLVHRjYm4xY2JseHVablZ1WTNScGIyNGdhWE5FWldaaGRXeDBLSE52ZFhKalpUb2dSR0YwWVZOdmRYSmpaVWx1YzNSaGJtTmxVMlYwZEdsdVozTXNJSEpsWjJWNFB6b2dVbVZuUlhod0tTQjdYRzRnSUdsbUlDZ2hjMjkxY21ObExtbHpSR1ZtWVhWc2RDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ2ZWeHVYRzRnSUdsbUlDZ2hjbVZuWlhncElIdGNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnlaV2RsZUM1bGVHVmpLQ2RrWldaaGRXeDBKeWs3WEc1OVhHNGlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3pzN096czdPenM3TzBGQk5FSlBMRTFCUVUwc01rSkJRVEpDTEd0Q1FVRTBReXhEUVVGQk8wRkJRVUVzUlVGTE0wVXNXVUZCV1N4WlFVRm5SQ3hGUVVGQk8wRkJRMnBGTEVsQlFVMHNTMEZCUVN4RFFVRkJMR05CUVVFc1EwRkJRVHRCUVVGQkxFMUJRMG9zU1VGQlRTeEZRVUZCTEZsQlFVRTdRVUZCUVN4TlFVTk9MRXRCUVU4c1JVRkJRU3hGUVVGQk8wRkJRVUVzVFVGRFVDeEpRVUZOTEVWQlFVRXNSVUZCUVR0QlFVRkJMRTFCUTA0c1UwRkJVeXhGUVVGRE8wRkJRVUVzVFVGRFZpeEpRVUZOTEVWQlFVRXNSVUZCUVR0QlFVRkJMRTFCUTA0c1MwRkJUeXhGUVVGQkxFVkJRVUU3UVVGQlFTeE5RVU5RTEZGQlFWVXNSVUZCUVN4RlFVRkJPMEZCUVVFc1MwRkJRU3hGUVVOUUxGbEJRMG9zUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZrU0N4SlFVRlZMRWxCUVVFc1EwRkJRU3h0UWtGQlFTeEhRVUZ6UWl4SlFVRkpMSGRDUVVGQkxFTkJRWGxDTEVsQlFVMHNSVUZCUVR0QlFVRkJMRTFCUTJwRkxGVkJRVUVzUlVGQldTeERRVUZETEU5QlFVOHNRMEZCUVR0QlFVRkJMRXRCUTNKQ0xFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQllVUTdRVUZCUVN4RlFVVlBMR2RDUVVGblFpeEpRVUZwUlN4RlFVRkJPMEZCUTNSR0xFbEJRVWtzU1VGQlFTeERRVUZETEVsQlFVc3NRMEZCUVN4TFFVRkJMRU5CUVUwc1VVRkJWU3hGUVVGQk8wRkJRM2hDTEUxQlFVOHNUMEZCUVN4RlFVRkJMRU5CUVVjc1JVRkJSU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5rTzBGQlJVRXNTVUZCUVN4TlFVRk5MRmRCUVdNc1IwRkJRU3huUWtGQlFTeEZRVUZ0UWl4RFFVRkJMRTlCUVVFc1EwRkJVU3hGUVVGRkxFOUJRVUVzUlVGQlV5eEpRVUZOTEVWQlFVRXNVMEZCUVN4RlFVRlhMRXRCUVU4c1JVRkJRU3hSUVVGQkxFVkJRVlVzU1VGQlN5eERRVUZCTEV0QlFVRXNRMEZCVFN4VlFVRlZMRU5CUVVFc1EwRkJRVHRCUVVWcVNDeEpRVUZKTEVsQlFVRXNTMEZCUVN4RFFVRkJPMEZCUTBvc1NVRkJTU3hKUVVGQkxFbEJRVUVzUTBGQlN5eE5RVUZOTEV0QlFVOHNSVUZCUVR0QlFVTndRaXhOUVVGTkxFMUJRVUVzV1VGQlFTeEhRVUZsTEZkQlFWY3NWMEZCV1N4RFFVRkJMRWxCUVVFc1JVRkJUU3hMUVVGTExFdEJRVTBzUTBGQlFTeExRVUZCTEVWQlFVOHNVVUZCVnl4UFFVRlBMRU5CUVVFc1EwRkJRVHRCUVVOMFJpeE5RVUZCTEV0QlFVRXNSMEZCVVN4blFrRkJaMElzV1VGQldTeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTjBRenRCUVVWQkxFbEJRVUVzVFVGQlRTeFZRVUZwUXl4RlFVRkRMRU5CUVVFN1FVRkZlRU1zU1VGQlFTeExRVUZCTEVsQlFWTXNRMEZCU1N4SFFVRkJMRU5CUVVFc1JVRkJSeXhEUVVGSkxFZEJRVUVzVjBGQlFTeERRVUZaTEZGQlFWRXNRMEZCU3l4RlFVRkJMRVZCUVVFN1FVRkRNME1zVFVGQlFTeE5RVUZOTEZOQlFWTXNWMEZCV1N4RFFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJSVE5DTEUxQlFVa3NTVUZCUVN4UFFVRkJMRU5CUVZFc1RVRkJVU3hGUVVGQkxFdEJRVXNzUTBGQlJ5eEZRVUZCTzBGQlF6RkNMRkZCUVZFc1QwRkJRU3hEUVVGQkxFbEJRVUVzUTBGQlN5eEZRVUZGTEV0QlFVOHNSVUZCUVN4TlFVRkJMRU5CUVU4c1RVRkJUU3hMUVVGUExFVkJRVUVzVFVGQlFTeERRVUZQTEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkRlRVE3UVVGRlFTeE5RVUZCTEVsQlFVa3NTMEZCU3l4TFFVRk5MRU5CUVVFc2IwSkJRVUVzU1VGQmQwSXNVMEZCVlN4RFFVRkJMRTFCUVVFc1JVRkJVU3hMUVVGTExFTkJRVWNzUlVGQlFUdEJRVU12UkN4UlFVRkJMRTlCUVVFc1EwRkJVU3hMUVVGTExFVkJRVVVzUzBGQlFTeEZRVUZQTEZOQlFWY3NSVUZCUVN4TFFVRkJMRVZCUVU4c1YwRkJWeXhEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU55UkR0QlFVRkJMRXRCUTBZN1FVRkZRU3hKUVVGSkxFbEJRVUVzVDBGQlFTeERRVUZSTEZkQlFWY3NRMEZCUnl4RlFVRkJPMEZCUTNoQ0xFMUJRVUVzU1VGQlFTeERRVUZMTEZGQlFWTXNRMEZCUVN4RlFVRkZMRXRCUVU4c1JVRkJRU3gxUWtGQlFTeEZRVUY1UWl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOc1JDeE5RVUZCTEVsQlFWY3NTVUZCU3l4RFFVRkJMRXRCUVVFc1EwRkJUU3hMUVVGUExFVkJRVUU3UVVGRE0wSXNUVUZCUVN4SlFVRkJMRU5CUVVzc1VVRkJVeXhEUVVGQkxFVkJRVVVzUzBGQlR5eEZRVUZCTEVsQlFVRXNSVUZCVFN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVNdlFqdEJRVVZCTEVsQlFVRXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGJrSTdRVUZMUml4RFFVRkJPMEZCZWtSaExHdENRVUZCTEVOQmMwUkhMRk5CUVZrc1IwRkJRU3hEUVVGRExFVkJRVVVzUzBGQlFTeEZRVUZ4UkN4TFFVRkJPMEZCUTJoR0xFVkJRVUVzVDBGQlR5eDNRa0ZCZDBJc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGRGRFTXNRMEZCUVN4RFFVRkJPMEZCUjBZc1UwRkJVeXhQUVVGQkxFTkJRVkVzVVVGQmIwTXNTMEZCWjBJc1JVRkJRVHRCUVVOdVJTeEZRVUZCTEVsQlFVa3NRMEZCUXl4TFFVRlBMRVZCUVVFN1FVRkRWaXhKUVVGUExFOUJRVUVzU1VGQlFTeERRVUZCTzBGQlFVRXNSMEZEVkR0QlFVVkJMRVZCUVU4c1QwRkJRU3hMUVVGQkxFTkJRVTBzU1VGQlN5eERRVUZCTEUxQlFVRXNRMEZCVHl4SlFVRkpMRU5CUVVFc1EwRkJRVHRCUVVNdlFpeERRVUZCTzBGQlJVRXNVMEZCVXl4VFFVRkJMRU5CUVZVc1VVRkJiME1zUzBGQlowSXNSVUZCUVR0QlFVTnlSU3hGUVVGSkxFbEJRVUVzUTBGQlF5eFBRVUZQTEZOQlFWY3NSVUZCUVR0QlFVTnlRaXhKUVVGUExFOUJRVUVzUzBGQlFTeERRVUZCTzBGQlFVRXNSMEZEVkR0QlFVVkJMRVZCUVVFc1NVRkJTU3hEUVVGRExFdEJRVThzUlVGQlFUdEJRVU5XTEVsQlFVOHNUMEZCUVN4SlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJSVUVzUlVGQlR5eFBRVUZCTEV0QlFVRXNRMEZCVFN4TFFVRkxMRk5CUVZNc1EwRkJRU3hEUVVGQk8wRkJRemRDT3pzN095SjlcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0Qk8sTUFBTSwyQkFBMkIsa0JBQTRDLENBQUE7QUFLM0UsRUFBQSxXQUFBLENBQVksWUFBZ0QsRUFBQTtBQUMzRCxJQUFBLEtBQUEsQ0FBQSxjQUFBLENBQUE7TUFDSixJQUFNLEVBQUEsWUFBQTtNQUNOLEtBQU8sRUFBQSxFQUFBO01BQ1AsSUFBTSxFQUFBLEVBQUE7QUFDTixNQUFBLE9BQUEsRUFBUyxFQUFBO01BQ1QsSUFBTSxFQUFBLEVBQUE7TUFDTixLQUFPLEVBQUEsRUFBQTtNQUNQLFFBQVUsRUFBQSxFQUFBO0FBQUEsS0FBQSxFQUNQLFlBQ0osQ0FBQSxDQUFBLENBQUE7QUFkTyxJQUFBLElBQUEsQ0FBQSxtQkFBQSxHQUFzQixJQUFJLHdCQUFBLENBQXlCLElBQU0sRUFBQTtBQUNqRSxNQUFBLFVBQUEsRUFBWSxDQUFDLE9BQU8sQ0FBQTtLQUNyQixDQUFBLENBQUE7QUFBQSxHQUFBO0FBZU0sRUFBQSxlQUFBLENBQWdCLElBQWlFLEVBQUE7QUFDbEYsSUFBQSxJQUFBLENBQUMsSUFBSyxDQUFBLEtBQUEsQ0FBTSxRQUFVLEVBQUE7QUFDakIsTUFBQSxPQUFBLEVBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFHZCxJQUFBLE1BQU0sV0FBYyxHQUFBLGdCQUFBLEVBQW1CLENBQUEsT0FBQSxDQUFRLEVBQUUsT0FBQSxFQUFTLElBQU0sRUFBQSxTQUFBLEVBQVcsS0FBTyxFQUFBLFFBQUEsRUFBVSxJQUFLLENBQUEsS0FBQSxDQUFNLFVBQVUsQ0FBQSxDQUFBO0FBRTdHLElBQUEsSUFBQSxLQUFBLENBQUE7QUFDQSxJQUFBLElBQUEsSUFBQSxDQUFLLE1BQU0sS0FBTyxFQUFBO0FBQ2QsTUFBQSxNQUFBLFlBQUEsR0FBZSxXQUFXLFdBQVksQ0FBQSxJQUFBLEVBQU0sS0FBSyxLQUFNLENBQUEsS0FBQSxFQUFPLFFBQVcsT0FBTyxDQUFBLENBQUE7QUFDdEYsTUFBQSxLQUFBLEdBQVEsZ0JBQWdCLFlBQVksQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUd0QyxJQUFBLE1BQU0sVUFBaUMsRUFBQSxDQUFBO0FBRXZDLElBQUEsS0FBQSxJQUFTLENBQUksR0FBQSxDQUFBLEVBQUcsQ0FBSSxHQUFBLFdBQUEsQ0FBWSxRQUFRLENBQUssRUFBQSxFQUFBO0FBQzNDLE1BQUEsTUFBTSxTQUFTLFdBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUV2QixNQUFBLElBQUEsT0FBQSxDQUFRLE1BQVEsRUFBQSxLQUFLLENBQUcsRUFBQTtBQUNsQixRQUFBLE9BQUEsQ0FBQSxJQUFBLENBQUssRUFBRSxLQUFPLEVBQUEsTUFBQSxDQUFPLE1BQU0sS0FBTyxFQUFBLE1BQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQTtBQUFBLE9BQUE7QUFHeEQsTUFBQSxJQUFJLEtBQUssS0FBTSxDQUFBLG9CQUFBLElBQXdCLFNBQVUsQ0FBQSxNQUFBLEVBQVEsS0FBSyxDQUFHLEVBQUE7QUFDL0QsUUFBQSxPQUFBLENBQVEsS0FBSyxFQUFFLEtBQUEsRUFBTyxTQUFXLEVBQUEsS0FBQSxFQUFPLFdBQVcsQ0FBQSxDQUFBO0FBQUEsT0FBQTtBQUNyRCxLQUFBO0FBR0UsSUFBQSxJQUFBLE9BQUEsQ0FBUSxXQUFXLENBQUcsRUFBQTtBQUN4QixNQUFBLElBQUEsQ0FBSyxRQUFTLENBQUEsRUFBRSxLQUFPLEVBQUEsdUJBQUEsRUFBeUIsQ0FBQSxDQUFBO0tBQ3ZDLE1BQUEsSUFBQSxJQUFBLENBQUssTUFBTSxLQUFPLEVBQUE7QUFDM0IsTUFBQSxJQUFBLENBQUssUUFBUyxDQUFBLEVBQUUsS0FBTyxFQUFBLElBQUEsRUFBTSxDQUFBLENBQUE7QUFBQSxLQUFBO0FBRy9CLElBQUEsT0FBTyxHQUFHLE9BQU8sQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQU1yQixDQUFBO0FBekRhLGtCQUFBLENBc0RHLFNBQVksR0FBQSxDQUFDLEVBQUUsS0FBQSxFQUFxRCxLQUFBO0FBQ2hGLEVBQUEsT0FBTyx3QkFBd0IsS0FBSyxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBO0FBR0YsU0FBUyxPQUFBLENBQVEsUUFBb0MsS0FBZ0IsRUFBQTtBQUNuRSxFQUFBLElBQUksQ0FBQyxLQUFPLEVBQUE7QUFDSCxJQUFBLE9BQUEsSUFBQSxDQUFBO0FBQUEsR0FBQTtBQUdGLEVBQUEsT0FBQSxLQUFBLENBQU0sSUFBSyxDQUFBLE1BQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQTtBQUMvQixDQUFBO0FBRUEsU0FBUyxTQUFBLENBQVUsUUFBb0MsS0FBZ0IsRUFBQTtBQUNqRSxFQUFBLElBQUEsQ0FBQyxPQUFPLFNBQVcsRUFBQTtBQUNkLElBQUEsT0FBQSxLQUFBLENBQUE7QUFBQSxHQUFBO0FBR1QsRUFBQSxJQUFJLENBQUMsS0FBTyxFQUFBO0FBQ0gsSUFBQSxPQUFBLElBQUEsQ0FBQTtBQUFBLEdBQUE7QUFHRixFQUFBLE9BQUEsS0FBQSxDQUFNLEtBQUssU0FBUyxDQUFBLENBQUE7QUFDN0I7Ozs7In0=