Add Linux native GUI program for Ventoy2Disk.

x86_64    gtk2/gtk3
i386      gtk2/gtk3
aarch64   gtk3
mips64el  gtk3
pull/1098/head
longpanda 3 years ago
parent 7db83dc0f1
commit dd2411d7d4

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,109 +0,0 @@
#!/bin/sh
if echo "$*" | grep -q '[-]v'; then
set -x
fi
print_usage() {
echo 'Usage: VentoyWebDeepin.sh [ OPTION ]'
echo ' OPTION: (optional)'
echo ' -H x.x.x.x http server IP address (default is 127.0.0.1)'
echo ' -p PORT http server PORT (default is 24680)'
echo ' -h print this help'
echo ' -v print verbose info'
echo ''
}
print_err() {
echo ""
echo "$*"
echo ""
}
get_user() {
name=$(logname)
if [ -n "$name" -a "$name" != "root" ]; then
echo $name; return
fi
name=${HOME#/home/}
if [ -n "$name" -a "$name" != "root" ]; then
echo $name; return
fi
}
uid=$(id -u)
if [ $uid -ne 0 ]; then
exec sudo sh $0 $*
fi
OLDDIR=$(pwd)
if uname -m | egrep -q 'aarch64|arm64'; then
TOOLDIR=aarch64
elif uname -m | egrep -q 'x86_64|amd64'; then
TOOLDIR=x86_64
elif uname -m | egrep -q 'mips64'; then
TOOLDIR=mips64el
else
TOOLDIR=i386
fi
if [ ! -f ./tool/$TOOLDIR/V2DServer ]; then
if [ -f ${0%VentoyWebDeepin.sh}/tool/$TOOLDIR/V2DServer ]; then
cd ${0%VentoyWebDeepin.sh}
fi
fi
PATH=./tool/$TOOLDIR:$PATH
if [ ! -f ./boot/boot.img ]; then
if [ -d ./grub ]; then
echo "Don't run VentoyWebDeepin.sh here, please download the released install package, and run the script in it."
else
echo "Please run under the correct directory!"
fi
exit 1
fi
HOST="127.0.0.1"
PORT=24680
while [ -n "$1" ]; do
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
print_usage
exit 0
elif [ "$1" = "-v" ]; then
VERBOSE=1
elif [ "$1" = "-H" ]; then
shift
if echo $1 | grep -q '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'; then
HOST="$1"
else
print_err "Invalid host $1"
exit 1
fi
elif [ "$1" = "-p" ]; then
shift
if [ $1 -gt 0 -a $1 -le 65535 ]; then
PORT="$1"
else
print_err "Invalid port $1"
exit 1
fi
fi
shift
done
if ps -ef | grep "V2DServer.*$HOST.*$PORT" | grep -q -v grep; then
print_err "Another ventoy server is running now, please close it first."
exit 1
fi
if grep -q -i uos /etc/os-release; then
. ./tool/WebUos.sh
else
. ./tool/WebDeepin.sh
fi

@ -0,0 +1,582 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="2.2"/>
<object class="GtkImage" id="image_refresh">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<object class="GtkWindow" id="part_cfg_dlg">
<property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="title" translatable="yes">Partition Configuration</property>
<property name="modal">True</property>
<property name="default_width">460</property>
<property name="default_height">270</property>
<child>
<object class="GtkFixed" id="fixed_partcfg_1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkFrame" id="frame_space_check">
<property name="width_request">440</property>
<property name="height_request">50</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkFixed" id="fixed_space_check">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="space_check_btn">
<property name="width_request">380</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="x">10</property>
<property name="y">10</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="x">10</property>
<property name="y">10</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame_space_value">
<property name="width_request">220</property>
<property name="height_request">60</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkFixed" id="fixed_space_value">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkEntry" id="entry_reserve_space">
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">*</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property>
<property name="secondary_icon_sensitive">True</property>
<property name="width_chars">10</property>
</object>
<packing>
<property name="x">10</property>
<property name="y">10</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="x">10</property>
<property name="y">60</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame_space_unit">
<property name="width_request">220</property>
<property name="height_request">60</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkFixed" id="fixed_space_unit">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkComboBoxText" id="comboboxtext_unit">
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">1</property>
<items>
<item translatable="yes">MB</item>
<item translatable="yes">GB</item>
</items>
</object>
<packing>
<property name="x">10</property>
<property name="y">10</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="x">230</property>
<property name="y">60</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame_space_align">
<property name="width_request">440</property>
<property name="height_request">50</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkFixed" id="fixed_space_alian">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="space_align_btn">
<property name="width_request">380</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">True</property>
</object>
<packing>
<property name="x">10</property>
<property name="y">10</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="x">10</property>
<property name="y">140</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_partcfg_ok">
<property name="label" translatable="yes">OK</property>
<property name="width_request">100</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="x">90</property>
<property name="y">210</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_partcfg_cancel">
<property name="label" translatable="yes">Cancel</property>
<property name="width_request">100</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="x">270</property>
<property name="y">210</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame_dummy1">
<property name="width_request">460</property>
<property name="height_request">25</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
</object>
<packing>
<property name="x">10</property>
<property name="y">250</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkWindow" id="window">
<property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="title" translatable="yes">Ventoy2Disk</property>
<property name="modal">False</property>
<property name="window_position">center</property>
<property name="default_width">480</property>
<property name="default_height">365</property>
<child>
<object class="GtkFixed" id="fixed_main">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuBar" id="menubar1">
<property name="width_request">480</property>
<property name="height_request">22</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="menu_option">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Options</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="submenu_option">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckMenuItem" id="menu_item_secure">
<property name="label">Secure Boot Support</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="active">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_part_style">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Partition Style</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="submenu_part_style">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkRadioMenuItem" id="menu_item_mbr">
<property name="label">MBR</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="active">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="menu_item_gpt">
<property name="label">GPT</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="active">False</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_item_part_cfg">
<property name="label">Partition Configuration</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_item_clear">
<property name="label">Clear Ventoy</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkCheckMenuItem" id="menu_item_show_all">
<property name="label">Show All Devices</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="active">False</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem" id="menu_language">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Language</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="submenu_language">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="frame_device">
<property name="width_request">460</property>
<property name="height_request">75</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkFixed" id="fixed5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkComboBoxText" id="combobox_devlist">
<property name="width_request">380</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="x">10</property>
<property name="y">5</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_refresh">
<property name="width_request">50</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image_refresh</property>
</object>
<packing>
<property name="x">398</property>
<property name="y">0</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label_device">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"> Device </property>
</object>
</child>
</object>
<packing>
<property name="x">10</property>
<property name="y">40</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame_pkg_ver">
<property name="width_request">228</property>
<property name="height_request">70</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0.5</property>
<child>
<object class="GtkFixed" id="fixed3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImage" id="image_secure_local">
<property name="width_request">10</property>
<property name="height_request">40</property>
<property name="visible">False</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="x">20</property>
<property name="y">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_local_ver_value">
<property name="width_request">120</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"></property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="x">45</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_local_part_style">
<property name="width_request">45</property>
<property name="height_request">20</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">MBR</property>
</object>
<packing>
<property name="x">180</property>
<property name="y">30</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label_local_ver">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"> Ventoy In Package </property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="x">10</property>
<property name="y">132</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame3">
<property name="width_request">228</property>
<property name="height_request">70</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0.5</property>
<child>
<object class="GtkFixed" id="fixed4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImage" id="image_secure_dev">
<property name="width_request">10</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="x">20</property>
<property name="y">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_dev_ver_value">
<property name="width_request">120</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"></property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="x">45</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_dev_part_style">
<property name="width_request">45</property>
<property name="height_request">20</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"></property>
</object>
<packing>
<property name="x">180</property>
<property name="y">30</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label_device_ver">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"> Ventoy In Device </property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="x">243</property>
<property name="y">132</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame4">
<property name="width_request">460</property>
<property name="height_request">50</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkFixed" id="fixed2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkProgressBar" id="progressbar1">
<property name="width_request">440</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="fraction">0.0</property>
</object>
<packing>
<property name="x">8</property>
<property name="y">10</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label_status">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"> Status - READY</property>
</object>
</child>
</object>
<packing>
<property name="x">10</property>
<property name="y">215</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_install">
<property name="label" translatable="yes">Install</property>
<property name="width_request">100</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="x">100</property>
<property name="y">300</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button_update">
<property name="label" translatable="yes">Update</property>
<property name="width_request">100</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="x">280</property>
<property name="y">300</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame_dummy2">
<property name="width_request">460</property>
<property name="height_request">25</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
</object>
<packing>
<property name="x">10</property>
<property name="y">345</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -8,7 +8,7 @@ fi
dos2unix -q ./tool/ventoy_lib.sh
dos2unix -q ./tool/VentoyWorker.sh
dos2unix -q ./tool/VentoyGTK.glade
. ./tool/ventoy_lib.sh
@ -104,6 +104,7 @@ cp $OPT ./tool $tmpdir/
rm -f $tmpdir/ENROLL_THIS_KEY_IN_MOKMANAGER.cer
cp $OPT Ventoy2Disk.sh $tmpdir/
cp $OPT VentoyWeb.sh $tmpdir/
cp $OPT VentoyGUI* $tmpdir/
#cp $OPT Ventoy.desktop $tmpdir/
cp $OPT README $tmpdir/
@ -131,11 +132,15 @@ rm -f ventoy-${curver}-linux.tar.gz
CurDir=$PWD
for d in i386 x86_64 aarch64; do
for d in i386 x86_64 aarch64 mips64el; do
cd $tmpdir/tool/$d
for file in $(ls); do
if [ "$file" != "xzcat" ]; then
xz --check=crc32 $file
if echo "$file" | grep -q '^Ventoy2Disk'; then
chmod +x $file
else
xz --check=crc32 $file
fi
fi
done
cd $CurDir
@ -146,6 +151,9 @@ find $tmpdir/ -type d -exec chmod 755 "{}" +
find $tmpdir/ -type f -exec chmod 644 "{}" +
chmod +x $tmpdir/Ventoy2Disk.sh
chmod +x $tmpdir/VentoyWeb.sh
chmod +x $tmpdir/VentoyGUI*
cp $OPT $LANG_DIR/languages.json $tmpdir/tool/
#chmod +x $tmpdir/Ventoy.desktop
chmod +x $tmpdir/CreatePersistentImg.sh

@ -1753,9 +1753,9 @@
"STR_UPDATE_TIP":"Η λειτουργία αναβάθμισης είναι ασφαλής, τα αρχεία ISO δεν θα αλλάξουν.#@Συνέχεια;",
"STR_INSTALL_TIP":"Ο δίσκος θα μορφοποιηθεί και όλα τα δεδομένα θα χαθούν.#@Συνέχεια;",
"STR_INSTALL_TIP2":"Ο δίσκος θα μορφοποιηθεί και όλα τα δεδομένα θα χαθούν.#@Συνέχεια; (Επανελέγξτε)",
"STR_INSTALL_SUCCESS":"Συγχαρητήρια!#Το @Ventoy έχει εγκατασταθεί με επιτυχία στη συσκευή.",
"STR_INSTALL_SUCCESS":"Συγχαρητήρια!#@Ventoy έχει εγκατασταθεί με επιτυχία στη συσκευή.",
"STR_INSTALL_FAILED":"Παρουσιάστηκε σφάλμα κατά την εγκατάσταση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
"STR_UPDATE_SUCCESS":"Συγχαρητήρια!#Το @Ventoy ενημερώθηκε με επιτυχία στη συσκευή.",
"STR_UPDATE_SUCCESS":"Συγχαρητήρια!#@Ventoy ενημερώθηκε με επιτυχία στη συσκευή.",
"STR_UPDATE_FAILED":"Παρουσιάστηκε σφάλμα κατά την ενημέρωση. Μπορείτε να επανασυνδέσετε το USB και να δοκιμάσετε ξανά. Ελέγξτε το αρχείο log.txt για λεπτομέρειες.",
"STR_WAIT_PROCESS":"Ένα νήμα εκτελείται, παρακαλώ περιμένετε...",
"STR_MENU_OPTION":"Επιλογές",

@ -0,0 +1,22 @@
====== ARM64 ======
1. Download CentOS-7-aarch64-Everything-2009.iso from internet.
2. mount CentOS-7-aarch64-Everything-2009.iso /mnt
3. sh prepare_lib_aarch64.sh /mnt/Packages/
====== MIPS64EL ======
1. build dpkg for CentOS7
download dpkg_1.18.25.tar.xz from internet.
cd dpkg-1.18.25
./configure
make
cp -a ./src/dpkg /sbin/
cp -a ./dpkg-deb/dpkg-deb /sbin/
2. download debian 9.x mips64el DVD iso (e.g. debian-9.9.0-mips64el-DVD-1.iso) form internet
3. download libgtk-3-dev_3.22.11-1_mips64el.deb from internet
4. mount debian-9.9.0-mips64el-DVD-1.iso /mnt
5. sh prepare_lib_mips64el.sh /mnt/

@ -0,0 +1,54 @@
gtk3-
glib2-
pango-
cairo-
gdk-pixbuf2-
libXcursor-
libcap-
pcre-
libffi-
libthai-
fribidi-
libXrender-
libxcb-
pixman-
libpng-
libselinux-
zlib-
libwayland-
wayland-
libglvnd-
elfutils-
libattr-
libX11-
libXi-
libXfixes-
libepoxy-
harfbuzz-
fontconfig-
freetype-
libXinerama-
libXrandr-
libXcomposite-
libXdamage-
libxkbcommon-
libuuid-
libmount-
atk-
libblkid-
graphite2-
libXau-
bzip2-
expat-
libXext-
pcre2-
pcre-
at-spi2-atk
dbus-
dbus-libs
systemd-libs
at-spi2-core
xz-libs
lz4-
libgcrypt-
libgpg-error-

@ -0,0 +1,47 @@
libglib2
libgtk-3
libpango
libharfbuzz
pixbuf2
atk
wayland
libx11
libxi6
epoxy
cairo
composite
damage
libxfixes
libxkbcommon
libfontconfig
libfreetype
libxinerama
libxrandr
libxcursor
libxext
libthai
libfribidi
libpixman
libpng
libxcb
libxrender
zlib1g
libmount
libselinux
libffi
libpcre3
libdbus
libatspi
libgraphite
libexpat
libuuid
libdatrie
libxdmcp
libblkid
libxau
libsystemd
libbsd
liblz4
liblzma
libgcrypt
libgpg-error

@ -0,0 +1,19 @@
#!/bin/bash
if [ ! -d $1 ]; then
echo "$1 not exist"
exit 1
fi
rm -rf aarch64
mkdir aarch64
cd aarch64
cat ../aarch64libs | while read line; do
ls -1 $1/${line}* | while read rpm; do
echo "extract ${rpm##*/} ..."
rpm2cpio $rpm | cpio -idmu --quiet
done
done
cd ..

@ -0,0 +1,24 @@
#!/bin/bash
if [ ! -d $1/pool ]; then
echo "$1/pool not exist"
exit 1
fi
rm -rf mips64el
mkdir mips64el
cd mips64el
cat ../mips64ellibs | while read line; do
find "$1/pool" -name "*${line}*.deb" | while read deb; do
echo "extract ${deb##*/} ..."
dpkg -x $deb .
done
done
dpkg -x ../libgtk-3-dev_3.22.11-1_mips64el.deb .
cd ..

@ -133,7 +133,7 @@ void ventoy_syslog(int level, const char *Fmt, ...)
if (fp)
{
fprintf(fp, "[%04u/%02u/%02u %02u:%02u:%02u] %s",
ttm.tm_year, ttm.tm_mon, ttm.tm_mday,
ttm.tm_year + 1900, ttm.tm_mon, ttm.tm_mday,
ttm.tm_hour, ttm.tm_min, ttm.tm_sec,
log);
fclose(fp);

@ -0,0 +1,300 @@
/******************************************************************************
* refresh_icon_data.c
*
* Copyright (c) 2021, longpanda <admin@ventoy.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include <stdio.h>
#include <stdlib.h>
static unsigned char refresh_icon_hexData[4286] = {
0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x20, 0x20, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0xA8, 0x10,
0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x27,
0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x0C, 0xA6, 0xBE,
0x32, 0x2D, 0xA6, 0xBE, 0x32, 0x54, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x81, 0xA6, 0xBE,
0x32, 0x81, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x54, 0xA6, 0xBE, 0x32, 0x2D, 0xA6, 0xBE,
0x32, 0x0C, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x21, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0xBF, 0xA6, 0xBE,
0x32, 0xEB, 0xA6, 0xBE, 0x32, 0xFC, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFC, 0xA6, 0xBE, 0x32, 0xEB, 0xA6, 0xBE,
0x32, 0xBF, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x21, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x10, 0xA6, 0xBE,
0x32, 0x71, 0xA6, 0xBE, 0x32, 0xD9, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xDA, 0xA6, 0xBE, 0x32, 0x71, 0xA6, 0xBE,
0x32, 0x10, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x29, 0xA6, 0xBE, 0x32, 0xB2, 0xA6, 0xBE,
0x32, 0xFE, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA5, 0xBD,
0x2F, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFE, 0xA6, 0xBE,
0x32, 0xB2, 0xA6, 0xBE, 0x32, 0x29, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x35, 0xA6, 0xBE, 0x32, 0xCF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA5, 0xBE,
0x31, 0xFF, 0xAC, 0xC3, 0x40, 0xFF, 0xB7, 0xCA, 0x59, 0xFF, 0xBF, 0xD0, 0x6B, 0xFF, 0xC0, 0xD1,
0x6E, 0xFF, 0xBA, 0xCD, 0x60, 0xFF, 0xAF, 0xC5, 0x48, 0xFF, 0xA7, 0xBF, 0x34, 0xFF, 0xA5, 0xBD,
0x2F, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xCF, 0xA6, 0xBE, 0x32, 0x35, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x29, 0xA6, 0xBE, 0x32, 0xCF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xB5, 0xC9, 0x54, 0xFF, 0xD4, 0xE0,
0x9D, 0xFF, 0xED, 0xF2, 0xD6, 0xFF, 0xF9, 0xFB, 0xF1, 0xFF, 0xFD, 0xFD, 0xFA, 0xFF, 0xFD, 0xFE,
0xFB, 0xFF, 0xFB, 0xFC, 0xF5, 0xFF, 0xF2, 0xF6, 0xE1, 0xFF, 0xDD, 0xE6, 0xB1, 0xFF, 0xBD, 0xCF,
0x67, 0xFF, 0xA7, 0xBF, 0x35, 0xFF, 0xA5, 0xBE, 0x30, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xCF, 0xA6, 0xBE, 0x32, 0x29, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x10, 0xA6, 0xBE,
0x32, 0xB2, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x31, 0xFF, 0xA8, 0xC0, 0x37, 0xFF, 0xCB, 0xD9, 0x87, 0xFF, 0xF4, 0xF7, 0xE6, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFB,
0xF4, 0xFF, 0xD9, 0xE4, 0xA8, 0xFF, 0xAF, 0xC4, 0x46, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xB2, 0xA6, 0xBE,
0x32, 0x10, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x71, 0xA6, 0xBE,
0x32, 0xFE, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA9, 0xC0,
0x38, 0xFF, 0xD5, 0xE0, 0x9D, 0xFF, 0xFD, 0xFE, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE,
0xFD, 0xFF, 0xEE, 0xF3, 0xD9, 0xFF, 0xD9, 0xE3, 0xA8, 0xFF, 0xCC, 0xDA, 0x8A, 0xFF, 0xCA, 0xD8,
0x85, 0xFF, 0xD3, 0xDF, 0x99, 0xFF, 0xE6, 0xEC, 0xC4, 0xFF, 0xFA, 0xFB, 0xF3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xED, 0xC7, 0xFF, 0xB1, 0xC6, 0x4C, 0xFF, 0xA5, 0xBD,
0x30, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFE, 0xA6, 0xBE,
0x32, 0x71, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x21, 0xA6, 0xBE, 0x32, 0xDA, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xCD, 0xDB,
0x8C, 0xFF, 0xFD, 0xFE, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xF7, 0xE7, 0xFF, 0xCB, 0xD9,
0x87, 0xFF, 0xAE, 0xC3, 0x43, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA4, 0xBD, 0x2F, 0xFF, 0xA4, 0xBD,
0x2E, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA9, 0xC0, 0x38, 0xFF, 0xBD, 0xCF, 0x66, 0xFF, 0xE8, 0xEE,
0xC9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xEB, 0xC1, 0xFF, 0xAD, 0xC3,
0x41, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xDA, 0xA6, 0xBE, 0x32, 0x21, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBD,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA4, 0xBC, 0x2D, 0xFF, 0xB8, 0xCB, 0x5C, 0xFF, 0xF6, 0xF9,
0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xF5, 0xDF, 0xFF, 0xBA, 0xCD, 0x60, 0xFF, 0xA4, 0xBD,
0x2E, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xAE, 0xC4,
0x44, 0xFF, 0xE2, 0xE9, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD6,
0x7E, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x0C, 0xA6, 0xBE, 0x32, 0xC0, 0xA6, 0xBE, 0x32, 0xFF, 0xA9, 0xC0,
0x39, 0xFF, 0xC8, 0xD7, 0x80, 0xFF, 0xD0, 0xDC, 0x92, 0xFF, 0xE7, 0xEE, 0xC8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xED, 0xC5, 0xFF, 0xCC, 0xDA, 0x8A, 0xFF, 0xB0, 0xC5,
0x49, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD,
0x30, 0xFF, 0xB0, 0xC6, 0x4A, 0xFF, 0xE3, 0xEA, 0xBE, 0xFF, 0xEA, 0xEF, 0xCE, 0xFF, 0xB8, 0xCB,
0x5C, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xBF, 0xA6, 0xBE, 0x32, 0x0C, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x2E, 0xA6, 0xBE, 0x32, 0xEB, 0xA6, 0xBE, 0x32, 0xFF, 0xA8, 0xC0,
0x37, 0xFF, 0xE0, 0xE8, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF6, 0xE3, 0xFF, 0xB3, 0xC7,
0x4F, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xAA, 0xC1, 0x3A, 0xFF, 0xAB, 0xC1, 0x3D, 0xFF, 0xA6, 0xBE,
0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xEB, 0xA6, 0xBE, 0x32, 0x2D, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x54, 0xA6, 0xBE, 0x32, 0xFC, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD,
0x30, 0xFF, 0xB6, 0xCA, 0x58, 0xFF, 0xF4, 0xF7, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFE, 0xFB, 0xFF, 0xC9, 0xD8, 0x84, 0xFF, 0xA5, 0xBD,
0x30, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFC, 0xA6, 0xBE, 0x32, 0x54, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA5, 0xBE, 0x30, 0xFF, 0xCD, 0xDB, 0x8C, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0xEA, 0xBC, 0xFF, 0xAA, 0xC1, 0x3A, 0xFF, 0xA6, 0xBE,
0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xAB, 0xC2, 0x3E, 0xFF, 0xBB, 0xCE, 0x63, 0xFF, 0xA7, 0xBF,
0x35, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x81, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xAB, 0xC2, 0x3E, 0xFF, 0xE6, 0xED, 0xC5, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xF5, 0xF8, 0xE8, 0xFF, 0xB7, 0xCB, 0x5A, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xCE, 0xDB, 0x8F, 0xFF, 0xF7, 0xF9, 0xEC, 0xFF, 0xBD, 0xCF,
0x67, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0x81, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x81, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xBB, 0xCD, 0x63, 0xFF, 0xF6, 0xF8,
0xEA, 0xFF, 0xCE, 0xDB, 0x8F, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD,
0x30, 0xFF, 0xB7, 0xCB, 0x5A, 0xFF, 0xF5, 0xF8, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xEE,
0xC9, 0xFF, 0xAC, 0xC2, 0x40, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0x81, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA7, 0xBF, 0x34, 0xFF, 0xBA, 0xCD,
0x60, 0xFF, 0xAB, 0xC2, 0x3E, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xAA, 0xC1,
0x3A, 0xFF, 0xE2, 0xEA, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFE, 0xFF, 0xCF, 0xDC, 0x90, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x54, 0xA6, 0xBE, 0x32, 0xFC, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD,
0x2F, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xC9, 0xD8,
0x84, 0xFF, 0xFD, 0xFE, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xF5, 0xF8, 0xE9, 0xFF, 0xB8, 0xCB, 0x5B, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFC, 0xA6, 0xBE, 0x32, 0x54, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x2E, 0xA6, 0xBE, 0x32, 0xEB, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA9, 0xC0,
0x38, 0xFF, 0xA8, 0xBF, 0x37, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xB2, 0xC7, 0x4F, 0xFF, 0xF2, 0xF6,
0xE2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0xE9, 0xBB, 0xFF, 0xA9, 0xC0, 0x38, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xEB, 0xA6, 0xBE, 0x32, 0x2D, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x0C, 0xA6, 0xBE, 0x32, 0xC0, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xB5, 0xC9, 0x54, 0xFF, 0xE4, 0xEB,
0xC1, 0xFF, 0xDF, 0xE8, 0xB5, 0xFF, 0xAF, 0xC5, 0x47, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xAF, 0xC5, 0x47, 0xFF, 0xCA, 0xD8,
0x85, 0xFF, 0xE2, 0xE9, 0xBB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xEF,
0xCD, 0xFF, 0xCE, 0xDB, 0x8F, 0xFF, 0xC7, 0xD6, 0x7E, 0xFF, 0xA9, 0xC0, 0x39, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xBF, 0xA6, 0xBE, 0x32, 0x0C, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBD,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x73, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xC6, 0xD6, 0x7C, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xE8, 0xB5, 0xFF, 0xAC, 0xC3, 0x40, 0xFF, 0xA5, 0xBD,
0x2F, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA4, 0xBD, 0x2E, 0xFF, 0xB5, 0xC9,
0x55, 0xFF, 0xED, 0xF2, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFB, 0xF1, 0xFF, 0xBC, 0xCE,
0x65, 0xFF, 0xA4, 0xBC, 0x2C, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x21, 0xA6, 0xBE, 0x32, 0xDA, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xAE, 0xC4, 0x44, 0xFF, 0xE6, 0xED,
0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xEB, 0xC1, 0xFF, 0xB9, 0xCC,
0x5E, 0xFF, 0xA7, 0xBF, 0x35, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA4, 0xBD, 0x2E, 0xFF, 0xA4, 0xBD,
0x2E, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xAB, 0xC1, 0x3D, 0xFF, 0xC5, 0xD5, 0x79, 0xFF, 0xF1, 0xF5,
0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xD3, 0xDF, 0x99, 0xFF, 0xA7, 0xBE,
0x33, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xDA, 0xA6, 0xBE, 0x32, 0x21, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE,
0x32, 0xFE, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xB3, 0xC8,
0x51, 0xFF, 0xE9, 0xEF, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFA,
0xEE, 0xFF, 0xE1, 0xE9, 0xBA, 0xFF, 0xCD, 0xDB, 0x8C, 0xFF, 0xC4, 0xD4, 0x78, 0xFF, 0xC6, 0xD6,
0x7C, 0xFF, 0xD3, 0xDF, 0x9A, 0xFF, 0xE9, 0xEF, 0xCD, 0xFF, 0xFC, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xDB, 0xE4, 0xAB, 0xFF, 0xAA, 0xC1, 0x3C, 0xFF, 0xA6, 0xBE,
0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFE, 0xA6, 0xBE,
0x32, 0x71, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x10, 0xA6, 0xBE,
0x32, 0xB3, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA5, 0xBD,
0x30, 0xFF, 0xB1, 0xC6, 0x4B, 0xFF, 0xDD, 0xE6, 0xB2, 0xFF, 0xFC, 0xFD, 0xF8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFA,
0xEE, 0xFF, 0xD1, 0xDE, 0x96, 0xFF, 0xAA, 0xC1, 0x3C, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xB2, 0xA6, 0xBE,
0x32, 0x10, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x29, 0xA6, 0xBE, 0x32, 0xCF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA9, 0xC0, 0x38, 0xFF, 0xC1, 0xD2, 0x71, 0xFF, 0xE2, 0xEA,
0xBC, 0xFF, 0xF5, 0xF8, 0xE9, 0xFF, 0xFD, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF,
0xFE, 0xFF, 0xFB, 0xFC, 0xF7, 0xFF, 0xF2, 0xF5, 0xE1, 0xFF, 0xDB, 0xE5, 0xAC, 0xFF, 0xB9, 0xCC,
0x5F, 0xFF, 0xA6, 0xBE, 0x33, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xCF, 0xA6, 0xBE, 0x32, 0x29, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x35, 0xA6, 0xBE, 0x32, 0xCF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x31, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA8, 0xBF,
0x36, 0xFF, 0xB3, 0xC7, 0x4F, 0xFF, 0xBF, 0xD0, 0x6B, 0xFF, 0xC5, 0xD5, 0x7A, 0xFF, 0xC4, 0xD4,
0x78, 0xFF, 0xBC, 0xCE, 0x64, 0xFF, 0xB0, 0xC5, 0x48, 0xFF, 0xA6, 0xBE, 0x33, 0xFF, 0xA5, 0xBD,
0x30, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xCF, 0xA6, 0xBE, 0x32, 0x35, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x29, 0xA6, 0xBE, 0x32, 0xB2, 0xA6, 0xBE,
0x32, 0xFE, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA5, 0xBD, 0x30, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA4, 0xBD, 0x2E, 0xFF, 0xA4, 0xBD,
0x2E, 0xFF, 0xA5, 0xBD, 0x2F, 0xFF, 0xA5, 0xBE, 0x31, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFE, 0xA6, 0xBE,
0x32, 0xB3, 0xA6, 0xBE, 0x32, 0x29, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x10, 0xA6, 0xBE,
0x32, 0x71, 0xA6, 0xBE, 0x32, 0xDA, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xDA, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE,
0x32, 0x10, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x21, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0xBF, 0xA6, 0xBE,
0x32, 0xEB, 0xA6, 0xBE, 0x32, 0xFC, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE,
0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFF, 0xA6, 0xBE, 0x32, 0xFC, 0xA6, 0xBE, 0x32, 0xEB, 0xA6, 0xBE,
0x32, 0xC0, 0xA6, 0xBE, 0x32, 0x73, 0xA6, 0xBE, 0x32, 0x21, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x0C, 0xA6, 0xBE,
0x32, 0x2D, 0xA6, 0xBE, 0x32, 0x54, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x81, 0xA6, 0xBE,
0x32, 0x81, 0xA6, 0xBE, 0x32, 0x72, 0xA6, 0xBE, 0x32, 0x54, 0xA6, 0xBE, 0x32, 0x2E, 0xA6, 0xBE,
0x32, 0x0C, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBD, 0x31, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE,
0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0xA6, 0xBE, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80,
0x01, 0xFF, 0xFE, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00,
0x00, 0x07, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00,
0x00, 0x01, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, 0x00,
0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0xFF
};
void *get_refresh_icon_raw_data(int *len)
{
*len = (int)sizeof(refresh_icon_hexData);
return refresh_icon_hexData;
}

@ -0,0 +1,91 @@
/******************************************************************************
* secure_icon_data.c
*
* Copyright (c) 2021, longpanda <admin@ventoy.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#include <stdio.h>
#include <stdlib.h>
static unsigned char secure_icon_hexData[958] = {
0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xA8, 0x03,
0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x46, 0x5C,
0x00, 0x00, 0x46, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C,
0xFB, 0x01, 0x00, 0x8C, 0xFB, 0x2E, 0x00, 0x8C, 0xFB, 0x52, 0x00, 0x8C, 0xFB, 0x53, 0x00, 0x8C,
0xFB, 0x53, 0x00, 0x8C, 0xFB, 0x53, 0x00, 0x8C, 0xFB, 0x53, 0x00, 0x8C, 0xFB, 0x53, 0x00, 0x8C,
0xFB, 0x53, 0x00, 0x8C, 0xFB, 0x53, 0x00, 0x8C, 0xFB, 0x52, 0x00, 0x8C, 0xFB, 0x2E, 0x00, 0x8C,
0xFB, 0x01, 0x00, 0x8C, 0xFB, 0x3E, 0x00, 0x8C, 0xFB, 0xDA, 0x00, 0x8C, 0xFB, 0xF8, 0x00, 0x8C,
0xFB, 0xF7, 0x00, 0x8C, 0xFB, 0xF7, 0x00, 0x8C, 0xFB, 0xF7, 0x00, 0x8C, 0xFB, 0xF7, 0x00, 0x8C,
0xFB, 0xF7, 0x00, 0x8C, 0xFB, 0xF7, 0x00, 0x8C, 0xFB, 0xF7, 0x00, 0x8C, 0xFB, 0xF8, 0x00, 0x8C,
0xFB, 0xDA, 0x00, 0x8C, 0xFB, 0x3E, 0x00, 0x8C, 0xFB, 0x78, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0x78, 0x00, 0x8C, 0xFB, 0x7B, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0x7B, 0x00, 0x8C,
0xFB, 0x7A, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x86, 0xF1, 0xFF, 0x00, 0x7C, 0xDF, 0xFF, 0x00, 0x86, 0xF1, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0x7A, 0x00, 0x8C, 0xFB, 0x7A, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFC, 0xFF, 0x00, 0x7C, 0xDF, 0xFF, 0x00, 0x6C, 0xC4, 0xFF, 0x00, 0x7C,
0xDF, 0xFF, 0x00, 0x8C, 0xFC, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0x7A, 0x00, 0x8C, 0xFB, 0x7A, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x87, 0xF2, 0xFF, 0x00, 0x7D,
0xE1, 0xFF, 0x00, 0x87, 0xF2, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0x7A, 0x00, 0x8C, 0xFB, 0x7B, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFC, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0x7B, 0x00, 0x8C,
0xFB, 0x77, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C, 0xFB, 0xFF, 0x00, 0x8C,
0xFB, 0x77, 0x00, 0x8C, 0xFB, 0x3A, 0x00, 0x8C, 0xFB, 0xD4, 0x01, 0x8B, 0xF9, 0xF7, 0x03, 0x89,
0xF3, 0xFF, 0x01, 0x8B, 0xF8, 0xF8, 0x00, 0x8C, 0xFB, 0xF4, 0x00, 0x8C, 0xFB, 0xF4, 0x00, 0x8C,
0xFB, 0xF4, 0x01, 0x8B, 0xF8, 0xF8, 0x03, 0x89, 0xF3, 0xFF, 0x01, 0x8B, 0xF9, 0xF7, 0x00, 0x8C,
0xFB, 0xD4, 0x00, 0x8C, 0xFB, 0x3A, 0x00, 0x8C, 0xFB, 0x00, 0x00, 0x93, 0xFF, 0x1E, 0x1D, 0x6B,
0xA9, 0x6B, 0x32, 0x54, 0x6F, 0xF6, 0x22, 0x65, 0x9A, 0x7D, 0x00, 0x90, 0xFF, 0x39, 0x00, 0x8C,
0xFB, 0x3C, 0x00, 0x90, 0xFF, 0x39, 0x22, 0x65, 0x9A, 0x7D, 0x32, 0x54, 0x6F, 0xF6, 0x1D, 0x6B,
0xA9, 0x6B, 0x00, 0x93, 0xFF, 0x1E, 0x00, 0x8C, 0xFB, 0x00, 0x00, 0x8C, 0xFB, 0x00, 0x2A, 0x5D,
0x85, 0x00, 0x46, 0x3D, 0x36, 0x3A, 0x43, 0x41, 0x3F, 0xF3, 0x45, 0x3F, 0x3A, 0x58, 0x26, 0x62,
0x91, 0x00, 0x00, 0x8D, 0xFD, 0x00, 0x26, 0x62, 0x91, 0x00, 0x45, 0x3F, 0x3A, 0x58, 0x43, 0x41,
0x3F, 0xF3, 0x46, 0x3D, 0x36, 0x3A, 0x2A, 0x5D, 0x85, 0x00, 0x00, 0x8C, 0xFB, 0x00, 0x00, 0x00,
0x00, 0x00, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x27, 0x42, 0x42, 0x42, 0xE9, 0x42, 0x42,
0x42, 0x94, 0x42, 0x42, 0x42, 0x01, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x01, 0x42, 0x42,
0x42, 0x94, 0x42, 0x42, 0x42, 0xE9, 0x42, 0x42, 0x42, 0x27, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x04, 0x42, 0x42,
0x42, 0x96, 0x42, 0x42, 0x42, 0xF5, 0x42, 0x42, 0x42, 0x8E, 0x42, 0x42, 0x42, 0x53, 0x42, 0x42,
0x42, 0x8E, 0x42, 0x42, 0x42, 0xF5, 0x42, 0x42, 0x42, 0x96, 0x42, 0x42, 0x42, 0x04, 0x42, 0x42,
0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42,
0x42, 0x00, 0x42, 0x42, 0x42, 0x16, 0x42, 0x42, 0x42, 0x96, 0x42, 0x42, 0x42, 0xE9, 0x42, 0x42,
0x42, 0xF3, 0x42, 0x42, 0x42, 0xE9, 0x42, 0x42, 0x42, 0x96, 0x42, 0x42, 0x42, 0x16, 0x42, 0x42,
0x42, 0x00, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42,
0x42, 0x00, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x05, 0x42, 0x42,
0x42, 0x31, 0x42, 0x42, 0x42, 0x4B, 0x42, 0x42, 0x42, 0x31, 0x42, 0x42, 0x42, 0x05, 0x42, 0x42,
0x42, 0x00, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08,
0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00
};
void *get_secure_icon_raw_data(int *len)
{
*len = (int)sizeof(secure_icon_hexData);
return secure_icon_hexData;
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,72 @@
/******************************************************************************
* ventoy_gtk.h
*
* Copyright (c) 2021, longpanda <admin@ventoy.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef __VENTOY_GTK_H__
#define __VENTOY_GTK_H__
int ventoy_disk_init(void);
void ventoy_disk_exit(void);
int ventoy_http_init(void);
void ventoy_http_exit(void);
int ventoy_log_init(void);
void ventoy_log_exit(void);
void *get_refresh_icon_raw_data(int *len);
void *get_secure_icon_raw_data(int *len);
void *get_window_icon_raw_data(int *len);
int ventoy_func_handler(const char *jsonstr, char *jsonbuf, int buflen);
const char * ventoy_code_get_cur_language(void);
int ventoy_code_get_cur_part_style(void);
void ventoy_code_set_cur_part_style(int style);
int ventoy_code_get_cur_show_all(void);
void ventoy_code_set_cur_show_all(int show_all);
void ventoy_code_set_cur_language(const char *lang);
void ventoy_code_save_cfg(void);
void on_init_window(GtkBuilder *pBuilder);
int on_exit_window(GtkWidget *widget, gpointer data) ;
void ventoy_code_refresh_device(void);
int ventoy_code_is_busy(void);
int ventoy_code_get_percent(void);
int ventoy_code_get_result(void);
int msgbox(GtkMessageType type, GtkButtonsType buttons, const char *strid);
#define MAX_PARAS 64
#define VTOY_VER_FMT "<span weight='bold' foreground='red' size='xx-large'>%s</span>"
#define LANG_LABEL_TEXT(id, str) \
gtk_label_set_text(BUILDER_ITEM(GtkLabel, id), vtoy_json_get_string_ex(node->pstChild, str))
#define LANG_BUTTON_TEXT(id, str) \
gtk_button_set_label(BUILDER_ITEM(GtkButton, id), vtoy_json_get_string_ex(node->pstChild, str))
#define LANG_MENU_ITEM_TEXT(id, str) \
gtk_menu_item_set_label(BUILDER_ITEM(GtkMenuItem, id), vtoy_json_get_string_ex(node->pstChild, str))
#define LANG_CHKBTN_TEXT(id, str) \
gtk_check_button_set_label(BUILDER_ITEM(GtkCheckButton, id), vtoy_json_get_string_ex(node->pstChild, str))
#define BUILDER_ITEM(type, id) (type *)gtk_builder_get_object(g_pXmlBuilder, id)
#define SIGNAL(id, act, func) \
g_signal_connect(gtk_builder_get_object(g_pXmlBuilder, id), act, G_CALLBACK(func), NULL)
#define GTK_MSG_ITERATION() while (gtk_events_pending ()) gtk_main_iteration()
#endif /* __VENTOY_GTK_H__ */

File diff suppressed because it is too large Load Diff

@ -40,9 +40,13 @@
#include <ventoy_http.h>
#include "fat_filelib.h"
static char *g_pub_out_buf = NULL;
static int g_pub_out_max = 0;
static pthread_mutex_t g_api_mutex;
static char g_cur_language[128];
static int g_cur_part_style = 0;
static int g_cur_show_all = 0;
static char g_cur_server_token[64];
static struct mg_context *g_ventoy_http_ctx = NULL;
@ -52,8 +56,8 @@ static uint8_t *g_grub_stg1_raw_img = NULL;
static char g_cur_process_diskname[64];
static char g_cur_process_type[64];
static int g_cur_process_result = 0;
static PROGRESS_POINT g_current_progress = PT_FINISH;
static volatile int g_cur_process_result = 0;
static volatile PROGRESS_POINT g_current_progress = PT_FINISH;
static int ventoy_load_mbr_template(void)
{
@ -162,7 +166,8 @@ static int ventoy_http_save_cfg(void)
return 0;
}
fprintf(fp, "[Ventoy]\nLanguage=%s\nPartStyle=%d\n", g_cur_language, g_cur_part_style);
fprintf(fp, "[Ventoy]\nLanguage=%s\nPartStyle=%d\nShowAllDevice=%d\n",
g_cur_language, g_cur_part_style, g_cur_show_all);
fclose(fp);
return 0;
@ -205,6 +210,10 @@ static int ventoy_http_load_cfg(void)
{
g_cur_part_style = (int)strtol(line + strlen("PartStyle="), NULL, 10);
}
else if (strncmp(line, "ShowAllDevice=", strlen("ShowAllDevice=")) == 0)
{
g_cur_show_all = (int)strtol(line + strlen("ShowAllDevice="), NULL, 10);
}
}
fclose(fp);
@ -214,23 +223,47 @@ static int ventoy_http_load_cfg(void)
static int ventoy_json_result(struct mg_connection *conn, const char *err)
{
mg_printf(conn,
"HTTP/1.1 200 OK \r\n"
"Content-Type: application/json\r\n"
"Content-Length: %d\r\n"
"\r\n%s",
(int)strlen(err), err);
if (conn)
{
mg_printf(conn,
"HTTP/1.1 200 OK \r\n"
"Content-Type: application/json\r\n"
"Content-Length: %d\r\n"
"\r\n%s",
(int)strlen(err), err);
}
else
{
memcpy(g_pub_out_buf, err, (int)strlen(err) + 1);
}
return 0;
}
static int ventoy_json_buffer(struct mg_connection *conn, const char *json_buf, int json_len)
{
mg_printf(conn,
"HTTP/1.1 200 OK \r\n"
"Content-Type: application/json\r\n"
"Content-Length: %d\r\n"
"\r\n%s",
json_len, json_buf);
if (conn)
{
mg_printf(conn,
"HTTP/1.1 200 OK \r\n"
"Content-Type: application/json\r\n"
"Content-Length: %d\r\n"
"\r\n%s",
json_len, json_buf);
}
else
{
if (json_len >= g_pub_out_max)
{
vlog("json buffer overflow\n");
}
else
{
memcpy(g_pub_out_buf, json_buf, json_len);
g_pub_out_buf[json_len] = 0;
}
}
return 0;
}
@ -1369,6 +1402,41 @@ static int ventoy_json_handler(struct mg_connection *conn, VTOY_JSON *json)
return 0;
}
int ventoy_func_handler(const char *jsonstr, char *jsonbuf, int buflen)
{
int i;
const char *method = NULL;
VTOY_JSON *json = NULL;
g_pub_out_buf = jsonbuf;
g_pub_out_max = buflen;
json = vtoy_json_create();
if (JSON_SUCCESS == vtoy_json_parse(json, jsonstr))
{
pthread_mutex_lock(&g_api_mutex);
method = vtoy_json_get_string_ex(json->pstChild, "method");
for (i = 0; i < (int)(sizeof(g_ventoy_json_cb) / sizeof(g_ventoy_json_cb[0])); i++)
{
if (method && strcmp(method, g_ventoy_json_cb[i].method) == 0)
{
g_ventoy_json_cb[i].callback(NULL, json->pstChild);
break;
}
}
pthread_mutex_unlock(&g_api_mutex);
}
else
{
ventoy_json_result(NULL, VTOY_JSON_INVALID_RET);
}
vtoy_json_destroy(json);
return 0;
}
static int ventoy_request_handler(struct mg_connection *conn)
{
int post_data_len;
@ -1481,3 +1549,77 @@ void ventoy_http_exit(void)
g_efi_part_raw_img = NULL;
}
const char * ventoy_code_get_cur_language(void)
{
return g_cur_language;
}
int ventoy_code_get_cur_part_style(void)
{
return g_cur_part_style;
}
void ventoy_code_set_cur_part_style(int style)
{
pthread_mutex_lock(&g_api_mutex);
g_cur_part_style = style;
ventoy_http_save_cfg();
pthread_mutex_unlock(&g_api_mutex);
}
int ventoy_code_get_cur_show_all(void)
{
return g_cur_show_all;
}
void ventoy_code_set_cur_show_all(int show_all)
{
pthread_mutex_lock(&g_api_mutex);
g_cur_show_all = show_all;
ventoy_http_save_cfg();
pthread_mutex_unlock(&g_api_mutex);
}
void ventoy_code_set_cur_language(const char *lang)
{
pthread_mutex_lock(&g_api_mutex);
scnprintf(g_cur_language, "%s", lang);
ventoy_http_save_cfg();
pthread_mutex_unlock(&g_api_mutex);
}
void ventoy_code_refresh_device(void)
{
if (g_current_progress == PT_FINISH)
{
g_disk_num = 0;
ventoy_disk_enumerate_all();
}
}
int ventoy_code_is_busy(void)
{
return (g_current_progress == PT_FINISH) ? 0 : 1;
}
int ventoy_code_get_percent(void)
{
return g_current_progress * 100 / PT_FINISH;
}
int ventoy_code_get_result(void)
{
return g_cur_process_result;
}
void ventoy_code_save_cfg(void)
{
ventoy_http_save_cfg();
}

