'---------------------------------------------------------------------- ' ' Copyright (c) Microsoft Corporation. All rights reserved. ' ' Abstract: ' prndrvr.vbs - driver script for WMI on Windows ' used to add, delete, and list drivers. ' ' Usage: ' prndrvr [-adlx?] [-m model][-v version][-e environment][-s server] ' [-u user name][-w password][-h file path][-i inf file] ' ' Example: ' prndrvr -a -m "driver" -v 3 -e "Windows NT x86" ' prndrvr -d -m "driver" -v 3 -e "Windows x64" ' prndrvr -d -m "driver" -v 3 -e "Windows IA64" ' prndrvr -x -s server ' prndrvr -l -s server ' '---------------------------------------------------------------------- option explicit ' ' Debugging trace flags, to enable debug output trace message ' change gDebugFlag to true. ' const kDebugTrace = 1 const kDebugError = 2 dim gDebugFlag gDebugFlag = false ' ' Operation action values. ' const kActionUnknown = 0 const kActionAdd = 1 const kActionDel = 2 const kActionDelAll = 3 const kActionList = 4 const kErrorSuccess = 0 const kErrorFailure = 1 const kNameSpace = "root\cimv2" ' ' Generic strings ' const L_Empty_Text = "" const L_Space_Text = " " const L_Error_Text = "Error" const L_Success_Text = "Success" const L_Failed_Text = "Failed" const L_Hex_Text = "0x" const L_Printer_Text = "Printer" const L_Operation_Text = "Operation" const L_Provider_Text = "Provider" const L_Description_Text = "Description" const L_Debug_Text = "Debug:" ' ' General usage messages ' const L_Help_Help_General01_Text = "Usage: prndrvr [-adlx?] [-m model][-v version][-e environment][-s server]" const L_Help_Help_General02_Text = " [-u user name][-w password][-h path][-i inf file]" const L_Help_Help_General03_Text = "Arguments:" const L_Help_Help_General04_Text = "-a - add the specified driver" const L_Help_Help_General05_Text = "-d - delete the specified driver" const L_Help_Help_General06_Text = "-e - environment ""Windows {NT x86 | X64 | IA64}""" const L_Help_Help_General07_Text = "-h - driver file path" const L_Help_Help_General08_Text = "-i - fully qualified inf file name" const L_Help_Help_General09_Text = "-l - list all drivers" const L_Help_Help_General10_Text = "-m - driver model name" const L_Help_Help_General11_Text = "-s - server name" const L_Help_Help_General12_Text = "-u - user name" const L_Help_Help_General13_Text = "-v - version" const L_Help_Help_General14_Text = "-w - password" const L_Help_Help_General15_Text = "-x - delete all drivers that are not in use" const L_Help_Help_General16_Text = "-? - display command usage" const L_Help_Help_General17_Text = "Examples:" const L_Help_Help_General18_Text = "prndrvr -a -m ""driver"" -v 3 -e ""Windows NT x86""" const L_Help_Help_General19_Text = "prndrvr -d -m ""driver"" -v 3 -e ""Windows x64""" const L_Help_Help_General20_Text = "prndrvr -a -m ""driver"" -v 3 -e ""Windows IA64"" -i c:\temp\drv\drv.inf -h c:\temp\drv" const L_Help_Help_General21_Text = "prndrvr -l -s server" const L_Help_Help_General22_Text = "prndrvr -x -s server" const L_Help_Help_General23_Text = "Remarks:" const L_Help_Help_General24_Text = "The inf file name must be fully qualified. If the inf name is not specified, the script uses" const L_Help_Help_General25_Text = "one of the inbox printer inf files in the inf subdirectory of the Windows directory." const L_Help_Help_General26_Text = "If the driver path is not specified, the script searches for driver files in the driver.cab file." const L_Help_Help_General27_Text = "The -x option deletes all additional printer drivers (drivers installed for use on clients running" const L_Help_Help_General28_Text = "alternate versions of Windows), even if the primary driver is in use. If the fax component is installed," const L_Help_Help_General29_Text = "this option deletes any additional fax drivers. The primary fax driver is also deleted if it is not" const L_Help_Help_General30_Text = "in use (i.e. if there is no queue using it). If the primary fax driver is deleted, the only way to" const L_Help_Help_General31_Text = "re-enable fax is to reinstall the fax component." ' ' Messages to be displayed if the scripting host is not cscript ' const L_Help_Help_Host01_Text = "This script should be executed from the Command Prompt using CScript.exe." const L_Help_Help_Host02_Text = "For example: CScript script.vbs arguments" const L_Help_Help_Host03_Text = "" const L_Help_Help_Host04_Text = "To set CScript as the default application to run .VBS files run the following:" const L_Help_Help_Host05_Text = " CScript //H:CScript //S" const L_Help_Help_Host06_Text = "You can then run ""script.vbs arguments"" without preceding the script with CScript." ' ' General error messages ' const L_Text_Error_General01_Text = "The scripting host could not be determined." const L_Text_Error_General02_Text = "Unable to parse command line." const L_Text_Error_General03_Text = "Win32 error code" ' ' Miscellaneous messages ' const L_Text_Msg_General01_Text = "Added printer driver" const L_Text_Msg_General02_Text = "Unable to add printer driver" const L_Text_Msg_General03_Text = "Unable to delete printer driver" const L_Text_Msg_General04_Text = "Deleted printer driver" const L_Text_Msg_General05_Text = "Unable to enumerate printer drivers" const L_Text_Msg_General06_Text = "Number of printer drivers enumerated" const L_Text_Msg_General07_Text = "Number of printer drivers deleted" const L_Text_Msg_General08_Text = "Attempting to delete printer driver" const L_Text_Msg_General09_Text = "Unable to list dependent files" const L_Text_Msg_General10_Text = "Unable to get SWbemLocator object" const L_Text_Msg_General11_Text = "Unable to connect to WMI service" ' ' Printer driver properties ' const L_Text_Msg_Driver01_Text = "Server name" const L_Text_Msg_Driver02_Text = "Driver name" const L_Text_Msg_Driver03_Text = "Version" const L_Text_Msg_Driver04_Text = "Environment" const L_Text_Msg_Driver05_Text = "Monitor name" const L_Text_Msg_Driver06_Text = "Driver path" const L_Text_Msg_Driver07_Text = "Data file" const L_Text_Msg_Driver08_Text = "Config file" const L_Text_Msg_Driver09_Text = "Help file" const L_Text_Msg_Driver10_Text = "Dependent files" ' ' Debug messages ' const L_Text_Dbg_Msg01_Text = "In function AddDriver" const L_Text_Dbg_Msg02_Text = "In function DelDriver" const L_Text_Dbg_Msg03_Text = "In function DelAllDrivers" const L_Text_Dbg_Msg04_Text = "In function ListDrivers" const L_Text_Dbg_Msg05_Text = "In function ParseCommandLine" main ' ' Main execution starts here ' sub main dim iAction dim iRetval dim strServer dim strModel dim strPath dim uVersion dim strEnvironment dim strInfFile dim strUser dim strPassword ' ' Abort if the host is not cscript ' if not IsHostCscript() then call wscript.echo(L_Help_Help_Host01_Text & vbCRLF & L_Help_Help_Host02_Text & vbCRLF & _ L_Help_Help_Host03_Text & vbCRLF & L_Help_Help_Host04_Text & vbCRLF & _ L_Help_Help_Host05_Text & vbCRLF & L_Help_Help_Host06_Text & vbCRLF) wscript.quit end if ' ' Get command line parameters ' iRetval = ParseCommandLine(iAction, strServer, strModel, strPath, uVersion, _ strEnvironment, strInfFile, strUser, strPAssword) if iRetval = kErrorSuccess then select case iAction case kActionAdd iRetval = AddDriver(strServer, strModel, strPath, uVersion, _ strEnvironment, strInfFile, strUser, strPassword) case kActionDel iRetval = DelDriver(strServer, strModel, uVersion, strEnvironment, strUser, strPassword) case kActionDelAll iRetval = DelAllDrivers(strServer, strUser, strPassword) case kActionList iRetval = ListDrivers(strServer, strUser, strPassword) case kActionUnknown Usage(true) exit sub case else Usage(true) exit sub end select end if end sub ' ' Add a driver ' function AddDriver(strServer, strModel, strFilePath, uVersion, strEnvironment, strInfFile, strUser, strPassword) on error resume next DebugPrint kDebugTrace, L_Text_Dbg_Msg01_Text dim oDriver dim oService dim iResult dim uResult ' ' Initialize return value ' iResult = kErrorFailure if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then set oDriver = oService.Get("Win32_PrinterDriver") else AddDriver = kErrorFailure exit function end if ' ' Check if Get was successful ' if Err.Number = kErrorSuccess then oDriver.Name = strModel oDriver.SupportedPlatform = strEnvironment oDriver.Version = uVersion oDriver.FilePath = strFilePath oDriver.InfName = strInfFile uResult = oDriver.AddPrinterDriver(oDriver) if Err.Number = kErrorSuccess then if uResult = kErrorSuccess then wscript.echo L_Text_Msg_General01_Text & L_Space_Text & oDriver.Name iResult = kErrorSuccess else wscript.echo L_Text_Msg_General02_Text & L_Space_Text & strModel & L_Space_Text _ & L_Text_Error_General03_Text & L_Space_Text & uResult end if else wscript.echo L_Text_Msg_General02_Text & L_Space_Text & strModel & L_Space_Text _ & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description end if else wscript.echo L_Text_Msg_General02_Text & L_Space_Text & strModel & L_Space_Text _ & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description end if AddDriver = iResult end function ' ' Delete a driver ' function DelDriver(strServer, strModel, uVersion, strEnvironment, strUser, strPassword) on error resume next DebugPrint kDebugTrace, L_Text_Dbg_Msg02_Text dim oDriver dim oService dim iResult dim strObject ' ' Initialize return value ' iResult = kErrorFailure ' ' Build the key that identifies the driver instance. ' strObject = strModel & "," & CStr(uVersion) & "," & strEnvironment if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then set oDriver = oService.Get("Win32_PrinterDriver.Name='" & strObject & "'") else DelDriver = kErrorFailure exit function end if ' ' Check if Get was successful ' if Err.Number = kErrorSuccess then ' ' Delete the printer driver instance ' oDriver.Delete_ if Err.Number = kErrorSuccess then wscript.echo L_Text_Msg_General04_Text & L_Space_Text & oDriver.Name iResult = kErrorSuccess else wscript.echo L_Text_Msg_General03_Text & L_Space_Text & strModel & L_Space_Text _ & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _ & L_Space_Text & Err.Description call LastError() end if else wscript.echo L_Text_Msg_General03_Text & L_Space_Text & strModel & L_Space_Text _ & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _ & L_Space_Text & Err.Description end if DelDriver = iResult end function ' ' Delete all drivers ' function DelAllDrivers(strServer, strUser, strPassword) on error resume next DebugPrint kDebugTrace, L_Text_Dbg_Msg03_Text dim Drivers dim oDriver dim oService dim iResult dim iTotal dim iTotalDeleted dim vntDependentFiles dim strDriverName if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then set Drivers = oService.InstancesOf("Win32_PrinterDriver") else DelAllDrivers = kErrorFailure exit function end if if Err.Number <> kErrorSuccess then wscript.echo L_Text_Msg_General05_Text & L_Space_Text & L_Error_Text & L_Space_Text _ & L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description DelAllDrivers = kErrorFailure exit function end if iTotal = 0 iTotalDeleted = 0 for each oDriver in Drivers iTotal = iTotal + 1 wscript.echo wscript.echo L_Text_Msg_General08_Text wscript.echo L_Text_Msg_Driver01_Text & L_Space_Text & strServer wscript.echo L_Text_Msg_Driver02_Text & L_Space_Text & oDriver.Name wscript.echo L_Text_Msg_Driver03_Text & L_Space_Text & oDriver.Version wscript.echo L_Text_Msg_Driver04_Text & L_Space_Text & oDriver.SupportedPlatform strDriverName = oDriver.Name ' ' Example of how to delete an instance of a printer driver ' oDriver.Delete_ if Err.Number = kErrorSuccess then wscript.echo L_Text_Msg_General04_Text & L_Space_Text & oDriver.Name iTotalDeleted = iTotalDeleted + 1 else ' ' We cannot use oDriver.Name to display the driver name, because the SWbemLastError ' that the function LastError() looks at would be overwritten. For that reason we ' use strDriverName for accessing the driver name ' wscript.echo L_Text_Msg_General03_Text & L_Space_Text & strDriverName & L_Space_Text _ & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _ & L_Space_Text & Err.Description ' ' Try getting extended error information ' call LastError() Err.Clear end if next wscript.echo L_Empty_Text wscript.echo L_Text_Msg_General06_Text & L_Space_Text & iTotal wscript.echo L_Text_Msg_General07_Text & L_Space_Text & iTotalDeleted DelAllDrivers = kErrorSuccess end function ' ' List drivers ' function ListDrivers(strServer, strUser, strPassword) on error resume next DebugPrint kDebugTrace, L_Text_Dbg_Msg04_Text dim Drivers dim oDriver dim oService dim iResult dim iTotal dim vntDependentFiles if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then set Drivers = oService.InstancesOf("Win32_PrinterDriver") else ListDrivers = kErrorFailure exit function end if if Err.Number <> kErrorSuccess then wscript.echo L_Text_Msg_General05_Text & L_Space_Text & L_Error_Text & L_Space_Text _ & L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description ListDrivers = kErrorFailure exit function end if iTotal = 0 for each oDriver in Drivers iTotal = iTotal + 1 wscript.echo wscript.echo L_Text_Msg_Driver01_Text & L_Space_Text & strServer wscript.echo L_Text_Msg_Driver02_Text & L_Space_Text & oDriver.Name wscript.echo L_Text_Msg_Driver03_Text & L_Space_Text & oDriver.Version wscript.echo L_Text_Msg_Driver04_Text & L_Space_Text & oDriver.SupportedPlatform wscript.echo L_Text_Msg_Driver05_Text & L_Space_Text & oDriver.MonitorName wscript.echo L_Text_Msg_Driver06_Text & L_Space_Text & oDriver.DriverPath wscript.echo L_Text_Msg_Driver07_Text & L_Space_Text & oDriver.DataFile wscript.echo L_Text_Msg_Driver08_Text & L_Space_Text & oDriver.ConfigFile wscript.echo L_Text_Msg_Driver09_Text & L_Space_Text & oDriver.HelpFile vntDependentFiles = oDriver.DependentFiles ' ' If there are no dependent files, the method will set DependentFiles to ' an empty variant, so we check if the variant is an array of variants ' if VarType(vntDependentFiles) = (vbArray + vbVariant) then PrintDepFiles oDriver.DependentFiles end if Err.Clear next wscript.echo L_Empty_Text wscript.echo L_Text_Msg_General06_Text & L_Space_Text & iTotal ListDrivers = kErrorSuccess end function ' ' Prints the contents of an array of variants ' sub PrintDepFiles(Param) on error resume next dim iIndex iIndex = LBound(Param) if Err.Number = 0 then wscript.echo L_Text_Msg_Driver10_Text for iIndex = LBound(Param) to UBound(Param) wscript.echo L_Space_Text & Param(iIndex) next else wscript.echo L_Text_Msg_General09_Text & L_Space_Text & L_Error_Text & L_Space_Text _ & L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description end if end sub ' ' Debug display helper function ' sub DebugPrint(uFlags, strString) if gDebugFlag = true then if uFlags = kDebugTrace then wscript.echo L_Debug_Text & L_Space_Text & strString end if if uFlags = kDebugError then if Err <> 0 then wscript.echo L_Debug_Text & L_Space_Text & strString & L_Space_Text _ & L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _ & L_Space_Text & Err.Description end if end if end if end sub ' ' Parse the command line into its components ' function ParseCommandLine(iAction, strServer, strModel, strPath, uVersion, _ strEnvironment, strInfFile, strUser, strPassword) on error resume next DebugPrint kDebugTrace, L_Text_Dbg_Msg05_Text dim oArgs dim iIndex iAction = kActionUnknown iIndex = 0 set oArgs = wscript.Arguments while iIndex < oArgs.Count select case oArgs(iIndex) case "-a" iAction = kActionAdd case "-d" iAction = kActionDel case "-l" iAction = kActionList case "-x" iAction = kActionDelAll case "-s" iIndex = iIndex + 1 strServer = RemoveBackslashes(oArgs(iIndex)) case "-m" iIndex = iIndex + 1 strModel = oArgs(iIndex) case "-h" iIndex = iIndex + 1 strPath = oArgs(iIndex) case "-v" iIndex = iIndex + 1 uVersion = oArgs(iIndex) case "-e" iIndex = iIndex + 1 strEnvironment = oArgs(iIndex) case "-i" iIndex = iIndex + 1 strInfFile = oArgs(iIndex) case "-u" iIndex = iIndex + 1 strUser = oArgs(iIndex) case "-w" iIndex = iIndex + 1 strPassword = oArgs(iIndex) case "-?" Usage(true) exit function case else Usage(true) exit function end select iIndex = iIndex + 1 wend if Err.Number <> 0 then wscript.echo L_Text_Error_General02_Text & L_Space_Text & L_Error_Text & L_Space_Text _ & L_Hex_Text & hex(Err.Number) & L_Space_text & Err.Description ParseCommandLine = kErrorFailure else ParseCommandLine = kErrorSuccess end if end function ' ' Display command usage. ' sub Usage(bExit) wscript.echo L_Help_Help_General01_Text wscript.echo L_Help_Help_General02_Text wscript.echo L_Help_Help_General03_Text wscript.echo L_Help_Help_General04_Text wscript.echo L_Help_Help_General05_Text wscript.echo L_Help_Help_General06_Text wscript.echo L_Help_Help_General07_Text wscript.echo L_Help_Help_General08_Text wscript.echo L_Help_Help_General09_Text wscript.echo L_Help_Help_General10_Text wscript.echo L_Help_Help_General11_Text wscript.echo L_Help_Help_General12_Text wscript.echo L_Help_Help_General13_Text wscript.echo L_Help_Help_General14_Text wscript.echo L_Help_Help_General15_Text wscript.echo L_Help_Help_General16_Text wscript.echo L_Empty_Text wscript.echo L_Help_Help_General17_Text wscript.echo L_Help_Help_General18_Text wscript.echo L_Help_Help_General19_Text wscript.echo L_Help_Help_General20_Text wscript.echo L_Help_Help_General21_Text wscript.echo L_Help_Help_General22_Text wscript.echo L_Help_Help_General23_Text wscript.echo L_Help_Help_General24_Text wscript.echo L_Help_Help_General25_Text wscript.echo L_Help_Help_General26_Text wscript.echo L_Empty_Text wscript.echo L_Help_Help_General27_Text wscript.echo L_Help_Help_General28_Text wscript.echo L_Help_Help_General29_Text wscript.echo L_Help_Help_General30_Text wscript.echo L_Help_Help_General31_Text if bExit then wscript.quit(1) end if end sub ' ' Determines which program is being used to run this script. ' Returns true if the script host is cscript.exe ' function IsHostCscript() on error resume next dim strFullName dim strCommand dim i, j dim bReturn bReturn = false strFullName = WScript.FullName i = InStr(1, strFullName, ".exe", 1) if i <> 0 then j = InStrRev(strFullName, "\", i, 1) if j <> 0 then strCommand = Mid(strFullName, j+1, i-j-1) if LCase(strCommand) = "cscript" then bReturn = true end if end if end if if Err <> 0 then wscript.echo L_Text_Error_General01_Text & L_Space_Text & L_Error_Text & L_Space_Text _ & L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description end if IsHostCscript = bReturn end function ' ' Retrieves extended information about the last error that occurred ' during a WBEM operation. The methods that set an SWbemLastError ' object are GetObject, PutInstance, DeleteInstance ' sub LastError() on error resume next dim oError set oError = CreateObject("WbemScripting.SWbemLastError") if Err = kErrorSuccess then wscript.echo L_Operation_Text & L_Space_Text & oError.Operation wscript.echo L_Provider_Text & L_Space_Text & oError.ProviderName wscript.echo L_Description_Text & L_Space_Text & oError.Description wscript.echo L_Text_Error_General03_Text & L_Space_Text & oError.StatusCode end if end sub ' ' Connects to the WMI service on a server. oService is returned as a service ' object (SWbemServices) ' function WmiConnect(strServer, strNameSpace, strUser, strPassword, oService) on error resume next dim oLocator dim bResult oService = null bResult = false set oLocator = CreateObject("WbemScripting.SWbemLocator") if Err = kErrorSuccess then set oService = oLocator.ConnectServer(strServer, strNameSpace, strUser, strPassword) if Err = kErrorSuccess then bResult = true oService.Security_.impersonationlevel = 3 ' ' Required to perform administrative tasks on the spooler service ' oService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege" Err.Clear else wscript.echo L_Text_Msg_General11_Text & L_Space_Text & L_Error_Text _ & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ & Err.Description end if else wscript.echo L_Text_Msg_General10_Text & L_Space_Text & L_Error_Text _ & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _ & Err.Description end if WmiConnect = bResult end function ' ' Remove leading "\\" from server name ' function RemoveBackslashes(strServer) dim strRet strRet = strServer if Left(strServer, 2) = "\\" and Len(strServer) > 2 then strRet = Mid(strServer, 3) end if RemoveBackslashes = strRet end function '' SIG '' Begin signature block '' SIG '' MIImBQYJKoZIhvcNAQcCoIIl9jCCJfICAQExDzANBglg '' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor '' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC '' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg '' SIG '' mlUP3KOnaFb8M6G5M6AlnOFVzMN6IRQb2eB8kdGCjCig '' SIG '' ggroMIIFCTCCA/GgAwIBAgITMwAABRhBhBmty60pTwAA '' SIG '' AAAFGDANBgkqhkiG9w0BAQsFADCBhDELMAkGA1UEBhMC '' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT '' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw '' SIG '' b3JhdGlvbjEuMCwGA1UEAxMlTWljcm9zb2Z0IFdpbmRv '' SIG '' d3MgUHJvZHVjdGlvbiBQQ0EgMjAxMTAeFw0yNTA2MTkx '' SIG '' ODExNDNaFw0yNjA2MTcxODExNDNaMHAxCzAJBgNVBAYT '' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH '' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y '' SIG '' cG9yYXRpb24xGjAYBgNVBAMTEU1pY3Jvc29mdCBXaW5k '' SIG '' b3dzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC '' SIG '' AQEA13mqBajcSzGIQ7kqJCIE6oxXJVfqr0iUnSh2fDN9 '' SIG '' r18wuHPIlLeHyatPsH1rArFXUyj1IoPlkAbP8shArkP0 '' SIG '' m3AOlDZv8eH2Dw13ICwabGPn4SgKrY2+HlQtXtv7w+T0 '' SIG '' 5JCnEZHNjYXM05FkxvDOp7XlDH+t7trr7jFwtjjt1GSy '' SIG '' p/e1la0D5bprFgrZd+idRKV3f0InKTtqr3/3QPgm6AGg '' SIG '' csV6djsk1zCxsbCa2mPbSv2Z0iyjPzdInLsOb/mQF7Mu '' SIG '' LaG7KcnrpnI8hgr3ce4G0gZTJGp80n8HjEFdpkdfzRJa '' SIG '' xhGKyeCziaFukwCJxQvRLdfPyfdzDbibuZUy5QIDAQAB '' SIG '' o4IBhTCCAYEwHwYDVR0lBBgwFgYKKwYBBAGCNwoDBgYI '' SIG '' KwYBBQUHAwMwHQYDVR0OBBYEFOF41I/R69R+LhZJ5/DU '' SIG '' oIJ88kCTMFQGA1UdEQRNMEukSTBHMS0wKwYDVQQLEyRN '' SIG '' aWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0 '' SIG '' ZWQxFjAUBgNVBAUTDTIyOTg3OSs1MDUzMzYwHwYDVR0j '' SIG '' BBgwFoAUqSkCOY4WxJd4zZD5nk+a4XxVr1MwVwYDVR0f '' SIG '' BFAwTjBMoEqgSIZGaHR0cDovL3d3dy5taWNyb3NvZnQu '' SIG '' Y29tL3BraW9wcy9jcmwvTWljV2luUHJvUENBMjAxMV8y '' SIG '' MDExLTEwLTE5LmNybCUyMDBhBggrBgEFBQcBAQRVMFMw '' SIG '' UQYIKwYBBQUHMAKGRWh0dHA6Ly93d3cubWljcm9zb2Z0 '' SIG '' LmNvbS9wa2lvcHMvY2VydHMvTWljV2luUHJvUENBMjAx '' SIG '' MV8yMDExLTEwLTE5LmNydDAMBgNVHRMBAf8EAjAAMA0G '' SIG '' CSqGSIb3DQEBCwUAA4IBAQA73LToVzb48EsyNktWyWo+ '' SIG '' IGLgB2p9kuAEQkU+8hLq0rA9WZonC9cODucqsbIMr1+h '' SIG '' dczYWea7HVahHNh1e1l/t8UyFkJvbpIlr8SZV+RlV4s+ '' SIG '' WtBJzI6I85EjEBBNDiz26s/HTuK3hb0mOFTzRZLih4OB '' SIG '' npKR4+lid/Ptj6Vpz1LtTxLX7PrwIntLTvTe2HiJPSJ0 '' SIG '' kphhrHebSBArR0IRqtHbz/wcx1MMtBSPgjiKI1id83Hy '' SIG '' j7Y604D5Z/Dak+1qcCo77G1Inkm39qAtvE5R+jt5TxTZ '' SIG '' gwWL9DmIjGbP0dqouGyc5FYPoqW6WBsdtBPaL/sxdDGW '' SIG '' M77U4g14/8UJMIIF1zCCA7+gAwIBAgIKYQd2VgAAAAAA '' SIG '' CDANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMx '' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl '' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh '' SIG '' dGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2Vy '' SIG '' dGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTExMDE5 '' SIG '' MTg0MTQyWhcNMjYxMDE5MTg1MTQyWjCBhDELMAkGA1UE '' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV '' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD '' SIG '' b3Jwb3JhdGlvbjEuMCwGA1UEAxMlTWljcm9zb2Z0IFdp '' SIG '' bmRvd3MgUHJvZHVjdGlvbiBQQ0EgMjAxMTCCASIwDQYJ '' SIG '' KoZIhvcNAQEBBQADggEPADCCAQoCggEBAN0Mu6LkLgnj '' SIG '' 58X3lmm8ACG9aTMz760Ey1SA7gaDu8UghNn30ovzOLCr '' SIG '' pK0tfGJ5Bf/jSj8ENSBw48Tna+CcwDZ16Yox3Y1w5dw3 '' SIG '' tXRGlihbh2AjLL/cR6Vn91EnnnLrB6bJuR47UzV85dPs '' SIG '' J7mHHP65ySMJb6hGkcFuljxB08ujP10Cak3saR8lKFw2 '' SIG '' //1DFQqU4Bm0z9/CEuLCWyfuJ3gwi1sqCWsiiVNgFizA '' SIG '' aB1TuuxJ851hjIVoCXNEXX2iVCvdefcVzzVdbBwrXM68 '' SIG '' nCOLb261Jtk2E8NP1ieuuTI7QZIs4cfNd+iqVE73XAsE '' SIG '' h2W0QxiosuBtGXfsWiT6SAMCAwEAAaOCAUMwggE/MBAG '' SIG '' CSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBSpKQI5jhbE '' SIG '' l3jNkPmeT5rhfFWvUzAZBgkrBgEEAYI3FAIEDB4KAFMA '' SIG '' dQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw '' SIG '' AwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX '' SIG '' zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js '' SIG '' Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N '' SIG '' aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYB '' SIG '' BQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3 '' SIG '' Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl '' SIG '' ckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsF '' SIG '' AAOCAgEAFPx8cVGlecJusu85Prw8Ug9uKz8QE3P+qGjQ '' SIG '' SKY0TYqWBSbuMUaQYXnW/zguRWv0wOUouNodj4rbCdca '' SIG '' x0wKNmZqjOwb1wSQqBgXpJu54kAyNnbEwVrGv+QEwOoW '' SIG '' 06zDaO9irN1UbFAwWKbrfP6Up06O9Ox8hnNXwlIhczRa '' SIG '' 86OKVsgE2gcJ7fiL4870fo6u8PYLigj7P8kdcn9TuOu+ '' SIG '' Y+DjPTFlsIHl8qzNFqSfPaixm8JC0JCEX1Qd/4nquh1H '' SIG '' kG+wc05Bn0CfX+WhKrIRkXOKISjwzt5zOV8+q1xg7N8D '' SIG '' EKjTCen09paFtn9RiGZHGY2isBI9gSpoBXe7kUxie7bB '' SIG '' B8e6eoc0Aw5LYnqZ6cr8zko3yS2kV3wc/j3cuA9a+tbE '' SIG '' swKFAjrqs9lu5GkhN96B0fZ1GQVn05NXXikbOcjuLeHN '' SIG '' 5EVzW9DSznqrFhmCRljQXp2Bs2evbDXyvOU/JOI1ogp1 '' SIG '' BvYYVpnUeCzRBRvr0IgBnaoQ8QXfun4sY7cGmyMhxPl4 '' SIG '' bOJYFwY2K5ESA8yk2fItuvmUnUDtGEXxzopcaz6rA9Nw '' SIG '' GCoKauBfR9HVYwoy8q/XNh8qcFrlQlkIcUtXun6DgfAh '' SIG '' PPQcwcW5kJMOiEWThumxIJm+mMvFlaRdYtagYwggvXUQ '' SIG '' d30980W5n5efy1eAbzOpBM93pGIcWX4xghp1MIIacQIB '' SIG '' ATCBnDCBhDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh '' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV '' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEuMCwGA1UE '' SIG '' AxMlTWljcm9zb2Z0IFdpbmRvd3MgUHJvZHVjdGlvbiBQ '' SIG '' Q0EgMjAxMQITMwAABRhBhBmty60pTwAAAAAFGDANBglg '' SIG '' hkgBZQMEAgEFAKCB+jAZBgkqhkiG9w0BCQMxDAYKKwYB '' SIG '' BAGCNwIBBDAvBgkqhkiG9w0BCQQxIgQgfNDdL8cl9CwX '' SIG '' XyASVHWLCk4aUc/wlZGODRg7mXqorPYwUAYKKwYBBAGC '' SIG '' NwoDHDFCDEA3MTY2MjhBMTNCODE3N0FCM0VEQTQ1NUEz '' SIG '' QjM5OTY3QUUzNTVCQzIwRTU2Qjg1NDE5MkUxMzBENUEz '' SIG '' ODJFRjM2MFoGCisGAQQBgjcCAQwxTDBKoCSAIgBNAGkA '' SIG '' YwByAG8AcwBvAGYAdAAgAFcAaQBuAGQAbwB3AHOhIoAg '' SIG '' aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3dpbmRvd3Mw '' SIG '' DQYJKoZIhvcNAQEBBQAEggEAdz80yQthG0EuSssYFrAa '' SIG '' Raw4J9DD3+B6dMAWm4f6MfEPim0JX2AJwwLe76blk2Yv '' SIG '' HkN01vcRPBlnM7W/rUUpFSG08qYrMIpEgAWoqOGuS4ij '' SIG '' BLR9f4cnbBiDfcK2KXU3NkumdUhLR0kGkoAuenvVAKS5 '' SIG '' je5qjXgN+sCB5WMg1thkIDbOQhZOXI+ckKrIuTIrZ5Lk '' SIG '' LfgJB3k+cJB2QAIAxTGIo+8ijhNjvgWCdWK3g8Np4B54 '' SIG '' i/tyK8lRmva/pUtTDxZiPrAkUxaSzSpxKnQdYmwKaGdq '' SIG '' aJQhMX18ZG7v/VGCWitVNbLC1UodU2FrekmKXWUVsclO '' SIG '' NUVXRyKPt3vgzaGCF6wwgheoBgorBgEEAYI3AwMBMYIX '' SIG '' mDCCF5QGCSqGSIb3DQEHAqCCF4UwgheBAgEDMQ8wDQYJ '' SIG '' YIZIAWUDBAIBBQAwggFZBgsqhkiG9w0BCRABBKCCAUgE '' SIG '' ggFEMIIBQAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFl '' SIG '' AwQCAQUABCCSLf4jZadtRKACJS9kzDGQFT/PcH8PEV3I '' SIG '' r2xrVZ5ZIAIGaevWwqcyGBIyMDI2MDUwNjEwNDEyNi4x '' SIG '' NVowBIACAfSggdmkgdYwgdMxCzAJBgNVBAYTAlVTMRMw '' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt '' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp '' SIG '' b24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9w '' SIG '' ZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNoaWVs '' SIG '' ZCBUU1MgRVNOOjRDMUEtMDVFMC1EOTQ3MSUwIwYDVQQD '' SIG '' ExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIR '' SIG '' +zCCBygwggUQoAMCAQICEzMAAAIYJdmSBeLn5eQAAQAA '' SIG '' AhgwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMx '' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl '' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh '' SIG '' dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh '' SIG '' bXAgUENBIDIwMTAwHhcNMjUwODE0MTg0ODI1WhcNMjYx '' SIG '' MTEzMTg0ODI1WjCB0zELMAkGA1UEBhMCVVMxEzARBgNV '' SIG '' BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx '' SIG '' HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEt '' SIG '' MCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0 '' SIG '' aW9ucyBMaW1pdGVkMScwJQYDVQQLEx5uU2hpZWxkIFRT '' SIG '' UyBFU046NEMxQS0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1p '' SIG '' Y3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2UwggIiMA0G '' SIG '' CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCx3Ojq65Am '' SIG '' oB/Eue8QF8i+PqScr6npucxcQVn9CM84XLCVyMN/MjwO '' SIG '' DWfMOXGbv+mpu+NaHK9rMqYXI7qps/AKV9GcjnuHk4KL '' SIG '' GCk44IYklAhlJOIyC6LcHwM+IW0k9x/NG3cWyfGMtfAE '' SIG '' iMaCeMZ+ZCXvN6MDVahgv+oGZCHD8UMVNZ5vF+jibREI '' SIG '' I7F/arCPfVo6NzZphR4+0sxcexco8UfS2nlIogX/20nF '' SIG '' FKDQ1gS9CpWKWN7xpCQ93erMC7HYxzkcxIrg0xO1VUJg '' SIG '' BYNRnin7qIMj23kE0IEix/migU1Ra3EKqekViItiQd8V '' SIG '' /GFVQFnwsYbFiwDfqycPrmzYd/i3zqTR7xZ6Uf+6x+Fi '' SIG '' o4zfPbJojyuDTzrfUiTCpTPJCgQ+oyweAF6bXGmY4ZIh '' SIG '' SdW9OwC/6WYQIvZGqtw5mVlrHwrRqKKPyHpSRYE3YgD+ '' SIG '' KRpyRNIZVEFCZZZm4sVZX9PjG43OxwLRfvGjh962Cmyp '' SIG '' oQDSNj9B6+RO8u/g6U03144vws2HtWbRHrk/uhps5AOq '' SIG '' 1QUDAKCOA8nSJX+NAJowBw7dJikbnBIBiImSThcuM1KU '' SIG '' 3FTYh2OzWw5GGXuzssLqE5vttUAdXA43vgbF8U2IQgDo '' SIG '' F+50A2OlAnSdRz+mkRelPimAMEexi1Xw7IpKMqwjE50V '' SIG '' Ht8gkiMNzwO9SQIDAQABo4IBSTCCAUUwHQYDVR0OBBYE '' SIG '' FCQuocRcOhtjt0e6hAIFrixftovRMB8GA1UdIwQYMBaA '' SIG '' FJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8GA1UdHwRYMFYw '' SIG '' VKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w '' SIG '' a2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAl '' SIG '' MjBQQ0ElMjAyMDEwKDEpLmNybDBsBggrBgEFBQcBAQRg '' SIG '' MF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93d3cubWljcm9z '' SIG '' b2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIw '' SIG '' VGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3J0MAwG '' SIG '' A1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUH '' SIG '' AwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUA '' SIG '' A4ICAQCeSNGGPA+B2gim+3hiKhP+PQta4HEXcBEEpcMQ '' SIG '' 2CCtoq8LShE/BuMCaxec8Sa26jkwPy4n1fD15ivGqqQr '' SIG '' gMX2ydkyscx+ijEJr77WKsvPxiijMLi1yL5rg3ftJuR7 '' SIG '' Wm3XGz2pm2+Q+BkZafkFzBV+YDBJkseLYK5nTpjT9f63 '' SIG '' p80GetsxWi81oNfhY93Ij0YTPF8iCAOxyTYimjhVcv8C '' SIG '' tzPunYXtsRkZG7LGOAwL7CgKQMlof/KT/BxmkCyLF7g8 '' SIG '' 503QNbplvfk7cODf5rqmsA0xzdYh298oOXvk/RqpxBtA '' SIG '' BHtvR/iAfg0yRRy3RabgY3kqGwTVgrtX/ACoMqYriPHf '' SIG '' MvPdrwezFr0cHcbKK2WYLmwOE6XhBMY3mRGLqgKhXiEr '' SIG '' 6QgWCeRaMeFJE2ibPfpCdsJIb8EcsSbYZFT27f8jjNR3 '' SIG '' 0TUAL3sgkQZ/Bv7Q1ZvdARyuTKl0Z1bCXQsQ5uGtBH0H '' SIG '' VXv551zI2axfSnYFfSsWl3U+RclJvF/whwSLD9uQ2BqB '' SIG '' kT5WUO3Fd6u4t2jmTeUY6/us9i44RqhljEO9m2kc/0/f '' SIG '' rCZbgg2NHo0iefZQz6Ss//F4udFsMGSb1GyWegOFWtqW '' SIG '' IoMfrYHGFyAv22JGA4eVwjTCq9VYt2/zJbyvGRrA6WEJ '' SIG '' GpPcQoQJbyS1QA/A1sFQuRP6hZy8FzCCB3EwggVZoAMC '' SIG '' AQICEzMAAAAVxedrngKbSZkAAAAAABUwDQYJKoZIhvcN '' SIG '' AQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX '' SIG '' YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD '' SIG '' VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNV '' SIG '' BAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1 '' SIG '' dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIyNVoXDTMw '' SIG '' MDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMxEzARBgNV '' SIG '' BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx '' SIG '' HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEm '' SIG '' MCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB '' SIG '' IDIwMTAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK '' SIG '' AoICAQDk4aZM57RyIQt5osvXJHm9DtWC0/3unAcH0qls '' SIG '' TnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VTcVrifkpa '' SIG '' /rg2Z4VGIwy1jRPPdzLAEBjoYH1qUoNEt6aORmsHFPPF '' SIG '' dvWGUNzBRMhxXFExN6AKOG6N7dcP2CZTfDlhAnrEqv1y '' SIG '' aa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S/rboYiXc '' SIG '' ag/PXfT+jlPP1uyFVk3v3byNpOORj7I5LFGc6XBpDco2 '' SIG '' LXCOMcg1KL3jtIckw+DJj361VI/c+gVVmG1oO5pGve2k '' SIG '' rnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbnijYjklqwB '' SIG '' Sru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3EXzTdEonW '' SIG '' /aUgfX782Z5F37ZyL9t9X4C626p+Nuw2TPYrbqgSUei/ '' SIG '' BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M269ewvPV '' SIG '' 2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFphAXPKZ6Je '' SIG '' 1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSLW6CmgyFdXzB0 '' SIG '' kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr9lxSUV0S '' SIG '' 2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfHCBUYP3ir '' SIG '' Rbb1Hode2o+eFnJpxq57t7c+auIurQIDAQABo4IB3TCC '' SIG '' AdkwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3 '' SIG '' FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4wHQYDVR0O '' SIG '' BBYEFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMFwGA1UdIARV '' SIG '' MFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYIKwYBBQUHAgEW '' SIG '' M2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMv '' SIG '' RG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggr '' SIG '' BgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMA '' SIG '' QTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAf '' SIG '' BgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBW '' SIG '' BgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jv '' SIG '' c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29D '' SIG '' ZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEE '' SIG '' TjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jv '' SIG '' c29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8y '' SIG '' MDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEA '' SIG '' nVV9/Cqt4SwfZwExJFvhnnJL/Klv6lwUtj5OR2R4sQaT '' SIG '' lz0xM7U518JxNj/aZGx80HU5bbsPMeTCj/ts0aGUGCLu '' SIG '' 6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp4LoJ7nvf '' SIG '' am++Kctu2D9IdQHZGN5tggz1bSNU5HhTdSRXud2f8449 '' SIG '' xvNo32X2pFaq95W2KFUn0CS9QKC/GbYSEhFdPSfgQJY4 '' SIG '' rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZQhlSdYo2 '' SIG '' wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzskYDSPeZK '' SIG '' PmY7T7uG+jIa2Zb0j/aRAfbOxnT99kxybxCrdTDFNLB6 '' SIG '' 2FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5JL5zbcqO '' SIG '' Cb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxnGSgkujhL '' SIG '' mm77IVRrakURR6nxt67I6IleT53S0Ex2tVdUCbFpAUR+ '' SIG '' fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3Fb+0zj6l '' SIG '' MVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzbaukz5m/8K '' SIG '' 6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTmdHRbatGePu1+ '' SIG '' oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNTTY3ugm2l '' SIG '' BRDBcQZqELQdVTNYs6FwZvKhggNWMIICPgIBATCCAQGh '' SIG '' gdmkgdYwgdMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX '' SIG '' YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD '' SIG '' VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNV '' SIG '' BAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMg '' SIG '' TGltaXRlZDEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNO '' SIG '' OjRDMUEtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3Nv '' SIG '' ZnQgVGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4D '' SIG '' AhoDFQCda0atdaK40TxCsp+bgK0avnvP6aCBgzCBgKR+ '' SIG '' MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n '' SIG '' dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN '' SIG '' aWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1p '' SIG '' Y3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqG '' SIG '' SIb3DQEBCwUAAgUA7aV9uTAiGA8yMDI2MDUwNjA4NDMz '' SIG '' N1oYDzIwMjYwNTA3MDg0MzM3WjB0MDoGCisGAQQBhFkK '' SIG '' BAExLDAqMAoCBQDtpX25AgEAMAcCAQACAgXkMAcCAQAC '' SIG '' AhPIMAoCBQDtps85AgEAMDYGCisGAQQBhFkKBAIxKDAm '' SIG '' MAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEA '' SIG '' AgMBhqAwDQYJKoZIhvcNAQELBQADggEBADMdcZW6XsiY '' SIG '' kGTMwnYB+6SiUDcI9jH5fT9qqG3e+VntMZHt0VPva+FW '' SIG '' 6ohzwmbZIDyeVEyhj4kSORXkRjiJJlUJ+90TOR7V26pZ '' SIG '' Mmi+7lEvg18CEZRvpKple/DsM1VO1qo/AXQ4S6vBk8vn '' SIG '' IY3+eOLedn+ygAhGyTERB21RUf8+mJg29v78myLQMDt4 '' SIG '' +AmgStFzR7WWn0Y8WAs5bLRjmzqTs9hv0Zuj93Xk3IRJ '' SIG '' lZFohKdL5nWXirLu7iEsw7JqgPtdmWOqkWlHzOBeglHY '' SIG '' /8KlfclyJO1jEzBF7mjwd+tmu1vj2k+USL/FXRYGl/gS '' SIG '' 0M7lpQINj6wVJzkVCRSe+0AxggQNMIIECQIBATCBkzB8 '' SIG '' MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv '' SIG '' bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj '' SIG '' cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNy '' SIG '' b3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAhgl '' SIG '' 2ZIF4ufl5AABAAACGDANBglghkgBZQMEAgEFAKCCAUow '' SIG '' GgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqG '' SIG '' SIb3DQEJBDEiBCCrhS8s6TaEq5n5IS2aUsNtJDl6Sc39 '' SIG '' wIG+miFZZxwvZDCB+gYLKoZIhvcNAQkQAi8xgeowgecw '' SIG '' geQwgb0EIJkT3Im45Mi0jBZoRLqXMYorVdxKjPXKdHNo '' SIG '' 5XPH14VqMIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzAR '' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v '' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv '' SIG '' bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAg '' SIG '' UENBIDIwMTACEzMAAAIYJdmSBeLn5eQAAQAAAhgwIgQg '' SIG '' flniLtNSI4rbKd2nuGwrWtiZQedC9OMF1BfmQ5cwUoUw '' SIG '' DQYJKoZIhvcNAQELBQAEggIAQCTPM/llOc8Rlcn2it3b '' SIG '' Jnlzy3LwoPmxCE7cqLlsBOb48hm2SAhvq6q29UYTNCMx '' SIG '' BCDJa3lW1bnkT/pDzYsxQbu3QMfXvaGmF6StjfZt4lYQ '' SIG '' YGqhM9ESp8bFQSk+3QbHjM3GVUbwG3i6OsW8zdclsP3d '' SIG '' q1RL5yWbN4SzK349VtxmCjV51awbT6eXN7nynRhrzFKF '' SIG '' UaweZDy7m/aRF6JtnUp17Vu6gw2Z+rxxbOOVsQMqbpyB '' SIG '' bHzfWWXpuUIsYppXw0fcVjBNZy6ijDob2YJl8IF4kh00 '' SIG '' 8QRCy8xD6DvBIpzG7FUKJ9gkvkRpUSkQkRyWoL80v3FO '' SIG '' Y4qlkxLoJP+2iL7xC8tmAZD+4SJgROWYs0OOw1n02wzl '' SIG '' fQaLT3kKzuS3U0gXS7VaED/YR/8cJJrwY4Jjn3SiDB41 '' SIG '' 9d6u9F6SOwov0JYA8Sz11wrcnly5v50635Pik0cMmPcL '' SIG '' matKImuJA2fF9FN4Bf3awz+fUwlB81HeMRoCbwpCB6y1 '' SIG '' ZN2XkQadtJwYX5iJZNihUSJEsjB2WVlT/1PYuMbTrtni '' SIG '' p5of93a1ofh9PC1gGg6sGERAS5my6Dj0xsjd7HX3GoEm '' SIG '' DFMoyWx1gZ153uIwMe7fz3R0YlO3ZRJBauKChW6izW2i '' SIG '' WxzcQ1lB4cyjnNrb8sLY92iZdVfqfDVEaA63Mi4Ip7BjUXw= '' SIG '' End signature block