add suite installer builder

This commit is contained in:
ckamte
2025-12-30 11:23:13 +06:30
parent 98a79af067
commit 77687c2af3
169 changed files with 556 additions and 1 deletions

View File

@@ -31,7 +31,7 @@ Arguments:
1. Extract the whole branch to a working folder and pick one Set-up.exe version and extract it to the same folder. (v4 setup not support win10)
2. Download desire product using ccdl-win.py (creates "products" folder inside the working folder)
3. Download ACC packages for the installer using build_installer.py (creates "packages" folder inside the working folder)
4. Rename \products\\*prefix*-Driver.xml to Driver.xml (For multiple products, rename ONE product prefix to Driver.xml to install it) ~~until I figure out how to merge driver.xml files, it's called suiteinfo.xml~~
4. Rename \products\\*prefix*-Driver.xml to Driver.xml (For multiple products, rename ONE product prefix to Driver.xml to install it)
5. Along the "packages" folder, a new "acc_sources" folder will be created as well (this contains the zip files of the ACC packages which were extracted before)
6. Optional - Delete downloaded zip files in "acc_sources" directory to reduce installer size (Not necessary because omitting the folder if the whole installation is packed is valid and if kept, used for other products)
7. Run Set-up.exe to install the product.
@@ -47,3 +47,4 @@ https://drive.google.com/file/d/1Quc2YgR85VO9_aTMo3HfvcsOXnlwSFid/view?usp=shari
```
python ccdl-win.py -u 6 -l en_US -p win64 -s phsp,idsn,ilst -x
```
3. You can create suite like installer by using gen-suite.py (from suite_installer directory)

78
suite_installer/APRO.xml Normal file
View File

@@ -0,0 +1,78 @@
<ProductInfo>
<Name>Adobe Acrobat Pro DC</Name>
<InstallerType>ThirdParty</InstallerType>
<HideProductLaunch>true</HideProductLaunch>
<Icons>
<Size20x19>
<path>./resources/icons/apro20x19.png</path>
</Size20x19>
<Size32x32>
<path>./resources/icons/apro32x32.png</path>
</Size32x32>
<Size44x42>
<path>./resources/icons/apro44x42.png</path>
</Size44x42>
<Size64x64>
<path>./resources/icons/apro64x64.png</path>
</Size64x64>
<Size88x84>
<path>./resources/icons/apro88x84.png</path>
</Size88x84>
<Size176x168>
<path>./resources/icons/apro176x168.png</path>
</Size176x168>
</Icons>
<ConflictingProcesses>
<ConflictingProcess>
<RegularExpression>^[Aa][Cc][Rr][Oo][Bb][Aa][Tt].[Ee][Xx][Ee]$</RegularExpression>
<ProcessDisplayName>Adobe Acrobat</ProcessDisplayName>
</ConflictingProcess>
<ConflictingProcess>
<RegularExpression>^[Aa][Cc][Aa][Dd].[Ee][Xx][Ee]$</RegularExpression>
<ProcessDisplayName>AutoCAD Application</ProcessDisplayName>
</ConflictingProcess>
<ConflictingProcess>
<RegularExpression>^[Ee][Xx][Cc][Ee][Ll]\.[Ee][Xx][Ee]$</RegularExpression>
<ProcessDisplayName>Microsoft Excel</ProcessDisplayName>
</ConflictingProcess>
<ConflictingProcess>
<RegularExpression>^[Oo][Uu][Tt][Ll][Oo][Oo][Kk]\.[Ee][Xx][Ee]$</RegularExpression>
<ProcessDisplayName>Microsoft Outlook</ProcessDisplayName>
</ConflictingProcess>
<ConflictingProcess>
<RegularExpression>^[Pp][Oo][Ww][Ee][Rr][Pp][Nn][Tt]\.[Ee][Xx][Ee]$</RegularExpression>
<ProcessDisplayName>Microsoft PowerPoint</ProcessDisplayName>
</ConflictingProcess>
<ConflictingProcess>
<RegularExpression>^[Vv][Ii][Ss][Ii][Oo]\.[Ee][Xx][Ee]$</RegularExpression>
<ProcessDisplayName>Microsoft Visio</ProcessDisplayName>
</ConflictingProcess>
<ConflictingProcess>
<RegularExpression>^[Vv][Ii][Ss][Ii][Oo]32\.[Ee][Xx][Ee]$</RegularExpression>
<ProcessDisplayName>Microsoft Visio</ProcessDisplayName>
</ConflictingProcess>
<ConflictingProcess>
<RegularExpression>^[Ww][Ii][Nn][Ww][Oo][Rr][Dd]\.[Ee][Xx][Ee]$</RegularExpression>
<ProcessDisplayName>Microsoft Word</ProcessDisplayName>
</ConflictingProcess>
</ConflictingProcesses>
<InstallData>
<ThirdPartyData>
<CodexVersion>22.3</CodexVersion>
<Platform>win64</Platform>
<EsdDirectory>./products/APRO</EsdDirectory>
<InstallSize>1636827136</InstallSize>
<DefaultInstallDir>[AdobeProgramFiles]</DefaultInstallDir>
<InstallCommand>
<Path>Setup.exe</Path>
<Arguments>
<Argument>/sAll</Argument>
<Argument>/msi INSTALLDIR="[InstallDir]\Acrobat DC" LANG_LIST=[InstallLanguage] EULA_ACCEPT=YES SUITEMODE=1 OWNERSHIP_STATE=1 IGNOREAAM=1</Argument>
</Arguments>
<SuccessExitCodes>
<ExitCode>0</ExitCode>
</SuccessExitCodes>
</InstallCommand>
</ThirdPartyData>
</InstallData>
</ProductInfo>

