blob: 05c684fc834b3473d6fb5c10d1200bc282ba96d8 [file] [log] [blame]
load("//tools/build_defs:javac.bzl", "JAVACOPTS_OSS")
load("@build_bazel_rules_android//android:rules.bzl", "android_library")
licenses(["notice"])
package(default_visibility = ["//visibility:public"])
java_library(
name = "signature_config",
srcs = ["SignatureConfig.java"],
deps = [
":ecdsa_sign_key_manager",
":ecdsa_verify_key_manager",
":ed25519_private_key_manager",
":ed25519_public_key_manager",
":public_key_sign_wrapper",
":public_key_verify_wrapper",
":rsa_ssa_pkcs1_sign_key_manager",
":rsa_ssa_pkcs1_verify_key_manager",
":rsa_ssa_pss_sign_key_manager",
"//proto:config_java_proto",
],
)
java_library(
name = "sig_util",
srcs = ["SigUtil.java"],
deps = [
"//proto:common_java_proto",
"//proto:ecdsa_java_proto",
"//proto:rsa_ssa_pkcs1_java_proto",
"//proto:rsa_ssa_pss_java_proto",
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves",
"//src/main/java/com/google/crypto/tink/subtle:enums",
],
)
java_library(
name = "ecdsa_verify_key_manager",
srcs = ["EcdsaVerifyKeyManager.java"],
deps = [
":sig_util",
"//proto:ecdsa_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:key_type_manager",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink/subtle:ecdsa_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "signature_pem_keyset_reader",
srcs = ["SignaturePemKeysetReader.java"],
deps = [
":ecdsa_verify_key_manager",
":rsa_ssa_pkcs1_verify_key_manager",
":rsa_ssa_pss_verify_key_manager",
"//proto:common_java_proto",
"//proto:ecdsa_java_proto",
"//proto:rsa_ssa_pkcs1_java_proto",
"//proto:rsa_ssa_pss_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:keyset_reader",
"//src/main/java/com/google/crypto/tink/subtle:pem_key_type",
"//src/main/java/com/google/crypto/tink/subtle:random",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "rsa_ssa_pss_verify_key_manager",
srcs = ["RsaSsaPssVerifyKeyManager.java"],
deps = [
":sig_util",
"//proto:rsa_ssa_pss_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:key_type_manager",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pss_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:subtle_util_cluster",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "ecdsa_sign_key_manager",
srcs = ["EcdsaSignKeyManager.java"],
deps = [
":ecdsa_verify_key_manager",
":sig_util",
"//proto:common_java_proto",
"//proto:ecdsa_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:key_template",
"//src/main/java/com/google/crypto/tink:key_type_manager",
"//src/main/java/com/google/crypto/tink:private_key_type_manager",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster",
"//src/main/java/com/google/crypto/tink/subtle:ecdsa_sign_jce",
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "public_key_sign_wrapper",
srcs = ["PublicKeySignWrapper.java"],
deps = [
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:crypto_format",
"//src/main/java/com/google/crypto/tink:primitive_set",
"//src/main/java/com/google/crypto/tink:primitive_wrapper",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster",
"//src/main/java/com/google/crypto/tink/subtle:bytes",
],
)
java_library(
name = "public_key_verify_config",
srcs = ["PublicKeyVerifyConfig.java"],
deps = [
":signature_config",
"//src/main/java/com/google/crypto/tink:config",
],
)
java_library(
name = "signature_key_templates",
srcs = ["SignatureKeyTemplates.java"],
deps = [
":ecdsa_sign_key_manager",
":ed25519_private_key_manager",
":rsa_ssa_pkcs1_sign_key_manager",
":rsa_ssa_pss_sign_key_manager",
"//proto:common_java_proto",
"//proto:ecdsa_java_proto",
"//proto:rsa_ssa_pkcs1_java_proto",
"//proto:rsa_ssa_pss_java_proto",
"//proto:tink_java_proto",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "rsa_ssa_pkcs1_sign_key_manager",
srcs = ["RsaSsaPkcs1SignKeyManager.java"],
deps = [
":rsa_ssa_pkcs1_verify_key_manager",
":sig_util",
"//proto:common_java_proto",
"//proto:rsa_ssa_pkcs1_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:key_template",
"//src/main/java/com/google/crypto/tink:key_type_manager",
"//src/main/java/com/google/crypto/tink:private_key_type_manager",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pkcs1_sign_jce",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pkcs1_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:subtle_util_cluster",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "public_key_sign_factory",
srcs = ["PublicKeySignFactory.java"],
deps = [
":public_key_sign_wrapper",
"//src/main/java/com/google/crypto/tink:key_manager",
"//src/main/java/com/google/crypto/tink:primitive_set",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster",
],
)
java_library(
name = "public_key_sign_config",
srcs = ["PublicKeySignConfig.java"],
deps = [
":signature_config",
"//src/main/java/com/google/crypto/tink:config",
],
)
java_library(
name = "public_key_verify_wrapper",
srcs = ["PublicKeyVerifyWrapper.java"],
deps = [
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:crypto_format",
"//src/main/java/com/google/crypto/tink:primitive_set",
"//src/main/java/com/google/crypto/tink:primitive_wrapper",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink:registry_cluster",
"//src/main/java/com/google/crypto/tink/subtle:bytes",
],
)
java_library(
name = "rsa_ssa_pss_sign_key_manager",
srcs = ["RsaSsaPssSignKeyManager.java"],
deps = [
":rsa_ssa_pss_verify_key_manager",
":sig_util",
"//proto:common_java_proto",
"//proto:rsa_ssa_pss_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:key_template",
"//src/main/java/com/google/crypto/tink:key_type_manager",
"//src/main/java/com/google/crypto/tink:private_key_type_manager",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pss_sign_jce",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pss_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:subtle_util_cluster",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "ed25519_private_key_manager",
srcs = ["Ed25519PrivateKeyManager.java"],
deps = [
":ed25519_public_key_manager",
"//proto:ed25519_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:key_template",
"//src/main/java/com/google/crypto/tink:key_type_manager",
"//src/main/java/com/google/crypto/tink:private_key_type_manager",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster",
"//src/main/java/com/google/crypto/tink/subtle:ed25519_sign",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "rsa_ssa_pkcs1_verify_key_manager",
srcs = ["RsaSsaPkcs1VerifyKeyManager.java"],
deps = [
":sig_util",
"//proto:rsa_ssa_pkcs1_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:key_type_manager",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pkcs1_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:subtle_util_cluster",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "public_key_verify_factory",
srcs = ["PublicKeyVerifyFactory.java"],
deps = [
":public_key_verify_wrapper",
"//src/main/java/com/google/crypto/tink:key_manager",
"//src/main/java/com/google/crypto/tink:primitive_set",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink:registry_cluster",
],
)
java_library(
name = "ed25519_public_key_manager",
srcs = ["Ed25519PublicKeyManager.java"],
deps = [
"//proto:ed25519_java_proto",
"//proto:tink_java_proto",
"//src/main/java/com/google/crypto/tink:key_type_manager",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink/subtle:ed25519_verify",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
# Android packages
android_library(
name = "signature_config-android",
srcs = ["SignatureConfig.java"],
deps = [
":ecdsa_sign_key_manager-android",
":ecdsa_verify_key_manager-android",
":ed25519_private_key_manager-android",
":ed25519_public_key_manager-android",
":public_key_sign_wrapper-android",
":public_key_verify_wrapper-android",
":rsa_ssa_pkcs1_sign_key_manager-android",
":rsa_ssa_pkcs1_verify_key_manager-android",
":rsa_ssa_pss_sign_key_manager-android",
"//proto:config_java_proto_lite",
],
)
android_library(
name = "sig_util-android",
srcs = ["SigUtil.java"],
deps = [
"//proto:common_java_proto_lite",
"//proto:ecdsa_java_proto_lite",
"//proto:rsa_ssa_pkcs1_java_proto_lite",
"//proto:rsa_ssa_pss_java_proto_lite",
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves",
"//src/main/java/com/google/crypto/tink/subtle:enums",
],
)
android_library(
name = "ecdsa_verify_key_manager-android",
srcs = ["EcdsaVerifyKeyManager.java"],
deps = [
":sig_util-android",
"//proto:ecdsa_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:key_type_manager-android",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink/subtle:ecdsa_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "signature_pem_keyset_reader-android",
srcs = ["SignaturePemKeysetReader.java"],
deps = [
":ecdsa_verify_key_manager-android",
":rsa_ssa_pkcs1_verify_key_manager-android",
":rsa_ssa_pss_verify_key_manager-android",
"//proto:common_java_proto_lite",
"//proto:ecdsa_java_proto_lite",
"//proto:rsa_ssa_pkcs1_java_proto_lite",
"//proto:rsa_ssa_pss_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:keyset_reader-android",
"//src/main/java/com/google/crypto/tink/subtle:pem_key_type",
"//src/main/java/com/google/crypto/tink/subtle:random",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "rsa_ssa_pss_verify_key_manager-android",
srcs = ["RsaSsaPssVerifyKeyManager.java"],
deps = [
":sig_util-android",
"//proto:rsa_ssa_pss_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:key_type_manager-android",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pss_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:subtle_util_cluster",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "ecdsa_sign_key_manager-android",
srcs = ["EcdsaSignKeyManager.java"],
deps = [
":ecdsa_verify_key_manager-android",
":sig_util-android",
"//proto:common_java_proto_lite",
"//proto:ecdsa_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:key_template-android",
"//src/main/java/com/google/crypto/tink:key_type_manager-android",
"//src/main/java/com/google/crypto/tink:private_key_type_manager-android",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster-android",
"//src/main/java/com/google/crypto/tink/subtle:ecdsa_sign_jce",
"//src/main/java/com/google/crypto/tink/subtle:elliptic_curves",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "public_key_sign_wrapper-android",
srcs = ["PublicKeySignWrapper.java"],
deps = [
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:crypto_format-android",
"//src/main/java/com/google/crypto/tink:primitive_set-android",
"//src/main/java/com/google/crypto/tink:primitive_wrapper-android",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster-android",
"//src/main/java/com/google/crypto/tink/subtle:bytes",
],
)
android_library(
name = "public_key_verify_config-android",
srcs = ["PublicKeyVerifyConfig.java"],
deps = [
":signature_config-android",
"//src/main/java/com/google/crypto/tink:config-android",
],
)
android_library(
name = "signature_key_templates-android",
srcs = ["SignatureKeyTemplates.java"],
deps = [
":ecdsa_sign_key_manager-android",
":ed25519_private_key_manager-android",
":rsa_ssa_pkcs1_sign_key_manager-android",
":rsa_ssa_pss_sign_key_manager-android",
"//proto:common_java_proto_lite",
"//proto:ecdsa_java_proto_lite",
"//proto:rsa_ssa_pkcs1_java_proto_lite",
"//proto:rsa_ssa_pss_java_proto_lite",
"//proto:tink_java_proto_lite",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "rsa_ssa_pkcs1_sign_key_manager-android",
srcs = ["RsaSsaPkcs1SignKeyManager.java"],
deps = [
":rsa_ssa_pkcs1_verify_key_manager-android",
":sig_util-android",
"//proto:common_java_proto_lite",
"//proto:rsa_ssa_pkcs1_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:key_template-android",
"//src/main/java/com/google/crypto/tink:key_type_manager-android",
"//src/main/java/com/google/crypto/tink:private_key_type_manager-android",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster-android",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pkcs1_sign_jce",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pkcs1_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:subtle_util_cluster",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "public_key_sign_factory-android",
srcs = ["PublicKeySignFactory.java"],
deps = [
":public_key_sign_wrapper-android",
"//src/main/java/com/google/crypto/tink:key_manager-android",
"//src/main/java/com/google/crypto/tink:primitive_set-android",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster-android",
],
)
android_library(
name = "public_key_sign_config-android",
srcs = ["PublicKeySignConfig.java"],
deps = [
":signature_config-android",
"//src/main/java/com/google/crypto/tink:config-android",
],
)
android_library(
name = "public_key_verify_wrapper-android",
srcs = ["PublicKeyVerifyWrapper.java"],
deps = [
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:crypto_format-android",
"//src/main/java/com/google/crypto/tink:primitive_set-android",
"//src/main/java/com/google/crypto/tink:primitive_wrapper-android",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink:registry_cluster-android",
"//src/main/java/com/google/crypto/tink/subtle:bytes",
],
)
android_library(
name = "rsa_ssa_pss_sign_key_manager-android",
srcs = ["RsaSsaPssSignKeyManager.java"],
deps = [
":rsa_ssa_pss_verify_key_manager-android",
":sig_util-android",
"//proto:common_java_proto_lite",
"//proto:rsa_ssa_pss_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:key_template-android",
"//src/main/java/com/google/crypto/tink:key_type_manager-android",
"//src/main/java/com/google/crypto/tink:private_key_type_manager-android",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster-android",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pss_sign_jce",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pss_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:subtle_util_cluster",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "ed25519_private_key_manager-android",
srcs = ["Ed25519PrivateKeyManager.java"],
deps = [
":ed25519_public_key_manager-android",
"//proto:ed25519_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:key_template-android",
"//src/main/java/com/google/crypto/tink:key_type_manager-android",
"//src/main/java/com/google/crypto/tink:private_key_type_manager-android",
"//src/main/java/com/google/crypto/tink:public_key_sign",
"//src/main/java/com/google/crypto/tink:registry_cluster-android",
"//src/main/java/com/google/crypto/tink/subtle:ed25519_sign",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "rsa_ssa_pkcs1_verify_key_manager-android",
srcs = ["RsaSsaPkcs1VerifyKeyManager.java"],
deps = [
":sig_util-android",
"//proto:rsa_ssa_pkcs1_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:key_type_manager-android",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink/subtle:rsa_ssa_pkcs1_verify_jce",
"//src/main/java/com/google/crypto/tink/subtle:subtle_util_cluster",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
android_library(
name = "public_key_verify_factory-android",
srcs = ["PublicKeyVerifyFactory.java"],
deps = [
":public_key_verify_wrapper-android",
"//src/main/java/com/google/crypto/tink:key_manager-android",
"//src/main/java/com/google/crypto/tink:primitive_set-android",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink:registry_cluster-android",
],
)
android_library(
name = "ed25519_public_key_manager-android",
srcs = ["Ed25519PublicKeyManager.java"],
deps = [
"//proto:ed25519_java_proto_lite",
"//proto:tink_java_proto_lite",
"//src/main/java/com/google/crypto/tink:key_type_manager-android",
"//src/main/java/com/google/crypto/tink:public_key_verify",
"//src/main/java/com/google/crypto/tink/subtle:ed25519_verify",
"//src/main/java/com/google/crypto/tink/subtle:validators",
"@com_google_protobuf//:protobuf_javalite",
],
)
# Deprecated, will be removed soon.
filegroup(
name = "srcs",
srcs = glob(
[
"*.java",
],
),
)
full_protos = [
"//proto:common_java_proto",
"//proto:config_java_proto",
"//proto:ecdsa_java_proto",
"//proto:ed25519_java_proto",
"//proto:empty_java_proto",
"//proto:rsa_ssa_pkcs1_java_proto",
"//proto:rsa_ssa_pss_java_proto",
"//proto:tink_java_proto",
]
lite_protos = [
"//proto:common_java_proto_lite",
"//proto:config_java_proto_lite",
"//proto:ecdsa_java_proto_lite",
"//proto:ed25519_java_proto_lite",
"//proto:empty_java_proto_lite",
"//proto:rsa_ssa_pkcs1_java_proto_lite",
"//proto:rsa_ssa_pss_java_proto_lite",
"//proto:tink_java_proto_lite",
]
java_library(
name = "signature",
srcs = [":srcs"],
javacopts = JAVACOPTS_OSS,
visibility = ["//visibility:public"],
deps = full_protos + [
"//src/main/java/com/google/crypto/tink",
"//src/main/java/com/google/crypto/tink/annotations",
"//src/main/java/com/google/crypto/tink/subtle",
"//src/main/java/com/google/crypto/tink/subtle:signature",
"@com_google_protobuf//:protobuf_javalite",
],
)
java_library(
name = "android",
srcs = [":srcs"],
javacopts = JAVACOPTS_OSS,
visibility = ["//visibility:public"],
deps = lite_protos + [
"//src/main/java/com/google/crypto/tink:android",
"//src/main/java/com/google/crypto/tink/annotations",
"//src/main/java/com/google/crypto/tink/subtle",
"//src/main/java/com/google/crypto/tink/subtle:signature",
"@com_google_protobuf//:protobuf_javalite",
],
)