text:
#pragma once
#include <aws/rds/RDS_EXPORTS.h>
#include <aws/rds/RDSRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
#include <aws/rds/model/Tag.h>
#include <aws/rds/model/ProcessorFeature.h>
#include <utility>

namespace Aws
{
namespace RDS
{
namespace Model
{

  /**
   *

See Also:
   AWS
   * API Reference

   */
  class AWS_RDS_API RestoreDBInstanceFromDBSnapshotRequest : public RDSRequest
  {
  public:
    RestoreDBInstanceFromDBSnapshotRequest();

    // Service request name is the Operation name which will send this request out,
    // each operation should has unique request name, so that we can get operation's name from this request.
    // Note: this is not true for response, multiple operations may have the same response name,
    // so we can not get operation's name from response.
    inline virtual const char* GetServiceRequestName() const override { return "RestoreDBInstanceFromDBSnapshot"; }

    Aws::String SerializePayload() const override;

  protected:
    void DumpBodyToUrl(Aws::Http::URI& uri ) const override;

  public:

    /**
     *
Name of the DB instance to create from the DB snapshot. This parameter isn't
     * case-sensitive.

Constraints:

Must contain from 1 to 63
     * numbers, letters, or hyphens

First character must be a
     * letter

Can't end with a hyphen or contain two consecutive
     * hyphens

Example: my-snapshot-id

     */
    inline const Aws::String& GetDBInstanceIdentifier() const{ return m_dBInstanceIdentifier; }

    /**
     *
Name of the DB instance to create from the DB snapshot. This parameter isn't
     * case-sensitive.

Constraints:

Must contain from 1 to 63
     * numbers, letters, or hyphens

First character must be a
     * letter

Can't end with a hyphen or contain two consecutive
     * hyphens

Example: my-snapshot-id

     */
    inline bool DBInstanceIdentifierHasBeenSet() const { return m_dBInstanceIdentifierHasBeenSet; }

    /**
     *
Name of the DB instance to create from the DB snapshot. This parameter isn't
     * case-sensitive.

Constraints:

Must contain from 1 to 63
     * numbers, letters, or hyphens

First character must be a
     * letter

Can't end with a hyphen or contain two consecutive
     * hyphens

Example: my-snapshot-id

     */
    inline void SetDBInstanceIdentifier(const Aws::String& value) { m_dBInstanceIdentifierHasBeenSet = true; m_dBInstanceIdentifier = value; }

    /**
     *
Name of the DB instance to create from the DB snapshot. This parameter isn't
     * case-sensitive.

Constraints:

Must contain from 1 to 63
     * numbers, letters, or hyphens

First character must be a
     * letter

Can't end with a hyphen or contain two consecutive
     * hyphens

Example: my-snapshot-id

     */
    inline void SetDBInstanceIdentifier(Aws::String&& value) { m_dBInstanceIdentifierHasBeenSet = true; m_dBInstanceIdentifier = std::move(value); }

    /**
     *
Name of the DB instance to create from the DB snapshot. This parameter isn't
     * case-sensitive.

Constraints:

Must contain from 1 to 63
     * numbers, letters, or hyphens

First character must be a
     * letter

Can't end with a hyphen or contain two consecutive
     * hyphens

Example: my-snapshot-id

     */
    inline void SetDBInstanceIdentifier(const char* value) { m_dBInstanceIdentifierHasBeenSet = true; m_dBInstanceIdentifier.assign(value); }

    /**
     *
Name of the DB instance to create from the DB snapshot. This parameter isn't
     * case-sensitive.

Constraints:

Must contain from 1 to 63
     * numbers, letters, or hyphens

First character must be a
     * letter

Can't end with a hyphen or contain two consecutive
     * hyphens

Example: my-snapshot-id

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBInstanceIdentifier(const Aws::String& value) { SetDBInstanceIdentifier(value); return *this;}

    /**
     *
Name of the DB instance to create from the DB snapshot. This parameter isn't
     * case-sensitive.

Constraints:

Must contain from 1 to 63
     * numbers, letters, or hyphens

First character must be a
     * letter

Can't end with a hyphen or contain two consecutive
     * hyphens

Example: my-snapshot-id

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBInstanceIdentifier(Aws::String&& value) { SetDBInstanceIdentifier(std::move(value)); return *this;}

    /**
     *
Name of the DB instance to create from the DB snapshot. This parameter isn't
     * case-sensitive.

Constraints:

Must contain from 1 to 63
     * numbers, letters, or hyphens

First character must be a
     * letter

Can't end with a hyphen or contain two consecutive
     * hyphens

Example: my-snapshot-id

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBInstanceIdentifier(const char* value) { SetDBInstanceIdentifier(value); return *this;}

    /**
     *
The identifier for the DB snapshot to restore from.

Constraints:

     *

Must match the identifier of an existing DBSnapshot.

     *
If you are restoring from a shared manual DB snapshot, the
     * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

     *

     */
    inline const Aws::String& GetDBSnapshotIdentifier() const{ return m_dBSnapshotIdentifier; }

    /**
     *
The identifier for the DB snapshot to restore from.

Constraints:

     *

Must match the identifier of an existing DBSnapshot.

     *
If you are restoring from a shared manual DB snapshot, the
     * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

     *

     */
    inline bool DBSnapshotIdentifierHasBeenSet() const { return m_dBSnapshotIdentifierHasBeenSet; }

    /**
     *
The identifier for the DB snapshot to restore from.

Constraints:

     *

Must match the identifier of an existing DBSnapshot.

     *
If you are restoring from a shared manual DB snapshot, the
     * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

     *

     */
    inline void SetDBSnapshotIdentifier(const Aws::String& value) { m_dBSnapshotIdentifierHasBeenSet = true; m_dBSnapshotIdentifier = value; }

    /**
     *
The identifier for the DB snapshot to restore from.

Constraints:

     *

Must match the identifier of an existing DBSnapshot.

     *
If you are restoring from a shared manual DB snapshot, the
     * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

     *

     */
    inline void SetDBSnapshotIdentifier(Aws::String&& value) { m_dBSnapshotIdentifierHasBeenSet = true; m_dBSnapshotIdentifier = std::move(value); }

    /**
     *
The identifier for the DB snapshot to restore from.

Constraints:

     *

Must match the identifier of an existing DBSnapshot.

     *
If you are restoring from a shared manual DB snapshot, the
     * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

     *

     */
    inline void SetDBSnapshotIdentifier(const char* value) { m_dBSnapshotIdentifierHasBeenSet = true; m_dBSnapshotIdentifier.assign(value); }

    /**
     *
The identifier for the DB snapshot to restore from.

Constraints:

     *

Must match the identifier of an existing DBSnapshot.

     *
If you are restoring from a shared manual DB snapshot, the
     * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBSnapshotIdentifier(const Aws::String& value) { SetDBSnapshotIdentifier(value); return *this;}

    /**
     *
The identifier for the DB snapshot to restore from.

Constraints:

     *

Must match the identifier of an existing DBSnapshot.

     *
If you are restoring from a shared manual DB snapshot, the
     * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBSnapshotIdentifier(Aws::String&& value) { SetDBSnapshotIdentifier(std::move(value)); return *this;}

    /**
     *
The identifier for the DB snapshot to restore from.

Constraints:

     *

Must match the identifier of an existing DBSnapshot.

     *
If you are restoring from a shared manual DB snapshot, the
     * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBSnapshotIdentifier(const char* value) { SetDBSnapshotIdentifier(value); return *this;}

    /**
     *
The compute and memory capacity of the Amazon RDS DB instance, for example,
     * db.m4.large. Not all DB instance classes are available in all AWS
     * Regions, or for all database engines. For the full list of DB instance classes,
     * and availability for your engine, see DB
     * Instance Class in the Amazon RDS User Guide.

Default: The
     * same DBInstanceClass as the original DB instance.

     */
    inline const Aws::String& GetDBInstanceClass() const{ return m_dBInstanceClass; }

    /**
     *
The compute and memory capacity of the Amazon RDS DB instance, for example,
     * db.m4.large. Not all DB instance classes are available in all AWS
     * Regions, or for all database engines. For the full list of DB instance classes,
     * and availability for your engine, see DB
     * Instance Class in the Amazon RDS User Guide.

Default: The
     * same DBInstanceClass as the original DB instance.

     */
    inline bool DBInstanceClassHasBeenSet() const { return m_dBInstanceClassHasBeenSet; }

    /**
     *
The compute and memory capacity of the Amazon RDS DB instance, for example,
     * db.m4.large. Not all DB instance classes are available in all AWS
     * Regions, or for all database engines. For the full list of DB instance classes,
     * and availability for your engine, see DB
     * Instance Class in the Amazon RDS User Guide.

Default: The
     * same DBInstanceClass as the original DB instance.

     */
    inline void SetDBInstanceClass(const Aws::String& value) { m_dBInstanceClassHasBeenSet = true; m_dBInstanceClass = value; }

    /**
     *
The compute and memory capacity of the Amazon RDS DB instance, for example,
     * db.m4.large. Not all DB instance classes are available in all AWS
     * Regions, or for all database engines. For the full list of DB instance classes,
     * and availability for your engine, see DB
     * Instance Class in the Amazon RDS User Guide.

Default: The
     * same DBInstanceClass as the original DB instance.

     */
    inline void SetDBInstanceClass(Aws::String&& value) { m_dBInstanceClassHasBeenSet = true; m_dBInstanceClass = std::move(value); }

    /**
     *
The compute and memory capacity of the Amazon RDS DB instance, for example,
     * db.m4.large. Not all DB instance classes are available in all AWS
     * Regions, or for all database engines. For the full list of DB instance classes,
     * and availability for your engine, see DB
     * Instance Class in the Amazon RDS User Guide.

Default: The
     * same DBInstanceClass as the original DB instance.

     */
    inline void SetDBInstanceClass(const char* value) { m_dBInstanceClassHasBeenSet = true; m_dBInstanceClass.assign(value); }

