Merge ~mitchdz/ubuntu/+source/rabbitmq-server:mitch/rabbitmq-server-jammy-MRE into ubuntu/+source/rabbitmq-server:ubuntu/jammy-devel

Proposed by Mitchell Dzurick
Status: Approved
Approved by: git-ubuntu bot
Approved revision: not available
Proposed branch: ~mitchdz/ubuntu/+source/rabbitmq-server:mitch/rabbitmq-server-jammy-MRE
Merge into: ubuntu/+source/rabbitmq-server:ubuntu/jammy-devel
Diff against target: 400822 lines (+209315/-166633)
763 files modified
.bazelignore (+1/-0)
.bazelrc (+28/-27)
BUILD.bats (+4/-1)
BUILD.bazel (+230/-109)
BUILD.inet_tcp_proxy (+4/-4)
BUILD.jose (+10/-0)
BUILD.osiris (+33/-0)
BUILD.ranch (+20/-25)
CONTRIBUTING.md (+16/-1)
MODULE.bazel (+420/-0)
Makefile (+18/-5)
README.md (+13/-8)
WORKSPACE (+197/-0)
bazel/bzlmod/BUILD.bazel (+0/-0)
bazel/bzlmod/extensions.bzl (+139/-0)
bazel/bzlmod/secondary_umbrella.bzl (+33/-0)
bazel/elixir/BUILD.bazel (+14/-0)
bazel/elixir/elixir.bzl (+147/-0)
bazel/elixir/elixir_as_app.bzl (+42/-0)
bazel/elixir/elixir_build.bzl (+171/-0)
bazel/elixir/elixir_toolchain.bzl (+65/-0)
bazel/elixir/iex_eval.bzl (+70/-0)
bazel/platforms/BUILD.bazel (+48/-0)
bazel/repositories/BUILD.bazel (+0/-0)
bazel/repositories/BUILD_external.tpl (+34/-0)
bazel/repositories/BUILD_internal.tpl (+36/-0)
bazel/repositories/defaults.bzl.tpl (+6/-0)
bazel/repositories/elixir_config.bzl (+233/-0)
bazel/secondary-umbrella.patch (+13/-0)
debian/changelog (+42/-0)
debian/patches/CVE-2023-46118-1.patch (+2/-2)
debian/patches/CVE-2023-46118-2.patch (+2/-2)
debian/patches/downgrade_elixir.patch (+11/-0)
debian/patches/lets-use-python3-not-python-binary.patch (+21/-62)
debian/patches/max-ports-compat.patch (+32/-0)
debian/patches/rabbitmq-dist.mk.patch (+3/-6)
debian/patches/series (+4/-3)
debian/rabbitmq-server.service (+5/-0)
debian/tests/control (+20/-0)
debian/tests/hello-world (+99/-0)
debian/tests/publish-subscribe (+48/-0)
debian/tests/rpc (+119/-0)
debian/tests/smoke-test (+0/-4)
debian/tests/work-queue (+117/-0)
debian/upstream/signing-key.asc (+52/-0)
debian/watch (+3/-2)
deps/.hex/cache.erl (+1/-1)
deps/.mix/archives/hex-2.0.0/hex-2.0.0/.elixir (+1/-0)
deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/hex.app (+45/-15)
deps/amqp10_client/BUILD.bazel (+34/-22)
deps/amqp10_client/CODE_OF_CONDUCT.md (+1/-0)
deps/amqp10_client/CONTRIBUTING.md (+1/-0)
deps/amqp10_client/Makefile (+31/-7)
deps/amqp10_client/README.md (+2/-2)
deps/amqp10_client/erlang.mk (+8373/-0)
deps/amqp10_client/rabbitmq-components.mk (+1/-0)
deps/amqp10_client/src/amqp10_client_connection.erl (+1/-1)
deps/amqp10_client/src/amqp10_client_frame_reader.erl (+1/-1)
deps/amqp10_common/BUILD.bazel (+28/-52)
deps/amqp10_common/CODE_OF_CONDUCT.md (+1/-0)
deps/amqp10_common/CONTRIBUTING.md (+1/-0)
deps/amqp10_common/Makefile (+36/-17)
deps/amqp10_common/development.post.mk (+1/-1)
deps/amqp10_common/erlang.mk (+8373/-0)
deps/amqp10_common/rabbitmq-components.mk (+1/-0)
deps/amqp10_common/src/amqp10_binary_parser.erl (+112/-6)
deps/amqp10_common/src/amqp10_framing.erl (+1/-6)
deps/amqp_client/BUILD.bazel (+33/-20)
deps/amqp_client/CODE_OF_CONDUCT.md (+1/-0)
deps/amqp_client/CONTRIBUTING.md (+1/-0)
deps/amqp_client/Makefile (+21/-159)
deps/amqp_client/erlang.mk (+8373/-0)
deps/amqp_client/rabbitmq-components.mk (+1/-0)
deps/aten/rebar.config (+0/-1)
deps/aten/src/aten.app.src (+1/-1)
deps/aten/src/aten_sink.erl (+4/-14)
deps/credentials_obfuscation/README.md (+10/-2)
deps/credentials_obfuscation/rebar.config (+3/-3)
deps/credentials_obfuscation/src/credentials_obfuscation.app.src (+1/-1)
deps/credentials_obfuscation/src/credentials_obfuscation.erl (+12/-5)
deps/credentials_obfuscation/src/credentials_obfuscation_app.erl (+1/-1)
deps/credentials_obfuscation/src/credentials_obfuscation_pbe.erl (+3/-3)
deps/credentials_obfuscation/src/credentials_obfuscation_sup.erl (+1/-1)
deps/credentials_obfuscation/src/credentials_obfuscation_svc.erl (+75/-20)
deps/eetcd/README.md (+291/-284)
deps/eetcd/include/eetcd.hrl (+37/-37)
deps/eetcd/priv/protos/auth.proto (+42/-42)
deps/eetcd/priv/protos/kv.proto (+48/-48)
deps/eetcd/priv/protos/router.proto (+1146/-1146)
deps/eetcd/rebar.config (+45/-30)
deps/eetcd/rebar.lock (+5/-2)
deps/eetcd/src/clients/eetcd_auth_gen.erl (+124/-124)
deps/eetcd/src/clients/eetcd_cluster_gen.erl (+47/-47)
deps/eetcd/src/clients/eetcd_election_gen.erl (+47/-47)
deps/eetcd/src/clients/eetcd_health_gen.erl (+26/-26)
deps/eetcd/src/clients/eetcd_kv_gen.erl (+47/-47)
deps/eetcd/src/clients/eetcd_lease_gen.erl (+47/-47)
deps/eetcd/src/clients/eetcd_lock_gen.erl (+26/-26)
deps/eetcd/src/clients/eetcd_maintenance_gen.erl (+61/-61)
deps/eetcd/src/clients/eetcd_watch_gen.erl (+19/-19)
deps/eetcd/src/eetcd.app.src (+1/-1)
deps/eetcd/src/eetcd.erl (+137/-119)
deps/eetcd/src/eetcd_app.erl (+13/-13)
deps/eetcd/src/eetcd_auth.erl (+361/-361)
deps/eetcd/src/eetcd_cluster.erl (+151/-151)
deps/eetcd/src/eetcd_compare.erl (+60/-60)
deps/eetcd/src/eetcd_conn.erl (+600/-462)
deps/eetcd/src/eetcd_conn_sup.erl (+44/-44)
deps/eetcd/src/eetcd_data_coercion.erl (+17/-17)
deps/eetcd/src/eetcd_election.erl (+318/-308)
deps/eetcd/src/eetcd_grpc.erl (+57/-58)
deps/eetcd/src/eetcd_kv.erl (+368/-368)
deps/eetcd/src/eetcd_lease.erl (+278/-278)
deps/eetcd/src/eetcd_lease_sup.erl (+38/-38)
deps/eetcd/src/eetcd_lock.erl (+60/-60)
deps/eetcd/src/eetcd_maintenance.erl (+104/-97)
deps/eetcd/src/eetcd_op.erl (+14/-14)
deps/eetcd/src/eetcd_stream.erl (+154/-152)
deps/eetcd/src/eetcd_sup.erl (+47/-47)
deps/eetcd/src/eetcd_watch.erl (+371/-259)
deps/eetcd/src/protos/auth_pb.erl (+29983/-29983)
deps/eetcd/src/protos/gogo_pb.erl (+28734/-28734)
deps/eetcd/src/protos/health_pb.erl (+1143/-1143)
deps/eetcd/src/protos/kv_pb.erl (+29658/-29658)
deps/eetcd/src/protos/router_pb.erl (+64412/-64412)
deps/elvis_mk/CHANGELOG.md (+17/-0)
deps/elvis_mk/README.md (+16/-2)
deps/elvis_mk/plugins.mk (+27/-8)
deps/elvis_mk/rebar3.sh (+12/-0)
deps/gen_batch_server/rebar.config (+1/-2)
deps/gen_batch_server/src/gen_batch_server.app.src (+1/-1)
deps/gen_batch_server/src/gen_batch_server.erl (+23/-17)
deps/observer_cli/README.md (+315/-311)
deps/observer_cli/include/observer_cli.hrl (+108/-108)
deps/observer_cli/mix.exs (+1/-1)
deps/observer_cli/src/observer_cli.app.src (+1/-1)
deps/observer_cli/src/observer_cli_application.erl (+242/-242)
deps/observer_cli/src/observer_cli_lib.erl (+472/-472)
deps/observer_cli/src/observer_cli_mnesia.erl (+1/-1)
deps/observer_cli/src/observer_cli_plugin.erl (+392/-392)
deps/observer_cli/src/observer_cli_process.erl (+464/-462)
deps/observer_cli/src/observer_cli_system.erl (+3/-3)
deps/osiris/BUILD.bazel (+21/-14)
deps/osiris/Makefile (+4/-4)
deps/osiris/README.md (+1/-1)
deps/osiris/WORKSPACE.bazel (+13/-14)
deps/osiris/src/osiris.erl (+7/-6)
deps/osiris/src/osiris.hrl (+1/-1)
deps/osiris/src/osiris_app.erl (+1/-1)
deps/osiris/src/osiris_bench.erl (+59/-30)
deps/osiris/src/osiris_counters.erl (+1/-1)
deps/osiris/src/osiris_log.erl (+26/-10)
deps/osiris/src/osiris_peer_shim.hrl (+12/-0)
deps/osiris/src/osiris_replica.erl (+114/-102)
deps/osiris/src/osiris_replica_reader.erl (+13/-10)
deps/osiris/src/osiris_replica_reader_sup.erl (+1/-1)
deps/osiris/src/osiris_retention.erl (+1/-1)
deps/osiris/src/osiris_server_sup.erl (+2/-2)
deps/osiris/src/osiris_sup.erl (+1/-1)
deps/osiris/src/osiris_util.erl (+28/-3)
deps/osiris/src/osiris_writer.erl (+11/-10)
deps/prometheus/README.md (+1/-1)
deps/prometheus/bin/increment-version (+1/-1)
deps/prometheus/mix.exs (+1/-1)
deps/prometheus/rebar.config (+1/-1)
deps/prometheus/src/collectors/mnesia/prometheus_mnesia_collector.erl (+17/-9)
deps/prometheus/src/collectors/vm/prometheus_vm_dist_collector.erl (+22/-18)
deps/prometheus/src/collectors/vm/prometheus_vm_statistics_collector.erl (+3/-3)
deps/prometheus/src/prometheus.app.src (+1/-1)
deps/ra/Makefile (+2/-2)
deps/ra/README.md (+80/-14)
deps/ra/rebar.config (+2/-3)
deps/ra/rebar.lock (+6/-6)
deps/ra/src/ra.app.src (+1/-1)
deps/ra/src/ra.erl (+49/-20)
deps/ra/src/ra.hrl (+10/-1)
deps/ra/src/ra_app.erl (+1/-1)
deps/ra/src/ra_bench.erl (+74/-32)
deps/ra/src/ra_counters.erl (+1/-15)
deps/ra/src/ra_dbg.erl (+1/-1)
deps/ra/src/ra_directory.erl (+3/-6)
deps/ra/src/ra_env.erl (+1/-1)
deps/ra/src/ra_file_handle.erl (+6/-3)
deps/ra/src/ra_flru.erl (+1/-1)
deps/ra/src/ra_leaderboard.erl (+1/-1)
deps/ra/src/ra_lib.erl (+87/-3)
deps/ra/src/ra_log.erl (+128/-35)
deps/ra/src/ra_log_ets.erl (+10/-4)
deps/ra/src/ra_log_meta.erl (+4/-4)
deps/ra/src/ra_log_pre_init.erl (+3/-1)
deps/ra/src/ra_log_reader.erl (+120/-26)
deps/ra/src/ra_log_segment.erl (+123/-28)
deps/ra/src/ra_log_segment_writer.erl (+40/-16)
deps/ra/src/ra_log_snapshot.erl (+1/-3)
deps/ra/src/ra_log_sup.erl (+6/-2)
deps/ra/src/ra_log_wal.erl (+168/-108)
deps/ra/src/ra_log_wal_sup.erl (+1/-27)
deps/ra/src/ra_machine.erl (+5/-1)
deps/ra/src/ra_machine_ets.erl (+1/-3)
deps/ra/src/ra_machine_simple.erl (+1/-1)
deps/ra/src/ra_metrics_ets.erl (+1/-3)
deps/ra/src/ra_monitors.erl (+1/-1)
deps/ra/src/ra_server.erl (+99/-52)
deps/ra/src/ra_server.hrl (+1/-1)
deps/ra/src/ra_server_proc.erl (+101/-56)
deps/ra/src/ra_server_sup.erl (+1/-2)
deps/ra/src/ra_server_sup_sup.erl (+2/-1)
deps/ra/src/ra_snapshot.erl (+4/-2)
deps/ra/src/ra_sup.erl (+1/-1)
deps/ra/src/ra_system.erl (+12/-4)
deps/ra/src/ra_system_sup.erl (+1/-1)
deps/ra/src/ra_systems_sup.erl (+1/-1)
deps/rabbit/BUILD.bazel (+105/-121)
deps/rabbit/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbit/CONTRIBUTING.md (+1/-0)
deps/rabbit/Makefile (+10/-9)
deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel (+24/-15)
deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_logger_fmt_helpers.erl (+3/-3)
deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_logger_json_fmt.erl (+2/-2)
deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_logger_text_fmt.erl (+10/-0)
deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_conf.erl (+33/-16)
deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_dist.erl (+20/-0)
deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_early_logging.erl (+19/-5)
deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_erlang_compat.erl (+2/-2)
deps/rabbit/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_file.erl (+95/-0)
deps/rabbit/docs/rabbitmq-diagnostics.8 (+4/-4)
deps/rabbit/docs/rabbitmqctl.8 (+92/-13)
deps/rabbit/priv/schema/rabbit.schema (+126/-2)
deps/rabbit/scripts/rabbitmq-env (+14/-3)
deps/rabbit/scripts/rabbitmq-server (+1/-5)
deps/rabbit/scripts/rabbitmq-server.bat (+1/-0)
deps/rabbit/scripts/rabbitmq-service.bat (+1/-0)
deps/rabbit/src/rabbit.erl (+27/-28)
deps/rabbit/src/rabbit_amqqueue.erl (+8/-1)
deps/rabbit/src/rabbit_amqqueue_process.erl (+1/-2)
deps/rabbit/src/rabbit_auth_backend_internal.erl (+6/-6)
deps/rabbit/src/rabbit_basic.erl (+25/-13)
deps/rabbit/src/rabbit_binding.erl (+1/-4)
deps/rabbit/src/rabbit_channel.erl (+49/-62)
deps/rabbit/src/rabbit_channel_tracking.erl (+1/-1)
deps/rabbit/src/rabbit_classic_queue.erl (+12/-7)
deps/rabbit/src/rabbit_connection_tracking.erl (+1/-1)
deps/rabbit/src/rabbit_definitions.erl (+75/-25)
deps/rabbit/src/rabbit_direct_reply_to.erl (+14/-13)
deps/rabbit/src/rabbit_disk_monitor.erl (+104/-32)
deps/rabbit/src/rabbit_exchange.erl (+6/-3)
deps/rabbit/src/rabbit_feature_flags.erl (+2/-2)
deps/rabbit/src/rabbit_fifo_client.erl (+5/-2)
deps/rabbit/src/rabbit_logger_exchange_h.erl (+7/-2)
deps/rabbit/src/rabbit_maintenance.erl (+40/-7)
deps/rabbit/src/rabbit_mirror_queue_misc.erl (+33/-1)
deps/rabbit/src/rabbit_msg_record.erl (+8/-23)
deps/rabbit/src/rabbit_networking.erl (+37/-1)
deps/rabbit/src/rabbit_node_monitor.erl (+0/-4)
deps/rabbit/src/rabbit_osiris_metrics.erl (+2/-2)
deps/rabbit/src/rabbit_policies.erl (+1/-1)
deps/rabbit/src/rabbit_policy.erl (+26/-7)
deps/rabbit/src/rabbit_prelaunch_logging.erl (+93/-57)
deps/rabbit/src/rabbit_priority_queue.erl (+6/-1)
deps/rabbit/src/rabbit_queue_type.erl (+10/-1)
deps/rabbit/src/rabbit_quorum_queue.erl (+10/-4)
deps/rabbit/src/rabbit_ra_systems.erl (+89/-0)
deps/rabbit/src/rabbit_reader.erl (+0/-5)
deps/rabbit/src/rabbit_release_series.erl (+39/-0)
deps/rabbit/src/rabbit_runtime_parameters.erl (+1/-1)
deps/rabbit/src/rabbit_stream_coordinator.erl (+227/-25)
deps/rabbit/src/rabbit_stream_coordinator.hrl (+13/-8)
deps/rabbit/src/rabbit_stream_queue.erl (+83/-21)
deps/rabbit/src/rabbit_vhost_process.erl (+0/-4)
deps/rabbit_common/BUILD.bazel (+40/-111)
deps/rabbit_common/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbit_common/CONTRIBUTING.md (+1/-0)
deps/rabbit_common/Makefile (+24/-12)
deps/rabbit_common/development.post.mk (+1/-1)
deps/rabbit_common/erlang.mk (+8373/-0)
deps/rabbit_common/include/rabbit.hrl (+4/-0)
deps/rabbit_common/mk/rabbitmq-components.hexpm.mk (+2/-0)
deps/rabbit_common/mk/rabbitmq-dist.mk (+3/-2)
deps/rabbit_common/mk/rabbitmq-early-test.mk (+1/-1)
deps/rabbit_common/mk/rabbitmq-hexpm.mk (+8/-12)
deps/rabbit_common/mk/rabbitmq-run.mk (+1/-6)
deps/rabbit_common/rabbitmq-components.mk (+1/-0)
deps/rabbit_common/src/file_handle_cache_stats.erl (+1/-1)
deps/rabbit_common/src/rabbit_core_metrics.erl (+1/-1)
deps/rabbit_common/src/rabbit_data_coercion.erl (+6/-5)
deps/rabbit_common/src/rabbit_date_time.erl (+73/-0)
deps/rabbit_common/src/rabbit_env.erl (+8/-7)
deps/rabbit_common/src/rabbit_event.erl (+4/-11)
deps/rabbit_common/src/rabbit_json.erl (+23/-5)
deps/rabbit_common/src/rabbit_misc.erl (+9/-0)
deps/rabbit_common/src/rabbit_net.erl (+65/-2)
deps/rabbit_common/src/rabbit_nodes_common.erl (+4/-0)
deps/rabbit_common/src/rabbit_writer.erl (+1/-1)
deps/rabbit_common/src/supervisor2.erl (+30/-11)
deps/rabbit_common/src/vm_memory_monitor.erl (+19/-4)
deps/rabbitmq_amqp1_0/BUILD.bazel (+28/-16)
deps/rabbitmq_amqp1_0/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_amqp1_0/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_amqp1_0/Makefile (+0/-6)
deps/rabbitmq_amqp1_0/include/rabbit_amqp1_0.hrl (+2/-2)
deps/rabbitmq_amqp1_0/src/Elixir.RabbitMQ.CLI.Ctl.Commands.ListAmqp10ConnectionsCommand.erl (+0/-9)
deps/rabbitmq_amqp1_0/src/rabbit_amqp1_0_reader.erl (+7/-4)
deps/rabbitmq_amqp1_0/src/rabbit_amqp1_0_session_process.erl (+0/-4)
deps/rabbitmq_auth_backend_cache/BUILD.bazel (+16/-15)
deps/rabbitmq_auth_backend_cache/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_auth_backend_cache/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_auth_backend_cache/Makefile (+0/-6)
deps/rabbitmq_auth_backend_cache/README.md (+1/-1)
deps/rabbitmq_auth_backend_cache/src/rabbit_auth_backend_cache_app.erl (+1/-1)
deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache.erl (+0/-13)
deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl (+1/-1)
deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl (+1/-1)
deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl (+4/-3)
deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl (+5/-4)
deps/rabbitmq_auth_backend_http/BUILD.bazel (+14/-11)
deps/rabbitmq_auth_backend_http/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_auth_backend_http/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_auth_backend_http/Makefile (+0/-6)
deps/rabbitmq_auth_backend_http/README.md (+5/-0)
deps/rabbitmq_auth_backend_http/examples/README.md (+24/-9)
deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/rabbitmq_auth_backend_django/urls.py (+6/-6)
deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_webapi_dotnetcore/Controllers/AuthController.cs (+6/-8)
deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_webapi_dotnetcore/Program.cs (+23/-14)
deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_webapi_dotnetcore/Properties/launchSettings.json (+11/-11)
deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_webapi_dotnetcore/RabbitMqAuthBackendHttp.csproj (+3/-9)
deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_webapi_dotnetcore/RabbitMqAuthBackendHttp.sln (+9/-21)
deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_webapi_dotnetcore/Requests/VhostAuthRequest.cs (+0/-1)
deps/rabbitmq_auth_backend_http/src/rabbit_auth_backend_http.erl (+2/-5)
deps/rabbitmq_auth_backend_ldap/BUILD.bazel (+11/-8)
deps/rabbitmq_auth_backend_ldap/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_auth_backend_ldap/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_auth_backend_ldap/Makefile (+0/-6)
deps/rabbitmq_auth_backend_ldap/src/rabbit_auth_backend_ldap.erl (+49/-17)
deps/rabbitmq_auth_backend_ldap/src/rabbit_auth_backend_ldap_app.erl (+1/-1)
deps/rabbitmq_auth_backend_oauth2/BUILD.bazel (+30/-21)
deps/rabbitmq_auth_backend_oauth2/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_auth_backend_oauth2/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_auth_backend_oauth2/Makefile (+0/-6)
deps/rabbitmq_auth_backend_oauth2/priv/schema/rabbitmq_auth_backend_oauth2.schema (+3/-3)
deps/rabbitmq_auth_backend_oauth2/src/Elixir.RabbitMQ.CLI.Ctl.Commands.AddUaaKeyCommand.erl (+1/-5)
deps/rabbitmq_auth_backend_oauth2/src/rabbit_auth_backend_oauth2.erl (+11/-11)
deps/rabbitmq_auth_backend_oauth2/src/uaa_jwt_jwt.erl (+0/-4)
deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel (+15/-9)
deps/rabbitmq_auth_mechanism_ssl/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_auth_mechanism_ssl/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_auth_mechanism_ssl/Makefile (+0/-6)
deps/rabbitmq_aws/BUILD.bazel (+12/-16)
deps/rabbitmq_aws/Makefile (+0/-6)
deps/rabbitmq_cli/.formatter.exs (+3/-0)
deps/rabbitmq_cli/BUILD.bazel (+72/-15)
deps/rabbitmq_cli/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_cli/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_cli/Makefile (+0/-13)
deps/rabbitmq_cli/README.md (+3/-3)
deps/rabbitmq_cli/config/config.exs (+2/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/auto_complete.ex (+2/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/command_behaviour.ex (+94/-44)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/alarms.ex (+5/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/code_path.ex (+10/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/command_modules.ex (+27/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/feature_flags.ex (+0/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/helpers.ex (+17/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/input.ex (+13/-11)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/listeners.ex (+80/-40)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/log_files.ex (+27/-17)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/memory.ex (+13/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/networking.ex (+42/-31)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/parser.ex (+12/-7)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/platform.ex (+6/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/validators.ex (+0/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/core/version.ex (+2/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/add_user_command.ex (+32/-13)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/add_vhost_command.ex (+16/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/authenticate_user_command.ex (+15/-8)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/autocomplete_command.ex (+2/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/await_online_nodes_command.ex (+5/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/change_password_command.ex (+16/-8)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/clear_permissions_command.ex (+12/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/clear_topic_permissions_command.ex (+12/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/clear_user_limits_command.ex (+4/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/close_all_connections_command.ex (+11/-8)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/close_connection_command.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/cluster_status_command.ex (+200/-120)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/decode_command.ex (+18/-9)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/delete_user_command.ex (+7/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/enable_feature_flag_command.ex (+24/-14)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/encode_command.ex (+24/-11)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/environment_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/eval_command.ex (+14/-6)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/eval_file_command.ex (+8/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/export_definitions_command.ex (+62/-32)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/force_boot_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/force_gc_command.ex (+5/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/force_reset_command.ex (+1/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/forget_cluster_node_command.ex (+24/-8)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/help_command.ex (+74/-42)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/hipe_compile_command.ex (+1/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/import_definitions_command.ex (+40/-14)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/join_cluster_command.ex (+10/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_consumers_command.ex (+11/-12)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_feature_flags_command.ex (+10/-10)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_queues_command.ex (+8/-7)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_unresponsive_queues_command.ex (+6/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_user_limits_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/node_health_check_command.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/ping_command.ex (+5/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/report_command.ex (+6/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/reset_command.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/resume_listeners_command.ex (+11/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/rotate_logs_command.ex (+1/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_global_parameter_command.ex (+2/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_log_level_command.ex (+6/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_operator_policy_command.ex (+11/-6)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_parameter_command.ex (+1/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_permissions_command.ex (+12/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_policy_command.ex (+12/-5)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_topic_permissions_command.ex (+14/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_user_tags_command.ex (+5/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_vhost_tags_command.ex (+16/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_vm_memory_high_watermark_command.ex (+1/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/shutdown_command.ex (+24/-13)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/start_app_command.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/status_command.ex (+129/-82)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/stop_command.ex (+7/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/suspend_listeners_command.ex (+11/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/sync_queue_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/update_cluster_nodes_command.ex (+5/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/version_command.ex (+3/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/wait_command.ex (+5/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/default_output.ex (+9/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/alarms_command.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/certificates_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/check_alarms_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/check_certificate_expiration_command.ex (+18/-9)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/check_local_alarms_command.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/check_port_connectivity_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/check_port_listener_command.ex (+4/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/check_protocol_listener_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/check_running_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/cipher_suites_command.ex (+19/-14)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/command_line_arguments_command.ex (+4/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/consume_event_stream_command.ex (+29/-15)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/disable_auth_attempt_source_tracking_command.ex (+8/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/enable_auth_attempt_source_tracking_command.ex (+7/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/erlang_cookie_hash_command.ex (+5/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/erlang_cookie_sources_command.ex (+27/-19)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/erlang_version_command.ex (+11/-7)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/is_booting_command.ex (+5/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/is_running_command.ex (+11/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/list_network_interfaces_command.ex (+16/-11)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/list_node_auth_attempt_stats_command.ex (+22/-7)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/log_location_command.ex (+15/-11)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/log_tail_command.ex (+6/-5)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/log_tail_stream_command.ex (+27/-13)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/maybe_stuck_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/memory_breakdown_command.ex (+4/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/observer_command.ex (+3/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/os_env_command.ex (+20/-7)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/remote_shell_command.ex (+3/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/resolve_hostname_command.ex (+38/-16)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/resolver_info_command.ex (+21/-13)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/runtime_thread_stats_command.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/server_version_command.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/tls_versions_command.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/diagnostics_helpers.ex (+5/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/formatter_behaviour.ex (+3/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/formatter_helpers.ex (+1/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json.ex (+12/-6)
deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json_stream.ex (+12/-6)
deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/plugins.ex (+2/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/pretty_table.ex (+92/-48)
deps/rabbitmq_cli/lib/rabbitmq/cli/information_unit.ex (+6/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/plugins/commands/disable_command.ex (+8/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/plugins/commands/enable_command.ex (+8/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/plugins/commands/is_enabled.ex (+7/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/plugins/commands/list_command.ex (+4/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/plugins/commands/set_command.ex (+8/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/plugins/error_output.ex (+1/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/plugins/plugins_helpers.ex (+8/-3)
deps/rabbitmq_cli/lib/rabbitmq/cli/printer_behaviour.ex (+2/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/add_member_command.ex (+1/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/check_if_node_is_mirror_sync_critical_command.ex (+36/-14)
deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/check_if_node_is_quorum_critical_command.ex (+45/-15)
deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/grow_command.ex (+61/-36)
deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/peek_command.ex (+24/-10)
deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/rebalance_command.ex (+14/-10)
deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/reclaim_quorum_memory_command.ex (+6/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/queues/commands/shrink_command.ex (+27/-12)
deps/rabbitmq_cli/lib/rabbitmq/cli/streams/commands/delete_replica_command.ex (+1/-0)
deps/rabbitmq_cli/lib/rabbitmq/cli/streams/commands/set_stream_retention_policy_command.ex (+3/-4)
deps/rabbitmq_cli/lib/rabbitmq/cli/streams/commands/stream_status_command.ex (+3/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/time_unit.ex (+0/-1)
deps/rabbitmq_cli/lib/rabbitmq/cli/upgrade/commands/await_online_quorum_plus_one_command.ex (+45/-17)
deps/rabbitmq_cli/lib/rabbitmq/cli/upgrade/commands/await_online_synchronized_mirror_command.ex (+57/-9)
deps/rabbitmq_cli/lib/rabbitmq/cli/upgrade/commands/drain_command.ex (+10/-6)
deps/rabbitmq_cli/lib/rabbitmq/cli/upgrade/commands/post_upgrade_command.ex (+1/-2)
deps/rabbitmq_cli/lib/rabbitmq/cli/upgrade/commands/revive_command.ex (+10/-6)
deps/rabbitmq_cli/lib/rabbitmqctl.ex (+61/-31)
deps/rabbitmq_cli/mix.exs (+95/-81)
deps/rabbitmq_cli/mix.lock (+1/-1)
deps/rabbitmq_cli/rabbitmqctl.bzl (+145/-114)
deps/rabbitmq_cli/rabbitmqctl_check_formatted.bzl (+135/-0)
deps/rabbitmq_cli/rabbitmqctl_test.bzl (+190/-130)
deps/rabbitmq_codegen/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_codegen/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_consistent_hash_exchange/BUILD.bazel (+19/-10)
deps/rabbitmq_consistent_hash_exchange/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_consistent_hash_exchange/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_consistent_hash_exchange/Makefile (+0/-6)
deps/rabbitmq_consistent_hash_exchange/README.md (+30/-10)
deps/rabbitmq_consistent_hash_exchange/include/rabbitmq_consistent_hash_exchange.hrl (+5/-5)
deps/rabbitmq_consistent_hash_exchange/src/Elixir.RabbitMQ.CLI.Diagnostics.Commands.ConsistentHashExchangeRingStateCommand.erl (+0/-5)
deps/rabbitmq_consistent_hash_exchange/src/rabbit_exchange_type_consistent_hash.erl (+47/-15)
deps/rabbitmq_event_exchange/BUILD.bazel (+16/-10)
deps/rabbitmq_event_exchange/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_event_exchange/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_event_exchange/Makefile (+0/-5)
deps/rabbitmq_event_exchange/README.md (+1/-1)
deps/rabbitmq_event_exchange/src/rabbit_exchange_type_event.erl (+4/-4)
deps/rabbitmq_federation/BUILD.bazel (+27/-22)
deps/rabbitmq_federation/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_federation/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_federation/Makefile (+0/-6)
deps/rabbitmq_federation/src/Elixir.RabbitMQ.CLI.Ctl.Commands.FederationStatusCommand.erl (+0/-2)
deps/rabbitmq_federation/src/Elixir.RabbitMQ.CLI.Ctl.Commands.RestartFederationLinkCommand.erl (+0/-2)
deps/rabbitmq_federation_management/BUILD.bazel (+19/-13)
deps/rabbitmq_federation_management/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_federation_management/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_federation_management/Makefile (+0/-6)
deps/rabbitmq_jms_topic_exchange/BUILD.bazel (+16/-11)
deps/rabbitmq_jms_topic_exchange/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_jms_topic_exchange/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_jms_topic_exchange/Makefile (+0/-6)
deps/rabbitmq_jms_topic_exchange/src/rabbit_jms_topic_exchange.erl (+20/-7)
deps/rabbitmq_management/BUILD.bazel (+35/-35)
deps/rabbitmq_management/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_management/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_management/Makefile (+0/-6)
deps/rabbitmq_management/bin/rabbitmqadmin (+15/-11)
deps/rabbitmq_management/priv/www/css/main.css (+6/-2)
deps/rabbitmq_management/priv/www/js/formatters.js (+11/-5)
deps/rabbitmq_management/priv/www/js/global.js (+1/-1)
deps/rabbitmq_management/priv/www/js/tmpl/binary.ejs (+16/-13)
deps/rabbitmq_management/priv/www/js/tmpl/layout.ejs (+9/-9)
deps/rabbitmq_management/priv/www/js/tmpl/memory.ejs (+12/-11)
deps/rabbitmq_management/src/rabbit_mgmt_dispatcher.erl (+2/-1)
deps/rabbitmq_management/src/rabbit_mgmt_wm_environment.erl (+33/-0)
deps/rabbitmq_management/src/rabbit_mgmt_wm_overview.erl (+3/-2)
deps/rabbitmq_management_agent/BUILD.bazel (+17/-12)
deps/rabbitmq_management_agent/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_management_agent/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_management_agent/Makefile (+0/-6)
deps/rabbitmq_management_agent/src/Elixir.RabbitMQ.CLI.Ctl.Commands.ResetStatsDbCommand.erl (+0/-2)
deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl (+1/-40)
deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl (+5/-2)
deps/rabbitmq_management_agent/src/rabbit_mgmt_metrics_collector.erl (+4/-20)
deps/rabbitmq_mqtt/BUILD.bazel (+33/-32)
deps/rabbitmq_mqtt/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_mqtt/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_mqtt/Makefile (+6/-8)
deps/rabbitmq_mqtt/priv/schema/rabbitmq_mqtt.schema (+3/-0)
deps/rabbitmq_mqtt/src/Elixir.RabbitMQ.CLI.Ctl.Commands.DecommissionMqttNodeCommand.erl (+0/-2)
deps/rabbitmq_mqtt/src/Elixir.RabbitMQ.CLI.Ctl.Commands.ListMqttConnectionsCommand.erl (+0/-8)
deps/rabbitmq_mqtt/src/rabbit_mqtt.erl (+19/-29)
deps/rabbitmq_mqtt/src/rabbit_mqtt_collector.erl (+13/-6)
deps/rabbitmq_mqtt/src/rabbit_mqtt_internal_event_handler.erl (+4/-4)
deps/rabbitmq_mqtt/src/rabbit_mqtt_processor.erl (+14/-7)
deps/rabbitmq_mqtt/src/rabbit_mqtt_reader.erl (+13/-4)
deps/rabbitmq_peer_discovery_aws/BUILD.bazel (+13/-12)
deps/rabbitmq_peer_discovery_aws/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_peer_discovery_aws/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_peer_discovery_aws/Makefile (+0/-6)
deps/rabbitmq_peer_discovery_common/BUILD.bazel (+8/-8)
deps/rabbitmq_peer_discovery_common/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_peer_discovery_common/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_peer_discovery_common/Makefile (+0/-6)
deps/rabbitmq_peer_discovery_common/src/rabbit_peer_discovery_httpc.erl (+52/-7)
deps/rabbitmq_peer_discovery_common/src/rabbit_peer_discovery_util.erl (+1/-1)
deps/rabbitmq_peer_discovery_consul/BUILD.bazel (+16/-11)
deps/rabbitmq_peer_discovery_consul/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_peer_discovery_consul/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_peer_discovery_consul/Makefile (+0/-6)
deps/rabbitmq_peer_discovery_consul/priv/schema/rabbitmq_peer_discovery_consul.schema (+116/-0)
deps/rabbitmq_peer_discovery_consul/src/rabbit_peer_discovery_consul.erl (+76/-19)
deps/rabbitmq_peer_discovery_etcd/BUILD.bazel (+17/-12)
deps/rabbitmq_peer_discovery_etcd/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_peer_discovery_etcd/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_peer_discovery_etcd/Makefile (+1/-7)
deps/rabbitmq_peer_discovery_k8s/BUILD.bazel (+16/-11)
deps/rabbitmq_peer_discovery_k8s/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_peer_discovery_k8s/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_peer_discovery_k8s/Makefile (+0/-6)
deps/rabbitmq_peer_discovery_k8s/README.md (+1/-1)
deps/rabbitmq_peer_discovery_k8s/examples/gke/README.md (+1/-3)
deps/rabbitmq_peer_discovery_k8s/examples/kind/README.md (+6/-2)
deps/rabbitmq_peer_discovery_k8s/examples/minikube/README.md (+6/-2)
deps/rabbitmq_prelaunch/BUILD.bazel (+24/-15)
deps/rabbitmq_prelaunch/src/rabbit_logger_fmt_helpers.erl (+3/-3)
deps/rabbitmq_prelaunch/src/rabbit_logger_json_fmt.erl (+2/-2)
deps/rabbitmq_prelaunch/src/rabbit_logger_text_fmt.erl (+10/-0)
deps/rabbitmq_prelaunch/src/rabbit_prelaunch_conf.erl (+33/-16)
deps/rabbitmq_prelaunch/src/rabbit_prelaunch_dist.erl (+20/-0)
deps/rabbitmq_prelaunch/src/rabbit_prelaunch_early_logging.erl (+19/-5)
deps/rabbitmq_prelaunch/src/rabbit_prelaunch_erlang_compat.erl (+2/-2)
deps/rabbitmq_prelaunch/src/rabbit_prelaunch_file.erl (+95/-0)
deps/rabbitmq_prometheus/BUILD.bazel (+19/-14)
deps/rabbitmq_prometheus/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_prometheus/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_prometheus/Makefile (+0/-44)
deps/rabbitmq_prometheus/metrics-detailed.md (+1/-0)
deps/rabbitmq_prometheus/src/collectors/prometheus_process_collector.erl (+64/-0)
deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl (+2/-1)
deps/rabbitmq_prometheus/src/rabbit_prometheus_dispatcher.erl (+2/-1)
deps/rabbitmq_random_exchange/BUILD.bazel (+13/-9)
deps/rabbitmq_random_exchange/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_random_exchange/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_random_exchange/Makefile (+0/-6)
deps/rabbitmq_recent_history_exchange/BUILD.bazel (+16/-9)
deps/rabbitmq_recent_history_exchange/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_recent_history_exchange/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_recent_history_exchange/Makefile (+0/-6)
deps/rabbitmq_sharding/BUILD.bazel (+17/-10)
deps/rabbitmq_sharding/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_sharding/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_sharding/Makefile (+0/-6)
deps/rabbitmq_sharding/README.md (+5/-0)
deps/rabbitmq_shovel/BUILD.bazel (+28/-27)
deps/rabbitmq_shovel/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_shovel/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_shovel/Makefile (+0/-7)
deps/rabbitmq_shovel/src/Elixir.RabbitMQ.CLI.Ctl.Commands.DeleteShovelCommand.erl (+0/-5)
deps/rabbitmq_shovel/src/Elixir.RabbitMQ.CLI.Ctl.Commands.RestartShovelCommand.erl (+0/-2)
deps/rabbitmq_shovel/src/Elixir.RabbitMQ.CLI.Ctl.Commands.ShovelStatusCommand.erl (+0/-2)
deps/rabbitmq_shovel/src/rabbit_amqp091_shovel.erl (+6/-0)
deps/rabbitmq_shovel/src/rabbit_amqp10_shovel.erl (+8/-0)
deps/rabbitmq_shovel/src/rabbit_shovel_dyn_worker_sup.erl (+1/-1)
deps/rabbitmq_shovel/src/rabbit_shovel_parameters.erl (+2/-2)
deps/rabbitmq_shovel/src/rabbit_shovel_status.erl (+7/-2)
deps/rabbitmq_shovel/src/rabbit_shovel_worker.erl (+6/-0)
deps/rabbitmq_shovel_management/BUILD.bazel (+22/-16)
deps/rabbitmq_shovel_management/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_shovel_management/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_shovel_management/Makefile (+0/-6)
deps/rabbitmq_stomp/BUILD.bazel (+28/-23)
deps/rabbitmq_stomp/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_stomp/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_stomp/Makefile (+0/-6)
deps/rabbitmq_stomp/priv/schema/rabbitmq_stomp.schema (+3/-0)
deps/rabbitmq_stomp/src/Elixir.RabbitMQ.CLI.Ctl.Commands.ListStompConnectionsCommand.erl (+0/-9)
deps/rabbitmq_stomp/src/rabbit_stomp_reader.erl (+13/-0)
deps/rabbitmq_stream/BUILD.bazel (+28/-15)
deps/rabbitmq_stream/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_stream/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_stream/Makefile (+0/-6)
deps/rabbitmq_stream/docs/PROTOCOL.adoc (+2/-2)
deps/rabbitmq_stream/src/Elixir.RabbitMQ.CLI.Ctl.Commands.ListStreamConnectionsCommand.erl (+0/-7)
deps/rabbitmq_stream/src/Elixir.RabbitMQ.CLI.Ctl.Commands.ListStreamConsumersCommand.erl (+0/-7)
deps/rabbitmq_stream/src/Elixir.RabbitMQ.CLI.Ctl.Commands.ListStreamPublishersCommand.erl (+0/-7)
deps/rabbitmq_stream/src/rabbit_stream.erl (+12/-10)
deps/rabbitmq_stream/src/rabbit_stream_manager.erl (+51/-38)
deps/rabbitmq_stream/src/rabbit_stream_metrics_gc.erl (+1/-1)
deps/rabbitmq_stream/src/rabbit_stream_reader.erl (+89/-70)
deps/rabbitmq_stream/src/rabbit_stream_sup.erl (+3/-2)
deps/rabbitmq_stream_common/BUILD.bazel (+5/-6)
deps/rabbitmq_stream_common/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_stream_common/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_stream_common/Makefile (+0/-6)
deps/rabbitmq_stream_management/BUILD.bazel (+21/-16)
deps/rabbitmq_stream_management/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_stream_management/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_stream_management/Makefile (+0/-6)
deps/rabbitmq_stream_management/src/rabbit_stream_connection_consumers_mgmt.erl (+4/-3)
deps/rabbitmq_stream_management/src/rabbit_stream_connection_mgmt.erl (+6/-5)
deps/rabbitmq_stream_management/src/rabbit_stream_connection_publishers_mgmt.erl (+7/-5)
deps/rabbitmq_stream_management/src/rabbit_stream_connections_mgmt.erl (+20/-14)
deps/rabbitmq_stream_management/src/rabbit_stream_connections_vhost_mgmt.erl (+6/-4)
deps/rabbitmq_stream_management/src/rabbit_stream_consumers_mgmt.erl (+7/-5)
deps/rabbitmq_stream_management/src/rabbit_stream_management_utils.erl (+1/-2)
deps/rabbitmq_stream_management/src/rabbit_stream_mgmt_db.erl (+18/-6)
deps/rabbitmq_stream_management/src/rabbit_stream_publishers_mgmt.erl (+8/-6)
deps/rabbitmq_top/BUILD.bazel (+18/-12)
deps/rabbitmq_top/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_top/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_top/Makefile (+0/-6)
deps/rabbitmq_tracing/BUILD.bazel (+18/-12)
deps/rabbitmq_tracing/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_tracing/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_tracing/Makefile (+0/-6)
deps/rabbitmq_tracing/src/rabbit_tracing_consumer.erl (+3/-3)
deps/rabbitmq_tracing/src/rabbit_tracing_sup.erl (+2/-2)
deps/rabbitmq_trust_store/BUILD.bazel (+14/-17)
deps/rabbitmq_trust_store/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_trust_store/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_trust_store/Makefile (+0/-7)
deps/rabbitmq_trust_store/src/rabbit_trust_store.erl (+8/-12)
deps/rabbitmq_trust_store/src/rabbit_trust_store_http_provider.erl (+1/-1)
deps/rabbitmq_web_dispatch/BUILD.bazel (+14/-11)
deps/rabbitmq_web_dispatch/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_web_dispatch/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_web_dispatch/Makefile (+0/-6)
deps/rabbitmq_web_mqtt/BUILD.bazel (+22/-18)
deps/rabbitmq_web_mqtt/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_web_mqtt/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_web_mqtt/Makefile (+0/-6)
deps/rabbitmq_web_mqtt_examples/BUILD.bazel (+9/-10)
deps/rabbitmq_web_mqtt_examples/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_web_mqtt_examples/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_web_mqtt_examples/Makefile (+0/-6)
deps/rabbitmq_web_stomp/BUILD.bazel (+21/-18)
deps/rabbitmq_web_stomp/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_web_stomp/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_web_stomp/Makefile (+0/-6)
deps/rabbitmq_web_stomp/src/rabbit_web_stomp_handler.erl (+2/-2)
deps/rabbitmq_web_stomp/src/rabbit_web_stomp_internal_event_handler.erl (+1/-1)
deps/rabbitmq_web_stomp/src/rabbit_web_stomp_listener.erl (+3/-3)
deps/rabbitmq_web_stomp_examples/BUILD.bazel (+9/-10)
deps/rabbitmq_web_stomp_examples/CODE_OF_CONDUCT.md (+1/-0)
deps/rabbitmq_web_stomp_examples/CONTRIBUTING.md (+1/-0)
deps/rabbitmq_web_stomp_examples/Makefile (+0/-6)
deps/recon/README.md (+6/-2)
deps/recon/mix.exs (+1/-1)
deps/recon/src/recon.app.src (+1/-1)
deps/recon/src/recon.erl (+2/-0)
deps/recon/src/recon_alloc.erl (+3/-1)
deps/recon/src/recon_trace.erl (+1/-1)
dev/null (+0/-13)
dist.bzl (+208/-64)
erlang.mk (+263/-47)
erlang_ls.config (+1/-0)
git-revisions.txt (+73/-73)
mk/bazel.mk (+2/-2)
rabbitmq-components.mk (+4/-4)
rabbitmq.bzl (+137/-82)
rabbitmq_home.bzl (+61/-45)
rabbitmq_run.bzl (+99/-25)
rabbitmqctl.bzl (+0/-4)
release-notes/3.8.29.md (+99/-0)
release-notes/3.8.30.md (+78/-0)
release-notes/3.8.31.md (+69/-0)
release-notes/3.8.32.md (+79/-0)
release-notes/3.8.33.md (+56/-0)
release-notes/3.8.34.md (+51/-0)
release-notes/3.8.35.md (+65/-0)
release-notes/3.9.14.md (+126/-0)
release-notes/3.9.15.md (+108/-0)
release-notes/3.9.16.md (+72/-0)
release-notes/3.9.17.md (+64/-0)
release-notes/3.9.18.md (+69/-0)
release-notes/3.9.19.md (+58/-0)
release-notes/3.9.20.md (+26/-0)
release-notes/3.9.21.md (+118/-0)
release-notes/3.9.22.md (+61/-0)
release-notes/3.9.23.md (+129/-0)
release-notes/3.9.24.md (+46/-0)
release-notes/3.9.25.md (+62/-0)
release-notes/3.9.26.md (+49/-0)
release-notes/3.9.27.md (+84/-0)
scripts/bazel/rabbitmq-run.bat (+157/-0)
scripts/bazel/rabbitmq-run.sh (+170/-102)
tools/BUILD.bazel (+16/-0)
tools/erlang_ls.bzl (+93/-0)
user-template.bazelrc (+5/-8)
workspace_helpers.bzl (+84/-124)
Reviewer Review Type Date Requested Status
git-ubuntu bot Approve
Andreas Hasenack Approve
Paride Legovini (community) Approve
Canonical Server Reporter Pending
Review via email: mp+465969@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Waiting for autopkgtest to finish, been sitting in queue for a while. Currently only amd64 still needs to run.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Okay I am tired of waiting for autopkgtest. The runners for everything except amd64 has ran and succeeded.

  - rabbitmq-server/3.9.27-0ubuntu0.1~jammy7
    + ✅ rabbitmq-server on jammy for armhf @ 09.05.24 16:35:18
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mitchdz-rabbitmq-server-mre-2204-testing/jammy/armhf/r/rabbitmq-server/20240509_163518_1a968@/log.gz
    + ✅ rabbitmq-server on jammy for i386 @ 08.05.24 07:54:12
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mitchdz-rabbitmq-server-mre-2204-testing/jammy/i386/r/rabbitmq-server/20240508_075412_f0983@/log.gz
    + ✅ rabbitmq-server on jammy for ppc64el @ 07.05.24 21:16:10
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mitchdz-rabbitmq-server-mre-2204-testing/jammy/ppc64el/r/rabbitmq-server/20240507_211610_5675b@/log.gz
    + ✅ rabbitmq-server on jammy for s390x @ 07.05.24 16:57:23
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mitchdz-rabbitmq-server-mre-2204-testing/jammy/s390x/r/rabbitmq-server/20240507_165723_fa52c@/log.gz

amd64 local results are here and passing - https://pastebin.canonical.com/p/rSNvvNNTgW/

Revision history for this message
Paride Legovini (paride) wrote :

LGTM, uploading.

review: Approve
Revision history for this message
Andreas Hasenack (ahasenack) :
Revision history for this message
Andreas Hasenack (ahasenack) wrote (last edit ):

I propose a different d/changelog entry, let me know what you think:

  * New upstream version 3.9.27 (LP: #2060248):
    - d/p/max-ports-compat.patch: before v3.9.23, the maximum number of
      concurrent client connections was set based on the kernel open file handle
      limit. In v3.9.23 the concurrent client connection limit was changed to
      the value of the ERL_MAX_PORTS environment variable, and defaults to 65536
      if the variable is not set. To not change the behavior in upgrades to this
      version, this patch sets ERL_MAX_PORTS to the kernel open file handle
      limit if the variable is not set already. If the variable is set,
      then it's left alone. Note that ERL_MAX_PORTS must never be higher than
      the kernel open file handle limit.
    - In environments where DNS resolution is not yet available at the time
      RabbitMQ nodes boot and try to perform peer discovery, such as CoreDNS
      with default caching interval of 30s on Kubernetes, nodes now will
      retry hostname resolution (including of their own host) several times
      with a wait interval.
    - LDAP server password could end up in the logs in certain types of
      exceptions.
    - Details about these and many futher changes can be found at
      https://github.com/rabbitmq/rabbitmq-server/tree/main/release-notes
    - Added new dep8 tests:
      + d/t/hello-world
      + d/t/publish-subscribe
      + d/t/rpc
      + d/t/work-queue
    - Remove patches fixed upstream:
      + d/p/lp1999816-fix-rabbitmqctl-status-disk-free-timeout.patch

The goal was to put all under the "new upstream version" entry, which is referring to the bug. I would be fine to move "Added new dep8 tests" to the top level again (so it becomes a "*" entry, instead of "-"), as, for SRU purposes, new DEP8 tests don't usually require a bug of their own, and these new dep8 tests are not directly related to the new version.

What do you think?

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Of course launchpad butchered the formatting :/

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

That's fine to me, but the new dep8 tests are not really tied to the upstream release, so IMO it doesn't make sense to be included in the new upstream subsection.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Yep, move them up then (well, left :)

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Have you found a way to test the ERL_MAX_PORTS setting?

Revision history for this message
Andreas Hasenack (ahasenack) :
Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Yes I believe I have found a consistent way to test the max ports setting. Give me a little bit to run through the different scenarios to make sure the results make sense.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

commit 4988372e592750e8cb69a543fa19ac4f7da7467a
Author: mitchdz <email address hidden>
Date: Thu Apr 4 15:14:26 2024 -0700

    remove old patches

This is also not mentioned in d/changelog

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Ah apologies, the "remove old patches" commit was to just make it so I can run `gbp import` as they didn't apply. I added the relevant patches back after refreshing, it's just an artifact of my workflow at the time.

Also with regards to my comment on testing max ports, I wrote this simple script that has been able to open file handles and cause the errors with hitting the limit, but still want to do further testing[0].

[0] - https://github.com/mitchdz/my_scripts/blob/main/rabbitmq-server/simulate_connections.py

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

@ahasenack I updated the d/changelog.

According to [0], just checking the limits file is good enough for verifying the limit. Coming from upstream, I think that should be good enough.

This is easy enough to do by:

# cat /proc/$(pidof beam.smp)/limits | head -n 1 && \
cat /proc/$(pidof beam.smp)/limits | grep "Max open files"
Limit Soft Limit Hard Limit Units
Max open files 1024 1024 files

[0] - https://www.rabbitmq.com/docs/install-debian#verifying-limits

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

> According to [0], just checking the limits file is good enough for verifying the limit. Coming from
> upstream, I think that should be good enough.

I don't think that's the same. The limits are still set by LimitNOFILE, whereas ERL_MAX_PORTS is something different. Or we completely misunderstood these.

For example, with LimitNOFILE=32768, and ERL_MAX_PORTS=8192, I would expect rabbitmq to handle at most 8192 concurrent client connections. How can we verify that? That is the upstream change announced in 3.9.23.

The data in /proc from your comment above will just tell me the LimitNOFILE value. UNLESS rabbit used ERL_MAX_PORTS to then set the NOFILE limit by itself, but that doesn't seem to be the case. I started rabbit with these settings:
LimitNOFILE=32768
Environment="ERL_MAX_PORTS=8192"

And in /proc I get this, from your handy cat command:

Limit Soft Limit Hard Limit Units
Max open files 32768 32768 files

Furthermore, in the rabbit logs, I see:
2024-07-03 16:58:38.753811+00:00 [info] <0.356.0> Memory high watermark set to 390 MiB (409960448 bytes) of 977 MiB (1024901120 bytes) total
2024-07-03 16:58:38.755638+00:00 [info] <0.361.0> Limiting to approx 32671 file handles (29401 sockets)

And those values didn't change from when I had rabbit started with ERL_MAX_PORTS=16384

It looks like ERL_MAX_PORTS is doing nothing...?

Revision history for this message
git-ubuntu bot (git-ubuntu-bot) wrote :

Approvers: mitchdz, paride
Uploaders: mitchdz, paride
MP auto-approved

review: Approve
Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Hi, I’ve been out for a bit for vacation. I’ll dig more into this tomorrow if I’m not sick.

I do agree with your findings Andreas, and I’m thinking a bug report for the upstream docs should be made to address this issue once we find out what’s going on.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

I got more sick unfortunately, but am back now. Picking back up.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Digging into it more, reading the /proc/ values is indeed misleading. That is the system limit for the open file handles, which is different from the ERLANG ports.

To see your active max erlang ports for the rabbitmq process, you should be able to run:

# rabbitmqctl eval 'erlang:system_info(port_limit).'

Which for a system that has the following systemd unit:
[Service]
LimitNOFILE=8192
Environment="ERL_MAX_PORTS=4096"

root@j-vm:~# cat /proc/$(pidof beam.smp)/limits | head -n 1 && \
cat /proc/$(pidof beam.smp)/limits | grep "Max open files"
Limit Soft Limit Hard Limit Units
Max open files 8192 8192 files
root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
4096

I've seen the term ERL_MAX_PORTS used to limit open file handles, and while yes, it will limit open file handles, it is not exclusive to that. The documentation is a little frustrating to navigate, I found the command from [0], and got some useful information about ports at [1].

[0] - https://www.erlang.org/docs/26/man/erl#+Q
[1] - https://www.erlang.org/doc/system/c_port.html

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

I do want to point out the very important line in [0]:

NOTE: The actual maximum chosen may be much larger than the actual Number passed. Currently the runtime system often, but not always, chooses a value that is a power of 2. This might, however, be changed in the future. The actual value chosen can be checked by calling erlang:system_info(port_limit).

Make sure your selected ERL_MAX_PORTS value is a power of 2, or else it will (in my limited testing) round up.

[0] - https://www.erlang.org/docs/26/man/erl#+Q

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

@ahasenack let me know your thoughts on the above command to check ERL_MAX_PORTS, it seems to be working well and is easy to run, so I'm happy with it :)

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

That works, bake it in the test case and we can proceed.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Thanks, I'll go ahead and update the tests and run them.

I also made an upstream PR to add this command to the docs[0].

[0] - https://github.com/rabbitmq/rabbitmq-website/pull/1977

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

I tested a few scenarios with this package and the behavior of the current Jammy setup is adhered to without further user intervention.

Base setup before download:
root@j-vm:~# dpkg -s rabbitmq-server | grep Version:
Version: 3.9.13-1ubuntu0.22.04.2
root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
65536

# testing base setup (no changed user values) after upgrade
root@j-vm:~# apt full-upgrade -y
root@j-vm:~# dpkg -s rabbitmq-server | grep Version:
Version: 3.9.27-0ubuntu0.1~jammy9
root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
65536

## Testing updating the value post upgrade
root@j-vm:~# dpkg -s rabbitmq-server | grep Version:
Version: 3.9.27-0ubuntu0.1~jammy9
root@j-vm:~# systemctl cat rabbitmq-server.service | tail -n 3
[Service]
LimitNOFILE=16384
Environment="ERL_MAX_PORTS=16384"
root@j-vm:~# cat /proc/$(pidof beam.smp)/limits | grep "Max open files"
Max open files 16384 16384 files
root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
16384

## Testing updating the max open file handle limit and ERL_MAX_PORTS to be different values
root@j-vm:~# dpkg -s rabbitmq-server | grep Version:
Version: 3.9.27-0ubuntu0.1~jammy9
root@j-vm:~# systemctl cat rabbitmq-server.service | tail -n 3
[Service]
LimitNOFILE=16384
Environment="ERL_MAX_PORTS=8192"
root@j-vm:~# cat /proc/$(pidof beam.smp)/limits | grep "Max open files"
Max open files 16384 16384 files
root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
8192

## Testing non power of 2 value
root@j-vm:~# systemctl cat rabbitmq-server.service | tail -n 3
[Service]
LimitNOFILE=9000
Environment="ERL_MAX_PORTS=9000"
root@j-vm:~# cat /proc/$(pidof beam.smp)/limits | grep "Max open files"
Max open files 9000 9000 files
root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
16384

This is expected, ERL_MAX_PORTS will round up to the next power of 2.

## Testing an upgrade to newer version, with LimitNOFILE set to higher than default of 64K and no environment variable set.
root@j-vm:~# dpkg -s rabbitmq-server | grep Version:
Version: 3.9.13-1ubuntu0.22.04.2
root@j-vm:~# systemctl cat rabbitmq-server.service | tail -n 3

[Service]
LimitNOFILE=180000
root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
262144
root@j-vm:~# cat /proc/$(pidof beam.smp)/limits | grep "Max open files"
Max open files 180000 180000 files
root@j-vm:~# apt install -y rabbitmq-server
root@j-vm:~# dpkg -s rabbitmq-server | grep Version:
Version: 3.9.27-0ubuntu0.1~jammy9
root@j-vm:~# systemctl cat rabbitmq-server.service | tail -n 3

[Service]
LimitNOFILE=180000
root@j-vm:~# cat /proc/$(pidof beam.smp)/limits | grep "Max open files"
Max open files 180000 180000 files
root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
262144

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Thanks for these

> I tested a few scenarios with this package and the behavior of the current
> Jammy setup is adhered to without further user intervention.
> ## Testing non power of 2 value
> root@j-vm:~# systemctl cat rabbitmq-server.service | tail -n 3
> [Service]
> LimitNOFILE=9000
> Environment="ERL_MAX_PORTS=9000"
> root@j-vm:~# cat /proc/$(pidof beam.smp)/limits | grep "Max open files"
> Max open files 9000 9000 files
> root@j-vm:~# rabbitmqctl eval 'erlang:system_info(port_limit).'
> 16384
>
> This is expected, ERL_MAX_PORTS will round up to the next power of 2.

Isn't this a problematic case for rabbit? ERL_MAX_PORTS is higher than the kernel limit, and at some point rabbit may fail to open more ports, if the count is higher than ulimit.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

I don't think it's necessarily problematic, because I would consider that an incorrectly provisioned system, I mainly did that to highlight that power of 2 aspect is being important.

This is also how the value has been set in the past, so if it has caused critical issues we should have seen a bug report I would imagine.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

ok, shipit!

review: Approve
Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

I made 2 new changes.

1. Fixed test flakiness of the new `rpc` test. This is achieved by adding a simple `sleep 2` inbetween starting the server/client.
2. Added comments in the systemd service file explaining how to use the new variable.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

latest autopkgtest

  - rabbitmq-server/3.9.27-0ubuntu0.1~jammy11
    + ✅ rabbitmq-server on jammy for amd64 @ 18.07.24 00:38:43 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for arm64 @ 18.07.24 00:40:31 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for armhf @ 18.07.24 00:43:53 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for i386 @ 18.07.24 00:38:49 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for ppc64el @ 18.07.24 00:39:57 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for s390x @ 18.07.24 00:39:58 Log️ 🗒️

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

@ahasenack apologies for one last check. Could you please look over the systemd comments and let me know your thoughts? Otherwise this package is good to go :)

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

First pass, more changelog fun. And the test comments from the focal MP probably apply here too, given what we discussed in MM.

review: Needs Fixing
Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Changes included. Rebuilding in PPA now.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote (last edit ):

Changes passed dep8
  - rabbitmq-server/3.9.27-0ubuntu0.1~jammy14
    + ✅ rabbitmq-server on jammy for amd64 @ 22.07.24 12:39:38 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for arm64 @ 22.07.24 14:22:06 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for i386 @ 22.07.24 13:15:34 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for ppc64el @ 22.07.24 12:40:35 Log️ 🗒️
    + ✅ rabbitmq-server on jammy for s390x @ 22.07.24 12:54:15 Log️ 🗒️

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

Actually armhf wasn't included in that report - the runners seem unhappy. I'll retrigger a test now.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

    + ✅ rabbitmq-server on jammy for arm64 @ 22.07.24 14:22:06 Log️ 🗒️

Revision history for this message
Andreas Hasenack (ahasenack) :
Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Like in the focal MP, both cases are an error.

review: Needs Fixing
Revision history for this message
Andreas Hasenack (ahasenack) wrote :

Please also push these new dep8 tests to the oracular package. Not a blocker for this MP here.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

All good up to 7f093c8f3290436b0d32a3f8a3a5ce71606728a6, just missing the d/watch fix (and corresponding entry in d/changelog).

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

d/watch updated, and signing key is added.

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

FWIW, I also suggested the d/watch change to debian - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1077630

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

The two first bullet points below "* Packaging changes needed by this update:" in d/changelog are using 3 spaces instead of 4, like the remaining ones.

review: Needs Fixing
Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

I wish dpkg-buildpackage would warn me about that formatting issue :/

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

fixed indentation.

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

+1 for 6f633b0489132c5b314fb51380d25012bc741f4b

review: Approve
Revision history for this message
git-ubuntu bot (git-ubuntu-bot) wrote :

Approvers: mitchdz, ahasenack, paride
Uploaders: mitchdz, ahasenack, paride
MP auto-approved

review: Approve
Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

This should be rejected in favor of [0], which is exactly this merge, but with one extra commit. I noticed an SRU was about to happen to Jammy, and decided to digest it into this MRE so our users do not need to do another update after this MRE goes through.

[0] - https://code.launchpad.net/~mitchdz/ubuntu/+source/rabbitmq-server/+git/rabbitmq-server/+merge/470751

Revision history for this message
Mitchell Dzurick (mitchdz) wrote :

I'll keep it open for now while MR#470751 gets reviewed.

Unmerged commits

6f633b0... by Mitchell Dzurick

changelog

47ca42b... by Mitchell Dzurick

d/watch: update to find upstream tarball, and verify its signature

d86d233... by Mitchell Dzurick

d/rabbitmq-server.service: add notice about ERL_MAX_PORTS variable

08149c6... by Andreas Hasenack

  * d/p/max-ports-compat.patch: adjust ERL_MAX_PORTS according to the
    kernel file handle limit, as was done before 3.9.23

08f4113... by Mitchell Dzurick

add d/t/{hello-world,publish-subscribe,rpc,work-queue}

596665b... by Mitchell Dzurick

d/p/CVE-2023-46118-{1,2}.patch: fix fuzz

d9db898... by Mitchell Dzurick

add d/p/CVE-2023-46118-{1,2}.patch from previous version

796e3b7... by Mitchell Dzurick

add d/p/downgrade_elixir.patch

elixir was upgraded in the commit
https://github.com/rabbitmq/rabbitmq-server/pull/5811/files

to enable JIT compilation for amd64/arm64 and for general compiler
optimizations. Since this is just for optimizations it should be fine to
downgrade, we just lose the performance benefits this commit was trying to
achieve.

2df2f5e... by Mitchell Dzurick

add d/p/rabbitmq-dist.mk.patch from previous version

e721c9b... by Mitchell Dzurick

add d/p/lets-use-python3-not-python-binary.patch from previous version

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.bazelignore b/.bazelignore
2new file mode 100644
3index 0000000..1d16e9d
4--- /dev/null
5+++ b/.bazelignore
6@@ -0,0 +1 @@
7+/.erlang.mk/
8diff --git a/.bazelrc b/.bazelrc
9index 816e431..a38bf68 100644
10--- a/.bazelrc
11+++ b/.bazelrc
12@@ -1,6 +1,14 @@
13+build --experimental_enable_bzlmod
14+build --registry=https://raw.githubusercontent.com/rabbitmq/bazel-central-registry/dev/
15+
16 build --incompatible_strict_action_env
17 build --local_test_jobs=1
18
19+build --flag_alias=erlang_home=@rules_erlang//:erlang_home
20+build --flag_alias=erlang_version=@rules_erlang//:erlang_version
21+build --flag_alias=elixir_home=//:elixir_home
22+build --flag_alias=test_build=//:enable_test_build
23+
24 build:buildbuddy --bes_results_url=https://app.buildbuddy.io/invocation/
25 build:buildbuddy --bes_backend=grpcs://remote.buildbuddy.io
26 build:buildbuddy --remote_cache=grpcs://remote.buildbuddy.io
27@@ -9,47 +17,40 @@ build:buildbuddy --grpc_keepalive_time=360s
28 build:buildbuddy --grpc_keepalive_timeout=360s
29 build:buildbuddy --remote_download_minimal
30 build:buildbuddy --build_metadata=REPO_URL=https://github.com/rabbitmq/rabbitmq-server.git
31+build:buildbuddy --experimental_remote_cache_compression
32+build:buildbuddy --experimental_remote_cache_async
33+build:buildbuddy --noslim_profile
34+build:buildbuddy --experimental_profile_include_target_label
35+build:buildbuddy --experimental_profile_include_primary_output
36
37 build:rbe --config=buildbuddy
38
39 build:rbe --remote_executor=grpcs://remote.buildbuddy.io
40
41-build:rbe --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
42-build:rbe --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
43-build:rbe --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
44-
45-build:rbe --@bazel-erlang//:erlang_home=/usr/lib/erlang
46-build:rbe --//:elixir_home=/usr/local
47-
48 build:rbe --spawn_strategy=remote
49 build:rbe --test_strategy=""
50-build:rbe --jobs=100
51+build:rbe --jobs=50
52
53-build:rbe-23 --config=rbe
54-build:rbe-23 --host_javabase=@rbe_23//java:jdk
55-build:rbe-23 --javabase=@rbe_23//java:jdk
56-build:rbe-23 --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
57-build:rbe-23 --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
58-build:rbe-23 --crosstool_top=@rbe_23//cc:toolchain
59-build:rbe-23 --extra_toolchains=@rbe_23//config:cc-toolchain
60+build:rbe --crosstool_top=@rbe//cc:toolchain
61+build:rbe --extra_toolchains=@rbe//config:cc-toolchain
62
63-build:rbe-23 --host_platform=@rbe_23//config:platform
64-build:rbe-23 --platforms=@rbe_23//config:platform
65-build:rbe-23 --extra_execution_platforms=@rbe_23//config:platform
66+build:rbe --host_platform=//bazel/platforms:erlang_internal_platform
67
68-build:rbe-23 --@bazel-erlang//:erlang_version=23
69+build:rbe --host_cpu=k8
70+build:rbe --cpu=k8
71
72 build:rbe-24 --config=rbe
73-build:rbe-24 --host_javabase=@rbe_24//java:jdk
74-build:rbe-24 --javabase=@rbe_24//java:jdk
75-build:rbe-24 --crosstool_top=@rbe_24//cc:toolchain
76-build:rbe-24 --extra_toolchains=@rbe_24//config:cc-toolchain
77+build:rbe-24 --platforms=//bazel/platforms:erlang_linux_24_platform
78+
79+build:rbe-25 --config=rbe
80+build:rbe-25 --platforms=//bazel/platforms:erlang_linux_25_1_platform
81
82-build:rbe-24 --host_platform=@rbe_24//config:platform
83-build:rbe-24 --platforms=@rbe_24//config:platform
84-build:rbe-24 --extra_execution_platforms=@rbe_24//config:platform
85+# no-op config so that --config=local does not error
86+build:local --color=auto
87
88-build:rbe-24 --@bazel-erlang//:erlang_version=24
89+# having bzlmod enabled seems to interfere with docker toolchain resolution,
90+# so we set this flag
91+build --@io_bazel_rules_docker//transitions:enable=false
92
93 # Try importing a user specific .bazelrc
94 # You can create your own by copying and editing the template-user.bazelrc template:
95diff --git a/BUILD.bats b/BUILD.bats
96index ed50b3c..1fe48bc 100644
97--- a/BUILD.bats
98+++ b/BUILD.bats
99@@ -1,5 +1,8 @@
100 filegroup(
101 name = "bin_dir",
102- srcs = glob(["bin/**/*", "libexec/**/*"]),
103+ srcs = glob([
104+ "bin/**/*",
105+ "libexec/**/*",
106+ ]),
107 visibility = ["//visibility:public"],
108 )
109diff --git a/BUILD.bazel b/BUILD.bazel
110index 5c3c256..b5c63cc 100644
111--- a/BUILD.bazel
112+++ b/BUILD.bazel
113@@ -1,93 +1,56 @@
114+load(
115+ "@bazel_skylib//rules:common_settings.bzl",
116+ "bool_flag",
117+ "string_flag",
118+)
119 load("@rules_pkg//:pkg.bzl", "pkg_tar")
120-load("@bazel-erlang//:dialyze.bzl", "plt")
121-load("@bazel-erlang//:shell.bzl", "shell")
122-load("elixir_home.bzl", "elixir_home")
123+load("@rules_erlang//:dialyze.bzl", "plt")
124+load("@rules_erlang//:shell.bzl", "shell")
125+load("@rules_erlang//:erl_eval.bzl", "erl_eval")
126+load("//bazel/elixir:iex_eval.bzl", "iex_eval")
127 load(":rabbitmq_home.bzl", "rabbitmq_home")
128 load(":rabbitmq_run.bzl", "rabbitmq_run", "rabbitmq_run_command")
129 load(":rabbitmqctl.bzl", "rabbitmqctl")
130-load(":rabbitmq.bzl", "ALL_PLUGINS", "APP_VERSION")
131-load(":dist.bzl", "collect_licenses", "versioned_rabbitmq_home")
132+load(":dist.bzl", "package_generic_unix", "source_archive")
133+load(":rabbitmq.bzl", "all_plugins")
134
135 exports_files([
136 "scripts/bazel/rabbitmq-run.sh",
137+ "scripts/bazel/rabbitmq-run.bat",
138+ "release-notes",
139 ])
140
141-# This allows us to
142-# `bazel build //my/target \
143-# --//:elixir_home=/path/to/elixir/installation`
144-elixir_home(
145- name = "elixir_home",
146- build_setting_default = "~/.kiex/elixirs/elixir-1.10.4",
147+bool_flag(
148+ name = "enable_test_build",
149+ build_setting_default = False,
150 visibility = ["//visibility:public"],
151 )
152
153-platform(
154- name = "erlang_git_platform",
155- constraint_values = [
156- "@platforms//os:linux",
157- "@platforms//cpu:x86_64",
158- "@bazel_tools//tools/cpp:clang",
159- ],
160- exec_properties = {
161- "OSFamily": "Linux",
162- # linux-erlang-git-master
163- "container-image": "docker://pivotalrabbitmq/rabbitmq-server-buildenv@sha256:5d4fa38f723186668a497a8ee57e22010187e9347add5d4a7cc199dc13f1493f",
164+config_setting(
165+ name = "test_build",
166+ flag_values = {
167+ "//:enable_test_build": "true",
168 },
169 )
170
171+string_flag(
172+ name = "elixir_home",
173+ build_setting_default = "",
174+ visibility = ["//visibility:public"],
175+)
176+
177 plt(
178 name = "base_plt",
179 visibility = ["//visibility:public"],
180 )
181
182-rabbitmq_home(
183- name = "broker-home",
184- plugins = [
185- "//deps/rabbit:bazel_erlang_lib",
186- "//deps/rabbitmq_amqp1_0:bazel_erlang_lib",
187- "//deps/rabbitmq_auth_backend_cache:bazel_erlang_lib",
188- "//deps/rabbitmq_auth_backend_http:bazel_erlang_lib",
189- "//deps/rabbitmq_auth_backend_ldap:bazel_erlang_lib",
190- "//deps/rabbitmq_auth_backend_oauth2:bazel_erlang_lib",
191- "//deps/rabbitmq_auth_mechanism_ssl:bazel_erlang_lib",
192- "//deps/rabbitmq_consistent_hash_exchange:bazel_erlang_lib",
193- "//deps/rabbitmq_event_exchange:bazel_erlang_lib",
194- "//deps/rabbitmq_federation:bazel_erlang_lib",
195- "//deps/rabbitmq_federation_management:bazel_erlang_lib",
196- "//deps/rabbitmq_jms_topic_exchange:bazel_erlang_lib",
197- "//deps/rabbitmq_management:bazel_erlang_lib",
198- "//deps/rabbitmq_mqtt:bazel_erlang_lib",
199- "//deps/rabbitmq_peer_discovery_aws:bazel_erlang_lib",
200- "//deps/rabbitmq_peer_discovery_consul:bazel_erlang_lib",
201- "//deps/rabbitmq_peer_discovery_etcd:bazel_erlang_lib",
202- "//deps/rabbitmq_peer_discovery_k8s:bazel_erlang_lib",
203- "//deps/rabbitmq_prometheus:bazel_erlang_lib",
204- "//deps/rabbitmq_random_exchange:bazel_erlang_lib",
205- "//deps/rabbitmq_recent_history_exchange:bazel_erlang_lib",
206- "//deps/rabbitmq_sharding:bazel_erlang_lib",
207- "//deps/rabbitmq_shovel:bazel_erlang_lib",
208- "//deps/rabbitmq_shovel_management:bazel_erlang_lib",
209- "//deps/rabbitmq_stomp:bazel_erlang_lib",
210- "//deps/rabbitmq_stream:bazel_erlang_lib",
211- "//deps/rabbitmq_stream_management:bazel_erlang_lib",
212- "//deps/rabbitmq_top:bazel_erlang_lib",
213- "//deps/rabbitmq_tracing:bazel_erlang_lib",
214- "//deps/rabbitmq_trust_store:bazel_erlang_lib",
215- "//deps/rabbitmq_web_dispatch:bazel_erlang_lib",
216- "//deps/rabbitmq_web_mqtt:bazel_erlang_lib",
217- "//deps/rabbitmq_web_stomp:bazel_erlang_lib",
218- ],
219+PLUGINS = all_plugins(
220+ rabbitmq_workspace = "",
221 )
222
223 rabbitmq_home(
224- name = "broker-for-cli-tests-home",
225- testonly = True,
226- plugins = [
227- "//deps/rabbit:bazel_erlang_lib",
228- "//deps/rabbitmq_federation:bazel_erlang_lib",
229- "//deps/rabbitmq_stomp:bazel_erlang_lib",
230- "//deps/amqp_client:bazel_erlang_lib",
231- ],
232+ name = "broker-home",
233+ plugins = PLUGINS,
234 )
235
236 rabbitmq_run(
237@@ -96,22 +59,30 @@ rabbitmq_run(
238 visibility = ["//visibility:public"],
239 )
240
241-rabbitmq_run(
242- name = "rabbitmq-for-cli-tests-run",
243- testonly = True,
244- home = ":broker-for-cli-tests-home",
245- visibility = ["//visibility:public"],
246-)
247-
248 # Allow us to `bazel run broker`
249 # for the equivalent of `make run-broker`
250-# (though it as of yet includes no plugins)
251 rabbitmq_run_command(
252 name = "broker",
253 rabbitmq_run = ":rabbitmq-run",
254 subcommand = "run-broker",
255 )
256
257+# Allow us to `bazel run start-cluster`
258+# for the equivalent of `make start-cluster`
259+rabbitmq_run_command(
260+ name = "start-cluster",
261+ rabbitmq_run = ":rabbitmq-run",
262+ subcommand = "start-cluster",
263+)
264+
265+# Allow us to `bazel run stop-cluster`
266+# for the equivalent of `make stop-cluster`
267+rabbitmq_run_command(
268+ name = "stop-cluster",
269+ rabbitmq_run = ":rabbitmq-run",
270+ subcommand = "stop-cluster",
271+)
272+
273 # `bazel run rabbitmqctl`
274 rabbitmqctl(
275 name = "rabbitmqctl",
276@@ -129,13 +100,30 @@ rabbitmqctl(
277 home = ":broker-home",
278 )
279
280+rabbitmqctl(
281+ name = "rabbitmq-streams",
282+ home = ":broker-home",
283+)
284+
285 shell(
286 name = "repl",
287- deps = ALL_PLUGINS,
288+ deps = PLUGINS,
289+)
290+
291+erl_eval(
292+ name = "otp_version",
293+ outs = ["otp_version.txt"],
294+ expression = """{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), file:write_file(os:getenv("OUTS"), Version), halt().""",
295+)
296+
297+iex_eval(
298+ name = "elixir_version",
299+ outs = ["elixir_version.txt"],
300+ expression = """File.write!(System.get_env("OUTS"), System.version()); System.halt()""",
301 )
302
303-collect_licenses(
304- name = "licenses",
305+filegroup(
306+ name = "root-licenses",
307 srcs = glob(
308 ["LICENSE*"],
309 exclude = [
310@@ -143,25 +131,11 @@ collect_licenses(
311 "LICENSE.txt",
312 ],
313 ),
314- deps = ALL_PLUGINS,
315-)
316-
317-versioned_rabbitmq_home(
318- name = "dist-home",
319- plugins = ALL_PLUGINS,
320-)
321-
322-pkg_tar(
323- name = "license-files",
324- srcs = [
325- ":licenses",
326- "//deps/rabbit:INSTALL",
327- ],
328 visibility = ["//visibility:public"],
329 )
330
331 pkg_tar(
332- name = "scripts",
333+ name = "scripts-tar",
334 srcs = [
335 "scripts/bash_autocomplete.sh",
336 "scripts/rabbitmq-script-wrapper",
337@@ -173,7 +147,7 @@ pkg_tar(
338 )
339
340 pkg_tar(
341- name = "release-notes",
342+ name = "release-notes-tar",
343 srcs = glob([
344 "release-notes/*.md",
345 "release-notes/*.txt",
346@@ -182,19 +156,166 @@ pkg_tar(
347 visibility = ["//visibility:public"],
348 )
349
350-pkg_tar(
351- name = "package-generic-unix",
352- srcs = [
353- ":dist-home",
354- ],
355- extension = "tar.xz",
356- package_dir = "rabbitmq_server-{}".format(APP_VERSION),
357- strip_prefix = "dist-home",
358- visibility = ["//visibility:public"],
359- deps = [
360- ":license-files",
361- ":release-notes",
362- ":scripts",
363- "//deps/rabbit:manpages-dir",
364- ],
365+package_generic_unix(
366+ plugins = PLUGINS,
367+ rabbitmq_workspace = "@",
368+)
369+
370+source_archive(
371+ plugins = PLUGINS,
372+ rabbitmq_workspace = "@",
373+)
374+
375+genrule(
376+ name = "test-logs",
377+ outs = ["open-test-logs.sh"],
378+ cmd = """set -euo pipefail
379+cat << 'EOF' > $@
380+#!/bin/bash
381+set -euo pipefail
382+if [ $$# -eq 0 ]; then
383+ echo "Usage: bazel run test-logs TEST_LABEL [shard_index]"
384+ exit 1
385+fi
386+
387+RELATIVE=$${1#//}
388+PACKAGE=$${RELATIVE%%:*}
389+SUITE=$${RELATIVE##*:}
390+OUTPUT_DIR=test.outputs
391+
392+if [ $$# -gt 1 ]; then
393+ OUTPUT_DIR=shard_$$2_of_*/test.outputs
394+fi
395+
396+if [ ! -d "bazel-testlogs/$$PACKAGE/$$SUITE/"$$OUTPUT_DIR ]; then
397+ echo "Test output dir not found, perhaps shard_index needed?"
398+ echo "Usage: bazel run test-logs TEST_LABEL [shard_index]"
399+ exit 1
400+fi
401+
402+cd "bazel-testlogs/$$PACKAGE/$$SUITE/"$$OUTPUT_DIR
403+if [ -f outputs.zip ]; then
404+ unzip -u outputs.zip
405+fi
406+set +e
407+open index.html
408+rc=$$?
409+set -e
410+if [[ $$rc -eq 3 ]]; then
411+ # For xdg-open exit code 3 means "A required tool could not be found." That is, there is no browser.
412+ echo "Open your browser at http://$$(hostname -s):8000/index.html"
413+ python -m http.server 8000
414+fi
415+EOF
416+""",
417+ executable = True,
418+)
419+
420+genrule(
421+ name = "remote-test-logs",
422+ outs = ["open-remote-test-logs.sh"],
423+ cmd = """set -euo pipefail
424+cat << 'EOF' > $@
425+#!/bin/bash
426+set -euo pipefail
427+if [ $$# -eq 0 ]; then
428+ echo "Usage: bazel run remote-test-logs TEST_LABEL [shard_index]"
429+ exit 1
430+fi
431+
432+RELATIVE=$${1#//}
433+PACKAGE=$${RELATIVE%%:*}
434+SUITE=$${RELATIVE##*:}
435+OUTPUT_DIR=test.outputs
436+if [ $$# -gt 1 ]; then
437+ OUTPUT_DIR=shard_$$2_of_*/test.outputs
438+fi
439+
440+TESTLOGS=$$(echo $$(bazel info output_path)/k8-*/testlogs)
441+
442+if [ ! -d "$$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR" ]; then
443+ echo "Test output dir not found, perhaps shard_index needed?"
444+ echo "Usage: bazel run remote-test-logs TEST_LABEL [shard_index]"
445+ exit 1
446+fi
447+
448+cd "$$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR" && unzip -u outputs.zip
449+open index.html
450+EOF
451+""",
452+ executable = True,
453+)
454+
455+genrule(
456+ name = "test-node-data",
457+ outs = ["open-test-node-data.sh"],
458+ cmd = """set -euo pipefail
459+cat << 'EOF' > $@
460+ set -euo pipefail
461+ if [ $$# -eq 0 ]; then
462+ echo "Usage: bazel run test-node-data TEST_LABEL [shard_index]"
463+ exit 1
464+ fi
465+
466+ RELATIVE=$${1#//}
467+ PACKAGE=$${RELATIVE%%:*}
468+ SUITE=$${RELATIVE##*:}
469+ OUTPUT_DIR=test.outputs
470+ if [ $$# -gt 1 ]; then
471+ OUTPUT_DIR=shard_$$2_of_*/test.outputs
472+ fi
473+
474+ if [ ! -d "bazel-testlogs/$$PACKAGE/$$SUITE/"$$OUTPUT_DIR ]; then
475+ echo "Test output dir not found, perhaps shard_index needed?"
476+ echo "Usage: bazel run test-node-data TEST_LABEL [shard_index]"
477+ exit 1
478+ fi
479+
480+ cd bazel-testlogs/$$PACKAGE/$$SUITE/$$OUTPUT_DIR
481+ if [ -f outputs.zip ]; then
482+ unzip -u outputs.zip
483+ fi
484+ open index.html
485+ open ct_run.*/deps.*/run.*/log_private
486+EOF
487+""",
488+ executable = True,
489+)
490+
491+# NOTE: this rule may not work properly if --remote_download_minimal has been used,
492+# which is currently the default for remote runs
493+genrule(
494+ name = "remote-test-node-data",
495+ outs = ["open-remote-test-node-data.sh"],
496+ cmd = """set -euo pipefail
497+cat << 'EOF' > $@
498+ set -euo pipefail
499+ if [ $$# -eq 0 ]; then
500+ echo "Usage: bazel run remote-test-node-data TEST_LABEL [shard_index]"
501+ exit 1
502+ fi
503+
504+ RELATIVE=$${1#//}
505+ PACKAGE=$${RELATIVE%%:*}
506+ SUITE=$${RELATIVE##*:}
507+ OUTPUT_DIR=test.outputs
508+
509+ if [ $$# -gt 1 ]; then
510+ OUTPUT_DIR=shard_$$2_of_*/test.outputs
511+ fi
512+
513+ TESTLOGS=$$(echo $$(bazel info output_path)/k8-*/testlogs)
514+
515+ if [ ! -d $$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR ]; then
516+ echo "Test output dir not found, perhaps shard_index needed?"
517+ echo "Usage: bazel run remote-test-node-data TEST_LABEL [shard_index]"
518+ exit 1
519+ fi
520+
521+ cd $$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR && unzip -u outputs.zip
522+ open index.html
523+ open ct_run.*/deps.*/run.*/log_private
524+EOF
525+""",
526+ executable = True,
527 )
528diff --git a/BUILD.inet_tcp_proxy b/BUILD.inet_tcp_proxy
529index 303e530..eab7e2e 100644
530--- a/BUILD.inet_tcp_proxy
531+++ b/BUILD.inet_tcp_proxy
532@@ -1,8 +1,8 @@
533-load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib")
534+load("@rules_erlang//:erlang_app.bzl", "erlang_app")
535
536-erlang_lib(
537- app_name = "inet_tcp_proxy_dist",
538- app_version = "0.1.0",
539+erlang_app(
540 app_description = "Erlang distribution proxy to simulate network failures",
541 app_module = "inet_tcp_proxy_dist_app",
542+ app_name = "inet_tcp_proxy_dist",
543+ app_version = "0.1.0",
544 )
545diff --git a/BUILD.jose b/BUILD.jose
546new file mode 100644
547index 0000000..9321fd0
548--- /dev/null
549+++ b/BUILD.jose
550@@ -0,0 +1,10 @@
551+load("@rules_erlang//:erlang_app.bzl", "erlang_app")
552+
553+erlang_app(
554+ app_name = "jose",
555+ erlc_opts = [
556+ "+deterministic",
557+ "+debug_info",
558+ ],
559+ stamp = 0,
560+)
561diff --git a/BUILD.osiris b/BUILD.osiris
562new file mode 100644
563index 0000000..7779335
564--- /dev/null
565+++ b/BUILD.osiris
566@@ -0,0 +1,33 @@
567+load("@rules_erlang//:erlang_app.bzl", "erlang_app")
568+
569+NAME = "osiris"
570+
571+VERSION = "0.1.0"
572+
573+APP_ENV = """[
574+ {data_dir, "/tmp/osiris"},
575+ {port_range, {6000, 6500}},
576+ {max_segment_size_chunks, 256000}
577+]"""
578+
579+EXTRA_APPS = [
580+ "sasl",
581+ "crypto",
582+]
583+
584+DEPS = [
585+ "@gen_batch_server//:erlang_app",
586+]
587+
588+RUNTIME_DEPS = [
589+ "@seshat//:erlang_app",
590+]
591+
592+erlang_app(
593+ app_env = APP_ENV,
594+ app_name = NAME,
595+ app_version = VERSION,
596+ extra_apps = EXTRA_APPS,
597+ runtime_deps = RUNTIME_DEPS,
598+ deps = DEPS,
599+)
600diff --git a/BUILD.ranch b/BUILD.ranch
601index 7a89e08..55f02b0 100644
602--- a/BUILD.ranch
603+++ b/BUILD.ranch
604@@ -1,25 +1,17 @@
605-load("@bazel-erlang//:bazel_erlang_lib.bzl", "app_file", "bazel_erlang_lib", "erlc",
606-"DEFAULT_ERLC_OPTS")
607+load("@rules_erlang//:app_file.bzl", "app_file")
608+load("@rules_erlang//:erlang_app_info.bzl", "erlang_app_info")
609+load("@rules_erlang//:erlang_app.bzl", "DEFAULT_ERLC_OPTS")
610+load("@rules_erlang//:erlang_bytecode.bzl", "erlang_bytecode")
611
612-FIRST_SRCS = [
613- "src/ranch_transport.erl",
614-]
615-
616-erlc(
617- name = "first_beam_files",
618- hdrs = glob(["include/**/*.hrl", "src/**/*.hrl"]),
619- srcs = glob(FIRST_SRCS),
620- erlc_opts = DEFAULT_ERLC_OPTS,
621- dest = "ebin",
622-)
623-
624-erlc(
625+erlang_bytecode(
626 name = "beam_files",
627- hdrs = glob(["include/**/*.hrl", "src/**/*.hrl"]),
628- srcs = glob(["src/**/*.erl"], exclude = FIRST_SRCS),
629- beam = [":first_beam_files"],
630- erlc_opts = DEFAULT_ERLC_OPTS,
631+ srcs = glob(["src/**/*.erl"]),
632+ hdrs = glob([
633+ "include/**/*.hrl",
634+ "src/**/*.hrl",
635+ ]),
636 dest = "ebin",
637+ erlc_opts = DEFAULT_ERLC_OPTS,
638 )
639
640 genrule(
641@@ -33,14 +25,17 @@ app_file(
642 name = "app_file",
643 app_name = "ranch",
644 app_version = "2.1.0",
645- modules = [":first_beam_files", ":beam_files"],
646+ modules = [":beam_files"],
647 )
648
649-bazel_erlang_lib(
650- name = "bazel_erlang_lib",
651- app_name = "ranch",
652- app = ":app_file",
653+erlang_app_info(
654+ name = "erlang_app",
655 hdrs = glob(["include/**/*.hrl"]),
656- beam = [":first_beam_files", ":beam_files", ":appup"],
657+ app = ":app_file",
658+ app_name = "ranch",
659+ beam = [
660+ ":beam_files",
661+ ":appup",
662+ ],
663 visibility = ["//visibility:public"],
664 )
665diff --git a/BUILD.trust_store_http b/BUILD.trust_store_http
666deleted file mode 100644
667index 9fceaaf..0000000
668--- a/BUILD.trust_store_http
669+++ /dev/null
670@@ -1,15 +0,0 @@
671-load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib")
672-
673-erlang_lib(
674- app_name = "trust_store_http",
675- app_description = "Trust store HTTP server",
676- app_module = "trust_store_http_app",
677- app_version = "1.0.0",
678- extra_apps = [
679- "ssl",
680- ],
681- deps = [
682- "@cowboy//:bazel_erlang_lib",
683- "@jsx//:bazel_erlang_lib",
684- ],
685-)
686diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
687index 2e32d5f..d490c90 100644
688--- a/CONTRIBUTING.md
689+++ b/CONTRIBUTING.md
690@@ -10,7 +10,7 @@ The process is fairly standard:
691 * Fork the repository or repositories you plan on contributing to
692 * Run `make`
693 * Create a branch with a descriptive name in the relevant repositories
694- * Make your changes, run tests, commit with a [descriptive message](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html), push to your fork
695+ * Make your changes, run tests, ensure correct code formatting, commit with a [descriptive message](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html), push to your fork
696 * Submit pull requests with an explanation what has been changed and **why**
697 * Submit a filled out and signed [Contributor Agreement](https://github.com/rabbitmq/ca#how-to-submit) if needed (see below)
698 * Be patient. We will get to your pull request eventually
699@@ -43,6 +43,21 @@ make ct-cluster_rename t=cluster_size_3:partial_one_by_one
700
701 Test output is in the `logs/` subdirectory.
702
703+## Formatting the RabbitMQ CLI
704+
705+The RabbitMQ CLI uses the standard [Elixir code formatter](https://hexdocs.pm/mix/main/Mix.Tasks.Format.html). To ensure correct code formatting of the CLI:
706+
707+```
708+cd deps/rabbitmq_cli
709+mix format
710+```
711+
712+Running `make` will validate the CLI formatting and issue any necessary warnings. Alternatively, run the format checker in the `deps/rabbitmq_cli` directory:
713+
714+```
715+mix format --check-formatted
716+```
717+
718 ## Code of Conduct
719
720 See [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
721diff --git a/MODULE.bazel b/MODULE.bazel
722new file mode 100644
723index 0000000..e499ef0
724--- /dev/null
725+++ b/MODULE.bazel
726@@ -0,0 +1,420 @@
727+module(
728+ name = "rabbitmq-server",
729+ version = "3.9.25",
730+)
731+
732+bazel_dep(
733+ name = "rules_pkg",
734+ version = "0.5.1",
735+)
736+
737+bazel_dep(
738+ name = "bazel_skylib",
739+ version = "1.2.0",
740+)
741+
742+bazel_dep(
743+ name = "platforms",
744+ version = "0.0.5",
745+)
746+
747+bazel_dep(
748+ name = "rules_cc",
749+ version = "0.0.2",
750+)
751+
752+bazel_dep(
753+ name = "rules_erlang",
754+ version = "3.8.3",
755+)
756+
757+erlang_config = use_extension(
758+ "@rules_erlang//bzlmod:extensions.bzl",
759+ "erlang_config",
760+)
761+
762+erlang_config.internal_erlang_from_github_release(
763+ name = "24",
764+ sha256 = "8444ff9abe23aea268adbb95463561fc222c965052d35d7c950b17be01c3ad82",
765+ version = "24.3.4.6",
766+)
767+
768+erlang_config.internal_erlang_from_github_release(
769+ name = "25_0",
770+ sha256 = "8fc707f92a124b2aeb0f65dcf9ac8e27b2a305e7bcc4cc1b2fdf770eec0165bf",
771+ version = "25.0.4",
772+)
773+
774+erlang_config.internal_erlang_from_github_release(
775+ name = "25_1",
776+ sha256 = "42840c32e13a27bdb2c376d69aa22466513d441bfe5eb882de23baf8218308d3",
777+ version = "25.1.1",
778+)
779+
780+erlang_config.internal_erlang_from_http_archive(
781+ name = "git_master",
782+ strip_prefix = "otp-master",
783+ url = "https://github.com/erlang/otp/archive/refs/heads/master.tar.gz",
784+ version = "master",
785+)
786+
787+use_repo(
788+ erlang_config,
789+ "erlang_config",
790+)
791+
792+elixir_config = use_extension(
793+ "//bazel/bzlmod:extensions.bzl",
794+ "elixir_config",
795+)
796+
797+elixir_config.internal_elixir_from_github_release(
798+ name = "1_13",
799+ sha256 = "95daf2dd3052e6ca7d4d849457eaaba09de52d65ca38d6933c65bc1cdf6b8579",
800+ version = "1.13.4",
801+)
802+elixir_config.internal_elixir_from_github_release(
803+ name = "1_14",
804+ sha256 = "8ad537eb84471c24c3e6984c37884f06a7834ff2efd72c436c222baee8df9a11",
805+ version = "1.14.1",
806+)
807+
808+use_repo(
809+ elixir_config,
810+ "elixir_config",
811+)
812+
813+register_toolchains(
814+ "@erlang_config//24:toolchain",
815+ "@erlang_config//24:toolchain2",
816+ "@erlang_config//25_0:toolchain",
817+ "@erlang_config//25_0:toolchain2",
818+ "@erlang_config//25_1:toolchain",
819+ "@erlang_config//25_1:toolchain2",
820+ "@erlang_config//git_master:toolchain",
821+ "@erlang_config//git_master:toolchain2",
822+ "@elixir_config//external:toolchain",
823+ "@elixir_config//1_13:toolchain",
824+ "@elixir_config//1_14:toolchain",
825+)
826+
827+erlang_package = use_extension(
828+ "@rules_erlang//bzlmod:extensions.bzl",
829+ "erlang_package",
830+)
831+
832+erlang_package.hex_package(
833+ name = "accept",
834+ version = "0.3.5",
835+ sha256 = "11b18c220bcc2eab63b5470c038ef10eb6783bcb1fcdb11aa4137defa5ac1bb8",
836+)
837+
838+erlang_package.hex_package(
839+ name = "aten",
840+ version = "0.5.8",
841+ sha256 = "64d40a8cf0ddfea4e13af00b7327f0925147f83612d0627d9506cbffe90c13ef",
842+)
843+
844+erlang_package.hex_package(
845+ name = "base64url",
846+ version = "1.0.1",
847+ sha256 = "f9b3add4731a02a9b0410398b475b33e7566a695365237a6bdee1bb447719f5c",
848+)
849+
850+erlang_package.hex_package(
851+ name = "cowboy",
852+ version = "2.8.0",
853+ sha256 = "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a",
854+)
855+
856+erlang_package.hex_package(
857+ name = "cowlib",
858+ version = "2.9.1",
859+ sha256 = "e4175dc240a70d996156160891e1c62238ede1729e45740bdd38064dad476170",
860+)
861+
862+erlang_package.hex_package(
863+ name = "credentials_obfuscation",
864+ version = "3.1.0",
865+ sha256 = "04884e62b1c6cdfba999d4d6b3e99bc0a59d5e439517bc5c01767255afb7b778",
866+)
867+
868+erlang_package.git_package(
869+ repository = "extend/ct_helper",
870+ branch = "master",
871+)
872+
873+erlang_package.hex_package(
874+ name = "cuttlefish",
875+ version = "3.0.1",
876+ sha256 = "3feff3ae4ed1f0ca6df87ac89235068fbee9242ee85d2ac17fb1b8ce0e30f1a6",
877+)
878+
879+erlang_package.hex_package(
880+ name = "eetcd",
881+ version = "0.3.6",
882+ sha256 = "66493bfd6698c1b6baa49679034c3def071ff329961ca1aa7b1dee061c2809af",
883+ build_file_content = """load("@rules_erlang//:erlang_app.bzl", "erlang_app")
884+
885+erlang_app(
886+ app_name = "eetcd",
887+ erlc_opts = [
888+ "+deterministic",
889+ "+debug_info",
890+ ],
891+ runtime_deps = [
892+ "@gun//:erlang_app",
893+ ],
894+)
895+""",
896+)
897+
898+erlang_package.git_package(
899+ name = "emqtt",
900+ repository = "emqx/emqtt",
901+ tag = "1.7.0-rc.2",
902+ build_file_content = """load("@rules_erlang//:erlang_app.bzl", "erlang_app")
903+
904+erlang_app(
905+ app_name = "emqtt",
906+ erlc_opts = [
907+ "+deterministic",
908+ "+debug_info",
909+ "-DBUILD_WITHOUT_QUIC",
910+ ],
911+)
912+""",
913+)
914+
915+erlang_package.hex_package(
916+ name = "enough",
917+ version = "0.1.0",
918+ sha256 = "0460c7abda5f5e0ea592b12bc6976b8a5c4b96e42f332059cd396525374bf9a1",
919+)
920+
921+erlang_package.hex_package(
922+ name = "gen_batch_server",
923+ version = "0.8.7",
924+ sha256 = "94a49a528486298b009d2a1b452132c0a0d68b3e89d17d3764cb1ec879b7557a",
925+)
926+
927+erlang_package.hex_package(
928+ name = "gun",
929+ version = "1.3.3",
930+ sha256 = "3106ce167f9c9723f849e4fb54ea4a4d814e3996ae243a1c828b256e749041e0",
931+)
932+
933+erlang_package.git_package(
934+ name = "inet_tcp_proxy_dist",
935+ repository = "rabbitmq/inet_tcp_proxy",
936+ branch = "master",
937+)
938+
939+erlang_package.git_package(
940+ name = "jose",
941+ repository = "potatosalad/erlang-jose",
942+ commit = "2b1d66b5f4fbe33cb198149a8cb23895a2c877ea",
943+)
944+
945+erlang_package.hex_package(
946+ name = "jsx",
947+ version = "3.1.0",
948+ sha256 = "0c5cc8fdc11b53cc25cf65ac6705ad39e54ecc56d1c22e4adb8f5a53fb9427f3",
949+)
950+
951+erlang_package.git_package(
952+ repository = "eproxus/meck",
953+ branch = "master",
954+)
955+
956+erlang_package.hex_package(
957+ name = "observer_cli",
958+ version = "1.7.3",
959+ sha256 = "a41b6d3e11a3444e063e09cc225f7f3e631ce14019e5fbcaebfda89b1bd788ea",
960+)
961+
962+erlang_package.git_package(
963+ repository = "rabbitmq/osiris",
964+ tag = "v1.2.6",
965+ patch_cmds = ["""sed -i"_orig" -E 's/ct_sharded\\.bzl/ct.bzl/' BUILD.bazel
966+"""],
967+)
968+
969+erlang_package.hex_package(
970+ name = "prometheus",
971+ version = "4.9.1",
972+ sha256 = "d75e80d7b2c1be6bf296e211e806e939ae3d9e0428f45b4caad1817f028213d3",
973+ build_file_content = """load("@rules_erlang//:erlang_app.bzl", "erlang_app")
974+
975+erlang_app(
976+ app_name = "prometheus",
977+ erlc_opts = [
978+ "+deterministic",
979+ "+debug_info",
980+ ],
981+ deps = [
982+ "@quantile_estimator//:erlang_app",
983+ ],
984+)
985+""",
986+)
987+
988+erlang_package.git_package(
989+ repository = "manopapad/proper",
990+ branch = "master",
991+)
992+
993+erlang_package.hex_package(
994+ name = "quantile_estimator",
995+ version = "0.2.1",
996+ sha256 = "282a8a323ca2a845c9e6f787d166348f776c1d4a41ede63046d72d422e3da946",
997+)
998+
999+erlang_package.git_package(
1000+ repository = "rabbitmq/ra",
1001+ tag = "v2.0.13",
1002+ patch_cmds = ["""sed -i"_orig" -E 's/erlc/erlang_bytecode/g' ra.bzl
1003+"""],
1004+ build_file_content = """load("@rules_erlang//:erlang_app.bzl", "erlang_app")
1005+
1006+NAME = "ra"
1007+
1008+EXTRA_APPS = [
1009+ "sasl",
1010+ "crypto",
1011+]
1012+
1013+DEPS = [
1014+ "@gen_batch_server//:erlang_app",
1015+]
1016+
1017+RUNTIME_DEPS = [
1018+ "@aten//:erlang_app",
1019+]
1020+
1021+erlang_app(
1022+ app_name = NAME,
1023+ extra_apps = EXTRA_APPS,
1024+ runtime_deps = RUNTIME_DEPS,
1025+ deps = DEPS,
1026+)
1027+""",
1028+)
1029+
1030+erlang_package.hex_package(
1031+ name = "ranch",
1032+ version = "2.1.0",
1033+ sha256 = "244ee3fa2a6175270d8e1fc59024fd9dbc76294a321057de8f803b1479e76916",
1034+)
1035+
1036+erlang_package.hex_package(
1037+ name = "recon",
1038+ version = "2.5.2",
1039+ sha256 = "2c7523c8dee91dff41f6b3d63cba2bd49eb6d2fe5bf1eec0df7f87eb5e230e1c",
1040+)
1041+
1042+erlang_package.hex_package(
1043+ name = "redbug",
1044+ version = "2.0.7",
1045+ sha256 = "3624feb7a4b78fd9ae0e66cc3158fe7422770ad6987a1ebf8df4d3303b1c4b0c",
1046+)
1047+
1048+erlang_package.git_package(
1049+ repository = "rabbitmq/seshat",
1050+ tag = "0.1.0",
1051+)
1052+
1053+erlang_package.hex_package(
1054+ name = "stdout_formatter",
1055+ version = "0.2.4",
1056+ sha256 = "51f1df921b0477275ea712763042155dbc74acc75d9648dbd54985c45c913b29",
1057+)
1058+
1059+erlang_package.git_package(
1060+ repository = "schlagert/syslog",
1061+ tag = "4.0.0",
1062+)
1063+
1064+erlang_package.hex_package(
1065+ name = "sysmon_handler",
1066+ version = "1.3.0",
1067+ sha256 = "922cf0dd558b9fdb1326168373315b52ed6a790ba943f6dcbd9ee22a74cebdef",
1068+)
1069+
1070+erlang_package.hex_package(
1071+ name = "systemd",
1072+ version = "0.6.1",
1073+ sha256 = "8ec5ed610a5507071cdb7423e663e2452a747a624bb8a58582acd9491ccad233",
1074+ build_file_content = """load("@rules_erlang//:erlang_app.bzl", "erlang_app")
1075+
1076+erlang_app(
1077+ app_name = "systemd",
1078+ erlc_opts = [
1079+ "+deterministic",
1080+ "+debug_info",
1081+ ],
1082+ deps = [
1083+ "@enough//:erlang_app",
1084+ ],
1085+)
1086+""",
1087+)
1088+
1089+use_repo(
1090+ erlang_package,
1091+ "accept",
1092+ "aten",
1093+ "base64url",
1094+ "cowboy",
1095+ "cowlib",
1096+ "credentials_obfuscation",
1097+ "ct_helper",
1098+ "cuttlefish",
1099+ "eetcd",
1100+ "emqtt",
1101+ "gen_batch_server",
1102+ "gun",
1103+ "inet_tcp_proxy_dist",
1104+ "jose",
1105+ "jsx",
1106+ "meck",
1107+ "observer_cli",
1108+ "osiris",
1109+ "prometheus",
1110+ "proper",
1111+ "ra",
1112+ "ranch",
1113+ "recon",
1114+ "redbug",
1115+ "seshat",
1116+ "stdout_formatter",
1117+ "syslog",
1118+ "sysmon_handler",
1119+ "systemd",
1120+)
1121+
1122+rbe = use_extension(
1123+ "//bazel/bzlmod:extensions.bzl",
1124+ "rbe",
1125+)
1126+
1127+rbe.git_repository(
1128+ remote = "https://github.com/rabbitmq/rbe-erlang-platform.git",
1129+ branch = "linux-rbe",
1130+)
1131+
1132+use_repo(
1133+ rbe,
1134+ "rbe",
1135+)
1136+
1137+secondary_umbrella = use_extension(
1138+ "//bazel/bzlmod:extensions.bzl",
1139+ "secondary_umbrella",
1140+ dev_dependency = True,
1141+)
1142+
1143+use_repo(
1144+ secondary_umbrella,
1145+ "rabbitmq-server-generic-unix-3.8",
1146+)
1147diff --git a/Makefile b/Makefile
1148index a381433..2a480c6 100644
1149--- a/Makefile
1150+++ b/Makefile
1151@@ -29,11 +29,24 @@ DEP_PLUGINS = rabbit_common/mk/rabbitmq-dist.mk \
1152
1153 DISABLE_DISTCLEAN = 1
1154
1155-# FIXME: Use erlang.mk patched for RabbitMQ, while waiting for PRs to be
1156-# reviewed and merged.
1157-
1158-ERLANG_MK_REPO = https://github.com/rabbitmq/erlang.mk.git
1159-ERLANG_MK_COMMIT = rabbitmq-tmp
1160+XREF_SCOPE = app deps
1161+
1162+# We add all the applications that are in non-standard paths
1163+# so they are included in the analyses as well.
1164+XREF_EXTRA_APP_DIRS = $(filter-out deps/rabbitmq_cli/_build/dev/lib/rabbit_common/,$(wildcard deps/rabbitmq_cli/_build/dev/lib/*/)) deps/rabbit/apps/rabbitmq_prelaunch/
1165+
1166+# For Elixir protocols the right fix is to include the consolidated/
1167+# folders in addition to ebin/. However this creates conflicts because
1168+# some modules are duplicated. So instead we ignore warnings from
1169+# protocols directly.
1170+XREF_IGNORE = [ \
1171+ {'Elixir.CSV.Encode',impl_for,1}, \
1172+ {'Elixir.JSON.Decoder',impl_for,1}, \
1173+ {'Elixir.JSON.Encoder',impl_for,1}, \
1174+ {'Elixir.RabbitMQ.CLI.Core.DataCoercion',impl_for,1}]
1175+
1176+# Include Elixir libraries in the Xref checks.
1177+xref: ERL_LIBS := $(ERL_LIBS):$(CURDIR)/apps:$(CURDIR)/deps:$(dir $(shell elixir --eval ":io.format '~s~n', [:code.lib_dir :elixir ]"))
1178
1179 ifneq ($(wildcard deps/.hex/cache.erl),)
1180 deps:: restore-hex-cache-ets-file
1181diff --git a/README.md b/README.md
1182index b4bdb26..7844a21 100644
1183--- a/README.md
1184+++ b/README.md
1185@@ -2,7 +2,8 @@
1186
1187 # RabbitMQ Server
1188
1189-[RabbitMQ](https://rabbitmq.com) is a [feature rich](https://rabbitmq.com/documentation.html), multi-protocol messaging broker. It supports:
1190+[RabbitMQ](https://rabbitmq.com) is a [feature rich](https://rabbitmq.com/documentation.html),
1191+multi-protocol messaging and streaming broker. It supports:
1192
1193 * AMQP 0-9-1
1194 * AMQP 1.0
1195@@ -13,14 +14,14 @@
1196 ## Installation
1197
1198 * [Installation guides](https://rabbitmq.com/download.html) for various platforms
1199- * [Kubernetes Cluster Operator](https://www.rabbitmq.com/kubernetes/operator/operator-overview.html)
1200+ * [Kubernetes Cluster Operator](https://rabbitmq.com/kubernetes/operator/operator-overview.html)
1201 * [Changelog](https://www.rabbitmq.com/changelog.html)
1202 * [Releases](https://github.com/rabbitmq/rabbitmq-server/releases) on GitHub
1203- * [Supported and unsupported series](https://www.rabbitmq.com/versions.html)
1204+ * [Currently supported released series](https://www.rabbitmq.com/versions.html)
1205 * [Supported Erlang versions](https://www.rabbitmq.com/which-erlang.html)
1206
1207
1208-## Tutorials & Documentation
1209+## Tutorials and Documentation
1210
1211 * [RabbitMQ tutorials](https://rabbitmq.com/getstarted.html)
1212 * [All documentation guides](https://rabbitmq.com/documentation.html)
1213@@ -32,15 +33,19 @@ Some key doc guides include
1214 * [Configuration guide](https://rabbitmq.com/configure.html)
1215 * [Client libraries and tools](https://rabbitmq.com/devtools.html)
1216 * [Monitoring](https://rabbitmq.com/monitoring.html) and [Prometheus/Grafana](https://www.rabbitmq.com/prometheus.html) guides
1217+ * [Kubernetes Cluster Operator](https://rabbitmq.com/kubernetes/operator/operator-overview.html)
1218 * [Production checklist](https://rabbitmq.com/production-checklist.html)
1219 * [Quorum queues](https://rabbitmq.com/quorum-queues.html): a replicated, data safety- and consistency-oriented queue type
1220+ * [Streams](https://rabbitmq.com/streams.html): a persistent and replicated append-only log with non-destructive consumer semantics
1221 * [Runnable tutorials](https://github.com/rabbitmq/rabbitmq-tutorials/)
1222- * [Documentation source](https://github.com/rabbitmq/rabbitmq-website/)
1223
1224+RabbitMQ documentation is also [developed on GitHub](https://github.com/rabbitmq/rabbitmq-website/).
1225
1226-## Commercial Support
1227+## Commercial Features and Support
1228
1229-* [Commercial support](https://rabbitmq.com/services.html) from [VMware](https://vmware.com) for open source RabbitMQ
1230+ * [Commercial edition of RabbitMQ](https://tanzu.vmware.com/rabbitmq)
1231+ * [Commercial edition for Kubernetes](https://rabbitmq.com/kubernetes/tanzu/installation.html)
1232+ * [Commercial support](https://rabbitmq.com/services.html) from [VMware](https://vmware.com) for open source RabbitMQ
1233
1234 ## Getting Help from the Community
1235
1236@@ -70,4 +75,4 @@ RabbitMQ server is [licensed under the MPL 2.0](LICENSE-MPL-RabbitMQ).
1237
1238 ## Copyright
1239
1240-(c) 2007-2021 VMware, Inc. or its affiliates.
1241+(c) 2007-2022 VMware, Inc. or its affiliates.
1242diff --git a/WORKSPACE b/WORKSPACE
1243new file mode 100644
1244index 0000000..da290c5
1245--- /dev/null
1246+++ b/WORKSPACE
1247@@ -0,0 +1,197 @@
1248+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
1249+
1250+http_archive(
1251+ name = "bazel_skylib",
1252+ sha256 = "af87959afe497dc8dfd4c6cb66e1279cb98ccc84284619ebfec27d9c09a903de",
1253+ urls = [
1254+ "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.0/bazel-skylib-1.2.0.tar.gz",
1255+ "https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.0/bazel-skylib-1.2.0.tar.gz",
1256+ ],
1257+)
1258+
1259+load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
1260+
1261+bazel_skylib_workspace()
1262+
1263+http_archive(
1264+ name = "rules_pkg",
1265+ sha256 = "a89e203d3cf264e564fcb96b6e06dd70bc0557356eb48400ce4b5d97c2c3720d",
1266+ urls = [
1267+ "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.5.1/rules_pkg-0.5.1.tar.gz",
1268+ "https://github.com/bazelbuild/rules_pkg/releases/download/0.5.1/rules_pkg-0.5.1.tar.gz",
1269+ ],
1270+)
1271+
1272+load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
1273+
1274+rules_pkg_dependencies()
1275+
1276+http_archive(
1277+ name = "io_bazel_rules_docker",
1278+ sha256 = "b1e80761a8a8243d03ebca8845e9cc1ba6c82ce7c5179ce2b295cd36f7e394bf",
1279+ urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.25.0/rules_docker-v0.25.0.tar.gz"],
1280+)
1281+
1282+load(
1283+ "@io_bazel_rules_docker//repositories:repositories.bzl",
1284+ container_repositories = "repositories",
1285+)
1286+
1287+container_repositories()
1288+
1289+load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps")
1290+
1291+container_deps()
1292+
1293+load(
1294+ "@io_bazel_rules_docker//container:container.bzl",
1295+ "container_pull",
1296+)
1297+
1298+container_pull(
1299+ name = "ubuntu2004",
1300+ registry = "index.docker.io",
1301+ repository = "pivotalrabbitmq/ubuntu",
1302+ tag = "20.04",
1303+)
1304+
1305+http_file(
1306+ name = "openssl-1.1.1g",
1307+ downloaded_file_path = "openssl-1.1.1g.tar.gz",
1308+ sha256 = "ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46",
1309+ urls = ["https://www.openssl.org/source/openssl-1.1.1g.tar.gz"],
1310+)
1311+
1312+http_file(
1313+ name = "otp_src_24",
1314+ downloaded_file_path = "OTP-24.3.4.6.tar.gz",
1315+ sha256 = "dc3d2c54eeb093e0dc9a0fe493bc69d6dfac0affbe77c9e3c935aa86c0f63cd5",
1316+ urls = ["https://github.com/erlang/otp/archive/OTP-24.3.4.6.tar.gz"],
1317+)
1318+
1319+http_file(
1320+ name = "otp_src_25_0",
1321+ downloaded_file_path = "OTP-25.0.4.tar.gz",
1322+ sha256 = "05878cb51a64b33c86836b12a21903075c300409b609ad5e941ddb0feb8c2120",
1323+ urls = ["https://github.com/erlang/otp/archive/OTP-25.0.4.tar.gz"],
1324+)
1325+
1326+http_file(
1327+ name = "otp_src_25_1",
1328+ downloaded_file_path = "OTP-25.1.1.tar.gz",
1329+ sha256 = "3348616450868fa8b39bddf0b528030e4525afef5b30e3a4b54c375add7d3f4f",
1330+ urls = ["https://github.com/erlang/otp/archive/OTP-25.1.1.tar.gz"],
1331+)
1332+
1333+http_archive(
1334+ name = "io_buildbuddy_buildbuddy_toolchain",
1335+ sha256 = "a2a5cccec251211e2221b1587af2ce43c36d32a42f5d881737db3b546a536510",
1336+ strip_prefix = "buildbuddy-toolchain-829c8a574f706de5c96c54ca310f139f4acda7dd",
1337+ urls = ["https://github.com/buildbuddy-io/buildbuddy-toolchain/archive/829c8a574f706de5c96c54ca310f139f4acda7dd.tar.gz"],
1338+)
1339+
1340+load("@io_buildbuddy_buildbuddy_toolchain//:deps.bzl", "buildbuddy_deps")
1341+
1342+buildbuddy_deps()
1343+
1344+load("@io_buildbuddy_buildbuddy_toolchain//:rules.bzl", "buildbuddy")
1345+
1346+buildbuddy(
1347+ name = "buildbuddy_toolchain",
1348+ llvm = True,
1349+)
1350+
1351+load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
1352+
1353+git_repository(
1354+ name = "rbe",
1355+ branch = "linux-rbe",
1356+ remote = "https://github.com/rabbitmq/rbe-erlang-platform.git",
1357+)
1358+
1359+git_repository(
1360+ name = "rules_erlang",
1361+ remote = "https://github.com/rabbitmq/rules_erlang.git",
1362+ tag = "3.7.2",
1363+)
1364+
1365+load(
1366+ "@rules_erlang//:rules_erlang.bzl",
1367+ "erlang_config",
1368+ "internal_erlang_from_github_release",
1369+ "internal_erlang_from_http_archive",
1370+ "rules_erlang_dependencies",
1371+)
1372+
1373+erlang_config(
1374+ internal_erlang_configs = [
1375+ internal_erlang_from_github_release(
1376+ name = "24",
1377+ sha256 = "8444ff9abe23aea268adbb95463561fc222c965052d35d7c950b17be01c3ad82",
1378+ version = "24.3.4.6",
1379+ ),
1380+ internal_erlang_from_github_release(
1381+ name = "25_0",
1382+ sha256 = "8fc707f92a124b2aeb0f65dcf9ac8e27b2a305e7bcc4cc1b2fdf770eec0165bf",
1383+ version = "25.0.4",
1384+ ),
1385+ internal_erlang_from_github_release(
1386+ name = "25_1",
1387+ sha256 = "42840c32e13a27bdb2c376d69aa22466513d441bfe5eb882de23baf8218308d3",
1388+ version = "25.1.1",
1389+ ),
1390+ internal_erlang_from_http_archive(
1391+ name = "git_master",
1392+ strip_prefix = "otp-master",
1393+ url = "https://github.com/erlang/otp/archive/refs/heads/master.tar.gz",
1394+ version = "master",
1395+ ),
1396+ ],
1397+)
1398+
1399+rules_erlang_dependencies()
1400+
1401+load("@erlang_config//:defaults.bzl", "register_defaults")
1402+
1403+register_defaults()
1404+
1405+load(
1406+ "//bazel/elixir:elixir.bzl",
1407+ "elixir_config",
1408+ "internal_elixir_from_github_release",
1409+)
1410+
1411+elixir_config(
1412+ internal_elixir_configs = [
1413+ internal_elixir_from_github_release(
1414+ name = "1_13",
1415+ sha256 = "95daf2dd3052e6ca7d4d849457eaaba09de52d65ca38d6933c65bc1cdf6b8579",
1416+ version = "1.13.4",
1417+ ),
1418+ internal_elixir_from_github_release(
1419+ name = "1_14",
1420+ sha256 = "8ad537eb84471c24c3e6984c37884f06a7834ff2efd72c436c222baee8df9a11",
1421+ version = "1.14.1",
1422+ ),
1423+ ],
1424+ rabbitmq_server_workspace = "@",
1425+)
1426+
1427+load(
1428+ "@elixir_config//:defaults.bzl",
1429+ register_elixir_defaults = "register_defaults",
1430+)
1431+
1432+register_elixir_defaults()
1433+
1434+load("//:workspace_helpers.bzl", "rabbitmq_external_deps")
1435+
1436+rabbitmq_external_deps(rabbitmq_workspace = "@")
1437+
1438+load("//deps/amqp10_client:activemq.bzl", "activemq_archive")
1439+
1440+activemq_archive()
1441+
1442+load("//bazel/bzlmod:secondary_umbrella.bzl", "secondary_umbrella")
1443+
1444+secondary_umbrella()
1445diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel
1446deleted file mode 100644
1447index 6c8bbf1..0000000
1448--- a/WORKSPACE.bazel
1449+++ /dev/null
1450@@ -1,108 +0,0 @@
1451-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
1452-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
1453-
1454-http_archive(
1455- name = "rules_pkg",
1456- sha256 = "038f1caa773a7e35b3663865ffb003169c6a71dc995e39bf4815792f385d837d",
1457- urls = [
1458- "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz",
1459- "https://github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz",
1460- ],
1461-)
1462-
1463-load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
1464-
1465-rules_pkg_dependencies()
1466-
1467-http_archive(
1468- name = "io_buildbuddy_buildbuddy_toolchain",
1469- sha256 = "48546946879b1fd2dcba327ba15776c822f2ce9a9ef1077be9bf3ecadcc1564a",
1470- strip_prefix = "buildbuddy-toolchain-b2f5e7e3b126c6d7cf243227147478c0959bfc95",
1471- urls = ["https://github.com/buildbuddy-io/buildbuddy-toolchain/archive/b2f5e7e3b126c6d7cf243227147478c0959bfc95.zip"],
1472-)
1473-
1474-load("@io_buildbuddy_buildbuddy_toolchain//:deps.bzl", "buildbuddy_deps")
1475-
1476-buildbuddy_deps()
1477-
1478-load("@io_buildbuddy_buildbuddy_toolchain//:rules.bzl", "buildbuddy")
1479-
1480-buildbuddy(
1481- name = "buildbuddy_toolchain",
1482- llvm = True,
1483-)
1484-
1485-git_repository(
1486- name = "rbe_23",
1487- commit = "b21c066e426de48e526cc0f8c5158b7024d04e85",
1488- remote = "https://github.com/rabbitmq/rbe-erlang-platform.git",
1489-)
1490-
1491-git_repository(
1492- name = "rbe_24",
1493- commit = "c8cbf65e2facbe464ebbcee7b6cf6f7a2d422ded",
1494- remote = "https://github.com/rabbitmq/rbe-erlang-platform.git",
1495-)
1496-
1497-http_archive(
1498- name = "rules_pkg",
1499- sha256 = "038f1caa773a7e35b3663865ffb003169c6a71dc995e39bf4815792f385d837d",
1500- urls = [
1501- "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz",
1502- "https://github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz",
1503- ],
1504-)
1505-
1506-load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
1507-
1508-rules_pkg_dependencies()
1509-
1510-http_archive(
1511- name = "bazel-erlang",
1512- sha256 = "2ba878df673020ac714c050c0aaf3c66cac2f9cca0aa4259e3c74603c59e0cd0",
1513- strip_prefix = "rules_erlang-1.4.0",
1514- urls = ["https://github.com/rabbitmq/bazel-erlang/archive/refs/tags/1.4.0.zip"],
1515-)
1516-
1517-load("@bazel-erlang//:bazel_erlang.bzl", "bazel_erlang_deps")
1518-
1519-bazel_erlang_deps()
1520-
1521-load("//:workspace_helpers.bzl", "rabbitmq_external_deps")
1522-
1523-rabbitmq_external_deps(rabbitmq_workspace = "@")
1524-
1525-load("//deps/amqp10_client:activemq.bzl", "activemq_archive")
1526-
1527-activemq_archive()
1528-
1529-ADD_PLUGINS_DIR_BUILD_FILE = """set -euo pipefail
1530-
1531-cat << EOF > plugins/BUILD.bazel
1532-load("@rules_pkg//:pkg.bzl", "pkg_zip")
1533-
1534-pkg_zip(
1535- name = "inet_tcp_proxy_ez",
1536- package_dir = "inet_tcp_proxy/ebin",
1537- srcs = [
1538- "@inet_tcp_proxy//:bazel_erlang_lib",
1539- ],
1540- package_file_name = "inet_tcp_proxy.ez",
1541- visibility = ["//visibility:public"],
1542-)
1543-
1544-filegroup(
1545- name = "standard_plugins",
1546- srcs = glob(["*.ez"]),
1547- visibility = ["//visibility:public"],
1548-)
1549-EOF
1550-"""
1551-
1552-http_archive(
1553- name = "rabbitmq-server-generic-unix-3.8.22",
1554- build_file = "@//:BUILD.package_generic_unix",
1555- patch_cmds = [ADD_PLUGINS_DIR_BUILD_FILE],
1556- strip_prefix = "rabbitmq_server-3.8.22",
1557- urls = ["https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.22/rabbitmq-server-generic-unix-3.8.22.tar.xz"],
1558-)
1559diff --git a/bazel/bzlmod/BUILD.bazel b/bazel/bzlmod/BUILD.bazel
1560new file mode 100644
1561index 0000000..e69de29
1562--- /dev/null
1563+++ b/bazel/bzlmod/BUILD.bazel
1564diff --git a/bazel/bzlmod/extensions.bzl b/bazel/bzlmod/extensions.bzl
1565new file mode 100644
1566index 0000000..ddc10c8
1567--- /dev/null
1568+++ b/bazel/bzlmod/extensions.bzl
1569@@ -0,0 +1,139 @@
1570+load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
1571+load(
1572+ ":secondary_umbrella.bzl",
1573+ fetch_secondary_umbrella = "secondary_umbrella",
1574+)
1575+load(
1576+ "//bazel/repositories:elixir_config.bzl",
1577+ "INSTALLATION_TYPE_EXTERNAL",
1578+ "INSTALLATION_TYPE_INTERNAL",
1579+ _elixir_config_rule = "elixir_config",
1580+)
1581+load(
1582+ "//bazel/elixir:elixir.bzl",
1583+ "DEFAULT_ELIXIR_SHA256",
1584+ "DEFAULT_ELIXIR_VERSION",
1585+)
1586+
1587+def _elixir_config(ctx):
1588+ types = {}
1589+ versions = {}
1590+ urls = {}
1591+ strip_prefixs = {}
1592+ sha256s = {}
1593+ elixir_homes = {}
1594+
1595+ for mod in ctx.modules:
1596+ for elixir in mod.tags.external_elixir_from_path:
1597+ types[elixir.name] = INSTALLATION_TYPE_EXTERNAL
1598+ versions[elixir.name] = elixir.version
1599+ elixir_homes[elixir.name] = elixir.elixir_home
1600+
1601+ for elixir in mod.tags.internal_elixir_from_http_archive:
1602+ types[elixir.name] = INSTALLATION_TYPE_INTERNAL
1603+ versions[elixir.name] = elixir.version
1604+ urls[elixir.name] = elixir.url
1605+ strip_prefixs[elixir.name] = elixir.strip_prefix
1606+ sha256s[elixir.name] = elixir.sha256
1607+
1608+ for elixir in mod.tags.internal_elixir_from_github_release:
1609+ url = "https://github.com/elixir-lang/elixir/archive/refs/tags/v{}.tar.gz".format(
1610+ elixir.version,
1611+ )
1612+ strip_prefix = "elixir-{}".format(elixir.version)
1613+
1614+ types[elixir.name] = INSTALLATION_TYPE_INTERNAL
1615+ versions[elixir.name] = elixir.version
1616+ urls[elixir.name] = url
1617+ strip_prefixs[elixir.name] = strip_prefix
1618+ sha256s[elixir.name] = elixir.sha256
1619+
1620+ _elixir_config_rule(
1621+ name = "elixir_config",
1622+ rabbitmq_server_workspace = "@rabbitmq-server",
1623+ types = types,
1624+ versions = versions,
1625+ urls = urls,
1626+ strip_prefixs = strip_prefixs,
1627+ sha256s = sha256s,
1628+ elixir_homes = elixir_homes,
1629+ )
1630+
1631+external_elixir_from_path = tag_class(attrs = {
1632+ "name": attr.string(),
1633+ "version": attr.string(),
1634+ "elixir_home": attr.string(),
1635+})
1636+
1637+internal_elixir_from_http_archive = tag_class(attrs = {
1638+ "name": attr.string(),
1639+ "version": attr.string(),
1640+ "url": attr.string(),
1641+ "strip_prefix": attr.string(),
1642+ "sha256": attr.string(),
1643+})
1644+
1645+internal_elixir_from_github_release = tag_class(attrs = {
1646+ "name": attr.string(
1647+ default = "internal",
1648+ ),
1649+ "version": attr.string(
1650+ default = DEFAULT_ELIXIR_VERSION,
1651+ ),
1652+ "sha256": attr.string(
1653+ default = DEFAULT_ELIXIR_SHA256,
1654+ ),
1655+})
1656+
1657+elixir_config = module_extension(
1658+ implementation = _elixir_config,
1659+ tag_classes = {
1660+ "external_elixir_from_path": external_elixir_from_path,
1661+ "internal_elixir_from_http_archive": internal_elixir_from_http_archive,
1662+ "internal_elixir_from_github_release": internal_elixir_from_github_release,
1663+ },
1664+)
1665+
1666+def _rbe(ctx):
1667+ rbe_repo_props = []
1668+ for mod in ctx.modules:
1669+ for repo in mod.tags.git_repository:
1670+ props = {"remote": repo.remote}
1671+ if repo.commit != "":
1672+ props["commit"] = repo.commit
1673+ if repo.tag != "":
1674+ props["tag"] = repo.tag
1675+ if repo.branch != "":
1676+ props["branch"] = repo.branch
1677+ if not props in rbe_repo_props:
1678+ rbe_repo_props.append(props)
1679+
1680+ if len(rbe_repo_props) > 1:
1681+ fail("Multiple definitions for @rbe exist: {}".format(rbe_repo_props))
1682+
1683+ if len(rbe_repo_props) > 0:
1684+ git_repository(
1685+ name = "rbe",
1686+ **rbe_repo_props[0]
1687+ )
1688+
1689+git_repository_tag = tag_class(attrs = {
1690+ "remote": attr.string(),
1691+ "branch": attr.string(),
1692+ "tag": attr.string(),
1693+ "commit": attr.string(),
1694+})
1695+
1696+rbe = module_extension(
1697+ implementation = _rbe,
1698+ tag_classes = {
1699+ "git_repository": git_repository_tag,
1700+ },
1701+)
1702+
1703+def _secondary_umbrella(ctx):
1704+ fetch_secondary_umbrella()
1705+
1706+secondary_umbrella = module_extension(
1707+ implementation = _secondary_umbrella,
1708+)
1709diff --git a/bazel/bzlmod/secondary_umbrella.bzl b/bazel/bzlmod/secondary_umbrella.bzl
1710new file mode 100644
1711index 0000000..77f3e3d
1712--- /dev/null
1713+++ b/bazel/bzlmod/secondary_umbrella.bzl
1714@@ -0,0 +1,33 @@
1715+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
1716+
1717+ADD_PLUGINS_DIR_BUILD_FILE = """set -euo pipefail
1718+
1719+cat << EOF > plugins/BUILD.bazel
1720+load("@rules_pkg//:pkg.bzl", "pkg_zip")
1721+
1722+pkg_zip(
1723+ name = "inet_tcp_proxy_ez",
1724+ package_dir = "inet_tcp_proxy/ebin",
1725+ srcs = [
1726+ "@inet_tcp_proxy_dist//:erlang_app",
1727+ ],
1728+ package_file_name = "inet_tcp_proxy-0.1.0.ez",
1729+ visibility = ["//visibility:public"],
1730+)
1731+
1732+filegroup(
1733+ name = "standard_plugins",
1734+ srcs = glob(["**/*"]),
1735+ visibility = ["//visibility:public"],
1736+)
1737+EOF
1738+"""
1739+
1740+def secondary_umbrella():
1741+ http_archive(
1742+ name = "rabbitmq-server-generic-unix-3.8",
1743+ build_file = "@//:BUILD.package_generic_unix",
1744+ patch_cmds = [ADD_PLUGINS_DIR_BUILD_FILE],
1745+ strip_prefix = "rabbitmq_server-3.8",
1746+ urls = ["https://rabbitmq-github-actions.s3.eu-west-1.amazonaws.com/secondary-umbrellas/package-generic-unix-for-mixed-version-testing-v3.8.27.tar.xz"],
1747+ )
1748diff --git a/bazel/elixir/BUILD.bazel b/bazel/elixir/BUILD.bazel
1749new file mode 100644
1750index 0000000..b362f11
1751--- /dev/null
1752+++ b/bazel/elixir/BUILD.bazel
1753@@ -0,0 +1,14 @@
1754+load(
1755+ ":elixir_as_app.bzl",
1756+ "elixir_as_app",
1757+)
1758+
1759+toolchain_type(
1760+ name = "toolchain_type",
1761+ visibility = ["//visibility:public"],
1762+)
1763+
1764+elixir_as_app(
1765+ name = "erlang_app",
1766+ visibility = ["//visibility:public"],
1767+)
1768diff --git a/bazel/elixir/elixir.bzl b/bazel/elixir/elixir.bzl
1769new file mode 100644
1770index 0000000..d36240a
1771--- /dev/null
1772+++ b/bazel/elixir/elixir.bzl
1773@@ -0,0 +1,147 @@
1774+load(
1775+ ":elixir_build.bzl",
1776+ "elixir_build",
1777+ "elixir_external",
1778+)
1779+load(
1780+ ":elixir_toolchain.bzl",
1781+ "elixir_toolchain",
1782+)
1783+load(
1784+ "//bazel/repositories:elixir_config.bzl",
1785+ "INSTALLATION_TYPE_INTERNAL",
1786+ _elixir_config = "elixir_config",
1787+)
1788+
1789+def elixir_toolchain_external():
1790+ """DEPRECATED"""
1791+
1792+ elixir_external(
1793+ name = "external_elixir_installation_ref",
1794+ target_compatible_with = [
1795+ Label("//bazel/platforms:elixir_external"),
1796+ ],
1797+ )
1798+
1799+ elixir_toolchain(
1800+ name = "elixir_external",
1801+ elixir = ":external_elixir_installation_ref",
1802+ )
1803+
1804+ native.toolchain(
1805+ name = "elixir_toolchain_external",
1806+ exec_compatible_with = [
1807+ Label("@erlang_config//:erlang_external"),
1808+ ],
1809+ target_compatible_with = [
1810+ Label("//bazel/platforms:elixir_external"),
1811+ ],
1812+ toolchain = ":elixir_external",
1813+ toolchain_type = Label("//bazel/elixir:toolchain_type"),
1814+ visibility = ["//visibility:public"],
1815+ )
1816+
1817+def elixir_toolchain_from_http_archive(
1818+ name_suffix = "",
1819+ url = None,
1820+ strip_prefix = None,
1821+ sha256 = None,
1822+ elixir_constraints = None):
1823+ """DEPRECATED"""
1824+
1825+ elixir_build(
1826+ name = "elixir_build{}".format(name_suffix),
1827+ url = url,
1828+ strip_prefix = strip_prefix,
1829+ sha256 = sha256,
1830+ target_compatible_with = elixir_constraints,
1831+ )
1832+
1833+ elixir_toolchain(
1834+ name = "elixir{}".format(name_suffix),
1835+ elixir = ":elixir_build{}".format(name_suffix),
1836+ )
1837+
1838+ native.toolchain(
1839+ name = "elixir_toolchain{}".format(name_suffix),
1840+ exec_compatible_with = [
1841+ Label("@erlang_config//:erlang_internal"),
1842+ ],
1843+ target_compatible_with = elixir_constraints,
1844+ toolchain = ":elixir{}".format(name_suffix),
1845+ toolchain_type = Label("//bazel/elixir:toolchain_type"),
1846+ visibility = ["//visibility:public"],
1847+ )
1848+
1849+def elixir_toolchain_from_github_release(
1850+ name_suffix = "_default",
1851+ version = None,
1852+ sha256 = None):
1853+ """DEPRECATED"""
1854+
1855+ [major, minor, patch] = version.split(".")
1856+ elixir_constraints = [
1857+ Label("//bazel/platforms:elixir_{}_{}".format(major, minor)),
1858+ ]
1859+ url = "https://github.com/elixir-lang/elixir/archive/refs/tags/v{}.tar.gz".format(version)
1860+ elixir_toolchain_from_http_archive(
1861+ name_suffix = name_suffix,
1862+ url = url,
1863+ strip_prefix = "elixir-{}".format(version),
1864+ sha256 = sha256,
1865+ elixir_constraints = elixir_constraints,
1866+ )
1867+
1868+DEFAULT_ELIXIR_VERSION = "1.13.4"
1869+DEFAULT_ELIXIR_SHA256 = "95daf2dd3052e6ca7d4d849457eaaba09de52d65ca38d6933c65bc1cdf6b8579"
1870+
1871+# Generates the @elixir_config repository, which contains erlang
1872+# toolchains and platform defintions
1873+def elixir_config(
1874+ rabbitmq_server_workspace = "@rabbitmq-server",
1875+ internal_elixir_configs = []):
1876+ types = {c.name: INSTALLATION_TYPE_INTERNAL for c in internal_elixir_configs}
1877+ versions = {c.name: c.version for c in internal_elixir_configs}
1878+ urls = {c.name: c.url for c in internal_elixir_configs}
1879+ strip_prefixs = {c.name: c.strip_prefix for c in internal_elixir_configs if c.strip_prefix}
1880+ sha256s = {c.name: c.sha256 for c in internal_elixir_configs if c.sha256}
1881+
1882+ _elixir_config(
1883+ name = "elixir_config",
1884+ rabbitmq_server_workspace = rabbitmq_server_workspace,
1885+ types = types,
1886+ versions = versions,
1887+ urls = urls,
1888+ strip_prefixs = strip_prefixs,
1889+ sha256s = sha256s,
1890+ )
1891+
1892+def internal_elixir_from_http_archive(
1893+ name = None,
1894+ version = None,
1895+ url = None,
1896+ strip_prefix = None,
1897+ sha256 = None):
1898+ return struct(
1899+ name = name,
1900+ version = version,
1901+ url = url,
1902+ strip_prefix = strip_prefix,
1903+ sha256 = sha256,
1904+ )
1905+
1906+def internal_elixir_from_github_release(
1907+ name = "internal",
1908+ version = DEFAULT_ELIXIR_VERSION,
1909+ sha256 = DEFAULT_ELIXIR_SHA256):
1910+ url = "https://github.com/elixir-lang/elixir/archive/refs/tags/v{}.tar.gz".format(
1911+ version,
1912+ )
1913+
1914+ return internal_elixir_from_http_archive(
1915+ name = name,
1916+ version = version,
1917+ url = url,
1918+ strip_prefix = "elixir-{}".format(version),
1919+ sha256 = sha256,
1920+ )
1921diff --git a/bazel/elixir/elixir_as_app.bzl b/bazel/elixir/elixir_as_app.bzl
1922new file mode 100644
1923index 0000000..433355c
1924--- /dev/null
1925+++ b/bazel/elixir/elixir_as_app.bzl
1926@@ -0,0 +1,42 @@
1927+load(
1928+ "@rules_erlang//:erlang_app_info.bzl",
1929+ "ErlangAppInfo",
1930+)
1931+load(
1932+ ":elixir_toolchain.bzl",
1933+ "elixir_dirs",
1934+)
1935+
1936+def _impl(ctx):
1937+ ebin = ctx.actions.declare_directory("ebin")
1938+
1939+ (elixir_home, elixir_runfiles) = elixir_dirs(ctx)
1940+
1941+ ctx.actions.run_shell(
1942+ inputs = elixir_runfiles.files,
1943+ outputs = [ebin],
1944+ command = """set -euo pipefail
1945+
1946+cp -r "{elixir_home}"/lib/elixir/ebin/* {ebin}
1947+""".format(
1948+ elixir_home = elixir_home,
1949+ ebin = ebin.path,
1950+ ),
1951+ )
1952+
1953+ return [
1954+ DefaultInfo(files = depset([ebin])),
1955+ ErlangAppInfo(
1956+ app_name = "elixir",
1957+ include = [],
1958+ beam = [ebin],
1959+ priv = [],
1960+ deps = [],
1961+ ),
1962+ ]
1963+
1964+elixir_as_app = rule(
1965+ implementation = _impl,
1966+ toolchains = [":toolchain_type"],
1967+ provides = [ErlangAppInfo],
1968+)
1969diff --git a/bazel/elixir/elixir_build.bzl b/bazel/elixir/elixir_build.bzl
1970new file mode 100644
1971index 0000000..5b4d622
1972--- /dev/null
1973+++ b/bazel/elixir/elixir_build.bzl
1974@@ -0,0 +1,171 @@
1975+load(
1976+ "@bazel_skylib//rules:common_settings.bzl",
1977+ "BuildSettingInfo",
1978+)
1979+load(
1980+ "@rules_erlang//tools:erlang_toolchain.bzl",
1981+ "erlang_dirs",
1982+ "maybe_install_erlang",
1983+)
1984+
1985+ElixirInfo = provider(
1986+ doc = "A Home directory of a built Elixir",
1987+ fields = [
1988+ "release_dir",
1989+ "elixir_home",
1990+ "version_file",
1991+ ],
1992+)
1993+
1994+def _impl(ctx):
1995+ (_, _, filename) = ctx.attr.url.rpartition("/")
1996+ downloaded_archive = ctx.actions.declare_file(filename)
1997+
1998+ release_dir = ctx.actions.declare_directory(ctx.label.name + "_release")
1999+ build_dir = ctx.actions.declare_directory(ctx.label.name + "_build")
2000+
2001+ version_file = ctx.actions.declare_file(ctx.label.name + "_version")
2002+
2003+ ctx.actions.run_shell(
2004+ inputs = [],
2005+ outputs = [downloaded_archive],
2006+ command = """set -euo pipefail
2007+
2008+curl -L "{archive_url}" -o {archive_path}
2009+
2010+if [ -n "{sha256}" ]; then
2011+ echo "{sha256} {archive_path}" | sha256sum --check --strict -
2012+fi
2013+""".format(
2014+ archive_url = ctx.attr.url,
2015+ archive_path = downloaded_archive.path,
2016+ sha256 = ctx.attr.sha256,
2017+ ),
2018+ mnemonic = "CURL",
2019+ progress_message = "Downloading {}".format(ctx.attr.url),
2020+ )
2021+
2022+ (erlang_home, _, runfiles) = erlang_dirs(ctx)
2023+
2024+ inputs = depset(
2025+ direct = [downloaded_archive],
2026+ transitive = [runfiles.files],
2027+ )
2028+
2029+ strip_prefix = ctx.attr.strip_prefix
2030+ if strip_prefix != "":
2031+ strip_prefix += "\\/"
2032+
2033+ ctx.actions.run_shell(
2034+ inputs = inputs,
2035+ outputs = [release_dir, build_dir, version_file],
2036+ command = """set -euo pipefail
2037+
2038+{maybe_install_erlang}
2039+
2040+export PATH="{erlang_home}"/bin:${{PATH}}
2041+
2042+ABS_BUILD_DIR=$PWD/{build_path}
2043+ABS_RELEASE_DIR=$PWD/{release_path}
2044+ABS_VERSION_FILE=$PWD/{version_file}
2045+
2046+tar --extract \\
2047+ --transform 's/{strip_prefix}//' \\
2048+ --file {archive_path} \\
2049+ --directory $ABS_BUILD_DIR
2050+
2051+cd $ABS_BUILD_DIR
2052+
2053+make
2054+
2055+cp -r bin $ABS_RELEASE_DIR/
2056+cp -r lib $ABS_RELEASE_DIR/
2057+
2058+$ABS_RELEASE_DIR/bin/iex --version > $ABS_VERSION_FILE
2059+""".format(
2060+ maybe_install_erlang = maybe_install_erlang(ctx),
2061+ erlang_home = erlang_home,
2062+ archive_path = downloaded_archive.path,
2063+ strip_prefix = strip_prefix,
2064+ build_path = build_dir.path,
2065+ release_path = release_dir.path,
2066+ version_file = version_file.path,
2067+ ),
2068+ mnemonic = "ELIXIR",
2069+ progress_message = "Compiling elixir from source",
2070+ )
2071+
2072+ return [
2073+ DefaultInfo(
2074+ files = depset([
2075+ release_dir,
2076+ version_file,
2077+ ]),
2078+ ),
2079+ ctx.toolchains["@rules_erlang//tools:toolchain_type"].otpinfo,
2080+ ElixirInfo(
2081+ release_dir = release_dir,
2082+ elixir_home = None,
2083+ version_file = version_file,
2084+ ),
2085+ ]
2086+
2087+elixir_build = rule(
2088+ implementation = _impl,
2089+ attrs = {
2090+ "url": attr.string(mandatory = True),
2091+ "strip_prefix": attr.string(),
2092+ "sha256": attr.string(),
2093+ },
2094+ toolchains = ["@rules_erlang//tools:toolchain_type"],
2095+)
2096+
2097+def _elixir_external_impl(ctx):
2098+ elixir_home = ctx.attr.elixir_home
2099+ if elixir_home == "":
2100+ elixir_home = ctx.attr._elixir_home[BuildSettingInfo].value
2101+
2102+ version_file = ctx.actions.declare_file(ctx.label.name + "_version")
2103+
2104+ (erlang_home, _, runfiles) = erlang_dirs(ctx)
2105+
2106+ ctx.actions.run_shell(
2107+ inputs = runfiles.files,
2108+ outputs = [version_file],
2109+ command = """set -euo pipefail
2110+
2111+{maybe_install_erlang}
2112+
2113+export PATH="{erlang_home}"/bin:${{PATH}}
2114+
2115+"{elixir_home}"/bin/iex --version > {version_file}
2116+""".format(
2117+ maybe_install_erlang = maybe_install_erlang(ctx),
2118+ erlang_home = erlang_home,
2119+ elixir_home = elixir_home,
2120+ version_file = version_file.path,
2121+ ),
2122+ mnemonic = "ELIXIR",
2123+ progress_message = "Validating elixir at {}".format(elixir_home),
2124+ )
2125+
2126+ return [
2127+ DefaultInfo(
2128+ files = depset([version_file]),
2129+ ),
2130+ ctx.toolchains["@rules_erlang//tools:toolchain_type"].otpinfo,
2131+ ElixirInfo(
2132+ release_dir = None,
2133+ elixir_home = elixir_home,
2134+ version_file = version_file,
2135+ ),
2136+ ]
2137+
2138+elixir_external = rule(
2139+ implementation = _elixir_external_impl,
2140+ attrs = {
2141+ "_elixir_home": attr.label(default = Label("//:elixir_home")),
2142+ "elixir_home": attr.string(),
2143+ },
2144+ toolchains = ["@rules_erlang//tools:toolchain_type"],
2145+)
2146diff --git a/bazel/elixir/elixir_toolchain.bzl b/bazel/elixir/elixir_toolchain.bzl
2147new file mode 100644
2148index 0000000..1274bfc
2149--- /dev/null
2150+++ b/bazel/elixir/elixir_toolchain.bzl
2151@@ -0,0 +1,65 @@
2152+load(
2153+ "@rules_erlang//private:erlang_build.bzl",
2154+ "OtpInfo",
2155+)
2156+load(
2157+ ":elixir_build.bzl",
2158+ "ElixirInfo",
2159+)
2160+
2161+def _impl(ctx):
2162+ toolchain_info = platform_common.ToolchainInfo(
2163+ otpinfo = ctx.attr.elixir[OtpInfo],
2164+ elixirinfo = ctx.attr.elixir[ElixirInfo],
2165+ )
2166+ return [toolchain_info]
2167+
2168+elixir_toolchain = rule(
2169+ implementation = _impl,
2170+ attrs = {
2171+ "elixir": attr.label(
2172+ mandatory = True,
2173+ providers = [OtpInfo, ElixirInfo],
2174+ ),
2175+ },
2176+ provides = [platform_common.ToolchainInfo],
2177+)
2178+
2179+def _build_info(ctx):
2180+ return ctx.toolchains[":toolchain_type"].otpinfo
2181+
2182+def erlang_dirs(ctx):
2183+ info = _build_info(ctx)
2184+ if info.release_dir != None:
2185+ runfiles = ctx.runfiles([
2186+ info.release_dir,
2187+ info.version_file,
2188+ ])
2189+ else:
2190+ runfiles = ctx.runfiles([
2191+ info.version_file,
2192+ ])
2193+ return (info.erlang_home, info.release_dir, runfiles)
2194+
2195+def elixir_dirs(ctx, short_path = False):
2196+ info = ctx.toolchains[":toolchain_type"].elixirinfo
2197+ if info.elixir_home != None:
2198+ return (info.elixir_home, ctx.runfiles([info.version_file]))
2199+ else:
2200+ p = info.release_dir.short_path if short_path else info.release_dir.path
2201+ return (p, ctx.runfiles([info.release_dir, info.version_file]))
2202+
2203+def maybe_install_erlang(ctx, short_path = False):
2204+ info = _build_info(ctx)
2205+ release_dir = info.release_dir
2206+ if release_dir == None:
2207+ return ""
2208+ else:
2209+ return """mkdir -p $(dirname "{erlang_home}")
2210+cp -r {erlang_release_dir} "{erlang_home}"
2211+ERTS_DIRNAME="$(basename "$(echo "{erlang_home}"/erts-*)")"
2212+ln -sf ../$ERTS_DIRNAME/bin/epmd "{erlang_home}"/bin/epmd
2213+""".format(
2214+ erlang_release_dir = release_dir.short_path if short_path else release_dir.path,
2215+ erlang_home = info.erlang_home,
2216+ )
2217diff --git a/bazel/elixir/iex_eval.bzl b/bazel/elixir/iex_eval.bzl
2218new file mode 100644
2219index 0000000..956fd75
2220--- /dev/null
2221+++ b/bazel/elixir/iex_eval.bzl
2222@@ -0,0 +1,70 @@
2223+load(
2224+ ":elixir_toolchain.bzl",
2225+ "elixir_dirs",
2226+ "erlang_dirs",
2227+ "maybe_install_erlang",
2228+)
2229+
2230+def _impl(ctx):
2231+ outs = [
2232+ ctx.actions.declare_file(f)
2233+ for f in ctx.attr.outs
2234+ ]
2235+
2236+ (erlang_home, _, erlang_runfiles) = erlang_dirs(ctx)
2237+ (elixir_home, elixir_runfiles) = elixir_dirs(ctx)
2238+
2239+ script = """set -euo pipefail
2240+
2241+{maybe_install_erlang}
2242+
2243+if [[ "{elixir_home}" == /* ]]; then
2244+ ABS_ELIXIR_HOME="{elixir_home}"
2245+else
2246+ ABS_ELIXIR_HOME=$PWD/{elixir_home}
2247+fi
2248+
2249+export PATH="$ABS_ELIXIR_HOME"/bin:"{erlang_home}"/bin:${{PATH}}
2250+
2251+export SRCS="{srcs}"
2252+export OUTS="{outs}"
2253+
2254+${{ABS_ELIXIR_HOME}}/bin/iex --eval "$1"
2255+""".format(
2256+ maybe_install_erlang = maybe_install_erlang(ctx),
2257+ erlang_home = erlang_home,
2258+ elixir_home = elixir_home,
2259+ srcs = ctx.configuration.host_path_separator.join([src.path for src in ctx.files.srcs]),
2260+ outs = ctx.configuration.host_path_separator.join([out.path for out in outs]),
2261+ )
2262+
2263+ inputs = depset(
2264+ direct = ctx.files.srcs,
2265+ transitive = [
2266+ erlang_runfiles.files,
2267+ elixir_runfiles.files,
2268+ ],
2269+ )
2270+
2271+ ctx.actions.run_shell(
2272+ inputs = inputs,
2273+ outputs = outs,
2274+ command = script,
2275+ arguments = [ctx.attr.expression],
2276+ )
2277+
2278+ return [
2279+ DefaultInfo(files = depset(outs)),
2280+ ]
2281+
2282+iex_eval = rule(
2283+ implementation = _impl,
2284+ attrs = {
2285+ "srcs": attr.label_list(allow_files = True),
2286+ "outs": attr.string_list(),
2287+ "expression": attr.string(
2288+ mandatory = True,
2289+ ),
2290+ },
2291+ toolchains = [":toolchain_type"],
2292+)
2293diff --git a/bazel/platforms/BUILD.bazel b/bazel/platforms/BUILD.bazel
2294new file mode 100644
2295index 0000000..07791db
2296--- /dev/null
2297+++ b/bazel/platforms/BUILD.bazel
2298@@ -0,0 +1,48 @@
2299+package(
2300+ default_visibility = ["//visibility:public"],
2301+)
2302+
2303+platform(
2304+ name = "erlang_internal_platform",
2305+ constraint_values = [
2306+ "@erlang_config//:erlang_internal",
2307+ "@elixir_config//:elixir_internal",
2308+ ],
2309+ parents = ["@rbe//config:platform"],
2310+)
2311+
2312+platform(
2313+ name = "erlang_linux_24_platform",
2314+ constraint_values = [
2315+ "@erlang_config//:erlang_24",
2316+ "@elixir_config//:elixir_1_13",
2317+ ],
2318+ parents = ["@rbe//config:platform"],
2319+)
2320+
2321+platform(
2322+ name = "erlang_linux_25_0_platform",
2323+ constraint_values = [
2324+ "@erlang_config//:erlang_25_0",
2325+ "@elixir_config//:elixir_1_14",
2326+ ],
2327+ parents = ["@rbe//config:platform"],
2328+)
2329+
2330+platform(
2331+ name = "erlang_linux_25_1_platform",
2332+ constraint_values = [
2333+ "@erlang_config//:erlang_25_1",
2334+ "@elixir_config//:elixir_1_14",
2335+ ],
2336+ parents = ["@rbe//config:platform"],
2337+)
2338+
2339+platform(
2340+ name = "erlang_linux_git_master_platform",
2341+ constraint_values = [
2342+ "@erlang_config//:erlang_26",
2343+ "@elixir_config//:elixir_1_14",
2344+ ],
2345+ parents = ["@rbe//config:platform"],
2346+)
2347diff --git a/bazel/repositories/BUILD.bazel b/bazel/repositories/BUILD.bazel
2348new file mode 100644
2349index 0000000..e69de29
2350--- /dev/null
2351+++ b/bazel/repositories/BUILD.bazel
2352diff --git a/bazel/repositories/BUILD_external.tpl b/bazel/repositories/BUILD_external.tpl
2353new file mode 100644
2354index 0000000..d8649ce
2355--- /dev/null
2356+++ b/bazel/repositories/BUILD_external.tpl
2357@@ -0,0 +1,34 @@
2358+# This file is generated by rabbitmq-server via the elixir_config macro
2359+
2360+load(
2361+ "%{RABBITMQ_SERVER_WORKSPACE}//bazel/elixir:elixir_build.bzl",
2362+ "elixir_external",
2363+)
2364+load(
2365+ "%{RABBITMQ_SERVER_WORKSPACE}//bazel/elixir:elixir_toolchain.bzl",
2366+ "elixir_toolchain",
2367+)
2368+
2369+elixir_external(
2370+ name = "elixir_external",
2371+ elixir_home = "%{ELIXIR_HOME}",
2372+)
2373+
2374+elixir_toolchain(
2375+ name = "elixir",
2376+ elixir = ":elixir_external",
2377+ visibility = ["//visibility:public"],
2378+)
2379+
2380+toolchain(
2381+ name = "toolchain",
2382+ exec_compatible_with = [
2383+ "//:elixir_external",
2384+ ],
2385+ target_compatible_with = [
2386+ "//:elixir_%{ELIXIR_VERSION_ID}",
2387+ ],
2388+ toolchain = ":elixir",
2389+ toolchain_type = "%{RABBITMQ_SERVER_WORKSPACE}//bazel/elixir:toolchain_type",
2390+ visibility = ["//visibility:public"],
2391+)
2392diff --git a/bazel/repositories/BUILD_internal.tpl b/bazel/repositories/BUILD_internal.tpl
2393new file mode 100644
2394index 0000000..6592e8e
2395--- /dev/null
2396+++ b/bazel/repositories/BUILD_internal.tpl
2397@@ -0,0 +1,36 @@
2398+# This file is generated by rabbitmq-server via the elixir_config macro
2399+
2400+load(
2401+ "%{RABBITMQ_SERVER_WORKSPACE}//bazel/elixir:elixir_build.bzl",
2402+ "elixir_build",
2403+)
2404+load(
2405+ "%{RABBITMQ_SERVER_WORKSPACE}//bazel/elixir:elixir_toolchain.bzl",
2406+ "elixir_toolchain",
2407+)
2408+
2409+elixir_build(
2410+ name = "elixir_build",
2411+ url = "%{URL}",
2412+ strip_prefix = "%{STRIP_PREFIX}",
2413+ sha256 = "%{SHA_256}",
2414+)
2415+
2416+elixir_toolchain(
2417+ name = "elixir",
2418+ elixir = ":elixir_build",
2419+ visibility = ["//visibility:public"],
2420+)
2421+
2422+toolchain(
2423+ name = "toolchain",
2424+ exec_compatible_with = [
2425+ "//:elixir_internal",
2426+ ],
2427+ target_compatible_with = [
2428+ "//:elixir_%{ELIXIR_VERSION_ID}",
2429+ ],
2430+ toolchain = ":elixir",
2431+ toolchain_type = "%{RABBITMQ_SERVER_WORKSPACE}//bazel/elixir:toolchain_type",
2432+ visibility = ["//visibility:public"],
2433+)
2434diff --git a/bazel/repositories/defaults.bzl.tpl b/bazel/repositories/defaults.bzl.tpl
2435new file mode 100644
2436index 0000000..f4822fd
2437--- /dev/null
2438+++ b/bazel/repositories/defaults.bzl.tpl
2439@@ -0,0 +1,6 @@
2440+# This file is generated by rabbitmq-server via the elixir_config macro
2441+
2442+def register_defaults():
2443+ native.register_toolchains(
2444+%{TOOLCHAINS}
2445+ )
2446diff --git a/bazel/repositories/elixir_config.bzl b/bazel/repositories/elixir_config.bzl
2447new file mode 100644
2448index 0000000..1d59cbf
2449--- /dev/null
2450+++ b/bazel/repositories/elixir_config.bzl
2451@@ -0,0 +1,233 @@
2452+load(
2453+ "@rules_erlang//:util.bzl",
2454+ "msys2_path",
2455+ "path_join",
2456+)
2457+
2458+ELIXIR_HOME_ENV_VAR = "ELIXIR_HOME"
2459+
2460+_DEFAULT_EXTERNAL_ELIXIR_PACKAGE_NAME = "external"
2461+_ELIXIR_VERSION_UNKNOWN = "UNKNOWN"
2462+
2463+INSTALLATION_TYPE_EXTERNAL = "external"
2464+INSTALLATION_TYPE_INTERNAL = "internal"
2465+
2466+def _version_identifier(version_string):
2467+ parts = version_string.split(".", 2)
2468+ if len(parts) > 1:
2469+ return "{}_{}".format(parts[0], parts[1])
2470+ else:
2471+ return parts[0]
2472+
2473+def _impl(repository_ctx):
2474+ rabbitmq_server_workspace = repository_ctx.attr.rabbitmq_server_workspace
2475+
2476+ elixir_installations = _default_elixir_dict(repository_ctx)
2477+ for name in repository_ctx.attr.types.keys():
2478+ if name == _DEFAULT_EXTERNAL_ELIXIR_PACKAGE_NAME:
2479+ fail("'{}' is reserved as an elixir name".format(
2480+ _DEFAULT_EXTERNAL_ELIXIR_PACKAGE_NAME,
2481+ ))
2482+ version = repository_ctx.attr.versions[name]
2483+ identifier = _version_identifier(version)
2484+ elixir_installations[name] = struct(
2485+ type = repository_ctx.attr.types[name],
2486+ version = version,
2487+ identifier = identifier,
2488+ url = repository_ctx.attr.urls.get(name, None),
2489+ strip_prefix = repository_ctx.attr.strip_prefixs.get(name, None),
2490+ sha256 = repository_ctx.attr.sha256s.get(name, None),
2491+ elixir_home = repository_ctx.attr.elixir_homes.get(name, None),
2492+ )
2493+
2494+ for (name, props) in elixir_installations.items():
2495+ if props.type == INSTALLATION_TYPE_EXTERNAL:
2496+ repository_ctx.template(
2497+ "{}/BUILD.bazel".format(name),
2498+ Label("//bazel/repositories:BUILD_external.tpl"),
2499+ {
2500+ "%{ELIXIR_HOME}": props.elixir_home,
2501+ "%{ELIXIR_VERSION_ID}": props.identifier,
2502+ "%{RABBITMQ_SERVER_WORKSPACE}": rabbitmq_server_workspace,
2503+ },
2504+ False,
2505+ )
2506+ else:
2507+ repository_ctx.template(
2508+ "{}/BUILD.bazel".format(name),
2509+ Label("//bazel/repositories:BUILD_internal.tpl"),
2510+ {
2511+ "%{URL}": props.url,
2512+ "%{STRIP_PREFIX}": props.strip_prefix or "",
2513+ "%{SHA_256}": props.sha256 or "",
2514+ "%{ELIXIR_VERSION_ID}": props.identifier,
2515+ "%{RABBITMQ_SERVER_WORKSPACE}": rabbitmq_server_workspace,
2516+ },
2517+ False,
2518+ )
2519+
2520+ if len(elixir_installations) == 0:
2521+ fail("No elixir installations configured")
2522+
2523+ repository_ctx.file(
2524+ "BUILD.bazel",
2525+ _build_file_content(elixir_installations),
2526+ False,
2527+ )
2528+
2529+ toolchains = [
2530+ "@{}//{}:toolchain".format(repository_ctx.name, name)
2531+ for name in elixir_installations.keys()
2532+ ]
2533+
2534+ repository_ctx.template(
2535+ "defaults.bzl",
2536+ Label("//bazel/repositories:defaults.bzl.tpl"),
2537+ {
2538+ "%{TOOLCHAINS}": "\n".join([
2539+ ' "%s",' % t
2540+ for t in toolchains
2541+ ]),
2542+ },
2543+ False,
2544+ )
2545+
2546+elixir_config = repository_rule(
2547+ implementation = _impl,
2548+ attrs = {
2549+ "rabbitmq_server_workspace": attr.string(),
2550+ "types": attr.string_dict(),
2551+ "versions": attr.string_dict(),
2552+ "urls": attr.string_dict(),
2553+ "strip_prefixs": attr.string_dict(),
2554+ "sha256s": attr.string_dict(),
2555+ "elixir_homes": attr.string_dict(),
2556+ },
2557+ environ = [
2558+ ELIXIR_HOME_ENV_VAR,
2559+ "PATH",
2560+ ],
2561+ local = True,
2562+)
2563+
2564+def _elixir_home_from_elixir_path(repository_ctx, elixir_path):
2565+ ehr = repository_ctx.execute(
2566+ [
2567+ elixir_path,
2568+ "-e",
2569+ "IO.puts Path.dirname(Path.dirname(Path.dirname(Path.dirname(Path.expand(:code.which(System))))))",
2570+ ],
2571+ )
2572+ if ehr.return_code == 0:
2573+ elixir_home = ehr.stdout.strip("\n")
2574+ else:
2575+ elixir_home = str(elixir_path.dirname.dirname)
2576+ return elixir_home
2577+
2578+def _is_windows(repository_ctx):
2579+ return repository_ctx.os.name.lower().find("windows") != -1
2580+
2581+def _default_elixir_dict(repository_ctx):
2582+ if _is_windows(repository_ctx):
2583+ if ELIXIR_HOME_ENV_VAR in repository_ctx.os.environ:
2584+ elixir_home = repository_ctx.os.environ[ELIXIR_HOME_ENV_VAR]
2585+ elixir_path = elixir_home + "\\bin\\elixir"
2586+ else:
2587+ elixir_path = repository_ctx.which("elixir")
2588+ if elixir_path == None:
2589+ elixir_path = repository_ctx.path("C:/Program Files (x86)/Elixir/bin/elixir")
2590+ elixir_home = _elixir_home_from_elixir_path(repository_ctx, elixir_path)
2591+ elixir_home = msys2_path(elixir_home)
2592+ elif ELIXIR_HOME_ENV_VAR in repository_ctx.os.environ:
2593+ elixir_home = repository_ctx.os.environ[ELIXIR_HOME_ENV_VAR]
2594+ elixir_path = path_join(elixir_home, "bin", "elixir")
2595+ else:
2596+ elixir_path = repository_ctx.which("elixir")
2597+ if elixir_path == None:
2598+ elixir_path = repository_ctx.path("/usr/local/bin/elixir")
2599+ elixir_home = _elixir_home_from_elixir_path(repository_ctx, elixir_path)
2600+
2601+ version = repository_ctx.execute(
2602+ [
2603+ path_join(elixir_home, "bin", "elixir"),
2604+ "-e",
2605+ "IO.puts System.version()",
2606+ ],
2607+ timeout = 10,
2608+ )
2609+ if version.return_code == 0:
2610+ version = version.stdout.strip("\n")
2611+ identifier = _version_identifier(version)
2612+ return {
2613+ _DEFAULT_EXTERNAL_ELIXIR_PACKAGE_NAME: struct(
2614+ type = INSTALLATION_TYPE_EXTERNAL,
2615+ version = version,
2616+ identifier = identifier,
2617+ elixir_home = elixir_home,
2618+ ),
2619+ }
2620+ else:
2621+ return {
2622+ _DEFAULT_EXTERNAL_ELIXIR_PACKAGE_NAME: struct(
2623+ type = INSTALLATION_TYPE_EXTERNAL,
2624+ version = _ELIXIR_VERSION_UNKNOWN,
2625+ identifier = _ELIXIR_VERSION_UNKNOWN.lower(),
2626+ elixir_home = elixir_home,
2627+ ),
2628+ }
2629+
2630+def _build_file_content(elixir_installations):
2631+ build_file_content = """\
2632+package(
2633+ default_visibility = ["//visibility:public"],
2634+)
2635+
2636+constraint_setting(
2637+ name = "elixir_internal_external",
2638+ default_constraint_value = ":elixir_external",
2639+)
2640+
2641+constraint_value(
2642+ name = "elixir_external",
2643+ constraint_setting = ":elixir_internal_external",
2644+)
2645+
2646+constraint_value(
2647+ name = "elixir_internal",
2648+ constraint_setting = ":elixir_internal_external",
2649+)
2650+
2651+"""
2652+
2653+ default_installation = elixir_installations[_DEFAULT_EXTERNAL_ELIXIR_PACKAGE_NAME]
2654+
2655+ build_file_content += """\
2656+constraint_setting(
2657+ name = "elixir_version",
2658+ default_constraint_value = ":elixir_{}",
2659+)
2660+
2661+""".format(default_installation.identifier)
2662+
2663+ unique_identifiers = {
2664+ props.identifier: name
2665+ for (name, props) in elixir_installations.items()
2666+ }.keys()
2667+
2668+ for identifier in unique_identifiers:
2669+ build_file_content += """\
2670+constraint_value(
2671+ name = "elixir_{identifier}",
2672+ constraint_setting = ":elixir_version",
2673+)
2674+
2675+platform(
2676+ name = "elixir_{identifier}_platform",
2677+ constraint_values = [
2678+ ":elixir_{identifier}",
2679+ ],
2680+)
2681+
2682+""".format(identifier = identifier)
2683+
2684+ return build_file_content
2685diff --git a/bazel/secondary-umbrella.patch b/bazel/secondary-umbrella.patch
2686new file mode 100644
2687index 0000000..82cd492
2688--- /dev/null
2689+++ b/bazel/secondary-umbrella.patch
2690@@ -0,0 +1,13 @@
2691+diff --git a/rabbitmq.bzl b/rabbitmq.bzl
2692+index 85f9a2d790..08c2bc957e 100644
2693+--- a/rabbitmq.bzl
2694++++ b/rabbitmq.bzl
2695+@@ -28,6 +28,8 @@ STARTS_BACKGROUND_BROKER_TAG = "starts-background-broker"
2696+ MIXED_VERSION_CLUSTER_TAG = "mixed-version-cluster"
2697+
2698+ RABBITMQ_ERLC_OPTS = DEFAULT_ERLC_OPTS + [
2699++ "-DTEST=1",
2700++ "+nowarn_export_all",
2701+ "-DINSTR_MOD=gm",
2702+ ]
2703+
2704diff --git a/debian/changelog b/debian/changelog
2705index ed7c33a..6b48226 100644
2706--- a/debian/changelog
2707+++ b/debian/changelog
2708@@ -1,3 +1,45 @@
2709+rabbitmq-server (3.9.27-0ubuntu0.1) jammy; urgency=medium
2710+
2711+ * New upstream version 3.9.27 (LP: #2060248):
2712+ - In environments where DNS resolution is not yet available at the time
2713+ RabbitMQ nodes boot and try to perform peer discovery, such as CoreDNS
2714+ with default caching interval of 30s on Kubernetes, nodes now will
2715+ retry hostname resolution (including of their own host) several times
2716+ with a wait interval.
2717+ - LDAP server password could end up in the logs in certain types of
2718+ exceptions.
2719+ - Details about these and many futher changes can be found at
2720+ https://github.com/rabbitmq/rabbitmq-server/blob/main/release-notes/3.9.27.md
2721+ and earlier versions in the same folder.
2722+ * Added new dep8 tests (LP: #1679386):
2723+ - d/t/hello-world
2724+ - d/t/publish-subscribe
2725+ - d/t/rpc
2726+ - d/t/work-queue
2727+ * Packaging changes needed by this update:
2728+ - d/watch: update to find upstream tarball, and verify its signature
2729+ - d/upstream/signing-key.asc: added, downloaded from
2730+ https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
2731+ - Remove patches fixed upstream:
2732+ - d/p/lp1999816-fix-rabbitmqctl-status-disk-free-timeout.patch.
2733+ - d/p/CVE-2023-46118-{1,2}.patch: fix fuzz.
2734+ - d/p/lets-use-python3-not-python-binary.patch: refresh.
2735+ - d/p/downgrade_elixir.patch: downgrade the allowed elixir version minimum
2736+ to 1.12.2 to allow Jammy to run. Upstream upgrades the minimum for general
2737+ compiler optimizations, but is too recent for us.
2738+ - d/p/max-ports-compat.patch: before v3.9.23, the maximum number of
2739+ concurrent client connections was set based on the kernel open file handle
2740+ limit. In v3.9.23 the concurrent client connection limit was changed to
2741+ the value of the ERL_MAX_PORTS environment variable, and defaults to 65536
2742+ if the variable is not set. To not change the behavior in upgrades to this
2743+ version, this patch sets ERL_MAX_PORTS to the kernel open file handle
2744+ limit if the variable is not set already. If the variable is set,
2745+ then it's left alone. Note that ERL_MAX_PORTS must never be higher than
2746+ the kernel open file handle limit.
2747+ - d/rabbitmq-server.service: add notice about ERL_MAX_PORTS variable.
2748+
2749+ -- Mitchell Dzurick <mitchell.dzurick@canonical.com> Thu, 04 Apr 2024 12:54:06 -0700
2750+
2751 rabbitmq-server (3.9.13-1ubuntu0.22.04.2) jammy-security; urgency=medium
2752
2753 * SECURITY UPDATE: Denial of service
2754diff --git a/debian/patches/CVE-2023-46118-1.patch b/debian/patches/CVE-2023-46118-1.patch
2755index fa4d8f1..a0eb166 100644
2756--- a/debian/patches/CVE-2023-46118-1.patch
2757+++ b/debian/patches/CVE-2023-46118-1.patch
2758@@ -23,7 +23,7 @@ Index: rabbitmq-server-3.9.13/deps/rabbitmq_management/BUILD.bazel
2759 ===================================================================
2760 --- rabbitmq-server-3.9.13.orig/deps/rabbitmq_management/BUILD.bazel
2761 +++ rabbitmq-server-3.9.13/deps/rabbitmq_management/BUILD.bazel
2762-@@ -35,7 +35,8 @@ APP_ENV = """[
2763+@@ -36,7 +36,8 @@ APP_ENV = """[
2764
2765 {cors_allow_origins, []},
2766 {cors_max_age, 1800},
2767@@ -32,7 +32,7 @@ Index: rabbitmq-server-3.9.13/deps/rabbitmq_management/BUILD.bazel
2768 + {max_http_body_size, 20000000}
2769 ]"""
2770
2771- FIRST_SRCS = [
2772+ DEPS = [
2773 Index: rabbitmq-server-3.9.13/deps/rabbitmq_management/Makefile
2774 ===================================================================
2775 --- rabbitmq-server-3.9.13.orig/deps/rabbitmq_management/Makefile
2776diff --git a/debian/patches/CVE-2023-46118-2.patch b/debian/patches/CVE-2023-46118-2.patch
2777index 566afb9..b4c9d78 100644
2778--- a/debian/patches/CVE-2023-46118-2.patch
2779+++ b/debian/patches/CVE-2023-46118-2.patch
2780@@ -20,7 +20,7 @@ Index: rabbitmq-server-3.9.13/deps/rabbitmq_management/BUILD.bazel
2781 ===================================================================
2782 --- rabbitmq-server-3.9.13.orig/deps/rabbitmq_management/BUILD.bazel
2783 +++ rabbitmq-server-3.9.13/deps/rabbitmq_management/BUILD.bazel
2784-@@ -36,7 +36,7 @@ APP_ENV = """[
2785+@@ -37,7 +37,7 @@ APP_ENV = """[
2786 {cors_allow_origins, []},
2787 {cors_max_age, 1800},
2788 {content_security_policy, "script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'"},
2789@@ -28,7 +28,7 @@ Index: rabbitmq-server-3.9.13/deps/rabbitmq_management/BUILD.bazel
2790 + {max_http_body_size, 10000000}
2791 ]"""
2792
2793- FIRST_SRCS = [
2794+ DEPS = [
2795 Index: rabbitmq-server-3.9.13/deps/rabbitmq_management/Makefile
2796 ===================================================================
2797 --- rabbitmq-server-3.9.13.orig/deps/rabbitmq_management/Makefile
2798diff --git a/debian/patches/downgrade_elixir.patch b/debian/patches/downgrade_elixir.patch
2799new file mode 100644
2800index 0000000..99af347
2801--- /dev/null
2802+++ b/debian/patches/downgrade_elixir.patch
2803@@ -0,0 +1,11 @@
2804+--- a/deps/rabbitmq_cli/mix.exs
2805++++ b/deps/rabbitmq_cli/mix.exs
2806+@@ -10,7 +10,7 @@
2807+ def project do
2808+ [
2809+ app: :rabbitmqctl,
2810+- elixir: ">= 1.13.4 and < 1.15.0",
2811++ elixir: ">= 1.12.2 and < 1.15.0",
2812+ build_embedded: Mix.env() == :prod,
2813+ start_permanent: Mix.env() == :prod,
2814+ escript: [main_module: RabbitMQCtl, emu_args: "-hidden", path: "escript/rabbitmqctl"],
2815diff --git a/debian/patches/lets-use-python3-not-python-binary.patch b/debian/patches/lets-use-python3-not-python-binary.patch
2816index 60ef1c4..c681ea1 100644
2817--- a/debian/patches/lets-use-python3-not-python-binary.patch
2818+++ b/debian/patches/lets-use-python3-not-python-binary.patch
2819@@ -1,101 +1,60 @@
2820 Description: Using /usr/bin/python3, not just python
2821 Author: Thomas Goirand <zigo@debian.org>
2822 Forwarded: no
2823-Last-Update: 2019-09-23
2824-
2825-Index: rabbitmq-server/deps/amqp10_common/codegen.py
2826-===================================================================
2827---- rabbitmq-server.orig/deps/amqp10_common/codegen.py
2828-+++ rabbitmq-server/deps/amqp10_common/codegen.py
2829+Last-Update: 2024-04-04
2830+--- a/deps/amqp10_common/codegen.py
2831++++ b/deps/amqp10_common/codegen.py
2832 @@ -1,4 +1,4 @@
2833 -#!/usr/bin/env python
2834 +#!/usr/bin/env python3
2835
2836 from __future__ import print_function
2837
2838-Index: rabbitmq-server/deps/amqp10_common/development.post.mk
2839-===================================================================
2840---- rabbitmq-server.orig/deps/amqp10_common/development.post.mk
2841-+++ rabbitmq-server/deps/amqp10_common/development.post.mk
2842-@@ -2,7 +2,7 @@
2843- # Framing sources generation.
2844- # --------------------------------------------------------------------
2845-
2846--PYTHON ?= python
2847-+PYTHON ?= python3
2848- CODEGEN = $(CURDIR)/codegen.py
2849- CODEGEN_DIR ?= $(DEPS_DIR)/rabbitmq_codegen
2850- CODEGEN_AMQP = $(CODEGEN_DIR)/amqp_codegen.py
2851-Index: rabbitmq-server/deps/rabbit_common/codegen.py
2852-===================================================================
2853---- rabbitmq-server.orig/deps/rabbit_common/codegen.py
2854-+++ rabbitmq-server/deps/rabbit_common/codegen.py
2855+--- a/deps/rabbit_common/codegen.py
2856++++ b/deps/rabbit_common/codegen.py
2857 @@ -1,4 +1,4 @@
2858 -#!/usr/bin/env python
2859 +#!/usr/bin/env python3
2860
2861 ## This Source Code Form is subject to the terms of the Mozilla Public
2862 ## License, v. 2.0. If a copy of the MPL was not distributed with this
2863-Index: rabbitmq-server/deps/rabbit_common/development.post.mk
2864-===================================================================
2865---- rabbitmq-server.orig/deps/rabbit_common/development.post.mk
2866-+++ rabbitmq-server/deps/rabbit_common/development.post.mk
2867-@@ -2,7 +2,7 @@
2868- # Framing sources generation.
2869- # --------------------------------------------------------------------
2870-
2871--PYTHON ?= python
2872-+PYTHON ?= python3
2873- CODEGEN = $(CURDIR)/codegen.py
2874- CODEGEN_DIR ?= $(DEPS_DIR)/rabbitmq_codegen
2875- CODEGEN_AMQP = $(CODEGEN_DIR)/amqp_codegen.py
2876-Index: rabbitmq-server/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/manage.py
2877-===================================================================
2878---- rabbitmq-server.orig/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/manage.py
2879-+++ rabbitmq-server/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/manage.py
2880+--- a/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/manage.py
2881++++ b/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/manage.py
2882 @@ -1,4 +1,4 @@
2883 -#!/usr/bin/env python
2884 +#!/usr/bin/env python3
2885 import os
2886 import sys
2887
2888-Index: rabbitmq-server/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/start.sh
2889-===================================================================
2890---- rabbitmq-server.orig/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/start.sh
2891-+++ rabbitmq-server/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/start.sh
2892-@@ -1,3 +1,3 @@
2893- #!/bin/sh
2894--python manage.py migrate
2895--python manage.py runserver 0.0.0.0:8000
2896-+python3 manage.py migrate
2897-+python3 manage.py runserver 0.0.0.0:8000
2898-Index: rabbitmq-server/deps/rabbitmq_consistent_hash_exchange/examples/python/example1.py
2899-===================================================================
2900---- rabbitmq-server.orig/deps/rabbitmq_consistent_hash_exchange/examples/python/example1.py
2901-+++ rabbitmq-server/deps/rabbitmq_consistent_hash_exchange/examples/python/example1.py
2902+--- a/deps/rabbitmq_consistent_hash_exchange/examples/python/example1.py
2903++++ b/deps/rabbitmq_consistent_hash_exchange/examples/python/example1.py
2904 @@ -1,4 +1,4 @@
2905 -#!/usr/bin/env python
2906 +#!/usr/bin/env python3
2907
2908 import pika
2909 import time
2910-Index: rabbitmq-server/deps/rabbitmq_consistent_hash_exchange/examples/python/example2.py
2911-===================================================================
2912---- rabbitmq-server.orig/deps/rabbitmq_consistent_hash_exchange/examples/python/example2.py
2913-+++ rabbitmq-server/deps/rabbitmq_consistent_hash_exchange/examples/python/example2.py
2914+--- a/deps/rabbitmq_consistent_hash_exchange/examples/python/example2.py
2915++++ b/deps/rabbitmq_consistent_hash_exchange/examples/python/example2.py
2916 @@ -1,4 +1,4 @@
2917 -#!/usr/bin/env python
2918 +#!/usr/bin/env python3
2919
2920 import pika
2921 import time
2922-Index: rabbitmq-server/deps/rabbitmq_consistent_hash_exchange/examples/python/example3.py
2923-===================================================================
2924---- rabbitmq-server.orig/deps/rabbitmq_consistent_hash_exchange/examples/python/example3.py
2925-+++ rabbitmq-server/deps/rabbitmq_consistent_hash_exchange/examples/python/example3.py
2926+--- a/deps/rabbitmq_consistent_hash_exchange/examples/python/example3.py
2927++++ b/deps/rabbitmq_consistent_hash_exchange/examples/python/example3.py
2928 @@ -1,4 +1,4 @@
2929 -#!/usr/bin/env python
2930 +#!/usr/bin/env python3
2931
2932 import pika
2933 import time
2934+--- a/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/start.sh
2935++++ b/deps/rabbitmq_auth_backend_http/examples/rabbitmq_auth_backend_django/start.sh
2936+@@ -1,3 +1,3 @@
2937+ #!/bin/sh
2938+-python manage.py migrate
2939+-python manage.py runserver 0.0.0.0:8000
2940++python3 manage.py migrate
2941++python3 manage.py runserver 0.0.0.0:8000
2942diff --git a/debian/patches/lp1999816-fix-rabbitmqctl-status-disk-free-timeout.patch b/debian/patches/lp1999816-fix-rabbitmqctl-status-disk-free-timeout.patch
2943deleted file mode 100644
2944index 680c06c..0000000
2945--- a/debian/patches/lp1999816-fix-rabbitmqctl-status-disk-free-timeout.patch
2946+++ /dev/null
2947@@ -1,37 +0,0 @@
2948-From: Philip Kuryloski <kuryloskip@vmware.com>
2949-Subject: Fix `rabbitmqctl status` when the disk_free cannot be
2950- determined
2951-
2952-By adjusting RabbitMQ.CLI.InformationUnit to no longer attempt to
2953-convert non-numeric values
2954-
2955-Origin: upstream, https://github.com/rabbitmq/rabbitmq-server/commit/9dc9b92a94f3f3bb48824ea21b9f4a9236a9a3d3
2956-Bug-Ubuntu: https://bugs.launchpad.net/bugs/1999816
2957-Last-Update: 2023-01-30
2958----
2959-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
2960-diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/information_unit.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/information_unit.ex
2961-index c5e02277a9e..fa548c8fe18 100644
2962---- a/deps/rabbitmq_cli/lib/rabbitmq/cli/information_unit.ex
2963-+++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/information_unit.ex
2964-@@ -30,14 +30,18 @@ defmodule RabbitMQ.CLI.InformationUnit do
2965- :rabbit_resource_monitor_misc.parse_information_unit(val)
2966- end
2967-
2968-- def convert(bytes, "bytes") do
2969-+ def convert(bytes, "bytes") when is_number(bytes) do
2970- bytes
2971- end
2972-
2973-- def convert(bytes, unit) do
2974-+ def convert(bytes, unit) when is_number(bytes) do
2975- do_convert(bytes, String.downcase(unit))
2976- end
2977-
2978-+ def convert(:unknown, _) do
2979-+ :unknown
2980-+ end
2981-+
2982- def known_unit?(val) do
2983- MapSet.member?(known_units(), String.downcase(val))
2984- end
2985diff --git a/debian/patches/max-ports-compat.patch b/debian/patches/max-ports-compat.patch
2986new file mode 100644
2987index 0000000..9e874b1
2988--- /dev/null
2989+++ b/debian/patches/max-ports-compat.patch
2990@@ -0,0 +1,32 @@
2991+Description: adjust ERL_MAX_PORTS according to the kernel file handle limit
2992+ In v3.9.23, upstream changed how it handles the maximum concurrent client
2993+ connections. Instead of using the effective kernel open file handle limit, it
2994+ now has a default of 65536, which can be changed by the ERL_MAX_PORTS
2995+ environment variable. See https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.23 for details.
2996+ .
2997+ With this patch, we are attempting to keep the same behavior as previous
2998+ versions by following the kernel file handle limit, unless there is an
2999+ ERL_MAX_PORTS variable set.
3000+Author: Andreas Hasenack <andeas.hasenack@canonical.com>
3001+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/2060248
3002+Forwarded: no
3003+Last-Update: 2024-06-28
3004+
3005+diff --git a/deps/rabbit/scripts/rabbitmq-env b/deps/rabbit/scripts/rabbitmq-env
3006+index 1c7ed764..d1938527 100755
3007+--- a/deps/rabbit/scripts/rabbitmq-env
3008++++ b/deps/rabbit/scripts/rabbitmq-env
3009+@@ -108,7 +108,12 @@ fi
3010+ # Default is defined here:
3011+ # https://github.com/erlang/otp/blob/master/erts/emulator/beam/erl_port.h
3012+ if [ -z "$ERL_MAX_PORTS" ]; then
3013+- export ERL_MAX_PORTS=65536
3014++ nofile=$(ulimit -n) # soft limit, could be defined in the systemd unit file via LimitNOFILE
3015++ if [ -n "${nofile}" ]; then
3016++ export ERL_MAX_PORTS="${nofile}"
3017++ else
3018++ export ERL_MAX_PORTS=65536
3019++ fi
3020+ fi
3021+
3022+ [ -n "$ERL_EPMD_PORT" ] && export ERL_EPMD_PORT
3023diff --git a/debian/patches/rabbitmq-dist.mk.patch b/debian/patches/rabbitmq-dist.mk.patch
3024index 92ec5a1..b56b0a1 100644
3025--- a/debian/patches/rabbitmq-dist.mk.patch
3026+++ b/debian/patches/rabbitmq-dist.mk.patch
3027@@ -3,12 +3,9 @@ Author: Yuriy Vidineev <yuriy.vidineev@revjet.com>
3028 Forwarded: no
3029 Bug-Debian: https://bugs.debian.org/964636
3030 Last-Update: 2020-07-22
3031-
3032-Index: rabbitmq-server/deps/rabbit_common/mk/rabbitmq-dist.mk
3033-===================================================================
3034---- rabbitmq-server.orig/deps/rabbit_common/mk/rabbitmq-dist.mk
3035-+++ rabbitmq-server/deps/rabbit_common/mk/rabbitmq-dist.mk
3036-@@ -80,8 +80,8 @@ $$(dist_$(1)_ez): $$(if $$(wildcard $(3)
3037+--- a/deps/rabbit_common/mk/rabbitmq-dist.mk
3038++++ b/deps/rabbit_common/mk/rabbitmq-dist.mk
3039+@@ -81,8 +81,8 @@
3040 ifeq ($$(shell test -f $(3)/rabbitmq-components.mk \
3041 && grep -q '^list-dist-deps::' $(3)/Makefile && echo yes),yes)
3042 $$(dist_$(1)_ez): $$(patsubst %,$(3)/%, \
3043diff --git a/debian/patches/series b/debian/patches/series
3044index b39ee2b..a72eb3c 100644
3045--- a/debian/patches/series
3046+++ b/debian/patches/series
3047@@ -1,5 +1,6 @@
3048-lets-use-python3-not-python-binary.patch
3049-rabbitmq-dist.mk.patch
3050-lp1999816-fix-rabbitmqctl-status-disk-free-timeout.patch
3051 CVE-2023-46118-1.patch
3052 CVE-2023-46118-2.patch
3053+downgrade_elixir.patch
3054+rabbitmq-dist.mk.patch
3055+lets-use-python3-not-python-binary.patch
3056+max-ports-compat.patch
3057diff --git a/debian/rabbitmq-server.service b/debian/rabbitmq-server.service
3058index f3bce06..a2266ff 100644
3059--- a/debian/rabbitmq-server.service
3060+++ b/debian/rabbitmq-server.service
3061@@ -11,6 +11,11 @@ UMask=0027
3062 NotifyAccess=all
3063 TimeoutStartSec=600
3064 LimitNOFILE=65536
3065+# ERL_MAX_PORTS can be used to further limit the number of concurrent client
3066+# connections. It should be equal or less than LimitNOFILE, and be a power of 2.
3067+# If not defined, the startup script will set ERL_MAX_PORTS to the value of
3068+# LimitNOFILE. An example is below.
3069+# Environment="ERL_MAX_PORTS=16384"
3070 SyslogIdentifier=rabbitmq
3071 Restart=on-failure
3072 RestartSec=10
3073diff --git a/debian/tests/control b/debian/tests/control
3074index 293be3b..2d4c5e4 100644
3075--- a/debian/tests/control
3076+++ b/debian/tests/control
3077@@ -1,2 +1,22 @@
3078 Tests: smoke-test
3079 Restrictions: superficial, isolation-container
3080+
3081+Tests: hello-world
3082+Restrictions: isolation-container, needs-root, allow-stderr
3083+Depends: rabbitmq-server,
3084+ python3-pika
3085+
3086+Tests: work-queue
3087+Restrictions: isolation-container, needs-root, allow-stderr
3088+Depends: rabbitmq-server,
3089+ python3-pika
3090+
3091+Tests: publish-subscribe
3092+Restrictions: isolation-container, needs-root, allow-stderr
3093+Depends: rabbitmq-server,
3094+ python3-pika
3095+
3096+Tests: rpc
3097+Restrictions: isolation-container, needs-root, allow-stderr
3098+Depends: rabbitmq-server,
3099+ python3-pika
3100diff --git a/debian/tests/hello-world b/debian/tests/hello-world
3101new file mode 100755
3102index 0000000..cd42954
3103--- /dev/null
3104+++ b/debian/tests/hello-world
3105@@ -0,0 +1,99 @@
3106+#!/bin/sh
3107+
3108+# Reset rabbitmq
3109+rabbitmqctl stop_app
3110+rabbitmqctl reset
3111+rabbitmqctl start_app
3112+
3113+cat <<EOF >send.py
3114+#!/usr/bin/env python3
3115+import pika
3116+
3117+connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
3118+channel = connection.channel()
3119+
3120+channel.queue_declare(queue='hello')
3121+
3122+channel.basic_publish(exchange='',
3123+ routing_key='hello',
3124+ body='Hello World!')
3125+print(" [x] Sent 'Hello World!'")
3126+EOF
3127+
3128+cat <<EOF >receive.py
3129+#!/usr/bin/env python3
3130+import pika, sys, os
3131+
3132+def main():
3133+ connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
3134+ channel = connection.channel()
3135+
3136+ channel.queue_declare(queue='hello')
3137+
3138+ def callback(ch, method, properties, body):
3139+ print(f" [x] Received {body}")
3140+
3141+ channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
3142+
3143+ print(' [*] Waiting for messages. To exit press CTRL+C')
3144+ channel.start_consuming()
3145+
3146+if __name__ == '__main__':
3147+ try:
3148+ main()
3149+ except KeyboardInterrupt:
3150+ print('Interrupted')
3151+ try:
3152+ sys.exit(0)
3153+ except SystemExit:
3154+ os._exit(0)
3155+EOF
3156+
3157+echo "sending the message now"
3158+python3 send.py
3159+
3160+# `rabbitmqctl list_queues` should look like
3161+# Timeout: 60.0 seconds ...
3162+# Listing queues for vhost / ...
3163+# name messages
3164+# hello 1
3165+#
3166+# Check that the hello queue exists and that there is 1 message
3167+rabbitmqctl list_queues # print for debugging
3168+if rabbitmqctl list_queues | grep hello | awk '{print $2}' | grep -q "^1$"; then
3169+ echo "The 'hello' queue exists with a single message."
3170+else
3171+ if [ $? -eq 1 ]; then
3172+ echo "Error: 'hello' queue not found."
3173+ exit 1
3174+ else
3175+ echo "Error: An unknown error occurred."
3176+ exit 1
3177+ fi
3178+fi
3179+
3180+# should see
3181+# [*] Waiting for messages. To exit press CTRL+C
3182+# [x] Received b'Hello World!'
3183+timeout 3s python3 receive.py
3184+
3185+# now the hello queue should still exist, but have no messages like so:
3186+# # rabbitmqctl list_queues
3187+# Timeout: 60.0 seconds ...
3188+# Listing queues for vhost / ...
3189+# name messages
3190+# hello 0
3191+#
3192+# Check that the hello queue exists and that there is no message
3193+rabbitmqctl list_queues # print for debugging
3194+if rabbitmqctl list_queues | grep hello | awk '{print $2}' | grep -q "^0$"; then
3195+ echo "The 'hello' queue exists with no messages."
3196+else
3197+ if [ $? -eq 1 ]; then
3198+ echo "Error: 'hello' queue not found."
3199+ exit 1
3200+ else
3201+ echo "Error: An unknown error occurred."
3202+ exit 1
3203+ fi
3204+fi
3205diff --git a/debian/tests/publish-subscribe b/debian/tests/publish-subscribe
3206new file mode 100755
3207index 0000000..b721ad2
3208--- /dev/null
3209+++ b/debian/tests/publish-subscribe
3210@@ -0,0 +1,48 @@
3211+#!/bin/sh
3212+
3213+# Reset rabbitmq
3214+rabbitmqctl stop_app
3215+rabbitmqctl reset
3216+rabbitmqctl start_app
3217+
3218+cat << EOF > receive_logs.py
3219+#!/usr/bin/env python3
3220+import pika
3221+
3222+connection = pika.BlockingConnection(
3223+ pika.ConnectionParameters(host='localhost'))
3224+channel = connection.channel()
3225+
3226+channel.exchange_declare(exchange='logs', exchange_type='fanout')
3227+
3228+result = channel.queue_declare(queue='', exclusive=True)
3229+queue_name = result.method.queue
3230+
3231+channel.queue_bind(exchange='logs', queue=queue_name)
3232+
3233+print(' [*] Waiting for logs. To exit press CTRL+C')
3234+
3235+def callback(ch, method, properties, body):
3236+ print(f" [x] {body}")
3237+
3238+channel.basic_consume(
3239+ queue=queue_name, on_message_callback=callback, auto_ack=True)
3240+
3241+channel.start_consuming()
3242+EOF
3243+
3244+# create 2 consumers
3245+python3 receive_logs.py &
3246+python3 receive_logs.py &
3247+
3248+# the consumers are listed in the bindings.
3249+# # rabbitmqctl list_bindings | grep logs
3250+# logs exchange amq.gen-9cej1xIy-VQLf6d3UXvU1w queue amq.gen-9cej1xIy-VQLf6d3UXvU1w []
3251+# logs exchange amq.gen-H-ky4z3jFxa5UxpigJAD0g queue amq.gen-H-ky4z3jFxa5UxpigJAD0g []
3252+rabbitmqctl list_bindings # print for debug
3253+if [ $(rabbitmqctl list_bindings | grep "logs" | awk '{print $1}' | wc -l) -eq 2 ]; then
3254+ echo "The number of consumers is 2."
3255+else
3256+ echo "The number of consumers is not 2."
3257+ exit 1
3258+fi
3259diff --git a/debian/tests/rpc b/debian/tests/rpc
3260new file mode 100755
3261index 0000000..9e96551
3262--- /dev/null
3263+++ b/debian/tests/rpc
3264@@ -0,0 +1,119 @@
3265+#!/bin/sh
3266+
3267+# Reset rabbitmq
3268+rabbitmqctl stop_app
3269+rabbitmqctl reset
3270+rabbitmqctl start_app
3271+
3272+cat << EOF > rpc_server.py
3273+#!/usr/bin/env python
3274+import pika
3275+
3276+connection = pika.BlockingConnection(
3277+ pika.ConnectionParameters(host='localhost'))
3278+
3279+channel = connection.channel()
3280+
3281+channel.queue_declare(queue='rpc_queue')
3282+
3283+def fib(n):
3284+ if n == 0:
3285+ return 0
3286+ elif n == 1:
3287+ return 1
3288+ else:
3289+ return fib(n - 1) + fib(n - 2)
3290+
3291+def on_request(ch, method, props, body):
3292+ n = int(body)
3293+
3294+ print(f" [.] fib({n})")
3295+ response = fib(n)
3296+
3297+ ch.basic_publish(exchange='',
3298+ routing_key=props.reply_to,
3299+ properties=pika.BasicProperties(correlation_id = \
3300+ props.correlation_id),
3301+ body=str(response))
3302+ ch.basic_ack(delivery_tag=method.delivery_tag)
3303+
3304+channel.basic_qos(prefetch_count=1)
3305+channel.basic_consume(queue='rpc_queue', on_message_callback=on_request)
3306+
3307+print(" [x] Awaiting RPC requests")
3308+channel.start_consuming()
3309+EOF
3310+
3311+cat << EOF > rpc_client.py
3312+#!/usr/bin/env python3
3313+import pika
3314+import uuid
3315+
3316+
3317+class FibonacciRpcClient(object):
3318+
3319+ def __init__(self):
3320+ self.connection = pika.BlockingConnection(
3321+ pika.ConnectionParameters(host='localhost'))
3322+
3323+ self.channel = self.connection.channel()
3324+
3325+ result = self.channel.queue_declare(queue='', exclusive=True)
3326+ self.callback_queue = result.method.queue
3327+
3328+ self.channel.basic_consume(
3329+ queue=self.callback_queue,
3330+ on_message_callback=self.on_response,
3331+ auto_ack=True)
3332+
3333+ self.response = None
3334+ self.corr_id = None
3335+
3336+ def on_response(self, ch, method, props, body):
3337+ if self.corr_id == props.correlation_id:
3338+ self.response = body
3339+
3340+ def call(self, n):
3341+ self.response = None
3342+ self.corr_id = str(uuid.uuid4())
3343+ self.channel.basic_publish(
3344+ exchange='',
3345+ routing_key='rpc_queue',
3346+ properties=pika.BasicProperties(
3347+ reply_to=self.callback_queue,
3348+ correlation_id=self.corr_id,
3349+ ),
3350+ body=str(n))
3351+ while self.response is None:
3352+ self.connection.process_data_events(time_limit=None)
3353+ return int(self.response)
3354+
3355+
3356+fibonacci_rpc = FibonacciRpcClient()
3357+
3358+print(" [x] Requesting fib(30)")
3359+response = fibonacci_rpc.call(30)
3360+print(f" [.] Got {response}")
3361+EOF
3362+
3363+# Start the RPC server
3364+python3 rpc_server.py &
3365+
3366+# Give the server some time to start
3367+sleep 2
3368+
3369+# Run a client to initiate a job for the fibonacci sequence
3370+client_result=$(python3 rpc_client.py)
3371+
3372+# $client_results should look like:
3373+# [x] Requesting fib(30)
3374+# [.] fib(30)
3375+# [.] Got 832040
3376+
3377+echo $client_result
3378+if echo $client_result | grep -q "Got 832040"; then
3379+ echo "client ran succesffuly"
3380+else
3381+ echo "ERROR, something went wrong."
3382+ exit 1
3383+fi
3384diff --git a/debian/tests/smoke-test b/debian/tests/smoke-test
3385index 13ff26b..56a4899 100755
3386--- a/debian/tests/smoke-test
3387+++ b/debian/tests/smoke-test
3388@@ -1,7 +1,3 @@
3389 #!/bin/sh
3390
3391-exec 2>&1
3392-
3393-set -exu
3394-
3395 systemctl is-active rabbitmq-server.service
3396diff --git a/debian/tests/work-queue b/debian/tests/work-queue
3397new file mode 100755
3398index 0000000..5db58d5
3399--- /dev/null
3400+++ b/debian/tests/work-queue
3401@@ -0,0 +1,117 @@
3402+#!/bin/sh
3403+
3404+# Reset rabbitmq
3405+rabbitmqctl stop_app
3406+rabbitmqctl reset
3407+rabbitmqctl start_app
3408+
3409+cat << EOF > new_task.py
3410+#!/usr/bin/env python3
3411+import pika
3412+import sys
3413+
3414+connection = pika.BlockingConnection(
3415+ pika.ConnectionParameters(host='localhost'))
3416+channel = connection.channel()
3417+
3418+channel.queue_declare(queue='task_queue', durable=True)
3419+
3420+message = ' '.join(sys.argv[1:]) or "Hello World!"
3421+channel.basic_publish(
3422+ exchange='',
3423+ routing_key='task_queue',
3424+ body=message,
3425+ properties=pika.BasicProperties(delivery_mode=2) # Set delivery mode to persistent (2)
3426+ )
3427+print(f" [x] Sent {message}")
3428+connection.close()
3429+EOF
3430+
3431+cat << EOF > worker.py
3432+#!/usr/bin/env python3
3433+import pika
3434+import time
3435+
3436+connection = pika.BlockingConnection(
3437+ pika.ConnectionParameters(host='localhost'))
3438+channel = connection.channel()
3439+
3440+channel.queue_declare(queue='task_queue', durable=True)
3441+print(' [*] Waiting for messages. To exit press CTRL+C')
3442+
3443+
3444+def callback(ch, method, properties, body):
3445+ print(f" [x] Received {body.decode()}")
3446+ time.sleep(body.count(b'.'))
3447+ print(" [x] Done")
3448+ ch.basic_ack(delivery_tag=method.delivery_tag)
3449+
3450+
3451+channel.basic_qos(prefetch_count=1)
3452+channel.basic_consume(queue='task_queue', on_message_callback=callback)
3453+
3454+channel.start_consuming()
3455+EOF
3456+
3457+
3458+# Create 5 queues messages
3459+python3 new_task.py First message.
3460+python3 new_task.py Second message..
3461+python3 new_task.py Third message...
3462+python3 new_task.py Fourth message....
3463+python3 new_task.py Fifth message.....
3464+
3465+# check the queued messages, we shoudl have 5 such as:
3466+# # rabbitmqctl list_queues name messages_ready messages_unacknowledged
3467+# Timeout: 60.0 seconds ...
3468+# Listing queues for vhost / ...
3469+# name messages_ready messages_unacknowledged
3470+# hello 0 0
3471+# task_queue 5 0
3472+#
3473+# Check that the task queue exists and that there is 5 messages
3474+echo "Expected:"
3475+echo "task_queue 5 0"
3476+echo "Actual:"
3477+tqueue=$(rabbitmqctl list_queues name messages_ready messages_unacknowledged | grep task_queue)
3478+echo $tqueue
3479+if echo $tqueue | awk '{print $2}' | grep -q "^5$"; then
3480+ echo "The 'task_queue' queue exists with 5 message."
3481+else
3482+ echo "Error: error checking the task_queue"
3483+ exit 1
3484+fi
3485+
3486+# Now create 2 workers
3487+python3 worker.py &
3488+python3 worker.py &
3489+
3490+# let the workers do their job
3491+sleep 13
3492+
3493+# Now there should be no messages_ready and no messages_unacknowledged such as:
3494+# # rabbitmqctl list_queues name messages_ready messages_unacknowledged
3495+# Timeout: 60.0 seconds ...
3496+# Listing queues for vhost / ...
3497+# name messages_ready messages_unacknowledged
3498+# hello 0 0
3499+# task_queue 0 0
3500+echo "Expected:"
3501+echo "task_queue 0 0"
3502+echo "Actual:"
3503+tqueue=$(rabbitmqctl list_queues name messages_ready messages_unacknowledged | grep task_queue)
3504+echo $tqueue
3505+if echo $tqueue | grep task_queue | awk '{print $2}' | grep -q "^0"; then
3506+ echo "The 'task_queue' queue exists with 0 messages_ready."
3507+else
3508+ echo "Error: checking the task_queue messages_ready"
3509+ exit 1
3510+fi
3511+
3512+if echo $tqueue | awk '{print $3}' | grep -q "^0"; then
3513+ echo "The 'task_queue' queue exists with 0 messages_unacknowledged."
3514+else
3515+ echo "Error: checking the task_queue messages_unacknowledged"
3516+ exit 1
3517+fi
3518+
3519diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc
3520new file mode 100644
3521index 0000000..9171461
3522--- /dev/null
3523+++ b/debian/upstream/signing-key.asc
3524@@ -0,0 +1,52 @@
3525+-----BEGIN PGP PUBLIC KEY BLOCK-----
3526+
3527+mQINBFc6394BEACzae+l1pU31AMhJrRx4BqYv8ZCVUBOeiS3xIcgme1Oq2HSq/Vt
3528+x49VPU9xY9ni4GjOU9c9/J9/esuigbctCN7CdR8bqN/srwqmuIPNIS/MvGhNimjO
3529+/EUKcZtmJ5fnFk08bzjkyS/ScEzf3jdJadrercoPpbAKWnzCUblX8AdFDyDJhl65
3530+TlSKS9+Sz0tfSdUIa0LpyJHZmLQ4chCy6KbDUAvchM2xUTIEJwx+sL4n/J6yYkZl
3531+L90mVi4QEYl1Cajioeg9zxduoUmXq0SR5gQe6VIaXYrIk2gOEMNQL4P/4CKEn9No
3532+1yvUP1+dSYTyvbmF+1pr16xPyNpw3ydmxDX9VxZAEnzPabB8Uortirtt0Dpopufy
3533+TJR99dPcKV+BWJtQF6xD30kj8LaDfhyVeB6Bo+L0hhhvnZYWkps8ZJ1swcoBjir7
3534+RDq8hJVqu8YHrzsiFL5Ut/pRkNhrK83GVOxnTndmj/MNboExD3IR/yjCiWNxC9Zu
3535+Iaedv2ux+0KrQVTDU7I97x2GDwyiUMnKL7IKWSOTDR4osv5RlJzAovuv2+lZ8sle
3536+ZvCEWOGeEYYM1VLDgXhPQdMwyizJ113oobxbqF+InlWq/T9mWmJDLb4wAiha3KKE
3537+XJi8wXkJMdRQ0ftM1zKD8qBMukyVndZ6yNQrx3uHAP/Yl2XKPUbtkq/KVQARAQAB
3538+tDBSYWJiaXRNUSBSZWxlYXNlIFNpZ25pbmcgS2V5IDxpbmZvQHJhYmJpdG1xLmNv
3539+bT6JAjcEEwEKACEFAlc6394CGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ
3540+a3OjbmAm38qiJQ/+PkS0I+Be1jQINT2F4f8Mwq4Zxcqm4whbg6DH6zkvvqSqXFNB
3541+wg7HVsC3qQ9Uh6OPw3dziBHmsOE50DpeqCGjHGacJ/Az/00PHKUn8eJQ/dIB1rla
3542+PcSOBUP2CrMLLh9PbP1ZDm2/6gpInyYIRQox8k7j5PnHSVprYAA6tp/11i351WOQ
3543+WkuN54482svVRfUEttt0NPLXtXJQl4V1eBt8+J11ZSh0mq2QSTxg211YBY0ugeVx
3544+Q0PBIWvrNmcsnBttj5MJ/4L9nFmuemiSS3M9ONjwDBxaiaWCwxFwKXGensNOWeZy
3545+bBfbhQxTpOKSNgyk+MymrG5EyI7fVlbmmHEhuYmV4pJadXmW1a9wvRHap/aLR1Aw
3546+akFI29CABbnYD3ZXg+DmNqqE6um5Uem2zYr/9hfSL5KuuwawoyW8HV4gKBe+MgW1
3547+n1lECvECt9Bn2VepjIUCv4gfHBDel5v1CXxZpTnHLt8Hsno1qTf6dGvvBYEPyTA+
3548+cAlUeCmfjhBVNQEapUzgW0D7E8JaWHAbJPtwwp/iIO/xqEps3VGOouG+G4GPiABh
3549+CP7hYUceecgVAF5g75gcI2mZeXAfbHVdfffZZXSYA7RjOAA1bLOopjq6UvYyIBhe
3550+D72feGzkEPtjTpHtqttDFO9ypBEwnJjTpw2uTcBIbc6E7AThaZeEF/JC84aIRgQQ
3551+EQoABgUCV0RROwAKCRD3uM6mBW6OVjBwAJ9j4tcWbw03rBy5j4LjP9a4EToJcwCf
3552+TEfCiAWldVzFkDM9jBfu0V+rIwC5Ag0EVzrf3gEQAN4Nor5B6nG+Rrb0yzI7Q1sO
3553+VM+OD6CdCN4Ic9E3u+pgsfbtRQKRuSNk8LyPVOpI5rpsJhqGKEDOUWEtb7uyfZxV
3554+J57QhbhIiJTJsFp50mofC58Kb8+vQ4x6QKdW9dwNSH3+BzwHi6QN+b+ZFifC4J6H
3555+q/1Ebu1b6q7aWjY7dPh2K+XgKTIq6qio9HFqUTGdj2QM0eLiQ6FDDKH0cMvVqPGD
3556+dwJXAYoG5Br6WeYFyoBiygfaKXMVu72dL9YhyeUfGJtrZkRv6zqrkwnjWL7Xu1Rd
3557+5gdYXV1QBz3SyBdZYS3MCbvkMLEkBCXrMG4zvReasrkanMANRQyM/XPMS5joO5dD
3558+cvL5FDQeOy7+YlznkM5pAar2SLrJDerjVLBvXdCBX4MjsW05t3OPg6ryMId1rHbY
3559+XtPslrCm9abox53dUtd16Gp/FSxs2TT3Wbos0/zel/zOIyj4kcVR3QjplMchlWOA
3560+YLYO5VwM1f49/xvFOEMiyb98ameS0fFf1pNAstLodEDxgXIdzoelxbybYrRLymgD
3561+tp3gkf53mhSN1q5Qu+/CQbSChqbcAsT8qUSdeGkvzR4qKEzDh+dEo4lheNwi7xPZ
3562+/kj2RjaKs6jjxUWw9oyqxdGt9IwbRo+0TV+gLKUv/uj/lVKO5O3alNN37lobLQbF
3563+5fFTrp9oXz2eerqAJFI7ABEBAAGJAh8EGAEKAAkFAlc6394CGwwACgkQa3OjbmAm
3564+38pltg//W37vxUm6OMmXaKuLtE/G4GsM7QHD/OIvXZw+HIzyVClsM8v0+DGolOGU
3565+Qif9HBRZfrgEWHTVeTDkynq3y7hbA2ekXEGvdKMVTt1JqRWgWPP57dAu8aVaJuR6
3566+b4HLS0dfavXxnG1K2zunq3eARoOpynUJRzdG95JjXaLyYd1FGU6WBfyaVEnaZump
3567+o6evG8VcH8fj/h88vhc3qlU+FdP0B8pb6QQpkqZGJeeiKP/yVFI/wQEqITIs1/ST
3568+stzNGzIeUnNITjUCm/O2Hy+VmrYeFqFNY0SSdRriENnbcxOZN4raQfhBToe5wdgo
3569+vUXCJaaVTd5WMGJX6Gn3GevMaLjO8YlRfcqnD7rAFUGwTKdGRjgc2NbD0L3fB2Mo
3570+Y6SIAhEFbVWp/IExGhF+RTX0GldX/NgYMGvf6onlCRbY6By24I+OJhluD6lFaogG
3571+vyar4hPA2PMw2LUjR5sZGHPGd65LtXviRn6E1nAJ8CM9g9s6LD5nA9A7m+FEI0rL
3572+LVJf9GjgRbyD6QF53AZanwGUoKUPaF+Jp6HhVXNWEyc2xV1GQL+9U2/BX6zyzAZP
3573+fVeMPOtWIF9ZPqp7nQw9hhzfYWxJRh4UZ90/ErwzKYzZLYZJcPNMSbScPVB/th/n
3574+FfI07vQHGzzlrJi+064X5V6BdvKB25qBq67GbYw88+XcrM6R+Uk=
3575+=tsX2
3576+-----END PGP PUBLIC KEY BLOCK-----
3577diff --git a/debian/watch b/debian/watch
3578index f4d3d8a..864051c 100644
3579--- a/debian/watch
3580+++ b/debian/watch
3581@@ -1,3 +1,4 @@
3582 version=4
3583-https://github.com/rabbitmq/@PACKAGE@/releases \
3584- (?:.*?/)?@PACKAGE@_(\d[\d.]*)\.orig\.tar\.xz debian uupdate
3585+opts="searchmode=plain,pgpmode=auto" \
3586+ https://api.github.com/repos/rabbitmq/rabbitmq-server/releases?per_page=100 \
3587+ https://github.com/rabbitmq/rabbitmq-server/releases/download/[^/]+/@PACKAGE@-@ANY_VERSION@@ARCHIVE_EXT@
3588diff --git a/deps/.hex/cache.erl b/deps/.hex/cache.erl
3589index 529c3c1..b7068f1 100644
3590--- a/deps/.hex/cache.erl
3591+++ b/deps/.hex/cache.erl
3592@@ -1,2 +1,2 @@
3593 [{read_concurrency,false},{write_concurrency,false},{compressed,false},{heir,none},{name,'Elixir.Hex.Registry.Server'},{named_table,false},{type,set},{keypos,1},{protection,protected}].
3594-[{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},<<51,221,215,227,240,137,141,26,124,212,235,117,88,77,41,16,14,43,149,75,115,25,59,120,255,172,203,118,182,37,87,124>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},<<72,67,100,98,6,104,157,95,209,160,235,61,14,8,188,194,70,39,52,17,101,196,9,111,104,119,219,243,240,116,38,190>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},<<44,187,218,100,149,12,13,159,201,60,175,106,184,221,155,49,232,55,50,164,156,21,248,17,153,78,214,142,229,155,45,213>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},<<145,11,107,111,136,138,168,176,247,155,220,168,171,244,206,33,214,76,152,252,135,182,186,139,106,231,242,237,34,85,28,250>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},nil},{{registry_etag,<<104,101,120,112,109>>,<<99,115,118>>},<<34,99,53,97,50,55,50,50,50,48,53,50,50,102,56,55,53,98,98,101,55,57,54,100,101,52,99,52,98,54,51,57,54,34>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},[]},{{versions,<<104,101,120,112,109>>,<<106,115,111,110>>},[<<48,46,51,46,48>>,<<48,46,51,46,50>>,<<48,46,51,46,51>>,<<49,46,48,46,48>>,<<49,46,48,46,49>>,<<49,46,48,46,50>>,<<49,46,48,46,51>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>,<<49,46,49,46,48>>,<<49,46,50,46,48>>,<<49,46,50,46,49>>,<<49,46,50,46,50>>,<<49,46,50,46,51>>,<<49,46,50,46,52>>,<<49,46,50,46,53>>,<<49,46,51,46,48>>,<<49,46,52,46,48>>,<<49,46,52,46,49>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},{{2022,1,18},{22,48,17}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},<<105,102,54,18,176,225,123,172,122,29,127,26,69,235,225,149,15,19,218,24,10,69,123,7,223,63,175,139,223,24,200,149>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,48>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},<<227,235,78,191,17,38,38,39,240,183,155,79,209,224,120,250,78,194,190,249,12,248,59,124,125,33,79,110,230,167,191,174>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},<<121,180,219,142,142,93,115,110,206,124,216,109,238,5,68,39,61,188,79,192,147,122,157,207,219,65,51,176,151,41,238,29>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},<<143,86,163,52,2,26,42,207,236,45,147,7,8,208,240,25,53,241,101,76,138,222,121,119,187,241,248,235,72,67,9,114>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},<<165,235,69,46,242,66,123,154,112,20,171,100,152,141,178,66,81,134,95,142,111,174,125,163,240,100,177,227,178,61,51,219>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},<<109,44,115,99,187,137,175,235,209,36,27,0,51,60,161,178,176,156,97,30,253,148,104,172,0,236,207,120,210,64,58,4>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},[]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},<<207,101,129,50,228,228,150,173,232,111,35,114,94,237,64,16,52,240,120,216,88,212,173,10,147,76,123,58,58,204,20,178>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},<<172,88,31,32,233,197,199,224,203,127,65,143,86,7,39,141,113,97,28,101,221,242,233,48,101,241,244,206,17,221,84,24>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},<<84,80,137,56,172,103,226,121,102,177,14,244,150,6,227,173,89,149,214,101,215,252,38,136,239,179,234,177,48,124,144,121>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},<<241,44,133,153,45,45,129,212,251,122,96,34,90,55,175,239,58,240,6,152,35,204,50,26,37,233,223,157,59,203,110,210>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},{{2022,1,18},{22,48,17}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},nil},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},<<222,146,226,188,133,188,9,236,103,111,25,246,236,45,170,89,186,31,1,3,209,218,150,207,12,202,54,52,44,144,217,63>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},<<228,10,21,153,48,36,160,203,79,94,34,129,109,107,227,64,2,204,68,99,198,23,137,237,53,236,148,196,25,17,235,238>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},<<206,105,157,49,102,44,52,218,135,131,255,23,171,152,12,99,80,186,80,189,130,71,85,105,219,224,255,146,149,83,217,202>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},<<232,37,108,31,91,115,43,205,72,90,169,75,192,19,113,243,36,225,20,154,143,38,38,35,64,124,162,204,19,171,8,74>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>},{{2022,1,18},{22,48,17}}},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},<<212,46,32,5,65,22,196,157,82,66,211,255,158,25,19,172,204,235,230,1,95,68,157,110,49,42,91,193,96,231,154,98>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},<<245,47,115,235,52,75,194,45,227,53,153,35,119,65,49,56,64,87,150,224,208,173,153,217,149,217,151,122,194,159,28,169>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},<<2,74,88,8,199,219,172,173,7,228,200,251,223,183,96,201,108,45,40,115,94,67,214,95,26,241,22,67,164,211,163,242>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},<<230,66,147,177,199,46,50,58,218,21,109,71,23,74,239,14,251,80,38,58,21,246,26,15,152,146,235,24,81,15,119,123>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},<<144,235,14,1,159,220,17,222,131,168,140,108,26,139,190,153,105,68,81,76,246,187,206,222,7,44,143,34,45,28,113,35>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},[{<<104,101,120,112,109>>,<<100,101,99,105,109,97,108>>,<<100,101,99,105,109,97,108>>,<<126,62,32,49,46,48>>,true}]},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},<<144,237,193,93,248,153,119,172,98,173,124,194,8,202,22,226,66,122,169,193,130,137,238,155,243,134,208,96,117,166,219,140>>},{{inner_checksum,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},<<239,80,163,97,241,27,95,38,181,241,109,6,150,228,106,158,70,97,117,100,146,201,129,247,178,34,158,244,47,241,205,21>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},<<9,34,102,42,94,22,87,147,197,30,24,201,196,184,166,184,228,130,97,241,131,192,210,137,82,91,53,245,135,195,225,84>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},<<120,201,76,85,220,135,233,31,246,237,228,245,244,103,37,10,222,151,49,232,233,82,110,222,32,154,82,16,238,82,134,146>>},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},<<164,193,167,195,13,33,81,182,228,151,108,178,245,44,10,29,73,236,150,90,251,115,126,216,74,104,75,196,40,77,22,39>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},[]},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},<<114,192,119,214,28,104,4,106,65,50,246,197,185,28,62,118,157,147,111,245,38,78,44,46,155,203,221,7,141,223,92,139>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},<<102,119,195,9,132,22,101,46,0,16,158,203,221,72,26,117,90,45,1,123,86,124,29,233,255,150,17,77,155,211,112,222>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},<<209,118,249,103,201,120,171,139,138,41,195,92,18,82,79,120,183,187,54,253,78,155,130,118,221,117,201,203,86,224,126,66>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},nil},{{timestamp,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},{{2022,1,18},{22,48,18}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},<<137,28,32,233,180,214,31,0,187,29,21,255,46,29,244,81,14,48,42,7,254,77,205,184,84,193,108,34,59,72,29,163>>},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},<<80,233,140,137,253,228,76,91,121,125,96,45,137,62,163,15,126,225,180,91,77,1,174,170,62,167,66,214,185,139,30,238>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},<<156,4,35,121,62,187,118,245,82,245,191,173,131,219,120,194,17,60,104,78,153,237,178,24,144,111,162,40,179,216,152,119>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},[{<<104,101,120,112,109>>,<<101,97,114,109,97,114,107>>,<<101,97,114,109,97,114,107>>,<<62,61,32,48,46,48,46,48>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},<<144,31,247,139,57,199,84,251,77,111,215,45,207,13,189,57,137,103,187,210,228,213,156,8,212,215,170,68,167,61,233,29>>},{{versions,<<104,101,120,112,109>>,<<114,101,99,111,110>>},[<<50,46,50,46,48>>,<<50,46,50,46,49>>,<<50,46,51,46,48>>,<<50,46,51,46,49>>,<<50,46,51,46,50>>,<<50,46,51,46,51>>,<<50,46,51,46,52>>,<<50,46,51,46,53>>,<<50,46,51,46,54>>,<<50,46,52,46,48>>,<<50,46,53,46,48>>,<<50,46,53,46,49>>,<<50,46,53,46,50>>]},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},<<44,107,172,83,3,113,61,27,67,202,111,60,136,23,103,245,123,42,223,102,140,222,48,19,189,113,87,220,101,239,41,156>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},<<222,84,131,50,37,176,230,127,33,219,71,51,58,8,104,90,237,80,215,120,162,241,28,247,227,106,233,227,254,78,225,7>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},<<203,165,63,168,219,131,173,150,140,154,101,46,9,195,237,125,220,196,218,67,79,39,195,234,169,202,71,255,178,177,255,3>>},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},<<119,62,225,102,102,158,178,27,82,151,206,65,179,199,180,116,190,9,110,184,237,5,45,69,112,129,40,154,28,242,80,122>>},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},nil},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},<<251,60,197,214,171,222,88,2,7,87,132,147,178,216,96,62,100,143,44,93,168,223,234,187,26,186,196,121,147,150,228,33>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},<<114,243,132,15,237,217,79,6,49,92,82,63,108,236,245,180,130,114,51,190,215,174,63,225,53,178,160,235,234,181,225,150>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},[]},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},<<110,77,136,127,221,142,139,234,129,238,215,150,170,88,155,200,14,52,183,137,97,121,182,132,249,117,202,184,58,27,23,62>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},<<126,106,131,77,27,49,48,195,34,70,205,62,157,56,3,252,52,28,167,175,148,54,47,51,33,56,139,197,165,119,161,26>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},<<68,68,200,121,190,50,59,27,19,62,236,82,65,203,132,189,56,33,234,25,76,116,13,117,97,126,16,107,228,116,67,24>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},<<77,136,166,207,49,69,174,71,48,206,151,157,195,38,52,182,223,150,54,59,81,222,161,94,32,206,80,184,22,1,35,229>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},<<185,80,65,252,17,144,118,152,187,77,64,117,190,80,75,6,0,168,234,119,129,196,236,127,27,240,142,115,235,238,108,37>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},<<62,26,107,110,184,70,116,187,13,10,189,144,160,61,7,208,27,242,46,141,86,147,149,102,74,41,138,252,89,164,234,49>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},<<29,227,205,145,60,190,39,174,240,172,159,191,122,176,110,194,117,248,93,162,139,55,96,100,128,73,153,209,214,51,54,122>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},<<158,233,172,54,50,92,173,255,53,126,95,219,121,194,116,101,7,77,182,127,154,240,15,64,126,21,191,100,146,57,149,10>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},<<226,111,246,64,124,87,46,227,117,253,144,19,151,219,230,226,40,138,182,110,71,245,89,90,225,173,188,186,123,187,147,88>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},<<0,214,237,215,48,254,153,35,132,121,150,70,157,1,139,250,210,149,54,105,189,43,99,91,7,84,206,45,213,159,166,37>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},<<71,184,128,141,153,7,132,52,53,26,145,255,10,183,239,226,166,131,80,36,207,53,156,206,25,80,127,16,58,100,69,117>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},<<162,54,21,16,103,251,60,169,201,96,54,128,105,50,209,5,210,224,199,188,179,119,133,19,239,254,106,108,59,35,58,96>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},<<80,227,39,73,149,59,107,249,129,141,191,237,129,207,17,144,227,140,223,36,249,88,145,48,49,8,8,116,134,197,146,94>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},<<121,217,236,185,73,178,123,204,43,90,3,121,139,93,113,250,129,148,13,153,252,240,217,106,194,6,142,94,242,154,218,192>>},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},[]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},<<139,206,65,63,178,82,52,228,110,97,243,99,163,106,208,125,204,229,50,39,152,45,198,78,39,33,182,228,14,218,121,129>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},<<54,130,193,140,107,7,72,13,242,18,45,13,175,92,5,69,123,66,193,153,15,25,124,227,222,83,136,78,139,168,52,196>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},<<87,33,198,182,213,1,34,216,246,140,204,172,113,44,170,18,49,249,120,148,186,183,121,239,245,255,15,136,108,180,70,72>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},<<107,98,70,96,40,214,224,171,62,198,128,92,81,244,168,134,41,230,152,183,29,248,224,31,165,92,92,74,49,174,190,107>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},nil},{{versions,<<104,101,120,112,109>>,<<99,115,118>>},[<<48,46,49,46,48>>,<<48,46,49,46,49>>,<<48,46,50,46,48>>,<<48,46,50,46,49>>,<<48,46,50,46,50>>,<<49,46,48,46,48>>,<<49,46,48,46,49>>,<<49,46,49,46,48>>,<<49,46,49,46,49>>,<<49,46,49,46,50>>,<<49,46,49,46,51>>,<<49,46,49,46,52>>,<<49,46,49,46,53>>,<<49,46,50,46,48>>,<<49,46,50,46,49>>,<<49,46,50,46,50>>,<<49,46,50,46,51>>,<<49,46,50,46,52>>,<<49,46,51,46,48>>,<<49,46,51,46,49>>,<<49,46,51,46,50>>,<<49,46,51,46,51>>,<<49,46,52,46,48>>,<<49,46,52,46,49>>,<<49,46,52,46,50>>,<<49,46,52,46,51>>,<<49,46,52,46,52>>,<<50,46,48,46,48,45,114,99,46,48>>,<<50,46,48,46,48>>,<<50,46,49,46,48>>,<<50,46,49,46,49>>,<<50,46,50,46,48>>,<<50,46,51,46,48>>,<<50,46,51,46,49>>,<<50,46,52,46,48>>,<<50,46,52,46,49>>]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},<<53,139,202,226,196,66,253,64,191,71,65,138,14,15,148,73,5,216,206,18,44,194,156,98,62,109,252,217,190,194,181,19>>},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},<<166,252,251,218,190,26,239,145,25,184,113,48,72,70,177,206,40,45,154,65,36,188,221,175,199,97,108,26,37,108,117,150>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>,false}]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},[]},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},[]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},nil},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},<<76,202,250,170,44,224,27,133,221,209,69,145,244,213,246,115,27,78,19,182,16,167,15,184,65,240,112,17,120,71,130,128>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},<<237,244,27,181,79,195,77,80,10,31,149,28,153,82,162,59,134,174,136,12,189,252,117,59,72,225,183,14,63,184,238,19>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},<<104,79,209,145,145,174,223,175,56,123,186,187,235,143,243,199,82,240,34,12,129,18,235,144,125,121,127,69,146,214,232,113>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},<<37,105,199,33,33,80,209,87,165,122,53,119,190,202,207,162,227,70,163,175,234,105,135,8,133,22,134,172,220,210,141,4>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},<<17,125,88,18,60,172,60,104,2,0,82,72,191,3,237,32,165,177,77,221,30,57,216,108,122,229,40,150,2,53,82,144>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},[]},{version,3},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},<<8,68,93,118,243,173,53,7,188,74,243,14,175,216,130,96,192,243,92,80,56,84,42,242,119,171,208,151,91,225,234,38>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},[]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},[]},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},<<244,176,215,37,57,47,193,87,159,2,33,179,207,112,170,174,89,243,238,225,104,54,215,40,142,180,84,243,238,92,236,34>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},<<195,39,7,44,190,185,154,8,86,82,207,17,10,122,61,93,123,153,249,69,104,209,73,124,167,105,113,200,128,97,85,90>>},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},[]},{{registry_etag,<<104,101,120,112,109>>,<<114,101,99,111,110>>},<<34,57,51,50,99,100,100,53,52,102,102,55,57,49,54,57,98,54,50,97,55,50,48,50,56,100,56,98,53,48,53,49,48,34>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},<<227,19,177,246,201,71,212,213,150,103,66,219,100,159,247,226,103,54,224,132,176,162,127,161,246,74,202,120,50,120,28,196>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},[{<<104,101,120,112,109>>,<<100,101,99,105,109,97,108>>,<<100,101,99,105,109,97,108>>,<<126,62,32,49,46,48>>,true}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},<<84,1,54,83,199,46,117,255,59,75,72,115,66,223,229,103,21,201,116,159,249,195,26,125,232,248,77,24,160,158,28,60>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},{{2022,1,18},{22,48,17}}},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},<<99,155,46,135,73,225,27,135,185,235,66,242,173,50,93,22,28,23,11,57,178,136,172,141,4,196,243,31,143,8,35,235>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},<<232,72,155,58,124,119,194,21,92,11,103,250,159,144,217,175,167,107,241,92,36,251,123,49,42,221,204,17,119,113,209,84>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},<<121,81,11,127,243,186,89,124,117,140,230,243,151,226,59,63,194,252,114,157,214,51,40,129,196,104,183,103,183,28,119,193>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},<<220,199,223,5,177,219,110,77,26,62,164,3,245,148,210,223,129,195,79,185,24,146,201,196,194,204,109,44,245,156,34,154>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},<<83,185,186,191,253,24,107,180,251,159,221,71,232,164,66,184,241,141,184,20,151,255,163,165,91,90,95,89,111,90,200,20>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},<<87,63,110,101,253,118,8,187,24,230,175,36,91,213,105,165,181,56,126,4,204,76,7,123,31,218,233,153,8,74,169,85>>},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},<<36,170,165,33,61,173,49,64,42,227,123,151,158,11,91,183,126,152,210,219,190,163,38,237,145,161,0,12,145,196,17,19>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},<<3,204,80,111,88,227,177,218,36,255,228,114,121,197,14,205,7,16,167,169,40,52,192,58,35,38,244,226,34,80,213,77>>},{{versions,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>},[<<48,46,50,46,49>>]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},<<217,80,154,44,34,147,65,79,12,138,178,35,105,23,194,141,154,6,6,227,139,49,72,11,47,118,177,203,206,191,151,106>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},<<221,82,137,92,76,143,33,54,94,138,69,110,63,63,180,18,123,84,143,1,54,24,160,87,216,253,118,164,42,200,244,239>>},{{registry_etag,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>},<<34,53,99,48,99,48,48,55,97,55,55,54,55,101,50,51,49,97,48,50,98,55,54,56,49,57,48,98,54,57,55,49,97,34>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},<<52,24,227,25,118,75,157,255,31,70,158,67,203,223,253,127,213,78,164,124,191,118,80,39,197,87,171,209,70,161,159,179>>},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},{{2022,1,18},{22,48,20}}},{{versions,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>},[<<49,46,48,46,50>>,<<49,46,48,46,51>>,<<49,46,48,46,52>>,<<49,46,48,46,53>>,<<49,46,48,46,55>>,<<49,46,48,46,56>>,<<49,46,48,46,57>>,<<49,46,49,46,48>>,<<49,46,50,46,48>>,<<49,46,50,46,49>>,<<49,46,50,46,50>>,<<49,46,51,46,48>>,<<49,46,51,46,49>>,<<49,46,51,46,50>>,<<49,46,51,46,51>>,<<49,46,51,46,52>>,<<49,46,52,46,48>>,<<49,46,52,46,49>>,<<49,46,52,46,50>>,<<49,46,52,46,51>>,<<49,46,52,46,52>>,<<49,46,52,46,53>>,<<49,46,53,46,48>>,<<49,46,53,46,49>>,<<49,46,53,46,50>>,<<49,46,53,46,51>>,<<49,46,53,46,52>>,<<49,46,54,46,48>>,<<49,46,54,46,49>>,<<49,46,54,46,50>>,<<49,46,55,46,48>>,<<49,46,55,46,49>>]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},<<160,88,176,66,166,90,171,75,107,220,254,73,23,150,200,208,67,105,54,44,172,223,141,93,75,234,156,81,112,151,208,56>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},<<219,220,236,81,73,70,188,141,202,177,215,125,255,119,25,67,122,133,217,134,23,144,134,74,177,33,85,237,163,253,111,175>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},<<43,202,208,207,98,31,178,119,202,187,182,65,49,89,205,58,163,2,101,194,222,228,44,150,134,151,152,139,48,16,134,4>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>,false}]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},<<89,208,170,245,32,158,59,80,103,69,138,80,59,168,11,115,136,213,101,180,134,161,131,77,199,158,216,113,202,46,175,195>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},<<221,84,236,175,169,116,61,21,164,128,166,157,237,246,104,174,139,137,135,221,19,11,237,83,29,1,222,45,224,219,114,231>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,32,50,46,50,46,49>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},<<93,43,197,39,177,127,29,127,117,31,104,29,56,234,57,136,166,142,206,162,41,215,41,123,71,219,82,241,176,26,149,42>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},<<47,127,203,236,44,53,3,75,173,226,249,113,127,119,5,157,197,78,180,233,41,163,4,156,167,186,103,117,192,189,102,205>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,48>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},<<218,31,129,51,81,87,77,55,61,179,235,87,157,45,159,228,185,29,239,194,50,224,8,39,238,90,163,139,86,196,193,210>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},<<42,36,205,38,187,111,153,246,43,113,23,68,183,101,166,2,86,8,105,191,53,227,14,136,204,113,61,233,238,209,143,84>>},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},<<61,98,119,99,233,68,81,236,33,113,230,208,52,205,163,1,55,45,225,205,240,11,189,224,214,126,14,174,103,116,102,219>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},<<59,151,167,246,49,247,35,53,197,202,105,173,82,159,74,171,245,78,9,177,14,190,12,114,5,182,175,122,13,146,27,148>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},<<10,15,244,148,212,41,101,199,80,103,93,163,225,174,2,244,58,151,127,76,237,209,79,159,115,152,247,177,247,37,52,29>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},nil},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},<<203,247,114,93,87,123,181,54,15,26,132,29,231,129,200,59,140,131,56,79,158,10,194,88,127,8,19,128,121,36,154,200>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,32,50,46,51,46,49>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},[]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},[]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},<<18,192,208,123,207,0,180,26,155,61,161,233,207,82,235,5,192,76,185,237,23,20,177,174,34,9,208,212,27,25,175,60>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},<<224,46,111,121,220,82,7,59,144,156,91,229,51,110,126,35,25,122,216,162,152,132,87,94,173,123,5,68,102,84,30,2>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},<<7,70,231,172,135,119,124,3,107,104,136,211,75,235,196,163,110,83,65,104,59,87,163,225,184,103,14,93,9,182,129,82>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},<<18,52,153,51,188,38,72,236,120,159,155,27,62,139,58,235,92,234,198,54,131,247,95,139,203,7,135,0,36,91,135,76>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},<<72,36,218,219,1,225,67,149,246,94,157,24,218,41,77,83,67,38,215,238,215,121,150,243,194,47,116,169,135,1,121,235>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},<<82,54,119,31,28,24,178,146,208,95,163,243,177,122,136,230,32,65,105,41,167,111,111,118,7,160,99,84,190,131,223,24>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},<<233,250,128,26,6,80,103,232,165,96,68,74,199,144,121,115,174,138,214,151,226,6,200,187,26,66,45,159,37,206,202,197>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},[{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101>>,<<98,101,110,99,104,101,101>>,<<126,62,32,48,46,56>>,true},{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<126,62,32,48,46,49>>,true},{<<104,101,120,112,109>>,<<101,120,106,115,120>>,<<101,120,106,115,120>>,<<126,62,32,52,46,48>>,true},{<<104,101,120,112,109>>,<<106,97,115,111,110>>,<<106,97,115,111,110>>,<<126,62,32,49,46,48>>,true},{<<104,101,120,112,109>>,<<106,115,111,110,101>>,<<106,115,111,110,101>>,<<126,62,32,49,46,52>>,true},{<<104,101,120,112,109>>,<<112,111,105,115,111,110>>,<<112,111,105,115,111,110>>,<<126,62,32,51,46,48>>,true},{<<104,101,120,112,109>>,<<116,105,110,121>>,<<116,105,110,121>>,<<126,62,32,49,46,48>>,true}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},<<153,68,136,43,113,245,91,37,3,102,61,156,181,77,63,28,123,189,247,204,109,208,28,196,14,168,239,81,32,118,1,236>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},<<97,30,5,50,254,221,69,36,250,157,80,45,165,247,59,154,203,174,132,156,144,9,236,40,125,217,158,208,156,33,90,65>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},<<198,111,234,137,186,120,98,185,73,1,186,240,135,18,133,233,183,60,173,137,197,253,181,122,99,134,210,173,207,41,89,62>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},<<98,26,26,62,83,107,158,33,99,236,107,176,120,77,253,229,236,19,218,138,190,196,107,183,101,189,126,177,248,173,21,2>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},<<61,45,231,167,16,185,190,212,207,189,174,4,25,217,139,25,133,99,75,216,204,31,38,239,149,118,194,235,154,166,179,94>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},<<33,232,214,152,48,145,102,15,57,79,68,167,193,31,140,241,244,103,175,178,170,218,31,207,89,194,241,181,144,164,47,104>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},<<139,29,56,94,0,231,8,1,161,47,107,212,62,182,79,116,124,79,114,200,142,82,63,143,13,50,118,165,19,92,160,11>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},<<253,149,195,248,33,112,38,177,155,78,193,134,22,8,84,223,29,230,41,51,192,33,56,76,84,98,69,66,3,239,206,224>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},nil},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},[{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101>>,<<98,101,110,99,104,101,101>>,<<126,62,32,48,46,56>>,true},{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<126,62,32,48,46,49>>,true},{<<104,101,120,112,109>>,<<101,120,106,115,120>>,<<101,120,106,115,120>>,<<126,62,32,52,46,48>>,true},{<<104,101,120,112,109>>,<<106,97,115,111,110>>,<<106,97,115,111,110>>,<<126,62,32,49,46,48>>,true},{<<104,101,120,112,109>>,<<106,115,111,110,101>>,<<106,115,111,110,101>>,<<126,62,32,49,46,52>>,true},{<<104,101,120,112,109>>,<<112,111,105,115,111,110>>,<<112,111,105,115,111,110>>,<<126,62,32,51,46,48>>,true},{<<104,101,120,112,109>>,<<116,105,110,121>>,<<116,105,110,121>>,<<126,62,32,49,46,48>>,true}]},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},<<139,0,144,177,58,66,52,58,215,9,237,8,129,17,253,64,169,228,194,209,129,158,246,193,230,1,52,113,52,237,52,208>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},<<0,37,224,56,226,242,232,197,200,36,13,24,188,252,17,177,239,225,162,86,113,101,111,197,178,253,214,112,245,72,222,52>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},{{2022,1,18},{22,48,17}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},<<81,54,235,143,128,32,164,64,245,248,148,241,193,30,127,169,72,3,21,178,230,227,152,176,228,102,9,203,150,62,118,138>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},<<158,206,25,186,234,42,11,160,204,226,167,220,175,197,212,98,51,88,47,253,21,126,117,89,227,31,149,135,213,169,181,63>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},<<122,235,9,94,73,65,128,174,217,87,243,88,187,139,146,21,54,10,58,167,226,61,174,125,154,240,251,21,72,66,17,100>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{registry_etag,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>},<<34,56,100,48,55,102,97,49,50,50,98,102,51,57,57,56,49,56,102,50,101,49,57,101,57,98,56,54,48,98,55,100,54,34>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},<<250,117,237,79,53,92,212,171,70,140,37,88,129,113,248,0,42,114,116,211,213,251,55,108,24,130,45,223,199,195,63,31>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},<<170,203,72,169,240,220,55,111,21,223,48,101,202,33,132,115,141,215,201,81,80,174,216,60,40,206,11,171,181,110,91,152>>},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},<<124,16,141,227,48,56,16,40,44,161,17,236,192,147,138,120,230,2,246,180,240,203,107,144,253,245,47,149,209,152,5,159>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},<<196,149,38,14,55,137,176,144,88,147,32,164,221,109,151,69,54,147,217,186,43,222,120,167,11,98,32,205,246,88,203,255>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},<<34,76,89,87,237,225,240,215,135,68,94,165,238,52,99,79,186,176,6,253,161,30,77,66,240,37,11,97,16,216,237,49>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},[]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},{{2022,1,18},{22,48,17}}},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},#{message => <<82,101,116,105,114,101,100,32,82,67,32,118,101,114,115,105,111,110>>,reason => 'RETIRED_OTHER'}},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},<<59,28,140,11,227,44,39,32,207,5,135,132,129,87,236,95,14,20,247,84,219,99,34,156,52,187,19,90,94,236,181,40>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},<<79,89,119,17,222,247,188,179,135,133,25,245,127,149,88,219,60,157,134,138,238,65,83,94,220,220,32,170,192,179,158,104>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},<<225,176,196,235,165,145,73,137,247,161,169,173,159,137,147,207,116,118,14,70,72,134,240,253,34,10,98,51,126,52,121,20>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},#{message => <<82,101,116,105,114,101,100,32,82,67,32,118,101,114,115,105,111,110>>,reason => 'RETIRED_OTHER'}},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},<<23,26,137,155,34,80,224,72,191,89,178,41,171,37,52,247,77,137,44,170,243,29,184,245,90,242,156,26,6,1,71,84>>},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},nil},{{registry_etag,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>},<<34,49,55,48,53,48,57,49,53,97,53,57,55,56,102,97,97,53,56,57,55,56,56,49,99,97,101,99,97,100,51,57,57,34>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},<<83,93,248,66,116,16,163,147,66,189,186,61,17,181,60,80,132,232,115,81,105,99,126,190,213,196,76,215,14,171,0,35>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},<<144,94,191,180,229,77,90,141,108,61,184,90,151,227,68,244,0,142,188,59,117,227,37,235,243,184,143,105,204,82,97,188>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},[]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},nil},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},nil},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},<<239,82,71,134,18,4,215,101,218,196,201,174,239,141,242,228,84,208,44,85,221,176,130,198,199,103,181,203,151,45,101,25>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},[]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},<<223,18,100,181,135,27,186,248,218,79,17,254,173,250,13,198,97,244,213,17,73,58,37,248,249,199,214,21,224,214,20,213>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},<<159,1,192,129,120,215,122,101,122,54,82,135,8,70,212,202,238,122,123,113,202,50,151,29,247,206,87,192,121,218,111,222>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},<<227,14,75,190,99,54,83,165,194,218,67,202,180,42,97,98,62,10,204,128,239,64,195,33,188,41,240,214,152,105,123,211>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},<<81,222,127,212,160,25,247,150,107,51,19,62,173,183,197,186,145,158,93,130,159,185,169,5,79,1,43,225,62,143,157,1>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},[]},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},<<154,191,33,141,190,78,164,252,184,117,224,135,213,249,4,239,38,61,1,46,229,237,33,212,110,157,188,166,63,5,61,22>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>,false}]},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},[]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},<<201,202,31,98,58,62,240,21,130,131,163,195,124,215,183,35,91,254,133,146,122,214,226,99,150,221,36,126,32,87,245,161>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},[]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},<<247,30,210,221,230,58,44,168,206,231,133,5,145,64,254,121,160,122,142,67,65,133,52,199,94,32,21,56,185,12,31,185>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},<<37,176,134,181,185,240,219,77,168,137,42,78,21,67,87,112,109,29,219,116,166,190,176,5,234,235,228,11,96,67,46,140>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},<<134,98,110,28,137,164,173,154,150,208,217,198,56,249,232,140,35,70,184,155,75,161,97,25,136,89,78,190,114,181,213,238>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},nil},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>,false}]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},<<197,103,12,1,118,217,143,197,134,60,112,72,163,173,92,172,44,1,81,110,133,253,40,176,162,35,166,106,125,235,140,234>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},<<38,30,64,121,8,118,140,103,246,243,173,85,119,190,179,66,64,69,24,207,58,141,28,37,249,112,76,8,167,126,137,109>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},[{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101>>,<<98,101,110,99,104,101,101>>,<<126,62,32,48,46,56>>,true},{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<126,62,32,48,46,49>>,true},{<<104,101,120,112,109>>,<<101,120,106,115,120>>,<<101,120,106,115,120>>,<<126,62,32,52,46,48>>,true},{<<104,101,120,112,109>>,<<106,97,115,111,110>>,<<106,97,115,111,110>>,<<126,62,32,49,46,48>>,true},{<<104,101,120,112,109>>,<<106,115,111,110,101>>,<<106,115,111,110,101>>,<<126,62,32,49,46,52>>,true},{<<104,101,120,112,109>>,<<112,111,105,115,111,110>>,<<112,111,105,115,111,110>>,<<126,62,32,51,46,48>>,true},{<<104,101,120,112,109>>,<<116,105,110,121>>,<<116,105,110,121>>,<<126,62,32,49,46,48>>,true}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},<<72,227,29,177,140,35,191,51,200,56,93,63,114,178,112,129,75,142,94,101,7,17,152,154,152,201,40,95,125,184,34,154>>},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},<<78,125,235,70,12,170,104,171,2,130,210,4,228,58,85,50,98,180,93,64,169,61,208,16,154,133,137,103,171,28,143,191>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},<<130,13,172,184,217,233,253,211,206,164,132,51,239,127,49,178,246,251,249,233,63,255,40,220,35,138,5,190,195,76,57,87>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},<<64,60,123,48,80,27,93,51,205,168,188,107,254,48,127,89,219,1,95,199,37,86,122,86,4,218,231,246,5,165,30,23>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},<<6,79,119,21,219,121,136,118,175,30,184,40,124,132,98,109,32,87,82,237,176,225,163,143,209,38,34,47,103,105,237,172>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,32,50,46,50,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},<<217,57,74,179,245,173,205,169,122,75,139,28,11,121,141,203,40,107,7,145,60,64,32,234,127,120,200,135,35,251,20,94>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},nil},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},<<204,30,48,54,44,84,234,91,230,196,12,140,160,37,46,105,227,103,226,22,134,157,107,154,241,123,89,58,246,167,104,36>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},<<14,193,72,255,99,89,118,57,179,255,140,195,239,82,60,251,70,105,244,250,26,46,146,30,5,132,156,143,149,12,124,109>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},nil},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},{{2022,1,18},{22,48,17}}},{{versions,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>},[<<48,46,49,46,48>>,<<48,46,50,46,48>>,<<48,46,50,46,49>>,<<48,46,50,46,50>>,<<48,46,50,46,51>>,<<48,46,50,46,52>>]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},[]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>,false}]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},<<134,72,240,74,148,57,118,90,212,73,188,86,163,255,125,139,17,221,68,255,8,255,205,239,196,50,159,124,147,132,61,250>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},<<128,143,97,68,230,177,7,27,6,94,239,120,144,128,132,98,39,236,140,208,209,97,22,203,135,221,149,155,216,18,239,43>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},{{2022,1,18},{22,48,17}}},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},<<64,95,116,217,92,226,6,190,163,171,188,216,241,63,34,144,224,191,223,138,75,210,50,253,14,103,194,242,36,158,40,119>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},<<54,23,39,196,84,172,47,207,55,141,38,16,79,102,79,157,134,244,254,184,32,110,4,45,190,24,116,214,109,132,163,224>>},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},<<205,13,176,11,249,85,42,18,87,148,80,64,244,222,235,41,152,176,92,122,1,134,215,152,246,224,234,5,150,141,178,69>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},[{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101>>,<<98,101,110,99,104,101,101>>,<<126,62,32,48,46,56>>,true},{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<126,62,32,48,46,49>>,true},{<<104,101,120,112,109>>,<<101,120,106,115,120>>,<<101,120,106,115,120>>,<<126,62,32,52,46,48>>,true},{<<104,101,120,112,109>>,<<106,97,115,111,110>>,<<106,97,115,111,110>>,<<126,62,32,49,46,48>>,true},{<<104,101,120,112,109>>,<<106,115,111,110,101>>,<<106,115,111,110,101>>,<<126,62,32,49,46,52>>,true},{<<104,101,120,112,109>>,<<112,111,105,115,111,110>>,<<112,111,105,115,111,110>>,<<126,62,32,51,46,48>>,true},{<<104,101,120,112,109>>,<<116,105,110,121>>,<<116,105,110,121>>,<<126,62,32,49,46,48>>,true}]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},<<135,70,99,76,186,2,83,179,168,68,50,96,128,215,141,77,124,129,171,147,194,248,161,18,241,10,234,167,248,181,81,137>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},<<33,182,157,95,117,31,169,225,236,145,71,77,68,247,183,80,73,20,184,249,214,168,53,45,56,133,111,119,129,224,124,53>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},<<43,187,237,224,72,117,138,214,127,122,117,84,47,144,246,148,202,128,50,50,162,182,127,221,127,159,218,152,141,186,154,137>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},<<167,118,4,141,83,165,143,243,181,212,72,231,82,105,45,47,47,255,248,233,98,241,72,127,19,182,62,184,86,155,14,126>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},<<58,232,236,78,152,164,72,80,212,148,216,68,28,136,150,99,28,41,91,53,65,202,199,145,229,110,160,136,91,167,223,63>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},<<217,196,187,165,244,253,121,45,191,150,34,0,67,83,251,201,249,118,86,33,218,135,58,172,135,166,143,252,81,205,108,102>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},<<56,183,89,231,65,206,79,134,87,102,151,38,186,237,121,114,96,39,96,147,19,252,40,47,90,103,30,25,132,140,33,53>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},<<200,135,134,160,114,7,168,11,7,30,163,142,26,113,168,171,215,50,62,203,247,5,102,1,39,0,155,32,56,197,161,209>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},<<253,251,221,94,157,163,22,77,45,83,151,15,50,140,123,100,157,118,74,72,185,111,245,238,167,113,163,222,82,148,155,177>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},<<139,58,59,201,53,11,160,69,50,244,82,198,7,170,36,213,157,224,58,54,162,131,139,30,161,124,39,70,70,226,243,213>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},<<16,4,241,79,86,196,247,98,133,76,72,46,15,233,45,98,116,227,208,7,139,61,112,228,178,238,179,183,158,39,81,7>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},<<55,62,180,247,50,31,137,138,214,119,41,153,243,13,175,101,249,243,142,29,61,212,215,152,215,168,45,59,18,63,225,211>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},<<44,117,35,200,222,233,29,255,65,246,179,214,60,186,43,212,158,182,210,254,91,241,238,192,223,127,135,235,94,35,14,28>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},<<60,135,105,131,179,53,62,116,172,85,245,4,171,228,244,113,115,162,199,86,112,89,188,95,36,84,45,187,182,47,19,218>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},nil},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},<<133,128,81,127,114,25,171,182,235,26,100,132,19,211,194,49,151,164,153,232,238,12,184,91,99,120,17,14,55,59,18,213>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},<<174,118,224,106,125,26,72,9,28,95,84,35,200,94,240,134,206,108,19,85,140,94,14,149,211,176,78,31,86,195,90,134>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},<<101,91,237,185,64,198,75,180,213,141,96,128,203,130,4,177,249,36,215,227,22,137,13,7,134,172,127,144,251,154,104,212>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},[]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},{{2022,1,18},{22,48,17}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},<<136,22,143,146,203,209,35,224,41,13,135,208,161,202,128,3,232,99,170,67,10,225,114,87,177,231,195,222,195,33,119,158>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},<<243,164,124,34,50,116,36,41,23,88,22,125,243,196,96,13,207,139,243,71,149,163,120,118,18,1,154,165,184,106,92,33>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},{{2022,1,18},{22,48,17}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},<<40,31,44,187,67,159,227,192,67,119,62,230,200,49,114,171,216,3,38,220,198,21,63,100,48,228,212,230,177,77,126,157>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},<<244,130,93,55,75,34,242,88,173,17,74,116,121,107,121,184,110,32,160,54,17,5,23,25,246,6,35,83,192,83,137,203>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},<<130,163,223,22,68,204,169,183,106,75,126,192,23,189,164,63,18,214,96,37,232,245,60,212,77,210,176,19,164,69,251,147>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},<<154,36,158,30,159,221,180,243,75,252,43,207,43,251,67,191,243,170,98,165,95,128,124,114,203,34,73,177,227,145,74,233>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},<<102,254,225,234,245,54,52,125,73,57,66,203,94,8,83,33,197,30,128,222,18,79,240,15,75,38,81,135,11,145,155,153>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},{{2022,1,18},{22,48,17}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},<<137,173,179,41,68,72,116,128,150,65,204,47,100,90,236,43,211,141,253,132,30,127,228,193,179,188,162,230,249,26,26,243>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},<<9,86,102,121,241,147,49,21,246,24,158,108,78,32,94,53,170,234,28,174,220,248,67,135,92,62,182,94,236,131,228,136>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},<<142,100,15,158,141,162,129,223,90,1,24,144,127,209,142,52,140,31,35,205,199,71,41,100,142,232,55,174,217,27,140,41>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},<<24,229,217,170,84,18,236,6,60,249,113,155,207,231,59,249,144,197,254,213,201,163,200,66,44,43,93,149,41,252,139,13>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},<<107,156,170,216,147,0,6,249,187,53,104,12,93,51,17,145,122,198,118,144,195,175,27,160,24,98,51,36,192,21,171,229>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},<<105,239,141,192,74,76,174,199,209,37,41,162,55,199,180,155,139,177,255,48,198,228,44,186,234,71,245,179,206,145,253,189>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},<<194,18,58,158,240,37,55,126,12,183,146,202,226,3,176,251,111,81,83,62,45,9,138,157,207,126,43,240,18,221,33,194>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},<<110,125,164,69,241,34,142,178,227,58,182,153,25,226,63,248,245,119,212,177,213,64,199,18,55,58,247,109,196,24,107,86>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},<<247,255,225,201,212,59,123,176,236,219,241,88,208,221,33,29,68,170,80,93,85,16,190,88,13,31,37,220,165,98,122,8>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},<<34,136,7,241,80,124,193,231,171,163,101,61,18,237,57,253,168,150,159,119,240,14,201,84,24,81,241,206,105,167,229,224>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},<<125,82,45,99,193,63,55,10,240,85,62,39,241,17,175,46,151,249,79,82,241,156,152,189,85,126,220,205,83,211,23,237>>},{{repo,<<104,101,120,112,109>>},<<104,116,116,112,115,58,47,47,114,101,112,111,46,104,101,120,46,112,109>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},<<253,239,107,136,195,29,76,34,224,117,107,33,94,103,115,31,76,39,57,250,253,19,168,240,150,226,247,69,122,201,252,195>>},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},<<81,241,223,146,27,4,119,39,94,167,18,118,48,66,21,93,188,116,172,199,93,150,72,219,213,73,133,196,92,145,59,41>>},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},<<211,69,204,226,233,242,86,144,250,158,83,33,6,112,113,98,221,93,141,153,138,197,64,226,68,231,158,219,138,143,60,44>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},<<146,48,109,88,81,27,235,226,12,242,50,205,65,94,151,159,216,143,175,226,159,194,63,30,158,27,67,127,162,208,6,180>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},<<87,98,95,24,53,198,99,53,131,106,213,107,2,224,21,248,208,190,199,234,139,100,211,5,241,134,255,216,60,134,175,63>>},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},<<18,120,55,62,72,14,61,187,172,80,45,35,75,247,111,77,173,185,164,174,22,208,182,58,172,75,199,249,79,211,178,228>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},<<176,130,101,218,0,52,39,160,71,207,77,50,70,74,228,200,25,201,193,58,33,248,106,182,237,228,254,60,75,17,130,13>>},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},<<110,216,76,213,101,167,236,112,146,0,220,53,152,58,23,181,31,118,152,56,180,196,142,200,193,64,28,253,16,50,224,254>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},<<34,47,127,11,94,117,136,177,233,233,183,62,72,148,15,18,212,59,190,8,196,116,176,143,213,126,249,135,71,209,197,102>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,48>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},<<59,50,222,86,143,18,144,1,225,207,137,204,91,207,214,219,177,38,15,171,178,207,138,52,16,205,192,246,52,235,161,130>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},<<4,169,229,159,101,162,157,117,225,224,34,182,226,186,4,222,45,15,34,138,192,11,179,255,223,212,21,128,10,36,196,109>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},<<153,47,46,20,24,132,154,50,111,209,217,40,120,1,250,45,134,9,29,180,249,97,31,96,120,29,166,210,54,246,76,212>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},{{2022,1,18},{22,48,20}}},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},<<140,102,178,169,55,154,72,235,237,246,174,23,188,43,114,195,171,233,203,219,247,130,73,57,128,105,103,50,97,1,195,113>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},<<78,149,60,214,171,60,247,71,60,37,144,249,155,72,255,149,21,190,25,113,189,191,237,213,92,218,18,14,251,45,35,205>>},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},<<236,36,134,141,134,25,117,122,104,240,121,131,87,199,25,8,7,161,207,196,44,233,12,24,194,55,96,229,146,73,162,26>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},<<243,239,123,26,226,138,85,229,59,140,181,193,29,14,11,100,231,110,56,213,243,232,48,191,46,59,242,204,10,137,216,72>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},<<155,164,209,166,168,242,208,178,113,109,226,178,165,204,43,170,204,126,246,97,224,35,89,184,212,159,28,14,122,140,94,203>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},<<188,191,142,48,184,96,93,175,22,10,140,42,41,213,74,23,46,82,15,75,160,227,94,17,122,106,162,64,96,208,159,6>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},<<67,15,250,96,104,90,193,239,223,177,254,76,151,184,118,124,146,208,217,46,110,124,62,134,33,85,155,167,117,152,103,138>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},nil},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},[]},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},<<126,52,227,187,132,18,57,63,249,247,246,37,143,69,206,99,36,123,203,172,231,142,225,73,214,152,89,118,13,216,14,92>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},[]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},<<110,147,67,127,116,169,151,8,6,138,50,183,103,176,36,50,209,19,137,98,117,66,20,9,227,1,141,152,146,54,166,90>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},<<194,61,185,228,204,160,232,73,173,196,43,10,9,154,255,185,230,38,124,95,35,168,113,252,111,20,67,72,178,73,52,31>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},<<84,125,88,219,189,134,76,10,86,12,12,163,120,158,232,132,137,116,232,197,23,205,183,130,124,51,3,227,180,46,117,77>>},{{versions,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>},[<<48,46,49,46,48>>,<<48,46,49,46,49>>,<<48,46,49,46,50>>,<<49,46,48,46,48>>,<<49,46,48,46,49>>,<<49,46,48,46,50>>,<<49,46,48,46,51>>,<<49,46,48,46,52>>,<<49,46,48,46,53>>,<<49,46,48,46,54>>,<<49,46,49,46,48>>]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},<<108,84,138,208,244,145,100,149,167,137,119,103,74,37,24,71,134,159,133,181,18,91,124,42,68,218,49,120,149,90,223,209>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},<<153,157,191,5,166,154,48,207,230,159,28,50,23,123,19,188,187,118,12,110,235,200,231,70,167,54,130,189,127,223,71,171>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},<<16,133,39,148,221,224,88,193,239,122,91,157,83,212,8,217,4,194,7,110,159,171,116,172,67,252,103,109,50,227,218,211>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},<<221,158,21,194,160,108,229,114,231,154,103,96,57,12,160,35,72,192,241,193,134,58,34,145,8,98,133,129,134,36,121,114>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},{{2022,1,18},{22,48,17}}},{{outer_checksum,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},<<40,42,138,50,60,162,168,69,201,230,247,135,209,102,52,143,119,108,29,74,65,237,230,48,70,215,45,66,46,61,169,70>>},{{registry_etag,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>},<<34,53,97,98,101,48,97,101,50,49,54,56,57,56,49,52,99,101,101,57,53,54,55,50,50,99,100,98,101,53,99,100,49,34>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},<<180,6,194,252,205,234,160,217,78,35,181,227,10,227,214,53,162,212,97,227,99,165,201,198,49,104,151,3,124,240,80,210>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},nil},{{timestamp,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>},{{2022,1,18},{22,48,18}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},<<132,183,103,162,219,142,204,47,7,187,132,252,180,245,79,37,22,12,7,161,218,226,124,70,11,63,12,64,191,203,247,159>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},<<75,178,27,173,213,26,50,173,80,237,204,229,78,83,18,172,240,121,163,188,119,15,38,108,25,151,7,28,127,202,223,23>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},nil},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},#{message => <<82,101,116,105,114,101,100,32,82,67,32,118,101,114,115,105,111,110>>,reason => 'RETIRED_OTHER'}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},<<22,126,93,61,210,231,113,110,88,101,245,168,208,100,215,169,247,0,69,22,199,150,104,64,131,241,205,24,12,45,66,150>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},<<24,34,98,146,249,177,109,241,247,196,117,36,59,152,185,133,59,170,233,18,101,88,198,253,222,53,77,27,159,120,134,56>>},{last_update,{{2022,1,18},{20,55,39}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},<<7,202,4,16,92,47,46,71,50,244,235,97,134,62,24,231,241,183,181,11,109,30,227,30,126,23,205,198,18,154,77,225>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},<<245,131,207,95,146,14,6,187,25,227,36,29,139,227,242,66,199,98,16,105,185,125,1,19,130,88,232,183,165,73,55,89>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},<<109,146,154,92,130,248,99,214,32,28,161,252,218,171,38,179,85,143,41,221,224,211,160,34,229,242,200,221,175,180,203,22>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},<<206,219,47,35,1,113,230,209,4,35,174,232,206,144,81,40,51,176,126,151,135,71,204,131,107,15,44,3,127,207,119,157>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},{{2022,1,18},{22,48,17}}},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},<<76,120,211,230,117,249,239,248,133,203,226,82,200,154,143,193,210,251,128,60,13,3,169,20,40,30,88,120,52,224,148,49>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},nil},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},<<245,81,152,101,10,142,192,29,62,252,4,121,122,190,85,12,125,2,62,127,248,181,9,243,115,207,147,48,50,4,155,216>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},<<21,65,73,21,16,131,0,130,100,90,163,191,158,38,141,151,254,169,191,217,126,7,137,84,112,244,23,246,108,243,192,116>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},<<185,103,190,43,35,240,246,120,127,171,126,214,129,180,196,90,33,90,129,72,31,182,43,1,165,183,80,250,143,48,247,108>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},{{2022,1,18},{22,48,20}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>,false}]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},<<16,58,136,179,90,253,98,119,4,200,46,74,189,12,206,172,147,54,164,224,65,214,227,196,113,15,233,60,72,73,65,147>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},<<222,148,84,174,200,249,97,163,28,227,188,38,197,39,87,121,10,152,130,7,85,93,208,130,110,90,96,165,229,244,16,167>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},<<28,55,228,101,104,121,52,189,79,135,20,25,68,145,107,252,74,110,96,231,95,211,42,107,78,234,230,154,136,205,203,158>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},<<127,124,167,45,243,210,158,82,45,55,170,37,73,44,171,71,77,10,229,214,151,31,14,228,151,173,141,53,228,113,230,18>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},<<215,201,232,38,14,156,220,31,178,203,119,226,217,3,149,105,98,193,247,97,87,235,130,0,126,198,189,229,218,171,101,210>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},{{2022,1,18},{22,48,17}}},{{registry_etag,<<104,101,120,112,109>>,<<106,115,111,110>>},<<34,101,102,101,101,99,52,55,102,57,50,98,97,99,55,54,55,55,57,97,50,55,49,99,48,102,98,98,51,54,51,98,55,34>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},<<1,101,136,233,169,102,36,116,1,188,191,2,151,109,70,143,30,111,6,137,29,222,68,248,115,201,37,156,100,150,204,161>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},<<99,11,135,164,61,90,213,41,40,103,253,138,103,49,217,123,60,131,58,11,150,140,210,3,25,183,9,32,254,241,64,107>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},{{2022,1,18},{22,48,20}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},{{2022,1,18},{22,48,20}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},<<120,45,32,1,18,21,106,160,173,174,245,209,65,156,42,204,229,182,91,99,69,210,69,48,241,27,87,153,24,77,152,231>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},<<140,130,155,178,142,63,49,106,54,18,22,49,68,5,254,41,109,141,210,253,116,9,223,165,63,164,172,28,255,55,151,160>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},<<156,225,30,255,90,116,160,123,175,55,135,178,177,157,215,152,114,77,41,169,195,164,146,164,29,243,159,106,246,134,218,14>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},{{2022,1,18},{22,48,20}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},<<228,42,101,145,72,233,247,177,231,215,28,123,93,36,153,124,215,189,123,114,215,227,30,165,194,219,22,116,184,238,231,136>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},<<60,195,226,58,205,234,110,131,64,115,25,39,91,193,250,174,216,30,159,132,1,73,217,241,199,203,174,78,19,145,128,169>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},<<209,152,101,72,132,113,137,181,31,30,251,101,209,150,230,171,159,46,136,166,135,138,54,58,236,14,60,119,226,85,6,22>>}].
3595+[{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},<<18,192,208,123,207,0,180,26,155,61,161,233,207,82,235,5,192,76,185,237,23,20,177,174,34,9,208,212,27,25,175,60>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,52>>},<<67,143,151,181,22,168,83,33,207,7,214,240,153,92,43,111,2,163,254,240,252,68,1,112,205,240,62,140,238,165,137,121>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,53,46,48>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},<<140,102,178,169,55,154,72,235,237,246,174,23,188,43,114,195,171,233,203,219,247,130,73,57,128,105,103,50,97,1,195,113>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},<<245,47,115,235,52,75,194,45,227,53,153,35,119,65,49,56,64,87,150,224,208,173,153,217,149,217,151,122,194,159,28,169>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},<<134,72,240,74,148,57,118,90,212,73,188,86,163,255,125,139,17,221,68,255,8,255,205,239,196,50,159,124,147,132,61,250>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},<<0,214,237,215,48,254,153,35,132,121,150,70,157,1,139,250,210,149,54,105,189,43,99,91,7,84,206,45,213,159,166,37>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},<<108,84,138,208,244,145,100,149,167,137,119,103,74,37,24,71,134,159,133,181,18,91,124,42,68,218,49,120,149,90,223,209>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},<<37,176,134,181,185,240,219,77,168,137,42,78,21,67,87,112,109,29,219,116,166,190,176,5,234,235,228,11,96,67,46,140>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,50>>},<<153,96,89,85,120,88,108,113,207,236,21,185,76,63,10,244,52,98,128,43,94,179,170,236,143,40,166,211,133,178,47,184>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>},{{2022,12,13},{13,54,17}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,48>>},<<90,200,61,232,134,131,140,0,95,137,67,231,25,190,86,140,248,111,114,54,31,244,165,214,129,216,247,2,77,147,47,0>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},nil},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,52>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},<<194,61,185,228,204,160,232,73,173,196,43,10,9,154,255,185,230,38,124,95,35,168,113,252,111,20,67,72,178,73,52,31>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},<<130,163,223,22,68,204,169,183,106,75,126,192,23,189,164,63,18,214,96,37,232,245,60,212,77,210,176,19,164,69,251,147>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},<<250,117,237,79,53,92,212,171,70,140,37,88,129,113,248,0,42,114,116,211,213,251,55,108,24,130,45,223,199,195,63,31>>},{{registry_etag,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>},<<34,101,54,98,102,48,48,97,102,102,97,54,53,53,52,54,100,51,53,48,56,55,102,48,55,49,54,97,51,52,51,49,56,34>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},<<78,149,60,214,171,60,247,71,60,37,144,249,155,72,255,149,21,190,25,113,189,191,237,213,92,218,18,14,251,45,35,205>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,51>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},<<222,148,84,174,200,249,97,163,28,227,188,38,197,39,87,121,10,152,130,7,85,93,208,130,110,90,96,165,229,244,16,167>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},<<218,31,129,51,81,87,77,55,61,179,235,87,157,45,159,228,185,29,239,194,50,224,8,39,238,90,163,139,86,196,193,210>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},{{2022,12,13},{13,54,22}}},{{registry_etag,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>},<<34,53,97,98,101,48,97,101,50,49,54,56,57,56,49,52,99,101,101,57,53,54,55,50,50,99,100,98,101,53,99,100,49,34>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},nil},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,53>>},<<60,20,85,18,126,146,222,136,69,128,109,184,149,84,173,125,69,224,33,41,116,190,65,221,156,56,165,200,129,134,23,19>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},[]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},<<9,86,102,121,241,147,49,21,246,24,158,108,78,32,94,53,170,234,28,174,220,248,67,135,92,62,182,94,236,131,228,136>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},<<162,54,21,16,103,251,60,169,201,96,54,128,105,50,209,5,210,224,199,188,179,119,133,19,239,254,106,108,59,35,58,96>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},[]},{{versions,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>},[<<48,46,49,46,48>>,<<48,46,50,46,48>>,<<48,46,50,46,49>>,<<48,46,50,46,50>>,<<48,46,50,46,51>>,<<48,46,50,46,52>>]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},[{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101>>,<<98,101,110,99,104,101,101>>,<<126,62,32,48,46,56>>,true},{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<126,62,32,48,46,49>>,true},{<<104,101,120,112,109>>,<<101,120,106,115,120>>,<<101,120,106,115,120>>,<<126,62,32,52,46,48>>,true},{<<104,101,120,112,109>>,<<106,97,115,111,110>>,<<106,97,115,111,110>>,<<126,62,32,49,46,48>>,true},{<<104,101,120,112,109>>,<<106,115,111,110,101>>,<<106,115,111,110,101>>,<<126,62,32,49,46,52>>,true},{<<104,101,120,112,109>>,<<112,111,105,115,111,110>>,<<112,111,105,115,111,110>>,<<126,62,32,51,46,48>>,true},{<<104,101,120,112,109>>,<<116,105,110,121>>,<<116,105,110,121>>,<<126,62,32,49,46,48>>,true}]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},nil},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},nil},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>,false}]},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},<<40,31,44,187,67,159,227,192,67,119,62,230,200,49,114,171,216,3,38,220,198,21,63,100,48,228,212,230,177,77,126,157>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,50>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,51>>},<<164,27,109,62,17,163,68,78,6,62,9,204,34,95,127,62,99,28,225,64,25,229,251,202,235,253,168,155,27,215,136,234>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},#{message => <<82,101,116,105,114,101,100,32,82,67,32,118,101,114,115,105,111,110>>,reason => 'RETIRED_OTHER'}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},<<18,120,55,62,72,14,61,187,172,80,45,35,75,247,111,77,173,185,164,174,22,208,182,58,172,75,199,249,79,211,178,228>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},<<110,216,76,213,101,167,236,112,146,0,220,53,152,58,23,181,31,118,152,56,180,196,142,200,193,64,28,253,16,50,224,254>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},<<10,15,244,148,212,41,101,199,80,103,93,163,225,174,2,244,58,151,127,76,237,209,79,159,115,152,247,177,247,37,52,29>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},<<133,128,81,127,114,25,171,182,235,26,100,132,19,211,194,49,151,164,153,232,238,12,184,91,99,120,17,14,55,59,18,213>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},<<37,105,199,33,33,80,209,87,165,122,53,119,190,202,207,162,227,70,163,175,234,105,135,8,133,22,134,172,220,210,141,4>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},<<28,55,228,101,104,121,52,189,79,135,20,25,68,145,107,252,74,110,96,231,95,211,42,107,78,234,230,154,136,205,203,158>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},<<107,156,170,216,147,0,6,249,187,53,104,12,93,51,17,145,122,198,118,144,195,175,27,160,24,98,51,36,192,21,171,229>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},<<17,125,88,18,60,172,60,104,2,0,82,72,191,3,237,32,165,177,77,221,30,57,216,108,122,229,40,150,2,53,82,144>>},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},<<64,95,116,217,92,226,6,190,163,171,188,216,241,63,34,144,224,191,223,138,75,210,50,253,14,103,194,242,36,158,40,119>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},<<136,22,143,146,203,209,35,224,41,13,135,208,161,202,128,3,232,99,170,67,10,225,114,87,177,231,195,222,195,33,119,158>>},{{retired,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},<<144,31,247,139,57,199,84,251,77,111,215,45,207,13,189,57,137,103,187,210,228,213,156,8,212,215,170,68,167,61,233,29>>},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},<<180,6,194,252,205,234,160,217,78,35,181,227,10,227,214,53,162,212,97,227,99,165,201,198,49,104,151,3,124,240,80,210>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},<<89,208,170,245,32,158,59,80,103,69,138,80,59,168,11,115,136,213,101,180,134,161,131,77,199,158,216,113,202,46,175,195>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,48>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},{{2022,12,13},{13,54,17}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},<<99,155,46,135,73,225,27,135,185,235,66,242,173,50,93,22,28,23,11,57,178,136,172,141,4,196,243,31,143,8,35,235>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},<<188,191,142,48,184,96,93,175,22,10,140,42,41,213,74,23,46,82,15,75,160,227,94,17,122,106,162,64,96,208,159,6>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},<<201,202,31,98,58,62,240,21,130,131,163,195,124,215,183,35,91,254,133,146,122,214,226,99,150,221,36,126,32,87,245,161>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,51>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},<<224,46,111,121,220,82,7,59,144,156,91,229,51,110,126,35,25,122,216,162,152,132,87,94,173,123,5,68,102,84,30,2>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},<<80,233,140,137,253,228,76,91,121,125,96,45,137,62,163,15,126,225,180,91,77,1,174,170,62,167,66,214,185,139,30,238>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},<<172,88,31,32,233,197,199,224,203,127,65,143,86,7,39,141,113,97,28,101,221,242,233,48,101,241,244,206,17,221,84,24>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},{{2022,12,13},{13,54,22}}},{last_update,{{2022,12,13},{2,23,18}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},[]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},{{2022,12,13},{13,54,17}}},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},<<6,79,119,21,219,121,136,118,175,30,184,40,124,132,98,109,32,87,82,237,176,225,163,143,209,38,34,47,103,105,237,172>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},<<165,235,69,46,242,66,123,154,112,20,171,100,152,141,178,66,81,134,95,142,111,174,125,163,240,100,177,227,178,61,51,219>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,53,46,48>>},<<232,33,245,65,72,112,69,199,89,26,25,99,238,180,42,255,240,223,169,155,220,219,235,52,16,121,90,47,89,199,125,52>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,52>>},<<60,27,251,109,145,191,104,246,163,209,95,70,174,32,218,15,119,64,211,99,238,91,192,65,25,28,232,114,42,108,79,174>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},<<24,229,217,170,84,18,236,6,60,249,113,155,207,231,59,249,144,197,254,213,201,163,200,66,44,43,93,149,41,252,139,13>>},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},<<16,58,136,179,90,253,98,119,4,200,46,74,189,12,206,172,147,54,164,224,65,214,227,196,113,15,233,60,72,73,65,147>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},<<107,98,70,96,40,214,224,171,62,198,128,92,81,244,168,134,41,230,152,183,29,248,224,31,165,92,92,74,49,174,190,107>>},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},<<200,135,134,160,114,7,168,11,7,30,163,142,26,113,168,171,215,50,62,203,247,5,102,1,39,0,155,32,56,197,161,209>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},<<227,19,177,246,201,71,212,213,150,103,66,219,100,159,247,226,103,54,224,132,176,162,127,161,246,74,202,120,50,120,28,196>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},<<16,4,241,79,86,196,247,98,133,76,72,46,15,233,45,98,116,227,208,7,139,61,112,228,178,238,179,183,158,39,81,7>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},<<185,80,65,252,17,144,118,152,187,77,64,117,190,80,75,6,0,168,234,119,129,196,236,127,27,240,142,115,235,238,108,37>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},<<203,247,114,93,87,123,181,54,15,26,132,29,231,129,200,59,140,131,56,79,158,10,194,88,127,8,19,128,121,36,154,200>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},<<137,28,32,233,180,214,31,0,187,29,21,255,46,29,244,81,14,48,42,7,254,77,205,184,84,193,108,34,59,72,29,163>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},nil},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},<<140,130,155,178,142,63,49,106,54,18,22,49,68,5,254,41,109,141,210,253,116,9,223,165,63,164,172,28,255,55,151,160>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,53,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},[]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},[]},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},[]},{{versions,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>},[<<48,46,49,46,48>>,<<48,46,49,46,49>>,<<48,46,49,46,50>>,<<49,46,48,46,48>>,<<49,46,48,46,49>>,<<49,46,48,46,50>>,<<49,46,48,46,51>>,<<49,46,48,46,52>>,<<49,46,48,46,53>>,<<49,46,48,46,54>>,<<49,46,49,46,48>>]},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},<<102,119,195,9,132,22,101,46,0,16,158,203,221,72,26,117,90,45,1,123,86,124,29,233,255,150,17,77,155,211,112,222>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},<<97,30,5,50,254,221,69,36,250,157,80,45,165,247,59,154,203,174,132,156,144,9,236,40,125,217,158,208,156,33,90,65>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},<<120,201,76,85,220,135,233,31,246,237,228,245,244,103,37,10,222,151,49,232,233,82,110,222,32,154,82,16,238,82,134,146>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},<<9,34,102,42,94,22,87,147,197,30,24,201,196,184,166,184,228,130,97,241,131,192,210,137,82,91,53,245,135,195,225,84>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},{{2022,12,13},{13,54,17}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},<<221,158,21,194,160,108,229,114,231,154,103,96,57,12,160,35,72,192,241,193,134,58,34,145,8,98,133,129,134,36,121,114>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,50>>},<<161,210,128,193,18,187,84,67,240,155,99,4,29,108,93,218,57,180,8,41,219,64,178,79,223,32,142,27,134,218,179,83>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},<<54,23,39,196,84,172,47,207,55,141,38,16,79,102,79,157,134,244,254,184,32,110,4,45,190,24,116,214,109,132,163,224>>},{{versions,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>},[<<49,46,48,46,50>>,<<49,46,48,46,51>>,<<49,46,48,46,52>>,<<49,46,48,46,53>>,<<49,46,48,46,55>>,<<49,46,48,46,56>>,<<49,46,48,46,57>>,<<49,46,49,46,48>>,<<49,46,50,46,48>>,<<49,46,50,46,49>>,<<49,46,50,46,50>>,<<49,46,51,46,48>>,<<49,46,51,46,49>>,<<49,46,51,46,50>>,<<49,46,51,46,51>>,<<49,46,51,46,52>>,<<49,46,52,46,48>>,<<49,46,52,46,49>>,<<49,46,52,46,50>>,<<49,46,52,46,51>>,<<49,46,52,46,52>>,<<49,46,52,46,53>>,<<49,46,53,46,48>>,<<49,46,53,46,49>>,<<49,46,53,46,50>>,<<49,46,53,46,51>>,<<49,46,53,46,52>>,<<49,46,54,46,48>>,<<49,46,54,46,49>>,<<49,46,54,46,50>>,<<49,46,55,46,48>>,<<49,46,55,46,49>>,<<49,46,55,46,50>>,<<49,46,55,46,51>>,<<49,46,55,46,52>>]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},[]},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},nil},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},nil},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},nil},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},[]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},<<197,103,12,1,118,217,143,197,134,60,112,72,163,173,92,172,44,1,81,110,133,253,40,176,162,35,166,106,125,235,140,234>>},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},nil},{{registry_etag,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>},<<34,56,100,48,55,102,97,49,50,50,98,102,51,57,57,56,49,56,102,50,101,49,57,101,57,98,56,54,48,98,55,100,54,34>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},nil},{{timestamp,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>},{{2022,12,13},{13,54,19}}},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},nil},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},<<245,131,207,95,146,14,6,187,25,227,36,29,139,227,242,66,199,98,16,105,185,125,1,19,130,88,232,183,165,73,55,89>>},{{repo,<<104,101,120,112,109>>},<<104,116,116,112,115,58,47,47,114,101,112,111,46,104,101,120,46,112,109>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},{{2022,12,13},{13,54,17}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},<<62,26,107,110,184,70,116,187,13,10,189,144,160,61,7,208,27,242,46,141,86,147,149,102,74,41,138,252,89,164,234,49>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},<<51,221,215,227,240,137,141,26,124,212,235,117,88,77,41,16,14,43,149,75,115,25,59,120,255,172,203,118,182,37,87,124>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},<<34,47,127,11,94,117,136,177,233,233,183,62,72,148,15,18,212,59,190,8,196,116,176,143,213,126,249,135,71,209,197,102>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},<<227,235,78,191,17,38,38,39,240,183,155,79,209,224,120,250,78,194,190,249,12,248,59,124,125,33,79,110,230,167,191,174>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,53>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},<<251,60,197,214,171,222,88,2,7,87,132,147,178,216,96,62,100,143,44,93,168,223,234,187,26,186,196,121,147,150,228,33>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},<<80,227,39,73,149,59,107,249,129,141,191,237,129,207,17,144,227,140,223,36,249,88,145,48,49,8,8,116,134,197,146,94>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},nil},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},<<83,93,248,66,116,16,163,147,66,189,186,61,17,181,60,80,132,232,115,81,105,99,126,190,213,196,76,215,14,171,0,35>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},<<217,80,154,44,34,147,65,79,12,138,178,35,105,23,194,141,154,6,6,227,139,49,72,11,47,118,177,203,206,191,151,106>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},<<84,80,137,56,172,103,226,121,102,177,14,244,150,6,227,173,89,149,214,101,215,252,38,136,239,179,234,177,48,124,144,121>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},<<42,36,205,38,187,111,153,246,43,113,23,68,183,101,166,2,86,8,105,191,53,227,14,136,204,113,61,233,238,209,143,84>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},<<230,66,147,177,199,46,50,58,218,21,109,71,23,74,239,14,251,80,38,58,21,246,26,15,152,146,235,24,81,15,119,123>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},<<72,227,29,177,140,35,191,51,200,56,93,63,114,178,112,129,75,142,94,101,7,17,152,154,152,201,40,95,125,184,34,154>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},<<167,118,4,141,83,165,143,243,181,212,72,231,82,105,45,47,47,255,248,233,98,241,72,127,19,182,62,184,86,155,14,126>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},<<219,220,236,81,73,70,188,141,202,177,215,125,255,119,25,67,122,133,217,134,23,144,134,74,177,33,85,237,163,253,111,175>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},{{2022,12,13},{13,54,17}}},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},<<144,94,191,180,229,77,90,141,108,61,184,90,151,227,68,244,0,142,188,59,117,227,37,235,243,184,143,105,204,82,97,188>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},<<16,133,39,148,221,224,88,193,239,122,91,157,83,212,8,217,4,194,7,110,159,171,116,172,67,252,103,109,50,227,218,211>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>,false}]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},<<83,185,186,191,253,24,107,180,251,159,221,71,232,164,66,184,241,141,184,20,151,255,163,165,91,90,95,89,111,90,200,20>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},<<253,149,195,248,33,112,38,177,155,78,193,134,22,8,84,223,29,230,41,51,192,33,56,76,84,98,69,66,3,239,206,224>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,53>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},<<170,203,72,169,240,220,55,111,21,223,48,101,202,33,132,115,141,215,201,81,80,174,216,60,40,206,11,171,181,110,91,152>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},<<209,152,101,72,132,113,137,181,31,30,251,101,209,150,230,171,159,46,136,166,135,138,54,58,236,14,60,119,226,85,6,22>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},<<220,199,223,5,177,219,110,77,26,62,164,3,245,148,210,223,129,195,79,185,24,146,201,196,194,204,109,44,245,156,34,154>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},<<159,1,192,129,120,215,122,101,122,54,82,135,8,70,212,202,238,122,123,113,202,50,151,29,247,206,87,192,121,218,111,222>>},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},[]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},[]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},<<99,11,135,164,61,90,213,41,40,103,253,138,103,49,217,123,60,131,58,11,150,140,210,3,25,183,9,32,254,241,64,107>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,32,50,46,51,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},<<59,28,140,11,227,44,39,32,207,5,135,132,129,87,236,95,14,20,247,84,219,99,34,156,52,187,19,90,94,236,181,40>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},<<237,244,27,181,79,195,77,80,10,31,149,28,153,82,162,59,134,174,136,12,189,252,117,59,72,225,183,14,63,184,238,19>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},<<76,202,250,170,44,224,27,133,221,209,69,145,244,213,246,115,27,78,19,182,16,167,15,184,65,240,112,17,120,71,130,128>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,51>>},[]},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},<<144,235,14,1,159,220,17,222,131,168,140,108,26,139,190,153,105,68,81,76,246,187,206,222,7,44,143,34,45,28,113,35>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,49>>},nil},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},{{2022,12,13},{13,54,17}}},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},<<59,50,222,86,143,18,144,1,225,207,137,204,91,207,214,219,177,38,15,171,178,207,138,52,16,205,192,246,52,235,161,130>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},<<55,62,180,247,50,31,137,138,214,119,41,153,243,13,175,101,249,243,142,29,61,212,215,152,215,168,45,59,18,63,225,211>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},[]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},<<207,101,129,50,228,228,150,173,232,111,35,114,94,237,64,16,52,240,120,216,88,212,173,10,147,76,123,58,58,204,20,178>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},nil},{{registry_etag,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>},<<34,49,55,48,53,48,57,49,53,97,53,57,55,56,102,97,97,53,56,57,55,56,56,49,99,97,101,99,97,100,51,57,57,34>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},<<34,76,89,87,237,225,240,215,135,68,94,165,238,52,99,79,186,176,6,253,161,30,77,66,240,37,11,97,16,216,237,49>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},<<121,81,11,127,243,186,89,124,117,140,230,243,151,226,59,63,194,252,114,157,214,51,40,129,196,104,183,103,183,28,119,193>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,50>>},<<221,82,137,92,76,143,33,54,94,138,69,110,63,63,180,18,123,84,143,1,54,24,160,87,216,253,118,164,42,200,244,239>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},<<119,62,225,102,102,158,178,27,82,151,206,65,179,199,180,116,190,9,110,184,237,5,45,69,112,129,40,154,28,242,80,122>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},nil},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},<<243,164,124,34,50,116,36,41,23,88,22,125,243,196,96,13,207,139,243,71,149,163,120,118,18,1,154,165,184,106,92,33>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},nil},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},<<33,232,214,152,48,145,102,15,57,79,68,167,193,31,140,241,244,103,175,178,170,218,31,207,89,194,241,181,144,164,47,104>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},<<154,191,33,141,190,78,164,252,184,117,224,135,213,249,4,239,38,61,1,46,229,237,33,212,110,157,188,166,63,5,61,22>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},<<232,37,108,31,91,115,43,205,72,90,169,75,192,19,113,243,36,225,20,154,143,38,38,35,64,124,162,204,19,171,8,74>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},nil},{{versions,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>},[<<48,46,50,46,49>>]},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,51>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},<<212,46,32,5,65,22,196,157,82,66,211,255,158,25,19,172,204,235,230,1,95,68,157,110,49,42,91,193,96,231,154,98>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},<<68,68,200,121,190,50,59,27,19,62,236,82,65,203,132,189,56,33,234,25,76,116,13,117,97,126,16,107,228,116,67,24>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},<<84,125,88,219,189,134,76,10,86,12,12,163,120,158,232,132,137,116,232,197,23,205,183,130,124,51,3,227,180,46,117,77>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},<<222,146,226,188,133,188,9,236,103,111,25,246,236,45,170,89,186,31,1,3,209,218,150,207,12,202,54,52,44,144,217,63>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,51>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},<<166,252,251,218,190,26,239,145,25,184,113,48,72,70,177,206,40,45,154,65,36,188,221,175,199,97,108,26,37,108,117,150>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},[{<<104,101,120,112,109>>,<<100,101,99,105,109,97,108>>,<<100,101,99,105,109,97,108>>,<<126,62,32,49,46,48>>,true}]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},{{2022,12,13},{13,54,17}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,49>>},<<78,125,235,70,12,170,104,171,2,130,210,4,228,58,85,50,98,180,93,64,169,61,208,16,154,133,137,103,171,28,143,191>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},<<87,98,95,24,53,198,99,53,131,106,213,107,2,224,21,248,208,190,199,234,139,100,211,5,241,134,255,216,60,134,175,63>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},[]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},<<203,165,63,168,219,131,173,150,140,154,101,46,9,195,237,125,220,196,218,67,79,39,195,234,169,202,71,255,178,177,255,3>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,50>>},<<234,60,159,122,114,175,184,186,230,37,71,134,105,46,42,89,195,188,54,132,141,132,46,251,52,200,220,69,174,84,179,187>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},<<61,98,119,99,233,68,81,236,33,113,230,208,52,205,163,1,55,45,225,205,240,11,189,224,214,126,14,174,103,116,102,219>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>},nil},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},<<156,225,30,255,90,116,160,123,175,55,135,178,177,157,215,152,114,77,41,169,195,164,146,164,29,243,159,106,246,134,218,14>>},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},<<247,30,210,221,230,58,44,168,206,231,133,5,145,64,254,121,160,122,142,67,65,133,52,199,94,32,21,56,185,12,31,185>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},<<228,10,21,153,48,36,160,203,79,94,34,129,109,107,227,64,2,204,68,99,198,23,137,237,53,236,148,196,25,17,235,238>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},<<60,135,105,131,179,53,62,116,172,85,245,4,171,228,244,113,115,162,199,86,112,89,188,95,36,84,45,187,182,47,19,218>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},<<81,222,127,212,160,25,247,150,107,51,19,62,173,183,197,186,145,158,93,130,159,185,169,5,79,1,43,225,62,143,157,1>>},{{inner_checksum,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},<<239,80,163,97,241,27,95,38,181,241,109,6,150,228,106,158,70,97,117,100,146,201,129,247,178,34,158,244,47,241,205,21>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,32,50,46,50,46,49>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},<<21,65,73,21,16,131,0,130,100,90,163,191,158,38,141,151,254,169,191,217,126,7,137,84,112,244,23,246,108,243,192,116>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},<<217,196,187,165,244,253,121,45,191,150,34,0,67,83,251,201,249,118,86,33,218,135,58,172,135,166,143,252,81,205,108,102>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},<<34,136,7,241,80,124,193,231,171,163,101,61,18,237,57,253,168,150,159,119,240,14,201,84,24,81,241,206,105,167,229,224>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},<<215,201,232,38,14,156,220,31,178,203,119,226,217,3,149,105,98,193,247,97,87,235,130,0,126,198,189,229,218,171,101,210>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},<<245,81,152,101,10,142,192,29,62,252,4,121,122,190,85,12,125,2,62,127,248,181,9,243,115,207,147,48,50,4,155,216>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,48>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},<<72,36,218,219,1,225,67,149,246,94,157,24,218,41,77,83,67,38,215,238,215,121,150,243,194,47,116,169,135,1,121,235>>},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,49,46,48>>},<<226,111,246,64,124,87,46,227,117,253,144,19,151,219,230,226,40,138,182,110,71,245,89,90,225,173,188,186,123,187,147,88>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},<<43,202,208,207,98,31,178,119,202,187,182,65,49,89,205,58,163,2,101,194,222,228,44,150,134,151,152,139,48,16,134,4>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>},[]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},<<135,70,99,76,186,2,83,179,168,68,50,96,128,215,141,77,124,129,171,147,194,248,161,18,241,10,234,167,248,181,81,137>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},<<105,102,54,18,176,225,123,172,122,29,127,26,69,235,225,149,15,19,218,24,10,69,123,7,223,63,175,139,223,24,200,149>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},{{2022,12,13},{13,54,17}}},{{deps,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},[]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{registry_etag,<<104,101,120,112,109>>,<<106,115,111,110>>},<<34,101,102,101,101,99,52,55,102,57,50,98,97,99,55,54,55,55,57,97,50,55,49,99,48,102,98,98,51,54,51,98,55,34>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,48>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},<<176,130,101,218,0,52,39,160,71,207,77,50,70,74,228,200,25,201,193,58,33,248,106,182,237,228,254,60,75,17,130,13>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},<<204,30,48,54,44,84,234,91,230,196,12,140,160,37,46,105,227,103,226,22,134,157,107,154,241,123,89,58,246,167,104,36>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,51>>},[]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},<<98,26,26,62,83,107,158,33,99,236,107,176,120,77,253,229,236,19,218,138,190,196,107,183,101,189,126,177,248,173,21,2>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},[]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},<<232,72,155,58,124,119,194,21,92,11,103,250,159,144,217,175,167,107,241,92,36,251,123,49,42,221,204,17,119,113,209,84>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},nil},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,52>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,50>>},<<72,67,100,98,6,104,157,95,209,160,235,61,14,8,188,194,70,39,52,17,101,196,9,111,104,119,219,243,240,116,38,190>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},<<77,136,166,207,49,69,174,71,48,206,151,157,195,38,52,182,223,150,54,59,81,222,161,94,32,206,80,184,22,1,35,229>>},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},nil},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,51>>},<<207,82,90,5,217,93,219,154,200,54,15,62,178,31,44,73,2,42,42,242,17,42,8,71,250,12,219,103,203,201,239,88>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,49>>},<<222,84,131,50,37,176,230,127,33,219,71,51,58,8,104,90,237,80,215,120,162,241,28,247,227,106,233,227,254,78,225,7>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},[]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},<<139,206,65,63,178,82,52,228,110,97,243,99,163,106,208,125,204,229,50,39,152,45,198,78,39,33,182,228,14,218,121,129>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},<<84,1,54,83,199,46,117,255,59,75,72,115,66,223,229,103,21,201,116,159,249,195,26,125,232,248,77,24,160,158,28,60>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},<<87,63,110,101,253,118,8,187,24,230,175,36,91,213,105,165,181,56,126,4,204,76,7,123,31,218,233,153,8,74,169,85>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},<<71,184,128,141,153,7,132,52,53,26,145,255,10,183,239,226,166,131,80,36,207,53,156,206,25,80,127,16,58,100,69,117>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,48>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,48>>},<<205,63,29,62,113,187,153,120,32,235,125,151,137,61,22,251,86,182,209,140,135,33,150,196,98,67,174,223,103,246,182,230>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,50>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},<<243,239,123,26,226,138,85,229,59,140,181,193,29,14,11,100,231,110,56,213,243,232,48,191,46,59,242,204,10,137,216,72>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},{{2022,12,13},{13,54,17}}},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},<<4,169,229,159,101,162,157,117,225,224,34,182,226,186,4,222,45,15,34,138,192,11,179,255,223,212,21,128,10,36,196,109>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},[{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101>>,<<98,101,110,99,104,101,101>>,<<126,62,32,48,46,56>>,true},{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<126,62,32,48,46,49>>,true},{<<104,101,120,112,109>>,<<101,120,106,115,120>>,<<101,120,106,115,120>>,<<126,62,32,52,46,48>>,true},{<<104,101,120,112,109>>,<<106,97,115,111,110>>,<<106,97,115,111,110>>,<<126,62,32,49,46,48>>,true},{<<104,101,120,112,109>>,<<106,115,111,110,101>>,<<106,115,111,110,101>>,<<126,62,32,49,46,52>>,true},{<<104,101,120,112,109>>,<<112,111,105,115,111,110>>,<<112,111,105,115,111,110>>,<<126,62,32,51,46,48>>,true},{<<104,101,120,112,109>>,<<116,105,110,121>>,<<116,105,110,121>>,<<126,62,32,49,46,48>>,true}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},<<22,126,93,61,210,231,113,110,88,101,245,168,208,100,215,169,247,0,69,22,199,150,104,64,131,241,205,24,12,45,66,150>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},<<158,206,25,186,234,42,11,160,204,226,167,220,175,197,212,98,51,88,47,253,21,126,117,89,227,31,149,135,213,169,181,63>>},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},nil},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},<<209,118,249,103,201,120,171,139,138,41,195,92,18,82,79,120,183,187,54,253,78,155,130,118,221,117,201,203,86,224,126,66>>},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},[]},{{versions,<<104,101,120,112,109>>,<<106,115,111,110>>},[<<48,46,51,46,48>>,<<48,46,51,46,50>>,<<48,46,51,46,51>>,<<49,46,48,46,48>>,<<49,46,48,46,49>>,<<49,46,48,46,50>>,<<49,46,48,46,51>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>,<<49,46,49,46,48>>,<<49,46,50,46,48>>,<<49,46,50,46,49>>,<<49,46,50,46,50>>,<<49,46,50,46,51>>,<<49,46,50,46,52>>,<<49,46,50,46,53>>,<<49,46,51,46,48>>,<<49,46,52,46,48>>,<<49,46,52,46,49>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},<<29,227,205,145,60,190,39,174,240,172,159,191,122,176,110,194,117,248,93,162,139,55,96,100,128,73,153,209,214,51,54,122>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},[]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},<<211,69,204,226,233,242,86,144,250,158,83,33,6,112,113,98,221,93,141,153,138,197,64,226,68,231,158,219,138,143,60,44>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,49>>},<<226,39,222,193,44,248,226,65,122,214,81,81,208,111,25,164,244,101,26,246,205,51,164,118,184,16,94,196,234,98,31,28>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,55>>},<<225,176,196,235,165,145,73,137,247,161,169,173,159,137,147,207,116,118,14,70,72,134,240,253,34,10,98,51,126,52,121,20>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,50>>,false}]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,52,46,48>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},<<8,68,93,118,243,173,53,7,188,74,243,14,175,216,130,96,192,243,92,80,56,84,42,242,119,171,208,151,91,225,234,38>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},<<60,195,226,58,205,234,110,131,64,115,25,39,91,193,250,174,216,30,159,132,1,73,217,241,199,203,174,78,19,145,128,169>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},<<0,37,224,56,226,242,232,197,200,36,13,24,188,252,17,177,239,225,162,86,113,101,111,197,178,253,214,112,245,72,222,52>>},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},<<125,82,45,99,193,63,55,10,240,85,62,39,241,17,175,46,151,249,79,82,241,156,152,189,85,126,220,205,83,211,23,237>>},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},<<134,98,110,28,137,164,173,154,150,208,217,198,56,249,232,140,35,70,184,155,75,161,97,25,136,89,78,190,114,181,213,238>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},<<253,239,107,136,195,29,76,34,224,117,107,33,94,103,115,31,76,39,57,250,253,19,168,240,150,226,247,69,122,201,252,195>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},<<154,36,158,30,159,221,180,243,75,252,43,207,43,251,67,191,243,170,98,165,95,128,124,114,203,34,73,177,227,145,74,233>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},#{message => <<82,101,116,105,114,101,100,32,82,67,32,118,101,114,115,105,111,110>>,reason => 'RETIRED_OTHER'}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,49>>},<<130,13,172,184,217,233,253,211,206,164,132,51,239,127,49,178,246,251,249,233,63,255,40,220,35,138,5,190,195,76,57,87>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>},[]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},nil},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,51>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},<<194,18,58,158,240,37,55,126,12,183,146,202,226,3,176,251,111,81,83,62,45,9,138,157,207,126,43,240,18,221,33,194>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,50>>},[]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},nil},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},<<127,124,167,45,243,210,158,82,45,55,170,37,73,44,171,71,77,10,229,214,151,31,14,228,151,173,141,53,228,113,230,18>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},<<239,82,71,134,18,4,215,101,218,196,201,174,239,141,242,228,84,208,44,85,221,176,130,198,199,103,181,203,151,45,101,25>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,50>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},<<93,43,197,39,177,127,29,127,117,31,104,29,56,234,57,136,166,142,206,162,41,215,41,123,71,219,82,241,176,26,149,42>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},nil},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,50>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,49>>},<<228,42,101,145,72,233,247,177,231,215,28,123,93,36,153,124,215,189,123,114,215,227,30,165,194,219,22,116,184,238,231,136>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},<<142,100,15,158,141,162,129,223,90,1,24,144,127,209,142,52,140,31,35,205,199,71,41,100,142,232,55,174,217,27,140,41>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,49,45,83,78,65,80,83,72,79,84>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},<<153,47,46,20,24,132,154,50,111,209,217,40,120,1,250,45,134,9,29,180,249,97,31,96,120,29,166,210,54,246,76,212>>},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,54>>},<<185,103,190,43,35,240,246,120,127,171,126,214,129,180,196,90,33,90,129,72,31,182,43,1,165,183,80,250,143,48,247,108>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},[{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101>>,<<98,101,110,99,104,101,101>>,<<126,62,32,48,46,56>>,true},{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<126,62,32,48,46,49>>,true},{<<104,101,120,112,109>>,<<101,120,106,115,120>>,<<101,120,106,115,120>>,<<126,62,32,52,46,48>>,true},{<<104,101,120,112,109>>,<<106,97,115,111,110>>,<<106,97,115,111,110>>,<<126,62,32,49,46,48>>,true},{<<104,101,120,112,109>>,<<106,115,111,110,101>>,<<106,115,111,110,101>>,<<126,62,32,49,46,52>>,true},{<<104,101,120,112,109>>,<<112,111,105,115,111,110>>,<<112,111,105,115,111,110>>,<<126,62,32,51,46,48>>,true},{<<104,101,120,112,109>>,<<116,105,110,121>>,<<116,105,110,121>>,<<126,62,32,49,46,48>>,true}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,53>>},<<64,60,123,48,80,27,93,51,205,168,188,107,254,48,127,89,219,1,95,199,37,86,122,86,4,218,231,246,5,165,30,23>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},<<120,45,32,1,18,21,106,160,173,174,245,209,65,156,42,204,229,182,91,99,69,210,69,48,241,27,87,153,24,77,152,231>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},[]},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},[{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101>>,<<98,101,110,99,104,101,101>>,<<126,62,32,48,46,56>>,true},{<<104,101,120,112,109>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<98,101,110,99,104,101,101,95,104,116,109,108>>,<<126,62,32,48,46,49>>,true},{<<104,101,120,112,109>>,<<101,120,106,115,120>>,<<101,120,106,115,120>>,<<126,62,32,52,46,48>>,true},{<<104,101,120,112,109>>,<<106,97,115,111,110>>,<<106,97,115,111,110>>,<<126,62,32,49,46,48>>,true},{<<104,101,120,112,109>>,<<106,115,111,110,101>>,<<106,115,111,110,101>>,<<126,62,32,49,46,52>>,true},{<<104,101,120,112,109>>,<<112,111,105,115,111,110>>,<<112,111,105,115,111,110>>,<<126,62,32,51,46,48>>,true},{<<104,101,120,112,109>>,<<116,105,110,121>>,<<116,105,110,121>>,<<126,62,32,49,46,48>>,true}]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},<<87,33,198,182,213,1,34,216,246,140,204,172,113,44,170,18,49,249,120,148,186,183,121,239,245,255,15,136,108,180,70,72>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},nil},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},<<44,187,218,100,149,12,13,159,201,60,175,106,184,221,155,49,232,55,50,164,156,21,248,17,153,78,214,142,229,155,45,213>>},{{retired,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},nil},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},<<196,149,38,14,55,137,176,144,88,147,32,164,221,109,151,69,54,147,217,186,43,222,120,167,11,98,32,205,246,88,203,255>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},<<43,187,237,224,72,117,138,214,127,122,117,84,47,144,246,148,202,128,50,50,162,182,127,221,127,159,218,152,141,186,154,137>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},<<206,105,157,49,102,44,52,218,135,131,255,23,171,152,12,99,80,186,80,189,130,71,85,105,219,224,255,146,149,83,217,202>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,53>>},<<203,190,84,85,201,61,245,243,242,148,62,153,94,40,183,168,128,131,97,186,52,207,62,68,38,125,119,160,30,175,22,9>>},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},<<24,34,98,146,249,177,109,241,247,196,117,36,59,152,185,133,59,170,233,18,101,88,198,253,222,53,77,27,159,120,134,56>>},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,48>>},<<143,86,163,52,2,26,42,207,236,45,147,7,8,208,240,25,53,241,101,76,138,222,121,119,187,241,248,235,72,67,9,114>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,49>>},<<89,9,255,229,179,206,196,194,176,199,190,30,196,163,38,224,24,168,144,223,254,187,5,224,247,159,68,20,164,65,237,182>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,50>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},<<53,139,202,226,196,66,253,64,191,71,65,138,14,15,148,73,5,216,206,18,44,194,156,98,62,109,252,217,190,194,181,19>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},<<33,182,157,95,117,31,169,225,236,145,71,77,68,247,183,80,73,20,184,249,214,168,53,45,56,133,111,119,129,224,124,53>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},<<109,44,115,99,187,137,175,235,209,36,27,0,51,60,161,178,176,156,97,30,253,148,104,172,0,236,207,120,210,64,58,4>>},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,48>>},<<205,13,176,11,249,85,42,18,87,148,80,64,244,222,235,41,152,176,92,122,1,134,215,152,246,224,234,5,150,141,178,69>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,53,46,48>>},<<196,123,90,82,33,191,46,86,214,232,235,121,231,120,132,4,109,127,213,22,40,13,199,217,182,116,37,30,10,228,98,70>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},<<145,11,107,111,136,138,168,176,247,155,220,168,171,244,206,33,214,76,152,252,135,182,186,139,106,231,242,237,34,85,28,250>>},{{timestamp,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},<<137,173,179,41,68,72,116,128,150,65,204,47,100,90,236,43,211,141,253,132,30,127,228,193,179,188,162,230,249,26,26,243>>},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},nil},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,50>>},nil},{{registry_etag,<<104,101,120,112,109>>,<<99,115,118>>},<<34,52,101,52,57,56,102,51,97,57,49,97,55,54,100,102,56,100,97,52,100,53,54,51,55,53,102,98,97,54,99,51,53,34>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},<<110,147,67,127,116,169,151,8,6,138,50,183,103,176,36,50,209,19,137,98,117,66,20,9,227,1,141,152,146,54,166,90>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,49,46,48,45,83,78,65,80,83,72,79,84>>},[{<<104,101,120,112,109>>,<<100,101,99,105,109,97,108>>,<<100,101,99,105,109,97,108>>,<<126,62,32,49,46,48>>,true}]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,52>>},<<80,222,109,149,216,20,244,71,69,139,213,215,38,102,167,70,36,237,219,14,249,139,220,238,97,160,21,58,174,8,101,255>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},<<47,127,203,236,44,53,3,75,173,226,249,113,127,119,5,157,197,78,180,233,41,163,4,156,167,186,103,117,192,189,102,205>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,52,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,53>>},nil},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,51>>},<<139,0,144,177,58,66,52,58,215,9,237,8,129,17,253,64,169,228,194,209,129,158,246,193,230,1,52,113,52,237,52,208>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,51>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,56>>},<<153,157,191,5,166,154,48,207,230,159,28,50,23,123,19,188,187,118,12,110,235,200,231,70,167,54,130,189,127,223,71,171>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},<<128,143,97,68,230,177,7,27,6,94,239,120,144,128,132,98,39,236,140,208,209,97,22,203,135,221,149,155,216,18,239,43>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},<<82,54,119,31,28,24,178,146,208,95,163,243,177,122,136,230,32,65,105,41,167,111,111,118,7,160,99,84,190,131,223,24>>},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,49>>},<<23,26,137,155,34,80,224,72,191,89,178,41,171,37,52,247,77,137,44,170,243,29,184,245,90,242,156,26,6,1,71,84>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,50>>},<<22,121,198,93,112,4,147,137,25,95,221,158,95,224,15,153,89,70,147,93,29,204,99,87,229,20,202,26,241,54,226,56>>},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},<<174,118,224,106,125,26,72,9,28,95,84,35,200,94,240,134,206,108,19,85,140,94,14,149,211,176,78,31,86,195,90,134>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},{{2022,12,13},{13,54,17}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,49>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,52>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,52>>},<<42,245,24,234,240,88,173,144,1,42,109,190,24,196,158,0,252,224,224,52,111,169,244,187,153,60,22,68,93,239,132,139>>},{{timestamp,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},{{2022,12,13},{13,54,19}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,48>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},<<223,18,100,181,135,27,186,248,218,79,17,254,173,250,13,198,97,244,213,17,73,58,37,248,249,199,214,21,224,214,20,213>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},<<160,88,176,66,166,90,171,75,107,220,254,73,23,150,200,208,67,105,54,44,172,223,141,93,75,234,156,81,112,151,208,56>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},<<206,219,47,35,1,113,230,209,4,35,174,232,206,144,81,40,51,176,126,151,135,71,204,131,107,15,44,3,127,207,119,157>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,48>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},<<81,54,235,143,128,32,164,64,245,248,148,241,193,30,127,169,72,3,21,178,230,227,152,176,228,102,9,203,150,62,118,138>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},<<121,180,219,142,142,93,115,110,206,124,216,109,238,5,68,39,61,188,79,192,147,122,157,207,219,65,51,176,151,41,238,29>>},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},<<44,107,172,83,3,113,61,27,67,202,111,60,136,23,103,245,123,42,223,102,140,222,48,19,189,113,87,220,101,239,41,156>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},<<227,14,75,190,99,54,83,165,194,218,67,202,180,42,97,98,62,10,204,128,239,64,195,33,188,41,240,214,152,105,123,211>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,51,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,32,50,46,50,46,49>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,48>>},<<105,239,141,192,74,76,174,199,209,37,41,162,55,199,180,155,139,177,255,48,198,228,44,186,234,71,245,179,206,145,253,189>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},<<54,130,193,140,107,7,72,13,242,18,45,13,175,92,5,69,123,66,193,153,15,25,124,227,222,83,136,78,139,168,52,196>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,51>>},<<82,182,199,251,72,31,102,206,0,52,187,146,182,43,120,127,6,107,148,191,89,175,22,55,230,80,84,253,49,146,12,96>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},<<155,164,209,166,168,242,208,178,113,109,226,178,165,204,43,170,204,126,246,97,224,35,89,184,212,159,28,14,122,140,94,203>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},[]},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,51>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},[]},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},[]},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},nil},{{versions,<<104,101,120,112,109>>,<<99,115,118>>},[<<48,46,49,46,48>>,<<48,46,49,46,49>>,<<48,46,50,46,48>>,<<48,46,50,46,49>>,<<48,46,50,46,50>>,<<49,46,48,46,48>>,<<49,46,48,46,49>>,<<49,46,49,46,48>>,<<49,46,49,46,49>>,<<49,46,49,46,50>>,<<49,46,49,46,51>>,<<49,46,49,46,52>>,<<49,46,49,46,53>>,<<49,46,50,46,48>>,<<49,46,50,46,49>>,<<49,46,50,46,50>>,<<49,46,50,46,51>>,<<49,46,50,46,52>>,<<49,46,51,46,48>>,<<49,46,51,46,49>>,<<49,46,51,46,50>>,<<49,46,51,46,51>>,<<49,46,52,46,48>>,<<49,46,52,46,49>>,<<49,46,52,46,50>>,<<49,46,52,46,51>>,<<49,46,52,46,52>>,<<50,46,48,46,48,45,114,99,46,48>>,<<50,46,48,46,48>>,<<50,46,49,46,48>>,<<50,46,49,46,49>>,<<50,46,50,46,48>>,<<50,46,51,46,48>>,<<50,46,51,46,49>>,<<50,46,52,46,48>>,<<50,46,52,46,49>>,<<50,46,53,46,48>>,<<51,46,48,46,48>>,<<51,46,48,46,49>>,<<51,46,48,46,50>>,<<51,46,48,46,51>>,<<51,46,48,46,52>>,<<51,46,48,46,53>>]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,51,46,54>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},<<124,16,141,227,48,56,16,40,44,161,17,236,192,147,138,120,230,2,246,180,240,203,107,144,253,245,47,149,209,152,5,159>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},[]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,50>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,48>>},<<2,74,88,8,199,219,172,173,7,228,200,251,223,183,96,201,108,45,40,115,94,67,214,95,26,241,22,67,164,211,163,242>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},[{<<104,101,120,112,109>>,<<101,97,114,109,97,114,107>>,<<101,97,114,109,97,114,107>>,<<62,61,32,48,46,48,46,48>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},<<221,84,236,175,169,116,61,21,164,128,166,157,237,246,104,174,139,137,135,221,19,11,237,83,29,1,222,45,224,219,114,231>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,50>>},<<14,193,72,255,99,89,118,57,179,255,140,195,239,82,60,251,70,105,244,250,26,46,146,30,5,132,156,143,149,12,124,109>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,49>>},{{2022,12,13},{13,54,22}}},{{registry_etag,<<104,101,120,112,109>>,<<114,101,99,111,110>>},<<34,57,51,50,99,100,100,53,52,102,102,55,57,49,54,57,98,54,50,97,55,50,48,50,56,100,56,98,53,48,53,49,48,34>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,53,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52,32,111,114,32,126,62,32,49,46,49,46,48>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,51>>},<<37,208,148,212,133,244,114,57,242,24,181,61,240,105,26,16,47,239,19,7,29,253,13,4,146,43,81,66,41,124,252,147>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},<<102,254,225,234,245,54,52,125,73,57,66,203,94,8,83,33,197,30,128,222,18,79,240,15,75,38,81,135,11,145,155,153>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,52>>},[]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},[]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},{{2022,12,13},{13,54,17}}},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},nil},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,52>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,48>>},<<38,30,64,121,8,118,140,103,246,243,173,85,119,190,179,66,64,69,24,207,58,141,28,37,249,112,76,8,167,126,137,109>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,52>>},<<18,52,153,51,188,38,72,236,120,159,155,27,62,139,58,235,92,234,198,54,131,247,95,139,203,7,135,0,36,91,135,76>>},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,49>>},<<67,15,250,96,104,90,193,239,223,177,254,76,151,184,118,124,146,208,217,46,110,124,62,134,33,85,155,167,117,152,103,138>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,49>>},<<139,58,59,201,53,11,160,69,50,244,82,198,7,170,36,213,157,224,58,54,162,131,139,30,161,124,39,70,70,226,243,213>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},<<144,237,193,93,248,153,119,172,98,173,124,194,8,202,22,226,66,122,169,193,130,137,238,155,243,134,208,96,117,166,219,140>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,51,46,48>>},<<126,106,131,77,27,49,48,195,34,70,205,62,157,56,3,252,52,28,167,175,148,54,47,51,33,56,139,197,165,119,161,26>>},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,51>>},<<236,36,134,141,134,25,117,122,104,240,121,131,87,199,25,8,7,161,207,196,44,233,12,24,194,55,96,229,146,73,162,26>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},<<61,45,231,167,16,185,190,212,207,189,174,4,25,217,139,25,133,99,75,216,204,31,38,239,149,118,194,235,154,166,179,94>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,53>>},<<56,183,89,231,65,206,79,134,87,102,151,38,186,237,121,114,96,39,96,147,19,252,40,47,90,103,30,25,132,140,33,53>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,53>>},<<110,77,136,127,221,142,139,234,129,238,215,150,170,88,155,200,14,52,183,137,97,121,182,132,249,117,202,184,58,27,23,62>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,55,46,51>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,49>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},<<109,146,154,92,130,248,99,214,32,28,161,252,218,171,38,179,85,143,41,221,224,211,160,34,229,242,200,221,175,180,203,22>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},<<244,130,93,55,75,34,242,88,173,17,74,116,121,107,121,184,110,32,160,54,17,5,23,25,246,6,35,83,192,83,137,203>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,52>>},nil},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<48,46,51,46,50>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},[]},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,48>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,52>>},<<195,39,7,44,190,185,154,8,86,82,207,17,10,122,61,93,123,153,249,69,104,209,73,124,167,105,113,200,128,97,85,90>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},<<158,233,172,54,50,92,173,255,53,126,95,219,121,194,116,101,7,77,182,127,154,240,15,64,126,21,191,100,146,57,149,10>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},<<122,235,9,94,73,65,128,174,217,87,243,88,187,139,146,21,54,10,58,167,226,61,174,125,154,240,251,21,72,66,17,100>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,48>>},<<3,204,80,111,88,227,177,218,36,255,228,114,121,197,14,205,7,16,167,169,40,52,192,58,35,38,244,226,34,80,213,77>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,52>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},<<126,52,227,187,132,18,57,63,249,247,246,37,143,69,206,99,36,123,203,172,231,142,225,73,214,152,89,118,13,216,14,92>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,49,46,48>>},<<104,79,209,145,145,174,223,175,56,123,186,187,235,143,243,199,82,240,34,12,129,18,235,144,125,121,127,69,146,214,232,113>>},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},{{2022,12,13},{13,54,17}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,49>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},nil},{{retired,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,48>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,50,46,48>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},[]},{{deps,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},[]},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},<<139,29,56,94,0,231,8,1,161,47,107,212,62,182,79,116,124,79,114,200,142,82,63,143,13,50,118,165,19,92,160,11>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},<<59,151,167,246,49,247,35,53,197,202,105,173,82,159,74,171,245,78,9,177,14,190,12,114,5,182,175,122,13,146,27,148>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,50>>},<<101,91,237,185,64,198,75,180,213,141,96,128,203,130,4,177,249,36,215,227,22,137,13,7,134,172,127,144,251,154,104,212>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,57>>},<<110,125,164,69,241,34,142,178,227,58,182,153,25,226,63,248,245,119,212,177,213,64,199,18,55,58,247,109,196,24,107,86>>},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,48>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,49>>},<<52,24,227,25,118,75,157,255,31,70,158,67,203,223,253,127,213,78,164,124,191,118,80,39,197,87,171,209,70,161,159,179>>},{{outer_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,50>>},<<7,70,231,172,135,119,124,3,107,104,136,211,75,235,196,163,110,83,65,104,59,87,163,225,184,103,14,93,9,182,129,82>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,49,46,48>>},<<132,183,103,162,219,142,204,47,7,187,132,252,180,245,79,37,22,12,7,161,218,226,124,70,11,63,12,64,191,203,247,159>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,49>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,51>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},<<198,111,234,137,186,120,98,185,73,1,186,240,135,18,133,233,183,60,173,137,197,253,181,122,99,134,210,173,207,41,89,62>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<48,46,50,46,49>>},<<146,48,109,88,81,27,235,226,12,242,50,205,65,94,151,159,216,143,175,226,159,194,63,30,158,27,67,127,162,208,6,180>>},{{inner_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},<<217,57,74,179,245,173,205,169,122,75,139,28,11,121,141,203,40,107,7,145,60,64,32,234,127,120,200,135,35,251,20,94>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<50,46,48,46,48,45,83,78,65,80,83,72,79,84>>},#{message => <<82,101,116,105,114,101,100,32,82,67,32,118,101,114,115,105,111,110>>,reason => 'RETIRED_OTHER'}},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},<<36,170,165,33,61,173,49,64,42,227,123,151,158,11,91,183,126,152,210,219,190,163,38,237,145,161,0,12,145,196,17,19>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,52>>},<<7,202,4,16,92,47,46,71,50,244,235,97,134,62,24,231,241,183,181,11,109,30,227,30,126,23,205,198,18,154,77,225>>},{{outer_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,49>>},<<244,176,215,37,57,47,193,87,159,2,33,179,207,112,170,174,89,243,238,225,104,54,215,40,142,180,84,243,238,92,236,34>>},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,53>>},<<79,89,119,17,222,247,188,179,135,133,25,245,127,149,88,219,60,157,134,138,238,65,83,94,220,220,32,170,192,179,158,104>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},<<164,193,167,195,13,33,81,182,228,151,108,178,245,44,10,29,73,236,150,90,251,115,126,216,74,104,75,196,40,77,22,39>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,48,46,49>>},[]},{{timestamp,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,49>>},{{2022,12,13},{13,54,17}}},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,49,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,51>>},nil},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,50>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,50,46,48>>},[]},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,48>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,49,46,48>>},nil},{{outer_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,48>>},<<241,44,133,153,45,45,129,212,251,122,96,34,90,55,175,239,58,240,6,152,35,204,50,26,37,233,223,157,59,203,110,210>>},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,52>>},nil},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,48>>},<<247,255,225,201,212,59,123,176,236,219,241,88,208,221,33,29,68,170,80,93,85,16,190,88,13,31,37,220,165,98,122,8>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,51,46,49>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,51>>,false}]},{{outer_checksum,<<104,101,120,112,109>>,<<113,117,97,110,116,105,108,101,95,101,115,116,105,109,97,116,111,114>>,<<48,46,50,46,49>>},<<40,42,138,50,60,162,168,69,201,230,247,135,209,102,52,143,119,108,29,74,65,237,230,48,70,215,45,66,46,61,169,70>>},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,49>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,48>>},<<121,217,236,185,73,178,123,204,43,90,3,121,139,93,113,250,129,148,13,153,252,240,217,106,194,6,142,94,242,154,218,192>>},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,52,46,48>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,53>>},<<76,120,211,230,117,249,239,248,133,203,226,82,200,154,143,193,210,251,128,60,13,3,169,20,40,30,88,120,52,224,148,49>>},{{timestamp,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,51>>},{{2022,12,13},{13,54,22}}},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{version,3},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,49>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<48,46,49,46,49>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,51,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>},<<75,178,27,173,213,26,50,173,80,237,204,229,78,83,18,172,240,121,163,188,119,15,38,108,25,151,7,28,127,202,223,23>>},{{versions,<<104,101,120,112,109>>,<<114,101,99,111,110>>},[<<50,46,50,46,48>>,<<50,46,50,46,49>>,<<50,46,51,46,48>>,<<50,46,51,46,49>>,<<50,46,51,46,50>>,<<50,46,51,46,51>>,<<50,46,51,46,52>>,<<50,46,51,46,53>>,<<50,46,51,46,54>>,<<50,46,52,46,48>>,<<50,46,53,46,48>>,<<50,46,53,46,49>>,<<50,46,53,46,50>>]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,48>>},<<153,68,136,43,113,245,91,37,3,102,61,156,181,77,63,28,123,189,247,204,109,208,28,196,14,168,239,81,32,118,1,236>>},{{timestamp,<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<49,46,48,46,48>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},{{2022,12,13},{13,54,22}}},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},{{2022,12,13},{13,54,22}}},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,52>>},nil},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,49,46,52>>},[]},{{deps,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,53>>},[]},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,53,46,52>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<126,62,50,46,53,46,49>>,false}]},{{retired,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,52,46,50>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,52,46,48>>},<<253,251,221,94,157,163,22,77,45,83,151,15,50,140,123,100,157,118,74,72,185,111,245,238,167,113,163,222,82,148,155,177>>},{{inner_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<49,46,50,46,50>>},<<233,250,128,26,6,80,103,232,165,96,68,74,199,144,121,115,174,138,214,151,226,6,200,187,26,66,45,159,37,206,202,197>>},{{timestamp,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,52,45,83,78,65,80,83,72,79,84>>},{{2022,12,13},{13,54,22}}},{{outer_checksum,<<104,101,120,112,109>>,<<115,116,100,111,117,116,95,102,111,114,109,97,116,116,101,114>>,<<48,46,50,46,52>>},<<81,241,223,146,27,4,119,39,94,167,18,118,48,66,21,93,188,116,172,199,93,150,72,219,213,73,133,196,92,145,59,41>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,48>>},<<114,243,132,15,237,217,79,6,49,92,82,63,108,236,245,180,130,114,51,190,215,174,63,225,53,178,160,235,234,181,225,150>>},{{deps,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,48,46,48,45,114,99,46,48>>},[{<<104,101,120,112,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<112,97,114,97,108,108,101,108,95,115,116,114,101,97,109>>,<<126,62,32,49,46,48,46,52>>,false}]},{{retired,<<104,101,120,112,109>>,<<106,115,111,110>>,<<49,46,48,46,51>>},nil},{{inner_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,50,46,48>>},<<114,192,119,214,28,104,4,106,65,50,246,197,185,28,62,118,157,147,111,245,38,78,44,46,155,203,221,7,141,223,92,139>>},{{outer_checksum,<<104,101,120,112,109>>,<<99,115,118>>,<<50,46,49,46,49>>},<<58,232,236,78,152,164,72,80,212,148,216,68,28,136,150,99,28,41,91,53,65,202,199,145,229,110,160,136,91,167,223,63>>},{{outer_checksum,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,53,46,50>>},<<44,117,35,200,222,233,29,255,65,246,179,214,60,186,43,212,158,182,210,254,91,241,238,192,223,127,135,235,94,35,14,28>>},{{deps,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,48,46,51>>},[{<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<114,101,99,111,110>>,<<50,46,50,46,49>>,false}]},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,54,46,50>>},<<1,101,136,233,169,102,36,116,1,188,191,2,151,109,70,143,30,111,6,137,29,222,68,248,115,201,37,156,100,150,204,161>>},{{timestamp,<<104,101,120,112,109>>,<<99,115,118>>,<<51,46,48,46,50>>},{{2022,12,13},{13,54,22}}},{{inner_checksum,<<104,101,120,112,109>>,<<111,98,115,101,114,118,101,114,95,99,108,105>>,<<49,46,50,46,48>>},<<156,4,35,121,62,187,118,245,82,245,191,173,131,219,120,194,17,60,104,78,153,237,178,24,144,111,162,40,179,216,152,119>>},{{retired,<<104,101,120,112,109>>,<<114,101,99,111,110>>,<<50,46,51,46,51>>},nil}].
3596diff --git a/deps/.hex/packages/hexpm/observer_cli-1.7.1.tar b/deps/.hex/packages/hexpm/observer_cli-1.7.1.tar
3597deleted file mode 100644
3598index 440a2f0..0000000
3599Binary files a/deps/.hex/packages/hexpm/observer_cli-1.7.1.tar and /dev/null differ
3600diff --git a/deps/.hex/packages/hexpm/observer_cli-1.7.4.tar b/deps/.hex/packages/hexpm/observer_cli-1.7.4.tar
3601new file mode 100644
3602index 0000000..5bd7d6c
3603Binary files /dev/null and b/deps/.hex/packages/hexpm/observer_cli-1.7.4.tar differ
3604diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/.elixir b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/.elixir
3605deleted file mode 100644
3606index 463544a..0000000
3607--- a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/.elixir
3608+++ /dev/null
3609@@ -1 +0,0 @@
3610-~> 1.0
3611\ No newline at end of file
3612diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.beam
3613deleted file mode 100644
3614index 4f1b9a3..0000000
3615Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.beam and /dev/null differ
3616diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.AES_CBC_HMAC_SHA2.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.AES_CBC_HMAC_SHA2.beam
3617deleted file mode 100644
3618index 0af8683..0000000
3619Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.AES_CBC_HMAC_SHA2.beam and /dev/null differ
3620diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.Certs.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.Certs.beam
3621deleted file mode 100644
3622index 49cc31d..0000000
3623Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.Certs.beam and /dev/null differ
3624diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.VerifyHostname.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.VerifyHostname.beam
3625deleted file mode 100644
3626index de07848..0000000
3627Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.VerifyHostname.beam and /dev/null differ
3628diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.beam
3629deleted file mode 100644
3630index 9870b19..0000000
3631Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.HTTP.beam and /dev/null differ
3632diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Mix.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Mix.beam
3633deleted file mode 100644
3634index 5beb81c..0000000
3635Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Mix.beam and /dev/null differ
3636diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Parallel.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Parallel.beam
3637deleted file mode 100644
3638index 7c95e41..0000000
3639Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Parallel.beam and /dev/null differ
3640diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Registry.Server.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Registry.Server.beam
3641deleted file mode 100644
3642index 7b726a1..0000000
3643Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Registry.Server.beam and /dev/null differ
3644diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.RemoteConverger.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.RemoteConverger.beam
3645deleted file mode 100644
3646index 84dcae0..0000000
3647Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.RemoteConverger.beam and /dev/null differ
3648diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Repo.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Repo.beam
3649deleted file mode 100644
3650index df86756..0000000
3651Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Repo.beam and /dev/null differ
3652diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Resolver.Backtracks.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Resolver.Backtracks.beam
3653deleted file mode 100644
3654index afa0f1e..0000000
3655Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Resolver.Backtracks.beam and /dev/null differ
3656diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Resolver.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Resolver.beam
3657deleted file mode 100644
3658index a4e7b57..0000000
3659Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Resolver.beam and /dev/null differ
3660diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.SCM.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.SCM.beam
3661deleted file mode 100644
3662index c274d12..0000000
3663Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.SCM.beam and /dev/null differ
3664diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Server.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Server.beam
3665deleted file mode 100644
3666index df1d842..0000000
3667Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Server.beam and /dev/null differ
3668diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Set.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Set.beam
3669deleted file mode 100644
3670index 3814718..0000000
3671Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Set.beam and /dev/null differ
3672diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Shell.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Shell.beam
3673deleted file mode 100644
3674index 6a52fd7..0000000
3675Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Shell.beam and /dev/null differ
3676diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.State.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.State.beam
3677deleted file mode 100644
3678index f28e6a1..0000000
3679Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.State.beam and /dev/null differ
3680diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Stdlib.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Stdlib.beam
3681deleted file mode 100644
3682index 49a6efd..0000000
3683Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Stdlib.beam and /dev/null differ
3684diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.UpdateChecker.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.UpdateChecker.beam
3685deleted file mode 100644
3686index 55c3b3e..0000000
3687Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.UpdateChecker.beam and /dev/null differ
3688diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Utils.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Utils.beam
3689deleted file mode 100644
3690index 22228d9..0000000
3691Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Utils.beam and /dev/null differ
3692diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Version.InvalidVersionError.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Version.InvalidVersionError.beam
3693deleted file mode 100644
3694index c0fdd18..0000000
3695Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Version.InvalidVersionError.beam and /dev/null differ
3696diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Version.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Version.beam
3697deleted file mode 100644
3698index c680670..0000000
3699Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Version.beam and /dev/null differ
3700diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Build.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Build.beam
3701deleted file mode 100644
3702index f594d0a..0000000
3703Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Build.beam and /dev/null differ
3704diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Docs.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Docs.beam
3705deleted file mode 100644
3706index 507e003..0000000
3707Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Docs.beam and /dev/null differ
3708diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Info.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Info.beam
3709deleted file mode 100644
3710index cd90ebb..0000000
3711Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Info.beam and /dev/null differ
3712diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Organization.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Organization.beam
3713deleted file mode 100644
3714index cb71ee3..0000000
3715Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Organization.beam and /dev/null differ
3716diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Outdated.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Outdated.beam
3717deleted file mode 100644
3718index bae9164..0000000
3719Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Outdated.beam and /dev/null differ
3720diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Owner.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Owner.beam
3721deleted file mode 100644
3722index 30785fc..0000000
3723Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Owner.beam and /dev/null differ
3724diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Package.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Package.beam
3725deleted file mode 100644
3726index fc21443..0000000
3727Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Package.beam and /dev/null differ
3728diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Publish.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Publish.beam
3729deleted file mode 100644
3730index daf0e39..0000000
3731Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Publish.beam and /dev/null differ
3732diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Registry.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Registry.beam
3733deleted file mode 100644
3734index 949c400..0000000
3735Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Registry.beam and /dev/null differ
3736diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Repo.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Repo.beam
3737deleted file mode 100644
3738index ead74d8..0000000
3739Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.Repo.beam and /dev/null differ
3740diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.User.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.User.beam
3741deleted file mode 100644
3742index 86a008f..0000000
3743Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.User.beam and /dev/null differ
3744diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.beam
3745deleted file mode 100644
3746index ff38080..0000000
3747Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Mix.Tasks.Hex.beam and /dev/null differ
3748diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_erl_tar.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_erl_tar.beam
3749deleted file mode 100644
3750index 8639a90..0000000
3751Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_erl_tar.beam and /dev/null differ
3752diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_licenses.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_licenses.beam
3753deleted file mode 100644
3754index cadfbba..0000000
3755Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_licenses.beam and /dev/null differ
3756diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_names.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_names.beam
3757deleted file mode 100644
3758index ee4e263..0000000
3759Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_names.beam and /dev/null differ
3760diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_package.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_package.beam
3761deleted file mode 100644
3762index 3dfbb8e..0000000
3763Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_package.beam and /dev/null differ
3764diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_signed.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_signed.beam
3765deleted file mode 100644
3766index c305cb2..0000000
3767Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_signed.beam and /dev/null differ
3768diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_versions.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_versions.beam
3769deleted file mode 100644
3770index d2a460f..0000000
3771Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_pb_versions.beam and /dev/null differ
3772diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_tarball.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_tarball.beam
3773deleted file mode 100644
3774index 972c41d..0000000
3775Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_hex_tarball.beam and /dev/null differ
3776diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_safe_erl_term.beam b/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_safe_erl_term.beam
3777deleted file mode 100644
3778index 807491c..0000000
3779Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/mix_safe_erl_term.beam and /dev/null differ
3780diff --git a/deps/.mix/archives/hex-2.0.0/hex-2.0.0/.elixir b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/.elixir
3781new file mode 100644
3782index 0000000..d539202
3783--- /dev/null
3784+++ b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/.elixir
3785@@ -0,0 +1 @@
3786+~> 1.5
3787\ No newline at end of file
3788diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Auth.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Auth.beam
3789similarity index 79%
3790rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Auth.beam
3791rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Auth.beam
3792index 94ecaf6..e5c320b 100644
3793Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Auth.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Auth.beam differ
3794diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Key.Organization.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Key.Organization.beam
3795similarity index 66%
3796rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Key.Organization.beam
3797rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Key.Organization.beam
3798index ceb474e..720fcfd 100644
3799Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Key.Organization.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Key.Organization.beam differ
3800diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Key.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Key.beam
3801similarity index 76%
3802rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Key.beam
3803rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Key.beam
3804index efa98b4..fc0c042 100644
3805Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Key.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Key.beam differ
3806diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Package.Owner.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Package.Owner.beam
3807similarity index 70%
3808rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Package.Owner.beam
3809rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Package.Owner.beam
3810index aa3d503..004c5fd 100644
3811Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Package.Owner.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Package.Owner.beam differ
3812diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Package.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Package.beam
3813similarity index 77%
3814rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Package.beam
3815rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Package.beam
3816index adbda95..001cc50 100644
3817Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Package.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Package.beam differ
3818diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Release.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Release.beam
3819similarity index 70%
3820rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Release.beam
3821rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Release.beam
3822index 157effa..e21a6dc 100644
3823Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.Release.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.Release.beam differ
3824diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.ReleaseDocs.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.ReleaseDocs.beam
3825similarity index 73%
3826rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.ReleaseDocs.beam
3827rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.ReleaseDocs.beam
3828index b29ccf6..1dd0bbe 100644
3829Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.ReleaseDocs.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.ReleaseDocs.beam differ
3830diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.ShortURL.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.ShortURL.beam
3831similarity index 78%
3832rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.ShortURL.beam
3833rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.ShortURL.beam
3834index 6c73a7c..33fd143 100644
3835Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.ShortURL.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.ShortURL.beam differ
3836diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.User.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.User.beam
3837similarity index 80%
3838rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.User.beam
3839rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.User.beam
3840index 1f773d2..e663cf6 100644
3841Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.API.User.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.User.beam differ
3842diff --git a/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.beam
3843new file mode 100644
3844index 0000000..b7e2123
3845Binary files /dev/null and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.API.beam differ
3846diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Application.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Application.beam
3847similarity index 62%
3848rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Application.beam
3849rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Application.beam
3850index fe5da04..e3fea66 100644
3851Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Application.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Application.beam differ
3852diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Config.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Config.beam
3853similarity index 55%
3854rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Config.beam
3855rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Config.beam
3856index 1feb7d4..01b8fb7 100644
3857Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Config.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Config.beam differ
3858diff --git a/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.AES_CBC_HMAC_SHA2.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.AES_CBC_HMAC_SHA2.beam
3859new file mode 100644
3860index 0000000..bd9b075
3861Binary files /dev/null and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.AES_CBC_HMAC_SHA2.beam differ
3862diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.AES_GCM.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.AES_GCM.beam
3863similarity index 63%
3864rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.AES_GCM.beam
3865rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.AES_GCM.beam
3866index 6c6f486..1ba1d58 100644
3867Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.AES_GCM.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.AES_GCM.beam differ
3868diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.ContentEncryptor.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.ContentEncryptor.beam
3869similarity index 54%
3870rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.ContentEncryptor.beam
3871rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.ContentEncryptor.beam
3872index 5536608..eb97cb3 100644
3873Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.ContentEncryptor.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.ContentEncryptor.beam differ
3874diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.Encryption.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.Encryption.beam
3875similarity index 50%
3876rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.Encryption.beam
3877rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.Encryption.beam
3878index a88c3d7..bb3a86f 100644
3879Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.Encryption.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.Encryption.beam differ
3880diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.KeyManager.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.KeyManager.beam
3881similarity index 55%
3882rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.KeyManager.beam
3883rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.KeyManager.beam
3884index 3fc23da..0abf3e4 100644
3885Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.KeyManager.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.KeyManager.beam differ
3886diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.PBES2_HMAC_SHA2.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.PBES2_HMAC_SHA2.beam
3887similarity index 59%
3888rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.PBES2_HMAC_SHA2.beam
3889rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.PBES2_HMAC_SHA2.beam
3890index 2d8bd78..25fb637 100644
3891Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.PBES2_HMAC_SHA2.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.PBES2_HMAC_SHA2.beam differ
3892diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.PKCS5.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.PKCS5.beam
3893similarity index 71%
3894rename from deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.PKCS5.beam
3895rename to deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.PKCS5.beam
3896index 40ded39..b250650 100644
3897Binary files a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.PKCS5.beam and b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.PKCS5.beam differ
3898diff --git a/deps/.mix/archives/hex-1.0.1/hex-1.0.1/ebin/Elixir.Hex.Crypto.PublicKey.beam b/deps/.mix/archives/hex-2.0.0/hex-2.0.0/ebin/Elixir.Hex.Crypto.PublicKey.beam