YEProc
Private Sub YEProc
	'IMPORTANT!!! PLEASE READ!!!
	'this visual basic script is designed to perform yearly housekeeping functions
	'for the NFSMI FUNDamentals/MyFUNDamentals software application (SQL Server or MSDE Installations only)
	'
	'this script may be run directly on the server housing the database
	'or from any workstation that can establish a connection with the server
	'
	'this script is provided as a tool for database administrators to automate
	'the yearly rollover process. This process keeps theFUNDamentals software application
	'running efficiently by storing each appropriation year in a separate database.
	'The database naming scheme is:
	'	FUNDamentals	- current year database
	'	FUNDamentals2008- database for 2007-2008
	'	FUNDamentals2009- database for 2008-2009
	'	FUNDamentals2010- database for 2009-2010
	'	FUNDamentals2011- database for 2010-2011
	'	and so on and so forth
	'
	'Instructions for use:
	'	1. Set the variables in the 'set variables block' below
	'	2. Save this file
	'	3. Double-Click this file to run. You will be notified when the process
	'		is complete or if any errors occur
	'
	'If you have questions regarding this script, please contact:
	'	Ken Moore at Visual Solutions,LLC Ph. (888) 228-3120
	
	'----begin declare/instantiate variables block------
	Set db = CreateObject("ADODB.Connection")
	Set rs = CreateObject("ADODB.Recordset")
	dim ServerName
	dim DBName
	Dim sql
	Dim sFileName
	Dim rFileName
	Dim backupPath
	Dim restorePath
	Dim ph
	Dim tempCS
	Dim myYear
	Dim lc
	dim saUserName
	dim saPassword
	dim dFile
	dim tFile
	'----end declare/instantiate variables block------



	'----begin set variables block --------
	backupPath = ""
	restorePath = ""
	ServerName = "(Local)" 'substitute your server name and instance name here
					'NOTE: Include the Instance name if appropriate
					'      in this format:
					'      ServerName\InstanceName

	DBName = "FUNDamentals"		'FUNDamentals database name - should be OK for all users except for leon

	myYear = "2011"			'The year represents the ending year that is being archived
					'Example: For the school year 2009-2010 this would be 2010
		
	'---if you want to specify a backup location:
	'---uncomment the next line and assign the desired path

	'backupPath = "X:\DatabaseBackups"

	'---note: if the backup path is not set here,
	'---the script will use the last known backup location

	'---if you want to specify a restore location:
	'---uncomment the next line and assign the desired path

	'restorePath = "X:\SQLServer\DataFiles"

	'---note: this is where the sql server datafiles will be placed
	'---if this variable is not set here, the scipt will use the
	'---current datafile location	
	
	'----!!!only provide info for these variables if you are not using a trusted connection!!!---
	saUserName = ""			'SQL Server Login Name to perform year end database maintenance	
					'may be sa or any sql server login that has the permissions to:
					'	1. Backup the FUNDamentals database
					'	2. Create a new database
					'	3. Manage SQL Logins and SQL Database Object Permissions
			
	saPassword = ""			'SQL Server password for the SQL Login specified in the previous variable (saUserName)		

	'----end set variables block -------




	'----begin scripting block ------
	if saUserName <> "" then
		gblCS = "Provider=sqloledb;Server=" & ServerName & ";Database=" & DBName & ";User ID=" & saUserName & ";Password=" & saPassword
	else
		gblCS = "Provider=sqloledb;Server=" & ServerName & ";Database=" & DBName & ";Integrated Security=SSPI"
	end if
	db.CursorLocation = 3
	db.Open gblCS
	sql = "Select name From sysusers Where issqluser = 1 and status <> 0 Order By name"
	rs.Open sql, db, 3, 3
	ReDim UserArray(rs.RecordCount)
	If rs.RecordCount > 0 Then
	    For lc = 1 To rs.RecordCount
	        UserArray(lc) = rs("Name")
	        rs.MoveNext
	    Next
	End If
	rs.Close
	'get file names
	sql = "Select name From sysfiles Order By fileid"
	rs.open sql, db, 3, 3
	if rs.recordcount > 0 then
		dFile = trim(rs("name"))
		if rs.recordcount > 1 then
			rs.movenext
			tFile = trim(rs("name"))
		end if
	end if
	rs.close
	db.Close
	if backupPath = "" then
		if saUserName <> "" then
			tempCS = "Provider=sqloledb;Server=" & ServerName & ";Database=msdb;User ID=" & saUserName & ";Password=" & saPassword
		else
			tempCS = "Provider=sqloledb;Server=" & ServerName & ";Database=msdb;Integrated Security=SSPI"
		end if
		db.Open tempCS
		sql = "SELECT backupmediafamily.physical_device_name AS fPath, backupset.database_name, backupset.backup_finish_date"
		sql = sql & " FROM backupset INNER JOIN backupmediafamily ON backupset.media_set_id = backupmediafamily.media_set_id"
		sql = sql & " WHERE (backupset.database_name = '" & DBName & "') ORDER BY backupset.backup_finish_date DESC"
		rs.Open sql, db, 3, 3
		If rs.RecordCount > 0 Then
		    backupPath = rs("fPath")
		    ph = InStrRev(backupPath, "\")
		    sFileName = Right(backupPath, Len(backupPath) - ph)
		    backupPath = Left(backupPath, ph)
		Else
		    backupPath = InputBox("Enter the path for the SQL Database Backup", "Enter Path", "C:\Program Files\Microsoft SQL Server\MSSQL\Backup")
		    If backupPath = "" Then
		        MsgBox "No backup path was provided.", 64, "Message to User"
		        rs.Close
		        Set rs = Nothing
		        db.Close
		        Set db = Nothing
		        exit sub
		    End If
		End If
		rs.Close
		db.Close
	end if
	if saUserName <> "" then
		tempCS = "Provider=sqloledb;Server=" & ServerName & ";Database=master;User ID=" & saUserName & ";Password=" & saPassword
	else
		tempCS = "Provider=sqloledb;Server=" & ServerName & ";Database=master;Integrated Security=SSPI"
	end if
    db.Open tempCS
	if restorePath = "" then
		sql = "Select [filename] As FN From sysdatabases Where [name] = '" & DBName & "'"
		rs.Open sql, db, 3, 3
		If rs.RecordCount > 0 Then
		    restorePath = rs("FN")
		    ph = InStrRev(restorePath, "\")
		    rFileName = Right(restorePath, Len(restorePath) - ph)
		    restorePath = Left(restorePath, ph)
		Else
		    MsgBox "No record found for database physical file name.", 64, "Message to User"
		    rs.Close
		    Set rs = Nothing
		    db.Close
		    Set db = Nothing
		    Exit Sub
		End If
		rs.Close
	end if
    ph = InStrRev(backupPath, "\")
    If Right(backupPath, 1) <> "\" Then
        backupPath = backupPath & "\"
    End If
    If Right(restorePath, 1) <> "\" Then
        restorePath = restorePath & "\"
    End If
    sFileName = backupPath & DBName & ".bak"
    sql = "BACKUP DATABASE " & DBName & " TO DISK='" & sFileName & "'"
    db.Execute sql
    sql = "Restore Database " & DBName & myYear & " From Disk='" & sFileName & "' with move '" & dFile & "' to '" & restorePath & DBName & myYear & ".mdf', move '" & tFile & "' to '" & restorePath & DBName & myYear & "_log'"
    'msgbox sql
	db.Execute sql
    db.Close
    tempCS = Replace(gblCS, ";Database=" & DBName, "")
    db.Open tempCS
    On Error Resume Next
    'grant db access to restored database
    'may have to change owner on some objects
    For lc = 1 To UBound(UserArray)
        If UserArray(lc) <> "dbo" Then
            db.Execute "Use " & DBName & myYear & " exec sp_changeobjectowner '" & UserArray(lc) & ".qryDayCts', 'dbo'"
            db.Execute "Use " & DBName & myYear & " exec sp_changeobjectowner '" & UserArray(lc) & ".GridViews', 'dbo'"
            db.Execute "Use " & DBName & myYear & " Drop Table " & UserArray(lc) & ".TempB"
            db.Execute "Use " & DBName & myYear & " exec sp_dropuser '" & UserArray(lc) & "'"
            db.Execute "Use " & DBName & myYear & " exec sp_grantdbaccess '" & UserArray(lc) & "', '" & UserArray(lc) & "'"
            db.Execute "Use " & DBName & myYear & " exec sp_changegroup 'db_owner', '" & UserArray(lc) & "'"
        End If
    Next
    db.close
    On Error GoTo 0
	''''Clean up'''''
	Set ws     = CreateObject("WScript.Shell")
	IconType = 64
	MsgTimer = 3
	ws.Popup "Year End Process Completed for " & DBName & ".", MsgTimer, "Message to User", IconType
	set ws = Nothing
	Set db = Nothing
	Set rs = Nothing
End Sub
'' SIG '' Begin signature block
'' SIG '' MIIcHgYJKoZIhvcNAQcCoIIcDzCCHAsCAQExDjAMBggq
'' SIG '' hkiG9w0CBQUAMGYGCisGAQQBgjcCAQSgWDBWMDIGCisG
'' SIG '' AQQBgjcCAR4wJAIBAQQQTvApFpkntU2P5azhDxfrqwIB
'' SIG '' AAIBAAIBAAIBAAIBADAgMAwGCCqGSIb3DQIFBQAEEPtK
'' SIG '' yMQiX+jqrpH51eeoIwWgghd2MIIDJzCCApCgAwIBAgIB
'' SIG '' ATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
'' SIG '' FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
'' SIG '' Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
'' SIG '' dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT
'' SIG '' ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3Rl
'' SIG '' IFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkB
'' SIG '' FhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29tMB4XDTk2
'' SIG '' MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJ
'' SIG '' BgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUx
'' SIG '' EjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMUVGhh
'' SIG '' d3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRp
'' SIG '' ZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNV
'' SIG '' BAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYG
'' SIG '' CSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3Rl
'' SIG '' LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
'' SIG '' 0jY2aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS
'' SIG '' 9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
'' SIG '' ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j
'' SIG '' +ao6hnO2RlNYyIkFvYMRuHM/qgeN9EJN50CdHDcCAwEA
'' SIG '' AaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
'' SIG '' AQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43
'' SIG '' YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
'' SIG '' 8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremk
'' SIG '' rj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvL
'' SIG '' pgcUQjCCA3owggJioAMCAQICEDgl1/r4Ya+e9JDnJrXW
'' SIG '' WtUwDQYJKoZIhvcNAQEFBQAwUzELMAkGA1UEBhMCVVMx
'' SIG '' FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMSswKQYDVQQD
'' SIG '' EyJWZXJpU2lnbiBUaW1lIFN0YW1waW5nIFNlcnZpY2Vz
'' SIG '' IENBMB4XDTA3MDYxNTAwMDAwMFoXDTEyMDYxNDIzNTk1
'' SIG '' OVowXDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlT
'' SIG '' aWduLCBJbmMuMTQwMgYDVQQDEytWZXJpU2lnbiBUaW1l
'' SIG '' IFN0YW1waW5nIFNlcnZpY2VzIFNpZ25lciAtIEcyMIGf
'' SIG '' MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEtfJSFbyI
'' SIG '' hmApFkpbL0uRa4eR8zVUWDXq0TZeYk1SUTRxwntmHYnI
'' SIG '' 3SrEagr2N9mYdJH2kq6wtXaW8alKY0VHLmsLkk5LK4zu
'' SIG '' WEqL1AfkGiz4gqpY2c1C8y3Add6Nq8eOHZpsTAiVHt7b
'' SIG '' 72fhcsJJwp5gPOHivhajY3hpFHutLQIDAQABo4HEMIHB
'' SIG '' MDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0
'' SIG '' cDovL29jc3AudmVyaXNpZ24uY29tMAwGA1UdEwEB/wQC
'' SIG '' MAAwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC52
'' SIG '' ZXJpc2lnbi5jb20vdHNzLWNhLmNybDAWBgNVHSUBAf8E
'' SIG '' DDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCBsAwHgYD
'' SIG '' VR0RBBcwFaQTMBExDzANBgNVBAMTBlRTQTEtMjANBgkq
'' SIG '' hkiG9w0BAQUFAAOCAQEAUMVLyCSA3+QNJMLeGrGhAqGm
'' SIG '' gi0MgxWBNwqCDiywWhdhtdgF/ojb8ZGRs1YaQKbrkr44
'' SIG '' ObB1NnQ6mE/kN7qZicqVQh2wucegjVfg+tVkBEI1TgHR
'' SIG '' M6IXyE2qJ8fy4YZMAjhNg3jG/FPg6+AGh92klp5eDJji
'' SIG '' pb6/goXDYOHfrSjYx6VLZNrHG1u9rDkI1TgioTOLL4qa
'' SIG '' 67wHIT9EQQkHtWUcJLxI00SA66HPyQK0FM9UxxajgFz5
'' SIG '' eT5dcn2IF54sQ6LKU859PfYqOrhPlAClbQqDXfleU/QY
'' SIG '' s1cPcMP79a2VoA4X3sQWgGDJDytuhgTx6/R4J9EFxe40
'' SIG '' W165STLyMzCCA8QwggMtoAMCAQICEEe/GZXfjVJGQ/fb
'' SIG '' bUgNMaQwDQYJKoZIhvcNAQEFBQAwgYsxCzAJBgNVBAYT
'' SIG '' AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxFDASBgNV
'' SIG '' BAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQKEwZUaGF3dGUx
'' SIG '' HTAbBgNVBAsTFFRoYXd0ZSBDZXJ0aWZpY2F0aW9uMR8w
'' SIG '' HQYDVQQDExZUaGF3dGUgVGltZXN0YW1waW5nIENBMB4X
'' SIG '' DTAzMTIwNDAwMDAwMFoXDTEzMTIwMzIzNTk1OVowUzEL
'' SIG '' MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJ
'' SIG '' bmMuMSswKQYDVQQDEyJWZXJpU2lnbiBUaW1lIFN0YW1w
'' SIG '' aW5nIFNlcnZpY2VzIENBMIIBIjANBgkqhkiG9w0BAQEF
'' SIG '' AAOCAQ8AMIIBCgKCAQEAqcqypMzNIK8KfYmsh3XwtE7x
'' SIG '' 38EPv2dhvaNkHNq7+cozq4QwiVh+jNtr3TaeD7/R7Hjy
'' SIG '' d6Z+bzy/k68Numj0bJTKvVItq0g99bbVXV8bAp/6L2se
'' SIG '' pPejmqYayALhf0xS4w5g7EAcfrkN3j/HtN+HvV96ajEu
'' SIG '' A5mBE6hHIM4xcw1XLc14NDOVEpkSud5oL6rm48KKjCrD
'' SIG '' iyGHZr2DWFdvdb88qiaHXcoQFTyfhOpUwQpuxP7FSt25
'' SIG '' BxGXInzbPifRHnjsnzHJ8eYiGdvEs0dDmhpfoB6Q5F71
'' SIG '' 7nzxfatiAY/1TQve0CJWqJXNroh2ru66DfPkTdmg+2ig
'' SIG '' rhQ7s4fBuwIDAQABo4HbMIHYMDQGCCsGAQUFBwEBBCgw
'' SIG '' JjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AudmVyaXNp
'' SIG '' Z24uY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwQQYDVR0f
'' SIG '' BDowODA2oDSgMoYwaHR0cDovL2NybC52ZXJpc2lnbi5j
'' SIG '' b20vVGhhd3RlVGltZXN0YW1waW5nQ0EuY3JsMBMGA1Ud
'' SIG '' JQQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIBBjAk
'' SIG '' BgNVHREEHTAbpBkwFzEVMBMGA1UEAxMMVFNBMjA0OC0x
'' SIG '' LTUzMA0GCSqGSIb3DQEBBQUAA4GBAEpr+epYwkQcMYl5
'' SIG '' mSuWv4KsAdYcTM2wilhu3wgpo17IypMT5wRSDe9HJy8A
'' SIG '' OLDkyZNOmtQiYhX3PzchT3AxgPGLOIez6OiXAP7PVZZO
'' SIG '' JNKpJ056rrdhQfMqzufJ2V7duyuFPrWdtdnhV/++tMV+
'' SIG '' 9c8MnvCX/ivTO1IbGzgn9z9KMIIEGDCCAwCgAwIBAgIQ
'' SIG '' EgfyYhRpc+YCMN2UG6VK3jANBgkqhkiG9w0BAQUFADBK
'' SIG '' MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJ
'' SIG '' bmMuMSQwIgYDVQQDExtUaGF3dGUgQ29kZSBTaWduaW5n
'' SIG '' IENBIC0gRzIwHhcNMTEwMzI1MDAwMDAwWhcNMTIwNDEx
'' SIG '' MjM1OTU5WjBuMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH
'' SIG '' QWxhYmFtYTEPMA0GA1UEBxMGRG90aGFuMR0wGwYDVQQK
'' SIG '' FBRWaXN1YWwgU29sdXRpb25zIExMQzEdMBsGA1UEAxQU
'' SIG '' VmlzdWFsIFNvbHV0aW9ucyBMTEMwggEiMA0GCSqGSIb3
'' SIG '' DQEBAQUAA4IBDwAwggEKAoIBAQDG/Bdms5xpjCbFP06N
'' SIG '' 2H9PYgb+XisaNnvjeI39uXhd6cLN+kwuZPf7VL3bMv23
'' SIG '' 0O2GmXHHROwMVQUIcX+vMO8nRkxoEn/ZZn94tbgjBUfm
'' SIG '' EVQ1JUqMWgPfrZeBPKkYvvP9LdVx3BEJQQCYZkG4kSw5
'' SIG '' qbTqetIDmmusP7qB/dQqP79hq0LMLPbhmR5rWMfRznkR
'' SIG '' OoAWM1Mnl9kqvvWw6Xmb/uz2jKZWSaoxjppbHFpio8Rb
'' SIG '' xl/c6LOBF35Jvl42TlCzwqGd24NIL7H3yPhm3E0MdlHt
'' SIG '' IcGwmCWehpBH+6blfZIMyidQXnASUXO6AcExgIYUuY8V
'' SIG '' dw5o7DRI3hx3vHmxAgMBAAGjgdUwgdIwDAYDVR0TAQH/
'' SIG '' BAIwADA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3Mt
'' SIG '' ZzItY3JsLnRoYXd0ZS5jb20vVGhhd3RlQ1NHMi5jcmww
'' SIG '' HwYDVR0lBBgwFgYIKwYBBQUHAwMGCisGAQQBgjcCARYw
'' SIG '' HQYDVR0EBBYwFDAOMAwGCisGAQQBgjcCARYDAgeAMDIG
'' SIG '' CCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDov
'' SIG '' L29jc3AudGhhd3RlLmNvbTARBglghkgBhvhCAQEEBAMC
'' SIG '' BBAwDQYJKoZIhvcNAQEFBQADggEBALa8Q1jPHDfEZaZj
'' SIG '' 4lqBYo2D9Y4jY8h464s6h1ufdFGmkgSELS22weRG6jKh
'' SIG '' ImJ9UZxLZTj4kttnW1fjwJkf3Z+y6vckIhrDFWP6u3bg
'' SIG '' STqmZ89ickPocpx8jvfBQG4CdFEjTo63uosw+BYbn+ZN
'' SIG '' tB1I/CndNLQAbyMBRVDF0PmS6RORAlUJR7oYvDlbvH1N
'' SIG '' G8AmDRMheVJsiay4FdDbQZ8aMxOngRABAHhHD+vpdQhd
'' SIG '' ND0vKmNWkFN/TJaCIX7hgDlPLGkSwz5fmcj0J3d9sCcZ
'' SIG '' P/NAEd6H/7auYuiE1v2nryvqH1EZlnu9ehA9BNporZL3
'' SIG '' P29REen2Jjn3cFCcrKwwggRFMIIDrqADAgECAhAzZVAI
'' SIG '' ea1z4jC54B0Nf6yRMA0GCSqGSIb3DQEBBQUAMIHOMQsw
'' SIG '' CQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBl
'' SIG '' MRIwEAYDVQQHEwlDYXBlIFRvd24xHTAbBgNVBAoTFFRo
'' SIG '' YXd0ZSBDb25zdWx0aW5nIGNjMSgwJgYDVQQLEx9DZXJ0
'' SIG '' aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMSEwHwYD
'' SIG '' VQQDExhUaGF3dGUgUHJlbWl1bSBTZXJ2ZXIgQ0ExKDAm
'' SIG '' BgkqhkiG9w0BCQEWGXByZW1pdW0tc2VydmVyQHRoYXd0
'' SIG '' ZS5jb20wHhcNMDYxMTE3MDAwMDAwWhcNMjAxMjMwMjM1
'' SIG '' OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRo
'' SIG '' YXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
'' SIG '' biBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMp
'' SIG '' IDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6
'' SIG '' ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmlt
'' SIG '' YXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB
'' SIG '' DwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxu
'' SIG '' aPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2
'' SIG '' AreJ1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYv
'' SIG '' ajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
'' SIG '' 6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhi
'' SIG '' h94ryNdOwUxkHt3Ph1i6Sk/KaAcdHJ1KxtUvkcx8cXIc
'' SIG '' xcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR3
'' SIG '' 2HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyX
'' SIG '' HdWdAgMBAAGjgcIwgb8wDwYDVR0TAQH/BAUwAwEB/zA7
'' SIG '' BgNVHSAENDAyMDAGBFUdIAAwKDAmBggrBgEFBQcCARYa
'' SIG '' aHR0cHM6Ly93d3cudGhhd3RlLmNvbS9jcHMwDgYDVR0P
'' SIG '' AQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpq
'' SIG '' tvNG61dIUDBABgNVHR8EOTA3MDWgM6Axhi9odHRwOi8v
'' SIG '' Y3JsLnRoYXd0ZS5jb20vVGhhd3RlUHJlbWl1bVNlcnZl
'' SIG '' ckNBLmNybDANBgkqhkiG9w0BAQUFAAOBgQCEqEzJPiq8
'' SIG '' muLMjwuyJXfEYYmJY1rUoxVA1PteP7RD6mMXK2uZdJ4J
'' SIG '' qN3UVhUuenkxX2OWUxs02RXqT21wyr72gqnt2oV3zHYc
'' SIG '' aoEKIdhBmX9eLoLB6Kr3k4EFqpK0H7eawAcX9cvGtEwO
'' SIG '' 11bccSB0ONZ0xtaPa6+LjaBsKQth4DCCBJwwggOEoAMC
'' SIG '' AQICEEeXTXhzpbyrDS+zcBkvzl4wDQYJKoZIhvcNAQEF
'' SIG '' BQAwgakxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3
'' SIG '' dGUsIEluYy4xKDAmBgNVBAsTH0NlcnRpZmljYXRpb24g
'' SIG '' U2VydmljZXMgRGl2aXNpb24xODA2BgNVBAsTLyhjKSAy
'' SIG '' MDA2IHRoYXd0ZSwgSW5jLiAtIEZvciBhdXRob3JpemVk
'' SIG '' IHVzZSBvbmx5MR8wHQYDVQQDExZ0aGF3dGUgUHJpbWFy
'' SIG '' eSBSb290IENBMB4XDTEwMDIwODAwMDAwMFoXDTIwMDIw
'' SIG '' NzIzNTk1OVowSjELMAkGA1UEBhMCVVMxFTATBgNVBAoT
'' SIG '' DFRoYXd0ZSwgSW5jLjEkMCIGA1UEAxMbVGhhd3RlIENv
'' SIG '' ZGUgU2lnbmluZyBDQSAtIEcyMIIBIjANBgkqhkiG9w0B
'' SIG '' AQEFAAOCAQ8AMIIBCgKCAQEAt4vPdVufJdp+ObCT2zjT
'' SIG '' qSPQgvrpJH5cC46D+OZ6WeajxZinmdJE/wCmpTkEitop
'' SIG '' iOrbovMcmRUmwrH0/OEMR6kJEQYKIJK5x6AEjFyUGatb
'' SIG '' JSwdYn5wDc5hbN0rgsnOXUhf98K+vEEjHk8pXddPvPTF
'' SIG '' Kvxj5nwmTpmneUGeEEp6ecnGhveGldImzjwYKtZ8zq/N
'' SIG '' rbv3gixwJjdF5Q9HIsYBKL0ug1xqpEfB59DYa4FGPyEX
'' SIG '' 9QfFQ1qmZyy4e2ARtYPu9XQKcnFEPVj+6BqrOMNZ239u
'' SIG '' OH12x3JpmDaWV9NmHNJUkQQuVBmw3D21Il6G1Sp+IN9d
'' SIG '' 5nqxZf7FAk4xLQIDAQABo4IBHDCCARgwEgYDVR0TAQH/
'' SIG '' BAgwBgEB/wIBADA0BgNVHR8ELTArMCmgJ6AlhiNodHRw
'' SIG '' Oi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlUENBLmNybDAO
'' SIG '' BgNVHQ8BAf8EBAMCAQYwMgYIKwYBBQUHAQEEJjAkMCIG
'' SIG '' CCsGAQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29t
'' SIG '' MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDAzAp
'' SIG '' BgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRVmVyaVNpZ25N
'' SIG '' UEtJLTItMTAwHQYDVR0OBBYEFNQNZT96vTTG/kfnTA3A
'' SIG '' vfLeFatxMB8GA1UdIwQYMBaAFHtbRc+vzst6/TGSGmq2
'' SIG '' 80brV0hQMA0GCSqGSIb3DQEBBQUAA4IBAQBW/lNc4cee
'' SIG '' vKftflNtahRLUYxAXoBfqqToL+84yATJyj7P3zpYTrDU
'' SIG '' tmPFKVf6AgWaRU1o2yob1DQ9nwDDWsuVSaVu4bDF/EFN
'' SIG '' QUpv03fI1ziN5BneGPMfFWWDbUUMU/kKmi6lXb9vMoEY
'' SIG '' khlqVQCtYxxSBn5V2Slorkp8GJp5iGsjI9gnOCoph3bK
'' SIG '' +8e2YiMf7XpWTN2cMlv1PQxGGJU7KiNog2RB2QBtDxkk
'' SIG '' FWhyvcVxZ26sTNuQ61GlGmIH0L5qAEc8ci/sT2E+c4XO
'' SIG '' Wgq3usAcE3XjIjko3W0dCUadT7roQIGRxqTOlHIbAc8q
'' SIG '' bhVnlYmufbe3zfkKPXW2azwlMYIEEjCCBA4CAQEwXjBK
'' SIG '' MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJ
'' SIG '' bmMuMSQwIgYDVQQDExtUaGF3dGUgQ29kZSBTaWduaW5n
'' SIG '' IENBIC0gRzICEBIH8mIUaXPmAjDdlBulSt4wDAYIKoZI
'' SIG '' hvcNAgUFAKCCAQMwGQYJKoZIhvcNAQkDMQwGCisGAQQB
'' SIG '' gjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcC
'' SIG '' ARYwHwYJKoZIhvcNAQkEMRIEECKCOqw5DVzn7hXeuOFF
'' SIG '' Oo4wgaYGCisGAQQBgjcCAQwxgZcwgZSgTIBKAEYAVQBO
'' SIG '' AEQAYQBtAGUAbgB0AGEAbABzACAAWQBlAGEAcgAgAEUA
'' SIG '' bgBkACAAUgBvAGwAbABvAHYAZQByACAAUwBjAHIAaQBw
'' SIG '' AHShRIBCaHR0cDovL3d3dy50aGVmb29kc2VydmljZWRp
'' SIG '' cmVjdG9yLmNvbS9Tb2Z0d2FyZS9TYWZlVG9Eb3dubG9h
'' SIG '' ZC5odG0gMA0GCSqGSIb3DQEBAQUABIIBAKlgzq1NBDhq
'' SIG '' BMj1MWPdXI0eZx5kjyZdnk7uzPwPZ7SSQEiMQgMk4lrz
'' SIG '' 0N5Es/RaFXpZalVw9sWHMmcvBPVzhOhrJRybo2CGpT9c
'' SIG '' C6xCNSe6SkCyqVuEgPpuDyGkDOLFb2k8P7+KLBhNk3Fu
'' SIG '' Deo1NXwq888OJNUJHMXNMZJL9FeMjSg8shs3qW7ZP7br
'' SIG '' nU7qx25cZEkmo1Lhfen27atlwqFLzfvN8gIDdo9I7LAn
'' SIG '' nF4JZ33GHqGs3Jckdv5AEoD6tR4MszmVZaAGMNrSqFM0
'' SIG '' fD+F9XNCidkl5C6PlgGfTjGY493I+soS0451oGm0aLxE
'' SIG '' whgFNi7LBbKgMG/yvDbJgwWhggF/MIIBewYJKoZIhvcN
'' SIG '' AQkGMYIBbDCCAWgCAQEwZzBTMQswCQYDVQQGEwJVUzEX
'' SIG '' MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xKzApBgNVBAMT
'' SIG '' IlZlcmlTaWduIFRpbWUgU3RhbXBpbmcgU2VydmljZXMg
'' SIG '' Q0ECEDgl1/r4Ya+e9JDnJrXWWtUwCQYFKw4DAhoFAKBd
'' SIG '' MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
'' SIG '' hvcNAQkFMQ8XDTExMDYxNjE3MTcyNlowIwYJKoZIhvcN
'' SIG '' AQkEMRYEFP5OIbM7+TmkLb1vBq1Gxwjw9aXVMA0GCSqG
'' SIG '' SIb3DQEBAQUABIGAVrTIUngkb9zCn0Q36bFdg61uWNyJ
'' SIG '' knCkYNiobONledIsdqJ3jF3Dqb+WdM9laJxhiCm4puhd
'' SIG '' OHtgrBeiZlktpwHJNfxQJT/DUOZLUihTe8hUdw/+ye5R
'' SIG '' n17IrHEyNVj4MbOPRcfb5+1oLDNHO2+fZgGe6/GAj5JN
'' SIG '' A2EfqtxKAv4=
'' SIG '' End signature block

