prompt: 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()
  
  ```
  
golden_diff: 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),
       }
  
verification_info: {"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"}]}