haystack-ml-stack 0.4.11__tar.gz → 0.4.12__tar.gz

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 (29) hide show
  1. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/PKG-INFO +1 -1
  2. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/pyproject.toml +1 -1
  3. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/_serializers.py +16 -2
  4. haystack_ml_stack-0.4.12/src/haystack_ml_stack/_version.py +1 -0
  5. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack.egg-info/PKG-INFO +1 -1
  6. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack.egg-info/SOURCES.txt +0 -2
  7. haystack_ml_stack-0.4.11/src/haystack_ml_stack/_version.py +0 -1
  8. haystack_ml_stack-0.4.11/src/haystack_ml_stack/tmp.py +0 -28
  9. haystack_ml_stack-0.4.11/src/haystack_ml_stack/tmp2.py +0 -28
  10. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/README.md +0 -0
  11. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/setup.cfg +0 -0
  12. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/__init__.py +0 -0
  13. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/_kafka.py +0 -0
  14. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/app.py +0 -0
  15. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/cache.py +0 -0
  16. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/dynamo.py +0 -0
  17. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/exceptions.py +0 -0
  18. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/generated/__init__.py +0 -0
  19. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/generated/v1/__init__.py +0 -0
  20. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/generated/v1/features_pb2.py +0 -0
  21. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/generated/v1/features_pb2.pyi +0 -0
  22. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/model_store.py +0 -0
  23. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/settings.py +0 -0
  24. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack/utils.py +0 -0
  25. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack.egg-info/dependency_links.txt +0 -0
  26. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack.egg-info/requires.txt +0 -0
  27. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/src/haystack_ml_stack.egg-info/top_level.txt +0 -0
  28. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/tests/test_serializers.py +0 -0
  29. {haystack_ml_stack-0.4.11 → haystack_ml_stack-0.4.12}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: haystack-ml-stack
3
- Version: 0.4.11
3
+ Version: 0.4.12
4
4
  Summary: Functions related to Haystack ML
5
5
  Author-email: Oscar Vega <oscar@haystack.tv>
6
6
  License: MIT
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "haystack-ml-stack"
8
- version = "0.4.11"
8
+ version = "0.4.12"
9
9
  description = "Functions related to Haystack ML"
10
10
  readme = "README.md"
11
11
  authors = [{ name = "Oscar Vega", email = "oscar@haystack.tv" }]
@@ -249,7 +249,9 @@ class GlobalPlaylistStatsSerializerV1(SimpleSerializer):
249
249
  category_msg.watched_count = int(stats["watched_count"])
250
250
  category_msg.not_watched_count = int(stats["not_watched_count"])
251
251
  category_msg.capped_watched_secs = float(stats["capped_watched_secs"])
252
- category_msg.capped_not_watched_secs = float(stats["capped_not_watched_secs"])
252
+ category_msg.capped_not_watched_secs = float(
253
+ stats["capped_not_watched_secs"]
254
+ )
253
255
  category_msg.watched_secs = float(stats["watched_secs"])
254
256
  category_msg.not_watched_secs = float(stats["not_watched_secs"])
255
257
  return root_msg
@@ -275,7 +277,9 @@ class UserPlaylistStatsSerializerV1(SimpleSerializer):
275
277
  category_msg.active_days = int(stats["active_days"])
276
278
  category_msg.total_watched = float(stats["total_watched"])
277
279
  category_msg.capped_total_watched = float(stats["capped_total_watched"])
278
- category_msg.capped_total_log_watched = float(stats.get("capped_total_log_watched", 0.0))
280
+ category_msg.capped_total_log_watched = float(
281
+ stats.get("capped_total_log_watched", 0.0)
282
+ )
279
283
  category_msg.first_active_date = str(stats.get("first_active_date", ""))
280
284
  return root_msg
281
285
 
@@ -344,6 +348,11 @@ stream_pwatched_v1_features: list[FeatureRegistryId] = [
344
348
  FeatureRegistryId(
345
349
  entity_type="STREAM", feature_id="PWATCHED#24H#MOBILE", version="v1"
346
350
  ),
351
+ FeatureRegistryId(entity_type="STREAM", feature_id="PWATCHED#6H", version="v1"),
352
+ FeatureRegistryId(entity_type="STREAM", feature_id="PWATCHED#6H#TV", version="v1"),
353
+ FeatureRegistryId(
354
+ entity_type="STREAM", feature_id="PWATCHED#6H#MOBILE", version="v1"
355
+ ),
347
356
  ]
