' Windows Installer database table export for use with Windows Scripting Host
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates the use of the Database.Export method and MsiDatabaseExport API
'
Option Explicit

Const msiOpenDatabaseModeReadOnly     = 0

Dim shortNames:shortNames = False
Dim argCount:argCount = Wscript.Arguments.Count
Dim iArg:iArg = 0
If (argCount < 3) Then
	Wscript.Echo "Windows Installer database table export utility" &_
		vbNewLine & " 1st argument is path to MSI database (installer package)" &_
		vbNewLine & " 2nd argument is path to folder to contain the exported table(s)" &_
		vbNewLine & " Subseqent arguments are table names to export (case-sensitive)" &_
		vbNewLine & " Specify '*' to export all tables, including _SummaryInformation" &_
		vbNewLine & " Specify /s or -s anywhere before table list to force short names" &_
		vbNewLine &_
		vbNewLine & " Copyright (C) Microsoft Corporation.  All rights reserved."
	Wscript.Quit 1
End If

On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError

Dim database : Set database = installer.OpenDatabase(NextArgument, msiOpenDatabaseModeReadOnly) : CheckError
Dim folder : folder = NextArgument
Dim table, view, record
While iArg < argCount
	table = NextArgument
	If table = "*" Then
		Set view = database.OpenView("SELECT `Name` FROM _Tables")
		view.Execute : CheckError
		Do
			Set record = view.Fetch : CheckError
			If record Is Nothing Then Exit Do
			table = record.StringData(1)
			Export table, folder : CheckError
		Loop
		Set view = Nothing
		table = "_SummaryInformation" 'not an actual table
		Export table, folder : Err.Clear  ' ignore if no summary information
	Else
		Export table, folder : CheckError
	End If
Wend
Wscript.Quit(0)            

Sub Export(table, folder)
	Dim file : If shortNames Then file = Left(table, 8) & ".idt" Else file = table & ".idt"
	database.Export table, folder, file
End Sub

Function NextArgument
	Dim arg, chFlag
	Do
		arg = Wscript.Arguments(iArg)
		iArg = iArg + 1
		chFlag = AscW(arg)
		If (chFlag = AscW("/")) Or (chFlag = AscW("-")) Then
			chFlag = UCase(Right(arg, Len(arg)-1))
			If chFlag = "S" Then 
				shortNames = True
			Else
				Wscript.Echo "Invalid option flag:", arg : Wscript.Quit 1
			End If
		Else
			Exit Do
		End If
	Loop
	NextArgument = arg
End Function

Sub CheckError
	Dim message, errRec
	If Err = 0 Then Exit Sub
	message = Err.Source & " " & Hex(Err) & ": " & Err.Description
	If Not installer Is Nothing Then
		Set errRec = installer.LastErrorRecord
		If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
	End If
	Wscript.Echo message
	Wscript.Quit 2
End Sub

