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

debezium.mysql.name = debezium-mysql-example-01
debezium.mysql.databaseHostName = localhost
debezium.mysql.databaseServerId = 8445698
debezium.mysql.databaseUser = debezium
debezium.mysql.databasePassword = dbz
debezium.mysql.databaseServerName = debezium-connector-mysql-01
debezium.mysql.databaseHistoryFileName = dbhistory-01.data
debezium.mysql.databaseWhitelist = inventory
debezium.mysql.tableWhitelist = inventory.products
debezium.mysql.offsetStorageFileName = offset-01.data

eventhubs.connectionString = {{generated_connection_string}}

blob.containerName = {{created_container_name}}
blob.accountName = {{storage_account_name}}
blob.accessKey = {{generated_access_key}}
blob.blobName = {{blob_name}}