PSNetDetour.psm1
|
# Copyright: (c) 2025, Jordan Borean (@jborean93) <jborean93@gmail.com> # MIT License (see LICENSE or https://opensource.org/licenses/MIT) using namespace System.IO using namespace System.Management.Automation using namespace System.Reflection $importModule = Get-Command -Name Import-Module -Module Microsoft.PowerShell.Core $moduleName = [Path]::GetFileNameWithoutExtension($PSCommandPath) if (-not $IsCoreClr) { # PowerShell 5.1 has no concept of an Assembly Load Context so it will # just load the module assembly directly. $innerMod = if ('PSNetDetour.Commands.NewNetDetourHook' -as [type]) { $modAssembly = [PSNetDetour.Commands.NewNetDetourHook].Assembly & $importModule -Assembly $modAssembly -Force -PassThru } else { $modPath = [Path]::Combine($PSScriptRoot, 'bin', 'net472', "$moduleName.dll") & $importModule -Name $modPath -ErrorAction Stop -PassThru } } else { # This is used to load the shared assembly in the Default ALC which then sets # an ALC for the moulde and any dependencies of that module to be loaded in # that ALC. $isReload = $true if (-not ('PSNetDetour.Shared.LoadContext' -as [type])) { $isReload = $false Add-Type -Path ([Path]::Combine($PSScriptRoot, 'bin', 'net8.0', "$moduleName.Shared.dll")) } $mainModule = [PSNetDetour.Shared.LoadContext]::Initialize() $innerMod = &$importModule -Assembly $mainModule -PassThru:$isReload } if ($innerMod) { # Bug in pwsh, Import-Module in an assembly will pick up a cached instance # and not call the same path to set the nested module's cmdlets to the # current module scope. # https://github.com/PowerShell/PowerShell/issues/20710 $addExportedCmdlet = [PSModuleInfo].GetMethod( 'AddExportedCmdlet', [BindingFlags]'Instance, NonPublic') $addExportedAlias = [PSModuleInfo].GetMethod( 'AddExportedAlias', [BindingFlags]'Instance, NonPublic') foreach ($cmd in $innerMod.ExportedCmdlets.Values) { $addExportedCmdlet.Invoke($ExecutionContext.SessionState.Module, @(, $cmd)) } foreach ($alias in $innerMod.ExportedAliases.Values) { $addExportedAlias.Invoke($ExecutionContext.SessionState.Module, @(, $alias)) } } # SIG # Begin signature block # MIIxSwYJKoZIhvcNAQcCoIIxPDCCMTgCAQMxDTALBglghkgBZQMEAgEwewYKKwYB # BAGCNwIBBKBtBGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAGe89tWm0XacpO # i9v6HxSQ5d4M/yZX2yYr9aKZFy3CFKCCFeswggbnMIIEz6ADAgECAhMzAAZDAT9w # p/46wlfzAAAABkMBMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBFT0MgQ0EgMDIwHhcNMjYwMTA4MDUzNjU3WhcNMjYwMTEx # MDUzNjU3WjBlMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8G # A1UEBxMIQnJpc2JhbmUxFjAUBgNVBAoTDUpvcmRhbiBCb3JlYW4xFjAUBgNVBAMT # DUpvcmRhbiBCb3JlYW4wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCL # zsenas9V+RJMZuGpL68wNJi7Ge9fNA9W6fSqtihXp7CrTFYmIcQ4oBIJuty/Cs3T # K7LHKzDk1iBUEFahfFs84UWrjZ1E4gb0bHTwB+NmSIh4/gNhKjNfPZv13jQ5zzCF # aWKZ2Ey1doysUuz/qiyPPwSJTm8vbMcbfM6UAOrpW+Jm/akEeK0DFPaBYa7o55u9 # rM8q+jfX4zu+yFMXIN3fLPeYUbWjTbyQT+8nnT+nXypcyKqyNBhB1CpnDDOfzIii # YWagkNdRKw6FTiV+LIzmvQDQ45/9c5xDD0AcnCuHZKbQbqkMsCVhdpvciYH9aD12 # SB2OMTU9iVQMRa9/yftrO/WFubKLEW7yki4JZZ3RKO4BCUrAS0IFDnrtcDpg/eep # Sl1vX13n6GEE8orNpRaE96OgVc16eU8M3TKcuAkoPseWrYjyh6nQU/H00RWK9M4Y # 3Qo+r9IEEmImULhxHgnWXOhDsiNMsA42afrfwmm9qRTjrD8vb7KyUT3QU41IVjkC # AwEAAaOCAhkwggIVMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMDwGA1Ud # JQQ1MDMGCisGAQQBgjdhAQAGCCsGAQUFBwMDBhsrBgEEAYI3YcD1uzmDxbqHboKj # 0bsfgZfH91YwHQYDVR0OBBYEFM+asKaaIkKA9wtM3YEZry02himlMB8GA1UdIwQY # MBaAFGWfUc6FaH8vikWIqt2nMbseDQBeMGcGA1UdHwRgMF4wXKBaoFiGVmh0dHA6 # Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIw # VmVyaWZpZWQlMjBDUyUyMEVPQyUyMENBJTIwMDIuY3JsMIGlBggrBgEFBQcBAQSB # mDCBlTBkBggrBgEFBQcwAoZYaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w # cy9jZXJ0cy9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBFT0MlMjBD # QSUyMDAyLmNydDAtBggrBgEFBQcwAYYhaHR0cDovL29uZW9jc3AubWljcm9zb2Z0 # LmNvbS9vY3NwMGYGA1UdIARfMF0wUQYMKwYBBAGCN0yDfQEBMEEwPwYIKwYBBQUH # AgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0 # b3J5Lmh0bTAIBgZngQwBBAEwDQYJKoZIhvcNAQEMBQADggIBAHSn9LsxGg/NxU5t # ZmRhNVPveMLILDDv6qY+RWJNoyV6u7oaafthxYCXmBy4/uELc5qU8ZCrAdVGsR72 # VxZjeWquFGZDdlY66bC7M8enN0v3PzJmIWVy070krz7nNRsZlN6mdwU9nVgU3spq # qVSMpz0Km6X1fQv2Ln8gQQyzOz/SFT+B+i/3AXfffV8Rv2LhORryaJmBISExbjOM # ktR/Jj3SjRJdDM668fVReBwsIOhdpR/2D0NWGUQOmVpd71XFCG9OoTTdX6j9TRBI # f+vZvARSF9Bp/N6kJjMF1ix8zYj5ynEqdYecHJSv7+j4LMigirTm00JOZwOj3jxg # +OaF1DC7Ys9FX7XawUH5/45UWxUlqG5iKjkvGMcv4WgW7ejbo9RimaEL1EyaUYKY # kdf6LYYriat5bHWjRcGjrsitSFLOx/dTyTvRubgrKN03EKUMK/2C/b6CRuNqRa10 # OxXd+MYFWlaZUKecvkoBYSL9l9FPjIjGLQj5akaBdcxgwban5K6yYcB4Coy3Q4YC # 6V50Oe/QgVcibUHuQ/KdAo3M1c07Iijeb9L9nTK7ZVu0UVMOF7EtAatsG3sy0Fcb # sTEfsUbwPfTP6Ig9quzRyeH2h5OrvxBgrzmMHCNVQXSsabvh5xfQWD211YkIc0Sg # 39vnJpbgkMJEC34/yW+/oKwfJWttMIIHWjCCBUKgAwIBAgITMwAAAAX7elwyE2Hf # XQAAAAAABTANBgkqhkiG9w0BAQwFADBjMQswCQYDVQQGEwJVUzEeMBwGA1UEChMV # TWljcm9zb2Z0IENvcnBvcmF0aW9uMTQwMgYDVQQDEytNaWNyb3NvZnQgSUQgVmVy # aWZpZWQgQ29kZSBTaWduaW5nIFBDQSAyMDIxMB4XDTIxMDQxMzE3MzE1M1oXDTI2 # MDQxMzE3MzE1M1owWjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBD # b3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0IElEIFZlcmlmaWVkIENTIEVP # QyBDQSAwMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANIamXw/MpCk # wOgg21r7IZgaQ6AX+y79d9kVbkqlcEDt2gCy5LkZ50yKEZjBqNHyDEK7cEelBwdO # sXajpAH6gensbm10x7uOPnbh1AnROJ4IxCwUMpbjLkjpx2hHb3iG7d9ToTBF/+J0 # JKYePgIdHkeB9rE0a1Spiq5TqEJYYmu90INnR6IrXF9bk9b1typ6bfTLe+h+2R2y # zbKTGS5FgWmyjJegXWlmV2KTxnUvqmPNIA2jQrxatHddFDLu8R3rCKl6Uw090NwH # jsUspUk3P++D96IPY9zrnphBWrhcy+ebdTL6WnRIUJg/LhTMRb/4mTo8L3HWNc4W # p1Sy8qZc9d/zc0qFN0I4T3agBoUSMIf2A86N4wnVSYFkEa1vNz96lhRZMTYjBNoj # uCLmII+0cLHhsL+yPXMTsmh4oSjHU/TXqEo6Ujc1ZyihnGDLTnTLShaqFewoptpv # OBpiGGUwaK0fz6PYsJWrE2ChaRmanVismJyTthVfKDJlpCCtYmoCy4BLemWkdK5P # 9Y1GLLMk4kalq/OELN1y/1eSlARLVBEH0P+EbZyNPbhRVCBiWVfZg/8TlJLFqHRq # wkEnpuh8tutcTCQB6k6jLgyoMIvMZP5n5a+8oVzy+90jlC5rtQKruCOxqXukMDVt # k7UAcTN77Uk5nT1uqyuctIBA+dUY7MitAgMBAAGjggIOMIICCjAOBgNVHQ8BAf8E # BAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGWfUc6FaH8vikWIqt2n # MbseDQBeMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNodHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wGQYJ # KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNV # HSMEGDAWgBTZQSmwDw9jbO9p1/XNKZ6kSGow5jBwBgNVHR8EaTBnMGWgY6Bhhl9o # dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBJ # RCUyMFZlcmlmaWVkJTIwQ29kZSUyMFNpZ25pbmclMjBQQ0ElMjAyMDIxLmNybDCB # rgYIKwYBBQUHAQEEgaEwgZ4wbQYIKwYBBQUHMAKGYWh0dHA6Ly93d3cubWljcm9z # b2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUy # MENvZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyMS5jcnQwLQYIKwYBBQUHMAGGIWh0 # dHA6Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDANBgkqhkiG9w0BAQwFAAOC # AgEARUlg1HdPF+IOR871X6wdUolfKZOlzx0/Yz5Apr1P7rwc5mUQI2JNoCmEd6V6 # ErUSWif5YYwuQ6v9kez9WEWRwg2MitM70kTHROmELYBo5rHYcw9JwkuoVVXIH5jU # LHDydVh8W7xuREIGENGRA9RTdDDj0M1ntc2x+VWtHUsbZ6HQVUY58g2BJu7DRHLy # R0xt3l8wMndNBOSgwrBJeM+TtJr16sGh9j0tNtNBOj+Fqi8ILPzZlLufgGvC8P9h # J9lZCFuz5Iq+FJ9YxuvrY/3obqoBclDzwoepG575OPG4rIv8z4wFZI+6hK6+30mC # AgsyeLOGFDVVR4HaBZ9sW1u2XwU90APc34avbuBMV261Q+a8V0kxRFINoM0KvSR8 # bHR8jH3AiixUDlzg0s3GHi6Qnfq+hnKAwU6Mj3SnHIwupgKuvv4YjA56bylCB6cm # BM1lHmrbcil7TH/kKyXkPp8uYwS/sanTjjxM93YO6p/P6Ka1K1Gxiwb/X1ptfH1l # 3QL9TwrSy/2nDC7R6MnklTCkGKgx290JtLkPjUNGBOJFMUkGvlv3As2ACN9rjdJ2 # /TODK9aY+GyWYnTZDOCcmKns6ISC8WJIB226CUCEq0Fq5uUWHcoSgaabSfSSZ9Ge # ty43Z85TlMY5bAG0Iq9lps/ziRO9NwWx5kGUcMz8db7u0ucwggeeMIIFhqADAgEC # AhMzAAAAB4ejNKN7pY4cAAAAAAAHMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYT # AlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01p # Y3Jvc29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBB # dXRob3JpdHkgMjAyMDAeFw0yMTA0MDEyMDA1MjBaFw0zNjA0MDEyMDE1MjBaMGMx # CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xNDAy # BgNVBAMTK01pY3Jvc29mdCBJRCBWZXJpZmllZCBDb2RlIFNpZ25pbmcgUENBIDIw # MjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCy8MCvGYgo4t1UekxJ # bGkIVQm0Uv96SvjB6yUo92cXdylN65Xy96q2YpWCiTas7QPTkGnK9QMKDXB2ygS2 # 7EAIQZyAd+M8X+dmw6SDtzSZXyGkxP8a8Hi6EO9Zcwh5A+wOALNQbNO+iLvpgOnE # M7GGB/wm5dYnMEOguua1OFfTUITVMIK8faxkP/4fPdEPCXYyy8NJ1fmskNhW5Hdu # NqPZB/NkWbB9xxMqowAeWvPgHtpzyD3PLGVOmRO4ka0WcsEZqyg6efk3JiV/TEX3 # 9uNVGjgbODZhzspHvKFNU2K5MYfmHh4H1qObU4JKEjKGsqqA6RziybPqhvE74fEp # 4n1tiY9/ootdU0vPxRp4BGjQFq28nzawuvaCqUUF2PWxh+o5/TRCb/cHhcYU8Mr8 # fTiS15kRmwFFzdVPZ3+JV3s5MulIf3II5FXeghlAH9CvicPhhP+VaSFW3Da/azRO # dEm5sv+EUwhBrzqtxoYyE2wmuHKws00x4GGIx7NTWznOm6x/niqVi7a/mxnnMvQq # 8EMse0vwX2CfqM7Le/smbRtsEeOtbnJBbtLfoAsC3TdAOnBbUkbUfG78VRclsE7Y # DDBUbgWt75lDk53yi7C3n0WkHFU4EZ83i83abd9nHWCqfnYa9qIHPqjOiuAgSOf4 # +FRcguEBXlD9mAInS7b6V0UaNwIDAQABo4ICNTCCAjEwDgYDVR0PAQH/BAQDAgGG # MBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTZQSmwDw9jbO9p1/XNKZ6kSGow # 5jBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5t # aWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBkGCSsGAQQB # gjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU # yH7SaoUqG8oZmAQHJ89QEE9oqKIwgYQGA1UdHwR9MHsweaB3oHWGc2h0dHA6Ly93 # d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElkZW50aXR5 # JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5 # JTIwMjAyMC5jcmwwgcMGCCsGAQUFBwEBBIG2MIGzMIGBBggrBgEFBQcwAoZ1aHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBJ # ZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJvb3QlMjBDZXJ0aWZpY2F0ZSUyMEF1 # dGhvcml0eSUyMDIwMjAuY3J0MC0GCCsGAQUFBzABhiFodHRwOi8vb25lb2NzcC5t # aWNyb3NvZnQuY29tL29jc3AwDQYJKoZIhvcNAQEMBQADggIBAH8lKp7+1Kvq3WYK # 21cjTLpebJDjW4ZbOX3HD5ZiG84vjsFXT0OB+eb+1TiJ55ns0BHluC6itMI2vnwc # 5wDW1ywdCq3TAmx0KWy7xulAP179qX6VSBNQkRXzReFyjvF2BGt6FvKFR/imR4CE # ESMAG8hSkPYso+GjlngM8JPn/ROUrTaeU/BRu/1RFESFVgK2wMz7fU4VTd8NXwGZ # Be/mFPZG6tWwkdmA/jLbp0kNUX7elxu2+HtHo0QO5gdiKF+YTYd1BGrmNG8sTURv # n09jAhIUJfYNotn7OlThtfQjXqe0qrimgY4Vpoq2MgDW9ESUi1o4pzC1zTgIGtdJ # /IvY6nqa80jFOTg5qzAiRNdsUvzVkoYP7bi4wLCj+ks2GftUct+fGUxXMdBUv5sd # r0qFPLPB0b8vq516slCfRwaktAxK1S40MCvFbbAXXpAZnU20FaAoDwqq/jwzwd8W # o2J83r7O3onQbDO9TyDStgaBNlHzMMQgl95nHBYMelLEHkUnVVVTUsgC0Huj09du # NfMaJ9ogxhPNThgq3i8w3DAGZ61AMeF0C1M+mU5eucj1Ijod5O2MMPeJQ3/vKBtq # GZg4eTtUHt/BPjN74SsJsyHqAdXVS5c+ItyKWg3Eforhox9k3WgtWTpgV4gkSiS4 # +A09roSdOI4vrRw+p+fL4WrxSK5nMYIatjCCGrICAQEwcTBaMQswCQYDVQQGEwJV # UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSswKQYDVQQDEyJNaWNy # b3NvZnQgSUQgVmVyaWZpZWQgQ1MgRU9DIENBIDAyAhMzAAZDAT9wp/46wlfzAAAA # BkMBMAsGCWCGSAFlAwQCAaB8MBAGCisGAQQBgjcCAQwxAjAAMBkGCSqGSIb3DQEJ # AzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8G # CSqGSIb3DQEJBDEiBCAzvw+LNY+1EMX2ujGwuMqRJ8Z0qek1ryiZxW/yQnTPUDAL # BgkqhkiG9w0BAQEEggGAf6Lf6xjiJU6Eq5/wFmx8Iq8z64JU/i2XO6FuSsh4VnMf # u4/JqdK2A5zQL/d2LTSDHORDUXuLEZdUqKE0/T6V34atvX0xw7eLYF/BNhOhks+e # wBqr2ggWXUSMWxvc2vdfwaNdk5evmiT2fzsjm87B353oCFn9Y+Wrj2CGi/hOzhcf # X+XWanfo9YBPwA/AhlqJ2sM1P7xu+5MZqbTMC56NXA5IAjNKGaHKw5PqJ/mkIHmv # vm6PmhnALlSVMxWldkOim+UxTSbX2pXT7A9z6m6SkK+RWB36BGAMVLCv0Po/U6Mx # PDg8wXEeB43hxoaaDieatzJ14pzCaOXR4ClXcJZUXGYxkyDh0RRr9MtVLsALQJl0 # W/+vsccx4kdO9YkgHgTyvJbuiFwBLxGy2OaW2/l9nXACDwzG/BLcmrdNFzAnHR9i # saZmTMJadzl4j1uY+YpM2FlHm7KTIUw215ov6WOtJ/erkSgEO+b3izx7WyzBpFAx # E8iA2BUsT+slA4AlC2OqoYIYHDCCGBgGCisGAQQBgjcDAwExghgIMIIYBAYJKoZI # hvcNAQcCoIIX9TCCF/ECAQMxDzANBglghkgBZQMEAgEFADCCAW0GCyqGSIb3DQEJ # EAEEoIIBXASCAVgwggFUAgEBBgorBgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIBBQAE # IHLzgN+73tyo7elSN610COApmyMuaWcHkuW2MfxgonxIAgZpSZ+xkLIYEzIwMjYw # MTA5MDUwNTQ1Ljk1N1owBIACAfQCCQCfb1Q9sHSn4aCB4aSB3jCB2zELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0 # IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOkE1 # MDAtMDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1l # IFN0YW1waW5nIEF1dGhvcml0eaCCDyEwggeCMIIFaqADAgECAhMzAAAABeXPD/9m # LsmHAAAAAAAFMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVu # dGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAy # MDAeFw0yMDExMTkyMDMyMzFaFw0zNTExMTkyMDQyMzFaMGExCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jv # c29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMIICIjANBgkqhkiG # 9w0BAQEFAAOCAg8AMIICCgKCAgEAnnznUmP94MWfBX1jtQYioxwe1+eXM9ETBb1l # Rkd3kcFdcG9/sqtDlwxKoVIcaqDb+omFio5DHC4RBcbyQHjXCwMk/l3TOYtgoBjx # nG/eViS4sOx8y4gSq8Zg49REAf5huXhIkQRKe3Qxs8Sgp02KHAznEa/Ssah8nWo5 # hJM1xznkRsFPu6rfDHeZeG1Wa1wISvlkpOQooTULFm809Z0ZYlQ8Lp7i5F9YciFl # yAKwn6yjN/kR4fkquUWfGmMopNq/B8U/pdoZkZZQbxNlqJOiBGgCWpx69uKqKhTP # Vi3gVErnc/qi+dR8A2MiAz0kN0nh7SqINGbmw5OIRC0EsZ31WF3Uxp3GgZwetEKx # Lms73KG/Z+MkeuaVDQQheangOEMGJ4pQZH55ngI0Tdy1bi69INBV5Kn2HVJo9XxR # YR/JPGAaM6xGl57Ei95HUw9NV/uC3yFjrhc087qLJQawSC3xzY/EXzsT4I7sDbxO # mM2rl4uKK6eEpurRduOQ2hTkmG1hSuWYBunFGNv21Kt4N20AKmbeuSnGnsBCd2cj # RKG79+TX+sTehawOoxfeOO/jR7wo3liwkGdzPJYHgnJ54UxbckF914AqHOiEV7xT # nD1a69w/UTxwjEugpIPMIIE67SFZ2PMo27xjlLAHWW3l1CEAFjLNHd3EQ79PUr8F # UXetXr0CAwEAAaOCAhswggIXMA4GA1UdDwEB/wQEAwIBhjAQBgkrBgEEAYI3FQEE # AwIBADAdBgNVHQ4EFgQUa2koOjUvSGNAz3vYr0npPtk92yEwVAYDVR0gBE0wSzBJ # BgRVHSAAMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w # a2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZ # BgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8EBTADAQH/MB8GA1Ud # IwQYMBaAFMh+0mqFKhvKGZgEByfPUBBPaKiiMIGEBgNVHR8EfTB7MHmgd6B1hnNo # dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBJ # ZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJvb3QlMjBDZXJ0aWZpY2F0ZSUyMEF1 # dGhvcml0eSUyMDIwMjAuY3JsMIGUBggrBgEFBQcBAQSBhzCBhDCBgQYIKwYBBQUH # MAKGdWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9z # b2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNh # dGUlMjBBdXRob3JpdHklMjAyMDIwLmNydDANBgkqhkiG9w0BAQwFAAOCAgEAX4h2 # x35ttVoVdedMeGj6TuHYRJklFaW4sTQ5r+k77iB79cSLNe+GzRjv4pVjJviceW6A # F6ycWoEYR0LYhaa0ozJLU5Yi+LCmcrdovkl53DNt4EXs87KDogYb9eGEndSpZ5ZM # 74LNvVzY0/nPISHz0Xva71QjD4h+8z2XMOZzY7YQ0Psw+etyNZ1CesufU211rLsl # LKsO8F2aBs2cIo1k+aHOhrw9xw6JCWONNboZ497mwYW5EfN0W3zL5s3ad4Xtm7yF # M7Ujrhc0aqy3xL7D5FR2J7x9cLWMq7eb0oYioXhqV2tgFqbKHeDick+P8tHYIFov # IP7YG4ZkJWag1H91KlELGWi3SLv10o4KGag42pswjybTi4toQcC/irAodDW8HNtX # +cbz0sMptFJK+KObAnDFHEsukxD+7jFfEV9Hh/+CSxKRsmnuiovCWIOb+H7DRon9 # TlxydiFhvu88o0w35JkNbJxTk4MhF/KgaXn0GxdH8elEa2Imq45gaa8D+mTm8LWV # ydt4ytxYP/bqjN49D9NZ81coE6aQWm88TwIf4R4YZbOpMKN0CyejaPNN41LGXHeC # UMYmBx3PkP8ADHD1J2Cr/6tjuOOCztfp+o9Nc+ZoIAkpUcA/X2gSMkgHAPUvIdto # SAHEUKiBhI6JQivRepyvWcl+JYbYbBh7pmgAXVswggeXMIIFf6ADAgECAhMzAAAA # Vn6PnVgIjulgAAAAAABWMA0GCSqGSIb3DQEBDAUAMGExCzAJBgNVBAYTAlVTMR4w # HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29m # dCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMB4XDTI1MTAyMzIwNDY1 # MVoXDTI2MTAyMjIwNDY1MVowgdsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo # aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMx # JzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjpBNTAwLTA1RTAtRDk0NzE1MDMGA1UE # AxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHkw # ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC0pZ+b+6XTbv93xGVvwyf+ # DRBS+8upjZWzLe0jxTa0VKylNmiZk4PcEdPwuRH5GuEwmBvVWMAoU3Kxor1wtJeJ # 88ZIgGs8KCz0/jLbiWskSatXpDnPgGaoyEg+tmES9mdakJLgc7uNhJ6L+fGYLv/U # Sv6XkuDc+ZLFvx3YhVwBHFLDUHibEHpcjSeR6X3BrV1hvbB8amh+toWbFk7FP142 # G3gsfREFJW55trpk2mNL/SC1+buqIiLI/qno9HNNNsydWqwedX93+tbTMfH5D5A1 # nnBSoqZNkkH2FTznf7alfmsN8rfa41j39YE4CbNuqCkR1CRuIxq9QzJQNKGbJwi+ # Ad1CdLbTuxOPwz6Qkve051qE+4+ozCxoIKB1/DBDHQ71Mp7sVK9sARizUCeV0KX8 # ocZkI5W9Q2qPIvXQkt7T/4YP3/KepcZYWlc6Nq6e9n9wpE6GM3gzl7rHHRvaaKpw # +KLj+KLZmF4pqWUkRPsIqWkVKGzfDKDoX9+iNDFC8+dtYPg3LHqWGNaPCagtzHrD # UVIK1q8sKXLfcEtFKVNTiopTFprx3tg3sSqmf1c7RJjS6Y68oVetYfuvGX72JqJy # K12dNOSwCdGO96R0pPeWDuVEx+Z9lTy9c2I3RRgnNP0SOqNGbS43+HShfE+E189i # p4VvI9cYbHNphTPrPHepNwIDAQABo4IByzCCAccwHQYDVR0OBBYEFL62M/K7q1n+ # HkazIu/LPUf4U0haMB8GA1UdIwQYMBaAFGtpKDo1L0hjQM972K9J6T7ZPdshMGwG # A1UdHwRlMGMwYaBfoF2GW2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMv # Y3JsL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENB # JTIwMjAyMC5jcmwweQYIKwYBBQUHAQEEbTBrMGkGCCsGAQUFBzAChl1odHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFB1Ymxp # YyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcnQwDAYDVR0TAQH/ # BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwZgYD # VR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3 # dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMAgGBmeB # DAEEAjANBgkqhkiG9w0BAQwFAAOCAgEADgOoBcSw7bqP8trsWCf9CJ+K3zG5l6Sp # nnv5h76wf+FFNsQSMZitmCyrBH+VRR8oIWltkXyaxpk9Ak5HhhhQRTxfKMuufxjW # MJKajGH2Xu1aJKhz8kUHDfnokCbMYbF4EDYRZLFG5OvUC5l7qdho3z/C0WSIdyzy # Axp3FcGzoPFWHK7lieEs9CR+6YqbeUV+3ATumJ5Xt/WWySaWCwLoB5IYLMY9lSAK # 9wflO/9B73PtsgiZIPdK7OE4jBo/54pBNh/rtOJ/IkqRZBJ0Z9MDopy7jWTwsHqg # 8r4wuTWNvHErnA+otIvrbGMrThIFccQlISewW3TPFaTE/+WB6PUPGpSeatgR2TG/ # MpIcgCoVZJm6X/mEj68nG8U+Gw1AESThxK6UOQlClx1WL+CZ/+YcU5iEMGOxrXmz # gv7awGKXddX9PxGJHrpDzFi9MtFbF3Z1Wys6gLCexThYh6ILQmKcK/VYscSHtDLO # v1FKviQoktZ2k1guGCOSiNOYSQCMU7vvi3fEHt6du8gXQY6xXX3GcJTOr0QYrK3S # Ay5qmEqU2Mn5pOmNYxkMaj4Y4qyen3ceZ+2aXRLKncX34zfL7LpYkZRmghkmrbbu # MOOMSd22lSuH0F091Uh9UkP8C7zVHOHTlQcCK+itDc6zw8QsciCI531NbNt2CYbN # wgu3911VARExggdDMIIHPwIBATB4MGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVN # aWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMg # UlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAAVn6PnVgIjulgAAAAAABWMA0G # CWCGSAFlAwQCAQUAoIIEnDARBgsqhkiG9w0BCRACDzECBQAwGgYJKoZIhvcNAQkD # MQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNjAxMDkwNTA1NDVaMC8G # CSqGSIb3DQEJBDEiBCBX90gHpy1X3W+8cm9OQd4v0fiD0r1ueSBKEH3R3puUIjCB # uQYLKoZIhvcNAQkQAi8xgakwgaYwgaMwgaAEILYMMyVNpOPwlXeJODleel7gJIfr # TXjdn5f2jk0GAwyoMHwwZaRjMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNB # IFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAAVn6PnVgIjulgAAAAAABWMIIDXgYL # KoZIhvcNAQkQAhIxggNNMIIDSaGCA0UwggNBMIICKQIBATCCAQmhgeGkgd4wgdsx # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1p # Y3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNT # IEVTTjpBNTAwLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWljcm9zb2Z0IFB1YmxpYyBS # U0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHmiIwoBATAHBgUrDgMCGgMVAP9z9ykV # KpBZgF5eCDJEnZlu9gQRoGcwZaRjMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVN # aWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMg # UlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMA0GCSqGSIb3DQEBCwUAAgUA7QqHmjAi # GA8yMDI2MDEwODE5NDQyNloYDzIwMjYwMTA5MTk0NDI2WjB0MDoGCisGAQQBhFkK # BAExLDAqMAoCBQDtCoeaAgEAMAcCAQACAgbQMAcCAQACAhJkMAoCBQDtC9kaAgEA # MDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAI # AgEAAgMBhqAwDQYJKoZIhvcNAQELBQADggEBAKq7WFJQSuvuUkNRiRzWCptcx+8W # Qi6oK0DRUxomzmK/MAk/IBSRPrsEWf3xDrA3UcNB+oP+S0zONkD61BNyPtJwfVXj # 7dVwFCs4wkf087xpjm1ABw5t41VevplBa5E58H9RZo+BnZXKA7TDuzSqfTGqf6PP # YsYi83xRSNzp2NQe+FvS9XDufxnpRsbc+OJ5a2XzOXBjMe8ZfwwG/xdnDcCQ/J+Q # h60v8n+kl6QYV3PeFzPHSXJZEaGh0fmR2wNLiA7M7+3DpFIcRp41LUqBLR4QzYRq # 9JyYwkGAiLiMgKz1+loOo+OVIwhWbs1oeHRsoTzvyJdKjeQpWeEo4hqcIkcwDQYJ # KoZIhvcNAQEBBQAEggIAHeZv1oHz9BYxS4mrmc1wvN7WYM+C48dnqxEwwCASxS1V # heNY4byOiRoWMo/iFFl8wCZsxD0SreCLbagNj+8/0AkM1veahU2xBC+o9RRb/rF/ # 8uKyAcCln7UPWEkyrs1NHHMWIJHVbOQ3KpoPnOr+fOOSLLS2ou9QHttlOU688cx4 # ZNBPVSdyQ6om2EqIprPfYoAWtlOBr6Zk2KQa3Guh6uSF/r7PmLtnm4rszCMlTSoS # XjnbKiT69kg/NFvaw6j9QeT+WOrPGJML5ZokbT+n2ueck5vuem2FBqQVhLB/1cw+ # U/6Ob6M7y9Mey+OXqNDqMMl1O4wkVXanSy3kqVJbX2ObydO0Pi/ICFJ/c0OwNyiI # vsD0LGE7Owiz6R6qRQus3vYQXDl158+RPcucGP1+dLePY5tUStFAwf+JkrzkFXAM # s7CLrKV2Hn9/AwLOH+Xx31erIWfQ+wcxABepDcc2xL9tjBfAsjv/HPz9RMjswohX # HCivgVmdg61abYV0lnvrkrvdofI1S6OmnM3/iLcsK5xT2SiC+miFxEOpJ+cIZIKc # 2nV+8FXAtnVqwTQn6ua+63HeXpw89jEK3I51hj3fzOcrWoW/lO3k/rxpbYuVrz9Q # XhudPPBEgDI2g53TFafvIvWqTIYISSocbO9wH0ZyiHoSppN014qoEXhko08yM7k= # SIG # End signature block |