diff --git a/Makefile b/Makefile
index fdcac068db8..2ae705ccef8 100644
--- a/Makefile
+++ b/Makefile
@@ -2987,7 +2987,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c \
third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c \
third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c \
- third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c \
+ third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c \
third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c \
third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c \
third_party/boringssl-with-bazel/src/crypto/mem.c \
@@ -3024,6 +3024,13 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c \
third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c \
third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/address.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/fors.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/merkle.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/spx.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/thash.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/wots.c \
third_party/boringssl-with-bazel/src/crypto/stack/stack.c \
third_party/boringssl-with-bazel/src/crypto/thread.c \
third_party/boringssl-with-bazel/src/crypto/thread_none.c \
@@ -3047,6 +3054,29 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/x509/t_req.c \
third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c \
third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c \
third_party/boringssl-with-bazel/src/crypto/x509/x509.c \
third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c \
third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c \
@@ -3071,9 +3101,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c \
- third_party/boringssl-with-bazel/src/crypto/x509/x_info.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_name.c \
- third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_req.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c \
@@ -3081,29 +3109,6 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/x509/x_val.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c \
third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc \
third_party/boringssl-with-bazel/src/ssl/d1_both.cc \
third_party/boringssl-with-bazel/src/ssl/d1_lib.cc \
diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl
index 6fda89920bc..bd3763579e1 100644
--- a/bazel/grpc_deps.bzl
+++ b/bazel/grpc_deps.bzl
@@ -240,11 +240,11 @@ def grpc_deps():
name = "boringssl",
# Use github mirror instead of https://boringssl.googlesource.com/boringssl
# to obtain a boringssl archive with consistent sha256
- sha256 = "b21994a857a7aa6d5256ffe355c735ad4c286de44c6c81dfc04edc41a8feaeef",
- strip_prefix = "boringssl-2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b",
+ sha256 = "057f662b0e85931a84945b2e89ba201fd44b0583da827c948fe443593690fb83",
+ strip_prefix = "boringssl-ae72a4514c7afd150596b0a80947f3ca9b8363b5",
urls = [
- "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b.tar.gz",
- "https://github.com/google/boringssl/archive/2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b.tar.gz",
+ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/ae72a4514c7afd150596b0a80947f3ca9b8363b5.tar.gz",
+ "https://github.com/google/boringssl/archive/ae72a4514c7afd150596b0a80947f3ca9b8363b5.tar.gz",
],
)
diff --git a/config.m4 b/config.m4
index 47b5aab9107..35683cf5ede 100644
--- a/config.m4
+++ b/config.m4
@@ -1133,7 +1133,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c \
third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c \
third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c \
- third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c \
+ third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c \
third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c \
third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c \
third_party/boringssl-with-bazel/src/crypto/mem.c \
@@ -1170,6 +1170,13 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c \
third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c \
third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/address.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/fors.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/merkle.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/spx.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/thash.c \
+ third_party/boringssl-with-bazel/src/crypto/spx/wots.c \
third_party/boringssl-with-bazel/src/crypto/stack/stack.c \
third_party/boringssl-with-bazel/src/crypto/thread.c \
third_party/boringssl-with-bazel/src/crypto/thread_none.c \
@@ -1193,6 +1200,29 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/x509/t_req.c \
third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c \
third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c \
+ third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c \
third_party/boringssl-with-bazel/src/crypto/x509/x509.c \
third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c \
third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c \
@@ -1217,9 +1247,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c \
- third_party/boringssl-with-bazel/src/crypto/x509/x_info.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_name.c \
- third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_req.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c \
@@ -1227,29 +1255,6 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/x509/x_val.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c \
- third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c \
third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc \
third_party/boringssl-with-bazel/src/ssl/d1_both.cc \
third_party/boringssl-with-bazel/src/ssl/d1_lib.cc \
@@ -1636,6 +1641,7 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/fipsmodule)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/hpke)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/hrss)
+ PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/keccak)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/kyber)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/lhash)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/obj)
@@ -1648,10 +1654,10 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/rc4)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/rsa_extra)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/siphash)
+ PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/spx)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/stack)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/trust_token)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/x509)
- PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/x509v3)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/ssl)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/re2/re2)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/re2/util)
diff --git a/config.w32 b/config.w32
index b970fde6d45..b34f443eeea 100644
--- a/config.w32
+++ b/config.w32
@@ -1098,7 +1098,7 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\fipsmodule\\fips_shared_support.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\hpke\\hpke.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\hrss\\hrss.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\kyber\\keccak.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\keccak\\keccak.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\kyber\\kyber.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\lhash\\lhash.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\mem.c " +
@@ -1135,6 +1135,13 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra\\rsa_crypt.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra\\rsa_print.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\siphash\\siphash.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\address.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\fors.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\merkle.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\spx.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\spx_util.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\thash.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\wots.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\stack\\stack.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\thread.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\thread_none.c " +
@@ -1158,6 +1165,29 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\t_req.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\t_x509.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\t_x509a.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_akey.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_akeya.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_alt.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_bcons.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_bitst.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_conf.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_cpols.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_crld.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_enum.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_extku.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_genn.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_ia5.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_info.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_int.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_lib.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_ncons.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_ocsp.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_pcons.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_pmaps.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_prn.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_purp.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_skey.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_utl.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x509.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x509_att.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x509_cmp.c " +
@@ -1182,9 +1212,7 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_attrib.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_crl.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_exten.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_info.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_name.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_pkey.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_pubkey.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_req.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_sig.c " +
@@ -1192,29 +1220,6 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_val.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_x509.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_x509a.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_akey.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_akeya.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_alt.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_bcons.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_bitst.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_conf.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_cpols.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_crld.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_enum.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_extku.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_genn.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_ia5.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_info.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_int.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_lib.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_ncons.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_ocsp.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_pcons.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_pmaps.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_prn.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_purp.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_skey.c " +
- "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_utl.c " +
"third_party\\boringssl-with-bazel\\src\\ssl\\bio_ssl.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\d1_both.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\d1_lib.cc " +
@@ -1787,6 +1792,7 @@ if (PHP_GRPC != "no") {
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\fipsmodule");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\hpke");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\hrss");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\keccak");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\kyber");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\lhash");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\obj");
@@ -1799,10 +1805,10 @@ if (PHP_GRPC != "no") {
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\rc4");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\siphash");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\spx");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\stack");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\trust_token");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\x509");
- FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\x509v3");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\ssl");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\re2");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\re2\\re2");
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index ab527d199d6..63bb150a140 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -195,7 +195,7 @@ Pod::Spec.new do |s|
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
ss.dependency "#{s.name}/Privacy", version
- ss.dependency 'BoringSSL-GRPC', '0.0.31'
+ ss.dependency 'BoringSSL-GRPC', '0.0.32'
ss.dependency 'abseil/algorithm/container', abseil_version
ss.dependency 'abseil/base/base', abseil_version
ss.dependency 'abseil/base/config', abseil_version
diff --git a/grpc.gemspec b/grpc.gemspec
index dd7f5f982fa..392ba76a0a1 100644
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -2631,8 +2631,9 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/hrss/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/internal.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/keccak/internal.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/kyber/internal.h )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/lhash/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c )
@@ -2676,6 +2677,21 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/address.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/address.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/fors.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/fors.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/internal.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/merkle.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/merkle.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/params.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/spx.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/thash.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/thash.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/wots.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/wots.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/stack/stack.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/thread.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/thread_none.c )
@@ -2692,6 +2708,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/by_file.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/name_print.c )
@@ -2701,6 +2718,29 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/t_req.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x509.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c )
@@ -2725,9 +2765,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_info.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_name.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_req.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c )
@@ -2735,31 +2773,6 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_val.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c )
- s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/aead.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/aes.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h )
@@ -2824,6 +2837,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/poly1305.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pool.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/posix_time.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/rand.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/rc4.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/ripemd.h )
@@ -2846,6 +2860,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/x509.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/x509v3.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/d1_both.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/d1_lib.cc )
diff --git a/grpc.gyp b/grpc.gyp
index bd9d178e257..4e36b01858c 100644
--- a/grpc.gyp
+++ b/grpc.gyp
@@ -2466,7 +2466,7 @@
'third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c',
'third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c',
'third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c',
- 'third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c',
+ 'third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c',
'third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c',
'third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c',
'third_party/boringssl-with-bazel/src/crypto/mem.c',
@@ -2503,6 +2503,13 @@
'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c',
'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c',
'third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/address.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/fors.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/merkle.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/spx.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/thash.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/wots.c',
'third_party/boringssl-with-bazel/src/crypto/stack/stack.c',
'third_party/boringssl-with-bazel/src/crypto/thread.c',
'third_party/boringssl-with-bazel/src/crypto/thread_none.c',
@@ -2526,6 +2533,29 @@
'third_party/boringssl-with-bazel/src/crypto/x509/t_req.c',
'third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c',
'third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x509.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c',
@@ -2550,9 +2580,7 @@
'third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509/x_info.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_name.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_req.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c',
@@ -2560,29 +2588,6 @@
'third_party/boringssl-with-bazel/src/crypto/x509/x_val.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c',
'third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc',
'third_party/boringssl-with-bazel/src/ssl/d1_both.cc',
'third_party/boringssl-with-bazel/src/ssl/d1_lib.cc',
diff --git a/package.xml b/package.xml
index 0881f0fd959..1e28a2a052f 100644
--- a/package.xml
+++ b/package.xml
@@ -2635,8 +2635,9 @@
+
+
-
@@ -2680,6 +2681,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2696,6 +2712,7 @@
+
@@ -2705,6 +2722,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2729,9 +2769,7 @@
-
-
@@ -2739,31 +2777,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2828,6 +2841,7 @@
+
@@ -2850,6 +2864,7 @@
+
diff --git a/setup.py b/setup.py
index 3854d6942e2..6ebfae1811e 100644
--- a/setup.py
+++ b/setup.py
@@ -245,32 +245,22 @@ def check_linker_need_libatomic():
EXTRA_ENV_COMPILE_ARGS = os.environ.get("GRPC_PYTHON_CFLAGS", None)
EXTRA_ENV_LINK_ARGS = os.environ.get("GRPC_PYTHON_LDFLAGS", None)
if EXTRA_ENV_COMPILE_ARGS is None:
- EXTRA_ENV_COMPILE_ARGS = " -std=c++14"
+ EXTRA_ENV_COMPILE_ARGS = ""
if "win32" in sys.platform:
- if sys.version_info < (3, 5):
- EXTRA_ENV_COMPILE_ARGS += " -D_hypot=hypot"
- # We use define flags here and don't directly add to DEFINE_MACROS below to
- # ensure that the expert user/builder has a way of turning it off (via the
- # envvars) without adding yet more GRPC-specific envvars.
- # See https://sourceforge.net/p/mingw-w64/bugs/363/
- if "32" in platform.architecture()[0]:
- EXTRA_ENV_COMPILE_ARGS += (
- " -D_ftime=_ftime32 -D_timeb=__timeb32"
- " -D_ftime_s=_ftime32_s"
- )
- else:
- EXTRA_ENV_COMPILE_ARGS += (
- " -D_ftime=_ftime64 -D_timeb=__timeb64"
- )
- else:
- # We need to statically link the C++ Runtime, only the C runtime is
- # available dynamically
- EXTRA_ENV_COMPILE_ARGS += " /MT"
+ # MSVC by defaults uses C++14 so C11 needs to be specified.
+ EXTRA_ENV_COMPILE_ARGS += " /std:c11"
+ # We need to statically link the C++ Runtime, only the C runtime is
+ # available dynamically
+ EXTRA_ENV_COMPILE_ARGS += " /MT"
elif "linux" in sys.platform:
+ # GCC by defaults uses C17 so only C++14 needs to be specified.
+ EXTRA_ENV_COMPILE_ARGS += " -std=c++14"
EXTRA_ENV_COMPILE_ARGS += (
" -fvisibility=hidden -fno-wrapv -fno-exceptions"
)
elif "darwin" in sys.platform:
+ # AppleClang by defaults uses C17 so only C++14 needs to be specified.
+ EXTRA_ENV_COMPILE_ARGS += " -std=c++14"
EXTRA_ENV_COMPILE_ARGS += (
" -stdlib=libc++ -fvisibility=hidden -fno-wrapv -fno-exceptions"
" -DHAVE_UNISTD_H"
diff --git a/src/boringssl/boringssl_prefix_symbols.h b/src/boringssl/boringssl_prefix_symbols.h
index 1fe2a4c0e8f..368614cbed7 100644
--- a/src/boringssl/boringssl_prefix_symbols.h
+++ b/src/boringssl/boringssl_prefix_symbols.h
@@ -1,4 +1,4 @@
-// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b
+// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: ae72a4514c7afd150596b0a80947f3ca9b8363b5
// Copyright (c) 2018, Google Inc.
//
@@ -470,6 +470,7 @@
#define SSL_set_SSL_CTX BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_SSL_CTX)
#define SSL_set_accept_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_accept_state)
#define SSL_set_alpn_protos BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_alpn_protos)
+#define SSL_set_alps_use_new_codepoint BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_alps_use_new_codepoint)
#define SSL_set_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_bio)
#define SSL_set_cert_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_cert_cb)
#define SSL_set_chain_and_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_chain_and_key)
@@ -822,6 +823,8 @@
#define BIO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_free)
#define BIO_free_all BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_free_all)
#define BIO_get_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_data)
+#define BIO_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_ex_data)
+#define BIO_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_ex_new_index)
#define BIO_get_fd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_fd)
#define BIO_get_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_fp)
#define BIO_get_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_init)
@@ -879,6 +882,7 @@
#define BIO_set_conn_int_port BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_conn_int_port)
#define BIO_set_conn_port BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_conn_port)
#define BIO_set_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_data)
+#define BIO_set_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_ex_data)
#define BIO_set_fd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_fd)
#define BIO_set_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_flags)
#define BIO_set_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_fp)
@@ -945,6 +949,7 @@
#define BN_bn2dec BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2dec)
#define BN_bn2hex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2hex)
#define BN_bn2le_padded BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2le_padded)
+#define BN_bn2lebinpad BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2lebinpad)
#define BN_bn2mpi BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2mpi)
#define BN_clear BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_clear)
#define BN_clear_bit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_clear_bit)
@@ -984,6 +989,7 @@
#define BN_is_word BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_is_word)
#define BN_is_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_is_zero)
#define BN_le2bn BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_le2bn)
+#define BN_lebin2bn BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_lebin2bn)
#define BN_lshift BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_lshift)
#define BN_lshift1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_lshift1)
#define BN_marshal_asn1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_marshal_asn1)
@@ -1050,6 +1056,7 @@
#define BN_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_zero)
#define BORINGSSL_function_hit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_function_hit)
#define BORINGSSL_keccak BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_keccak)
+#define BORINGSSL_keccak_absorb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_keccak_absorb)
#define BORINGSSL_keccak_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_keccak_init)
#define BORINGSSL_keccak_squeeze BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_keccak_squeeze)
#define BORINGSSL_self_test BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_self_test)
@@ -1074,6 +1081,7 @@
#define CBB_add_asn1_uint64 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_asn1_uint64)
#define CBB_add_asn1_uint64_with_tag BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_asn1_uint64_with_tag)
#define CBB_add_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_bytes)
+#define CBB_add_latin1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_latin1)
#define CBB_add_space BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_space)
#define CBB_add_u16 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u16)
#define CBB_add_u16_length_prefixed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u16_length_prefixed)
@@ -1086,6 +1094,9 @@
#define CBB_add_u64le BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u64le)
#define CBB_add_u8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u8)
#define CBB_add_u8_length_prefixed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u8_length_prefixed)
+#define CBB_add_ucs2_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_ucs2_be)
+#define CBB_add_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_utf32_be)
+#define CBB_add_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_utf8)
#define CBB_add_zeros BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_zeros)
#define CBB_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_cleanup)
#define CBB_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_data)
@@ -1095,6 +1106,7 @@
#define CBB_finish_i2d BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_finish_i2d)
#define CBB_flush BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_flush)
#define CBB_flush_asn1_set_of BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_flush_asn1_set_of)
+#define CBB_get_utf8_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_get_utf8_len)
#define CBB_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_init)
#define CBB_init_fixed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_init_fixed)
#define CBB_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_len)
@@ -1117,6 +1129,7 @@
#define CBS_get_asn1_uint64 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_asn1_uint64)
#define CBS_get_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_bytes)
#define CBS_get_last_u8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_last_u8)
+#define CBS_get_latin1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_latin1)
#define CBS_get_optional_asn1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_optional_asn1)
#define CBS_get_optional_asn1_bool BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_optional_asn1_bool)
#define CBS_get_optional_asn1_octet_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_optional_asn1_octet_string)
@@ -1133,7 +1146,10 @@
#define CBS_get_u64le BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_u64le)
#define CBS_get_u8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_u8)
#define CBS_get_u8_length_prefixed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_u8_length_prefixed)
+#define CBS_get_ucs2_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_ucs2_be)
#define CBS_get_until_first BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_until_first)
+#define CBS_get_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_utf32_be)
+#define CBS_get_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_utf8)
#define CBS_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_init)
#define CBS_is_unsigned_asn1_integer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_unsigned_asn1_integer)
#define CBS_is_valid_asn1_bitstring BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_valid_asn1_bitstring)
@@ -1197,6 +1213,7 @@
#define CRYPTO_cleanup_all_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_cleanup_all_ex_data)
#define CRYPTO_ctr128_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ctr128_encrypt)
#define CRYPTO_ctr128_encrypt_ctr32 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ctr128_encrypt_ctr32)
+#define CRYPTO_fips_186_2_prf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_fips_186_2_prf)
#define CRYPTO_fork_detect_force_madv_wipeonfork_for_testing BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_fork_detect_force_madv_wipeonfork_for_testing)
#define CRYPTO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_free)
#define CRYPTO_free_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_free_ex_data)
@@ -1262,7 +1279,10 @@
#define CTR_DRBG_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CTR_DRBG_init)
#define CTR_DRBG_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CTR_DRBG_new)
#define CTR_DRBG_reseed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CTR_DRBG_reseed)
-#define ChaCha20_ctr32 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32)
+#define ChaCha20_ctr32_avx2 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32_avx2)
+#define ChaCha20_ctr32_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32_nohw)
+#define ChaCha20_ctr32_ssse3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32_ssse3)
+#define ChaCha20_ctr32_ssse3_4x BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32_ssse3_4x)
#define DES_decrypt3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DES_decrypt3)
#define DES_ecb3_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DES_ecb3_encrypt)
#define DES_ecb_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DES_ecb_encrypt)
@@ -1955,6 +1975,7 @@
#define OBJ_find_sigid_algs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_find_sigid_algs)
#define OBJ_find_sigid_by_algs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_find_sigid_by_algs)
#define OBJ_get0_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_get0_data)
+#define OBJ_get_undef BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_get_undef)
#define OBJ_length BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_length)
#define OBJ_ln2nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_ln2nid)
#define OBJ_nid2cbb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_nid2cbb)
@@ -1968,6 +1989,7 @@
#define OBJ_txt2obj BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_txt2obj)
#define OPENSSL_add_all_algorithms_conf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_add_all_algorithms_conf)
#define OPENSSL_asprintf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_asprintf)
+#define OPENSSL_calloc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_calloc)
#define OPENSSL_cleanse BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_cleanse)
#define OPENSSL_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_cleanup)
#define OPENSSL_clear_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_clear_free)
@@ -1975,6 +1997,7 @@
#define OPENSSL_cpuid_setup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_cpuid_setup)
#define OPENSSL_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_free)
#define OPENSSL_fromxdigit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_fromxdigit)
+#define OPENSSL_get_ia32cap BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_get_ia32cap)
#define OPENSSL_gmtime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_gmtime)
#define OPENSSL_gmtime_adj BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_gmtime_adj)
#define OPENSSL_gmtime_diff BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_gmtime_diff)
@@ -2037,6 +2060,7 @@
#define OPENSSL_tolower BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_tolower)
#define OPENSSL_vasprintf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_vasprintf)
#define OPENSSL_vasprintf_internal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_vasprintf_internal)
+#define OPENSSL_zalloc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_zalloc)
#define OTHERNAME_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OTHERNAME_free)
#define OTHERNAME_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OTHERNAME_it)
#define OTHERNAME_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OTHERNAME_new)
@@ -2190,6 +2214,7 @@
#define RAND_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_bytes)
#define RAND_bytes_with_additional_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_bytes_with_additional_data)
#define RAND_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_cleanup)
+#define RAND_disable_fork_unsafe_buffering BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_disable_fork_unsafe_buffering)
#define RAND_egd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_egd)
#define RAND_enable_fork_unsafe_buffering BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_enable_fork_unsafe_buffering)
#define RAND_file_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_file_name)
@@ -2362,7 +2387,6 @@
#define X509V3_EXT_nconf_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_EXT_nconf_nid)
#define X509V3_EXT_print BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_EXT_print)
#define X509V3_EXT_print_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_EXT_print_fp)
-#define X509V3_EXT_val_prn BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_EXT_val_prn)
#define X509V3_NAME_from_section BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_NAME_from_section)
#define X509V3_add1_i2d BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_add1_i2d)
#define X509V3_add_standard_extensions BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_add_standard_extensions)
@@ -2416,7 +2440,6 @@
#define X509_CRL_add_ext BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_add_ext)
#define X509_CRL_cmp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_cmp)
#define X509_CRL_delete_ext BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_delete_ext)
-#define X509_CRL_diff BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_diff)
#define X509_CRL_digest BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_digest)
#define X509_CRL_dup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_dup)
#define X509_CRL_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_free)
@@ -2468,15 +2491,12 @@
#define X509_EXTENSION_set_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_EXTENSION_set_data)
#define X509_EXTENSION_set_object BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_EXTENSION_set_object)
#define X509_INFO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_INFO_free)
-#define X509_INFO_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_INFO_new)
-#define X509_LOOKUP_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_by_subject)
+#define X509_LOOKUP_add_dir BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_add_dir)
#define X509_LOOKUP_ctrl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_ctrl)
#define X509_LOOKUP_file BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_file)
#define X509_LOOKUP_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_free)
#define X509_LOOKUP_hash_dir BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_hash_dir)
-#define X509_LOOKUP_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_init)
-#define X509_LOOKUP_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_new)
-#define X509_LOOKUP_shutdown BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_shutdown)
+#define X509_LOOKUP_load_file BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_load_file)
#define X509_NAME_ENTRIES_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_ENTRIES_it)
#define X509_NAME_ENTRY_create_by_NID BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_ENTRY_create_by_NID)
#define X509_NAME_ENTRY_create_by_OBJ BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_ENTRY_create_by_OBJ)
@@ -2516,25 +2536,20 @@
#define X509_NAME_print_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_print_ex)
#define X509_NAME_print_ex_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_print_ex_fp)
#define X509_NAME_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_set)
+#define X509_OBJECT_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_free)
#define X509_OBJECT_free_contents BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_free_contents)
#define X509_OBJECT_get0_X509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_get0_X509)
#define X509_OBJECT_get_type BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_get_type)
-#define X509_OBJECT_idx_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_idx_by_subject)
-#define X509_OBJECT_retrieve_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_retrieve_by_subject)
-#define X509_OBJECT_retrieve_match BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_retrieve_match)
-#define X509_OBJECT_up_ref_count BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_up_ref_count)
-#define X509_PKEY_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PKEY_free)
-#define X509_PKEY_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PKEY_new)
+#define X509_OBJECT_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_new)
#define X509_PUBKEY_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_free)
#define X509_PUBKEY_get BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_get)
+#define X509_PUBKEY_get0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_get0)
#define X509_PUBKEY_get0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_get0_param)
#define X509_PUBKEY_get0_public_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_get0_public_key)
#define X509_PUBKEY_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_it)
#define X509_PUBKEY_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_new)
#define X509_PUBKEY_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_set)
#define X509_PUBKEY_set0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_set0_param)
-#define X509_PURPOSE_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_add)
-#define X509_PURPOSE_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_cleanup)
#define X509_PURPOSE_get0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_get0)
#define X509_PURPOSE_get0_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_get0_name)
#define X509_PURPOSE_get0_sname BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_get0_sname)
@@ -2559,6 +2574,7 @@
#define X509_REQ_dup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_dup)
#define X509_REQ_extension_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_extension_nid)
#define X509_REQ_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_free)
+#define X509_REQ_get0_pubkey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_get0_pubkey)
#define X509_REQ_get0_signature BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_get0_signature)
#define X509_REQ_get1_email BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_get1_email)
#define X509_REQ_get_attr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_get_attr)
@@ -2611,13 +2627,15 @@
#define X509_STORE_CTX_get0_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_cert)
#define X509_STORE_CTX_get0_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_chain)
#define X509_STORE_CTX_get0_current_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_current_crl)
-#define X509_STORE_CTX_get0_current_issuer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_current_issuer)
#define X509_STORE_CTX_get0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_param)
#define X509_STORE_CTX_get0_parent_ctx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_parent_ctx)
#define X509_STORE_CTX_get0_store BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_store)
#define X509_STORE_CTX_get0_untrusted BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_untrusted)
+#define X509_STORE_CTX_get1_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get1_certs)
#define X509_STORE_CTX_get1_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get1_chain)
+#define X509_STORE_CTX_get1_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get1_crls)
#define X509_STORE_CTX_get1_issuer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get1_issuer)
+#define X509_STORE_CTX_get_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_by_subject)
#define X509_STORE_CTX_get_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_chain)
#define X509_STORE_CTX_get_current_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_current_cert)
#define X509_STORE_CTX_get_error BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_error)
@@ -2626,11 +2644,9 @@
#define X509_STORE_CTX_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_ex_new_index)
#define X509_STORE_CTX_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_init)
#define X509_STORE_CTX_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_new)
-#define X509_STORE_CTX_purpose_inherit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_purpose_inherit)
#define X509_STORE_CTX_set0_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set0_crls)
#define X509_STORE_CTX_set0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set0_param)
#define X509_STORE_CTX_set0_trusted_stack BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set0_trusted_stack)
-#define X509_STORE_CTX_set_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_cert)
#define X509_STORE_CTX_set_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_chain)
#define X509_STORE_CTX_set_default BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_default)
#define X509_STORE_CTX_set_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_depth)
@@ -2643,49 +2659,24 @@
#define X509_STORE_CTX_set_trust BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_trust)
#define X509_STORE_CTX_set_verify_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_verify_cb)
#define X509_STORE_CTX_trusted_stack BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_trusted_stack)
-#define X509_STORE_CTX_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_zero)
#define X509_STORE_add_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_add_cert)
#define X509_STORE_add_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_add_crl)
#define X509_STORE_add_lookup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_add_lookup)
#define X509_STORE_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_free)
#define X509_STORE_get0_objects BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get0_objects)
#define X509_STORE_get0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get0_param)
-#define X509_STORE_get1_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get1_certs)
-#define X509_STORE_get1_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get1_crls)
-#define X509_STORE_get_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_by_subject)
-#define X509_STORE_get_cert_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_cert_crl)
-#define X509_STORE_get_check_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_check_crl)
-#define X509_STORE_get_check_issued BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_check_issued)
-#define X509_STORE_get_check_revocation BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_check_revocation)
-#define X509_STORE_get_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_cleanup)
-#define X509_STORE_get_get_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_get_crl)
-#define X509_STORE_get_get_issuer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_get_issuer)
-#define X509_STORE_get_lookup_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_lookup_certs)
-#define X509_STORE_get_lookup_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_lookup_crls)
-#define X509_STORE_get_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_verify)
-#define X509_STORE_get_verify_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_verify_cb)
#define X509_STORE_load_locations BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_load_locations)
#define X509_STORE_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_new)
#define X509_STORE_set1_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set1_param)
-#define X509_STORE_set_cert_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_cert_crl)
#define X509_STORE_set_check_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_check_crl)
-#define X509_STORE_set_check_issued BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_check_issued)
-#define X509_STORE_set_check_revocation BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_check_revocation)
-#define X509_STORE_set_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_cleanup)
#define X509_STORE_set_default_paths BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_default_paths)
#define X509_STORE_set_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_depth)
#define X509_STORE_set_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_flags)
#define X509_STORE_set_get_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_get_crl)
-#define X509_STORE_set_get_issuer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_get_issuer)
-#define X509_STORE_set_lookup_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_lookup_certs)
-#define X509_STORE_set_lookup_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_lookup_crls)
#define X509_STORE_set_purpose BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_purpose)
#define X509_STORE_set_trust BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_trust)
-#define X509_STORE_set_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_verify)
#define X509_STORE_set_verify_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_verify_cb)
#define X509_STORE_up_ref BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_up_ref)
-#define X509_TRUST_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_add)
-#define X509_TRUST_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_cleanup)
#define X509_TRUST_get0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_get0)
#define X509_TRUST_get0_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_get0_name)
#define X509_TRUST_get_by_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_get_by_id)
@@ -2700,8 +2691,6 @@
#define X509_VERIFY_PARAM_add1_host BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_add1_host)
#define X509_VERIFY_PARAM_clear_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_clear_flags)
#define X509_VERIFY_PARAM_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_free)
-#define X509_VERIFY_PARAM_get0_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_get0_name)
-#define X509_VERIFY_PARAM_get0_peername BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_get0_peername)
#define X509_VERIFY_PARAM_get_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_get_depth)
#define X509_VERIFY_PARAM_get_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_get_flags)
#define X509_VERIFY_PARAM_inherit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_inherit)
@@ -2712,7 +2701,6 @@
#define X509_VERIFY_PARAM_set1_host BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_host)
#define X509_VERIFY_PARAM_set1_ip BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_ip)
#define X509_VERIFY_PARAM_set1_ip_asc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_ip_asc)
-#define X509_VERIFY_PARAM_set1_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_name)
#define X509_VERIFY_PARAM_set1_policies BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_policies)
#define X509_VERIFY_PARAM_set_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set_depth)
#define X509_VERIFY_PARAM_set_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set_flags)
@@ -2755,6 +2743,7 @@
#define X509_get0_extensions BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_extensions)
#define X509_get0_notAfter BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_notAfter)
#define X509_get0_notBefore BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_notBefore)
+#define X509_get0_pubkey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_pubkey)
#define X509_get0_pubkey_bitstr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_pubkey_bitstr)
#define X509_get0_serialNumber BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_serialNumber)
#define X509_get0_signature BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_signature)
@@ -2845,7 +2834,6 @@
#define X509v3_get_ext_by_OBJ BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509v3_get_ext_by_OBJ)
#define X509v3_get_ext_by_critical BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509v3_get_ext_by_critical)
#define X509v3_get_ext_count BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509v3_get_ext_count)
-#define a2i_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_GENERAL_NAME)
#define a2i_IPADDRESS BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_IPADDRESS)
#define a2i_IPADDRESS_NC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_IPADDRESS_NC)
#define abi_test_bad_unwind_temporary BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_bad_unwind_temporary)
@@ -2937,6 +2925,7 @@
#define asn1_refcount_set_one BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_refcount_set_one)
#define asn1_set_choice_selector BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_set_choice_selector)
#define asn1_type_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_type_cleanup)
+#define asn1_type_set0_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_type_set0_string)
#define asn1_type_value_as_pointer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_type_value_as_pointer)
#define asn1_utctime_to_tm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_utctime_to_tm)
#define beeu_mod_inverse_vartime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, beeu_mod_inverse_vartime)
@@ -2983,14 +2972,17 @@
#define bn_mont_ctx_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mont_ctx_init)
#define bn_mont_ctx_set_RR_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mont_ctx_set_RR_consttime)
#define bn_mont_n0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mont_n0)
+#define bn_mul4x_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul4x_mont)
#define bn_mul_add_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_add_words)
#define bn_mul_comba4 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_comba4)
#define bn_mul_comba8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_comba8)
#define bn_mul_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_consttime)
#define bn_mul_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_mont)
#define bn_mul_mont_gather5 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_mont_gather5)
+#define bn_mul_mont_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_mont_nohw)
#define bn_mul_small BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_small)
#define bn_mul_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_words)
+#define bn_mulx4x_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mulx4x_mont)
#define bn_odd_number_is_obviously_composite BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_odd_number_is_obviously_composite)
#define bn_one_to_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_one_to_montgomery)
#define bn_power5 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_power5)
@@ -3008,6 +3000,7 @@
#define bn_set_static_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_set_static_words)
#define bn_set_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_set_words)
#define bn_sqr8x_internal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr8x_internal)
+#define bn_sqr8x_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr8x_mont)
#define bn_sqr_comba4 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr_comba4)
#define bn_sqr_comba8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr_comba8)
#define bn_sqr_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr_consttime)
@@ -3026,15 +3019,6 @@
#define c2i_ASN1_BIT_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, c2i_ASN1_BIT_STRING)
#define c2i_ASN1_INTEGER BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, c2i_ASN1_INTEGER)
#define c2i_ASN1_OBJECT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, c2i_ASN1_OBJECT)
-#define cbb_add_latin1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_add_latin1)
-#define cbb_add_ucs2_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_add_ucs2_be)
-#define cbb_add_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_add_utf32_be)
-#define cbb_add_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_add_utf8)
-#define cbb_get_utf8_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_get_utf8_len)
-#define cbs_get_latin1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbs_get_latin1)
-#define cbs_get_ucs2_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbs_get_ucs2_be)
-#define cbs_get_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbs_get_utf32_be)
-#define cbs_get_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbs_get_utf8)
#define chacha20_poly1305_open BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, chacha20_poly1305_open)
#define chacha20_poly1305_seal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, chacha20_poly1305_seal)
#define crypto_gcm_clmul_enabled BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, crypto_gcm_clmul_enabled)
@@ -3090,7 +3074,6 @@
#define d2i_EC_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EC_PUBKEY)
#define d2i_EC_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EC_PUBKEY_bio)
#define d2i_EC_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EC_PUBKEY_fp)
-#define d2i_EDIPARTYNAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EDIPARTYNAME)
#define d2i_EXTENDED_KEY_USAGE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EXTENDED_KEY_USAGE)
#define d2i_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_GENERAL_NAME)
#define d2i_GENERAL_NAMES BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_GENERAL_NAMES)
@@ -3098,7 +3081,6 @@
#define d2i_NETSCAPE_SPKAC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NETSCAPE_SPKAC)
#define d2i_NETSCAPE_SPKI BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NETSCAPE_SPKI)
#define d2i_NOTICEREF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NOTICEREF)
-#define d2i_OTHERNAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_OTHERNAME)
#define d2i_PKCS12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12)
#define d2i_PKCS12_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12_bio)
#define d2i_PKCS12_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12_fp)
@@ -3144,7 +3126,6 @@
#define d2i_X509_EXTENSION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_EXTENSION)
#define d2i_X509_EXTENSIONS BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_EXTENSIONS)
#define d2i_X509_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_NAME)
-#define d2i_X509_NAME_ENTRY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_NAME_ENTRY)
#define d2i_X509_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_PUBKEY)
#define d2i_X509_REQ BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_REQ)
#define d2i_X509_REQ_INFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_REQ_INFO)
@@ -3263,6 +3244,8 @@
#define ed25519_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ed25519_pkey_meth)
#define fiat_curve25519_adx_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_curve25519_adx_mul)
#define fiat_curve25519_adx_square BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_curve25519_adx_square)
+#define fiat_p256_adx_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_p256_adx_mul)
+#define fiat_p256_adx_sqr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_p256_adx_sqr)
#define gcm_ghash_avx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_ghash_avx)
#define gcm_ghash_clmul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_ghash_clmul)
#define gcm_ghash_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_ghash_nohw)
@@ -3276,7 +3259,6 @@
#define gcm_init_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_init_nohw)
#define gcm_init_ssse3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_init_ssse3)
#define hkdf_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, hkdf_pkey_meth)
-#define i2a_ACCESS_DESCRIPTION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ACCESS_DESCRIPTION)
#define i2a_ASN1_ENUMERATED BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ASN1_ENUMERATED)
#define i2a_ASN1_INTEGER BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ASN1_INTEGER)
#define i2a_ASN1_OBJECT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ASN1_OBJECT)
@@ -3334,7 +3316,6 @@
#define i2d_EC_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EC_PUBKEY)
#define i2d_EC_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EC_PUBKEY_bio)
#define i2d_EC_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EC_PUBKEY_fp)
-#define i2d_EDIPARTYNAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EDIPARTYNAME)
#define i2d_EXTENDED_KEY_USAGE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EXTENDED_KEY_USAGE)
#define i2d_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_GENERAL_NAME)
#define i2d_GENERAL_NAMES BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_GENERAL_NAMES)
@@ -3342,7 +3323,6 @@
#define i2d_NETSCAPE_SPKAC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NETSCAPE_SPKAC)
#define i2d_NETSCAPE_SPKI BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NETSCAPE_SPKI)
#define i2d_NOTICEREF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NOTICEREF)
-#define i2d_OTHERNAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_OTHERNAME)
#define i2d_PKCS12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12)
#define i2d_PKCS12_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12_bio)
#define i2d_PKCS12_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12_fp)
@@ -3393,7 +3373,6 @@
#define i2d_X509_EXTENSION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_EXTENSION)
#define i2d_X509_EXTENSIONS BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_EXTENSIONS)
#define i2d_X509_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_NAME)
-#define i2d_X509_NAME_ENTRY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_NAME_ENTRY)
#define i2d_X509_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_PUBKEY)
#define i2d_X509_REQ BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_REQ)
#define i2d_X509_REQ_INFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_REQ_INFO)
@@ -3479,9 +3458,17 @@
#define rsaz_1024_sqr_avx2 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, rsaz_1024_sqr_avx2)
#define s2i_ASN1_INTEGER BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, s2i_ASN1_INTEGER)
#define s2i_ASN1_OCTET_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, s2i_ASN1_OCTET_STRING)
-#define sha1_block_data_order BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order)
-#define sha256_block_data_order BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order)
-#define sha512_block_data_order BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha512_block_data_order)
+#define sha1_block_data_order_avx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_avx)
+#define sha1_block_data_order_avx2 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_avx2)
+#define sha1_block_data_order_hw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_hw)
+#define sha1_block_data_order_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_nohw)
+#define sha1_block_data_order_ssse3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_ssse3)
+#define sha256_block_data_order_avx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order_avx)
+#define sha256_block_data_order_hw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order_hw)
+#define sha256_block_data_order_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order_nohw)
+#define sha256_block_data_order_ssse3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order_ssse3)
+#define sha512_block_data_order_avx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha512_block_data_order_avx)
+#define sha512_block_data_order_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha512_block_data_order_nohw)
#define sk_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_free)
#define sk_new_null BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_new_null)
#define sk_num BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_num)
@@ -3490,6 +3477,42 @@
#define sk_pop_free_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_pop_free_ex)
#define sk_push BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_push)
#define sk_value BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_value)
+#define spx_base_b BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_base_b)
+#define spx_copy_keypair_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_copy_keypair_addr)
+#define spx_fors_pk_from_sig BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_pk_from_sig)
+#define spx_fors_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_sign)
+#define spx_fors_sk_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_sk_gen)
+#define spx_fors_treehash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_treehash)
+#define spx_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_generate_key)
+#define spx_generate_key_from_seed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_generate_key_from_seed)
+#define spx_get_tree_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_get_tree_index)
+#define spx_ht_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_ht_sign)
+#define spx_ht_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_ht_verify)
+#define spx_set_chain_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_chain_addr)
+#define spx_set_hash_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_hash_addr)
+#define spx_set_keypair_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_keypair_addr)
+#define spx_set_layer_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_layer_addr)
+#define spx_set_tree_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_addr)
+#define spx_set_tree_height BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_height)
+#define spx_set_tree_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_index)
+#define spx_set_type BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_type)
+#define spx_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_sign)
+#define spx_thash_f BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_f)
+#define spx_thash_h BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_h)
+#define spx_thash_hmsg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_hmsg)
+#define spx_thash_prf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_prf)
+#define spx_thash_prfmsg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_prfmsg)
+#define spx_thash_tk BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_tk)
+#define spx_thash_tl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_tl)
+#define spx_to_uint64 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_to_uint64)
+#define spx_treehash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_treehash)
+#define spx_uint64_to_len_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_uint64_to_len_bytes)
+#define spx_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_verify)
+#define spx_wots_pk_from_sig BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_pk_from_sig)
+#define spx_wots_pk_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_pk_gen)
+#define spx_wots_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_sign)
+#define spx_xmss_pk_from_sig BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_xmss_pk_from_sig)
+#define spx_xmss_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_xmss_sign)
#define v2i_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v2i_GENERAL_NAME)
#define v2i_GENERAL_NAMES BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v2i_GENERAL_NAMES)
#define v2i_GENERAL_NAME_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v2i_GENERAL_NAME_ex)
@@ -3556,6 +3579,7 @@
#define x25519_sc_reduce BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_sc_reduce)
#define x25519_scalar_mult_adx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_scalar_mult_adx)
#define x509V3_add_value_asn1_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509V3_add_value_asn1_string)
+#define x509_check_issued_with_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_check_issued_with_callback)
#define x509_digest_sign_algorithm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_digest_sign_algorithm)
#define x509_digest_verify_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_digest_verify_init)
#define x509_print_rsa_pss_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_print_rsa_pss_params)
diff --git a/src/objective-c/BoringSSL-GRPC.podspec b/src/objective-c/BoringSSL-GRPC.podspec
index 610c3367a59..a1f9c545f8d 100644
--- a/src/objective-c/BoringSSL-GRPC.podspec
+++ b/src/objective-c/BoringSSL-GRPC.podspec
@@ -39,7 +39,7 @@
Pod::Spec.new do |s|
s.name = 'BoringSSL-GRPC'
- version = '0.0.31'
+ version = '0.0.32'
s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.'
# Adapted from the homepage:
@@ -76,7 +76,7 @@ Pod::Spec.new do |s|
s.source = {
:git => 'https://github.com/google/boringssl.git',
- :commit => "2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b",
+ :commit => "ae72a4514c7afd150596b0a80947f3ca9b8363b5",
}
s.ios.deployment_target = '10.0'
@@ -175,520 +175,523 @@ Pod::Spec.new do |s|
*) opts="--ignore-garbage" ;;
esac
base64 --decode $opts < src/include/openssl/boringssl_prefix_symbols.h
- H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oALS9XXPbuJaofT+/wnXm5kzVrpnYaafd
- 751iKx1NO7a3pPR05oZFSZDNHYpUCMqx+9cfgKREfKwFci34rdo107H0PIsCQHwRBP7rv84eRSGqtBab
- s9Xr6R/Jqqyy4lHKPNlXYpu9JE8i3YjqP+XTWVmcfWw+XSxuz9blbpfV/9/ZxXb7y+q3D1fpr+LdeivE
- hw+b37bnl+fr1W+XH95frn55v1mfby5X//Zv//VfZ9fl/rXKHp/qs/+7/o+zi3fnV/84+70sH3NxNivW
- /6m+or/1IKpdJmWm4tXl2UGKf6ho+9d/nO3KTbZV/z8tNv9VVmebTNZVtjrU4qx+yuSZLLf1z7QSZ1v1
- YVq8atf+UO1LKc5+ZrX6AVXz/8tDfaau9EwhT6IS+tdXaaES4h9n+6p8zjYqSeqntFb/R5ylq/JZaNP6
- dO1FWWdroa+ijbvvr/f40X4v0uosK87SPNdkJuTx1y0/T88W95+W/zOZT89mi7OH+f2fs5vpzdn/mSzU
- v//P2eTupvnS5Ovy8/387Ga2uL6dzL4szia3t2eKmk/ulrPpQrv+Z7b8fDaf/j6ZK+ReUcrXu++ub7/e
- zO5+b8DZl4fbmYrSC87uP2nHl+n8+rP6y+Tj7Ha2/NaE/zRb3k0Xi/9UjrO7+7Ppn9O75dnis/YYV/Zx
- enY7m3y8nZ59Uv+a3H3TusXD9Ho2uf2Huu759Hr5D6U4/pf60vX93WL6z69Kp75zdjP5MvldX0hDH//Z
- /LDPk+XiXsWdq5+3+Hq71D/j0/z+y9nt/UJf+dnXxVTFmCwnmlZpqC558Q/FTdUFzvV1T9T/rpez+zvt
- U4AKvZxP9HXcTX+/nf0+vbueava+AZb3c/Xdr4uO+cfZZD5b6KD3X5eavtfOpgjf391Nm++0qa/TQ11L
- cxXTuUqIL5NG/MnOjf9syv/H+7lyqtsnmdzcJA/z6afZX2f7VNZCntU/yzNV9Io622aikqrwqMJfFkJl
- Qq2LmCrUO6n/oEVZre9WXeLK7dkuXVflmXjZp0VTCNX/slqepdXjYad88mwlFCyaQOru/c9/+/eNurML
- AV7O/03/cbb6D/CjZKZ++rz9QtBhfvEsPfv3fz9L9P9RdcCJmt0n20TVMvA19H9s//CPHvgPyyFFTbV0
- SO+5Wd4uknWeqaRKdkJVD5uxOp90rAwd6JGiehYVR2eRjlXXhcnqsN2q4sZxA7wd4fk8ueCnrE8DdqYW
- 9bFT2qc9e0xKhNPhUZXpOtsJ3bLRvAbpWZ9UC5cLptiGPTcrEZBfH5Nn4RzTdUVWZHWW5sdfkmwOXc1L
- DYSr+rjT+Tz5fbpMbmcfx/oNxPfMp5OFaqmIqpaybXmZbhL9Zd3nUh1EitNle/P9w/ROf6BThlKRu1xv
- fJh+SSrRxVuoTsxs/O+HWMC8ysoou8PbEX5Wqm3n6j0YckdcPijoY+g/Xs8eVH8q2Qi5rrI95UaBadCu
- a630oFqfItsw9CaO+le6D8VzaxT1rrO9GnVEXHkvQGNsskch64gYvQCNoSt4+ZR+F92XmZFcDRqP/VsC
- v+H7S1KkO8EUd3TQzr7qFkbdu/QlUQ2X5N1fjgGPkhWxUXoDGiUiC4Lpv6+2ERnQ0QF7WZfrMk8iIpwM
- aJS41A+lfCaTVLVGDHNHYtZVXq6/d7UUz24awCiyVrVGWm24RcfinQj3Xx6SdLNJ1uVuX4lmWofYtRzQ
- APG2lRDANyU5IiYCYqry8Y6efhYJW9/khyAeJGK2YQXINoiPmyxQqiz/0uXgXbJ+SlVduBYVraX0cdB/
- Huc/H/I3n1g5kuaPjECgB4nYDnmvJ6wwRxh2i5e6SuOSzHPAkWT7MzkBOtT3rp+Eqh/3VfasZ+y/i1eq
- 3RMAMdpepvptj1V52JMj2Djgz0VaGaknyRFcARbDzSdmJE+DxduVG8ELoUnMWjajIea1d7DvFkW6ykVS
- ruVeN4r7XA3PqSEgBxpJZo+F6GoBPQ2igN1eMkPCMjR2nUudf0UhyJ02TOLH2uYH+XS8dck/zKYBu2rf
- yU7F+KamEdcpl22ztaoFqFaXxyLo+4Xn1mTIyruZXR6JsE+rdMdyNyRmbWtcRo3t4KC/vRFkrZ/10PUG
- jdibKl2y1C2KeI9NdZJnsmbpLQMcRf0pPeRq0JVK+VPVGStOIE8yMlZykKLapHX6JkFPNji6eEm4oToU
- 9Rbip2rSN+KFKT/xWITIlhqUwLGyYlsm6zTPV+n6OyeOJYBjqBs1Lx+jojgKOI6eymnuXu4NZAnwGM2E
- BWtKApMgsVTWxcdyJUgsRm/tyMHG4rBTvZH1d8ErvwYO+5k9QQOFvT8OmX40/nSoN+VPVpLbBjhK8wQk
- faLOPHk0bO96Tup+UUMcdt76Fjga8ckogCLeXKparCsFugpgZbZvgaOp2yPbvkbVUo4iGGcj9vVTRJCG
- D0bgZruB+/7mGWb3jbxcp6x7EJT4sQqhRjX1bp/MF+TJD5OFzD/pwp++pxK78llwJzds2rfrD5J0vVY5
- TVUbaNCbPJblJkLe8OEIlSjEY1lnjMEVokHitdXU9pDnrDg9jvlXyVNGb8xMFjOXahy95mVyx4bN/Gw2
- BQMxYjMa8CARm8FOk10y+5sXzFYE4jRfXLFjtHjAr8cCEf4WD/i7SiYixMmARGHfFIE7Qi8kFjxriyJe
- 1atcER/H2SjilfElUo4pkTKuRMqhEinjSqQcKpEyukTKESWy61Xyys8Rhtz1u26hZ7IvS0YzY/NIBNZc
- oQzMFbafHSeHJE99whH/se/LnnuDLWC0c3YanQfSSH12qJ45tc4JDXpZ0xIuj0QQ6yfWAMmCEXfz5CrJ
- Njz5iQ7ZI9RhLz/NDR6JwJob70nEKrPHNH/kJUjHhs38JDEFSIy4Z0uAAonzFrXN+cjaJlHD+fJncii+
- F+VP/aB+382ocTIJl2GxI6ON8UuR6443p0V2DXCUdrUDS9+hAS83/wfzvfk8cloI8yARm+n6tNhwVjN4
- AiRGuySBWQuYOOKPeo4lRzzHMr4TU7AsAxKl3O3zLC3WQnXY8mzNyxNXgsQ6VJW+IN3/5P4kW4HFUUV+
- 15VHXhRDAMeIfsooxz1llG/6lFESnzKa3+9u731aP8mYuKYHiVjKpkZX9W0zOc9LW1cCxxJplb82z0K7
- dR+cJh2wINF4T2xl6Imt/nCb5lLoNTlV1/yKTdK9AN20XpyAQ074Sh4rkSosIi1tAxwl6pmuHH6mK+Of
- 6coxz3Rl7DNdOfxMV77FM1057pnu8WtSqPZ5W6WP+rVkbixLgsSKfX4sxz0/lsznxxJ9ftx8IuOKl8kP
- R0jS6jE2inbAkQr9BLJNxai+NuQZiiiTdPOsF6hJsYkO68iQ2Pwn/3Loyb/+QrPEshJyXxaSVegsARKD
- t7pAhlYX6A/1JhmHWujlOaKQ3BC+BYnWL23mvLyBWpBo8vupVx1x4wIaPF734nJsPEeDxOs2UeHEaFHY
- ++OQrSOyx8BRf8SKFjliRYuMWtEiB1a0tJ+vy2rTvysW0aIhKixurUfUZaF6sPIpvbj8kJRbc+woeZcw
- ZMWuphsfqD67qr8OO8GL7lrgaMcmpl/dzGw/QBEWM3blkhy5csn8XqZfUCtqVZ3GROst4Wi6wtk8Ce66
- qYAKiQu9H8DuUOM2PHpWPOoXnMpKjZB2zY5akhsaUCFxq3qvb/JtlgteNFOAxKirbB09peZb4GjdEjb9
- 0mlEc+FbsGjs0hksjfb8fsxYGDahUXUntm3n9euJ3A4/KBobM6abgtvC0eu0PsjYX3uSjInFayRcRzBS
- v5ozLprlGRlRvkk8GYx20JNLqv6JCHVUIHFUnb15YukbMmSNK+a2Ao8j1vzr1yxurmTKFSs06I1OGtOB
- RKoOvGaoAWEn/2FB6ClB1wt9g44BbApGZa2/loPrrw96YmFL9bYUYFP38EM7+v6D/kDQpofsyWRxdx4X
- olEMxtH9qcg4WgHHmS8mcQlmCUbEYCebbxkTjZt4vgWOFvEqrIMP+tkp5zqGI7WPxblpB5uGo75FPDyS
- Hvq1G6XWr8lTRn+SAErsWNPrz8kf028LvQ8DRW9yiJH6CrcFIs6nVCabwz7vsqosttkjcRnSkAuJvEsr
- +ZTmemKneu2+LVlxQRMSlfgai8khRnrz5aC2t9saL9GbRp8ej/aPgylxBlRwXOPJ8zrd6+EhJ6RvgaNR
- i7TJYcZyl6xea9oEhk/D9nYPAPIGVQAe8POm1hBFIA77oRBuCUTbi4g00/CA22wDZFQgyzQUtZ2LjovX
- OgKR3mY6cqQycB3tWJwds8VRP2c1C4AH/ax9CDAHHonWgtokbt3p/d4r6kJH2IBHiXlgFPLgEbspnjzb
- imYdHrVrNuQKRd4JfqSdCJuJc8EAjvsjMyeYJ7ojF1m5OQo8Dr9K6WnYnsn2UR23D2PycARiZ9LAYF+z
- wp5XdXRo0BvTq3AUaJyYOlwO1eHyjWonObp26p/+cOOESqiMqIFksAaScTWQHKqBpBpL5Jtkpd+8LB5z
- oUfGrECAB45Yl/xe/ZENm5NtWUVkNqCB49EHjDZpW+mbHUB7HETsMxrcYzRif9Hg3qJ6k8t030416If6
- qsDWlLMFQg4/kt62vn3z5bD6l1jXUme26jDTnkmETX5U1i6mgR1M9Ud6buyNfkpA5cTN9Zf0xvzdKQ6k
- SC484E7yMjJAY4CiNHMD3aMM3THIa3oc3wFFql/3gp1WBjzgZqaVa7CjtOuHnjJS4pwg16VXW+XN8n3m
- nrWIwomjl4+1G56S3D3m+GJ22R3YYZd+lcD1xeygO7B7Lm8nW2wXW/YOtoHdaxlbx4A7xqwPdf1UlYfH
- p/Z9NUF7/gPgtn+jiu2jPmUxWVeieeCQ5rp/RBofoBInVtkfp0HSG5xjVJ0VxguNBmb72hnl03sD6/ql
- X8qtR7SUIEMuKHIzl912nWg5AOCoX7+ppHsi5KofcziR1k+8n2BwjjFyF+jhHaDfbPdnws7P0bs+j9jx
- WVSVGicwDzvyYMf9si+rZsmUbqN36vav1G1PCgAa7CjUZzf+M5vT0bF6MVlzdAfF59OuvX5nvmpPK/M+
- DdjNx866WyTJETwDFIXXUIf3q24+1Td2sy6yVH3SKqO12bABicJ+ygsbgCjGi16nzdDoOQ5agGjsZ2dD
- z8x4e4hj+4f3z5hiR8thExaV+0xuzLO4/jtdJ6c7E6Rdz8YMB6qwuO4aOmZMTwPE6962qsSPg2qyVANG
- 3JUKlYCxYl7xQBRQnDd5qkl6mvnYbMpD33vU5Dxj0i0PIgqPmO9THdPTWX2qbqVmtMcjEfQWWREBehz2
- t9tYsf0GDvt1nqf1oRLGIlZ2NFSGxD4eAxabTaAIjtk9qODHsgR+DOY6RgcFvO0vW70mz2l+oLttHPUz
- 6g38/SHmqRXoiRVxp1UMnVRhfF6p4lTumPIWBtzdJjn0hU8+HbD3R3uxQ/QKPE5/3D0zykkAxlCVYrZh
- qBsOM1KPlbNJ33rcO4fxjBDAfb83H0GN4AmAGHoQTPZqCHDRn1qjK46MD5K/Lt/9liyW9/Nps34427ww
- QwAmMCprfVN4XVN3NMpOJvKw19MCdLUB++4t+W7ZAveJ+kcmnwTd1XG+8bgNJ9V45DAj517uSd/K3rto
- 4Cya5uNncvunEN9zmqJJckGuCyzYd7P3Oxo4vyb67JoR59ZEn1kz4rwazlk18Dk17e7px1kR+vGOEO9H
- YDztQU+oadYhHqcR6FsgA3jAz+w8uzwSgVvBWTDmPugBXVwSOQ4kUrPzSq06mrKZYG6mrCQrHmhCogKj
- O1ZMwANFLDZ61pzXW7ZpwM46CNAmAavxUhPZa7BhM3lhLyjwY/B36xk6e6o5zGGVlVSnZgATa7+f0OlV
- p8+kntMr1oIlPsKAm945q6DemRRrfdf055Q0k8e87mTIBUVun95Ye5PQQwISKFY7v8oag1sw6tYvtDPu
- fZvG7JyeaU+GrM2zLb66wSE/a7YAnceVT2klNtyJH5tG7Yzd6n0asvNqP7zeg6ZEN9mjoHeycdO4qHoA
- wCpAAde4yKw7AvEAEbn7LT2G91oy3oNJH0Uiv9PeUwBwwM9eHOHTsP1QZD/o08U9CVqN/XJOD2EZISDN
- UDxOCfYNfpSI7fYHT2CMOX0xfPJixKmLwRMXjQ/pi3Q9GHRz2hx0ZP6T0bv8CfYuf9L7aj+hvtpPVWUJ
- dofSpm27fmMrdh0C5vAjdSMpqrzDbF9WMN/Bt0DPaWyJTpQapGdVY32qTiOORyYbVfuQPC3iebScNX3h
- sp657SESlS3ku4BmW28dtZfURAiY7Ki6L3LYb4hzRj1l2/JsVaXVKzn7Tc4x6kNn+weP1JETgAP+di1j
- u1xVkvUWbdt36WO2Ps2nnLb/rEnlBZW4sdotSPRCtXaJGi2IS7t2vXm9+oJeZEedPvBg2809MRg/LZj4
- Vqz3NqzezNwa3JNKhU/b9r0QpC6S/r5rILcrYJui+u5rfXpiM5G5L2XNW4If0MDxVBV9/r552HcszvSX
- HodcXuTnbCPaS6S2oB5su9utvFUZP/3qZJtnj0819UlTUATEbGbOcvEscnKUHgW8bQeKJzZY21wRK43K
- qyeYRxWjJxMbH3DuKAB3/c0iRyM39dyxpMUAFW4c6S5X+Bfx7SJEYcfpNgTv1ydTIniw69YHo6jIefuK
- H01ts65ZvzeQ/S3abaCyPKsz2lQHbMCiROQ2KnFjtfVcJaivYtmka+WcYoudYBtxem3w5NrmQ+rjkBME
- uKLOpBxz+m3znZ+cK/4JXfE5K4/OkTzinJ6Lnpwbc2pu+MTc5lPoPUJyCEgCxOq7wbxf4vBABNb5vKGz
- eZnn8qJn8sacxxs+i7f59KlkKDUEuMjvqmDn+XLP8sXP8Y06w3fg/N7Is3sHz+2NP7N3zHm9kvf2gsTe
- XmhOt23eFG3mrKnXa7GAmXeyb/BUX/0hvX1IoNaBc7Qqel5v1Nm2A+faRpxpGzzPNu4s26FzbKNPlx1x
- smz7leZlf14BtmDAzT1JduAU2fiTR8ecOtp8p321Wbex7cGa5CCuAIqxLSuVQ3rStJntlOkjIw4gAWLR
- V36j+5RJ8mpmCaxm1n+LGsfUQyOYumnLt3n6SDcfQd/JXoc8cH6q/vhfm+/n58nPsvqeqo5NQU5jl/cj
- sFcRD5yYGn1a6oiTUqNPSR1xQmr06agjTkblnIoKn4gacxpq+CTU2FNQh09Abb5RH8jS+uB72K+pD5z5
- yTzvEz3rM/6czzFnfMaf7znmbM83ONdz1Jmeb3Ce56izPJnneKJneJ4O4DQ3iae/Zx7QIPF42Y2eFXr6
- MGY5OypBYukTKPQkylpvhbER+zIreKkGicCYzLWFQ2eg8s8/DZ192n7WPxrgtCYuD0V4yxNOOaebSvra
- bAmtzZa8VbQSW0Ubf0LomNNBm+88iY3Rz6U/dEclUCxe+cdL/ttsfUE5W/SNzhUdfaZo1HmiA2eJtieA
- MkbnyKg87kzSMeeRvs0pnmNP8DSONNTjNfIqZohHI8SsppVjV9PK6NW0csRq2sjTJAdPkuSdIomdIBl5
- euTgyZHcUyPxEyOZp0WiJ0XGnhI5fEIk63RI5GRI3qmQ2ImQb3Ma5NiTIGNOgQyfACnpK5cltHKZ1UbD
- 7TO5ZQFaFf0nxj6eJocbyRs3e7Dtrsu6OT6Nu+YO4u0I/FM5QydyRp7GOXgSZ+QpnIMncEadvjlw8mb8
- qZtjTtyMP21zzEmbEadsBk/YjD1dc/hkzdjzLYfPtow+13LEmZZ6vVLyJPK87Hbh7FbGEcOADjsSY14Z
- nEn+mdISQX/fNcj+sVGSFc9pTnvCDwqcGHq5JsmpAcvxfPH+OE1Ant7yWM/MUiKubo6RpbTY3ry8XfB+
- vAfaTroMsrB+sAfaTn2KZ7I6bLeq0DPMAG75n8+Tc3aK+rDv5kkxGzeFfdh1X8SkwkU4FS6YUswWkQoX
- 4VSISINgCnCEsCnityO/fHORJcaZS2OdDob6KGuNALT3ZhcbznU6GOqjXCeA9l7Vs7ief3tY3icfv376
- NJ03A+32SOLtoViPjTGgGYqn955/g3gnTSDeRoh9c2HsUCdDIIp+5aY45Dk7yFEQinHY8fWHXcC8P8gn
- tlrDAbcc/yYTxAbMpO1rYdqyL+bLB/X9++X0eqnvG/Wfn2a3U07eDqnGxSXld8AyKhqxDIQ0djy9LnX2
- 8PlUR+z21DsfU2Bx9Lr2WvACtCxqHr/BngdiTvWnDU+qSczKKbQ+jdppRdMCMSe1ANokZqVWEi5qeZtN
- X+8mX6bsoowYglEYbTOmCMXhtMmYAonDaYsBGrETbyQbRJyEl6ddDjdSb0wfxtyk29LiEOO+3JMOFgJh
- xE3rGVgcboy7KU0BFoOwRZ4HIk5qJeWQvjXuhh66l7lFGC+9jIILllluccVLqnzKtuT8biDfxcpmJ4cn
- 19dqWJfcTBfX89lD0/Wi/GAED/rHb18CwkE3oX6FacM+XSTXXybXo33d923DerVORLGuXscf4uxgjm+7
- Or+4Yikt0rHWFddqkbZ1I8i6DrE9Yr3iXJqBOT6GC/KU7LwoA3khmwMYmg8o74UBqO/tAnK8Bmp7D8XP
- Kt1TlT2F2ZJ9utmMX0AFwrabc53wVUZcI36Fi7vzZHL3jVI/9ojj+ThbJoul/n574DDJ6MK4m9RUACxu
- fmxewqy58g7H/Xx1yEppfnw04D3sktUr4ZA9VIDHIHSfATTojclJCefklwd2EbRQ1Eu9YgNEneTiYZKu
- 9f7+djq5I1/nCXN807uvX6bzyXJ6Q09Sh8XNj8QyZqNBb5IV9YdfIuytIBzjEB3kMBAlYydQKEepBc9G
- ca/k56cM5aeMzU85nJ8yOj/liPysy+TjHTdAAzvuT8wb/xN65/8+vVPxbmf/O71Zzr5Mk3TzL5IZ4Aci
- 0LskoGEgCrkagwQDMYiZ4OMDfuqNC/ADEfYVYUEZbhiIQq0oAH44AnFB7oAGjsftdfh40M8rV1gPxP6Y
- WabQnshscslNFRtFvcTUMEHUSU0Fi3Std8vp7/pp4m5Pc/YcYiQ8IHQ5xEjPIwNEnNRuncHhRkYHwKMD
- 9kOc/hDyZ7zkyLDUIJfVnkOMkpljEs0xGZVjciDHZFyOyaEco3fTLNKx3n29vaXfaCcKshGLVMdAJmph
- OkKO6/7jf0+vl3qnP8KSfZ+EreS0MzjYSEy/EwXbqGnYY67vejntJ9uIzYcLh9zUhsSFQ256brl0yE7N
- OZsNmcm56MAhN7WCdWHH/aD+vpx8vJ1ykxwSDMQgJryPD/ipyQ/wWISI9AmmDDtNAqnBTwcgBRbTf36d
- 3l1POQ8SHBYzc62Accm7zCVyhW2xaJMm3WxoVgcOude5SAtifQoJ4BjUVgCt/48fENZHuRxspGyo53KI
- kZeaGywNybc/Xiv2D5TesX/4CUbdifpzesj1Nm3yOzOE5YAj5aJ4HP92t0/CVmoFhtbf3Qf0KSkTDDgT
- 8cLWKjZsTrb7GLnCYT+1J4H2IfoP3jGF71BjsnpN7mY3TG9H4/bYu0OOujvcbyWpXL9FNO2BI6rB49fl
- pytOkA5FvITdU1wON3Jv9CPrmJcfzrnVtY2iXmLPwgRRJzUNLNK1Mp/lLNFnOawHOMhTG+ajGvT5TPPB
- Jttu6TpNQTZ6wUGe63Ae5sBPcFiPbZBnNcwHNOhTGdajGOT5y+lpyb6U2QvL2KKYl/EwJ/wEx/m0WQ4b
- o28EUAxVNT+KQlTNcTMbvWsbPYzvQCIxk/9IIlYdMKlZ2hZ1vd8epuSRzRGCXPQ7/0hBNuoDjCMEucj3
- fgdBLsm5Lglflz4vgiU7d2xf72Z/TucL/rNQSDAQg1g1+/iAn5ppAO9GWF6zGmODQ4z0JtkiMetuz7nr
- fRzx00uJASLOjHetGXaN5FLQc4iR3nhbJGKlVgsGhxs5Da6Pe/5PV+xqwmZxM7kYGCRupRcGE3W8f84W
- s4jZex8P+okJ4sJBNzVZPNqxb7JHwlZTBuJ42t5SLZLn9ySZwXnGOilXlNMeHczxZbXYJZuLjGQ7QoiL
- so+HB2JO4kSWwYFGegYbHGg8cC7wAF6dPuiFkyUthxjJ97cJIs7sYsNSKg4xUu9kg4OMvB+N/WLWz0V+
- q97AhnWfdCDm5NwnLQcZWdmB5MU+JfYQTxRk0xuC022awmzJun7hGTUJWQ8F7ze3HGSk7eXrco5xt+rm
- DMhP4ywSsxZ8bQF42+ZLpffftDva4Byj6s3usjp7FvRqwkZd76FOREmbpe8YwMRo7XvM8dXp4wX1taeO
- AUwqs8gmxbgmsdvnzT6j1EywSMP6dflZActvyezu033SvVJNsqOGoSiEtEX4oQiUGhkTQDH+mH6b3TBT
- qWdxMydljiRuZaXGCe29HyeL2XVyfX+nhgST2d2SVl5gOmQfnxoQGzITUgSEDffsPkn3++Z4tiwXlAMd
- ANT2nk4iW9dVTrFaoOPMRVolpBMGHQzytRsHM60G7Lj1ZkWFPrWh+QrJbKOOl5qcfiqqvzTDxea4I+Km
- y6gAidHsLZw8HtIqLWohWGEcBxBJl0PCJJLL2cZNeTxvleLrKdsmyi1Fo75u83pXJ9KDdQtyXDlhc7IT
- 4DgqWi469WT3lyTNc6pFM7apWX1EWBxlMr5p/HERPQFY9mTL3rdkRVZTPZrxTTs9CcFIoyMHG/fjO4YO
- 5vv0fkqqvI5fJOWBvpNZpzso5tUHDI/fTh5ifTP1pBGX84zUH+782ifxsjnsSIW5Q2yPzqCCVJZbwrXU
- 5JbvyNgmXQyb498KWgqZnGusn8jV4gkCXJQOnsEApmYjONKrMgCKeYnZYYGIc6M6ElX5ytJ2LGKm3hAW
- iDjVIJzn1CDirAjHVnog4iQdCOGTvrWk90gMzPYRC7tXznUjsMrKZJ9mFVF04nwjowNoYL6P1rdoCcBC
- OOfFZADTnuzZ+xZdJ64OW6qqw3yfLNffBTnRW8q1vRA9L67hsFuJinw/Ghjo03eUakMYyo60rYyBDzjm
- 2ZekAqG+7vB62QCpILSEY6krcrNyZBwTcaCz98Y51Mrdr9OpRccvM+15xLI4p2oaCHBxZnks0HVK2u3a
- AI7jJ++qfiLXJDl1t4Rrbkmst6VXa0tynS2BGlufqrOjSRTgOui1qwTrVinEd5JFfd81qF5gTjj53YIA
- l8q85kxZainyYMSthxJ7wo7JIIy42V7YSR3rS3A+RJLnQyQwH9L8jToGP0GAa08W7X0LdW5FgnMrspvS
- IPZ/DAz2iXKrZwoOVcHR9rRvLwiLEUzGN51mMsglpCcDVuLcigzOrfSfyr1YZ2nOU3cw5iYPsRzU93Lm
- gyQ6H3QazHXntJEesqMCJ8ZTecg3iRpTcVLahUE3ucj1GOIjPpoxOdBILwgG5xrbnFSf0YQnzPEV9F76
- kbFNtaDN3uvvuwbJaBp6yrYd9OHupN/VErblmTqH9+zP3z1zEvkZTuWfjMHdT3B0Ry6UQGlsb37iY5sT
- BLk43X6bNKy3kz+mFx8vLj+Mtp0IyJJ8ygpCBeZwoHFG6XbYGOj7ut9Q5nVd0HDeJR9vZ3c37e4LxbMg
- 9Ed9FPaSbi2Hg43d0beUJABp1M5MhiyQCpS5ThuzfNfLvxIx/pCgnvAsxGw5Ip6H8CJbT3gWWvJ0hGeR
- dVpRr6ZhLNPv07vrj81aFIKqhwAXMa17CHDpB39p9UjWdRxgpKX9iQFMklQWToxl+nJ/t2wyhrLA1OVg
- IzEbLA420pLOxFCfrkxlTXmFFxXgMbZllezKzSE/SG4UQwHHoRUGE0N9Sa7npDZMbUdb9nQlk0wmP8uK
- YjUo27YhWTYeTb6QDrE9cn2xKiiWBrAcq6ygOVrAdqi/ZCRHAwAO4qEnLgcY9yndtk8903q1Yl1bz7nG
- jVjTVApwHU+E9TRHwHXkgvXDTpjr2+0zmkkBlqNZc0lQNN/3DZSDQUwGMBGbkx6yXYSFNnf23gTtv6l1
- xhGxPbTG1mtj1+Wh0BXsz+RvUZU6wSRJ59GWXZVxWm3UArYje6YIsmeXpqbzEbE9B0puW28Qqn+L4ikt
- 1mKT7LI814+a06aSq7KdGtHUr80kCUE/RmfH/3FIc1YHxSFt6wslTdS3LZp4F3r337Yqd6ojU9SP5U5U
- rySVRVrWxzWlqKhv2/TxDWGdFyIhVece65jrpNqu319efOi+cH75/gNJDwkGYly8++UqKoYWDMR4/+7X
- i6gYWjAQ45d3v8WllRYMxPhw/ssvUTG0YCDG1flvcWmlBV6MwwfqhR8++FdKrGWPiOVR/Rlae9ECloP0
- qPDOfUp4p8cHqh0jjoJ6yHUV4jHVryTSZEfKtZWkgUoLeI6CeDEKcB378ucFTaIJz0KvJQ0Ktm1T1VLp
- Zw48rYG7fmIBh8aZ6m+6o0SzaMKy5IJ2kzTftw2ks4VPAOA4J0vOLcsureST6mGQVkzZmOOT36m92BNj
- m8oNcV6gIyBL8uOQjX/n3OU8I63n1RGQ5aLpB9FdLQcZmcKwj9V1hQV4DOL97bGeuXmsIKmX3FGYLVnl
- +mWLDc96pFF7ueGaS6Dkk+uZHkJc5yzZOWZj3ZcWi5gjxIh3d8iJOkVAFt6gyYc9N7FTcEQ8j/xRETWK
- gCw1XeOXO3lYUTWHFWRhFYkT5xkZ1ZVfS+0zWleiBWwHrVy6ZVIVKeov6RDLQ3ug4z7HKQqVPBRef983
- UO+AHrJd+gRmWhfmiIAeagJbnG+kHC5tMpaJNghxRyD7VLc4uvOXHAq91w+pPQRo286dlwvMwJF2dzx+
- 3zdQltP2iO2R4rApkyolrUYwKMym/8+j4Dlb1jITL9C7MtYlBa6l/TNtWGlxtpHaM6r8XlFF7hFVQG9I
- ivWhEsQKtIccV018TuOd2d79jTFtYmKejzbHJYE5Lkmf45LQHBetd+P2bIi9Gq9HQ+vNuD0Z3RuhpkGH
- WJ66TJwDrAlGHwbd3amLDHFHulZWt9niLOOBNrlwcGcWDrQHkAf3CeSBVhQObll4TvODILbjJ8YyEafE
- nPmw01e2h2JdZ2WRPBFqIJCG7N/Fep1+p3tbDjfS5qshOOCWPw5CEF4aQHgoghT5ltY/8lHD+/VT8mX6
- pduearTSonwb6RGjwfimx6r8STVpBja1p7pxfC3pWymtd4/4Hv2yZ/VMTrQOs307saM8NT8RtkXWFdHS
- Ep4lX6c1UaMRwENYcdEjnqeg/6wC+l1FLgqqJzffSb/++LGZaqZMwZsMbEpWZZlzdA2IOEnHOvtkyJr8
- zOonvRkmX39SIHHKdU3eOx8VYDGyTbu+oSbspoAbkCgHfkYcQjlxeIOsOAzlBWkCw4J8l9yna0F1NZDv
- Opx/oJoUAnq6MxiTfaU+ehk/ORJQgHFywTDn0G+/IJcmhYCe6N/uK4A47y/I3vcXoIeRhhoCXPQ78gDd
- ieqPjGvSEOC6IouuIEt0pl4N56keV5DrhQayXcQzfw3E9lB2BTh+3zFkxJdbLch1yXVabZL1U5ZvaD4D
- tJ3qP7Lxe770BGShHANgU46Nst/mCQAcbWukp4DG7yYKwrabMlw8ft83JOS7qKdsG6H32X3d5okjDgOx
- PZRJhOP3TcOi63yKSs/ZbEQ1XuahkDeru130n1JJmSPFDUAU3XfT5+qR+n4+a5v1DoppVshujfcrpTqB
- aNe+f6V2yUzKttHqzIVXZy7a1+2KV+JoyOZwYyJysSPsrYnxcARdAmOjuA4gEidl4FShjxMdEHFyf//g
- 706y3T7P1hl9GIc7sEi0IZZLItYDX3tAvOSb9wT5rjyVNanTaGG+r9zrOV3i+kIQHnCzirFvGIrCm0IY
- Mg1F5RUayOFHIo16Twjo4Q8SUAUYJxcMcy4A1wU5UZ1R7+mP0b89POrtvkQZ9Z4Q0MNIQ3fUu6C+vGAg
- oEe/faYXcDB8RxT0Mn6rO5ru/kyuGKE6MWY0jRmAKEWd5WrAUElyM2ygtpc29ll4Y5+FXk5/XPJzaivF
- I62zjzm8SM12JU7nnRgIUoTi8H6OLwjFUAMFvl/Btps0fly448dFu4OefkmRYjlBtqtdGGYcpp5Qlpzj
- BijKoV4z7UfSsQrxvU1i0sS5A9pO+T3bU1T6+46hHv/c9Ph910B5/tcThmU6X84+za4ny+nD/e3sejal
- nSOF8eEIhJoKpMN2wvNeBDf8XybX5I1bLAhwkRLYhAAX5ccajGMi7Q7WE46FsiPYCXAcc8oWzD3hWGh7
- iRmI4bm/+5T8Obn9SjrP3KYcW7OzjJC0/HdBxJmX3a7WLPGJduxtpZpnhH6KjRm++W1yM1ssk4d78ml1
- EIubCYXQI3ErpRD4qOn99rC8Tz5+/fRpOlffuL8lJgWIB/2kS4dozJ7m+fhDQwEU85JmKj0Ss/KTOZTC
- zdy/alp55iON2Sk9QBfEnOziECgJzeZZemEEOyVMw2AUWad1tm5yW4830q2IDOoLsWug7c0KsZ75y9fl
- 9C/yo1GARcykoaELIk697Rhp+2KYDtlpT2dhHPEfirjrN/hwBP5vMAVeDNVZ/aZ6GdSHxBCMuhmlxkRR
- 76HpaCUr/fMkM4Dl8CItP8+nk5vZTbI+VBXlUQeM4/7m6ILueFduENMRjlQcdqLK1jGBOkU4zr7UEx1V
- TJxO4cVZr9bnF1d6QrB63VPzxYYxtygi3B3su7cr/fE51+7gmP8qzj94/VF21P2Uqv8lF++o2iPnG9vW
- TPcRE/HC6Q0CBj9KXUWkiQUPuPU/CU8HcIUXZ1tW39UNUYt1rf97LZJdunlOfmZ7URbNh3pHU/06AWV6
- leH2r4ze2QZ72c1BubxCYKKe93G908mbkjsAPYg5ebWbDQ+4WSUKUmBxeHeFDQ+4Y35D+K7ovsTqHFks
- Zm5Gbd/FK899pDG7akDHb+sIoJiXMvftgr5TH7P02vZR22NVuT2hgCkYtTsf9S3Cuqpg3PZC44NaHjAi
- r9ozSMxKPqEawUF/0zR0GzZmZcEI4RjAKE3qUU7bgFjUrFcSRmSxqwDj1E/NSYTqu4Spdxj3/U+pXr9L
- H8H1oOfUKytTuSMKO8q3td0/cq/xxHnGplqVr5KyNwKA+t7mMMVtpg/xztI8WR0oi7wDDi9Snq2qtHrl
- 5JuJet4dZ552B8/Qtn/mXKJB+laxI7yxbUGeS9dOvJrTIH3rYZdwZixOnGcsY8ZkZXhMVhZrasWoEc+z
- L/PX8/fvLnl9KYfG7YzSZLG4+UB7EAjSvr0SiVRVxap8YV26g3v+asOow1oIcel9oepsn4sryvmOAYUf
- R3AqmY4CbNt2+3Q1WEl08GbbUdJrDEMiPGZWrLlRFOp5u+1g+BWnLxgRI2uX2ESH6jxYxIPkxtAkYK2b
- N8di+tigA4z0NuMXSRi/yLcbv0jK+EW+0fhFjh6/SPb4RQbGL83RtZuYqzdo0B7Z+5djev8yrvcvh3r/
- vE4w1v/t/t7M9kkhmNoTjvqzbZI+p1mernLBjGEqvDh1Ls/fJ0/fN1u9Na3+uvqeoCY+YgGjqZZ+y9Br
- zPAt58nN/OPvtLNibAqwkeZnTQhwHU9nIPuOIOAktZMmBLgoCx4MBjDptysJd4CNGb6n9FqPYYlToBbV
- 226mi+Ok7vuxLpOxTWK9ek8dlLicZ2QKEd9GXOgHdiypw3rm9xHm9wFzQc+fI2ObCub1Fei16faEMJlt
- IKAnORTrJ0E50g6EfXepOnX7tMpq8qX2pGH9TNpHtvu6xTdXShA03/cNyf6wImWAw9nGcrc/qC4o0ddT
- mE3P5D0R8hSCUTftVDYQttyU1q37usWfzhuiJaOJwT5VCtOdqEUlCZulogInRv0ueSQ5NeA7qL+5RXzP
- nmrZA44f5F+kEMBTZc+cH3bkACP5pjUx3/eDavrhOvRxRr/+dv4b6WQqALW8x8NE+nJHMPuw5Sb0y9pv
- 2zRxJ3ADsTztYnXW73NRyyvp95KE7iVJvw8kdB80Q9PmzUSaqYNsV/Y3pX7VX7d42iLaE2A6mlSXlLMH
- TcYwzebT6+X9/NtiOaee7A6xuHn8gMYncSvlJvJR07t4uJ18W07/WhLTwOZgI+W3mxRsI/1mC7N83Qsa
- yd3ky5T6mz0WN5N+u0PiVloauCjoZSYB+utZPxz5zbyfi/3SZh5zT1k+AMKGezFJFjNi7WEwvkm38VST
- ZnxT1wpTZR3m+yhZ0SO+p2k9qaYG8l2SkVrSSy1Sd6L7vm1oB2b6Bfi0PlSkX+egtndTxqh92rPrT4hK
- jXieZ1Fl21eiqYUcl2rybz6TRA1hW6j3o38vsoaCDocYeYNB1OBGIQ0HTwRgIf9yrxd7/Oue7NlDlh/0
- 32X3hk9/pQ4LXRByEgeGDgcYf5BdPzwL9WGcg4E+8jJCiLXNEcNNkEbsKvcYtzSAI/7DKs/WbP2Jtu3E
- dtdrc9kDXYAFzbxU9WDQzUpRl7XNklG3SbBuk4xaSYK1kuTdqRK7U6nNut+mk4b63fdtA3GwfyJsC71j
- AfQqGJMGJtS7pte8uXaXw43JNttLrraBLTdjfGJTsK0knnkHsZCZMvqxKcyWVDxfUqFGyTSCv5g4SvNA
- 2PlC2UHAAyEnoRWyIMhFGgE6GOSTrFIjkVJTl9yyfSRdK3GcZUGAi1YlOpjro18YdFX6b+3xEoVeUNws
- ucxF+t1s3znvJPLs/tX9LagR//ZKGifZ/TRPfv/UnY+telRP409Y9UnPWmSy3l9c/MIzOzRiv/wQYz/R
- oP3vKPvfmH1+//UhIbxmYDKAidCJMBnARGuUDQhwtYP4dn6grMhWG8f8ZUXYAx5AYW+70d42Tx856p5G
- 7Otym66ZaXKCMfeheha6BPLkRzpop8xWIzji34hHTgnsUcTLLiZoKWlva8KhET4JWPVcxOo1Jpk9AxKF
- X04sGrA3KUaawAZQwCuj7ks5cF/qz/mVlUUj9mYnEv3ynWqBpT7CUnUPdqxIoMmK+sf0WzfPThu7OSDi
- JI0ybc4zqgzPVFFqt74S62r8louowI9Bah87wrMQ28Yj4nk40/gAGvRyst3jgQi6Sa5KcnL2IOxkzNch
- OOInz9nBNGRv7kPqveyxoFkU66a6kgzziYXNtIk9n8Ss5Il4BPf8mUzKffrjQL0FT5xnVPl5QXgF0aY8
- 23HKnNV0wwI0Bv92CT436L5DmlY5EpCF3ZMBeTACeWhmg56zXNcX9FTtKNCmU5qh05jnax8isJPUxRE/
- /bEMgmN+dukNPJ85fkN9xripjxjsU/nB8SnM83H7sB4LmrktkQy2RDKiJZLBlkiyWyIZaImavjijk3Li
- QCO/1Do0bOd2UGx4wJ2kW/2hyms10MqKlDSjPM7nXQHtkZsFWa4v0+Xn+5t2U55M5Jukft1TKkCQtyK0
- S+rSDaU5OTGAqXnfkTpqcFHIS5o3PDGQiXCSgAUBrs0qJ6sUA5kO9N/njtfoq0gtCHA183oxt09IMzoe
- ccJmSAXEzfSkQk2O0WKQTyap3o1Cb7xS00ubjcP+smg7NRz5kQXMuwO9RCsGMNF61MB64dNfm66hnv0h
- +04kYG3+Tuw2OSRqXa9WTKsiUSutS+aQgFW+zd0tx97d8u3ubkm5u9ue3m5fCSnF5k1i4zokfl3yqwOH
- tyJ0A5tsc1EQTgnxQNApa/XZhuFsQcvZnKt5yPI66+oeSjnzYdut+6+JfmZKcZ4g0HX5geG6/AC53l8x
- rktBkOvy4pzuUpDlavYYVAWqza7mafDLbpPIp1T/p5Q/D4QYw7JQbPUzj1/X/xkXG5AZsW8uLi/Pf9M9
- +H2ajX/YYWOo7zgVP/4talTgxyCtDTEY30RcO2FRpm32MJkvv5Ff3PJAxDn+zSUHQ3yUvojDGca732d3
- xN/bI55HV2rt4hTifB6Mg/55jH2Ou5vzqo41sige1UeSGAFSeHEo+XYiPEslHlWTpM8Oz/Om5c5FTc1C
- 0OFFknF5KofyVMbkqcTydD5PFpM/p8liOVkSy7eP2l69EZyoqrKizXd5ZMi65Wu3tredgWg+pjgNDPLJ
- V1VwdlytSdv29mfQjm51OdyYFFxnUtjW5hyA9iNJcZqcYzwUa/bP92Db3TyTo2bVCUJcSa7/xBE2ZMhK
- vrEA3PcX4qX/VrO1MTWEb7CjqD+ys9BlHbNuWT7O7jllzmUBs/4PrtlgAfN8cnfDVpsw4G72nSrZdhu3
- /c0hveRbpqcwG/mmcdCgl3zbQDwQIU9lzUyMHg16ecni8MMReAkESZxY5V4P2XZp9Z1k7zHHV+llYU1I
- UrE2OdyYrFdcqUID3u2e7d3uHe+BU+IOYFmrRCrLgl0xA7jr35XPojnuUdDEPQcauw1ZuWITd/2yLivW
- JRug7ZQpJw16yrGdGnTqLWuTvpV6kx4Zw/TnQzKZTm6ac69TwnGPHog4iad2QixiJo2DXBBx6o4RYWWM
- jyJeym6tHhhwti/7bLJKrClnyQx5kIiU0b7DIcZyL3gXrcGAM3lM6yfC2nqERyJIQXgP0QUDzkSu07pm
- XrYpQGLU6SPpdUeARcyUkwc8EHDqZRy0vdgAFPDq9zZVc1I9cWo6E0bc3BQ2WMDcvszHTA8Ttt0f9SuY
- y/IPwvIei7Jt17OHz9N5k6nNsbO0lwkxARpjne2JN7gH4256m+XTuJ2yvsVHcW9d5VyvQlFvtycypaeJ
- CdAYtFV8AIubib0EB0W9zfKV/Z7WpcMVaBxqz8FBce8zo0KBeDQCrw4HBWiMXbnh5q5GUS+xp2OTuDXb
- cK3ZBrXqzfO5RaRhUbOML+NyTBnXX4qpAU58MEJ0ebQlwVh6y21+hWkYwChR7etA28rNBzz9Y2qacC0T
- laMDOcmsWdBahXfv+/c9vdsD9XWav33KCto4xsBQH2GnPp+ErDNqA3iiMBvrEjsQcn4lnaHncrbxRqxV
- CfqYSvHhF4rR5ECjvusZQo1BPnLZMTDIR83lnoJs9BwxOci4uSXXMxboOXWPmJOIJw43Esu3g4JeRvYc
- MdTHu0zwPuw+Y2V7DzrO7FFI2o9uCMhCz+geQ31/3X9iKhWJWqm5YpGQlVx0ThRmY10iXG6ajxaU1XsW
- hdmY+X1CMS8vLY8kZmXcNg4LmblW3PgnbW2kw+FGZm4ZMO7m5VjP4mZu+pq0bZ/eXd/fTFmzJg6Keonj
- apt0rAWrX2NgkI9cFgwM8lHzv6cgGz3PTQ4yMvo1Fug5Wf0ak8ONxHrfQUEvI3vgfo3xAe8ywfap+4yV
- 7Vi/5vPDH9P2yQD1ca9NYtaM6cwgI+eptAUiTsYMv8siZvGyL6uaJW5RxEutkS0QcX7fbFlKxWFGseMZ
- xQ4xcp/YgQIkBrFVMjnESH2ubYGIk/rU2QJRZ33YJ+mhfkoqsc72mShqZgxfNBxTimJDm83CLWOjtUsd
- 9Hs8rH1WGe7glb1Fso9L8ejEHpHO/z8lMSN1qSsSLBBw/nHzqT3VekevhgwWMWc8Kdhm/jH90uxukjOq
- IINFzJwrbTDEZ+5MzL1ix4FF6ncIYQeyFGCcb+y+hcFiZuLKAQtEnKx+BbCLoPkR9bxzEEbc1OfhFog4
- Ob2WjkOMes0qS6lBxMnppfj7oJmfcHYPQngsAn0HIRhH/Kxa/gjazi83EWuXPBh0N3e35Ig7ErfS6psv
- gfW1x8+IdY2BoT7iyNgmYWsliPWMBYLOjepXVCXnx3ckaKXWs1+wtcpfeCuKv2DribsPaN2aEwS7iLWf
- gYE+Ys33BVl13P2dvF7G5EAja/2Ky8JmXj2E1kCk7clszPOxa8pALclJRTj19EvU7b5qDKUNe27iWo6W
- 8CyMlAPTjJGnfn4+fJwmspkzpKh6yrH9cb24ulBt7TeS7US5tum3i+ZDmu1I+bZ2enCzOW+HZVmxLalq
- QIHEoa7LtUDEuaG19yaHGKntkwUiznafamLnz6dD9kqmSZmKfZKnK5Hz49gePGLzxd3j9pzYYGKOgUjN
- JUVG6hwDkRgrFjHHUCQpE5nmNXEQHvIEIp5O9I1JRlOCxGrnd4iLBn0asRN7QCaHG4lzOQ6KeOUb3ZVy
- 9F2pvtlVwtyaxjIMRtFlLjKMVuBxkk1zL1Xp7lEUtCNLBk1jo/54w7g/hiKLdftlPfXIDmlKRsTSF3ba
- Yi86qGULRGfMIEN8IIK+ZVQpji45jmdcxP1hJV72bxGzNQ1EjWmH5ah2WL5BOyxHtcPyDdphOaodlkb7
- 2aV25C+zTISob5B9vm58/JhOCK4bEf+tAg9HjO79yOHeTyolcQGlgaG+5GYxYTo1invbzdy56pbG7XP+
- Vc/Bq16lUnA6ah0HGTnNAtIGUHZ9NxjYxDnjA8Yhv55Fjglg80CEjaDPnxgcbiTP9Xow6NYHlDGsGkN9
- 3Es9sbi5eSlO0BYwQDwQoXtBmWzuONzISw4TBtysmRpkloZ0jLgJIa7k5jNLpzjUyKhRjyDmZLYBBouZ
- 59yrnWNXe85M03M0Tc+5aXqOp+l5RJqeB9P0nJum56E0rXOp7zO9kJl2ckHQAkdLqvQn91k75ghFYj1z
- RxRAHEZnBOyH0M/O80jA2nbGycoWQ328itxgAfMuU/2+4jGmU+IrgDicuUN43lBP/MWWZcARisQvy74C
- iHOcvCHbj2DAySszFg3Zm50Gm2/Ry4sJ4+42Z7jylsbtTXZw5Q0MuCW3VZN4qyYjWjUZbNUkt1WTeKsm
- 36RVkyNbtebEE+JzZwuEnJxZBGQOoRlQs+6/Ewla/2b8Yu+ZffNnVuohKUc8zc7GAN8z+UVLA0N9vPww
- WNxcibV+xYMr7/BBf9QvMB12JNYbw8i7wpy3hOH3g49/JS7aMzDfR3+RDXvHmPnmLvrOLu9tXew93f7v
- xNSzQMhJT0H8fV991EK7E16S5llK6k64rG/ekPdP6CnHpnf+TYVMzi+ukvVqrc8PalopkhyTjIyVZLu9
- 6ntk1P1hRwmHr0Gf1fQGv7jThOKtd8kqP4i6LGmvBeOWsdGSq7eJl1wNRNyRd1lFFKE4dZU87dJjqvOD
- 2Z5AxMf1jh1FsWGzGkoVm2Yr0ZgYvWUgmoy4yTp+IIK6C84vomI0hhFR3kdHeY9F+e2Cn+sti5h1PRFd
- 07qSkbGia9qQMHQNb3DHAp5ARG7edWzYHHnHepaBaDIis8J37PEb/DvWMoyI8j46CnTHrp9S9b+Ld8m+
- zF/P37+7JEfxDECUjboSsRHv425f0DI2WtQNPGgEruIlPmlfBtP21I+iuU8Y4qsrlq+uYJ8gnIdiY7CP
- XEWh/Yn2g3LLuj6FAT7VhHHyo8UQHyM/Wgz2cfKjxWAfJz/glr79gJMfLeb7unaX6uswxEfPjw6DfYz8
- 6DDYx8gPpPVuP2DkR4fZvlWefhcXK2I/pqdsG+MVU/DdUl25E0tIh/geYk52COChLdnvENDzniF6D5s4
- yXTkECMnwToONDIv0b9CveFEcchJE3lHxjbp59ftrNTqtUh3pIx12YCZ9gTcQX1vO+fFu2KTDZjpV2yg
- uLdc/YvrVajtfUplU509pdXmZ1qRUsJlHfP+u+B2aFwWMTOaApcFzFHdWtgARGnfSCGPeV0WML+0p5PH
- BPAVdpxdWqk/512xStL8sayy+omUE5gDjsRc/ADgiJ+15MGnHfuGtJ24+rrLX9L4S49vRnNEScPYpr36
- pSIqv2EDFIWZ1x4Muln57LK2uVpfJL+8ozbMPeXbGCrA8wvN4ZQ9arnxy0wzj7BtNgLt9hBbV/rFhsN2
- m71Q1ajIi3lx8QtRrgjfQqs2oVqye/LzRikQUnlx319R00ARnuWSNvPXEpAloadmR9k2PSmlZ6ia1wJ2
- KekmcVnY3NVPetlAteHoLQEco/3s+E152OsNSAUrGqLC4jaHujLedYMNRpS/ltO7m+lNs8nT18Xk9ylt
- vTyMB/2EJQMQHHRT1m6CdG//NHtYkF5QPwGAIyFsoWNBvuuQi4Qy8nE5x/jjIKrXvlVvzuM9SJIcVjhx
- muOI1+WhIDxJ9kDHKUX1nK31izCbbJ3WZZWkW/WtZJ2OHxwPigZjrsRWH4v8BkENkxP1WVSScF6tyfSm
- 36d30/nkNrmbfJkuSLe5T2LW8Te3y2FGwi3tgbCT8haeyyFGwv4yLocYudkTyJ32xZlSH9R7R6hAAopQ
- nOc0P0TEaHDEzytkaBnjFrFACWuWX7OcDYlY5SnxC27+2YpQHH7+yUD+Lb5+XM6nvOJtsriZXjh6Ercy
- ioiB9t7Pf9yMPoVIf9cm9Zb3abGhCDrE89RVuq6JooYxTF8m16MN6rs2ydnh0+Uw4/ja2OUgI2FnTwtC
- XIQlri4HGCk3kgUBLj3fPH7fAwcDfJTl3xYEuAg3oMkAJtJ+ljbl2EjLqXvCscyoqTTzU4i4dNpkHBNt
- wbSBOB7Kux8nwHDMFwv9Sn46/k4+EY5FFFRLQziW4zbblAlID3Sc/ClsBHf83IlTEHbdZf76Xt2sapRR
- 07wGCDp3h5whVFRvmy0WX9VXk5vZYpk83M/ulqR6EsGD/vH3MAgH3YS6D6Z7+x/fPk7ntBvLQFwP6dYy
- ENCjOxi6W5qrf9YVodENOdxInNvYJ0PWyJ8RVLlxI56xoQI0BrkawXg3AvvZEYIjfub14/Vg93n7ybYq
- d9RXgVFBH+PLzejHAeqrFkfrnpwA20HpnBy/bxuWleqpb8tqR9GcINtF65z0hGm5HI9fWhw1PS/99Lwk
- puell56XnPS8hNPzkpyel356Tpef728or9P2hGc5FHRPw/SmZgLi+v5usZxPVOO3SNZPYvyBlzAdsFN6
- FSAccI8vKAAa8BJ6ExBrmNUnn2hJcCJcS7NrsFjXhEluDwSddUV4YuZyrjEvxx+q1xOQJVllJd2kKddG
- yc4jYDimy8X15GGaLB7+UIMwUmb6KOollGUXRJ2UH+6RsHWWrD78oru6hMd+GB+K0O4WwY/Q8lgEbibO
- Ank4a+4K1VUh9J8wHovAKyQztIzMuEVkFiohMjId5GA6UDb28EnMStukAmIN8/1ydj1VX6WVNYuCbIQS
- YDCQiZLzJtS77j/+d7JeyQvCWmADcTy0SWkDcTw7mmPn8qTjn3rCtmxov2Tj/gr1HxtdVLONXjQgKS4H
- Rb2r1xh1R9v25qmk6vymFOkJsl056RDxnnAsBbVwtoRtUX+4WK9WFE2H+J68oGrywrcQVskbiO+R5KuR
- ztUoLTWJO8T31C811aMQ2yPJOS6BHFdaqqZDfA8xrzrE8DxM7/SX9F4maZ73q4hksi6L0YPBAQ0QTzYP
- 2ukBOs43Eh9lOhjiI9S0Ngb7KlJ77ZOAVaVu9kg2NhRg2x9U9ducYUxW9qjv5fxq+PfqWbqXjWolarrv
- SPrWx12d7chX2FKYTd0L/+IZNYlaN9l2y9Rq1Pc+pfLp/QVV2VK+LUvfX+jnAA9U4QkEnPpBabPFdEm2
- 9ijglWleHHZkZ4vBvv1TyvEpDPKxCnqHQT65T9eC7mswyPfCvEDsPsyf1OA9FzX5Gk8g7CybNql65GiP
- LGjmVGwdBvoy1RRVNcPYgqCTMBSzKdh22Kkhnxi/mSvEguZK1FUmnjnpeUSDXsqjJwQH/M2s4CHL66zo
- VnnTUwZw+JF2qhyWa6q7pTAbaYUQgAJesdvQOw8t5duKktnBOYG+c1/K7CWpy6Qm1/wG6nvVQJ2TQR3m
- +6RY6yNs+N1GT4DG4BUtCwbc31WVLPak5XsQi5g5rcQJDDiTbMvWKjZk3o/fGwSEYTf9bmsp0KYnYRg6
- jcE+Trn9jpXW78z28QTCTplI0mtkEAuaGS1vS2E20rYTAAp76V3glgJt+5JTHhWF2ZrCQFhbCdOw/SCf
- OFqFgT7CulabwmzNMVHbQ7HmaU847H/Ktqzr1RxsLFn3psZAH+kVCJcDjX+LqmQINQb46mqdqlZwRy/x
- JxK0cur0hgJteqjO0GkM9OXrtGb4NIb4GB2EFgN9BT9TilCuFLxsKbB8KQhHKjqY79MTPI/kerylANtO
- 93Kb7i5Z2aOAt8zLn4LcC+ow3/fMnUZ+xueRTx+pPkO7+pMtPxmMKMvP0zn5BUObgmyEYZzBQCZKp8WE
- DNdeFPDDgNFi1IBHabesYofocNzf7hTA9ne47ye+WuxgqI/UrfPR3vsw/ZJMFnfnzYvgY40WhLgoS7A8
- EHD+VCVEkIUNhdlYl3gibetfl+9+S2Z3n+7JCWmTISv1en3atq9eayFZZpu0reo/m3fsV+n4laEu5xjL
- 5EmFGt+yWJDt0uuk9M4d17MHVbs1qUOxArjtp+a+n+dNqt58pp2p5YGQczF5aBfA/zF+qhSmYXvy8PUj
- 4XgqAIW93KQ4koB1eh2RFCYMurkJcSIB68Mf14tfycaGQmxXLNsVZlNfn/3ZbPdCvakwBxSJl7B4qvJL
- QbAMzKPutfnAvaY/b15r4cqPMOzmpvI8dB/rxohs1BDiSiZf/2L5NIg5r+e3PKcCMed8+k+eU4GAk9hS
- w2308a/8dsaEMXfUPeAZ8Cjc8mrjuD8miQJtkP48qh1yBWiMmAQKtUn6c167dCID1iu29SpkjWynEA8W
- kZ/w4VSPKzWDZWYefe/OR9y7Ue2YK8BjxOTCfKh+YLVrRzDgZLVvJhxyc9o5Ew65Oe2dCdtu8rAfGPG3
- Q3ZOU2eToJV7owA44mcUX5dFzOwEgVu19kNuk+bTsJ2dHEhL1n5IbsYMDPNd8XxXqC8mYR3BiBgJYRV7
- UILG4jfFqASMxSwwgdISkxHBPJjH1SfzofqE2+T6NGJnp/Y8WFtRm9mewmzUBtYmUSuxabVJ1EpsVG0y
- ZE3upv/DN2sashMHqcic+unPEW03Pk41Po+75wZGqtaX2HdHaKxqfSMqoULtesxwFTbgUaKSKdjOs4as
- DhryXvG9V0FvbMKPaP+Br/H6AIgoGDO2LzBqXG58NaKADZSu2IwazKN5fH01H1NfxfUVwuNz6ztRuTEf
- rBV5fQd4jG5/xutD4KN053NWXwIfpzufs/oUAyN163Ne38I1GFHU7X1+kTx8nOp1F6PNFuXZaC/tW5Dn
- oiz6MRDPo58y6w3q0mKTrEU1flkKxnsRmm3XiNaG8Uzt5hWUQ0c80HEmX37/dE6SNYRtuVQZ/sfNp4uE
- so2yBwacyeLz5JwtbmjXvl+JC729jX6hkfTuDoKDflFE+U3c9v+arA7FJhe63iEVWAtEnLoUZ1t9kIPg
- uU0BEqNKf8bHcSVuLGoV8StQQ/za3OD0ZD5SkE3XvzzjkcSs/CSFDFCUuAhD9rhiARncKJQdiXrCtdSv
- e6HfWKFsouKTqLVZ4Mj0Nixm7moUseHJTzjufxZ5uef7Oxzz67zgyls2bJ4Um2ncT/A9dkRnyESuoyA+
- HIHW9Ph02E5Y44zgrr9rVWnWDnJdXYGluTrIdR13/z3dBJx9fkeo3Ljtrr1vEDUgMmLe386uv9GLpo2B
- PkJBNCHQRSl2FuXa/vl1csv8tRaKeqm/2gBRJ/nXm6RrZe8Ci+BBPzU10L1ggY/JqYLvB9t9/mXy8KBJ
- +mUbJGblpLWJol7uxYaulZ62Btlb55O7m6R7R2Ksz2Qck/qLSF9JohZxPIQZjuP3HUOzSJ/kaAjI0h6t
- qk+31DsB68OpCZ3MAY0Tj7gxl8k4JvFIS0H1fddQpCs1ptuW1ffkUMh0K9Qwb7sVlE2PB0VOzG1GPIHS
- phxbO/woNslO1E8lLT0cFjDLV1mL3fH4BP3zkvVB1s1O+8QUGtY58ZttVfTPJoU5UY5tX45/8/4EuA4p
- DpuScduZoOOUQtAyTQOeg18GZLAM0E4zNRDDcz36BAb1VYtrLo7Q4zQQw2M+CKFst+GBtvP41IOqNDnL
- +L/J+buLX/QGQvrMuSR9frkgeAHasicPi0XyMJlPvtD6WwCKesf3ATwQdRL6AD5pW/WrnPvva3muahtB
- OIYcYm3zKhs/g3/8vmPI9TG2xWMy/k1SB7N9zcELqh7ck66rpyAb5U40IdtFHGkbiOvZpoe8ptZ5Hmlb
- iWN3A7E92zx9JCV9AzgO4m3q35vOYUgUmYMGvNRC5sGuu36XrKs6oa1zAVDAuyHrNpBltz+nixQEun5w
- XD8glyCLBGDZpuu6rOgJ33GAMfux25N1GgJcxEroyACmguwpAAv9h0G/ai8lt7z3KOD9Qdb98Czq7qeN
- Bm0M9OkNrVTLRa2SbNY2ZzIp9+mPA+kmOEG2K+JcOARH/OQz1WDathO7TF4/SScwvVXtKcymd3UUPGWD
- +l5m/jho0JvkafUo6NcNKMJx9JaXVR0TpjUMRhGRMaDfwSrHNhmysjPBM9hR9nqmSvWede++XWdyP5k+
- JLvHLalNDmiG4unxSny4o2UoWvO8MDJW68AjFWUhuBE0C5vbwcQb5BEoGo7JTznf4kZjnt4JwqCbdXfi
- 53Y2n+oNskg6DXiO5rIZI0IHhb2MsZyDwt5m3KJPG6VNBKIGPEpdxsWoSzBCm6ecZLdI0MpJdIsErRFJ
- DgnQGKwE93HbL/kjWhka0UrmaE2iozXJGGFJcIQleeMGiY0bKCuojt/3Dc1gidpyWCDgrNKfZJ1iXNPf
- gmb522kpVbGr6dNOPWXbDnvKmbQ9YVtoZ+b1BGSJ6DCBAjAGp3w4KOgllpGe6m2U1cj22mP9L9rhyz3h
- WCjHL58Ax0E+gNmmHBvtCGYDsTwXF78QFOrbLk1O3xPjmYhpfEQ8Dzllesh2XX6gSC4/uDQ9bY6MZ6Km
- TYd4Hk4ZtDjc+DEv198l19vSnp2elyfIcr2/opRz9W2XJuflifFMxLw8Ip6HnDY9ZLkuzy8IEvVtl05o
- d0pHQBZyKlscaCSmtomBPnKq26Dn5Pxi+Ncyfin4Kzl1hMV5Rlaaeek1e/g8WXxOCC3WiTAsD5M/phfJ
- 9fIv0mNGBwN9hOlnm/JspyeFO/lIVJqo591X5Vro7hpZa5CGlbQg0F0L2P6buo20TfW25fzrYpks7/+Y
- 3iXXt7Pp3bKZWCOM6XBDMMpKPGaFPmvukBbjz6gbFBFiJqVKjWSnsid9fLsLsKwjrqYSG7Hb14SsHKEK
- xlV/z+TTWyS9YxoT9U1+rucKRybUVwge9BPqL5gO2vUMh6yqyDvSsMDRZovF1+k85t63DcEo3Bwx8KBf
- F8iYAA0fjMDM854O2nXBFruIAK1gRIzoOhC3BaPr8rgTdaon7iILnKsajBtxN/kWOJpi2//glnRLAMfY
- iHW56Z/lHJOAEw1RYXHV14xHElKsq/HnYA2b4KjiZa++vRNFnTyfc4JZguEYquu2W8XGaSRjYj2X+2ob
- H63RwPG4BREvf+ayPI7Z5OEIzEoWrV33Uuc9N2N7OmhnZ6XJ9xG+Lqbzu/vl7Jp2gJCDgb7xo14LAl2E
- rLKp3vbXxeXl+ehdedpvu7QuS/s0q2iWI+XZuid1TeXUVY5EM2Awoly+++3P98n0r6XeLqFd0KBPsR0d
- A+HBCHrvnJgIFg9GILyfZlOYLUnzLJU8Z8uiZm4qDKZA+2kiv8fIFQ76NxcZQ6so0EapTxwM9D2O7wXY
- FGajbDXnk6A1u+AYFQXauKUIL0Ft9vN+94kFzaQFOC6HG5PtnitVKOh9blbCFgxtR3rW7iS9totJmXvA
- eC+CunXPGYXriEE+/WJcsUkr/X5WLQo9bSfpesgCRiOdvepyuDFZlWXO1TZwwE0v0RbrmXW4Lp9ryhu9
- CO75mxuUUe2eOM/YZyrrBndxz6/rUnqr01GgjXcHGiRoZZc1Gw646YlrsZ65XS6ZZ5Kq7UHP2RwBXb8Q
- hR0F2jgt3Imzjcnk9vf7eUI4qNemQBvhXVqbAm3UW9PAQJ9+QYbh0xjoy2qGLatBF2HEZlOgTfJ+qcR+
- aTOpt+EZFeg6l8v57OPX5VTVpIeCmIg2i5tJu4aC8IA7Wb0md7ObqBCdY0Sk+4//HR1JOUZEql/q6EjK
- gUYi1xEmiVrpdYWFot72fU3CRC7GhyOUq3+p5jQmRmsIR9HvL8TE0DwaIeNefoZfNblWNEnUqiql85g8
- PfHhCFF5ahicKNfT+VJvTE0v8haJWYnZaHCYkZqJJog5yb1rB3W9s7tPjPQ8UpCNmo4tA5nI6ddBrmt+
- S9890icxK/X39hxmJP9uAwScaqz5LqnEc/ldbMheE4bd53r0Rp1z8GDYrT/laDUHGKl9/o4BTBuRC/26
- FePyehTyZtst3agg0EXZGNfBIN+Bnnp+z0X/lXUjIvdg0z6rnpfexpjsNOGAW4oqS3O2vcUxP29WDeKx
- CHkqa9oSTozHIhTqImIi9DwWQb99lNaHihnghMP+ZD798/6P6Q1HfmQRM6eK6DjcyBmC+XjYTx14+XjY
- v66yOlvzbivXEYhEH2l7dMBOnJN0WcTcrPuqWOIWRbxxFcFgPRBZDQzWAv1dTH0yBRuQKMQVzRALmBnd
- RLCHuEvr9RNZ1VCAjdPVhHuZjIHJkcJsxGd6Fgg4m5FlxC3g8FiEiJvA4bEIfSFO88eSF8V2DEciP5ZD
- JXCsruIi7S+L8UgE7n0tg/c15QVvC0Jc1AcnFgg5S0a/WEOAi/ZytYMBPtpr1g7m+KZ/Lad3i9n93YJa
- 1VokZo2Y+0YcIyJRu2CIA41EHdFZJGolj+5sFPU2R+JwOo2wIhiHPEnq40E/Y4oUEqAxuLdA6A6g9hUs
- ErXK+FyVY3JVxuWqHMpVGZurEstV3twlNm/JmmFEZhdv7+//+PrQTHEc6D/do2H7uq5yjldzsJGyN7vL
- IUZq7hgcbHxK5VOyySqO9cjCZsrxei4HG6mlqcdgn3w61JvyZ8GRHlnH3Kycm94t57MpuX/gsJj5W0QX
- AZOMiUXtJGCSMbGoj8gxCR6L2iWxUdxLvkMdFjezugsAH47AaFpAAx4lY9tD9wS1brBR3CsF+3KlqIPe
- qNyUg7kpo3NTBnNzdreczu8mt6wMNWDI3TxaK+rqlW4+oUEvu/J0DYNRWNWmaxiMwqowXQMUhfoo8whB
- ruMTSV7GmjRopz+GNDjQyGkjkNahTWf6QwIXhty8NgdrbdoFVcTHAhaJWLkZf0Ixb7PZOfuOdg2DUVh3
- tGvAotTMp26QYCgG+4fU6LO35it6XEAXawqzJWW+4Rk1CVk5jRbcVrF6HkifoyxEnhWMm7kDISf9gUmP
- oT7CYSk+GbJSn8W4MORm9eH83psq7dPr9n1A/YZKreok2lIKSADHaGpS/QeO/wSjbvo6VYeFzdnmhTtH
- AxrgKJWoq0w8i8hQgGYgHv2JKGiAo7TPLhgdBIB3Ijzoc53JfYQTBdmodd4Rcl1fP/KuredgI/HVXAND
- fe/aLaaZ2o4O2cmb0AcUcJyMlSgZkibkMnDCYJ/k5ZnE8kxG5ZnE82z+cL+YUt/+NznESDz3FWIRM/m9
- LBMMOOlP0T06ZJdxehn264o/23D1LR22R13/SRCIQW8tPDpgj0icYMrU1UHyr7qhETu9CjlxjlHv/sF7
- HmaRmJVYExscZqTWxiYIOJsl82ldV2TpiQxZOSNcSDAUgzrChQRDMahTb5AAjsFdsu3jg37yQkdYAcRp
- j/dhHN+DG4Ao3eQgq8QaLGSmTyv2GOQjtvAdA5hOSc/KPIsG7KyKD6nzIlbW+zjsP0/ELs1yjrtDYS+v
- SB3BgJNbBTr8QAROBejwoQj0DoiPI/6Ius/GEb8aLHEqox5FvPy146ABi9LOWNA74JAAicFZx+qwgJnR
- 9QF7PZwOD9zXoU+QnijMRp0eNUHUud0znVuo9Yhd4Y04hiPRV3hjEjgW986WoTtbxt5zcviekxH3nAze
- c+S140cIcZHXjpsg4GSsz+4xz9e8Jcd/YxgS4DHI7905LGJmvvfr45if3As9cYiR0V/sQcQZ894q4ghF
- 0q+fr1O959YN9a2agCcUsX1j9+6wW4mKH8+04NHYhQl+S9T5lNedhRTDceidWkgxHIe1XDzgGYjI6UwD
- hoEo1DdJAR6JkPEuPsOumN7DO3GIUbeSb3CT+5pAvOhb3JU4sRaz3+l17xECXORnBUcIdu04rh3gIpau
- FgE81FLVMa5peT+fNucycZ7aeDRqp+eshaLept0gb2UB8AMRntKsiAqhBQMxDlWlzwNYE1/fwDXj4jFe
- ng+awlHpDzIhwWCMJgWInXvUEo4m67ISMYEaQTiGag714yLifkSYJBTrPLasnw+X9fPoMnc+oqzF/pDh
- 39Hfa1EVkKUJxhNVVUakWssPR1DDrn39FBuntYSjvdDfHQANQ1FUw9euWo0LddKg8cgvi9ko6iW39iaJ
- WveHal9Kvc/xk+qYcS/csaDRujPuc8mMc+LDEWJaGDncwjRf6SpSvUn7+ntMLEsUihlTxxzxsD+itpSD
- tWXzmo/Ypoc85kd0hoEo/LrrxAcjxNTCcrAWltH1ohxRL+rvbPP0MeJebPlghK5miIjRGYJR6mwXE0Lj
- g/5EXUX2EhmllYRjkdcUAXwwQjvZnKxXEVFODjTSW1SQ4+rGv0VVMgNoFPTqOW1mfXtEcS9reNeRqDUv
- y++swXsPg27muB0dsxs7UHOqHhPH/dwewMD4sh3cqLxlXnkHB9y8vtGJxczcNwwgARpD/zZm4TZx3N+s
- nooIcOQHIjQDy01UkFYxEKefeI2K1WvweOyZPYNG7e0WQdxc6eignT1ZYAvQGG31F3NnW4rBOOy73DSg
- URjPoF14wM3rOzwO9hvyMtVtUVuaOUlkC8AYvHE0NoZuFnNwW5sextwxdaocqlNlZJ0qB+tUGV+nyjF1
- qnybOlWOrVNlVJ0qB+pUY5yrSkf9JJkxLEcgEm+0HB4px4wuwyNLGdXiyIEWR8a2OHK4xZHxLY4c0+LI
- 6BZHjmhx4kb5QyP8mBFxeDQsY1pKGW4pY0fZwyNsxr6iJug428Osqe8BnijQxqkfLRK0kp/p9xjqoy+D
- dFjMzHgvz2FRM32FjcOiZnqt7bComX4fOyxopr4pd6Ic258TxikbRwhwER+m/AntIKX/SO2vdoxrms5n
- n74lD5P55Et7Qs2+zLM1re7DJAOxzpOnkpjxsCIUR1caFaPwYpJQLHoxcemQnVclwYrBOHshqjeIddQM
- xGN0NmHFUJzIcoDVZdaXOI9MIUEoBmNSF+BDEcjViwOH3Hp8y5dresjOeFUOcQxGiqvDTorBONk+Mkq2
- HxEjSeU6Oo6WDMaKq11OisE4TVOUCRkZ66gZiBdbk8kxNZmMr8nkmJpMf0mXzTeIddIMxeMMGTHJUCzy
- 42HQMCYK4yFxwDMYkdyhhhVOHPb7RoH3jJqPKtG8NMbYytXHIX/zY9h6k/bt5HdO4Lei0jxLJX0U22Og
- j9zQ9pjja9bwcGYXTNBz6inV9DtxKNxjoG+dMmzrFHTRexEGBxrJvYUeA33EXsERQlzk1t8EYSd9fj8w
- qx+308bQLhvd54wGyCJBK71KNjjXSNyw2N+rWP3ltLSY3Ai6MOBmOQMuRvNpo46X+e4p+s4pYwcVcPcU
- 6jur/ruqTc1Dn4joMcen/mvTTDm2Z4Kl6l+MI1xRCxKNsyTFYV0zNUWAtGhmNNJD/VSq0fkr51EQaAhH
- UdUUda4YNISjMPIUNEBRmG83h99qbmeyynqyrTl5cCQR60expb65Y6OQt915IVlltawZl2zhkJ/9GubQ
- G9YRexsF9zVqP+x2jOCWc5uHItQrqS8hzR/p9p6FzIdswyjTmvJtnCkrdGen5oNyLfd0naZ8W2JsHEp1
- mixgPq5GaJakpJVIyX7PMBSFehgUJBgRIxHFc3QcLRmKRT6FCzSMiRL/k46WQLRjDz0mmwwHEInzFgX+
- TlnUm2QD749xdrWAd7OI2MUiuHtFxK4Vwd0qYnepGN6dgr8rRWg3Cu4uFPjuE6fN3jZi07RzB5k+Co7c
- UWBxmj0T6ZO+AA9E4J5O/Bg8mVh/yk+aUIpwO5mBPia/ixnqYTbr+XJRkJ0dBxnp+4yhuwc+xuwU8hje
- ISRuV8KhHQmjdiMc2ImQuwshvgOh3lyEXWh3gVK74xfbHV5ud80kTbr5F815whyfUUOQ58kcNmAmH//j
- wgNu8mFAkMCNQWvivPUH6o7ONvQnFD0G+shPKHrM8TVL/I/r2uldYh9H/RFu1Mu/ZPhqqcs3/BUb+7SS
- ItlW5S5ZHbZbYl3i0a69WSDWTnLTxAboOsm7nEI7nLJ2N0V2NuUe+YSf9sTaJxXZI7WbUWJMXlukY+2e
- xjZL5khSE3Sc7WoPTptmkYiV0abZKOSN2Hd2eM/Z6P1mR+w1y91tAN9jQEb0/mWw9y+5/XSJ99Mlu58u
- A/105u696M69UfvvDey7F7Uj8MBuwNydgPFdgMk7AAO7/7J2/kV2/e3vrs2B2BG1UdRLb+8c1jUb2UXu
- PLtwyE3uPnv0kJ3cgQYNXpT9vqz0vhOnWQ5iDI93IrDGQshI6PhnalfG4FxjsxCK3rAbnGNkrCcCVxIx
- 3tcC39I6vltF3eDD4HBjt/eZrNWt98jVWxI71vN7znq0nvJsvFUSFug5GfPZPYXZGHPaHhxyE+e1PTjk
- 5sxtwwY0Cnl+22V7c3qRJb9P76bzyW1zhuxYq8vZxtmDgufTxYKiO0GIK7m7ZukUZxhXWVKrMU6yUkPt
- Q/FTrzGpxU5V4+n4c76DknCsn1VZPKoK7zGThK7tsAmIus7LleoDJtX5O3Icgw2azyPM50HzRYT5Imh+
- H2F+HzT/EmH+JWi+jDBfhsxXfPFVyPsb3/tbyJu+8MXpS8i82vPNq33QHHHNq+A1ryPM66B5k/HNmyxo
- jrjmTfCaZcQ1y9A1v+x2/CpUw2H3eYz7fMAddeHnQ1ced+lD134RZb8YsL+Psr8fsP8SZf9lwH4ZZb8M
- 26OSfSDVoxJ9IM2jknwgxaMSfCC9P8S4P4Tdv8a4fw27r2LcV2H3bzFuqAfRHOCous3tm/+brBLr+riq
- hRwrJANiN++AxkX0FUCcukp3+nFaIcj+HgW83YijEvWhKshqi8btsk7HT9KAcMhd7vnq0uzdCXl+cfW4
- 3snsOVH/SL6PXlIFoEFvIop18nIeoe8MSJSNWLPcikOMYr1qQq7ycvxDYNyARVGf7+Rj8vILL8QJH/Jf
- xfmvEP/3zZYlVpxlvLj8wC2HLhr00sshYkCi0MqhxSFGbjlEDFgUTjmE8CH/VZz/CvHTyqHFWcZkXVdN
- +0R4Bupgtu/pZ7JerfUPqF73NUVpk761rt5fHD9t81ZS9YDCi6NKJuPKO8qzdWWRYTRI38ozIrZ2l4s2
- UYjFwKdB+zHJeXaDtu1FyS9tLguZI0scKgFiMUqdyQFGbprg6RFRTiAeicAsKxBvRegqwKc6XeXiA+kA
- IJjG7VHyIbfq6L8+j39ChfFQhO6j5KmsCsLzDYS3IhRZor7EKOY2CDnpBd0GDacszvUrnd0D3SQXxeP4
- 7YNg2rFvyiTdrEjKFnE8uoNAeYvaggAXqcSaEOCqBOmoPZcDjDJ9pus05LvKjc4b0rIJAHW8j0KV9zTP
- /habZsFGXSbjDyLFDV4UvfF1ma2Fquhysa7LihjD44EI20zkm2Rf090nErB290RbBW3LqhmlE1ZeDIqc
- mJlsF1Xpr5FimKDjrMS2eQCvK6NmBqmZaaCcazOgweLpZq0sBC9KBztuGVmW5GBZql/3grq9sAdCzmZ5
- bJKqfCpVPomKLncNTpRDvWbexRbZW1dCHJJduVEVpl4tqS+gomzKgvFGhKzs5jOl6mBSzz6Daduu/lSU
- iXwqD3kzHTh+wQVM23a9Z5G6E/SCPJ143WXoP6WbDel3hE12VP0hPaV6yrfptcbqv6m6DgN93CQHcMNf
- JKneTOGwStZlIWtSaQRY27zZJD/LavxuDCZjm6Rs39OppSr7yeq1FiQpgFv+VfaoGvZNlha6rFCvGaAt
- +7rcv5KlPWS5Nqp7zckpi7OM4mWv7gqCqgUsxzFlqT/S4myjfkdpVxb1Y7kT1Wsid2meU8wQb0V4TOsn
- UV0SnB1hWdTFV2nxKMg/3QZtp2yHD+quJVsd1PVWIk/r7Fnkr7p3QypBAG3Z/5Wuy1VGELaA5cjVaIxT
- ui3ONgopk/pJ3ZpGYZhT1KAAiUHNLoe0rLssz5sFT6usIA3LIDZgVv0e0gk8qMCJUWTqlkt+ZpvxI2eX
- s43lpj1VkVE+PBY0U3PP4jyjqiabIkOuunzYc3f9v3ftbcgPg3qwiOzU93g0ArVe8ljULMW6EnVUAFPh
- xcnlU7bVRzsy08jjkQiRAQL+3SGPaXQxhReH29/0WNDMuY9PnGc8nH9gX6vFOmZ1q63rF+rIGEBhL7XF
- MDnYqDsV8zkzLRCHH6l4R/UW72yLKoCs2tzkPOO63K3SX4i6FoJdVxzXFeBi5IbJeUadpkSZRkAPo5Pt
- op6XXCkdGc/EKSF+6ShVmSmaF3V1F7lcPWflQaoessowvcltTcmZQZcduWhmmPralhLJZS3zvvxJy7UW
- sByVnmvhjY1c1Pd27XDzHarYZG2z2BzWQiXNmuTsKcymB3v7POVqT7jjl9nfjLQ1MNvX9T7IQpMDjMf0
- bv5B9lo0ZOddLnC1cp3WNa3UHxHb00yDk6/LxBxfzR5NeaxnlrUau60ZV2ujnpcjBEw/qivdJan1eVWU
- St8GXSe9Ne8h2HXFcV0BLnprbnGekdpanhjPRM7RI+OaXthZ+oLmKaPXD/f4rTaRnHoAbdkP3AmMAz57
- ceAOpg74SOoneVL4JzAr3KSuTpN+gpxi9GnDXuqnv1Lmut7ctk9On3bpWrUT6cXl6HcxBjThePGhRka5
- HP8OFW7oo6wvsmSyuDtPPs6WyWKpFWP1AAp4Z3fL6e/TOVnacYDx/uN/T6+XZGGLGb7Vqhni6VnsYvRa
- aJvybYe1vEhWgqrrMMBXb9+zhB0HGq8YtivbpFdd6L8mhN1MXc40NickkfPCpHwbOS8sDPCR88LmQOMV
- w2bmxVOq/nfRHOf6ev7+3WVS7gk5AtIhuxTj22mYNux6oV3ZrLpb53o8LQq9wGZ0S4PxfYSNvvmvr/WW
- ETfTxfV89rCc3d+N9cO0Y+fVnZtQ3dl/+OWBqz2SkPX+/nY6uaM7Ww4wTu++fpnOJ8vpDVnao4C3245k
- 9r/Tm+Vs/E4mGI9HYKayRQP22eSSaT6RkJXWom7QFvX0yd3X21uyTkOAi9Y6b7DWuf/gejll310mDLgf
- 1N+Xk4+39JJ1IkNW5kU7PBBhMf3n1+nd9TSZ3H0j600YdC+Z2iViXH44Z6bEiYSsnAoBqQWW3x4YLgUB
- rq93sz+n8wW7TnF4KMLymvXjOw40frriXu4JBbx/zhYz/n1g0Y796/KzApffVKX26b5rpEkBIAEW44/p
- t9kNz96gjvdQlw/t0Sd/jH+bxSdt68fJYnadXN/fqeSaqPqDlBoebLuvp/Pl7NPsWrXSD/e3s+vZlGQH
- cMc/v01uZotl8nBPvXIHtb03n/dple4kRXhkYFNCWMbpco5xNlft3f38G/3mcFDXu3i4nXxbTv9a0pwn
- zPN1iUvUdRRmI21NB6COdzHh3VIWGHCSM96FQ+7xW4VDrG8+rPJszUiII+cZiaeK2RRmYySpQaJWcmL2
- oO9czH6n2hTieRjV0BGyXdNrxlWdINf1oCOIWlSSpus5z8i6CU0ON1LLi8sGzLQy46Cul3GznCDERf/p
- 6J3Sf0T90dh9Mr2ZPUzmy2/UCt3kHONfy+ndzfRG956Sr4vJ7zSvR9t2zt6oG3RvVPeTBVfp9F1mi8VX
- RTDbX5+27XfT5eJ68jBNFg9/TK4pZpvErTOudOY475cz1YGcfiL5jpDtul9+ns6p2X6CbNfDH9eL8U9i
- egKyUG/vngJttBv7BPmuX6meXwEH58f9Cv+2K35jAOBhPz0RrwKtQvO5ntj5s6mV9JiTrLfxQT8rhXzF
- cBxGSnkGKArr+pEr5lyjd1V67PqNnHUnCrL98+vklmc8ko6V3PWA+h28TgfW42B1N5C+Bq9/ifUuI6qT
- UE3CrkQC9QdnSIeM5+bcsfIcHyvPY8bK8/BYeR4xVp4Hx8pz5lh5jo6VzU84yWCyATM9EQzU8yYPi0Wi
- uuKTLwui1iABK7kumiNzBnP2nME8MGcw584ZzPE5g68L1VdsOp8UYU/ZNn3OA8Wjv+8bksn/a+38mhy1
- sSj+vt9k36bp9E7ymNQmqamdSnbdnandJwob3KbaBgbh7p759CsJ2+jPvTLn4jeX4fwuCF0hJDj6/Puf
- K5Qzqija09Pq0y9/Pf2KE89KivrXf3HeX/8lSGa0WYQ7CymmvtPiPC2iWKvPOGr1mSbBPUlPyDDBHHN1
- DBHLL0dG8Ozj/SP4FoevTFEf5dhHgos+bV5EDCv/9Y+n1f9ExFFKcPGG2pERvNWv/4FhWkOTZDX8LGSY
- khp+0jFEQQ0fZSTvy5//wl6lcXUEERwwPmsI0pef8dZLawiS5BrQ5S8oe6/cd+NKtflpqm5bzF9pldL6
- 5PbQHYfKrl7fFWVZlbmxvDm/jovESZOcqKrIre/QoZr/eYgn8lnjCQLGi55oYlWb/PffTh+y6+OfSwtk
- NK9c7yU8LaN522pfHcx39xLqRZxij8suI9Y1KUYq0uG4l4fQ4hR7/C5Njh/1qQjqay/Ha3GKbT4nWHYF
- zgQ6ivl6Ou/6yqSuJIarpyMIry17Vc1LtOtCVUKo1abIw2YnR2sxz15QzI48wbdP0MtOwWVEkZpaDWbd
- zE1bVuZbwn3RG/cetHJymCieqg/d3i4Dm7/rm0vbl3VTDOiVZyhctIVtH0NJRxNmOcngIj337bEbrTSP
- /auwEANIOpa6RSx1LZZ1OhlkIUYtS1Z5YVq4rWnkvgkjeIxEpLZZUlYOgIthLSOtS5ssxKRPR0B8PDh9
- OoKpErq2L7swJCoZV+XV12OxXxDuRPCiFFvz6+QtVjRwDFJPRRi/18bJo44i6oI7h8Wxjthno48FrsYj
- revn5mjbRdtAArxAyVDHO5cIO0o97oKbXPLOdn4me/vj598QpiPzeOPNBns4umgIElrfHRVBE922k/fq
- cWNTPcNAraFIup02lsn5oVAvONNVE3TAbNnVECS4uXBlFO+4xmHHNUEav7DWmQTzLkqGKqo3ZL/L9JDc
- lDSezSieZVyNBLdMPMSLtSvUzpyv7WfkXfbwj/z9UJ6+Cs+VejsCMa/DUrHvf/zhvLv5uSw2AZsZ++Eu
- s7vnZV9shw8fb3IMIZQ8ltNzU3Dsgvg0aG5Mc6zyc08DvWMQDlSw4xOXDpM+jLFLAlBj8RU2/FDOIbw4
- nRloBftKF41Psr1h07ogH8tHQoJpb6vHxpR/XylVlTA8IhBRzNCFZNCaBTAx4JY1lCa56LgWqb8WAauH
- NCAdA89SDnEljh2rWhTGEuZEWV5w7Mja+UkU7G+5MpI3nBuO6b6uBHwKQ8QT9J98oc8cr7+gVDyhxzRe
- eq3tQtseNJzKpN6LcLrS2MPRJKJY9kEHXXaDkVN80QNTpGXJuNUjC6Bi1M3rh0UxAgAZQ0Er5URCiul7
- DuNoX09FwB5YJxHFgmfQPB1FhNPa05FE6PFyElEsQVMWKBnqkkvOeJ8yO5iKLW81WJQfdxw7VcX2NLyJ
- BAq1PnkcM12e5ClOIuJNinIe0T0K81JC2eavVV9vvwm7szwjjKTq5yZ/q4eduaNtxiXJXpr2rcmLRr1V
- vSDwLKR7HONc4HfzwF+8vmcXT1HgWZJFMHFQx2hSzLChRtfXMUTd41p2xC4gEcN4Xy6KcQYwMcauHtQx
- otTX6PCTfAKSjFW2R2B9PhbAxDjX4QdRgIv6Cv3jIjqXX4tqElGLyuzh4e4nwbRQKIyZ+PBJKJyY27o4
- zVOfwpbvyJsvjDzNV7pzP3+1Up4wRTE2dc92cE63pXPBnohiWeM7nGZlFM+smIzjjIqiKaWqexxnZQFP
- H+8Al9xZRLHwkptkFA8uuYuKouElN8l8nh2lBQvurCFIcLFNKoKGFtpFRLDgIptUE233Um7xxstXTbQ6
- Kxb4T9LqgC7zXySkBBd0Ggx1BBFzBwxkBA9zTwpkLm8jdfIkpAQXLskNW5LlohpVXqlRpbwcylQ5lEJH
- 01hJUTFH01BHECUZVaYyqlzkaMrp+QjCUmYcTS/bYUfTWElR0ewoU9mBOpp6IoKFtlkl12aVckdTUkyw
- YUfTWJmiCg+adTS97CFxNCXFJPtJiH1iiLCjaaykqJIGgWkFEEdTT0SwhI6mnJ6KgDmahjqSiDqaElKC
- K3I0pdUBfYmjKQvgYkCOpoTU54q9R0mxz17gPcrIA77Me5SQ+lzUe9TV0CTki8lQFxBl3qOENOTC3qOB
- LOKB3me+iqNBX2UT0oAr8VOJhAkmfOF5P5V48/yPZyltTEb9VEJdRAQ/T/dVHE1QpKSPSLANLkzKR+S8
- Cfho25FEHEEzFHuPmr9h71FPFLJw79FQFxFFSUh7j4Zb0PrCe49GW7E6w3qPjhsFyUJ4j3p/46fOZorE
- ezTUBUSB92ioC4hi71Fa7dMl3qOhjic+SpFB30XuPUqrfbrMezRW8tRPUuingIl6j3oinwV7j3oin4V5
- j04KioKmN+U96vyPJTbhPXr++yPK+UgwJCf3kT43x93zU7NtJWQCcT0OXqAxIRll4ZlcPYtlZ3D16Ju6
- XHoGJ8T1OMvOZCQQUWS+sIz8Kl9UWilfWG4nQWklfGGnfUTHzxyx5Bijo4J9YX0VRUN9YWNlQIW7hVSf
- UNYh5HqDoq4g0w+U9f25nv+CxjHVLoqbxERrKHncZp61V9JxjBU/jrFaMo6xSo9jrBaMY6yS4xgr4TjG
- ih3HkPrCUtoEGS8E0hf2tFHgCxsrCSrcFq2Y8ZyVeDxnlRjPWUnHc1b8eA7uC+urfBriC3vePyZgvrC+
- iqKhvrCxkqLON3J1NQQJ9YWNhBQT8IX1RBRr9RlHrT7TJLgnyfjCepvAHKN9Yb0tWH6RvrDehmGtRECt
- I4iw02ysTFEf5dhHgouOLRBOs97fmNMsISW4eNNPOs1eNgBOs66GJslyJnaa9TZJciZymvW2CHImdJp1
- NkBOs6GOIILTA7HT7OVfwGnW1RAkyTWgy19Q9mS5S9qpqI3qK3HDF0hprqk1Qu5JSnOFzIDXmqkQvJPu
- yVyekr/3p1Lv/SnhG26KfcNNLXmLTKXfIhtkb7wN3Btvr8IZj1d2xuNVOuPxys14vNhPNv6N+Sp4Iof1
- S9vXzbPeUz8MPH7th6e32W0PpU2TP893E2HkDv/PrmrM5qpQbfM4mL3/WQzF7ACMnovwpdgf538FTGnT
- ZKRsaPnEP5Q/5Ot9u3nJS31G5pO8ara3AaV1yQ+nrYU6iOi0forQjgtWoi1lIJt43ctG3WV5PVR9MdRt
- o/Jis6m6oQA+2Usxokjmo4rn+RfTV0W0bl3lVbPpv3WYmSYj9/kf7ReO5kPdqrQXA6FH4pDdFb2q8l1V
- APUjVvrUH+0ZlZU9IwTqCR3mYT20L1Vj3M/vdM2sm9kfpRJSjrvZ11Uz2GuMW2zMQHFxdfHVr9W0s9Kn
- Xw2ywDSLi6yrssmVCrHh5wl8lCHf2Q/LzbfkugGXhgowXLxaqWPV3+Q6kigubq8zQRbGKDmqSV0Z1Sg5
- 6rFZkEUnMc3O5PmZ5UnuzfIzQ/Izu2F+ZlB+ZovzM5uRn9lt8jObm5/Z7fIzQ/IzE+dnlsjPTJyfWSI/
- syX5mSXys1OD9P45STnubfKTR3Fxb5SfCRYXeVF+RgQ+ytL8pDFcvNvkJ4/i4ory86LkqKL8vCg5qjQ/
- XbHDbvff8tVXxH3CkUwcY3dnrvCLDmF9mtbH7bYyz8z68cI8Bs0+4OskJ6pkZaieXhmqvyzydPJeBDKL
- 0vpk/bMwdgbdOEmfD/o0lT7LAxKChdCxrMFSX7xJQpy1HPl7JaN+r3xi3bwW+7oEW7JY6VNhuwNPFLCW
- XLErVyraLPLxuk7yo9prKw0UiX32AjsyRk7ydc1cGiNEeHG+53cfsh/y52LYVf2D9QoDQhBqim6ctmTk
- s5KiNvriZ31VCtGenOLrbZnZScj35BRfbYphkBe6Jyf5X3sp+qScqCqrRbMhoY4gSmZDSLHD3hV34mFf
- UuyxjSXXAjol9/jG630Bn5I7/BfdTaxm39ROu3v6ptINynG/Bxhnic+Zv1bFuLen7toOUOu9QzVaDmcJ
- ydFPhQKUVvm0o9ohGL27p381MyAAwO4/EV51Wklm/UIdT3yUIh95JlD0hNTh3ueF6RnVs3vwk8Kn7AeE
- sB889XrTNgrQ2/09wkY/uCAEu79P6Pem21kCCy75qogG5PqkiCi9necDQaMoZJUYxb/CZbXXLav+G4Bc
- NB6peh/ylyOAGQUeQ7ckaqc7duABuTKPV5cdgNF7++pm2yJyvXug39Vr42HXfIMOw5F5PJOgR1U8IzX5
- ovFITXEwdv+N0s8eZtk6ABhKfa7K6+Ih39cKaTccVUDbAAs/XgQeo92ozszs6hqCXANXFvOa1o4coLyT
- zOPpBqvefBNei1hMsQ9F19XNswB8VnpUBaaFivJCwfcmFd2b2q7fCiaQQh1JXDQ0fY1DRlw2KH0VRMaU
- DEczcpK/aGD4GoeMiAwJBzKShwwGBzKSBw4Dx8qQik/QhDqSeIP6P2dextnzFvV/1oyMs6u8/ifmYpwd
- blD/58yKOHvi9Z+YD3E24PWfmAkJNoyrB3R9224vy8Dgc1UQlDwWUS7S8zGvXVGpfLPenN/Kmg0NhRFz
- 6O+zy7tediREgXCCEEYB37zyRCFLVALM2ZslRE5hoBylxBT7XCoitiOe2O9CK/t31sn+tOW5QpZW8EQU
- y7QjthlBlz1JIKg43V13Z1ZG6TI8wKRNku8XkO9J8r1ds7PQXXVBgbtqij62TsYlHWdP2jQZWmSQBcyI
- YVYYWBzHQK7EUodiv0cXHbxOIqPOX2XKE1GsoYVu+ZEwYsJTpO/sahanLWoDrv0V6gjief2yQVA9ArVD
- f/jw05d7+3ayHekd20pl3/CfHSPB8CPlZf1shpNs36LYP7e97l8ckDg0gY5ymtxE3gRn5AG/681CNHaq
- Wakc8+BjAUEM+xrF8G7bU4XRfSnBNUFNazq8w9xJ6nPNKHVW53WH3E4DXUQc74M63K56B6GuNOLa24gZ
- Jq0aVQND6Yw85rfNdhzPO5g1Sys4QKiPIuizghfbI6QRd9+2Lyrf1y9VXjbKHgOIJwh//9v/AXNDsFL5
- zwQA
+ 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
EOF
# PrivacyInfo.xcprivacy is not part of BoringSSL repo, inject it during pod installation
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index d0112f06277..1b68ac8336b 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -1097,7 +1097,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c',
'third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c',
'third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c',
- 'third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c',
+ 'third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c',
'third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c',
'third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c',
'third_party/boringssl-with-bazel/src/crypto/mem.c',
@@ -1134,6 +1134,13 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c',
'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c',
'third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/address.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/fors.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/merkle.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/spx.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/thash.c',
+ 'third_party/boringssl-with-bazel/src/crypto/spx/wots.c',
'third_party/boringssl-with-bazel/src/crypto/stack/stack.c',
'third_party/boringssl-with-bazel/src/crypto/thread.c',
'third_party/boringssl-with-bazel/src/crypto/thread_none.c',
@@ -1157,6 +1164,29 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/x509/t_req.c',
'third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c',
'third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x509.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c',
@@ -1181,9 +1211,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509/x_info.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_name.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_req.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c',
@@ -1191,29 +1219,6 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/x509/x_val.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c',
- 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c',
'third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc',
'third_party/boringssl-with-bazel/src/ssl/d1_both.cc',
'third_party/boringssl-with-bazel/src/ssl/d1_lib.cc',
@@ -1412,17 +1417,6 @@ ASM_SOURCE_FILES = {
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha512-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/vpaes-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/test/trampoline-armv8-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/chacha/chacha-armv4-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/aesv8-armv7-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/armv4-mont-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/bsaes-armv7-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/ghash-armv4-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/ghashv8-armv7-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha1-armv4-large-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha256-armv4-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha512-armv4-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/vpaes-armv7-apple.S',
- 'third_party/boringssl-with-bazel/apple-arm/crypto/test/trampoline-armv4-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/chacha/chacha-x86-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/aesni-x86-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/bn-586-apple.S',
@@ -1518,6 +1512,8 @@ ASM_SOURCE_FILES = {
'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm_asm.S',
'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_mul.S',
'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_square.S',
+ 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_p256_adx_mul.S',
+ 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_p256_adx_sqr.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/chacha/chacha-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-armv8-win.S',
diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template
index f32b3cd382b..2a20a9c5a94 100644
--- a/templates/gRPC-Core.podspec.template
+++ b/templates/gRPC-Core.podspec.template
@@ -198,7 +198,7 @@
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
ss.dependency "#{s.name}/Privacy", version
- ss.dependency 'BoringSSL-GRPC', '0.0.31'
+ ss.dependency 'BoringSSL-GRPC', '0.0.32'
% for abseil_spec in grpc_abseil_specs:
ss.dependency '${abseil_spec}', abseil_version
% endfor
diff --git a/templates/src/objective-c/BoringSSL-GRPC.podspec.template b/templates/src/objective-c/BoringSSL-GRPC.podspec.template
index 8c5913e9a8d..b770f9f6cc1 100644
--- a/templates/src/objective-c/BoringSSL-GRPC.podspec.template
+++ b/templates/src/objective-c/BoringSSL-GRPC.podspec.template
@@ -70,7 +70,7 @@
Pod::Spec.new do |s|
s.name = 'BoringSSL-GRPC'
- version = '0.0.31'
+ version = '0.0.32'
s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.'
# Adapted from the homepage:
diff --git a/third_party/boringssl-with-bazel b/third_party/boringssl-with-bazel
index 2ff4b968a7e..ae72a4514c7 160000
--- a/third_party/boringssl-with-bazel
+++ b/third_party/boringssl-with-bazel
@@ -1 +1 @@
-Subproject commit 2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b
+Subproject commit ae72a4514c7afd150596b0a80947f3ca9b8363b5
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index c5c7243d233..b479143387d 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -138,27 +138,16 @@ class BuildExt(build_ext.build_ext):
EXTRA_ENV_COMPILE_ARGS = os.environ.get("GRPC_PYTHON_CFLAGS", None)
EXTRA_ENV_LINK_ARGS = os.environ.get("GRPC_PYTHON_LDFLAGS", None)
if EXTRA_ENV_COMPILE_ARGS is None:
- EXTRA_ENV_COMPILE_ARGS = "-std=c++14"
+ EXTRA_ENV_COMPILE_ARGS = ""
if "win32" in sys.platform:
- if sys.version_info < (3, 5):
- # We use define flags here and don't directly add to DEFINE_MACROS below to
- # ensure that the expert user/builder has a way of turning it off (via the
- # envvars) without adding yet more GRPC-specific envvars.
- # See https://sourceforge.net/p/mingw-w64/bugs/363/
- if "32" in platform.architecture()[0]:
- EXTRA_ENV_COMPILE_ARGS += (
- " -D_ftime=_ftime32 -D_timeb=__timeb32"
- " -D_ftime_s=_ftime32_s -D_hypot=hypot"
- )
- else:
- EXTRA_ENV_COMPILE_ARGS += (
- " -D_ftime=_ftime64 -D_timeb=__timeb64 -D_hypot=hypot"
- )
- else:
- # We need to statically link the C++ Runtime, only the C runtime is
- # available dynamically
- EXTRA_ENV_COMPILE_ARGS += " /MT"
+ # MSVC by defaults uses C++14 so C11 needs to be specified.
+ EXTRA_ENV_COMPILE_ARGS += " /std:c11"
+ # We need to statically link the C++ Runtime, only the C runtime is
+ # available dynamically
+ EXTRA_ENV_COMPILE_ARGS += " /MT"
elif "linux" in sys.platform or "darwin" in sys.platform:
+ # GCC & Clang by defaults uses C17 so only C++14 needs to be specified.
+ EXTRA_ENV_COMPILE_ARGS += " -std=c++14"
EXTRA_ENV_COMPILE_ARGS += " -fno-wrapv -frtti"
if EXTRA_ENV_LINK_ARGS is None:
EXTRA_ENV_LINK_ARGS = ""
diff --git a/tools/internal_ci/macos/grpc_distribtests_python.sh b/tools/internal_ci/macos/grpc_distribtests_python.sh
index ded41b34591..f1a238e4442 100644
--- a/tools/internal_ci/macos/grpc_distribtests_python.sh
+++ b/tools/internal_ci/macos/grpc_distribtests_python.sh
@@ -34,7 +34,7 @@ python3.11 -m pip install -U 'cython<3.0.0rc1' setuptools==65.4.1 wheel --user
python3.12 -m pip install -U 'cython<3.0.0rc1' setuptools==65.4.1 wheel --user
# Build all python macos artifacts (this step actually builds all the binary wheels and source archives)
-tools/run_tests/task_runner.py -f artifact macos python ${TASK_RUNNER_EXTRA_FILTERS} -j 4 -x build_artifacts/sponge_log.xml || FAILED="true"
+tools/run_tests/task_runner.py -f artifact macos python ${TASK_RUNNER_EXTRA_FILTERS} -j 2 -x build_artifacts/sponge_log.xml || FAILED="true"
# the next step expects to find the artifacts from the previous step in the "input_artifacts" folder.
rm -rf input_artifacts
diff --git a/tools/run_tests/artifacts/artifact_targets.py b/tools/run_tests/artifacts/artifact_targets.py
index 5368a6e3ca0..0c95f5bfb08 100644
--- a/tools/run_tests/artifacts/artifact_targets.py
+++ b/tools/run_tests/artifacts/artifact_targets.py
@@ -462,16 +462,16 @@ def targets():
PythonArtifact("macos", "x64", "python3.8"),
PythonArtifact("macos", "x64", "python3.9"),
PythonArtifact("macos", "x64", "python3.10"),
- PythonArtifact("macos", "x64", "python3.11", presubmit=True),
+ PythonArtifact("macos", "x64", "python3.11"),
PythonArtifact("macos", "x64", "python3.12", presubmit=True),
PythonArtifact("windows", "x86", "Python37_32bit", presubmit=True),
- PythonArtifact("windows", "x86", "Python38_32bit", presubmit=True),
+ PythonArtifact("windows", "x86", "Python38_32bit"),
PythonArtifact("windows", "x86", "Python39_32bit"),
PythonArtifact("windows", "x86", "Python310_32bit"),
PythonArtifact("windows", "x86", "Python311_32bit"),
PythonArtifact("windows", "x86", "Python312_32bit", presubmit=True),
PythonArtifact("windows", "x64", "Python37", presubmit=True),
- PythonArtifact("windows", "x64", "Python38", presubmit=True),
+ PythonArtifact("windows", "x64", "Python38"),
PythonArtifact("windows", "x64", "Python39"),
PythonArtifact("windows", "x64", "Python310"),
PythonArtifact("windows", "x64", "Python311"),
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index f9a313b8c70..35a19807ae9 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -28,7 +28,7 @@ cat <"$want_submodules"
third_party/abseil-cpp 4a2c63365eff8823a5221db86ef490e828306f9d
third_party/benchmark 344117638c8ff7e239044fd0fa7085839fc03021
third_party/bloaty 60209eb1ccc34d5deefb002d1b7f37545204f7f2
-third_party/boringssl-with-bazel 2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b
+third_party/boringssl-with-bazel ae72a4514c7afd150596b0a80947f3ca9b8363b5
third_party/cares/cares 6360e96b5cf8e5980c887ce58ef727e53d77243a
third_party/envoy-api 78f198cf96ecdc7120ef640406770aa01af775c4
third_party/googleapis 2f9af297c84c55c8b871ba4495e01ade42476c92