We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
implement AWS::DMS changes from May 14, 2020 update


--- 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/dms.py`
Content:
```
1 # Copyright (c) 2012-2019, Mark Peek <mark@peek.org>
2 # All rights reserved.
3 #
4 # See LICENSE file for full license.
5 
6 from . import AWSObject, AWSProperty, Tags
7 from .validators import boolean, integer, network_port, positive_integer
8 
9 
10 CDC = "cdc"
11 FULL_LOAD = "full-load"
12 FULL_LOAD_AND_CDC = "full-load-and-cdc"
13 
14 
15 class Certificate(AWSObject):
16     resource_type = "AWS::DMS::Certificate"
17 
18     props = {
19         'CertificateIdentifier': (basestring, False),
20         'CertificatePem': (basestring, False),
21         'CertificateWallet': (basestring, False),
22     }
23 
24 
25 class DynamoDbSettings(AWSProperty):
26     props = {
27         'ServiceAccessRoleArn': (basestring, False),
28     }
29 
30 
31 class ElasticsearchSettings(AWSProperty):
32     props = {
33         'EndpointUri': (basestring, False),
34         'ErrorRetryDuration': (integer, False),
35         'FullLoadErrorPercentage': (integer, False),
36         'ServiceAccessRoleArn': (basestring, False),
37     }
38 
39 
40 class KinesisSettings(AWSProperty):
41     props = {
42         'MessageFormat': (basestring, False),
43         'ServiceAccessRoleArn': (basestring, False),
44         'StreamArn': (basestring, False),
45     }
46 
47 
48 class MongoDbSettings(AWSProperty):
49     props = {
50         'AuthMechanism': (basestring, False),
51         'AuthSource': (basestring, False),
52         'AuthType': (basestring, False),
53         'DatabaseName': (basestring, False),
54         'DocsToInvestigate': (basestring, False),
55         'ExtractDocId': (basestring, False),
56         'NestingLevel': (basestring, False),
57         'Password': (basestring, False),
58         'Port': (network_port, False),
59         'ServerName': (basestring, False),
60         'Username': (basestring, False),
61     }
62 
63 
64 class S3Settings(AWSProperty):
65     props = {
66         'BucketFolder': (basestring, False),
67         'BucketName': (basestring, False),
68         'CompressionType': (basestring, False),
69         'CsvDelimiter': (basestring, False),
70         'CsvRowDelimiter': (basestring, False),
71         'ExternalTableDefinition': (basestring, False),
72         'ServiceAccessRoleArn': (basestring, False),
73     }
74 
75 
76 class KafkaSettings(AWSProperty):
77     props = {
78         'Broker': (basestring, False),
79         'Topic': (basestring, False),
80     }
81 
82 
83 class Endpoint(AWSObject):
84     resource_type = "AWS::DMS::Endpoint"
85 
86     props = {
87         'CertificateArn': (basestring, False),
88         'DatabaseName': (basestring, False),
89         'DynamoDbSettings': (DynamoDbSettings, False),
90         'ElasticsearchSettings': (ElasticsearchSettings, False),
91         'EndpointIdentifier': (basestring, False),
92         'EndpointType': (basestring, True),
93         'EngineName': (basestring, True),
94         'ExtraConnectionAttributes': (basestring, False),
95         'KafkaSettings': (KafkaSettings, False),
96         'KinesisSettings': (KinesisSettings, False),
97         'KmsKeyId': (basestring, False),
98         'MongoDbSettings': (MongoDbSettings, False),
99         'Password': (basestring, False),
100         'Port': (network_port, False),
101         'S3Settings': (S3Settings, False),
102         'ServerName': (basestring, False),
103         'SslMode': (basestring, False),
104         'Tags': (Tags, False),
105         'Username': (basestring, False),
106     }
107 
108 
109 class EventSubscription(AWSObject):
110     resource_type = "AWS::DMS::EventSubscription"
111 
112     props = {
113         'Enabled': (boolean, False),
114         'EventCategories': ([basestring], False),
115         'SnsTopicArn': (basestring, True),
116         'SourceIds': ([basestring], False),
117         'SourceType': (basestring, False),
118         'SubscriptionName': (basestring, False),
119         'Tags': (Tags, False),
120     }
121 
122 
123 class ReplicationInstance(AWSObject):
124     resource_type = "AWS::DMS::ReplicationInstance"
125 
126     props = {
127         'AllocatedStorage': (integer, False),
128         'AllowMajorVersionUpgrade': (boolean, False),
129         'AutoMinorVersionUpgrade': (boolean, False),
130         'AvailabilityZone': (basestring, False),
131         'EngineVersion': (basestring, False),
132         'KmsKeyId': (basestring, False),
133         'MultiAZ': (boolean, False),
134         'PreferredMaintenanceWindow': (basestring, False),
135         'PubliclyAccessible': (boolean, False),
136         'ReplicationInstanceClass': (basestring, True),
137         'ReplicationInstanceIdentifier': (basestring, False),
138         'ReplicationSubnetGroupIdentifier': (basestring, False),
139         'Tags': (Tags, False),
140         'VpcSecurityGroupIds': ([basestring], False),
141     }
142 
143 
144 class ReplicationSubnetGroup(AWSObject):
145     resource_type = "AWS::DMS::ReplicationSubnetGroup"
146 
147     props = {
148         'ReplicationSubnetGroupDescription': (basestring, True),
149         'ReplicationSubnetGroupIdentifier': (basestring, False),
150         'SubnetIds': ([basestring], True),
151         'Tags': (Tags, False),
152     }
153 
154 
155 class ReplicationTask(AWSObject):
156     resource_type = "AWS::DMS::ReplicationTask"
157 
158     props = {
159         'CdcStartPosition': (basestring, False),
160         'CdcStartTime': (positive_integer, False),
161         'CdcStopPosition': (basestring, False),
162         'MigrationType': (basestring, True),
163         'ReplicationInstanceArn': (basestring, True),
164         'ReplicationTaskIdentifier': (basestring, False),
165         'ReplicationTaskSettings': (basestring, False),
166         'SourceEndpointArn': (basestring, True),
167         'TableMappings': (basestring, True),
168         'Tags': (Tags, False),
169         'TargetEndpointArn': (basestring, True),
170     }
171
```
--- 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/dms.py b/troposphere/dms.py
--- a/troposphere/dms.py
+++ b/troposphere/dms.py
@@ -80,6 +80,18 @@
     }
 
 
+class NeptuneSettings(AWSProperty):
+    props = {
+        'ErrorRetryDuration': (integer, False),
+        'IamAuthEnabled': (boolean, False),
+        'MaxFileSize': (integer, False),
+        'MaxRetryCount': (integer, False),
+        'S3BucketFolder': (basestring, False),
+        'S3BucketName': (basestring, False),
+        'ServiceAccessRoleArn': (basestring, False),
+    }
+
+
 class Endpoint(AWSObject):
     resource_type = "AWS::DMS::Endpoint"
 
@@ -96,6 +108,7 @@
         'KinesisSettings': (KinesisSettings, False),
         'KmsKeyId': (basestring, False),
         'MongoDbSettings': (MongoDbSettings, False),
+        'NeptuneSettings': (NeptuneSettings, False),
         'Password': (basestring, False),
         'Port': (network_port, False),
         'S3Settings': (S3Settings, False),
@@ -167,4 +180,5 @@
         'TableMappings': (basestring, True),
         'Tags': (Tags, False),
         'TargetEndpointArn': (basestring, True),
+        'TaskData': (basestring, True),
     }

{"golden_diff": "diff --git a/troposphere/dms.py b/troposphere/dms.py\n--- a/troposphere/dms.py\n+++ b/troposphere/dms.py\n@@ -80,6 +80,18 @@\n     }\n \n \n+class NeptuneSettings(AWSProperty):\n+    props = {\n+        'ErrorRetryDuration': (integer, False),\n+        'IamAuthEnabled': (boolean, False),\n+        'MaxFileSize': (integer, False),\n+        'MaxRetryCount': (integer, False),\n+        'S3BucketFolder': (basestring, False),\n+        'S3BucketName': (basestring, False),\n+        'ServiceAccessRoleArn': (basestring, False),\n+    }\n+\n+\n class Endpoint(AWSObject):\n     resource_type = \"AWS::DMS::Endpoint\"\n \n@@ -96,6 +108,7 @@\n         'KinesisSettings': (KinesisSettings, False),\n         'KmsKeyId': (basestring, False),\n         'MongoDbSettings': (MongoDbSettings, False),\n+        'NeptuneSettings': (NeptuneSettings, False),\n         'Password': (basestring, False),\n         'Port': (network_port, False),\n         'S3Settings': (S3Settings, False),\n@@ -167,4 +180,5 @@\n         'TableMappings': (basestring, True),\n         'Tags': (Tags, False),\n         'TargetEndpointArn': (basestring, True),\n+        'TaskData': (basestring, True),\n     }\n", "issue": "implement AWS::DMS changes from May 14, 2020 update\n\n", "before_files": [{"content": "# Copyright (c) 2012-2019, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty, Tags\nfrom .validators import boolean, integer, network_port, positive_integer\n\n\nCDC = \"cdc\"\nFULL_LOAD = \"full-load\"\nFULL_LOAD_AND_CDC = \"full-load-and-cdc\"\n\n\nclass Certificate(AWSObject):\n    resource_type = \"AWS::DMS::Certificate\"\n\n    props = {\n        'CertificateIdentifier': (basestring, False),\n        'CertificatePem': (basestring, False),\n        'CertificateWallet': (basestring, False),\n    }\n\n\nclass DynamoDbSettings(AWSProperty):\n    props = {\n        'ServiceAccessRoleArn': (basestring, False),\n    }\n\n\nclass ElasticsearchSettings(AWSProperty):\n    props = {\n        'EndpointUri': (basestring, False),\n        'ErrorRetryDuration': (integer, False),\n        'FullLoadErrorPercentage': (integer, False),\n        'ServiceAccessRoleArn': (basestring, False),\n    }\n\n\nclass KinesisSettings(AWSProperty):\n    props = {\n        'MessageFormat': (basestring, False),\n        'ServiceAccessRoleArn': (basestring, False),\n        'StreamArn': (basestring, False),\n    }\n\n\nclass MongoDbSettings(AWSProperty):\n    props = {\n        'AuthMechanism': (basestring, False),\n        'AuthSource': (basestring, False),\n        'AuthType': (basestring, False),\n        'DatabaseName': (basestring, False),\n        'DocsToInvestigate': (basestring, False),\n        'ExtractDocId': (basestring, False),\n        'NestingLevel': (basestring, False),\n        'Password': (basestring, False),\n        'Port': (network_port, False),\n        'ServerName': (basestring, False),\n        'Username': (basestring, False),\n    }\n\n\nclass S3Settings(AWSProperty):\n    props = {\n        'BucketFolder': (basestring, False),\n        'BucketName': (basestring, False),\n        'CompressionType': (basestring, False),\n        'CsvDelimiter': (basestring, False),\n        'CsvRowDelimiter': (basestring, False),\n        'ExternalTableDefinition': (basestring, False),\n        'ServiceAccessRoleArn': (basestring, False),\n    }\n\n\nclass KafkaSettings(AWSProperty):\n    props = {\n        'Broker': (basestring, False),\n        'Topic': (basestring, False),\n    }\n\n\nclass Endpoint(AWSObject):\n    resource_type = \"AWS::DMS::Endpoint\"\n\n    props = {\n        'CertificateArn': (basestring, False),\n        'DatabaseName': (basestring, False),\n        'DynamoDbSettings': (DynamoDbSettings, False),\n        'ElasticsearchSettings': (ElasticsearchSettings, False),\n        'EndpointIdentifier': (basestring, False),\n        'EndpointType': (basestring, True),\n        'EngineName': (basestring, True),\n        'ExtraConnectionAttributes': (basestring, False),\n        'KafkaSettings': (KafkaSettings, False),\n        'KinesisSettings': (KinesisSettings, False),\n        'KmsKeyId': (basestring, False),\n        'MongoDbSettings': (MongoDbSettings, False),\n        'Password': (basestring, False),\n        'Port': (network_port, False),\n        'S3Settings': (S3Settings, False),\n        'ServerName': (basestring, False),\n        'SslMode': (basestring, False),\n        'Tags': (Tags, False),\n        'Username': (basestring, False),\n    }\n\n\nclass EventSubscription(AWSObject):\n    resource_type = \"AWS::DMS::EventSubscription\"\n\n    props = {\n        'Enabled': (boolean, False),\n        'EventCategories': ([basestring], False),\n        'SnsTopicArn': (basestring, True),\n        'SourceIds': ([basestring], False),\n        'SourceType': (basestring, False),\n        'SubscriptionName': (basestring, False),\n        'Tags': (Tags, False),\n    }\n\n\nclass ReplicationInstance(AWSObject):\n    resource_type = \"AWS::DMS::ReplicationInstance\"\n\n    props = {\n        'AllocatedStorage': (integer, False),\n        'AllowMajorVersionUpgrade': (boolean, False),\n        'AutoMinorVersionUpgrade': (boolean, False),\n        'AvailabilityZone': (basestring, False),\n        'EngineVersion': (basestring, False),\n        'KmsKeyId': (basestring, False),\n        'MultiAZ': (boolean, False),\n        'PreferredMaintenanceWindow': (basestring, False),\n        'PubliclyAccessible': (boolean, False),\n        'ReplicationInstanceClass': (basestring, True),\n        'ReplicationInstanceIdentifier': (basestring, False),\n        'ReplicationSubnetGroupIdentifier': (basestring, False),\n        'Tags': (Tags, False),\n        'VpcSecurityGroupIds': ([basestring], False),\n    }\n\n\nclass ReplicationSubnetGroup(AWSObject):\n    resource_type = \"AWS::DMS::ReplicationSubnetGroup\"\n\n    props = {\n        'ReplicationSubnetGroupDescription': (basestring, True),\n        'ReplicationSubnetGroupIdentifier': (basestring, False),\n        'SubnetIds': ([basestring], True),\n        'Tags': (Tags, False),\n    }\n\n\nclass ReplicationTask(AWSObject):\n    resource_type = \"AWS::DMS::ReplicationTask\"\n\n    props = {\n        'CdcStartPosition': (basestring, False),\n        'CdcStartTime': (positive_integer, False),\n        'CdcStopPosition': (basestring, False),\n        'MigrationType': (basestring, True),\n        'ReplicationInstanceArn': (basestring, True),\n        'ReplicationTaskIdentifier': (basestring, False),\n        'ReplicationTaskSettings': (basestring, False),\n        'SourceEndpointArn': (basestring, True),\n        'TableMappings': (basestring, True),\n        'Tags': (Tags, False),\n        'TargetEndpointArn': (basestring, True),\n    }\n", "path": "troposphere/dms.py"}], "after_files": [{"content": "# Copyright (c) 2012-2019, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty, Tags\nfrom .validators import boolean, integer, network_port, positive_integer\n\n\nCDC = \"cdc\"\nFULL_LOAD = \"full-load\"\nFULL_LOAD_AND_CDC = \"full-load-and-cdc\"\n\n\nclass Certificate(AWSObject):\n    resource_type = \"AWS::DMS::Certificate\"\n\n    props = {\n        'CertificateIdentifier': (basestring, False),\n        'CertificatePem': (basestring, False),\n        'CertificateWallet': (basestring, False),\n    }\n\n\nclass DynamoDbSettings(AWSProperty):\n    props = {\n        'ServiceAccessRoleArn': (basestring, False),\n    }\n\n\nclass ElasticsearchSettings(AWSProperty):\n    props = {\n        'EndpointUri': (basestring, False),\n        'ErrorRetryDuration': (integer, False),\n        'FullLoadErrorPercentage': (integer, False),\n        'ServiceAccessRoleArn': (basestring, False),\n    }\n\n\nclass KinesisSettings(AWSProperty):\n    props = {\n        'MessageFormat': (basestring, False),\n        'ServiceAccessRoleArn': (basestring, False),\n        'StreamArn': (basestring, False),\n    }\n\n\nclass MongoDbSettings(AWSProperty):\n    props = {\n        'AuthMechanism': (basestring, False),\n        'AuthSource': (basestring, False),\n        'AuthType': (basestring, False),\n        'DatabaseName': (basestring, False),\n        'DocsToInvestigate': (basestring, False),\n        'ExtractDocId': (basestring, False),\n        'NestingLevel': (basestring, False),\n        'Password': (basestring, False),\n        'Port': (network_port, False),\n        'ServerName': (basestring, False),\n        'Username': (basestring, False),\n    }\n\n\nclass S3Settings(AWSProperty):\n    props = {\n        'BucketFolder': (basestring, False),\n        'BucketName': (basestring, False),\n        'CompressionType': (basestring, False),\n        'CsvDelimiter': (basestring, False),\n        'CsvRowDelimiter': (basestring, False),\n        'ExternalTableDefinition': (basestring, False),\n        'ServiceAccessRoleArn': (basestring, False),\n    }\n\n\nclass KafkaSettings(AWSProperty):\n    props = {\n        'Broker': (basestring, False),\n        'Topic': (basestring, False),\n    }\n\n\nclass NeptuneSettings(AWSProperty):\n    props = {\n        'ErrorRetryDuration': (integer, False),\n        'IamAuthEnabled': (boolean, False),\n        'MaxFileSize': (integer, False),\n        'MaxRetryCount': (integer, False),\n        'S3BucketFolder': (basestring, False),\n        'S3BucketName': (basestring, False),\n        'ServiceAccessRoleArn': (basestring, False),\n    }\n\n\nclass Endpoint(AWSObject):\n    resource_type = \"AWS::DMS::Endpoint\"\n\n    props = {\n        'CertificateArn': (basestring, False),\n        'DatabaseName': (basestring, False),\n        'DynamoDbSettings': (DynamoDbSettings, False),\n        'ElasticsearchSettings': (ElasticsearchSettings, False),\n        'EndpointIdentifier': (basestring, False),\n        'EndpointType': (basestring, True),\n        'EngineName': (basestring, True),\n        'ExtraConnectionAttributes': (basestring, False),\n        'KafkaSettings': (KafkaSettings, False),\n        'KinesisSettings': (KinesisSettings, False),\n        'KmsKeyId': (basestring, False),\n        'MongoDbSettings': (MongoDbSettings, False),\n        'NeptuneSettings': (NeptuneSettings, False),\n        'Password': (basestring, False),\n        'Port': (network_port, False),\n        'S3Settings': (S3Settings, False),\n        'ServerName': (basestring, False),\n        'SslMode': (basestring, False),\n        'Tags': (Tags, False),\n        'Username': (basestring, False),\n    }\n\n\nclass EventSubscription(AWSObject):\n    resource_type = \"AWS::DMS::EventSubscription\"\n\n    props = {\n        'Enabled': (boolean, False),\n        'EventCategories': ([basestring], False),\n        'SnsTopicArn': (basestring, True),\n        'SourceIds': ([basestring], False),\n        'SourceType': (basestring, False),\n        'SubscriptionName': (basestring, False),\n        'Tags': (Tags, False),\n    }\n\n\nclass ReplicationInstance(AWSObject):\n    resource_type = \"AWS::DMS::ReplicationInstance\"\n\n    props = {\n        'AllocatedStorage': (integer, False),\n        'AllowMajorVersionUpgrade': (boolean, False),\n        'AutoMinorVersionUpgrade': (boolean, False),\n        'AvailabilityZone': (basestring, False),\n        'EngineVersion': (basestring, False),\n        'KmsKeyId': (basestring, False),\n        'MultiAZ': (boolean, False),\n        'PreferredMaintenanceWindow': (basestring, False),\n        'PubliclyAccessible': (boolean, False),\n        'ReplicationInstanceClass': (basestring, True),\n        'ReplicationInstanceIdentifier': (basestring, False),\n        'ReplicationSubnetGroupIdentifier': (basestring, False),\n        'Tags': (Tags, False),\n        'VpcSecurityGroupIds': ([basestring], False),\n    }\n\n\nclass ReplicationSubnetGroup(AWSObject):\n    resource_type = \"AWS::DMS::ReplicationSubnetGroup\"\n\n    props = {\n        'ReplicationSubnetGroupDescription': (basestring, True),\n        'ReplicationSubnetGroupIdentifier': (basestring, False),\n        'SubnetIds': ([basestring], True),\n        'Tags': (Tags, False),\n    }\n\n\nclass ReplicationTask(AWSObject):\n    resource_type = \"AWS::DMS::ReplicationTask\"\n\n    props = {\n        'CdcStartPosition': (basestring, False),\n        'CdcStartTime': (positive_integer, False),\n        'CdcStopPosition': (basestring, False),\n        'MigrationType': (basestring, True),\n        'ReplicationInstanceArn': (basestring, True),\n        'ReplicationTaskIdentifier': (basestring, False),\n        'ReplicationTaskSettings': (basestring, False),\n        'SourceEndpointArn': (basestring, True),\n        'TableMappings': (basestring, True),\n        'Tags': (Tags, False),\n        'TargetEndpointArn': (basestring, True),\n        'TaskData': (basestring, True),\n    }\n", "path": "troposphere/dms.py"}]}