Signed app packages for Kiwix JS Windows 1.6.0

Former-commit-id: ad9c9ac82aa9ca9def238b20bb56877fb5746d31 [formerly 252e6012d20658d3ed830b9395f33a4a4e686a7b [formerly e6cf52cd9d212002a665e6d3570fda45b6117d76]]
Former-commit-id: 3ee24a6857f318b12aa6b0de34c442f157cb9784
Former-commit-id: cd14773001222e707d68c4fde761bf3ca3026383
This commit is contained in:
Jaifroid 2021-07-29 10:03:59 +01:00
parent 64727ba0f3
commit a62d03cc19
21 changed files with 1188 additions and 411 deletions

View File

@ -0,0 +1 @@
3ad5a6daa9b95079341de12c260ef725ba9ce9b6

View File

@ -0,0 +1,776 @@
#
# Add-AppxDevPackage.ps1 is a PowerShell script designed to install app
# packages created by Visual Studio for developers. To run this script from
# Explorer, right-click on its icon and choose "Run with PowerShell".
#
# Visual Studio supplies this script in the folder generated with its
# "Prepare Package" command. The same folder will also contain the app
# package (a .appx file), the signing certificate (a .cer file), and a
# "Dependencies" subfolder containing all the framework packages used by the
# app.
#
# This script simplifies installing these packages by automating the
# following functions:
# 1. Find the app package and signing certificate in the script directory
# 2. Prompt the user to acquire a developer license and to install the
# certificate if necessary
# 3. Find dependency packages that are applicable to the operating system's
# CPU architecture
# 4. Install the package along with all applicable dependencies
#
# All command line parameters are reserved for use internally by the script.
# Users should launch this script from Explorer.
#
# .Link
# http://go.microsoft.com/fwlink/?LinkId=243053
param(
[switch]$Force = $false,
[switch]$GetDeveloperLicense = $false,
[string]$CertificatePath = $null
)
$ErrorActionPreference = "Stop"
# The language resources for this script are placed in the
# "Add-AppDevPackage.resources" subfolder alongside the script. Since the
# current working directory might not be the directory that contains the
# script, we need to create the full path of the resources directory to
# pass into Import-LocalizedData
$ScriptPath = $null
try
{
$ScriptPath = (Get-Variable MyInvocation).Value.MyCommand.Path
$ScriptDir = Split-Path -Parent $ScriptPath
}
catch {}
if (!$ScriptPath)
{
PrintMessageAndExit $UiStrings.ErrorNoScriptPath $ErrorCodes.NoScriptPath
}
$LocalizedResourcePath = Join-Path $ScriptDir "Add-AppDevPackage.resources"
Import-LocalizedData -BindingVariable UiStrings -BaseDirectory $LocalizedResourcePath
$ErrorCodes = Data {
ConvertFrom-StringData @'
Success = 0
NoScriptPath = 1
NoPackageFound = 2
ManyPackagesFound = 3
NoCertificateFound = 4
ManyCertificatesFound = 5
BadCertificate = 6
PackageUnsigned = 7
CertificateMismatch = 8
ForceElevate = 9
LaunchAdminFailed = 10
GetDeveloperLicenseFailed = 11
InstallCertificateFailed = 12
AddPackageFailed = 13
ForceDeveloperLicense = 14
CertUtilInstallFailed = 17
CertIsCA = 18
BannedEKU = 19
NoBasicConstraints = 20
NoCodeSigningEku = 21
InstallCertificateCancelled = 22
BannedKeyUsage = 23
ExpiredCertificate = 24
'@
}
function PrintMessageAndExit($ErrorMessage, $ReturnCode)
{
Write-Host $ErrorMessage
if (!$Force)
{
Pause
}
exit $ReturnCode
}
#
# Warns the user about installing certificates, and presents a Yes/No prompt
# to confirm the action. The default is set to No.
#
function ConfirmCertificateInstall
{
$Answer = $host.UI.PromptForChoice(
"",
$UiStrings.WarningInstallCert,
[System.Management.Automation.Host.ChoiceDescription[]]@($UiStrings.PromptYesString, $UiStrings.PromptNoString),
1)
return $Answer -eq 0
}
#
# Validates whether a file is a valid certificate using CertUtil.
# This needs to be done before calling Get-PfxCertificate on the file, otherwise
# the user will get a cryptic "Password: " prompt for invalid certs.
#
function ValidateCertificateFormat($FilePath)
{
# certutil -verify prints a lot of text that we don't need, so it's redirected to $null here
certutil.exe -verify $FilePath > $null
if ($LastExitCode -lt 0)
{
PrintMessageAndExit ($UiStrings.ErrorBadCertificate -f $FilePath, $LastExitCode) $ErrorCodes.BadCertificate
}
# Check if certificate is expired
$cert = Get-PfxCertificate $FilePath
if (($cert.NotBefore -gt (Get-Date)) -or ($cert.NotAfter -lt (Get-Date)))
{
PrintMessageAndExit ($UiStrings.ErrorExpiredCertificate -f $FilePath) $ErrorCodes.ExpiredCertificate
}
}
#
# Verify that the developer certificate meets the following restrictions:
# - The certificate must contain a Basic Constraints extension, and its
# Certificate Authority (CA) property must be false.
# - The certificate's Key Usage extension must be either absent, or set to
# only DigitalSignature.
# - The certificate must contain an Extended Key Usage (EKU) extension with
# Code Signing usage.
# - The certificate must NOT contain any other EKU except Code Signing and
# Lifetime Signing.
#
# These restrictions are enforced to decrease security risks that arise from
# trusting digital certificates.
#
function CheckCertificateRestrictions
{
Set-Variable -Name BasicConstraintsExtensionOid -Value "2.5.29.19" -Option Constant
Set-Variable -Name KeyUsageExtensionOid -Value "2.5.29.15" -Option Constant
Set-Variable -Name EkuExtensionOid -Value "2.5.29.37" -Option Constant
Set-Variable -Name CodeSigningEkuOid -Value "1.3.6.1.5.5.7.3.3" -Option Constant
Set-Variable -Name LifetimeSigningEkuOid -Value "1.3.6.1.4.1.311.10.3.13" -Option Constant
$CertificateExtensions = (Get-PfxCertificate $CertificatePath).Extensions
$HasBasicConstraints = $false
$HasCodeSigningEku = $false
foreach ($Extension in $CertificateExtensions)
{
# Certificate must contain the Basic Constraints extension
if ($Extension.oid.value -eq $BasicConstraintsExtensionOid)
{
# CA property must be false
if ($Extension.CertificateAuthority)
{
PrintMessageAndExit $UiStrings.ErrorCertIsCA $ErrorCodes.CertIsCA
}
$HasBasicConstraints = $true
}
# If key usage is present, it must be set to digital signature
elseif ($Extension.oid.value -eq $KeyUsageExtensionOid)
{
if ($Extension.KeyUsages -ne "DigitalSignature")
{
PrintMessageAndExit ($UiStrings.ErrorBannedKeyUsage -f $Extension.KeyUsages) $ErrorCodes.BannedKeyUsage
}
}
elseif ($Extension.oid.value -eq $EkuExtensionOid)
{
# Certificate must contain the Code Signing EKU
$EKUs = $Extension.EnhancedKeyUsages.Value
if ($EKUs -contains $CodeSigningEkuOid)
{
$HasCodeSigningEKU = $True
}
# EKUs other than code signing and lifetime signing are not allowed
foreach ($EKU in $EKUs)
{
if ($EKU -ne $CodeSigningEkuOid -and $EKU -ne $LifetimeSigningEkuOid)
{
PrintMessageAndExit ($UiStrings.ErrorBannedEKU -f $EKU) $ErrorCodes.BannedEKU
}
}
}
}
if (!$HasBasicConstraints)
{
PrintMessageAndExit $UiStrings.ErrorNoBasicConstraints $ErrorCodes.NoBasicConstraints
}
if (!$HasCodeSigningEKU)
{
PrintMessageAndExit $UiStrings.ErrorNoCodeSigningEku $ErrorCodes.NoCodeSigningEku
}
}
#
# Performs operations that require administrative privileges:
# - Prompt the user to obtain a developer license
# - Install the developer certificate (if -Force is not specified, also prompts the user to confirm)
#
function DoElevatedOperations
{
if ($GetDeveloperLicense)
{
Write-Host $UiStrings.GettingDeveloperLicense
if ($Force)
{
PrintMessageAndExit $UiStrings.ErrorForceDeveloperLicense $ErrorCodes.ForceDeveloperLicense
}
try
{
Show-WindowsDeveloperLicenseRegistration
}
catch
{
$Error[0] # Dump details about the last error
PrintMessageAndExit $UiStrings.ErrorGetDeveloperLicenseFailed $ErrorCodes.GetDeveloperLicenseFailed
}
}
if ($CertificatePath)
{
Write-Host $UiStrings.InstallingCertificate
# Make sure certificate format is valid and usage constraints are followed
ValidateCertificateFormat $CertificatePath
CheckCertificateRestrictions
# If -Force is not specified, warn the user and get consent
if ($Force -or (ConfirmCertificateInstall))
{
# Add cert to store
certutil.exe -addstore TrustedPeople $CertificatePath
if ($LastExitCode -lt 0)
{
PrintMessageAndExit ($UiStrings.ErrorCertUtilInstallFailed -f $LastExitCode) $ErrorCodes.CertUtilInstallFailed
}
}
else
{
PrintMessageAndExit $UiStrings.ErrorInstallCertificateCancelled $ErrorCodes.InstallCertificateCancelled
}
}
}
#
# Checks whether the machine is missing a valid developer license.
#
function CheckIfNeedDeveloperLicense
{
$Result = $true
try
{
$Result = (Get-WindowsDeveloperLicense | Where-Object { $_.IsValid } | Measure-Object).Count -eq 0
}
catch {}
return $Result
}
#
# Launches an elevated process running the current script to perform tasks
# that require administrative privileges. This function waits until the
# elevated process terminates, and checks whether those tasks were successful.
#
function LaunchElevated
{
# Set up command line arguments to the elevated process
$RelaunchArgs = '-ExecutionPolicy Unrestricted -file "' + $ScriptPath + '"'
if ($Force)
{
$RelaunchArgs += ' -Force'
}
if ($NeedDeveloperLicense)
{
$RelaunchArgs += ' -GetDeveloperLicense'
}
if ($NeedInstallCertificate)
{
$RelaunchArgs += ' -CertificatePath "' + $DeveloperCertificatePath.FullName + '"'
}
# Launch the process and wait for it to finish
try
{
$AdminProcess = Start-Process "$PsHome\PowerShell.exe" -Verb RunAs -ArgumentList $RelaunchArgs -PassThru
}
catch
{
$Error[0] # Dump details about the last error
PrintMessageAndExit $UiStrings.ErrorLaunchAdminFailed $ErrorCodes.LaunchAdminFailed
}
while (!($AdminProcess.HasExited))
{
Start-Sleep -Seconds 2
}
# Check if all elevated operations were successful
if ($NeedDeveloperLicense)
{
if (CheckIfNeedDeveloperLicense)
{
PrintMessageAndExit $UiStrings.ErrorGetDeveloperLicenseFailed $ErrorCodes.GetDeveloperLicenseFailed
}
else
{
Write-Host $UiStrings.AcquireLicenseSuccessful
}
}
if ($NeedInstallCertificate)
{
$Signature = Get-AuthenticodeSignature $DeveloperPackagePath -Verbose
if ($Signature.Status -ne "Valid")
{
PrintMessageAndExit ($UiStrings.ErrorInstallCertificateFailed -f $Signature.Status) $ErrorCodes.InstallCertificateFailed
}
else
{
Write-Host $UiStrings.InstallCertificateSuccessful
}
}
}
#
# Finds all applicable dependency packages according to OS architecture, and
# installs the developer package with its dependencies. The expected layout
# of dependencies is:
#
# <current dir>
# \Dependencies
# <Architecture neutral dependencies>.appx\.msix
# \x86
# <x86 dependencies>.appx\.msix
# \x64
# <x64 dependencies>.appx\.msix
# \arm
# <arm dependencies>.appx\.msix
#
function InstallPackageWithDependencies
{
$DependencyPackagesDir = (Join-Path $ScriptDir "Dependencies")
$DependencyPackages = @()
if (Test-Path $DependencyPackagesDir)
{
# Get architecture-neutral dependencies
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "*.appx") | Where-Object { $_.Mode -NotMatch "d" }
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "*.msix") | Where-Object { $_.Mode -NotMatch "d" }
# Get architecture-specific dependencies
if (($Env:Processor_Architecture -eq "x86" -or $Env:Processor_Architecture -eq "amd64") -and (Test-Path (Join-Path $DependencyPackagesDir "x86")))
{
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "x86\*.appx") | Where-Object { $_.Mode -NotMatch "d" }
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "x86\*.msix") | Where-Object { $_.Mode -NotMatch "d" }
}
if (($Env:Processor_Architecture -eq "amd64") -and (Test-Path (Join-Path $DependencyPackagesDir "x64")))
{
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "x64\*.appx") | Where-Object { $_.Mode -NotMatch "d" }
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "x64\*.msix") | Where-Object { $_.Mode -NotMatch "d" }
}
if (($Env:Processor_Architecture -eq "arm") -and (Test-Path (Join-Path $DependencyPackagesDir "arm")))
{
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "arm\*.appx") | Where-Object { $_.Mode -NotMatch "d" }
$DependencyPackages += Get-ChildItem (Join-Path $DependencyPackagesDir "arm\*.msix") | Where-Object { $_.Mode -NotMatch "d" }
}
}
Write-Host $UiStrings.InstallingPackage
$AddPackageSucceeded = $False
try
{
if ($DependencyPackages.FullName.Count -gt 0)
{
Write-Host $UiStrings.DependenciesFound
$DependencyPackages.FullName
Add-AppxPackage -Path $DeveloperPackagePath.FullName -DependencyPath $DependencyPackages.FullName -ForceApplicationShutdown
}
else
{
Add-AppxPackage -Path $DeveloperPackagePath.FullName -ForceApplicationShutdown
}
$AddPackageSucceeded = $?
}
catch
{
$Error[0] # Dump details about the last error
}
if (!$AddPackageSucceeded)
{
if ($NeedInstallCertificate)
{
PrintMessageAndExit $UiStrings.ErrorAddPackageFailedWithCert $ErrorCodes.AddPackageFailed
}
else
{
PrintMessageAndExit $UiStrings.ErrorAddPackageFailed $ErrorCodes.AddPackageFailed
}
}
}
#
# Main script logic when the user launches the script without parameters.
#
function DoStandardOperations
{
# Check for an .appx or .msix file in the script directory
$PackagePath = Get-ChildItem (Join-Path $ScriptDir "*.appx") | Where-Object { $_.Mode -NotMatch "d" }
if ($PackagePath -eq $null)
{
$PackagePath = Get-ChildItem (Join-Path $ScriptDir "*.msix") | Where-Object { $_.Mode -NotMatch "d" }
}
$PackageCount = ($PackagePath | Measure-Object).Count
# Check for an .appxbundle or .msixbundle file in the script directory
$BundlePath = Get-ChildItem (Join-Path $ScriptDir "*.appxbundle") | Where-Object { $_.Mode -NotMatch "d" }
if ($BundlePath -eq $null)
{
$BundlePath = Get-ChildItem (Join-Path $ScriptDir "*.msixbundle") | Where-Object { $_.Mode -NotMatch "d" }
}
$BundleCount = ($BundlePath | Measure-Object).Count
# Check for an .eappx or .emsix file in the script directory
$EncryptedPackagePath = Get-ChildItem (Join-Path $ScriptDir "*.eappx") | Where-Object { $_.Mode -NotMatch "d" }
if ($EncryptedPackagePath -eq $null)
{
$EncryptedPackagePath = Get-ChildItem (Join-Path $ScriptDir "*.emsix") | Where-Object { $_.Mode -NotMatch "d" }
}
$EncryptedPackageCount = ($EncryptedPackagePath | Measure-Object).Count
# Check for an .eappxbundle or .emsixbundle file in the script directory
$EncryptedBundlePath = Get-ChildItem (Join-Path $ScriptDir "*.eappxbundle") | Where-Object { $_.Mode -NotMatch "d" }
if ($EncryptedBundlePath -eq $null)
{
$EncryptedBundlePath = Get-ChildItem (Join-Path $ScriptDir "*.emsixbundle") | Where-Object { $_.Mode -NotMatch "d" }
}
$EncryptedBundleCount = ($EncryptedBundlePath | Measure-Object).Count
$NumberOfPackages = $PackageCount + $EncryptedPackageCount
$NumberOfBundles = $BundleCount + $EncryptedBundleCount
# There must be at least one package or bundle
if ($NumberOfPackages + $NumberOfBundles -lt 1)
{
PrintMessageAndExit $UiStrings.ErrorNoPackageFound $ErrorCodes.NoPackageFound
}
# We must have exactly one bundle OR no bundle and exactly one package
elseif ($NumberOfBundles -gt 1 -or
($NumberOfBundles -eq 0 -and $NumberOfpackages -gt 1))
{
PrintMessageAndExit $UiStrings.ErrorManyPackagesFound $ErrorCodes.ManyPackagesFound
}
# First attempt to install a bundle or encrypted bundle. If neither exists, fall back to packages and then encrypted packages
if ($BundleCount -eq 1)
{
$DeveloperPackagePath = $BundlePath
Write-Host ($UiStrings.BundleFound -f $DeveloperPackagePath.FullName)
}
elseif ($EncryptedBundleCount -eq 1)
{
$DeveloperPackagePath = $EncryptedBundlePath
Write-Host ($UiStrings.EncryptedBundleFound -f $DeveloperPackagePath.FullName)
}
elseif ($PackageCount -eq 1)
{
$DeveloperPackagePath = $PackagePath
Write-Host ($UiStrings.PackageFound -f $DeveloperPackagePath.FullName)
}
elseif ($EncryptedPackageCount -eq 1)
{
$DeveloperPackagePath = $EncryptedPackagePath
Write-Host ($UiStrings.EncryptedPackageFound -f $DeveloperPackagePath.FullName)
}
# The package must be signed
$PackageSignature = Get-AuthenticodeSignature $DeveloperPackagePath
$PackageCertificate = $PackageSignature.SignerCertificate
if (!$PackageCertificate)
{
PrintMessageAndExit $UiStrings.ErrorPackageUnsigned $ErrorCodes.PackageUnsigned
}
# Test if the package signature is trusted. If not, the corresponding certificate
# needs to be present in the current directory and needs to be installed.
$NeedInstallCertificate = ($PackageSignature.Status -ne "Valid")
if ($NeedInstallCertificate)
{
# List all .cer files in the script directory
$DeveloperCertificatePath = Get-ChildItem (Join-Path $ScriptDir "*.cer") | Where-Object { $_.Mode -NotMatch "d" }
$DeveloperCertificateCount = ($DeveloperCertificatePath | Measure-Object).Count
# There must be exactly 1 certificate
if ($DeveloperCertificateCount -lt 1)
{
PrintMessageAndExit $UiStrings.ErrorNoCertificateFound $ErrorCodes.NoCertificateFound
}
elseif ($DeveloperCertificateCount -gt 1)
{
PrintMessageAndExit $UiStrings.ErrorManyCertificatesFound $ErrorCodes.ManyCertificatesFound
}
Write-Host ($UiStrings.CertificateFound -f $DeveloperCertificatePath.FullName)
# The .cer file must have the format of a valid certificate
ValidateCertificateFormat $DeveloperCertificatePath
# The package signature must match the certificate file
if ($PackageCertificate -ne (Get-PfxCertificate $DeveloperCertificatePath))
{
PrintMessageAndExit $UiStrings.ErrorCertificateMismatch $ErrorCodes.CertificateMismatch
}
}
$NeedDeveloperLicense = CheckIfNeedDeveloperLicense
# Relaunch the script elevated with the necessary parameters if needed
if ($NeedDeveloperLicense -or $NeedInstallCertificate)
{
Write-Host $UiStrings.ElevateActions
if ($NeedDeveloperLicense)
{
Write-Host $UiStrings.ElevateActionDevLicense
}
if ($NeedInstallCertificate)
{
Write-Host $UiStrings.ElevateActionCertificate
}
$IsAlreadyElevated = ([Security.Principal.WindowsIdentity]::GetCurrent().Groups.Value -contains "S-1-5-32-544")
if ($IsAlreadyElevated)
{
if ($Force -and $NeedDeveloperLicense)
{
PrintMessageAndExit $UiStrings.ErrorForceDeveloperLicense $ErrorCodes.ForceDeveloperLicense
}
if ($Force -and $NeedInstallCertificate)
{
Write-Warning $UiStrings.WarningInstallCert
}
}
else
{
if ($Force)
{
PrintMessageAndExit $UiStrings.ErrorForceElevate $ErrorCodes.ForceElevate
}
else
{
Write-Host $UiStrings.ElevateActionsContinue
Pause
}
}
LaunchElevated
}
InstallPackageWithDependencies
}
#
# Main script entry point
#
if ($GetDeveloperLicense -or $CertificatePath)
{
DoElevatedOperations
}
else
{
DoStandardOperations
PrintMessageAndExit $UiStrings.Success $ErrorCodes.Success
}
# SIG # Begin signature block
# MIIiTwYJKoZIhvcNAQcCoIIiQDCCIjwCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCD5BdpRggDM/3NT
# wBDQFaER9aOD9SdM3CUzPDQe6F3dFqCCC3YwggT+MIID5qADAgECAhMzAAACz20s
# xXyqZabYAAAAAALPMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
# bmcgUENBIDIwMTAwHhcNMTkwNTAyMjEyNTQyWhcNMjAwNTAyMjEyNTQyWjB0MQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQC5WvO1XVj5Qw+VAXn6dOWwyrU48JLK7JuZQh066rWPdXWDqRs2/0CWjtd1CtGW
# rsezdxI5gtnuSHU9R61TOTxp0crY8D8hWkw66Chnw30gU0uci7yT+SBG8FCCym9q
# Tlbx1EOu2Onbvnx3fUZzAzpk6fYtyyVRDZDJFlkpDBUgY6i4T3AknQHlaZRJydZY
# qJuJuC/gbhunzJ11CKbIMWUPo+291saTjGYiv0hXHYyhweatkIEpK4pi9MKh28jB
# eSN0NwiSZeNXAeRPoQr1aJbWCYBKBdyuMNexWvsd+YTeksvywPjqJm7Tc37FZqUF
# rMTrENoMXHw2mZxZicaUR/a7AgMBAAGjggF9MIIBeTAfBgNVHSUEGDAWBgorBgEE
# AYI3PQYBBggrBgEFBQcDAzAdBgNVHQ4EFgQUN/NN7E2vLAQxqRCIC1jAbwO8VQgw
# VAYDVR0RBE0wS6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJh
# dGlvbnMgTGltaXRlZDEWMBQGA1UEBRMNMjMwODY1KzQ1NDI0NDAfBgNVHSMEGDAW
# gBTm/F97uyIAWORyTrX0IXQjMubvrDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8v
# Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0Ff
# MjAxMC0wNy0wNi5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRw
# Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY0NvZFNpZ1BDQV8yMDEw
# LTA3LTA2LmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCqMI8I
# dLEoiAqBDMw46rHAR5p98xk1puiL6RYE5MMy4Sn3zLjwxsMC1bCNC0H+XKkDhiX1
# JJ+wBMRpCieUBLIJ3BmvuwGLkuTYcgQHcoHTicrXeZhB5aAp+5WR2fiMQCNwmrL2
# ywp1C70cctf/mCAB3sDN0NOl/2sMi/mFaSIVCddO8sHp1Hin0eNG9j2pBmYRo54v
# 7+bTxYApyPrTt5gN3KTOhGjrm/sUgyhtIleaRr43ccTs7TiPTW4TVDmHxvQeQd+6
# hyjawsACpYBSPL2a4mbAXsNW6GUdzNTs9U0FrvOblnvyqTuu4Ls7QpvsILrqHG30
# aiSPMQE8igpYYWdYMIIGcDCCBFigAwIBAgIKYQxSTAAAAAAAAzANBgkqhkiG9w0B
# AQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAG
# A1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAw
# HhcNMTAwNzA2MjA0MDE3WhcNMjUwNzA2MjA1MDE3WjB+MQswCQYDVQQGEwJVUzET
# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV
# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
# aWduaW5nIFBDQSAyMDEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
# 6Q5kUHlntcTj/QkATJ6UrPdWaOpE2M/FWE+ppXZ8bUW60zmStKQe+fllguQX0o/9
# RJwI6GWTzixVhL99COMuK6hBKxi3oktuSUxrFQfe0dLCiR5xlM21f0u0rwjYzIjW
# axeUOpPOJj/s5v40mFfVHV1J9rIqLtWFu1k/+JC0K4N0yiuzO0bj8EZJwRdmVMkc
# vR3EVWJXcvhnuSUgNN5dpqWVXqsogM3Vsp7lA7Vj07IUyMHIiiYKWX8H7P8O7YAS
# NUwSpr5SW/Wm2uCLC0h31oVH1RC5xuiq7otqLQVcYMa0KlucIxxfReMaFB5vN8sZ
# M4BqiU2jamZjeJPVMM+VHwIDAQABo4IB4zCCAd8wEAYJKwYBBAGCNxUBBAMCAQAw
# HQYDVR0OBBYEFOb8X3u7IgBY5HJOtfQhdCMy5u+sMBkGCSsGAQQBgjcUAgQMHgoA
# UwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQY
# MBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6
# Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1
# dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0
# dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIw
# MTAtMDYtMjMuY3J0MIGdBgNVHSAEgZUwgZIwgY8GCSsGAQQBgjcuAzCBgTA9Bggr
# BgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL1BLSS9kb2NzL0NQUy9k
# ZWZhdWx0Lmh0bTBABggrBgEFBQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBQAG8AbABp
# AGMAeQBfAFMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkqhkiG9w0BAQsFAAOCAgEA
# GnTvV08pe8QWhXi4UNMi/AmdrIKX+DT/KiyXlRLl5L/Pv5PI4zSp24G43B4AvtI1
# b6/lf3mVd+UC1PHr2M1OHhthosJaIxrwjKhiUUVnCOM/PB6T+DCFF8g5QKbXDrMh
# KeWloWmMIpPMdJjnoUdD8lOswA8waX/+0iUgbW9h098H1dlyACxphnY9UdumOUjJ
# N2FtB91TGcun1mHCv+KDqw/ga5uV1n0oUbCJSlGkmmzItx9KGg5pqdfcwX7RSXCq
# tq27ckdjF/qm1qKmhuyoEESbY7ayaYkGx0aGehg/6MUdIdV7+QIjLcVBy78dTMgW
# 77Gcf/wiS0mKbhXjpn92W9FTeZGFndXS2z1zNfM8rlSyUkdqwKoTldKOEdqZZ14y
# jPs3hdHcdYWch8ZaV4XCv90Nj4ybLeu07s8n07VeafqkFgQBpyRnc89NT7beBVaX
# evfpUk30dwVPhcbYC/GO7UIJ0Q124yNWeCImNr7KsYxuqh3khdpHM2KPpMmRM19x
# HkCvmGXJIuhCISWKHC1g2TeJQYkqFg/XYTyUaGBS79ZHmaCAQO4VgXc+nOBTGBpQ
# HTiVmx5mMxMnORd4hzbOTsNfsvU9R1O24OXbC2E9KteSLM43Wj5AQjGkHxAIwlac
# vyRdUQKdannSF9PawZSOB3slcUSrBmrm1MbfI5qWdcUxghYvMIIWKwIBATCBlTB+
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9N
# aWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDEwAhMzAAACz20sxXyqZabYAAAA
# AALPMA0GCWCGSAFlAwQCAQUAoIGuMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE
# MBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCBD
# AerId9KHdHY2YUo2JgxX4DBOYZn/OL23opQ4Y8smAjBCBgorBgEEAYI3AgEMMTQw
# MqAUgBIATQBpAGMAcgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5taWNyb3NvZnQu
# Y29tMA0GCSqGSIb3DQEBAQUABIIBADGTPfGCerJY3hyXU9uXgMgXbhJWidsAnI4d
# MAwoI/yBxmlg+1Yq4gAFR0wFDqTPbXYTBvQ5OdKjqhxOmS9f0Qf3PY0NYrwdLaQP
# IjeSrAF3YFbhiyUokgLR78Iy1XQeJxhEquOuH5TA7rvSt4kFkZIlAdwSARSul7JN
# VXegfxt+PV/tV+P21pqbkYvvjNgBpbVJBO4WY74vPNc/GWI5juH807Lnb3/AGx5D
# Mg5AGXJnO0sgRrLDxAensCAEmPBDj+ej1mnhhqD86xPQtTvqaPQ/TkFkZfT4AtJR
# m5eMPwcbjSpCHr/XqKv3R5SyQYnCu4PiLaboMf7JzaYrulkqHAmhghO5MIITtQYK
# KwYBBAGCNwMDATGCE6UwghOhBgkqhkiG9w0BBwKgghOSMIITjgIBAzEPMA0GCWCG
# SAFlAwQCAQUAMIIBVwYLKoZIhvcNAQkQAQSgggFGBIIBQjCCAT4CAQEGCisGAQQB
# hFkKAwEwMTANBglghkgBZQMEAgEFAAQgwBrd2L0fVeiLCvS9/WD0rS16JiEiejGB
# agB4Lm83Q5oCBl56b8E7rhgSMjAyMDA0MDkyMDU4MDQuMzFaMAcCAQGAAgH0oIHU
# pIHRMIHOMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
# BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSkwJwYD
# VQQLEyBNaWNyb3NvZnQgT3BlcmF0aW9ucyBQdWVydG8gUmljbzEmMCQGA1UECxMd
# VGhhbGVzIFRTUyBFU046QkJFQy0zMENBLTJEQkUxJTAjBgNVBAMTHE1pY3Jvc29m
# dCBUaW1lLVN0YW1wIFNlcnZpY2Wggg8iMIIE9TCCA92gAwIBAgITMwAAAP8vnmsF
# EdNrlwAAAAAA/zANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UE
# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
# b2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQ
# Q0EgMjAxMDAeFw0xOTA5MDYyMDQxMDlaFw0yMDEyMDQyMDQxMDlaMIHOMQswCQYD
# VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
# MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSkwJwYDVQQLEyBNaWNyb3Nv
# ZnQgT3BlcmF0aW9ucyBQdWVydG8gUmljbzEmMCQGA1UECxMdVGhhbGVzIFRTUyBF
# U046QkJFQy0zMENBLTJEQkUxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1w
# IFNlcnZpY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuCOuILcP+
# LfUEqGIrXGvCr+mEFRpy20gxNNMkZI+kViE/rsYH3eItmQfawIndfP1bKp+1J2b3
# mXXJ7qqwMYlflpc4qTc/HgOByIa3tFmUEWN/jDBKzE9FucFHKgPT8gtEnVGOg9h3
# ES3zIJj18d+sVVcbpgmutvJKopGl1u9vTNwLxdH3S4t+ov1SgOgsTF0CblJiu/zd
# iwsQzstk+3nQPjk+DlwfEC5kwOricPV0QMaC/q+Buj+4rBUAvDKb/NvBqRtJptmT
# 9S5HZOXidFMm2i2SJVK0sEamOw69Jaj1mB5bksyMP0PFttGYVxh02dTBDG6AbmTC
# Er9bKrgPBjWxAgMBAAGjggEbMIIBFzAdBgNVHQ4EFgQUzhnW8N+xfFZ8o+3bxTZy
# MEBX1gEwHwYDVR0jBBgwFoAU1WM6XIoxkPNDe3xGG8UzaFqFbVUwVgYDVR0fBE8w
# TTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj
# dHMvTWljVGltU3RhUENBXzIwMTAtMDctMDEuY3JsMFoGCCsGAQUFBwEBBE4wTDBK
# BggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9N
# aWNUaW1TdGFQQ0FfMjAxMC0wNy0wMS5jcnQwDAYDVR0TAQH/BAIwADATBgNVHSUE
# DDAKBggrBgEFBQcDCDANBgkqhkiG9w0BAQsFAAOCAQEApAnaQljuFW4UjErMgHn4
# LWHVod53qtw/9FERINhT6tH/Ed6n6AzDcfeBdr4taaxo5dB+juWM6nDQwd99kInu
# Kk7fqRlxd7ZmJlkFQ6MAdLzdJDGXSkS7I3aR7E/pKnBV1Y6gbICuPeM1CTPYSO26
# ryfWM36/PGu1Iv1JGNkJOG82X2J3SiACPFIzCaexAK4P9bEPc8GhqdHdxc7x0fVe
# Ow+EvBanHFa82hmz2HC/JMaI4yR7JtRgKjZZTuOIWBqkXmDFcFaTgfFl4jJLdwQC
# dkMb4wfLgVdc/Jym4nJrqBZFTb0mkAYb6OkK1h6gNobk69mFO5yjDTiw8hPGZRor
# kjCCBnEwggRZoAMCAQICCmEJgSoAAAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJ
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jv
# c29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEwMDcwMTIx
# MzY1NVoXDTI1MDcwMTIxNDY1NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
# c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
# b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIw
# MTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX
# 9fp/aZRrdFQQ1aUKAIKF++18aEssX8XD5WHCdrc+Zitb8BVTJwQxH0EbGpUdzgkT
# jnxhMFmxMEQP8WCIhFRDDNdNuDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG
# 8lhHhjKEHnRhZ5FfgVSxz5NMksHEpl3RYRNuKMYa+YaAu99h/EbBJx0kZxJyGiGK
# r0tkiVBisV39dx898Fd1rL2KQk1AUdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6
# Kgox8NpOBpG2iAg16HgcsOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8wMlEXV4WnAEF
# TyJNAgMBAAGjggHmMIIB4jAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6
# XIoxkPNDe3xGG8UzaFqFbVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYD
# VR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxi
# aNE9lJBb186aGMQwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3Nv
# ZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMu
# Y3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNy
# b3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQw
# gaAGA1UdIAEB/wSBlTCBkjCBjwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFo
# dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vUEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRt
# MEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0
# AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH5ohRDeLG4Jg/
# gXEDPZ2joSFvs+umzPUxvs8F4qn++ldtGTCzwsVmyWrf9efweL3HqJ4l4/m87WtU
# VwgrUYJEEvu5U4zM9GASinbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/f8Z/8jd9
# Wj8c8pl5SpFSAK84Dxf1L3mBZdmptWvkx872ynoAb0swRCQiPM/tA6WWj1kpvLb9
# BOFwnzJKJ/1Vry/+tuWOM7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlKcWOd
# eyFtw5yjojz6f32WapB4pm3S4Zz5Hfw42JT0xqUKloakvZ4argRCg7i1gJsiOCC1
# JeVk7Pf0v35jWSUPei45V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4Ttx
# Cd9ddJgiCGHasFAeb73x4QDf5zEHpJM692VHeOj4qEir995yfmFrb3epgcunCaw5
# u+zGy9iCtHLNHfS4hQEegPsbiSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9U
# JyH3yKxO2ii4sanblrKnQqLJzxlBTeCG+SqaoxFmMNO7dDJL32N79ZmKLxvHIa9Z
# ta7cRDyXUHHXodLFVeNp3lfB0d4wwP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa
# 7wknHNWzfjUeCLraNtvTX4/edIhJEqGCA7AwggKYAgEBMIH+oYHUpIHRMIHOMQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSkwJwYDVQQLEyBNaWNy
# b3NvZnQgT3BlcmF0aW9ucyBQdWVydG8gUmljbzEmMCQGA1UECxMdVGhhbGVzIFRT
# UyBFU046QkJFQy0zMENBLTJEQkUxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0
# YW1wIFNlcnZpY2WiJQoBATAJBgUrDgMCGgUAAxUAAjbENWjPNg9MFMx7uLG8Osg6
# dx2ggd4wgdukgdgwgdUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
# b24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMScw
# JQYDVQQLEx5uQ2lwaGVyIE5UUyBFU046NERFOS0wQzVFLTNFMDkxKzApBgNVBAMT
# Ik1pY3Jvc29mdCBUaW1lIFNvdXJjZSBNYXN0ZXIgQ2xvY2swDQYJKoZIhvcNAQEF
# BQACBQDiORpNMCIYDzIwMjAwNDA5MTE1MTQxWhgPMjAyMDA0MTAxMTUxNDFaMHcw
# PQYKKwYBBAGEWQoEATEvMC0wCgIFAOI5Gk0CAQAwCgIBAAICGdwCAf8wBwIBAAIC
# GqwwCgIFAOI6a80CAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAaAK
# MAgCAQACAxbjYKEKMAgCAQACAwehIDANBgkqhkiG9w0BAQUFAAOCAQEABnBMppi9
# x3/eTqCHWKBAzZuCVn0vSxjDJ8mUsWB3mXddZ/TDcfA2MTqQnwW/xiDx6HNlTdRt
# Ii/tjOegAiYl1HfPViMQTadFFA3+v38/dWLFPtiZHv4tc9P1E2SQ9IxkDx/2T5zd
# bLQynB/5HvkGv3PoFp7uT6XmwnM+E7NXGaKPEieId69dlxmrujXD9PdyP4zVTD2A
# cS70aUYUVJb0yyePQnFP5nbWJLY9l0mZ/4ypxNnlx1GYO7D6z3YW8CBtHvncKEoF
# sMHdvZSa4uqxxixty1j5ckjPjzEmK94glEetxaRsxfSKYUDmGyM+dRgOhCzQgkjW
# EWoyoxk1SKmC5TGCAvUwggLxAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
# QSAyMDEwAhMzAAAA/y+eawUR02uXAAAAAAD/MA0GCWCGSAFlAwQCAQUAoIIBMjAa
# BgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEINF+cv0h
# z00XM+ToBhlb8dz+wZuCJW0KI9hnUR0ujeLXMIHiBgsqhkiG9w0BCRACDDGB0jCB
# zzCBzDCBsQQUAjbENWjPNg9MFMx7uLG8Osg6dx0wgZgwgYCkfjB8MQswCQYDVQQG
# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
# VGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAP8vnmsFEdNrlwAAAAAA/zAWBBQN4cP3
# Lty5AfjYZ0mpFsU2dlUhQTANBgkqhkiG9w0BAQsFAASCAQCOVuvdo4Ol6alhUPSP
# rhSzI2HiILRARtD8pv1hIaaZBTHhGGTMlqeqQJNsuWqBqFPrfkFSVGsFv0aWfO/S
# Z2c6hTKvj2JfxoxDpBgfbNBe53CDKI3zKBDqHX/jMs6H+wI1ebDzXROkmp4G7h2R
# ZyW/0yi9kj8m4mkL8sDNcS/KABoIUxUPyfC+wHN1Tgujpzu6ZeaMJ0vPptI3vX3w
# hLf6jmMleMS/iMG6iYDfdIEnbeM4OC1X9YC9+CrCnIAyHkjQxBW/NI94oV1e7YGF
# 4A1Qt3Q+A3kC1Asua6owY2oL/ecKYeGzwsbP2/kU6SWerMObKfbd++xalbf/eCyD
# xEZ+
# SIG # End signature block