    /**
     *
The compute and memory capacity of the Amazon RDS DB instance, for example,
     * db.m4.large. Not all DB instance classes are available in all AWS
     * Regions, or for all database engines. For the full list of DB instance classes,
     * and availability for your engine, see DB
     * Instance Class in the Amazon RDS User Guide.

Default: The
     * same DBInstanceClass as the original DB instance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBInstanceClass(const Aws::String& value) { SetDBInstanceClass(value); return *this;}

    /**
     *
The compute and memory capacity of the Amazon RDS DB instance, for example,
     * db.m4.large. Not all DB instance classes are available in all AWS
     * Regions, or for all database engines. For the full list of DB instance classes,
     * and availability for your engine, see DB
     * Instance Class in the Amazon RDS User Guide.

Default: The
     * same DBInstanceClass as the original DB instance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBInstanceClass(Aws::String&& value) { SetDBInstanceClass(std::move(value)); return *this;}

    /**
     *
The compute and memory capacity of the Amazon RDS DB instance, for example,
     * db.m4.large. Not all DB instance classes are available in all AWS
     * Regions, or for all database engines. For the full list of DB instance classes,
     * and availability for your engine, see DB
     * Instance Class in the Amazon RDS User Guide.

Default: The
     * same DBInstanceClass as the original DB instance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBInstanceClass(const char* value) { SetDBInstanceClass(value); return *this;}

    /**
     *
The port number on which the database accepts connections.

Default:
     * The same port as the original DB instance

Constraints: Value must be
     * 1150-65535

     */
    inline int GetPort() const{ return m_port; }

    /**
     *
The port number on which the database accepts connections.

Default:
     * The same port as the original DB instance

Constraints: Value must be
     * 1150-65535

     */
    inline bool PortHasBeenSet() const { return m_portHasBeenSet; }

    /**
     *
The port number on which the database accepts connections.

Default:
     * The same port as the original DB instance

Constraints: Value must be
     * 1150-65535

     */
    inline void SetPort(int value) { m_portHasBeenSet = true; m_port = value; }

    /**
     *
The port number on which the database accepts connections.

Default:
     * The same port as the original DB instance

Constraints: Value must be
     * 1150-65535

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithPort(int value) { SetPort(value); return *this;}

    /**
     *
The Availability Zone (AZ) where the DB instance will be created.

     *
Default: A random, system-chosen Availability Zone.

Constraint: You
     * can't specify the AvailabilityZone parameter if the DB instance is
     * a Multi-AZ deployment.

Example: us-east-1a

     */
    inline const Aws::String& GetAvailabilityZone() const{ return m_availabilityZone; }

    /**
     *
The Availability Zone (AZ) where the DB instance will be created.

     *
Default: A random, system-chosen Availability Zone.

Constraint: You
     * can't specify the AvailabilityZone parameter if the DB instance is
     * a Multi-AZ deployment.

Example: us-east-1a

     */
    inline bool AvailabilityZoneHasBeenSet() const { return m_availabilityZoneHasBeenSet; }

    /**
     *
The Availability Zone (AZ) where the DB instance will be created.

     *
Default: A random, system-chosen Availability Zone.

Constraint: You
     * can't specify the AvailabilityZone parameter if the DB instance is
     * a Multi-AZ deployment.

Example: us-east-1a

     */
    inline void SetAvailabilityZone(const Aws::String& value) { m_availabilityZoneHasBeenSet = true; m_availabilityZone = value; }

    /**
     *
The Availability Zone (AZ) where the DB instance will be created.

     *
Default: A random, system-chosen Availability Zone.

Constraint: You
     * can't specify the AvailabilityZone parameter if the DB instance is
     * a Multi-AZ deployment.

Example: us-east-1a

     */
    inline void SetAvailabilityZone(Aws::String&& value) { m_availabilityZoneHasBeenSet = true; m_availabilityZone = std::move(value); }

    /**
     *
The Availability Zone (AZ) where the DB instance will be created.

     *
Default: A random, system-chosen Availability Zone.

Constraint: You
     * can't specify the AvailabilityZone parameter if the DB instance is
     * a Multi-AZ deployment.

Example: us-east-1a

     */
    inline void SetAvailabilityZone(const char* value) { m_availabilityZoneHasBeenSet = true; m_availabilityZone.assign(value); }

    /**
     *
The Availability Zone (AZ) where the DB instance will be created.

     *
Default: A random, system-chosen Availability Zone.

Constraint: You
     * can't specify the AvailabilityZone parameter if the DB instance is
     * a Multi-AZ deployment.

Example: us-east-1a

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithAvailabilityZone(const Aws::String& value) { SetAvailabilityZone(value); return *this;}

    /**
     *
The Availability Zone (AZ) where the DB instance will be created.

     *
Default: A random, system-chosen Availability Zone.

Constraint: You
     * can't specify the AvailabilityZone parameter if the DB instance is
     * a Multi-AZ deployment.

Example: us-east-1a

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithAvailabilityZone(Aws::String&& value) { SetAvailabilityZone(std::move(value)); return *this;}

    /**
     *
The Availability Zone (AZ) where the DB instance will be created.

     *
Default: A random, system-chosen Availability Zone.

Constraint: You
     * can't specify the AvailabilityZone parameter if the DB instance is
     * a Multi-AZ deployment.

Example: us-east-1a

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithAvailabilityZone(const char* value) { SetAvailabilityZone(value); return *this;}

    /**
     *
The DB subnet group name to use for the new instance.

Constraints: If
     * supplied, must match the name of an existing DBSubnetGroup.

Example:
     * mySubnetgroup

     */
    inline const Aws::String& GetDBSubnetGroupName() const{ return m_dBSubnetGroupName; }

    /**
     *
The DB subnet group name to use for the new instance.

Constraints: If
     * supplied, must match the name of an existing DBSubnetGroup.

Example:
     * mySubnetgroup

     */
    inline bool DBSubnetGroupNameHasBeenSet() const { return m_dBSubnetGroupNameHasBeenSet; }

    /**
     *
The DB subnet group name to use for the new instance.

Constraints: If
     * supplied, must match the name of an existing DBSubnetGroup.

Example:
     * mySubnetgroup

     */
    inline void SetDBSubnetGroupName(const Aws::String& value) { m_dBSubnetGroupNameHasBeenSet = true; m_dBSubnetGroupName = value; }

    /**
     *
The DB subnet group name to use for the new instance.

Constraints: If
     * supplied, must match the name of an existing DBSubnetGroup.

Example:
     * mySubnetgroup

     */
    inline void SetDBSubnetGroupName(Aws::String&& value) { m_dBSubnetGroupNameHasBeenSet = true; m_dBSubnetGroupName = std::move(value); }

    /**
     *
The DB subnet group name to use for the new instance.

Constraints: If
     * supplied, must match the name of an existing DBSubnetGroup.

Example:
     * mySubnetgroup

     */
    inline void SetDBSubnetGroupName(const char* value) { m_dBSubnetGroupNameHasBeenSet = true; m_dBSubnetGroupName.assign(value); }

    /**
     *
The DB subnet group name to use for the new instance.

Constraints: If
     * supplied, must match the name of an existing DBSubnetGroup.

Example:
     * mySubnetgroup

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBSubnetGroupName(const Aws::String& value) { SetDBSubnetGroupName(value); return *this;}

    /**
     *
The DB subnet group name to use for the new instance.

Constraints: If
     * supplied, must match the name of an existing DBSubnetGroup.

Example:
     * mySubnetgroup

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBSubnetGroupName(Aws::String&& value) { SetDBSubnetGroupName(std::move(value)); return *this;}

    /**
     *
The DB subnet group name to use for the new instance.

Constraints: If
     * supplied, must match the name of an existing DBSubnetGroup.

Example:
     * mySubnetgroup

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBSubnetGroupName(const char* value) { SetDBSubnetGroupName(value); return *this;}

    /**
     *
A value that indicates whether the DB instance is a Multi-AZ deployment.

     *
Constraint: You can't specify the AvailabilityZone parameter if
     * the DB instance is a Multi-AZ deployment.

     */
    inline bool GetMultiAZ() const{ return m_multiAZ; }

    /**
     *
A value that indicates whether the DB instance is a Multi-AZ deployment.

     *
Constraint: You can't specify the AvailabilityZone parameter if
     * the DB instance is a Multi-AZ deployment.

     */
    inline bool MultiAZHasBeenSet() const { return m_multiAZHasBeenSet; }

    /**
     *
A value that indicates whether the DB instance is a Multi-AZ deployment.

     *
Constraint: You can't specify the AvailabilityZone parameter if
     * the DB instance is a Multi-AZ deployment.

     */
    inline void SetMultiAZ(bool value) { m_multiAZHasBeenSet = true; m_multiAZ = value; }

    /**
     *
A value that indicates whether the DB instance is a Multi-AZ deployment.

     *
Constraint: You can't specify the AvailabilityZone parameter if
     * the DB instance is a Multi-AZ deployment.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithMultiAZ(bool value) { SetMultiAZ(value); return *this;}

    /**
     *
A value that indicates whether the DB instance is publicly accessible.

     *
When the DB instance is publicly accessible, its DNS endpoint resolves to the
     * private IP address from within the DB instance's VPC, and to the public IP
     * address from outside of the DB instance's VPC. Access to the DB instance is
     * ultimately controlled by the security group it uses, and that public access is
     * not permitted if the security group assigned to the DB instance doesn't permit
     * it.

When the DB instance isn't publicly accessible, it is an internal DB
     * instance with a DNS name that resolves to a private IP address.

For more
     * information, see CreateDBInstance.

     */
    inline bool GetPubliclyAccessible() const{ return m_publiclyAccessible; }

    /**
     *
A value that indicates whether the DB instance is publicly accessible.

     *
When the DB instance is publicly accessible, its DNS endpoint resolves to the
     * private IP address from within the DB instance's VPC, and to the public IP
     * address from outside of the DB instance's VPC. Access to the DB instance is
     * ultimately controlled by the security group it uses, and that public access is
     * not permitted if the security group assigned to the DB instance doesn't permit
     * it.

When the DB instance isn't publicly accessible, it is an internal DB
     * instance with a DNS name that resolves to a private IP address.

For more
     * information, see CreateDBInstance.

     */
    inline bool PubliclyAccessibleHasBeenSet() const { return m_publiclyAccessibleHasBeenSet; }