@ -0,0 +1,130 @@
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <stdarg.h>
#include <errno.h>
#include <time.h>
#include <unistd.h>
#include <ventoy_define.h>
#include <ventoy_util.h>
#include "ventoy_gtk.h"
static int set_image_from_pixbuf(GtkBuilder *pBuilder, const char *id, const void *pData, int len)
{
GtkImage *pImage = NULL;
GdkPixbuf *pPixbuf = NULL;
GInputStream *pStream = NULL;
pImage = (GtkImage *)gtk_builder_get_object(pBuilder, id);
pStream = g_memory_input_stream_new_from_data(pData, len, NULL);
pPixbuf = gdk_pixbuf_new_from_stream(pStream, NULL, NULL);
gtk_image_set_from_pixbuf(pImage, pPixbuf);
return 0;
}
static int set_window_icon_from_pixbuf(GtkWindow *window, const void *pData, int len)
{
GdkPixbuf *pPixbuf = NULL;
GInputStream *pStream = NULL;
pStream = g_memory_input_stream_new_from_data(pData, len, NULL);
pPixbuf = gdk_pixbuf_new_from_stream(pStream, NULL, NULL);
gtk_window_set_icon(window, pPixbuf);
return 0;
}
int early_msgbox(GtkMessageType type, GtkButtonsType buttons, const char *str)
{
int ret;
GtkWidget *pMsgBox = NULL;
pMsgBox= gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, type, buttons, str);
ret = gtk_dialog_run(GTK_DIALOG(pMsgBox));
gtk_widget_destroy(pMsgBox);
return ret;
}
int main(int argc, char *argv[])
{
int len;
const void *pData = NULL;
GtkWidget *pWidget = NULL;
GtkBuilder *pBuilder = NULL;
GError *error = NULL;
gtk_init(&argc, &argv);
if (geteuid() != 0)
{
early_msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
"Ventoy2Disk permission denied!\r\nPlease run with root privileges.");
return EACCES;
}
if (access("./boot/boot.img", F_OK) == -1)
{
early_msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Please run under the correct directory.");
return 1;
}
ventoy_log_init();
vlog("================================================\n");
vlog("===== Ventoy2Disk %s powered by GTK%d.x =====\n", ventoy_get_local_version(), GTK_MAJOR_VERSION);
vlog("================================================\n");
ventoy_disk_init();
ventoy_http_init();
pBuilder = gtk_builder_new();
if (!pBuilder)
{
vlog("failed to create builder\n");
return 1;
}
if (!gtk_builder_add_from_file(pBuilder, "./tool/VentoyGTK.glade", &error))
{
vlog("gtk_builder_add_from_file failed:%s\n", error->message);
g_clear_error(&error);
return 1;
}
pData = get_refresh_icon_raw_data(&len);
set_image_from_pixbuf(pBuilder, "image_refresh", pData, len);
pData = get_secure_icon_raw_data(&len);
set_image_from_pixbuf(pBuilder, "image_secure_local", pData, len);
set_image_from_pixbuf(pBuilder, "image_secure_dev", pData, len);
pWidget = GTK_WIDGET(gtk_builder_get_object(pBuilder, "window"));
gtk_widget_show_all(pWidget);
pData = get_window_icon_raw_data(&len);
set_window_icon_from_pixbuf(GTK_WINDOW(pWidget), pData, len);
on_init_window(pBuilder);
g_signal_connect(G_OBJECT(pWidget), "delete_event", G_CALLBACK(on_exit_window), NULL);
gtk_main();
ventoy_disk_exit();
ventoy_http_exit();
g_object_unref (G_OBJECT(pBuilder));
vlog("######## Ventoy2Disk GTK %s exit ########\n", ventoy_get_local_version());
/* log exit must at the end */
ventoy_log_exit();
return 0;
}

