' 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 '' MIImVQYJKoZIhvcNAQcCoIImRjCCJkICAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' LEOvI1OL4Ms+i8VD+9Lv0JnljZ8+Z42whrFijf9Ua/Cg
'' SIG '' ggtyMIIE+jCCA+KgAwIBAgITMwAABX168ttzjB8s2AAA
'' SIG '' AAAFfTANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTI0MDQyNDIwMjA0N1oX
'' SIG '' DTI1MDQxOTIwMjA0N1owfzELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEpMCcGA1UEAxMgTWljcm9zb2Z0IFdpbmRvd3MgS2l0
'' SIG '' cyBQdWJsaXNoZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
'' SIG '' DwAwggEKAoIBAQDq70XAHhp1Bzk5Sink3hOLKK4RoGVw
'' SIG '' mFv26xDMZdc92EZCzhjpva6HbqPi1tXi4wEi1w+wYRMn
'' SIG '' oe+fqoEyoivKSjKuERFoGbz67xXnlPFpjf3Q+7dZzjc5
'' SIG '' I9emBCj5IinlPNjxXX44L6Gu5uabQScPqcy96Xnv7d8w
'' SIG '' 9Hqs36epaD0hKmPFspsEm6yZEMotfYhJimrIW6q1i+Gz
'' SIG '' 77OuxKH5rGfaQxG1hDKZ0T0v8K1mGo51ik+/ITJOQMLm
'' SIG '' ToH8JZXL9WGjAWt6tP8mwgdQWLSaR5qHT1H6ElTezGkT
'' SIG '' XSNS6htmhQLwZ6bAYvOcG7TguFOoZaYIAxG2r5zgOx9Q
'' SIG '' aN5tAgMBAAGjggFuMIIBajAfBgNVHSUEGDAWBgorBgEE
'' SIG '' AYI3CgMUBggrBgEFBQcDAzAdBgNVHQ4EFgQU6W12kIJh
'' SIG '' z7jArDY6rVulZAOcFTAwRQYDVR0RBD4wPKQ6MDgxHjAc
'' SIG '' BgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEWMBQG
'' SIG '' A1UEBRMNMjI5OTAzKzUwMjIzMjAfBgNVHSMEGDAWgBTm
'' SIG '' /F97uyIAWORyTrX0IXQjMubvrDBWBgNVHR8ETzBNMEug
'' SIG '' SaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp
'' SIG '' L2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0FfMjAxMC0w
'' SIG '' Ny0wNi5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF
'' SIG '' BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
'' SIG '' L2NlcnRzL01pY0NvZFNpZ1BDQV8yMDEwLTA3LTA2LmNy
'' SIG '' dDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IB
'' SIG '' AQA0ypoeFSVk5BzVHEUkeqK1sO1jCfpIVeDCsGow8JK+
'' SIG '' 2turz2Ppmhrx3WZD1KIcllf8oiN0wZBiBC25UjNOfvRk
'' SIG '' MShOkLEj175n2yLa6i3/MIRyLleBClzY37z4fEQ1fdPG
'' SIG '' nyYMiv7J8Rs+QHXP34A940wJsxlnq1IwErtwaffSOmrU
'' SIG '' yLp4Yk05nkvekFJpprPC3QTuow2ONyMZVD1Wj+icbD3W
'' SIG '' Id8wPGPcgcetGIkMVQEGjj+fcLyrWI4gXnrAfdgCQEP7
'' SIG '' qNvg+3nN7VBNIJ4YsH97JhBc09X7DfVjUKlrzXFfEQl6
'' SIG '' POqf4tM/jNrEgtKUQvUOAWuTZHR0wUzp8GEPMIIGcDCC
'' SIG '' BFigAwIBAgIKYQxSTAAAAAAAAzANBgkqhkiG9w0BAQsF
'' SIG '' ADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
'' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
'' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMp
'' SIG '' TWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y
'' SIG '' aXR5IDIwMTAwHhcNMTAwNzA2MjA0MDE3WhcNMjUwNzA2
'' SIG '' MjA1MDE3WjB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
'' SIG '' V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
'' SIG '' A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYD
'' SIG '' VQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAy
'' SIG '' MDEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
'' SIG '' AQEA6Q5kUHlntcTj/QkATJ6UrPdWaOpE2M/FWE+ppXZ8
'' SIG '' bUW60zmStKQe+fllguQX0o/9RJwI6GWTzixVhL99COMu
'' SIG '' K6hBKxi3oktuSUxrFQfe0dLCiR5xlM21f0u0rwjYzIjW
'' SIG '' axeUOpPOJj/s5v40mFfVHV1J9rIqLtWFu1k/+JC0K4N0
'' SIG '' yiuzO0bj8EZJwRdmVMkcvR3EVWJXcvhnuSUgNN5dpqWV
'' SIG '' XqsogM3Vsp7lA7Vj07IUyMHIiiYKWX8H7P8O7YASNUwS
'' SIG '' pr5SW/Wm2uCLC0h31oVH1RC5xuiq7otqLQVcYMa0Kluc
'' SIG '' IxxfReMaFB5vN8sZM4BqiU2jamZjeJPVMM+VHwIDAQAB
'' SIG '' o4IB4zCCAd8wEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0O
'' SIG '' BBYEFOb8X3u7IgBY5HJOtfQhdCMy5u+sMBkGCSsGAQQB
'' SIG '' gjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAP
'' SIG '' BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP
'' SIG '' 6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeG
'' SIG '' RWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3Js
'' SIG '' L3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIz
'' SIG '' LmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKG
'' SIG '' Pmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2Vy
'' SIG '' dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MIGd
'' SIG '' BgNVHSAEgZUwgZIwgY8GCSsGAQQBgjcuAzCBgTA9Bggr
'' SIG '' BgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
'' SIG '' L1BLSS9kb2NzL0NQUy9kZWZhdWx0Lmh0bTBABggrBgEF
'' SIG '' BQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBQAG8AbABpAGMA
'' SIG '' eQBfAFMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkqhkiG
'' SIG '' 9w0BAQsFAAOCAgEAGnTvV08pe8QWhXi4UNMi/AmdrIKX
'' SIG '' +DT/KiyXlRLl5L/Pv5PI4zSp24G43B4AvtI1b6/lf3mV
'' SIG '' d+UC1PHr2M1OHhthosJaIxrwjKhiUUVnCOM/PB6T+DCF
'' SIG '' F8g5QKbXDrMhKeWloWmMIpPMdJjnoUdD8lOswA8waX/+
'' SIG '' 0iUgbW9h098H1dlyACxphnY9UdumOUjJN2FtB91TGcun
'' SIG '' 1mHCv+KDqw/ga5uV1n0oUbCJSlGkmmzItx9KGg5pqdfc
'' SIG '' wX7RSXCqtq27ckdjF/qm1qKmhuyoEESbY7ayaYkGx0aG
'' SIG '' ehg/6MUdIdV7+QIjLcVBy78dTMgW77Gcf/wiS0mKbhXj
'' SIG '' pn92W9FTeZGFndXS2z1zNfM8rlSyUkdqwKoTldKOEdqZ
'' SIG '' Z14yjPs3hdHcdYWch8ZaV4XCv90Nj4ybLeu07s8n07Ve
'' SIG '' afqkFgQBpyRnc89NT7beBVaXevfpUk30dwVPhcbYC/GO
'' SIG '' 7UIJ0Q124yNWeCImNr7KsYxuqh3khdpHM2KPpMmRM19x
'' SIG '' HkCvmGXJIuhCISWKHC1g2TeJQYkqFg/XYTyUaGBS79ZH
'' SIG '' maCAQO4VgXc+nOBTGBpQHTiVmx5mMxMnORd4hzbOTsNf
'' SIG '' svU9R1O24OXbC2E9KteSLM43Wj5AQjGkHxAIwlacvyRd
'' SIG '' UQKdannSF9PawZSOB3slcUSrBmrm1MbfI5qWdcUxgho7
'' SIG '' MIIaNwIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEGA1UE
'' SIG '' CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
'' SIG '' MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgw
'' SIG '' JgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD
'' SIG '' QSAyMDEwAhMzAAAFfXry23OMHyzYAAAAAAV9MA0GCWCG
'' SIG '' SAFlAwQCAQUAoIHGMBkGCSqGSIb3DQEJAzEMBgorBgEE
'' SIG '' AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3
'' SIG '' AgEVMC8GCSqGSIb3DQEJBDEiBCCA3zro2lLseLGO2M/3
'' SIG '' aSmOZAVhoekEC6Ojv4plXA2WhzBaBgorBgEEAYI3AgEM
'' SIG '' MUwwSqAkgCIATQBpAGMAcgBvAHMAbwBmAHQAIABXAGkA
'' SIG '' bgBkAG8AdwBzoSKAIGh0dHA6Ly93d3cubWljcm9zb2Z0
'' SIG '' LmNvbS93aW5kb3dzMA0GCSqGSIb3DQEBAQUABIIBAIJ8
'' SIG '' LriYb/reZ0FuOQrCi2YszB7uF3aAJ1OoS1b269eJvlOC
'' SIG '' ppRCa4bliFT8nAr05xKcVc0pcvrGzccJuoNKRouIXEnj
'' SIG '' 8UMTLgI+03hbcSLij92FyyD9a44odFdwaHy/hdqQCmdR
'' SIG '' JP/cMTT5DLsaeeZx7OqAYKUTNkks8gj6nEC4qUwtZqhF
'' SIG '' aW1n1wdOBLJlgFMBwLF6nntnlr3kFjjKKYs8z8NN4bul
'' SIG '' AhxP3QwgULroiq1jpMnBVMXvapGERlTUBCpXHvV3M5di
'' SIG '' LpdAylW3GjAryVN3nVmaQ6C8jcx9Ys7unLKcUDjVn/47
'' SIG '' t7fHnIJyfohGQ7FSmevepWKsJfW+dRahghetMIIXqQYK
'' SIG '' KwYBBAGCNwMDATGCF5kwgheVBgkqhkiG9w0BBwKggheG
'' SIG '' MIIXggIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBWgYLKoZI
'' SIG '' hvcNAQkQAQSgggFJBIIBRTCCAUECAQEGCisGAQQBhFkK
'' SIG '' AwEwMTANBglghkgBZQMEAgEFAAQgYakBYvFbs8CROQ1J
'' SIG '' NhLMXkpgtXVoN5b1EJEF66LrRugCBme/tmdKDBgTMjAy
'' SIG '' NTAzMTIxMzE0MjEuNDA4WjAEgAIB9KCB2aSB1jCB0zEL
'' SIG '' MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
'' SIG '' EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
'' SIG '' c29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9z
'' SIG '' b2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMScw
'' SIG '' JQYDVQQLEx5uU2hpZWxkIFRTUyBFU046NTUxQS0wNUUw
'' SIG '' LUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0
'' SIG '' YW1wIFNlcnZpY2WgghH7MIIHKDCCBRCgAwIBAgITMwAA
'' SIG '' AgHRRVmYEMxCTwABAAACATANBgkqhkiG9w0BAQsFADB8
'' SIG '' MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
'' SIG '' bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
'' SIG '' cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNy
'' SIG '' b3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0yNDA3
'' SIG '' MjUxODMxMjJaFw0yNTEwMjIxODMxMjJaMIHTMQswCQYD
'' SIG '' VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
'' SIG '' A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQg
'' SIG '' SXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNV
'' SIG '' BAsTHm5TaGllbGQgVFNTIEVTTjo1NTFBLTA1RTAtRDk0
'' SIG '' NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAg
'' SIG '' U2VydmljZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
'' SIG '' AgoCggIBALVq3/h8w7u7JOdMuWB4XgiCRtLsUUhRXBzX
'' SIG '' pPk3fWZsiY9tBBI2lPCQybuaVnOKTwLASN/DRACdW/ig
'' SIG '' Z5UralPLr1xeKpxEoQ3YvJz7GWULE2QylgIFDNomUzol
'' SIG '' iLmXBbOWQvP/hpa1SzOYdWPZ3zIeQeA51EDlzK3pgE/T
'' SIG '' JL1IYN7mmIJqi5ZmMjg5m2uJV2QbtdOEiwBbFzn5f0y4
'' SIG '' aU6E+Osu5SPbGyPbqt/wHq4d2j4tpJx7xBGs4pV3qKFz
'' SIG '' SwsHbviLOqPJEC6LlJ9ysFEJtG+2lLbL9V/zoD5rDiYu
'' SIG '' sjdy2FshyEr6zbiKyeImDYB3QQbpkGCvC42ZkGkyhWnM
'' SIG '' YZlydKtoM2iH8RdsiMDPlfbEKpB5IP0PokgzaTK+pq/z
'' SIG '' sJJzhCIyNIOmTDspor6QocwzaD8/YZCt4FR2SluzVfPl
'' SIG '' AVzeBtGgV+vXylG8QQS8pNnAvj4TqFI5JelAvP3NIbqo
'' SIG '' +cV/JvmFSJPNXu7eiPlfxOMl0XnmYK9BYWKjab04xnGj
'' SIG '' tlq5D+V5rGEuyLzDyH+AwsiCVGWqqATE6ACSRxkXvgz6
'' SIG '' gh4Om5hj5vezKzlr9evwqOkvXEA5F6fbzEkkUFl8uCrS
'' SIG '' YWX5rg89r69Y8ODXoscLiAxsNZrVf03UiPr6SyX1Ii5f
'' SIG '' 2/cP7SQfdgQC0E/HtWB/DaYXTqNcQsJHAgMBAAGjggFJ
'' SIG '' MIIBRTAdBgNVHQ4EFgQUsHKvW5ai6Dz4la8pvZhZhVm8
'' SIG '' slIwHwYDVR0jBBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ
'' SIG '' 6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0cDovL3d3dy5t
'' SIG '' aWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0
'' SIG '' JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3Js
'' SIG '' MGwGCCsGAQUFBwEBBGAwXjBcBggrBgEFBQcwAoZQaHR0
'' SIG '' cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0
'' SIG '' cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIw
'' SIG '' MjAxMCgxKS5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUB
'' SIG '' Af8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4Aw
'' SIG '' DQYJKoZIhvcNAQELBQADggIBADo0AMs9HFc7UxRql1+S
'' SIG '' S0cRSvzv6DHuebg6hAvFXdYG3DNvCgVD4L1CD15v73Qz
'' SIG '' diFQZFh5sAqeACHMuHWbZLlJndH57umk/TL6NZ3bC6dm
'' SIG '' CXDKBSxLd07a4i2jvouBq79GVC7Vl1DwFvzJ+UnI4J9M
'' SIG '' WXbhjwQ/17Nye/oHrffvGbwYqbIPze6aIpmDlbB8S3Hp
'' SIG '' u1eV3TDbMrU5v7gqJoTP8IEeSpQ2E1TQFwcXEijHiWog
'' SIG '' 91dfh4TZFZYjJeVTj/p8OcVheebvYenhdhu3gT6k/qkh
'' SIG '' UPq0AkHSKzdMhtUDfTya6ILivhSUCXUM3Xw90VlbHIgc
'' SIG '' oG2GmZU9XBiSNSMkO+A0NFAXU6X3hrMqxEPTyPEMqlS6
'' SIG '' m9quy7SOgyTDaYWLvo6//9LKa9VFb8gz7bkZ2xkETYtQ
'' SIG '' jsCXI/TmJpZBYCjXgn2w0+1N7hDr1qJnpF+tGP5ubrUX
'' SIG '' FD1XgD3YZAfg8Q2nr9ydcsAzXcrvddZwFT4EZMioDCt1
'' SIG '' Eixt+xHZWrQ5PBcrgq8eLYh8qhzt8BOsT8N9kPHv75rk
'' SIG '' D6AWbl96lHqBSLMmRHpx6tknDLp4XKlt9klFQIuaGeGd
'' SIG '' 53+3QIDWrttTRD8IFvtsJKzag4Ox6fMh8qDim4BAbukR
'' SIG '' EG70n2eSoeD1fktoMX9rquhqGA55agATjGMM99PSEotG
'' SIG '' zzIfMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAA
'' SIG '' AAAAFTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC
'' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
'' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
'' SIG '' b3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3Qg
'' SIG '' Q2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjEw
'' SIG '' OTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYD
'' SIG '' VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
'' SIG '' A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
'' SIG '' VGltZS1TdGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcN
'' SIG '' AQEBBQADggIPADCCAgoCggIBAOThpkzntHIhC3miy9ck
'' SIG '' eb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az
'' SIG '' /1xPx2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhg
'' SIG '' fWpSg0S3po5GawcU88V29YZQ3MFEyHFcUTE3oAo4bo3t
'' SIG '' 1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oaezOt
'' SIG '' gFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k
'' SIG '' 45GPsjksUZzpcGkNyjYtcI4xyDUoveO0hyTD4MmPfrVU
'' SIG '' j9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7KMtXAhjBc
'' SIG '' TyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDP
'' SIG '' c31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXftnIv231fgLrb
'' SIG '' qn427DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSCD/AQ8rdH
'' SIG '' GO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRR
'' SIG '' RuLRvWoYWmEBc8pnol7XKHYC4jMYctenIPDC+hIK12Nv
'' SIG '' DMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh8zYGNRiER9vc
'' SIG '' G9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUX
'' SIG '' k8A8FdsaN8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q
'' SIG '' 4i6tAgMBAAGjggHdMIIB2TASBgkrBgEEAYI3FQEEBQID
'' SIG '' AQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1
'' SIG '' Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacb
'' SIG '' UzUZ6XIwXAYDVR0gBFUwUzBRBgwrBgEEAYI3TIN9AQEw
'' SIG '' QTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3Nv
'' SIG '' ZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt
'' SIG '' MBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQBgjcU
'' SIG '' AgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNV
'' SIG '' HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJc
'' SIG '' YmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0
'' SIG '' dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3By
'' SIG '' b2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNy
'' SIG '' bDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0
'' SIG '' dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMv
'' SIG '' TWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqG
'' SIG '' SIb3DQEBCwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8
'' SIG '' qW/qXBS2Pk5HZHixBpOXPTEztTnXwnE2P9pkbHzQdTlt
'' SIG '' uw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJW
'' SIG '' AAOwBb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVt
'' SIG '' I1TkeFN1JFe53Z/zjj3G82jfZfakVqr3lbYoVSfQJL1A
'' SIG '' oL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/AyeixmJ
'' SIG '' 5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKp
'' SIG '' W99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZlvSP9pEB9s7G
'' SIG '' dP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgssU5H
'' SIG '' LcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZ
'' SIG '' kWsNn6Qo3GcZKCS6OEuabvshVGtqRRFHqfG3rsjoiV5P
'' SIG '' ndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p/cvBQUl+
'' SIG '' fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue1
'' SIG '' 0CgaiQuPNtq6TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAn
'' SIG '' Qj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784cETRkPHIqzqK
'' SIG '' Oghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGC
'' SIG '' A1YwggI+AgEBMIIBAaGB2aSB1jCB0zELMAkGA1UEBhMC
'' SIG '' VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
'' SIG '' B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
'' SIG '' b3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxh
'' SIG '' bmQgT3BlcmF0aW9ucyBMaW1pdGVkMScwJQYDVQQLEx5u
'' SIG '' U2hpZWxkIFRTUyBFU046NTUxQS0wNUUwLUQ5NDcxJTAj
'' SIG '' BgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZp
'' SIG '' Y2WiIwoBATAHBgUrDgMCGgMVANftunEf8h9dNA4jRRlo
'' SIG '' bgL9q2AaoIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAg
'' SIG '' UENBIDIwMTAwDQYJKoZIhvcNAQELBQACBQDrfAAPMCIY
'' SIG '' DzIwMjUwMzEyMTI0MzU5WhgPMjAyNTAzMTMxMjQzNTla
'' SIG '' MHQwOgYKKwYBBAGEWQoEATEsMCowCgIFAOt8AA8CAQAw
'' SIG '' BwIBAAICDJYwBwIBAAICEm8wCgIFAOt9UY8CAQAwNgYK
'' SIG '' KwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAKMAgC
'' SIG '' AQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQsF
'' SIG '' AAOCAQEAhPUTtPvYVdH+i1urnNEEyDgXgvB0Z10jm9Vv
'' SIG '' 0r2b2tWpV+A96r1GZaA0f1jvq+3uS3X37uMbYE7Cg2mU
'' SIG '' eAGEsOBG9vSqA5zQNA/DaGXQk2GCXDp+paxa0tIn5Nbv
'' SIG '' 0qWhQtDTi6NZIJkFkVxOy4AfuaoufmxRJsv6YjEceGes
'' SIG '' OUkQvMap+0uWnOLxqJMH9Rp50BPgCb2W0M1hBEcDz1Wg
'' SIG '' dfOgOWsPifb8a9FeR5UVnWi5DLi0vUaYfzA2BuBQ7RD1
'' SIG '' oSaxioBnqtDg1hydsqGH3bsVdWh2hPRGoPB5Z1bP/hHH
'' SIG '' Jb6dMfKlxjLkr2iaKUh2iS+uUPuui4PJUkSxUqKxeTGC
'' SIG '' BA0wggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYD
'' SIG '' VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
'' SIG '' MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
'' SIG '' JjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
'' SIG '' QSAyMDEwAhMzAAACAdFFWZgQzEJPAAEAAAIBMA0GCWCG
'' SIG '' SAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZI
'' SIG '' hvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIMhymX+Y4sEG
'' SIG '' 550z1vh6lbL6TxvZfEXxogn+8GQZ67CMMIH6BgsqhkiG
'' SIG '' 9w0BCRACLzGB6jCB5zCB5DCBvQQgWGuyOkyUEXJsdB2k
'' SIG '' k1mXSYKMHa5ffma69KSHah7XOCMwgZgwgYCkfjB8MQsw
'' SIG '' CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
'' SIG '' MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
'' SIG '' b2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3Nv
'' SIG '' ZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAgHRRVmY
'' SIG '' EMxCTwABAAACATAiBCB6xkT4MCL9k/E+Bt3sjvFUKDUe
'' SIG '' DjGgiB/AyH9ELSkTwjANBgkqhkiG9w0BAQsFAASCAgA9
'' SIG '' qLhwlxgmA6sqavFlpuRbCPWwTV9SR7UAEPimI/6W4+f3
'' SIG '' v4732GVTtNMp1jKO/wviAGUKRkGnYRQxVi+RwJC4JNcQ
'' SIG '' 7UPxAhghK5u3vxojrH8ejPH7GFbmY9ZeSJ6GvZbT0m8G
'' SIG '' 2CrVMvStEGMeUpaXZV3KHYiEV7v8nhg0tzsu1nDGZ9+5
'' SIG '' dSFUlx3ILHdoHgJ/j8/dg5xofYzH+NudQxfqTw6rVnOL
'' SIG '' OZhEOXzvhXfJUlInpJ5vtqazmCHxzVW3EEg8mObdXvxA
'' SIG '' c8K/B9aJ3i/vNE/C1cTtNISii3QvG+6MKxXh7KMo3Oh1
'' SIG '' YLTClzMdZHaUYtNVUQR/h6dXl+SOl2mpkEQJ9aCjQZPC
'' SIG '' hXiOvG0QlUiK+XovkJfaIhiCq0muq2+5wbrzKFnbecFv
'' SIG '' VPvzblT70nrU1fhbur2AyU3OJ8kFWGB62jtPn2jxxz9Z
'' SIG '' mqanf3V0GltqtF2HjUFmC3hG+EPebFlVfk8sLataEsG1
'' SIG '' ESLVGtxfinM44xLwLueDebRDnGAk2McvaeCaT31oxlKt
'' SIG '' AV2Yf0Y94CjA5kDujXFmsTl3sP7kYbdijzymGYsYhvtm
'' SIG '' 8ntqKGiqEw5UdPvnOr4z90WciZGP1g2ZbMHD0qtSFnEp
'' SIG '' OOlJcN0TSSPDAbb9JKK94eB5pW36ToAI+GaSoy+J7gOZ
'' SIG '' p9aOeJp2KkKU1VLv4u9GRw==
'' SIG '' End signature block