    /**
     *
A value that indicates whether the DB instance is publicly accessible.

     *
When the DB instance is publicly accessible, its DNS endpoint resolves to the
     * private IP address from within the DB instance's VPC, and to the public IP
     * address from outside of the DB instance's VPC. Access to the DB instance is
     * ultimately controlled by the security group it uses, and that public access is
     * not permitted if the security group assigned to the DB instance doesn't permit
     * it.

When the DB instance isn't publicly accessible, it is an internal DB
     * instance with a DNS name that resolves to a private IP address.

For more
     * information, see CreateDBInstance.

     */
    inline void SetPubliclyAccessible(bool value) { m_publiclyAccessibleHasBeenSet = true; m_publiclyAccessible = value; }

    /**
     *
A value that indicates whether the DB instance is publicly accessible.

     *
When the DB instance is publicly accessible, its DNS endpoint resolves to the
     * private IP address from within the DB instance's VPC, and to the public IP
     * address from outside of the DB instance's VPC. Access to the DB instance is
     * ultimately controlled by the security group it uses, and that public access is
     * not permitted if the security group assigned to the DB instance doesn't permit
     * it.

When the DB instance isn't publicly accessible, it is an internal DB
     * instance with a DNS name that resolves to a private IP address.

For more
     * information, see CreateDBInstance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithPubliclyAccessible(bool value) { SetPubliclyAccessible(value); return *this;}

    /**
     *
A value that indicates whether minor version upgrades are applied
     * automatically to the DB instance during the maintenance window.

     */
    inline bool GetAutoMinorVersionUpgrade() const{ return m_autoMinorVersionUpgrade; }

    /**
     *
A value that indicates whether minor version upgrades are applied
     * automatically to the DB instance during the maintenance window.

     */
    inline bool AutoMinorVersionUpgradeHasBeenSet() const { return m_autoMinorVersionUpgradeHasBeenSet; }

    /**
     *
A value that indicates whether minor version upgrades are applied
     * automatically to the DB instance during the maintenance window.

     */
    inline void SetAutoMinorVersionUpgrade(bool value) { m_autoMinorVersionUpgradeHasBeenSet = true; m_autoMinorVersionUpgrade = value; }

    /**
     *
A value that indicates whether minor version upgrades are applied
     * automatically to the DB instance during the maintenance window.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithAutoMinorVersionUpgrade(bool value) { SetAutoMinorVersionUpgrade(value); return *this;}

    /**
     *
License model information for the restored DB instance.

Default: Same
     * as source.

 Valid values: license-included |
     * bring-your-own-license | general-public-license

     */
    inline const Aws::String& GetLicenseModel() const{ return m_licenseModel; }

    /**
     *
License model information for the restored DB instance.

Default: Same
     * as source.

 Valid values: license-included |
     * bring-your-own-license | general-public-license

     */
    inline bool LicenseModelHasBeenSet() const { return m_licenseModelHasBeenSet; }

    /**
     *
License model information for the restored DB instance.

Default: Same
     * as source.

 Valid values: license-included |
     * bring-your-own-license | general-public-license

     */
    inline void SetLicenseModel(const Aws::String& value) { m_licenseModelHasBeenSet = true; m_licenseModel = value; }

    /**
     *
License model information for the restored DB instance.

Default: Same
     * as source.

 Valid values: license-included |
     * bring-your-own-license | general-public-license

     */
    inline void SetLicenseModel(Aws::String&& value) { m_licenseModelHasBeenSet = true; m_licenseModel = std::move(value); }

    /**
     *
License model information for the restored DB instance.

Default: Same
     * as source.

 Valid values: license-included |
     * bring-your-own-license | general-public-license

     */
    inline void SetLicenseModel(const char* value) { m_licenseModelHasBeenSet = true; m_licenseModel.assign(value); }

    /**
     *
License model information for the restored DB instance.

Default: Same
     * as source.

 Valid values: license-included |
     * bring-your-own-license | general-public-license

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithLicenseModel(const Aws::String& value) { SetLicenseModel(value); return *this;}

    /**
     *
License model information for the restored DB instance.

Default: Same
     * as source.

 Valid values: license-included |
     * bring-your-own-license | general-public-license

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithLicenseModel(Aws::String&& value) { SetLicenseModel(std::move(value)); return *this;}

    /**
     *
License model information for the restored DB instance.

Default: Same
     * as source.

 Valid values: license-included |
     * bring-your-own-license | general-public-license

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithLicenseModel(const char* value) { SetLicenseModel(value); return *this;}

    /**
     *
The database name for the restored DB instance.

This parameter
     * doesn't apply to the MySQL, PostgreSQL, or MariaDB engines.

     */
    inline const Aws::String& GetDBName() const{ return m_dBName; }

    /**
     *
The database name for the restored DB instance.

This parameter
     * doesn't apply to the MySQL, PostgreSQL, or MariaDB engines.

     */
    inline bool DBNameHasBeenSet() const { return m_dBNameHasBeenSet; }

    /**
     *
The database name for the restored DB instance.

This parameter
     * doesn't apply to the MySQL, PostgreSQL, or MariaDB engines.

     */
    inline void SetDBName(const Aws::String& value) { m_dBNameHasBeenSet = true; m_dBName = value; }

    /**
     *
The database name for the restored DB instance.

This parameter
     * doesn't apply to the MySQL, PostgreSQL, or MariaDB engines.

     */
    inline void SetDBName(Aws::String&& value) { m_dBNameHasBeenSet = true; m_dBName = std::move(value); }

    /**
     *
The database name for the restored DB instance.

This parameter
     * doesn't apply to the MySQL, PostgreSQL, or MariaDB engines.

     */
    inline void SetDBName(const char* value) { m_dBNameHasBeenSet = true; m_dBName.assign(value); }

    /**
     *
The database name for the restored DB instance.

This parameter
     * doesn't apply to the MySQL, PostgreSQL, or MariaDB engines.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBName(const Aws::String& value) { SetDBName(value); return *this;}

    /**
     *
The database name for the restored DB instance.

This parameter
     * doesn't apply to the MySQL, PostgreSQL, or MariaDB engines.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBName(Aws::String&& value) { SetDBName(std::move(value)); return *this;}

    /**
     *
The database name for the restored DB instance.

This parameter
     * doesn't apply to the MySQL, PostgreSQL, or MariaDB engines.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBName(const char* value) { SetDBName(value); return *this;}

    /**
     *
The database engine to use for the new instance.

Default: The same as
     * source

Constraint: Must be compatible with the engine of the source. For
     * example, you can restore a MariaDB 10.1 DB instance from a MySQL 5.6
     * snapshot.

Valid Values:

 mariadb

     *

 mysql

 oracle-ee

     *

 oracle-se2

     * oracle-se1

 oracle-se

     *

 postgres

 sqlserver-ee
     *

 sqlserver-se

     * sqlserver-ex

 sqlserver-web

     *

     */
    inline const Aws::String& GetEngine() const{ return m_engine; }

    /**
     *
The database engine to use for the new instance.

Default: The same as
     * source

Constraint: Must be compatible with the engine of the source. For
     * example, you can restore a MariaDB 10.1 DB instance from a MySQL 5.6
     * snapshot.

Valid Values:

 mariadb

     *

 mysql

 oracle-ee

     *

 oracle-se2

     * oracle-se1

 oracle-se

     *

 postgres

 sqlserver-ee
     *

 sqlserver-se

     * sqlserver-ex

 sqlserver-web

     *

     */
    inline bool EngineHasBeenSet() const { return m_engineHasBeenSet; }

    /**
     *
The database engine to use for the new instance.

Default: The same as
     * source

Constraint: Must be compatible with the engine of the source. For
     * example, you can restore a MariaDB 10.1 DB instance from a MySQL 5.6
     * snapshot.

Valid Values:

 mariadb

     *

 mysql

 oracle-ee

     *

 oracle-se2

     * oracle-se1

 oracle-se

     *

 postgres

 sqlserver-ee
     *

 sqlserver-se

     * sqlserver-ex

 sqlserver-web

     *

     */
    inline void SetEngine(const Aws::String& value) { m_engineHasBeenSet = true; m_engine = value; }

    /**
     *
The database engine to use for the new instance.

Default: The same as
     * source

Constraint: Must be compatible with the engine of the source. For
     * example, you can restore a MariaDB 10.1 DB instance from a MySQL 5.6
     * snapshot.

Valid Values:

 mariadb

     *

 mysql

 oracle-ee

     *

 oracle-se2

     * oracle-se1

 oracle-se

     *

 postgres

 sqlserver-ee
     *

 sqlserver-se

     * sqlserver-ex

 sqlserver-web

     *

     */
    inline void SetEngine(Aws::String&& value) { m_engineHasBeenSet = true; m_engine = std::move(value); }

    /**
     *
The database engine to use for the new instance.

Default: The same as
     * source

Constraint: Must be compatible with the engine of the source. For
     * example, you can restore a MariaDB 10.1 DB instance from a MySQL 5.6
     * snapshot.

Valid Values:

 mariadb

     *

 mysql

 oracle-ee

     *

 oracle-se2

     * oracle-se1

 oracle-se

     *

 postgres

 sqlserver-ee
     *

 sqlserver-se

     * sqlserver-ex

 sqlserver-web

     *

     */
    inline void SetEngine(const char* value) { m_engineHasBeenSet = true; m_engine.assign(value); }