View File

@ -0,0 +1 @@
c9bd7aa195c6283c66802618bc9487dc5a702f92

View File

@ -1,356 +1,355 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Uap.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Uap.props')" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|AnyCPU">
<Configuration>Debug</Configuration>
<Platform>AnyCPU</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x86">
<Configuration>Debug</Configuration>
<Platform>x86</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|AnyCPU">
<Configuration>Release</Configuration>
<Platform>AnyCPU</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x86">
<Configuration>Release</Configuration>
<Platform>x86</Platform>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>a1a5e0b9-13d4-41fb-810d-518949f03df4</ProjectGuid>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
<TypeScriptRemoveComments>true</TypeScriptRemoveComments>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<TypeScriptRemoveComments>true</TypeScriptRemoveComments>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0'">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).Default.props" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).props" />
<PropertyGroup>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>$(VersionNumberMajor).$(VersionNumberMinor)</MinimumVisualStudioVersion>
<DefaultLanguage>en-GB</DefaultLanguage>
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
<AppxSymbolPackageEnabled>False</AppxSymbolPackageEnabled>
<AppxBundle>Always</AppxBundle>
<AppxBundlePlatforms>neutral</AppxBundlePlatforms>
<PackageCertificateThumbprint>3A9A0801C9E14E77F0C75EF575FD585BF0A99F18</PackageCertificateThumbprint>
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
<AppInstallerUpdateFrequency>1</AppInstallerUpdateFrequency>
<AppInstallerCheckForUpdateFrequency>OnApplicationRun</AppInstallerCheckForUpdateFrequency>
<PackageCertificateKeyFile>KiwixWebApp_StoreKey.pfx</PackageCertificateKeyFile>
</PropertyGroup>
<ItemGroup>
<Content Include="archives\wikipedia_en_100_maxi_2021-06.zim" />
<Content Include="images\BadgeLogo.scale-100.png" />
<Content Include="images\BadgeLogo.scale-125.png" />
<Content Include="images\BadgeLogo.scale-150.png" />
<Content Include="images\BadgeLogo.scale-200.png" />
<Content Include="images\BadgeLogo.scale-400.png" />
<Content Include="images\Kiwix_icon_transparent.svg" />
<Content Include="images\Kiwix_midnightblue_icon_transparent_530.png" />
<Content Include="images\LargeTile.scale-100.png" />
<Content Include="images\LargeTile.scale-125.png" />
<Content Include="images\LargeTile.scale-150.png" />
<Content Include="images\LargeTile.scale-200.png" />
<Content Include="images\LargeTile.scale-400.png" />
<Content Include="images\SmallTile.scale-100.png" />
<Content Include="images\SmallTile.scale-125.png" />
<Content Include="images\SmallTile.scale-150.png" />
<Content Include="images\SmallTile.scale-200.png" />
<Content Include="images\SmallTile.scale-400.png" />
<Content Include="images\splashscreen.scale-100.png" />
<Content Include="images\splashscreen.scale-125.png" />
<Content Include="images\splashscreen.scale-150.png" />
<Content Include="images\splashscreen.scale-200.png" />
<Content Include="images\splashscreen.scale-400.png" />
<Content Include="images\Square150x150Logo.scale-100.png" />
<Content Include="images\Square150x150Logo.scale-125.png" />
<Content Include="images\Square150x150Logo.scale-150.png" />
<Content Include="images\Square150x150Logo.scale-200.png" />
<Content Include="images\Square150x150Logo.scale-400.png" />
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-16.png" />
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-256.png" />
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-32.png" />
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-48.png" />
<Content Include="images\Square44x44Logo.scale-100.png" />
<Content Include="images\Square44x44Logo.scale-125.png" />
<Content Include="images\Square44x44Logo.scale-150.png" />
<Content Include="images\Square44x44Logo.scale-200.png" />
<Content Include="images\Square44x44Logo.scale-400.png" />
<Content Include="images\Square44x44Logo.targetsize-16.png" />
<Content Include="images\Square44x44Logo.targetsize-24.png" />
<Content Include="images\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="images\Square44x44Logo.targetsize-256.png" />
<Content Include="images\Square44x44Logo.targetsize-32.png" />
<Content Include="images\Square44x44Logo.targetsize-48.png" />
<Content Include="images\storelogo.scale-100.png" />
<Content Include="images\storelogo.scale-125.png" />
<Content Include="images\storelogo.scale-150.png" />
<Content Include="images\storelogo.scale-200.png" />
<Content Include="images\storelogo.scale-400.png" />
<Content Include="images\Wide310x150Logo.scale-100.png" />
<Content Include="images\Wide310x150Logo.scale-125.png" />
<Content Include="images\Wide310x150Logo.scale-150.png" />
<Content Include="images\Wide310x150Logo.scale-200.png" />
<Content Include="images\Wide310x150Logo.scale-400.png" />
<Content Include="www\-\mw\content.parsoid.css" />
<Content Include="www\-\mw\ext.cite.a11y.css" />
<Content Include="www\-\mw\ext.cite.styles.css" />
<Content Include="www\-\mw\ext.cite.ux-enhancements.css" />
<Content Include="www\-\mw\ext.inputBox.styles.css" />
<Content Include="www\-\mw\ext.kartographer.frame.css" />
<Content Include="www\-\mw\ext.kartographer.link.css" />
<Content Include="www\-\mw\ext.kartographer.style.css" />
<Content Include="www\-\mw\ext.math.scripts.css" />
<Content Include="www\-\mw\ext.math.styles.css" />
<Content Include="www\-\mw\ext.scribunto.logs.css" />
<Content Include="www\-\mw\ext.timeline.styles.css" />
<Content Include="www\-\mw\ext.tmh.thumbnail.styles.css" />
<Content Include="www\-\mw\inserted_style.css" />
<Content Include="www\-\mw\inserted_style_mobile.css" />
<Content Include="www\-\mw\inserted_style_original.css" />
<Content Include="www\-\mw\mediawiki.action.view.redirectPage.css" />
<Content Include="www\-\mw\mediawiki.page.gallery.styles.css" />
<Content Include="www\-\mw\mediawiki.toc.css" />
<Content Include="www\-\mw\mediawiki.ui.checkbox.css" />
<Content Include="www\-\mw\mediawiki.ui.input.css" />
<Content Include="www\-\mw\minerva.css" />
<Content Include="www\-\mw\mobile.css" />
<Content Include="www\-\mw\mw.MediaWikiPlayer.loader.css" />
<Content Include="www\-\mw\mw.PopUpMediaTransform.css" />
<Content Include="www\-\mw\mw.TMHGalleryHook.js.css" />
<Content Include="www\-\mw\newstyle_main_page.css" />
<Content Include="www\-\mw\original-inserted_style_mobile.css" />
<Content Include="www\-\mw\style.css" />
<Content Include="www\-\style.css" />
<Content Include="www\A\Main_Page" />
<Content Include="www\A\Wikipedia%253AWikiProject_Medicine\Open_Textbook_of_Medicine" />
<Content Include="www\img\icons\kiwix-midnightblue-90.png" />
<Content Include="www\I\ArequipaBanner3.jpg" />
<Content Include="www\I\AviationHistoryBanner3.jpg" />
<Content Include="www\I\Hand_sanitizer_banner.jpg" />
<Content Include="www\I\IriomoteBanner1.jpg" />
<Content Include="www\js\lib\arrayFromPolyfill.js" />
<Content Include="www\js\lib\promisePolyfill.js" />
<Content Include="www\js\lib\webpHeroBundle_0.0.0-dev.27.js" />
<Content Include="www\js\lib\xzdec-asm.js" />
<Content Include="www\js\lib\xzdec-wasm.js" />
<Content Include="www\js\lib\xzdec-wasm.wasm" />
<Content Include="www\js\lib\zstddec-asm.js" />
<Content Include="www\js\lib\zstddec-wasm.js" />
<Content Include="www\js\lib\zstddec-wasm.wasm" />
<Content Include="www\js\lib\zstddec_wrapper.js" />
<None Include="Package.StoreAssociation.xml" />
<None Include="kiwix.pfx" />
<None Include="KiwixWebApp_StoreKey.pfx" />
<Content Include="manifest.json" />
<Content Include="pwabuilder-sw.js" />
<Content Include="www\-\static\main.css" />
<Content Include="www\-\s\css_modules\content.parsoid.css" />
<Content Include="www\-\s\css_modules\ext.cite.a11y.css" />
<Content Include="www\-\s\css_modules\ext.cite.styles.css" />
<Content Include="www\-\s\css_modules\ext.cite.ux-enhancements.css" />
<Content Include="www\-\s\css_modules\ext.inputBox.styles.css" />
<Content Include="www\-\s\css_modules\ext.kartographer.frame.css" />
<Content Include="www\-\s\css_modules\ext.kartographer.link.css" />
<Content Include="www\-\s\css_modules\ext.kartographer.style.css" />
<Content Include="www\-\s\css_modules\ext.math.scripts.css" />
<Content Include="www\-\s\css_modules\ext.math.styles.css" />
<Content Include="www\-\s\css_modules\ext.scribunto.logs.css" />
<Content Include="www\-\s\css_modules\ext.timeline.styles.css" />
<Content Include="www\-\s\css_modules\ext.tmh.thumbnail.styles.css" />
<Content Include="www\-\s\css_modules\inserted_style.css" />
<Content Include="www\-\s\css_modules\inserted_style_mobile.css" />
<Content Include="www\-\s\css_modules\mediawiki.page.gallery.styles.css" />
<Content Include="www\-\s\css_modules\mediawiki.toc.css" />
<Content Include="www\-\s\css_modules\mediawiki.ui.checkbox.css" />
<Content Include="www\-\s\css_modules\mediawiki.ui.input.css" />
<Content Include="www\-\s\css_modules\mobile.css" />
<Content Include="www\-\s\css_modules\mw.MediaWikiPlayer.loader.css" />
<Content Include="www\-\s\css_modules\mw.PopUpMediaTransform.css" />
<Content Include="www\-\s\css_modules\mw.TMHGalleryHook.js.css" />
<Content Include="www\-\s\css_modules\newstyle_main_page.css" />
<Content Include="www\-\s\css_modules\style.css" />
<Content Include="www\-\s\style-dark-invert.css" />
<Content Include="www\-\s\style-dark.css" />
<Content Include="www\-\s\style-mobile.css" />
<Content Include="www\-\s\style.css" />
<Content Include="www\-\s\vector.css" />
<Content Include="www\article.html" />
<Content Include="www\css\app.css" />
<Content Include="www\css\bootstrap-theme.min.css" />
<Content Include="www\css\bootstrap.min.css" />
<Content Include="www\favicon.ico" />
<Content Include="www\fonts\glyphicons-halflings-regular.eot" />
<Content Include="www\fonts\glyphicons-halflings-regular.svg" />
<Content Include="www\fonts\glyphicons-halflings-regular.ttf" />
<Content Include="www\fonts\glyphicons-halflings-regular.woff" />
<Content Include="www\fonts\glyphicons-halflings-regular.woff2" />
<Content Include="www\img\icons\kiwix-32.png" />
<Content Include="www\img\icons\kiwix-60.png" />
<Content Include="www\img\icons\kiwix-90.png" />
<Content Include="www\img\icons\kiwix-blue-32.png" />
<Content Include="www\img\icons\kiwix-midnightblue-90.png" />
<Content Include="www\img\icons\map_marker-18px.png" />
<Content Include="www\img\icons\new_window.svg" />
<Content Include="www\img\icons\new_window_lb.svg" />
<Content Include="www\img\icons\wikimed-blue-32.png" />
<Content Include="www\img\icons\wikimed-lightblue-32.png" />
<Content Include="www\img\icons\wikivoyage-black-32.png" />
<Content Include="www\img\icons\wikivoyage-white-32.png" />
<Content Include="www\img\lightBlue.png" />
<Content Include="www\img\spinner.gif" />
<Content Include="www\index.html" />
<Content Include="www\I\s\Checker-16x16.png" />
<Content Include="www\I\s\cog-sprite.png" />
<Content Include="www\I\s\Icons-mini-file_acrobat.gif" />
<Content Include="www\I\s\Icon_External_Link.png" />
<Content Include="www\I\s\magnify-clip-ltr.png" />
<Content Include="www\I\s\spinner.gif" />
<Content Include="www\js\app.js" />
<Content Include="www\js\init.js" />
<Content Include="www\js\katex\contrib\auto-render.min.js" />
<Content Include="www\js\katex\contrib\copy-tex.min.css" />
<Content Include="www\js\katex\contrib\copy-tex.min.js" />
<Content Include="www\js\katex\contrib\mathtex-script-type.min.js" />
<Content Include="www\js\katex\contrib\mhchem.min.js" />
<Content Include="www\js\katex\fonts\KaTeX_AMS-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_AMS-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_AMS-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Bold.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Bold.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Bold.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Bold.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Bold.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Bold.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Bold.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Bold.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Bold.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Main-BoldItalic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Main-BoldItalic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Main-BoldItalic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Italic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Italic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Italic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Math-BoldItalic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Math-BoldItalic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Math-BoldItalic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Math-Italic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Math-Italic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Math-Italic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Bold.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Bold.woff" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Bold.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Italic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Italic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Italic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Script-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Script-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Script-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Size1-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Size1-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Size1-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Size2-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Size2-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Size2-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Size3-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Size3-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Size3-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Size4-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Size4-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Size4-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Typewriter-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Typewriter-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Typewriter-Regular.woff2" />
<Content Include="www\js\katex\katex.min.css" />
<Content Include="www\js\katex\katex.min.js" />
<Content Include="www\js\katex\README.md" />
<Content Include="www\js\lib\bootstrap.min.js" />
<Content Include="www\js\lib\cache.js" />
<Content Include="www\js\lib\settingsStore.js" />
<Content Include="www\js\lib\filecache.js" />
<Content Include="www\js\lib\images.js" />
<Content Include="www\js\lib\jquery-3.2.1.slim.js" />
<Content Include="www\js\lib\kiwixServe.js" />
<Content Include="www\js\lib\require.js" />
<Content Include="www\js\lib\transformStyles.js" />
<Content Include="www\js\lib\uiUtil.js" />
<Content Include="www\js\lib\utf8.js" />
<Content Include="www\js\lib\util.js" />
<Content Include="www\js\lib\xzdec_wrapper.js" />
<Content Include="www\js\lib\zimArchive.js" />
<Content Include="www\js\lib\zimArchiveLoader.js" />
<Content Include="www\js\lib\zimDirEntry.js" />
<Content Include="www\js\lib\zimfile.js" />
</ItemGroup>
<ItemGroup>
<Service Include="{4a0dddb5-7a95-4fbf-97cc-616d07737a77}" />
</ItemGroup>
<ItemGroup>
<AppxManifest Include="package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<Folder Include="www\-\static\bootstrap\" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Uap.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Uap.targets')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.jsproj.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.jsproj.targets')" />
<!-- To modify your build process, add your task inside one of the targets below then uncomment
that target and the DisableFastUpToDateCheck PropertyGroup.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
<PropertyGroup>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
-->
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Uap.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Uap.props')" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|AnyCPU">
<Configuration>Debug</Configuration>
<Platform>AnyCPU</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x86">
<Configuration>Debug</Configuration>
<Platform>x86</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|AnyCPU">
<Configuration>Release</Configuration>
<Platform>AnyCPU</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x86">
<Configuration>Release</Configuration>
<Platform>x86</Platform>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>a1a5e0b9-13d4-41fb-810d-518949f03df4</ProjectGuid>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
<TypeScriptRemoveComments>true</TypeScriptRemoveComments>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<TypeScriptRemoveComments>true</TypeScriptRemoveComments>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0'">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).Default.props" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).props" />
<PropertyGroup>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>$(VersionNumberMajor).$(VersionNumberMinor)</MinimumVisualStudioVersion>
<DefaultLanguage>en-GB</DefaultLanguage>
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
<AppxSymbolPackageEnabled>False</AppxSymbolPackageEnabled>
<AppxBundle>Always</AppxBundle>
<AppxBundlePlatforms>neutral</AppxBundlePlatforms>
<PackageCertificateThumbprint>5A76EAF3DF52F0B9A1A933C0A1C0DA78D207FDA6</PackageCertificateThumbprint>
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
<AppInstallerUpdateFrequency>1</AppInstallerUpdateFrequency>
<AppInstallerCheckForUpdateFrequency>OnApplicationRun</AppInstallerCheckForUpdateFrequency>
</PropertyGroup>
<ItemGroup>
<Content Include="archives\wikipedia_en_100_maxi_2021-07.zim" />
<Content Include="images\BadgeLogo.scale-100.png" />
<Content Include="images\BadgeLogo.scale-125.png" />
<Content Include="images\BadgeLogo.scale-150.png" />
<Content Include="images\BadgeLogo.scale-200.png" />
<Content Include="images\BadgeLogo.scale-400.png" />
<Content Include="images\Kiwix_icon_transparent.svg" />
<Content Include="images\Kiwix_midnightblue_icon_transparent_530.png" />
<Content Include="images\LargeTile.scale-100.png" />
<Content Include="images\LargeTile.scale-125.png" />
<Content Include="images\LargeTile.scale-150.png" />
<Content Include="images\LargeTile.scale-200.png" />
<Content Include="images\LargeTile.scale-400.png" />
<Content Include="images\SmallTile.scale-100.png" />
<Content Include="images\SmallTile.scale-125.png" />
<Content Include="images\SmallTile.scale-150.png" />
<Content Include="images\SmallTile.scale-200.png" />
<Content Include="images\SmallTile.scale-400.png" />
<Content Include="images\splashscreen.scale-100.png" />
<Content Include="images\splashscreen.scale-125.png" />
<Content Include="images\splashscreen.scale-150.png" />
<Content Include="images\splashscreen.scale-200.png" />
<Content Include="images\splashscreen.scale-400.png" />
<Content Include="images\Square150x150Logo.scale-100.png" />
<Content Include="images\Square150x150Logo.scale-125.png" />
<Content Include="images\Square150x150Logo.scale-150.png" />
<Content Include="images\Square150x150Logo.scale-200.png" />
<Content Include="images\Square150x150Logo.scale-400.png" />
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-16.png" />
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-256.png" />
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-32.png" />
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-48.png" />
<Content Include="images\Square44x44Logo.scale-100.png" />
<Content Include="images\Square44x44Logo.scale-125.png" />
<Content Include="images\Square44x44Logo.scale-150.png" />
<Content Include="images\Square44x44Logo.scale-200.png" />
<Content Include="images\Square44x44Logo.scale-400.png" />
<Content Include="images\Square44x44Logo.targetsize-16.png" />
<Content Include="images\Square44x44Logo.targetsize-24.png" />
<Content Include="images\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="images\Square44x44Logo.targetsize-256.png" />
<Content Include="images\Square44x44Logo.targetsize-32.png" />
<Content Include="images\Square44x44Logo.targetsize-48.png" />
<Content Include="images\storelogo.scale-100.png" />
<Content Include="images\storelogo.scale-125.png" />
<Content Include="images\storelogo.scale-150.png" />
<Content Include="images\storelogo.scale-200.png" />
<Content Include="images\storelogo.scale-400.png" />
<Content Include="images\Wide310x150Logo.scale-100.png" />
<Content Include="images\Wide310x150Logo.scale-125.png" />
<Content Include="images\Wide310x150Logo.scale-150.png" />
<Content Include="images\Wide310x150Logo.scale-200.png" />
<Content Include="images\Wide310x150Logo.scale-400.png" />
<Content Include="www\-\mw\content.parsoid.css" />
<Content Include="www\-\mw\ext.cite.a11y.css" />
<Content Include="www\-\mw\ext.cite.styles.css" />
<Content Include="www\-\mw\ext.cite.ux-enhancements.css" />
<Content Include="www\-\mw\ext.inputBox.styles.css" />
<Content Include="www\-\mw\ext.kartographer.frame.css" />
<Content Include="www\-\mw\ext.kartographer.link.css" />
<Content Include="www\-\mw\ext.kartographer.style.css" />
<Content Include="www\-\mw\ext.math.scripts.css" />
<Content Include="www\-\mw\ext.math.styles.css" />
<Content Include="www\-\mw\ext.scribunto.logs.css" />
<Content Include="www\-\mw\ext.timeline.styles.css" />
<Content Include="www\-\mw\ext.tmh.thumbnail.styles.css" />
<Content Include="www\-\mw\inserted_style.css" />
<Content Include="www\-\mw\inserted_style_mobile.css" />
<Content Include="www\-\mw\inserted_style_original.css" />
<Content Include="www\-\mw\mediawiki.action.view.redirectPage.css" />
<Content Include="www\-\mw\mediawiki.page.gallery.styles.css" />
<Content Include="www\-\mw\mediawiki.toc.css" />
<Content Include="www\-\mw\mediawiki.ui.checkbox.css" />
<Content Include="www\-\mw\mediawiki.ui.input.css" />
<Content Include="www\-\mw\minerva.css" />
<Content Include="www\-\mw\mobile.css" />
<Content Include="www\-\mw\mw.MediaWikiPlayer.loader.css" />
<Content Include="www\-\mw\mw.PopUpMediaTransform.css" />
<Content Include="www\-\mw\mw.TMHGalleryHook.js.css" />
<Content Include="www\-\mw\newstyle_main_page.css" />
<Content Include="www\-\mw\original-inserted_style_mobile.css" />
<Content Include="www\-\mw\style.css" />
<Content Include="www\-\style.css" />
<Content Include="www\A\Main_Page" />
<Content Include="www\A\Wikipedia%253AWikiProject_Medicine\Open_Textbook_of_Medicine" />
<Content Include="www\img\icons\kiwix-midnightblue-90.png" />
<Content Include="www\I\ArequipaBanner3.jpg" />
<Content Include="www\I\AviationHistoryBanner3.jpg" />
<Content Include="www\I\Hand_sanitizer_banner.jpg" />
<Content Include="www\I\IriomoteBanner1.jpg" />
<Content Include="www\js\lib\arrayFromPolyfill.js" />
<Content Include="www\js\lib\promisePolyfill.js" />
<Content Include="www\js\lib\webpHeroBundle_0.0.0-dev.27.js" />
<Content Include="www\js\lib\xzdec-asm.js" />
<Content Include="www\js\lib\xzdec-wasm.js" />
<Content Include="www\js\lib\xzdec-wasm.wasm" />
<Content Include="www\js\lib\zstddec-asm.js" />
<Content Include="www\js\lib\zstddec-wasm.js" />
<Content Include="www\js\lib\zstddec-wasm.wasm" />
<Content Include="www\js\lib\zstddec_wrapper.js" />
<None Include="Package.StoreAssociation.xml" />
<None Include="kiwix.pfx" />
<None Include="KiwixWebApp_StoreKey.pfx" />
<Content Include="manifest.json" />
<Content Include="pwabuilder-sw.js" />
<Content Include="www\-\static\main.css" />
<Content Include="www\-\s\css_modules\content.parsoid.css" />
<Content Include="www\-\s\css_modules\ext.cite.a11y.css" />
<Content Include="www\-\s\css_modules\ext.cite.styles.css" />
<Content Include="www\-\s\css_modules\ext.cite.ux-enhancements.css" />
<Content Include="www\-\s\css_modules\ext.inputBox.styles.css" />
<Content Include="www\-\s\css_modules\ext.kartographer.frame.css" />
<Content Include="www\-\s\css_modules\ext.kartographer.link.css" />
<Content Include="www\-\s\css_modules\ext.kartographer.style.css" />
<Content Include="www\-\s\css_modules\ext.math.scripts.css" />
<Content Include="www\-\s\css_modules\ext.math.styles.css" />
<Content Include="www\-\s\css_modules\ext.scribunto.logs.css" />
<Content Include="www\-\s\css_modules\ext.timeline.styles.css" />
<Content Include="www\-\s\css_modules\ext.tmh.thumbnail.styles.css" />
<Content Include="www\-\s\css_modules\inserted_style.css" />
<Content Include="www\-\s\css_modules\inserted_style_mobile.css" />
<Content Include="www\-\s\css_modules\mediawiki.page.gallery.styles.css" />
<Content Include="www\-\s\css_modules\mediawiki.toc.css" />
<Content Include="www\-\s\css_modules\mediawiki.ui.checkbox.css" />
<Content Include="www\-\s\css_modules\mediawiki.ui.input.css" />
<Content Include="www\-\s\css_modules\mobile.css" />
<Content Include="www\-\s\css_modules\mw.MediaWikiPlayer.loader.css" />
<Content Include="www\-\s\css_modules\mw.PopUpMediaTransform.css" />
<Content Include="www\-\s\css_modules\mw.TMHGalleryHook.js.css" />
<Content Include="www\-\s\css_modules\newstyle_main_page.css" />
<Content Include="www\-\s\css_modules\style.css" />
<Content Include="www\-\s\style-dark-invert.css" />
<Content Include="www\-\s\style-dark.css" />
<Content Include="www\-\s\style-mobile.css" />
<Content Include="www\-\s\style.css" />
<Content Include="www\-\s\vector.css" />
<Content Include="www\article.html" />
<Content Include="www\css\app.css" />
<Content Include="www\css\bootstrap-theme.min.css" />
<Content Include="www\css\bootstrap.min.css" />
<Content Include="www\favicon.ico" />
<Content Include="www\fonts\glyphicons-halflings-regular.eot" />
<Content Include="www\fonts\glyphicons-halflings-regular.svg" />
<Content Include="www\fonts\glyphicons-halflings-regular.ttf" />
<Content Include="www\fonts\glyphicons-halflings-regular.woff" />
<Content Include="www\fonts\glyphicons-halflings-regular.woff2" />
<Content Include="www\img\icons\kiwix-32.png" />
<Content Include="www\img\icons\kiwix-60.png" />
<Content Include="www\img\icons\kiwix-90.png" />
<Content Include="www\img\icons\kiwix-blue-32.png" />
<Content Include="www\img\icons\kiwix-midnightblue-90.png" />
<Content Include="www\img\icons\map_marker-18px.png" />
<Content Include="www\img\icons\new_window.svg" />
<Content Include="www\img\icons\new_window_lb.svg" />
<Content Include="www\img\icons\wikimed-blue-32.png" />
<Content Include="www\img\icons\wikimed-lightblue-32.png" />
<Content Include="www\img\icons\wikivoyage-black-32.png" />
<Content Include="www\img\icons\wikivoyage-white-32.png" />
<Content Include="www\img\lightBlue.png" />
<Content Include="www\img\spinner.gif" />
<Content Include="www\index.html" />
<Content Include="www\I\s\Checker-16x16.png" />
<Content Include="www\I\s\cog-sprite.png" />
<Content Include="www\I\s\Icons-mini-file_acrobat.gif" />
<Content Include="www\I\s\Icon_External_Link.png" />
<Content Include="www\I\s\magnify-clip-ltr.png" />
<Content Include="www\I\s\spinner.gif" />
<Content Include="www\js\app.js" />
<Content Include="www\js\init.js" />
<Content Include="www\js\katex\contrib\auto-render.min.js" />
<Content Include="www\js\katex\contrib\copy-tex.min.css" />
<Content Include="www\js\katex\contrib\copy-tex.min.js" />
<Content Include="www\js\katex\contrib\mathtex-script-type.min.js" />
<Content Include="www\js\katex\contrib\mhchem.min.js" />
<Content Include="www\js\katex\fonts\KaTeX_AMS-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_AMS-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_AMS-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Bold.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Bold.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Bold.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Caligraphic-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Bold.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Bold.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Bold.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Fraktur-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Bold.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Bold.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Bold.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Main-BoldItalic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Main-BoldItalic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Main-BoldItalic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Italic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Italic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Italic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Main-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Math-BoldItalic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Math-BoldItalic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Math-BoldItalic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Math-Italic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Math-Italic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Math-Italic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Bold.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Bold.woff" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Bold.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Italic.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Italic.woff" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Italic.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_SansSerif-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Script-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Script-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Script-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Size1-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Size1-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Size1-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Size2-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Size2-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Size2-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Size3-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Size3-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Size3-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Size4-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Size4-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Size4-Regular.woff2" />
<Content Include="www\js\katex\fonts\KaTeX_Typewriter-Regular.ttf" />
<Content Include="www\js\katex\fonts\KaTeX_Typewriter-Regular.woff" />
<Content Include="www\js\katex\fonts\KaTeX_Typewriter-Regular.woff2" />
<Content Include="www\js\katex\katex.min.css" />
<Content Include="www\js\katex\katex.min.js" />
<Content Include="www\js\katex\README.md" />
<Content Include="www\js\lib\bootstrap.min.js" />
<Content Include="www\js\lib\cache.js" />
<Content Include="www\js\lib\settingsStore.js" />
<Content Include="www\js\lib\filecache.js" />
<Content Include="www\js\lib\images.js" />
<Content Include="www\js\lib\jquery-3.2.1.slim.js" />
<Content Include="www\js\lib\kiwixServe.js" />
<Content Include="www\js\lib\require.js" />
<Content Include="www\js\lib\transformStyles.js" />
<Content Include="www\js\lib\uiUtil.js" />
<Content Include="www\js\lib\utf8.js" />
<Content Include="www\js\lib\util.js" />
<Content Include="www\js\lib\xzdec_wrapper.js" />
<Content Include="www\js\lib\zimArchive.js" />
<Content Include="www\js\lib\zimArchiveLoader.js" />
<Content Include="www\js\lib\zimDirEntry.js" />
<Content Include="www\js\lib\zimfile.js" />
</ItemGroup>
<ItemGroup>
<Service Include="{4a0dddb5-7a95-4fbf-97cc-616d07737a77}" />
</ItemGroup>
<ItemGroup>
<AppxManifest Include="package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<Folder Include="www\-\static\bootstrap\" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Uap.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Uap.targets')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.jsproj.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.jsproj.targets')" />
<!-- To modify your build process, add your task inside one of the targets below then uncomment
that target and the DisableFastUpToDateCheck PropertyGroup.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
<PropertyGroup>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
-->
</Project>