348
357
 
349
358
  stream_pselect_v0_features: list[FeatureRegistryId] = [
@@ -360,6 +369,11 @@ stream_pselect_v1_features: list[FeatureRegistryId] = [
360
369
  entity_type="STREAM", feature_id="PSELECT#24H#MOBILE", version="v1"
361
370
  ),
362
371
  FeatureRegistryId(entity_type="STREAM", feature_id="PSELECT#24H#TV", version="v1"),
372
+ FeatureRegistryId(entity_type="STREAM", feature_id="PSELECT#6H", version="v1"),
373
+ FeatureRegistryId(entity_type="STREAM", feature_id="PSELECT#6H#TV", version="v1"),
374
+ FeatureRegistryId(
375
+ entity_type="STREAM", feature_id="PSELECT#6H#MOBILE", version="v1"
376
+ ),
363
377
  ]
364
378
 
365
379
  stream_similarity_v0_features: list[FeatureRegistryId] = [
@@ -0,0 +1 @@
1
+ __version__ = "0.4.12"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: haystack-ml-stack
3
- Version: 0.4.11
3
+ Version: 0.4.12
4
4
  Summary: Functions related to Haystack ML
5
5
  Author-email: Oscar Vega <oscar@haystack.tv>
6
6
  License: MIT
@@ -10,8 +10,6 @@ src/haystack_ml_stack/dynamo.py
10
10
  src/haystack_ml_stack/exceptions.py
11
11
  src/haystack_ml_stack/model_store.py
12
12
  src/haystack_ml_stack/settings.py
13
- src/haystack_ml_stack/tmp.py
14
- src/haystack_ml_stack/tmp2.py
15
13
  src/haystack_ml_stack/utils.py
16
14
  src/haystack_ml_stack.egg-info/PKG-INFO
17
15
  src/haystack_ml_stack.egg-info/SOURCES.txt
@@ -1 +0,0 @@
1
- __version__ = "0.4.11"
@@ -1,28 +0,0 @@
1
- import sys
2
- import base64
3
-
4
- b64 = """
5
- CAESHAoEa3VzYRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa25vZRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2Z0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLZm94NWF0bGFudGESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0bHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBndjdmJ0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3RpdhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3BzZBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDa2d3Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Z2VtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdnVlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Y21oEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRraWlpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHhsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aWZyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrb2NvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrYnR4Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YnJjEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dmlyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIlCgpuZXdzbmF0aW9uEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3bmNuEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCgxjYnNtaW5uZXNvdGESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEikKEWZveDU5aW5kaWFuYXBvbGlzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3d2xwEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3c2ZhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIhCgljYnNkZW52ZXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh0KBTEzYWJjEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZrb2F0dHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKC2NiY21hbml0b2JhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrYW1yEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bGF4Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRra2NvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Y2F4Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRra3R2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZW5zEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdG52Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3cmVnEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZrc2J3dHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiUKDXRoZW5ld3NjZW50ZXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKCG5iY3RvZGF5EhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZWh0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIbCgN3b2kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdmeHQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdhbmUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGttdnQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKCmZveDdhdXN0aW4SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKCW5ld3NtYXh0dhIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2J0dxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIQoJY2JzYm9zdG9uEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrbGZ5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZmFhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrYXJkEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eHl6Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrb2xvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHNtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YXZ5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZ3VuEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHZxEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgd0aGVoaWxsEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZGJqEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eGlpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3cHhpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3c3ltEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eG1pEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YXZlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YXRlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIpChFmb3gyMW5ld3Njb2xvcmFkbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3JleBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2F0YxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJwoPZm94MTFsb3NhbmdlbGVzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3c29jEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3emR4Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc253Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRInCgx5YWhvb2ZpbmFuY2USEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjYmQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KA2NubhIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3RyaxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3BueBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSLwoUZGV1dHNjaGV3ZWxsZWVuZ2xpc2gSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdueXcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiUKDWNic3NhY3JhbWVudG8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdwcmkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtud2ESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdhYmkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHduZHUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBjFjYnNsYRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2dtYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3JxZRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3BpeBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3JlbRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2R2bRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2dhbBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2hzdhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2JuZxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3FhZBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHQoFbmJjMTUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKCmNiY3Rvcm9udG8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt2dnUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKB2FiY25ld3MSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0aWMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0dnkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd4aXgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdzYXcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtpcm8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiAKBXZldWVyEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3cm9jEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3d2J0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIgCghhemZhbWlseRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDd3dsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aGJmEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHZmEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCglibG9vbWJlcmcSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdibnMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0a3ISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGttYmMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt0dXUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiYKDmZveDRrYW5zYXNjaXR5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3d2F5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIqChJoYXlzdGFja192YW5jb3V2ZXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdka3kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEioKD2Fzc29jaWF0ZWRwcmVzcxIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHgoGa25vcHR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YmtvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eGlhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aXNuEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dGFlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YXB0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZmb3g1ZGMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiAKCGZveDhuZXdzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3amNsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aHRtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZWF1Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZrZnlydHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdib2MSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdrcmcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdkc3USDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdvd2sSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0b2wSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtianISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtjcmcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKCG5ld3N5aHViEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgRrc250Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIlCgpsaXZlbm93Zm94EhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3bmVwEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIhCgZncmF5ZGMSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBGt5dHgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd1c2ESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtvYWESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdkaG4SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt0dmISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh0KBXdpc3R2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bG94Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgdjYmNuZXdzEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgRrZ3R2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3cHZpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3b3d0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIdCgVraG9uMhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2VybxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2ZveBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHQoFa2N0djUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtzdHASDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtnbnMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBm5ld3MxMhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2ZvchIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDbmNtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCgxjYnNiYWx0aW1vcmUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdyZGUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKDGZveDVzYW5kaWVnbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2FsYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2l0bhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3RhYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa21naBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHgoGd210d3R2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgpjYnNjaGljYWdvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dG9rEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3amJmEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Y3BvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aGFzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRInCgxyZXV0ZXJzdmlkZW8SEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdzYXYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHduZW0SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtyb24SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjdHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhoKDGNubi9hbWFucG91chIEc2hvdxiAwq/wBRIcCgR3ZXdzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aGJxEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZhYmM3bnkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh0KBXdnbnR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZmRhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRuYmM2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Y2piEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHdvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIjCghldXJvbmV3cxIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3N5chIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2NhdRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLZm94MmRldHJvaXQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdvb2QSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtjY2kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKCmNic2RldHJvaXQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtpdmkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh0KBXdobzEzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dGFqEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZXljEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR0bWo0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Z2hwEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIlCg1jYnNwaXR0c2J1cmdoEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc3dvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRramN0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIjCgtuYmNzYW5kaWVnbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLbmJjbmVicmFza2ESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKC2NiY2VkbW9udG9uEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHZpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZGFtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Z3J6Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIlCg1mb3g2bWlsd2F1a2VlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZmZmEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bWJiEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dmVjEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bG5zEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdGFsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrbnh2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRranJoEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRInCg9jYnNzYW5mcmFuY2lzY28SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdtZ3QSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKC2ZveGNhcm9saW5hEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIfCgdmb3gxMHR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrcmlzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrcHR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZXNoEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRraW5nEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dnRtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eHh2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bWFyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc2Z5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bWJkEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIgCghjYnNtaWFtaRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoIcG9saXRpY3MSCmhzX2NoYW5uZWwYxIba8AUSHAoEa2FsYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJAoMZm94MzVvcmxhbmRvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHhsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCglhYmNuZXdzMjQSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdsa3kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjYmkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtpZHkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtlbG8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEicKD3dlc3Rlcm5tYXNzbmV3cxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3R2eBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJAoMY2JzNnBvcnRsYW5kEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bmN0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZ3aXZidHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKCmNiY2NhbGdhcnkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtldm4SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGFiYzcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtsdHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdpbHgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdzcGESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdoaW8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdtYmYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdsZXgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt3cWMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdnYmESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKDGZveDMyY2hpY2FnbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIgoKY2JzbmV3eW9yaxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2p6eRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3VschIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDa3NsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dGVuEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZnRzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHZtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dmx0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZm1iEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrYXJrEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YnJlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgdjb3VydHR2EhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3YmFsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRImChJ3aWxkZmlyZS1uZXdzLTIwMjYSCmhzX2NoYW5uZWwYmJTP0wYSHAoEd3BiZhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3JibBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2FpdBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3htYRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2hudBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3NlZRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3NtdhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3hhbhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2R0bhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2ZzYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIQoGY25ldHR2EhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIdCgV3bWN0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDa29iEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3a3l0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHZyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRreGlpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc2xhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dGhyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bHd0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YnR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZnZzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dnVlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dm5zEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdGxhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aWJ3Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrd2NoEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIrChBhbGphemVlcmFlbmdsaXNoEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIjCgthYmM3Y2hpY2FnbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLZm94MzFkZW52ZXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdsdHgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdhZmYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdwbXQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdiaXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0dmQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0cmYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGthcmUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtmc24SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjaWESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGttdHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdwdHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdtdXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdzYXoSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKCW55cHNwb3J0cxIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSJgoObmV3czJuYXNodmlsbGUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtmZHgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBmtldHZ0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSKQoRZm94MjlwaGlsYWRlbHBoaWESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBmNic2RmdxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2NlbhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIAoIZm94NG5ld3MSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjbmMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtzdHUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt4eHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdiYXkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGttaWQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKEGlyYW4tY3Jpc2lzLW5ld3MSCmhzX2NoYW5uZWwY6LuLzQYSHAoEa3NkaxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2ZydhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2hlYxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2pldBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2JtdBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2hicxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2ZzbRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3R0YxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJwoPZm94OW1pbm5lYXBvbGlzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3enptEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCgxmb3gxMHBob2VuaXgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdkaW8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKDGZveDI2aG91c3RvbhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3d0eBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLY2JjbW9udHJlYWwSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdyaWMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtobmwSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdib3kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiAKCGFiYzduZXdzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3cmR3Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bGJ0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgpxMTNzZWF0dGxlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIdCgVjYnM0NhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoIYW1hemVsYWISEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdwdHoSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiUKDWZveDEzdGFtcGFiYXkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKB25iY25ld3MSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0b2MSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhsKA2tocRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2dldBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3RodhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd21hehIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3l0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa21vdhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2ZteRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIgoHaTI0bmV3cxIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2VjdBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2p0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3FyZhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3lsZRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSKAoQY2hhbm5lbDhsYXN2ZWdhcxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3dueRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3BheBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2RlZhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSKgoPZnJhbmNlMjRlbmdsaXNoEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgRrc2hiEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIbCgN3c2ISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdmbGESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKB2NoZWRkYXISEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEiEKBmJ1eno2MBIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2JiaBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3BsYxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3NieRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2R0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3lmZhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3dzYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJQoKZm94d2VhdGhlchIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2NiZBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJgoOdmFsbGV5bmV3c2xpdmUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtjcmESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiAKCDEwMTFuZXdzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHZ1Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc25mEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bHVjEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3b2lvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIoChBjYnNwaGlsYWRlbHBoaWExEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRraG91Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrbmR1Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIhCg1pbnRlcm5hdGlvbmFsEgpoc19jaGFubmVsGOzSs/AFEi4KDWRvY3VtZW50YXJpZXMSCmhzX2NoYW5uZWwYovTQ0QYiC3ByZXZpZXdHYXRlEh4KCnlvdXItbW9uZXkSCmhzX2NoYW5uZWwYid3H0wY=
6
- """
7
-
8
- data = base64.b64decode(b64.strip().replace(' ', '').replace('\n', ''))
9
- print(f"Binary size: {len(data)} bytes")
10
-
11
- # --- 0.4.10 ---
12
- sys.path.insert(0, '/Users/admin/miniconda3/envs/py311/lib/python3.11/site-packages')
13
- from haystack_ml_stack.generated.v1 import features_pb2 as pb2_v10
14
-
15
- msg10 = pb2_v10.GlobalChannels()
16
- msg10.ParseFromString(data)
17
-
18
- empty10 = [c.name for c in msg10.data if not c.category_group]
19
- print(f"\n=== 0.4.10 ===")
20
- print(f"version={msg10.version}, channels={len(msg10.data)}")
21
- print(f"Empty category_group: {len(empty10)}")
22
- if empty10:
23
- print(f" {empty10}")
24
- for c in msg10.data:
25
- if c.category_group == 'hs_channel':
26
- print(f" [hs] {c.name:<30} start_date={c.start_date} required_features={list(c.required_features)}")
27
-
28
- print([c for c in msg10.data if c.name in ('wbns', 'wdsu', 'kcau', 'weau', 'kndu', 'ktuu')])
@@ -1,28 +0,0 @@
1
- # decode_v49_only.py — run with: /tmp/hms_v49_env/bin/python3 decode_v49_only.py
2
- import sys
3
- import base64
4
-
5
- # No 0.4.10 path here at all
6
- b64 = """
7
- CAESHAoEa3VzYRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa25vZRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2Z0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLZm94NWF0bGFudGESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0bHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBndjdmJ0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3RpdhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3BzZBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDa2d3Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Z2VtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdnVlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Y21oEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRraWlpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHhsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aWZyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrb2NvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrYnR4Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YnJjEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dmlyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIlCgpuZXdzbmF0aW9uEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3bmNuEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCgxjYnNtaW5uZXNvdGESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEikKEWZveDU5aW5kaWFuYXBvbGlzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3d2xwEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3c2ZhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIhCgljYnNkZW52ZXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh0KBTEzYWJjEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZrb2F0dHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKC2NiY21hbml0b2JhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrYW1yEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bGF4Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRra2NvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Y2F4Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRra3R2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZW5zEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdG52Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3cmVnEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZrc2J3dHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiUKDXRoZW5ld3NjZW50ZXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKCG5iY3RvZGF5EhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZWh0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIbCgN3b2kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdmeHQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdhbmUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGttdnQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKCmZveDdhdXN0aW4SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKCW5ld3NtYXh0dhIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2J0dxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIQoJY2JzYm9zdG9uEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrbGZ5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZmFhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrYXJkEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eHl6Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrb2xvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHNtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YXZ5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZ3VuEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHZxEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgd0aGVoaWxsEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZGJqEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eGlpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3cHhpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3c3ltEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eG1pEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YXZlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YXRlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIpChFmb3gyMW5ld3Njb2xvcmFkbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3JleBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2F0YxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJwoPZm94MTFsb3NhbmdlbGVzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3c29jEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3emR4Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc253Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRInCgx5YWhvb2ZpbmFuY2USEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjYmQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KA2NubhIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3RyaxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3BueBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSLwoUZGV1dHNjaGV3ZWxsZWVuZ2xpc2gSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdueXcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiUKDWNic3NhY3JhbWVudG8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdwcmkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtud2ESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdhYmkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHduZHUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBjFjYnNsYRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2dtYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3JxZRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3BpeBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3JlbRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2R2bRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2dhbBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2hzdhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2JuZxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3FhZBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHQoFbmJjMTUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKCmNiY3Rvcm9udG8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt2dnUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKB2FiY25ld3MSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0aWMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0dnkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd4aXgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdzYXcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtpcm8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiAKBXZldWVyEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3cm9jEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3d2J0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIgCghhemZhbWlseRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDd3dsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aGJmEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHZmEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCglibG9vbWJlcmcSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdibnMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0a3ISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGttYmMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt0dXUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiYKDmZveDRrYW5zYXNjaXR5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3d2F5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIqChJoYXlzdGFja192YW5jb3V2ZXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdka3kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEioKD2Fzc29jaWF0ZWRwcmVzcxIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHgoGa25vcHR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YmtvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eGlhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aXNuEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dGFlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YXB0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZmb3g1ZGMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiAKCGZveDhuZXdzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3amNsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aHRtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZWF1Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZrZnlydHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdib2MSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdrcmcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdkc3USDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdvd2sSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0b2wSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtianISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtjcmcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKCG5ld3N5aHViEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgRrc250Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIlCgpsaXZlbm93Zm94EhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3bmVwEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIhCgZncmF5ZGMSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBGt5dHgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd1c2ESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtvYWESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdkaG4SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt0dmISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh0KBXdpc3R2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bG94Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgdjYmNuZXdzEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgRrZ3R2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3cHZpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3b3d0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIdCgVraG9uMhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2VybxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2ZveBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHQoFa2N0djUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtzdHASDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtnbnMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBm5ld3MxMhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2ZvchIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDbmNtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCgxjYnNiYWx0aW1vcmUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdyZGUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKDGZveDVzYW5kaWVnbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2FsYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2l0bhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3RhYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa21naBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHgoGd210d3R2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgpjYnNjaGljYWdvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dG9rEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3amJmEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Y3BvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aGFzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRInCgxyZXV0ZXJzdmlkZW8SEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdzYXYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHduZW0SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtyb24SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjdHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhoKDGNubi9hbWFucG91chIEc2hvdxiAwq/wBRIcCgR3ZXdzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aGJxEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZhYmM3bnkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh0KBXdnbnR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZmRhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRuYmM2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Y2piEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHdvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIjCghldXJvbmV3cxIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3N5chIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2NhdRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLZm94MmRldHJvaXQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdvb2QSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtjY2kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKCmNic2RldHJvaXQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtpdmkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh0KBXdobzEzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dGFqEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZXljEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR0bWo0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Z2hwEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIlCg1jYnNwaXR0c2J1cmdoEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc3dvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRramN0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIjCgtuYmNzYW5kaWVnbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLbmJjbmVicmFza2ESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKC2NiY2VkbW9udG9uEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHZpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZGFtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3Z3J6Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIlCg1mb3g2bWlsd2F1a2VlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZmZmEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bWJiEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dmVjEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bG5zEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdGFsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrbnh2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRranJoEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRInCg9jYnNzYW5mcmFuY2lzY28SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdtZ3QSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiMKC2ZveGNhcm9saW5hEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIfCgdmb3gxMHR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrcmlzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrcHR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZXNoEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRraW5nEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dnRtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3eHh2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bWFyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc2Z5Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bWJkEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIgCghjYnNtaWFtaRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoIcG9saXRpY3MSCmhzX2NoYW5uZWwYxIba8AUSHAoEa2FsYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJAoMZm94MzVvcmxhbmRvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHhsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCglhYmNuZXdzMjQSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdsa3kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjYmkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtpZHkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtlbG8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEicKD3dlc3Rlcm5tYXNzbmV3cxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3R2eBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJAoMY2JzNnBvcnRsYW5kEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bmN0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIeCgZ3aXZidHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKCmNiY2NhbGdhcnkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtldm4SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGFiYzcSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtsdHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdpbHgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdzcGESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdoaW8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdtYmYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdsZXgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt3cWMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdnYmESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKDGZveDMyY2hpY2FnbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIgoKY2JzbmV3eW9yaxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2p6eRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3VschIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDa3NsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dGVuEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3ZnRzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHZtEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dmx0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZm1iEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrYXJrEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YnJlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgdjb3VydHR2EhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgR3YmFsEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRImChJ3aWxkZmlyZS1uZXdzLTIwMjYSCmhzX2NoYW5uZWwYmJTP0wYSHAoEd3BiZhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3JibBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2FpdBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3htYRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2hudBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3NlZRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3NtdhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3hhbhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2R0bhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2ZzYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIQoGY25ldHR2EhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIdCgV3bWN0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSGwoDa29iEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3a3l0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dHZyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRreGlpEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc2xhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dGhyEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bHd0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3YnR2Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrZnZzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dnVlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3dm5zEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdGxhEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3aWJ3Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrd2NoEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIrChBhbGphemVlcmFlbmdsaXNoEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIjCgthYmM3Y2hpY2FnbxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLZm94MzFkZW52ZXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdsdHgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdhZmYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdwbXQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdiaXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0dmQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0cmYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGthcmUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtmc24SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjaWESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGttdHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdwdHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdtdXISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdzYXoSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKCW55cHNwb3J0cxIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSJgoObmV3czJuYXNodmlsbGUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtmZHgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBmtldHZ0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSKQoRZm94MjlwaGlsYWRlbHBoaWESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEh4KBmNic2RmdxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2NlbhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIAoIZm94NG5ld3MSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdjbmMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtzdHUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGt4eHYSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdiYXkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGttaWQSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKEGlyYW4tY3Jpc2lzLW5ld3MSCmhzX2NoYW5uZWwY6LuLzQYSHAoEa3NkaxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2ZydhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2hlYxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2pldBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2JtdBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2hicxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2ZzbRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3R0YxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJwoPZm94OW1pbm5lYXBvbGlzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3enptEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIkCgxmb3gxMHBob2VuaXgSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdkaW8SDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiQKDGZveDI2aG91c3RvbhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3d0eBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoLY2JjbW9udHJlYWwSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdyaWMSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtobmwSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdib3kSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiAKCGFiYzduZXdzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3cmR3Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bGJ0Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIiCgpxMTNzZWF0dGxlEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIdCgVjYnM0NhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIwoIYW1hemVsYWISEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHdwdHoSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiUKDWZveDEzdGFtcGFiYXkSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKB25iY25ld3MSEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEhwKBHd0b2MSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhsKA2tocRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2dldBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3RodhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd21hehIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3l0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa21vdhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2ZteRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSIgoHaTI0bmV3cxIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2VjdBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2p0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3FyZhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3lsZRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSKAoQY2hhbm5lbDhsYXN2ZWdhcxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3dueRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3BheBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2RlZhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSKgoPZnJhbmNlMjRlbmdsaXNoEhFuYXRpb25hbF9mYXZvcml0ZRiAwq/wBRIcCgRrc2hiEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIbCgN3c2ISDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBHdmbGESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiIKB2NoZWRkYXISEW5hdGlvbmFsX2Zhdm9yaXRlGIDCr/AFEiEKBmJ1eno2MBIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2JiaBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3BsYxIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEa3NieRIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd2R0dhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3lmZhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSHAoEd3dzYhIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJQoKZm94d2VhdGhlchIRbmF0aW9uYWxfZmF2b3JpdGUYgMKv8AUSHAoEa2NiZBIObG9jYWxfZmF2b3JpdGUYgMKv8AUSJgoOdmFsbGV5bmV3c2xpdmUSDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEhwKBGtjcmESDmxvY2FsX2Zhdm9yaXRlGIDCr/AFEiAKCDEwMTFuZXdzEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrdHZ1Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrc25mEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3bHVjEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgR3b2lvEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIoChBjYnNwaGlsYWRlbHBoaWExEg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRraG91Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIcCgRrbmR1Eg5sb2NhbF9mYXZvcml0ZRiAwq/wBRIhCg1pbnRlcm5hdGlvbmFsEgpoc19jaGFubmVsGOzSs/AFEi4KDWRvY3VtZW50YXJpZXMSCmhzX2NoYW5uZWwYovTQ0QYiC3ByZXZpZXdHYXRlEh4KCnlvdXItbW9uZXkSCmhzX2NoYW5uZWwYid3H0wY=
8
- """
9
-
10
- s = b64.strip().replace(' ', '').replace('\n', '')
11
- data = base64.b64decode(s + '=' * (-len(s) % 4))
12
-
13
- # -len(s) % 4 computes exactly how many = characters are needed (0, 1, or 2), so it handles any input correctly.
14
- #data = base64.b64decode(b64.strip().replace(' ', '').replace('\n', ''))
15
-
16
- from haystack_ml_stack.generated.v1 import features_pb2 as pb2
17
-
18
- msg = pb2.GlobalChannels()
19
- msg.ParseFromString(data)
20
-
21
- empty = [c.name for c in msg.data if not c.category_group]
22
- print(f"version={msg.version}, channels={len(msg.data)}")
23
- print(f"Empty category_group: {len(empty)}")
24
- if empty:
25
- print(f" {empty}")
26
- for c in msg.data:
27
- if c.category_group == 'hs_channel':
28
- print(f" [hs] {c.name:<30} start_date={c.start_date} required_features={list(c.required_features)}")