    /**
     *
The database engine to use for the new instance.

Default: The same as
     * source

Constraint: Must be compatible with the engine of the source. For
     * example, you can restore a MariaDB 10.1 DB instance from a MySQL 5.6
     * snapshot.

Valid Values:

 mariadb

     *

 mysql

 oracle-ee

     *

 oracle-se2

     * oracle-se1

 oracle-se

     *

 postgres

 sqlserver-ee
     *

 sqlserver-se

     * sqlserver-ex

 sqlserver-web

     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithEngine(const Aws::String& value) { SetEngine(value); return *this;}

    /**
     *
The database engine to use for the new instance.

Default: The same as
     * source

Constraint: Must be compatible with the engine of the source. For
     * example, you can restore a MariaDB 10.1 DB instance from a MySQL 5.6
     * snapshot.

Valid Values:

 mariadb

     *

 mysql

 oracle-ee

     *

 oracle-se2

     * oracle-se1

 oracle-se

     *

 postgres

 sqlserver-ee
     *

 sqlserver-se

     * sqlserver-ex

 sqlserver-web

     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithEngine(Aws::String&& value) { SetEngine(std::move(value)); return *this;}

    /**
     *
The database engine to use for the new instance.

Default: The same as
     * source

Constraint: Must be compatible with the engine of the source. For
     * example, you can restore a MariaDB 10.1 DB instance from a MySQL 5.6
     * snapshot.

Valid Values:

 mariadb

     *

 mysql

 oracle-ee

     *

 oracle-se2

     * oracle-se1

 oracle-se

     *

 postgres

 sqlserver-ee
     *

 sqlserver-se

     * sqlserver-ex

 sqlserver-web

     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithEngine(const char* value) { SetEngine(value); return *this;}

    /**
     *
Specifies the amount of provisioned IOPS for the DB instance, expressed in
     * I/O operations per second. If this parameter isn't specified, the IOPS value is
     * taken from the backup. If this parameter is set to 0, the new instance is
     * converted to a non-PIOPS instance. The conversion takes additional time, though
     * your DB instance is available for connections before the conversion starts.

     *
The provisioned IOPS value must follow the requirements for your database
     * engine. For more information, see Amazon
     * RDS Provisioned IOPS Storage to Improve Performance in the Amazon RDS
     * User Guide.

Constraints: Must be an integer greater than 1000.

     */
    inline int GetIops() const{ return m_iops; }

    /**
     *
Specifies the amount of provisioned IOPS for the DB instance, expressed in
     * I/O operations per second. If this parameter isn't specified, the IOPS value is
     * taken from the backup. If this parameter is set to 0, the new instance is
     * converted to a non-PIOPS instance. The conversion takes additional time, though
     * your DB instance is available for connections before the conversion starts.

     *
The provisioned IOPS value must follow the requirements for your database
     * engine. For more information, see Amazon
     * RDS Provisioned IOPS Storage to Improve Performance in the Amazon RDS
     * User Guide.

Constraints: Must be an integer greater than 1000.

     */
    inline bool IopsHasBeenSet() const { return m_iopsHasBeenSet; }

    /**
     *
Specifies the amount of provisioned IOPS for the DB instance, expressed in
     * I/O operations per second. If this parameter isn't specified, the IOPS value is
     * taken from the backup. If this parameter is set to 0, the new instance is
     * converted to a non-PIOPS instance. The conversion takes additional time, though
     * your DB instance is available for connections before the conversion starts.

     *
The provisioned IOPS value must follow the requirements for your database
     * engine. For more information, see Amazon
     * RDS Provisioned IOPS Storage to Improve Performance in the Amazon RDS
     * User Guide.

Constraints: Must be an integer greater than 1000.

     */
    inline void SetIops(int value) { m_iopsHasBeenSet = true; m_iops = value; }

    /**
     *
Specifies the amount of provisioned IOPS for the DB instance, expressed in
     * I/O operations per second. If this parameter isn't specified, the IOPS value is
     * taken from the backup. If this parameter is set to 0, the new instance is
     * converted to a non-PIOPS instance. The conversion takes additional time, though
     * your DB instance is available for connections before the conversion starts.

     *
The provisioned IOPS value must follow the requirements for your database
     * engine. For more information, see Amazon
     * RDS Provisioned IOPS Storage to Improve Performance in the Amazon RDS
     * User Guide.

Constraints: Must be an integer greater than 1000.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithIops(int value) { SetIops(value); return *this;}

    /**
     *
The name of the option group to be used for the restored DB instance.

     *
Permanent options, such as the TDE option for Oracle Advanced Security TDE,
     * can't be removed from an option group, and that option group can't be removed
     * from a DB instance once it is associated with a DB instance

     */
    inline const Aws::String& GetOptionGroupName() const{ return m_optionGroupName; }

    /**
     *
The name of the option group to be used for the restored DB instance.

     *
Permanent options, such as the TDE option for Oracle Advanced Security TDE,
     * can't be removed from an option group, and that option group can't be removed
     * from a DB instance once it is associated with a DB instance

     */
    inline bool OptionGroupNameHasBeenSet() const { return m_optionGroupNameHasBeenSet; }

    /**
     *
The name of the option group to be used for the restored DB instance.

     *
Permanent options, such as the TDE option for Oracle Advanced Security TDE,
     * can't be removed from an option group, and that option group can't be removed
     * from a DB instance once it is associated with a DB instance

     */
    inline void SetOptionGroupName(const Aws::String& value) { m_optionGroupNameHasBeenSet = true; m_optionGroupName = value; }

    /**
     *
The name of the option group to be used for the restored DB instance.

     *
Permanent options, such as the TDE option for Oracle Advanced Security TDE,
     * can't be removed from an option group, and that option group can't be removed
     * from a DB instance once it is associated with a DB instance

     */
    inline void SetOptionGroupName(Aws::String&& value) { m_optionGroupNameHasBeenSet = true; m_optionGroupName = std::move(value); }

    /**
     *
The name of the option group to be used for the restored DB instance.

     *
Permanent options, such as the TDE option for Oracle Advanced Security TDE,
     * can't be removed from an option group, and that option group can't be removed
     * from a DB instance once it is associated with a DB instance

     */
    inline void SetOptionGroupName(const char* value) { m_optionGroupNameHasBeenSet = true; m_optionGroupName.assign(value); }

    /**
     *
The name of the option group to be used for the restored DB instance.

     *
Permanent options, such as the TDE option for Oracle Advanced Security TDE,
     * can't be removed from an option group, and that option group can't be removed
     * from a DB instance once it is associated with a DB instance

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithOptionGroupName(const Aws::String& value) { SetOptionGroupName(value); return *this;}

    /**
     *
The name of the option group to be used for the restored DB instance.

     *
Permanent options, such as the TDE option for Oracle Advanced Security TDE,
     * can't be removed from an option group, and that option group can't be removed
     * from a DB instance once it is associated with a DB instance

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithOptionGroupName(Aws::String&& value) { SetOptionGroupName(std::move(value)); return *this;}

    /**
     *
The name of the option group to be used for the restored DB instance.

     *
Permanent options, such as the TDE option for Oracle Advanced Security TDE,
     * can't be removed from an option group, and that option group can't be removed
     * from a DB instance once it is associated with a DB instance

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithOptionGroupName(const char* value) { SetOptionGroupName(value); return *this;}

    inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }

    inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }

    inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }

    inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }

    inline RestoreDBInstanceFromDBSnapshotRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}

    inline RestoreDBInstanceFromDBSnapshotRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}

    inline RestoreDBInstanceFromDBSnapshotRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }

    inline RestoreDBInstanceFromDBSnapshotRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }

    /**
     *
Specifies the storage type to be associated with the DB instance.

     * Valid values: standard | gp2 | io1

 If you specify
     * io1, you must also include a value for the Iops
     * parameter.

 Default: io1 if the Iops parameter
     * is specified, otherwise gp2

     */
    inline const Aws::String& GetStorageType() const{ return m_storageType; }

    /**
     *
Specifies the storage type to be associated with the DB instance.

     * Valid values: standard | gp2 | io1

 If you specify
     * io1, you must also include a value for the Iops
     * parameter.

 Default: io1 if the Iops parameter
     * is specified, otherwise gp2

     */
    inline bool StorageTypeHasBeenSet() const { return m_storageTypeHasBeenSet; }

    /**
     *
Specifies the storage type to be associated with the DB instance.

     * Valid values: standard | gp2 | io1

 If you specify
     * io1, you must also include a value for the Iops
     * parameter.

 Default: io1 if the Iops parameter
     * is specified, otherwise gp2

     */
    inline void SetStorageType(const Aws::String& value) { m_storageTypeHasBeenSet = true; m_storageType = value; }

    /**
     *
Specifies the storage type to be associated with the DB instance.

     * Valid values: standard | gp2 | io1

 If you specify
     * io1, you must also include a value for the Iops
     * parameter.

 Default: io1 if the Iops parameter
     * is specified, otherwise gp2

     */
    inline void SetStorageType(Aws::String&& value) { m_storageTypeHasBeenSet = true; m_storageType = std::move(value); }

    /**
     *
Specifies the storage type to be associated with the DB instance.

     * Valid values: standard | gp2 | io1

 If you specify
     * io1, you must also include a value for the Iops
     * parameter.

 Default: io1 if the Iops parameter
     * is specified, otherwise gp2

     */
    inline void SetStorageType(const char* value) { m_storageTypeHasBeenSet = true; m_storageType.assign(value); }

    /**
     *
Specifies the storage type to be associated with the DB instance.

     * Valid values: standard | gp2 | io1

 If you specify
     * io1, you must also include a value for the Iops
     * parameter.

 Default: io1 if the Iops parameter
     * is specified, otherwise gp2

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithStorageType(const Aws::String& value) { SetStorageType(value); return *this;}

    /**
     *
Specifies the storage type to be associated with the DB instance.

     * Valid values: standard | gp2 | io1

 If you specify
     * io1, you must also include a value for the Iops
     * parameter.

 Default: io1 if the Iops parameter
     * is specified, otherwise gp2

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithStorageType(Aws::String&& value) { SetStorageType(std::move(value)); return *this;}

    /**
     *
Specifies the storage type to be associated with the DB instance.

     * Valid values: standard | gp2 | io1

 If you specify
     * io1, you must also include a value for the Iops
     * parameter.

 Default: io1 if the Iops parameter
     * is specified, otherwise gp2

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithStorageType(const char* value) { SetStorageType(value); return *this;}

    /**
     *
The ARN from the key store with which to associate the instance for TDE
     * encryption.

     */
    inline const Aws::String& GetTdeCredentialArn() const{ return m_tdeCredentialArn; }