File diff suppressed because it is too large Load Diff

@ -32,7 +32,7 @@ build_func() {
-I ./Ventoy2Disk/Lib/fat_io_lib \
\
-L ./Ventoy2Disk/Lib/fat_io_lib/lib \
Ventoy2Disk/*.c \
Ventoy2Disk/main_webui.c \
Ventoy2Disk/Core/*.c \
Ventoy2Disk/Web/*.c \
Ventoy2Disk/Lib/xz-embedded/linux/lib/decompress_unxz.c \

@ -0,0 +1,95 @@
#!/bin/bash
build_func() {
libsuffix=$2
toolDir=$3
gtkver=$4
if [ "$libsuffix" = "aa64" ]; then
EXD=./EXLIB/aarch64
GTKFLAG="-pthread -I$EXD/usr/include/gtk-3.0 -I$EXD/usr/include/atk-1.0 -I$EXD/usr/include/at-spi2-atk/2.0 -I$EXD/usr/include/pango-1.0 -I$EXD/usr/include/gio-unix-2.0/ -I$EXD/usr/include/cairo -I$EXD/usr/include/gdk-pixbuf-2.0 -I$EXD/usr/include/glib-2.0 -I$EXD/usr/lib64/glib-2.0/include -I$EXD/usr/include/at-spi-2.0 -I$EXD/usr/include/dbus-1.0 -I$EXD/usr/lib64/dbus-1.0/include -I$EXD/usr/include/harfbuzz -I$EXD/usr/include/freetype2 -I$EXD/usr/include/pixman-1 -I$EXD/usr/include/libpng15 -I$EXD/usr/include/libdrm"
XXLIB="-Wl,-rpath-link $EXD/usr/lib64 -Wl,-rpath-link $EXD/lib64 -Wno-deprecated-declarations -L$EXD/usr/lib64 -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0 "
elif [ "$libsuffix" = "m64e" ]; then
EXDI=./EXLIB/mips64el
EXDL=./EXLIB/mips64el/usr/lib/mips64el-linux-gnuabi64
EXDL2=./EXLIB/mips64el/lib/mips64el-linux-gnuabi64
GTKFLAG="-pthread -I$EXDI/usr/include/gtk-3.0 -I$EXDI/usr/include/at-spi2-atk/2.0 -I$EXDI/usr/include/at-spi-2.0 -I$EXDI/usr/include/dbus-1.0 -I./EXLIB/mips64el/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I$EXDI/usr/include/gtk-3.0 -I$EXDI/usr/include/gio-unix-2.0 -I$EXDI/usr/include/cairo -I$EXDI/usr/include/pango-1.0 -I$EXDI/usr/include/harfbuzz -I$EXDI/usr/include/pango-1.0 -I$EXDI/usr/include/fribidi -I$EXDI/usr/include/harfbuzz -I$EXDI/usr/include/atk-1.0 -I$EXDI/usr/include/cairo -I$EXDI/usr/include/pixman-1 -I$EXDI/usr/include/uuid -I$EXDI/usr/include/freetype2 -I$EXDI/usr/include/libpng16 -I$EXDI/usr/include/gdk-pixbuf-2.0 -I$EXDI/usr/include/libmount -I$EXDI/usr/include/blkid -I$EXDI/usr/include/glib-2.0 -I$EXDL/glib-2.0/include"
XXLIB="-Wl,-rpath-link $EXDL -Wl,-rpath-link $EXDL2 -Wno-deprecated-declarations -L$EXDL -L$EXDL2 -lm -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lpcre "
else
if [ "$gtkver" = "gtk3" ]; then
GTKFLAG=$(pkg-config --cflags --libs gtk+-3.0)
GLADE=""
else
GTKFLAG=$(pkg-config --cflags --libs gtk+-2.0)
GLADE=$(pkg-config --cflags --libs libglade-2.0)
fi
XXLIB=""
fi
XXFLAG="-std=gnu99 -D_FILE_OFFSET_BITS=64 $GTKFLAG $GLADE -Wall"
echo "CC=$1 libsuffix=$libsuffix toolDir=$toolDir $gtkver"
$1 $XXFLAG -c -Wall -Wextra -Wshadow -Wformat-security -Winit-self \
-Wmissing-prototypes -O2 -DLINUX \
-I./Ventoy2Disk/Lib/libhttp/include \
-DNDEBUG -DNO_CGI -DNO_CACHING -DNO_SSL -DSQLITE_DISABLE_LFS -DSSL_ALREADY_INITIALIZED \
-DUSE_STACK_SIZE=102400 -DNDEBUG -fPIC \
./Ventoy2Disk/Lib/libhttp/include/civetweb.c \
-o ./civetweb.o
$1 -O2 -Wall -Wno-unused-function -DSTATIC=static -DINIT= \
-I./Ventoy2Disk \
-I./Ventoy2Disk/Core \
-I./Ventoy2Disk/Web \
-I./Ventoy2Disk/GTK \
-I./Ventoy2Disk/Include \
-I./Ventoy2Disk/Lib/libhttp/include \
-I./Ventoy2Disk/Lib/fat_io_lib/include \
-I./Ventoy2Disk/Lib/xz-embedded/linux/include \
-I./Ventoy2Disk/Lib/xz-embedded/linux/include/linux \
-I./Ventoy2Disk/Lib/xz-embedded/userspace \
-I ./Ventoy2Disk/Lib/exfat/src/libexfat \
-I ./Ventoy2Disk/Lib/exfat/src/mkfs \
-I ./Ventoy2Disk/Lib/fat_io_lib \
\
-L ./Ventoy2Disk/Lib/fat_io_lib/lib \
Ventoy2Disk/main_gtk.c \
Ventoy2Disk/Core/*.c \
Ventoy2Disk/Web/*.c \
Ventoy2Disk/GTK/*.c \
Ventoy2Disk/Lib/xz-embedded/linux/lib/decompress_unxz.c \
Ventoy2Disk/Lib/exfat/src/libexfat/*.c \
Ventoy2Disk/Lib/exfat/src/mkfs/*.c \
Ventoy2Disk/Lib/fat_io_lib/*.c \
$XXLIB \
-l pthread \
./civetweb.o \
-o Ventoy2Disk.${gtkver}_$libsuffix $XXFLAG
rm -f *.o
if [ "$libsuffix" = "aa64" ]; then
aarch64-linux-gnu-strip Ventoy2Disk.${gtkver}_$libsuffix
elif [ "$libsuffix" = "m64e" ]; then
mips-linux-gnu-strip Ventoy2Disk.${gtkver}_$libsuffix
else
strip Ventoy2Disk.${gtkver}_$libsuffix
fi
rm -f ../INSTALL/tool/$toolDir/Ventoy2Disk.${gtkver}_$libsuffix
cp -a Ventoy2Disk.${gtkver}_$libsuffix ../INSTALL/tool/$toolDir/Ventoy2Disk.${gtkver}
$1 -D_FILE_OFFSET_BITS=64 Ventoy2Disk/ventoy_gui.c -DVTOY_GUI_ARCH="\"$toolDir\"" -o VentoyGUI.$toolDir
cp -a VentoyGUI.$toolDir ../INSTALL/
}
build_func "gcc" '64' 'x86_64' 'gtk2'
build_func "gcc" '64' 'x86_64' 'gtk3'
build_func "gcc -m32" '32' 'i386' 'gtk2'
build_func "gcc -m32" '32' 'i386' 'gtk3'
build_func "aarch64-linux-gnu-gcc" 'aa64' 'aarch64' 'gtk3'
build_func "mips-linux-gnu-gcc -mips64r2 -mabi=64" 'm64e' 'mips64el' 'gtk3'
Loading…
Cancel
Save