View File

@ -1,57 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" IgnorableNamespaces="uap mp uap3 uap5">
<Identity Name="Kiwix.KiwixJS" Version="1.5.0.0" Publisher="CN=0A5438F5-EEA6-4300-9B77-E45BBD148885" />
<mp:PhoneIdentity PhoneProductId="9850377b-0966-437e-ab30-a076c125f472" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>Kiwix JS</DisplayName>
<PublisherDisplayName>Kiwix</PublisherDisplayName>
<Logo>images\storelogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" StartPage="ms-appx-web:///www/index.html">
<uap:ApplicationContentUriRules>
<uap:Rule Match="ms-appx-web:///www/index.html" Type="include" uap5:ServiceWorker="true" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://pwa.kiwix.org/" Type="include" uap5:ServiceWorker="true" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://kiwix.github.io/kiwix-js-windows/" Type="include" uap5:ServiceWorker="true" WindowsRuntimeAccess="all" />
</uap:ApplicationContentUriRules>
<uap:VisualElements DisplayName="Kiwix JS" Description="Kiwix Offline Wikipedia and ZIM File Reader" BackgroundColor="transparent" Square150x150Logo="images\Square150x150Logo.png" Square44x44Logo="images\Square44x44Logo.png">
<uap:DefaultTile ShortName="Kiwix JS" Square310x310Logo="images\LargeTile.png" Wide310x150Logo="images\Wide310x150Logo.png" Square71x71Logo="images\SmallTile.png">
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square150x150Logo" />
<uap:ShowOn Tile="wide310x150Logo" />
<uap:ShowOn Tile="square310x310Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
<uap:SplashScreen Image="images\splashscreen.png" BackgroundColor="transparent" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="portrait" />
<uap:Rotation Preference="landscape" />
<uap:Rotation Preference="portraitFlipped" />
<uap:Rotation Preference="landscapeFlipped" />
</uap:InitialRotationPreference>
</uap:VisualElements>
<Extensions>
<uap:Extension Category="windows.fileTypeAssociation">
<uap:FileTypeAssociation Name="zimarchive" DesiredView="default">
<uap:DisplayName>ZIM Archive</uap:DisplayName>
<uap:Logo>images\Kiwix_midnightblue_icon_transparent_530.png</uap:Logo>
<uap:InfoTip>Compressed ZIM FIle Archive</uap:InfoTip>
<uap:SupportedFileTypes>
<uap:FileType ContentType="application/zlib">.zim</uap:FileType>
<uap:FileType ContentType="application/zlib">.zimaa</uap:FileType>
</uap:SupportedFileTypes>
</uap:FileTypeAssociation>
</uap:Extension>
</Extensions>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" IgnorableNamespaces="uap mp uap3 uap5">
<Identity Name="Kiwix.KiwixJS" Version="1.6.0.0" Publisher="CN=Association Kiwix, O=Association Kiwix, L=Lausanne, C=CH" />
<mp:PhoneIdentity PhoneProductId="9850377b-0966-437e-ab30-a076c125f472" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>Kiwix JS</DisplayName>
<PublisherDisplayName>Kiwix</PublisherDisplayName>
<Logo>images\storelogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" StartPage="ms-appx-web:///www/index.html">
<uap:ApplicationContentUriRules>
<uap:Rule Match="ms-appx-web:///www/index.html" Type="include" uap5:ServiceWorker="true" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://pwa.kiwix.org/" Type="include" uap5:ServiceWorker="true" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://kiwix.github.io/kiwix-js-windows/" Type="include" uap5:ServiceWorker="true" WindowsRuntimeAccess="all" />
</uap:ApplicationContentUriRules>
<uap:VisualElements DisplayName="Kiwix JS" Description="Kiwix Offline Wikipedia and ZIM File Reader" BackgroundColor="transparent" Square150x150Logo="images\Square150x150Logo.png" Square44x44Logo="images\Square44x44Logo.png">
<uap:DefaultTile ShortName="Kiwix JS" Square310x310Logo="images\LargeTile.png" Wide310x150Logo="images\Wide310x150Logo.png" Square71x71Logo="images\SmallTile.png">
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square150x150Logo" />
<uap:ShowOn Tile="wide310x150Logo" />
<uap:ShowOn Tile="square310x310Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
<uap:SplashScreen Image="images\splashscreen.png" BackgroundColor="transparent" />
<uap:InitialRotationPreference>
<uap:Rotation Preference="portrait" />
<uap:Rotation Preference="landscape" />
<uap:Rotation Preference="portraitFlipped" />
<uap:Rotation Preference="landscapeFlipped" />
</uap:InitialRotationPreference>
</uap:VisualElements>
<Extensions>
<uap:Extension Category="windows.fileTypeAssociation">
<uap:FileTypeAssociation Name="zimarchive" DesiredView="default">
<uap:DisplayName>ZIM Archive</uap:DisplayName>
<uap:Logo>images\Kiwix_midnightblue_icon_transparent_530.png</uap:Logo>
<uap:InfoTip>Compressed ZIM FIle Archive</uap:InfoTip>
<uap:SupportedFileTypes>
<uap:FileType ContentType="application/zlib">.zim</uap:FileType>
<uap:FileType ContentType="application/zlib">.zimaa</uap:FileType>
</uap:SupportedFileTypes>
</uap:FileTypeAssociation>
</uap:Extension>
</Extensions>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
</Package>