    /**
     *
The ARN from the key store with which to associate the instance for TDE
     * encryption.

     */
    inline bool TdeCredentialArnHasBeenSet() const { return m_tdeCredentialArnHasBeenSet; }

    /**
     *
The ARN from the key store with which to associate the instance for TDE
     * encryption.

     */
    inline void SetTdeCredentialArn(const Aws::String& value) { m_tdeCredentialArnHasBeenSet = true; m_tdeCredentialArn = value; }

    /**
     *
The ARN from the key store with which to associate the instance for TDE
     * encryption.

     */
    inline void SetTdeCredentialArn(Aws::String&& value) { m_tdeCredentialArnHasBeenSet = true; m_tdeCredentialArn = std::move(value); }

    /**
     *
The ARN from the key store with which to associate the instance for TDE
     * encryption.

     */
    inline void SetTdeCredentialArn(const char* value) { m_tdeCredentialArnHasBeenSet = true; m_tdeCredentialArn.assign(value); }

    /**
     *
The ARN from the key store with which to associate the instance for TDE
     * encryption.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithTdeCredentialArn(const Aws::String& value) { SetTdeCredentialArn(value); return *this;}

    /**
     *
The ARN from the key store with which to associate the instance for TDE
     * encryption.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithTdeCredentialArn(Aws::String&& value) { SetTdeCredentialArn(std::move(value)); return *this;}

    /**
     *
The ARN from the key store with which to associate the instance for TDE
     * encryption.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithTdeCredentialArn(const char* value) { SetTdeCredentialArn(value); return *this;}

    /**
     *
The password for the given ARN from the key store in order to access the
     * device.

     */
    inline const Aws::String& GetTdeCredentialPassword() const{ return m_tdeCredentialPassword; }

    /**
     *
The password for the given ARN from the key store in order to access the
     * device.

     */
    inline bool TdeCredentialPasswordHasBeenSet() const { return m_tdeCredentialPasswordHasBeenSet; }

    /**
     *
The password for the given ARN from the key store in order to access the
     * device.

     */
    inline void SetTdeCredentialPassword(const Aws::String& value) { m_tdeCredentialPasswordHasBeenSet = true; m_tdeCredentialPassword = value; }

    /**
     *
The password for the given ARN from the key store in order to access the
     * device.

     */
    inline void SetTdeCredentialPassword(Aws::String&& value) { m_tdeCredentialPasswordHasBeenSet = true; m_tdeCredentialPassword = std::move(value); }

    /**
     *
The password for the given ARN from the key store in order to access the
     * device.

     */
    inline void SetTdeCredentialPassword(const char* value) { m_tdeCredentialPasswordHasBeenSet = true; m_tdeCredentialPassword.assign(value); }

    /**
     *
The password for the given ARN from the key store in order to access the
     * device.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithTdeCredentialPassword(const Aws::String& value) { SetTdeCredentialPassword(value); return *this;}

    /**
     *
The password for the given ARN from the key store in order to access the
     * device.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithTdeCredentialPassword(Aws::String&& value) { SetTdeCredentialPassword(std::move(value)); return *this;}

    /**
     *
The password for the given ARN from the key store in order to access the
     * device.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithTdeCredentialPassword(const char* value) { SetTdeCredentialPassword(value); return *this;}

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline const Aws::Vector<Aws::String>& GetVpcSecurityGroupIds() const{ return m_vpcSecurityGroupIds; }

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline bool VpcSecurityGroupIdsHasBeenSet() const { return m_vpcSecurityGroupIdsHasBeenSet; }

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline void SetVpcSecurityGroupIds(const Aws::Vector<Aws::String>& value) { m_vpcSecurityGroupIdsHasBeenSet = true; m_vpcSecurityGroupIds = value; }

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline void SetVpcSecurityGroupIds(Aws::Vector<Aws::String>&& value) { m_vpcSecurityGroupIdsHasBeenSet = true; m_vpcSecurityGroupIds = std::move(value); }

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithVpcSecurityGroupIds(const Aws::Vector<Aws::String>& value) { SetVpcSecurityGroupIds(value); return *this;}

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithVpcSecurityGroupIds(Aws::Vector<Aws::String>&& value) { SetVpcSecurityGroupIds(std::move(value)); return *this;}

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& AddVpcSecurityGroupIds(const Aws::String& value) { m_vpcSecurityGroupIdsHasBeenSet = true; m_vpcSecurityGroupIds.push_back(value); return *this; }

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& AddVpcSecurityGroupIds(Aws::String&& value) { m_vpcSecurityGroupIdsHasBeenSet = true; m_vpcSecurityGroupIds.push_back(std::move(value)); return *this; }

    /**
     *
 A list of EC2 VPC security groups to associate with this DB instance.

     *
 Default: The default EC2 VPC security group for the DB subnet group's VPC.
     *

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& AddVpcSecurityGroupIds(const char* value) { m_vpcSecurityGroupIdsHasBeenSet = true; m_vpcSecurityGroupIds.push_back(value); return *this; }

    /**
     *
Specify the Active Directory directory ID to restore the DB instance in. The
     * domain must be created prior to this operation. Currently, only MySQL, Microsoft
     * SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
     * Directory Domain.

For more information, see
     * Kerberos Authentication in the Amazon RDS User Guide.

     */
    inline const Aws::String& GetDomain() const{ return m_domain; }

    /**
     *
Specify the Active Directory directory ID to restore the DB instance in. The
     * domain must be created prior to this operation. Currently, only MySQL, Microsoft
     * SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
     * Directory Domain.

For more information, see
     * Kerberos Authentication in the Amazon RDS User Guide.

     */
    inline bool DomainHasBeenSet() const { return m_domainHasBeenSet; }

    /**
     *
Specify the Active Directory directory ID to restore the DB instance in. The
     * domain must be created prior to this operation. Currently, only MySQL, Microsoft
     * SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
     * Directory Domain.

For more information, see
     * Kerberos Authentication in the Amazon RDS User Guide.

     */
    inline void SetDomain(const Aws::String& value) { m_domainHasBeenSet = true; m_domain = value; }

    /**
     *
Specify the Active Directory directory ID to restore the DB instance in. The
     * domain must be created prior to this operation. Currently, only MySQL, Microsoft
     * SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
     * Directory Domain.

For more information, see
     * Kerberos Authentication in the Amazon RDS User Guide.

     */
    inline void SetDomain(Aws::String&& value) { m_domainHasBeenSet = true; m_domain = std::move(value); }

    /**
     *
Specify the Active Directory directory ID to restore the DB instance in. The
     * domain must be created prior to this operation. Currently, only MySQL, Microsoft
     * SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
     * Directory Domain.

For more information, see
     * Kerberos Authentication in the Amazon RDS User Guide.

     */
    inline void SetDomain(const char* value) { m_domainHasBeenSet = true; m_domain.assign(value); }

    /**
     *
Specify the Active Directory directory ID to restore the DB instance in. The
     * domain must be created prior to this operation. Currently, only MySQL, Microsoft
     * SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
     * Directory Domain.

For more information, see
     * Kerberos Authentication in the Amazon RDS User Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDomain(const Aws::String& value) { SetDomain(value); return *this;}

    /**
     *
Specify the Active Directory directory ID to restore the DB instance in. The
     * domain must be created prior to this operation. Currently, only MySQL, Microsoft
     * SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
     * Directory Domain.

For more information, see
     * Kerberos Authentication in the Amazon RDS User Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDomain(Aws::String&& value) { SetDomain(std::move(value)); return *this;}

    /**
     *
Specify the Active Directory directory ID to restore the DB instance in. The
     * domain must be created prior to this operation. Currently, only MySQL, Microsoft
     * SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
     * Directory Domain.

For more information, see
     * Kerberos Authentication in the Amazon RDS User Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDomain(const char* value) { SetDomain(value); return *this;}

    /**
     *
A value that indicates whether to copy all tags from the restored DB instance
     * to snapshots of the DB instance. By default, tags are not copied.

     */
    inline bool GetCopyTagsToSnapshot() const{ return m_copyTagsToSnapshot; }

    /**
     *
A value that indicates whether to copy all tags from the restored DB instance
     * to snapshots of the DB instance. By default, tags are not copied.

     */
    inline bool CopyTagsToSnapshotHasBeenSet() const { return m_copyTagsToSnapshotHasBeenSet; }

    /**
     *
A value that indicates whether to copy all tags from the restored DB instance
     * to snapshots of the DB instance. By default, tags are not copied.

     */
    inline void SetCopyTagsToSnapshot(bool value) { m_copyTagsToSnapshotHasBeenSet = true; m_copyTagsToSnapshot = value; }

    /**
     *
A value that indicates whether to copy all tags from the restored DB instance
     * to snapshots of the DB instance. By default, tags are not copied.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithCopyTagsToSnapshot(bool value) { SetCopyTagsToSnapshot(value); return *this;}

    /**
     *
Specify the name of the IAM role to be used when making API calls to the
     * Directory Service.

     */
    inline const Aws::String& GetDomainIAMRoleName() const{ return m_domainIAMRoleName; }

    /**
     *
Specify the name of the IAM role to be used when making API calls to the
     * Directory Service.

     */
    inline bool DomainIAMRoleNameHasBeenSet() const { return m_domainIAMRoleNameHasBeenSet; }

    /**
     *
Specify the name of the IAM role to be used when making API calls to the
     * Directory Service.

     */
    inline void SetDomainIAMRoleName(const Aws::String& value) { m_domainIAMRoleNameHasBeenSet = true; m_domainIAMRoleName = value; }

