@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,240 @@
1
+ import { rangeUtil, dateTime, FieldType } from '@grafana/data';
2
+ import { config } from '@grafana/runtime';
3
+ import { useStyles2, ButtonGroup, ToolbarButton, Checkbox, ButtonSelect } from '@grafana/ui';
4
+ import React from 'react';
5
+ import { sceneGraph } from '../core/sceneGraph/index.js';
6
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
7
+ import { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig.js';
8
+ import { getCompareSeriesRefId } from '../utils/getCompareSeriesRefId.js';
9
+ import { parseUrlParam } from '../utils/parseUrlParam.js';
10
+ import { css } from '@emotion/css';
11
+ import { of } from 'rxjs';
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __defProps = Object.defineProperties;
15
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
16
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
17
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
18
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
19
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
20
+ var __spreadValues = (a, b) => {
21
+ for (var prop in b || (b = {}))
22
+ if (__hasOwnProp.call(b, prop))
23
+ __defNormalProp(a, prop, b[prop]);
24
+ if (__getOwnPropSymbols)
25
+ for (var prop of __getOwnPropSymbols(b)) {
26
+ if (__propIsEnum.call(b, prop))
27
+ __defNormalProp(a, prop, b[prop]);
28
+ }
29
+ return a;
30
+ };
31
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
32
+ const PREVIOUS_PERIOD_VALUE = "__previousPeriod";
33
+ const NO_PERIOD_VALUE = "__noPeriod";
34
+ const PREVIOUS_PERIOD_COMPARE_OPTION = {
35
+ label: "Previous period",
36
+ value: PREVIOUS_PERIOD_VALUE
37
+ };
38
+ const NO_COMPARE_OPTION = {
39
+ label: "No comparison",
40
+ value: NO_PERIOD_VALUE
41
+ };
42
+ const DEFAULT_COMPARE_OPTIONS = [
43
+ { label: "Day before", value: "24h" },
44
+ { label: "Week before", value: "1w" },
45
+ { label: "Month before", value: "1M" }
46
+ ];
47
+ class SceneTimeRangeCompare extends SceneObjectBase {
48
+ constructor(state) {
49
+ super(__spreadValues({ compareOptions: DEFAULT_COMPARE_OPTIONS }, state));
50
+ this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["compareWith"] });
51
+ this._onActivate = () => {
52
+ const sceneTimeRange = sceneGraph.getTimeRange(this);
53
+ this.setState({ compareOptions: this.getCompareOptions(sceneTimeRange.state.value) });
54
+ this._subs.add(
55
+ sceneTimeRange.subscribeToState((timeRange) => {
56
+ const compareOptions = this.getCompareOptions(timeRange.value);
57
+ const stateUpdate = { compareOptions };
58
+ if (Boolean(this.state.compareWith) && !compareOptions.find(({ value }) => value === this.state.compareWith)) {
59
+ stateUpdate.compareWith = PREVIOUS_PERIOD_VALUE;
60
+ }
61
+ this.setState(stateUpdate);
62
+ })
63
+ );
64
+ };
65
+ this.getCompareOptions = (timeRange) => {
66
+ const diffDays = Math.ceil(timeRange.to.diff(timeRange.from));
67
+ const matchIndex = DEFAULT_COMPARE_OPTIONS.findIndex(({ value }) => {
68
+ const intervalInMs = rangeUtil.intervalToMs(value);
69
+ return intervalInMs >= diffDays;
70
+ });
71
+ return [
72
+ NO_COMPARE_OPTION,
73
+ PREVIOUS_PERIOD_COMPARE_OPTION,
74
+ ...DEFAULT_COMPARE_OPTIONS.slice(matchIndex).map(({ label, value }) => ({ label, value }))
75
+ ];
76
+ };
77
+ this.onCompareWithChanged = (compareWith) => {
78
+ if (compareWith === NO_PERIOD_VALUE) {
79
+ this.onClearCompare();
80
+ } else {
81
+ this.setState({ compareWith });
82
+ }
83
+ };
84
+ this.onClearCompare = () => {
85
+ this.setState({ compareWith: void 0 });
86
+ };
87
+ this.addActivationHandler(this._onActivate);
88
+ }
89
+ getExtraQueries(request) {
90
+ const extraQueries = [];
91
+ const compareRange = this.getCompareTimeRange(request.range);
92
+ if (!compareRange) {
93
+ return extraQueries;
94
+ }
95
+ const targets = request.targets.filter((query) => query.timeRangeCompare !== false);
96
+ if (targets.length) {
97
+ extraQueries.push({
98
+ req: __spreadProps(__spreadValues({}, request), {
99
+ targets,
100
+ range: compareRange
101
+ }),
102
+ processor: timeShiftAlignmentProcessor
103
+ });
104
+ }
105
+ return extraQueries;
106
+ }
107
+ shouldRerun(prev, next, queries) {
108
+ return prev.compareWith !== next.compareWith && queries.find((query) => query.timeRangeCompare !== false) !== void 0;
109
+ }
110
+ getCompareTimeRange(timeRange) {
111
+ let compareFrom;
112
+ let compareTo;
113
+ if (this.state.compareWith) {
114
+ if (this.state.compareWith === PREVIOUS_PERIOD_VALUE) {
115
+ const diffMs = timeRange.to.diff(timeRange.from);
116
+ compareFrom = dateTime(timeRange.from).subtract(diffMs);
117
+ compareTo = dateTime(timeRange.to).subtract(diffMs);
118
+ } else {
119
+ compareFrom = dateTime(timeRange.from).subtract(rangeUtil.intervalToMs(this.state.compareWith));
120
+ compareTo = dateTime(timeRange.to).subtract(rangeUtil.intervalToMs(this.state.compareWith));
121
+ }
122
+ return {
123
+ from: compareFrom,
124
+ to: compareTo,
125
+ raw: {
126
+ from: compareFrom,
127
+ to: compareTo
128
+ }
129
+ };
130
+ }
131
+ return void 0;
132
+ }
133
+ getUrlState() {
134
+ return {
135
+ compareWith: this.state.compareWith
136
+ };
137
+ }
138
+ updateFromUrl(values) {
139
+ if (!values.compareWith) {
140
+ return;
141
+ }
142
+ const compareWith = parseUrlParam(values.compareWith);
143
+ if (compareWith) {
144
+ const compareOptions = this.getCompareOptions(sceneGraph.getTimeRange(this).state.value);
145
+ if (compareOptions.find(({ value }) => value === compareWith)) {
146
+ this.setState({
147
+ compareWith
148
+ });
149
+ } else {
150
+ this.setState({
151
+ compareWith: "__previousPeriod"
152
+ });
153
+ }
154
+ }
155
+ }
156
+ }
157
+ SceneTimeRangeCompare.Component = SceneTimeRangeCompareRenderer;
158
+ const timeShiftAlignmentProcessor = (primary, secondary) => {
159
+ const diff = secondary.timeRange.from.diff(primary.timeRange.from);
160
+ secondary.series.forEach((series) => {
161
+ series.refId = getCompareSeriesRefId(series.refId || "");
162
+ series.meta = __spreadProps(__spreadValues({}, series.meta), {
163
+ timeCompare: {
164
+ diffMs: diff,
165
+ isTimeShiftQuery: true
166
+ }
167
+ });
168
+ series.fields.forEach((field) => {
169
+ if (field.type === FieldType.time) {
170
+ field.values = field.values.map((v) => {
171
+ return diff < 0 ? v - diff : v + diff;
172
+ });
173
+ }
174
+ field.config = __spreadProps(__spreadValues({}, field.config), {
175
+ color: {
176
+ mode: "fixed",
177
+ fixedColor: config.theme.palette.gray60
178
+ }
179
+ });
180
+ return field;
181
+ });
182
+ });
183
+ return of(secondary);
184
+ };
185
+ function SceneTimeRangeCompareRenderer({ model }) {
186
+ var _a;
187
+ const styles = useStyles2(getStyles);
188
+ const { compareWith, compareOptions } = model.useState();
189
+ const [previousCompare, setPreviousCompare] = React.useState(compareWith);
190
+ const previousValue = (_a = compareOptions.find(({ value: value2 }) => value2 === previousCompare)) != null ? _a : PREVIOUS_PERIOD_COMPARE_OPTION;
191
+ const value = compareOptions.find(({ value: value2 }) => value2 === compareWith);
192
+ const enabled = Boolean(value);
193
+ const onClick = () => {
194
+ if (enabled) {
195
+ setPreviousCompare(compareWith);
196
+ model.onClearCompare();
197
+ } else if (!enabled) {
198
+ model.onCompareWithChanged(previousValue.value);
199
+ }
200
+ };
201
+ return /* @__PURE__ */ React.createElement(ButtonGroup, null, /* @__PURE__ */ React.createElement(ToolbarButton, {
202
+ variant: "canvas",
203
+ tooltip: "Enable time frame comparison",
204
+ onClick: (e) => {
205
+ e.stopPropagation();
206
+ e.preventDefault();
207
+ onClick();
208
+ }
209
+ }, /* @__PURE__ */ React.createElement(Checkbox, {
210
+ label: " ",
211
+ value: enabled,
212
+ onClick
213
+ }), "Comparison"), enabled ? /* @__PURE__ */ React.createElement(ButtonSelect, {
214
+ variant: "canvas",
215
+ value,
216
+ options: compareOptions,
217
+ onChange: (v) => {
218
+ model.onCompareWithChanged(v.value);
219
+ }
220
+ }) : /* @__PURE__ */ React.createElement(ToolbarButton, {
221
+ className: styles.previewButton,
222
+ disabled: true,
223
+ variant: "canvas",
224
+ isOpen: false
225
+ }, previousValue.label));
226
+ }
227
+ function getStyles(theme) {
228
+ return {
229
+ previewButton: css({
230
+ "&:disabled": {
231
+ border: `1px solid ${theme.colors.secondary.border}`,
232
+ color: theme.colors.text.disabled,
233
+ opacity: 1
234
+ }
235
+ })
236
+ };
237
+ }
238
+
239
+ export { DEFAULT_COMPARE_OPTIONS, NO_COMPARE_OPTION, PREVIOUS_PERIOD_COMPARE_OPTION, SceneTimeRangeCompare };
240
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUaW1lUmFuZ2VDb21wYXJlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL1NjZW5lVGltZVJhbmdlQ29tcGFyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5nZVV0aWwsIGRhdGVUaW1lLCBGaWVsZFR5cGUgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuaW1wb3J0IHsgdXNlU3R5bGVzMiwgQnV0dG9uR3JvdXAsIFRvb2xiYXJCdXR0b24sIENoZWNrYm94LCBCdXR0b25TZWxlY3QgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc2NlbmVHcmFwaCB9IGZyb20gJy4uL2NvcmUvc2NlbmVHcmFwaC9pbmRleC5qcyc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdFVybFN5bmNDb25maWcgfSBmcm9tICcuLi9zZXJ2aWNlcy9TY2VuZU9iamVjdFVybFN5bmNDb25maWcuanMnO1xuaW1wb3J0IHsgZ2V0Q29tcGFyZVNlcmllc1JlZklkIH0gZnJvbSAnLi4vdXRpbHMvZ2V0Q29tcGFyZVNlcmllc1JlZklkLmpzJztcbmltcG9ydCB7IHBhcnNlVXJsUGFyYW0gfSBmcm9tICcuLi91dGlscy9wYXJzZVVybFBhcmFtLmpzJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL2Nzcyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyA9IChhLCBiKSA9PiBfX2RlZlByb3BzKGEsIF9fZ2V0T3duUHJvcERlc2NzKGIpKTtcbmNvbnN0IFBSRVZJT1VTX1BFUklPRF9WQUxVRSA9IFwiX19wcmV2aW91c1BlcmlvZFwiO1xuY29uc3QgTk9fUEVSSU9EX1ZBTFVFID0gXCJfX25vUGVyaW9kXCI7XG5jb25zdCBQUkVWSU9VU19QRVJJT0RfQ09NUEFSRV9PUFRJT04gPSB7XG4gIGxhYmVsOiBcIlByZXZpb3VzIHBlcmlvZFwiLFxuICB2YWx1ZTogUFJFVklPVVNfUEVSSU9EX1ZBTFVFXG59O1xuY29uc3QgTk9fQ09NUEFSRV9PUFRJT04gPSB7XG4gIGxhYmVsOiBcIk5vIGNvbXBhcmlzb25cIixcbiAgdmFsdWU6IE5PX1BFUklPRF9WQUxVRVxufTtcbmNvbnN0IERFRkFVTFRfQ09NUEFSRV9PUFRJT05TID0gW1xuICB7IGxhYmVsOiBcIkRheSBiZWZvcmVcIiwgdmFsdWU6IFwiMjRoXCIgfSxcbiAgeyBsYWJlbDogXCJXZWVrIGJlZm9yZVwiLCB2YWx1ZTogXCIxd1wiIH0sXG4gIHsgbGFiZWw6IFwiTW9udGggYmVmb3JlXCIsIHZhbHVlOiBcIjFNXCIgfVxuXTtcbmNsYXNzIFNjZW5lVGltZVJhbmdlQ29tcGFyZSBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlKSB7XG4gICAgc3VwZXIoX19zcHJlYWRWYWx1ZXMoeyBjb21wYXJlT3B0aW9uczogREVGQVVMVF9DT01QQVJFX09QVElPTlMgfSwgc3RhdGUpKTtcbiAgICB0aGlzLl91cmxTeW5jID0gbmV3IFNjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyh0aGlzLCB7IGtleXM6IFtcImNvbXBhcmVXaXRoXCJdIH0pO1xuICAgIHRoaXMuX29uQWN0aXZhdGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBzY2VuZVRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbXBhcmVPcHRpb25zOiB0aGlzLmdldENvbXBhcmVPcHRpb25zKHNjZW5lVGltZVJhbmdlLnN0YXRlLnZhbHVlKSB9KTtcbiAgICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgICBzY2VuZVRpbWVSYW5nZS5zdWJzY3JpYmVUb1N0YXRlKCh0aW1lUmFuZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wYXJlT3B0aW9ucyA9IHRoaXMuZ2V0Q29tcGFyZU9wdGlvbnModGltZVJhbmdlLnZhbHVlKTtcbiAgICAgICAgICBjb25zdCBzdGF0ZVVwZGF0ZSA9IHsgY29tcGFyZU9wdGlvbnMgfTtcbiAgICAgICAgICBpZiAoQm9vbGVhbih0aGlzLnN0YXRlLmNvbXBhcmVXaXRoKSAmJiAhY29tcGFyZU9wdGlvbnMuZmluZCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gdGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkpIHtcbiAgICAgICAgICAgIHN0YXRlVXBkYXRlLmNvbXBhcmVXaXRoID0gUFJFVklPVVNfUEVSSU9EX1ZBTFVFO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlVXBkYXRlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfTtcbiAgICB0aGlzLmdldENvbXBhcmVPcHRpb25zID0gKHRpbWVSYW5nZSkgPT4ge1xuICAgICAgY29uc3QgZGlmZkRheXMgPSBNYXRoLmNlaWwodGltZVJhbmdlLnRvLmRpZmYodGltZVJhbmdlLmZyb20pKTtcbiAgICAgIGNvbnN0IG1hdGNoSW5kZXggPSBERUZBVUxUX0NPTVBBUkVfT1BUSU9OUy5maW5kSW5kZXgoKHsgdmFsdWUgfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnRlcnZhbEluTXMgPSByYW5nZVV0aWwuaW50ZXJ2YWxUb01zKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGludGVydmFsSW5NcyA+PSBkaWZmRGF5cztcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgTk9fQ09NUEFSRV9PUFRJT04sXG4gICAgICAgIFBSRVZJT1VTX1BFUklPRF9DT01QQVJFX09QVElPTixcbiAgICAgICAgLi4uREVGQVVMVF9DT01QQVJFX09QVElPTlMuc2xpY2UobWF0Y2hJbmRleCkubWFwKCh7IGxhYmVsLCB2YWx1ZSB9KSA9PiAoeyBsYWJlbCwgdmFsdWUgfSkpXG4gICAgICBdO1xuICAgIH07XG4gICAgdGhpcy5vbkNvbXBhcmVXaXRoQ2hhbmdlZCA9IChjb21wYXJlV2l0aCkgPT4ge1xuICAgICAgaWYgKGNvbXBhcmVXaXRoID09PSBOT19QRVJJT0RfVkFMVUUpIHtcbiAgICAgICAgdGhpcy5vbkNsZWFyQ29tcGFyZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbXBhcmVXaXRoIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5vbkNsZWFyQ29tcGFyZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb21wYXJlV2l0aDogdm9pZCAwIH0pO1xuICAgIH07XG4gICAgdGhpcy5hZGRBY3RpdmF0aW9uSGFuZGxlcih0aGlzLl9vbkFjdGl2YXRlKTtcbiAgfVxuICBnZXRFeHRyYVF1ZXJpZXMocmVxdWVzdCkge1xuICAgIGNvbnN0IGV4dHJhUXVlcmllcyA9IFtdO1xuICAgIGNvbnN0IGNvbXBhcmVSYW5nZSA9IHRoaXMuZ2V0Q29tcGFyZVRpbWVSYW5nZShyZXF1ZXN0LnJhbmdlKTtcbiAgICBpZiAoIWNvbXBhcmVSYW5nZSkge1xuICAgICAgcmV0dXJuIGV4dHJhUXVlcmllcztcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0cyA9IHJlcXVlc3QudGFyZ2V0cy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeS50aW1lUmFuZ2VDb21wYXJlICE9PSBmYWxzZSk7XG4gICAgaWYgKHRhcmdldHMubGVuZ3RoKSB7XG4gICAgICBleHRyYVF1ZXJpZXMucHVzaCh7XG4gICAgICAgIHJlcTogX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgcmVxdWVzdCksIHtcbiAgICAgICAgICB0YXJnZXRzLFxuICAgICAgICAgIHJhbmdlOiBjb21wYXJlUmFuZ2VcbiAgICAgICAgfSksXG4gICAgICAgIHByb2Nlc3NvcjogdGltZVNoaWZ0QWxpZ25tZW50UHJvY2Vzc29yXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dHJhUXVlcmllcztcbiAgfVxuICBzaG91bGRSZXJ1bihwcmV2LCBuZXh0LCBxdWVyaWVzKSB7XG4gICAgcmV0dXJuIHByZXYuY29tcGFyZVdpdGggIT09IG5leHQuY29tcGFyZVdpdGggJiYgcXVlcmllcy5maW5kKChxdWVyeSkgPT4gcXVlcnkudGltZVJhbmdlQ29tcGFyZSAhPT0gZmFsc2UpICE9PSB2b2lkIDA7XG4gIH1cbiAgZ2V0Q29tcGFyZVRpbWVSYW5nZSh0aW1lUmFuZ2UpIHtcbiAgICBsZXQgY29tcGFyZUZyb207XG4gICAgbGV0IGNvbXBhcmVUbztcbiAgICBpZiAodGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuY29tcGFyZVdpdGggPT09IFBSRVZJT1VTX1BFUklPRF9WQUxVRSkge1xuICAgICAgICBjb25zdCBkaWZmTXMgPSB0aW1lUmFuZ2UudG8uZGlmZih0aW1lUmFuZ2UuZnJvbSk7XG4gICAgICAgIGNvbXBhcmVGcm9tID0gZGF0ZVRpbWUodGltZVJhbmdlLmZyb20pLnN1YnRyYWN0KGRpZmZNcyk7XG4gICAgICAgIGNvbXBhcmVUbyA9IGRhdGVUaW1lKHRpbWVSYW5nZS50bykuc3VidHJhY3QoZGlmZk1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBhcmVGcm9tID0gZGF0ZVRpbWUodGltZVJhbmdlLmZyb20pLnN1YnRyYWN0KHJhbmdlVXRpbC5pbnRlcnZhbFRvTXModGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkpO1xuICAgICAgICBjb21wYXJlVG8gPSBkYXRlVGltZSh0aW1lUmFuZ2UudG8pLnN1YnRyYWN0KHJhbmdlVXRpbC5pbnRlcnZhbFRvTXModGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogY29tcGFyZUZyb20sXG4gICAgICAgIHRvOiBjb21wYXJlVG8sXG4gICAgICAgIHJhdzoge1xuICAgICAgICAgIGZyb206IGNvbXBhcmVGcm9tLFxuICAgICAgICAgIHRvOiBjb21wYXJlVG9cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBnZXRVcmxTdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29tcGFyZVdpdGg6IHRoaXMuc3RhdGUuY29tcGFyZVdpdGhcbiAgICB9O1xuICB9XG4gIHVwZGF0ZUZyb21VcmwodmFsdWVzKSB7XG4gICAgaWYgKCF2YWx1ZXMuY29tcGFyZVdpdGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tcGFyZVdpdGggPSBwYXJzZVVybFBhcmFtKHZhbHVlcy5jb21wYXJlV2l0aCk7XG4gICAgaWYgKGNvbXBhcmVXaXRoKSB7XG4gICAgICBjb25zdCBjb21wYXJlT3B0aW9ucyA9IHRoaXMuZ2V0Q29tcGFyZU9wdGlvbnMoc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcykuc3RhdGUudmFsdWUpO1xuICAgICAgaWYgKGNvbXBhcmVPcHRpb25zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IGNvbXBhcmVXaXRoKSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjb21wYXJlV2l0aFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGNvbXBhcmVXaXRoOiBcIl9fcHJldmlvdXNQZXJpb2RcIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblNjZW5lVGltZVJhbmdlQ29tcGFyZS5Db21wb25lbnQgPSBTY2VuZVRpbWVSYW5nZUNvbXBhcmVSZW5kZXJlcjtcbmNvbnN0IHRpbWVTaGlmdEFsaWdubWVudFByb2Nlc3NvciA9IChwcmltYXJ5LCBzZWNvbmRhcnkpID0+IHtcbiAgY29uc3QgZGlmZiA9IHNlY29uZGFyeS50aW1lUmFuZ2UuZnJvbS5kaWZmKHByaW1hcnkudGltZVJhbmdlLmZyb20pO1xuICBzZWNvbmRhcnkuc2VyaWVzLmZvckVhY2goKHNlcmllcykgPT4ge1xuICAgIHNlcmllcy5yZWZJZCA9IGdldENvbXBhcmVTZXJpZXNSZWZJZChzZXJpZXMucmVmSWQgfHwgXCJcIik7XG4gICAgc2VyaWVzLm1ldGEgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBzZXJpZXMubWV0YSksIHtcbiAgICAgIHRpbWVDb21wYXJlOiB7XG4gICAgICAgIGRpZmZNczogZGlmZixcbiAgICAgICAgaXNUaW1lU2hpZnRRdWVyeTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICAgIHNlcmllcy5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUudGltZSkge1xuICAgICAgICBmaWVsZC52YWx1ZXMgPSBmaWVsZC52YWx1ZXMubWFwKCh2KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRpZmYgPCAwID8gdiAtIGRpZmYgOiB2ICsgZGlmZjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmaWVsZC5jb25maWcgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBmaWVsZC5jb25maWcpLCB7XG4gICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgbW9kZTogXCJmaXhlZFwiLFxuICAgICAgICAgIGZpeGVkQ29sb3I6IGNvbmZpZy50aGVtZS5wYWxldHRlLmdyYXk2MFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvZihzZWNvbmRhcnkpO1xufTtcbmZ1bmN0aW9uIFNjZW5lVGltZVJhbmdlQ29tcGFyZVJlbmRlcmVyKHsgbW9kZWwgfSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IHN0eWxlcyA9IHVzZVN0eWxlczIoZ2V0U3R5bGVzKTtcbiAgY29uc3QgeyBjb21wYXJlV2l0aCwgY29tcGFyZU9wdGlvbnMgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IFtwcmV2aW91c0NvbXBhcmUsIHNldFByZXZpb3VzQ29tcGFyZV0gPSBSZWFjdC51c2VTdGF0ZShjb21wYXJlV2l0aCk7XG4gIGNvbnN0IHByZXZpb3VzVmFsdWUgPSAoX2EgPSBjb21wYXJlT3B0aW9ucy5maW5kKCh7IHZhbHVlOiB2YWx1ZTIgfSkgPT4gdmFsdWUyID09PSBwcmV2aW91c0NvbXBhcmUpKSAhPSBudWxsID8gX2EgOiBQUkVWSU9VU19QRVJJT0RfQ09NUEFSRV9PUFRJT047XG4gIGNvbnN0IHZhbHVlID0gY29tcGFyZU9wdGlvbnMuZmluZCgoeyB2YWx1ZTogdmFsdWUyIH0pID0+IHZhbHVlMiA9PT0gY29tcGFyZVdpdGgpO1xuICBjb25zdCBlbmFibGVkID0gQm9vbGVhbih2YWx1ZSk7XG4gIGNvbnN0IG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIHNldFByZXZpb3VzQ29tcGFyZShjb21wYXJlV2l0aCk7XG4gICAgICBtb2RlbC5vbkNsZWFyQ29tcGFyZSgpO1xuICAgIH0gZWxzZSBpZiAoIWVuYWJsZWQpIHtcbiAgICAgIG1vZGVsLm9uQ29tcGFyZVdpdGhDaGFuZ2VkKHByZXZpb3VzVmFsdWUudmFsdWUpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbkdyb3VwLCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChUb29sYmFyQnV0dG9uLCB7XG4gICAgdmFyaWFudDogXCJjYW52YXNcIixcbiAgICB0b29sdGlwOiBcIkVuYWJsZSB0aW1lIGZyYW1lIGNvbXBhcmlzb25cIixcbiAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIG9uQ2xpY2soKTtcbiAgICB9XG4gIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCB7XG4gICAgbGFiZWw6IFwiIFwiLFxuICAgIHZhbHVlOiBlbmFibGVkLFxuICAgIG9uQ2xpY2tcbiAgfSksIFwiQ29tcGFyaXNvblwiKSwgZW5hYmxlZCA/IC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvblNlbGVjdCwge1xuICAgIHZhcmlhbnQ6IFwiY2FudmFzXCIsXG4gICAgdmFsdWUsXG4gICAgb3B0aW9uczogY29tcGFyZU9wdGlvbnMsXG4gICAgb25DaGFuZ2U6ICh2KSA9PiB7XG4gICAgICBtb2RlbC5vbkNvbXBhcmVXaXRoQ2hhbmdlZCh2LnZhbHVlKTtcbiAgICB9XG4gIH0pIDogLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbGJhckJ1dHRvbiwge1xuICAgIGNsYXNzTmFtZTogc3R5bGVzLnByZXZpZXdCdXR0b24sXG4gICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgdmFyaWFudDogXCJjYW52YXNcIixcbiAgICBpc09wZW46IGZhbHNlXG4gIH0sIHByZXZpb3VzVmFsdWUubGFiZWwpKTtcbn1cbmZ1bmN0aW9uIGdldFN0eWxlcyh0aGVtZSkge1xuICByZXR1cm4ge1xuICAgIHByZXZpZXdCdXR0b246IGNzcyh7XG4gICAgICBcIiY6ZGlzYWJsZWRcIjoge1xuICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5jb2xvcnMuc2Vjb25kYXJ5LmJvcmRlcn1gLFxuICAgICAgICBjb2xvcjogdGhlbWUuY29sb3JzLnRleHQuZGlzYWJsZWQsXG4gICAgICAgIG9wYWNpdHk6IDFcbiAgICAgIH1cbiAgICB9KVxuICB9O1xufVxuXG5leHBvcnQgeyBERUZBVUxUX0NPTVBBUkVfT1BUSU9OUywgTk9fQ09NUEFSRV9PUFRJT04sIFBSRVZJT1VTX1BFUklPRF9DT01QQVJFX09QVElPTiwgU2NlbmVUaW1lUmFuZ2VDb21wYXJlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVUyTmxibVZVYVcxbFVtRnVaMlZEYjIxd1lYSmxMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12WTI5dGNHOXVaVzUwY3k5VFkyVnVaVlJwYldWU1lXNW5aVU52YlhCaGNtVXVkSE40SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFUmhkR0ZSZFdWeWVWSmxjWFZsYzNRc0lFUmhkR1ZVYVcxbExDQmtZWFJsVkdsdFpTd2dSbWxsYkdSVWVYQmxMQ0JIY21GbVlXNWhWR2hsYldVeUxDQnlZVzVuWlZWMGFXd3NJRlJwYldWU1lXNW5aU0I5SUdaeWIyMGdKMEJuY21GbVlXNWhMMlJoZEdFbk8xeHVhVzF3YjNKMElIc2dZMjl1Wm1sbklIMGdabkp2YlNBblFHZHlZV1poYm1FdmNuVnVkR2x0WlNjN1hHNXBiWEJ2Y25RZ2V5QkNkWFIwYjI1SGNtOTFjQ3dnUW5WMGRHOXVVMlZzWldOMExDQkRhR1ZqYTJKdmVDd2dWRzl2YkdKaGNrSjFkSFJ2Yml3Z2RYTmxVM1I1YkdWek1pQjlJR1p5YjIwZ0owQm5jbUZtWVc1aEwzVnBKenRjYm1sdGNHOXlkQ0JTWldGamRDQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCelkyVnVaVWR5WVhCb0lIMGdabkp2YlNBbkxpNHZZMjl5WlM5elkyVnVaVWR5WVhCb0p6dGNibWx0Y0c5eWRDQjdJRk5qWlc1bFQySnFaV04wUW1GelpTQjlJR1p5YjIwZ0p5NHVMMk52Y21VdlUyTmxibVZQWW1wbFkzUkNZWE5sSnp0Y2JtbHRjRzl5ZENCN0lGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITXNJRk5qWlc1bFJHRjBZVkYxWlhKNUxDQlRZMlZ1WlU5aWFtVmpkRk4wWVhSbExDQlRZMlZ1WlU5aWFtVmpkRlZ5YkZaaGJIVmxjeUI5SUdaeWIyMGdKeTR1TDJOdmNtVXZkSGx3WlhNbk8xeHVhVzF3YjNKMElIc2dSR0YwWVZGMVpYSjVSWGgwWlc1a1pXUWdmU0JtY205dElDY3VMaTl4ZFdWeWVXbHVaeTlUWTJWdVpWRjFaWEo1VW5WdWJtVnlKenRjYm1sdGNHOXlkQ0I3SUVWNGRISmhVWFZsY25sRVpYTmpjbWx3ZEc5eUxDQkZlSFJ5WVZGMVpYSjVSR0YwWVZCeWIyTmxjM052Y2l3Z1JYaDBjbUZSZFdWeWVWQnliM1pwWkdWeUlIMGdabkp2YlNBbkxpNHZjWFZsY25scGJtY3ZSWGgwY21GUmRXVnllVkJ5YjNacFpHVnlKenRjYm1sdGNHOXlkQ0I3SUZOalpXNWxUMkpxWldOMFZYSnNVM2x1WTBOdmJtWnBaeUI5SUdaeWIyMGdKeTR1TDNObGNuWnBZMlZ6TDFOalpXNWxUMkpxWldOMFZYSnNVM2x1WTBOdmJtWnBaeWM3WEc1cGJYQnZjblFnZXlCblpYUkRiMjF3WVhKbFUyVnlhV1Z6VW1WbVNXUWdmU0JtY205dElDY3VMaTkxZEdsc2N5OW5aWFJEYjIxd1lYSmxVMlZ5YVdWelVtVm1TV1FuTzF4dWFXMXdiM0owSUhzZ2NHRnljMlZWY214UVlYSmhiU0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpMM0JoY25ObFZYSnNVR0Z5WVcwbk8xeHVhVzF3YjNKMElIc2dZM056SUgwZ1puSnZiU0FuUUdWdGIzUnBiMjR2WTNOekp6dGNibWx0Y0c5eWRDQjdJRzltSUgwZ1puSnZiU0FuY25ocWN5YzdYRzVjYm1sdWRHVnlabUZqWlNCVFkyVnVaVlJwYldWU1lXNW5aVU52YlhCaGNtVlRkR0YwWlNCbGVIUmxibVJ6SUZOalpXNWxUMkpxWldOMFUzUmhkR1VnZTF4dUlDQmpiMjF3WVhKbFYybDBhRDg2SUhOMGNtbHVaenRjYmlBZ1kyOXRjR0Z5WlU5d2RHbHZibk02SUVGeWNtRjVQSHNnYkdGaVpXdzZJSE4wY21sdVp6c2dkbUZzZFdVNklITjBjbWx1WnlCOVBqdGNibjFjYmx4dVkyOXVjM1FnVUZKRlZrbFBWVk5mVUVWU1NVOUVYMVpCVEZWRklEMGdKMTlmY0hKbGRtbHZkWE5RWlhKcGIyUW5PMXh1WTI5dWMzUWdUazlmVUVWU1NVOUVYMVpCVEZWRklEMGdKMTlmYm05UVpYSnBiMlFuTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnVUZKRlZrbFBWVk5mVUVWU1NVOUVYME5QVFZCQlVrVmZUMUJVU1U5T0lEMGdlMXh1SUNCc1lXSmxiRG9nSjFCeVpYWnBiM1Z6SUhCbGNtbHZaQ2NzWEc0Z0lIWmhiSFZsT2lCUVVrVldTVTlWVTE5UVJWSkpUMFJmVmtGTVZVVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnVGs5ZlEwOU5VRUZTUlY5UFVGUkpUMDRnUFNCN1hHNGdJR3hoWW1Wc09pQW5UbThnWTI5dGNHRnlhWE52Ymljc1hHNGdJSFpoYkhWbE9pQk9UMTlRUlZKSlQwUmZWa0ZNVlVVc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdSRVZHUVZWTVZGOURUMDFRUVZKRlgwOVFWRWxQVGxNZ1BTQmJYRzRnSUhzZ2JHRmlaV3c2SUNkRVlYa2dZbVZtYjNKbEp5d2dkbUZzZFdVNklDY3lOR2duSUgwc1hHNGdJSHNnYkdGaVpXdzZJQ2RYWldWcklHSmxabTl5WlNjc0lIWmhiSFZsT2lBbk1YY25JSDBzWEc0Z0lIc2diR0ZpWld3NklDZE5iMjUwYUNCaVpXWnZjbVVuTENCMllXeDFaVG9nSnpGTkp5QjlMRnh1WFR0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZOalpXNWxWR2x0WlZKaGJtZGxRMjl0Y0dGeVpWeHVJQ0JsZUhSbGJtUnpJRk5qWlc1bFQySnFaV04wUW1GelpUeFRZMlZ1WlZScGJXVlNZVzVuWlVOdmJYQmhjbVZUZEdGMFpUNWNiaUFnYVcxd2JHVnRaVzUwY3lCRmVIUnlZVkYxWlhKNVVISnZkbWxrWlhJOFUyTmxibVZVYVcxbFVtRnVaMlZEYjIxd1lYSmxVM1JoZEdVK1hHNTdYRzRnSUhOMFlYUnBZeUJEYjIxd2IyNWxiblFnUFNCVFkyVnVaVlJwYldWU1lXNW5aVU52YlhCaGNtVlNaVzVrWlhKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUY5MWNteFRlVzVqSUQwZ2JtVjNJRk5qWlc1bFQySnFaV04wVlhKc1UzbHVZME52Ym1acFp5aDBhR2x6TENCN0lHdGxlWE02SUZzblkyOXRjR0Z5WlZkcGRHZ25YU0I5S1R0Y2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvYzNSaGRHVTZJRkJoY25ScFlXdzhVMk5sYm1WVWFXMWxVbUZ1WjJWRGIyMXdZWEpsVTNSaGRHVStLU0I3WEc0Z0lDQWdjM1Z3WlhJb2V5QmpiMjF3WVhKbFQzQjBhVzl1Y3pvZ1JFVkdRVlZNVkY5RFQwMVFRVkpGWDA5UVZFbFBUbE1zSUM0dUxuTjBZWFJsSUgwcE8xeHVJQ0FnSUhSb2FYTXVZV1JrUVdOMGFYWmhkR2x2YmtoaGJtUnNaWElvZEdocGN5NWZiMjVCWTNScGRtRjBaU2s3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUY5dmJrRmpkR2wyWVhSbElEMGdLQ2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSE5qWlc1bFZHbHRaVkpoYm1kbElEMGdjMk5sYm1WSGNtRndhQzVuWlhSVWFXMWxVbUZ1WjJVb2RHaHBjeWs3WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lHTnZiWEJoY21WUGNIUnBiMjV6T2lCMGFHbHpMbWRsZEVOdmJYQmhjbVZQY0hScGIyNXpLSE5qWlc1bFZHbHRaVkpoYm1kbExuTjBZWFJsTG5aaGJIVmxLU0I5S1R0Y2JseHVJQ0FnSUhSb2FYTXVYM04xWW5NdVlXUmtLRnh1SUNBZ0lDQWdjMk5sYm1WVWFXMWxVbUZ1WjJVdWMzVmljMk55YVdKbFZHOVRkR0YwWlNnb2RHbHRaVkpoYm1kbEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR052YlhCaGNtVlBjSFJwYjI1eklEMGdkR2hwY3k1blpYUkRiMjF3WVhKbFQzQjBhVzl1Y3loMGFXMWxVbUZ1WjJVdWRtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J6ZEdGMFpWVndaR0YwWlRvZ1VHRnlkR2xoYkR4VFkyVnVaVlJwYldWU1lXNW5aVU52YlhCaGNtVlRkR0YwWlQ0Z1BTQjdJR052YlhCaGNtVlBjSFJwYjI1eklIMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z2FXWWdZM1Z5Y21WdWRDQmpiMjF3WVhKbFYybDBhQ0JwY3lCdWIzUWdZWEJ3YkdsallXSnNaU0IwYnlCMGFHVWdibVYzSUhScGJXVWdjbUZ1WjJVc0lITmxkQ0JwZENCMGJ5QndjbVYyYVc5MWN5QndaWEpwYjJRZ1kyOXRjR0Z5YVhOdmJseHVJQ0FnSUNBZ0lDQnBaaUFvUW05dmJHVmhiaWgwYUdsekxuTjBZWFJsTG1OdmJYQmhjbVZYYVhSb0tTQW1KaUFoWTI5dGNHRnlaVTl3ZEdsdmJuTXVabWx1WkNnb2V5QjJZV3gxWlNCOUtTQTlQaUIyWVd4MVpTQTlQVDBnZEdocGN5NXpkR0YwWlM1amIyMXdZWEpsVjJsMGFDa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCemRHRjBaVlZ3WkdGMFpTNWpiMjF3WVhKbFYybDBhQ0E5SUZCU1JWWkpUMVZUWDFCRlVrbFBSRjlXUVV4VlJUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9jM1JoZEdWVmNHUmhkR1VwTzF4dUlDQWdJQ0FnZlNsY2JpQWdJQ0FwTzF4dUlDQjlPMXh1WEc0Z0lIQjFZbXhwWXlCblpYUkRiMjF3WVhKbFQzQjBhVzl1Y3lBOUlDaDBhVzFsVW1GdVoyVTZJRlJwYldWU1lXNW5aU2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR1JwWm1aRVlYbHpJRDBnVFdGMGFDNWpaV2xzS0hScGJXVlNZVzVuWlM1MGJ5NWthV1ptS0hScGJXVlNZVzVuWlM1bWNtOXRLU2s3WEc1Y2JpQWdJQ0JqYjI1emRDQnRZWFJqYUVsdVpHVjRJRDBnUkVWR1FWVk1WRjlEVDAxUVFWSkZYMDlRVkVsUFRsTXVabWx1WkVsdVpHVjRLQ2g3SUhaaGJIVmxJSDBwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUdsdWRHVnlkbUZzU1c1TmN5QTlJSEpoYm1kbFZYUnBiQzVwYm5SbGNuWmhiRlJ2VFhNb2RtRnNkV1VwTzF4dUlDQWdJQ0FnY21WMGRYSnVJR2x1ZEdWeWRtRnNTVzVOY3lBK1BTQmthV1ptUkdGNWN6dGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lISmxkSFZ5YmlCYlhHNGdJQ0FnSUNCT1QxOURUMDFRUVZKRlgwOVFWRWxQVGl4Y2JpQWdJQ0FnSUZCU1JWWkpUMVZUWDFCRlVrbFBSRjlEVDAxUVFWSkZYMDlRVkVsUFRpeGNiaUFnSUNBZ0lDNHVMa1JGUmtGVlRGUmZRMDlOVUVGU1JWOVBVRlJKVDA1VExuTnNhV05sS0cxaGRHTm9TVzVrWlhncExtMWhjQ2dvZXlCc1lXSmxiQ3dnZG1Gc2RXVWdmU2tnUFQ0Z0tIc2diR0ZpWld3c0lIWmhiSFZsSUgwcEtTeGNiaUFnSUNCZE8xeHVJQ0I5TzF4dVhHNGdJSEIxWW14cFl5QnZia052YlhCaGNtVlhhWFJvUTJoaGJtZGxaQ0E5SUNoamIyMXdZWEpsVjJsMGFEb2djM1J5YVc1bktTQTlQaUI3WEc0Z0lDQWdhV1lnS0dOdmJYQmhjbVZYYVhSb0lEMDlQU0JPVDE5UVJWSkpUMFJmVmtGTVZVVXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWIyNURiR1ZoY2tOdmJYQmhjbVVvS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lHTnZiWEJoY21WWGFYUm9JSDBwTzF4dUlDQWdJSDFjYmlBZ2ZUdGNibHh1SUNCd2RXSnNhV01nYjI1RGJHVmhja052YlhCaGNtVWdQU0FvS1NBOVBpQjdYRzRnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3SUdOdmJYQmhjbVZYYVhSb09pQjFibVJsWm1sdVpXUWdmU2s3WEc0Z0lIMDdYRzVjYmlBZ0x5OGdSMlYwSUdFZ2RHbHRaU0J6YUdsbWRHVmtJSEpsY1hWbGMzUWdkRzhnWTI5dGNHRnlaU0IzYVhSb0lIUm9aU0J3Y21sdFlYSjVJSEpsY1hWbGMzUXVYRzRnSUhCMVlteHBZeUJuWlhSRmVIUnlZVkYxWlhKcFpYTW9jbVZ4ZFdWemREb2dSR0YwWVZGMVpYSjVVbVZ4ZFdWemRDazZJRVY0ZEhKaFVYVmxjbmxFWlhOamNtbHdkRzl5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJR1Y0ZEhKaFVYVmxjbWxsY3pvZ1JYaDBjbUZSZFdWeWVVUmxjMk55YVhCMGIzSmJYU0E5SUZ0ZE8xeHVJQ0FnSUdOdmJuTjBJR052YlhCaGNtVlNZVzVuWlNBOUlIUm9hWE11WjJWMFEyOXRjR0Z5WlZScGJXVlNZVzVuWlNoeVpYRjFaWE4wTG5KaGJtZGxLVHRjYmlBZ0lDQnBaaUFvSVdOdmJYQmhjbVZTWVc1blpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHVjRkSEpoVVhWbGNtbGxjenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCMFlYSm5aWFJ6SUQwZ2NtVnhkV1Z6ZEM1MFlYSm5aWFJ6TG1acGJIUmxjaWdvY1hWbGNuazZJRVJoZEdGUmRXVnllVVY0ZEdWdVpHVmtLU0E5UGlCeGRXVnllUzUwYVcxbFVtRnVaMlZEYjIxd1lYSmxJQ0U5UFNCbVlXeHpaU2s3WEc0Z0lDQWdhV1lnS0hSaGNtZGxkSE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0JsZUhSeVlWRjFaWEpwWlhNdWNIVnphQ2g3WEc0Z0lDQWdJQ0FnSUhKbGNUb2dlMXh1SUNBZ0lDQWdJQ0FnSUM0dUxuSmxjWFZsYzNRc1hHNGdJQ0FnSUNBZ0lDQWdkR0Z5WjJWMGN5eGNiaUFnSUNBZ0lDQWdJQ0J5WVc1blpUb2dZMjl0Y0dGeVpWSmhibWRsTEZ4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQndjbTlqWlhOemIzSTZJSFJwYldWVGFHbG1kRUZzYVdkdWJXVnVkRkJ5YjJObGMzTnZjaXhjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1pYaDBjbUZSZFdWeWFXVnpPMXh1SUNCOVhHNWNiaUFnTHk4Z1ZHaGxJSEYxWlhKNUlISjFibTVsY2lCemFHOTFiR1FnY21WeWRXNGdkR2hsSUdOdmJYQmhjbWx6YjI0Z2NYVmxjbmtnYVdZZ2RHaGxJR052YlhCaGNtVlhhWFJvSUhaaGJIVmxJR2hoY3lCamFHRnVaMlZrSUdGdVpDQjBhR1Z5WlNCaGNtVWdjWFZsY21sbGN5QjBhR0YwSUdoaGRtVnVKM1FnYjNCMFpXUWdiM1YwSUc5bUlGUlhRMXh1SUNCd2RXSnNhV01nYzJodmRXeGtVbVZ5ZFc0b1hHNGdJQ0FnY0hKbGRqb2dVMk5sYm1WVWFXMWxVbUZ1WjJWRGIyMXdZWEpsVTNSaGRHVXNYRzRnSUNBZ2JtVjRkRG9nVTJObGJtVlVhVzFsVW1GdVoyVkRiMjF3WVhKbFUzUmhkR1VzWEc0Z0lDQWdjWFZsY21sbGN6b2dVMk5sYm1WRVlYUmhVWFZsY25sYlhWeHVJQ0FwT2lCaWIyOXNaV0Z1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lDQWdjSEpsZGk1amIyMXdZWEpsVjJsMGFDQWhQVDBnYm1WNGRDNWpiMjF3WVhKbFYybDBhQ0FtSmlCeGRXVnlhV1Z6TG1acGJtUW9LSEYxWlhKNUtTQTlQaUJ4ZFdWeWVTNTBhVzFsVW1GdVoyVkRiMjF3WVhKbElDRTlQU0JtWVd4elpTa2dJVDA5SUhWdVpHVm1hVzVsWkZ4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFEyOXRjR0Z5WlZScGJXVlNZVzVuWlNoMGFXMWxVbUZ1WjJVNklGUnBiV1ZTWVc1blpTazZJRlJwYldWU1lXNW5aU0I4SUhWdVpHVm1hVzVsWkNCN1hHNGdJQ0FnYkdWMElHTnZiWEJoY21WR2NtOXRPaUJFWVhSbFZHbHRaVHRjYmlBZ0lDQnNaWFFnWTI5dGNHRnlaVlJ2T2lCRVlYUmxWR2x0WlR0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG5OMFlYUmxMbU52YlhCaGNtVlhhWFJvS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1emRHRjBaUzVqYjIxd1lYSmxWMmwwYUNBOVBUMGdVRkpGVmtsUFZWTmZVRVZTU1U5RVgxWkJURlZGS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdScFptWk5jeUE5SUhScGJXVlNZVzVuWlM1MGJ5NWthV1ptS0hScGJXVlNZVzVuWlM1bWNtOXRLVHRjYmlBZ0lDQWdJQ0FnWTI5dGNHRnlaVVp5YjIwZ1BTQmtZWFJsVkdsdFpTaDBhVzFsVW1GdVoyVXVabkp2YlNFcExuTjFZblJ5WVdOMEtHUnBabVpOY3lrN1hHNGdJQ0FnSUNBZ0lHTnZiWEJoY21WVWJ5QTlJR1JoZEdWVWFXMWxLSFJwYldWU1lXNW5aUzUwYnlFcExuTjFZblJ5WVdOMEtHUnBabVpOY3lrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCamIyMXdZWEpsUm5KdmJTQTlJR1JoZEdWVWFXMWxLSFJwYldWU1lXNW5aUzVtY205dElTa3VjM1ZpZEhKaFkzUW9jbUZ1WjJWVmRHbHNMbWx1ZEdWeWRtRnNWRzlOY3loMGFHbHpMbk4wWVhSbExtTnZiWEJoY21WWGFYUm9LU2s3WEc0Z0lDQWdJQ0FnSUdOdmJYQmhjbVZVYnlBOUlHUmhkR1ZVYVcxbEtIUnBiV1ZTWVc1blpTNTBieUVwTG5OMVluUnlZV04wS0hKaGJtZGxWWFJwYkM1cGJuUmxjblpoYkZSdlRYTW9kR2hwY3k1emRHRjBaUzVqYjIxd1lYSmxWMmwwYUNrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ1puSnZiVG9nWTI5dGNHRnlaVVp5YjIwc1hHNGdJQ0FnSUNBZ0lIUnZPaUJqYjIxd1lYSmxWRzhzWEc0Z0lDQWdJQ0FnSUhKaGR6b2dlMXh1SUNBZ0lDQWdJQ0FnSUdaeWIyMDZJR052YlhCaGNtVkdjbTl0TEZ4dUlDQWdJQ0FnSUNBZ0lIUnZPaUJqYjIxd1lYSmxWRzhzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFZYSnNVM1JoZEdVb0tUb2dVMk5sYm1WUFltcGxZM1JWY214V1lXeDFaWE1nZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQmpiMjF3WVhKbFYybDBhRG9nZEdocGN5NXpkR0YwWlM1amIyMXdZWEpsVjJsMGFDeGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklIVndaR0YwWlVaeWIyMVZjbXdvZG1Gc2RXVnpPaUJUWTJWdVpVOWlhbVZqZEZWeWJGWmhiSFZsY3lrZ2UxeHVJQ0FnSUdsbUlDZ2hkbUZzZFdWekxtTnZiWEJoY21WWGFYUm9LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnWTI5dGNHRnlaVmRwZEdnZ1BTQndZWEp6WlZWeWJGQmhjbUZ0S0haaGJIVmxjeTVqYjIxd1lYSmxWMmwwYUNrN1hHNWNiaUFnSUNCcFppQW9ZMjl0Y0dGeVpWZHBkR2dwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR052YlhCaGNtVlBjSFJwYjI1eklEMGdkR2hwY3k1blpYUkRiMjF3WVhKbFQzQjBhVzl1Y3loelkyVnVaVWR5WVhCb0xtZGxkRlJwYldWU1lXNW5aU2gwYUdsektTNXpkR0YwWlM1MllXeDFaU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaGpiMjF3WVhKbFQzQjBhVzl1Y3k1bWFXNWtLQ2g3SUhaaGJIVmxJSDBwSUQwK0lIWmhiSFZsSUQwOVBTQmpiMjF3WVhKbFYybDBhQ2twSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXRjR0Z5WlZkcGRHZ3NYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXpaWFJUZEdGMFpTaDdYRzRnSUNBZ0lDQWdJQ0FnWTI5dGNHRnlaVmRwZEdnNklDZGZYM0J5WlhacGIzVnpVR1Z5YVc5a0p5eGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4dklGQnliMk5sYzNOdmNpQm1kVzVqZEdsdmJpQm1iM0lnZFhObElIZHBkR2dnZEdsdFpTQnphR2xtZEdWa0lHTnZiWEJoY21semIyNGdjMlZ5YVdWekxseHVMeThnVkdocGN5QmhiR2xuYm5NZ2RHaGxJSE5sWTI5dVpHRnllU0J6WlhKcFpYTWdkMmwwYUNCMGFHVWdjSEpwYldGeWVTQmhibVFnWVdSa2N5QmpkWE4wYjIxY2JpOHZJRzFsZEdGa1lYUmhJR0Z1WkNCamIyNW1hV2NnZEc4Z2RHaGxJSE5sWTI5dVpHRnllU0J6WlhKcFpYTW5JR1pwWld4a2N5QnpieUIwYUdGMElHbDBJR2x6WEc0dkx5QnlaVzVrWlhKbFpDQmhjSEJ5YjNCeWFXRjBaV3g1TGx4dVkyOXVjM1FnZEdsdFpWTm9hV1owUVd4cFoyNXRaVzUwVUhKdlkyVnpjMjl5T2lCRmVIUnlZVkYxWlhKNVJHRjBZVkJ5YjJObGMzTnZjaUE5SUNod2NtbHRZWEo1TENCelpXTnZibVJoY25rcElEMCtJSHRjYmlBZ1kyOXVjM1FnWkdsbVppQTlJSE5sWTI5dVpHRnllUzUwYVcxbFVtRnVaMlV1Wm5KdmJTNWthV1ptS0hCeWFXMWhjbmt1ZEdsdFpWSmhibWRsTG1aeWIyMHBPMXh1SUNCelpXTnZibVJoY25rdWMyVnlhV1Z6TG1admNrVmhZMmdvS0hObGNtbGxjeWtnUFQ0Z2UxeHVJQ0FnSUhObGNtbGxjeTV5WldaSlpDQTlJR2RsZEVOdmJYQmhjbVZUWlhKcFpYTlNaV1pKWkNoelpYSnBaWE11Y21WbVNXUWdmSHdnSnljcE8xeHVJQ0FnSUhObGNtbGxjeTV0WlhSaElEMGdlMXh1SUNBZ0lDQWdMaTR1YzJWeWFXVnpMbTFsZEdFc1hHNGdJQ0FnSUNBdkx5QkFkSE10YVdkdWIzSmxJRkpsYlc5MlpTQjNhR1Z1SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5bmNtRm1ZVzVoTDJkeVlXWmhibUV2Y0hWc2JDODNNVEV5T1NCcGN5QnlaV3hsWVhObFpGeHVJQ0FnSUNBZ2RHbHRaVU52YlhCaGNtVTZJSHRjYmlBZ0lDQWdJQ0FnWkdsbVprMXpPaUJrYVdabUxGeHVJQ0FnSUNBZ0lDQnBjMVJwYldWVGFHbG1kRkYxWlhKNU9pQjBjblZsTEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0I5TzF4dUlDQWdJSE5sY21sbGN5NW1hV1ZzWkhNdVptOXlSV0ZqYUNnb1ptbGxiR1FwSUQwK0lIdGNiaUFnSUNBZ0lDOHZJRUZzYVdkdUlHTnZiWEJoY21VZ2MyVnlhV1Z6SUhScGJXVWdjM1JoYlhCeklIZHBkR2dnY21WbVpYSmxibU5sSUhObGNtbGxjMXh1SUNBZ0lDQWdhV1lnS0dacFpXeGtMblI1Y0dVZ1BUMDlJRVpwWld4a1ZIbHdaUzUwYVcxbEtTQjdYRzRnSUNBZ0lDQWdJR1pwWld4a0xuWmhiSFZsY3lBOUlHWnBaV3hrTG5aaGJIVmxjeTV0WVhBb0tIWXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbG1aaUE4SURBZ1B5QjJJQzBnWkdsbVppQTZJSFlnS3lCa2FXWm1PMXh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1ptbGxiR1F1WTI5dVptbG5JRDBnZTF4dUlDQWdJQ0FnSUNBdUxpNW1hV1ZzWkM1amIyNW1hV2NzWEc0Z0lDQWdJQ0FnSUdOdmJHOXlPaUI3WEc0Z0lDQWdJQ0FnSUNBZ2JXOWtaVG9nSjJacGVHVmtKeXhjYmlBZ0lDQWdJQ0FnSUNCbWFYaGxaRU52Ykc5eU9pQmpiMjVtYVdjdWRHaGxiV1V1Y0dGc1pYUjBaUzVuY21GNU5qQXNYRzRnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0I5TzF4dUlDQWdJQ0FnY21WMGRYSnVJR1pwWld4a08xeHVJQ0FnSUgwcE8xeHVJQ0I5S1R0Y2JpQWdjbVYwZFhKdUlHOW1LSE5sWTI5dVpHRnllU2s3WEc1OU8xeHVYRzVtZFc1amRHbHZiaUJUWTJWdVpWUnBiV1ZTWVc1blpVTnZiWEJoY21WU1pXNWtaWEpsY2loN0lHMXZaR1ZzSUgwNklGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITThVMk5sYm1WVWFXMWxVbUZ1WjJWRGIyMXdZWEpsUGlrZ2UxeHVJQ0JqYjI1emRDQnpkSGxzWlhNZ1BTQjFjMlZUZEhsc1pYTXlLR2RsZEZOMGVXeGxjeWs3WEc0Z0lHTnZibk4wSUhzZ1kyOXRjR0Z5WlZkcGRHZ3NJR052YlhCaGNtVlBjSFJwYjI1eklIMGdQU0J0YjJSbGJDNTFjMlZUZEdGMFpTZ3BPMXh1WEc0Z0lHTnZibk4wSUZ0d2NtVjJhVzkxYzBOdmJYQmhjbVVzSUhObGRGQnlaWFpwYjNWelEyOXRjR0Z5WlYwZ1BTQlNaV0ZqZEM1MWMyVlRkR0YwWlNoamIyMXdZWEpsVjJsMGFDazdYRzRnSUdOdmJuTjBJSEJ5WlhacGIzVnpWbUZzZFdVZ1BTQmpiMjF3WVhKbFQzQjBhVzl1Y3k1bWFXNWtLQ2g3SUhaaGJIVmxJSDBwSUQwK0lIWmhiSFZsSUQwOVBTQndjbVYyYVc5MWMwTnZiWEJoY21VcElEOC9JRkJTUlZaSlQxVlRYMUJGVWtsUFJGOURUMDFRUVZKRlgwOVFWRWxQVGp0Y2JseHVJQ0JqYjI1emRDQjJZV3gxWlNBOUlHTnZiWEJoY21WUGNIUnBiMjV6TG1acGJtUW9LSHNnZG1Gc2RXVWdmU2tnUFQ0Z2RtRnNkV1VnUFQwOUlHTnZiWEJoY21WWGFYUm9LVHRjYmlBZ1kyOXVjM1FnWlc1aFlteGxaQ0E5SUVKdmIyeGxZVzRvZG1Gc2RXVXBPMXh1WEc0Z0lHTnZibk4wSUc5dVEyeHBZMnNnUFNBb0tTQTlQaUI3WEc0Z0lDQWdhV1lnS0dWdVlXSnNaV1FwSUh0Y2JpQWdJQ0FnSUhObGRGQnlaWFpwYjNWelEyOXRjR0Z5WlNoamIyMXdZWEpsVjJsMGFDazdYRzRnSUNBZ0lDQnRiMlJsYkM1dmJrTnNaV0Z5UTI5dGNHRnlaU2dwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvSVdWdVlXSnNaV1FwSUh0Y2JpQWdJQ0FnSUcxdlpHVnNMbTl1UTI5dGNHRnlaVmRwZEdoRGFHRnVaMlZrS0hCeVpYWnBiM1Z6Vm1Gc2RXVXVkbUZzZFdVcE8xeHVJQ0FnSUgxY2JpQWdmVHRjYmx4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4Q2RYUjBiMjVIY205MWNENWNiaUFnSUNBZ0lEeFViMjlzWW1GeVFuVjBkRzl1WEc0Z0lDQWdJQ0FnSUhaaGNtbGhiblE5WENKallXNTJZWE5jSWx4dUlDQWdJQ0FnSUNCMGIyOXNkR2x3UFZ3aVJXNWhZbXhsSUhScGJXVWdabkpoYldVZ1kyOXRjR0Z5YVhOdmJsd2lYRzRnSUNBZ0lDQWdJRzl1UTJ4cFkyczlleWhsS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnWlM1emRHOXdVSEp2Y0dGbllYUnBiMjRvS1R0Y2JpQWdJQ0FnSUNBZ0lDQmxMbkJ5WlhabGJuUkVaV1poZFd4MEtDazdYRzRnSUNBZ0lDQWdJQ0FnYjI1RGJHbGpheWdwTzF4dUlDQWdJQ0FnSUNCOWZWeHVJQ0FnSUNBZ1BseHVJQ0FnSUNBZ0lDQThRMmhsWTJ0aWIzZ2diR0ZpWld3OVhDSWdYQ0lnZG1Gc2RXVTllMlZ1WVdKc1pXUjlJRzl1UTJ4cFkyczllMjl1UTJ4cFkydDlJQzgrWEc0Z0lDQWdJQ0FnSUVOdmJYQmhjbWx6YjI1Y2JpQWdJQ0FnSUR3dlZHOXZiR0poY2tKMWRIUnZiajVjYmx4dUlDQWdJQ0FnZTJWdVlXSnNaV1FnUHlBb1hHNGdJQ0FnSUNBZ0lEeENkWFIwYjI1VFpXeGxZM1JjYmlBZ0lDQWdJQ0FnSUNCMllYSnBZVzUwUFZ3aVkyRnVkbUZ6WENKY2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlQxN2RtRnNkV1Y5WEc0Z0lDQWdJQ0FnSUNBZ2IzQjBhVzl1Y3oxN1kyOXRjR0Z5WlU5d2RHbHZibk45WEc0Z0lDQWdJQ0FnSUNBZ2IyNURhR0Z1WjJVOWV5aDJLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbGJDNXZia052YlhCaGNtVlhhWFJvUTJoaGJtZGxaQ2gyTG5aaGJIVmxJU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZYMWNiaUFnSUNBZ0lDQWdMejVjYmlBZ0lDQWdJQ2tnT2lBb1hHNGdJQ0FnSUNBZ0lEeFViMjlzWW1GeVFuVjBkRzl1SUdOc1lYTnpUbUZ0WlQxN2MzUjViR1Z6TG5CeVpYWnBaWGRDZFhSMGIyNTlJR1JwYzJGaWJHVmtJSFpoY21saGJuUTlYQ0pqWVc1MllYTmNJaUJwYzA5d1pXNDllMlpoYkhObGZUNWNiaUFnSUNBZ0lDQWdJQ0I3Y0hKbGRtbHZkWE5XWVd4MVpTNXNZV0psYkgxY2JpQWdJQ0FnSUNBZ1BDOVViMjlzWW1GeVFuVjBkRzl1UGx4dUlDQWdJQ0FnS1gxY2JpQWdJQ0E4TDBKMWRIUnZia2R5YjNWd1BseHVJQ0FwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJuWlhSVGRIbHNaWE1vZEdobGJXVTZJRWR5WVdaaGJtRlVhR1Z0WlRJcElIdGNiaUFnY21WMGRYSnVJSHRjYmlBZ0lDQndjbVYyYVdWM1FuVjBkRzl1T2lCamMzTW9lMXh1SUNBZ0lDQWdKeVk2WkdsellXSnNaV1FuT2lCN1hHNGdJQ0FnSUNBZ0lHSnZjbVJsY2pvZ1lERndlQ0J6YjJ4cFpDQWtlM1JvWlcxbExtTnZiRzl5Y3k1elpXTnZibVJoY25rdVltOXlaR1Z5ZldBc1hHNGdJQ0FnSUNBZ0lHTnZiRzl5T2lCMGFHVnRaUzVqYjJ4dmNuTXVkR1Y0ZEM1a2FYTmhZbXhsWkN4Y2JpQWdJQ0FnSUNBZ2IzQmhZMmwwZVRvZ01TeGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ2ZTa3NYRzRnSUgwN1hHNTlYRzRpWFN3aWJtRnRaWE1pT2xzaWRtRnNkV1VpWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UVVGdlFrRXNUVUZCVFN4eFFrRkJkMElzUjBGQlFTeHJRa0ZCUVN4RFFVRkJPMEZCUXpsQ0xFMUJRVTBzWlVGQmEwSXNSMEZCUVN4WlFVRkJMRU5CUVVFN1FVRkZha0lzVFVGQlRTdzRRa0ZCYVVNc1IwRkJRVHRCUVVGQkxFVkJRelZETEV0QlFVOHNSVUZCUVN4cFFrRkJRVHRCUVVGQkxFVkJRMUFzUzBGQlR5eEZRVUZCTEhGQ1FVRkJPMEZCUTFRc1JVRkJRVHRCUVVWUExFMUJRVTBzYVVKQlFXOUNMRWRCUVVFN1FVRkJRU3hGUVVNdlFpeExRVUZQTEVWQlFVRXNaVUZCUVR0QlFVRkJMRVZCUTFBc1MwRkJUeXhGUVVGQkxHVkJRVUU3UVVGRFZDeEZRVUZCTzBGQlJVOHNUVUZCVFN4MVFrRkJNRUlzUjBGQlFUdEJRVUZCTEVWQlEzSkRMRVZCUVVVc1MwRkJRU3hGUVVGUExGbEJRV01zUlVGQlFTeExRVUZCTEVWQlFVOHNTMEZCVFN4RlFVRkJPMEZCUVVFc1JVRkRjRU1zUlVGQlJTeExRVUZCTEVWQlFVOHNZVUZCWlN4RlFVRkJMRXRCUVVFc1JVRkJUeXhKUVVGTExFVkJRVUU3UVVGQlFTeEZRVU53UXl4RlFVRkZMRXRCUVVFc1JVRkJUeXhqUVVGblFpeEZRVUZCTEV0QlFVRXNSVUZCVHl4SlFVRkxMRVZCUVVFN1FVRkRka01zUlVGQlFUdEJRVVZQTEUxQlFVMHNPRUpCUTBnc1pVRkZWaXhEUVVGQk8wRkJRVUVzUlVGSlV5eFpRVUZaTEV0QlFUUkRMRVZCUVVFN1FVRkROMFFzU1VGQlRTeExRVUZCTEVOQlFVRXNZMEZCUVN4RFFVRkJMRVZCUVVVc1kwRkJaMElzUlVGQlFTeDFRa0ZCUVN4RlFVRkJMRVZCUVRSQ0xFdEJRVThzUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZJTjBRc1NVRkJWU3hKUVVGQkxFTkJRVUVzVVVGQlFTeEhRVUZYTEVsQlFVa3NkMEpCUVhsQ0xFTkJRVUVzU1VGQlFTeEZRVUZOTEVWQlFVVXNTVUZCVFN4RlFVRkJMRU5CUVVNc1lVRkJZU3hEUVVGQkxFVkJRVWNzUTBGQlFTeERRVUZCTzBGQlQycEdMRWxCUVVFc1NVRkJRU3hEUVVGUkxHTkJRV01zVFVGQlRUdEJRVU14UWl4TlFVRk5MRTFCUVVFc1kwRkJRU3hIUVVGcFFpeFZRVUZYTEVOQlFVRXNXVUZCUVN4RFFVRmhMRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJRMjVFTEUxQlFVc3NTVUZCUVN4RFFVRkJMRkZCUVVFc1EwRkJVeXhGUVVGRkxHTkJRV2RDTEVWQlFVRXNTVUZCUVN4RFFVRkxMR3RDUVVGclFpeGpRVUZsTEVOQlFVRXNTMEZCUVN4RFFVRk5MRXRCUVVzc1EwRkJRU3hGUVVGSExFTkJRVUVzUTBGQlFUdEJRVVZ3Uml4TlFVRkJMRWxCUVVFc1EwRkJTeXhMUVVGTkxFTkJRVUVzUjBGQlFUdEJRVUZCTEZGQlExUXNZMEZCUVN4RFFVRmxMR2RDUVVGcFFpeERRVUZCTEVOQlFVTXNVMEZCWXl4TFFVRkJPMEZCUXpkRExGVkJRVUVzVFVGQlRTeGpRVUZwUWl4SFFVRkJMRWxCUVVFc1EwRkJTeXhwUWtGQmEwSXNRMEZCUVN4VFFVRkJMRU5CUVZVc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGRE4wUXNWVUZCVFN4TlFVRkJMRmRCUVVFc1IwRkJiVVFzUlVGQlJTeGpRVUZsTEVWQlFVRXNRMEZCUVR0QlFVY3hSU3hWUVVGQkxFbEJRVWtzVVVGQlVTeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRk5MRmRCUVZjc1EwRkJRU3hKUVVGTExFTkJRVU1zWTBGQlpTeERRVUZCTEVsQlFVRXNRMEZCU3l4RFFVRkRMRVZCUVVVc1QwRkJXU3hMUVVGQkxFdEJRVUVzUzBGQlZTeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRk5MRmRCUVZjc1EwRkJSeXhGUVVGQk8wRkJRelZITEZsQlFVRXNWMEZCUVN4RFFVRlpMRmRCUVdNc1IwRkJRU3h4UWtGQlFTeERRVUZCTzBGQlFVRXNWMEZETlVJN1FVRkZRU3hWUVVGQkxFbEJRVUVzUTBGQlN5eFRRVUZUTEZkQlFWY3NRMEZCUVN4RFFVRkJPMEZCUVVFc1UwRkRNVUlzUTBGQlFUdEJRVUZCTEU5QlEwZ3NRMEZCUVR0QlFVRkJMRXRCUTBZc1EwRkJRVHRCUVVWQkxFbEJRVThzU1VGQlFTeERRVUZCTEdsQ1FVRkJMRWRCUVc5Q0xFTkJRVU1zVTBGQmVVSXNTMEZCUVR0QlFVTnVSQ3hOUVVGTkxFMUJRVUVzVVVGQlFTeEhRVUZYTEV0QlFVc3NTVUZCU3l4RFFVRkJMRk5CUVVFc1EwRkJWU3hIUVVGSExFbEJRVXNzUTBGQlFTeFRRVUZCTEVOQlFWVXNTVUZCU1N4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVVMVJDeE5RVUZCTEUxQlFVMHNZVUZCWVN4MVFrRkJkMElzUTBGQlFTeFRRVUZCTEVOQlFWVXNRMEZCUXl4RlFVRkZMRTlCUVZrc1MwRkJRVHRCUVVOc1JTeFJRVUZOTEUxQlFVRXNXVUZCUVN4SFFVRmxMRk5CUVZVc1EwRkJRU3haUVVGQkxFTkJRV0VzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZEYWtRc1VVRkJRU3hQUVVGUExGbEJRV2RDTEVsQlFVRXNVVUZCUVN4RFFVRkJPMEZCUVVFc1QwRkRlRUlzUTBGQlFTeERRVUZCTzBGQlJVUXNUVUZCVHl4UFFVRkJPMEZCUVVFc1VVRkRUQ3hwUWtGQlFUdEJRVUZCTEZGQlEwRXNPRUpCUVVFN1FVRkJRU3hSUVVOQkxFZEJRVWNzZFVKQlFVRXNRMEZCZDBJc1MwRkJUU3hEUVVGQkxGVkJRVlVzUlVGQlJTeEhRVUZKTEVOQlFVRXNRMEZCUXl4RlFVRkZMRXRCUVVFc1JVRkJUeXhMUVVGTkxFVkJRVUVzVFVGQlR5eEZRVUZGTEV0QlFVRXNSVUZCVHl4UFFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRek5HTEVOQlFVRTdRVUZCUVN4TFFVTkdMRU5CUVVFN1FVRkZRU3hKUVVGUExFbEJRVUVzUTBGQlFTeHZRa0ZCUVN4SFFVRjFRaXhEUVVGRExGZEJRWGRDTEV0QlFVRTdRVUZEY2tRc1RVRkJRU3hKUVVGSkxHZENRVUZuUWl4bFFVRnBRaXhGUVVGQk8wRkJRMjVETEZGQlFVRXNTVUZCUVN4RFFVRkxMR05CUVdVc1JVRkJRU3hEUVVGQk8wRkJRVUVzVDBGRFppeE5RVUZCTzBGQlEwd3NVVUZCU3l4SlFVRkJMRU5CUVVFc1VVRkJRU3hEUVVGVExFVkJRVVVzVjBGQlFTeEZRVUZoTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUXk5Q08wRkJRVUVzUzBGRFJpeERRVUZCTzBGQlJVRXNTVUZCUVN4SlFVRkJMRU5CUVU4c2FVSkJRV2xDTEUxQlFVMDdRVUZETlVJc1RVRkJRU3hKUVVGQkxFTkJRVXNzVVVGQlV5eERRVUZCTEVWQlFVVXNWMEZCWVN4RlFVRkJMRXRCUVVFc1EwRkJRU3hGUVVGWExFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlF6RkRMRU5CUVVFN1FVRXZRMFVzU1VGQlN5eEpRVUZCTEVOQlFVRXNiMEpCUVVFc1EwRkJjVUlzUzBGQlN5eFhRVUZYTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUXpWRE8wRkJRVUVzUlVGcFJFOHNaMEpCUVdkQ0xFOUJRVzFFTEVWQlFVRTdRVUZEZUVVc1NVRkJRU3hOUVVGTkxHVkJRWFZETEVWQlFVTXNRMEZCUVR0QlFVTTVReXhKUVVGQkxFMUJRVTBzV1VGQlpTeEhRVUZCTEVsQlFVRXNRMEZCU3l4dFFrRkJiMElzUTBGQlFTeFBRVUZCTEVOQlFWRXNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkRNMFFzU1VGQlFTeEpRVUZKTEVOQlFVTXNXVUZCWXl4RlFVRkJPMEZCUTJwQ0xFMUJRVThzVDBGQlFTeFpRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTlVPMEZCUlVFc1NVRkJUU3hOUVVGQkxFOUJRVUVzUjBGQlZTeFJRVUZSTEU5QlFWRXNRMEZCUVN4TlFVRkJMRU5CUVU4c1EwRkJReXhMUVVFMlFpeExRVUZCTEV0QlFVRXNRMEZCVFN4eFFrRkJjVUlzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZEY2tjc1NVRkJRU3hKUVVGSkxGRkJRVkVzVFVGQlVTeEZRVUZCTzBGQlEyeENMRTFCUVVFc1dVRkJRU3hEUVVGaExFbEJRVXNzUTBGQlFUdEJRVUZCTEZGQlEyaENMRWRCUVVFc1JVRkJTeXhwUTBGRFFTeFBRVVJCTEVOQlFVRXNSVUZCUVR0QlFVRkJMRlZCUlVnc1QwRkJRVHRCUVVGQkxGVkJRMEVzUzBGQlR5eEZRVUZCTEZsQlFVRTdRVUZCUVN4VFFVTlVMRU5CUVVFN1FVRkJRU3hSUVVOQkxGTkJRVmNzUlVGQlFTd3lRa0ZCUVR0QlFVRkJMRTlCUTFvc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFNEdEJRVU5CTEVsQlFVOHNUMEZCUVN4WlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJRVUVzUlVGSFR5eFhRVUZCTEVOQlEwd3NTVUZEUVN4RlFVRkJMRWxCUVVFc1JVRkRRU3hQUVVOVExFVkJRVUU3UVVGRFZDeEpRVU5GTEU5QlFVRXNTVUZCUVN4RFFVRkxMRmRCUVdkQ0xFdEJRVUVzU1VGQlFTeERRVUZMTEZkQlFXVXNTVUZCUVN4UFFVRkJMRU5CUVZFc1NVRkJTeXhEUVVGQkxFTkJRVU1zUzBGQlZTeExRVUZCTEV0QlFVRXNRMEZCVFN4blFrRkJjVUlzUzBGQlFTeExRVUZMTEVOQlFVMHNTMEZCUVN4TFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJSVE5ITzBGQlFVRXNSVUZGVHl4dlFrRkJiMElzVTBGQk5rTXNSVUZCUVR0QlFVTjBSU3hKUVVGSkxFbEJRVUVzVjBGQlFTeERRVUZCTzBGQlEwb3NTVUZCU1N4SlFVRkJMRk5CUVVFc1EwRkJRVHRCUVVWS0xFbEJRVWtzU1VGQlFTeEpRVUZCTEVOQlFVc3NUVUZCVFN4WFFVRmhMRVZCUVVFN1FVRkRNVUlzVFVGQlNTeEpRVUZCTEVsQlFVRXNRMEZCU3l4TFFVRk5MRU5CUVVFc1YwRkJRU3hMUVVGblFpeHhRa0ZCZFVJc1JVRkJRVHRCUVVOd1JDeFJRVUZCTEUxQlFVMHNUVUZCVXl4SFFVRkJMRk5CUVVFc1EwRkJWU3hGUVVGSExFTkJRVUVzU1VGQlFTeERRVUZMTEZWQlFWVXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkRMME1zVVVGQlFTeFhRVUZCTEVkQlFXTXNVVUZCVXl4RFFVRkJMRk5CUVVFc1EwRkJWU3hKUVVGTExFTkJRVUVzUTBGQlJTeFRRVUZUTEUxQlFVMHNRMEZCUVN4RFFVRkJPMEZCUTNaRUxGRkJRVUVzVTBGQlFTeEhRVUZaTEZGQlFWTXNRMEZCUVN4VFFVRkJMRU5CUVZVc1JVRkJSeXhEUVVGQkxFTkJRVVVzVTBGQlV5eE5RVUZOTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUXpsRExFMUJRVUU3UVVGRFRDeFJRVUZqTEZkQlFVRXNSMEZCUVN4UlFVRkJMRU5CUVZNc1UwRkJWU3hEUVVGQkxFbEJRVXNzUTBGQlJTeERRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlZMRmxCUVdFc1EwRkJRU3hKUVVGQkxFTkJRVXNzUzBGQlRTeERRVUZCTEZkQlFWY3NRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkRMMFlzVVVGQldTeFRRVUZCTEVkQlFVRXNVVUZCUVN4RFFVRlRMRk5CUVZVc1EwRkJRU3hGUVVGSExFTkJRVVVzUTBGQlFTeFJRVUZCTEVOQlFWTXNWVUZCVlN4WlFVRmhMRU5CUVVFc1NVRkJRU3hEUVVGTExFdEJRVTBzUTBGQlFTeFhRVUZYTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkROMFk3UVVGRFFTeE5RVUZQTEU5QlFVRTdRVUZCUVN4UlFVTk1MRWxCUVUwc1JVRkJRU3hYUVVGQk8wRkJRVUVzVVVGRFRpeEZRVUZKTEVWQlFVRXNVMEZCUVR0QlFVRkJMRkZCUTBvc1IwRkJTeXhGUVVGQk8wRkJRVUVzVlVGRFNDeEpRVUZOTEVWQlFVRXNWMEZCUVR0QlFVRkJMRlZCUTA0c1JVRkJTU3hGUVVGQkxGTkJRVUU3UVVGQlFTeFRRVU5PTzBGQlFVRXNUMEZEUml4RFFVRkJPMEZCUVVFc1MwRkRSanRCUVVWQkxFbEJRVThzVDBGQlFTeExRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTFRN1FVRkJRU3hGUVVWUExGZEJRVzlETEVkQlFVRTdRVUZEZWtNc1NVRkJUeXhQUVVGQk8wRkJRVUVzVFVGRFRDeFhRVUZCTEVWQlFXRXNTMEZCU3l4TFFVRk5MRU5CUVVFc1YwRkJRVHRCUVVGQkxFdEJRekZDTEVOQlFVRTdRVUZCUVN4SFFVTkdPMEZCUVVFc1JVRkZUeXhqUVVGakxFMUJRVGhDTEVWQlFVRTdRVUZEYWtRc1NVRkJTU3hKUVVGQkxFTkJRVU1zVDBGQlR5eFhRVUZoTEVWQlFVRTdRVUZEZGtJc1RVRkJRU3hQUVVGQk8wRkJRVUVzUzBGRFJqdEJRVVZCTEVsQlFVMHNUVUZCUVN4WFFVRkJMRWRCUVdNc1lVRkJZeXhEUVVGQkxFMUJRVUVzUTBGQlR5eFhRVUZYTEVOQlFVRXNRMEZCUVR0QlFVVndSQ3hKUVVGQkxFbEJRVWtzVjBGQllTeEZRVUZCTzBGQlEyWXNUVUZCVFN4TlFVRkJMR05CUVVFc1IwRkJhVUlzUzBGQlN5eHBRa0ZCYTBJc1EwRkJRU3hWUVVGQkxFTkJRVmNzWVVGQllTeEpRVUZKTEVOQlFVRXNRMEZCUlN4TlFVRk5MRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJSWFpHTEUxQlFVa3NTVUZCUVN4alFVRkJMRU5CUVdVc1MwRkJTeXhEUVVGRExFVkJRVVVzVDBGQldTeExRVUZCTEV0QlFVRXNTMEZCVlN4WFFVRlhMRU5CUVVjc1JVRkJRVHRCUVVNM1JDeFJRVUZCTEVsQlFVRXNRMEZCU3l4UlFVRlRMRU5CUVVFN1FVRkJRU3hWUVVOYUxGZEJRVUU3UVVGQlFTeFRRVU5FTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTBrc1RVRkJRVHRCUVVOTUxGRkJRVUVzU1VGQlFTeERRVUZMTEZGQlFWTXNRMEZCUVR0QlFVRkJMRlZCUTFvc1YwRkJZU3hGUVVGQkxHdENRVUZCTzBGQlFVRXNVMEZEWkN4RFFVRkJMRU5CUVVFN1FVRkJRU3hQUVVOSU8wRkJRVUVzUzBGRFJqdEJRVUZCTEVkQlEwWTdRVUZEUml4RFFVRkJPMEZCYUVwaExIRkNRVUZCTEVOQlNVb3NVMEZCV1N4SFFVRkJMRFpDUVVGQkxFTkJRVUU3UVVGclNuSkNMRTFCUVUwc01rSkJRVUVzUjBGQmRVUXNRMEZCUXl4UFFVRkJMRVZCUVZNc1UwRkJZeXhMUVVGQk8wRkJRMjVHTEVWQlFVRXNUVUZCVFN4UFFVRlBMRk5CUVZVc1EwRkJRU3hUUVVGQkxFTkJRVlVzUzBGQlN5eEpRVUZMTEVOQlFVRXNUMEZCUVN4RFFVRlJMRlZCUVZVc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGRGFrVXNSVUZCVlN4VFFVRkJMRU5CUVVFc1RVRkJRU3hEUVVGUExFOUJRVkVzUTBGQlFTeERRVUZETEUxQlFWY3NTMEZCUVR0QlFVTnVReXhKUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZSTEVkQlFVRXNjVUpCUVVFc1EwRkJjMElzVFVGQlR5eERRVUZCTEV0QlFVRXNTVUZCVXl4RlFVRkZMRU5CUVVFc1EwRkJRVHRCUVVOMlJDeEpRVUZQTEUxQlFVRXNRMEZCUVN4SlFVRkJMRWRCUVU4c1lVRkRWQ3hEUVVGQkxHTkJRVUVzUTBGQlFTeEZRVUZCTEVWQlFVRXNUVUZCUVN4RFFVRlBMRWxCUkVVc1EwRkJRU3hGUVVGQk8wRkJRVUVzVFVGSFdpeFhRVUZoTEVWQlFVRTdRVUZCUVN4UlFVTllMRTFCUVZFc1JVRkJRU3hKUVVGQk8wRkJRVUVzVVVGRFVpeG5Ra0ZCYTBJc1JVRkJRU3hKUVVGQk8wRkJRVUVzVDBGRGNFSTdRVUZCUVN4TFFVTkdMRU5CUVVFc1EwRkJRVHRCUVVOQkxFbEJRVThzVFVGQlFTeERRVUZCTEUxQlFVRXNRMEZCVHl4UFFVRlJMRU5CUVVFc1EwRkJReXhMUVVGVkxFdEJRVUU3UVVGRkwwSXNUVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hKUVVGVExFdEJRVUVzVTBGQlFTeERRVUZWTEVsQlFVMHNSVUZCUVR0QlFVTnFReXhSUVVGQkxFdEJRVUVzUTBGQlRTeE5RVUZUTEVkQlFVRXNTMEZCUVN4RFFVRk5MRTFCUVU4c1EwRkJRU3hIUVVGQkxFTkJRVWtzUTBGQlF5eERRVUZOTEV0QlFVRTdRVUZEY2tNc1ZVRkJRU3hQUVVGUExFbEJRVThzUjBGQlFTeERRVUZCTEVkQlFVa3NRMEZCU1N4SFFVRkJMRWxCUVVFc1IwRkJUeXhEUVVGSkxFZEJRVUVzU1VGQlFTeERRVUZCTzBGQlFVRXNVMEZEYkVNc1EwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRFNEdEJRVVZCTEUxQlFVMHNTMEZCUVN4RFFVRkJMRTFCUVVFc1IwRkJVeXhoUVVOV0xFTkJRVUVzWTBGQlFTeERRVUZCTEVWQlFVRXNSVUZCUVN4TFFVRkJMRU5CUVUwc1RVRkVTU3hEUVVGQkxFVkJRVUU3UVVGQlFTeFJRVVZpTEV0QlFVOHNSVUZCUVR0QlFVRkJMRlZCUTB3c1NVRkJUU3hGUVVGQkxFOUJRVUU3UVVGQlFTeFZRVU5PTEZWQlFVRXNSVUZCV1N4TlFVRlBMRU5CUVVFc1MwRkJRU3hEUVVGTkxFOUJRVkVzUTBGQlFTeE5RVUZCTzBGQlFVRXNVMEZEYmtNN1FVRkJRU3hQUVVOR0xFTkJRVUVzUTBGQlFUdEJRVU5CTEUxQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOU0xFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEwWXNRMEZCUVN4RFFVRkJPMEZCUTBRc1JVRkJRU3hQUVVGUExFZEJRVWNzVTBGQlV5eERRVUZCTEVOQlFVRTdRVUZEY2tJc1EwRkJRU3hEUVVGQk8wRkJSVUVzVTBGQlV5dzJRa0ZCUVN4RFFVRTRRaXhGUVVGRkxFdEJRVUVzUlVGQmNVUXNSVUZCUVR0QlFUbE9PVVlzUlVGQlFTeEpRVUZCTEVWQlFVRXNRMEZCUVR0QlFTdE9SU3hGUVVGTkxFMUJRVUVzVFVGQlFTeEhRVUZUTEZkQlFWY3NVMEZCVXl4RFFVRkJMRU5CUVVFN1FVRkRia01zUlVGQlFTeE5RVUZOTEVWQlFVVXNWMEZCUVN4RlFVRmhMR05CUVdVc1JVRkJRU3hIUVVGSkxFMUJRVTBzVVVGQlV5eEZRVUZCTEVOQlFVRTdRVUZGZGtRc1JVRkJRU3hOUVVGTkxFTkJRVU1zWlVGQmFVSXNSVUZCUVN4clFrRkJhMElzUTBGQlNTeEhRVUZCTEV0QlFVRXNRMEZCVFN4VFFVRlRMRmRCUVZjc1EwRkJRU3hEUVVGQk8wRkJRM2hGTEVWQlFVMHNUVUZCUVN4aFFVRkJMRWRCUVVFc1EwRkJaMElzUlVGQlpTeEhRVUZCTEdOQlFVRXNRMEZCUVN4SlFVRkJMRU5CUVVzc1EwRkJReXhGUVVGRkxFdEJRVUZCTEVWQlFVRkJMRTFCUVVGQkxFVkJRVmxCTEV0QlFVRkJMRTFCUVVGQkxFdEJRVlVzWlVGQlpTeERRVUZCTEV0QlFUVkVMRWxCUVdsRkxFZEJRVUVzUlVGQlFTeEhRVUZCTERoQ1FVRkJMRU5CUVVFN1FVRkZka1lzUlVGQlRTeE5RVUZCTEV0QlFVRXNSMEZCVVN4bFFVRmxMRWxCUVVzc1EwRkJRU3hEUVVGRExFVkJRVVVzUzBGQlFVRXNSVUZCUVVFc1RVRkJRVUVzUlVGQldVRXNTMEZCUVVFc1RVRkJRVUVzUzBGQlZTeFhRVUZYTEVOQlFVRXNRMEZCUVR0QlFVTjBSU3hGUVVGTkxFMUJRVUVzVDBGQlFTeEhRVUZWTEZGQlFWRXNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkZOMElzUlVGQlFTeE5RVUZOTEZWQlFWVXNUVUZCVFR0QlFVTndRaXhKUVVGQkxFbEJRVWtzVDBGQlV5eEZRVUZCTzBGQlExZ3NUVUZCUVN4clFrRkJRU3hEUVVGdFFpeFhRVUZYTEVOQlFVRXNRMEZCUVR0QlFVTTVRaXhOUVVGQkxFdEJRVUVzUTBGQlRTeGpRVUZsTEVWQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTNaQ0xFMUJRVUVzU1VGQlZ5eERRVUZETEU5QlFWTXNSVUZCUVR0QlFVTnVRaXhOUVVGTkxFdEJRVUVzUTBGQlFTeHZRa0ZCUVN4RFFVRnhRaXhqUVVGakxFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEYUVRN1FVRkJRU3hIUVVOR0xFTkJRVUU3UVVGRlFTeEZRVU5GTEhWQ1FVRkJMRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRVU1zYlVOQlEwVXNTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hoUVVGQkxFVkJRVUU3UVVGQlFTeEpRVU5ETEU5QlFWRXNSVUZCUVN4UlFVRkJPMEZCUVVFc1NVRkRVaXhQUVVGUkxFVkJRVUVzT0VKQlFVRTdRVUZCUVN4SlFVTlNMRTlCUVVFc1JVRkJVeXhEUVVGRExFTkJRVTBzUzBGQlFUdEJRVU5rTEUxQlFVRXNRMEZCUVN4RFFVRkZMR1ZCUVdkQ0xFVkJRVUVzUTBGQlFUdEJRVU5zUWl4TlFVRkJMRU5CUVVFc1EwRkJSU3hqUVVGbExFVkJRVUVzUTBGQlFUdEJRVU5xUWl4TlFVRlJMRTlCUVVFc1JVRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFZqdEJRVUZCTEVkQlFVRXNhMEpCUlVNc1MwRkJRU3hEUVVGQkxHRkJRVUVzUTBGQlFTeFJRVUZCTEVWQlFVRTdRVUZCUVN4SlFVRlRMRXRCUVUwc1JVRkJRU3hIUVVGQk8wRkJRVUVzU1VGQlNTeExRVUZQTEVWQlFVRXNUMEZCUVR0QlFVRkJMRWxCUVZNc1QwRkJRVHRCUVVGQkxFZEJRV3RDTEVOQlFVVXNSVUZCUVN4WlFVVXhSQ3hEUVVWRExFVkJRVUVzVDBGQlFTeHRRa0ZEUlN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxGbEJRVUVzUlVGQlFUdEJRVUZCTEVsQlEwTXNUMEZCVVN4RlFVRkJMRkZCUVVFN1FVRkJRU3hKUVVOU0xFdEJRVUU3UVVGQlFTeEpRVU5CTEU5QlFWTXNSVUZCUVN4alFVRkJPMEZCUVVFc1NVRkRWQ3hSUVVGQkxFVkJRVlVzUTBGQlF5eERRVUZOTEV0QlFVRTdRVUZEWml4TlFVRk5MRXRCUVVFc1EwRkJRU3h2UWtGQlFTeERRVUZ4UWl4RlFVRkZMRXRCUVUwc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGNrTTdRVUZCUVN4SFFVTkdMRzlDUVVWRExFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNZVUZCUVN4RlFVRkJPMEZCUVVFc1NVRkJZeXhYUVVGWExFMUJRVThzUTBGQlFTeGhRVUZCTzBGQlFVRXNTVUZCWlN4UlFVRlJMRVZCUVVFc1NVRkJRVHRCUVVGQkxFbEJRVU1zVDBGQlVTeEZRVUZCTEZGQlFVRTdRVUZCUVN4SlFVRlRMRTFCUVZFc1JVRkJRU3hMUVVGQk8wRkJRVUVzUjBGREwwVXNSVUZCUVN4aFFVRkJMRU5CUVdNc1MwRkRha0lzUTBGRlNpeERRVUZCTEVOQlFVRTdRVUZGU2l4RFFVRkJPMEZCUlVFc1UwRkJVeXhWUVVGVkxFdEJRWE5DTEVWQlFVRTdRVUZEZGtNc1JVRkJUeXhQUVVGQk8wRkJRVUVzU1VGRFRDeGxRVUZsTEVkQlFVa3NRMEZCUVR0QlFVRkJMRTFCUTJwQ0xGbEJRV01zUlVGQlFUdEJRVUZCTEZGQlExb3NUVUZCVVN4RlFVRkJMRU5CUVVFc1ZVRkJRU3hGUVVGaExFdEJRVTBzUTBGQlFTeE5RVUZCTEVOQlFVOHNVMEZCVlN4RFFVRkJMRTFCUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzVVVGRE5VTXNTMEZCUVN4RlFVRlBMRXRCUVUwc1EwRkJRU3hOUVVGQkxFTkJRVThzU1VGQlN5eERRVUZCTEZGQlFVRTdRVUZCUVN4UlFVTjZRaXhQUVVGVExFVkJRVUVzUTBGQlFUdEJRVUZCTEU5QlExZzdRVUZCUVN4TFFVTkVMRU5CUVVFN1FVRkJRU3hIUVVOSUxFTkJRVUU3UVVGRFJqczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLE1BQU0scUJBQXdCLEdBQUEsa0JBQUEsQ0FBQTtBQUM5QixNQUFNLGVBQWtCLEdBQUEsWUFBQSxDQUFBO0FBRWpCLE1BQU0sOEJBQWlDLEdBQUE7RUFDNUMsS0FBTyxFQUFBLGlCQUFBO0VBQ1AsS0FBTyxFQUFBLHFCQUFBO0FBQ1QsRUFBQTtBQUVPLE1BQU0saUJBQW9CLEdBQUE7RUFDL0IsS0FBTyxFQUFBLGVBQUE7RUFDUCxLQUFPLEVBQUEsZUFBQTtBQUNULEVBQUE7QUFFTyxNQUFNLHVCQUEwQixHQUFBO0VBQ3JDLEVBQUUsS0FBQSxFQUFPLFlBQWMsRUFBQSxLQUFBLEVBQU8sS0FBTSxFQUFBO0VBQ3BDLEVBQUUsS0FBQSxFQUFPLGFBQWUsRUFBQSxLQUFBLEVBQU8sSUFBSyxFQUFBO0VBQ3BDLEVBQUUsS0FBQSxFQUFPLGNBQWdCLEVBQUEsS0FBQSxFQUFPLElBQUssRUFBQTtBQUN2QyxFQUFBO0FBRU8sTUFBTSw4QkFD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
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { ToolbarButton, Input } from '@grafana/ui';
3
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
4
+ import { ControlsLabel } from '../utils/ControlsLabel.js';
5
+
6
+ class SceneToolbarButton extends SceneObjectBase {
7
+ }
8
+ SceneToolbarButton.Component = ({ model }) => {
9
+ const state = model.useState();
10
+ return /* @__PURE__ */ React.createElement(ToolbarButton, {
11
+ onClick: state.onClick,
12
+ icon: state.icon
13
+ });
14
+ };
15
+ class SceneToolbarInput extends SceneObjectBase {
16
+ }
17
+ SceneToolbarInput.Component = ({ model }) => {
18
+ const state = model.useState();
19
+ return /* @__PURE__ */ React.createElement("div", {
20
+ style: { display: "flex" }
21
+ }, state.label && /* @__PURE__ */ React.createElement(ControlsLabel, {
22
+ label: state.label
23
+ }), /* @__PURE__ */ React.createElement(Input, {
24
+ defaultValue: state.value,
25
+ width: 8,
26
+ onBlur: (evt) => {
27
+ model.state.onChange(parseInt(evt.currentTarget.value, 10));
28
+ }
29
+ }));
30
+ };
31
+
32
+ export { SceneToolbarButton, SceneToolbarInput };
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUb29sYmFyQnV0dG9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL1NjZW5lVG9vbGJhckJ1dHRvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiwgSW5wdXQgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBDb250cm9sc0xhYmVsIH0gZnJvbSAnLi4vdXRpbHMvQ29udHJvbHNMYWJlbC5qcyc7XG5cbmNsYXNzIFNjZW5lVG9vbGJhckJ1dHRvbiBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG59XG5TY2VuZVRvb2xiYXJCdXR0b24uQ29tcG9uZW50ID0gKHsgbW9kZWwgfSkgPT4ge1xuICBjb25zdCBzdGF0ZSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChUb29sYmFyQnV0dG9uLCB7XG4gICAgb25DbGljazogc3RhdGUub25DbGljayxcbiAgICBpY29uOiBzdGF0ZS5pY29uXG4gIH0pO1xufTtcbmNsYXNzIFNjZW5lVG9vbGJhcklucHV0IGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlIHtcbn1cblNjZW5lVG9vbGJhcklucHV0LkNvbXBvbmVudCA9ICh7IG1vZGVsIH0pID0+IHtcbiAgY29uc3Qgc3RhdGUgPSBtb2RlbC51c2VTdGF0ZSgpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIHN0eWxlOiB7IGRpc3BsYXk6IFwiZmxleFwiIH1cbiAgfSwgc3RhdGUubGFiZWwgJiYgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbHNMYWJlbCwge1xuICAgIGxhYmVsOiBzdGF0ZS5sYWJlbFxuICB9KSwgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5wdXQsIHtcbiAgICBkZWZhdWx0VmFsdWU6IHN0YXRlLnZhbHVlLFxuICAgIHdpZHRoOiA4LFxuICAgIG9uQmx1cjogKGV2dCkgPT4ge1xuICAgICAgbW9kZWwuc3RhdGUub25DaGFuZ2UocGFyc2VJbnQoZXZ0LmN1cnJlbnRUYXJnZXQudmFsdWUsIDEwKSk7XG4gICAgfVxuICB9KSk7XG59O1xuXG5leHBvcnQgeyBTY2VuZVRvb2xiYXJCdXR0b24sIFNjZW5lVG9vbGJhcklucHV0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVUyTmxibVZVYjI5c1ltRnlRblYwZEc5dUxtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZZMjl0Y0c5dVpXNTBjeTlUWTJWdVpWUnZiMnhpWVhKQ2RYUjBiMjR1ZEhONElsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQlNaV0ZqZENCbWNtOXRJQ2R5WldGamRDYzdYRzVjYm1sdGNHOXlkQ0I3SUVsamIyNU9ZVzFsTENCSmJuQjFkQ3dnVkc5dmJHSmhja0oxZEhSdmJpQjlJR1p5YjIwZ0owQm5jbUZtWVc1aEwzVnBKenRjYmx4dWFXMXdiM0owSUhzZ1UyTmxibVZQWW1wbFkzUkNZWE5sSUgwZ1puSnZiU0FuTGk0dlkyOXlaUzlUWTJWdVpVOWlhbVZqZEVKaGMyVW5PMXh1YVcxd2IzSjBJSHNnVTJObGJtVkRiMjF3YjI1bGJuUlFjbTl3Y3l3Z1UyTmxibVZQWW1wbFkzUlRkR0YwWlNCOUlHWnliMjBnSnk0dUwyTnZjbVV2ZEhsd1pYTW5PMXh1YVcxd2IzSjBJSHNnUTI5dWRISnZiSE5NWVdKbGJDQjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekwwTnZiblJ5YjJ4elRHRmlaV3duTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGUnZiMnhpWVhKQ2RYUjBiMjVUZEdGMFpTQmxlSFJsYm1SeklGTmpaVzVsVDJKcVpXTjBVM1JoZEdVZ2UxeHVJQ0JwWTI5dU9pQkpZMjl1VG1GdFpUdGNiaUFnYjI1RGJHbGphem9nS0NrZ1BUNGdkbTlwWkR0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklGTmpaVzVsVkc5dmJHSmhja0oxZEhSdmJpQmxlSFJsYm1SeklGTmpaVzVsVDJKcVpXTjBRbUZ6WlR4VWIyOXNZbUZ5UW5WMGRHOXVVM1JoZEdVK0lIdGNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkRiMjF3YjI1bGJuUWdQU0FvZXlCdGIyUmxiQ0I5T2lCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCelBGTmpaVzVsVkc5dmJHSmhja0oxZEhSdmJqNHBJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQnpkR0YwWlNBOUlHMXZaR1ZzTG5WelpWTjBZWFJsS0NrN1hHNWNiaUFnSUNCeVpYUjFjbTRnUEZSdmIyeGlZWEpDZFhSMGIyNGdiMjVEYkdsamF6MTdjM1JoZEdVdWIyNURiR2xqYTMwZ2FXTnZiajE3YzNSaGRHVXVhV052Ym4wZ0x6NDdYRzRnSUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnVTJObGJtVlViMjlzWW1GeVNXNXdkWFJUZEdGMFpTQmxlSFJsYm1SeklGTmpaVzVsVDJKcVpXTjBVM1JoZEdVZ2UxeHVJQ0IyWVd4MVpUODZJSE4wY21sdVp6dGNiaUFnYkdGaVpXdy9PaUJ6ZEhKcGJtYzdYRzRnSUc5dVEyaGhibWRsT2lBb2RtRnNkV1U2SUc1MWJXSmxjaWtnUFQ0Z2RtOXBaRHRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZOalpXNWxWRzl2YkdKaGNrbHVjSFYwSUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNSQ1lYTmxQRk5qWlc1bFZHOXZiR0poY2tsdWNIVjBVM1JoZEdVK0lIdGNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkRiMjF3YjI1bGJuUWdQU0FvZXlCdGIyUmxiQ0I5T2lCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCelBGTmpaVzVsVkc5dmJHSmhja2x1Y0hWMFBpa2dQVDRnZTF4dUlDQWdJR052Ym5OMElITjBZWFJsSUQwZ2JXOWtaV3d1ZFhObFUzUmhkR1VvS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0E4WkdsMklITjBlV3hsUFh0N0lHUnBjM0JzWVhrNklDZG1iR1Y0SnlCOWZUNWNiaUFnSUNBZ0lDQWdlM04wWVhSbExteGhZbVZzSUNZbUlEeERiMjUwY205c2MweGhZbVZzSUd4aFltVnNQWHR6ZEdGMFpTNXNZV0psYkgwZ0x6NTlYRzRnSUNBZ0lDQWdJRHhKYm5CMWRGeHVJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUldZV3gxWlQxN2MzUmhkR1V1ZG1Gc2RXVjlYRzRnSUNBZ0lDQWdJQ0FnZDJsa2RHZzllemg5WEc0Z0lDQWdJQ0FnSUNBZ2IyNUNiSFZ5UFhzb1pYWjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbGJDNXpkR0YwWlM1dmJrTm9ZVzVuWlNod1lYSnpaVWx1ZENobGRuUXVZM1Z5Y21WdWRGUmhjbWRsZEM1MllXeDFaU3dnTVRBcEtUdGNiaUFnSUNBZ0lDQWdJQ0I5ZlZ4dUlDQWdJQ0FnSUNBdlBseHVJQ0FnSUNBZ1BDOWthWFkrWEc0Z0lDQWdLVHRjYmlBZ2ZUdGNibjFjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096dEJRV0ZQTEUxQlFVMHNNa0pCUVRKQ0xHVkJRVzlETEVOQlFVRTdRVUZOTlVVc1EwRkJRVHRCUVU1aExHdENRVUZCTEVOQlEwY3NVMEZCV1N4SFFVRkJMRU5CUVVNc1JVRkJSU3hMUVVGQkxFVkJRWEZFTEV0QlFVRTdRVUZEYUVZc1JVRkJUU3hOUVVGQkxFdEJRVUVzUjBGQlVTeE5RVUZOTEZGQlFWTXNSVUZCUVN4RFFVRkJPMEZCUlRkQ0xFVkJRVUVzZFVKQlFWRXNTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hoUVVGQkxFVkJRVUU3UVVGQlFTeEpRVUZqTEZOQlFWTXNTMEZCVFN4RFFVRkJMRTlCUVVFN1FVRkJRU3hKUVVGVExFMUJRVTBzUzBGQlRTeERRVUZCTEVsQlFVRTdRVUZCUVN4SFFVRk5MRU5CUVVFc1EwRkJRVHRCUVVOc1JTeERRVUZCTEVOQlFVRTdRVUZUU3l4TlFVRk5MREJDUVVFd1FpeGxRVUYzUXl4RFFVRkJPMEZCYVVJdlJTeERRVUZCTzBGQmFrSmhMR2xDUVVGQkxFTkJRMGNzVTBGQldTeEhRVUZCTEVOQlFVTXNSVUZCUlN4TFFVRkJMRVZCUVc5RUxFdEJRVUU3UVVGREwwVXNSVUZCVFN4TlFVRkJMRXRCUVVFc1IwRkJVU3hOUVVGTkxGRkJRVk1zUlVGQlFTeERRVUZCTzBGQlJUZENMRVZCUVVFc2RVSkJRMGNzUzBGQlFTeERRVUZCTEdGQlFVRXNRMEZCUVN4TFFVRkJMRVZCUVVFN1FVRkJRU3hKUVVGSkxFdEJRVUVzUlVGQlR5eEZRVUZGTEU5QlFVRXNSVUZCVXl4TlFVRlBMRVZCUVVFN1FVRkJRU3hIUVVNelFpeEZRVUZCTEV0QlFVRXNRMEZCVFN4NVFrRkJWU3hMUVVGQkxFTkJRVUVzWVVGQlFTeERRVUZCTEdGQlFVRXNSVUZCUVR0QlFVRkJMRWxCUVdNc1QwRkJUeXhMUVVGTkxFTkJRVUVzUzBGQlFUdEJRVUZCTEVkQlFVOHNiVUpCUTJ4RUxFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNTMEZCUVN4RlFVRkJPMEZCUVVFc1NVRkRReXhqUVVGakxFdEJRVTBzUTBGQlFTeExRVUZCTzBGQlFVRXNTVUZEY0VJc1MwRkJUeXhGUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU5RTEUxQlFVRXNSVUZCVVN4RFFVRkRMRWRCUVZFc1MwRkJRVHRCUVVObUxFMUJRVUVzUzBGQlFTeERRVUZOTEUxQlFVMHNVVUZCVXl4RFFVRkJMRkZCUVVFc1EwRkJVeXhKUVVGSkxHRkJRV01zUTBGQlFTeExRVUZCTEVWQlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRelZFTzBGQlFVRXNSMEZEUml4RFFVTkdMRU5CUVVFc1EwRkJRVHRCUVVWS0xFTkJRVUU3T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFPLE1BQU0sMkJBQTJCLGVBQW9DLENBQUE7QUFNNUUsQ0FBQTtBQU5hLGtCQUFBLENBQ0csU0FBWSxHQUFBLENBQUMsRUFBRSxLQUFBLEVBQXFELEtBQUE7QUFDMUUsRUFBQSxNQUFBLEtBQUEsR0FBUSxNQUFNLFFBQVMsRUFBQSxDQUFBO0FBRTdCLEVBQVEsdUJBQUEsS0FBQSxDQUFBLGNBQUEsYUFBQSxFQUFBO0FBQWMsSUFBQSxPQUFBLEVBQVMsS0FBTSxDQUFBLE9BQUE7QUFBUyxJQUFBLElBQUEsRUFBTSxLQUFNLENBQUEsSUFBQTtHQUFNLENBQUEsQ0FBQTtBQUNsRSxDQUFBLENBQUE7QUFTSyxNQUFNLDBCQUEwQixlQUF3QyxDQUFBO0FBaUIvRSxDQUFBO0FBakJhLGlCQUFBLENBQ0csU0FBWSxHQUFBLENBQUMsRUFBRSxLQUFBLEVBQW9ELEtBQUE7QUFDekUsRUFBQSxNQUFBLEtBQUEsR0FBUSxNQUFNLFFBQVMsRUFBQSxDQUFBO0FBRTdCLEVBQ0csdUJBQUEsS0FBQSxDQUFBLGNBQUEsS0FBQSxFQUFBO0lBQUksS0FBTyxFQUFBLEVBQUUsU0FBUyxNQUFPLEVBQUE7QUFBQSxHQUFBLEVBQzNCLEtBQU0sQ0FBQSxLQUFBLG9CQUFVLEtBQUEsQ0FBQSxhQUFBLENBQUEsYUFBQSxFQUFBO0FBQWMsSUFBQSxLQUFBLEVBQU8sS0FBTSxDQUFBLEtBQUE7R0FBTyxDQUFBLGtCQUNsRCxLQUFBLENBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUNDLElBQUEsWUFBQSxFQUFjLEtBQU0sQ0FBQSxLQUFBO0lBQ3BCLEtBQU8sRUFBQSxDQUFBO0FBQ1AsSUFBQSxNQUFBLEVBQVEsQ0FBQyxHQUFRLEtBQUE7QUFDZixNQUFBLEtBQUEsQ0FBTSxNQUFNLFFBQVMsQ0FBQSxRQUFBLENBQVMsSUFBSSxhQUFjLENBQUEsS0FBQSxFQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQzVELEdBQ0YsQ0FDRixDQUFBLENBQUE7QUFFSixDQUFBOzs7OyJ9