'' SIG '' Begin signature block
'' SIG '' MIIiCwYJKoZIhvcNAQcCoIIh/DCCIfgCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' VI4Hnca1EkyTrUPvd2CuA7Hjy/dDS98JnuMo4x3O0eig
'' SIG '' gguOMIIFFjCCA/6gAwIBAgITMwAAAPcoVO77wpgbcQAA
'' SIG '' AAAA9zANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTE2MDEwNjE4MzkwNloX
'' SIG '' DTE3MDQwNjE4MzkwNlowgY4xCzAJBgNVBAYTAlVTMRMw
'' SIG '' EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
'' SIG '' b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
'' SIG '' b24xDTALBgNVBAsTBE1PUFIxKTAnBgNVBAMTIE1pY3Jv
'' SIG '' c29mdCBXaW5kb3dzIEtpdHMgUHVibGlzaGVyMIIBIjAN
'' SIG '' BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1AR+wqsz
'' SIG '' sFtMP/Mn7AFMDR1G2z7cWWXUbjRczUoYMeWxTDop+uXI
'' SIG '' uOvcoPiSLx/qXiOWH0Q8U9yZRI70qYn/GVF40VDNQRos
'' SIG '' vGV2YGfxlSc+wxfcw/a1/12vPAxNmEY7iw97vndAAbdR
'' SIG '' 5gG2xaymQ/Z6j/ECwnqo64zGE2UbElMug87UaVX7eqGV
'' SIG '' CvUxSjiIh/Wh33tbMbiSiiTbHledTbGz4iCPAZebX+MI
'' SIG '' VfzhD0OehtEnAl1bQQg7QkTxTWkEddrXe88uX2XfSUqO
'' SIG '' oky4CmXfJtrdIIVq13G66Q9iNzQIsB2lQD5YLTfv042e
'' SIG '' KJMtl2gi6wPAj6RcI2km5njJzwIDAQABo4IBejCCAXYw
'' SIG '' HwYDVR0lBBgwFgYIKwYBBQUHAwMGCisGAQQBgjcKAxQw
'' SIG '' HQYDVR0OBBYEFDswaL2qHyB7Nk2nsBv8OB+Iszl0MFEG
'' SIG '' A1UdEQRKMEikRjBEMQ0wCwYDVQQLEwRNT1BSMTMwMQYD
'' SIG '' VQQFEyozMTYxOCtiMTI0NTdhMC05Yjg0LTQyYjAtOThm
'' SIG '' Ny01ZDAxZjc3Y2RiZjQwHwYDVR0jBBgwFoAU5vxfe7si
'' SIG '' AFjkck619CF0IzLm76wwVgYDVR0fBE8wTTBLoEmgR4ZF
'' SIG '' aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv
'' SIG '' cHJvZHVjdHMvTWljQ29kU2lnUENBXzIwMTAtMDctMDYu
'' SIG '' Y3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+
'' SIG '' aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0
'' SIG '' cy9NaWNDb2RTaWdQQ0FfMjAxMC0wNy0wNi5jcnQwDAYD
'' SIG '' VR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAQEAYsg4
'' SIG '' oPGeCB3DRQJkIlwuhOIuRsI0e8xltqpKOBg7LZf8+KL+
'' SIG '' MLwZyQhBzs8jDrxYtwaUK31fQTCOygjLuBAqqQY5Sqj6
'' SIG '' U06wdn/y0mrdwJhyESzKPV+bUfF9jN4cdNJhDnZFoyNE
'' SIG '' F5uDt7heE7dvxu+vur/hGMD72nP129pjG7jNITTcpHug
'' SIG '' RuYXMnYPvtbuenatkljU7BxiRZbrHS5cwnd9BHI4B2p2
'' SIG '' VM4vgJ3dNF5o9Isu2RkpaZB2gK6jtkwBm0vmxlTkl5Du
'' SIG '' 4vyCV7zDswoByRolkmZq6LCRVDLYAVIwsh1Sic5vtNAD
'' SIG '' GrhunjO75FtIzx3FXfnrt5QgiCAimzCCBnAwggRYoAMC
'' SIG '' AQICCmEMUkwAAAAAAAMwDQYJKoZIhvcNAQELBQAwgYgx
'' SIG '' CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
'' SIG '' MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
'' SIG '' b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jv
'' SIG '' c29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAy
'' SIG '' MDEwMB4XDTEwMDcwNjIwNDAxN1oXDTI1MDcwNjIwNTAx
'' SIG '' N1owfjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
'' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
'' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMf
'' SIG '' TWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMDCC
'' SIG '' ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOkO
'' SIG '' ZFB5Z7XE4/0JAEyelKz3VmjqRNjPxVhPqaV2fG1FutM5
'' SIG '' krSkHvn5ZYLkF9KP/UScCOhlk84sVYS/fQjjLiuoQSsY
'' SIG '' t6JLbklMaxUH3tHSwokecZTNtX9LtK8I2MyI1msXlDqT
'' SIG '' ziY/7Ob+NJhX1R1dSfayKi7VhbtZP/iQtCuDdMorsztG
'' SIG '' 4/BGScEXZlTJHL0dxFViV3L4Z7klIDTeXaallV6rKIDN
'' SIG '' 1bKe5QO1Y9OyFMjByIomCll/B+z/Du2AEjVMEqa+Ulv1
'' SIG '' ptrgiwtId9aFR9UQucboqu6Lai0FXGDGtCpbnCMcX0Xj
'' SIG '' GhQebzfLGTOAaolNo2pmY3iT1TDPlR8CAwEAAaOCAeMw
'' SIG '' ggHfMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTm
'' SIG '' /F97uyIAWORyTrX0IXQjMubvrDAZBgkrBgEEAYI3FAIE
'' SIG '' DB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0T
'' SIG '' AQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo
'' SIG '' 0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRw
'' SIG '' Oi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9k
'' SIG '' dWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmww
'' SIG '' WgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRw
'' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01p
'' SIG '' Y1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBnQYDVR0g
'' SIG '' BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUH
'' SIG '' AgEWMWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9QS0kv
'' SIG '' ZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYBBQUHAgIw
'' SIG '' NB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBT
'' SIG '' AHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQEL
'' SIG '' BQADggIBABp071dPKXvEFoV4uFDTIvwJnayCl/g0/yos
'' SIG '' l5US5eS/z7+TyOM0qduBuNweAL7SNW+v5X95lXflAtTx
'' SIG '' 69jNTh4bYaLCWiMa8IyoYlFFZwjjPzwek/gwhRfIOUCm
'' SIG '' 1w6zISnlpaFpjCKTzHSY56FHQ/JTrMAPMGl//tIlIG1v
'' SIG '' YdPfB9XZcgAsaYZ2PVHbpjlIyTdhbQfdUxnLp9Zhwr/i
'' SIG '' g6sP4GubldZ9KFGwiUpRpJpsyLcfShoOaanX3MF+0Ulw
'' SIG '' qratu3JHYxf6ptaipobsqBBEm2O2smmJBsdGhnoYP+jF
'' SIG '' HSHVe/kCIy3FQcu/HUzIFu+xnH/8IktJim4V46Z/dlvR
'' SIG '' U3mRhZ3V0ts9czXzPK5UslJHasCqE5XSjhHamWdeMoz7
'' SIG '' N4XR3HWFnIfGWleFwr/dDY+Mmy3rtO7PJ9O1Xmn6pBYE
'' SIG '' AackZ3PPTU+23gVWl3r36VJN9HcFT4XG2Avxju1CCdEN
'' SIG '' duMjVngiJja+yrGMbqod5IXaRzNij6TJkTNfcR5Ar5hl
'' SIG '' ySLoQiElihwtYNk3iUGJKhYP12E8lGhgUu/WR5mggEDu
'' SIG '' FYF3PpzgUxgaUB04lZseZjMTJzkXeIc2zk7DX7L1PUdT
'' SIG '' tuDl2wthPSrXkizON1o+QEIxpB8QCMJWnL8kXVECnWp5
'' SIG '' 0hfT2sGUjgd7JXFEqwZq5tTG3yOalnXFMYIV1TCCFdEC
'' SIG '' AQEwgZUwfjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UE
'' SIG '' AxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAx
'' SIG '' MAITMwAAAPcoVO77wpgbcQAAAAAA9zANBglghkgBZQME
'' SIG '' AgEFAKCBxjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIB
'' SIG '' BDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAv
'' SIG '' BgkqhkiG9w0BCQQxIgQgdhz/wWEP2iEm77S4KoOguv5f
'' SIG '' C14+wxC3aRFW1EY1TyIwWgYKKwYBBAGCNwIBDDFMMEqg
'' SIG '' JIAiAE0AaQBjAHIAbwBzAG8AZgB0ACAAVwBpAG4AZABv
'' SIG '' AHcAc6EigCBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v
'' SIG '' d2luZG93czANBgkqhkiG9w0BAQEFAASCAQChOLXF1eeD
'' SIG '' YpoVUlG5KEvdsBiizUspwDitwK4SHBEDW1p5lVHcZEG+
'' SIG '' DRScMRwErDUK87v1QraUjBIbp+wrAL+kv+YKu9YgqYpo
'' SIG '' FCp4jiMAH2PQbMKtEMgqyZ9umkyri0H5//HndWBAtwrR
'' SIG '' 4R6CRCVZblKitSuLh+n4lq1dPGyq6N/FEBMdykcItukS
'' SIG '' VGTdVWrE76FGSt0MuvpSUDYOgtQPZjmY74XSdw/NKfPN
'' SIG '' kDZV8djrmxuSq1r9APDMuEyczRmYzyDXhV4geDjWcmoG
'' SIG '' IpWiQNQ5v6A/Jz0+axyjkNgMPRfOTo4upNBgD5I4VrYs
'' SIG '' IS6HTJ+gDkvL75xJB6vbr487oYITRzCCE0MGCisGAQQB
'' SIG '' gjcDAwExghMzMIITLwYJKoZIhvcNAQcCoIITIDCCExwC
'' SIG '' AQMxDzANBglghkgBZQMEAgEFADCCATwGCyqGSIb3DQEJ
'' SIG '' EAEEoIIBKwSCAScwggEjAgEBBgorBgEEAYRZCgMBMDEw
'' SIG '' DQYJYIZIAWUDBAIBBQAEILAy44/tRbE1lflIU9G9R5iv
'' SIG '' bi9ShvLBleZqOk6xGJlXAgZW7BsE1DIYEzIwMTYwMzI5
'' SIG '' MTExMTA3LjU5N1owBwIBAYACAfSggbikgbUwgbIxCzAJ
'' SIG '' BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMQ8w
'' SIG '' DQYDVQQHEwZSZWRtb2QxHjAcBgNVBAoTFU1pY3Jvc29m
'' SIG '' dCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUG
'' SIG '' A1UECxMebkNpcGhlciBEU0UgRVNOOjMxQzUtMzBCQS03
'' SIG '' QzkxMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
'' SIG '' cCBTZXJ2aWNloIIOyzCCBnEwggRZoAMCAQICCmEJgSoA
'' SIG '' AAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
'' SIG '' AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
'' SIG '' EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
'' SIG '' cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290
'' SIG '' IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEw
'' SIG '' MDcwMTIxMzY1NVoXDTI1MDcwMTIxNDY1NVowfDELMAkG
'' SIG '' A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
'' SIG '' BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
'' SIG '' dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0
'' SIG '' IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3
'' SIG '' DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX
'' SIG '' 9fp/aZRrdFQQ1aUKAIKF++18aEssX8XD5WHCdrc+Zitb
'' SIG '' 8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRDDNdN
'' SIG '' uDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhH
'' SIG '' hjKEHnRhZ5FfgVSxz5NMksHEpl3RYRNuKMYa+YaAu99h
'' SIG '' /EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1rL2KQk1A
'' SIG '' UdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpO
'' SIG '' BpG2iAg16HgcsOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8
'' SIG '' wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB4jAQBgkrBgEE
'' SIG '' AYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xG
'' SIG '' G8UzaFqFbVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBD
'' SIG '' AEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w
'' SIG '' HwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQw
'' SIG '' VgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNy
'' SIG '' b3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9v
'' SIG '' Q2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB
'' SIG '' BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNy
'' SIG '' b3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRf
'' SIG '' MjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCBkjCB
'' SIG '' jwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRw
'' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vUEtJL2RvY3MvQ1BT
'' SIG '' L2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwA
'' SIG '' ZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABl
'' SIG '' AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH
'' SIG '' 5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUxvs8F4qn++ldt
'' SIG '' GTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5
'' SIG '' U4zM9GASinbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/
'' SIG '' f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1L3mBZdmptWvkx872
'' SIG '' ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+
'' SIG '' tuWOM7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlK
'' SIG '' cWOdeyFtw5yjojz6f32WapB4pm3S4Zz5Hfw42JT0xqUK
'' SIG '' loakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45
'' SIG '' V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4Ttx
'' SIG '' Cd9ddJgiCGHasFAeb73x4QDf5zEHpJM692VHeOj4qEir
'' SIG '' 995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEegPsb
'' SIG '' iSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3
'' SIG '' yKxO2ii4sanblrKnQqLJzxlBTeCG+SqaoxFmMNO7dDJL
'' SIG '' 32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp3lfB0d4w
'' SIG '' wP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWz
'' SIG '' fjUeCLraNtvTX4/edIhJEjCCBNkwggPBoAMCAQICEzMA
'' SIG '' AAB0dMytqT58tawAAAAAAHQwDQYJKoZIhvcNAQELBQAw
'' SIG '' fDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
'' SIG '' b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p
'' SIG '' Y3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWlj
'' SIG '' cm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMTUx
'' SIG '' MDA3MTgxNzM5WhcNMTcwMTA3MTgxNzM5WjCBsjELMAkG
'' SIG '' A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xDzAN
'' SIG '' BgNVBAcTBlJlZG1vZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMQ0wCwYDVQQLEwRNT1BSMScwJQYD
'' SIG '' VQQLEx5uQ2lwaGVyIERTRSBFU046MzFDNS0zMEJBLTdD
'' SIG '' OTExJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1w
'' SIG '' IFNlcnZpY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
'' SIG '' ggEKAoIBAQCrQ9hj5aNBD+U6BpGjkyCtvSqu2617TahY
'' SIG '' XzoFCcFLWEIXOiSObajdReSUUjDifvYwFqwgBJF8d3lN
'' SIG '' tJOevnoTan1oxPFCM9jUZY0ovCdTcpwHAlYEiRbio2AH
'' SIG '' TpY71lPK8RUiOj/ykaDD24nLaeoy/z80RvwZpZIbzIzc
'' SIG '' rKT3zZWx+WyUWPPYoVNoDZcwC5hpFn4joHSv6ETznvmT
'' SIG '' 1ONotWrfljgkXqFl9mfJrbDZ+IB/crdTZiuHAqAICrr7
'' SIG '' jZkFX9C/jRhNvy8fYzyUsedjXAnG6rSutMkRPMfNyvfe
'' SIG '' ODR2/YskETlA+X7qva73xEpewcFTlKFrYLzGRO+xM9rJ
'' SIG '' AgMBAAGjggEbMIIBFzAdBgNVHQ4EFgQUNMasUoon09Me
'' SIG '' l78MA3V3SrrY5DEwHwYDVR0jBBgwFoAU1WM6XIoxkPND
'' SIG '' e3xGG8UzaFqFbVUwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0
'' SIG '' cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJv
'' SIG '' ZHVjdHMvTWljVGltU3RhUENBXzIwMTAtMDctMDEuY3Js
'' SIG '' MFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0
'' SIG '' cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9N
'' SIG '' aWNUaW1TdGFQQ0FfMjAxMC0wNy0wMS5jcnQwDAYDVR0T
'' SIG '' AQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDCDANBgkq
'' SIG '' hkiG9w0BAQsFAAOCAQEAWZGMLsOoqIdDRRqOmZPIRG60
'' SIG '' cJFTSE8ntfhG11xuLIsuTgheIl1kUfXaJonV7hN7jLG4
'' SIG '' 6h4B34A2FQKLw9DovWasW5HNLzxIV6ovMUUDCy8MuIxU
'' SIG '' o0yekudg5XCK/hCAUI+KTlBar3EXTvG0hbAyClFScQhw
'' SIG '' 5AysijMGNNPE4zQfjigb4XEDQ+vp20Di1rVJxmCjlhFI
'' SIG '' EKTVciqxLvdH6uMr27hKuvAjEBq4R0y10qUssUo6xNY/
'' SIG '' jl8/nveQ/43lLOBu99t7cdENKIoTvLJvmibAvIhZm+XP
'' SIG '' Fx1ZiKH+MCoAsw5A0xsHVJ6Zy/pDrOxV0JtOzZmz7ByC
'' SIG '' iNlgO+DoEqGCA3UwggJdAgEBMIHioYG4pIG1MIGyMQsw
'' SIG '' CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEP
'' SIG '' MA0GA1UEBxMGUmVkbW9kMR4wHAYDVQQKExVNaWNyb3Nv
'' SIG '' ZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIxJzAl
'' SIG '' BgNVBAsTHm5DaXBoZXIgRFNFIEVTTjozMUM1LTMwQkEt
'' SIG '' N0M5MTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3Rh
'' SIG '' bXAgU2VydmljZaIlCgEBMAkGBSsOAwIaBQADFQAQdgas
'' SIG '' ogBQhFCmlXN/GcSXThEe+KCBwjCBv6SBvDCBuTELMAkG
'' SIG '' A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
'' SIG '' BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
'' SIG '' dCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUG
'' SIG '' A1UECxMebkNpcGhlciBOVFMgRVNOOjU3RjYtQzFFMC01
'' SIG '' NTRDMSswKQYDVQQDEyJNaWNyb3NvZnQgVGltZSBTb3Vy
'' SIG '' Y2UgTWFzdGVyIENsb2NrMA0GCSqGSIb3DQEBBQUAAgUA
'' SIG '' 2qRJ3TAiGA8yMDE2MDMyOTAwMjUwMVoYDzIwMTYwMzMw
'' SIG '' MDAyNTAxWjB0MDoGCisGAQQBhFkKBAExLDAqMAoCBQDa
'' SIG '' pEndAgEAMAcCAQACAgn7MAcCAQACAhdpMAoCBQDapZtd
'' SIG '' AgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkK
'' SIG '' AwGgCjAIAgEAAgMW42ChCjAIAgEAAgMHoSAwDQYJKoZI
'' SIG '' hvcNAQEFBQADggEBAJssIv9mEB+o0d/UXlpOOI6LTn4u
'' SIG '' m1dubt+bP7YAswouJL0WcCcRO95GXcEY5MWIG61ykSPJ
'' SIG '' DdbEbD0ShisXR2SNqqoe6yq1oTqRf82BEw3W7sV1GNAb
'' SIG '' s7ikeM/M1sIUX5MAH3Hu/JgqdI4BH272rDZtUfj2zrGK
'' SIG '' dRzj9AsxGM9g/gHJw+gxxjmW3rgjusG2q+98oHyFGkOL
'' SIG '' UhkcqwtfudXDuUwSgI3b1ra/GfxXPV2XOngaaJqfHfXj
'' SIG '' hCeo2yeomuawdQ81vDvaRvvZ/HWHD8O8zrWggvT4Yele
'' SIG '' 0FE0zoD4/lcTeZnN30SrFXpmgcpv5dNG+U/JKg1/Iwzs
'' SIG '' 6Dqxj1YxggL1MIIC8QIBATCBkzB8MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T
'' SIG '' dGFtcCBQQ0EgMjAxMAITMwAAAHR0zK2pPny1rAAAAAAA
'' SIG '' dDANBglghkgBZQMEAgEFAKCCATIwGgYJKoZIhvcNAQkD
'' SIG '' MQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCCJ
'' SIG '' DtHLapqEdWBJ4m3T8H7hz8FLAPFdtnAbcVzJ3HiNZTCB
'' SIG '' 4gYLKoZIhvcNAQkQAgwxgdIwgc8wgcwwgbEEFBB2Bqyi
'' SIG '' AFCEUKaVc38ZxJdOER74MIGYMIGApH4wfDELMAkGA1UE
'' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
'' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
'' SIG '' b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
'' SIG '' bWUtU3RhbXAgUENBIDIwMTACEzMAAAB0dMytqT58tawA
'' SIG '' AAAAAHQwFgQUb5Dxs17LcsDroxoAG4ZnKEgcoZYwDQYJ
'' SIG '' KoZIhvcNAQELBQAEggEAO4jlYTmD5jmypOduRU0FkZqI
'' SIG '' sRBWxyUnHNbuXMdrp0ntIH3OZKE5bArYI4Zo9nuAPKRi
'' SIG '' JPKrKMtz2Ryf0+hv4+YxdB1lf/JSSaSBvYe46V66/9f+
'' SIG '' 2aSxWNZjxRVewIagiwD7HDyR4UGTQ1OGLNbdHv+iPs+A
'' SIG '' yA5sXRIop3qDsfIJZdAeOx+DZKCsEpfAKM6xzJd0HKev
'' SIG '' 3qkmd+Q4VHoRKKmPLOwXpelDlRnsdW8XsntomsoBVEXs
'' SIG '' HdFep6oAwRkP3xL8hndE5zrrFqAsJ9kie3/9zu90VMFG
'' SIG '' /zhTsRKKhly43hymvaV9QIAEwxxtPLTM2ocJE5DPaPUK
'' SIG '' vCd5omvGEA==
'' SIG '' End signature block