    /**
     *
Specify the name of the IAM role to be used when making API calls to the
     * Directory Service.

     */
    inline void SetDomainIAMRoleName(Aws::String&& value) { m_domainIAMRoleNameHasBeenSet = true; m_domainIAMRoleName = std::move(value); }

    /**
     *
Specify the name of the IAM role to be used when making API calls to the
     * Directory Service.

     */
    inline void SetDomainIAMRoleName(const char* value) { m_domainIAMRoleNameHasBeenSet = true; m_domainIAMRoleName.assign(value); }

    /**
     *
Specify the name of the IAM role to be used when making API calls to the
     * Directory Service.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDomainIAMRoleName(const Aws::String& value) { SetDomainIAMRoleName(value); return *this;}

    /**
     *
Specify the name of the IAM role to be used when making API calls to the
     * Directory Service.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDomainIAMRoleName(Aws::String&& value) { SetDomainIAMRoleName(std::move(value)); return *this;}

    /**
     *
Specify the name of the IAM role to be used when making API calls to the
     * Directory Service.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDomainIAMRoleName(const char* value) { SetDomainIAMRoleName(value); return *this;}

    /**
     *
A value that indicates whether to enable mapping of AWS Identity and Access
     * Management (IAM) accounts to database accounts. By default, mapping is
     * disabled.

For more information about IAM database authentication, see
     * IAM Database Authentication for MySQL and PostgreSQL in the Amazon RDS
     * User Guide.

     */
    inline bool GetEnableIAMDatabaseAuthentication() const{ return m_enableIAMDatabaseAuthentication; }

    /**
     *
A value that indicates whether to enable mapping of AWS Identity and Access
     * Management (IAM) accounts to database accounts. By default, mapping is
     * disabled.

For more information about IAM database authentication, see
     * IAM Database Authentication for MySQL and PostgreSQL in the Amazon RDS
     * User Guide.

     */
    inline bool EnableIAMDatabaseAuthenticationHasBeenSet() const { return m_enableIAMDatabaseAuthenticationHasBeenSet; }

    /**
     *
A value that indicates whether to enable mapping of AWS Identity and Access
     * Management (IAM) accounts to database accounts. By default, mapping is
     * disabled.

For more information about IAM database authentication, see
     * IAM Database Authentication for MySQL and PostgreSQL in the Amazon RDS
     * User Guide.

     */
    inline void SetEnableIAMDatabaseAuthentication(bool value) { m_enableIAMDatabaseAuthenticationHasBeenSet = true; m_enableIAMDatabaseAuthentication = value; }

    /**
     *
A value that indicates whether to enable mapping of AWS Identity and Access
     * Management (IAM) accounts to database accounts. By default, mapping is
     * disabled.

For more information about IAM database authentication, see
     * IAM Database Authentication for MySQL and PostgreSQL in the Amazon RDS
     * User Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithEnableIAMDatabaseAuthentication(bool value) { SetEnableIAMDatabaseAuthentication(value); return *this;}

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline const Aws::Vector<Aws::String>& GetEnableCloudwatchLogsExports() const{ return m_enableCloudwatchLogsExports; }

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline bool EnableCloudwatchLogsExportsHasBeenSet() const { return m_enableCloudwatchLogsExportsHasBeenSet; }

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline void SetEnableCloudwatchLogsExports(const Aws::Vector<Aws::String>& value) { m_enableCloudwatchLogsExportsHasBeenSet = true; m_enableCloudwatchLogsExports = value; }

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline void SetEnableCloudwatchLogsExports(Aws::Vector<Aws::String>&& value) { m_enableCloudwatchLogsExportsHasBeenSet = true; m_enableCloudwatchLogsExports = std::move(value); }

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithEnableCloudwatchLogsExports(const Aws::Vector<Aws::String>& value) { SetEnableCloudwatchLogsExports(value); return *this;}

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithEnableCloudwatchLogsExports(Aws::Vector<Aws::String>&& value) { SetEnableCloudwatchLogsExports(std::move(value)); return *this;}

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& AddEnableCloudwatchLogsExports(const Aws::String& value) { m_enableCloudwatchLogsExportsHasBeenSet = true; m_enableCloudwatchLogsExports.push_back(value); return *this; }

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& AddEnableCloudwatchLogsExports(Aws::String&& value) { m_enableCloudwatchLogsExportsHasBeenSet = true; m_enableCloudwatchLogsExports.push_back(std::move(value)); return *this; }

    /**
     *
The list of logs that the restored DB instance is to export to CloudWatch
     * Logs. The values in the list depend on the DB engine being used. For more
     * information, see Publishing
     * Database Logs to Amazon CloudWatch Logs in the Amazon RDS User
     * Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& AddEnableCloudwatchLogsExports(const char* value) { m_enableCloudwatchLogsExportsHasBeenSet = true; m_enableCloudwatchLogsExports.push_back(value); return *this; }

    /**
     *
The number of CPU cores and the number of threads per core for the DB
     * instance class of the DB instance.

     */
    inline const Aws::Vector<ProcessorFeature>& GetProcessorFeatures() const{ return m_processorFeatures; }

    /**
     *
The number of CPU cores and the number of threads per core for the DB
     * instance class of the DB instance.

     */
    inline bool ProcessorFeaturesHasBeenSet() const { return m_processorFeaturesHasBeenSet; }

    /**
     *
The number of CPU cores and the number of threads per core for the DB
     * instance class of the DB instance.

     */
    inline void SetProcessorFeatures(const Aws::Vector<ProcessorFeature>& value) { m_processorFeaturesHasBeenSet = true; m_processorFeatures = value; }

    /**
     *
The number of CPU cores and the number of threads per core for the DB
     * instance class of the DB instance.

     */
    inline void SetProcessorFeatures(Aws::Vector<ProcessorFeature>&& value) { m_processorFeaturesHasBeenSet = true; m_processorFeatures = std::move(value); }

    /**
     *
The number of CPU cores and the number of threads per core for the DB
     * instance class of the DB instance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithProcessorFeatures(const Aws::Vector<ProcessorFeature>& value) { SetProcessorFeatures(value); return *this;}

    /**
     *
The number of CPU cores and the number of threads per core for the DB
     * instance class of the DB instance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithProcessorFeatures(Aws::Vector<ProcessorFeature>&& value) { SetProcessorFeatures(std::move(value)); return *this;}

    /**
     *
The number of CPU cores and the number of threads per core for the DB
     * instance class of the DB instance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& AddProcessorFeatures(const ProcessorFeature& value) { m_processorFeaturesHasBeenSet = true; m_processorFeatures.push_back(value); return *this; }

    /**
     *
The number of CPU cores and the number of threads per core for the DB
     * instance class of the DB instance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& AddProcessorFeatures(ProcessorFeature&& value) { m_processorFeaturesHasBeenSet = true; m_processorFeatures.push_back(std::move(value)); return *this; }

    /**
     *
A value that indicates whether the DB instance class of the DB instance uses
     * its default processor features.

     */
    inline bool GetUseDefaultProcessorFeatures() const{ return m_useDefaultProcessorFeatures; }

    /**
     *
A value that indicates whether the DB instance class of the DB instance uses
     * its default processor features.

     */
    inline bool UseDefaultProcessorFeaturesHasBeenSet() const { return m_useDefaultProcessorFeaturesHasBeenSet; }

    /**
     *
A value that indicates whether the DB instance class of the DB instance uses
     * its default processor features.

     */
    inline void SetUseDefaultProcessorFeatures(bool value) { m_useDefaultProcessorFeaturesHasBeenSet = true; m_useDefaultProcessorFeatures = value; }

    /**
     *
A value that indicates whether the DB instance class of the DB instance uses
     * its default processor features.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithUseDefaultProcessorFeatures(bool value) { SetUseDefaultProcessorFeatures(value); return *this;}

    /**
     *
The name of the DB parameter group to associate with this DB instance.

     *
If you do not specify a value for DBParameterGroupName, then the
     * default DBParameterGroup for the specified DB engine is used.

     *
Constraints:

If supplied, must match the name of an existing
     * DBParameterGroup.

Must be 1 to 255 letters, numbers, or
     * hyphens.

First character must be a letter.

     *
Can't end with a hyphen or contain two consecutive hyphens.

     */
    inline const Aws::String& GetDBParameterGroupName() const{ return m_dBParameterGroupName; }

    /**
     *
The name of the DB parameter group to associate with this DB instance.

     *
If you do not specify a value for DBParameterGroupName, then the
     * default DBParameterGroup for the specified DB engine is used.

     *
Constraints:

If supplied, must match the name of an existing
     * DBParameterGroup.

Must be 1 to 255 letters, numbers, or
     * hyphens.

First character must be a letter.

     *
Can't end with a hyphen or contain two consecutive hyphens.

     */
    inline bool DBParameterGroupNameHasBeenSet() const { return m_dBParameterGroupNameHasBeenSet; }

    /**
     *
The name of the DB parameter group to associate with this DB instance.

     *
If you do not specify a value for DBParameterGroupName, then the
     * default DBParameterGroup for the specified DB engine is used.

     *
Constraints:

If supplied, must match the name of an existing
     * DBParameterGroup.

Must be 1 to 255 letters, numbers, or
     * hyphens.

First character must be a letter.

     *
Can't end with a hyphen or contain two consecutive hyphens.

     */
    inline void SetDBParameterGroupName(const Aws::String& value) { m_dBParameterGroupNameHasBeenSet = true; m_dBParameterGroupName = value; }

    /**
     *
The name of the DB parameter group to associate with this DB instance.

     *
If you do not specify a value for DBParameterGroupName, then the
     * default DBParameterGroup for the specified DB engine is used.

     *
Constraints:

If supplied, must match the name of an existing
     * DBParameterGroup.

Must be 1 to 255 letters, numbers, or
     * hyphens.

First character must be a letter.

     *
Can't end with a hyphen or contain two consecutive hyphens.

     */
    inline void SetDBParameterGroupName(Aws::String&& value) { m_dBParameterGroupNameHasBeenSet = true; m_dBParameterGroupName = std::move(value); }

