'---------------------------------------------------------------------- ' ' Copyright (c) Microsoft Corporation. All rights reserved. ' ' Abstract: ' ' prncnfg.vbs - printer configuration script for WMI on Windows used to get ' and set printer configuration also used to rename a printer ' ' Usage: ' prncnfg [-gtx?] [-s server] [-p printer] [-u user name] [-w password] ' [-z new printer name] [-r port name] [-l location] [-m comment] ' [-h share name] [-f sep-file] [-y data-type] [-st start time] ' [-ut until time] [-o priority] [-i default priority] ' [<+|->rawonly][<+|->keepprintedjobs][<+|->queued][<+|->workoffline] ' [<+|->enabledevq][<+|->docompletefirst][<+|->enablebidi] ' ' Examples: ' prncnfg -g -s server -p printer ' prncnfg -x -p printer -w "new Printer" ' prncnfg -t -s server -p Printer -l "Building A/Floor 100/Office 1" -m "Color Printer" ' prncnfg -t -p printer -h "Share" +shared -direct ' prncnfg -t -p printer +rawonly +keepprintedjobs ' prncnfg -t -p printer -st 2300 -ut 0215 -o 10 -i 5 ' '---------------------------------------------------------------------- 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 const kFlagUpdateOnly = 1 ' ' Operation action values. ' const kActionUnknown = 0 const kActionSet = 1 const kActionGet = 2 const kActionRename = 3 const kErrorSuccess = 0 const kErrorFailure = 1 ' ' Constants for the parameter dictionary ' const kServerName = 1 const kPrinterName = 2 const kNewPrinterName = 3 const kShareName = 4 const kPortName = 5 const kDriverName = 6 const kComment = 7 const kLocation = 8 const kSepFile = 9 const kPrintProc = 10 const kDataType = 11 const kParameters = 12 const kPriority = 13 const kDefaultPriority = 14 const kStartTime = 15 const kUntilTime = 16 const kQueued = 17 const kDirect = 18 const kDefault = 19 const kShared = 20 const kNetwork = 21 const kHidden = 23 const kLocal = 24 const kEnableDevq = 25 const kKeepPrintedJobs = 26 const kDoCompleteFirst = 27 const kWorkOffline = 28 const kEnableBidi = 29 const kRawOnly = 30 const kPublished = 31 const kUserName = 32 const kPassword = 33 const kNameSpace = "root\cimv2" ' ' Generic strings ' const L_Empty_Text = "" const L_Space_Text = " " const L_Error_Text = "Erreur" const L_Success_Text = "Réussi" const L_Failed_Text = "Échec" const L_Hex_Text = "0x" const L_Printer_Text = "Imprimante" const L_Operation_Text = "Opération" const L_Provider_Text = "Fournisseur" const L_Description_Text = "Description" const L_Debug_Text = "Déboguer :" ' ' General usage messages ' const L_Help_Help_General01_Text = "Utilisation : prncnfg [-gtx?] [-s serveur][-p imprimante][-z nouveau_nom_imprimante]" const L_Help_Help_General02_Text = " [-u nom_utilisateur][-w mot_passe][-r nom_port][-l emplacement]" const L_Help_Help_General03_Text = " [-m commentaire][-h nom_partage][-f fichier_sép] [-y type_données]" const L_Help_Help_General04_Text = " [-st temps_démarrage][-ut jusque-heure][-i priorité_défaut]" const L_Help_Help_General05_Text = " [-o priorité][<+|->shared][<+|->direct][<+|->hidden]" const L_Help_Help_General06_Text = " [<+|->published][<+|->rawonly][<+|->queued][<+|->enablebidi]" const L_Help_Help_General07_Text = " [<+|->keepprintedjobs][<+|->workoffline][<+|->enabledevq]" const L_Help_Help_General08_Text = " [<+|->docompletefirst]" const L_Help_Help_General09_Text = "Arguments :" const L_Help_Help_General10_Text = "-f - nom du fichier contenant les séparateurs" const L_Help_Help_General11_Text = "-g - lit la configuration" const L_Help_Help_General12_Text = "-h - nom du partage" const L_Help_Help_General13_Text = "-i - priorité par défaut" const L_Help_Help_General14_Text = "-l - chaîne d’emplacement" const L_Help_Help_General15_Text = "-m - chaîne de commentaire" const L_Help_Help_General16_Text = "-o - priorité" const L_Help_Help_General17_Text = "-p - nom de l’imprimante" const L_Help_Help_General18_Text = "-r - nom du port" const L_Help_Help_General19_Text = "-s - nom du serveur" const L_Help_Help_General20_Text = "-st - heure de début" const L_Help_Help_General21_Text = "-t - définit la configuration" const L_Help_Help_General22_Text = "-u - nom_utilisateur" const L_Help_Help_General23_Text = "-ut - heure de fin" const L_Help_Help_General24_Text = "-w - mot_passe" const L_Help_Help_General25_Text = "-x - change le nom de l’imprimante" const L_Help_Help_General26_Text = "-y - chaîne de type de données" const L_Help_Help_General27_Text = "-w - nouveau_nom_imprimante" const L_Help_Help_General28_Text = "-? - affiche l’utilisation de la commande" const L_Help_Help_General29_Text = "Exemples :" const L_Help_Help_General30_Text = "prncnfg -g -s serveur -p imprimante" const L_Help_Help_General31_Text = "prncnfg -x -s serveur -p imprimante -z ""nouvelle_imprimante""" const L_Help_Help_General32_Text = "prncnfg -t -p imprimante -l ""Bâtiment A/Bureau 1"" -m ""Imprimante couleur""" const L_Help_Help_General33_Text = "prncnfg -t -p imprimante -h ""Ressource partagée"" +shared -direct" const L_Help_Help_General34_Text = "prncnfg -t -p imprimante +rawonly +keepprintedjobs" const L_Help_Help_General35_Text = "prncnfg -t -p imprimante -st 2300 -ut 0215 -o 1 -i 5" ' ' Messages to be displayed if the scripting host is not cscript ' const L_Help_Help_Host01_Text = "Exécutez ce script de préférence depuis l’invite de commandes et en utilisant CScript.exe ." const L_Help_Help_Host02_Text = "Exemple : CScript script.vbs arguments" const L_Help_Help_Host03_Text = "" const L_Help_Help_Host04_Text = "Pour définir CScript comme l’application d’exécution par défaut pour les fichiers .VBS, exécutez la commande suivante :" const L_Help_Help_Host05_Text = " CScript //H:CScript //S" const L_Help_Help_Host06_Text = "Vous pouvez ensuite exécuter ""script.vbs arguments"" sans faire précéder le script de CScript." ' ' General error messages ' const L_Text_Error_General01_Text = "Impossible de reconnaître le langage de script." const L_Text_Error_General02_Text = "Impossible d’analyser la ligne de commande." const L_Text_Error_General03_Text = "Code d’erreur Win32" ' ' Miscellaneous messages ' const L_Text_Msg_General01_Text = "Imprimante renommée" const L_Text_Msg_General02_Text = "Nouveau nom d’imprimante" const L_Text_Msg_General03_Text = "Impossible de renommer l’imprimante" const L_Text_Msg_General04_Text = "Impossible de lire la configuration de l’imprimante" const L_Text_Msg_General05_Text = "Imprimante toujours disponible" const L_Text_Msg_General06_Text = "Imprimante configurée" const L_Text_Msg_General07_Text = "Impossible de configurer l’imprimante" const L_Text_Msg_General08_Text = "Impossible d’obtenir l’objet SWbemLocator" const L_Text_Msg_General09_Text = "Impossible de se connecter au service WMI" const L_Text_Msg_General10_Text = "État de l’imprimante" const L_Text_Msg_General11_Text = "État étendu de l’imprimante" const L_Text_Msg_General12_Text = "État d’erreur détectée" const L_Text_Msg_General13_Text = "État étendu d’erreur détectée" ' ' Printer properties ' const L_Text_Msg_Printer01_Text = "Nom du serveur" const L_Text_Msg_Printer02_Text = "Nom de l’imprimante" const L_Text_Msg_Printer03_Text = "Nom du partage" const L_Text_Msg_Printer04_Text = "Nom du pilote" const L_Text_Msg_Printer05_Text = "Nom du port" const L_Text_Msg_Printer06_Text = "Commentaire" const L_Text_Msg_Printer07_Text = "Emplacement" const L_Text_Msg_Printer08_Text = "Fichier séparateur" const L_Text_Msg_Printer09_Text = "Processeur d’impression" const L_Text_Msg_Printer10_Text = "Type de données" const L_Text_Msg_Printer11_Text = "Paramètres" const L_Text_Msg_Printer12_Text = "Attributs" const L_Text_Msg_Printer13_Text = "Priorité" const L_Text_Msg_Printer14_Text = "Priorité par défaut" const L_Text_Msg_Printer15_Text = "Heure de début" const L_Text_Msg_Printer16_Text = "Jusqu’à l’heure" const L_Text_Msg_Printer17_Text = "État" const L_Text_Msg_Printer18_Text = "Nombre de tâches" const L_Text_Msg_Printer19_Text = "Moyenne de pages par minute" ' ' Printer attributes ' const L_Text_Msg_Attrib01_Text = "direct" const L_Text_Msg_Attrib02_Text = "raw_only" const L_Text_Msg_Attrib03_Text = "local" const L_Text_Msg_Attrib04_Text = "shared" const L_Text_Msg_Attrib05_Text = "keep_printed_jobs" const L_Text_Msg_Attrib06_Text = "published" const L_Text_Msg_Attrib07_Text = "queued" const L_Text_Msg_Attrib08_Text = "default" const L_Text_Msg_Attrib09_Text = "network" const L_Text_Msg_Attrib10_Text = "enable_bidi" const L_Text_Msg_Attrib11_Text = "do_complete_first" const L_Text_Msg_Attrib12_Text = "work_offline" const L_Text_Msg_Attrib13_Text = "hidden" const L_Text_Msg_Attrib14_Text = "enable_devq_print" ' ' Printer status ' const L_Text_Msg_Status01_Text = "Autre" const L_Text_Msg_Status02_Text = "Inconnu" const L_Text_Msg_Status03_Text = "Inactif" const L_Text_Msg_Status04_Text = "Impression en cours" const L_Text_Msg_Status05_Text = "Préchauffage" const L_Text_Msg_Status06_Text = "Impression arrêtée" const L_Text_Msg_Status07_Text = "Hors connexion" const L_Text_Msg_Status08_Text = "En pause" const L_Text_Msg_Status09_Text = "Erreur" const L_Text_Msg_Status10_Text = "Occupé" const L_Text_Msg_Status11_Text = "Non disponible" const L_Text_Msg_Status12_Text = "En attente" const L_Text_Msg_Status13_Text = "Traitement en cours" const L_Text_Msg_Status14_Text = "Initialisation en cours" const L_Text_Msg_Status15_Text = "Économiseur d'énergie" const L_Text_Msg_Status16_Text = "Suppression en attente" const L_Text_Msg_Status17_Text = "E/S active" const L_Text_Msg_Status18_Text = "Alimentation manuelle" const L_Text_Msg_Status19_Text = "Aucune erreur" const L_Text_Msg_Status20_Text = "Niveau de papier faible" const L_Text_Msg_Status21_Text = "Plus de papier" const L_Text_Msg_Status22_Text = "Niveau de toner faible" const L_Text_Msg_Status23_Text = "Il n’y a pas d’encre" const L_Text_Msg_Status24_Text = "Capot ouvert" const L_Text_Msg_Status25_Text = "Bourrage papier" const L_Text_Msg_Status26_Text = "Entretien nécessaire" const L_Text_Msg_Status27_Text = "Bac de réception plein" const L_Text_Msg_Status28_Text = "Problème de papier" const L_Text_Msg_Status29_Text = "Impossible d’imprimer la page" const L_Text_Msg_Status30_Text = "Intervention de l’utilisateur nécessaire" const L_Text_Msg_Status31_Text = "Mémoire insuffisante" const L_Text_Msg_Status32_Text = "Serveur inconnu" ' ' Debug messages ' const L_Text_Dbg_Msg01_Text = "Dans la fonction RenamePrinter" const L_Text_Dbg_Msg02_Text = "Nouveau nom d’imprimante" const L_Text_Dbg_Msg03_Text = "Dans la fonction GetPrinter" const L_Text_Dbg_Msg04_Text = "Dans la fonction SetPrinter" const L_Text_Dbg_Msg05_Text = "Dans la fonction ParseCommandLine" main ' ' Main execution starts here ' sub main dim iAction dim iRetval dim oParamDict ' ' 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 set oParamDict = CreateObject("Scripting.Dictionary") iRetval = ParseCommandLine(iAction, oParamDict) if iRetval = kErrorSuccess then select case iAction case kActionSet iRetval = SetPrinter(oParamDict) case kActionGet iRetval = GetPrinter(oParamDict) case kActionRename iRetval = RenamePrinter(oParamDict) case else Usage(True) exit sub end select end if end sub ' ' Rename printer ' function RenamePrinter(oParamDict) on error resume next DebugPrint kDebugTrace, L_Text_Dbg_Msg01_Text DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName) DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName) DebugPrint kDebugTrace, L_Text_Dbg_Msg02_Text & L_Space_Text & oParamDict.Item(kNewPrinterName) dim oPrinter dim oService dim iRetval dim uResult dim strServer dim strPrinter dim strNewName dim strUser dim strPassword iRetval = kErrorFailure strServer = oParamDict.Item(kServerName) strPrinter = oParamDict.Item(kPrinterName) strNewName = oParamDict.Item(kNewPrinterName) strUser = oParamDict.Item(kUserName) strPassword = oParamDict.Item(kPassword) if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then set oPrinter = oService.Get("Win32_Printer.DeviceID='" & strPrinter & "'") else RenamePrinter = kErrorFailure exit function end if ' ' Check if Get was successful ' if Err.Number = kErrorSuccess then uResult = oPrinter.RenamePrinter(strNewName) if Err.Number = kErrorSuccess then if uResult = kErrorSuccess then wscript.echo L_Text_Msg_General01_Text & L_Space_Text & strPrinter wscript.echo L_Text_Msg_General02_Text & L_Space_Text & strNewName iRetval = kErrorSuccess else wscript.echo L_Text_Msg_General03_Text & L_Space_Text & strPrinter & L_Space_Text _ & L_Text_Error_General03_Text & L_Space_Text & uResult end if else wscript.echo L_Text_Msg_General04_Text & L_Space_Text & strPrinter & 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_General04_Text & L_Space_Text & strPrinter & 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() end if RenamePrinter = iRetval end function ' ' Get printer configuration ' function GetPrinter(oParamDict) on error resume next DebugPrint kDebugTrace, L_Text_Dbg_Msg03_Text DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName) DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName) dim oPrinter dim oService dim iRetval dim uResult dim strServer dim strPrinter dim strAttributes dim strStart dim strEnd dim strUser dim strPassword iRetval = kErrorFailure strServer = oParamDict.Item(kServerName) strPrinter = oParamDict.Item(kPrinterName) strUser = oParamDict.Item(kUserName) strPassword = oParamDict.Item(kPassword) if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then set oPrinter = oService.Get("Win32_Printer='" & strPrinter & "'") else GetPrinter = kErrorFailure exit function end if ' ' Check if Get was successful ' if Err.Number = kErrorSuccess then wscript.echo L_Text_Msg_Printer01_Text & L_Space_Text & strServer wscript.echo L_Text_Msg_Printer02_Text & L_Space_Text & oPrinter.DeviceID wscript.echo L_Text_Msg_Printer03_Text & L_Space_Text & oPrinter.ShareName wscript.echo L_Text_Msg_Printer04_Text & L_Space_Text & oPrinter.DriverName wscript.echo L_Text_Msg_Printer05_Text & L_Space_Text & oPrinter.PortName wscript.echo L_Text_Msg_Printer06_Text & L_Space_Text & oPrinter.Comment wscript.echo L_Text_Msg_Printer07_Text & L_Space_Text & oPrinter.Location wscript.echo L_Text_Msg_Printer08_Text & L_Space_Text & oPrinter.SeparatorFile wscript.echo L_Text_Msg_Printer09_Text & L_Space_Text & oPrinter.PrintProcessor wscript.echo L_Text_Msg_Printer10_Text & L_Space_Text & oPrinter.PrintJobDatatype wscript.echo L_Text_Msg_Printer11_Text & L_Space_Text & oPrinter.Parameters wscript.echo L_Text_Msg_Printer13_Text & L_Space_Text & CStr(oPrinter.Priority) wscript.echo L_Text_Msg_Printer14_Text & L_Space_Text & CStr(oPrinter.DefaultPriority) strStart = Mid(CStr(oPrinter.StartTime), 9, 4) strEnd = Mid(CStr(oPrinter.UntilTime), 9, 4) if strStart <> "" and strEnd <> "" then wscript.echo L_Text_Msg_Printer15_Text & L_Space_Text & Mid(strStart, 1, 2) & "h" & Mid(strStart, 3, 2) wscript.echo L_Text_Msg_Printer16_Text & L_Space_Text & Mid(strEnd, 1, 2) & "h" & Mid(strEnd, 3, 2) else wscript.echo L_Text_Msg_General05_Text end if strAttributes = L_Text_Msg_Printer12_Text if oPrinter.Direct then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib01_Text end if if oPrinter.RawOnly then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib02_Text end if if oPrinter.Local then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib03_Text end if if oPrinter.Shared then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib04_Text end if if oPrinter.KeepPrintedJobs then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib05_Text end if if oPrinter.Published then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib06_Text end if if oPrinter.Queued then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib07_Text end if if oPrinter.Default then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib08_Text end if if oPrinter.Network then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib09_Text end if if oPrinter.EnableBiDi then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib10_Text end if if oPrinter.DoCompleteFirst then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib11_Text end if if oPrinter.WorkOffline then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib12_Text end if if oPrinter.Hidden then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib13_Text end if if oPrinter.EnableDevQueryPrint then strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib14_Text end if wscript.echo strAttributes wscript.echo wscript.echo L_Text_Msg_General10_Text & L_Space_Text & PrnStatusToString(oPrinter.PrinterStatus) wscript.echo L_Text_Msg_General11_Text & L_Space_Text & ExtPrnStatusToString(oPrinter.ExtendedPrinterStatus) wscript.echo L_Text_Msg_General12_Text & L_Space_Text & DetectedErrorStateToString(oPrinter.DetectedErrorState) wscript.echo L_Text_Msg_General13_Text & L_Space_Text & ExtDetectedErrorStateToString(oPrinter.ExtendedDetectedErrorState) iRetval = kErrorSuccess else wscript.echo L_Text_Msg_General04_Text & L_Space_Text & oParamDict.Item(kPrinterName) & 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() end if GetPrinter = iRetval end function ' ' Configure a printer ' function SetPrinter(oParamDict) on error resume next DebugPrint kDebugTrace, L_Text_Dbg_Msg04_Text DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName) DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName) dim oPrinter dim oService dim iRetval dim uResult dim strServer dim strPrinter dim strUser dim strPassword iRetval = kErrorFailure strServer = oParamDict.Item(kServerName) strPrinter = oParamDict.Item(kPrinterName) strNewName = oParamDict.Item(kNewPrinterName) strUser = oParamDict.Item(kUserName) strPassword = oParamDict.Item(kPassword) if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then set oPrinter = oService.Get("Win32_Printer='" & strPrinter & "'") else SetPrinter = kErrorFailure exit function end if ' ' Check if Get was successful ' if Err.Number = kErrorSuccess then if oParamdict.Exists(kPortName) then oPrinter.PortName = oParamDict.Item(kPortName) end if if oParamdict.Exists(kDriverName) then oPrinter.DriverName = oParamDict.Item(kDriverName) end if if oParamdict.Exists(kShareName) then oPrinter.ShareName = oParamDict.Item(kShareName) end if if oParamdict.Exists(kLocation) then oPrinter.Location = oParamDict.Item(kLocation) end if if oParamdict.Exists(kComment) then oPrinter.Comment = oParamDict.Item(kComment) end if if oParamdict.Exists(kDataType) then oPrinter.PrintJobDataType = oParamDict.Item(kDataType) end if if oParamdict.Exists(kSepFile) then oPrinter.SeparatorFile = oParamDict.Item(kSepfile) end if if oParamdict.Exists(kParameters) then oPrinter.Parameters = oParamDict.Item(kParameters) end if if oParamdict.Exists(kPriority) then oPrinter.Priority = oParamDict.Item(kPriority) end if if oParamdict.Exists(kDefaultPriority) then oPrinter.DefaultPriority = oParamDict.Item(kDefaultPriority) end if if oParamdict.Exists(kPrintProc) then oPrinter.PrintProc = oParamDict.Item(kPrintProc) end if if oParamdict.Exists(kStartTime) then oPrinter.StartTime = oParamDict.Item(kStartTime) end if if oParamdict.Exists(kUntilTime) then oPrinter.UntilTime = oParamDict.Item(kUntilTime) end if if oParamdict.Exists(kQueued) then oPrinter.Queued = oParamDict.Item(kQueued) end if if oParamdict.Exists(kDirect) then oPrinter.Direct = oParamDict.Item(kDirect) end if if oParamdict.Exists(kShared) then oPrinter.Shared = oParamDict.Item(kShared) end if if oParamdict.Exists(kHidden) then oPrinter.Hidden = oParamDict.Item(kHidden) end if if oParamdict.Exists(kEnabledevq) then oPrinter.EnableDevQueryPrint = oParamDict.Item(kEnabledevq) end if if oParamdict.Exists(kKeepPrintedJobs) then oPrinter.KeepPrintedJobs = oParamDict.Item(kKeepPrintedJobs) end if if oParamdict.Exists(kDoCompleteFirst) then oPrinter.DoCompleteFirst = oParamDict.Item(kDoCompleteFirst) end if if oParamdict.Exists(kWorkOffline) then oPrinter.WorkOffline = oParamDict.Item(kWorkOffline) end if if oParamdict.Exists(kEnableBidi) then oPrinter.EnableBidi = oParamDict.Item(kEnableBidi) end if if oParamdict.Exists(kRawonly) then oPrinter.RawOnly = oParamDict.Item(kRawonly) end if if oParamdict.Exists(kPublished) then oPrinter.Published = oParamDict.Item(kPublished) end if oPrinter.Put_(kFlagUpdateOnly) if Err.Number = kErrorSuccess then wscript.echo L_Text_Msg_General06_Text & L_Space_Text & strPrinter iRetval = kErrorSuccess else wscript.echo L_Text_Msg_General07_Text & L_Space_Text & strPrinter & 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() end if else wscript.echo L_Text_Msg_General04_Text & L_Space_Text & strPrinter & 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() end if SetPrinter = iRetval end function ' ' Converts the printer status to a string ' function PrnStatusToString(Status) dim str str = L_Empty_Text select case Status case 1 str = str + L_Text_Msg_Status01_Text + L_Space_Text case 2 str = str + L_Text_Msg_Status02_Text + L_Space_Text case 3 str = str + L_Text_Msg_Status03_Text + L_Space_Text case 4 str = str + L_Text_Msg_Status04_Text + L_Space_Text case 5 str = str + L_Text_Msg_Status05_Text + L_Space_Text case 6 str = str + L_Text_Msg_Status06_Text + L_Space_Text case 7 str = str + L_Text_Msg_Status07_Text + L_Space_Text end select PrnStatusToString = str end function ' ' Converts the extended printer status to a string ' function ExtPrnStatusToString(Status) dim str str = L_Empty_Text select case Status case 1 str = str + L_Text_Msg_Status01_Text + L_Space_Text case 2 str = str + L_Text_Msg_Status02_Text + L_Space_Text case 3 str = str + L_Text_Msg_Status03_Text + L_Space_Text case 4 str = str + L_Text_Msg_Status04_Text + L_Space_Text case 5 str = str + L_Text_Msg_Status05_Text + L_Space_Text case 6 str = str + L_Text_Msg_Status06_Text + L_Space_Text case 7 str = str + L_Text_Msg_Status07_Text + L_Space_Text case 8 str = str + L_Text_Msg_Status08_Text + L_Space_Text case 9 str = str + L_Text_Msg_Status09_Text + L_Space_Text case 10 str = str + L_Text_Msg_Status10_Text + L_Space_Text case 11 str = str + L_Text_Msg_Status11_Text + L_Space_Text case 12 str = str + L_Text_Msg_Status12_Text + L_Space_Text case 13 str = str + L_Text_Msg_Status13_Text + L_Space_Text case 14 str = str + L_Text_Msg_Status14_Text + L_Space_Text case 15 str = str + L_Text_Msg_Status15_Text + L_Space_Text case 16 str = str + L_Text_Msg_Status16_Text + L_Space_Text case 17 str = str + L_Text_Msg_Status17_Text + L_Space_Text case 18 str = str + L_Text_Msg_Status18_Text + L_Space_Text end select ExtPrnStatusToString = str end function ' ' Converts the detected error state to a string ' function DetectedErrorStateToString(Status) dim str str = L_Empty_Text select case Status case 0 str = str + L_Text_Msg_Status02_Text + L_Space_Text case 1 str = str + L_Text_Msg_Status01_Text + L_Space_Text case 2 str = str + L_Text_Msg_Status01_Text + L_Space_Text case 3 str = str + L_Text_Msg_Status20_Text + L_Space_Text case 4 str = str + L_Text_Msg_Status21_Text + L_Space_Text case 5 str = str + L_Text_Msg_Status22_Text + L_Space_Text case 6 str = str + L_Text_Msg_Status23_Text + L_Space_Text case 7 str = str + L_Text_Msg_Status24_Text + L_Space_Text case 8 str = str + L_Text_Msg_Status25_Text + L_Space_Text case 9 str = str + L_Text_Msg_Status07_Text + L_Space_Text case 10 str = str + L_Text_Msg_Status26_Text + L_Space_Text case 11 str = str + L_Text_Msg_Status27_Text + L_Space_Text end select DetectedErrorStateToString = str end function ' ' Converts the extended detected error state to a string ' function ExtDetectedErrorStateToString(Status) dim str str = L_Empty_Text select case Status case 0 str = str + L_Text_Msg_Status02_Text + L_Space_Text case 1 str = str + L_Text_Msg_Status01_Text + L_Space_Text case 2 str = str + L_Text_Msg_Status01_Text + L_Space_Text case 3 str = str + L_Text_Msg_Status20_Text + L_Space_Text case 4 str = str + L_Text_Msg_Status21_Text + L_Space_Text case 5 str = str + L_Text_Msg_Status22_Text + L_Space_Text case 6 str = str + L_Text_Msg_Status23_Text + L_Space_Text case 7 str = str + L_Text_Msg_Status24_Text + L_Space_Text case 8 str = str + L_Text_Msg_Status25_Text + L_Space_Text case 9 str = str + L_Text_Msg_Status07_Text + L_Space_Text case 10 str = str + L_Text_Msg_Status26_Text + L_Space_Text case 11 str = str + L_Text_Msg_Status27_Text + L_Space_Text case 12 str = str + L_Text_Msg_Status28_Text + L_Space_Text case 13 str = str + L_Text_Msg_Status29_Text + L_Space_Text case 14 str = str + L_Text_Msg_Status30_Text + L_Space_Text case 15 str = str + L_Text_Msg_Status31_Text + L_Space_Text case 16 str = str + L_Text_Msg_Status32_Text + L_Space_Text end select ExtDetectedErrorStateToString = str end function ' ' 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, oParamdict) 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 "-g" iAction = kActionGet case "-t" iAction = kActionSet case "-x" iAction = kActionRename case "-p" iIndex = iIndex + 1 oParamdict.Add kPrinterName, oArgs(iIndex) case "-s" iIndex = iIndex + 1 oParamdict.Add kServerName, RemoveBackslashes(oArgs(iIndex)) case "-r" iIndex = iIndex + 1 oParamdict.Add kPortName, oArgs(iIndex) case "-h" iIndex = iIndex + 1 oParamdict.Add kShareName, oArgs(iIndex) case "-m" iIndex = iIndex + 1 oParamdict.Add kComment, oArgs(iIndex) case "-l" iIndex = iIndex + 1 oParamdict.Add kLocation, oArgs(iIndex) case "-y" iIndex = iIndex + 1 oParamdict.Add kDataType, oArgs(iIndex) case "-f" iIndex = iIndex + 1 oParamdict.Add kSepFile, oArgs(iIndex) case "-z" iIndex = iIndex + 1 oParamdict.Add kNewPrinterName, oArgs(iIndex) case "-u" iIndex = iIndex + 1 oParamdict.Add kUserName, oArgs(iIndex) case "-w" iIndex = iIndex + 1 oParamdict.Add kPassword, oArgs(iIndex) case "-st" iIndex = iIndex + 1 oParamdict.Add kStartTime, "********" & oArgs(iIndex) & "00.000000+000" case "-o" iIndex = iIndex + 1 oParamdict.Add kPriority, oArgs(iIndex) case "-i" iIndex = iIndex + 1 oParamdict.Add kDefaultPriority, oArgs(iIndex) case "-ut" iIndex = iIndex + 1 oParamdict.Add kUntilTime, "********" & oArgs(iIndex) & "00.000000+000" case "-queued" oParamdict.Add kQueued, false case "+queued" oParamdict.Add kQueued, true case "-direct" oParamdict.Add kDirect, false case "+direct" oParamdict.Add kDirect, true case "-shared" oParamdict.Add kShared, false case "+shared" oParamdict.Add kShared, true case "-hidden" oParamdict.Add kHidden, false case "+hidden" oParamdict.Add kHidden, true case "-enabledevq" oParamdict.Add kEnabledevq, false case "+enabledevq" oParamdict.Add kEnabledevq, true case "-keepprintedjobs" oParamdict.Add kKeepprintedjobs, false case "+keepprintedjobs" oParamdict.Add kKeepprintedjobs, true case "-docompletefirst" oParamdict.Add kDocompletefirst, false case "+docompletefirst" oParamdict.Add kDocompletefirst, true case "-workoffline" oParamdict.Add kWorkoffline, false case "+workoffline" oParamdict.Add kWorkoffline, true case "-enablebidi" oParamdict.Add kEnablebidi, false case "+enablebidi" oParamdict.Add kEnablebidi, true case "-rawonly" oParamdict.Add kRawonly, false case "+rawonly" oParamdict.Add kRawonly, true case "-published" oParamdict.Add kPublished, false case "+published" oParamdict.Add kPublished, true case "-?" Usage(true) exit function case else Usage(true) exit function end select iIndex = iIndex + 1 wend if Err = kErrorSuccess then ParseCommandLine = kErrorSuccess else 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 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_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_Help_Help_General27_Text wscript.echo L_Empty_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 wscript.echo L_Help_Help_General32_Text wscript.echo L_Help_Help_General33_Text wscript.echo L_Help_Help_General34_Text wscript.echo L_Help_Help_General35_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_General08_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_General09_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 '' MIIZMAYJKoZIhvcNAQcCoIIZITCCGR0CAQExDjAMBggq '' SIG '' hkiG9w0CBQUAMGYGCisGAQQBgjcCAQSgWDBWMDIGCisG '' SIG '' AQQBgjcCAR4wJAIBAQQQTvApFpkntU2P5azhDxfrqwIB '' SIG '' AAIBAAIBAAIBAAIBADAgMAwGCCqGSIb3DQIFBQAEEOLm '' SIG '' 4j+9BLdGEED7+fyvFSygghQ4MIICvDCCAiUCEEoZ0jiM '' SIG '' glkcpV1zXxVd3KMwDQYJKoZIhvcNAQEEBQAwgZ4xHzAd '' SIG '' BgNVBAoTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxFzAV '' SIG '' BgNVBAsTDlZlcmlTaWduLCBJbmMuMSwwKgYDVQQLEyNW '' SIG '' ZXJpU2lnbiBUaW1lIFN0YW1waW5nIFNlcnZpY2UgUm9v '' SIG '' dDE0MDIGA1UECxMrTk8gTElBQklMSVRZIEFDQ0VQVEVE '' SIG '' LCAoYyk5NyBWZXJpU2lnbiwgSW5jLjAeFw05NzA1MTIw '' SIG '' MDAwMDBaFw0wNDAxMDcyMzU5NTlaMIGeMR8wHQYDVQQK '' SIG '' ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMRcwFQYDVQQL '' SIG '' Ew5WZXJpU2lnbiwgSW5jLjEsMCoGA1UECxMjVmVyaVNp '' SIG '' Z24gVGltZSBTdGFtcGluZyBTZXJ2aWNlIFJvb3QxNDAy '' SIG '' BgNVBAsTK05PIExJQUJJTElUWSBBQ0NFUFRFRCwgKGMp '' SIG '' OTcgVmVyaVNpZ24sIEluYy4wgZ8wDQYJKoZIhvcNAQEB '' SIG '' BQADgY0AMIGJAoGBANMuIPBofCwtLoEcsQaypwu3EQ1X '' SIG '' 2lPYdePJMyqy1PYJWzTz6ZD+CQzQ2xtauc3n9oixncCH '' SIG '' Jet9WBBzanjLcRX9xlj2KatYXpYE/S1iEViBHMpxlNUi '' SIG '' WC/VzBQFhDa6lKq0TUrp7jsirVaZfiGcbIbASkeXarSm '' SIG '' NtX8CS3TtDmbAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEA '' SIG '' YVUOPnvHkhJ+ERCOIszUsxMrW+hE5At4nqR+86cHch7i '' SIG '' We/MhOOJlEzbTmHvs6T7Rj1QNAufcFb2jip/F87lY795 '' SIG '' aQdzLrCVKIr17aqp0l3NCsoQCY/Os68olsR5KYSS3P+6 '' SIG '' Z0JIppAQ5L9h+JxT5ZPRcz/4/Z1PhKxV0f0RY2MwggQC '' SIG '' MIIDa6ADAgECAhAIem1cb2KTT7rE/UPhFBidMA0GCSqG '' SIG '' SIb3DQEBBAUAMIGeMR8wHQYDVQQKExZWZXJpU2lnbiBU '' SIG '' cnVzdCBOZXR3b3JrMRcwFQYDVQQLEw5WZXJpU2lnbiwg '' SIG '' SW5jLjEsMCoGA1UECxMjVmVyaVNpZ24gVGltZSBTdGFt '' SIG '' cGluZyBTZXJ2aWNlIFJvb3QxNDAyBgNVBAsTK05PIExJ '' SIG '' QUJJTElUWSBBQ0NFUFRFRCwgKGMpOTcgVmVyaVNpZ24s '' SIG '' IEluYy4wHhcNMDEwMjI4MDAwMDAwWhcNMDQwMTA2MjM1 '' SIG '' OTU5WjCBoDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4x '' SIG '' HzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsx '' SIG '' OzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov '' SIG '' L3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAxMScwJQYD '' SIG '' VQQDEx5WZXJpU2lnbiBUaW1lIFN0YW1waW5nIFNlcnZp '' SIG '' Y2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB '' SIG '' AQDAemGH67KnA2MbKxph3oC3FR2gi5A9uyeShBQ564XO '' SIG '' KZIGZkikA0+N6E+n8K9e0S8Zx5HxtZ57kSHO6f/jTvD8 '' SIG '' r5VYuGMt5o72KRjNcI5Qw+2Wu0DbviXoQlXW9oXyBueL '' SIG '' mRwx8wMP1EycJCrcGxuPgvOw76dN4xSn4I/Wx2jCYVip '' SIG '' ctT4MEhP2S9vYyDZicqCe8JLvCjFgWjn5oJArEY6oPk/ '' SIG '' Ns1Mu1RCWnple/6E5MdHVKy5PeyAxxr3xDOBgckqlft/ '' SIG '' XjqHkBTbzC518u9r5j2pYL5CAapPqluoPyIxnxIV+XOh '' SIG '' HoKLBCvqRgJMbY8fUC6VSyp4BoR0PZGPLEcxAgMBAAGj '' SIG '' gbgwgbUwQAYIKwYBBQUHAQEENDAyMDAGCCsGAQUFBzAB '' SIG '' hiRodHRwOi8vb2NzcC52ZXJpc2lnbi5jb20vb2NzcC9z '' SIG '' dGF0dXMwCQYDVR0TBAIwADBEBgNVHSAEPTA7MDkGC2CG '' SIG '' SAGG+EUBBwEBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v '' SIG '' d3d3LnZlcmlzaWduLmNvbS9ycGEwEwYDVR0lBAwwCgYI '' SIG '' KwYBBQUHAwgwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEB '' SIG '' BAUAA4GBAC3zT2NgLBja9SQPUrMM67O8Z4XCI+2PRg3P '' SIG '' Gk2+83x6IDAyGGiLkrsymfCTuDsVBid7PgIGAKQhkoQT '' SIG '' CsWY5UBXxQUl6K+vEWqp5TvL6SP2lCldQFXzpVOdyDY6 '' SIG '' OWUIc3OkMtKvrL/HBTz/RezD6Nok0c5jrgmn++Ib4/1B '' SIG '' CmqWMIIEEjCCAvqgAwIBAgIPAMEAizw8iBHRPvZj7N9A '' SIG '' MA0GCSqGSIb3DQEBBAUAMHAxKzApBgNVBAsTIkNvcHly '' SIG '' aWdodCAoYykgMTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAc '' SIG '' BgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8G '' SIG '' A1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0aG9yaXR5MB4X '' SIG '' DTk3MDExMDA3MDAwMFoXDTIwMTIzMTA3MDAwMFowcDEr '' SIG '' MCkGA1UECxMiQ29weXJpZ2h0IChjKSAxOTk3IE1pY3Jv '' SIG '' c29mdCBDb3JwLjEeMBwGA1UECxMVTWljcm9zb2Z0IENv '' SIG '' cnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgUm9v '' SIG '' dCBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IB '' SIG '' DwAwggEKAoIBAQCpAr3BcOY78k4bKJ+XeF4w6qKpjSVf '' SIG '' +P6VTKO3/p2iID58UaKboo9gMmvRQmR57qx2yVTa8uuc '' SIG '' hhyPn4Rms8VremIj1h083g8BkuiWxL8tZpqaaCaZ0Dos '' SIG '' vwy1WCbBRucKPjiWLKkoOajsSYNC44QPu5psVWGsgnyh '' SIG '' YC13TOmZtGQ7mlAcMQgkFJ+p55ErGOY9mGMUYFgFZZ8d '' SIG '' N1KH96fvlALGG9O/VUWziYC/OuxUlE6u/ad6bXROrxjM '' SIG '' lgkoIQBXkGBpN7tLEgc8Vv9b+6RmCgim0oFWV++2O14W '' SIG '' gXcE2va+roCV/rDNf9anGnJcPMq88AijIjCzBoXJsyB3 '' SIG '' E4XfAgMBAAGjgagwgaUwgaIGA1UdAQSBmjCBl4AQW9Bw '' SIG '' 72lyniNRfhSyTY7/y6FyMHAxKzApBgNVBAsTIkNvcHly '' SIG '' aWdodCAoYykgMTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAc '' SIG '' BgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8G '' SIG '' A1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0aG9yaXR5gg8A '' SIG '' wQCLPDyIEdE+9mPs30AwDQYJKoZIhvcNAQEEBQADggEB '' SIG '' AJXoC8CN85cYNe24ASTYdxHzXGAyn54Lyz4FkYiPyTrm '' SIG '' IfLwV5MstaBHyGLv/NfMOztaqTZUaf4kbT/JzKreBXzd '' SIG '' MY09nxBwarv+Ek8YacD80EPjEVogT+pie6+qGcgrNyUt '' SIG '' vmWhEoolD2Oj91Qc+SHJ1hXzUqxuQzIH/YIX+OVnbA1R '' SIG '' 9r3xUse958Qw/CAxCYgdlSkaTdUdAqXxgOADtFv0sd3I '' SIG '' V+5lScdSVLa0AygS/5DW8AiPfriXxas3LOR65Kh343ag '' SIG '' ANBqP8HSNorgQRKoNWobats14dQcBOSoRQTIWjM4bk0c '' SIG '' DWK3CqKM09VUP0bNHFWmcNsSOoeTdZ+n0qAwggSLMIID '' SIG '' c6ADAgECAgphBiqNAAAAAAALMA0GCSqGSIb3DQEBBQUA '' SIG '' MIGmMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu '' SIG '' Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV '' SIG '' TWljcm9zb2Z0IENvcnBvcmF0aW9uMSswKQYDVQQLEyJD '' SIG '' b3B5cmlnaHQgKGMpIDIwMDAgTWljcm9zb2Z0IENvcnAu '' SIG '' MSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5n '' SIG '' IFBDQTAeFw0wMTAzMjkyMTI3MjZaFw0wMjA1MjkyMTM3 '' SIG '' MjZaMIGhMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz '' SIG '' aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE '' SIG '' ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSswKQYDVQQL '' SIG '' EyJDb3B5cmlnaHQgKGMpIDIwMDEgTWljcm9zb2Z0IENv '' SIG '' cnAuMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRp '' SIG '' b24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAI4W '' SIG '' b9oX0+NFlbKs0+XPMT0dxIe7TkgF+YtWqSuHY8hE2jDJ '' SIG '' FLzreBq6xOricgBMRmab3mJGbp73RLrous/C1fU7lke4 '' SIG '' UV7Rd2cie1MqLeoij3xO/wK1GzOg6pXrGLp2+WHSAAuU '' SIG '' YDQ7SYYss9mOky4ta/3jVaq4qm7gcPSiYAYvAgMBAAGj '' SIG '' ggFAMIIBPDAOBgNVHQ8BAf8EBAMCBsAwEwYDVR0lBAww '' SIG '' CgYIKwYBBQUHAwMwHQYDVR0OBBYEFO+QQN5P4BuzRdgH '' SIG '' A3uZ+XUZZjUaMIGpBgNVHSMEgaEwgZ6AFClcuRu2zTPu '' SIG '' u55Zffflyi7EDTQooXSkcjBwMSswKQYDVQQLEyJDb3B5 '' SIG '' cmlnaHQgKGMpIDE5OTcgTWljcm9zb2Z0IENvcnAuMR4w '' SIG '' HAYDVQQLExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf '' SIG '' BgNVBAMTGE1pY3Jvc29mdCBSb290IEF1dGhvcml0eYIQ '' SIG '' aguZT8AA3qoR1NhAmqi+5jBKBgNVHR8EQzBBMD+gPaA7 '' SIG '' hjlodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny '' SIG '' bC9wcm9kdWN0cy9Db2RlU2lnblBDQS5jcmwwDQYJKoZI '' SIG '' hvcNAQEFBQADggEBAARnzM/dcU1Hwo6DaRJrol+WJgfo '' SIG '' j9jTnlrbJ2kdHfQ8VShT3REkJ5KuWVZA6cRNnezbq36U '' SIG '' mz0gLDXyJ07AyDm3ZWPRNWbaU71BfllKpFK39f3IvaF7 '' SIG '' BriY2Jju0Qs0dWYN3EGPw7CShFfBQnqFxpET21St3n5B '' SIG '' 3CCv6RvJwjIxxY3py/qDS8FYkzLE1+PNeqvffQicxoU7 '' SIG '' 6EGBOLF4Gbw4981rws6qTJAdg8bmAYloqueP6AdQKjLd '' SIG '' 18+9zHrZOg//skSKV8gaN2QHF317cktGBqEoWyNXHmr9 '' SIG '' kSIzQNF1SxIBbgYhhDZvqCoMfz6uNSv2t30LCBPlV/NL '' SIG '' rY8gv7gwggTJMIIDsaADAgECAhBqC5lPwADeqhHU2ECa '' SIG '' qL7mMA0GCSqGSIb3DQEBBAUAMHAxKzApBgNVBAsTIkNv '' SIG '' cHlyaWdodCAoYykgMTk5NyBNaWNyb3NvZnQgQ29ycC4x '' SIG '' HjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEh '' SIG '' MB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0aG9yaXR5 '' SIG '' MB4XDTAwMTIxMDA4MDAwMFoXDTA1MTExMjA4MDAwMFow '' SIG '' gaYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n '' SIG '' dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN '' SIG '' aWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAsTIkNv '' SIG '' cHlyaWdodCAoYykgMjAwMCBNaWNyb3NvZnQgQ29ycC4x '' SIG '' IzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcg '' SIG '' UENBMIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKC '' SIG '' AQEAooQVU9gLMA40lf86G8LzL3ttNyNN89KM5f2v/cUC '' SIG '' NB8kx+Wh3FTsfgJ0R6vbMlgWFFEpOPF+srSMOke1OU5u '' SIG '' VMIxDDpt+83Ny1CcG66n2NlKJj+1xcuPluJJ8m3Y6ZY+ '' SIG '' 3gXP8KZVN60vYM2AYUKhSVRKDxi3S9mTmTBaR3VktNO7 '' SIG '' 3barDJ1PuHM7GDqqtIeMsIiwTU8fThG1M4DfDTpkb0TH '' SIG '' NL1Kk5u8ph35BSNOYCmPzCryhJqZrajbCnB71jRBkKW3 '' SIG '' ZsdcGx2jMw6bVAMaP5iQuMznPQR0QxyP9znms6xIemsq '' SIG '' DmIBYTl2bv0+mAdLFPEBRv0VAOBH2k/kBeSAJQIBA6OC '' SIG '' ASgwggEkMBMGA1UdJQQMMAoGCCsGAQUFBwMDMIGiBgNV '' SIG '' HQEEgZowgZeAEFvQcO9pcp4jUX4Usk2O/8uhcjBwMSsw '' SIG '' KQYDVQQLEyJDb3B5cmlnaHQgKGMpIDE5OTcgTWljcm9z '' SIG '' b2Z0IENvcnAuMR4wHAYDVQQLExVNaWNyb3NvZnQgQ29y '' SIG '' cG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBSb290 '' SIG '' IEF1dGhvcml0eYIPAMEAizw8iBHRPvZj7N9AMBAGCSsG '' SIG '' AQQBgjcVAQQDAgEAMB0GA1UdDgQWBBQpXLkbts0z7rue '' SIG '' WX335couxA00KDAZBgkrBgEEAYI3FAIEDB4KAFMAdQBi '' SIG '' AEMAQTALBgNVHQ8EBAMCAUYwDwYDVR0TAQH/BAUwAwEB '' SIG '' /zANBgkqhkiG9w0BAQQFAAOCAQEARVjimkF//J2/SHd3 '' SIG '' rozZ5hnFV7QavbS5XwKhRWo5Wfm5J5wtTZ78ouQ4ijhk '' SIG '' IkLfuS8qz7fWBsrrKr/gGoV821EIPfQi09TAbYiBFURf '' SIG '' ZINkxKmULIrbkDdKD7fo1GGPdnbh2SX/JISVjQRWVJSh '' SIG '' HDo+grzupYeMHIxLeV+1SfpeMmk6H1StdU3fZOcwPNtk '' SIG '' SUT7+8QcQnHmoD1F7msAn6xCvboRs1bk+9WiKoHYH06i '' SIG '' Vb4nj3Cmomwb/1SKgryBS6ahsWZ6qRenywbAR+ums+kx '' SIG '' FVM9KgS//3NI3IsnQ/xj6O4kh1u+NtHoMfUy2V7feXq6 '' SIG '' MKxphkr7jBG/G41UWTGCBGIwggReAgEBMIG1MIGmMQsw '' SIG '' CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ '' SIG '' MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z '' SIG '' b2Z0IENvcnBvcmF0aW9uMSswKQYDVQQLEyJDb3B5cmln '' SIG '' aHQgKGMpIDIwMDAgTWljcm9zb2Z0IENvcnAuMSMwIQYD '' SIG '' VQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQQIK '' SIG '' YQYqjQAAAAAACzAMBggqhkiG9w0CBQUAoIGwMBkGCSqG '' SIG '' SIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcC '' SIG '' AQsxDjAMBgorBgEEAYI3AgEVMB8GCSqGSIb3DQEJBDES '' SIG '' BBDuywKV2zhUda/eUBoNMzbLMFQGCisGAQQBgjcCAQwx '' SIG '' RjBEoCaAJABXAE0ASQAgAHAAcgBpAG4AdABlAHIAIABz '' SIG '' AGMAcgBpAHAAdKEagBhodHRwOi8vd3d3Lm1pY3Jvc29m '' SIG '' dC5jb20wDQYJKoZIhvcNAQEBBQAEgYB2Vi7Wgjx8BqH2 '' SIG '' 46YWLB+EfmuDlcWOg0IQzJ11Taz0p3SyKPoFM0tpYPvA '' SIG '' /NjorlO5qMEuUtKXXn5hXAU+6IfA1kW7rWjRyMoYf6BN '' SIG '' Mnuzk+L3ZYM095hAFNy6YOtIH0msH52t/J3rgJdVcnB1 '' SIG '' IHDGvl9K0iT0+wvHCfC1cm0BKaGCAkwwggJIBgkqhkiG '' SIG '' 9w0BCQYxggI5MIICNQIBATCBszCBnjEfMB0GA1UEChMW '' SIG '' VmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMO '' SIG '' VmVyaVNpZ24sIEluYy4xLDAqBgNVBAsTI1ZlcmlTaWdu '' SIG '' IFRpbWUgU3RhbXBpbmcgU2VydmljZSBSb290MTQwMgYD '' SIG '' VQQLEytOTyBMSUFCSUxJVFkgQUNDRVBURUQsIChjKTk3 '' SIG '' IFZlcmlTaWduLCBJbmMuAhAIem1cb2KTT7rE/UPhFBid '' SIG '' MAwGCCqGSIb3DQIFBQCgWTAYBgkqhkiG9w0BCQMxCwYJ '' SIG '' KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wMTEyMDcy '' SIG '' MDIzMDRaMB8GCSqGSIb3DQEJBDESBBBQcr7gc8/T5Jz/ '' SIG '' zs4YUE0FMA0GCSqGSIb3DQEBAQUABIIBAFgRB0KNh4S6 '' SIG '' v84cecsMH9B8Edq6fSmFxYXHK1T/OBG0SvODIdjhRf5D '' SIG '' 0rod1rKYugta35C3QRW6URZ/qL/nqgnadJ240vFw1ANS '' SIG '' KhIEatmSr34A0FbNEMEZsspxaG8JI91nv5NgayArbURR '' SIG '' x8CV5M+LkaesZyVldDOZ88BdbAFcALMR860d/CXgVa6p '' SIG '' Qz8w3lrIQGUzXnuuxaTtRAf22Ba/NSg4FOWz+U4DHUq3 '' SIG '' Ed0vbzAuzUOLo0EwEB+PPf4yZ2Had3xAkUQfbmb89yK9 '' SIG '' FMZL1A6aksyHdNB2HB4vgyzXW+KTRbQ4MKttbACrugLn '' SIG '' vSRK4Mpa/gWTKBapOlzdKcI= '' SIG '' End signature block