20
suite_installer/Readme.md Normal file
View File

@@ -0,0 +1,20 @@
## Folder structure:
.\packages
.\products
.\resources
.\Set-up.exe
# How to
1. Download desired products.
2. Move all packages folders to products (No need to move __prefix__Driver.xml files)
3. Copy Set-up.exe and packages files to current folder
4. Copy AdobePIM.dll to resources folder
5. Run gen-suite.py
```
python gen-suite.py
python gen-suite.py -d "./../products"
````
6. SuiteInfo.xml can be found in products directory. (You can manually edit too)
# Note
Acrobat Pro DC is not HD installer type. You can manually edit SuiteInfo.xml (use APRO.xml file) and add acrobat installer files to products folder.

View File

@@ -0,0 +1,170 @@
import os
import io
import sys
import json
import argparse
from pathlib import Path
import xml.etree.ElementTree as ET
prodsDir = "./products"
SCRIPT_NAME = "Suite Info xml generator"
VERSION_STR = "1.0.00"
def show_info(name: str, version: str, pad: int, bdr: str) -> None:
"""Show script information"""
tl = len(name) + (pad * 2)
print(bdr * tl)
print(bdr + name.center(tl - 2) + bdr)
print(version.center(tl, bdr))
def icon_list(elem, sap):
sap = sap.lower()
icons = ET.SubElement(elem, "Icons")
list = ["20x19", "32x32", "44x42", "64x64", "88x84", "176x168"]
for ic in list:
ico = ET.SubElement(icons, f"Size{ic}")
path = ET.SubElement(ico, "path")
path.text = f"./resources/icons/{sap}{ic}.png"
def calc_sizes(data):
pkgs = data["Packages"]["Package"]
size = 0
for tmp in pkgs:
size += int(tmp.get("ExtractSize"))
return str(size)
def add_product(elem):
pDir = Path(prodsDir)
paths = [str(item) for item in pDir.rglob('*/') if item.is_dir()]
if len(paths) < 1:
print("\nNo products found in products directory")
sys.exit("\nBye")
print("\nGenerating ...")
langs = []
for p in paths:
file = os.path.join(".", p, "Application.json")
if Path(file).is_file() == False:
continue
with open(file, "r") as f:
data = json.load(f)
if data.get("AddRemoveInfo") and data.get("IsSTI") is False:
sapCode = data.get("SAPCode")
prod = ET.SubElement(elem, "ProductInfo")
name = ET.SubElement(prod, "Name")
name.text = data["AddRemoveInfo"]["DisplayName"]["Language"][0]["value"]
type = ET.SubElement(prod, "InstallerType")
type.text = "HD"
hide = ET.SubElement(prod, "HideProductLaunch")
hide.text = "true"
icon_list(prod, sapCode)
insData = ET.SubElement(prod, "InstallData")
hdData = ET.SubElement(insData, "HDData")
for k, v in dict({
"SAPCode": sapCode,
"CodexVersion" : data.get("CodexVersion"),
"BaseVersion": data.get("BaseVersion"),
"Platform": data.get("Platform"),
"EsdDirectory": f"{prodsDir}/{sapCode}",
"InstallSize": calc_sizes(data),
}).items():
x = ET.SubElement(hdData, k)
x.text = v
supLangs = data["SupportedLanguages"]["Language"]
for k in supLangs:
if k["locale"] not in langs:
langs.append(k["locale"])
if data.get("Dependencies"):
deps = ET.SubElement(hdData, "Dependencies")
depList = data["Dependencies"]["Dependency"]
for d in depList:
esdDir = f"{prodsDir}/{d.get("SAPCode")}"
depJson = os.path.join(Path(esdDir), "Application.json")
with open(depJson, "r") as f:
depData = json.load(f)
size = calc_sizes(depData)
dPkg = ET.SubElement(deps, "Dependency")
for k, v in dict({
"SAPCode": d.get("SAPCode"),
"BaseVersion": d.get("BaseVersion"),
"EsdDirectory": esdDir,
"InstallSize": size or "0",
}).items():
x = ET.SubElement(dPkg, k)
x.text = v
if sapCode == "LTRM":
requestInfo = ET.SubElement(insData, "RequestInfo")
reqSub = ET.SubElement(requestInfo, "IsEnterpriseDeployment")
reqSub.text = "true"
return langs
def gen_suiteinfo():
'''
Generate SuiteInfo.xml for suite like installer
'''
suiteInfo = ET.Element("SuiteInfo")
tmp = ET.SubElement(suiteInfo, "SuiteName")
tmp.text = suiteName
tmp = ET.SubElement(suiteInfo, "CodexVersion")
tmp.text = suiteVer
supLangs = ET.SubElement(suiteInfo, "SupportedLanguages")
infoList = ["IsNonCCSuite", "IsAAMRequired", "IsCCDRequired"]
for inf in infoList:
tmp = ET.SubElement(suiteInfo, inf)
tmp.text = "false"
icon_list(suiteInfo, "cloud")
products = ET.SubElement(suiteInfo, "ProductInfos")
langs = add_product(products)
for sl in langs:
tmp = ET.SubElement(supLangs, "Locale")
tmp.text = sl
tree = ET.ElementTree(suiteInfo)
ET.indent(tree, space=" ", level=0)
xml_file = os.path.join(prodsDir, "SuiteInfo.xml")
xml_declaration = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n'
with io.open(xml_file, "wb") as f:
f.write(xml_declaration.encode("utf-8"))
tree.write(f, encoding="utf-8", xml_declaration=False)
print(f"\nSuccessfully generated: {os.path.realpath(xml_file)}\n")
if __name__ == "__main__":
"""Get command-line parameters"""
parser = argparse.ArgumentParser()
parser.add_argument(
"-d", "--prodsDir", help="Products directory", action="store"
)
args = parser.parse_args()
show_info(SCRIPT_NAME, VERSION_STR, 10, "=")
suiteName = (input("\nPlease enter a name for suite: ").strip() or "Adobe Creative Cloud")
suiteVer = (input("\nPlease enter suite version: ").strip() or "1.0")
prodsDir = args.prodsDir or prodsDir
print(f"\nSuiteInfo.xml file will be save in {os.path.realpath(prodsDir)}")
gen_suiteinfo()

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Config><UIConfig><HideVersion>false</HideVersion><SkipLaunch>true</SkipLaunch><HidePIIScreen>false</HidePIIScreen><showMainScreen>true</showMainScreen><showDownloadOptionScreen>true</showDownloadOptionScreen><ShowInstallOptions>true</ShowInstallOptions><SkipAccLaunch>true</SkipAccLaunch></UIConfig></Config>

View File

@@ -0,0 +1,8 @@
{
"Name": "Výukové lekce k aplikaci Photoshop 2021",
"SubTitle": "Začněte, naučte se základy a nechte se inspirovat.",
"Operating1xWin": "Windows 10 version 1809 (64bitová verze) (minimální požadavek)",
"OperatingSystemMac": "Mac OS 10.14 (minimální požadavek)",
"Memory": "Instalace aplikace vyžaduje alespoň 8 GB paměti RAM",
"TextSlide1": "Plná náruč kreativity"
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Photoshop 2021 – Tutorials",
"SubTitle": "Erste Schritte, Grundlagen, Inspirationen.",
"Operating1xWin": "Windows 10 version 1809 (64-Bit) (mindestens erforderlich)",
"OperatingSystemMac": "Mac OS 10.14 (mindestens erforderlich)",
"Memory": "Sie benötigen mindestens 8 GB RAM, um die Anwendung zu installieren",
"TextSlide1": "Kreativität für alle."
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Photoshop 2021 tutorials",
"SubTitle": "Get started, get the essentials, get inspired.",
"Operating1xWin": "Windows 10 version 1809 (64-bit) (Minimum required)",
"OperatingSystemMac": "Mac OS 10.14 (Minimum required)",
"Memory": "You need minimum 8Gb RAM to install the application",
"TextSlide1": "Creativity for all."
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Tutoriales de Photoshop 2021",
"SubTitle": "Empiece, descubra los fundamentos y encuentre inspiración.",
"Operating1xWin": "Windows 10 version 1809 (64 bits) (mínimo requerido)",
"OperatingSystemMac": "Mac OS 10.14 (mínimo requerido)",
"Memory": "Se necesita un mínimo de 8 GB de RAM para instalar la aplicación",
"TextSlide1": "Creatividad para todos"
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Tutoriels Photoshop 2021",
"SubTitle": "Lancez-vous, saisissez l'essentiel, soyez inspiré.",
"Operating1xWin": "Windows 10 version 1809 (minimum requis)",
"OperatingSystemMac": "Mac OS 10.14 (minimum requis)",
"Memory": "Vous avez besoin de 8 Go de mémoire vive minimum pour installer l'application.",
"TextSlide1": "La créativité pour tous.",
}

View File

@@ -0,0 +1,9 @@
{
"Name": "Esercitazioni di Photoshop 2021",
"SubTitle": "Iniziate, raccogliete tutto ciò che vi serve e lasciatevi ispirare.",
"Operating1xWin": "Windows 10 version 1809 (64 bit) (versione minima richiesta)",
"OperatingSystemMac": "Mac OS 10.14 (versione minima richiesta)",
"Memory": "Sono necessari almeno 8 Gb di RAM per installare l'applicazione",
"TextSlide1": "Colora consente di ricolorare le fotografie in bianco e nero.",
"TextSlide2": "Creatività per tutti."
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Photoshop 2021 チュートリアル",
"SubTitle": "はじめに、基本事項を学び、ヒントを得てください。",
"Operating1xWin": "Windows 10 version 1809 (64-bit) (以上)",
"OperatingSystemMac": "Mac OS 10.14 (以上)",
"Memory": "アプリケーションをインストールするには、最低 8GB の RAM が必要です。",
"TextSlide1": "すべての人に「つくる力」を"
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Photoshop 2021 자습서",
"SubTitle": "시작하여 필수 기능을 이용해 보십시오.",
"Operating1xWin": "Windows 10 version 1809 (64비트)(최소 요구 사양)",
"OperatingSystemMac": "Mac OS 10.14(최소 요구 사양)",
"Memory": "애플리케이션을 설치하려면 최소 8GB의 RAM이 필요합니다.",
"TextSlide1": "모두를 위한 크리에이티브"
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Zelfstudies voor Photoshop 2021",
"SubTitle": "Ga aan de slag met handige tools en laat u inspireren.",
"Operating1xWin": "Windows 10 version 1809 (64-bits) (minimaal vereist)",
"OperatingSystemMac": "Mac OS 10.14 (minimaal vereist)",
"Memory": "U hebt minimaal 8 GB RAM nodig om de toepassing te installeren",
"TextSlide1": "Creativiteit voor iedereen."
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Samouczki programu Photoshop 2021",
"SubTitle": "Rozpocznij, poznaj wszystkie podstawy, zainspiruj się.",
"Operating1xWin": "Windows 10 version 1809 (64-bitowy) (minimalna wymagana wersja)",
"OperatingSystemMac": "Mac OS 10.14 (minimalna wymagana wersja)",
"Memory": "Do instalacji aplikacji wymagane są co najmniej 8 GB pamięci RAM.",
"TextSlide1": "Kreatywność dla wszystkich"
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Руководства по Photoshop 2021",
"SubTitle": "Создавайте работы, узнавайте новое, получайте вдохновение.",
"Operating1xWin": "Windows 10 версия 1809 (64-разрядная) (минимально допустимая версия)",
"OperatingSystemMac": "Mac OS 10.14 (минимально допустимая версия)",
"Memory": "Для установки приложения требуется минимум 8 ГБ ОЗУ",
"TextSlide1": "Проявить себя в творчестве может каждый!"
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Självstudiekurser för Photoshop 2021",
"SubTitle": "Kom igång, lär dig det grundläggande och bli inspirerad.",
"Operating1xWin": "Windows 10 version 1809 (64-bitars) krävs",
"OperatingSystemMac": "macOS 10.14 krävs",
"Memory": "Om du vill installera programmet måste du ha minst 8 GB med RAM-minne",
"TextSlide1": "Kreativitet för alla."
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Photoshop 2021 教程",
"SubTitle": "快速入门,获得必备工具,获得灵感。",
"Operating1xWin": "Windows 10 version 1809 (64 位)(最低要求)",
"OperatingSystemMac": "Mac OS 10.14(最低要求)",
"Memory": "您至少需要 8GB RAM 才能安装此应用程序",
"TextSlide1": "人人都能發揮創意"
}

View File

@@ -0,0 +1,8 @@
{
"Name": "Photoshop 2021 教學課程",
"SubTitle": "開始使用、瞭解基本知識、取得靈感。",
"Operating1xWin": "Windows 10 version 1809 (64 位元) (最低需求)",
"OperatingSystemMac": "Mac OS 10.14 (最低需求)",
"Memory": "您需要至少 8 GB 的 RAM 才能安裝應用程式",
"TextSlide1": "人人都能發揮創意"
}

View File

@@ -0,0 +1,72 @@
$(document).ready(function () {
cecInit();
})
function cecInit() {
var jsonData;
var locale = getParameterByName('locale');
var isHighDpi = getParameterByName('isHighDpi');
cecGetLocaleJson(locale);
}
function resizeWin() {
myWindow.resizeTo(455, 239);
}
var slideIndex = 0;
showSlides();
function showSlides() {
var i;
var slides = document.getElementsByClassName("mySlides");
for (i = 0; i < slides.length; i++) {
console.log(slides[i]);
slides[i].style.opacity = "0";
slides[i].style.visibility = "hidden";
}
slideIndex++;
if (slideIndex > slides.length) {slideIndex = 1}
slides[slideIndex-1].style.opacity = "1";
slides[slideIndex-1].style.visibility = "visible";
var x = document.getElementsByTagName('video');
if (slideIndex == 1) {
x[0].currentTime = 0;
}
setTimeout(showSlides, 17500); // Change image every 17.50 seconds
}
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
function cecGetLocaleJson(locale)
{
console.log("cecGetLocaleJson");
var jsonLocation = "Dictionary/" + locale + "/locale.json";
$.getJSON(jsonLocation, function (data) {
cecDisplayContent(data, locale);
})
.fail(function () {
if(locale == "en_US") {
return;
}
cecGetLocaleJson("en_US");
})
}
function cecDisplayContent(data, locale)
{
var lcl = locale.slice(3,5);
var url = "http://www.adobe.com/"+lcl.toLowerCase()+"/creativecloud.html";
if(locale == "en_us" || locale == "en_US") {
url = "http://www.adobe.com/creativecloud.html";
}
document.getElementById("slideContainer").onclick =function() { parent.cecExternalLink(url) };
document.getElementById("slideText1").innerHTML = data["TextSlide1"];
}

View File

@@ -0,0 +1,7 @@
@charset "utf-8";
@font-face {
font-family: 'AdobeClean';
src: url('fonts/adobeclean/adobeclean-regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}

View File

@@ -0,0 +1,91 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHSP installer slideshow</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/styles.css">
<style>
html {
background-color: #fff;
}
* {box-sizing: border-box;}
body {
margin:0px;}
.mySlides {opacity: 0; position: absolute; transition: all 1s;}
img {vertical-align: middle;}
/* Slideshow container */
.slideshow-container {
max-width: 445px;
position: relative;
margin: auto;
cursor: pointer;
}
/* Caption text */
.text {
font-family: 'AdobeClean', Helvetica, Arial, sans-serif;
color: #000;
font-weight: 450;
font-size: 15px;
letter-spacing: .3;
padding-left: 30px;
position: absolute;
bottom: 95px;
width: 35%;
text-align: center;
}
/* Number text (1/3 etc) */
.numbertext {
font-family: 'AdobeClean', Helvetica, Arial, sans-serif;
color: #f2f2f2;
font-size: 12px;
padding: 8px 12px;
position: absolute;
top: 0;
}
.active {
background-color: #717171;
}
/* Fading animation */
.fade {
-webkit-animation-name: fade;
-webkit-animation-duration: 1s;
animation-name: fade;
animation-duration: 1s;
}
@-webkit-keyframes fade {
from {opacity: .7}
to {opacity: 1}
}
@keyframes fade {
from {opacity: .1}
to {opacity: 1}
}
/* On smaller screens, decrease text size */
@media only screen and (max-width: 300px) {
.text {font-size: 11px}
}
</style>
</head>
<body>
<div class="slideshow-container" id="slideContainer" href="#">
<div class="mySlides fade" style="opacity: 0; visibility: hidden;">
<video class="videos" autoplay loop muted style="width: 445px; height: 239px;"><source src="images/01_creativity_for_all_445x239.mp4" style="width: 445px; height: 239px;"></video>
<div class="text" id="slideText1">Creativity for all.</div>
</div>
</div>
<script type="text/javascript" src="lib/jquery.min.js"></script>
<script type="text/javascript" src="carousel.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 803 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show More