    /**
     *
The name of the DB parameter group to associate with this DB instance.

     *
If you do not specify a value for DBParameterGroupName, then the
     * default DBParameterGroup for the specified DB engine is used.

     *
Constraints:

If supplied, must match the name of an existing
     * DBParameterGroup.

Must be 1 to 255 letters, numbers, or
     * hyphens.

First character must be a letter.

     *
Can't end with a hyphen or contain two consecutive hyphens.

     */
    inline void SetDBParameterGroupName(const char* value) { m_dBParameterGroupNameHasBeenSet = true; m_dBParameterGroupName.assign(value); }

    /**
     *
The name of the DB parameter group to associate with this DB instance.

     *
If you do not specify a value for DBParameterGroupName, then the
     * default DBParameterGroup for the specified DB engine is used.

     *
Constraints:

If supplied, must match the name of an existing
     * DBParameterGroup.

Must be 1 to 255 letters, numbers, or
     * hyphens.

First character must be a letter.

     *
Can't end with a hyphen or contain two consecutive hyphens.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBParameterGroupName(const Aws::String& value) { SetDBParameterGroupName(value); return *this;}

    /**
     *
The name of the DB parameter group to associate with this DB instance.

     *
If you do not specify a value for DBParameterGroupName, then the
     * default DBParameterGroup for the specified DB engine is used.

     *
Constraints:

If supplied, must match the name of an existing
     * DBParameterGroup.

Must be 1 to 255 letters, numbers, or
     * hyphens.

First character must be a letter.

     *
Can't end with a hyphen or contain two consecutive hyphens.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBParameterGroupName(Aws::String&& value) { SetDBParameterGroupName(std::move(value)); return *this;}

    /**
     *
The name of the DB parameter group to associate with this DB instance.

     *
If you do not specify a value for DBParameterGroupName, then the
     * default DBParameterGroup for the specified DB engine is used.

     *
Constraints:

If supplied, must match the name of an existing
     * DBParameterGroup.

Must be 1 to 255 letters, numbers, or
     * hyphens.

First character must be a letter.

     *
Can't end with a hyphen or contain two consecutive hyphens.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDBParameterGroupName(const char* value) { SetDBParameterGroupName(value); return *this;}

    /**
     *
A value that indicates whether the DB instance has deletion protection
     * enabled. The database can't be deleted when deletion protection is enabled. By
     * default, deletion protection is disabled. For more information, see
     * Deleting a DB Instance.

     */
    inline bool GetDeletionProtection() const{ return m_deletionProtection; }

    /**
     *
A value that indicates whether the DB instance has deletion protection
     * enabled. The database can't be deleted when deletion protection is enabled. By
     * default, deletion protection is disabled. For more information, see
     * Deleting a DB Instance.

     */
    inline bool DeletionProtectionHasBeenSet() const { return m_deletionProtectionHasBeenSet; }

    /**
     *
A value that indicates whether the DB instance has deletion protection
     * enabled. The database can't be deleted when deletion protection is enabled. By
     * default, deletion protection is disabled. For more information, see
     * Deleting a DB Instance.

     */
    inline void SetDeletionProtection(bool value) { m_deletionProtectionHasBeenSet = true; m_deletionProtection = value; }

    /**
     *
A value that indicates whether the DB instance has deletion protection
     * enabled. The database can't be deleted when deletion protection is enabled. By
     * default, deletion protection is disabled. For more information, see
     * Deleting a DB Instance.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithDeletionProtection(bool value) { SetDeletionProtection(value); return *this;}

    /**
     *
A value that indicates whether to enable a customer-owned IP address (CoIP)
     * for an RDS on Outposts DB instance.

A CoIP provides local or
     * external connectivity to resources in your Outpost subnets through your
     * on-premises network. For some use cases, a CoIP can provide lower latency for
     * connections to the DB instance from outside of its virtual private cloud (VPC)
     * on your local network.

For more information about RDS on Outposts, see Working
     * with Amazon RDS on AWS Outposts in the Amazon RDS User Guide.

     *
For more information about CoIPs, see Customer-owned
     * IP addresses in the AWS Outposts User Guide.

     */
    inline bool GetEnableCustomerOwnedIp() const{ return m_enableCustomerOwnedIp; }

    /**
     *
A value that indicates whether to enable a customer-owned IP address (CoIP)
     * for an RDS on Outposts DB instance.

A CoIP provides local or
     * external connectivity to resources in your Outpost subnets through your
     * on-premises network. For some use cases, a CoIP can provide lower latency for
     * connections to the DB instance from outside of its virtual private cloud (VPC)
     * on your local network.

For more information about RDS on Outposts, see Working
     * with Amazon RDS on AWS Outposts in the Amazon RDS User Guide.

     *
For more information about CoIPs, see Customer-owned
     * IP addresses in the AWS Outposts User Guide.

     */
    inline bool EnableCustomerOwnedIpHasBeenSet() const { return m_enableCustomerOwnedIpHasBeenSet; }

    /**
     *
A value that indicates whether to enable a customer-owned IP address (CoIP)
     * for an RDS on Outposts DB instance.

A CoIP provides local or
     * external connectivity to resources in your Outpost subnets through your
     * on-premises network. For some use cases, a CoIP can provide lower latency for
     * connections to the DB instance from outside of its virtual private cloud (VPC)
     * on your local network.

For more information about RDS on Outposts, see Working
     * with Amazon RDS on AWS Outposts in the Amazon RDS User Guide.

     *
For more information about CoIPs, see Customer-owned
     * IP addresses in the AWS Outposts User Guide.

     */
    inline void SetEnableCustomerOwnedIp(bool value) { m_enableCustomerOwnedIpHasBeenSet = true; m_enableCustomerOwnedIp = value; }

    /**
     *
A value that indicates whether to enable a customer-owned IP address (CoIP)
     * for an RDS on Outposts DB instance.

A CoIP provides local or
     * external connectivity to resources in your Outpost subnets through your
     * on-premises network. For some use cases, a CoIP can provide lower latency for
     * connections to the DB instance from outside of its virtual private cloud (VPC)
     * on your local network.

For more information about RDS on Outposts, see Working
     * with Amazon RDS on AWS Outposts in the Amazon RDS User Guide.

     *
For more information about CoIPs, see Customer-owned
     * IP addresses in the AWS Outposts User Guide.

     */
    inline RestoreDBInstanceFromDBSnapshotRequest& WithEnableCustomerOwnedIp(bool value) { SetEnableCustomerOwnedIp(value); return *this;}

  private:

    Aws::String m_dBInstanceIdentifier;
    bool m_dBInstanceIdentifierHasBeenSet;

    Aws::String m_dBSnapshotIdentifier;
    bool m_dBSnapshotIdentifierHasBeenSet;

    Aws::String m_dBInstanceClass;
    bool m_dBInstanceClassHasBeenSet;

    int m_port;
    bool m_portHasBeenSet;

    Aws::String m_availabilityZone;
    bool m_availabilityZoneHasBeenSet;

    Aws::String m_dBSubnetGroupName;
    bool m_dBSubnetGroupNameHasBeenSet;

    bool m_multiAZ;
    bool m_multiAZHasBeenSet;

    bool m_publiclyAccessible;
    bool m_publiclyAccessibleHasBeenSet;

    bool m_autoMinorVersionUpgrade;
    bool m_autoMinorVersionUpgradeHasBeenSet;

    Aws::String m_licenseModel;
    bool m_licenseModelHasBeenSet;

    Aws::String m_dBName;
    bool m_dBNameHasBeenSet;

    Aws::String m_engine;
    bool m_engineHasBeenSet;

    int m_iops;
    bool m_iopsHasBeenSet;

    Aws::String m_optionGroupName;
    bool m_optionGroupNameHasBeenSet;

    Aws::Vector<Tag> m_tags;
    bool m_tagsHasBeenSet;

    Aws::String m_storageType;
    bool m_storageTypeHasBeenSet;

    Aws::String m_tdeCredentialArn;
    bool m_tdeCredentialArnHasBeenSet;

    Aws::String m_tdeCredentialPassword;
    bool m_tdeCredentialPasswordHasBeenSet;

    Aws::Vector<Aws::String> m_vpcSecurityGroupIds;
    bool m_vpcSecurityGroupIdsHasBeenSet;

    Aws::String m_domain;
    bool m_domainHasBeenSet;

    bool m_copyTagsToSnapshot;
    bool m_copyTagsToSnapshotHasBeenSet;

    Aws::String m_domainIAMRoleName;
    bool m_domainIAMRoleNameHasBeenSet;

    bool m_enableIAMDatabaseAuthentication;
    bool m_enableIAMDatabaseAuthenticationHasBeenSet;

    Aws::Vector<Aws::String> m_enableCloudwatchLogsExports;
    bool m_enableCloudwatchLogsExportsHasBeenSet;

    Aws::Vector<ProcessorFeature> m_processorFeatures;
    bool m_processorFeaturesHasBeenSet;

    bool m_useDefaultProcessorFeatures;
    bool m_useDefaultProcessorFeaturesHasBeenSet;

    Aws::String m_dBParameterGroupName;
    bool m_dBParameterGroupNameHasBeenSet;

    bool m_deletionProtection;
    bool m_deletionProtectionHasBeenSet;

    bool m_enableCustomerOwnedIp;
    bool m_enableCustomerOwnedIpHasBeenSet;
  };

} // namespace Model
} // namespace RDS
} // namespace Aws


text:
//MIT License
//
//Copyright(c) 2017 - 2022 nessie1980(nessie1980@gmx.de)
//
//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
//
//The above copyright notice and this permission notice shall be included in all
//copies or substantial portions of the Software.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
//SOFTWARE.

// Define for DEBUGGING
//#define DEBUG_ALL_DIVIDEND

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Forms;

namespace SharePortfolioManager.Classes.Dividend
{
    [Serializable]
    public class AllDividendsOfTheShare
    {
        #region Properties

        public CultureInfo DividendCultureInfo { get; internal set; }

        public decimal DividendValueTotalWithTaxes { get; internal set; }

