VaporShell.IoT.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'IoTTopicRuleAssetPropertyVariant'"

class IoTTopicRuleAssetPropertyVariant : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleAssetPropertyVariant'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-assetpropertyvariant.html'

    hidden [object] $_stringValue
    hidden [object] $_doubleValue
    hidden [object] $_booleanValue
    hidden [object] $_integerValue

    [string] $StringValue
    [string] $DoubleValue
    [string] $BooleanValue
    [string] $IntegerValue

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name StringValue -Value {
            $this._stringValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stringValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DoubleValue -Value {
            $this._doubleValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._doubleValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BooleanValue -Value {
            $this._booleanValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._booleanValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntegerValue -Value {
            $this._integerValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._integerValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleAssetPropertyVariant() : base() {}
    IoTTopicRuleAssetPropertyVariant([IDictionary] $props) : base($props) {}
    IoTTopicRuleAssetPropertyVariant([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleSigV4Authorization'"

class IoTTopicRuleSigV4Authorization : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleSigV4Authorization'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-sigv4authorization.html'

    hidden [object] $_serviceName
    hidden [object] $_signingRegion
    hidden [object] $_roleArn

    [string] $ServiceName
    [string] $SigningRegion
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceName -Value {
            $this._serviceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SigningRegion -Value {
            $this._signingRegion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._signingRegion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleSigV4Authorization() : base() {}
    IoTTopicRuleSigV4Authorization([IDictionary] $props) : base($props) {}
    IoTTopicRuleSigV4Authorization([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleSqsAction'"

class IoTTopicRuleSqsAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleSqsAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-sqsaction.html'

    hidden [object] $_roleArn
    hidden [object] $_useBase64
    hidden [object] $_queueUrl

    [string] $RoleArn
    [bool] $UseBase64
    [string] $QueueUrl

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseBase64 -Value {
            $this._useBase64
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._useBase64 = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueueUrl -Value {
            $this._queueUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._queueUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleSqsAction() : base() {}
    IoTTopicRuleSqsAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleSqsAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRulePutItemInput'"

class IoTTopicRulePutItemInput : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRulePutItemInput'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-putiteminput.html'

    hidden [object] $_tableName

    [string] $TableName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TableName -Value {
            $this._tableName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tableName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRulePutItemInput() : base() {}
    IoTTopicRulePutItemInput([IDictionary] $props) : base($props) {}
    IoTTopicRulePutItemInput([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTMitigationActionAddThingsToThingGroupParams'"

class IoTMitigationActionAddThingsToThingGroupParams : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTMitigationActionAddThingsToThingGroupParams'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-mitigationaction-addthingstothinggroupparams.html'

    hidden [object] $_overrideDynamicGroups
    hidden [object] $_thingGroupNames

    [bool] $OverrideDynamicGroups
    [string[]] $ThingGroupNames

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OverrideDynamicGroups -Value {
            $this._overrideDynamicGroups
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._overrideDynamicGroups = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThingGroupNames -Value {
            $this._thingGroupNames
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._thingGroupNames = @($value)
        }
    }

    IoTMitigationActionAddThingsToThingGroupParams() : base() {}
    IoTMitigationActionAddThingsToThingGroupParams([IDictionary] $props) : base($props) {}
    IoTMitigationActionAddThingsToThingGroupParams([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleSnsAction'"

class IoTTopicRuleSnsAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleSnsAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-snsaction.html'

    hidden [object] $_targetArn
    hidden [object] $_messageFormat
    hidden [object] $_roleArn

    [string] $TargetArn
    [string] $MessageFormat
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetArn -Value {
            $this._targetArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MessageFormat -Value {
            $this._messageFormat
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._messageFormat = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleSnsAction() : base() {}
    IoTTopicRuleSnsAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleSnsAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleDestinationVpcDestinationProperties'"

class IoTTopicRuleDestinationVpcDestinationProperties : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleDestinationVpcDestinationProperties'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicruledestination-vpcdestinationproperties.html'

    hidden [object] $_subnetIds
    hidden [object] $_securityGroups
    hidden [object] $_vpcId
    hidden [object] $_roleArn

    [string[]] $SubnetIds
    [string[]] $SecurityGroups
    [string] $VpcId
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetIds -Value {
            $this._subnetIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._subnetIds = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroups -Value {
            $this._securityGroups
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._securityGroups = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcId -Value {
            $this._vpcId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._vpcId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleDestinationVpcDestinationProperties() : base() {}
    IoTTopicRuleDestinationVpcDestinationProperties([IDictionary] $props) : base($props) {}
    IoTTopicRuleDestinationVpcDestinationProperties([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTMitigationActionUpdateCACertificateParams'"

class IoTMitigationActionUpdateCACertificateParams : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTMitigationActionUpdateCACertificateParams'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-mitigationaction-updatecacertificateparams.html'

    hidden [object] $_action

    [string] $Action

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTMitigationActionUpdateCACertificateParams() : base() {}
    IoTMitigationActionUpdateCACertificateParams([IDictionary] $props) : base($props) {}
    IoTMitigationActionUpdateCACertificateParams([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleHttpAction'"

class IoTTopicRuleHttpAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleHttpAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-httpaction.html'

    hidden [object] $_confirmationUrl
    hidden [object] $_headers
    hidden [object] $_url
    hidden [object] $_auth

    [string] $ConfirmationUrl
    [IoTTopicRuleHttpActionHeader[]] $Headers
    [string] $Url
    [IoTTopicRuleHttpAuthorization] $Auth

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConfirmationUrl -Value {
            $this._confirmationUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._confirmationUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Headers -Value {
            $this._headers
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleHttpActionHeader], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._headers = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Url -Value {
            $this._url
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._url = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Auth -Value {
            $this._auth
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleHttpAuthorization], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._auth = $value
        }
    }

    IoTTopicRuleHttpAction() : base() {}
    IoTTopicRuleHttpAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleHttpAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRulePutAssetPropertyValueEntry'"

class IoTTopicRulePutAssetPropertyValueEntry : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRulePutAssetPropertyValueEntry'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-putassetpropertyvalueentry.html'

    hidden [object] $_propertyAlias
    hidden [object] $_propertyValues
    hidden [object] $_assetId
    hidden [object] $_entryId
    hidden [object] $_propertyId

    [string] $PropertyAlias
    [IoTTopicRuleAssetPropertyValue[]] $PropertyValues
    [string] $AssetId
    [string] $EntryId
    [string] $PropertyId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PropertyAlias -Value {
            $this._propertyAlias
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._propertyAlias = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PropertyValues -Value {
            $this._propertyValues
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleAssetPropertyValue], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._propertyValues = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AssetId -Value {
            $this._assetId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._assetId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EntryId -Value {
            $this._entryId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._entryId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PropertyId -Value {
            $this._propertyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._propertyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRulePutAssetPropertyValueEntry() : base() {}
    IoTTopicRulePutAssetPropertyValueEntry([IDictionary] $props) : base($props) {}
    IoTTopicRulePutAssetPropertyValueEntry([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfileMetricToRetain'"

class IoTSecurityProfileMetricToRetain : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTSecurityProfileMetricToRetain'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-securityprofile-metrictoretain.html'

    hidden [object] $_metric
    hidden [object] $_metricDimension

    [string] $Metric
    [IoTSecurityProfileMetricDimension] $MetricDimension

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Metric -Value {
            $this._metric
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metric = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricDimension -Value {
            $this._metricDimension
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileMetricDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricDimension = $value
        }
    }

    IoTSecurityProfileMetricToRetain() : base() {}
    IoTSecurityProfileMetricToRetain([IDictionary] $props) : base($props) {}
    IoTSecurityProfileMetricToRetain([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTAccountAuditConfigurationAuditCheckConfiguration'"

class IoTAccountAuditConfigurationAuditCheckConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTAccountAuditConfigurationAuditCheckConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.html'

    hidden [object] $_enabled

    [bool] $Enabled

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
    }

    IoTAccountAuditConfigurationAuditCheckConfiguration() : base() {}
    IoTAccountAuditConfigurationAuditCheckConfiguration([IDictionary] $props) : base($props) {}
    IoTAccountAuditConfigurationAuditCheckConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleLambdaAction'"

class IoTTopicRuleLambdaAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleLambdaAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-lambdaaction.html'

    hidden [object] $_functionArn

    [string] $FunctionArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FunctionArn -Value {
            $this._functionArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._functionArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleLambdaAction() : base() {}
    IoTTopicRuleLambdaAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleLambdaAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfileMachineLearningDetectionConfig'"

class IoTSecurityProfileMachineLearningDetectionConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTSecurityProfileMachineLearningDetectionConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-securityprofile-machinelearningdetectionconfig.html'

    hidden [object] $_confidenceLevel

    [string] $ConfidenceLevel

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConfidenceLevel -Value {
            $this._confidenceLevel
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._confidenceLevel = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTSecurityProfileMachineLearningDetectionConfig() : base() {}
    IoTSecurityProfileMachineLearningDetectionConfig([IDictionary] $props) : base($props) {}
    IoTSecurityProfileMachineLearningDetectionConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleDynamoDBAction'"

class IoTTopicRuleDynamoDBAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleDynamoDBAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html'

    hidden [object] $_tableName
    hidden [object] $_payloadField
    hidden [object] $_rangeKeyField
    hidden [object] $_hashKeyField
    hidden [object] $_rangeKeyValue
    hidden [object] $_rangeKeyType
    hidden [object] $_hashKeyType
    hidden [object] $_hashKeyValue
    hidden [object] $_roleArn

    [string] $TableName
    [string] $PayloadField
    [string] $RangeKeyField
    [string] $HashKeyField
    [string] $RangeKeyValue
    [string] $RangeKeyType
    [string] $HashKeyType
    [string] $HashKeyValue
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TableName -Value {
            $this._tableName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tableName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PayloadField -Value {
            $this._payloadField
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._payloadField = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RangeKeyField -Value {
            $this._rangeKeyField
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rangeKeyField = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HashKeyField -Value {
            $this._hashKeyField
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hashKeyField = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RangeKeyValue -Value {
            $this._rangeKeyValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rangeKeyValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RangeKeyType -Value {
            $this._rangeKeyType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rangeKeyType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HashKeyType -Value {
            $this._hashKeyType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hashKeyType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HashKeyValue -Value {
            $this._hashKeyValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hashKeyValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleDynamoDBAction() : base() {}
    IoTTopicRuleDynamoDBAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleDynamoDBAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfileMetricDimension'"

class IoTSecurityProfileMetricDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTSecurityProfileMetricDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-securityprofile-metricdimension.html'

    hidden [object] $_dimensionName
    hidden [object] $_operator

    [string] $DimensionName
    [string] $Operator

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DimensionName -Value {
            $this._dimensionName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dimensionName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Operator -Value {
            $this._operator
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._operator = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTSecurityProfileMetricDimension() : base() {}
    IoTSecurityProfileMetricDimension([IDictionary] $props) : base($props) {}
    IoTSecurityProfileMetricDimension([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfileMetricValue'"

class IoTSecurityProfileMetricValue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTSecurityProfileMetricValue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-securityprofile-metricvalue.html'

    hidden [object] $_count
    hidden [object] $_cidrs
    hidden [object] $_ports
    hidden [object] $_number
    hidden [object] $_numbers
    hidden [object] $_strings

    [string] $Count
    [string[]] $Cidrs
    [int[]] $Ports
    [double] $Number
    [double[]] $Numbers
    [string[]] $Strings

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Count -Value {
            $this._count
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._count = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cidrs -Value {
            $this._cidrs
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._cidrs = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ports -Value {
            $this._ports
        } -SecondValue {
            param([ValidateType(([int], [string], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ports = if ($cast = @($value) -as [int]) {
                $cast
            }
            else {
                @($value)
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Number -Value {
            $this._number
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._number = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Numbers -Value {
            $this._numbers
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._numbers = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Strings -Value {
            $this._strings
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._strings = @($value)
        }
    }

    IoTSecurityProfileMetricValue() : base() {}
    IoTSecurityProfileMetricValue([IDictionary] $props) : base($props) {}
    IoTSecurityProfileMetricValue([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleIotAnalyticsAction'"

class IoTTopicRuleIotAnalyticsAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleIotAnalyticsAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-iotanalyticsaction.html'

    hidden [object] $_roleArn
    hidden [object] $_channelName
    hidden [object] $_batchMode

    [string] $RoleArn
    [string] $ChannelName
    [bool] $BatchMode

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ChannelName -Value {
            $this._channelName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._channelName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BatchMode -Value {
            $this._batchMode
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._batchMode = $value
        }
    }

    IoTTopicRuleIotAnalyticsAction() : base() {}
    IoTTopicRuleIotAnalyticsAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleIotAnalyticsAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleIotEventsAction'"

class IoTTopicRuleIotEventsAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleIotEventsAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-ioteventsaction.html'

    hidden [object] $_inputName
    hidden [object] $_roleArn
    hidden [object] $_messageId
    hidden [object] $_batchMode

    [string] $InputName
    [string] $RoleArn
    [string] $MessageId
    [bool] $BatchMode

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name InputName -Value {
            $this._inputName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._inputName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MessageId -Value {
            $this._messageId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._messageId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BatchMode -Value {
            $this._batchMode
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._batchMode = $value
        }
    }

    IoTTopicRuleIotEventsAction() : base() {}
    IoTTopicRuleIotEventsAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleIotEventsAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTAccountAuditConfigurationAuditNotificationTargetConfigurations'"

class IoTAccountAuditConfigurationAuditNotificationTargetConfigurations : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTAccountAuditConfigurationAuditNotificationTargetConfigurations'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditnotificationtargetconfigurations.html'

    hidden [object] $_sns

    [IoTAccountAuditConfigurationAuditNotificationTarget] $Sns

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sns -Value {
            $this._sns
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditNotificationTarget], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sns = $value
        }
    }

    IoTAccountAuditConfigurationAuditNotificationTargetConfigurations() : base() {}
    IoTAccountAuditConfigurationAuditNotificationTargetConfigurations([IDictionary] $props) : base($props) {}
    IoTAccountAuditConfigurationAuditNotificationTargetConfigurations([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleKafkaAction'"

class IoTTopicRuleKafkaAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleKafkaAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-kafkaaction.html'

    hidden [object] $_destinationArn
    hidden [object] $_topic
    hidden [object] $_key
    hidden [object] $_partition
    hidden [object] $_clientProperties

    [string] $DestinationArn
    [string] $Topic
    [string] $Key
    [string] $Partition
    [string] $ClientProperties

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DestinationArn -Value {
            $this._destinationArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destinationArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Topic -Value {
            $this._topic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._topic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Partition -Value {
            $this._partition
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._partition = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientProperties -Value {
            $this._clientProperties
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientProperties = $value
        }
    }

    IoTTopicRuleKafkaAction() : base() {}
    IoTTopicRuleKafkaAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleKafkaAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleTimestreamAction'"

class IoTTopicRuleTimestreamAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleTimestreamAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-timestreamaction.html'

    hidden [object] $_roleArn
    hidden [object] $_databaseName
    hidden [object] $_tableName
    hidden [object] $_dimensions
    hidden [object] $_timestamp

    [string] $RoleArn
    [string] $DatabaseName
    [string] $TableName
    [IoTTopicRuleTimestreamDimension[]] $Dimensions
    [IoTTopicRuleTimestreamTimestamp] $Timestamp

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DatabaseName -Value {
            $this._databaseName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._databaseName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TableName -Value {
            $this._tableName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tableName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Dimensions -Value {
            $this._dimensions
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleTimestreamDimension], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dimensions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timestamp -Value {
            $this._timestamp
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleTimestreamTimestamp], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timestamp = $value
        }
    }

    IoTTopicRuleTimestreamAction() : base() {}
    IoTTopicRuleTimestreamAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleTimestreamAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleIotSiteWiseAction'"

class IoTTopicRuleIotSiteWiseAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleIotSiteWiseAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-iotsitewiseaction.html'

    hidden [object] $_roleArn
    hidden [object] $_putAssetPropertyValueEntries

    [string] $RoleArn
    [IoTTopicRulePutAssetPropertyValueEntry[]] $PutAssetPropertyValueEntries

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PutAssetPropertyValueEntries -Value {
            $this._putAssetPropertyValueEntries
        } -SecondValue {
            param([ValidateType(([IoTTopicRulePutAssetPropertyValueEntry], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._putAssetPropertyValueEntries = $value
        }
    }

    IoTTopicRuleIotSiteWiseAction() : base() {}
    IoTTopicRuleIotSiteWiseAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleIotSiteWiseAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfileAlertTarget'"

class IoTSecurityProfileAlertTarget : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTSecurityProfileAlertTarget'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-securityprofile-alerttarget.html'

    hidden [object] $_alertTargetArn
    hidden [object] $_roleArn

    [string] $AlertTargetArn
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AlertTargetArn -Value {
            $this._alertTargetArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._alertTargetArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTSecurityProfileAlertTarget() : base() {}
    IoTSecurityProfileAlertTarget([IDictionary] $props) : base($props) {}
    IoTSecurityProfileAlertTarget([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTMitigationActionUpdateDeviceCertificateParams'"

class IoTMitigationActionUpdateDeviceCertificateParams : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTMitigationActionUpdateDeviceCertificateParams'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-mitigationaction-updatedevicecertificateparams.html'

    hidden [object] $_action

    [string] $Action

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTMitigationActionUpdateDeviceCertificateParams() : base() {}
    IoTMitigationActionUpdateDeviceCertificateParams([IDictionary] $props) : base($props) {}
    IoTMitigationActionUpdateDeviceCertificateParams([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTProvisioningTemplateProvisioningHook'"

class IoTProvisioningTemplateProvisioningHook : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTProvisioningTemplateProvisioningHook'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-provisioningtemplate-provisioninghook.html'

    hidden [object] $_targetArn
    hidden [object] $_payloadVersion

    [string] $TargetArn
    [string] $PayloadVersion

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetArn -Value {
            $this._targetArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PayloadVersion -Value {
            $this._payloadVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._payloadVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTProvisioningTemplateProvisioningHook() : base() {}
    IoTProvisioningTemplateProvisioningHook([IDictionary] $props) : base($props) {}
    IoTProvisioningTemplateProvisioningHook([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleDynamoDBv2Action'"

class IoTTopicRuleDynamoDBv2Action : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleDynamoDBv2Action'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbv2action.html'

    hidden [object] $_putItem
    hidden [object] $_roleArn

    [IoTTopicRulePutItemInput] $PutItem
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PutItem -Value {
            $this._putItem
        } -SecondValue {
            param([ValidateType(([IoTTopicRulePutItemInput], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._putItem = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleDynamoDBv2Action() : base() {}
    IoTTopicRuleDynamoDBv2Action([IDictionary] $props) : base($props) {}
    IoTTopicRuleDynamoDBv2Action([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTThingAttributePayload'"

class IoTThingAttributePayload : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTThingAttributePayload'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-thing-attributepayload.html'

    hidden [object] $_attributes

    [string] $Attributes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attributes -Value {
            $this._attributes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._attributes = $value
        }
    }

    IoTThingAttributePayload() : base() {}
    IoTThingAttributePayload([IDictionary] $props) : base($props) {}
    IoTThingAttributePayload([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleCloudwatchMetricAction'"

class IoTTopicRuleCloudwatchMetricAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleCloudwatchMetricAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html'

    hidden [object] $_metricName
    hidden [object] $_metricValue
    hidden [object] $_metricNamespace
    hidden [object] $_metricUnit
    hidden [object] $_roleArn
    hidden [object] $_metricTimestamp

    [string] $MetricName
    [string] $MetricValue
    [string] $MetricNamespace
    [string] $MetricUnit
    [string] $RoleArn
    [string] $MetricTimestamp

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this._metricName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricValue -Value {
            $this._metricValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricNamespace -Value {
            $this._metricNamespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricNamespace = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricUnit -Value {
            $this._metricUnit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricUnit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricTimestamp -Value {
            $this._metricTimestamp
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricTimestamp = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleCloudwatchMetricAction() : base() {}
    IoTTopicRuleCloudwatchMetricAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleCloudwatchMetricAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleS3Action'"

class IoTTopicRuleS3Action : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleS3Action'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html'

    hidden [object] $_bucketName
    hidden [object] $_key
    hidden [object] $_roleArn
    hidden [object] $_cannedAcl

    [string] $BucketName
    [string] $Key
    [string] $RoleArn
    [string] $CannedAcl

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name BucketName -Value {
            $this._bucketName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucketName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CannedAcl -Value {
            $this._cannedAcl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cannedAcl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleS3Action() : base() {}
    IoTTopicRuleS3Action([IDictionary] $props) : base($props) {}
    IoTTopicRuleS3Action([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfileBehavior'"

class IoTSecurityProfileBehavior : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTSecurityProfileBehavior'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-securityprofile-behavior.html'

    hidden [object] $_name
    hidden [object] $_metric
    hidden [object] $_metricDimension
    hidden [object] $_criteria
    hidden [object] $_suppressAlerts

    [string] $Name
    [string] $Metric
    [IoTSecurityProfileMetricDimension] $MetricDimension
    [IoTSecurityProfileBehaviorCriteria] $Criteria
    [bool] $SuppressAlerts

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Metric -Value {
            $this._metric
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metric = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricDimension -Value {
            $this._metricDimension
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileMetricDimension], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricDimension = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Criteria -Value {
            $this._criteria
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileBehaviorCriteria], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._criteria = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SuppressAlerts -Value {
            $this._suppressAlerts
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._suppressAlerts = $value
        }
    }

    IoTSecurityProfileBehavior() : base() {}
    IoTSecurityProfileBehavior([IDictionary] $props) : base($props) {}
    IoTSecurityProfileBehavior([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleFirehoseAction'"

class IoTTopicRuleFirehoseAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleFirehoseAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-firehoseaction.html'

    hidden [object] $_deliveryStreamName
    hidden [object] $_roleArn
    hidden [object] $_separator
    hidden [object] $_batchMode

    [string] $DeliveryStreamName
    [string] $RoleArn
    [string] $Separator
    [bool] $BatchMode

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeliveryStreamName -Value {
            $this._deliveryStreamName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deliveryStreamName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Separator -Value {
            $this._separator
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._separator = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BatchMode -Value {
            $this._batchMode
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._batchMode = $value
        }
    }

    IoTTopicRuleFirehoseAction() : base() {}
    IoTTopicRuleFirehoseAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleFirehoseAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleDestinationHttpUrlDestinationSummary'"

class IoTTopicRuleDestinationHttpUrlDestinationSummary : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleDestinationHttpUrlDestinationSummary'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicruledestination-httpurldestinationsummary.html'

    hidden [object] $_confirmationUrl

    [string] $ConfirmationUrl

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConfirmationUrl -Value {
            $this._confirmationUrl
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._confirmationUrl = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleDestinationHttpUrlDestinationSummary() : base() {}
    IoTTopicRuleDestinationHttpUrlDestinationSummary([IDictionary] $props) : base($props) {}
    IoTTopicRuleDestinationHttpUrlDestinationSummary([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleAssetPropertyTimestamp'"

class IoTTopicRuleAssetPropertyTimestamp : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleAssetPropertyTimestamp'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-assetpropertytimestamp.html'

    hidden [object] $_timeInSeconds
    hidden [object] $_offsetInNanos

    [string] $TimeInSeconds
    [string] $OffsetInNanos

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeInSeconds -Value {
            $this._timeInSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeInSeconds = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OffsetInNanos -Value {
            $this._offsetInNanos
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._offsetInNanos = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleAssetPropertyTimestamp() : base() {}
    IoTTopicRuleAssetPropertyTimestamp([IDictionary] $props) : base($props) {}
    IoTTopicRuleAssetPropertyTimestamp([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleAssetPropertyValue'"

class IoTTopicRuleAssetPropertyValue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleAssetPropertyValue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-assetpropertyvalue.html'

    hidden [object] $_value
    hidden [object] $_timestamp
    hidden [object] $_quality

    [IoTTopicRuleAssetPropertyVariant] $Value
    [IoTTopicRuleAssetPropertyTimestamp] $Timestamp
    [string] $Quality

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleAssetPropertyVariant], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timestamp -Value {
            $this._timestamp
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleAssetPropertyTimestamp], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timestamp = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Quality -Value {
            $this._quality
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._quality = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleAssetPropertyValue() : base() {}
    IoTTopicRuleAssetPropertyValue([IDictionary] $props) : base($props) {}
    IoTTopicRuleAssetPropertyValue([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleElasticsearchAction'"

class IoTTopicRuleElasticsearchAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleElasticsearchAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-elasticsearchaction.html'

    hidden [object] $_type
    hidden [object] $_index
    hidden [object] $_id
    hidden [object] $_endpoint
    hidden [object] $_roleArn

    [string] $Type
    [string] $Index
    [string] $Id
    [string] $Endpoint
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Index -Value {
            $this._index
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._index = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Id -Value {
            $this._id
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._id = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Endpoint -Value {
            $this._endpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._endpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleElasticsearchAction() : base() {}
    IoTTopicRuleElasticsearchAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleElasticsearchAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTDomainConfigurationAuthorizerConfig'"

class IoTDomainConfigurationAuthorizerConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTDomainConfigurationAuthorizerConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-domainconfiguration-authorizerconfig.html'

    hidden [object] $_allowAuthorizerOverride
    hidden [object] $_defaultAuthorizerName

    [bool] $AllowAuthorizerOverride
    [string] $DefaultAuthorizerName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowAuthorizerOverride -Value {
            $this._allowAuthorizerOverride
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allowAuthorizerOverride = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultAuthorizerName -Value {
            $this._defaultAuthorizerName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultAuthorizerName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTDomainConfigurationAuthorizerConfig() : base() {}
    IoTDomainConfigurationAuthorizerConfig([IDictionary] $props) : base($props) {}
    IoTDomainConfigurationAuthorizerConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleKinesisAction'"

class IoTTopicRuleKinesisAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleKinesisAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-kinesisaction.html'

    hidden [object] $_partitionKey
    hidden [object] $_streamName
    hidden [object] $_roleArn

    [string] $PartitionKey
    [string] $StreamName
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PartitionKey -Value {
            $this._partitionKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._partitionKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StreamName -Value {
            $this._streamName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._streamName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleKinesisAction() : base() {}
    IoTTopicRuleKinesisAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleKinesisAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleAction'"

class IoTTopicRuleAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html'

    hidden [object] $_s3
    hidden [object] $_cloudwatchAlarm
    hidden [object] $_cloudwatchLogs
    hidden [object] $_iotEvents
    hidden [object] $_firehose
    hidden [object] $_republish
    hidden [object] $_stepFunctions
    hidden [object] $_dynamoDB
    hidden [object] $_http
    hidden [object] $_dynamoDBv2
    hidden [object] $_cloudwatchMetric
    hidden [object] $_iotSiteWise
    hidden [object] $_elasticsearch
    hidden [object] $_sqs
    hidden [object] $_kinesis
    hidden [object] $_iotAnalytics
    hidden [object] $_sns
    hidden [object] $_lambda
    hidden [object] $_timestream
    hidden [object] $_kafka

    [IoTTopicRuleS3Action] $S3
    [IoTTopicRuleCloudwatchAlarmAction] $CloudwatchAlarm
    [IoTTopicRuleCloudwatchLogsAction] $CloudwatchLogs
    [IoTTopicRuleIotEventsAction] $IotEvents
    [IoTTopicRuleFirehoseAction] $Firehose
    [IoTTopicRuleRepublishAction] $Republish
    [IoTTopicRuleStepFunctionsAction] $StepFunctions
    [IoTTopicRuleDynamoDBAction] $DynamoDB
    [IoTTopicRuleHttpAction] $Http
    [IoTTopicRuleDynamoDBv2Action] $DynamoDBv2
    [IoTTopicRuleCloudwatchMetricAction] $CloudwatchMetric
    [IoTTopicRuleIotSiteWiseAction] $IotSiteWise
    [IoTTopicRuleElasticsearchAction] $Elasticsearch
    [IoTTopicRuleSqsAction] $Sqs
    [IoTTopicRuleKinesisAction] $Kinesis
    [IoTTopicRuleIotAnalyticsAction] $IotAnalytics
    [IoTTopicRuleSnsAction] $Sns
    [IoTTopicRuleLambdaAction] $Lambda
    [IoTTopicRuleTimestreamAction] $Timestream
    [IoTTopicRuleKafkaAction] $Kafka

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3 -Value {
            $this._s3
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleS3Action], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3 = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudwatchAlarm -Value {
            $this._cloudwatchAlarm
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleCloudwatchAlarmAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudwatchAlarm = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudwatchLogs -Value {
            $this._cloudwatchLogs
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleCloudwatchLogsAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudwatchLogs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IotEvents -Value {
            $this._iotEvents
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleIotEventsAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iotEvents = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Firehose -Value {
            $this._firehose
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleFirehoseAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._firehose = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Republish -Value {
            $this._republish
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleRepublishAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._republish = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepFunctions -Value {
            $this._stepFunctions
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleStepFunctionsAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stepFunctions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DynamoDB -Value {
            $this._dynamoDB
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleDynamoDBAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dynamoDB = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Http -Value {
            $this._http
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleHttpAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._http = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DynamoDBv2 -Value {
            $this._dynamoDBv2
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleDynamoDBv2Action], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dynamoDBv2 = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudwatchMetric -Value {
            $this._cloudwatchMetric
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleCloudwatchMetricAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudwatchMetric = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IotSiteWise -Value {
            $this._iotSiteWise
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleIotSiteWiseAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iotSiteWise = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Elasticsearch -Value {
            $this._elasticsearch
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleElasticsearchAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._elasticsearch = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sqs -Value {
            $this._sqs
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleSqsAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sqs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Kinesis -Value {
            $this._kinesis
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleKinesisAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kinesis = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IotAnalytics -Value {
            $this._iotAnalytics
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleIotAnalyticsAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iotAnalytics = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sns -Value {
            $this._sns
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleSnsAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sns = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Lambda -Value {
            $this._lambda
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleLambdaAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._lambda = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timestream -Value {
            $this._timestream
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleTimestreamAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timestream = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Kafka -Value {
            $this._kafka
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleKafkaAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kafka = $value
        }
    }

    IoTTopicRuleAction() : base() {}
    IoTTopicRuleAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTMitigationActionReplaceDefaultPolicyVersionParams'"

class IoTMitigationActionReplaceDefaultPolicyVersionParams : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTMitigationActionReplaceDefaultPolicyVersionParams'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-mitigationaction-replacedefaultpolicyversionparams.html'

    hidden [object] $_templateName

    [string] $TemplateName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TemplateName -Value {
            $this._templateName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._templateName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTMitigationActionReplaceDefaultPolicyVersionParams() : base() {}
    IoTMitigationActionReplaceDefaultPolicyVersionParams([IDictionary] $props) : base($props) {}
    IoTMitigationActionReplaceDefaultPolicyVersionParams([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleHttpAuthorization'"

class IoTTopicRuleHttpAuthorization : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleHttpAuthorization'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-httpauthorization.html'

    hidden [object] $_sigv4

    [IoTTopicRuleSigV4Authorization] $Sigv4

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sigv4 -Value {
            $this._sigv4
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleSigV4Authorization], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sigv4 = $value
        }
    }

    IoTTopicRuleHttpAuthorization() : base() {}
    IoTTopicRuleHttpAuthorization([IDictionary] $props) : base($props) {}
    IoTTopicRuleHttpAuthorization([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfileBehaviorCriteria'"

class IoTSecurityProfileBehaviorCriteria : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTSecurityProfileBehaviorCriteria'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-securityprofile-behaviorcriteria.html'

    hidden [object] $_comparisonOperator
    hidden [object] $_value
    hidden [object] $_durationSeconds
    hidden [object] $_consecutiveDatapointsToAlarm
    hidden [object] $_consecutiveDatapointsToClear
    hidden [object] $_statisticalThreshold
    hidden [object] $_mlDetectionConfig

    [string] $ComparisonOperator
    [IoTSecurityProfileMetricValue] $Value
    [int] $DurationSeconds
    [int] $ConsecutiveDatapointsToAlarm
    [int] $ConsecutiveDatapointsToClear
    [IoTSecurityProfileStatisticalThreshold] $StatisticalThreshold
    [IoTSecurityProfileMachineLearningDetectionConfig] $MlDetectionConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComparisonOperator -Value {
            $this._comparisonOperator
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comparisonOperator = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileMetricValue], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DurationSeconds -Value {
            $this._durationSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._durationSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConsecutiveDatapointsToAlarm -Value {
            $this._consecutiveDatapointsToAlarm
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._consecutiveDatapointsToAlarm = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConsecutiveDatapointsToClear -Value {
            $this._consecutiveDatapointsToClear
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._consecutiveDatapointsToClear = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatisticalThreshold -Value {
            $this._statisticalThreshold
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileStatisticalThreshold], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statisticalThreshold = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MlDetectionConfig -Value {
            $this._mlDetectionConfig
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileMachineLearningDetectionConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mlDetectionConfig = $value
        }
    }

    IoTSecurityProfileBehaviorCriteria() : base() {}
    IoTSecurityProfileBehaviorCriteria([IDictionary] $props) : base($props) {}
    IoTSecurityProfileBehaviorCriteria([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleHttpActionHeader'"

class IoTTopicRuleHttpActionHeader : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleHttpActionHeader'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-httpactionheader.html'

    hidden [object] $_value
    hidden [object] $_key

    [string] $Value
    [string] $Key

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleHttpActionHeader() : base() {}
    IoTTopicRuleHttpActionHeader([IDictionary] $props) : base($props) {}
    IoTTopicRuleHttpActionHeader([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleRepublishAction'"

class IoTTopicRuleRepublishAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleRepublishAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-republishaction.html'

    hidden [object] $_qos
    hidden [object] $_topic
    hidden [object] $_roleArn

    [int] $Qos
    [string] $Topic
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Qos -Value {
            $this._qos
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._qos = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Topic -Value {
            $this._topic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._topic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleRepublishAction() : base() {}
    IoTTopicRuleRepublishAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleRepublishAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTAccountAuditConfigurationAuditNotificationTarget'"

class IoTAccountAuditConfigurationAuditNotificationTarget : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTAccountAuditConfigurationAuditNotificationTarget'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditnotificationtarget.html'

    hidden [object] $_targetArn
    hidden [object] $_roleArn
    hidden [object] $_enabled

    [string] $TargetArn
    [string] $RoleArn
    [bool] $Enabled

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetArn -Value {
            $this._targetArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
    }

    IoTAccountAuditConfigurationAuditNotificationTarget() : base() {}
    IoTAccountAuditConfigurationAuditNotificationTarget([IDictionary] $props) : base($props) {}
    IoTAccountAuditConfigurationAuditNotificationTarget([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTMitigationActionEnableIoTLoggingParams'"

class IoTMitigationActionEnableIoTLoggingParams : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTMitigationActionEnableIoTLoggingParams'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-mitigationaction-enableiotloggingparams.html'

    hidden [object] $_logLevel
    hidden [object] $_roleArnForLogging

    [string] $LogLevel
    [string] $RoleArnForLogging

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogLevel -Value {
            $this._logLevel
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logLevel = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArnForLogging -Value {
            $this._roleArnForLogging
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArnForLogging = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTMitigationActionEnableIoTLoggingParams() : base() {}
    IoTMitigationActionEnableIoTLoggingParams([IDictionary] $props) : base($props) {}
    IoTMitigationActionEnableIoTLoggingParams([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleStepFunctionsAction'"

class IoTTopicRuleStepFunctionsAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleStepFunctionsAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-stepfunctionsaction.html'

    hidden [object] $_executionNamePrefix
    hidden [object] $_stateMachineName
    hidden [object] $_roleArn

    [string] $ExecutionNamePrefix
    [string] $StateMachineName
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExecutionNamePrefix -Value {
            $this._executionNamePrefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._executionNamePrefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StateMachineName -Value {
            $this._stateMachineName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stateMachineName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleStepFunctionsAction() : base() {}
    IoTTopicRuleStepFunctionsAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleStepFunctionsAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTAccountAuditConfigurationAuditCheckConfigurations'"

class IoTAccountAuditConfigurationAuditCheckConfigurations : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTAccountAuditConfigurationAuditCheckConfigurations'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditcheckconfigurations.html'

    hidden [object] $_authenticatedCognitoRoleOverlyPermissiveCheck
    hidden [object] $_caCertificateExpiringCheck
    hidden [object] $_caCertificateKeyQualityCheck
    hidden [object] $_conflictingClientIdsCheck
    hidden [object] $_deviceCertificateExpiringCheck
    hidden [object] $_deviceCertificateKeyQualityCheck
    hidden [object] $_deviceCertificateSharedCheck
    hidden [object] $_iotPolicyOverlyPermissiveCheck
    hidden [object] $_iotRoleAliasAllowsAccessToUnusedServicesCheck
    hidden [object] $_iotRoleAliasOverlyPermissiveCheck
    hidden [object] $_loggingDisabledCheck
    hidden [object] $_revokedCaCertificateStillActiveCheck
    hidden [object] $_revokedDeviceCertificateStillActiveCheck
    hidden [object] $_unauthenticatedCognitoRoleOverlyPermissiveCheck

    [IoTAccountAuditConfigurationAuditCheckConfiguration] $AuthenticatedCognitoRoleOverlyPermissiveCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $CaCertificateExpiringCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $CaCertificateKeyQualityCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $ConflictingClientIdsCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $DeviceCertificateExpiringCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $DeviceCertificateKeyQualityCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $DeviceCertificateSharedCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $IotPolicyOverlyPermissiveCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $IotRoleAliasAllowsAccessToUnusedServicesCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $IotRoleAliasOverlyPermissiveCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $LoggingDisabledCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $RevokedCaCertificateStillActiveCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $RevokedDeviceCertificateStillActiveCheck
    [IoTAccountAuditConfigurationAuditCheckConfiguration] $UnauthenticatedCognitoRoleOverlyPermissiveCheck

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticatedCognitoRoleOverlyPermissiveCheck -Value {
            $this._authenticatedCognitoRoleOverlyPermissiveCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticatedCognitoRoleOverlyPermissiveCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CaCertificateExpiringCheck -Value {
            $this._caCertificateExpiringCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._caCertificateExpiringCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CaCertificateKeyQualityCheck -Value {
            $this._caCertificateKeyQualityCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._caCertificateKeyQualityCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConflictingClientIdsCheck -Value {
            $this._conflictingClientIdsCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._conflictingClientIdsCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeviceCertificateExpiringCheck -Value {
            $this._deviceCertificateExpiringCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deviceCertificateExpiringCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeviceCertificateKeyQualityCheck -Value {
            $this._deviceCertificateKeyQualityCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deviceCertificateKeyQualityCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeviceCertificateSharedCheck -Value {
            $this._deviceCertificateSharedCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._deviceCertificateSharedCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IotPolicyOverlyPermissiveCheck -Value {
            $this._iotPolicyOverlyPermissiveCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iotPolicyOverlyPermissiveCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IotRoleAliasAllowsAccessToUnusedServicesCheck -Value {
            $this._iotRoleAliasAllowsAccessToUnusedServicesCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iotRoleAliasAllowsAccessToUnusedServicesCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IotRoleAliasOverlyPermissiveCheck -Value {
            $this._iotRoleAliasOverlyPermissiveCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iotRoleAliasOverlyPermissiveCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoggingDisabledCheck -Value {
            $this._loggingDisabledCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._loggingDisabledCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RevokedCaCertificateStillActiveCheck -Value {
            $this._revokedCaCertificateStillActiveCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._revokedCaCertificateStillActiveCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RevokedDeviceCertificateStillActiveCheck -Value {
            $this._revokedDeviceCertificateStillActiveCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._revokedDeviceCertificateStillActiveCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UnauthenticatedCognitoRoleOverlyPermissiveCheck -Value {
            $this._unauthenticatedCognitoRoleOverlyPermissiveCheck
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unauthenticatedCognitoRoleOverlyPermissiveCheck = $value
        }
    }

    IoTAccountAuditConfigurationAuditCheckConfigurations() : base() {}
    IoTAccountAuditConfigurationAuditCheckConfigurations([IDictionary] $props) : base($props) {}
    IoTAccountAuditConfigurationAuditCheckConfigurations([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleTopicRulePayload'"

class IoTTopicRuleTopicRulePayload : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleTopicRulePayload'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html'

    hidden [object] $_ruleDisabled
    hidden [object] $_errorAction
    hidden [object] $_description
    hidden [object] $_awsIotSqlVersion
    hidden [object] $_actions
    hidden [object] $_sql

    [bool] $RuleDisabled
    [IoTTopicRuleAction] $ErrorAction
    [string] $Description
    [string] $AwsIotSqlVersion
    [IoTTopicRuleAction[]] $Actions
    [string] $Sql

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleDisabled -Value {
            $this._ruleDisabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ruleDisabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ErrorAction -Value {
            $this._errorAction
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._errorAction = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this._description
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._description = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AwsIotSqlVersion -Value {
            $this._awsIotSqlVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._awsIotSqlVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Actions -Value {
            $this._actions
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleAction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._actions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sql -Value {
            $this._sql
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sql = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleTopicRulePayload() : base() {}
    IoTTopicRuleTopicRulePayload([IDictionary] $props) : base($props) {}
    IoTTopicRuleTopicRulePayload([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTMitigationActionActionParams'"

class IoTMitigationActionActionParams : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTMitigationActionActionParams'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-mitigationaction-actionparams.html'

    hidden [object] $_addThingsToThingGroupParams
    hidden [object] $_enableIoTLoggingParams
    hidden [object] $_publishFindingToSnsParams
    hidden [object] $_replaceDefaultPolicyVersionParams
    hidden [object] $_updateCACertificateParams
    hidden [object] $_updateDeviceCertificateParams

    [IoTMitigationActionAddThingsToThingGroupParams] $AddThingsToThingGroupParams
    [IoTMitigationActionEnableIoTLoggingParams] $EnableIoTLoggingParams
    [IoTMitigationActionPublishFindingToSnsParams] $PublishFindingToSnsParams
    [IoTMitigationActionReplaceDefaultPolicyVersionParams] $ReplaceDefaultPolicyVersionParams
    [IoTMitigationActionUpdateCACertificateParams] $UpdateCACertificateParams
    [IoTMitigationActionUpdateDeviceCertificateParams] $UpdateDeviceCertificateParams

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AddThingsToThingGroupParams -Value {
            $this._addThingsToThingGroupParams
        } -SecondValue {
            param([ValidateType(([IoTMitigationActionAddThingsToThingGroupParams], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._addThingsToThingGroupParams = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableIoTLoggingParams -Value {
            $this._enableIoTLoggingParams
        } -SecondValue {
            param([ValidateType(([IoTMitigationActionEnableIoTLoggingParams], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enableIoTLoggingParams = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PublishFindingToSnsParams -Value {
            $this._publishFindingToSnsParams
        } -SecondValue {
            param([ValidateType(([IoTMitigationActionPublishFindingToSnsParams], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._publishFindingToSnsParams = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReplaceDefaultPolicyVersionParams -Value {
            $this._replaceDefaultPolicyVersionParams
        } -SecondValue {
            param([ValidateType(([IoTMitigationActionReplaceDefaultPolicyVersionParams], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._replaceDefaultPolicyVersionParams = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UpdateCACertificateParams -Value {
            $this._updateCACertificateParams
        } -SecondValue {
            param([ValidateType(([IoTMitigationActionUpdateCACertificateParams], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._updateCACertificateParams = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UpdateDeviceCertificateParams -Value {
            $this._updateDeviceCertificateParams
        } -SecondValue {
            param([ValidateType(([IoTMitigationActionUpdateDeviceCertificateParams], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._updateDeviceCertificateParams = $value
        }
    }

    IoTMitigationActionActionParams() : base() {}
    IoTMitigationActionActionParams([IDictionary] $props) : base($props) {}
    IoTMitigationActionActionParams([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTMitigationActionPublishFindingToSnsParams'"

class IoTMitigationActionPublishFindingToSnsParams : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTMitigationActionPublishFindingToSnsParams'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-mitigationaction-publishfindingtosnsparams.html'

    hidden [object] $_topicArn

    [string] $TopicArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TopicArn -Value {
            $this._topicArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._topicArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTMitigationActionPublishFindingToSnsParams() : base() {}
    IoTMitigationActionPublishFindingToSnsParams([IDictionary] $props) : base($props) {}
    IoTMitigationActionPublishFindingToSnsParams([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleCloudwatchAlarmAction'"

class IoTTopicRuleCloudwatchAlarmAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleCloudwatchAlarmAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchalarmaction.html'

    hidden [object] $_stateValue
    hidden [object] $_alarmName
    hidden [object] $_stateReason
    hidden [object] $_roleArn

    [string] $StateValue
    [string] $AlarmName
    [string] $StateReason
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name StateValue -Value {
            $this._stateValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stateValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AlarmName -Value {
            $this._alarmName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._alarmName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StateReason -Value {
            $this._stateReason
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stateReason = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleCloudwatchAlarmAction() : base() {}
    IoTTopicRuleCloudwatchAlarmAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleCloudwatchAlarmAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleCloudwatchLogsAction'"

class IoTTopicRuleCloudwatchLogsAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleCloudwatchLogsAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchlogsaction.html'

    hidden [object] $_logGroupName
    hidden [object] $_roleArn

    [string] $LogGroupName
    [string] $RoleArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogGroupName -Value {
            $this._logGroupName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logGroupName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this._roleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._roleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleCloudwatchLogsAction() : base() {}
    IoTTopicRuleCloudwatchLogsAction([IDictionary] $props) : base($props) {}
    IoTTopicRuleCloudwatchLogsAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTDomainConfigurationServerCertificateSummary'"

class IoTDomainConfigurationServerCertificateSummary : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTDomainConfigurationServerCertificateSummary'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-domainconfiguration-servercertificatesummary.html'

    hidden [object] $_serverCertificateArn
    hidden [object] $_serverCertificateStatus
    hidden [object] $_serverCertificateStatusDetail

    [string] $ServerCertificateArn
    [string] $ServerCertificateStatus
    [string] $ServerCertificateStatusDetail

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServerCertificateArn -Value {
            $this._serverCertificateArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serverCertificateArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServerCertificateStatus -Value {
            $this._serverCertificateStatus
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serverCertificateStatus = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServerCertificateStatusDetail -Value {
            $this._serverCertificateStatusDetail
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serverCertificateStatusDetail = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTDomainConfigurationServerCertificateSummary() : base() {}
    IoTDomainConfigurationServerCertificateSummary([IDictionary] $props) : base($props) {}
    IoTDomainConfigurationServerCertificateSummary([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleTimestreamDimension'"

class IoTTopicRuleTimestreamDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleTimestreamDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-timestreamdimension.html'

    hidden [object] $_name
    hidden [object] $_value

    [string] $Name
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleTimestreamDimension() : base() {}
    IoTTopicRuleTimestreamDimension([IDictionary] $props) : base($props) {}
    IoTTopicRuleTimestreamDimension([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfileStatisticalThreshold'"

class IoTSecurityProfileStatisticalThreshold : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTSecurityProfileStatisticalThreshold'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-securityprofile-statisticalthreshold.html'

    hidden [object] $_statistic

    [string] $Statistic

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statistic -Value {
            $this._statistic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statistic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTSecurityProfileStatisticalThreshold() : base() {}
    IoTSecurityProfileStatisticalThreshold([IDictionary] $props) : base($props) {}
    IoTSecurityProfileStatisticalThreshold([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleTimestreamTimestamp'"

class IoTTopicRuleTimestreamTimestamp : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSIoTTopicRuleTimestreamTimestamp'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-timestreamtimestamp.html'

    hidden [object] $_value
    hidden [object] $_unit

    [string] $Value
    [string] $Unit

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    IoTTopicRuleTimestreamTimestamp() : base() {}
    IoTTopicRuleTimestreamTimestamp([IDictionary] $props) : base($props) {}
    IoTTopicRuleTimestreamTimestamp([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTCustomMetric'"

class IoTCustomMetric : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTCustomMetric'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-custommetric.html'

    hidden [string[]] $_attributes = @('MetricArn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::CustomMetric'
    [string] $MetricName
    [string] $DisplayName
    [string] $MetricType
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this.Properties['MetricName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MetricName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisplayName -Value {
            $this.Properties['DisplayName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisplayName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricType -Value {
            $this.Properties['MetricType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MetricType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTCustomMetric() : base() {}
    IoTCustomMetric([IDictionary] $props) : base($props) {}
    IoTCustomMetric([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTMitigationAction'"

class IoTMitigationAction : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTMitigationAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-mitigationaction.html'

    hidden [string[]] $_attributes = @('MitigationActionArn','MitigationActionId')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::MitigationAction'
    [string] $ActionName
    [string] $RoleArn
    [VSTag[]] $Tags
    [IoTMitigationActionActionParams] $ActionParams
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ActionName -Value {
            $this.Properties['ActionName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ActionName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this.Properties['RoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ActionParams -Value {
            $this.Properties['ActionParams']
        } -SecondValue {
            param([ValidateType(([IoTMitigationActionActionParams], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ActionParams'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTMitigationAction() : base() {}
    IoTMitigationAction([IDictionary] $props) : base($props) {}
    IoTMitigationAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTSecurityProfile'"

class IoTSecurityProfile : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTSecurityProfile'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-securityprofile.html'

    hidden [string[]] $_attributes = @('SecurityProfileArn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::SecurityProfile'
    [string] $SecurityProfileName
    [string] $SecurityProfileDescription
    [IoTSecurityProfileBehavior[]] $Behaviors
    [IoTSecurityProfileAlertTarget] $AlertTargets
    [IoTSecurityProfileMetricToRetain[]] $AdditionalMetricsToRetainV2
    [VSTag[]] $Tags
    [string[]] $TargetArns
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityProfileName -Value {
            $this.Properties['SecurityProfileName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SecurityProfileName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityProfileDescription -Value {
            $this.Properties['SecurityProfileDescription']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SecurityProfileDescription'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Behaviors -Value {
            $this.Properties['Behaviors']
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileBehavior], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Behaviors'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AlertTargets -Value {
            $this.Properties['AlertTargets']
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileAlertTarget], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AlertTargets'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdditionalMetricsToRetainV2 -Value {
            $this.Properties['AdditionalMetricsToRetainV2']
        } -SecondValue {
            param([ValidateType(([IoTSecurityProfileMetricToRetain], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AdditionalMetricsToRetainV2'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetArns -Value {
            $this.Properties['TargetArns']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['TargetArns'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTSecurityProfile() : base() {}
    IoTSecurityProfile([IDictionary] $props) : base($props) {}
    IoTSecurityProfile([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRule'"

class IoTTopicRule : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTTopicRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicrule.html'

    hidden [string[]] $_attributes = @('Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::TopicRule'
    [string] $RuleName
    [IoTTopicRuleTopicRulePayload] $TopicRulePayload
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleName -Value {
            $this.Properties['RuleName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RuleName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TopicRulePayload -Value {
            $this.Properties['TopicRulePayload']
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleTopicRulePayload], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TopicRulePayload'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTTopicRule() : base() {}
    IoTTopicRule([IDictionary] $props) : base($props) {}
    IoTTopicRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTDomainConfiguration'"

class IoTDomainConfiguration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTDomainConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-domainconfiguration.html'

    hidden [string[]] $_attributes = @('Arn','DomainType','ServerCertificates')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::DomainConfiguration'
    [string] $DomainConfigurationName
    [IoTDomainConfigurationAuthorizerConfig] $AuthorizerConfig
    [string] $DomainName
    [string[]] $ServerCertificateArns
    [string] $ServiceType
    [string] $ValidationCertificateArn
    [string] $DomainConfigurationStatus
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainConfigurationName -Value {
            $this.Properties['DomainConfigurationName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainConfigurationName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerConfig -Value {
            $this.Properties['AuthorizerConfig']
        } -SecondValue {
            param([ValidateType(([IoTDomainConfigurationAuthorizerConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this.Properties['DomainName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServerCertificateArns -Value {
            $this.Properties['ServerCertificateArns']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ServerCertificateArns'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceType -Value {
            $this.Properties['ServiceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ValidationCertificateArn -Value {
            $this.Properties['ValidationCertificateArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ValidationCertificateArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainConfigurationStatus -Value {
            $this.Properties['DomainConfigurationStatus']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainConfigurationStatus'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTDomainConfiguration() : base() {}
    IoTDomainConfiguration([IDictionary] $props) : base($props) {}
    IoTDomainConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTAccountAuditConfiguration'"

class IoTAccountAuditConfiguration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTAccountAuditConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-accountauditconfiguration.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::AccountAuditConfiguration'
    [string] $AccountId
    [IoTAccountAuditConfigurationAuditCheckConfigurations] $AuditCheckConfigurations
    [IoTAccountAuditConfigurationAuditNotificationTargetConfigurations] $AuditNotificationTargetConfigurations
    [string] $RoleArn
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccountId -Value {
            $this.Properties['AccountId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AccountId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuditCheckConfigurations -Value {
            $this.Properties['AuditCheckConfigurations']
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditCheckConfigurations], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuditCheckConfigurations'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuditNotificationTargetConfigurations -Value {
            $this.Properties['AuditNotificationTargetConfigurations']
        } -SecondValue {
            param([ValidateType(([IoTAccountAuditConfigurationAuditNotificationTargetConfigurations], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuditNotificationTargetConfigurations'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this.Properties['RoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTAccountAuditConfiguration() : base() {}
    IoTAccountAuditConfiguration([IDictionary] $props) : base($props) {}
    IoTAccountAuditConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTAuthorizer'"

class IoTAuthorizer : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTAuthorizer'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-authorizer.html'

    hidden [string[]] $_attributes = @('Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::Authorizer'
    [string] $AuthorizerFunctionArn
    [string] $AuthorizerName
    [bool] $SigningDisabled
    [string] $Status
    [string] $TokenKeyName
    [string] $TokenSigningPublicKeys
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerFunctionArn -Value {
            $this.Properties['AuthorizerFunctionArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerFunctionArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizerName -Value {
            $this.Properties['AuthorizerName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthorizerName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SigningDisabled -Value {
            $this.Properties['SigningDisabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SigningDisabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Status -Value {
            $this.Properties['Status']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Status'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TokenKeyName -Value {
            $this.Properties['TokenKeyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TokenKeyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TokenSigningPublicKeys -Value {
            $this.Properties['TokenSigningPublicKeys']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TokenSigningPublicKeys'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTAuthorizer() : base() {}
    IoTAuthorizer([IDictionary] $props) : base($props) {}
    IoTAuthorizer([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTDimension'"

class IoTDimension : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-dimension.html'

    hidden [string[]] $_attributes = @('Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::Dimension'
    [string] $Name
    [string] $DimensionType
    [string[]] $StringValues
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DimensionType -Value {
            $this.Properties['DimensionType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DimensionType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StringValues -Value {
            $this.Properties['StringValues']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['StringValues'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTDimension() : base() {}
    IoTDimension([IDictionary] $props) : base($props) {}
    IoTDimension([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTProvisioningTemplate'"

class IoTProvisioningTemplate : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTProvisioningTemplate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-provisioningtemplate.html'

    hidden [string[]] $_attributes = @('TemplateArn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::ProvisioningTemplate'
    [string] $TemplateName
    [string] $Description
    [bool] $Enabled
    [string] $ProvisioningRoleArn
    [string] $TemplateBody
    [IoTProvisioningTemplateProvisioningHook] $PreProvisioningHook
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name TemplateName -Value {
            $this.Properties['TemplateName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TemplateName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this.Properties['Enabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Enabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ProvisioningRoleArn -Value {
            $this.Properties['ProvisioningRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ProvisioningRoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TemplateBody -Value {
            $this.Properties['TemplateBody']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TemplateBody'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PreProvisioningHook -Value {
            $this.Properties['PreProvisioningHook']
        } -SecondValue {
            param([ValidateType(([IoTProvisioningTemplateProvisioningHook], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PreProvisioningHook'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTProvisioningTemplate() : base() {}
    IoTProvisioningTemplate([IDictionary] $props) : base($props) {}
    IoTProvisioningTemplate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTThing'"

class IoTThing : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTThing'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thing.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::Thing'
    [IoTThingAttributePayload] $AttributePayload
    [string] $ThingName
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AttributePayload -Value {
            $this.Properties['AttributePayload']
        } -SecondValue {
            param([ValidateType(([IoTThingAttributePayload], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AttributePayload'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThingName -Value {
            $this.Properties['ThingName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ThingName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTThing() : base() {}
    IoTThing([IDictionary] $props) : base($props) {}
    IoTThing([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTPolicy'"

class IoTPolicy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policy.html'

    hidden [string[]] $_attributes = @('Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::Policy'
    [VSJson] $PolicyDocument
    [string] $PolicyName
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name PolicyDocument -Value {
            $this.Properties['PolicyDocument']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['PolicyDocument'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['PolicyDocument']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PolicyName -Value {
            $this.Properties['PolicyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PolicyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTPolicy() : base() {}
    IoTPolicy([IDictionary] $props) : base($props) {}
    IoTPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTScheduledAudit'"

class IoTScheduledAudit : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTScheduledAudit'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-scheduledaudit.html'

    hidden [string[]] $_attributes = @('ScheduledAuditArn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::ScheduledAudit'
    [string] $ScheduledAuditName
    [string] $Frequency
    [string] $DayOfMonth
    [string] $DayOfWeek
    [string[]] $TargetCheckNames
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduledAuditName -Value {
            $this.Properties['ScheduledAuditName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScheduledAuditName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Frequency -Value {
            $this.Properties['Frequency']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Frequency'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DayOfMonth -Value {
            $this.Properties['DayOfMonth']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DayOfMonth'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DayOfWeek -Value {
            $this.Properties['DayOfWeek']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DayOfWeek'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetCheckNames -Value {
            $this.Properties['TargetCheckNames']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['TargetCheckNames'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTScheduledAudit() : base() {}
    IoTScheduledAudit([IDictionary] $props) : base($props) {}
    IoTScheduledAudit([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTPolicyPrincipalAttachment'"

class IoTPolicyPrincipalAttachment : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTPolicyPrincipalAttachment'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policyprincipalattachment.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::PolicyPrincipalAttachment'
    [string] $PolicyName
    [string] $Principal
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name PolicyName -Value {
            $this.Properties['PolicyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PolicyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Principal -Value {
            $this.Properties['Principal']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Principal'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTPolicyPrincipalAttachment() : base() {}
    IoTPolicyPrincipalAttachment([IDictionary] $props) : base($props) {}
    IoTPolicyPrincipalAttachment([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTThingPrincipalAttachment'"

class IoTThingPrincipalAttachment : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTThingPrincipalAttachment'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thingprincipalattachment.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::ThingPrincipalAttachment'
    [string] $Principal
    [string] $ThingName
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Principal -Value {
            $this.Properties['Principal']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Principal'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ThingName -Value {
            $this.Properties['ThingName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ThingName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTThingPrincipalAttachment() : base() {}
    IoTThingPrincipalAttachment([IDictionary] $props) : base($props) {}
    IoTThingPrincipalAttachment([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTTopicRuleDestination'"

class IoTTopicRuleDestination : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTTopicRuleDestination'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicruledestination.html'

    hidden [string[]] $_attributes = @('Arn','StatusReason')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::TopicRuleDestination'
    [string] $Status
    [IoTTopicRuleDestinationHttpUrlDestinationSummary] $HttpUrlProperties
    [IoTTopicRuleDestinationVpcDestinationProperties] $VpcProperties
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Status -Value {
            $this.Properties['Status']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Status'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpUrlProperties -Value {
            $this.Properties['HttpUrlProperties']
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleDestinationHttpUrlDestinationSummary], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HttpUrlProperties'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcProperties -Value {
            $this.Properties['VpcProperties']
        } -SecondValue {
            param([ValidateType(([IoTTopicRuleDestinationVpcDestinationProperties], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VpcProperties'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTTopicRuleDestination() : base() {}
    IoTTopicRuleDestination([IDictionary] $props) : base($props) {}
    IoTTopicRuleDestination([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'IoTCertificate'"

class IoTCertificate : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSIoTCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-certificate.html'

    hidden [string[]] $_attributes = @('Id','Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::IoT::Certificate'
    [string] $CACertificatePem
    [string] $CertificatePem
    [string] $CertificateSigningRequest
    [string] $CertificateMode
    [string] $Status
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name CACertificatePem -Value {
            $this.Properties['CACertificatePem']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CACertificatePem'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificatePem -Value {
            $this.Properties['CertificatePem']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CertificatePem'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateSigningRequest -Value {
            $this.Properties['CertificateSigningRequest']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CertificateSigningRequest'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateMode -Value {
            $this.Properties['CertificateMode']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CertificateMode'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Status -Value {
            $this.Properties['Status']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Status'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    IoTCertificate() : base() {}
    IoTCertificate([IDictionary] $props) : base($props) {}
    IoTCertificate([psobject] $props) : base($props) {}
}