We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Prefix is optional for 
I assume `True` here means that `Prefix` is mandatory:

```py
class S3DestinationConfiguration(AWSProperty):
    props = {
        'BucketARN': (basestring, True),
        'BufferingHints': (BufferingHints, True),
        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
        'CompressionFormat': (basestring, True),
        'EncryptionConfiguration': (EncryptionConfiguration, False),
        'Prefix': (basestring, True),
        'RoleARN': (basestring, True),
    }

class ExtendedS3DestinationConfiguration(AWSProperty):
    props = {
        'BucketARN': (basestring, True),
        'BufferingHints': (BufferingHints, True),
        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
        'CompressionFormat': (basestring, True),
        'EncryptionConfiguration': (EncryptionConfiguration, False),
        'Prefix': (basestring, True),
        'ProcessingConfiguration': (ProcessingConfiguration, False),
        'RoleARN': (basestring, True),
        'S3BackupConfiguration': (S3DestinationConfiguration, False),
        'S3BackupMode': (s3_backup_mode_extended_s3_validator, False),
    }
```
However, [`Prefix` is optional](https://docs.aws.amazon.com/firehose/latest/APIReference/API_S3DestinationConfiguration.html).

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `troposphere/firehose.py`
Content:
```
1 # Copyright (c) 2016-2017, troposphere project
2 # All rights reserved.
3 #
4 # See LICENSE file for full license.
5 
6 from . import AWSObject, AWSProperty
7 from .validators import boolean, positive_integer
8 
9 
10 def processor_type_validator(x):
11     valid_types = ["Lambda"]
12     if x not in valid_types:
13         raise ValueError("Type must be one of: %s" %
14                          ", ".join(valid_types))
15     return x
16 
17 
18 def delivery_stream_type_validator(x):
19     valid_types = ["DirectPut", "KinesisStreamAsSource"]
20     if x not in valid_types:
21         raise ValueError("DeliveryStreamType must be one of: %s" %
22                          ", ".join(valid_types))
23     return x
24 
25 
26 def index_rotation_period_validator(x):
27     valid_types = ["NoRotation", "OneHour", "OneDay", "OneWeek", "OneMonth"]
28     if x not in valid_types:
29         raise ValueError("IndexRotationPeriod must be one of: %s" %
30                          ", ".join(valid_types))
31     return x
32 
33 
34 def s3_backup_mode_elastic_search_validator(x):
35     valid_types = ["FailedDocumentsOnly", "AllDocuments"]
36     if x not in valid_types:
37         raise ValueError("S3BackupMode must be one of: %s" %
38                          ", ".join(valid_types))
39     return x
40 
41 
42 def s3_backup_mode_extended_s3_validator(x):
43     valid_types = ["Disabled", "Enabled"]
44     if x not in valid_types:
45         raise ValueError("S3BackupMode must be one of: %s" %
46                          ", ".join(valid_types))
47     return x
48 
49 
50 class BufferingHints(AWSProperty):
51     props = {
52         'IntervalInSeconds': (positive_integer, True),
53         'SizeInMBs': (positive_integer, True)
54     }
55 
56 
57 class CloudWatchLoggingOptions(AWSProperty):
58     props = {
59         'Enabled': (boolean, False),
60         'LogGroupName': (basestring, False),  # Conditional
61         'LogStreamName': (basestring, False),  # Conditional
62     }
63 
64 
65 class RetryOptions(AWSProperty):
66     props = {
67         'DurationInSeconds': (positive_integer, True),
68     }
69 
70 
71 class KMSEncryptionConfig(AWSProperty):
72     props = {
73         'AWSKMSKeyARN': (basestring, True),
74     }
75 
76 
77 class EncryptionConfiguration(AWSProperty):
78     props = {
79         'KMSEncryptionConfig': (KMSEncryptionConfig, False),
80         'NoEncryptionConfig': (basestring, False),
81     }
82 
83 
84 class S3Configuration(AWSProperty):
85     props = {
86         'BucketARN': (basestring, True),
87         'BufferingHints': (BufferingHints, True),
88         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
89         'CompressionFormat': (basestring, True),
90         'EncryptionConfiguration': (EncryptionConfiguration, False),
91         'Prefix': (basestring, True),
92         'RoleARN': (basestring, True)
93     }
94 
95 
96 class CopyCommand(AWSProperty):
97     props = {
98         'CopyOptions': (basestring, False),
99         'DataTableColumns': (basestring, False),
100         'DataTableName': (basestring, True),
101     }
102 
103 
104 class ProcessorParameter(AWSProperty):
105     props = {
106         'ParameterName': (basestring, True),
107         'ParameterValue': (basestring, True),
108     }
109 
110 
111 class Processor(AWSProperty):
112     props = {
113         'Parameters': ([ProcessorParameter], True),
114         'Type': (processor_type_validator, True),
115     }
116 
117 
118 class ProcessingConfiguration(AWSProperty):
119     props = {
120         'Enabled': (boolean, True),
121         'Processors': ([Processor], True),
122     }
123 
124 
125 class ElasticsearchDestinationConfiguration(AWSProperty):
126     props = {
127         'BufferingHints': (BufferingHints, True),
128         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
129         'DomainARN': (basestring, True),
130         'IndexName': (basestring, True),
131         'IndexRotationPeriod': (index_rotation_period_validator, True),
132         'ProcessingConfiguration': (ProcessingConfiguration, False),
133         'RetryOptions': (RetryOptions, False),
134         'RoleARN': (basestring, True),
135         'S3BackupMode': (s3_backup_mode_elastic_search_validator, True),
136         'S3Configuration': (S3Configuration, False),
137         'TypeName': (basestring, True),
138     }
139 
140 
141 class RedshiftDestinationConfiguration(AWSProperty):
142     props = {
143         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
144         'ClusterJDBCURL': (basestring, True),
145         'CopyCommand': (CopyCommand, True),
146         'Password': (basestring, True),
147         'ProcessingConfiguration': (ProcessingConfiguration, False),
148         'RoleARN': (basestring, True),
149         'S3Configuration': (S3Configuration, True),
150         'Username': (basestring, True),
151     }
152 
153 
154 class S3DestinationConfiguration(AWSProperty):
155     props = {
156         'BucketARN': (basestring, True),
157         'BufferingHints': (BufferingHints, True),
158         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
159         'CompressionFormat': (basestring, True),
160         'EncryptionConfiguration': (EncryptionConfiguration, False),
161         'Prefix': (basestring, True),
162         'RoleARN': (basestring, True),
163     }
164 
165 
166 class ExtendedS3DestinationConfiguration(AWSProperty):
167     props = {
168         'BucketARN': (basestring, True),
169         'BufferingHints': (BufferingHints, True),
170         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
171         'CompressionFormat': (basestring, True),
172         'EncryptionConfiguration': (EncryptionConfiguration, False),
173         'Prefix': (basestring, True),
174         'ProcessingConfiguration': (ProcessingConfiguration, False),
175         'RoleARN': (basestring, True),
176         'S3BackupConfiguration': (S3DestinationConfiguration, False),
177         'S3BackupMode': (s3_backup_mode_extended_s3_validator, False),
178     }
179 
180 
181 class KinesisStreamSourceConfiguration(AWSProperty):
182     props = {
183         'KinesisStreamARN': (basestring, True),
184         'RoleARN': (basestring, True)
185     }
186 
187 
188 class SplunkRetryOptions(AWSProperty):
189     props = {
190         'DurationInSeconds': (positive_integer, True),
191     }
192 
193 
194 class SplunkDestinationConfiguration(AWSProperty):
195     props = {
196         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
197         'HECAcknowledgmentTimeoutInSeconds': (positive_integer, False),
198         'HECEndpoint': (basestring, True),
199         'HECEndpointType': (basestring, True),
200         'HECToken': (basestring, True),
201         'ProcessingConfiguration': (ProcessingConfiguration, False),
202         'RetryOptions': (SplunkRetryOptions, False),
203         'S3BackupMode': (basestring, False),
204         'S3Configuration': (S3DestinationConfiguration, True),
205     }
206 
207 
208 class DeliveryStream(AWSObject):
209     resource_type = "AWS::KinesisFirehose::DeliveryStream"
210 
211     props = {
212         'DeliveryStreamName': (basestring, False),
213         'DeliveryStreamType': (delivery_stream_type_validator, False),
214         'ElasticsearchDestinationConfiguration': (ElasticsearchDestinationConfiguration, False),  # noqa
215         'ExtendedS3DestinationConfiguration': (ExtendedS3DestinationConfiguration, False),  # noqa
216         'KinesisStreamSourceConfiguration': (KinesisStreamSourceConfiguration, False),  # noqa
217         'RedshiftDestinationConfiguration': (RedshiftDestinationConfiguration, False),  # noqa
218         'S3DestinationConfiguration': (S3DestinationConfiguration, False),
219         'SplunkDestinationConfiguration':
220             (SplunkDestinationConfiguration, False),
221     }
222
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/troposphere/firehose.py b/troposphere/firehose.py
--- a/troposphere/firehose.py
+++ b/troposphere/firehose.py
@@ -88,7 +88,7 @@
         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
         'CompressionFormat': (basestring, True),
         'EncryptionConfiguration': (EncryptionConfiguration, False),
-        'Prefix': (basestring, True),
+        'Prefix': (basestring, False),
         'RoleARN': (basestring, True)
     }
 
@@ -158,7 +158,7 @@
         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
         'CompressionFormat': (basestring, True),
         'EncryptionConfiguration': (EncryptionConfiguration, False),
-        'Prefix': (basestring, True),
+        'Prefix': (basestring, False),
         'RoleARN': (basestring, True),
     }
 
@@ -170,7 +170,7 @@
         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),
         'CompressionFormat': (basestring, True),
         'EncryptionConfiguration': (EncryptionConfiguration, False),
-        'Prefix': (basestring, True),
+        'Prefix': (basestring, False),
         'ProcessingConfiguration': (ProcessingConfiguration, False),
         'RoleARN': (basestring, True),
         'S3BackupConfiguration': (S3DestinationConfiguration, False),

{"golden_diff": "diff --git a/troposphere/firehose.py b/troposphere/firehose.py\n--- a/troposphere/firehose.py\n+++ b/troposphere/firehose.py\n@@ -88,7 +88,7 @@\n         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n         'CompressionFormat': (basestring, True),\n         'EncryptionConfiguration': (EncryptionConfiguration, False),\n-        'Prefix': (basestring, True),\n+        'Prefix': (basestring, False),\n         'RoleARN': (basestring, True)\n     }\n \n@@ -158,7 +158,7 @@\n         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n         'CompressionFormat': (basestring, True),\n         'EncryptionConfiguration': (EncryptionConfiguration, False),\n-        'Prefix': (basestring, True),\n+        'Prefix': (basestring, False),\n         'RoleARN': (basestring, True),\n     }\n \n@@ -170,7 +170,7 @@\n         'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n         'CompressionFormat': (basestring, True),\n         'EncryptionConfiguration': (EncryptionConfiguration, False),\n-        'Prefix': (basestring, True),\n+        'Prefix': (basestring, False),\n         'ProcessingConfiguration': (ProcessingConfiguration, False),\n         'RoleARN': (basestring, True),\n         'S3BackupConfiguration': (S3DestinationConfiguration, False),\n", "issue": "Prefix is optional for \nI assume `True` here means that `Prefix` is mandatory:\r\n\r\n```py\r\nclass S3DestinationConfiguration(AWSProperty):\r\n    props = {\r\n        'BucketARN': (basestring, True),\r\n        'BufferingHints': (BufferingHints, True),\r\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\r\n        'CompressionFormat': (basestring, True),\r\n        'EncryptionConfiguration': (EncryptionConfiguration, False),\r\n        'Prefix': (basestring, True),\r\n        'RoleARN': (basestring, True),\r\n    }\r\n\r\nclass ExtendedS3DestinationConfiguration(AWSProperty):\r\n    props = {\r\n        'BucketARN': (basestring, True),\r\n        'BufferingHints': (BufferingHints, True),\r\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\r\n        'CompressionFormat': (basestring, True),\r\n        'EncryptionConfiguration': (EncryptionConfiguration, False),\r\n        'Prefix': (basestring, True),\r\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\r\n        'RoleARN': (basestring, True),\r\n        'S3BackupConfiguration': (S3DestinationConfiguration, False),\r\n        'S3BackupMode': (s3_backup_mode_extended_s3_validator, False),\r\n    }\r\n```\r\nHowever, [`Prefix` is optional](https://docs.aws.amazon.com/firehose/latest/APIReference/API_S3DestinationConfiguration.html).\n", "before_files": [{"content": "# Copyright (c) 2016-2017, troposphere project\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty\nfrom .validators import boolean, positive_integer\n\n\ndef processor_type_validator(x):\n    valid_types = [\"Lambda\"]\n    if x not in valid_types:\n        raise ValueError(\"Type must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\ndef delivery_stream_type_validator(x):\n    valid_types = [\"DirectPut\", \"KinesisStreamAsSource\"]\n    if x not in valid_types:\n        raise ValueError(\"DeliveryStreamType must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\ndef index_rotation_period_validator(x):\n    valid_types = [\"NoRotation\", \"OneHour\", \"OneDay\", \"OneWeek\", \"OneMonth\"]\n    if x not in valid_types:\n        raise ValueError(\"IndexRotationPeriod must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\ndef s3_backup_mode_elastic_search_validator(x):\n    valid_types = [\"FailedDocumentsOnly\", \"AllDocuments\"]\n    if x not in valid_types:\n        raise ValueError(\"S3BackupMode must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\ndef s3_backup_mode_extended_s3_validator(x):\n    valid_types = [\"Disabled\", \"Enabled\"]\n    if x not in valid_types:\n        raise ValueError(\"S3BackupMode must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\nclass BufferingHints(AWSProperty):\n    props = {\n        'IntervalInSeconds': (positive_integer, True),\n        'SizeInMBs': (positive_integer, True)\n    }\n\n\nclass CloudWatchLoggingOptions(AWSProperty):\n    props = {\n        'Enabled': (boolean, False),\n        'LogGroupName': (basestring, False),  # Conditional\n        'LogStreamName': (basestring, False),  # Conditional\n    }\n\n\nclass RetryOptions(AWSProperty):\n    props = {\n        'DurationInSeconds': (positive_integer, True),\n    }\n\n\nclass KMSEncryptionConfig(AWSProperty):\n    props = {\n        'AWSKMSKeyARN': (basestring, True),\n    }\n\n\nclass EncryptionConfiguration(AWSProperty):\n    props = {\n        'KMSEncryptionConfig': (KMSEncryptionConfig, False),\n        'NoEncryptionConfig': (basestring, False),\n    }\n\n\nclass S3Configuration(AWSProperty):\n    props = {\n        'BucketARN': (basestring, True),\n        'BufferingHints': (BufferingHints, True),\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'CompressionFormat': (basestring, True),\n        'EncryptionConfiguration': (EncryptionConfiguration, False),\n        'Prefix': (basestring, True),\n        'RoleARN': (basestring, True)\n    }\n\n\nclass CopyCommand(AWSProperty):\n    props = {\n        'CopyOptions': (basestring, False),\n        'DataTableColumns': (basestring, False),\n        'DataTableName': (basestring, True),\n    }\n\n\nclass ProcessorParameter(AWSProperty):\n    props = {\n        'ParameterName': (basestring, True),\n        'ParameterValue': (basestring, True),\n    }\n\n\nclass Processor(AWSProperty):\n    props = {\n        'Parameters': ([ProcessorParameter], True),\n        'Type': (processor_type_validator, True),\n    }\n\n\nclass ProcessingConfiguration(AWSProperty):\n    props = {\n        'Enabled': (boolean, True),\n        'Processors': ([Processor], True),\n    }\n\n\nclass ElasticsearchDestinationConfiguration(AWSProperty):\n    props = {\n        'BufferingHints': (BufferingHints, True),\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'DomainARN': (basestring, True),\n        'IndexName': (basestring, True),\n        'IndexRotationPeriod': (index_rotation_period_validator, True),\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\n        'RetryOptions': (RetryOptions, False),\n        'RoleARN': (basestring, True),\n        'S3BackupMode': (s3_backup_mode_elastic_search_validator, True),\n        'S3Configuration': (S3Configuration, False),\n        'TypeName': (basestring, True),\n    }\n\n\nclass RedshiftDestinationConfiguration(AWSProperty):\n    props = {\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'ClusterJDBCURL': (basestring, True),\n        'CopyCommand': (CopyCommand, True),\n        'Password': (basestring, True),\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\n        'RoleARN': (basestring, True),\n        'S3Configuration': (S3Configuration, True),\n        'Username': (basestring, True),\n    }\n\n\nclass S3DestinationConfiguration(AWSProperty):\n    props = {\n        'BucketARN': (basestring, True),\n        'BufferingHints': (BufferingHints, True),\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'CompressionFormat': (basestring, True),\n        'EncryptionConfiguration': (EncryptionConfiguration, False),\n        'Prefix': (basestring, True),\n        'RoleARN': (basestring, True),\n    }\n\n\nclass ExtendedS3DestinationConfiguration(AWSProperty):\n    props = {\n        'BucketARN': (basestring, True),\n        'BufferingHints': (BufferingHints, True),\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'CompressionFormat': (basestring, True),\n        'EncryptionConfiguration': (EncryptionConfiguration, False),\n        'Prefix': (basestring, True),\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\n        'RoleARN': (basestring, True),\n        'S3BackupConfiguration': (S3DestinationConfiguration, False),\n        'S3BackupMode': (s3_backup_mode_extended_s3_validator, False),\n    }\n\n\nclass KinesisStreamSourceConfiguration(AWSProperty):\n    props = {\n        'KinesisStreamARN': (basestring, True),\n        'RoleARN': (basestring, True)\n    }\n\n\nclass SplunkRetryOptions(AWSProperty):\n    props = {\n        'DurationInSeconds': (positive_integer, True),\n    }\n\n\nclass SplunkDestinationConfiguration(AWSProperty):\n    props = {\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'HECAcknowledgmentTimeoutInSeconds': (positive_integer, False),\n        'HECEndpoint': (basestring, True),\n        'HECEndpointType': (basestring, True),\n        'HECToken': (basestring, True),\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\n        'RetryOptions': (SplunkRetryOptions, False),\n        'S3BackupMode': (basestring, False),\n        'S3Configuration': (S3DestinationConfiguration, True),\n    }\n\n\nclass DeliveryStream(AWSObject):\n    resource_type = \"AWS::KinesisFirehose::DeliveryStream\"\n\n    props = {\n        'DeliveryStreamName': (basestring, False),\n        'DeliveryStreamType': (delivery_stream_type_validator, False),\n        'ElasticsearchDestinationConfiguration': (ElasticsearchDestinationConfiguration, False),  # noqa\n        'ExtendedS3DestinationConfiguration': (ExtendedS3DestinationConfiguration, False),  # noqa\n        'KinesisStreamSourceConfiguration': (KinesisStreamSourceConfiguration, False),  # noqa\n        'RedshiftDestinationConfiguration': (RedshiftDestinationConfiguration, False),  # noqa\n        'S3DestinationConfiguration': (S3DestinationConfiguration, False),\n        'SplunkDestinationConfiguration':\n            (SplunkDestinationConfiguration, False),\n    }\n", "path": "troposphere/firehose.py"}], "after_files": [{"content": "# Copyright (c) 2016-2017, troposphere project\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty\nfrom .validators import boolean, positive_integer\n\n\ndef processor_type_validator(x):\n    valid_types = [\"Lambda\"]\n    if x not in valid_types:\n        raise ValueError(\"Type must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\ndef delivery_stream_type_validator(x):\n    valid_types = [\"DirectPut\", \"KinesisStreamAsSource\"]\n    if x not in valid_types:\n        raise ValueError(\"DeliveryStreamType must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\ndef index_rotation_period_validator(x):\n    valid_types = [\"NoRotation\", \"OneHour\", \"OneDay\", \"OneWeek\", \"OneMonth\"]\n    if x not in valid_types:\n        raise ValueError(\"IndexRotationPeriod must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\ndef s3_backup_mode_elastic_search_validator(x):\n    valid_types = [\"FailedDocumentsOnly\", \"AllDocuments\"]\n    if x not in valid_types:\n        raise ValueError(\"S3BackupMode must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\ndef s3_backup_mode_extended_s3_validator(x):\n    valid_types = [\"Disabled\", \"Enabled\"]\n    if x not in valid_types:\n        raise ValueError(\"S3BackupMode must be one of: %s\" %\n                         \", \".join(valid_types))\n    return x\n\n\nclass BufferingHints(AWSProperty):\n    props = {\n        'IntervalInSeconds': (positive_integer, True),\n        'SizeInMBs': (positive_integer, True)\n    }\n\n\nclass CloudWatchLoggingOptions(AWSProperty):\n    props = {\n        'Enabled': (boolean, False),\n        'LogGroupName': (basestring, False),  # Conditional\n        'LogStreamName': (basestring, False),  # Conditional\n    }\n\n\nclass RetryOptions(AWSProperty):\n    props = {\n        'DurationInSeconds': (positive_integer, True),\n    }\n\n\nclass KMSEncryptionConfig(AWSProperty):\n    props = {\n        'AWSKMSKeyARN': (basestring, True),\n    }\n\n\nclass EncryptionConfiguration(AWSProperty):\n    props = {\n        'KMSEncryptionConfig': (KMSEncryptionConfig, False),\n        'NoEncryptionConfig': (basestring, False),\n    }\n\n\nclass S3Configuration(AWSProperty):\n    props = {\n        'BucketARN': (basestring, True),\n        'BufferingHints': (BufferingHints, True),\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'CompressionFormat': (basestring, True),\n        'EncryptionConfiguration': (EncryptionConfiguration, False),\n        'Prefix': (basestring, False),\n        'RoleARN': (basestring, True)\n    }\n\n\nclass CopyCommand(AWSProperty):\n    props = {\n        'CopyOptions': (basestring, False),\n        'DataTableColumns': (basestring, False),\n        'DataTableName': (basestring, True),\n    }\n\n\nclass ProcessorParameter(AWSProperty):\n    props = {\n        'ParameterName': (basestring, True),\n        'ParameterValue': (basestring, True),\n    }\n\n\nclass Processor(AWSProperty):\n    props = {\n        'Parameters': ([ProcessorParameter], True),\n        'Type': (processor_type_validator, True),\n    }\n\n\nclass ProcessingConfiguration(AWSProperty):\n    props = {\n        'Enabled': (boolean, True),\n        'Processors': ([Processor], True),\n    }\n\n\nclass ElasticsearchDestinationConfiguration(AWSProperty):\n    props = {\n        'BufferingHints': (BufferingHints, True),\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'DomainARN': (basestring, True),\n        'IndexName': (basestring, True),\n        'IndexRotationPeriod': (index_rotation_period_validator, True),\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\n        'RetryOptions': (RetryOptions, False),\n        'RoleARN': (basestring, True),\n        'S3BackupMode': (s3_backup_mode_elastic_search_validator, True),\n        'S3Configuration': (S3Configuration, False),\n        'TypeName': (basestring, True),\n    }\n\n\nclass RedshiftDestinationConfiguration(AWSProperty):\n    props = {\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'ClusterJDBCURL': (basestring, True),\n        'CopyCommand': (CopyCommand, True),\n        'Password': (basestring, True),\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\n        'RoleARN': (basestring, True),\n        'S3Configuration': (S3Configuration, True),\n        'Username': (basestring, True),\n    }\n\n\nclass S3DestinationConfiguration(AWSProperty):\n    props = {\n        'BucketARN': (basestring, True),\n        'BufferingHints': (BufferingHints, True),\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'CompressionFormat': (basestring, True),\n        'EncryptionConfiguration': (EncryptionConfiguration, False),\n        'Prefix': (basestring, False),\n        'RoleARN': (basestring, True),\n    }\n\n\nclass ExtendedS3DestinationConfiguration(AWSProperty):\n    props = {\n        'BucketARN': (basestring, True),\n        'BufferingHints': (BufferingHints, True),\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'CompressionFormat': (basestring, True),\n        'EncryptionConfiguration': (EncryptionConfiguration, False),\n        'Prefix': (basestring, False),\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\n        'RoleARN': (basestring, True),\n        'S3BackupConfiguration': (S3DestinationConfiguration, False),\n        'S3BackupMode': (s3_backup_mode_extended_s3_validator, False),\n    }\n\n\nclass KinesisStreamSourceConfiguration(AWSProperty):\n    props = {\n        'KinesisStreamARN': (basestring, True),\n        'RoleARN': (basestring, True)\n    }\n\n\nclass SplunkRetryOptions(AWSProperty):\n    props = {\n        'DurationInSeconds': (positive_integer, True),\n    }\n\n\nclass SplunkDestinationConfiguration(AWSProperty):\n    props = {\n        'CloudWatchLoggingOptions': (CloudWatchLoggingOptions, False),\n        'HECAcknowledgmentTimeoutInSeconds': (positive_integer, False),\n        'HECEndpoint': (basestring, True),\n        'HECEndpointType': (basestring, True),\n        'HECToken': (basestring, True),\n        'ProcessingConfiguration': (ProcessingConfiguration, False),\n        'RetryOptions': (SplunkRetryOptions, False),\n        'S3BackupMode': (basestring, False),\n        'S3Configuration': (S3DestinationConfiguration, True),\n    }\n\n\nclass DeliveryStream(AWSObject):\n    resource_type = \"AWS::KinesisFirehose::DeliveryStream\"\n\n    props = {\n        'DeliveryStreamName': (basestring, False),\n        'DeliveryStreamType': (delivery_stream_type_validator, False),\n        'ElasticsearchDestinationConfiguration': (ElasticsearchDestinationConfiguration, False),  # noqa\n        'ExtendedS3DestinationConfiguration': (ExtendedS3DestinationConfiguration, False),  # noqa\n        'KinesisStreamSourceConfiguration': (KinesisStreamSourceConfiguration, False),  # noqa\n        'RedshiftDestinationConfiguration': (RedshiftDestinationConfiguration, False),  # noqa\n        'S3DestinationConfiguration': (S3DestinationConfiguration, False),\n        'SplunkDestinationConfiguration':\n            (SplunkDestinationConfiguration, False),\n    }\n", "path": "troposphere/firehose.py"}]}