        public string DividendValueTotalWithTaxesAsStr => Helper.FormatDecimal(DividendValueTotalWithTaxes, Helper.CurrencyTwoLength, true, Helper.CurrencyTwoFixLength, false, @"", DividendCultureInfo);

        public string DividendValueTotalWithTaxesAsStrUnit => Helper.FormatDecimal(DividendValueTotalWithTaxes, Helper.CurrencyTwoLength, true, Helper.CurrencyTwoFixLength, true, @"", DividendCultureInfo);

        public SortedDictionary<string, DividendYearOfTheShare> AllDividendsOfTheShareDictionary { get; } = new SortedDictionary<string, DividendYearOfTheShare>();

        #endregion Properties

        #region Methods

        /// <summary>
        /// This function sets the culture info to the list
        /// </summary>
        /// <param name="cultureInfo"></param>
        public void SetCultureInfo(CultureInfo cultureInfo)
        {
            DividendCultureInfo = cultureInfo;
        }

        /// <summary>
        /// This function adds a dividend to the list of the dividends of the share
        /// </summary>
        /// <param name="cultureInfoFc">Culture info of the payout for the foreign currency</param>
        /// <param name="csEnableFc">Flag if the payout is in a foreign currency</param>
        /// <param name="decExchangeRatio">Exchange ratio for the foreign currency</param>
        /// <param name="strGuid">Guid of the buy</param>
        /// <param name="strDate">Pay date of the new dividend list entry</param>
        /// <param name="decRate">Paid dividend of one share</param>
        /// <param name="decVolume">Share volume at the pay date</param>
        /// <param name="decTaxAtSource">Tax at source value</param>
        /// <param name="decCapitalGainsTax">Capital gains tax value</param>
        /// <param name="decSolidarityTax">Solidarity tax value</param>
        /// <param name="decSharePrice">Share price at the pay date</param>
        /// <param name="strDoc">Document of the dividend</param>
        /// <returns></returns>
        public bool AddDividend(CultureInfo cultureInfoFc, CheckState csEnableFc, decimal decExchangeRatio, string strGuid, string strDate, decimal decRate, decimal decVolume,
            decimal decTaxAtSource, decimal decCapitalGainsTax, decimal decSolidarityTax, decimal decSharePrice, string strDoc = "")
        {
#if DEBUG_ALL_DIVIDEND
            Console.WriteLine(@"Add DividendYearOfTheShare");
#endif
            try
            {
                // Get year of the date of the new dividend
                GetYearOfDate(strDate, out var year);
                if (year == null)
                    return false;

                // Search if a dividend for the given year already exists if not add it
                if (AllDividendsOfTheShareDictionary.TryGetValue(year, out var searchObject))
                {
                    if (!searchObject.AddDividendObject(DividendCultureInfo, cultureInfoFc, csEnableFc, decExchangeRatio, strGuid, strDate, decRate, decVolume,
                        decTaxAtSource, decCapitalGainsTax, decSolidarityTax, decSharePrice, strDoc))
                        return false;
                }
                else
                {
                    // Add new year dividend object for the dividend with a new year
                    var addObject = new DividendYearOfTheShare();
                    // Add dividend with the new year to the dividend year list
                    if (addObject.AddDividendObject(DividendCultureInfo, cultureInfoFc, csEnableFc, decExchangeRatio, strGuid, strDate, decRate, decVolume,
                        decTaxAtSource, decCapitalGainsTax, decSolidarityTax, decSharePrice, strDoc))
                    {
                        AllDividendsOfTheShareDictionary.Add(year, addObject);
                    }
                    else
                        return false;
                }

                // Calculate the total dividend values
                // Reset total dividend values
                DividendValueTotalWithTaxes = 0;

                //decimal tempDividendPercentValueTotalSum = 0;
                // Calculate the new total dividend value
                foreach (var calcObject in AllDividendsOfTheShareDictionary.Values)
                {
                    DividendValueTotalWithTaxes += calcObject.DividendValueYear;
                }
#if DEBUG_ALL_DIVIDEND
                Console.WriteLine(@"DividendValueTotalWithTaxes:{0}", DividendValueTotalWithTaxes);
#endif
            }
            catch (Exception ex)
            {
                Helper.ShowExceptionMessage(ex);

                return false;
            }

            return true;
        }

        /// <summary>
        /// This function removes a dividend entry from the list by the given date
        /// </summary>
        /// <param name="strGuid">Guid of the dividend which should be removed</param>
        /// <param name="strDate">Date of the dividend entry which should be removed</param>
        /// <returns>Flag if the remove was successful</returns>
        public bool RemoveDividend(string strGuid, string strDate)
        {
            try
            {
                // Get year of the date of the new dividend
                GetYearOfDate(strDate, out var year);
                if (year == null)
                    return false;

                // Search if a dividend for the given year already exists if not no remove will be made
                if (AllDividendsOfTheShareDictionary.TryGetValue(year, out var searchObject))
                {
                    if (!searchObject.RemoveDividendObject(strGuid))
                        return false;
                    if (searchObject.DividendListYear.Count == 0)
                    {
                        if (!AllDividendsOfTheShareDictionary.Remove(year))
                            return false;
                    }
                }
                else
                {
                    return false;
                }

                // Calculate the total dividend values
                // Reset total dividend values
                DividendValueTotalWithTaxes = 0;
                //DividendPercentValueTotal = 0;

                //decimal tempDividendPercentValueTotalSum = 0;
                // Calculate the new total dividend value
                foreach (var calcObject in AllDividendsOfTheShareDictionary.Values)
                {
                    DividendValueTotalWithTaxes += calcObject.DividendValueYear;
                }
            }
            catch (Exception ex)
            {
                Helper.ShowExceptionMessage(ex);

                return false;
            }

            return true;
        }

        /// <summary>
        /// This function creates a list of all dividend objects of the share
        /// </summary>
        /// <returns>List of DividendObjects or a empty list if no dividend objects exist</returns>
        public List<DividendObject> GetAllDividendsOfTheShare()
        {
            var allDividendsOfTheShare = new List<DividendObject>();

            foreach(var dividendYearOfTheShareObject in AllDividendsOfTheShareDictionary.Values)
            {
                foreach(var dividendObject in dividendYearOfTheShareObject.DividendListYear)
                {
                    allDividendsOfTheShare.Add(dividendObject);
                }
            }
            return allDividendsOfTheShare;
        }

        /// <summary>
        /// This function creates a dictionary with the years
        /// and the total dividend of the years
        /// </summary>
        /// <returns>Dictionary with the years and the dividend values of the year or empty dictionary if no year exist.</returns>
        public List<DividendYearOfTheShare> GetAllDividendsTotalValues()
        {
            var allDividendsOfTheShare = new List<DividendYearOfTheShare>();

            foreach (var key in AllDividendsOfTheShareDictionary.Keys)
            {
                allDividendsOfTheShare.Add(AllDividendsOfTheShareDictionary[key]);
            }
            return allDividendsOfTheShare;
        }

        /// <summary>
        /// This function returns the dividend object of the given date and time
        /// </summary>
        /// <param name="strGuid">Guid of the dividend</param>
        /// <param name="strDate">Date and time of the dividend</param>
        /// <returns>DividendObject or null if the search failed</returns>
        public DividendObject GetDividendObjectByGuidDate(string strGuid, string strDate)
        {
            GetYearOfDate(strDate, out var year);

            if (year == null) return null;

            if (!AllDividendsOfTheShareDictionary.ContainsKey(year)) return null;

            foreach (var dividendObject in AllDividendsOfTheShareDictionary[year].DividendListYear)
            {
                if (dividendObject.Guid == strGuid)
                {
                    return dividendObject;
                }
            }

            return null;
        }

        /// <summary>
        /// This function tries to the year of the given date string
        /// </summary>
        /// <param name="date">Date string (DD.MM.YYYY)</param>
        /// <param name="year">Year of the given date or null if the split failed</param>
        private static void GetYearOfDate(string date, out string year)
        {
            var dateTimeElements = date.Split('.');
            if (dateTimeElements.Length != 3)
            {
                year = null;
            }
            else
            {
                var yearTime = dateTimeElements.Last();
                var dateElements = yearTime.Split(' ');
                year = dateElements.First();
            }
        }

        #endregion Methods
    }
}

redpajama_set_name: RedPajamaGithub


text:
class ActsAsDocumentMigration < ActiveRecord::Migration
  #TODO put migration logic here

  def self.up

    create_table :terms do |t|
      t.string :word
      t.integer :doc_freq, :default => 0

      t.timestamps
    end
    add_index :terms, :word, :unique => true

    create_table :freq_term_in_docs do |t|
      t.integer :doc_id
      t.string :word
      t.float :freq, :default => 0

      t.timestamps
    end
    add_index :freq_term_in_docs, [:doc_id, :word], :unique => true

    #NlpArabic::ActsAsDocument.registered_classes.each do |c|
      #add_column (c.downcase+"s").to_sym, :root_terms, :string, :default => ''
    #end

    create_table :rank_weights do |t|
      t.integer :doc_id
      t.string :word
      t.integer :action_freq, :default => 0

      t.timestamps
    end
    #add_index :rank_weights, [:doc_id,:word], :unique => true

  end

  def self.down
    drop_table :terms
    drop_table :freq_term_in_docs
    drop_table :rank_weights
  end

end


text:
sudo apt-get update -qq
sudo apt-get upgrade -y -qq
sudo apt-get install -y -qq devscripts debhelper autoconf build-essential libtool autotools-dev automake pkg-config bsdmainutils curl ca-certificates ccache python3 rsync git libssl-dev libboost-all-dev
sudo apt-get install -y -qq miniupnpc libminiupnpc-dev gettext libevent-dev protobuf-compiler libprotobuf-dev
#for gui
sudo apt-get install -y -qq qtbase5-dev qttools5-dev-tools
sudo apt-get install -y -qq libdb-dev libdb++-dev
#for debuild
sudo apt-get install -y -qq libfakeroot fakeroot