' Windows Installer utility to generate a transform from two databases
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates use of Database.GenerateTransform and MsiDatabaseGenerateTransform
'
Option Explicit

Const msiOpenDatabaseModeReadOnly     = 0
Const msiOpenDatabaseModeTransact     = 1
Const msiOpenDatabaseModeCreate       = 3

If Wscript.Arguments.Count < 2 Then
	Wscript.Echo "Windows Installer database tranform generation utility" &_
		vbNewLine & " 1st argument is the path to the original installer database" &_
		vbNewLine & " 2nd argument is the path to the updated installer database" &_
		vbNewLine & " 3rd argument is the path to the transform file to generate" &_
		vbNewLine & " If the 3rd argument is omitted, the databases are only compared" &_
		vbNewLine &_
		vbNewLine & "Copyright (C) Microsoft Corporation.  All rights reserved."
	Wscript.Quit 1
End If

' Connect to Windows Installer object
On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError

' Open databases and generate transform
Dim database1 : Set database1 = installer.OpenDatabase(Wscript.Arguments(0), msiOpenDatabaseModeReadOnly) : CheckError
Dim database2 : Set database2 = installer.OpenDatabase(Wscript.Arguments(1), msiOpenDatabaseModeReadOnly) : CheckError
Dim transform:transform = ""  'Simply compare if no output transform file supplied
If Wscript.Arguments.Count >= 3 Then transform = Wscript.Arguments(2)
Dim different:different = Database2.GenerateTransform(Database1, transform) : CheckError
If Not different Then Wscript.Echo "Databases are identical" Else If transform = Empty Then Wscript.Echo "Databases are different"

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 '' LEOvI1OL4Ms+i8VD+9Lv0JnljZ8+Z42whrFijf9Ua/Cg
'' 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 '' BgkqhkiG9w0BCQQxIgQggN866NpS7HixjtjP92kpjmQF
'' SIG '' YaHpBAujo7+KZVwNlocwWgYKKwYBBAGCNwIBDDFMMEqg
'' SIG '' JIAiAE0AaQBjAHIAbwBzAG8AZgB0ACAAVwBpAG4AZABv
'' SIG '' AHcAc6EigCBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v
'' SIG '' d2luZG93czANBgkqhkiG9w0BAQEFAASCAQBsf/qOO9de
'' SIG '' XAsy+pt+ckYx8N4DnbBHGhLqq3hStda27KNL1678VqvV
'' SIG '' /to1/ffioSdf5qCyREPjttUzg6+HVJmPF7d6v6NdRM+U
'' SIG '' sFeJV0TJH38Foislh/evgz0m/2uRqsp8SRAtJWH/xLWX
'' SIG '' hmgvMNBinHM9oYVedJQlcJ/H7Rvaov9K0qsgevPQpvHh
'' SIG '' gerG3uis2p24AILxaF2bQQu84rpWV8sS65wfOlZzzT+/
'' SIG '' rUUWPRm2tpytHOUzjsYs/ePdZbNjlF4LGPD0O+6hToOb
'' SIG '' jg3baA1CoSmGLfY1sw1UOZ6FKJwjzpx8gns2DMb0kTP6
'' SIG '' D0nthcCsWotOEDsMiaR8geAmoYITRzCCE0MGCisGAQQB
'' SIG '' gjcDAwExghMzMIITLwYJKoZIhvcNAQcCoIITIDCCExwC
'' SIG '' AQMxDzANBglghkgBZQMEAgEFADCCATwGCyqGSIb3DQEJ
'' SIG '' EAEEoIIBKwSCAScwggEjAgEBBgorBgEEAYRZCgMBMDEw
'' SIG '' DQYJYIZIAWUDBAIBBQAEIA5JxfOB5/cGardvScRxNgLU
'' SIG '' tSp6Yr7Uk5H+A+glYHsIAgZW7BsE1FsYEzIwMTYwMzI5
'' SIG '' MTExMTA3Ljk3NVowBwIBAYACAfSggbikgbUwgbIxCzAJ
'' 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 '' MQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCA8
'' SIG '' tc+RwVk1vzvygTm5iqoqSAiKuCkARgFvQms05pyqOzCB
'' SIG '' 4gYLKoZIhvcNAQkQAgwxgdIwgc8wgcwwgbEEFBB2Bqyi
'' SIG '' AFCEUKaVc38ZxJdOER74MIGYMIGApH4wfDELMAkGA1UE
'' SIG '' BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
'' SIG '' BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
'' SIG '' b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
'' SIG '' bWUtU3RhbXAgUENBIDIwMTACEzMAAAB0dMytqT58tawA
'' SIG '' AAAAAHQwFgQUb5Dxs17LcsDroxoAG4ZnKEgcoZYwDQYJ
'' SIG '' KoZIhvcNAQELBQAEggEAQk6VwYGDXLsSgUHDWluxLU9q
'' SIG '' YM0x47WbOnieMYOKFkjq29FJOfitbikLxqRxF/JEzpxb
'' SIG '' 9pqSzVljOrg9vhG3g4w14d12+GFVvO4JDpm7kfzQ5d82
'' SIG '' vbS3ZMXVhw6sIMwB77NMzLSNRJKbPQHqP+wQkoTIZ0E7
'' SIG '' piqJ6obgvZ+ggR4VZGHUJa08rlgiE3U4Z5dKzDKLVw8r
'' SIG '' oa6Q/9y7jfEu9yu/5O8rOq0iwS7eYqFXmFMp272YmYAM
'' SIG '' EBrH7kLP9XV+sk3cNEtEPfNsqN77MKwCQqraec8Rdj3V
'' SIG '' I6YLonPIygbOtPT9tU/eiSv6uFLEO8B5S1zgHzFVDGoP
'' SIG '' h/pTdZ0GAQ==
'' SIG '' End signature block
