DSCResources/DCPP_SystemConfiguration/DCPP_SystemConfiguration.psm1
# Import the helper functions Import-Module $PSScriptRoot\..\..\Misc\helper.psm1 -Verbose:$false function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [parameter(Mandatory = $true)] [System.String] $Category ) #Write-Verbose "Use this cmdlet to deliver information about command processing." #Write-Debug "Use this cmdlet to write debug information while troubleshooting." <# $returnValue = @{ Category = [System.String] MultiCoreSupport = [System.String] IntelSpeedStep = [System.String] CStates = [System.String] IntelTurboBoost = [System.String] HyperThreadControl = [System.String] Password = [System.String] SecurePassword = [System.String] PathToKey = [System.String] } $returnValue #> # Check if module DellBIOSprovider is already loaded. If not, load it. try{ $bool = Confirm-DellPSDrive -verbose } catch { write-Verbose $_ $msg = "Get-TargetResource: $($_.Exception.Message)" Write-DellEventLog -Message $msg -EventID 1 -EntryType 'Error' write-Verbose "Exiting Get-TargetResource" return } if ($bool) { Write-Verbose "Dell PS-Drive DellSmbios is found." } else{ $Message = “Get-TargetResource: Module DellBiosProvider was imported correctly." Write-DellEventLog -Message $Message -EventID 2 } $Get = get-childitem -path @("DellSmbios:\" + $Category) # Removing Verbose and Debug from output $PSBoundParameters.Remove("Verbose") | out-null $PSBoundParameters.Remove("Debug") | out-null $out = @{} $Get | foreach-Object {$out.Add($_.Attribute, $_.CurrentValue)} $out.add('Category', $Category ) $out } function Set-TargetResource { [CmdletBinding()] param ( [parameter(Mandatory = $true)] [System.String] $Category, [ValidateSet("Enabled","Disabled")] [System.String] $WatchdogTimer, [ValidateSet("Enabled","Disabled")] [System.String] $MEMSSensors, [ValidateSet("Enabled","Disabled")] [System.String] $KeyboardBacklightOnAc, [ValidateSet("Enabled","Disabled","Auto")] [System.String] $IntegratedAudio, [ValidateSet("Enabled","Disabled","Low","Medium","High")] [System.String] $InternalSpeaker, [ValidateSet("Enabled","Disabled","EnabledPxe","OnWithImageServerBoot","EnabledwithRPLBoot","EnabledwithISCSIBoot")] [System.String] $EmbNic1, [ValidateSet("Off","25","50","75","100","Auto")] [System.String] $KeyboardIllumination, [ValidateSet("Ata","Disabled","Ahci","Raid")] [System.String] $EmbSataRaid, [ValidateSet("Enabled","Disabled")] [System.String] $PowerButton, [ValidateSet("Enabled","Disabled")] [System.String] $OnboardSoundDevice, [ValidateSet("Enabled","Disabled")] [System.String] $IoModule, [ValidateSet("Enabled","Disabled")] [System.String] $CanBus, [ValidateSet("Enabled","Disabled")] [System.String] $UefiNwStack, [ValidateSet("Enabled","Disabled")] [System.String] $Sata0, [ValidateSet("Enabled","Disabled")] [System.String] $Sata1, [ValidateSet("Enabled","Disabled")] [System.String] $Sata2, [ValidateSet("Enabled","Disabled")] [System.String] $Sata3, [ValidateSet("Enabled","Disabled")] [System.String] $Sata4, [ValidateSet("Enabled","Disabled")] [System.String] $Sata5, [ValidateSet("Enabled","Disabled")] [System.String] $Sata6, [ValidateSet("Enabled","Disabled")] [System.String] $Sata7, [ValidateSet("Enabled","Disabled")] [System.String] $Minisas0, [ValidateSet("Enabled","Disabled")] [System.String] $Minisas1, [ValidateSet("Enabled","Disabled")] [System.String] $Minisas2, [ValidateSet("Enabled","Disabled")] [System.String] $Minisas3, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel1, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel2, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel3, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel4, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel5, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel6, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel7, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel8, [ValidateSet("Enabled","Disabled")] [System.String] $SmartErrors, [ValidateSet("Enabled","Disabled")] [System.String] $DisOsdBtn, [ValidateSet("Enabled","Disabled")] [System.String] $Hdd1FanEnable, [ValidateSet("Enabled","Disabled")] [System.String] $Hdd2FanEnable, [ValidateSet("Enabled","Disabled")] [System.String] $Hdd3FanEnable, [ValidateSet("Enabled","Disabled")] [System.String] $LiquidCooler1, [ValidateSet("Enabled","Disabled")] [System.String] $LiquidCooler2, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPowerShare, [ValidateSet("Enabled","Disabled")] [System.String] $Microphone, [ValidateSet("Enabled","Disabled")] [System.String] $DockSupportOnBattery, [ValidateSet("Enabled","Disabled")] [System.String] $UnobtrusiveMode, [ValidateSet("Enabled","Disabled")] [System.String] $Touchscreen, [ValidateSet("Enabled","Disabled")] [System.String] $M2PcieSsd0, [ValidateSet("Enabled","Disabled")] [System.String] $M2PcieSsd1, [ValidateSet("Enabled","Disabled")] [System.String] $MmioAbove4Gb, [ValidateSet("Enabled","Disabled")] [System.String] $IntegratedSas, [ValidateSet("Enabled","Disabled")] [System.String] $OptionalBootSequence, [ValidateSet("Enabled","Disabled")] [System.String] $NearFieldComputing, [ValidateSet("Enabled","Disabled")] [System.String] $ForcePxeNextBoot, [ValidateSet("Enabled","Disabled")] [System.String] $ForcePXEasFirstBootDevice, [ValidateSet("Auto","Disabled")] [System.String] $VmdPcieSlot, [ValidateSet("Enabled","Disabled")] [System.String] $VmdNvmePcie0, [ValidateSet("Enabled","Disabled")] [System.String] $VmdNvmePcie1, [ValidateSet("Enabled","Disabled")] [System.String] $VmdNvmePcie0Cpu1, [ValidateSet("Enabled","Disabled")] [System.String] $VmdNvmePcie1Cpu1, [ValidateSet("Enabled","Disabled")] [System.String] $Sata8, [ValidateSet("Enabled","Disabled")] [System.String] $EMMCDevice, [System.String] $Password, [System.String] $SecurePassword, [System.String] $PathToKey ) if (-not(CheckModuleLoaded)) { Write-Verbose -Message 'Required module DellBiosProvider does not exist. Exiting.' return $true } $DellPSDrive = get-psdrive -name Dellsmbios if ( !$DellPSDrive) { $Message = "Drive DellSmbios is not found. Exiting." Write-Verbose $Message Write-DellEventLog -Message $Message -EventID 3 -EntryType "Error" return $true } $attributes_desired = $PSBoundParameters $atts = $attributes_desired $pathToCategory = $DellPSDrive.Name + ':\' + $atts["Category"] Dir $pathToCategory -verbose $atts.Remove("Verbose") | out-null $atts.Remove("Category") | out-null $atts.Remove("Debug") | out-null $securePwd=$atts["SecurePassword"] $passwordSet=$atts["Password"] $atts.Remove("Password") | Out-Null $atts.Remove("SecurePassword") | Out-Null $pathToKey=$atts["PathToKey"] if(-Not [string]::IsNullOrEmpty($pathToKey)) { if(Test-Path $pathToKey) { $key=Get-Content $pathToKey } else { $key="" } } $atts.Remove("PathToKey") | Out-Null #foreach($a in Import-Csv((Get-DellBIOSEncryptionKey))) #{ # $key+=$a # } $atts.Keys | foreach-object { # $atts[$_] $path = $pathToCategory + '\' + $($_) $value = $atts[$_] if(-Not [string]::IsNullOrEmpty($securePwd)) { $pasvar=ConvertTo-SecureString $securePwd.ToString() -Key $key Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -PasswordSecure $pasvar } elseif(-Not [string]::IsNullOrEmpty($passwordSet)) { Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue -Password $passwordSet } else { Set-Item -path $path -value $value -verbose -ErrorVariable ev -ErrorAction SilentlyContinue } if ( $ev) { $cmdline = $ExecutionContext.InvokeCommand.ExpandString($ev.InvocationInfo.Line) $Message = "An error occured in executing " + $cmdline + "`nError message: $($ev.ErrorDetails)" Write-Verbose $Message Write-DellEventLog -Message $Message -EventID 5 -EntryType "Error" } } } function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [parameter(Mandatory = $true)] [System.String] $Category, [ValidateSet("Enabled","Disabled")] [System.String] $WatchdogTimer, [ValidateSet("Enabled","Disabled")] [System.String] $MEMSSensors, [ValidateSet("Enabled","Disabled")] [System.String] $KeyboardBacklightOnAc, [ValidateSet("Enabled","Disabled","Auto")] [System.String] $IntegratedAudio, [ValidateSet("Enabled","Disabled","Low","Medium","High")] [System.String] $InternalSpeaker, [ValidateSet("Enabled","Disabled","EnabledPxe","OnWithImageServerBoot","EnabledwithRPLBoot","EnabledwithISCSIBoot")] [System.String] $EmbNic1, [ValidateSet("Ata","Disabled","Ahci","Raid")] [System.String] $EmbSataRaid, [ValidateSet("Off","25","50","75","100","Auto")] [System.String] $KeyboardIllumination, [ValidateSet("Enabled","Disabled")] [System.String] $PowerButton, [ValidateSet("Enabled","Disabled")] [System.String] $OnboardSoundDevice, [ValidateSet("Enabled","Disabled")] [System.String] $IoModule, [ValidateSet("Enabled","Disabled")] [System.String] $CanBus, [ValidateSet("Enabled","Disabled")] [System.String] $UefiNwStack, [ValidateSet("Enabled","Disabled")] [System.String] $Sata0, [ValidateSet("Enabled","Disabled")] [System.String] $Sata1, [ValidateSet("Enabled","Disabled")] [System.String] $Sata2, [ValidateSet("Enabled","Disabled")] [System.String] $Sata3, [ValidateSet("Enabled","Disabled")] [System.String] $Sata4, [ValidateSet("Enabled","Disabled")] [System.String] $Sata5, [ValidateSet("Enabled","Disabled")] [System.String] $Sata6, [ValidateSet("Enabled","Disabled")] [System.String] $Sata7, [ValidateSet("Enabled","Disabled")] [System.String] $Minisas0, [ValidateSet("Enabled","Disabled")] [System.String] $Minisas1, [ValidateSet("Enabled","Disabled")] [System.String] $Minisas2, [ValidateSet("Enabled","Disabled")] [System.String] $Minisas3, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel1, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel2, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel3, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel4, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel5, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel6, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel7, [ValidateSet("Unused","ADCInput","DACOutput","DACAndADC","GPIO")] [System.String] $AnalogDigitalInterfaceModeChannel8, [ValidateSet("Enabled","Disabled")] [System.String] $SmartErrors, [ValidateSet("Enabled","Disabled")] [System.String] $DisOsdBtn, [ValidateSet("Enabled","Disabled")] [System.String] $Hdd1FanEnable, [ValidateSet("Enabled","Disabled")] [System.String] $Hdd2FanEnable, [ValidateSet("Enabled","Disabled")] [System.String] $Hdd3FanEnable, [ValidateSet("Enabled","Disabled")] [System.String] $LiquidCooler1, [ValidateSet("Enabled","Disabled")] [System.String] $LiquidCooler2, [ValidateSet("Enabled","Disabled")] [System.String] $UsbPowerShare, [ValidateSet("Enabled","Disabled")] [System.String] $Microphone, [ValidateSet("Enabled","Disabled")] [System.String] $DockSupportOnBattery, [ValidateSet("Enabled","Disabled")] [System.String] $UnobtrusiveMode, [ValidateSet("Enabled","Disabled")] [System.String] $Touchscreen, [ValidateSet("Enabled","Disabled")] [System.String] $M2PcieSsd0, [ValidateSet("Enabled","Disabled")] [System.String] $M2PcieSsd1, [ValidateSet("Enabled","Disabled")] [System.String] $MmioAbove4Gb, [ValidateSet("Enabled","Disabled")] [System.String] $IntegratedSas, [ValidateSet("Enabled","Disabled")] [System.String] $OptionalBootSequence, [ValidateSet("Enabled","Disabled")] [System.String] $NearFieldComputing, [ValidateSet("Enabled","Disabled")] [System.String] $ForcePxeNextBoot, [ValidateSet("Enabled","Disabled")] [System.String] $ForcePXEasFirstBootDevice, [ValidateSet("Auto","Disabled")] [System.String] $VmdPcieSlot, [ValidateSet("Enabled","Disabled")] [System.String] $VmdNvmePcie0, [ValidateSet("Enabled","Disabled")] [System.String] $VmdNvmePcie1, [ValidateSet("Enabled","Disabled")] [System.String] $VmdNvmePcie0Cpu1, [ValidateSet("Enabled","Disabled")] [System.String] $VmdNvmePcie1Cpu1, [ValidateSet("Enabled","Disabled")] [System.String] $Sata8, [ValidateSet("Enabled","Disabled")] [System.String] $EMMCDevice, [System.String] $Password, [System.String] $SecurePassword, [System.String] $PathToKey ) $Get = Get-TargetResource $PSBoundParameters['Category'] -verbose New-DellEventLog $PSBoundParameters.Remove("Verbose") | out-null $PSBoundParameters.Remove("Debug") | out-null $PSBoundParameters.Remove("Category") | out-null $PSBoundParameters.Remove("Password") | out-null $PSBoundParameters.Remove("SecurePassword") | out-null $attributes_desired = $PSBoundParameters $bool = $true foreach ($config_att in $PSBoundParameters.GetEnumerator()) { if ($Get.ContainsKey($config_att.Key)) { $currentvalue = $Get[$config_att.Key] $currentvalue_nospace = $currentvalue -replace " ", "" if ($config_att.Value -ne $currentvalue_nospace){ $bool = $false $drift = "`nCurrentValue: $currentvalue_nospace`nDesiredValue: $($config_att.value)" $message = "Configuration is drifted in category $Category for $($config_att.Key). $drift" write-verbose $message Write-DellEventLog -Message $message -EventID 4 -EntryType Warning } else { write-Debug "Configuration is same for $config_att." } } else { $message = "Unsupported attribute $($config_att)" Write-Verbose $message } } return $bool } Export-ModuleMember -Function *-TargetResource # SIG # Begin signature block # MIIVqgYJKoZIhvcNAQcCoIIVmzCCFZcCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAutvu2XJ+Y3i6x # ciaLSDjNeo4h80R6JdS8+EOqCXlDw6CCCiMwggTCMIIDqqADAgECAhAiNl3Koo7M # bamHXZYvcHGpMA0GCSqGSIb3DQEBCwUAMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQK # ExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3Qg # TmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBT # aWduaW5nIENBMB4XDTE4MDkyNzAwMDAwMFoXDTIxMDkyNjIzNTk1OVowWjELMAkG # A1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMRMwEQYDVQQHDApSb3VuZCBSb2NrMRIw # EAYDVQQKDAlEZWxsIEluYy4xEjAQBgNVBAMMCURlbGwgSW5jLjCCASIwDQYJKoZI # hvcNAQEBBQADggEPADCCAQoCggEBAK2E5sUV7O7RXKt547mMdmq27CulgmONL6w3 # 2c5gs7vQsH3KWy9Q5rQ83MEPnRncZy71Alrky1G3dV3d1CxH7kH8xfu+YOUR+OVo # VOFgkoT4tY2xST2B+WfS1jXJKzj5VQuOTn/f2Qie3mA02e3/YlTAMUmOqi4a2gNH # 3r/de81Yj3e/DqzFV5rWrTfdZ7SQNoWVKA/cVu5KrPdXPjqMpRMxnjP4WPzs6eR0 # 4ONH6tvUNWP6PCrRxg5EIpKhbW0DZxvp1VqXDCyQLe98cjgbgD+0pUDrBGa3pxB3 # iJVBvZ5WI/OL0KxlvFtWrdEjIxTnwmq8pqp8i99v3u4LxrQEtZ0CAwEAAaOCAV0w # ggFZMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMCsGA1UdHwQkMCIwIKAeoByG # Gmh0dHA6Ly9zdi5zeW1jYi5jb20vc3YuY3JsMGEGA1UdIARaMFgwVgYGZ4EMAQQB # MEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUF # BwICMBkMF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMBMGA1UdJQQMMAoGCCsGAQUF # BwMDMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3N2LnN5bWNk # LmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL3N2LnN5bWNiLmNvbS9zdi5jcnQwHwYD # VR0jBBgwFoAUljtT8Hkzl699g+8uK8zKt4YecmYwHQYDVR0OBBYEFNKZNdkAeaso # MvcuUOlErixyOmzRMA0GCSqGSIb3DQEBCwUAA4IBAQBujEZqs+dJwHwXRBl4HNxI # uOlp7kvlwIMdR+prfX31DALJEEn6qGHHpTMJaIVULHjqindsIDBuANm6fLTWuEPN # bE1W5hd/XdOTKuWJaluAStl32Q0gdsc2nQLVo9KS6b3yJeTFWquDMg0oJrUcQS5n # vxpKfKsukni83wb8dZxXTehzj6TcHdSqMPiU6KxfYB3+PcOfp00obHqOeRDuE8mB # LupPJdUCbK+cq15n+o//wOi6dvoEu3xqJ3lGVDBN1MwbulMbYMt0UDonmn16Tkhj # 80WP5zL65G9kbLD0Vifp4uddXjcHrwu4WEggab49TtcPNayPEofQXRdoHcmx5Tyh # MIIFWTCCBEGgAwIBAgIQPXjX+XZJYLJhffTwHsqGKjANBgkqhkiG9w0BAQsFADCB # yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL # ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp # U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW # ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 # aG9yaXR5IC0gRzUwHhcNMTMxMjEwMDAwMDAwWhcNMjMxMjA5MjM1OTU5WjB/MQsw # CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV # BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5bWFudGVjIENs # YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQAD # ggEPADCCAQoCggEBAJeDHgAWryyx0gjE12iTUWAecfbiR7TbWE0jYmq0v1obUfej # DRh3aLvYNqsvIVDanvPnXydOC8KXyAlwk6naXA1OpA2RoLTsFM6RclQuzqPbROlS # Gz9BPMpK5KrA6DmrU8wh0MzPf5vmwsxYaoIV7j02zxzFlwckjvF7vjEtPW7ctZlC # n0thlV8ccO4XfduL5WGJeMdoG68ReBqYrsRVR1PZszLWoQ5GQMWXkorRU6eZW4U1 # V9Pqk2JhIArHMHckEU1ig7a6e2iCMe5lyt/51Y2yNdyMK29qclxghJzyDJRewFZS # AEjM0/ilfd4v1xPkOKiE1Ua4E4bCG53qWjjdm9sCAwEAAaOCAYMwggF/MC8GCCsG # AQUFBwEBBCMwITAfBggrBgEFBQcwAYYTaHR0cDovL3MyLnN5bWNiLmNvbTASBgNV # HRMBAf8ECDAGAQH/AgEAMGwGA1UdIARlMGMwYQYLYIZIAYb4RQEHFwMwUjAmBggr # BgEFBQcCARYaaHR0cDovL3d3dy5zeW1hdXRoLmNvbS9jcHMwKAYIKwYBBQUHAgIw # HBoaaHR0cDovL3d3dy5zeW1hdXRoLmNvbS9ycGEwMAYDVR0fBCkwJzAloCOgIYYf # aHR0cDovL3MxLnN5bWNiLmNvbS9wY2EzLWc1LmNybDAdBgNVHSUEFjAUBggrBgEF # BQcDAgYIKwYBBQUHAwMwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRow # GAYDVQQDExFTeW1hbnRlY1BLSS0xLTU2NzAdBgNVHQ4EFgQUljtT8Hkzl699g+8u # K8zKt4YecmYwHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZI # hvcNAQELBQADggEBABOFGh5pqTf3oL2kr34dYVP+nYxeDKZ1HngXI9397BoDVTn7 # cZXHZVqnjjDSRFph23Bv2iEFwi5zuknx0ZP+XcnNXgPgiZ4/dB7X9ziLqdbPuzUv # M1ioklbRyE07guZ5hBb8KLCxR/Mdoj7uh9mmf6RWpT+thC4p3ny8qKqjPQQB6rqT # og5QIikXTIfkOhFf1qQliZsFay+0yQFMJ3sLrBkFIqBgFT/ayftNTI/7cmd3/SeU # x7o1DohJ/o39KK9KEr0Ns5cF3kQMFfo2KwPcwVAB8aERXRTl4r0nS1S+K4ReD6bD # dAUK75fDiSKxH3fzvc1D1PFMqT+1i4SvZPLQFCExggrdMIIK2QIBATCBkzB/MQsw # CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV # BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5bWFudGVjIENs # YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQQIQIjZdyqKOzG2ph12WL3BxqTAN # BglghkgBZQMEAgEFAKCBrDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor # BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgEr6gnccb # SlBOuVcTNKafc+/sFfHGft5xqggxZNsEQaQwQAYKKwYBBAGCNwIBDDEyMDCgFoAU # AEQAZQBsAGwALAAgAEkAbgBjAC6hFoAUaHR0cDovL3d3dy5kZWxsLmNvbSAwDQYJ # KoZIhvcNAQEBBQAEggEAhKQWlAeFlmmCi7YZYUtu6pABm1vXhr1W/EKseTfl18k9 # R4JUnhUPTn4TzpzSRmh8JhnfbVdKQ/26KsJXWjxN9dsEQufMo4AgRY9CaxWE3XVS # sWsvjtWtS7kb3ZPXbA4iGl1aTP7PABmD6MVTQUAKT5AVDDeXbBmYk/HfxJb+/HDz # DuD0t0uw0adIyTRVOu+G8TK/FotC2bTwIPYHv1nITTIaRbETmF0xkgwSieG8biRN # nwZ1LkS9ScOdih21ZItwwjZI0Y2phRTjOD8iNebllNvHNwRsewFJ1w+2ZDdLP5CE # DXKlQjxwrldN5RjiA0vJwYWmu7ybGlKJ5pkMDeONUaGCCGswgghnBgorBgEEAYI3 # AwMBMYIIVzCCCFMGCSqGSIb3DQEHAqCCCEQwgghAAgEDMQ8wDQYJYIZIAWUDBAIB # BQAwggEPBgsqhkiG9w0BCRABBKCB/wSB/DCB+QIBAQYKKwYBBAGyMQIBATAxMA0G # CWCGSAFlAwQCAQUABCBZIjYS7urpsOwgvf76DU4/JYD5P7CXQzJsYQ90iVbRqwIV # ANu+SpPVacB5L/pzvghbboL0Zs9XGA8yMDE5MDQyMjA2MDIxN1qggYykgYkwgYYx # CzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNV # BAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSwwKgYDVQQD # EyNDT01PRE8gU0hBLTI1NiBUaW1lIFN0YW1waW5nIFNpZ25lcqCCBKAwggScMIID # hKADAgECAhBOsIePzCQ1NrLYyfe/OVV3MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD # VQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w # HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93 # d3cudXNlcnRydXN0LmNvbTEdMBsGA1UEAxMUVVROLVVTRVJGaXJzdC1PYmplY3Qw # HhcNMTUxMjMxMDAwMDAwWhcNMTkwNzA5MTg0MDM2WjCBhjELMAkGA1UEBhMCR0Ix # GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa # MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxLDAqBgNVBAMTI0NPTU9ETyBTSEEt # MjU2IFRpbWUgU3RhbXBpbmcgU2lnbmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A # MIIBCgKCAQEAzrx0t3CAT17zP5iqLsvUEgEjNWkLIrzm/QlsKOQTEqy7ui3l1d0i # 7nO2LPjSpHHnSSV4qyW3kBCgm4t3Jt1A6kGj/YjNcqaJO1BXHHolJCICUUA1Z4ox # aQ3lOXNJOZuVAYVS8isUiZpOBKS8QK45pt1AAuA6df49fVWUW/FOJHzIuFgZysDa # vlgTmuYc59HBO/Bdj0kIIZ7Q877W1GZPXHI2e8OC05gIlK+rRE8YxxTaFrEeMg4S # OMC1PHbsdVAAIAQRGe3G/99O/giBJzFPcXRuAwxwJ4FVappDkqR/2/0/xRceQbvO # 6Kd/jJX5/X/4YYiJAD7/CwHb/dW1pOSREQIDAQABo4H0MIHxMB8GA1UdIwQYMBaA # FNrtZHQUnBQ8q92Zqb1bKE2LPMnYMB0GA1UdDgQWBBR9v5HXp2xaR2ZEe5DUjpBy # QY8XwjAOBgNVHQ8BAf8EBAMCBsAwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAK # BggrBgEFBQcDCDBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3JsLnVzZXJ0cnVz # dC5jb20vVVROLVVTRVJGaXJzdC1PYmplY3QuY3JsMDUGCCsGAQUFBwEBBCkwJzAl # BggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0B # AQsFAAOCAQEAULD131+tM9zDU1hYvMITdXsgHVTKuj9QP7qK9GsJY8BbXYvWdRpz # vYv/R/EV3FEWIxky5m6STdHGLloeiEIUyXLl1whQimr1ZEBWriTjYZcVQvAsSK6D # 5jU8i1vCj66OzDRSNOD7/sr9sSRo0aQRIxAG/bLCJCfH1+lKHI8/Ps/t63V5bI5f # 9yG2UOYloc1mlBJsv9uzrofYaANyIALCftqU83IHPFfoVSTnBaAdxIEBgksfPw+d # M5vwT8yd1oWBz8vn/Urpkrj3DXJzLel3+W+PKHo+Hr0IhtyNHhFf91u7h3bGnkxU # YdBn25OE2jGHA5Lnn+Ppz1pWyGjgUkmUXDGCAnEwggJtAgEBMIGqMIGVMQswCQYD # VQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w # HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93 # d3cudXNlcnRydXN0LmNvbTEdMBsGA1UEAxMUVVROLVVTRVJGaXJzdC1PYmplY3QC # EE6wh4/MJDU2stjJ9785VXcwDQYJYIZIAWUDBAIBBQCggZgwGgYJKoZIhvcNAQkD # MQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0xOTA0MjIwNjAyMTdaMCsG # CyqGSIb3DQEJEAIMMRwwGjAYMBYEFDZSfU+iamj560WW8dmauywOp236MC8GCSqG # SIb3DQEJBDEiBCAiXgQE1bMtN8MxVL3kQB5035+ORXJ2jihhM9zbInTTGzANBgkq # hkiG9w0BAQEFAASCAQA7BHj4d9QhmJW4h552pf+VB+H5sRX7QnFkkDYfodtm9qX2 # Z9KK1qDSUWewq6K13IKOt8qhdz0BW78exm69f5Evz49l0wrmPfLGWyzO6SiX3KxP # 0vuJ5/Z4MPi85Ds/g8/HU8NRQscTJsgvh6W7JbSzHcQyR3BHy5V9SFEpOgajnZEd # zxoWGmtrAX6LFDId6WRQh9igwfXieS/KgvVqmSabwgINdgAHUIGaxSp5jjsnvLlw # AQWZlxxj6KLmZamaaohd90IHEBAPo9a0zAEMyUENBnkDbK8ICNy2paX4Lx259HLd # NAkW1b4Vmqkl7VZX/q00mVKqRUbxAr/kiKy5IrWw # SIG # End signature block |