#!/usr/bin/env bash

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

export COLLECT_PROTOCOL_SHA=0da9c8b3e111fb51c9f8854cae16d4519462ecfe
export QUERY_PROTOCOL_SHA=a530c33fac3f5890b5ba99f1f782e0eb32b646cd
export ENVOY_SERVICE_PROTOCOL_SHA=533b32f1b390a3a88ec2008d0561e07c926d879a
export XDS_SERVICE_PROTOCOL_SHA=25de7278fc844d392d607214f36dbedf50f167ee
export PROTOC_VALIDATE_SHA=v0.6.1
export PROMETHEUS_MODEL_SHA=147c58e9608a4f9628b53b6cc863325ca746f63a
export OPENTELEMETRY_MODEL_SHA=724e427879e3d2bae2edc0218fff06e37b9eb46e
