mirror of
https://github.com/pbatard/Fido.git
synced 2025-09-16 22:28:02 +02:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2fc1739224 | ||
![]() |
96c3637863 | ||
![]() |
c034a4e72a | ||
![]() |
ce405fa35c | ||
![]() |
5402fc6222 | ||
![]() |
f8cec58032 | ||
![]() |
ec4673831c |
725
Fido.ps1
725
Fido.ps1
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Fido v1.59 - Feature ISO Downloader, for retail Windows images and UEFI Shell
|
||||
# Copyright © 2019-2024 Pete Batard <pete@akeo.ie>
|
||||
# Fido v1.65 - ISO Downloader, for Microsoft Windows and UEFI Shell
|
||||
# Copyright © 2019-2025 Pete Batard <pete@akeo.ie>
|
||||
# Command line support: Copyright © 2021 flx5
|
||||
# ConvertTo-ImageSource: Copyright © 2016 Chris Carter
|
||||
#
|
||||
@@ -24,7 +24,7 @@
|
||||
#region Parameters
|
||||
param(
|
||||
# (Optional) The title to display on the application window.
|
||||
[string]$AppTitle = "Fido - Feature ISO Downloader",
|
||||
[string]$AppTitle = "Fido - ISO Downloader",
|
||||
# (Optional) '|' separated UI localization strings.
|
||||
[string]$LocData,
|
||||
# (Optional) Forced locale
|
||||
@@ -46,8 +46,13 @@ param(
|
||||
[string]$Arch,
|
||||
# (Optional) Only display the download URL [Toggles commandline mode]
|
||||
[switch]$GetUrl = $false,
|
||||
# (Optional) Specify the architecture of the underlying CPU.
|
||||
# This avoids a VERY TIME CONSUMING call to WMI to autodetect the arch.
|
||||
[string]$PlatformArch,
|
||||
# (Optional) Increase verbosity
|
||||
[switch]$Verbose = $false
|
||||
[switch]$Verbose = $false,
|
||||
# (Optional) Produce debugging information
|
||||
[switch]$Debug = $false
|
||||
)
|
||||
#endregion
|
||||
|
||||
@@ -132,21 +137,16 @@ if (!$Cmd) {
|
||||
#endregion
|
||||
|
||||
#region Data
|
||||
$zh = 0x10000
|
||||
$ko = 0x20000
|
||||
$WindowsVersions = @(
|
||||
@(
|
||||
@("Windows 11", "windows11"),
|
||||
@(
|
||||
"24H2 (Build 26100.1742 - 2024.10)",
|
||||
@("Windows 11 Home/Pro/Edu", 3113),
|
||||
@("Windows 11 Home China ", ($zh + 3115))
|
||||
@("Windows 11 Pro China ", ($zh + 3114))
|
||||
),
|
||||
@(
|
||||
"23H2 v2 (Build 22631.2861 - 2023.12)",
|
||||
@("Windows 11 Home/Pro/Edu", 2935),
|
||||
@("Windows 11 Home China ", ($zh + 2936))
|
||||
# Thanks to Microsoft's hare-brained decision not to treat ARM64 as a CPU arch,
|
||||
# like they did for x86 and x64, we have to handle multiple IDs for each release...
|
||||
@("Windows 11 Home/Pro/Edu", @(3113, 3131)),
|
||||
@("Windows 11 Home China ", @(3115, 3132)),
|
||||
@("Windows 11 Pro China ", @(3114, 3133))
|
||||
)
|
||||
),
|
||||
@(
|
||||
@@ -154,11 +154,21 @@ $WindowsVersions = @(
|
||||
@(
|
||||
"22H2 v1 (Build 19045.2965 - 2023.05)",
|
||||
@("Windows 10 Home/Pro/Edu", 2618),
|
||||
@("Windows 10 Home China ", ($zh + 2378))
|
||||
@("Windows 10 Home China ", 2378)
|
||||
)
|
||||
)
|
||||
@(
|
||||
@("UEFI Shell 2.2", "UEFI_SHELL 2.2"),
|
||||
@(
|
||||
"25H1 (edk2-stable202505)",
|
||||
@("Release", 0),
|
||||
@("Debug", 1)
|
||||
),
|
||||
@(
|
||||
"24H2 (edk2-stable202411)",
|
||||
@("Release", 0),
|
||||
@("Debug", 1)
|
||||
),
|
||||
@(
|
||||
"24H1 (edk2-stable202405)",
|
||||
@("Release", 0),
|
||||
@@ -349,17 +359,6 @@ function ConvertTo-ImageSource
|
||||
}
|
||||
}
|
||||
|
||||
function Throw-Error([object]$Req, [string]$Alt)
|
||||
{
|
||||
$Err = $(GetElementById -Request $Req -Id "errorModalMessage").innerText -replace "<[^>]+>" -replace "\s+", " "
|
||||
if (!$Err) {
|
||||
$Err = $Alt
|
||||
} else {
|
||||
$Err = [System.Text.Encoding]::UTF8.GetString([byte[]][char[]]$Err)
|
||||
}
|
||||
throw $Err
|
||||
}
|
||||
|
||||
# Translate a message string
|
||||
function Get-Translation([string]$Text)
|
||||
{
|
||||
@@ -384,14 +383,31 @@ function Get-Translation([string]$Text)
|
||||
return $Text
|
||||
}
|
||||
|
||||
# Some PowerShells don't have Microsoft.mshtml assembly (comes with MS Office?)
|
||||
# so we can't use ParsedHtml or IHTMLDocument[2|3] features there...
|
||||
function GetElementById([object]$Request, [string]$Id)
|
||||
# Get the underlying *native* CPU architecture
|
||||
function Get-Arch
|
||||
{
|
||||
try {
|
||||
return $Request.ParsedHtml.IHTMLDocument3_GetElementByID($Id)
|
||||
} catch {
|
||||
return $Request.AllElements | ? {$_.id -eq $Id}
|
||||
$Arch = Get-CimInstance -ClassName Win32_Processor | Select-Object -ExpandProperty Architecture
|
||||
switch($Arch) {
|
||||
0 { return "x86" }
|
||||
1 { return "MIPS" }
|
||||
2 { return "Alpha" }
|
||||
3 { return "PowerPC" }
|
||||
5 { return "ARM32" }
|
||||
6 { return "IA64" }
|
||||
9 { return "x64" }
|
||||
12 { return "ARM64" }
|
||||
default { return "Unknown"}
|
||||
}
|
||||
}
|
||||
|
||||
# Convert a Microsoft arch type code to a formal architecture name
|
||||
function Get-Arch-From-Type([int]$Type)
|
||||
{
|
||||
switch($Type) {
|
||||
0 { return "x86" }
|
||||
1 { return "x64" }
|
||||
2 { return "ARM64" }
|
||||
default { return "Unknown"}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -408,17 +424,6 @@ function Error([string]$ErrorMessage)
|
||||
$script:ExitCode = 2
|
||||
}
|
||||
}
|
||||
|
||||
function Get-RandomDate()
|
||||
{
|
||||
[DateTime]$Min = "1/1/2008"
|
||||
[DateTime]$Max = [DateTime]::Now
|
||||
|
||||
$RandomGen = new-object random
|
||||
$RandomTicks = [Convert]::ToInt64( ($Max.ticks * 1.0 - $Min.Ticks * 1.0 ) * $RandomGen.NextDouble() + $Min.Ticks * 1.0 )
|
||||
$Date = new-object DateTime($RandomTicks)
|
||||
return $Date.ToString("yyyyMMdd")
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Form
|
||||
@@ -446,25 +451,24 @@ if ($Cmd) {
|
||||
$ltrm = ""
|
||||
}
|
||||
$MaxStage = 4
|
||||
$SessionId = [guid]::NewGuid()
|
||||
# Can't reuse the same sessionId for x64 and ARM64. The Microsoft servers
|
||||
# are purposefully designed to ever process one specific download request
|
||||
# that matches the last SKUs retrieved.
|
||||
$SessionId = @($null) * 2
|
||||
$ExitCode = 100
|
||||
$Locale = $Locale
|
||||
$RequestData = @{}
|
||||
# This GUID applies to all visitors, regardless of their locale
|
||||
$RequestData["GetLangs"] = @("a8f8f489-4c7f-463a-9ca6-5cff94d8d041", "getskuinformationbyproductedition" )
|
||||
# This GUID applies to visitors of the en-US download page. Other locales may get a different GUID.
|
||||
$RequestData["GetLinks"] = @("6e2a1789-ef16-4f27-a296-74ef7ef5d96b", "GetProductDownloadLinksBySku" )
|
||||
# Create a semi-random Linux User-Agent string
|
||||
$FirefoxVersion = Get-Random -Minimum 90 -Maximum 110
|
||||
$FirefoxDate = Get-RandomDate
|
||||
$UserAgent = "Mozilla/5.0 (X11; Linux i586; rv:$FirefoxVersion.0) Gecko/$FirefoxDate Firefox/$FirefoxVersion.0"
|
||||
$Verbosity = 2
|
||||
if ($Cmd) {
|
||||
if ($GetUrl) {
|
||||
$Verbosity = 0
|
||||
} elseif (!$Verbose) {
|
||||
$Verbosity = 1
|
||||
}
|
||||
$OrgId = "y6jn8c31"
|
||||
$ProfileId = "606624d44113"
|
||||
$Verbosity = 1
|
||||
if ($Debug) {
|
||||
$Verbosity = 5
|
||||
} elseif ($Verbose) {
|
||||
$Verbosity = 2
|
||||
} elseif ($Cmd -and $GetUrl) {
|
||||
$Verbosity = 0
|
||||
}
|
||||
if (!$PlatformArch) {
|
||||
$PlatformArch = Get-Arch
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -509,13 +513,7 @@ function Check-Locale
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
}
|
||||
# Looks Microsoft are filtering our script according to the first query it performs with the spoofed user agent.
|
||||
# So, to continue this pointless cat and mouse game, we simply add an extra first query with the default user agent.
|
||||
# Also: "Hi Microsoft. You sure have A LOT OF RESOURCES TO WASTE to have assigned folks of yours to cripple scripts
|
||||
# that merely exist because you have chosen to make the user experience from your download website utterly subpar.
|
||||
# And while I am glad senpai noticed me (UwU), I feel compelled to ask: Don't you guys have better things to do?"
|
||||
Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -MaximumRedirection 0 $url | Out-Null
|
||||
Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -MaximumRedirection 0 -UserAgent $UserAgent $url | Out-Null
|
||||
} catch {
|
||||
# Of course PowerShell 7 had to BREAK $_.Exception.Status on timeouts...
|
||||
if ($_.Exception.Status -eq "Timeout" -or $_.Exception.GetType().Name -eq "TaskCanceledException") {
|
||||
@@ -525,6 +523,33 @@ function Check-Locale
|
||||
}
|
||||
}
|
||||
|
||||
function Get-Code-715-123130-Message
|
||||
{
|
||||
try {
|
||||
$url = "https://www.microsoft.com/" + $QueryLocale + "/software-download/windows11"
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
}
|
||||
$r = Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -MaximumRedirection 0 $url
|
||||
# Microsoft's handling of UTF-8 content is soooooooo *UTTERLY BROKEN*!!!
|
||||
$r = [System.Text.Encoding]::UTF8.GetString($r.RawContentStream.ToArray())
|
||||
# PowerShell 7 forces us to parse the HTML ourselves
|
||||
$r = $r -replace "`n" -replace "`r"
|
||||
$pattern = '.*<input id="msg-01" type="hidden" value="(.*?)"/>.*'
|
||||
$msg = [regex]::Match($r, $pattern).Groups[1].Value
|
||||
$msg = $msg -replace "<", "<" -replace "<[^>]+>" -replace "\s+", " "
|
||||
if (($msg -eq $null) -or !($msg -match "715-123130")) {
|
||||
throw
|
||||
}
|
||||
} catch {
|
||||
$msg = "Your IP address has been banned by Microsoft for issuing too many ISO download requests or for "
|
||||
$msg += "belonging to a region of the world where sanctions currently apply. Please try again later.`r`n"
|
||||
$msg += "If you believe this ban to be in error, you can try contacting Microsoft by referring to "
|
||||
$msg += "message code 715-123130 and session ID "
|
||||
}
|
||||
return $msg
|
||||
}
|
||||
|
||||
# Return an array of releases (e.g. 20H2, 21H1, ...) for the selected Windows version
|
||||
function Get-Windows-Releases([int]$SelectedVersion)
|
||||
{
|
||||
@@ -546,8 +571,8 @@ function Get-Windows-Editions([int]$SelectedVersion, [int]$SelectedRelease)
|
||||
foreach ($release in $WindowsVersions[$SelectedVersion][$SelectedRelease])
|
||||
{
|
||||
if ($release -is [array]) {
|
||||
if (($release[1] -lt 0x10000) -or ($Locale.StartsWith("ko") -and ($release[1] -band $ko)) -or ($Locale.StartsWith("zh") -and ($release[1] -band $zh))) {
|
||||
$editions += @(New-Object PsObject -Property @{ Edition = $release[0]; Id = $($release[1] -band 0xFFFF) })
|
||||
if (!($release[0].Contains("China")) -or ($Locale.StartsWith("zh"))) {
|
||||
$editions += @(New-Object PsObject -Property @{ Edition = $release[0]; Id = $release[1] })
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -555,86 +580,86 @@ function Get-Windows-Editions([int]$SelectedVersion, [int]$SelectedRelease)
|
||||
}
|
||||
|
||||
# Return an array of languages for the selected edition
|
||||
function Get-Windows-Languages([int]$SelectedVersion, [int]$SelectedEdition)
|
||||
function Get-Windows-Languages([int]$SelectedVersion, [object]$SelectedEdition)
|
||||
{
|
||||
$languages = @()
|
||||
$i = 0;
|
||||
if ($WindowsVersions[$SelectedVersion][0][1] -eq "WIN7") {
|
||||
foreach ($entry in $Windows7Versions[$SelectedEdition]) {
|
||||
if ($entry[0] -ne "") {
|
||||
$languages += @(New-Object PsObject -Property @{ DisplayLanguage = $entry[0]; Language = $entry[1]; Id = $i })
|
||||
$langs = @()
|
||||
if ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
||||
$langs += @(New-Object PsObject -Property @{ DisplayName = "English (US)"; Name = "en-us"; Data = @($null) })
|
||||
} else {
|
||||
$languages = [ordered]@{}
|
||||
$SessionIndex = 0
|
||||
foreach ($EditionId in $SelectedEdition) {
|
||||
$SessionId[$SessionIndex] = [guid]::NewGuid()
|
||||
# Microsoft download protection now requires the sessionId to be whitelisted through vlscppe.microsoft.com/tags
|
||||
$url = "https://vlscppe.microsoft.com/tags"
|
||||
$url += "?org_id=" + $OrgId
|
||||
$url += "&session_id=" + $SessionId[$SessionIndex]
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
}
|
||||
try {
|
||||
Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -MaximumRedirection 0 $url | Out-Null
|
||||
} catch {
|
||||
Error($_.Exception.Message)
|
||||
return @()
|
||||
}
|
||||
$url = "https://www.microsoft.com/software-download-connector/api/getskuinformationbyproductedition"
|
||||
$url += "?profile=" + $ProfileId
|
||||
$url += "&productEditionId=" + $EditionId
|
||||
$url += "&SKU=undefined"
|
||||
$url += "&friendlyFileName=undefined"
|
||||
$url += "&Locale=" + $QueryLocale
|
||||
$url += "&sessionID=" + $SessionId[$SessionIndex]
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
}
|
||||
try {
|
||||
$r = Invoke-RestMethod -UseBasicParsing -TimeoutSec $DefaultTimeout -SessionVariable "Session" $url
|
||||
if ($r -eq $null) {
|
||||
throw "Could not retrieve languages from server"
|
||||
}
|
||||
if ($Verbosity -ge 5) {
|
||||
Write-Host "=============================================================================="
|
||||
Write-Host ($r | ConvertTo-Json)
|
||||
Write-Host "=============================================================================="
|
||||
}
|
||||
if ($r.Errors) {
|
||||
throw $r.Errors[0].Value
|
||||
}
|
||||
foreach ($Sku in $r.Skus) {
|
||||
if (!$languages.Contains($Sku.Language)) {
|
||||
$languages[$Sku.Language] = @{ DisplayName = $Sku.LocalizedLanguage; Data = @() }
|
||||
}
|
||||
$languages[$Sku.Language].Data += @{ SessionIndex = $SessionIndex; SkuId = $Sku.Id }
|
||||
}
|
||||
if ($languages.Length -eq 0) {
|
||||
throw "Could not parse languages"
|
||||
}
|
||||
} catch {
|
||||
Error($_.Exception.Message)
|
||||
return @()
|
||||
}
|
||||
$SessionIndex++
|
||||
}
|
||||
# Need to convert to an array since PowerShell treats them differently from hashtable
|
||||
$i = 0
|
||||
$script:SelectedIndex = 0
|
||||
foreach($language in $languages.Keys) {
|
||||
$langs += @(New-Object PsObject -Property @{ DisplayName = $languages[$language].DisplayName; Name = $language; Data = $languages[$language].Data })
|
||||
if (Select-Language($language)) {
|
||||
$script:SelectedIndex = $i
|
||||
}
|
||||
$i++
|
||||
}
|
||||
} elseif ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
||||
$languages += @(New-Object PsObject -Property @{ DisplayLanguage = "English (US)"; Language = "en-us"; Id = 0 })
|
||||
} else {
|
||||
# Microsoft download protection now requires the sessionId to be whitelisted through vlscppe.microsoft.com/tags
|
||||
$url = "https://vlscppe.microsoft.com/tags?org_id=y6jn8c31&session_id=" + $SessionId
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
}
|
||||
try {
|
||||
Invoke-WebRequest -UseBasicParsing -TimeoutSec $DefaultTimeout -MaximumRedirection 0 -UserAgent $UserAgent $url | Out-Null
|
||||
} catch {
|
||||
Error($_.Exception.Message)
|
||||
return @()
|
||||
}
|
||||
$url = "https://www.microsoft.com/" + $QueryLocale + "/api/controls/contentinclude/html"
|
||||
$url += "?pageId=" + $RequestData["GetLangs"][0]
|
||||
$url += "&host=www.microsoft.com"
|
||||
$url += "&segments=software-download," + $WindowsVersions[$SelectedVersion][0][1]
|
||||
$url += "&query=&action=" + $RequestData["GetLangs"][1]
|
||||
$url += "&sessionId=" + $SessionId
|
||||
$url += "&productEditionId=" + [Math]::Abs($SelectedEdition)
|
||||
$url += "&sdVersion=2"
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
}
|
||||
|
||||
$script:SelectedIndex = 0
|
||||
try {
|
||||
$r = Invoke-WebRequest -Method Post -UseBasicParsing -TimeoutSec $DefaultTimeout -UserAgent $UserAgent -SessionVariable "Session" $url
|
||||
if ($r -match "errorModalMessage") {
|
||||
Throw-Error -Req $r -Alt "Could not retrieve languages from server"
|
||||
}
|
||||
$r = $r -replace "`n" -replace "`r"
|
||||
$pattern = '.*<select id="product-languages"[^>]*>(.*)</select>.*'
|
||||
$html = [regex]::Match($r, $pattern).Groups[1].Value
|
||||
# Go through an XML conversion to keep all PowerShells happy...
|
||||
$html = $html.Replace("selected value", "value")
|
||||
$html = "<options>" + $html + "</options>"
|
||||
$xml = [xml]$html
|
||||
foreach ($var in $xml.options.option) {
|
||||
$json = $var.value | ConvertFrom-Json;
|
||||
if ($json) {
|
||||
$languages += @(New-Object PsObject -Property @{ DisplayLanguage = $var.InnerText; Language = $json.language; Id = $json.id })
|
||||
if (Select-Language($json.language)) {
|
||||
$script:SelectedIndex = $i
|
||||
}
|
||||
$i++
|
||||
}
|
||||
}
|
||||
if ($languages.Length -eq 0) {
|
||||
Throw-Error -Req $r -Alt "Could not parse languages"
|
||||
}
|
||||
} catch {
|
||||
Error($_.Exception.Message)
|
||||
return @()
|
||||
}
|
||||
}
|
||||
return $languages
|
||||
return $langs
|
||||
}
|
||||
|
||||
# Return an array of download links for each supported arch
|
||||
function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease, [int]$SelectedEdition, [string]$SkuId, [string]$LanguageName)
|
||||
function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease, [object]$SelectedEdition, [PSCustomObject]$SelectedLanguage)
|
||||
{
|
||||
$links = @()
|
||||
if ($WindowsVersions[$SelectedVersion][0][1] -eq "WIN7") {
|
||||
foreach ($Version in $Windows7Versions[$SelectedEdition][$SkuId][2]) {
|
||||
$links += @(New-Object PsObject -Property @{ Type = $Version[0]; Link = $Version[1] })
|
||||
}
|
||||
} elseif ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
||||
if ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
||||
$tag = $WindowsVersions[$SelectedVersion][$SelectedRelease][0].Split(' ')[0]
|
||||
$shell_version = $WindowsVersions[$SelectedVersion][0][1].Split(' ')[1]
|
||||
$url = "https://github.com/pbatard/UEFI-Shell/releases/download/" + $tag
|
||||
@@ -658,69 +683,62 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
||||
$archs += $sep + $arch
|
||||
$sep = ", "
|
||||
}
|
||||
$links += @(New-Object PsObject -Property @{ Type = $archs; Link = $link })
|
||||
$links += @(New-Object PsObject -Property @{ Arch = $archs; Url = $link })
|
||||
} catch {
|
||||
Error($_.Exception.Message)
|
||||
return @()
|
||||
}
|
||||
} else {
|
||||
$url = "https://www.microsoft.com/" + $QueryLocale + "/api/controls/contentinclude/html"
|
||||
$url += "?pageId=" + $RequestData["GetLinks"][0]
|
||||
$url += "&host=www.microsoft.com"
|
||||
$url += "&segments=software-download," + $WindowsVersions[$SelectedVersion][0][1]
|
||||
$url += "&query=&action=" + $RequestData["GetLinks"][1]
|
||||
$url += "&sessionId=" + $SessionId
|
||||
$url += "&skuId=" + $SkuId
|
||||
$url += "&language=" + $LanguageName
|
||||
$url += "&sdVersion=2"
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
foreach ($Entry in $SelectedLanguage.Data) {
|
||||
$url = "https://www.microsoft.com/software-download-connector/api/GetProductDownloadLinksBySku"
|
||||
$url += "?profile=" + $ProfileId
|
||||
$url += "&productEditionId=undefined"
|
||||
$url += "&SKU=" + $Entry.SkuId
|
||||
$url += "&friendlyFileName=undefined"
|
||||
$url += "&Locale=" + $QueryLocale
|
||||
$url += "&sessionID=" + $SessionId[$Entry.SessionIndex]
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
}
|
||||
try {
|
||||
# Must add a referer for this request, else Microsoft's servers may deny it
|
||||
$ref = "https://www.microsoft.com/software-download/windows11"
|
||||
$r = Invoke-RestMethod -Headers @{ "Referer" = $ref } -UseBasicParsing -TimeoutSec $DefaultTimeout -SessionVariable "Session" $url
|
||||
if ($r -eq $null) {
|
||||
throw "Could not retrieve architectures from server"
|
||||
}
|
||||
if ($Verbosity -ge 5) {
|
||||
Write-Host "=============================================================================="
|
||||
Write-Host ($r | ConvertTo-Json)
|
||||
Write-Host "=============================================================================="
|
||||
}
|
||||
if ($r.Errors) {
|
||||
if ( $r.Errors[0].Type -eq 9) {
|
||||
$msg = Get-Code-715-123130-Message
|
||||
throw $msg + $SessionId[$Entry.SessionIndex] + "."
|
||||
} else {
|
||||
throw $r.Errors[0].Value
|
||||
}
|
||||
}
|
||||
foreach ($ProductDownloadOption in $r.ProductDownloadOptions) {
|
||||
$links += @(New-Object PsObject -Property @{ Arch = (Get-Arch-From-Type $ProductDownloadOption.DownloadType); Url = $ProductDownloadOption.Uri })
|
||||
}
|
||||
if ($links.Length -eq 0) {
|
||||
throw "Could not retrieve ISO download links"
|
||||
}
|
||||
} catch {
|
||||
Error($_.Exception.Message)
|
||||
return @()
|
||||
}
|
||||
$SessionIndex++
|
||||
}
|
||||
|
||||
$i = 0
|
||||
$script:SelectedIndex = 0
|
||||
|
||||
try {
|
||||
$Is64 = [Environment]::Is64BitOperatingSystem
|
||||
# Must add a referer for this request, else Microsoft's servers will deny it
|
||||
$ref = "https://www.microsoft.com/software-download/windows11"
|
||||
$r = Invoke-WebRequest -Method Post -Headers @{ "Referer" = $ref } -UseBasicParsing -TimeoutSec $DefaultTimeout -UserAgent $UserAgent -WebSession $Session $url
|
||||
if ($r -match "errorModalMessage") {
|
||||
$Alt = [regex]::Match($r.Content, '<p id="errorModalMessage">(.+?)<\/p>').Groups[1].Value -replace "<[^>]+>" -replace "\s+", " " -replace "\?\?\?", "-"
|
||||
$Alt = [System.Text.Encoding]::UTF8.GetString([byte[]][char[]]$Alt)
|
||||
if (!$Alt) {
|
||||
$Alt = "Could not retrieve architectures from server"
|
||||
} elseif ($Alt -match "715-123130") {
|
||||
$Alt += " " + $SessionId + "."
|
||||
}
|
||||
Throw-Error -Req $r -Alt $Alt
|
||||
foreach($link in $links) {
|
||||
if ($link.Arch -eq $PlatformArch) {
|
||||
$script:SelectedIndex = $i
|
||||
}
|
||||
$pattern = '(?s)(<input.*?></input>)'
|
||||
ForEach-Object { [regex]::Matches($r, $pattern) } | ForEach-Object { $html += $_.Groups[1].value }
|
||||
# Need to fix the HTML and JSON data so that it is well-formed
|
||||
$html = $html.Replace("class=product-download-hidden", "")
|
||||
$html = $html.Replace("type=hidden", "")
|
||||
$html = $html.Replace(" ", " ")
|
||||
$html = $html.Replace("IsoX86", ""x86"")
|
||||
$html = $html.Replace("IsoX64", ""x64"")
|
||||
$html = "<inputs>" + $html + "</inputs>"
|
||||
$xml = [xml]$html
|
||||
foreach ($var in $xml.inputs.input) {
|
||||
$json = $var.value | ConvertFrom-Json;
|
||||
if ($json) {
|
||||
if (($Is64 -and $json.DownloadType -eq "x64") -or (!$Is64 -and $json.DownloadType -eq "x86")) {
|
||||
$script:SelectedIndex = $i
|
||||
}
|
||||
$links += @(New-Object PsObject -Property @{ Type = $json.DownloadType; Link = $json.Uri })
|
||||
$i++
|
||||
}
|
||||
}
|
||||
if ($links.Length -eq 0) {
|
||||
Throw-Error -Req $r -Alt "Could not retrieve ISO download links"
|
||||
}
|
||||
} catch {
|
||||
Error($_.Exception.Message)
|
||||
return @()
|
||||
$i++
|
||||
}
|
||||
}
|
||||
return $links
|
||||
@@ -854,21 +872,21 @@ if ($Cmd) {
|
||||
$Lang = $Lang.replace(')', '\)')
|
||||
}
|
||||
$i = 0
|
||||
$winLanguage = $null
|
||||
foreach ($language in $languages) {
|
||||
if ($Lang -eq "List") {
|
||||
Write-Host " -" $language.Language
|
||||
} elseif ((!$Lang -and $script:SelectedIndex -eq $i) -or ($Lang -and $language.Language -match $Lang)) {
|
||||
Write-Host " -" $language.Name
|
||||
} elseif ((!$Lang -and $script:SelectedIndex -eq $i) -or ($Lang -and $language.Name -match $Lang)) {
|
||||
if (!$Lang -and $Verbosity -ge 1) {
|
||||
Write-Host "No language specified (-Lang). Defaulting to '$($language.Language)'."
|
||||
Write-Host "No language specified (-Lang). Defaulting to '$($language.Name)'."
|
||||
}
|
||||
$Selected += ", " + $language.Language
|
||||
$winLanguageId = $language.Id
|
||||
$winLanguageName = $language.Language
|
||||
$Selected += ", " + $language.Name
|
||||
$winLanguage = $language
|
||||
break;
|
||||
}
|
||||
$i++
|
||||
}
|
||||
if (!$winLanguageId -or !$winLanguageName) {
|
||||
if ($winLanguage -eq $null) {
|
||||
if ($Lang -ne "List") {
|
||||
Write-Host "Invalid Windows language provided."
|
||||
Write-Host "Use '-Lang List' for a list of available languages or remove the option to use system default."
|
||||
@@ -877,7 +895,7 @@ if ($Cmd) {
|
||||
}
|
||||
|
||||
# Language selection => Request and populate Arch download links
|
||||
$links = Get-Windows-Download-Links $winVersionId $winReleaseId $winEditionId $winLanguageId $winLanguageName
|
||||
$links = Get-Windows-Download-Links $winVersionId $winReleaseId $winEditionId $winLanguage
|
||||
if (!$links) {
|
||||
exit 3
|
||||
}
|
||||
@@ -887,12 +905,12 @@ if ($Cmd) {
|
||||
$i = 0
|
||||
foreach ($link in $links) {
|
||||
if ($Arch -eq "List") {
|
||||
Write-Host " -" $link.Type
|
||||
} elseif ((!$Arch -and $script:SelectedIndex -eq $i) -or ($Arch -and $link.Type -match $Arch)) {
|
||||
Write-Host " -" $link.Arch
|
||||
} elseif ((!$Arch -and $script:SelectedIndex -eq $i) -or ($Arch -and $link.Arch -match $Arch)) {
|
||||
if (!$Arch -and $Verbosity -ge 1) {
|
||||
Write-Host "No architecture specified (-Arch). Defaulting to '$($link.Type)'."
|
||||
Write-Host "No architecture specified (-Arch). Defaulting to '$($link.Arch)'."
|
||||
}
|
||||
$Selected += ", [" + $link.Type + "]"
|
||||
$Selected += ", [" + $link.Arch + "]"
|
||||
$winLink = $link
|
||||
break;
|
||||
}
|
||||
@@ -908,11 +926,11 @@ if ($Cmd) {
|
||||
|
||||
# Arch selection => Return selected download link
|
||||
if ($GetUrl) {
|
||||
Return $winLink.Link
|
||||
return $winLink.Url
|
||||
$ExitCode = 0
|
||||
} else {
|
||||
Write-Host "Selected: $Selected"
|
||||
$ExitCode = Process-Download-Link $winLink.Link
|
||||
$ExitCode = Process-Download-Link $winLink.Url
|
||||
}
|
||||
|
||||
# Clean up & exit
|
||||
@@ -986,7 +1004,7 @@ $Continue.add_click({
|
||||
if ($languages.Length -eq 0) {
|
||||
break
|
||||
}
|
||||
$script:Language = Add-Entry $Stage "Language" $languages "DisplayLanguage"
|
||||
$script:Language = Add-Entry $Stage "Language" $languages "DisplayName"
|
||||
$Language.SelectedIndex = $script:SelectedIndex
|
||||
$XMLForm.Title = $AppTitle
|
||||
}
|
||||
@@ -994,11 +1012,11 @@ $Continue.add_click({
|
||||
4 { # Language selection => Request and populate Arch download links
|
||||
$XMLForm.Title = Get-Translation($English[12])
|
||||
Refresh-Control($XMLForm)
|
||||
$links = Get-Windows-Download-Links $WindowsVersion.SelectedValue.Index $WindowsRelease.SelectedValue.Index $ProductEdition.SelectedValue.Id $Language.SelectedValue.Id $Language.SelectedValue.Language
|
||||
$links = Get-Windows-Download-Links $WindowsVersion.SelectedValue.Index $WindowsRelease.SelectedValue.Index $ProductEdition.SelectedValue.Id $Language.SelectedValue
|
||||
if ($links.Length -eq 0) {
|
||||
break
|
||||
}
|
||||
$script:Architecture = Add-Entry $Stage "Architecture" $links "Type"
|
||||
$script:Architecture = Add-Entry $Stage "Architecture" $links "Arch"
|
||||
if ($PipeName) {
|
||||
$XMLForm.Height += $dh / 2;
|
||||
$Margin = $Continue.Margin
|
||||
@@ -1020,7 +1038,7 @@ $Continue.add_click({
|
||||
}
|
||||
|
||||
5 { # Arch selection => Return selected download link
|
||||
$script:ExitCode = Process-Download-Link $Architecture.SelectedValue.Link
|
||||
$script:ExitCode = Process-Download-Link $Architecture.SelectedValue.Url
|
||||
$XMLForm.Close()
|
||||
}
|
||||
}
|
||||
@@ -1068,10 +1086,10 @@ $XMLForm.ShowDialog() | Out-Null
|
||||
exit $ExitCode
|
||||
|
||||
# SIG # Begin signature block
|
||||
# MIItQQYJKoZIhvcNAQcCoIItMjCCLS4CAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||
# MIIteQYJKoZIhvcNAQcCoIItajCCLWYCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCJlI5VvIbtLOsL
|
||||
# YjfXZZdz+M6wI/NYZuo6Wq1TdDZsW6CCEkAwggVvMIIEV6ADAgECAhBI/JO0YFWU
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAyD9EfCX0lJe6x
|
||||
# 83kEpMG1UAMbENelXYurWhqLzco2zKCCEkAwggVvMIIEV6ADAgECAhBI/JO0YFWU
|
||||
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
||||
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
|
||||
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
|
||||
@@ -1168,146 +1186,147 @@ exit $ExitCode
|
||||
# 4a6KRpYwLMYE9/ZBEBP7JpfiMt42q+QF6fyS8xauGiOGBOZW4ch7Wh+GBoe3JZUu
|
||||
# UPC4wZDC9LeRKz/otodtloaTEnW9YE9gPmfRttMWaNsQTg6y5sc74qLoVY0RSqcW
|
||||
# B2KScXAjuVHVkJJcOoPSuLoTjOhK3Ug4XbQmRypdteoizdTSnONGmW84RJyXquzi
|
||||
# rIjw9CnLTggrZiYi9EZTo7URWNaARqLbSFpu0VMkdOBpWdXq5F6x6jslMYIaVzCC
|
||||
# GlMCAQEwazBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVk
|
||||
# rIjw9CnLTggrZiYi9EZTo7URWNaARqLbSFpu0VMkdOBpWdXq5F6x6jslMYIajzCC
|
||||
# GosCAQEwazBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVk
|
||||
# MS4wLAYDVQQDEyVTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0EgRVYgUjM2
|
||||
# AhA3xQo8HaADcccNx8YmkC/lMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIB
|
||||
# DDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO
|
||||
# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIDIN5nW9OQ4lXuZ9As5Ejw6w
|
||||
# tQUHNzdhmDS6dunIabNzMA0GCSqGSIb3DQEBAQUABIICAD3ObZd7TAmgIvoJItbh
|
||||
# qL/SiYbCDQGi7QR6qYuxaW7EiW3cgNSTwhTOBbS97HXRJyOd03DKEkM/uf2Ar1J2
|
||||
# UtO1aLDZ3zQ4FylmQ1dbK20DPOo2M3TRvucp7D/NfOxgbpBHNhUIgJaj+tRNIY/+
|
||||
# HdzXDLpE99OF5chJaTPEEWYV2Yj+jqsfw/9jLs2RRhK830yzXRXykD3GxUiekYt/
|
||||
# +OppQxNcQSG6UM9ce86Rmd+xQIb6H+G73lktATmKtJEoLCmjTWpBAjGFGi8cTrr2
|
||||
# VO738JK/dks5TGR4EZ9Die4sveBvJnUObiiNnUM0Q4yavvat4meOL59nOBVtsKJr
|
||||
# ZBHn/q2Sw6/8COeoNkHQnSlo+Yr77DUk7YGc0EqsZC6TEtM8B48+xTWVdbJ0upe5
|
||||
# PXrjWR1Z/brQNrATBwBa9Y/dymV5XJQLDHiTIoct4Ah7FbTbxrC4Sfi51cGKEeyy
|
||||
# sm3parVqRfCsUG6Veq6PvyluuH+qDegeW6zgViQaT6V5HwjZ1zOJDgfkMkNFa23b
|
||||
# 3nlWl0L1Vo1IKfHTAHi/aHIRBhYey/VO7YUdPhWB0uCuIQqKHdgDuvqSA1+XZUjB
|
||||
# YaUkJoHj3nxHE7vvwnFO/vAgSwZPYVWnbEuC0XcQCXxF8ED+1ih4X5wIRsgt0gn5
|
||||
# QyBtdqA/9sZdPEq07kmSRwanoYIXPzCCFzsGCisGAQQBgjcDAwExghcrMIIXJwYJ
|
||||
# KoZIhvcNAQcCoIIXGDCCFxQCAQMxDzANBglghkgBZQMEAgEFADB3BgsqhkiG9w0B
|
||||
# CRABBKBoBGYwZAIBAQYJYIZIAYb9bAcBMDEwDQYJYIZIAWUDBAIBBQAEIDZeGyLf
|
||||
# zRIJcs4QsDJU9cUrKF9CmwqsMDKiqXhPR5JTAhBdxC5QehiIPMzud7fmiCWZGA8y
|
||||
# MDI0MTAwMTIwMTczMFqgghMJMIIGwjCCBKqgAwIBAgIQBUSv85SdCDmmv9s/X+Vh
|
||||
# FjANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNl
|
||||
# cnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5NiBT
|
||||
# SEEyNTYgVGltZVN0YW1waW5nIENBMB4XDTIzMDcxNDAwMDAwMFoXDTM0MTAxMzIz
|
||||
# NTk1OVowSDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSAw
|
||||
# HgYDVQQDExdEaWdpQ2VydCBUaW1lc3RhbXAgMjAyMzCCAiIwDQYJKoZIhvcNAQEB
|
||||
# BQADggIPADCCAgoCggIBAKNTRYcdg45brD5UsyPgz5/X5dLnXaEOCdwvSKOXejsq
|
||||
# nGfcYhVYwamTEafNqrJq3RApih5iY2nTWJw1cb86l+uUUI8cIOrHmjsvlmbjaedp
|
||||
# /lvD1isgHMGXlLSlUIHyz8sHpjBoyoNC2vx/CSSUpIIa2mq62DvKXd4ZGIX7ReoN
|
||||
# YWyd/nFexAaaPPDFLnkPG2ZS48jWPl/aQ9OE9dDH9kgtXkV1lnX+3RChG4PBuOZS
|
||||
# lbVH13gpOWvgeFmX40QrStWVzu8IF+qCZE3/I+PKhu60pCFkcOvV5aDaY7Mu6QXu
|
||||
# qvYk9R28mxyyt1/f8O52fTGZZUdVnUokL6wrl76f5P17cz4y7lI0+9S769SgLDSb
|
||||
# 495uZBkHNwGRDxy1Uc2qTGaDiGhiu7xBG3gZbeTZD+BYQfvYsSzhUa+0rRUGFOpi
|
||||
# CBPTaR58ZE2dD9/O0V6MqqtQFcmzyrzXxDtoRKOlO0L9c33u3Qr/eTQQfqZcClhM
|
||||
# AD6FaXXHg2TWdc2PEnZWpST618RrIbroHzSYLzrqawGw9/sqhux7UjipmAmhcbJs
|
||||
# ca8+uG+W1eEQE/5hRwqM/vC2x9XH3mwk8L9CgsqgcT2ckpMEtGlwJw1Pt7U20clf
|
||||
# CKRwo+wK8REuZODLIivK8SgTIUlRfgZm0zu++uuRONhRB8qUt+JQofM604qDy0B7
|
||||
# AgMBAAGjggGLMIIBhzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAWBgNV
|
||||
# HSUBAf8EDDAKBggrBgEFBQcDCDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglghkgB
|
||||
# hv1sBwEwHwYDVR0jBBgwFoAUuhbZbU2FL3MpdpovdYxqII+eyG8wHQYDVR0OBBYE
|
||||
# FKW27xPn783QZKHVVqllMaPe1eNJMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
|
||||
# cmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFJTQTQwOTZTSEEyNTZU
|
||||
# aW1lU3RhbXBpbmdDQS5jcmwwgZAGCCsGAQUFBwEBBIGDMIGAMCQGCCsGAQUFBzAB
|
||||
# hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wWAYIKwYBBQUHMAKGTGh0dHA6Ly9j
|
||||
# YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFJTQTQwOTZTSEEy
|
||||
# NTZUaW1lU3RhbXBpbmdDQS5jcnQwDQYJKoZIhvcNAQELBQADggIBAIEa1t6gqbWY
|
||||
# F7xwjU+KPGic2CX/yyzkzepdIpLsjCICqbjPgKjZ5+PF7SaCinEvGN1Ott5s1+Fg
|
||||
# nCvt7T1IjrhrunxdvcJhN2hJd6PrkKoS1yeF844ektrCQDifXcigLiV4JZ0qBXqE
|
||||
# KZi2V3mP2yZWK7Dzp703DNiYdk9WuVLCtp04qYHnbUFcjGnRuSvExnvPnPp44pMa
|
||||
# dqJpddNQ5EQSviANnqlE0PjlSXcIWiHFtM+YlRpUurm8wWkZus8W8oM3NG6wQSbd
|
||||
# 3lqXTzON1I13fXVFoaVYJmoDRd7ZULVQjK9WvUzF4UbFKNOt50MAcN7MmJ4ZiQPq
|
||||
# 1JE3701S88lgIcRWR+3aEUuMMsOI5ljitts++V+wQtaP4xeR0arAVeOGv6wnLEHQ
|
||||
# mjNKqDbUuXKWfpd5OEhfysLcPTLfddY2Z1qJ+Panx+VPNTwAvb6cKmx5AdzaROY6
|
||||
# 3jg7B145WPR8czFVoIARyxQMfq68/qTreWWqaNYiyjvrmoI1VygWy2nyMpqy0tg6
|
||||
# uLFGhmu6F/3Ed2wVbK6rr3M66ElGt9V/zLY4wNjsHPW2obhDLN9OTH0eaHDAdwrU
|
||||
# AuBcYLso/zjlUlrWrBciI0707NMX+1Br/wd3H3GXREHJuEbTbDJ8WC9nR2XlG3O2
|
||||
# mflrLAZG70Ee8PBf4NvZrZCARK+AEEGKMIIGrjCCBJagAwIBAgIQBzY3tyRUfNhH
|
||||
# rP0oZipeWzANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMM
|
||||
# RGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQD
|
||||
# ExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMjIwMzIzMDAwMDAwWhcNMzcw
|
||||
# MzIyMjM1OTU5WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIElu
|
||||
# Yy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5NiBTSEEyNTYg
|
||||
# VGltZVN0YW1waW5nIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
|
||||
# xoY1BkmzwT1ySVFVxyUDxPKRN6mXUaHW0oPRnkyibaCwzIP5WvYRoUQVQl+kiPNo
|
||||
# +n3znIkLf50fng8zH1ATCyZzlm34V6gCff1DtITaEfFzsbPuK4CEiiIY3+vaPcQX
|
||||
# f6sZKz5C3GeO6lE98NZW1OcoLevTsbV15x8GZY2UKdPZ7Gnf2ZCHRgB720RBidx8
|
||||
# ald68Dd5n12sy+iEZLRS8nZH92GDGd1ftFQLIWhuNyG7QKxfst5Kfc71ORJn7w6l
|
||||
# Y2zkpsUdzTYNXNXmG6jBZHRAp8ByxbpOH7G1WE15/tePc5OsLDnipUjW8LAxE6lX
|
||||
# KZYnLvWHpo9OdhVVJnCYJn+gGkcgQ+NDY4B7dW4nJZCYOjgRs/b2nuY7W+yB3iIU
|
||||
# 2YIqx5K/oN7jPqJz+ucfWmyU8lKVEStYdEAoq3NDzt9KoRxrOMUp88qqlnNCaJ+2
|
||||
# RrOdOqPVA+C/8KI8ykLcGEh/FDTP0kyr75s9/g64ZCr6dSgkQe1CvwWcZklSUPRR
|
||||
# 8zZJTYsg0ixXNXkrqPNFYLwjjVj33GHek/45wPmyMKVM1+mYSlg+0wOI/rOP015L
|
||||
# dhJRk8mMDDtbiiKowSYI+RQQEgN9XyO7ZONj4KbhPvbCdLI/Hgl27KtdRnXiYKNY
|
||||
# CQEoAA6EVO7O6V3IXjASvUaetdN2udIOa5kM0jO0zbECAwEAAaOCAV0wggFZMBIG
|
||||
# A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLoW2W1NhS9zKXaaL3WMaiCPnshv
|
||||
# MB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIB
|
||||
# hjATBgNVHSUEDDAKBggrBgEFBQcDCDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUH
|
||||
# MAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDov
|
||||
# L2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQw
|
||||
# QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lD
|
||||
# ZXJ0VHJ1c3RlZFJvb3RHNC5jcmwwIAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZI
|
||||
# AYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQB9WY7Ak7ZvmKlEIgF+ZtbYIULhsBgu
|
||||
# EE0TzzBTzr8Y+8dQXeJLKftwig2qKWn8acHPHQfpPmDI2AvlXFvXbYf6hCAlNDFn
|
||||
# zbYSlm/EUExiHQwIgqgWvalWzxVzjQEiJc6VaT9Hd/tydBTX/6tPiix6q4XNQ1/t
|
||||
# YLaqT5Fmniye4Iqs5f2MvGQmh2ySvZ180HAKfO+ovHVPulr3qRCyXen/KFSJ8NWK
|
||||
# cXZl2szwcqMj+sAngkSumScbqyQeJsG33irr9p6xeZmBo1aGqwpFyd/EjaDnmPv7
|
||||
# pp1yr8THwcFqcdnGE4AJxLafzYeHJLtPo0m5d2aR8XKc6UsCUqc3fpNTrDsdCEkP
|
||||
# lM05et3/JWOZJyw9P2un8WbDQc1PtkCbISFA0LcTJM3cHXg65J6t5TRxktcma+Q4
|
||||
# c6umAU+9Pzt4rUyt+8SVe+0KXzM5h0F4ejjpnOHdI/0dKNPH+ejxmF/7K9h+8kad
|
||||
# dSweJywm228Vex4Ziza4k9Tm8heZWcpw8De/mADfIBZPJ/tgZxahZrrdVcA6KYaw
|
||||
# mKAr7ZVBtzrVFZgxtGIJDwq9gdkT/r+k0fNX2bwE+oLeMt8EifAAzV3C+dAjfwAL
|
||||
# 5HYCJtnwZXZCpimHCUcr5n8apIUP/JiW9lVUKx+A+sDyDivl1vupL0QVSucTDh3b
|
||||
# NzgaoSv27dZ8/DCCBY0wggR1oAMCAQICEA6bGI750C3n79tQ4ghAGFowDQYJKoZI
|
||||
# hvcNAQEMBQAwZTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
||||
# MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMbRGlnaUNlcnQgQXNz
|
||||
# dXJlZCBJRCBSb290IENBMB4XDTIyMDgwMTAwMDAwMFoXDTMxMTEwOTIzNTk1OVow
|
||||
# YjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQ
|
||||
# d3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGlnaUNlcnQgVHJ1c3RlZCBSb290
|
||||
# IEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAv+aQc2jeu+RdSjww
|
||||
# IjBpM+zCpyUuySE98orYWcLhKac9WKt2ms2uexuEDcQwH/MbpDgW61bGl20dq7J5
|
||||
# 8soR0uRf1gU8Ug9SH8aeFaV+vp+pVxZZVXKvaJNwwrK6dZlqczKU0RBEEC7fgvMH
|
||||
# hOZ0O21x4i0MG+4g1ckgHWMpLc7sXk7Ik/ghYZs06wXGXuxbGrzryc/NrDRAX7F6
|
||||
# Zu53yEioZldXn1RYjgwrt0+nMNlW7sp7XeOtyU9e5TXnMcvak17cjo+A2raRmECQ
|
||||
# ecN4x7axxLVqGDgDEI3Y1DekLgV9iPWCPhCRcKtVgkEy19sEcypukQF8IUzUvK4b
|
||||
# A3VdeGbZOjFEmjNAvwjXWkmkwuapoGfdpCe8oU85tRFYF/ckXEaPZPfBaYh2mHY9
|
||||
# WV1CdoeJl2l6SPDgohIbZpp0yt5LHucOY67m1O+SkjqePdwA5EUlibaaRBkrfsCU
|
||||
# tNJhbesz2cXfSwQAzH0clcOP9yGyshG3u3/y1YxwLEFgqrFjGESVGnZifvaAsPvo
|
||||
# ZKYz0YkH4b235kOkGLimdwHhD5QMIR2yVCkliWzlDlJRR3S+Jqy2QXXeeqxfjT/J
|
||||
# vNNBERJb5RBQ6zHFynIWIgnffEx1P2PsIV/EIFFrb7GrhotPwtZFX50g/KEexcCP
|
||||
# orF+CiaZ9eRpL5gdLfXZqbId5RsCAwEAAaOCATowggE2MA8GA1UdEwEB/wQFMAMB
|
||||
# Af8wHQYDVR0OBBYEFOzX44LScV1kTN8uZz/nupiuHA9PMB8GA1UdIwQYMBaAFEXr
|
||||
# oq/0ksuCMS1Ri6enIZ3zbcgPMA4GA1UdDwEB/wQEAwIBhjB5BggrBgEFBQcBAQRt
|
||||
# MGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEF
|
||||
# BQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
|
||||
# ZElEUm9vdENBLmNydDBFBgNVHR8EPjA8MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdp
|
||||
# Y2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMBEGA1UdIAQKMAgw
|
||||
# BgYEVR0gADANBgkqhkiG9w0BAQwFAAOCAQEAcKC/Q1xV5zhfoKN0Gz22Ftf3v1cH
|
||||
# vZqsoYcs7IVeqRq7IviHGmlUIu2kiHdtvRoU9BNKei8ttzjv9P+Aufih9/Jy3iS8
|
||||
# UgPITtAq3votVs/59PesMHqai7Je1M/RQ0SbQyHrlnKhSLSZy51PpwYDE3cnRNTn
|
||||
# f+hZqPC/Lwum6fI0POz3A8eHqNJMQBk1RmppVLC4oVaO7KTVPeix3P0c2PR3WlxU
|
||||
# jG/voVA9/HYJaISfb8rbII01YBwCA8sgsKxYoA5AY8WYIsGyWfVVa88nq2x2zm8j
|
||||
# LfR+cWojayL/ErhULSd+2DrZ8LaHlv1b0VysGMNNn3O3AamfV6peKOK5lDGCA3Yw
|
||||
# ggNyAgEBMHcwYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMu
|
||||
# MTswOQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hBMjU2IFRp
|
||||
# bWVTdGFtcGluZyBDQQIQBUSv85SdCDmmv9s/X+VhFjANBglghkgBZQMEAgEFAKCB
|
||||
# 0TAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI0
|
||||
# MTAwMTIwMTczMFowKwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQUZvArMsLCyQ+CXc6q
|
||||
# isnGTxmcz0AwLwYJKoZIhvcNAQkEMSIEIGxGRlXpWM/D5umz9CwjOrmUMbOU/A/l
|
||||
# ZwCTgv8hu+ouMDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEINL25G3tdCLM0dRAV2hB
|
||||
# Nm+CitpVmq4zFq9NGprUDHgoMA0GCSqGSIb3DQEBAQUABIICAAbIDRfdd77VBo0k
|
||||
# KxEsAvl17hj5PIpNVjbFSx5D9TsxLyDt7PF8hbWewLUyutQsxQmTkZLOLtvp/1H7
|
||||
# aEkngvWtE8inEvbMbnZCz9bEmneTBEY5C3hmZ0CxO55Pvl+ePSFPPX0ytOdQZal8
|
||||
# Gw+hWBev7cU+L3mLGVSddZBis1Fqe+tFiUgF5096LdCsKZyxy5JonhIH/GuR14Cw
|
||||
# zAVKnX6ugMQLFiAFIzYw4oPmWzh1oovcpgM4h5Z/gQvlQOd/fQF0VvDLQjv0JQ0B
|
||||
# UT6kXzlTu3+11Kca3cleh0Ud6sAJqvem8CrDzbUeAj7HfYtcFBSLT1i+wuBsONqt
|
||||
# +D76AzgnTvJyMP7/VxrignI3Y/S84SU5O9/DPDOePPeuuWNboPxuJqJk9vgpLzdM
|
||||
# aZJZVKoXref4xc8rDfweUFt4DY926fRoTmxptOPJuHb7mLy8f7hXC83nI5E6OCdH
|
||||
# ygaHz743fiAEe7nd9ymbVN9EJb9qSsNe4/PUPG6aYTIt1VpvmVvNPcOY218VCOdQ
|
||||
# csfFR1VHuSsbMxHMaP7dE8x2xMgNQ5bg2P4XgRtf+DI2P6SRwHpXZ8DZj4FOChwp
|
||||
# 35qU4fs6fv6ZJAxavxfrdxSLBJqGT7ZeAGYugwAK0ml7oQA11FCm08r0wtP1YBPb
|
||||
# 6LDV0Dy80Fk83GuFMh4qTM35kEmL
|
||||
# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIG0D6v+Xe1Sks8mmJujcNm95
|
||||
# 3bc/RLY5rlt1517igHlqMA0GCSqGSIb3DQEBAQUABIICAFUwPNNSVsHbMJ19wvW7
|
||||
# Wr8JsO58p3A97jQCskIk8pIrekI/YnX59cFsTmc+dmZcslxjkrL8Qymh6ZHJsph3
|
||||
# qP99AK8Kq4GqlkC1PO+YEmRTXlGDyZbOU/c/r5JnB6DBA6VZCLAb2xf2ArGsP/nQ
|
||||
# 4TIWSIvRR0A1pm3OscomB1gfJnC5aCTYNklRKZmYgjvyzewvcJq2z76Lna+2MsSO
|
||||
# Z+/hzvY/i1Go+jJWX5L4v99ZhOFHkCa9GEo3gB9qmZ5OYxrAxQLJRyX7EE/9K/0h
|
||||
# BKjqLWmtJZLlnLQCUVZwIwBA94WKpNhiyQbn1I4PgnCbllMhh798Ie/Leg9c+vRy
|
||||
# gicR2DGo8xnwhQ8akYws6QnGy+ACQTkePI/XQ4sP2Zrbwz4ci7+BO2cogoSd4R9j
|
||||
# 1MvkxQeosaS8eCH4lHhN47ljTvGD0Nwzz4em4CG4Dxa3ojOuGCLXJlbpmXEBlSFw
|
||||
# Ij+y2pFz4EgWZ0EXSbtVcMUB+BKXm7RPk789mDKPhYkXroG4vQZ6vMxTZ6CaWBgA
|
||||
# CARiG6Bt5en84eJU3+UivE7w2l2qP3wMmFsmo6z3wca/AtzeUixJUzZUr2lXsgpL
|
||||
# 11Zya665uZQ605wSyjZAs5h9WqaM13ZhXlZkDKXrx/BM+5hNGBHJqrZchL7kHBtP
|
||||
# ysRp3TbdAcBddNKq5NYrOWdKoYIXdzCCF3MGCisGAQQBgjcDAwExghdjMIIXXwYJ
|
||||
# KoZIhvcNAQcCoIIXUDCCF0wCAQMxDzANBglghkgBZQMEAgEFADB4BgsqhkiG9w0B
|
||||
# CRABBKBpBGcwZQIBAQYJYIZIAYb9bAcBMDEwDQYJYIZIAWUDBAIBBQAEIFVKg4Bk
|
||||
# 66QdVGGeigU62UhX89H4gz2i20pHnPUHmieaAhEAmYZVzIX3YFfY74hTITENYxgP
|
||||
# MjAyNTA2MTIxNjQwNTFaoIITOjCCBu0wggTVoAMCAQICEAqA7xhLjfEFgtHEdqeV
|
||||
# dGgwDQYJKoZIhvcNAQELBQAwaTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lD
|
||||
# ZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0IFRpbWVTdGFt
|
||||
# cGluZyBSU0E0MDk2IFNIQTI1NiAyMDI1IENBMTAeFw0yNTA2MDQwMDAwMDBaFw0z
|
||||
# NjA5MDMyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
|
||||
# SW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgU0hBMjU2IFJTQTQwOTYgVGltZXN0YW1w
|
||||
# IFJlc3BvbmRlciAyMDI1IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
||||
# AQDQRqwtEsae0OquYFazK1e6b1H/hnAKAd/KN8wZQjBjMqiZ3xTWcfsLwOvRxUwX
|
||||
# cGx8AUjni6bz52fGTfr6PHRNv6T7zsf1Y/E3IU8kgNkeECqVQ+3bzWYesFtkepEr
|
||||
# vUSbf+EIYLkrLKd6qJnuzK8Vcn0DvbDMemQFoxQ2Dsw4vEjoT1FpS54dNApZfKY6
|
||||
# 1HAldytxNM89PZXUP/5wWWURK+IfxiOg8W9lKMqzdIo7VA1R0V3Zp3DjjANwqAf4
|
||||
# lEkTlCDQ0/fKJLKLkzGBTpx6EYevvOi7XOc4zyh1uSqgr6UnbksIcFJqLbkIXIPb
|
||||
# cNmA98Oskkkrvt6lPAw/p4oDSRZreiwB7x9ykrjS6GS3NR39iTTFS+ENTqW8m6TH
|
||||
# uOmHHjQNC3zbJ6nJ6SXiLSvw4Smz8U07hqF+8CTXaETkVWz0dVVZw7knh1WZXOLH
|
||||
# gDvundrAtuvz0D3T+dYaNcwafsVCGZKUhQPL1naFKBy1p6llN3QgshRta6Eq4B40
|
||||
# h5avMcpi54wm0i2ePZD5pPIssoszQyF4//3DoK2O65Uck5Wggn8O2klETsJ7u8xE
|
||||
# ehGifgJYi+6I03UuT1j7FnrqVrOzaQoVJOeeStPeldYRNMmSF3voIgMFtNGh86w3
|
||||
# ISHNm0IaadCKCkUe2LnwJKa8TIlwCUNVwppwn4D3/Pt5pwIDAQABo4IBlTCCAZEw
|
||||
# DAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU5Dv88jHt/f3X85FxYxlQQ89hjOgwHwYD
|
||||
# VR0jBBgwFoAU729TSunkBnx6yuKQVvYv1Ensy04wDgYDVR0PAQH/BAQDAgeAMBYG
|
||||
# A1UdJQEB/wQMMAoGCCsGAQUFBwMIMIGVBggrBgEFBQcBAQSBiDCBhTAkBggrBgEF
|
||||
# BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMF0GCCsGAQUFBzAChlFodHRw
|
||||
# Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRUaW1lU3Rh
|
||||
# bXBpbmdSU0E0MDk2U0hBMjU2MjAyNUNBMS5jcnQwXwYDVR0fBFgwVjBUoFKgUIZO
|
||||
# aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0VGltZVN0
|
||||
# YW1waW5nUlNBNDA5NlNIQTI1NjIwMjVDQTEuY3JsMCAGA1UdIAQZMBcwCAYGZ4EM
|
||||
# AQQCMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsFAAOCAgEAZSqt8RwnBLmuYEHs
|
||||
# 0QhEnmNAciH45PYiT9s1i6UKtW+FERp8FgXRGQ/YAavXzWjZhY+hIfP2JkQ38U+w
|
||||
# tJPBVBajYfrbIYG+Dui4I4PCvHpQuPqFgqp1PzC/ZRX4pvP/ciZmUnthfAEP1HSh
|
||||
# TrY+2DE5qjzvZs7JIIgt0GCFD9ktx0LxxtRQ7vllKluHWiKk6FxRPyUPxAAYH2Vy
|
||||
# 1lNM4kzekd8oEARzFAWgeW3az2xejEWLNN4eKGxDJ8WDl/FQUSntbjZ80FU3i54t
|
||||
# px5F/0Kr15zW/mJAxZMVBrTE2oi0fcI8VMbtoRAmaaslNXdCG1+lqvP4FbrQ6IwS
|
||||
# BXkZagHLhFU9HCrG/syTRLLhAezu/3Lr00GrJzPQFnCEH1Y58678IgmfORBPC1JK
|
||||
# kYaEt2OdDh4GmO0/5cHelAK2/gTlQJINqDr6JfwyYHXSd+V08X1JUPvB4ILfJdmL
|
||||
# +66Gp3CSBXG6IwXMZUXBhtCyIaehr0XkBoDIGMUG1dUtwq1qmcwbdUfcSYCn+Own
|
||||
# cVUXf53VJUNOaMWMts0VlRYxe5nK+At+DI96HAlXHAL5SlfYxJ7La54i71McVWRP
|
||||
# 66bW+yERNpbJCjyCYG2j+bdpxo/1Cy4uPcU3AWVPGrbn5PhDBf3Froguzzhk++am
|
||||
# i+r3Qrx5bIbY3TVzgiFI7Gq3zWcwgga0MIIEnKADAgECAhANx6xXBf8hmS5AQyIM
|
||||
# OkmGMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdp
|
||||
# Q2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERp
|
||||
# Z2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yNTA1MDcwMDAwMDBaFw0zODAxMTQy
|
||||
# MzU5NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFB
|
||||
# MD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBUaW1lU3RhbXBpbmcgUlNBNDA5
|
||||
# NiBTSEEyNTYgMjAyNSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
||||
# AQC0eDHTCphBcr48RsAcrHXbo0ZodLRRF51NrY0NlLWZloMsVO1DahGPNRcybEKq
|
||||
# +RuwOnPhof6pvF4uGjwjqNjfEvUi6wuim5bap+0lgloM2zX4kftn5B1IpYzTqpyF
|
||||
# Q/4Bt0mAxAHeHYNnQxqXmRinvuNgxVBdJkf77S2uPoCj7GH8BLuxBG5AvftBdsOE
|
||||
# CS1UkxBvMgEdgkFiDNYiOTx4OtiFcMSkqTtF2hfQz3zQSku2Ws3IfDReb6e3mmdg
|
||||
# lTcaarps0wjUjsZvkgFkriK9tUKJm/s80FiocSk1VYLZlDwFt+cVFBURJg6zMUjZ
|
||||
# a/zbCclF83bRVFLeGkuAhHiGPMvSGmhgaTzVyhYn4p0+8y9oHRaQT/aofEnS5xLr
|
||||
# fxnGpTXiUOeSLsJygoLPp66bkDX1ZlAeSpQl92QOMeRxykvq6gbylsXQskBBBnGy
|
||||
# 3tW/AMOMCZIVNSaz7BX8VtYGqLt9MmeOreGPRdtBx3yGOP+rx3rKWDEJlIqLXvJW
|
||||
# nY0v5ydPpOjL6s36czwzsucuoKs7Yk/ehb//Wx+5kMqIMRvUBDx6z1ev+7psNOdg
|
||||
# JMoiwOrUG2ZdSoQbU2rMkpLiQ6bGRinZbI4OLu9BMIFm1UUl9VnePs6BaaeEWvjJ
|
||||
# SjNm2qA+sdFUeEY0qVjPKOWug/G6X5uAiynM7Bu2ayBjUwIDAQABo4IBXTCCAVkw
|
||||
# EgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU729TSunkBnx6yuKQVvYv1Ens
|
||||
# y04wHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQD
|
||||
# AgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMIMHcGCCsGAQUFBwEBBGswaTAkBggrBgEF
|
||||
# BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRw
|
||||
# Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNy
|
||||
# dDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGln
|
||||
# aUNlcnRUcnVzdGVkUm9vdEc0LmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglg
|
||||
# hkgBhv1sBwEwDQYJKoZIhvcNAQELBQADggIBABfO+xaAHP4HPRF2cTC9vgvItTSm
|
||||
# f83Qh8WIGjB/T8ObXAZz8OjuhUxjaaFdleMM0lBryPTQM2qEJPe36zwbSI/mS83a
|
||||
# fsl3YTj+IQhQE7jU/kXjjytJgnn0hvrV6hqWGd3rLAUt6vJy9lMDPjTLxLgXf9r5
|
||||
# nWMQwr8Myb9rEVKChHyfpzee5kH0F8HABBgr0UdqirZ7bowe9Vj2AIMD8liyrukZ
|
||||
# 2iA/wdG2th9y1IsA0QF8dTXqvcnTmpfeQh35k5zOCPmSNq1UH410ANVko43+Cdmu
|
||||
# 4y81hjajV/gxdEkMx1NKU4uHQcKfZxAvBAKqMVuqte69M9J6A47OvgRaPs+2ykgc
|
||||
# GV00TYr2Lr3ty9qIijanrUR3anzEwlvzZiiyfTPjLbnFRsjsYg39OlV8cipDoq7+
|
||||
# qNNjqFzeGxcytL5TTLL4ZaoBdqbhOhZ3ZRDUphPvSRmMThi0vw9vODRzW6AxnJll
|
||||
# 38F0cuJG7uEBYTptMSbhdhGQDpOXgpIUsWTjd6xpR6oaQf/DJbg3s6KCLPAlZ66R
|
||||
# zIg9sC+NJpud/v4+7RWsWCiKi9EOLLHfMR2ZyJ/+xhCx9yHbxtl5TPau1j/1MIDp
|
||||
# MPx0LckTetiSuEtQvLsNz3Qbp7wGWqbIiOWCnb5WqxL3/BAPvIXKUjPSxyZsq8Wh
|
||||
# baM2tszWkPZPubdcMIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjANBgkq
|
||||
# hkiG9w0BAQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
|
||||
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBB
|
||||
# c3N1cmVkIElEIFJvb3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1OTU5
|
||||
# WjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
||||
# ExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJv
|
||||
# b3QgRzQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1K
|
||||
# PDAiMGkz7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2r
|
||||
# snnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C
|
||||
# 8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBf
|
||||
# sXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY
|
||||
# QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8
|
||||
# rhsDdV14Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaY
|
||||
# dj1ZXUJ2h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+
|
||||
# wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw
|
||||
# ++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+N
|
||||
# P8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7F
|
||||
# wI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/BAUw
|
||||
# AwEB/zAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAU
|
||||
# Reuir/SSy4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUFBwEB
|
||||
# BG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsG
|
||||
# AQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
|
||||
# cmVkSURSb290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRp
|
||||
# Z2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0gBAow
|
||||
# CDAGBgRVHSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW1/e/
|
||||
# Vwe9mqyhhyzshV6pGrsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH38nLe
|
||||
# JLxSA8hO0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMTdydE
|
||||
# 1Od/6Fmo8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY9Hda
|
||||
# XFSMb++hUD38dglohJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyerbHbO
|
||||
# byMt9H5xaiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmUMYID
|
||||
# fDCCA3gCAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIElu
|
||||
# Yy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGltZVN0YW1waW5nIFJT
|
||||
# QTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAKgO8YS43xBYLRxHanlXRoMA0GCWCGSAFl
|
||||
# AwQCAQUAoIHRMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0B
|
||||
# CQUxDxcNMjUwNjEyMTY0MDUxWjArBgsqhkiG9w0BCRACDDEcMBowGDAWBBTdYjCs
|
||||
# hgotMGvaOLFoeVIwB/tBfjAvBgkqhkiG9w0BCQQxIgQg35PS9apyj4fIocaxvDAi
|
||||
# MgXlOvUJct7X2EDTTLjZpUkwNwYLKoZIhvcNAQkQAi8xKDAmMCQwIgQgSqA/oizX
|
||||
# XITFXJOPgo5na5yuyrM/420mmqM08UYRCjMwDQYJKoZIhvcNAQEBBQAEggIAshbp
|
||||
# lhND+o9w+y0SiX5zATSYhuu+kEkM4HE/hoEVu1yb+XiyKixIZWi9BKI3ldiIih50
|
||||
# LbdC/yy+/Vemw5HWf6EiuayjG1cVh5X8cAkbPI8yLKfBh+fuUbeOVdhzL95cEFtX
|
||||
# Uy07t5+qgzTHE70fraGSZ6R+8c44fmlA4YsdMbf8HfG1aegGxyCIYvo9WBZDFSkC
|
||||
# 5apIjeM/zaxo8Hb6UE/aSywOondgEDsr6/72f/OEuOtciybhChNSnF/gDYJlX+u6
|
||||
# I4TMkFbxB2IK+JVLPsSieOuSQgNqWy2jdc8V13QXOj8lsSGfwT8NDYeRe9GhpMAC
|
||||
# 4p2B4EeJWqXJ2561EhDlhTBNoTD/VAwoXBmDnXHX78lKIV8NhuA7FH96OTBGWhTH
|
||||
# KhNyhx1SsDEaDkZZ9rkyGG4I+YwVGRlhseUcdFGvJF2iL+UMjt0onjZi4nPZGhj+
|
||||
# nKO/V+aHbBTVVi28VCMrMkovnVERHbTFOOBfTftM+vi9d3ML1O88W9FafvIFQCzF
|
||||
# 1TAiPjKZ+ggbDBeZsydHDsmruS5kxevVi8f/97dVOM3nuDk4bXHS9iWNKq2lmdgg
|
||||
# Mv03dutprWoOmgHxnttS8FIeyDumWlXnyLWrZmRljPsr9kGur2BPvf9leBdKUfj/
|
||||
# kBbmniJxrdJz3ggAQhJeSJTCWL1WHeEa5YoE2zQ=
|
||||
# SIG # End signature block
|
||||
|
@@ -1,5 +1,5 @@
|
||||
Fido: A PowerShell download script for Microsoft Windows and UEFI Shell ISOs
|
||||
============================================================================
|
||||
Fido: A PowerShell script to download Windows and UEFI Shell ISOs
|
||||
=================================================================
|
||||
|
||||
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||
[](https://github.com/pbatard/Fido/releases)
|
||||
|
Reference in New Issue
Block a user