DSInternals.RpcFilters.Bootstrap.psm1
|
# # Script module file for the 'DSInternals.RpcFilters' module. # # Copyright (c) Michael Grafnetter # # Check if the current OS is Windows. if ($env:OS -ne 'Windows_NT') { Write-Error -Message 'The DSInternals.RpcFilters PowerShell module is only supported on Windows.' ` -Category ([System.Management.Automation.ErrorCategory]::NotImplemented) } # Load the platform-specific binaries. # Note: This operation cannot be done in the module manifest, # as it only supports restricted language mode. if ($PSVersionTable.PSVersion.Major -ge 6) { [string] $coreModulePath = "$PSScriptRoot/net8.0-windows/DSInternals.Win32.RpcFilters.PowerShell.dll" Import-Module -Name $coreModulePath -ErrorAction Stop } else { [string] $desktopModulePath = "$PSScriptRoot/net48/DSInternals.Win32.RpcFilters.PowerShell.dll" Import-Module -Name $desktopModulePath -ErrorAction Stop } #region Script cmdlets <# .SYNOPSIS Gets RPC audit events from the Security log. .PARAMETER ComputerName The name of the computer to query. .PARAMETER MaxEvents The maximum number of events to retrieve. #> function Get-RpcFilterEvent { [CmdletBinding()] [OutputType([DSInternals.Win32.RpcFilters.PowerShell.RpcEventLogRecord])] param( [Parameter(Mandatory = $false, ValueFromPipeline = $true)] [ValidateNotNullOrEmpty()] [string] $ComputerName, [Parameter(Mandatory = $false)] [long] $MaxEvents = [long]::MaxValue ) process { [hashtable] $computerNameParameter = @{} if ($null -ne $ComputerName) { # Use parameter splatting in order to support empty ComputerName # The Get-WinEvent command behaves slightly differently with "localhost" as ComputerName value. $computerNameParameter = @{ ComputerName = $ComputerName } } # Fetch the corresponding events and convert them to a human-readable format. Get-WinEvent @computerNameParameter -FilterHashtable @{ LogName = 'Security' ProviderName = 'Microsoft-Windows-Security-Auditing' Id = '5712' # Event ID 5712: A Remote Procedure Call (RPC) was attempted. } -MaxEvents $MaxEvents | ForEach-Object { [DSInternals.Win32.RpcFilters.PowerShell.RpcEventLogRecord] $PSItem } } } <# .SYNOPSIS Enables security auditing for RPC events. #> function Enable-RpcFilterAuditing { [CmdletBinding()] [OutputType('None')] param() # Run the native command and drop the output auditpol.exe /set /subcategory:"RPC Events" /success:enable /failure:enable > $null } <# .SYNOPSIS Disables security auditing for RPC events. #> function Disable-RpcFilterAuditing { [CmdletBinding()] [OutputType('None')] param() # Run the native command and drop the output auditpol.exe /set /subcategory:"RPC Events" /success:disable /failure:disable > $null } <# .SYNOPSIS Gets the current auditing settings for RPC events. #> function Get-RpcFilterAuditing { [CmdletBinding()] [OutputType([PSCustomObject])] param() # Run the native command and convert the CSV output to objects auditpol.exe /get /subcategory:"RPC Events" /r | ConvertFrom-Csv -Delimiter ',' } #endregion Script cmdlets # Define cmdlet aliases New-Alias -Name 'Add-RpcFilter' -Value 'New-RpcFilter' -Force # Export cmdlets Export-ModuleMember -Cmdlet @('Get-RpcFilter', 'New-RpcFilter', 'Remove-RpcFilter') ` -Alias @('Add-RpcFilter') ` -Function @('Get-RpcFilterEvent', 'Enable-RpcFilterAuditing', 'Disable-RpcFilterAuditing', 'Get-RpcFilterAuditing') # SIG # Begin signature block # MIIsMwYJKoZIhvcNAQcCoIIsJDCCLCACAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBVibtSkmMFxjC5 # QmvOrz8F7lwdNiWMycLk9bIeUdD306CCE6UwggWQMIIDeKADAgECAhAFmxtXno4h # MuI5B72nd3VcMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV # BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0xMzA4MDExMjAwMDBaFw0z # ODAxMTUxMjAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0 # IFRydXN0ZWQgUm9vdCBHNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB # AL/mkHNo3rvkXUo8MCIwaTPswqclLskhPfKK2FnC4SmnPVirdprNrnsbhA3EMB/z # G6Q4FutWxpdtHauyefLKEdLkX9YFPFIPUh/GnhWlfr6fqVcWWVVyr2iTcMKyunWZ # anMylNEQRBAu34LzB4TmdDttceItDBvuINXJIB1jKS3O7F5OyJP4IWGbNOsFxl7s # Wxq868nPzaw0QF+xembud8hIqGZXV59UWI4MK7dPpzDZVu7Ke13jrclPXuU15zHL # 2pNe3I6PgNq2kZhAkHnDeMe2scS1ahg4AxCN2NQ3pC4FfYj1gj4QkXCrVYJBMtfb # BHMqbpEBfCFM1LyuGwN1XXhm2ToxRJozQL8I11pJpMLmqaBn3aQnvKFPObURWBf3 # JFxGj2T3wWmIdph2PVldQnaHiZdpekjw4KISG2aadMreSx7nDmOu5tTvkpI6nj3c # AORFJYm2mkQZK37AlLTSYW3rM9nF30sEAMx9HJXDj/chsrIRt7t/8tWMcCxBYKqx # YxhElRp2Yn72gLD76GSmM9GJB+G9t+ZDpBi4pncB4Q+UDCEdslQpJYls5Q5SUUd0 # viastkF13nqsX40/ybzTQRESW+UQUOsxxcpyFiIJ33xMdT9j7CFfxCBRa2+xq4aL # T8LWRV+dIPyhHsXAj6KxfgommfXkaS+YHS312amyHeUbAgMBAAGjQjBAMA8GA1Ud # EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTs1+OC0nFdZEzf # Lmc/57qYrhwPTzANBgkqhkiG9w0BAQwFAAOCAgEAu2HZfalsvhfEkRvDoaIAjeNk # aA9Wz3eucPn9mkqZucl4XAwMX+TmFClWCzZJXURj4K2clhhmGyMNPXnpbWvWVPjS # PMFDQK4dUPVS/JA7u5iZaWvHwaeoaKQn3J35J64whbn2Z006Po9ZOSJTROvIXQPK # 7VB6fWIhCoDIc2bRoAVgX+iltKevqPdtNZx8WorWojiZ83iL9E3SIAveBO6Mm0eB # cg3AFDLvMFkuruBx8lbkapdvklBtlo1oepqyNhR6BvIkuQkRUNcIsbiJeoQjYUIp # 5aPNoiBB19GcZNnqJqGLFNdMGbJQQXE9P01wI4YMStyB0swylIQNCAmXHE/A7msg # dDDS4Dk0EIUhFQEI6FUy3nFJ2SgXUE3mvk3RdazQyvtBuEOlqtPDBURPLDab4vri # RbgjU2wGb2dVf0a1TD9uKFp5JtKkqGKX0h7i7UqLvBv9R0oN32dmfrJbQdA75PQ7 # 9ARj6e/CVABRoIoqyc54zNXqhwQYs86vSYiv85KZtrPmYQ/ShQDnUBrkG5WdGaG5 # nLGbsQAe79APT0JsyQq87kP6OnGlyE0mpTX9iV28hWIdMtKgK1TtmlfB2/oQzxm3 # i0objwG2J5VT6LaJbVu8aNQj6ItRolb58KaAoNYes7wPD1N1KarqE3fk3oyBIa0H # EEcRrYc9B9F1vM/zZn4wggawMIIEmKADAgECAhAIrUCyYNKcTJ9ezam9k67ZMA0G # CSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0 # IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0zNjA0MjgyMzU5NTla # MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE # AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz # ODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDVtC9C # 0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0JAfhS0/TeEP0F9ce # 2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJrQ5qZ8sU7H/Lvy0da # E6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhFLqGfLOEYwhrMxe6T # SXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+FLEikVoQ11vkunKoA # FdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh3K3kGKDYwSNHR7Oh # D26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJwZPt4bRc4G/rJvmM # 1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQayg9Rc9hUZTO1i4F4z # 8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbIYViY9XwCFjyDKK05 # huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchApQfDVxW0mdmgRQRNY # mtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRroOBl8ZhzNeDhFMJlP # /2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IBWTCCAVUwEgYDVR0T # AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHwYD # VR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQDAgGGMBMG # A1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAkBggrBgEFBQcwAYYY # aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRwOi8vY2Fj # ZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNydDBDBgNV # HR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRU # cnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAEDMAgGBmeBDAEEATAN # BgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql+Eg08yy25nRm95Ry # sQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFFUP2cvbaF4HZ+N3HL # IvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1hmYFW9snjdufE5Btf # Q/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3RywYFzzDaju4ImhvTnh # OE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5UbdldAhQfQDN8A+KVssIh # dXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw8MzK7/0pNVwfiThV # 9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnPLqR0kq3bPKSchh/j # wVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatEQOON8BUozu3xGFYH # Ki8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bnKD+sEq6lLyJsQfmC # XBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQjiWQ1tygVQK+pKHJ6l # /aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbqyK+p/pQd52MbOoZW # eE4wggdZMIIFQaADAgECAhANqK80cCX+jsAYDGB/BSyeMA0GCSqGSIb3DQEBCwUA # MGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UE # AxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcgUlNBNDA5NiBTSEEz # ODQgMjAyMSBDQTEwHhcNMjYwMTA1MDAwMDAwWhcNMjkwMTA0MjM1OTU5WjBhMQsw # CQYDVQQGEwJDWjEOMAwGA1UEBxMFUHJhaGExIDAeBgNVBAoTF01nci4gTWljaGFl # bCBHcmFmbmV0dGVyMSAwHgYDVQQDExdNZ3IuIE1pY2hhZWwgR3JhZm5ldHRlcjCC # AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJrpm0HI6ak/Uj3iqs64nuUT # WZAkxHVeJKwnd3XR0Ge/oE1STGkmydGCZ8VR9jMcIHK+kYteESboRguDVk7BTxEv # SKTEDG0lt1KLr0KUuWI2EUykxtcpR7wOjZ/VBMPeiwPQqccY/ZnwF0H6P43MJSIf # WYVhTLb5R8ueHkjxRGkMPgIcuV4W3TqIEQKvO9NEMC0Tv2nPXPab5u20QdixQaep # 05DEBL1cd9L0NYvbgUi8JQ63I/P7fqrlC6zXZb61wDDTNxwtdFIlR7jvAFqhY1bX # Qfb8bmL4KXH9Sv3hHIDUUfitghKh4RoQWitVTpf+uzLPG0Dr1UH8RbWIYQRXCZhr # 4RJzmt3+i0f+IZSJkRlXBVhn9GeQTk3yaUwLFyz5evTYh5IBaMNA+1BChpswlB32 # PoOjg4eJr3/nArLKN3UZCy9PQ0F+y0J+T/UkGCyv0Ws+zxiZlR2A6ekjGnP5x+8g # n2S3Hf0rMCfCgudgT12S8tXPSdI88TzsihLj8iJT9ljgS0bJSjNykYaBK8BXYYJ3 # PvBn7px9G7b7WOPieyp7rTDkmyWBG5+vVIOFjJUgMIMJChsc5f11iHNcdo7FsVwS # H8MftQ0rUSktj1xK4/p9zwhQpI+eXE0l9YIP08JmVOLtgu2PzXcCT/El+/8+XUw/ # X63cEIgp49URPwtmU0UhAgMBAAGjggIDMIIB/zAfBgNVHSMEGDAWgBRoN+Drtjv4 # XxGG+/5hewiIZfROQjAdBgNVHQ4EFgQUUAbobwgAP24SnIkacVlc4i61qWgwPgYD # VR0gBDcwNTAzBgZngQwBBAEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdp # Y2VydC5jb20vQ1BTMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcD # AzCBtQYDVR0fBIGtMIGqMFOgUaBPhk1odHRwOi8vY3JsMy5kaWdpY2VydC5jb20v # RGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0Ex # LmNybDBToFGgT4ZNaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1 # c3RlZEc0Q29kZVNpZ25pbmdSU0E0MDk2U0hBMzg0MjAyMUNBMS5jcmwwgZQGCCsG # AQUFBwEBBIGHMIGEMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5j # b20wXAYIKwYBBQUHMAKGUGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdp # Q2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0 # MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggIBAI/LhB69MYV+zYchS+lShCm1 # H7P/sHkhIctl5ClI6fFpsqc7uAZlH2JjUNYDkkIUvoGk5teyJdLXrycGQIVwH26i # DJm6VDoOOalOjOHh1Om/dP3Cl3XPUM1KRyj39DNnLvPB/5VxIbGoz9yoaTvHAQnu # B5THrdo0nWyPtDgTF2ItJFVky4Uh9cE/ggCifsDUFMwAVKDZ1YvwNspO/ajwdLTM # l121TKX3x5eA8KL4bO3LVvE5GQIqQx3PVqTn4jwFlxjDaBh/RE6yo2UwPwIIfTfj # XTHuziTtFgvVhHKFS55Cxt4h3nCrPEnCfSdG/oNOF8TgLWA873V4T1Qqkdi8aXuA # BWu5GhemjorxFxqeSLrskfTnGO2a5WQ6hmqmz8jU/Ulau8MvwRN8ZSyDJBYc8iuF # VL1+abP12QfM/O8VkqYHbeslkC0qndAbJlT6icTd4CPeBXTwXtGY0hixRxcAkq3y # gKSs7EeGGY6Ytc1pANGDX6PBjVxaf0XfwhkwG35iAA3Ix1muNoB4Nt2HySbkVGDh # ZT5seWy/D2Z44NTAMcGh7WcBGp0RJ/372LGP58ZgSPp/0EtlhaCX1UoQo7Nv6XsY # 1qu0RC+G/lOTl1C9o3eya4bf5y0GZlrNgW3U4nxi4UcRwlpmRaH1hbuz5BQoImaz # mn6pOiSVBvJE8R1OA+9UMYIX5DCCF+ACAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUG # A1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQg # RzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExAhANqK80cCX+ # jsAYDGB/BSyeMA0GCWCGSAFlAwQCAQUAoIGEMBgGCisGAQQBgjcCAQwxCjAIoAKA # AKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO # MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIPj8hxy0aXmDuDqTZ5QViK5K # yrx2+xkLyh3XLR8CGdkrMA0GCSqGSIb3DQEBAQUABIICAIp07AUWmleR+S2VruyP # xDgIo8USWmJNSZQ2Vt1v2guylBb2JUv6VRPSZedJ/EiJqRBdyyInQ1x4Y78xtMhM # WJQ2ovgnIKE8nDIICrk4dNJpNWL/uPTATTUB5XDjiBAujcjjwOOSB9/9ivGDfARF # UshsMLnckWWFYEKZ3Qa6Kw+/sbtUzUIvtb01ONyyhrK2K+hZD1O87+cf5+FMHANH # OZ/88HTJk7zYsHsmCkpmVQXsDysYmbOBeLgJyUI2BlYTtUiWy2cAmnu2KPu5/+UP # A3H9/oqOTrAOMsjiQyLvajn44QYnc61H00xabk2Nar/Nngll6jOgjlDeHW5GRaI6 # mii7XX40XdYHWhShYxC+TeumAAkkkx6ZJami47zg9sCcGuT1nPfTyw3cIeSm2tWL # 8yFexmZFpHyh77Of5u8sf0rr2Cp6c9OoyfakPWfh06fbVdHu11DLRUkpI5+8KEM+ # DWuTd6N+7j4Ct/HjKBe0EgNVT1tzfyUCi25Q9Jk0CDk+2LBo4jXT89M+8uNwsvXA # JrQWe7hH2Bsj90sxbC9sWuuwwbRzTUkFDAF5UeizdugcP3HpPOJTKmXoCfJW0uEe # a95bStpD88foZkjEGAqq78lSIqNeazT8rtFRPfP4MXmQ1pExNJ1gM2/8eDEZ3Yas # oEHOupj/qza5SH5fQTYw/TWooYIUsTCCFK0GCisGAQQBgjcDAwExghSdMIIUmQYJ # KoZIhvcNAQcCoIIUijCCFIYCAQMxDzANBglghkgBZQMEAgEFADCCAWkGCyqGSIb3 # DQEJEAEEoIIBWASCAVQwggFQAgEBBgorBgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIB # BQAEIJQwBISuoMmnRnGpSiZnyA9mEC7W9e13WF4aARAe8wGDAgZpStJGbU4YEjIw # MjYwMTA3MjM1NjQxLjM3WjAEgAIB9KCB6aSB5jCB4zELMAkGA1UEBhMCVVMxEzAR # BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p # Y3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQg # T3BlcmF0aW9ucyBMaW1pdGVkMScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046NDkx # QS0wNUUwLUQ5NDcxNTAzBgNVBAMTLE1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWUg # U3RhbXBpbmcgQXV0aG9yaXR5oIIPKTCCB4IwggVqoAMCAQICEzMAAAAF5c8P/2Yu # yYcAAAAAAAUwDQYJKoZIhvcNAQEMBQAwdzELMAkGA1UEBhMCVVMxHjAcBgNVBAoT # FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0IElkZW50 # aXR5IFZlcmlmaWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDIw # MB4XDTIwMTExOTIwMzIzMVoXDTM1MTExOTIwNDIzMVowYTELMAkGA1UEBhMCVVMx # HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9z # b2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENBIDIwMjAwggIiMA0GCSqGSIb3 # DQEBAQUAA4ICDwAwggIKAoICAQCefOdSY/3gxZ8FfWO1BiKjHB7X55cz0RMFvWVG # R3eRwV1wb3+yq0OXDEqhUhxqoNv6iYWKjkMcLhEFxvJAeNcLAyT+XdM5i2CgGPGc # b95WJLiw7HzLiBKrxmDj1EQB/mG5eEiRBEp7dDGzxKCnTYocDOcRr9KxqHydajmE # kzXHOeRGwU+7qt8Md5l4bVZrXAhK+WSk5CihNQsWbzT1nRliVDwunuLkX1hyIWXI # ArCfrKM3+RHh+Sq5RZ8aYyik2r8HxT+l2hmRllBvE2Wok6IEaAJanHr24qoqFM9W # LeBUSudz+qL51HwDYyIDPSQ3SeHtKog0ZubDk4hELQSxnfVYXdTGncaBnB60QrEu # azvcob9n4yR65pUNBCF5qeA4QwYnilBkfnmeAjRN3LVuLr0g0FXkqfYdUmj1fFFh # H8k8YBozrEaXnsSL3kdTD01X+4LfIWOuFzTzuoslBrBILfHNj8RfOxPgjuwNvE6Y # zauXi4orp4Sm6tF245DaFOSYbWFK5ZgG6cUY2/bUq3g3bQAqZt65KcaewEJ3ZyNE # obv35Nf6xN6FrA6jF9447+NHvCjeWLCQZ3M8lgeCcnnhTFtyQX3XgCoc6IRXvFOc # PVrr3D9RPHCMS6Ckg8wggTrtIVnY8yjbvGOUsAdZbeXUIQAWMs0d3cRDv09SvwVR # d61evQIDAQABo4ICGzCCAhcwDgYDVR0PAQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQD # AgEAMB0GA1UdDgQWBBRraSg6NS9IY0DPe9ivSek+2T3bITBUBgNVHSAETTBLMEkG # BFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br # aW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkG # CSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j # BBgwFoAUyH7SaoUqG8oZmAQHJ89QEE9oqKIwgYQGA1UdHwR9MHsweaB3oHWGc2h0 # dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElk # ZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0 # aG9yaXR5JTIwMjAyMC5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMIGBBggrBgEFBQcw # AoZ1aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3Nv # ZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJvb3QlMjBDZXJ0aWZpY2F0 # ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQBfiHbH # fm21WhV150x4aPpO4dhEmSUVpbixNDmv6TvuIHv1xIs174bNGO/ilWMm+Jx5boAX # rJxagRhHQtiFprSjMktTliL4sKZyt2i+SXncM23gRezzsoOiBhv14YSd1Klnlkzv # gs29XNjT+c8hIfPRe9rvVCMPiH7zPZcw5nNjthDQ+zD563I1nUJ6y59TbXWsuyUs # qw7wXZoGzZwijWT5oc6GvD3HDokJY401uhnj3ubBhbkR83RbfMvmzdp3he2bvIUz # tSOuFzRqrLfEvsPkVHYnvH1wtYyrt5vShiKheGpXa2AWpsod4OJyT4/y0dggWi8g # /tgbhmQlZqDUf3UqUQsZaLdIu/XSjgoZqDjamzCPJtOLi2hBwL+KsCh0Nbwc21f5 # xvPSwym0Ukr4o5sCcMUcSy6TEP7uMV8RX0eH/4JLEpGyae6Ki8JYg5v4fsNGif1O # XHJ2IWG+7zyjTDfkmQ1snFOTgyEX8qBpefQbF0fx6URrYiarjmBprwP6ZObwtZXJ # 23jK3Fg/9uqM3j0P01nzVygTppBabzxPAh/hHhhls6kwo3QLJ6No803jUsZcd4JQ # xiYHHc+Q/wAMcPUnYKv/q2O444LO1+n6j01z5mggCSlRwD9faBIySAcA9S8h22hI # AcRQqIGEjolCK9F6nK9ZyX4lhthsGHumaABdWzCCB58wggWHoAMCAQICEzMAAABO # o8YOPjHDdCcAAAAAAE4wDQYJKoZIhvcNAQEMBQAwYTELMAkGA1UEBhMCVVMxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0 # IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENBIDIwMjAwHhcNMjUwMjI3MTk0MDE3 # WhcNMjYwMjI2MTk0MDE3WjCB4zELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp # bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBM # aW1pdGVkMScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046NDkxQS0wNUUwLUQ5NDcx # NTAzBgNVBAMTLE1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWUgU3RhbXBpbmcgQXV0 # aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAht+Ui7psCW2V # 3udFfRPpJsXhsQyOgSZTt0vtkcGw5C2DmGIazwZCWtlUTXIBbMYCt6GinjuubZDR # aJ2167wzQf9ztxqh6FUPWyjwZjRWjXaR8iZCnWq3kDWRxNxhdabJBt4vH3DwocGc # gel6w/6yTZJOCViwW7cK0e0gVeOssAXv42MDRSvCzefLls9362PE7q8UhjdXrJdv # cYhtwdt+aV41+trhkQAD+EXEMN2bZF4u3/qKPuJUztDoRsNCuC5ExDJ0XwcTIs/3 # yIYocQffqZzP54n1eX9u9r4+T/1iPVqJzYwGsDthNtj+F3DcdKyTG9RSA0hwoVBW # zPfoVIxdA7NVdbVwVcvhSIarD7KUKUlxnSXcfQCLCyem+jS32/jMPmPAmuZ40iUo # F4fkQZt9c96VtURnae0wEKA96AHmp6Wqj5sx9LP2VFM7ZzssHJh9CzpQ4kvYmGCt # mhP6DtY1IRkpdD6joNe6OmJ/ldMx0zNYI46Imcxx6+ll0PZpho4QYVdSbnVATYks # qeL/vV5xmMjoN/gLq8FdFXtZPvoFhSBwRrTyRhtbmQ3SOOcE8YUBKv1JKdk0YUpD # gnwzJHEQE9lM3fcxf0/P7dl9kXiZLyjJcwJw6YTjToz1FJA/1tNVZW45HQwejnoS # lQArWFUsp+5IPR0TBsaIxrAet6U4o0ECAwEAAaOCAcswggHHMB0GA1UdDgQWBBTw # x7qDdKpK0vS3J3mLDiu/DU1qYjAfBgNVHSMEGDAWgBRraSg6NS9IY0DPe9ivSek+ # 2T3bITBsBgNVHR8EZTBjMGGgX6BdhltodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v # cGtpb3BzL2NybC9NaWNyb3NvZnQlMjBQdWJsaWMlMjBSU0ElMjBUaW1lc3RhbXBp # bmclMjBDQSUyMDIwMjAuY3JsMHkGCCsGAQUFBwEBBG0wazBpBggrBgEFBQcwAoZd # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQl # MjBQdWJsaWMlMjBSU0ElMjBUaW1lc3RhbXBpbmclMjBDQSUyMDIwMjAuY3J0MAwG # A1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQD # AgeAMGYGA1UdIARfMF0wUQYMKwYBBAGCN0yDfQEBMEEwPwYIKwYBBQUHAgEWM2h0 # dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0 # bTAIBgZngQwBBAIwDQYJKoZIhvcNAQEMBQADggIBABMmcyukIa5ar1k6AQpwrI9m # PvWf8mlf1JhpMr+o6s+wjHN/+q+r/+6PR1MGd/HspbRojVjPYLpDvyDVvzQBTwBE # 3KgiGZPZJY0jyTsUujup5ZLM3htyAOBNFJooY+JZZsm0SNsKBsiQ0ndlM/2IEkKz # FnC/prjlqf0CkbU1X/A/yeJXREEIf1IgeYPqy/fiXGXMdOAYZ/Wfbz1+D8uhIyws # U9nj4benQpi7sDl/PrXogGT1laldDEcU1xIyD+uXBs7rmTSTSxGtSUhaST7vWe3Y # 2CmwVpaLYlirSaxfS7NXctstpZ8rODUHe6ChJcvKlmDek/KmR1eHXCtr2HbbZG7O # PI6bDJaLuNNBQE49l6fJqlsmEBleULE4Fo3TRuzVX7NSDaaI2170TwJYdqCr5G2z # /WJKI8LBaYwp+qKVJJ1Iy1hJczJyIIpZ7F5GMBfRCi9Kwa/SkyqRh89rm5ucjTdp # v8Doqh3ZMQXy59KFX2xBKpsOxwxbXZNA5ujJNSFzzA+nynZZZ6O+sf70BQ7qFOhp # h4ziMyaY5wACWkebYBj4YCT5jnh3oNgDo0EQP4JIQVJqRRVGo1uQ3iY3VI6SWh1m # G9GmGYX063QO7Mu78oHJYh8dtpj/BO6ysRUYfhbiff0WZwwi9Vsyl44Q1nn37EaI # XC3mLO5ptmIc38QVHiV5MYID1DCCA9ACAQEweDBhMQswCQYDVQQGEwJVUzEeMBwG # A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQg # UHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMAITMwAAAE6jxg4+McN0JwAA # AAAATjANBglghkgBZQMEAgEFAKCCAS0wGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJ # EAEEMC8GCSqGSIb3DQEJBDEiBCDR8q3+QZmVeXLTEW9U8M36wAPESezGaUIM0jIG # +7N1VTCB3QYLKoZIhvcNAQkQAi8xgc0wgcowgccwgaAEIG+yp9PvKAUdsN79OPdA # KfbkkcO5SGDK009Fvrv/lkoXMHwwZaRjMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJs # aWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAATqPGDj4xw3QnAAAAAABO # MCIEILNQO1sm/uQla+uDitv4ZK3pHMCVnIWLz5N5AQDqoTyXMA0GCSqGSIb3DQEB # CwUABIICAEnWP1UB5HKZ8GFtqlwOCtVxE8EhRYB7kj9aztr/Nidq5AUJuSmsfCYo # 4aRVo41+rdYol9EYm1Ce0+bvr8ywKF3HSwff7X/2X91Q3bRFH3XNZII9Tr5IvzOi # /fOfjJ2+J30xrJdYy1ORw3ckFCG9beKejelBoPk6rlTA3hvJkzjqZtimbzeepfPh # Vv4t3etBaswmwEOo3tT6cxi2Cpk4lsGnz8q7k28/BcCqHrE8992OP36O+qQucxGO # 7Fvu7pgx+NeJqh1e52aT5Lr/rQD30IZicADkvgEHDJIV7cIJ93bH4igdNQp12VhA # RGvqqkUtSnJMfmfSndHuePgJiR4A8g6LVeMVnSlVJhXEvNaTB9k0FXpUiofn/GtZ # gNhPXEIHjMFeyprJiGAXyrQIpNfVuoN7Y9604Z8PEZnMeGS5wEom7YHpzo5yVagr # FzlH7Y4RO+U5mWj9WUq3ZGME9RYTFU4whELWu1i5yUpXkqxr4f6Qaq4EmXCGRpLz # Pdn4kNBi22N9Fu1wLxe77FAyPsb04J9RdKXbKbxRuOthUZJ5fC2vdVOWuMOcItO6 # jlDY4/J/gsWeR7Y9J4Dz105HCIoXrEr6BN0WTuzsteAx5dBOe8R2BhchL4JkVAzi # bb5CCEq7TI+UNNLEWIftQTRgGV5/XhKkA7KgXtlGTtF/YQnMwRcL # SIG # End signature block |