From 2f9c05a69321ac64d409a9ca1bf458c110141e17 Mon Sep 17 00:00:00 2001 From: crims0n Date: Wed, 30 Jun 2021 18:19:45 +0300 Subject: [PATCH] fix --- linux-live/aptsources/stretch.list | 5 + linux-live/basesystem/01-core/install | 22 +- linux-live/basesystem/01-core/standard.list | 8 +- linux-live/buildconfig | 2 +- linux-live/minioslib | 21 +- linux-live/modules/03-xfce-desktop/install | 36 +- .../modules/03-xfce-desktop/minimal.list | 3 +- .../modules/03-xfce-desktop/postinstall | 172 ++ .../03-xfce-desktop/rootcopy/etc/default/nodm | 32 + .../rootcopy/etc/skel/.xsession | 1 + .../rootcopy/home/live/.xsession | 1 + .../03-xfce-desktop/rootcopy/root/.xsession | 1 + .../share/slim/themes/minios/background.png | Bin 0 -> 78717 bytes .../usr/share/slim/themes/minios/panel.png | Bin 0 -> 8402 bytes .../usr/share/slim/themes/minios/slim.theme | 36 + .../modules/03-xfce-desktop/standard.list | 10 +- linux-live/modules/04-xfce-apps/install | 18 +- linux-live/modules/04-xfce-apps/postinstall | 6 +- linux-live/modules/04-xfce-apps/standard.list | 6 +- linux-live/modules/05-firefox-esr/postinstall | 3 - .../unusedmodules/03-xfce-desktop.old/install | 638 +++++ .../03-xfce-desktop.old/minimal.list | 15 + .../03-xfce-desktop.old/postinstall | 189 ++ .../apps/xfce4-battery-ac-adapter.svg | 472 ++++ .../apps/xfce4-battery-caution-charging.svg | 322 +++ .../apps/xfce4-battery-caution-symbolic.svg | 7 + .../scalable/apps/xfce4-battery-caution.svg | 365 +++ .../apps/xfce4-battery-empty-charging.svg | 308 +++ .../scalable/apps/xfce4-battery-empty.svg | 451 ++++ .../apps/xfce4-battery-full-charged.svg | 255 ++ .../apps/xfce4-battery-full-charging.svg | 263 +++ .../scalable/apps/xfce4-battery-full.svg | 255 ++ .../apps/xfce4-battery-good-charging.svg | 314 +++ .../scalable/apps/xfce4-battery-good.svg | 371 +++ .../apps/xfce4-battery-low-charging.svg | 304 +++ .../apps/xfce4-battery-low-symbolic.svg | 6 + .../scalable/apps/xfce4-battery-low.svg | 337 +++ .../scalable/apps/xfce4-battery-missing.svg | 371 +++ .../rootcopy/etc/default/nodm | 32 + .../org.freedesktop.NetworkManager.pkla | 0 .../org.freedesktop.consolekit.pkla | 0 .../50-local.d/org.freedesktop.udisks.pkla | 6 + .../50-local.d/org.freedesktop.upower.pkla | 0 .../etc/skel/.config/xarchiver/xarchiverrc | 20 + .../skel/.config/xfce4/panel/battery-10.rc | 20 + .../launcher-3/TerminalEmulator.desktop} | 0 .../panel/launcher-4/FileManager.desktop} | 0 .../panel/launcher-5/WebBrowser.desktop} | 0 .../xfce-perchannel-xml/xfce4-appfinder.xml | 9 + .../xfce-perchannel-xml/xfce4-desktop.xml | 24 + .../xfce4-keyboard-shortcuts.xml | 0 .../xfce-perchannel-xml/xfce4-panel.xml | 89 + .../xfce-perchannel-xml/xfce4-session.xml | 2 +- .../xfce4-settings-manager.xml | 8 + .../xfconf/xfce-perchannel-xml/xfwm4.xml | 14 +- .../xfconf/xfce-perchannel-xml/xsettings.xml | 15 +- .../rootcopy/etc/skel/.xinitrc | 16 + .../rootcopy/etc/skel/.xsession | 1 + .../live/.config/chromium/Default/Preferences | 38 + .../home/live/.config/chromium/First Run | 0 .../home/live/.config/xarchiver/xarchiverrc | 20 + .../live/.config/xfce4/panel/battery-10.rc | 20 + .../panel/launcher-3/TerminalEmulator.desktop | 13 + .../panel/launcher-4/FileManager.desktop | 14 + .../xfce4/panel/launcher-5/WebBrowser.desktop | 14 + .../live/.config/xfce4/panel/whiskermenu-1.rc | 80 + .../xfconf/xfce-perchannel-xml/displays.xml | 43 + .../xfce-perchannel-xml/xfce4-appfinder.xml | 9 + .../xfce-perchannel-xml/xfce4-desktop.xml | 24 + .../xfce4-keyboard-shortcuts.xml | 154 ++ .../xfce-perchannel-xml/xfce4-panel.xml | 89 + .../xfce-perchannel-xml/xfce4-session.xml | 28 + .../xfce4-settings-manager.xml | 8 + .../xfconf/xfce-perchannel-xml/xfwm4.xml | 87 + .../xfconf/xfce-perchannel-xml/xsettings.xml | 42 + .../rootcopy/home/live/.xinitrc | 16 + .../rootcopy/home/live/.xsession | 1 + .../root/.config/xarchiver/xarchiverrc | 20 + .../root/.config/xfce4/panel/battery-10.rc | 20 + .../panel/launcher-3/TerminalEmulator.desktop | 13 + .../panel/launcher-4/FileManager.desktop | 14 + .../xfce4/panel/launcher-5/WebBrowser.desktop | 14 + .../xfce-perchannel-xml/xfce4-appfinder.xml | 9 + .../xfce-perchannel-xml/xfce4-desktop.xml | 24 + .../xfce4-keyboard-shortcuts.xml | 154 ++ .../xfce-perchannel-xml/xfce4-panel.xml | 89 + .../xfce-perchannel-xml/xfce4-session.xml | 28 + .../xfce4-settings-manager.xml | 8 + .../xfconf/xfce-perchannel-xml/xfwm4.xml | 87 + .../xfconf/xfce-perchannel-xml/xsettings.xml | 42 + .../rootcopy/root/.xinitrc | 16 + .../rootcopy/root/.xsession | 1 + .../share/backgrounds/MiniOS-wallpaper.svg | 40 + .../usr/share/pixmaps/MiniOS-white.svg | 149 ++ .../share/slim/themes/minios/background.png | Bin 0 -> 78717 bytes .../usr/share/slim/themes/minios/panel.png | Bin 0 -> 8402 bytes .../usr/share/slim/themes/minios/slim.theme | 36 + .../03-xfce-desktop.old/standard.list | 24 + linux-live/unusedmodules/05-chromium/install | 62 +- .../unusedmodules/05-chromium/minimal.list | 2 + .../unusedmodules/05-chromium/postinstall | 3 + .../share/applications/chromium-root.desktop | 140 ++ .../unusedmodules/05-chromium/standard.list | 2 + .../xfce4/desktop/icons.screen0-784x504.rc | 11 - .../xfce4/desktop/icons.screen0-784x584.rc | 31 - .../panel/launcher-12/16233231144.desktop | 11 - .../xfconf/xfce-perchannel-xml/keyboards.xml | 7 - .../xfconf/xfce-perchannel-xml/thunar.xml | 5 - .../xfce-perchannel-xml/xfce4-desktop.xml | 39 - .../xfce-perchannel-xml/xfce4-panel.xml | 84 - minios-modules/modulelib | 2057 +++++++++++++++++ 111 files changed, 9583 insertions(+), 241 deletions(-) create mode 100644 linux-live/aptsources/stretch.list create mode 100644 linux-live/modules/03-xfce-desktop/rootcopy/etc/default/nodm create mode 100644 linux-live/modules/03-xfce-desktop/rootcopy/etc/skel/.xsession create mode 100644 linux-live/modules/03-xfce-desktop/rootcopy/home/live/.xsession create mode 100644 linux-live/modules/03-xfce-desktop/rootcopy/root/.xsession create mode 100644 linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/background.png create mode 100644 linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/panel.png create mode 100644 linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/slim.theme create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/install create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/minimal.list create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/postinstall create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-ac-adapter.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution-charging.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution-symbolic.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-empty-charging.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-empty.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full-charged.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full-charging.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-good-charging.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-good.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low-charging.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low-symbolic.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-missing.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/default/nodm rename linux-live/{modules/03-xfce-desktop => unusedmodules/03-xfce-desktop.old}/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla (100%) rename linux-live/{modules/03-xfce-desktop => unusedmodules/03-xfce-desktop.old}/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla (100%) create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.udisks.pkla rename linux-live/{modules/03-xfce-desktop => unusedmodules/03-xfce-desktop.old}/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.upower.pkla (100%) create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xarchiver/xarchiverrc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/battery-10.rc rename linux-live/unusedmodules/{skel/.config/xfce4/panel/launcher-9/16233231141.desktop => 03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop} (100%) rename linux-live/unusedmodules/{skel/.config/xfce4/panel/launcher-10/16233231142.desktop => 03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-4/FileManager.desktop} (100%) rename linux-live/unusedmodules/{skel/.config/xfce4/panel/launcher-11/16233231143.desktop => 03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-5/WebBrowser.desktop} (100%) create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml rename linux-live/unusedmodules/{ => 03-xfce-desktop.old/rootcopy/etc}/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml (100%) create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml rename linux-live/unusedmodules/{ => 03-xfce-desktop.old/rootcopy/etc}/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml (94%) create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml rename linux-live/unusedmodules/{ => 03-xfce-desktop.old/rootcopy/etc}/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml (97%) rename linux-live/unusedmodules/{ => 03-xfce-desktop.old/rootcopy/etc}/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml (75%) create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.xinitrc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.xsession create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/chromium/Default/Preferences create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/chromium/First Run create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xarchiver/xarchiverrc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/battery-10.rc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-4/FileManager.desktop create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-5/WebBrowser.desktop create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/whiskermenu-1.rc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.xinitrc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.xsession create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xarchiver/xarchiverrc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/battery-10.rc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-4/FileManager.desktop create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-5/WebBrowser.desktop create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.xinitrc create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.xsession create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/backgrounds/MiniOS-wallpaper.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/pixmaps/MiniOS-white.svg create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/background.png create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/panel.png create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/slim.theme create mode 100644 linux-live/unusedmodules/03-xfce-desktop.old/standard.list create mode 100644 linux-live/unusedmodules/05-chromium/minimal.list create mode 100644 linux-live/unusedmodules/05-chromium/postinstall create mode 100755 linux-live/unusedmodules/05-chromium/rootcopy/usr/share/applications/chromium-root.desktop create mode 100644 linux-live/unusedmodules/05-chromium/standard.list delete mode 100644 linux-live/unusedmodules/skel/.config/xfce4/desktop/icons.screen0-784x504.rc delete mode 100644 linux-live/unusedmodules/skel/.config/xfce4/desktop/icons.screen0-784x584.rc delete mode 100644 linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-12/16233231144.desktop delete mode 100644 linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml delete mode 100644 linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml delete mode 100644 linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml create mode 100644 minios-modules/modulelib diff --git a/linux-live/aptsources/stretch.list b/linux-live/aptsources/stretch.list new file mode 100644 index 0000000..72dcce0 --- /dev/null +++ b/linux-live/aptsources/stretch.list @@ -0,0 +1,5 @@ +deb http://deb.debian.org/debian/ stretch main contrib non-free +deb http://deb.debian.org/debian/ stretch-updates main contrib non-free +deb http://security.debian.org/debian-security stretch/updates main contrib non-free + +deb-src http://deb.debian.org/debian/ stretch main contrib non-free diff --git a/linux-live/basesystem/01-core/install b/linux-live/basesystem/01-core/install index cd7177c..15d4863 100644 --- a/linux-live/basesystem/01-core/install +++ b/linux-live/basesystem/01-core/install @@ -9,6 +9,8 @@ SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" $APT_CMD update >>$OUTPUT 2>&1 && $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 linux-image-$KERNEL_ARCH >>$OUTPUT 2>&1 +echo "davfs2 davfs2/suid_file boolean true" | debconf-set-selections + # install packages if [ -f $SCRIPT_DIR/$PACKAGE_VARIANT.list ]; then #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ @@ -16,4 +18,22 @@ if [ -f $SCRIPT_DIR/$PACKAGE_VARIANT.list ]; then #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ $(grep -vE "^\s*#" $SCRIPT_DIR/$PACKAGE_VARIANT.list | tr "\n" " ") >>$OUTPUT 2>&1 -fi \ No newline at end of file +fi + +# install packages +if [ $DISTRIBUTION != "stretch" ] && [ $PACKAGE_VARIANT = "standard" ]; then + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + lz4 zstd >>$OUTPUT 2>&1 +fi + +if [ $DISTRIBUTION = "bullseye" ]; then + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + selinux-policy-default >>$OUTPUT 2>&1 + sed -i "s,SELINUX=permissive,SELINUX=disabled,g" /etc/selinux/config +fi diff --git a/linux-live/basesystem/01-core/standard.list b/linux-live/basesystem/01-core/standard.list index 9ac5fc5..632b033 100644 --- a/linux-live/basesystem/01-core/standard.list +++ b/linux-live/basesystem/01-core/standard.list @@ -43,5 +43,9 @@ wget gnupg openssh-server network-manager -lz4 -zstd \ No newline at end of file +btrfs-progs +xfsprogs +cifs-utils +nfs-common +davfs2 +open-vm-tools \ No newline at end of file diff --git a/linux-live/buildconfig b/linux-live/buildconfig index 672f7c0..cdf1294 100644 --- a/linux-live/buildconfig +++ b/linux-live/buildconfig @@ -7,7 +7,7 @@ DISTRIBUTION_TYPE="debian" DISTRIBUTION="buster" # -DISTRIBUTION_ARCH="amd64" +DISTRIBUTION_ARCH="i386" # Used when building Ubuntu DISTRIBUTION_VARIANT="minbase" diff --git a/linux-live/minioslib b/linux-live/minioslib index 7f9a8fe..39883de 100644 --- a/linux-live/minioslib +++ b/linux-live/minioslib @@ -31,8 +31,10 @@ function common_variables() { if [ $DISTRIBUTION_ARCH = "amd64" ]; then KERNEL_ARCH="amd64" + #PACKAGE_VARIANT="standard" elif [ $DISTRIBUTION_ARCH = "i386" ]; then KERNEL_ARCH="686-pae" + PACKAGE_VARIANT="minimal" elif [ $DISTRIBUTION_ARCH = "arm64" ]; then KERNEL_ARCH="arm64" fi @@ -688,6 +690,11 @@ function build_live() { mv $BUILD_DIR/boot/initrfs.img $PARENT_DIR/image/$LIVEKITNAME/boot/initrfs.img cp -r $SCRIPT_DIR/linux-live/bootfiles/* $PARENT_DIR/image/$LIVEKITNAME + + if [ $PACKAGE_VARIANT = "minimal" ]; then + sed -i 's/minios.flags=perch/minios.flags=perch,automount/g' $PARENT_DIR/image/$LIVEKITNAME/boot/syslinux.cfg + sed -i 's/minios.flags= /minios.flags=automount /g' $PARENT_DIR/image/$LIVEKITNAME/boot/syslinux.cfg + fi # create compressed 01-core.sb cd $BUILD_DIR @@ -881,7 +888,7 @@ function chroot_build_cleanup() { rm -Rf /usr/share/man/?? >>$OUTPUT 2>&1 rm -Rf /usr/share/man/*_* >>$OUTPUT 2>&1 - rm -Rf /usr/share/icons/elementaryXubuntu-dark >>$OUTPUT 2>&1 + #rm -Rf /usr/share/icons/elementaryXubuntu-dark >>$OUTPUT 2>&1 rm -Rf /usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 rm /usr/share/applications/compton.desktop >>$OUTPUT 2>&1 @@ -1045,11 +1052,13 @@ function chroot_configure() { adduser --gecos '' live --disabled-password >>$OUTPUT 2>&1 echo "Set up password for user 'live'" >>$OUTPUT 2>&1 echo live:evil | chpasswd >>$OUTPUT 2>&1 - addgroup live adm >>$OUTPUT 2>&1 - addgroup live sudo >>$OUTPUT 2>&1 - addgroup live audio >>$OUTPUT 2>&1 - addgroup live users >>$OUTPUT 2>&1 - addgroup live live >>$OUTPUT 2>&1 + #addgroup live adm >>$OUTPUT 2>&1 + #addgroup live sudo >>$OUTPUT 2>&1 + #addgroup live audio >>$OUTPUT 2>&1 + #addgroup live plugdev >>$OUTPUT 2>&1 + #addgroup live users >>$OUTPUT 2>&1 + #addgroup live live >>$OUTPUT 2>&1 + usermod -a -G sudo live (cd /linux-live/basesystem/01-core/rootcopy && cp --parents -afr * /) diff --git a/linux-live/modules/03-xfce-desktop/install b/linux-live/modules/03-xfce-desktop/install index 1230714..7fa1c29 100644 --- a/linux-live/modules/03-xfce-desktop/install +++ b/linux-live/modules/03-xfce-desktop/install @@ -18,7 +18,10 @@ if [ $DISTRIBUTION = "buster" ] && [ $GTKUI = "3" ]; then curl -L https://cyber-x.ru/wp-content/upload/mx19/mx19.gpg | sudo apt-key add - fi -# install $PACKAGE_VARIANTs +echo "nodm nodm/enabled boolean true" | debconf-set-selections +echo "samba-common samba-common/dhcp boolean false" | debconf-set-selections + +# install packages if [ -f $SCRIPT_DIR/$PACKAGE_VARIANT.list ]; then #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ $APT_CMD update >>$OUTPUT 2>&1 && @@ -27,6 +30,23 @@ if [ -f $SCRIPT_DIR/$PACKAGE_VARIANT.list ]; then $(grep -vE "^\s*#" $SCRIPT_DIR/$PACKAGE_VARIANT.list | tr "\n" " ") >>$OUTPUT 2>&1 fi +# install packages +if [ $DISTRIBUTION = "stretch" ]; then + wget -c http://ftp.ru.debian.org/debian/pool/main/e/elementary-xfce/elementary-xfce-icon-theme_0.15.2-1_all.deb + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + ./elementary-xfce-icon-theme_0.15.2-1_all.deb >>$OUTPUT 2>&1 + rm -f ./elementary-xfce-icon-theme_0.15.2-1_all.deb >>$OUTPUT 2>&1 +else + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + elementary-xfce-icon-theme >>$OUTPUT 2>&1 +fi + if [ $DISTRIBUTION = "buster" ] && [ $GTKUI = "3" ]; then sed -i "s,deb http://mxrepo.com/mx/repo/ temp main,#deb http://mxrepo.com/mx/repo/ temp main,g" /etc/apt/sources.list fi @@ -38,7 +58,7 @@ if [ $DISTRIBUTION = "bullseye" ]; then fi if grep xfce4-whiskermenu-plugin $SCRIPT_DIR/$PACKAGE_VARIANT.list >>$OUTPUT 2>&1; then - if [ $DISTRIBUTION = "buster" ]; then + if [ $DISTRIBUTION = "buster" ] || [ $DISTRIBUTION = "stretch" ]; then echo "favorites=exo-terminal-emulator.desktop,exo-file-manager.desktop,exo-mail-reader.desktop,exo-web-browser.desktop" >/etc/skel/.config/xfce4/panel/whiskermenu-1.rc echo "favorites=exo-terminal-emulator.desktop,exo-file-manager.desktop,exo-mail-reader.desktop,exo-web-browser.desktop" >/root/.config/xfce4/panel/whiskermenu-1.rc echo "favorites=exo-terminal-emulator.desktop,exo-file-manager.desktop,exo-mail-reader.desktop,exo-web-browser.desktop" >/home/live/.config/xfce4/panel/whiskermenu-1.rc @@ -577,19 +597,19 @@ EOF fi if [ $PACKAGE_VARIANT = "minimal" ]; then - cat </etc/skel/.config/xfce4/helpers.rc + cat </etc/skel/.config/xfce4/helpers.rc TerminalEmulator=xterm FileManager=pcmanfm WebBrowser= EOF - cat </home/live/.config/xfce4/helpers.rc + cat </home/live/.config/xfce4/helpers.rc TerminalEmulator=xterm FileManager=pcmanfm WebBrowser= EOF - cat </root/.config/xfce4/helpers.rc + cat </root/.config/xfce4/helpers.rc TerminalEmulator=xterm FileManager=pcmanfm WebBrowser= @@ -597,19 +617,19 @@ WebBrowser= EOF elif [ $PACKAGE_VARIANT = "standard" ]; then - cat </etc/skel/.config/xfce4/helpers.rc + cat </etc/skel/.config/xfce4/helpers.rc TerminalEmulator=xterm FileManager=Thunar WebBrowser= EOF - cat </home/live/.config/xfce4/helpers.rc + cat </home/live/.config/xfce4/helpers.rc TerminalEmulator=xterm FileManager=Thunar WebBrowser= EOF - cat </root/.config/xfce4/helpers.rc + cat </root/.config/xfce4/helpers.rc TerminalEmulator=xterm FileManager=Thunar WebBrowser= diff --git a/linux-live/modules/03-xfce-desktop/minimal.list b/linux-live/modules/03-xfce-desktop/minimal.list index b5526f6..6ba5346 100644 --- a/linux-live/modules/03-xfce-desktop/minimal.list +++ b/linux-live/modules/03-xfce-desktop/minimal.list @@ -1,3 +1,5 @@ +dbus-x11 +slim libxfce4ui-utils pcmanfm xfce4-appfinder @@ -7,7 +9,6 @@ xfce4-settings xfconf xfdesktop4 xfwm4 -elementary-xfce-icon-theme greybird-gtk-theme volumeicon-alsa xfce4-xkb-plugin diff --git a/linux-live/modules/03-xfce-desktop/postinstall b/linux-live/modules/03-xfce-desktop/postinstall index e27114c..b72f284 100644 --- a/linux-live/modules/03-xfce-desktop/postinstall +++ b/linux-live/modules/03-xfce-desktop/postinstall @@ -16,6 +16,178 @@ if [ $PACKAGE_VARIANT = "standard" ]; then rm -f /usr/share/applications/pavucontrol.desktop fi +if grep slim $SCRIPT_DIR/$PACKAGE_VARIANT.list >>$OUTPUT 2>&1; then + sed -i 's,# hidecursor false,hidecursor false,g' /etc/slim.conf + sed -i 's,screenshot_cmd scrot /root/slim.png,# screenshot_cmd scrot /root/slim.png,g' /etc/slim.conf + if [ $PACKAGE_VARIANT = "minimal" ]; then + sed -i 's,#default_user simone,default_user root,g' /etc/slim.conf + else + sed -i 's,#default_user simone,default_user live,g' /etc/slim.conf + fi + sed -i 's,#auto_login no,auto_login yes,g' /etc/slim.conf + sed -i 's,current_theme debian-softwaves,current_theme minios,g' /etc/slim.conf +fi + +if [ $PACKAGE_VARIANT = "minimal" ]; then + cat <>/usr/share/applications/taskmanager.desktop +[Desktop Entry] +Name=Task Manager +Name[ar]=مدير المهام +Name[ast]=Xestor de xeres +Name[be]=Кіраўнік задач +Name[bg]=Мениджър на задачи +Name[ca]=Gestor de tasques +Name[cs]=Správce úloh +Name[da]=Opgavehåndtering +Name[de]=Taskmanager +Name[el]=Διαχειριστής εργασιών +Name[en_AU]=Task Manager +Name[en_GB]=Task Manager +Name[es]=Gestor de tareas +Name[eu]=Zeregin kudeatzailea +Name[fi]=Tehtävienhallinta +Name[fr]=Gestionnaire de tâches +Name[gl]=Xestor de tarefas +Name[he]=מנהל משימות +Name[hr]=Upravitelj zadacima +Name[hu]=Feladatkezelő +Name[id]=Manajer Tugas +Name[is]=Verkefnastjóri +Name[it]=Gestore dei processi +Name[ja]=タスクマネージャー +Name[kk]=Үрдістерді басқарушысы +Name[ko]=작업 관리자 +Name[lt]=Užduočių tvarkytuvė +Name[ms]=Pengurus Tugas +Name[nb]=Oppgavebehandler +Name[nl]=Taakbeheerder +Name[oc]=Gestionari de prètzfaches +Name[pl]=Menedżer zadań +Name[pt]=Gestor de tarefas +Name[pt_BR]=Gerenciador de tarefas +Name[ru]=Диспетчер задач +Name[sk]=Správca úloh +Name[sl]=Upravljalnik nalog +Name[sq]=Përgjegjës Aktesh +Name[sr]=Управник задатака +Name[sv]=Aktivitetshanterare +Name[te]=కర్తవ్య నిర్వాహకం +Name[th]=โปรแกรมจัดการทาสก์ +Name[tr]=Görev Yöneticisi +Name[ug]=ۋەزىپە باشقۇرغۇ +Name[uk]=Диспетчер задач +Name[vi]=Quản lý tác vụ +Name[zh_CN]=任务管理器 +Name[zh_HK]=工作管理員 +Name[zh_TW]=工作管理員 +Comment=Easy to use task manager +Comment[ar]=من السهل إستخدام مدير المهام +Comment[ast]=Xestor de xeres cenciellu d'usar +Comment[be]=Зручны ў выкарыстанні кіраўнік задач +Comment[bg]=Лесен за използване мениджър на задачи +Comment[ca]=Gestor de tasques fàcil d'utilitzar +Comment[cs]=Snadno použitelný správce úloh +Comment[da]=Opgavehåndtering som er nem at bruge +Comment[de]=Prozessverwaltung mit einfacher Bedienung +Comment[el]=Εύκολος στην χρήση διαχειριστής διεργασιών +Comment[en_AU]=Easy to use task manager +Comment[en_GB]=Easy to use task manager +Comment[es]=Un gestor de tareas fácil de usar +Comment[eu]= Zeregin kudeatzaile erabilerraz bat da +Comment[fi]=Helppokäyttöinen tehtävienhallinta +Comment[fr]=Gestionnaire de tâches simple d’utilisation +Comment[gl]=Xestor de tarefas fácil de usar +Comment[he]=מנהל משימות קל לשימוש +Comment[hr]=Lagan za korištenje upravitelj zadacima +Comment[hu]=Egyszerűen használható feladatkezelő +Comment[id]=Manajer tugas yang mudah digunakan +Comment[is]=Einfaldur og auðveldur verkefnastjóri +Comment[it]=Gestore dei processi di semplice utilizzo +Comment[ja]=使いやすいタスクマネージャーです +Comment[kk]=Жүйе үрдістерін ыңғайлы басқару +Comment[ko]=쓰기 쉬운 작업관리자 +Comment[lt]=Lengvai naudojama užduočių tvarkytuvė +Comment[ms]=Pengurus tugas yang mudah digunakan +Comment[nb]=Lett å bruke oppgavebehandler +Comment[nl]=Gemakkelijk te gebruiken taakbeheerder +Comment[oc]=De bon utilizar : lo gestionari de prètzfaches +Comment[pl]=Zarządza uruchomionymi procesami +Comment[pt]=Gestor de tarefas fácil de usar +Comment[pt_BR]=Um gerenciador de tarefas fácil de usar +Comment[ru]=Простой диспетчер задач +Comment[sk]=Správca úloh s jednoduchým používaním +Comment[sl]=Enostaven upravljalnik nalog +Comment[sq]=Përgjegjës aktesh i lehtë për t’u përdorur +Comment[sr]=Управник задатака лак за коришћење +Comment[sv]=Lättanvänd aktivitetshanterare +Comment[te]=వాడుటకు సరళమైన కర్తవ్య నిర్వాహకం +Comment[th]=โปรแกรมจัดการทาสก์สะดวกใช้ +Comment[tr]=Kullanımı kolay görev yöneticisi +Comment[ug]=ئىشلىتىشكە ئەپلىك ۋەزىپە باشقۇرغۇ +Comment[uk]=Простий у використанні диспетчер задач +Comment[vi]=Trình quản lý tác vụ dễ dùng +Comment[zh_CN]=易用的任务管理器 +Comment[zh_HK]=易用的工作管理員 +Comment[zh_TW]=易於使用的工作管理員 +GenericName=Task Manager +GenericName[ar]=مدير المهام +GenericName[ast]=Xestor de xeres +GenericName[be]=Кіраўнік задач +GenericName[bg]=Мениджър на задачи +GenericName[ca]=Gestor de tasques +GenericName[cs]=Správce úloh +GenericName[da]=Opgavehåndtering +GenericName[de]=Taskmanager +GenericName[el]=Διαχειριστής εργασιών +GenericName[en_AU]=Task Manager +GenericName[en_GB]=Task Manager +GenericName[es]=Gestor de tareas +GenericName[eu]=Zeregin kudeatzailea +GenericName[fi]=Tehtävienhallinta +GenericName[fr]=Gestionnaire de tâches +GenericName[gl]=Xestor de tarefas +GenericName[he]=מנהל משימות +GenericName[hr]=Upravitelj zadacima +GenericName[hu]=Feladatkezelő +GenericName[id]=Manajer Tugas +GenericName[is]=Verkefnastjóri +GenericName[it]=Gestore dei processi +GenericName[ja]=タスクマネージャー +GenericName[kk]=Үрдістерді басқарушысы +GenericName[ko]=작업 관리자 +GenericName[lt]=Užduočių tvarkytuvė +GenericName[ms]=Pengurus Tugas +GenericName[nb]=Oppgavebehandler +GenericName[nl]=Taakbeheerder +GenericName[oc]=Gestionari de prètzfaches +GenericName[pl]=Menedżer zadań +GenericName[pt]=Gestor de tarefas +GenericName[pt_BR]=Gerenciador de tarefas +GenericName[ru]=Диспетчер задач +GenericName[sk]=Správca úloh +GenericName[sl]=Upravljalnik nalog +GenericName[sq]=Përgjegjës Aktesh +GenericName[sr]=Управник задатака +GenericName[sv]=Aktivitetshanterare +GenericName[te]=కర్తవ్య నిర్వాహకం +GenericName[th]=โปรแกรมจัดการทาสก์ +GenericName[tr]=Görev Yöneticisi +GenericName[ug]=ۋەزىپە باشقۇرغۇ +GenericName[uk]=Диспетчер задач +GenericName[vi]=Quản lý tác vụ +GenericName[zh_CN]=任务管理器 +GenericName[zh_HK]=工作管理員 +GenericName[zh_TW]=工作管理員 +Exec=xterm -e 'htop' +Icon=utilities-system-monitor +Terminal=false +StartupNotify=true +Type=Application +Categories=System;Utility; + +EOF +fi + rm -Rf /usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 update-alternatives --set x-terminal-emulator /usr/bin/xterm >>$OUTPUT 2>&1 diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/etc/default/nodm b/linux-live/modules/03-xfce-desktop/rootcopy/etc/default/nodm new file mode 100644 index 0000000..5be8f85 --- /dev/null +++ b/linux-live/modules/03-xfce-desktop/rootcopy/etc/default/nodm @@ -0,0 +1,32 @@ +# nodm configuration + +# Set NODM_ENABLED to something different than 'false' to enable nodm +NODM_ENABLED=true + +# User to autologin for +NODM_USER=live + +# First vt to try when looking for free VTs +NODM_FIRST_VT=7 + +# X session +NODM_XSESSION=/etc/X11/Xsession + +# Options for nodm itself +NODM_OPTIONS= + +# Options for the X server. +# +# Format: [/usr/bin/] [:] +# +# The Xserver executable and the display name can be omitted, but should +# be placed in front, if nodm's defaults shall be overridden. +NODM_X_OPTIONS='-nolisten tcp' + +# If an X session will run for less than this time in seconds, nodm will wait an +# increasing bit of time before restarting the session. +NODM_MIN_SESSION_TIME=60 + +# Timeout (in seconds) to wait for X to be ready to accept connections. If X is +# not ready before this timeout, it is killed and restarted. +NODM_X_TIMEOUT=300 diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/etc/skel/.xsession b/linux-live/modules/03-xfce-desktop/rootcopy/etc/skel/.xsession new file mode 100644 index 0000000..8658258 --- /dev/null +++ b/linux-live/modules/03-xfce-desktop/rootcopy/etc/skel/.xsession @@ -0,0 +1 @@ +xfce4-session \ No newline at end of file diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/home/live/.xsession b/linux-live/modules/03-xfce-desktop/rootcopy/home/live/.xsession new file mode 100644 index 0000000..8658258 --- /dev/null +++ b/linux-live/modules/03-xfce-desktop/rootcopy/home/live/.xsession @@ -0,0 +1 @@ +xfce4-session \ No newline at end of file diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/root/.xsession b/linux-live/modules/03-xfce-desktop/rootcopy/root/.xsession new file mode 100644 index 0000000..8658258 --- /dev/null +++ b/linux-live/modules/03-xfce-desktop/rootcopy/root/.xsession @@ -0,0 +1 @@ +xfce4-session \ No newline at end of file diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/background.png b/linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/background.png new file mode 100644 index 0000000000000000000000000000000000000000..966915d128cffba50301bb28569af52b5dcf9f44 GIT binary patch literal 78717 zcmbTebyU;u`#(NlZlt6ponwp+%=K#^vn zNB^Gl^**2P|3A+0oF{Yl^?Y1;Kd$S(^@*|JJsPU3R3H$D=Dv=WDF{Rk2Z6x1Dae3N zuB9>l1%asKy)-qA15NK~@ZQ(fl)HXgPEJx*>N*G%R#2E7YHl{enmF7p-)@{vpPV`3 z?P*G^L({JFLQ3p9CB1Ifa}d9rmN`_*r|hZ8vwH4a4L z1HwS->NHsKcZu_eqo$wwdcJVWISJ=KQ zC|ec?HX41;ZMbPLB%?dTZ;g<($Ozn(u#Gy*bECVxCyP|NG7vblIp&UpgeNO6cpxHwoN!N4{S%l>8a1ci4yCZH) z+UmzJ(*RxH&<`6aMuEztD?)Z=3C}W^QWl4Y4OUY6e#p?uKfAVceLC-oHRoag$bIjegAC66IjpyCmTu{(f%GPLHVATU2@#ds0jrqv;qmY}zr8 zU3L!J%TP!Ux~}OU@8=#-q1F3sXbE~u{kJ#~&qIC@%+1PhCeV>2ovE!gP@&JOpZ(eP z8&eW#o<@QizW61cuIJ+QOmp^=UwDR*Y%Ah&zN>05Zjgu=121LdL-7%8G~~-YlHRjR!Nw;zztmtO&~f9 z39-6J68N#xbqs>}Igu7G8#DZK3412uqm%F(vfvVin{jeb_Mli-%uNMysn`K0@Enn; z3~doy6i4+#jUE~Qjh@9cF^E_58)t32)pL$NB&3=Q#+;cHf|?pS#4KtXC8lpU-zBV< zy06-k5)87WYtBH2*iak2_LQi#T`EGS77 z{Wj95CkMk|MWq^B$pEKkxbrGShJm&FuEvWn0ZInG_s&E(-kbWMP_@!6br52@fW$#SLjSJtXOgxwnc|>)4>RUdA+}9 zT)ikua&n<=y>5~2v;M~{qFkjMqa>?q`?4p_C&4F*4<$?p87bLE zvPPPn1c@Hz9{Yszgz9HcpSe7hV-LQfENgLtR%S@v?^cJmhTLO$YxgmyfI(*0ep!PX z^S%)?)N*z5de`4y=a5YtkEU-!aL4aM-=A4Bf^-JhI6 zS#L&7AG5Jl=)KfS87K??vWMThy7H`fy*a>c!@k^)x>2jK-On`CJ~TBl?v#Wsny%cbumlMejVwAE8S9*4SzqW-zrMBZ*5)%Vt}FXv<;wnZ}=?{lg3X z@o3SQ`k3dJa+e%LHbisqzwozeU%Rqmqt#!RkgESwr$Y=Pv{A}@P#vdlhtFI0XjULA zq49_j_{di2QTNlH?D%M&R7yHXHDwIDGm{DZXeYeI={q8uw3@%2e}EsWm8W(8RYVy} z8Plu$GRLoBUo*ezxPEl8{Nj*2p2XA}{MGe$+3)1D@Fp% zLRrGfx*-M&MM`-~MW!!y&AV95Aw`uZm6PQih7g0<;zLnop>}1GoEN!|&2<{U;Ab-j%mk6EXmq^@^Vc+Z)THziA*ard2Ls`GvLt+6J*o- zs3)$A_W$eGfzKMW%yNwWm0s^w^P|*f*y4x9;^fBcTqBo=rPQ!A&n$Osdmy>%z3-_x ziaDEY#?F=|jVU#HwR$#J>}KrUj6Z)~j}F#7(0OKQ5c$!4tK!#GYj|t*=FarEMdbra zn*Sw9rUOtMyA!I)<=8b?S08Vm%V0M zw_CXVGiyw6D|LfgY`Rw=+@Y`vlojSCR6?kI!%1--&>DYElxhJ zGzR(&&shhuMK}H_8f#BJeR;$IyLtY}ew|lYWnK9W&IuK#=sNdFSk>)vAJ(?YckJAU z9MammHhb@@P_(eLssldk?EYj%US*%E_@&+Hk3Tb^ondFPGAxR>F6{Qt#;fxk-*ir2 zj%~YPgQoY-Ew5C&JLI&P!~|j_H+(N!b3>VKG-E$u#Z_}*tHFrOGdXr|zucZCeHRGtuz00%C%cIL9B0w(iqZWR-^80tpW%Z2q ze;`Ul1S#iCp9Kwr~jVdLg23do2B zc-G{v;RXW1kN;sIr(fv4J{(Jb1q8w<6L7+%HSBV+g)7Ekz%pKfhA$cac1JjbZ^wTD zWXco1Qv!~alIdRPlq7ZqzEemLovT{|F|R%F&n_YSqD`;|r{NpO2ftyox--D&p#lU* zH7QUwjFs(071a|W5d0$nL6`iZl$sD9@Rgb@f*@ADIXC$nq2k^&h=vOQijJ`ECf|G8 zrz9(BH@0JYYqC5nzdR-ZsYMf@h-fTKA>&@ZEZhF@@DrE_5HleRfQIwdqKG*e+y2gb z+}mYe9KC*r9|ZbFPzTQRoipEXoP7kk{1HohK{Oq-I_W;^@?XOu&0ujiHU_5xppG@f*uL8H_ z_d;Py6dFs7t5?ZDPNal2{pr@*PIdU6Te;%Sm+^MqVTbaLzm8L!fK`SB^Yv!f`#EKt zJbwLDX32r_+d2cizYseasDz(jHj_WOq0_lGoNVH^mpUNhwG>IkEuXa;NI`IBg6xXt z9t%!py9$g7U*8YE?D9>$ciCa1K>AaX8l*-=Sl{#gmh|+~a3AIUz5YPSryP0;XDNQp zfL(+DyI^E$2c_kfI2*2n^(}OAAzFS@BzCT`0>J;dTH0FWw;haxtoE~7`p1|Ia4436 zHf9VE-Nit_t@Jr)vUz`r&Rslq2;BEuVnIrr8CWV!c&(~LUZ_;_D#?rrd<)$7)w;>s zN(5MU4ZsYKm&}QjYQ)4%%fa`QPiMt9BYjX+&ZWSrOF~AmelkC7o^U}wd_Ro}&NIsH zX_TaU4cVJ@LDd+ugPaTqA`-H{tL9j*a`=qOavoeAQt+5DzSfe|Xe+|bN<{+NC-~3P z=?Q1h6YY+!hRnZsouEJMnWFJb^s0?IHWBSV67;|zt7O1$CAo*UJx@tHy0Wzbm7r+F z;lwl1t}+t4V>s(7tAoH1AV&{~Ec&Wo?q3m)6=#yyIEfyHALM146ly7)+3ro4=g5H6 zxCoedefLHhAhX})3i?BOULLBP%6=e1_FQ_+NzN%@$v`3ofE*c<0lWI;S0PqW$7M4P z7|+Oys&5Unyqp*By&~S}v4eQy08AJG$-vRy4SwX+wtBdbS2KSNMHhVWYBM6e5lmIt$soN}L z`;vqWXLpv>eiF9Wyz0kF1wj&lQVEs{Gs%BiKd2#R<@xqrjXenPiLHcqtLtZ{CKC|} zdf@K~dE!*YdfO{S+o$H6EZR8*6fvURHm-|;W*A%XQva7pm;|}oUitA#HC>F3Zr+}P zYZ?$95%=Zdk@?L@q2Rd!GOtG&b{rrl5dyG#83pxy{M?=$ZI;uFw96X4IUSY=`Vicc zHFAqpR=@NLxo@9|K(vAYyzB{naoltwl}<8FRN zF@it~{DiNX+>w^FKO-^7`JCfxmDE#Fdu_X#zJg^D7e6%LP1Ayu&N2QF1cK)PaRzVD z^{6OM=`34JKLp&-uAm<_uQ;4GQo+24%c+|0j<@xJ&K?35U1jN?%|E+L?be7EoGysnItiX$*i+y}s zFO;U5o{H_hMM^de2uJX;NSTixAd};&q+3c~cK)Ci9d5y(a-yeR({+t-d&R`6@{_sSp}1mfUXf>X=e6|>9RzYL)VUO+Kq+#I7kply$?Scf;<-< zQ;tenpINidYDGdwyW@39LCJ)zT3S5AKT~vHceIwrtLgQQ&#$0vJ9cc=ioRzQ<9v^_ z_Z2Ej2lLX*2ca?`oD>kQHF{4tUu(UPXO=uIav!)doKSeT1fskdolW|Mr2c|?mpyB5 zy!BlOB^xC&9tG+WCupwe7LYC*?;v8etNbimHv8GtyKf*$bt_n84c?$7A=HbFDwG1L zc}d3n{R0sk1QZZV4&!azC;ZjS635v>1MCArTz6|AKWYyA(@OB9EeY~oEL4`%$P|H( zq_W;1Cq@7kPE^J9i8L+&A?WB`gM92WWD9OpBS$QetX+k@GXQdzTZ5e%WXA|1>3XI6 zP+Bm#&G^Hd?Ny1zFgZ71%kDC=y^x}M!ZUI!%Cb-5ASXG6!pIi#=O?Jk34mjz6D7pt zh{CV3%`aB9eCVX@2LB%(OIvwjkP}@wIVD8+XxrN7_v~Hi>Jy3Sw6SVrsB& z<>n5lgNXUMWZ!^l_F$M!*FfciD)q$Rh`dfP(aznL_?WlZl^3SIM2lYDVc|fL0?ajH z92CN2KbNIZ?jUY=^2w*yfOz39r(n#}HuCORS#YlrMM7s5ma&SNA~BR45=T@**kx`q z6s~Bog_i2%H8M+`E66R9^Z65{CQ+p}Rcgdjq+PVv1S#05&?w(6*FVV7?IRbiLX{JN zq=5)fGZ~#R40_C#oEfgSIEHTAUy5PeO@LD4rr!@IftGG|FN(Ls>$$z_G#6EAQdDTV z339pyypWl(@Zi4}=1^rv6_m4G<~%=o*uW9cwyQ)XN-NCSQ3Gv+u9Z8o7TX0uA%0LV zP#0lupkOOJ*J3*=S9>xAtb6LlCiRDF=&<|Fp%PZ(X(MH#YO-({_U)MGsbgbyzuG3KMDR@@aUqjQA?)HQ^Zct_PkVM6oqzW zB_mNI1S~RXFx~~yYFyH**ViA7c7d?&a(A&3-v{?4+BA5Fp^Td}8cy`$hqV(cs!H96 zx@rLz$e8#TGTTn);C8E6#E+CAk`^PU{Ig_1pO>-u#(zqeTN2nH@dKpYEL5}x_L>94 z@N%GvVjh0VGx2eD>>g+}e=~6;S!1P+rEQ?XT<6=-%ce>YN2ZdCHcsqsV@4)!)k}ap zjerOdP8v*eft-r42(XA9C_^O7r%#bvMC{lZv<*>zqwVE_9~+hQgrJ=my`i++&0rcy z2*`#I!)lMMP3_bzy9Z7yb@H%Y9Xje*t_D)xVmQ83uqB?2GJgEVBu{#4Ty^o2=N^lW z)_lt#HATRT3RZSi%$6hZm@z39(LLp7Y@(a(E{dRt$o){*Vo7;)BlK@io=!Y4=ANjQ3GSNKaFN{1|92M_O#dVx<=URLt_ELum9I zd-{psV}J#5ubMuHR+T_d<>zK4y;HaB3TlqZmYa!XUO@4-vwn;FLlg3u)-Pqk>S_W& zC7ghtHtBP2_p$5?)_>3=)s3>R>yzXoB%8n0?BDvp`QN5* z)az#Sm^7MFa>F#1(Q(|GeN?H+p7uschGWX#8n7#tss3l>~8?hyHWd}!+ut4`@-EDD0&AuM_F{jCdCGriTA zDyn?TGV1zP&%)np@g~CzM<~@X7PS&Y(+cc&a(C`%&kIWi zo@ZNF8547il~98c89*e)4nI;3b2U1US$jsF)~C$&TCH7;GXdWwwm!u^tXA@Ome6$yVeht zh8_Ow)w-8LQ`DMtzE8R2Jh!mYp?WXQ4(}(dW!xK6sd%3D%}Ju>^*NQ)D+A2z!z%^V z1J^)LfdYhNJNFqAVV1f=A-_tSYOnE#os%AHBt-%W0U*;$|BZ*~^YOeOvUa+E%50~W z($$D!WUuadK)z1TyjLq!TB8=0T0eJSW@^GG>Z5Z7gv$i6!>t&k&#ooo8O{4uV+FU& ze29o0@2o>V#@_NhJ{9CF(U!4Rrk66_{`_q>Bbn;HGs(*gA`GG0nYbX}nHn1XP0Utf zA$`fxJa|^=VpsFdFCZ+?YZ-gil#tnXFB2~=@kN<#pGdxa180^KNF#&u0BUL_QBd$F zR}8Sj*npu5ZWiu$Lr?^|@-aG(m*R{K%8R0>^FQ)rv;eo%P5q9L99SzV1gK&HMAIb9!oFu^v_i3ED}4KKInL<7vQk@_)qi>vEoo! zCz?3XU5q^I0m&jpwz@B?(A-!}&rgl=AKUBlsvxHxhu|4azofKbu*VjfI*fHEY_WJ>G`>d^KaVYGkF9S+z(8?sk0*&Qt8o zI;$>0^5W_2Q6S)`hz#R9u9>_>8l^=FQ7`u~E5QVm`hN=0_TQ&G$n>mCUKwL z4gCf=X$AN6F+-$-$$6yT%^_VhS`bXtav;L!Wm8tUE7zgxo<1*w>6eg2(j2O2NLI@` z-6^lDk>DUcfrYKfPGM5cSSs@FZp@K(R{s7I&*DU~5(*$@^H&cG?YkWL+_h9An0LZaupS(vGizgy$V#(u82^c#q1S;~O40V9Wbu3_W_+9*U_TQP_M zWQTUYok7+{pjc$BOk#|Re}rx1zK$epza>77g$CfF*e9a$rO)A2nEDNBHCo`cof2Fp zut}L#c&A4Hv{1cOtaSC80AE9A>Eu9o`%@(&|Fp6-?hEZk=o|i6Xiz9r<4v<>cTS$_ zpwvSb%bH_fUfb>+mfGPSAXN#MkyxZbJnL zWvl5#5hG}6_r`y1DPyxUO8GD!Fh(68|P z=-kNJ&MsC+JP9)eLG=`o;1C8CI+`v4VkdYX1uRF}IloKeHwjvmDs$Q-{{7=7mMNu7 zns|VPRWF2eJ{)zj5>cAje7^l;8cjosZq%#e2)LF!!b08k1n_lAF6;9jhVH}*Yvh?V z22Q0rrT$^zT;+~WG(Xl)I{WZ{@ZCUz{CniBae-qRi}!=bJ1cb9IZgg<@)Nfp%&H_o zzX9*PWIB_&eI61UPZiyq3FD&u)O|Iv=5d!v!q$|xH~Xb`)*#Ph#DC8cxp9b)5raptX_}g{1L}B40$UeX^8Jc95xQ- z9~eP`ARCM-qnjh!M9w&Ge%*q+yQfMwLF7O=zghDT$MKvCND(Wi*iWVYp4Nr0xzG9T zRByS-#Yf+{c!t}}M1y+PtAV~Hz`Zwc z=c8MW8yl>}Vi?l4mbHS?TP~BluwHW~>~qhP1a^d-aVp~jwwrq+2q*YeAe>60{)WF@ zD~5;}ug*FyF?7BjxD#R>FxvAuT&M)DJe0&Jq83~fI_0uNVkW} z*Omt_lVk7vY7e7;OrYZ4(ILBfDr^&8A_8#jiJ;+fglP7<=r9{l>WZP9*VkZtvc zuOIEfoBbTmWnkmU<5i;-i&H1Q{0;vmqu}INr42@Tu*s|`4g#hiRM89y*sRgHoz7zo zG;Az2sB!&3bt2-izj#b&>>;u@Qes4slO4RxN3Wt|b>ywj&emR!F^U(=H6F zPF>m_H$q3Hoaa&G6cFXh^Gk#ZL-g##Z$>bQ3>?JnRO5zlobTw2XBOJu;#*@6eQR@M zzs0(rUVHR7c<5vHi?9DtPL^PaSF_4>cE$Q@6{MH&URJ;j^Pm#LEdzMgwxgkYO+j?&x zn%jn+dIZ=>F-{0{_P7e0aqdWC$LnizuWj1tKHL0oU*5JOKP-@PXdiIE(eiOhy?nJ` zR--qKCGXT>k9yGCcgYo$mVK&J&&ysy3RqR$Fy_hjQS=Qkki8$p*H-1;T43#cS!=DE zTP>cn$44Kk+;9L4ztBl?()rMznTid93?}asc>|GKIzq%9{vO*O)*PllsIDk`xTwo? zJq8@@&v@2QaQF%S3fU1X$Te@4^{D-QAHSSvaO2pF-nUOH;rq2=Ik#F9@{!%~B#RxP z8*1wIH7y9Ntr*2c!O`493wmmt3IHu7n*tW!p-Rfk%5;{HX`~%g zfp)g$1*UPnKFvT%ch%OY|Aq2{@}YcPwoBu@(;FGe#6$a={;6yu=*d-9smwPEj90Vm znaHs80Tm|B(2+t0aAO{A$xT2fCImWUTtx_9*g^h4fb*x&gY~m=pGCT?X89Y_93_lI zJ7(>1i{19!+OJ>fQg4%MeCp9-~{>Gn_V6!!Q;_pxbeR$wzDr-)R!MIKV*F>KtVQycM7ZKfMT zqoHAJkLolKy-!bF1Dqaov7!9)MR}M`4AF5^jHzp-`zJ6_OPuD;k!$_WDIUM$)8;qV zhUZhpLEVc+=fJqL_!%uFBbI^8pB|dff{0-PH|Emvz69d=_n(|{1o}3(bNqgsQt4Tju&N6tz=7KKB zK<|NyrN?yEkh}Zo2`OcCognA1=GwtIFluaF!uC>#R~^$Z^ zqKfZfn)Hsf&&mlRSEYxBT(?K@g=*5!;2_u0?7{#04nqf{kFStKaP*zbaP+Ww6Nc_*LpTxo5ep@*rV=s{Y+k^qHShEU~0{X^nuyC4bxe6 z@$RSlqy}`+swuhlYDGxbX3@`8j{VFhdYdymrF*|<$4<^-OB>G4aRK;l;`#2+t;jgD zNpGUXCCP4#qQy3_fdiG63b4Lp;e{;z2c;z)Eci6Q`S8VDmdzBMVDg#Z;ScoBV0&`U z$iHfo!xv=XUT33s*sJCR?F8sq$)*^f7UL}ll1Z3X9xwiNAixLg0egk~3OT2Otr#fZ zh)%kLr2gb={Ky`?1ZfjJY(tL%{K7N*OBXOUq`P_kG-zIGkvJA=_3bcC2A}Y}3iDHy zZeE2#<#wL(^*}O(co4g%CeAjZ|I`BDR}*|ct?g|F>7&qPH<+KX&bdaR(kUhS7thDclz@(cIQ3LH$? z6a!MI0wBR~7IPHXF*!cp=(2ih-8Hvn_CqBhpV9k-)qV~D(`uP`Yja|04)n6+NWSHK zU`?nL+75KL0O2n1brHF+9l%3`iPD`)L%zNK<7q(!M3e&k=ylkV`;h1ip8a(ble&n~*cke4&N<$}o~TLwSy+9~J+3xqfM z(DG3%5n!l-?BYnkQ1a!N(06Z)#olK7ztBFX4^D_Q|9JYOc7;ey@#DWLev5c z!$k1q&p=Rnx*zL5OC78EbC6b&{-|Kl={^ql1x=bY!(DWNO5jz?Bswpl`Qzzs5-I%ns;zU-ke7-R~wS*RkT7P^u z6h_*)Vjzky(M213nX2jEse#cSm@sca>43La8`X(i2#L) z{VDG>mV{&w$WYOs^X$C!Pjw{zrC8?ciw|_URJB+SME}k;ytBY^Egy1$gdVXFXv1D> zTwMB8jD~JM-7a~45N!_jnjs|4k`}=cOmdn3==%ywt}ckWKo@80{_ZsBREkfi_dhr) zeFd|u0EsA@fc3nvy9jT){gB94W3f9Hx&TWQsLlZ-sx&fv7-K02Ko3cvJW7ccfG)_8 z4=;J+XEXvW*xNR4^!B%z`E}Laf+>Qa(g}y2TWn2fWy50}I?0|4RBTkpy4E-ndD(Kk zz-6dc7B4<mS?L&M8f6;%= zWuamsLqGHj4L9E`1_o0{1%@(-#Y&d_w6Xewn zZI(UJrKd%2jeln`p6bfwQ2d=f*$g-9r!8+ql4$gL$ZCG6d8S9PWrtNPpx56qX%eU;F{7 z$g3)S%)6pXKHT@KvASol0PY+jg|WI$(S;7F_ffo@7XE)>WWLjXx}rwcTc+pl+(KSz+GKZEil*0aDCkD(7yh|!?R*w zMk#l$&wamYOLt!-K#9EL154Thr1eV>o%F{b0NQ&Qd@8WFJ-u=J`}asG3O|__eonm4 zLG067I1beZT0{u+r;1LAV&%)mT#diQ->-fDY@f8CnfkkA0BZib;B%t`67-MmkgGQd30^V%Y8s)0cchkr8 zSg7%{Zp;V9Y)A(@>W6gyoj7|&?SX60Wc&B28}S4n?5{US$;b8Db=Xk0nokqsn4K_P-IaU=ml zwzb6Hp6~mZQtFYKh=Wlu9(>8|AQF-lfc+Hz0(Tbg)xQ*a1wvsJyvaL(kt-|P((9jr zf_|OTUr<{vt-N2eS4Ibh6u~{^edOJxog4*BYGkjMiR@8(!;9d;IL!0QqS8SuNiohz z;$V}A4k)rJi`AGT{9ACR<_E5m3kDM{ho%gR;jE_frR(H}&$nV>$X>t|3mB5!(mPw5Gkxe_-6(G;IaP)kD2WRfXC-o-885^ z|Iik0TXgPgbs_lHZ_!jYn4Ekfn@NMr=V=vY=bxZm>s7a++k~u?(8Y7y9^C&<+Ucqf z;jh4A_lZ^dNY%X#?2=~1VF7ArA5s|v98WvnE%*mqAP;_6loN3H=rHYIC?A$*tV^#H zbYf8)KS@JP%?nBZ26xvg^HiEKq0}gBFV){1oSBU>+tOijC+Aa1(2~+gYyF(wgHmXH z0ep|l8OKHB^$WR1ii)eS6`+`;;glz(2RJe0$_4+y2l>y@yUS~&6tJ|$ZI7ZGwDMvy zy6=`XCb)N|x)W=0W08+je}}1CCP49;BAj9;W}~If(7W_!_g1vF9{tMYh1G1ULys2-pk0f8wfl~2#lIyB8b;KCt02^e`Ic>g{%yRROAF|sN$H1Wwx(0* zOhFC|WR8}PcVeoiSU7{_(?XUOP9%a*Pk>nTX9Q`QwZO_Ml5*{EkrF8EYl2NJb-CDF z4&B{SIJ@}=lya2I5tiF;*^;Gg#n>kWIr-#r=&0jzumH>CF`~B%U9VGteB@vciv_V? z9XsH-p-m_+u9Pt0A4LJxrt3}gb@JjiPJ3)tOIC+;hsxv*cl>JgWh9u3q{{XVbamJZ zKFNyh%;UmrXWV+Y$lXoRP_gn<>FcMp=?VD@(EF~_!ruf17Cr{cNYEF#z%b#0 zuf_3c$EfdAl(T)A<431JU5GFPiUNWHUfRTJ-|0bGwxWL{*kuv>c#;a3MHHK^;~DFu z-+MMJ4rT{(o)Vu^K9To2j(3a2tszm3gXkPMFgC+|GCV`>79Z(~pQ%9ehcy6!-1Hz# zXQ0woCdv+UhF zk)WrCtJohd(rUAAZ(5K>eAFE#-TTVc(!h*GZt;TaqbvPp-3a-QQVw=JaAU1+l^|}t z7Z8X4vG=4-c&-fC{k1mlc^JqweV28p+x->m)4k|G7<4u@$@sa9?Av!w@Vc2^Rq_5c zR0=RA+}mIh|NK|Wdtl%WQ7MIe=XJorXZ5(ooqukAN@-jH!dMfGvVLPIP8NCcY2RSU{*eV!6d42I=v0zK+u6d1X8tA?vjMHQIu0YMNNy>-Rq2P}&sZfRQvr9; zS4ZK+@zF6?iz8wAm?NY$)3%`o4G&-BsLA3pNxKu3_aB%rIuO#H+mncST3C86 zDCnC0=b)Wtmu^gXD?<3vu!a{OZ6CwawC7O@2_^Oq`{R}-(V_OCBj>Wyh+}?3zxBL(Nhp=-n{0nr`dwYIR-{}c!hb`KWV`v zBtUz^r*jN&!PK!Hqhc%EDK`p>vGzdc&+NtIb!T9+@5*v8z5)W zR~e)fvVn!|ViW6w`6ERK6~yraT+9w4lG9%v3oL zPNk;UjT$o0?k&oAJ<{&-MR?Iu<@8%!8~f41-ymHAOcSGUL4|Qn#qqGn zUt{xK!cmM77+e<(v6I3JToQQB$XSikJiXwk^N~e#!m!p zLV*(}T8oyAqrfvDY4Xi+r&m!})D0?FxKLORLa+6sO*_cgU`I`1TRSA^ab87802RVk zf2x54pZ4NeOG|8^Fz&vm2vDNP35rp}jB=+}iX5-umBYSVIqLB!+Mt;KFjBky-a;A_ zWF|qMx=qVUhGk>`$FM?|>Jb>%%5`?1;1h{@KTP58Q-Pc2e4vCl{GYx0#Y%&B8=rlxVFBE3 z&;qNZQS}8v8iqiVcrcv>7_Huo&pxotxvdmo&%p!Xyn$<=g zH$;f(bV~Rl&3^(+7qPI)cvS>ioyq8B!%U!zKISfIb`T)O+1c%)C@Sna>5F7=_ow1y zRx*Ft;CwJ@xzc-TIc$uOu89VKuLw7iq!}*^IbehUJU`{w|4y+FA6b~>NS3t^B|HH!?lc&8sH*TTZs>$ zdizo>Vxe#0Olnv!Gyi8 zdYq=Xy)*AH%AmJ-Vg*Sx+Im?BfuR`tfY4J#kGq>goyEdGPYIj%}4Nl_*LpwjPa27*vG z^#R+B05fqp5sr(HA2Pw`cNxyOW%4mOs@-zJ9}0@oz2i7u6$`U_Zp--fV;_+IRX71s&Ss z@>V3&Ihf4*jot>2+HCHDHV;?B4>g{TGgHJ}D@uIh5};3mP!(43>K9dq7W-j_-?juP zuam*Tb&HWI!JZ;O09qnDD`}N|P3=2pDPib>`?%Js5(5CA>XTcehJWVC4S}oBu{rV7 z3@2|_-`t%8M1I&+M6Fbfdz6*|wZf|hEB3Dd-!AX{LK8*CR;FuKCp@5-v?-zt!qJ7z8hnatsxv4`8|TRSc< z8Y$v;~*}`Ya!K+>w>nHPfai?E^ zf#(6zM@Q$1s^Fy7l^3B`G09H3Jrr@+6j6ahfV9nYT-`8 zBftrf^-J8*L}{fy;EYx?hbH;6xjIa!IuQq>akr7zfw9J%GMNJ0DYwxMT?~(8%0M;T zZ%E~%P>E_t^DB<`+j+AJm`;}u2mG%Az`sx!5Ic_SoPTNcKC#ol!EWOu+O^^a78op4 z!3QZs7J(UY5=&?(kq|xgUV6oxNA><^dg1jdVrD*e_qq`oD@$m?Hi1cYUN^}3`dU-I#z@1T zGg9AX_OCUZ3*054jgMR(F%z0NXf>!FR))an@@v1J!)&|m0yiLl#x98=_#V;KmV?kq zh+YS2Jc@y)nL+y@J(%at?3C&$Q0;iq*5|uaDBE3qijfJ|DB#u!|CvnWEV{~a3h3Bt zL^SxZR%eU=DBrC4#PSOH&^D92L2oF~S!IiCqLPGyLK>+}57*??rZ_SHPXpKLQS$ixrBGjvRwd zFS1O@&3flFhklPlhOa2KZ#^;)`BC{?Mu9)Eu;}ivyd;H+SI6Gu)JolmFLz4+Kcyef zJ@7ShQ7>g{rZ?w3>&t55vFMI z(m3oflSYDV1-aokBp17{cJZe*)FJnG-G~WL<@GIb86z4_cbGuqrr(WJVp8n`R>y^z zE>tQvj^Y8b5KS3D%PcwF* zrf*cREw=`UADj{b)97(>;&IN~)c4z18GP~kL+bI1@n@WKSmGXcKy`-yQ+G>g%P5h_HH3V0W~4_ zRRn#AhCH;=NFxUltNN8Y@csZg8cz=zhvP!=HH7>Dj2XHjfk4B6(@2lu;nE6pW!AKh z)o|I$0!O z>^!(^SUL2(5M6%b>HU{l%z^Xml(8w^avF}kOt`( zDI$Ueh_n)dbmumZP*h4nY8yxi!a!gH#{9kT^Zx!G_kBO^e_wxG=jwA^&vTvgYI(n^ z8a!-9PG|f^s~i!@*&caz<;6%xsWkD%8j?Bi@GmG1$dFP45(Q?wN8djMooG$I-LN4X z?^^Y3Zx2~BM%!p^U(JlVcdhod4lANpUnaL?|AH#RLD<@#U9@51XhcLiDW7Zwxv(KWLwl1)`RC9d&8{44 z>>WZezF+r>cth)f92Ct(`ZT?yMTX}0=el(PN`5048V| zUCjs3NZM%H#-9zO^KYpA0PqozG1ab0Ius++y0HyuIXo@5kAbdh%SzAX@)Jygr^hnq)PjZi{IT47F-pywRe7k!O=7c52?y2ZdhA zBAE2xTq=X8H^y?u(xy8v{FbYx50}Yc%;TxRWzrGag&Gu_)NZRN_>g_b=9u zy1duaj~4+yU@+;ymeg}&7?&#Q_<-5W%XV`LzEk-LuF2_C?IXNV5 z1y65->5#qbvZHk4Bw5~KnUvt0>mcU$j+j4bq| zto0ZTi@<$KhECfyZSMBnSJk8&9>Rop|3ox!L3>5Ag;d$Xczx)7QmHoH*0F^!&4Pq0!x{U zr3#_BNSlVqS?L^at2}=+mo1Q_Y)QJHFMcIGSf(GP1fpV7NA!T15LxyLVMxeGLwhRI zQ4!R6A9FVdBj&E!2EZ>G{r7?Tbd+)P#Yh=%qdYylli##bza*Gwq&odg5Jqx07I2~5jcqY`UF^_)ZPC5c$MN38o~Vckg9)C99Bu@&nCI<`)w+h`o6JI>fLr@;Nz%YOg#7u=y z%H2(|t4VFV>!KW_?fF-(mZfzqPy8`J`P65Kuv5$QVAbDpF~`iJ*ty8N#goHVH~Q*W zZC=|oFKEh_NLKl8JXk7mQ@sE`I7Sbs$^w}&k}|>pX(*Z>)x%lBIKgaJL0^VW-R2mQ z&i(LRJ7#;DwgQGKuw?H{?+7B#1rjgOj~ujlbSSh3xUIVkX&#I{X62D6{o2sU031B_ zbGegt?f<#YeVS-idwAp`TF(VI4GBvj*pMP(a2I-?TB(pH_K*EYaUuR(7Nspr{Amw^Th^gr2uL)zV-T%I;_9Di0s5 z0NaCw8ej$luF_T7X$mP!5KM+)B$CjAqNO}H{}v|Sgn!`#yX5msN!f|MpV*J^{hwui ze&7F(aW+l~QdP~wr4i2y=ln`y9iY7o6EX~P+?iG*N^qa>o99DLa|Dof5K~2YqmXu_ z+2%X`i?3L+uR_rp=g68VgpkYl?X+j~$*3ylUm+Vuzay<*Gw9L*I;)40FVqK#U?wwyUtt{&(Mq6Z6r?8%h?0-$vm3FtM% zj}0Sl*4Tbr#o7DXkstSr(eLBs6}nHZE%}>Us-6egS-2?#aijP zI!#J4_~h<<9lrqg3DpI%8Jz7PXZc(f?n&+Qa#+C zQYlvO(5p5B&=>h0EE^zk1#b{tj4zY(CdIpSBa3%tj;KuU3Y~)3CYooP9F@V&U*kWMl0)9S5o_PP zC&hq6z_oW_Jkn7EMqIyCvHp>x(~nZx#$XHJqo~0l1`o zWh6ZvVlFnHA@7##&C4M)94;?nHsv>oYi&Dmzs$k-M0Qh4`mFq=gj0;y>wFAr`&~Hs zg2$St@Jy^MC%E9Ku^ zFVQ_=3BCFpe*+X8*qKJ?vhv>oI4Un90nn(x-wyO!`-cMzh%I|M=liX@DSEeq_$0h&pLHJd zmBaKHfK`71^C(GN7>S~oH1hti8uE6VkO^EPnyw&DJOdOe+=Im=pn#%G{wgQs-rC6i z>~CXJ>jP7OUIgFzn@zzzk+WI}I<0lZy7r^>fkD9Z#9JdFXt(N7GE1nCFoASxr86LT zJ(7AhA>=H6yKiv$p!mLmFd1S0LmkoV=i{F%U+-I6?J$hWa(ctzBea}foB}-P5tzGY z2h`9H^|$v1OYMaTF@P&Q*Td~t!jZHhASVDhQNV92?1P6dKsJsTftJJm$FXCxU$yFI z{!NbBL?3(>JpPSTPC2Knx;}8Em&8?gTgC4amYNg%R}3nkoyd~S0>-T*pp;Il66{;L zm`m`OtXsQsSu#0ZPyI!Yp?oGSgnL>X^Vdi3qFk9m1?JKI=abL{`plIMa1E;x77|ns zr=NTd@Rq2@&=+N0^n5oXo@ol)ARQ}J5JI$o*Cns^t@sJ%F<@7 za7)%UfCeCzfJR-Vuz;DZ#GqPuZCh?-lV>d1-B5HIKZUjKx`Nby?#DCUq~-Dj6F)_d z;ici~!HT`=91u%g5gZ6fj-na^x>!~k6>|k!>3>9TlH~|B&$N>g(Sifah^_OdPGTtp zl?(CxVGNqHO36xj)d0i@OH&WlAGqk6XH4jL_dKNa?kE|*=2I)71DlE&>b!n@jzO;4 zrNX}U=V1_J;QchChBANxT~+aGQ#kdEoEM%k*V-b6#KE|v&*UxNTRqs`33`o0ly;I_ z&{Tef0Og@t>Wi11D6!Q3Iz%m((I1)6x_Wj*4+CY%L79sO15eoe)fo39*fYj$|_cEi6$+Fy{WJ-s6Ki!Dy z^62f->OXV5)@SSrBqrMU)bm-Mp+zUpF~X@Vp&b=KqF4qH9XS^5Y?jbXc4{qZO^@s1 ztRNMDurVnD*qx`!se7^3^0CyYA*qmZ)uD^H(QM z`j{+>tu26C#E{^`uMOq~a@5aKO=8bb{wHWp56<&(;sbzgA@Ak>+7bqa<3zM`uXTHp z9<6Vr1EOPHR%+6M^=jiHZG=mlnikt2!_HgGbf~B6Mis!soDuHeE729(bT{ zcDzz|cY=N^52$~*I^LuMCVWB`hE@Y;SNO=Cs%U3*77&-sVh9jae;HMORXIJ&O5E2o z!*8$F8f;C8_h8*#wzrf#Mhrh6XjsfKYy6paTQz;FE$ceWLGhGpbIAwNR-Q?pg$Yt@ zxo;Ow+i_GtXHqN5^PEc>4Nfjp=2ITzx?g&M$FnLa*c-fPY;`qR9EZCs@KY5?Dx^QVSB$l{irL zUl~eAqZr2ztmmnwy{1Ko8&U|Akz}y55l2U6$k=SHhMR{-X0dy{mcgk=g`M# zKdrHYYkZ8|-vA3}tYNY$zaW-jRDQZ*PCB=~swbk7St-_Y@ggyInpr5#HY?ScQbGJf ze4oy5XpCG8f#k3-pj?Z93#Y(^WnI5#7cT)-laJq^K0x;~v``NxoPfSlCOL8+u~NNj z0&+A?!Jbs*gwVw>-;yTneOlcvN}a1It4Km24q|FA5*v++Hf$HKTiY(_X0|fdmOBi$ zWZg288RM7vLT~lc{P9awEbTm64>!=iHF~WG6g1){(*%RSkprgwdxg==pC7>8^A&^X7wpF^({q{|HYwMckYriM}Vx~=oB`C4hsPpN0d*j`Lug}dtZ^pU1Y*F*QZiqWH39H% zzUIOCa6{6p{p$$((h4=TZ>{;+%}ofq>JxxG;34C;$Oso821|&U`U49&i(2Z;ATn-{*k@ z64yj0?AIrUI}?ATiCc!p+K7@h{hzAB%@vh0GhHxLL>opwP-cd zSV$2+nT7q7Q80}REW{}ZblEC}pn`f$dU?Z|ve)n*mo&0H5(TS|QEzsr4<-UO)T{5m z&0PJIYTeDS@Z^J`5cxvqpX~=)%$jz{mlO0m5~qb72}AcEx8*%$h1#%_axQRsxgER{ zO66C`DnD@kd#DL10>F4OTw(L$O9L8t)&IxxxX)}ymHXR=tAo_Z$L%4+Zw{~IGMN&B zsRQ2;RK9KXv)uy5A#g6qvbt~?C?`1mX5q?3VvsNx$3dFM0)WglW;GXMyl;BeHlT&Y z?R$|(&8C?HQ?DQ86Nj<`_=!5=hfd`C+dp(#?as~#u~ocB_eV%k63q0>F5RWo1Kc^0 zCA3yJ9WxrA*=E&g2;wXKSXRJny)!=CgMAC*SGZR~n35>iW}`H-#mFzwZ@&N99AY=X zN0DGh5NE*jcP5NeDG^w z53@S^Uf=(;g~JpiY7RZujgBL{n;6=G(P$k5Cp2}2D0&&FT)_PKcLhK`JflR9oMiLa9d6$<_KZ#MQAU|S1d`&w$% zR&A1meXga(n=chx^HK8IS8YWYe8xEV@{JDI$hT(^p@jfEd<_rb05i9Tx=qH^3U3Gi z^`y1Podc=0hfws3SD`t2)Aa<~{{yv|TEtuK(Px>q3v*nzdha4FQp#0IvI%-vUC zSDWS%s_5#+$XH*j)}u0;x~op}@GtZHpGDYtsN9*UiJQVufTZx_zfv-0pg9v#Spl%S z(`ZHyp7{kW?7@yDpuDeO`~Ht;OddYe zbjWR1aJpm=I^$OLYnIS2>{`@cAz)m}qV|d7PM&pQj`VlZO(_ruC3A%sJ^QFTb+m8) zX7roNshDerfhn${uH6p9MOl_Lp7Z=N@OzcGtT{}{S0&(}vUeN&R~!f%!3v!L&lH}T z#ALMFmb*R}cVn>^OO<4Ex%g(tsCkzu=sa20gfy$SrwN!beQegT?Eq$2@F_@{*>hAj zGNIYkZ)aGaKF*A_bMznOT<)U|bRx3_5R+QpF5mQ-7z`Nko<0qK~QECJK!b71~<`41N8VXSOAy1T24CURyujIRKpV8W!}iD>F()m1+fCKnZ&#^?;fX{KE*dV1Mv&jt zAJ^9CecfXK2+0aaBLr8vpbwelJNBV)$3-7y5s=pCWBJV_`LHW*tIbc&0-IO7RmHwI z-Z!i+M4`D>;IohKMEka61XEd^F8WNQT6pS1VXM(<+{4uj@zD4#4U{fCvchn=h7X+O zM`%A0@MC;MNwSgvRm*6Ue<1PrOc02qZ+r0ryow$rxLR^*%>Pk7`t0L9(e5i5K~q+% zispv)q&NPilWWez<<=*Uw0tje`wBEy6B)Zkd9KlL$Cbyo;7HgXDUYjXKm~W3%(M%3 z4Yz>kh#IoL^P>k_UqOv3h-c>OD4ag#aYFN6HF~SV09sTI8y7J(2@1`~1m) zH*F8Lpdu0ViWr{pkGi*5OVjPIDlg}b@ed3Y2ma)T91I&hR{-N3W)d)20}dYieSh9P zDDth;AIfpZ#e6K{CAAm|`_YQ>q)I#12yaw#fd|;YS-|146VW%3%aq#l0~>{Nox(w( zoFmK1?@|mnC-mE@s{Y*|jFNnFAy2g2byzj*^+lu($^MN(y^Bq4Rz-Y*ljmxb{(IB0 zXOMIoF{s=)wd1|tuu7I%rs@mb^w|MWbbMdP-+RmF-r&%Y1Nm6sHo!%ZB%&C?fQ9yez&jZ{mw4)W+Vd=>zYv#&g7osivAK~vC8{~yFrgPV#?O~i?LVRg4k?wdP-%KD2(%bH7G^6; zt{U8?2q<}wV+|$|8Zs=DOpdT^k<^N+@0r#W`-bnMwC2WAW71^bc0`2C8Rex-{$`TH zayTl$<=Ted>#^CaMgoz;BkcFE<$g+Ka40db3k%W8WeHUUyDV5&9f$M*MLcVqK-K4V zBj+1ULvQyI`cpS9KShT+!ROl2WX}ufT=3p(!(vKU4M`+c+n|Q$%Y;o zOeJps%6+g;2muvDYu!fwi}l3dEGFgzl$gOn+hFmp^9^~x3i;-t z@lEaVMlk~Iwk(c5F_zS&zmQ^IMWI?IiDO2Qbm8a>j&J>Cg;M~g_Y_3Z+2~^DlQ{vB z^tX=wJV4jGmO!Q2! zYlW2WhZyDD8M!0{)zW=!CbHU6o7rl;F6>9SkY%xG$|(%edUU$0Ym#LPuV!1HBTt+h z3*vomJR{21mxq6TaOag;&C4Iy7Fl2f>;de1{ff=A0$T|NIbJJ3Gi)T~QP>Nw zmQEzmS8077B`sivRI;HxGo-c9gMGfZ<>08R^y)|d`QT`&h8kaodqpj>-I2DLa`^OH z?QugCQ$M6iJMxDc!d1%1RyFVz-Na*oxfx*shK}5^5j{G2Up3h?uiFPzrz{}{cFiW*`~?exZ%K$v9&;WZpISz-RR z<-m~m#p9gwn^nz$0Q<%a9oHPHc!A1ccUsuU@qM4Z3*eN%i|L9MOJWa^B0xz3)Hwgq z{m5xuzN43-8D(@#z0kZ?-{w2iu$2h*g7uvA;sP+%MMAA#@=NLFKBAwmNS+aYDiHeN zyf9&BH&rIQB$gM7_8mEiP?$&gzCTmW?|e7$=_*CIS4(Nj)5JeSwz@Ff@PTV0kNnH& z@s>tsoLQ=DOZ)fL?alU1b7>c#_P)ML6452>eExmE7;VB%iG0rv=DG!xP!Z^&AgT@U zJvJ)8$Anr7QpBd87`tuYFQbn}z%wLXIy(R=x432RsJs8s*EKxKW|89*46Z`t4p^o3-q^{6!R6UH0*H+NmKBQqNn{YtDdB zXrPfOJtoR3IgM3uQzkFJ;RUkp$N7fVIL{Pp_ui4*$L-~z8M#eudKv%B?qTXI^489$ z%wJ4$Bae^bEHG|JQ9|5-i7Rm3<(q~WxbJ5CQyaYHNP)gJ9LdZXQxZfaKS9kGBM9{M z9q%)v=wklxb+3TmNRm&|2`w+nBRFpvYwpZuIbjn?U6D723{D!+tixk}xN#ooTPa!R zeSgg=L=>%x0M}QfnzB-Qlt<`^^8YOZln4u>v@3PJuY{oAn2@gxL7kS7M0ul6fA<2B z3O7loQOxZhB2!&xzt|$*)h)ksOnRP~dSv!zIqmzO?iYHOBMb9Y*IyCN?NYn`n7xCS zzn{8dt{SIY`#tc&bCyt`DI#Q7ePu$XI!Rcpf%6SP8kV6g6$UBUnE zHTPyUI*d4*WCb@y6JJljlblDI)myPWpP|{*aX6BuF-LP4U~gflz%N3*QLYV1f?tcy zQ9{^{#HeOUMlgtg^4;pt&;6*iP9j^uV);P1bJg)Oi;X$s&TOU=Hj5NBS2A&%;@SF6 zbiW-%n65hBa{J17a&cT9pYqex%}JRCMJ2~pDnZu~3oLU}#EMVJLl+an`}f6(ln3Wq z`qTRQ>ZrVDh1;k080_=E>#JboV(g`-6kdP8>`%&%Ic^!tjyhyH&L*yD&Q(p^o{?RZ z?Ansy)0ZS)8B%Bk?qG_e8L$D{vCixdsq&Ui&m>SVJ~hXqTVvF@CsJ#WK5QRw4#4=7 zxqvg8?HoDE=$}C*J9kB+K50EU(*(?)e`h^aR#eIYYMw{7bkySM$VProTS8ArBYk|Y zSwyV|3@7$BlEN7-cXnUFdGDrw>i37CYbm9H><86VP2{(=6&2k zIPBHMYp)c_)^u-4M)YAJ;!}nQw1xyI`gX~dGq7(0)?NN!+LSA$}fdQ^X5ni{dqSgVL#bQ z>f)FW%`1B>tET=_$(p#4zqga`e3+w- ztc{BqGZh7C4c+Fi)CS5>>7l^rznrbV2g%lv$XVh|QI# zM;CSdT%w$Qb_;oo0~!J_Z{x)0OZqs{$g#^h0$uc1p!)`w-wiNMz1W$q>Q&5Bj&9OK z4_27zFEh(i{%v4ev^v(b(LyL?Q#0Fg0tDgf!1dV1XHSLDEl z@=b|zDh139cGXa6@p*CQ&4(qEr&1_OcgHR+``-Nfl*--qJPQ-!VY4(Umdy2{NIrOpC~Gp3M1AT} zEUkrmEYqs{%|Tp*Q4N`1+F0L5(XPN7O)gp|Byt45C)G*NB-frhi}FEnqi2~gKI`pl0(Tv(1h9Oy2jR-gX!E+&%?T?#`;K*6|G3H44rW7uH#F<+2 zSy^nvB~U)2Mv9^O$tmhDo=^-i%%yF(lC5{qW!9i-1J>+oMk}Y)y61j( zyRyH0qxl+w>D=u`x_HqV`S#F*Sk@VP^U~Ll`cWab?^MZR?#R@a=Jmq0`O1f?$Y_Q( z|I&+~?l=LFXI>pwWA+0r3+6N!otXDl=B{#5i=@@-`cY_Rndu z_iNQGjoPb$Uf(-ZxV)8fo8FyS8fkea2=z#aG5+OEQ8DPGUlMv_mz^*;?A7T1@Ggk_ zc05CB-6Cqg!D(?Fi#On{cL2%q^$(c8r zdP0wg{kDT~(K%125kItLq4u8GO7j<0WZQ`KjMPgQj-p?``F zC1Re{BtJE&Y123IFseHdiBqIMT?Q%+EF)Z77Q5e=;QleCEOv(>mYIODT$O1H%%Dj1 zVxw8Ri7h*7uF>CI=G}|I*dMNkhX?lBQcxeV4jT|w~BV`WA z-uv$T^0EJ;Ut6^gK0(*8sY9>+VOJnQ26iso18F#|rf?pPeQM$l_vICt>J@mBurBtW z0Q`kr;gTQLY6G@E&B-TjW|cD}X~!|`J8@)H_H&S_)jOd~k#$}F*zafEEYU2))W8U< z)7)*%KM1@MM#rGDnvV?CKI zJ7xEp@nx~V1XVtG>unTBgFUpTuj&D;N}gg#a2X{`5x5u{3KS9vczc7&Ramu|8SQzs z^6w58iG$xZpS8CxY@{X26J^+FAid~g^!R7qT76?%>AI-@2}EH)mMK6d$9Y8U!l(OtAW0}47qn-A+c6?7W#qqM_F>*W2W=_nO`*PA;%&o zOH%mcS_w_(GaS%s9LLlh*IZuQeNga7DE{Gf?&J7*^*1werj{i18|ig+f*;Oa{Wr#| z3W6&_v&s9o#V|6*ypW?Hw7#@u~+A}xD=$80=n&nlm zl^FBV5bM03Vu`u=!_%tHIiuIuh4)#MNd3(whPfob)Ei49Nj1N5ETJNM7mtN_i@iZl z1gwFSl4&K)5YEhWm6=m?N(4VKY$6<C(RSeg1eB-gt7poaA`3{$HvE}FQlpCAzjq(tD1IZF| zLD$c?$bGO#`~m#Q=9x2vH)B~nja%IrkR7fC;H$oZW>lAoR7{dG0egf3_TXu=4)6{o z_|+Y+V-w(%a67vqu5#n z2mIuhb*ebtX9|{6G{g#Vv8;d`z`JM8sFy!?qrERbc&x?2cLsWmJuHcwPF2g9M(QXkGNIy;YT#>#kA>oO`59fRef=$!$i35E&X_mb-JzKBU zTvlXa7cxa}o0Wm#-8ft@frLyfk*0g()-`Z;qozJMa;rTR0!%GK<`G29Z)RblYXo~d?0 zgWdcA@L!Dj19Y+)qVgSzC!a|fo-bBBC_ktP%25d61*53P&H+&Zo|mp%Yf9IkCM)kY zJwNr>jUIbyG=j$QM%MbeGaYH&B53=ej`qoHRMh!8L78R0-^hvhjbQ}gHhvi~WPi*Y z+-`lN=6;ac<=u!l(TkJ0pTy<%Kut{C&&P4f=AwI+rSn9ZsHp4Av(kCZPs?J%)PAF^ zsR-tx67DzRr2?vOGiua6dtPb0;k*)uCK(y_badWCMk8 zhl(NY0l}ev_-j?G^I8VWP@H5O{e*ypthV_{8@-ccXQz>>7X=9nW!@JA?qHM)T^70X zHM@WDURiBZ-+nU9h>#BL%wkXM;du|R8P%Vlum?@FvB{nn3}$t@ANYCaHPfE}!+uTE zdd>yVN16%$5r^6OZp8sV>DadTmV>&#zwyGVM)&Lk77f;JwEUnF%;Zf6Ljsn@gQYOx zBv>u14Pr(WSXjfc*RakU;0**G12DyYR+IeeNc{d@acr>K$*d-Me`5IZ|DOfUxp!e3 zkM?ie{yccFkip^nCUHP`j--B0?*|M6QuJ*j%k$bnsU1>IRoH134;U^?6= z6%<;&Ea9n=A^nY8!*FY0yR{wd>9JL&~<4j3zQ*`g=DRHTx#j?0NaW0WU z%=r(U(2QEA^snX=M!=1gyI&Q;HaUQuqB#vQYrMwTdk5tBeqCs29Oe7#d-GOV%sS5j zTU|1XfkKhJe#J6q6DuJm=vyPPTnn(IX0Q;BYM2){VRWYUIcGw2cKFVMQo}$CHhFEssJK% zz)}nsxAM|yDm)6{YBl$}FQK|YF1}S`G&XawzB|i+8Z*r^+82eXx>W8atKaWVl>?D< zjp?Qfmkemj2Pfg0y*<5u4hgimjzsvzE<;>Cl*Y@N{q3fmQ-)lX^KBUx4u2#WM?1k| zE?eF`M=i^4KiQNU96jbaCHlU`z>NAD!@!8JM);HPBzt%BA@isrDn*#No<_uF7R^FI z+Pz%UMJbox_t!z8ZJ24se9E%xwq}sOe%+KSq{}5V%&2%fMX!7^)>C(XS={d#Zp`%J zB#F8bk$w)L2YX)Ao5$Kkt?u$=nx(v!sxh;?dt^HI1i6)F;u<0HVUF2fg*lwR)q5j? zE>vi5;do^1G|bApO<;(8N)%hGcRq!G&_;XdrFQ*idYoPpjTL=`yozpWLT0ekov4Dw zv8L-|mpIi=Q|j9WYszH~B{+2x{RCIe;!2|<@6nC%%+%fZZe>wq{^$)2YK_H)K^2;T zdMbj2e!aTJ$x!b?1a6TgtKSJW+7`3NKBDz$x?x15$Sv>ghu<%(+c|H9bE#!Vni#V@ z`M~Tj&FxwJ**6Ph9%1d@55vI-fvFCBM_Mb*UoFv)LgE4}lQA~g-gDQw7w{r*%U3b} z!Eu!2qpmbS_v1W<{4jGfpEyq7cP$C1YI)mr`*Zi%<8dc05oxlU3`z`%#)UUE|7pIb zdriV*R(4Qh%~~&i`2I{jSb#R_j>1{c_E(h~F-(#8O;_30)^BAoj4{Eoo{(+&|6k%} z_RDJL?u$p$kQB)bOzMUGoCnlR)fv`B;d*xh58UAzPs(DsM;wx7o8KonJscOXwz~)t zP*Zfc2PPIj(+!>yh^CuU-hKYui_Q6vA|)UD|1JRLgv+e6#+Ve;_9#i}^|g{zWk)(q@91uED@=s&xZZY@OrE9W}HEjdM=oeX5s8w#HNW64ceCJqZVvS zIKqQoj>&N*D4$~BitX)kousjVl?sMXr9v}7?-<-^c#b5I%J2RdhBWCgF+IGbJg>DJMrC7XOL?<{mUJ~u`* zRjv1ny|8!BUVQ&HWP$61-ESl=!$@rEYM6M-ij)h&_B`MQWqxZrb#n2d2X1kIB$M_H z!LC?TlOy0 zMjgS(Ip+2_CoUg<#1^)>EcO~ttDW^sh!IcPzR`THdRC5g%38pms#`DF=9a z=MNyN|9l=9@|o$?lw|{{kDqn9Yd(KhcRGs}a4>sT=M(bl-Q$){koXk`xDuaGS1Y|W z@IMnairPYkeaj44p!!1dL28j-AwlSD+p-_zhNCXZW%A63xUsxPB*$L&T20&*9pOoP znuBB3iOL?kLWt^}5B1xbz^=-ps_0MIZIjc40+KuhBuOv7J!Rd^zD%tkJfl~R2d(#+ zpcfyBQF(v58+ETTi`pBEF&Vu^53({Vqb%X%Vt~q+Wsym_^Y<58%$-w zW0Sw>@RdhCSTnB}3W%+F5owg+bsX;~)7r@WIjgu6Byh#(e+r|u=KGK1cG ztxDj%yF{m^U+sJ*q7K7yIkSs5;h3a_P93kbFs17FU3vjDX^x<=zGIfhO#Xlw90K0d zWDcmqjlG)(Z9#VLfJY0BY6G55Z?p(kE%XH+p4df^K6{j-h0by-;%HvB#(iVi81PPS z6x@x94K>$Dc0AwKTvv7nGo_kQ7OP|t33?KB(h!(C{G(ST_6?1kcLhct;r?-3dK(c& zrST{e?>K|Cv^+Z3p)7*ShSqhzp`mZ=Fs z_TX}=(d0KeeMm!9*P8jH#&E9jW#ZlSGiES-9QeyXMz6~ETCQ7PGl&A8Z=N*jTCn; zT%7-Y=n8(l^sMHEBTc3uynd<>_tD)pugF1uFQ11I*tz#Ioq0Fw>uHx2T%L(q?YTK`Dk%nwe%g>O<#Q7}gSe3T zmj}@n?%S_>70V*Vg+hx9k&2$($#f&HQysm)@s~ZaQ9C`JBa++eYBL==i$7;6&euCAyoYogd=je_7-Fa%UhY zfDKcUcGW4#hs8^`oQihr>~(I5N1Dgi_0n7!q6+T5`8D?|3ai?$4^Th%Q&GX^TQc{< zJ9Ms8jnpmfyk1S5v0bOO$nNFj6vaAw_JM4}(NiKQ*EOj>{sphzZ3M?ubowq+uW_LR z6k4F~B(HN{`w~2pVc`ys$MQZfVv5I?g`N+Mi!EANKa+0v(0EuOF;`fR&dDKMdV&3s zCU?0PHpwX@%l%nRN9IE|E>Jq-Qug)(pTi?}n2GP%DaF+SNX8quoVV0ZP4mJ|{)xX7 zs*!k;jA9`-z6(?9hI(nb4AJt_kCnWuD&v6%CPp87FT&^THBN zkcb}WZ_ennD@>x9@1{9w80HDN^iDHp5$tl`>>CX0GOV@I9g!Zjp)jOb(A3vMxPCPOB0+O?MkPrUuAhF0*$xt9O!05M`$dyZNHmk zh%M=2;BVc}UQjLLM+)=-uG5ubTb96spGofiD(@U}7JjUW5v69RyxEJ7 zjlL!2EHRZ-5~;6<@BV9BP^GqeeWNw~d60t@Xmg`LRd8#gU? z+3V)X_8lr7h$Q}9WPz4m4e%r;u4UcLD|Q80TNVd{hl(kB>ZG5I6n%`_xixYGaOu7o zvZ#!JqC`XZyJ>R%xSBXa_&GpE5f{%^O$7U>zto&dezX6fljA=P#}7(CLlaMPXnJTc5cDO3?`Wn`=__YYLX(3m*}eBRvD~R=vJJ7IgX^Zt6XdQ$R@gIUPOhC91#(Z&(S3$<8E1JkbHouGbaw3M3@ zI}5m<`=rvwMx9(*?FDusWybkCOIp$?W#1sd^B;IWJK%{FpICMSDTu{@$=*?+Jru<# zchi+855P|-ph&GJpV$}9L$ zRHULPLT0oOlO<6Y%-E%}C6ugLD@J9{GDry_WMm!6zD@RR#`mcA`}6($uJ1p;>*~5R z%QmFDBH2a zGaF287pSaznm|&>a7ZU&Ojtj$8-~5kn4(Te6D0uXJSh=z_ zH_dv`EnwhJBdRqEWy8QlM`kDN)sdQv!Q6gV9y7^v=o<0-G2hrz9?BVw;X z2M7CiX%kMD)N=VA>JIJ?4<+#Jkbchqc^9pHWY!%{e6zaV)#LYuH8;-$BK-%X_ zZF#jp39EAveF%B7CM)By=(dx>H!B7#C`Vy$cZqiThDQ#c zO-1cjW?rO!*t4CnE-eT_LBup)sCfB0rgf5NQ3d$v)xO#HpG%?$A^kzdxRJ16cGaMU zaTwYR4S4ZxMSH=;w9UH^R>>qt;rJm?sCjq;i$jy#3lyz=X`MyKI2Ds%)d*tCL?BHe z#fGPWZQEfF#C6o!0Ooa#?!*8!NOGr z7k#-!ZBQAnk0B8+T6npaKke*F=p+SmXUPrtX7@92i_+jJwAZIoV)`|C*z|c9T*-2H zl0d>S0c~1{ZHiPn;o8a7pC1%auxo|mn~>eZMG+u$3EU^}y!kbsd4u_fSBY*|yI0X&2Km~_lB|(G{l5|A%JBmft+ItPe06X8OGrE?9{HjC zIPNg+L41hk#TFK$%C*x;xvS;-6PT>&c`qreL_TLo?Ge=e9+!u}^n9l5?4vGKKGKb} zpz3yV%8f?z9#NLS^reb!i37`_Cm)M!M6|5O^K_65_}#XIZvRk&1pnB%TDX=FMPT*q%fLAasrHy@DNjHaYx_{XN@QwiwS?pBtd)7vOUB~g0c)9^$)FXJ zw$})@rIj+}CD$Vxc3D(VEy+w_FvO1xcs;ZxxeuBdSGUXPr-^{V7_3ENs1i+=*b1>7WZCqsop12g zc0LUj&L61-IC;>LQ?y!%e(Mg(gN#z|A0`V$XmqsSqk<4E2#FBbZ8Q3Gg-%tQ(W7CR1XhuJb!j^vPwCcfos`61TouhdPx&Fv2s5BXbs*+OgQ5<9VP{v zCk&z`R6gqiyP!vH^=y@w&HSM*lbCF~2w`HK-0ZDj_R{-khy&3nR_0-6Z$l4!b4on2 z;TOX*yEi!(*^HK$+b%amAS;m}TH$Zgg;sb#S88o54Ac7A@Vbq!rwR!o7oPL(?o8)j z*DQ2KE8*7v4E?ReAQvYMp5(`KX-cp4n_or6l+}|$l5tdSeB~q`Vdnyq~3# z7SW-Pv=aFi8%HuQKPkBV=1Y?nR2gz1Roazx*q}4bV8z9-xTF9#@_-+S+n4IMmXX@h zWj=f?>(lWo4HPV?a>`*mKR)nT(zOwvfDIw~eMrgG?FEj3r$_QIxw&-k+fMe4rUl#bVd?S(eZ#R+Ui)`JS#XEJ z-Q?QC@x?S{_1;g2M(FqxNmZL=q!fATs>3qXri(V8AT|bD=%O3Z^m$PAL(EPKazWry z5mH0snM_fVesAyxaTH~oFuCYb^oYsl=l&_U=*)9gy*y2NJ!8*Yx((yRGUhw2#gmFP zhL%v(po+c-V2L7G9OI7)B1wP0@Q%rdK6Sn8RsXo1h2TtWy@9>dXV8eU?a+l0)!=ZYH^LTtsow56Z?+T2gho<=54 z5l42*0%8PcVDsC*I-!zP#Bc%eDhz!gqx`GW7$_?t5|_BqJ26_2(RSy1psQTz*qb#m z7~0jauRB5S%#|A+opu>C>i5kxf*%q$22+}UH_%iruY>&D`JyxeT%Xr3o=iBw3c zM))FT<{>-DI#Futm@Rmj&OmPi@jYI4gzxg(d=?$v#~l{&r~H{yZ#Q1eF{;{>k^j`a z4?yUl^hueGsRu^QdUbV=hVms(-FaBPplh-JzMo89wn8+I*+9$(`K$`t&~XE_hz|RN zQ^&V<>Fm?$yBkv_DbSCaZmo3#i9bJZJsGLg+sk!>6HnfSH-jDPoHAGkST7#S)YGB9 z35aay3VF85UvF@V(O*~H<7KqMOq!(XqXPWpMvhBX+q%R-7GJ`wJMDfcJB*AK$uaF2 zEXK0Q&+nMnKede2D&~h+ zMcIy2A#2F)^0VxjEC`GJvs(BK#=no2({C9tTo!vR!0FFirDiWN8?&!v*sygk)ajit zHz(vI<4s})7LxR~BDRbw&h_l;-6@#7!fuQlDY2l|Xnb>WQob!e16ix;QO4G!^8fk0C%a06PG zlo*h>W!SS7;fhit?AoWFU-iin0?+RHtuMgm8HLO5y+(@prs(@kREK{D zTd)V(f%fcoIh2drh8EG>)?X=`dY1D05|0L%#s|fJbl;VrV-3ByDsQbeHW)=b0tXkb zIkV(aQx6foxD>7(g^@)$ocWH9JA9&~}K3Ky(8A?(53S(rV*P!sn?i%Y}t`DnT%H)Hs ztf@fWE41douWk=2yI-4*;btSdg3I^>GU%=>mi@R$*ipOPqr1fJ%7JScxCwdtrv~YB zWlHF172B!+zVF@o>wZ6Wsb-Xc8J>$~#J8T!OPCc+39@xJfQr;eoCTr3{XB<2m6+RS zUE43Y?qZu7Ve|1_8hvOC1MyS#6~^BNmMV9d1RW3$zhYM{v6KNCh6Rm+oZVuz=|)_s zNxoWwEo&-8_^t7&oiXN-e9@!Wrt8Xg*wEh-)L`3gKdQk($p@B%AhOZxqnG)}Qc_zI zmyUUCpVe%z{DDcTxS6$A?~v8&4kW7#ow->6IRJvpK9L*OKz&WX9yamOm}#fS){^DE3;6`E_*H zm;2xkhJnFnRn#C?SlBXU)3*(7f05M}=vJSeMcrf?Q;n#Vtlm&3l8)%JTA#e`7=3sm zv%dfzF%-v(oD}l@E=#4{&0<619ex;g@sqy0F?!&{+AliO_CFQDX@7cJd(_a{lTZZ=b45J#3>JuX8cHer8e0wvrb_gPlah( z3`SMjiDJhp5LLYmEvh3#o|W)iyN_pCLM4sOOa;N1@aPchd$-x6ckbz!^L)(K>Uhw` z5<3iiTtxB4*pHMr(Z!a!D_=(EQzoeRpRuV%Vx~n_`!WoT@r~#F1t%GzKS^Rmv4pxR zQeRrbmi6u3%sroq3y_7Ri-~K|`U=*c>k5Ll#rMFqQZjiL+|8dC=k@)Jh8Zn(AwptO zKb=h!yZYOu;DK3VN0^ZJw?$}30Z#IiPQ2x-jHlj00`b(O6iY|ELs*#Z z?b`{@D{@QrsxLR!pE<&c7d64KFMSZ&pu#pTyt!*p`Kt?WSJ>MS*$^+altn7ol%;RP z8(#8fnq=7fB~P}C^kxlN!nrbTt_|%8S~k~X*q`loa1#?{T+Lo0kyfVq74;gQR-|L9 z!W=U{XR+Uau0zjS%4!)%o?c~z$e8tj+?_1-7YD`tWtLfD-}3^TVJpd^Wbyp54ca9+ z$=QMsK|xE=?sY7)ZK4So*Rche*<>~=2jjuct3*no=cQKcHwCAmymUW8(YuvJlp|5} z_h3fpG|szf-Sbq`jo%^YyY9dHO?&-erXN-N6tDjReNu+Nu|EF-vHca!{!~V(#D8UY zZ>3zi!|_$$_h(cWW_$j=hZ`*RzNaFZF4(3zq}avNPTnRt4lb8(u*QeOx9d!{fw$u7 za7vb8o&I%UkX1u*$ljm7jioBYj`XZADDdh76M=K0NBo%u8V_Q(l}70zR&l?cQ6!#l zt5X;>n&Cn)UfyKTV!T47;n%g8Uc|inqswu`tcOmZ;R;#+ zqE$IqdMZ&yl;RZkdG*1G5&BUf(T&Afp?8L*Fs>1@JUKE@%rvn~1XnQs4J7;ecUI*& ztGZ+unr|LYI#Kp!<(7&H8djRmmc7ikR)oGj)4R=6I%mK)`m``H$1o$$?&a>efHonh zSFdEK$)u9J*(IxMID~|w*4zA&#$~?WMd%5RC$_y}HI9`sX5Y5O@iM6l9&H+QWRI8W zriVL^$(nI7FFfFG9&@iEy%W?qne|R3dyY4Xt zS^VTxyyfw#T--ViyQ((qiXOBqC>66)I6|g94dv_Ki&dxzY%Uktxc2cj%{C}vGxv%! zM6pN?kyuwXT3m+mAfPTU1nG7QfiMcrTXtOa?X*ze?C9MjpRLMv&39qYpTaI6WT0MMn1_YtrKG3NY#cZA_y^WeEAN1BRsa@X?%&G<)iUs+vx5mJakXpewu^TL&i+I{+UtREr{Yl zF^LJ%VdKjp(Hyo@rHP;bDeye_dFl1U!Vk)Wk`<1DHLL&p-eN+)1WXeb8eKk^?DYb) zrB^!i`Kpim9fvXCD<4-#gyTrOM&yS~{sBcZJJk0NqvC3>$@On;ESDn+)O;7}jwCIf z)T)&!?sB2_-gyRBg(S-`M^z;n`7@TD-t0}OBh))?QY*DAprkoH+`auD+Ir6JA9GDd za9(G*!Vfl|Ecf(O%)+)EH1?FPGd}RjQUo8wS!K-ZfWMS66C%v9wmNeq)=>NlbOmeA zy5%TxtRGh}ON4{iAGA$Ix23nCT!-PH;bsAm2ag;y?ckqM6U6qv|2IqIbNXu>GqXUJ z4@b7BNe6%7Y5w<(wfM39cJk(5DNl8gQKp!`?0{bNx-Mmy3Eijn{SQQd%;F_=U9 z^8T}f7wP`3?-QFfYSNeLs_O7uzCAJY;@9D;m$+~3cYU6I3+&Yanv@$M7=5+}4JTyK zDFX~|81$hG>r@<{Sz`ae2;pH%l8so=7wVf4Yudi?;mSexG>_Shd|alzaT=0sS=p8~ zV}uihnwf@K?j*|;6Xrw*H1^-VxHkqA2?oQAhfi!c^0sZH3xiN_`UB0i;w(%6Vlkn3 z`hN{1a6%=XQNQOTT*klo0vM%aZym$-&p>A{i<}mw>$)sPJMl2#z&57;%qZp0k(4;+c@cx z+48?$GZL(s?cneejBJoHTsU)3h>8LWUbp(NSz;L*uF~pR&oDPfP0!0FsW380ux!L~ zfX~L{a-fK5qD=9txd$gLAm(#lb94AfAD?ZskLbqF1yi5>o#K8%TN;HFe(SULC5Gus zb)Lc0+%xa)lS4Nr0?ge&`oJ6`PFG8(uG&{qD~Cy1ucO|}3xbt#hiO_s_vv1L=_SSi z%~NUH;~>)#F_dX%yIOa}XM1!)W8vfdaXsvdzpmvaqk3P$%|dyzL^K+wvX#kGG2WzM zdpuF5NNbRA_7ZmV>D_)t{CSiNkEfYg;)_s*xQ~*+IUcfr?T4`h$KhoqF@wgW`DB@* z;}eAFOBj~nBn&;VM+|MOuGAKENM2w{AF{3JUKIGVon-*>cJ}Dr0uNl;c#QkHYl{Y_ zeU7LBU&dZld~Q@=q$~TrB|`=rC@D- zRsRMP?aSC~z%fWYTrA!+F?Sk$A!p}N#EB!r8Ybi^!>xEae>lkW++_ zI^Qy|B_HQumgp0u--QD`ca~V-m8c#QchXf0Y#Xo82IN)9aJOqVmzv3`-J9Wd9@7+l z84rE)ueBpG<>N4m!8B;;XC}cTW^OU}WXeod+exvi*l%OzZa;DPrM^Fzvl+9!0=4-Z zY4888oCW%hNw27mm@$aiZM_`zXeh6=)(WIa(gKRrgI{{ zAnNQ}Q-05)iek0!Wsi7q<#j{(c>v$bucS+ScNQZvETom%33{T_XNA+PD2(tjg?2W1x+!Lt=9~DUN3yiMT0PD`(C>khX9>% zj2}_LPgFik(I9m7-4%09hYS=|$jox$t`wd#+IjUX>jHG% zzU_v@L9{2>kqe@|0$jQN=F6C^+NUzQ?_0ZKeCg12-=I#s1(>;Zkt^7{1mG-oTC9i% z!7bU9tYfyyWLi9V3%o1wl=I_+g}RLiM=Q@!2=5+y@KMNU;?Y#e_YY)6-s6ZbUf7_#`ir20ebjhky4Dsl9sGjW-xKo ztOgCyxjJ~~jL_G{eMF$2Da*=dm`Ve{`krZy!vXmN;T^B-CbP<@J1~MLr+yC zt>Y|AX`o!9?ckO3y$w%P(i<5Hd$ucVtULl3Ns<}nTNQI(Ed3!mN!*K->^wuzzs&i=v85NLUB>QIBscoDP7ArI!pQblL~2YKI)3`Z9qfd~T8eiITJXpa zXgmVkFwOd2V_?QRU4hO~u2kl6|2U!knFn+;bLY>yH`rnE9*I%&G>~#4zkSvSqI%lw z*0}}0Z!(3n-F88i+qwpMdtr)hq4u~^IS1^t6O1x=@!yVIWQ#O6updiOG^^Y?chgI7 z3d9+s-*0h{n2tP;=bJvZ2C@Q7AgcB;$DiGHnFNkq=LPe^cWyauoFO*!2+QRTEsOov z$-7;ArYBciMgtr!&EA3&XXCk#)O|kX@U2_%=b~C%c0+FnNZ&o8}+|5=3}Sy=i?i8L;C5h+feYvLE%73*b#P6q2{qUI+LD1_hAG z5gQG=h8)RIP6+$t%@nAvTJLDBk}P$+>!I=D#o;F0U?x)l{aPU8*?U%07Pw)|Vfdh= z$I&|(wDqY{hQt!iCdrU0aRI)MY9to?8SgA9Gt9AvZeMSaRKDTHj5Fx;=!#irrAqY% zEumd{UX$a@JN-0zQ{bpQM?9k{9Q@4e(&Dxc`iJg?Q~8uaqA!Wa3LFA+bGI8vXy_V~ zr-^Ob^DA+VKG{Yrf*IttPrPfzL0c@pW>J?ZYFR~v1kwAy2vIepHO&+!aX68ysVX7I z*jLtjOf$m5sxK1zony;PEz11{Gwdj!ci#dky|tSpNnydux*ucgmo~h2{AN*W4ieWuv?I@s1&s2Y zucm|wVJG~_E@mmi_J35Nsve93ecg?yj+^Ha16Ey1UsrAVAwx0|inE$1_G0spFp-;I z4@!9Gz;*fVve~8RY(mw>xP`%0_&JD9U#si&zME&dyawKW+!G@o9Zfs$Pq%)i%ZjMI z5z1Pnmw>n<{ivTKUh)jmd^h2;jsOp!m+P|Iokm#LpKcd^q1_8 zK_clo->wy9Kbm7pu#V!5e9b*Py81nFXO(#&joiJ3zdC;}%B@3suX! zo)~> zSeH)TVA*xvdZVvH-33wjlWhkcp7mW^-L2ep0SH0r{-6wWTWIF!Th$9aj$WI=VbhDp zkRfB-{z6-cPG0#8@cT3720&pO3&(`DORe{TWOHP!(hHTvPeZOug%AO)J&fB-Df@}k zr@8ujlGZ~2sJ}mhWlk+;i&_b`6rgKR(PPxBp}o@Ixy}bJ*oNceDRitj9C6UHUJ>M` zd)C)Hw`tO)Oo^9}RCZpyT}IP(JTpG3={)DDiK266iJDu-7PWT&$O3(+(B!H<%@rRn zrEUo)o;BI*N4rz;%TexI--1mOuNdmOm#l--d_OBdXKsrY{?a>ZE>vk;C|S9$WgJ&^ z1_T|U^$ki@`&AT43g=dTh)dt{&z)VrA{NDpsl9O|&VLKk>uZ3@`T0j@X6p9me&Td{ zegQji`lQ*rqd+K8*0Ky;`npz>ObBtNT<&hz9@afZPa94&q{yNKsr84NA4Rt#5BE?u z>E7~Anp;tq!+Ze3fekNw_ikVJci)uUbqsgkf3X1iNW9I_wWNHIS~j~Riu22<5^+%j z6|3sNbA74Oh_a_OE#E$o_PA;xS_+u!9j~f#GzgQkgZBygJt-k9_`3yqWr|Bh=L$L! z^;z7WZH!qFksvB-7w>W@&{vcW1$3P_@~zkho>`?v$3#+JwvQ#o*N$@x)W z#k_R&z{uJgix7dfh0}>9Byi;5lY(81i{{ume0$O8=zPFD?TMIzhnW$x=H3X}++=bV zWtQl%a^?pO80r_;^x2uXLuS7>cY>M(AuG2s&lIc%}C%bl|cg0WFo&If!dqfDiawCH- zzwm<7qkaF0E|$${anK1D2X?jtZgaMDMuakJ?TtY0m~9{Z+bl1?9h*0=>bK9}lGr#D{BZB!QjZnJVB_Y~$xS`J|S{d9IkyH)emq7`OKuU7vO_j1b-% zh1_{$-tyl=P1e9@Zk(6|U^yfdh=a2e8CUqti86f)sFk&N^M8(1t9prNBquZcj@V-9 zI@L1xuhfn&vsT>t&!Os?=ifuszUHYnz)L2K!S=Y8F#bWT>XC$yWV?fN-Y8=2`quad zKPw;=$0I~9E(pg&ZaqIsW)Pr_Lfp-_z5ljs?^3;3&s-tl7i;x)5cS^pnTwUtWBYH? z5BAmFZWdXWxC?^(nQeIn?0bT0srVO5`gH3-g;>pB6C$v&$_vV4EfhN(*9 zyY#z)khrF{QEzJH3|&gDmftNig6W$N za<04o5(OTxZ5bNOw28f%eJ~ZVVYI#5?dt>1sHGSk*1$4Lj=+govSV_3LbzjU<1+W1 z@0z+40IJ1@42{zf zt<9Kp(Q4$sy|qh!`;kM9^cC(C1hZ*O!R-%l(I#y(JAo6B&)}#uO!q5D0}f{D;|KuY zvv5POTet?G7S23^H_F+6s6M6Q%T(-K)X0ya?8@9u<7l@zu$E#)81(MF*Cwrl08-?t zI)nNBHBQC{GThj=oka)%Z8OOS=oRj)&1e0++sAvh2R-R@u%+|w{Y5FLC!!{@>0Y^bl43U`Y)md>DBRY_i1qOSRwZv| zj8xh5#Iha%d!oxU{|~PsTSxeX$&&psMu5B79AIfI>r|GZYjTEbuH>hu3qmW0g}-RH zf4vr~qNUiw)BL|m)Q%Yn8AwUYm;kU3PBM(l2F`cS#W#}-FrLG@Unb?zk)6c=Hsmu? z?z-}rX1xc>%P$CB_E)d8dw0HbE~Cuy6*3qF@p#tW`orJ-1Zr12gO*Nce&d(6vfeew z?fcPpn>HpL2zkp6j^ld#X2K2KnrsYF&^IKs`slJfI z6Dcd}^0du%LME7itG?Bp4+j@`>pp{7_<8@_N<}a@8*(2mOU3q7%lVjQyDJY~-Mj)C zmnNYv+&vGQz4!vi;7B*4i_zo$F^$UzVsW#gLLQsI|AyE>2A;lCE=dA;#6h(7>w+w+ z2r+>9`*Zvww1?-c;BS`*0$uP>w^nbr09?T=OfYMFIgRZ8x0nl(A{8cx?hiS~_?@l| z#M|2$gGf&^{zg4KVD51r7)2G?Sfoy2X6wEmN8!Blh~+3VilGj=B9WC8;_!+kUN7$| z0RH988-8v|dCl=85(94#$5*m_C`&q_9Rb$B1VZouMo~3-cVJ*yM{Mir>mLCBJph}A z?WU}}1TaY1bORJ@aPI7*4HA^7@riWjE4hMra|4= zz9Wo!D?X*pt|x|$ZHYogjrzEx-N0Ux<@ytl=XN@_;gqI71)!Y;oq4l4bZ8Xp+qM@9 zR>u~$1chsIik~z1sTI3YKC>edz}PKdz$7=hyT;kTzjb3Vl*|ots(Z8D-9dhU$MfYR z3tnW&VH9gdQN5H#k8NnQp672w`-s-lp07Fq=Ml)m3o-v5$yRS@wf2w#+o9L3IIF9r z@MsLt!4Poh)LZUCRFU$&sRut?T##`-IV-zGF|r=UP{vh0oNI?}BNYM9;W;Us!!)$_ zPS0LL8lSWVNXI^BK6#~nc3S^3{9yT=r$`AyIU*jRp8HsO>clnZy27;~tHu;$_^x;B zeP_x^TZ5Aq&0~ug0Cd%ksyJiV*AoEMYe?d;hxxT28X{-!q5&eaXxki;ib;2|l2LE{rVfK{dpr`87qdUq%MYG2WK<_^Gyz1_0%^yxDN7 zRjoV+_NXPP{t317S4ifmsRttFAJrgyQO4gcb;L^{s~ad5aAJA% z6K5y@*%g}U(sKh`hK~X@Ri$6IWjJBmOf?4({U!b(!zJi%7sh|k_K+N-7W7=>{{w6nB#1jcBjA8QaDZn`D@5B_wcwV|&wKSt0gx4E*Rn&u zZ_N}2>O!y$wFoWfi-Rr*|LAA~s{aH4q5Y>k7ugmUb?>Eic0YKZwJ}jamoIis5`+-# z%hVqcSLO}t`>(LvZ3K|^x9z?$(s#Q~!HL%e1DFLgA)Vc?T-BPl8vnK+7C|Ze?ZIMj zFBa`|2(SzclD#ei$o#@n{hUpQM56wNjSJ;tSQg)_3Rn@}6*ZUWb*a9rF%Ds4!d%Ur zppuW@B4UrJcU120Jcd#d4i;P;(cQ=cp2tfeb-Sl4w+{d1kPvBS0AC{OxLod~U|Rq6 zlApY`_)u{ZI4QkG_6SUVvVEks>H^sf*@1~{4Ys`wRE(&P1SZVE_=B% zbnwZL(BGo}AJWH`QPG{B?^`#iy6>P~{PKY54g&v2%CNz|_2=`s_LTW|kY#SIY&;b; z8kHu&dV=m>@fq;ZXHKQ+8QGp8rOCf47+;H7tGT3Vyz0xwsiwVxdcXO&6sDXqGI;_a zw6p8gHj85A7lp(H$*KS#==Fy}v|xN-I-oQP1&=(*u$lx4?+_~V=l*ap)U}(lFzHpH zjgffc4k^T`bWP8A%*e3#j0d;%`NHd+s`KzdST74Ridvi5NE&?ofWMV=zQjFOne>xu zZN2L&R`~>^zo`bP809Ee3rDg)|WvQI}wI+WyW!{ROE8?=k zf5}W$2#%mCrtU0mOL@74@*y;b!`zAAbCi=G%36s0QeJ}b_6SgLDvASx0K6xJkj4Je z7eI=SC!{$HnFf^{lg4|#7x_K`h)1wGRqPhrtCyH}UPD_lnnlE*4Qt~FVb77pyKv{Q zYe9v4=#Z+v9GQaX?Rq+OMBiRO201k)!>WV4G{ym`?5%hf+(i5~5_f}j`5LLk0Hs-@ zeaL>}IBH+#R3Jo=&jQ-8>V#O3NESK!j~(Z?Z}t&7jQIV9KF2TxJt^{zonwN+X2K4w9U$)=NJwjh0e)$Om8^E9f zmuPPw90BRuY$6mM|G(&P8<41H_dYo`2qQxiK($TSUK5Q{;MIBms{M}(*W2)JVMJm^ zFXw;?=eWO6k>>mmA^<#2eq;t6oXxKQf|A=#mLP2)s%wCq56fGRaCqxTk<2)N6g zYbFP1aZ)Izpqm_z%Xwc5GQWA@$ciKBaD|D z5+XCamwL(`22xj5%;|~O{FqZ)B&lh{JXyi|eFuJCV;w8WO=u3kmf;H@I#%VM7(c`v z|MG7(r!k&vIdl=qg5Ga9G1vLl89qefPpH;eqQW+_umK!C;?)QA#CY!=8!JJGr{MAO zd+{6pAy>wq|NoLJ>HPVmK?_uUBi;_lTEH+W@Ft;eL@nEy9;Zr?66JpsPD?~SzdB$` zn*Adrp7!Hg&T04URDT~ela}-OC{z_|DRiAo@tMJ7H4f~uX|w7>Q<6Vf5i{i*aP2H; zqcR3>6<{a++>5|YfWPY(X6U7e5-zq8*ie@86MSdSVZ&dNg;JgWYb7CICI6iirjav% z@wzeAJ=UJKb|?Sx#t3-PU@O{p_{^NQkDSp<&H6__|xgc zw&M?VSp#o!)P~zP(}#`gAp`h%Yv0Z&J$wU@NGhr2xqaCUs%a+60`-B0yCDZ8Ma`~X zz}eiIxuvx@o{G|>9`lyvYM-F9lB6$sCmS_bY+gBkKI9*D7ln%wN2A$o>|*oi z$jbS#SDlUxClfISVh&FMSu~hgpcdhBceQ#zH{>TbdN`!^o!C!~y&M_Je^L#Eiz zd;tO_6QDu$Us}t*0S;o9#0DFP$)cx&VhiwN^kSA+d*n^V$Dsp5 z(Nd|Z#n2J{)Qn;J^H3nvpm6P7qbcjdBs`=88LLU3jk|%YWtxry_=`tvaY{q5K1>`y}T(xXgHf%qk z#+aPjqNrXFlUnVB`NVfW(hhY=smW;ZYRjKB71)lRhn?{D`!hz%b?l155Oyu^_srtz zofGn8t&q(}a_131y5xd?))hwx|7(pbEbK>0ngQ!a9*%R$g7o6WUb=~Et=D0B(NMvf z(>`}mmKfw~h9CSw4Vw>eKw=|@@Xhr1AaM}LU-QtC+jtrS`tan;fneK9Ku6jZB!V& z4G~a6muiQBLDT2jfULh_ZBQ0^0s9AWon0~p4b(&K#d<21RK0#_@$|uGd-*8igKwm8i;aDwT<8LD;I@GYd@LqH7@c3tO|7 zX!X#KSnMbI@9;Mb`gIFO7Mudfhd{QMzM)_8aemBO=bQNjYcVyMboo(4a`7>igIWX4 z6U6;EP;36TcS+>QbVX5m@d)~rM7|GOZ{^*RBMH1HGXL<4u(`(nO6RQp=rUeEK|L9; z`j}d!oOofMt(Yh9r=j^u1s{~+b=<1&U8^ymHvt_W-J1(#eD*W*Pay|NH(uF;u#acF zjST&25dUO=zFIXVI%8CMVuS+6F)jRC4AoOvFXE|^P<2MjCfdxnrvT81at-Pxxw-2A z37x(}kkhQ;a-rW|ECbEGv=ixcOC{}L3drkM{}qm8xd;S|Xsb+B6_twO2T4_Pp}emS z@@~O=7cnLYwZ2h6q=}t1%Mj01))E0-T~jd}>TN)SnkQ(2noAcHP`0O3e%m#c0|g?p zhW?l2Ur~h6(?$z`Cg)JKL0sZ>z_p_Xt$;ra8RPw8 zSJ+GR)$wrX*+N78YeE&O;4B4CYBMNV9Bj4wE*$yhGUVm4g}rm#BJY35qc>>6A2CQl z1VH>NEg;N~I}9*Sut&o)Cf!azgvKeApyzO_?d z0~V!$(8d21!~%+2#!H=p4DJNv^|oK;BU+VpckzL)rQfUO)FD)t_;I zh=Df>>WC^96K2Ws-b7KWd*`w{f*`M%eu@j3K9#ujX+C&|WTSs?t)~Cwqf<5~O5+U8 zkD7cum~0vTr~m1bSrM;>7(oIUhi6AW;(t#6l?|gCRRJPsJc*@rr0s-cLrOwHSe}Nu z@QlMF(c7o`L@)jp^j5*U8Er(t|H^v3ihAVE@65LMCiA3{*8gaeDZ$V{#R|-hr|dev z71s*D^vEDmwIi|e2)AOqptIu^;?6`lkXb9+$sj9buqAt|i>sdMB1^jg{cU8mI9fvz zn|t1!6eC81=K$8zJ^lJ`y$xaX>j{OoAdi!IG7dT-5~0s9tV@64aMdg|%2vpPGq6e% zx-94rCq}3F$L=;qVA7^I48H19`e_0=W4@-Sn7@%~)Bxgxw})=VMMIv@C0R<3*EI7* ziP0u3_U{{ch*no%$ac+QC}ROg93&$V{@A!HGLsID($VEPrDd^aV~7iy$)4mh+S4}R zX^g^fQ!*OYXR_nNHF7(Y7A+Vu1sKhD-Lwma`P4a%%dGJ1`8(p!nkh@8(+XY%ho zE^bp_Ezr`HKv(0;bLzvuT4-OVT@%=Co~-a&0<`;J)E+4K zna_z<^_O5v-61+69x;0stpaQ21y;o7MhmDg-RgIesfxFiJ_G5{?ZeUYy~f?AJ(!O8 zJ}L;+0?i<}o_Oqk^P%MBJ`EEfcvyV~4+gHu%~x)Mifkm6y<4D9z*M)g6#r_6AkH{B zU-CMt6D=%47baLWD?Jl65SNeT`kTd*_ay)n!iO{_k1zjXb<8{JDb zop;6TuJ`l$vR-TnZd~HDy*8l7Y50Oc{sxYTG;;s$i>9a%hvw$7+|dxsVi|%^&W4YI zu@8pa`%NvY-?9LR2bJ;5-RGAL!IhRgO;H%$wb4c(KiTc1Kbcm3=#Gj||KFE$>uJJpRo*`30us z8c^#TrqaD-8B&lk{UC8`p^Nf>xfwO^Wzs#nQZ}8I=h>WaVzE(a5k?;OdiqN=0Vd|{ z9yK}?*}7hekah}qC?C%L^T+D(EOv-y?gwmP|0eKww&^{CfWtMV!1Bnu^t@R*Ou zRiO>&O=PL^9YVCkx6q__^jKH++mw03k~oKBR1A$&+&*?I#uB zcb`)v?xlZj+oWx_1H;OXuF|;nAtMp9y4CVkKR8j}J1UuA-i87}Yl;9JyUO4)OpN72 z0gwfCvZyp#mc9et;XbG9^mAQ0vhnHguJEAV=D6Z5e)G<^*9r0;yw=3%`XiV4Idh%j zj{+IW`wg2Z;xy*Zy$wqAO6`CG{{f&xhrc{w3u&Awxc;XAuMr_hu}uw%1LC~zuaS2d ze-aA9553O5HFiUw_URcM&(N+2n|7PxNr#xal7Xh5SSDNH8kEU_GH+o52hEMyV!s6A zx0Tj+a(~r~9!6&Q)vUF&#;tQKgFW~Uxa%{R+-OB)0usLK*@(3|ZEk0j6Z2R69e(Yt zc74`Bo-2FT2~m1#NaeMKF>*<}PN!jfa=OJSl#R!q87h4->&P)F(`KMGY|4a#@dHsh zpphEsIA$_qE?#?=vg>sQPPB<{9(kHu8XnB7U6c}#F6niFaabTf^RJ*W1FhPb!$GEM z4O_Aw-#%=^60pv`&^bS)D%G=MoI5k$t|Zn#$XXxYJq>dOA|Al21iy-E2+eNTIqte2 zf?*9zI)4kIBYgi-ZSz|JoyYmFGGkhRlb6W;tj`tWL3>G5 zO^f|G*QeMhMVjSb`&w)bJ9GL_$zyZ@3ny5osZ;A9-s%!!WJ6W z)Q*cJ#3ZjhzG9rSg?Z8dp#_KaM=cAp7CL2Ja+3*f$etkt-%syP-k5V)yT9iAyc4no zUqiqDBTpVD^INc+{9)BON}qA5Op@YPSQl|5k{$b+S8T;;cZ19Cskp1xk*!Y#wmla= z3ifi5(r}zxL5O1ZF)b;}UW2@UeGeAN&PFzoKSR-=``5x|q{la%IAK7@TPz>k)xBm# zq&VJZ3E}nznjQP9^s)Fs`@-u-(f05L0y0#RuPWRI_qlnxasNbtV;EB%7 zGdt!h-u@*$%3)h6He+Ys0OR`S=Qz;*Qqrp%9roW zsCPcW>#OLHxUvyo@}gCFawEX^%p%0PN!Y$WFCI8Cia>d#azM#!M`26F8WqEIhLnrF zs#~oFwr$>v8G=BWrHBR)r2 z4i`BO%A<|R7Wx!?Fz*^q^QOec{rawhs^dV_L)`5RG#|2kM{#v8xM;A2#UaCG;V!2T zcl0H8*imB;Pj9a+lN~2EudBhxKCfV40V%jo zCWIc$hV$|fTDZg6$xN5evH8Rc#-GpG-Aruh>BZL_8|oK-zP)RG{ch^LTSdWd@2PR_ z@;KZu*)KHs2HGG!xnsN7Es>oION?8!1pWQ1@o&~1iq{);2aFtZADuGJ`Izr|Y zUZ*O~^hfL|YBz0AWLfeG9!(Br9_2|MO;H_Idgp-Zug*%|1!Oc1qy z6^oObx&Q5(#eRAiMdd>l??aI#b2C8ebq33L?inlcP0nMm(__o}vEwP#6xSu=ERQj!w&y zVFBpp@A$uHs!3XR*ru>X64ku0NE=HwpLwGd)4){P`%_lEr&KUy_Ba;8hlcVK)5kq+ zD_rKU*>=z(NrJs+q-27{MIpKLy>9GHTc2ROFyV%CRh z`TW&=&@0lQU;pP7fp}LAhr_wsgc_Q(`@8nEMzpOuo4sCX;Bx;*Vk(u5a4bL0x)k2j zR>aA9sB@=#o2%_Y;ddK-+}7QZW)x5cY=&%|`em$zm<|xvrx(lY|3f&wRiQ~A8^Th1 zT}u~MA0)XcvQ#f{{kz20r`|@-kDHsTcANMk+L?ldr&LHETMMxeM~t<~LjzX&XP4S3 z4~{f!^6%VzK4iudrWL>YN8^C}&*SyRifBb2PHYyW+rPmm!cgATe{Sr4m?z4T?cwsI zy^u^EtMXly$mW2^u%{30*6x3M^tcA#VNb6oGWHwT9`^;F;4C9<8XeWZsY7MiH@JKh z5)7m9luCNN;Sk`3jHp*Uln=T7dGHSKFrh;(RiW?6L%<7glrb)^T>jpxbFAHVIb&AN zXDRK? z=WBF*&Gkz8Q~x{#+JPUvtW%73SVEw|VSrS$w%bsjRuCD+c zDE;i|=3_k>h}!Z$sQ2$Rwu0nlJY4mzPMz~G z7eVppCYDLjDSIg|Uaaf~klRyayLMyW7yn5)P4m#E`C%%Wl3s(4ngnocm}5*b*V2dw zR*Eyo81e5OW&(M#4^q85e9Hky@;Q?>V(jcBCa|RNWP4~=P-0sQUZ>O8bdo3swS0V+ z?@_9%3wZOCh45xfMK&;nfszh3trpfM8|8;fUEfHr!DnzYycaMd>%Q?)+F~XfH?9bz zcvaMRQ|@A$t5klolo*I0b%>mYBpsSh1LO9i>bYA`SGMV<{|W*u2vvuOSAfUN@1xMR zMD1F9MvHJEDqLnJ2}oK&u9>}4Q0?FmaeGVpc0XB~(Hnfmb|zib`o<9+=E)<|u2RmL z-V2jA;oJcjid$ko3BeO2_9T{?89>eSg)|hTzKdK;)`|wt#H04vSX#^wp^{^ zhSFW9RlIAlw!0w{V@x7}D_p~`e`n{DE0!#>(grx;WCOT70}CiO-o+ms${ zf#o*!%BiL>7U~3{4=`Odtw7#t!f|GEKNf}#s>AN!XTsh*SRa7pRUY@X!Wey|IZ(81 z5tbLl+^#H5@X?xg^Rr+2?peY@j8<2qHQPR%8Mit3cIf8dqc^Va z%JJwpxENB^@7GWdD!kztlKSSkuOV0VDZiTtMYFY`LOQ3n5G}nHFU!ed61@>*^XnYC zYV{M{jzN@Fx$bq9p%C5wCLAMw%NXlQlhxJWyX66s#UjszEG=aIP z)4p2wEt3iH4nIyby%z2e4;L_!Xc76&aW~0KpIZ;bLqZYln;vPnxBW zA3ieVnv1_HahP@%-!7ROi1HiQvp+U?IeL|O54o%h`!E11tQeLw?I ztWgRiG){-8fOk5|YBAI5kg_UQcu|M`ij8MP#g>a)xq-TAP&6_c9nfY>`2!P3D!w6ORZ(v-aP7cm0ag z6}i6V%{JnP>>{+6+0HGK1I71E!s@SO_E#MF{43|i++S($spgZT85Orv^DhiiqIJ>; zw5(r8RcN=tu(=R3F=x(<{LG%nOHCv`G~Dol>#s}a{8cq0U;dP>xLZT+Yur|0W9mJl zo>=~RqPH{l2Uk#mmjS08#0{V0#~klH)nY};NPfqZ?*KYuK$}6LsJT0>JjSMdi9|Wv zj{HyvqNE11fd@l_tPrLg*ukV9q3qas)V8OaOA%wo?6xuzCecx?7JH(7MhO$sseer@ zo7iDIl`s60$zxEXyB2#)z{T-DIWs3*>f3sHI*D4Z3pP^_%b_;8;1!c(V+C3GZErZu z)d!xC`(+K$yvOD0{NfEd;x1!V8SAW%QHWGkOwq~$>Nj&LPl`yiv@9S})? zj}cfcV}Zc<3eoTEo&C=?fRC)fB%rnTp=Fe;sC`57Eiu{ee3U5`33jZSwMA|X^M(5d zy#34}M{lSodxiuH?%0Z@^|lGY)%uOr`QLFQjMy=DjRju};<)_pkBrz8IxSc+z5oXn z=y^4pFLa1diO^4LKy3Ws`fh`3jD{iy5`3JAo=p3|&CSTc8MWA)Jp+d8Ts~|g0Z6w| zG*z6@+dMv8%~fFDNPMmhSZKfz?c)mGjR8+e&lU4r*Pg_50uq zkLGX1#ieP;US1J~a)BoS$|UPPf=cI4b3FQ3-CN}JY$~{a`gHBnZIA@G#X=2yJA}QK zHkI2r!A8~;%X(gZvG+7`qD&r1n|2$tz&0KwcPz^{*v$hVU9F)_xY<*t?-;ayBuIpx zh3f~tYhjpa1*)wydqfq*b98TQyV1SxI_@#sG8qN0s9A{0E#J$jbyC)O#MV=`@DT_9 za_RELO}6%)o#jrM0QX@pJF!truab`Yk5(PCfrsJeDlVq59 zG>*C&oDsJ9z=ZP8ri6P-Fn%u3JCIZUq~EI!D?S(IA zB;>{Su6ELRDHJEL(jfB`Oec-_#EdMKMx+J|8PtKH^$3!@$=V<_O5;pI{lD$KEz776 zTG?Q5ZahTgM>Lz8Z|1cJ$vUDQ9`^^F3~di6JM5U&DJ~Gq-Wzc@TlY((g6DV`D2EN2 z`ra=QsC;S#Antn5lM#5A#MWh$Ko!LFeaOw7<9zk zT)GD+(O4#J+Wl)Y34LeeLfSxbW8voC`?5sJf;Z3P zlGMOvE&5n|M8+kJL5<&`;kzVsOxQME@j63p-?B~hvHs_$8e8ARohOQNsx{@$g(3P$ z<}W=DjP3hK10K6S0}Og0LQn%qBd`UNBys!%j1zGu!gTC7$GZ-C_TrFq8qu34OxWc03WaFNpI)~4hG5-ts2w|q1~*9-xkv`V2q+&t-4YGe(8!s_!7} zDamV$Hg7FJWrSI(jQ+PCG9#-1DfO+r^Wzy(wtU_lE0pkT;KYkRKRuUKLyyQS)(7b+ zyZ(AP-RS!~`87+f^9Xnb@c%mp921SM{`QZA$S0@n*AOAN5ucF-`>`5)F!%=C=r9$6 zw_E#+oK}lsxF^iOJ^idLUyF`(($OY)pRle6-a-kNB)gv4vM}A(Nih>h3^oXJrF?O1 z3eb-EJGbzmWJZFpw*8{Y$qz#0>MmxYsiJBpt+>!y19ZOiwSRMCS$B%}BK{3YXkU8J6J^h#&V zE2w~E#ehrMu8J=;p8ow-meuEoG{RqchJyTN;$|fHV#JFZMe#}_#)hlTPUSawRZ^+DT5=+;- z(Rw9b1S13$g|4X{hZ$O|9h~Ie(|qvenu_4zH6lhGnV_ay@Hye5tC&`2xDciEnq7#@k!HX{okoLzJ>kq|y49J;;@wcTAR$B>bc zVNN&TRH>V8)As;us=;nJz1ta8_dK6(q~mkisrYX$W-#TG#u=OXo36u@ZQ78qMA5U~ zJRbWY)V;s4^YypB)N=?!SZ=_B*fo2ixDFqTItELU+0mk~?w23+$r6D{D|fP|^OZ1gFHLE}=|^8~mvMk>r*TmPOI5`NxXwnQY5d&wE5<`YRS|TvKwg>MYeO}wYG6V|9>be;hcmHeyWD-eT z@!iS7EmoxwJr9VeZ}djKoTk@&FMAdW`X+jHgjp@)@>A;NwU+MgL1Zqe1NMOyJZY=hkL0eH159^B)kp<1HiHr&^ePik|=Qbo#*X!nx`9d0a*^ zt}+bax60i-p(p=|y&fU{22l;aj3*wbD!^95=PYaYj1KzTrz-wfEDb(QBf4TOZ;nz! z0{gnOZa4a7)RBK|OZexlZOUZP3st&pCDmEZNjP8r{VS*9o_?XsmDiHA`>NAQ3InRjV^4%T1hsW4GO3s&nXj z7Vj&fW^lH^4Ph=U2iqDKueCjRa55vE+uv^KTF=S+Vx1<)-8n zKP5kh`@B~sh*zt=wAB^6kFI-%w+<(ANs0M0ab_^PL_PW40^>2LI{5@ho1=0qDynvb z6?4!TlCN@<_S^H@uS{0V&MAnS@lAvQibAm5V#VgXIpmt)exiS^*r1CiPN8n=iKK3q zY(M$5r2gA_qsD?S(fA*dmmj1~&GuMIeNM6XxSCMZPcr3lrS8oScc{7si1wVKPVYTf zbV(#QNZ7{CNkXV#q^rU|*iy1#B%+&%v8!zg6<^<>qFGqZc;%Ex|jBe+K+qN!p zQ5LqOYa_>a-+mkIPqLEv-2d+nq>xZdues^;_K3z2|1W6<5iWCKq|CCep1Lh1E<|#y z6@2FT4WzCswFnIhO;DpmdLX)UqdJ0KrcFJM5}JYI&5p09@7~+HcAhhw=TF10sgQdH z&6j>3ibZ;Qdq1>5fKHG8Y&Ct3I^A{>M=3Y~Bc@h?QuueVAd2$)o~aj#QXP5rQ=p2) zf*qp=;_ILF8Z0S0^q?j<=E_KV?`>n<+Yc9EBdg2FrGNOoT}*0e$}!&}-g_a z`us|-BAYh?=7zDu-}DdE4B5B4WNT|+*vO$P~=7(HsX?FULS&7{GrXf?Yqs@GK`&A$hSw>8G*GrjKTNnC`+AIz{zIDP$HEYPUIALvU{Acy`a~S6lSm(BE4TxsG4d*v znB#|$-EjQA+d8Z%Ea_KM{4`L+n{uQEk7X4r{@JK$J4cY{A-V&4g-1+j_nlW zfd-T&TMIzL1PO)Av;A6>r*{626-s{Sc~jU-y}bm|eL8jZm8IrVtUg7s<4ECn0_M=E zKficLX~Pu3=G4GTVwskI6NyD;WKKNMl-yL$iuFZvbT#A_J?3k{lQ0vpxm@s6Z0m9R z>32K6D02z_@fW^GdYUwCKl0FnUmR)06H*$)=yFLRza$|Z$;kFrn^XUh+G4N36ZeXk zJzRz*+s&tS2}7G)F&ium*BE;uKWz%6<6p@nR+vxUF`2crz_S9$)zx1o0!0_ay(uMDZ2d3ALK6q(yiCj`g2rFW z1J-iXsb5u9X#3HhLtO2s(*!)Fz!*kkMh6?+0-8Uyv8GHNg8O~H)89a}o9&x-RHn;Y*e(`0<3l#+rQcS6qXejv=9IM9* zjn2`8^+a{FBXw^un0#ptB-f0$3Lm{v7KDGMjHQ^v`jI7O_4dbM%Bp`DZD!)wQ$CJP zu3haTfhzEt_uSfTpaR648UrF(Fjo%G4L#^;K<5yR%7VdJ?VVq}|p93N*^`T}^N z+TBaGRnwgbR*<*H$E$`-$ppdfsuRs`sRr!|o`|opidz3P-AZJ(W{g(#1{0Tct&@}Q zTGN-w@A3WNrDl)3#i%MWfBFI6VmMN>)&6XE+~bkZg7+`9Qwa|(OXa`%OG`0O9yliP zM-7f}DvYbZLhp&${77Jm=tIVIQcuAX29itGU6#b`0_p(ga4f~RiGICp%VA+ANF*SQ z&4M<@+a`V{Z_0p6Nh6=Kz52o4{d#9q&6Cepc8`-HS3JPYE5ZuWg+?_ascWffft-?& zJg?PX!3iSPvXI%({3kG2 z3}cs>q}ZETqfZ9X@4saq)n|##wCrKH*Cvr(M;iNABrh#%r;GbYS7q@88A-@#_{`!{ zvzu`2L5>=1HU26f=1{^s%X+QR-fcHAR52zHItRN$ySldXWN^+lh;!{xGlF%-6gVcJ zX4n;XNUiMusG%VKt#NRDJhEL0MQKu!=fJj&lrSfCo}7O^cD#xUSHh#yE5Ew09;hd? z{@y!zQ8c~3bX@G?A2Te+d9uK_N9!*aD^o#6`TvmxJW4@+j0~eF&H85WnF~|M_CMW3 zl4{caa^Bb;2kS_ez=;AL;m37eJ?gSTL?y&E80zr*(?PnWt|F^`oUQP1RMT03xF{{3ubyv$qaa+`vN<5 z&qIH$nD0Jw=;LmIIHk#s_t0VXiTn=kI3z1$eK=%L_0%zoyVExw+EMhLjXC#`(w#z_B3=%ZB4x; z^;km194}1(4xJTK38!?<{vbzpc7YbvPczhhZmnIT&y$B2qM473Ig3J3jNA!=x`FVS zLT1j_T4>wcAzN#v$n0}MH-;HR!<3%IvVOG?%fpd?B8J82TNoMeAU7TyRR)2X<7Pl} zZL+<`6Qx-Z*n?#esLoK2U`%J+dLa281Cba=X7Gdc9?3=EM7_~rJgkflk3XFEeRb@7 z%XEebrR4OKtLCO2eO$QhF;GF#$+@uM?zc#&R~ZkK3!sXNg1pd!oNc}EoF1MyrEpNd zMmr>^MA`qjXlrKgePFogB?TUx$xW0dJGuGNpQBS2HM6<+8 zsC^J6?9M;!^(s{UPEhaKnCZM9C#HLSr?oTA_tBaql@C|Sz%02^buDG}j zC9%q|W80v>&(|J{z?>32c=O&`Th8)vBhpav>7G{S!{_9_l(5`0JC7zGQ+Tkpdn zY@W??oawkJnZ-#5B&QF71wC$A)_)}WGp zYWm(XVCF?1sRcZ}%O?ljl)II=(ipplCB@(Y_T#%~`J^spC(K^MKS& zJ~il=CQHVAI>CxdKf1p|-50bUD!Fv+3@38}?BfC?V?l+2awZFaX|4Aj+XakHtj^!>p2uEBKde8GA0~&j=dF}WUVzT&7BCm~Ez$Zc)XQcH`4t~&2LU2X9dHQcWmba{6 zF-bP+0BXi;)h)0qhVwdcQI$P3zbg#f#e1teM*D=fmS%_uwpG8P&A=9MxC?nQ7+0X=44LZ6EOJWw((-V zu$hh{8NvwZkE^;iuJ1HVAD;){L*{npMm9)VR5Qq1v?;lxbooX_wHyWwPXHOBuq9OGz)Lh`pS!NX1*Ui()-1Hy!cfYEZU$YEg zKaA%?*HQ`JXfMt&WqXk7&vfGEM(Y~8g)qO z6vg#s9m(thFuBcq0s4CduwyM9Mr4d=+}|XD%L#89uOBYGkrv43L5QXIK9{ zH_;2Z)JDzt@vTiFlibEO;Y$%PaufMP*Suj}w|O4~}6 zdxDRSadhRGx7%{@!ZgRmy~CxE%#tT+3-cvKdczcOr2Y$sdi?laceB&Ii&UMS$3yS4 zgnHG0Mxpx`#m57&Kb7rd8pd?OoiMHy4(hJOiwf{rR<4E-_kUYrq2$k{ZlTI%=$x{2 za$A#PQ~d03;cjBm&RbVks$NqrMesT|L^BUbCHbi(swNT&kugUnh-!_7iZg#*mi|6L z!opIUjGST{dl84dFl6J$v-Qks_*shUy}JLH`@02Xq$EvC{R$&m$-~4WmI5G_=2Eqb{Uh&>!UOMtdZBU(2m#9mehv_`ckcUV&oi3xKDozYN$ zi#xBofF8^#t_J~6kwD9Wx#Zexu8YM)M?_*R|NVM9s;d0J79_g;8n5-5ax#_Ya<^h!dxVYvPCnUjOR_y^C>XTs z9?Qb=J}0P5m1tvC8pt_&P8LN~30qPri2eH4 zQDJkTji;!slM)@OFsD{(3bDFuN=6lkyI8>!NZHwsiNJZP$AT-{>~Q4AvIKqt-3@Rj zGp`TO0iuu%FIS7(5Ikw5UVs+rXSKiDnXvU+m3H411hZOj-ZEs&o9c9d6@X)yk5;Z& zF>b5a{eC{?TF2dcU5ht`-0Ro$im)I5Jm7w|F}30hX46GCd8$;b=hai$XD&;6&na%8 z1a!<3k<|#>S?z77M1OgeN>H|dSg|UYk>#9v5(uBFZF?I*7tY^a#o-)e#h9gFrvmqg z5NR)pny=6p2=RhIP_)9I2&i zb?3LDw#6mVRv#dTCyd>O6guFEMr!fPk;{YN^JAj*c%>Q z29g;szniX5$UVd2^+<8T#;UX$dT%S-PA#s2uuxT7RZ zSZKt;NI%%t!CQU4E2a;VYr9gk&GSZx=ZID|U_+iQ{%z8$o(4pKOj%Pt@v;Ugo z3lp+*zZFQ5m^ zyJlA^+n9Uy<6i}M-ZGAnwC`^gm%ncByoH16+xM;kv>;3A!_o6|(&W6+zu-E;8`R;l zaBRB!Zc>XS0S5#+lRYIScv#n;Lb{zvmW;963FalyyTAQaJ1eO_R8RP20KYL*=LQ!y zJI_$IveB*Gjg5s7B%BoO<@N`OlVP_a`aBDP=Lox-kza#59;KzcvC$7j%su=+573H9 zpg6NZ(#rY4#w58$Bc}v<>es!8kwXBwhx!!u54q}!4?&^&z7suv9XOKO?DG0Nd)Ey6 zNJ0y7?lar_hZ(?PS>)#i%>$IO>)6gvybs1KmrU|5?PdQi@;=55(T)3$lIa z+Oh(ZHKUPJm`FRO^07(yjf~09a%!eG0wmcza0+uW_<@Fjp^Fyc(>^%;wdK9gI7Wan z8Z|o9SY>3TP;^e$;hPdx69Ny#VD8TKHBpVSfiopfrCBrTfav=bj$>n8k6SWdIN)Yh zdzBk*cg99c-{Ewml;fQ~BLswU&c9 zP6l-Kwf#d0Ode|NOEbCYFeq6_dzR~?;IqTBvr`h9{Iqf?VP5xjZnz1k%3_vgbQfIi zoat$o9L4M!mICq@QbqzsmiV4b~OLN8c6iB$(P}wTs$qG%u@ENKHd5TGG|7J0B z(!1bF(j$!%Ria&^efVrmCIn9Y1x3QX*OHf2Z7FAhqeNP~_JY1wa5Lg5m+7xTr1e{E zKZJ$NK3J|YBu2N1VOHq(Y)VLLLnL3stucvTUtTv@{cf zdgb5MfXy~0)@gIhL^@AtQ7k>!_Wfl|C?Zx&2h!|6L@Uw#x~bUOgp=(`V?FSeGiF-q z<%bmghI4mf;Fx*fwWgN=87Y`}90*n5+?)t($#)jgW(_u-j|bKyWy~X5k&40h&Y<|1 zmqvPJY?;1Dptgc;$oU{?WiC$~i&!OcP^bp86-WdR3HEBUY@ZGM( z(vvr`iAas8fAiZNNop53HU_GEI$40u&HQ)Zp;49DFZbjMG1I56&D}gcYiXCIn0wdi zJ_O~}t*fhViq^aJQQF=HFmNIvtqq|UuZ-sG&Q7#~#-+L@Dd!zLbX$)c~)@!`>`%_Jm!YH(vqpH~n?UGlHF{6aO8P21$+pR{-YPHaRvjq@WRmQA5Fyq3 zX18ZSy{+b(p&s*{ZsPQ&+BE=U0b^XV4-<(AY01NppMk&JVc$6tdTVDYNkVyw-`P-LuH$>E<20c5`O1*ALKe=Xz4rp5clKoOE)X_R3{fv z4w~T9oeoM)k0%G^_a@gIt1uar;OOUY5TVtxN1!@88b5$xCT12h&xV0Rmw1~{3ez=J z;IlV5AIEaTjQB2lL!Yk$amt|$*stkQqyfB-o(zxygc~Tui%-5&iXZZPR`+{hcfruK zCTTv;YIk_?eL>nY7?EPU4Ir57e?X`Aut0~SYkCY!1s31_`oX@hEu$%2pn}G8nNR1O z5(bfi@ET<>Z6D?2TQJTVgRYI9E5Cp4-GCJJw_}T2ot=cVJ>k!A(Qax4AZq$EkZciK z6G%P>G>#9-Wa@SO42?f<*UHcqfUK`Hws%1F1tnD6- zG&2^ z=b1AMrl43Na(QBm(rFE;A&ShsVN*93Eb{gai8+lcl~-yppnpvoz(RR!7;WQaqZS_= z!i{_T#QvKI+>R~rySA6*K_O>Nwls^-oMEPNzlrDwyl2WRNx zD;Gumj3zErvNNE?#tfcOESAolO1EYVJGGl9pX>0Xzxj_hS{@^5p{I5Wggi6?sjff&GBCoE z=QunN1`F#GH?Nm7&)#$!hVkRbIgeHNU}4qZ{DSCMj!)yB9)cW332|OLTdh5k>7L;@ zSoy>3^37~(fFJ$#Xz{NLl6b;8*F@gFy~2h;@i3sfhLkF6-IFYUcMo!K;nJT>n}Py4 z#_MaQWK2QwP%tr{u5pB2LNsxSXKQ=t2xpZfR;GL+n_z2tjDOUkDRy?)ku!-UUupZ# z|I0DZ)Cf1EpXDWHtqvf}YH`c1pR_1fwFwe23B7^6;9CD|d7vU=>Ci7`iBcEniian`%Ma2v`3Ik;Vx*LI(?U0?YW z;Lmd3V(ItpAqJXDaan4E<7^w3HpjYnwAe$TZP&|WHND3o5RS z-v@0dqMae%C~e;tndEpOX7bCPh;DbIg@tm#Rf9(>Ak!`z8XP?Q1cGt9zmCx8hAc1bqk>Mn+WjZPD`jm``<7M;%Xym1)08ePl75noEXp`_PyUgw0UWXjw`8nH3+DkJHO8Om5*gyq4<`8)vBe=IF zKf?%rM&y7&yNS2+K>CeAS+%=f&?74@D30csf#b4xVbPCYE`j1&z>0~WW^%9W1Tqv5 z%(h-Po6$-i3lzB>xVx^R^SkpxqkHI9+0RPQlJkq$`^T8isWs<7gqTIwEtbjvY=Uw0 z9{?H4v>>7qE7@*;p(&l-l}MYQRtG@?BnkJ>Z#7BCwgQp(>}QxIIt$Qnfea1 ztLc5~IbrzlX}QE%QwTdl)VshlGQxm4B>>Jy)Jec>m4Xy?ZPSEZpQbAF!gWl&A*%}4 zg-X`LkNZvh!5`A|1N1z*9au5-%mnG1g}bTiFe36~hLfpIY~+u+RBJ{|<6gj$ZSRV$ z2_>1i(TLHCDeMX#jmDmXcDMet9%<^G{G3le!8*30^yzY8pK>+1?fTHsy0*i@K`T-1~g3Ld)}Bkn;X!G%V{L-u7b$|4g|p1f9lBoagrY9eNo!pBTWXo z^Id)23=Iz`Cc(pI-*c@81$@j4I1<}_2It;t9*slNekcV06x6*7<~ubwx|#-_1(Gcf zzL|NledW{pE(qg#q^}3#XpXLB`Nl8nHW`m0%LVRh_o9vUUvW9wONiBm8rGmK6{$}= zHHJO(ripuxX)hO1)zdGEGjbYdIJ5qbo`|8gh^Q^5647<)hwMTP?(>{j<96}PQuXBs+K2EBQ zft6)AO%AaK1CxFIDP$ZAbp_V@mo*)3oI;ZjHf=a{D#QN6I2c_8RpTAkr7^92hO4`x zHc-DQA{p_u?P(v9{WcN9AhK2 zO@K3zuZ?yL7w4Q<)>ibNeFvJ z5%a9)w{gPT`EM!zwt_~Bn`4aiXNp-vp}zvXDUz@3CVkre7CEu-);F?Ia?IX#4j);~ z@2vdPrxKl=^rLCyMDH5y`D%j?h%cf}K^7P73B;37ue0y9C@mU!U~t9mVUI+N(shNz z>>hulesxUgn7vTf3sZZr(U^)gNEiHwh=@GfVL8-4b5DogwOy8Le3W*r&d_G3{`DDar@O^+eGRtt<*wAsBXbby%U*(g{-0YUOqN_$r%h$u>E-?A_Jw$ zayLECuuCN|@@lHHG+A$I z{kHkM9Bi0O)(O~w&aLs3t2u)=ELb%-5*pq<`+JeZRXY9*@qwT2$(Hr_3_?EzD9HPx z|0%XE--~EkrF6Rd$K1zaQe~k_cbwL64yjx|o^{vWr!fZNyW=<#nxT_|Vj*pzUT5V+T`ZapQ41dsV z#~0@`)P%%;<)ny=UUKK8_FY^byEasEN8#5)_@vVKcoIt< zL=NOBs0Dx&cGB;Z3leSxR_qTRWFvv<_b*b3v2j4O5^j5E824vbBXjD!7tDc%DgWbK^dRnRKayM!}^U#pKUq#g#vG7#`M|o1nIoknJoptxfHO4=-*2qNX+>xes!UDN z?~TiBb;OazVT2A#wj?YVD`DOtRF9%=s{ZA-*rx_2fajTGTwJ1lY zx+*2{uwr7b#k4Fvg-Ar8cau}iQ5(LjA6-kIyJ&8FwMdU;zK=-yTOde>W`I7#y9R5P zkN789vOTM=NxrP-wYuGCI77fKzmAdm2RSht1+;HmR>tfz^OV0#Y`GTHLH-7U?h1be zcW)R5N1`n-5sVq2UKJk!F#XW#1~aTT5l<~6KcSMpV2TU(DpGp~@vdrRnkux(vJ~V9 zQ->~D{|&C1kKV$xqV_TF$-UyQ3P*k(kCLOl^GtF;&8eZ2Awr*WK~(wamIfdIjhe{~ zKy<&5wI_p{IUSLZbWkZ!-J~?pYhEN^c=9a!Rb3)2`IV&#ZJzCmXX!Pzu^Z%Q_TI4D z>orMO9~hCy1w>y0ZA$IQD~_YyA1{b70$ z?LNonYHty)JFIR7QQ60{3`6_FE)(saMFfGXWc9;3L`o}L! zmtQ|y)5VcQ7P?o3kJ>=k^&R|yB}VRFd}vj8D8wRG&VL5vLMns5GxMh3A+=%A9 zstblrK%;KSijl$VtFN1k#0AH>AhF8z}4 z-g5rLDfgpsq!SBlsf3Y4PHaCArK%b9k9k$FO0Ix?>Ew%^m@@!*m6shAa^iptL@_heZi8;WZ!Q?FXHBm+A9#*}Hg z3h!ftNjRnkN6`7_Er!}hj)da{|Nh+QV?H|4%U}Iz%+hk3%D62Wrjnusgl-G|J@vm+ za)VQ%n^KbqZ~d(5(AHLLxV8tr7Vib*;IqYrll^j5(j{8puulk{u)fT{E`gG)@{MlQ z)2zLFx7*50L|Dg8cLhv*#_#dd1Qhc^7=>w2dZPPOwc7W(gUQgDdH6n4k^qkgE+ z41T1+M`g-#ZYt-h6&GVb#M5C$g|^e=GT+94iW;lEJMz>gQ>K;VXfNRka5T!@%8A2K z8{A$#NcaH0?L7A`#1y}oCG&5CqW^5MY9I}(t$TbSId@t%W>kGj>zqAngf;bkH7>P0)GzSWIvb+;QrVVd|Dnj0HS&rZEIoS%WKCUXgfQq!!pWY>Ex%y?(#W z%**P!jUqyBKi_H`^XnStq+7P5k5SVdxvy>HwsY#eYUe<_Sb85^X`jpbVIUV!O4#rC zBphEDIB{+#_>q4S{BM_sxfon05EuRN&(Lx<$6INeBj(EcTh^19U(f$X59Fb1u9TMn z$%l51TmWT)%T)Pui_{=fq`t?EI5 zMsc-F>3Kz(xZK>IIn>~lLk%8dK%;Xdb*<~BthG`^xM5j>{=-_|B}3oT9P=)l79V1q zJAL%+(^40PBY8XgIll~jn&OE+aL@SmIyjmwD5BqwvnAQ*GEk);%r!y)RQ7j3>MJ6< z>7`|w?4jTHBrf*I$CRQgecmi0pVnDFUMANVOU}Sk8N3K~>2pJ?vh*)3A?UM~f6Cnh z>hV3U|NN0%6P`WYvbJ-?jg_1U5i0aws`qCD_ZRqxtXP8$jlOQFmqlMk3bL&e5xn2m zF32E5@qLhU6pG&5{s4xVL6m*cjEM3bNbCq}sW1Km|yCA}`(w*>&rjx6hjy z?MwEay=pS5Rio*9dvJfnzjdFl%~z;RDT&8i4p`pLIKu)DEMtTC zpo{Z(QIJ{+A+imsl7<2?-?%P!Pgdj%Mo8l3B+R2`! z&$_HSsU*-Fl7FJgCaI~T>;l<8<$3-}$KlC9H}aUBI0$5=D0?WY=>3bWK;kUDu8i{| zXLx?@;Y!9v<)R{uazOvfCD#GeF^g0yOF!c52`|fe{RFVIA(5UsU0zI2M!Z8TO52zJ5h2*nU9rJ zD8hUr_;dfF)b{Rct0h)TGqb8+91GF-i|7~S-UstYQXu0-g$BkF(Nb{@G(U;P_|3~2^H-ym- zjMio4(w({V8f;P=yM-X zmKgz@xeFE4j0eFv+ePx1^)F|}mdBm}x4WUQ7W3%Vl#-WX#?hdvsseeW4fhZLxd#_F zH^*FgBVBHs7NTW{fZ+J^GhyW)Z?n|+z3gP6!Xa-8XX@0^?Z39;31i11jrMGy4H;AV z2ek>5&JUWKY!n3s^f{N$Q>I~?;F^*HS8~CVt6TeOu$Rrw4Sa9;urORlwiX`->sR}I zyjkJ7eDZ`Y#o#h_6RdsX(Uy4jVP=#dJ<;P0PnyVwf_p%AWfNp+&-X|VuKjW}*QK8S z>I$Rv(8i~r(T=^nfr{sf9{$bioXhx?SGhS&d&~S@34F%?cH)>x@-=Q6U7Bj`%Ic-a zfNth93E#ap$^^%?t+)1*(OfcV%>XTv^R>=%BVCBIpuT=a8HBw;mM~6p3j9Bgm*y8k&vnTU*tlhmwx=ropB4)Ut z^{>EMC3TqRj=8CnDGn)7$IDYI^3$mo37ah-&@PD=$7gp8xd>@RH|9WYPPCi zHr_F_OM8xAGKWb_E|PcAa3VSIamp1{qb+svgnY@F%M&HnsJ|rtOZ#Xy_i#cJipT4$ zOGS?2@qTT*YtNH%l_c{{l_V~pOmZgVyZb$~uw}>S!^@dsu@zNxFPbjgDHV4$?9i8E z@lOscR05uFHWan&D4+CGW-Og+_q+4(b&=;y@p1oJhkm}>+)wh7jH`B=bFOV7YgMNh zE%u9|O0wD)w{xh)X90{t2{{?)VU^wI)v&92#1q~Se}S*p><}T$;RjGAgp}$CSBb~%=O=ZviTJ&7 z4T&rMp9DUpJ(#`W&d3K#y|zR@rS=OS*)_c=^_q>*d~!lJd1AS@s~lYqY9LFuUm~!= zCdW~Rni6lfeFzJ2*=ng5Zppwh5_f)beiQnsQ8mzB@)h;6o>j-dQb>uYT zIN6_>x;Q2bT@ig-U?kWJ!uBg!S-aFNg#u3!sQi2DKjI#kB1Vf z)J1vqYdzBnDtxGM+U-lYST7IgV)Qu5*+#U6yKj*R-I7&3c~HvjPrGjRc~QhfsK0q1 zL8S_@l#fi&EMu0QF3 z(%ldHUm`@Dp0pdy6Yt2?XWc1-rL%~nb`;+rS`ETPHXb+qG z>A+48*`FxHlBSdvTkt2i8Hu$_7Y;dXj08_3Ez@B0I;=_Gciw%C;8{7+@w@97U3o_+ zGh&1H_Qa*rzA9+W2f@heKze7LM-a3oEHyxtf zR{XDV(8-;~Helff^M}_X02o zB#buts@K|?I8w6E+cDh2*z-xM>#jbl4i8nlt9HzZ0G6ot_N$*jWP$a%>h_@JnlR}Q zvSo4|nR!0W<1E~eZ$@q4CltiC6o^&YOq-3@{yf6OBy$3_q5Iz90ym|YcVK8I)?wu) zT}w&AhAFVrKEG`4avSY=IDdM3=Kx$&=`^4~xCYmh&&`^2`Ii^^g0kjC(MOScsP@m@@&zb37xl6!h?kzf%3S?G z>J420f%8Y3^jWxar@sbwVK2`24wuGg57wCR+=4AgW^;tCE905lB>lF`I>&3Xl*}t` ziyZaJpFY#+;d#10{J0x1N2YbUk^r4qEB>1WPbvP-^&`lmg-MEurS%adVMaTo7VUrj zEqLjz^QzADBll}Jd#fb)xpWlvP*W=*+I*H1=2B`PjC3d0!KPKx9N1-hxyp%5k~u zRjBn;D73pCWxO7y<)WS(w*JGl^#lTD^V#EdEvOdt-Rrga?&7h-viDw!6vb*~VeSe; zHnDJ-JL1CG(K0PdxgF;qi!tH!KPs5N&QI~@-CoEwcQd7^7k#9W!EXsHTOzJ>AaXWec_kpRmvz5qwIl1^s-ks##jOO%s zPAu0+2fYm@!O3eu%B>xx=tXk%N!YKbGUk5vK9^(;nJxdw?YO;QtS{g3eYE+9p$t87 zF{7Oy%-_>nbO<-qIaQGUb@y8P$PukO01R#m$?rI)9}ZoH1idNQ-4elEQLfOyqkv*( zL1P!c`S08$H=pd5=5yg!wmxmReE zq0dBqLA?L*B;}5qfm|@ULAWL~YD|b7>-0~Nd&CbBRU!2V3~9J6+3(zWSrR-Y5Xe$C zM?BhF^m9@E7GK7q{Zs=|Pa9En(vsKswLmL+alW-dRb1#i3p~>MQS1yweYO9;Rds-#E_Ha$woFv+~AVs}JT!Yt5|O&yWvJMv6`F zQpa7x-IP~UNPoiu_AF)sRhIQUnp?K3S|)!RfK`e@5wBhOH;PAAP$s!&%~-g>FZPb& z!`@L5-cE`sUO)PNbSx zx0Aa+TNxvGWwGMGy$Wl%|7nK<*3=Gj%M|mkHAin*>c$XY78+nUwjK9{UXneY@t8>K zunaXD+)&7^Nm#9|bjP2!aY5;r+YW*-V}^m#Pq$sjg`3KVD+H^o*L zsNVeT97QLijj&GIMPKhHMs>S>j^$!1RxjOdp@u73N2bfyi~qlF*|1wGS>^TZA-0C= z-SrP{#Nv~(5VeU8e7%>>llrzt;n^K_xa9l&8U?nSd7!_FRGpioohJJ@`!58odwVU>@T>UFo%+-EgabsbuYx&0 z2wx`fU}bJHRG$~Qs{p5d)bS4yo@whJ-;Tu_>Per%xHR0xT~U=3{n&t06|)oQx}fXG z>BjZqJ!h|9fGaMi0WfzTOToBL;P74vXIJIm&D zkKC~Qu8)?q)`)$gLmEcw4aq+Fro9FiD|7_vD4KVn)TmhEv{?7sINXN)J2wsv?n<-m zFiXWTgn!Jpx6K`w7ws;_DqME>8S{sNc=4X|*Ds)^s(~J0!r~dwK$fC67@oncJB|tT ztyfPeT9c&c!o81UWbB;dx6hTdd58LQlakfry8ThZng<>YCkO62XeqSdMUw|dph&0r zlO#T0@ca0s+di#9pnmg<*Co1rg8up%Gv@2Epvn`C37=m_Hwx*C;?~G#3i`xjUSa#9 zt{0-FI0ywW=M<x6`IJ}(pg8W~Uz zT&zwjvGL#BWG>Nx0Z?9C)Ud}WZn{>NB(V+YT3Y>1}hbFo#B* z@2Fn>_Uw8BHKXj?G1_I|oo(Rf@d|nwgY6LqQMS;~ zPWZ67cXT(UGFcKQR-1o&%T$n6pl*}-8o0Kw7+Hd-qgn`y8u?o-2F#w=A`UWM=(MuZ zsb2z4N<(OeHtTTbgEZb$I`@!hd#8+Y}ZewSGlU?%SbGFHa_6mGSB{ACAc?$@ENC%82zxHals_i8L zqdV-9jah)6;?(`rxV4fcyo8T=DP3^BH7nDkVfzx`Fnb#gZzO-7;Mhs70do)JS_)TV+i4>pno1DAR!cWad%tOW`%^uV4a zjsBZ|t5Qta8HyH`nu+Vu`*)C7p%G8tzr5e$2_^`N?<_C;*`;so=2C4~h& zMIougQAVi+)kV-9+%b3@_Kd~Qp9_OxsMtn)c%?ldYhp8e42uSIKHQ5C%fRjo~}m=#BKkT`e^*@6wc86geE=k0EkY6kqb<0Zlp zd~wuq+G>(oH7+{P?%bnyIct{su>JDjIz*B*4)@d(Z^deRgN=hoYK!>bV}G9Tg3=c^ zW6DWxYK5-M{1EFs>z;|yd?>z54`@R(1;{41dcrYo=!Q9VfA^Ko#v^fWh`3xeJ_~ve zT2McoKhe@2(%$CSUJfWaa0#($r^hywKc(WKzZiUAB@!8N>uDIu3I4v>yXqEmG*owk804m1yUv>WSE`zLzi@V7 z)R>5Gvv}>%)&aX6g579TD1OpxCu)qsLWk9(kA^)9*;*xN{bggiyLT7kma_1?st?wp zX}Oi_aBZpknW2i{nLNt~j0i#YRbRUl^d>)NS##z=(8un*ixVKA*jkVpVtO%L%6gC5 zAyrfC{-)(CqfNDFw_8#_E5!#l03@{vT*mI9DOOcd@kI|WdF)N~=cyz$;BwEfz8vVt zk-jUTIxU=eG9zlefsu+JQ~?=n4V;^{HuSijG-KK2K73937h?cJ1pIA3KQn+&EgCQ19OD=KO!cf08@{|NSX)sW>Ew>Lfdo17~JUcfaGN# z9BSycZl}s*mioXN^smPlsuVDV`8GfvZywlcxN%T@zbhFx?0w+8jC95Y%V4|=zmAi> za^SdK=?5!%TQFT-h=#yQ$^o6yZvLhJw!yGRAzLrEt&Hy-O_EUE&cyS+GjxY7H8M3n zk-6ASG<6|oX~`>)+)We?S|XEt0w6q z&+go{1_){fd>iPrg^#`2BsawA;`>8Zkf49~Tld@6`7}4fDX?R zU=%dDbry8j%Zb4pGQLIO1;)+|DBM+5&4gf}%<-D|;)^nbf>nt?cMUo7h_&4mVfE(pQ`uy0-!ZtAdHGN9%4q;dzNU;fCc}tH<^C z)Lgx$n#cSRN^%=IJ`i>w&h6PSrF1x}xnBgNLmdtp?%$FOeh6_*sYgU(S%_A&q>i3J zJ$75Zu*#$FnMXc~ncU>ZpTL((06A5F0fqKAOA1dfWpSb5_%d`_!BIvy#))XyWzcez zw@;4(WF+>Fo$DkTlk)U4qvdV{oBBuHDhmRX?eHuRQpzd=`WvT@Xd^aL zg3`{@|IujS*mES0*%{aB$%1D8j&dQ|OUReBvW~Hb{)+LGr_QX%^O8q?c88iqIe*Q! zAd_;!GUI&KQqBF(BKM`KKtVuU?;rX;y2#Q0Ry>7+2%HcS>O_-;woBt|YUxLmx)WKp zLK5&Hpaj}mf(U~J!K(?$P}p{bsOBljMfW~-YA=;YU3&P1^uMOe9N6?o<6^^|u*iUy zI=n{K)IQUiv>lSSgTzkB+~Qx+n<0 zR`O}k12go-+@|wY|18~;vvm+3L;wx&ua=0`Po2iq$jBmof% z_mSoVab9ace#j?>u)XDrjy-2lH=3R~mCw@U9c{#i@PKHFw6d@tE7G6_Xt^{L;pK$a zHkI_T7{$3RdlpeuAT;s zvgjzTbw_;I41itGQUMYE&A-)bB>E-sB&sq_e*dm@^|1g9K}7;a^c)z73oQ=*sm`s~ zUXZKU0swnGLVj)|bLvJ&#MOTopEH&H(5L5YP3n(`0T6|p|Mm~FoiI6*F&;V2{IDsZ zH_30t*7z4w9e}IQqz4qSPHs4s@hNh#edrVY1lp(4)^NI17XT|n$`Ir_xl%P|f0f%l z&6Pn#6!@slKeS2zk*{)RGXP*SbfW<0zbS$>(N1-G1YhY=wy*jPSYrynV?;Nx4eo4Q zdTksojTfHRxV=01BpOi8K~4m$><#9vLoVUs;*YJ=`jSt=L%WR3pAQpboZz~M;G4ed zZU;aKIY=~oTa1FR$AApS~q1IH%+TH;NdGOyJ0iJC^a0Dtm1&6V|G@0dN;t z3E-9V0&K^H3jta!LLXa|betCY`}YpyK+rlj;&vpxBwCY>0zi>RR$c%7P@0vqgcYGz z1b}S=li-LxjITT?}3sm&#Kjc>+Ld`+dnN zWS^ggmF6xUlt1hkghm=6D#@30Qdy=OcI$$06#(tir<$~4;>cKW*r*So5rnA@qG8*a z-#_4QVEy}c$hXVLiv9llR#d;gX+sazpKH!ZkTrgP?jlO(_lF3xjsAS2sr`Sy;p%w& luf<<0zxv33h5-D^U&4-C=<91;Y0r^McGgZ-Pe>H{{{e^_dguTE literal 0 HcmV?d00001 diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/panel.png b/linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..8d01ac85b64ac85981e66f993b068f0ae85d9273 GIT binary patch literal 8402 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 W?-7diGmoY*KtV?3ZMl^3=YIo_qAooE literal 0 HcmV?d00001 diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/slim.theme b/linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/slim.theme new file mode 100644 index 0000000..b70182b --- /dev/null +++ b/linux-live/modules/03-xfce-desktop/rootcopy/usr/share/slim/themes/minios/slim.theme @@ -0,0 +1,36 @@ +# greeny_dark theme for SLIM +# by aditya shakya +# using artwork from some free html+css login templates on the internet + +# Messages (ie: shutdown) + +msg_color #b5cd60 +msg_font Sans:size=18:bold:dpi=75 +msg_x 50% +msg_y 30% + +# Session Name + +session_color #b5cd60 +session_font Sans:size=16:bold:dpi=75 +session_x 50% +session_y 90% + +# valid values: stretch, tile + +background_style stretch +background_color #f2f2f2 + +# Input controls + +input_panel_x 50% +input_panel_y 50% +input_name_x 200 +input_name_y 78 +input_pass_x 200 +input_pass_y 145 +input_font Sans:size=14:dpi=75 +input_color #b5cd60 + +username_msg +password_msg diff --git a/linux-live/modules/03-xfce-desktop/standard.list b/linux-live/modules/03-xfce-desktop/standard.list index a446dab..5dacc83 100644 --- a/linux-live/modules/03-xfce-desktop/standard.list +++ b/linux-live/modules/03-xfce-desktop/standard.list @@ -1,6 +1,13 @@ +dbus-x11 +slim libxfce4ui-utils thunar -gvfs +thunar-volman +gvfs-backends +samba-common +avahi-daemon +tumbler +eject xfce4-appfinder xfce4-panel xfce4-session @@ -8,7 +15,6 @@ xfce4-settings xfconf xfdesktop4 xfwm4 -elementary-xfce-icon-theme greybird-gtk-theme xfce4-pulseaudio-plugin pulseaudio diff --git a/linux-live/modules/04-xfce-apps/install b/linux-live/modules/04-xfce-apps/install index 5138d6a..8d72be3 100644 --- a/linux-live/modules/04-xfce-apps/install +++ b/linux-live/modules/04-xfce-apps/install @@ -15,6 +15,22 @@ if [ -f $SCRIPT_DIR/$PACKAGE_VARIANT.list ]; then $(grep -vE "^\s*#" $SCRIPT_DIR/$PACKAGE_VARIANT.list | tr "\n" " ") >>$OUTPUT 2>&1 fi +if [ $PACKAGE_VARIANT = "standard" ]; then + if [ $DISTRIBUTION = "stretch" ]; then + echo 'deb http://ftp.debian.org/debian stretch-backports main' | sudo tee --append /etc/apt/sources.list.d/stretch-backports.list >>$OUTPUT 2>&1 + $APT_CMD update && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install -t stretch-backports $APT_OPTIONS $APT_OPTIONS2 \ + remmina remmina-plugin-rdp remmina-plugin-vnc >>$OUTPUT 2>&1 + else + $APT_CMD update && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + remmina remmina-plugin-rdp remmina-plugin-vnc >>$OUTPUT 2>&1 + + fi +fi + if [ $PACKAGE_VARIANT = "minimal" ]; then cat </etc/skel/.config/xfce4/helpers.rc TerminalEmulator=xterm @@ -54,4 +70,4 @@ FileManager=Thunar WebBrowser=firefox EOF -fi \ No newline at end of file +fi diff --git a/linux-live/modules/04-xfce-apps/postinstall b/linux-live/modules/04-xfce-apps/postinstall index cb46633..6430bf2 100644 --- a/linux-live/modules/04-xfce-apps/postinstall +++ b/linux-live/modules/04-xfce-apps/postinstall @@ -2,8 +2,10 @@ (cd /rootcopy && cp --parents -afr * /) -sed -i 's,create=xarchiver --add-to,create=xarchiver --compress,g' /usr/share/libfm/archivers.list +if [ $PACKAGE_VARIANT = "minimal" ]; then + sed -i 's,create=xarchiver --add-to,create=xarchiver --compress,g' /usr/share/libfm/archivers.list +fi rm -Rf /usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 rm -Rf /usr/share/icons/Adwaita/256x256 >>$OUTPUT 2>&1 -rm -Rf /usr/share/icons/Adwaita/512x512 >>$OUTPUT 2>&1 \ No newline at end of file +rm -Rf /usr/share/icons/Adwaita/512x512 >>$OUTPUT 2>&1 diff --git a/linux-live/modules/04-xfce-apps/standard.list b/linux-live/modules/04-xfce-apps/standard.list index 270955e..684682a 100644 --- a/linux-live/modules/04-xfce-apps/standard.list +++ b/linux-live/modules/04-xfce-apps/standard.list @@ -5,9 +5,9 @@ ristretto xfce4-terminal xfce4-taskmanager xfce4-screenshooter -remmina -remmina-plugin-rdp -remmina-plugin-vnc +#remmina +#remmina-plugin-rdp +#remmina-plugin-vnc #remmina-plugin-nx #remmina-plugin-xdmcp #remmina-plugin-www diff --git a/linux-live/modules/05-firefox-esr/postinstall b/linux-live/modules/05-firefox-esr/postinstall index 06707c1..a407c94 100644 --- a/linux-live/modules/05-firefox-esr/postinstall +++ b/linux-live/modules/05-firefox-esr/postinstall @@ -1,6 +1,3 @@ #!/bin/bash -$APT_CMD autoremove $APT_OPTIONS $APT_OPTIONS2 \ - software-properties-common >>$OUTPUT 2>&1 - rm -Rf /usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/install b/linux-live/unusedmodules/03-xfce-desktop.old/install new file mode 100644 index 0000000..7fa1c29 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/install @@ -0,0 +1,638 @@ +#!/bin/bash + +set -e # exit on error +set -o pipefail # exit on pipeline error +set -u # treat unset variable as error + +SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" + +GTKUI="2" + +if [ $DISTRIBUTION = "buster" ] && [ $GTKUI = "3" ]; then + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + gnupg curl >>$OUTPUT 2>&1 + echo "deb http://mxrepo.com/mx/repo/ temp main" >>/etc/apt/sources.list + curl -L https://cyber-x.ru/wp-content/upload/mx19/mx19.gpg | sudo apt-key add - +fi + +echo "nodm nodm/enabled boolean true" | debconf-set-selections +echo "samba-common samba-common/dhcp boolean false" | debconf-set-selections + +# install packages +if [ -f $SCRIPT_DIR/$PACKAGE_VARIANT.list ]; then + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + $(grep -vE "^\s*#" $SCRIPT_DIR/$PACKAGE_VARIANT.list | tr "\n" " ") >>$OUTPUT 2>&1 +fi + +# install packages +if [ $DISTRIBUTION = "stretch" ]; then + wget -c http://ftp.ru.debian.org/debian/pool/main/e/elementary-xfce/elementary-xfce-icon-theme_0.15.2-1_all.deb + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + ./elementary-xfce-icon-theme_0.15.2-1_all.deb >>$OUTPUT 2>&1 + rm -f ./elementary-xfce-icon-theme_0.15.2-1_all.deb >>$OUTPUT 2>&1 +else + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + elementary-xfce-icon-theme >>$OUTPUT 2>&1 +fi + +if [ $DISTRIBUTION = "buster" ] && [ $GTKUI = "3" ]; then + sed -i "s,deb http://mxrepo.com/mx/repo/ temp main,#deb http://mxrepo.com/mx/repo/ temp main,g" /etc/apt/sources.list +fi + +if [ $DISTRIBUTION = "bullseye" ]; then + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + librsvg2-common >>$OUTPUT 2>&1 +fi + +if grep xfce4-whiskermenu-plugin $SCRIPT_DIR/$PACKAGE_VARIANT.list >>$OUTPUT 2>&1; then + if [ $DISTRIBUTION = "buster" ] || [ $DISTRIBUTION = "stretch" ]; then + echo "favorites=exo-terminal-emulator.desktop,exo-file-manager.desktop,exo-mail-reader.desktop,exo-web-browser.desktop" >/etc/skel/.config/xfce4/panel/whiskermenu-1.rc + echo "favorites=exo-terminal-emulator.desktop,exo-file-manager.desktop,exo-mail-reader.desktop,exo-web-browser.desktop" >/root/.config/xfce4/panel/whiskermenu-1.rc + echo "favorites=exo-terminal-emulator.desktop,exo-file-manager.desktop,exo-mail-reader.desktop,exo-web-browser.desktop" >/home/live/.config/xfce4/panel/whiskermenu-1.rc + elif [ $DISTRIBUTION = "bullseye" ]; then + echo "favorites=xfce4-terminal-emulator.desktop,xfce4-file-manager.desktop,xfce4-web-browser.desktop,xfce4-mail-reader.desktop" >/etc/skel/.config/xfce4/panel/whiskermenu-1.rc + echo "favorites=xfce4-terminal-emulator.desktop,xfce4-file-manager.desktop,xfce4-web-browser.desktop,xfce4-mail-reader.desktop" >/root/.config/xfce4/panel/whiskermenu-1.rc + echo "favorites=xfce4-terminal-emulator.desktop,xfce4-file-manager.desktop,xfce4-web-browser.desktop,xfce4-mail-reader.desktop" >/home/live/.config/xfce4/panel/whiskermenu-1.rc + fi + cat <>/etc/skel/.config/xfce4/panel/whiskermenu-1.rc +recent= +button-icon=/usr/share/pixmaps/MiniOS-white.svg +button-single-row=false +show-button-title=false +show-button-icon=true +launcher-show-name=true +launcher-show-description=false +launcher-show-tooltip=true +item-icon-size=2 +hover-switch-category=false +category-show-name=true +category-icon-size=1 +load-hierarchy=false +view-as-icons=false +default-category=0 +recent-items-max=10 +favorites-in-recent=true +position-search-alternate=true +position-commands-alternate=false +position-categories-alternate=true +stay-on-focus-out=false +confirm-session-command=true +menu-width=450 +menu-height=500 +menu-opacity=100 +command-settings=xfce4-settings-manager +show-command-settings=false +command-lockscreen=xflock4 +show-command-lockscreen=false +command-switchuser=dm-tool switch-to-greeter +show-command-switchuser=false +command-logoutuser=xfce4-session-logout --logout --fast +show-command-logoutuser=false +command-restart=xfce4-session-logout --reboot --fast +show-command-restart=false +command-shutdown=xfce4-session-logout --halt --fast +show-command-shutdown=false +command-suspend=xfce4-session-logout --suspend +show-command-suspend=false +command-hibernate=xfce4-session-logout --hibernate +show-command-hibernate=false +command-logout=xfce4-session-logout +show-command-logout=true +command-menueditor=menulibre +show-command-menueditor=true +command-profile=mugshot +show-command-profile=false +search-actions=5 + +[action0] +name=Man Pages +pattern=# +command=exo-open --launch TerminalEmulator man %s +regex=false + +[action1] +name=Web Search +pattern=? +command=exo-open --launch WebBrowser https://duckduckgo.com/?q=%u +regex=false + +[action2] +name=Wikipedia +pattern=!w +command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u +regex=false + +[action3] +name=Run in Terminal +pattern=! +command=exo-open --launch TerminalEmulator %s +regex=false + +[action4] +name=Open URI +pattern=^(file|http|https):\\/\\/(.*)$ +command=exo-open \\0 +regex=true + + +EOF + cat <>/root/.config/xfce4/panel/whiskermenu-1.rc +recent= +button-icon=/usr/share/pixmaps/MiniOS-white.svg +button-single-row=false +show-button-title=false +show-button-icon=true +launcher-show-name=true +launcher-show-description=false +launcher-show-tooltip=true +item-icon-size=2 +hover-switch-category=false +category-show-name=true +category-icon-size=1 +load-hierarchy=false +view-as-icons=false +default-category=0 +recent-items-max=10 +favorites-in-recent=true +position-search-alternate=true +position-commands-alternate=false +position-categories-alternate=true +stay-on-focus-out=false +confirm-session-command=true +menu-width=450 +menu-height=500 +menu-opacity=100 +command-settings=xfce4-settings-manager +show-command-settings=false +command-lockscreen=xflock4 +show-command-lockscreen=false +command-switchuser=dm-tool switch-to-greeter +show-command-switchuser=false +command-logoutuser=xfce4-session-logout --logout --fast +show-command-logoutuser=false +command-restart=xfce4-session-logout --reboot --fast +show-command-restart=false +command-shutdown=xfce4-session-logout --halt --fast +show-command-shutdown=false +command-suspend=xfce4-session-logout --suspend +show-command-suspend=false +command-hibernate=xfce4-session-logout --hibernate +show-command-hibernate=false +command-logout=xfce4-session-logout +show-command-logout=true +command-menueditor=menulibre +show-command-menueditor=true +command-profile=mugshot +show-command-profile=false +search-actions=5 + +[action0] +name=Man Pages +pattern=# +command=exo-open --launch TerminalEmulator man %s +regex=false + +[action1] +name=Web Search +pattern=? +command=exo-open --launch WebBrowser https://duckduckgo.com/?q=%u +regex=false + +[action2] +name=Wikipedia +pattern=!w +command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u +regex=false + +[action3] +name=Run in Terminal +pattern=! +command=exo-open --launch TerminalEmulator %s +regex=false + +[action4] +name=Open URI +pattern=^(file|http|https):\\/\\/(.*)$ +command=exo-open \\0 +regex=true + + +EOF + cat <>/home/live/.config/xfce4/panel/whiskermenu-1.rc +recent= +button-icon=/usr/share/pixmaps/MiniOS-white.svg +button-single-row=false +show-button-title=false +show-button-icon=true +launcher-show-name=true +launcher-show-description=false +launcher-show-tooltip=true +item-icon-size=2 +hover-switch-category=false +category-show-name=true +category-icon-size=1 +load-hierarchy=false +view-as-icons=false +default-category=0 +recent-items-max=10 +favorites-in-recent=true +position-search-alternate=true +position-commands-alternate=false +position-categories-alternate=true +stay-on-focus-out=false +confirm-session-command=true +menu-width=450 +menu-height=500 +menu-opacity=100 +command-settings=xfce4-settings-manager +show-command-settings=false +command-lockscreen=xflock4 +show-command-lockscreen=false +command-switchuser=dm-tool switch-to-greeter +show-command-switchuser=false +command-logoutuser=xfce4-session-logout --logout --fast +show-command-logoutuser=false +command-restart=xfce4-session-logout --reboot --fast +show-command-restart=false +command-shutdown=xfce4-session-logout --halt --fast +show-command-shutdown=false +command-suspend=xfce4-session-logout --suspend +show-command-suspend=false +command-hibernate=xfce4-session-logout --hibernate +show-command-hibernate=false +command-logout=xfce4-session-logout +show-command-logout=true +command-menueditor=menulibre +show-command-menueditor=true +command-profile=mugshot +show-command-profile=false +search-actions=5 + +[action0] +name=Man Pages +pattern=# +command=exo-open --launch TerminalEmulator man %s +regex=false + +[action1] +name=Web Search +pattern=? +command=exo-open --launch WebBrowser https://duckduckgo.com/?q=%u +regex=false + +[action2] +name=Wikipedia +pattern=!w +command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u +regex=false + +[action3] +name=Run in Terminal +pattern=! +command=exo-open --launch TerminalEmulator %s +regex=false + +[action4] +name=Open URI +pattern=^(file|http|https):\\/\\/(.*)$ +command=exo-open \\0 +regex=true + + +EOF + #echo $WHISKERMENU >>/etc/skel/.config/xfce4/panel/whiskermenu-1.rc + #echo $WHISKERMENU >>/root/.config/xfce4/panel/whiskermenu-1.rc + #echo $WHISKERMENU >>/home/live/.config/xfce4/panel/whiskermenu-1.rc +else + #read -r -d MINIMAL_PANEL '' </etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +EOF + cat </root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +EOF + cat </home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +EOF + #echo $MINIMAL_PANEL >>/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml + #echo $MINIMAL_PANEL >>/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml + #echo $MINIMAL_PANEL >>/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +fi + +if [ $PACKAGE_VARIANT = "minimal" ]; then + cat </etc/skel/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=pcmanfm +WebBrowser= + +EOF + cat </home/live/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=pcmanfm +WebBrowser= + +EOF + cat </root/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=pcmanfm +WebBrowser= + +EOF + +elif [ $PACKAGE_VARIANT = "standard" ]; then + cat </etc/skel/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=Thunar +WebBrowser= + +EOF + cat </home/live/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=Thunar +WebBrowser= + +EOF + cat </root/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=Thunar +WebBrowser= + +EOF +fi diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/minimal.list b/linux-live/unusedmodules/03-xfce-desktop.old/minimal.list new file mode 100644 index 0000000..6ba5346 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/minimal.list @@ -0,0 +1,15 @@ +dbus-x11 +slim +libxfce4ui-utils +pcmanfm +xfce4-appfinder +xfce4-panel +xfce4-session +xfce4-settings +xfconf +xfdesktop4 +xfwm4 +greybird-gtk-theme +volumeicon-alsa +xfce4-xkb-plugin +xfce4-battery-plugin \ No newline at end of file diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/postinstall b/linux-live/unusedmodules/03-xfce-desktop.old/postinstall new file mode 100644 index 0000000..88510ff --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/postinstall @@ -0,0 +1,189 @@ +#!/bin/bash + +#(cd /rootcopy && cp --parents -afr * /) + +# create user directories +for dir in Desktop Documents Downloads Music Pictures Public Templates Videos; do + mkdir -p /home/live/$dir >>$OUTPUT 2>&1 + mkdir -p /root/$dir >>$OUTPUT 2>&1 +done + +rm -f /usr/share/backgrounds/xfce/* +ln -s /usr/share/backgrounds/MiniOS-wallpaper.svg /usr/share/backgrounds/xfce/xfce-verticals.png +ln -s /usr/share/backgrounds/MiniOS-wallpaper.svg /usr/share/backgrounds/xfce/xfce-teal.jpg + +if [ $PACKAGE_VARIANT = "standard" ]; then + rm -f /usr/share/applications/pavucontrol.desktop +fi + +if grep slim $SCRIPT_DIR/$PACKAGE_VARIANT.list >>$OUTPUT 2>&1; then + sed -i 's,# hidecursor false,hidecursor false,g' /etc/slim.conf + sed -i 's,screenshot_cmd scrot /root/slim.png,# screenshot_cmd scrot /root/slim.png,g' /etc/slim.conf + sed -i 's,#default_user simone,default_user live,g' /etc/slim.conf + sed -i 's,#auto_login no,auto_login yes,g' /etc/slim.conf + sed -i 's,current_theme debian-softwaves,current_theme minios,g' /etc/slim.conf +fi + +if [ $PACKAGE_VARIANT = "minimal" ]; then + cat <>/usr/share/applications/taskmanager.desktop +[Desktop Entry] +Name=Task Manager +Name[ar]=مدير المهام +Name[ast]=Xestor de xeres +Name[be]=Кіраўнік задач +Name[bg]=Мениджър на задачи +Name[ca]=Gestor de tasques +Name[cs]=Správce úloh +Name[da]=Opgavehåndtering +Name[de]=Taskmanager +Name[el]=Διαχειριστής εργασιών +Name[en_AU]=Task Manager +Name[en_GB]=Task Manager +Name[es]=Gestor de tareas +Name[eu]=Zeregin kudeatzailea +Name[fi]=Tehtävienhallinta +Name[fr]=Gestionnaire de tâches +Name[gl]=Xestor de tarefas +Name[he]=מנהל משימות +Name[hr]=Upravitelj zadacima +Name[hu]=Feladatkezelő +Name[id]=Manajer Tugas +Name[is]=Verkefnastjóri +Name[it]=Gestore dei processi +Name[ja]=タスクマネージャー +Name[kk]=Үрдістерді басқарушысы +Name[ko]=작업 관리자 +Name[lt]=Užduočių tvarkytuvė +Name[ms]=Pengurus Tugas +Name[nb]=Oppgavebehandler +Name[nl]=Taakbeheerder +Name[oc]=Gestionari de prètzfaches +Name[pl]=Menedżer zadań +Name[pt]=Gestor de tarefas +Name[pt_BR]=Gerenciador de tarefas +Name[ru]=Диспетчер задач +Name[sk]=Správca úloh +Name[sl]=Upravljalnik nalog +Name[sq]=Përgjegjës Aktesh +Name[sr]=Управник задатака +Name[sv]=Aktivitetshanterare +Name[te]=కర్తవ్య నిర్వాహకం +Name[th]=โปรแกรมจัดการทาสก์ +Name[tr]=Görev Yöneticisi +Name[ug]=ۋەزىپە باشقۇرغۇ +Name[uk]=Диспетчер задач +Name[vi]=Quản lý tác vụ +Name[zh_CN]=任务管理器 +Name[zh_HK]=工作管理員 +Name[zh_TW]=工作管理員 +Comment=Easy to use task manager +Comment[ar]=من السهل إستخدام مدير المهام +Comment[ast]=Xestor de xeres cenciellu d'usar +Comment[be]=Зручны ў выкарыстанні кіраўнік задач +Comment[bg]=Лесен за използване мениджър на задачи +Comment[ca]=Gestor de tasques fàcil d'utilitzar +Comment[cs]=Snadno použitelný správce úloh +Comment[da]=Opgavehåndtering som er nem at bruge +Comment[de]=Prozessverwaltung mit einfacher Bedienung +Comment[el]=Εύκολος στην χρήση διαχειριστής διεργασιών +Comment[en_AU]=Easy to use task manager +Comment[en_GB]=Easy to use task manager +Comment[es]=Un gestor de tareas fácil de usar +Comment[eu]= Zeregin kudeatzaile erabilerraz bat da +Comment[fi]=Helppokäyttöinen tehtävienhallinta +Comment[fr]=Gestionnaire de tâches simple d’utilisation +Comment[gl]=Xestor de tarefas fácil de usar +Comment[he]=מנהל משימות קל לשימוש +Comment[hr]=Lagan za korištenje upravitelj zadacima +Comment[hu]=Egyszerűen használható feladatkezelő +Comment[id]=Manajer tugas yang mudah digunakan +Comment[is]=Einfaldur og auðveldur verkefnastjóri +Comment[it]=Gestore dei processi di semplice utilizzo +Comment[ja]=使いやすいタスクマネージャーです +Comment[kk]=Жүйе үрдістерін ыңғайлы басқару +Comment[ko]=쓰기 쉬운 작업관리자 +Comment[lt]=Lengvai naudojama užduočių tvarkytuvė +Comment[ms]=Pengurus tugas yang mudah digunakan +Comment[nb]=Lett å bruke oppgavebehandler +Comment[nl]=Gemakkelijk te gebruiken taakbeheerder +Comment[oc]=De bon utilizar : lo gestionari de prètzfaches +Comment[pl]=Zarządza uruchomionymi procesami +Comment[pt]=Gestor de tarefas fácil de usar +Comment[pt_BR]=Um gerenciador de tarefas fácil de usar +Comment[ru]=Простой диспетчер задач +Comment[sk]=Správca úloh s jednoduchým používaním +Comment[sl]=Enostaven upravljalnik nalog +Comment[sq]=Përgjegjës aktesh i lehtë për t’u përdorur +Comment[sr]=Управник задатака лак за коришћење +Comment[sv]=Lättanvänd aktivitetshanterare +Comment[te]=వాడుటకు సరళమైన కర్తవ్య నిర్వాహకం +Comment[th]=โปรแกรมจัดการทาสก์สะดวกใช้ +Comment[tr]=Kullanımı kolay görev yöneticisi +Comment[ug]=ئىشلىتىشكە ئەپلىك ۋەزىپە باشقۇرغۇ +Comment[uk]=Простий у використанні диспетчер задач +Comment[vi]=Trình quản lý tác vụ dễ dùng +Comment[zh_CN]=易用的任务管理器 +Comment[zh_HK]=易用的工作管理員 +Comment[zh_TW]=易於使用的工作管理員 +GenericName=Task Manager +GenericName[ar]=مدير المهام +GenericName[ast]=Xestor de xeres +GenericName[be]=Кіраўнік задач +GenericName[bg]=Мениджър на задачи +GenericName[ca]=Gestor de tasques +GenericName[cs]=Správce úloh +GenericName[da]=Opgavehåndtering +GenericName[de]=Taskmanager +GenericName[el]=Διαχειριστής εργασιών +GenericName[en_AU]=Task Manager +GenericName[en_GB]=Task Manager +GenericName[es]=Gestor de tareas +GenericName[eu]=Zeregin kudeatzailea +GenericName[fi]=Tehtävienhallinta +GenericName[fr]=Gestionnaire de tâches +GenericName[gl]=Xestor de tarefas +GenericName[he]=מנהל משימות +GenericName[hr]=Upravitelj zadacima +GenericName[hu]=Feladatkezelő +GenericName[id]=Manajer Tugas +GenericName[is]=Verkefnastjóri +GenericName[it]=Gestore dei processi +GenericName[ja]=タスクマネージャー +GenericName[kk]=Үрдістерді басқарушысы +GenericName[ko]=작업 관리자 +GenericName[lt]=Užduočių tvarkytuvė +GenericName[ms]=Pengurus Tugas +GenericName[nb]=Oppgavebehandler +GenericName[nl]=Taakbeheerder +GenericName[oc]=Gestionari de prètzfaches +GenericName[pl]=Menedżer zadań +GenericName[pt]=Gestor de tarefas +GenericName[pt_BR]=Gerenciador de tarefas +GenericName[ru]=Диспетчер задач +GenericName[sk]=Správca úloh +GenericName[sl]=Upravljalnik nalog +GenericName[sq]=Përgjegjës Aktesh +GenericName[sr]=Управник задатака +GenericName[sv]=Aktivitetshanterare +GenericName[te]=కర్తవ్య నిర్వాహకం +GenericName[th]=โปรแกรมจัดการทาสก์ +GenericName[tr]=Görev Yöneticisi +GenericName[ug]=ۋەزىپە باشقۇرغۇ +GenericName[uk]=Диспетчер задач +GenericName[vi]=Quản lý tác vụ +GenericName[zh_CN]=任务管理器 +GenericName[zh_HK]=工作管理員 +GenericName[zh_TW]=工作管理員 +Exec=xterm -e 'htop' +Icon=utilities-system-monitor +Terminal=false +StartupNotify=true +Type=Application +Categories=System;Utility; + +EOF +fi + +rm -Rf /usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 + +update-alternatives --set x-terminal-emulator /usr/bin/xterm >>$OUTPUT 2>&1 diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-ac-adapter.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-ac-adapter.svg new file mode 100644 index 0000000..f702a54 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-ac-adapter.svg @@ -0,0 +1,472 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution-charging.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution-charging.svg new file mode 100644 index 0000000..4fb1245 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution-charging.svg @@ -0,0 +1,322 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution-symbolic.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution-symbolic.svg new file mode 100644 index 0000000..8d60e10 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution.svg new file mode 100644 index 0000000..07cf41e --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-caution.svg @@ -0,0 +1,365 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-empty-charging.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-empty-charging.svg new file mode 100644 index 0000000..45ccf8d --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-empty-charging.svg @@ -0,0 +1,308 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-empty.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-empty.svg new file mode 100644 index 0000000..80bd5e1 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-empty.svg @@ -0,0 +1,451 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full-charged.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full-charged.svg new file mode 100644 index 0000000..bc28a46 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full-charged.svg @@ -0,0 +1,255 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full-charging.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full-charging.svg new file mode 100644 index 0000000..f655e9c --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full-charging.svg @@ -0,0 +1,263 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full.svg new file mode 100644 index 0000000..2b093e1 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-full.svg @@ -0,0 +1,255 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-good-charging.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-good-charging.svg new file mode 100644 index 0000000..56e0e18 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-good-charging.svg @@ -0,0 +1,314 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-good.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-good.svg new file mode 100644 index 0000000..bdf7600 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-good.svg @@ -0,0 +1,371 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low-charging.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low-charging.svg new file mode 100644 index 0000000..526baf2 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low-charging.svg @@ -0,0 +1,304 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low-symbolic.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low-symbolic.svg new file mode 100644 index 0000000..2214891 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low-symbolic.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low.svg new file mode 100644 index 0000000..03f2e71 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-low.svg @@ -0,0 +1,337 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-missing.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-missing.svg new file mode 100644 index 0000000..9b8c436 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy-postinstall/usr/share/icons/hicolor/scalable/apps/xfce4-battery-missing.svg @@ -0,0 +1,371 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/default/nodm b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/default/nodm new file mode 100644 index 0000000..5be8f85 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/default/nodm @@ -0,0 +1,32 @@ +# nodm configuration + +# Set NODM_ENABLED to something different than 'false' to enable nodm +NODM_ENABLED=true + +# User to autologin for +NODM_USER=live + +# First vt to try when looking for free VTs +NODM_FIRST_VT=7 + +# X session +NODM_XSESSION=/etc/X11/Xsession + +# Options for nodm itself +NODM_OPTIONS= + +# Options for the X server. +# +# Format: [/usr/bin/] [:] +# +# The Xserver executable and the display name can be omitted, but should +# be placed in front, if nodm's defaults shall be overridden. +NODM_X_OPTIONS='-nolisten tcp' + +# If an X session will run for less than this time in seconds, nodm will wait an +# increasing bit of time before restarting the session. +NODM_MIN_SESSION_TIME=60 + +# Timeout (in seconds) to wait for X to be ready to accept connections. If X is +# not ready before this timeout, it is killed and restarted. +NODM_X_TIMEOUT=300 diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla similarity index 100% rename from linux-live/modules/03-xfce-desktop/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla similarity index 100% rename from linux-live/modules/03-xfce-desktop/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.udisks.pkla b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.udisks.pkla new file mode 100644 index 0000000..f1d1bdb --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.udisks.pkla @@ -0,0 +1,6 @@ +[Local Users] +Identity=unix-group:plugdev +Action=org.freedesktop.udisks.* +ResultAny=yes +ResultInactive=no +ResultActive=yes \ No newline at end of file diff --git a/linux-live/modules/03-xfce-desktop/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.upower.pkla b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.upower.pkla similarity index 100% rename from linux-live/modules/03-xfce-desktop/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.upower.pkla rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/polkit-1/localauthority/50-local.d/org.freedesktop.upower.pkla diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xarchiver/xarchiverrc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xarchiver/xarchiverrc new file mode 100644 index 0000000..f65e2a5 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xarchiver/xarchiverrc @@ -0,0 +1,20 @@ +[xarchiver] +preferred_format=0 +confirm_deletion=true +sort_filename_content=false +store_output=false +icon_size=0 +show_archive_comment=false +show_sidebar=false +show_location_bar=false +preferred_temp_dir=/tmp +allow_sub_dir=0 +overwrite=false +full_path=true +touch=false +freshen=false +update=false +store_path=false +recurse=true +solid_archive=false +remove_files=false diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/battery-10.rc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/battery-10.rc new file mode 100644 index 0000000..170c036 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/battery-10.rc @@ -0,0 +1,20 @@ +display_label=false +display_icon=false +display_power=false +display_percentage=false +display_bar=true +display_time=false +tooltip_display_percentage=true +tooltip_display_time=true +low_percentage=10 +critical_percentage=5 +action_on_low=1 +action_on_critical=1 +hide_when_full=-415324144 +colorA=rgb(136,136,255) +colorH=rgb(0,255,0) +colorL=rgb(255,255,0) +colorC=rgb(255,0,0) +command_on_low= +command_on_critical= + diff --git a/linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-9/16233231141.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop similarity index 100% rename from linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-9/16233231141.desktop rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop diff --git a/linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-10/16233231142.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-4/FileManager.desktop similarity index 100% rename from linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-10/16233231142.desktop rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-4/FileManager.desktop diff --git a/linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-11/16233231143.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-5/WebBrowser.desktop similarity index 100% rename from linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-11/16233231143.desktop rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/panel/launcher-5/WebBrowser.desktop diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml new file mode 100644 index 0000000..0559966 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml new file mode 100644 index 0000000..5dd9176 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml similarity index 100% rename from linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 0000000..f3c9034 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml similarity index 94% rename from linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml index 861c741..276b7ec 100644 --- a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -4,7 +4,7 @@ - + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml new file mode 100644 index 0000000..0693440 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml similarity index 97% rename from linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml index 20d4ffc..a7d7fe7 100644 --- a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -56,7 +56,7 @@ - + @@ -70,18 +70,18 @@ - + + + + + + - - - - - diff --git a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml similarity index 75% rename from linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml rename to linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml index 9a3f20f..4d5554e 100644 --- a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -2,7 +2,7 @@ - + @@ -14,11 +14,11 @@ - + - - - + + + @@ -32,8 +32,11 @@ - + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.xinitrc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.xinitrc new file mode 100644 index 0000000..41eda7a --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.xinitrc @@ -0,0 +1,16 @@ +#!/bin/sh +# +# ~/.xinitrc +# +# Executed by startx (run your window manager from here) + +if [ -d /etc/X11/xinit/xinitrc.d ]; then + for f in /etc/X11/xinit/xinitrc.d/*; do + [ -x "$f" ] && . "$f" + done + unset f +fi + +xrdb -merge .Xresources + +exec xfce4-session \ No newline at end of file diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.xsession b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.xsession new file mode 100644 index 0000000..8658258 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/etc/skel/.xsession @@ -0,0 +1 @@ +xfce4-session \ No newline at end of file diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/chromium/Default/Preferences b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/chromium/Default/Preferences new file mode 100644 index 0000000..5bfddb0 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/chromium/Default/Preferences @@ -0,0 +1,38 @@ +{ + "AudioCaptureAllowed": false, + "account_id_migration_state": 2, + "account_tracker_service_last_update": "13154004704520013", + "alternate_error_pages": { + "enabled": false + }, + "bookmark_bar": { + "show_on_all_tabs": false + }, + "browser": { + "check_default_browser": false, + "has_seen_welcome_page": true, + "show_home_button": false, + "window_placement": { + "bottom": 10, + "left": 10, + "maximized": true, + "right": 10, + "top": 10 + } + }, + "extensions": { + "theme": { + "use_system": true + } + }, + "ntp": { + "most_visited_blacklist": { + "c8e0afd1da1d9e29511240861f795a5a": null, + "eacc8c3ad0b50bd698ef8752d5ee24b6": null + } + }, + "safebrowsing": { + "enabled": false, + "scout_group_selected": true + } +} \ No newline at end of file diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/chromium/First Run b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/chromium/First Run new file mode 100644 index 0000000..e69de29 diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xarchiver/xarchiverrc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xarchiver/xarchiverrc new file mode 100644 index 0000000..f65e2a5 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xarchiver/xarchiverrc @@ -0,0 +1,20 @@ +[xarchiver] +preferred_format=0 +confirm_deletion=true +sort_filename_content=false +store_output=false +icon_size=0 +show_archive_comment=false +show_sidebar=false +show_location_bar=false +preferred_temp_dir=/tmp +allow_sub_dir=0 +overwrite=false +full_path=true +touch=false +freshen=false +update=false +store_path=false +recurse=true +solid_archive=false +remove_files=false diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/battery-10.rc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/battery-10.rc new file mode 100644 index 0000000..170c036 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/battery-10.rc @@ -0,0 +1,20 @@ +display_label=false +display_icon=false +display_power=false +display_percentage=false +display_bar=true +display_time=false +tooltip_display_percentage=true +tooltip_display_time=true +low_percentage=10 +critical_percentage=5 +action_on_low=1 +action_on_critical=1 +hide_when_full=-415324144 +colorA=rgb(136,136,255) +colorH=rgb(0,255,0) +colorL=rgb(255,255,0) +colorC=rgb(255,0,0) +command_on_low= +command_on_critical= + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop new file mode 100644 index 0000000..e51e56e --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch TerminalEmulator +Icon=utilities-terminal +StartupNotify=true +Terminal=false +Categories=Utility;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-AppStream-Ignore=True +Name=Terminal Emulator +Comment=Use the command line +X-XFCE-Source=file:///usr/share/applications/exo-terminal-emulator.desktop diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-4/FileManager.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-4/FileManager.desktop new file mode 100644 index 0000000..598b0c9 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-4/FileManager.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch FileManager %u +Icon=system-file-manager +StartupNotify=true +Terminal=false +Categories=Utility;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-XFCE-MimeType=inode/directory;x-scheme-handler/trash; +X-AppStream-Ignore=True +Name=File Manager +Comment=Browse the file system +X-XFCE-Source=file:///usr/share/applications/exo-file-manager.desktop diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-5/WebBrowser.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-5/WebBrowser.desktop new file mode 100644 index 0000000..4662377 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/launcher-5/WebBrowser.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch WebBrowser %u +Icon=web-browser +StartupNotify=true +Terminal=false +Categories=Network;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-XFCE-MimeType=x-scheme-handler/http;x-scheme-handler/https; +X-AppStream-Ignore=True +Name=Web Browser +Comment=Browse the web +X-XFCE-Source=file:///usr/share/applications/exo-web-browser.desktop diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/whiskermenu-1.rc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/whiskermenu-1.rc new file mode 100644 index 0000000..be72781 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/panel/whiskermenu-1.rc @@ -0,0 +1,80 @@ +favorites=xfce4-terminal-emulator.desktop,xfce4-file-manager.desktop,xfce4-web-browser.desktop,xfce4-mail-reader.desktop +recent= +button-icon=/usr/share/pixmaps/MiniOS-white.svg +button-single-row=false +show-button-title=false +show-button-icon=true +launcher-show-name=true +launcher-show-description=false +launcher-show-tooltip=true +item-icon-size=2 +hover-switch-category=false +category-show-name=true +category-icon-size=1 +load-hierarchy=false +view-as-icons=false +default-category=0 +recent-items-max=10 +favorites-in-recent=true +position-search-alternate=true +position-commands-alternate=false +position-categories-alternate=true +stay-on-focus-out=false +confirm-session-command=true +menu-width=450 +menu-height=500 +menu-opacity=100 +command-settings=xfce4-settings-manager +show-command-settings=false +command-lockscreen=xflock4 +show-command-lockscreen=false +command-switchuser=dm-tool switch-to-greeter +show-command-switchuser=false +command-logoutuser=xfce4-session-logout --logout --fast +show-command-logoutuser=false +command-restart=xfce4-session-logout --reboot --fast +show-command-restart=false +command-shutdown=xfce4-session-logout --halt --fast +show-command-shutdown=false +command-suspend=xfce4-session-logout --suspend +show-command-suspend=false +command-hibernate=xfce4-session-logout --hibernate +show-command-hibernate=false +command-logout=xfce4-session-logout +show-command-logout=true +command-menueditor=menulibre +show-command-menueditor=true +command-profile=mugshot +show-command-profile=false +search-actions=5 + +[action0] +name=Man Pages +pattern=# +command=exo-open --launch TerminalEmulator man %s +regex=false + +[action1] +name=Web Search +pattern=? +command=exo-open --launch WebBrowser https://duckduckgo.com/?q=%u +regex=false + +[action2] +name=Wikipedia +pattern=!w +command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u +regex=false + +[action3] +name=Run in Terminal +pattern=! +command=exo-open --launch TerminalEmulator %s +regex=false + +[action4] +name=Open URI +pattern=^(file|http|https):\\/\\/(.*)$ +command=exo-open \\0 +regex=true + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml new file mode 100644 index 0000000..e7e0bcd --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml new file mode 100644 index 0000000..0559966 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml new file mode 100644 index 0000000..5dd9176 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml new file mode 100644 index 0000000..ab0d597 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 0000000..f3c9034 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml new file mode 100644 index 0000000..276b7ec --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml new file mode 100644 index 0000000..0693440 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml new file mode 100644 index 0000000..a7d7fe7 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml new file mode 100644 index 0000000..4d5554e --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.xinitrc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.xinitrc new file mode 100644 index 0000000..41eda7a --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.xinitrc @@ -0,0 +1,16 @@ +#!/bin/sh +# +# ~/.xinitrc +# +# Executed by startx (run your window manager from here) + +if [ -d /etc/X11/xinit/xinitrc.d ]; then + for f in /etc/X11/xinit/xinitrc.d/*; do + [ -x "$f" ] && . "$f" + done + unset f +fi + +xrdb -merge .Xresources + +exec xfce4-session \ No newline at end of file diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.xsession b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.xsession new file mode 100644 index 0000000..8658258 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/home/live/.xsession @@ -0,0 +1 @@ +xfce4-session \ No newline at end of file diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xarchiver/xarchiverrc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xarchiver/xarchiverrc new file mode 100644 index 0000000..f65e2a5 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xarchiver/xarchiverrc @@ -0,0 +1,20 @@ +[xarchiver] +preferred_format=0 +confirm_deletion=true +sort_filename_content=false +store_output=false +icon_size=0 +show_archive_comment=false +show_sidebar=false +show_location_bar=false +preferred_temp_dir=/tmp +allow_sub_dir=0 +overwrite=false +full_path=true +touch=false +freshen=false +update=false +store_path=false +recurse=true +solid_archive=false +remove_files=false diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/battery-10.rc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/battery-10.rc new file mode 100644 index 0000000..170c036 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/battery-10.rc @@ -0,0 +1,20 @@ +display_label=false +display_icon=false +display_power=false +display_percentage=false +display_bar=true +display_time=false +tooltip_display_percentage=true +tooltip_display_time=true +low_percentage=10 +critical_percentage=5 +action_on_low=1 +action_on_critical=1 +hide_when_full=-415324144 +colorA=rgb(136,136,255) +colorH=rgb(0,255,0) +colorL=rgb(255,255,0) +colorC=rgb(255,0,0) +command_on_low= +command_on_critical= + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop new file mode 100644 index 0000000..e51e56e --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-3/TerminalEmulator.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch TerminalEmulator +Icon=utilities-terminal +StartupNotify=true +Terminal=false +Categories=Utility;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-AppStream-Ignore=True +Name=Terminal Emulator +Comment=Use the command line +X-XFCE-Source=file:///usr/share/applications/exo-terminal-emulator.desktop diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-4/FileManager.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-4/FileManager.desktop new file mode 100644 index 0000000..598b0c9 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-4/FileManager.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch FileManager %u +Icon=system-file-manager +StartupNotify=true +Terminal=false +Categories=Utility;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-XFCE-MimeType=inode/directory;x-scheme-handler/trash; +X-AppStream-Ignore=True +Name=File Manager +Comment=Browse the file system +X-XFCE-Source=file:///usr/share/applications/exo-file-manager.desktop diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-5/WebBrowser.desktop b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-5/WebBrowser.desktop new file mode 100644 index 0000000..4662377 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/panel/launcher-5/WebBrowser.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch WebBrowser %u +Icon=web-browser +StartupNotify=true +Terminal=false +Categories=Network;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-XFCE-MimeType=x-scheme-handler/http;x-scheme-handler/https; +X-AppStream-Ignore=True +Name=Web Browser +Comment=Browse the web +X-XFCE-Source=file:///usr/share/applications/exo-web-browser.desktop diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml new file mode 100644 index 0000000..0559966 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml new file mode 100644 index 0000000..5dd9176 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml new file mode 100644 index 0000000..ab0d597 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 0000000..f3c9034 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml new file mode 100644 index 0000000..276b7ec --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml new file mode 100644 index 0000000..0693440 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml new file mode 100644 index 0000000..a7d7fe7 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml new file mode 100644 index 0000000..4d5554e --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.xinitrc b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.xinitrc new file mode 100644 index 0000000..41eda7a --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.xinitrc @@ -0,0 +1,16 @@ +#!/bin/sh +# +# ~/.xinitrc +# +# Executed by startx (run your window manager from here) + +if [ -d /etc/X11/xinit/xinitrc.d ]; then + for f in /etc/X11/xinit/xinitrc.d/*; do + [ -x "$f" ] && . "$f" + done + unset f +fi + +xrdb -merge .Xresources + +exec xfce4-session \ No newline at end of file diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.xsession b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.xsession new file mode 100644 index 0000000..8658258 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/root/.xsession @@ -0,0 +1 @@ +xfce4-session \ No newline at end of file diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/backgrounds/MiniOS-wallpaper.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/backgrounds/MiniOS-wallpaper.svg new file mode 100644 index 0000000..9c8639a --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/backgrounds/MiniOS-wallpaper.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/pixmaps/MiniOS-white.svg b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/pixmaps/MiniOS-white.svg new file mode 100644 index 0000000..ca13046 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/pixmaps/MiniOS-white.svg @@ -0,0 +1,149 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/background.png b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/background.png new file mode 100644 index 0000000000000000000000000000000000000000..966915d128cffba50301bb28569af52b5dcf9f44 GIT binary patch literal 78717 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 literal 0 HcmV?d00001 diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/panel.png b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..8d01ac85b64ac85981e66f993b068f0ae85d9273 GIT binary patch literal 8402 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 W?-7diGmoY*KtV?3ZMl^3=YIo_qAooE literal 0 HcmV?d00001 diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/slim.theme b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/slim.theme new file mode 100644 index 0000000..b70182b --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/rootcopy/usr/share/slim/themes/minios/slim.theme @@ -0,0 +1,36 @@ +# greeny_dark theme for SLIM +# by aditya shakya +# using artwork from some free html+css login templates on the internet + +# Messages (ie: shutdown) + +msg_color #b5cd60 +msg_font Sans:size=18:bold:dpi=75 +msg_x 50% +msg_y 30% + +# Session Name + +session_color #b5cd60 +session_font Sans:size=16:bold:dpi=75 +session_x 50% +session_y 90% + +# valid values: stretch, tile + +background_style stretch +background_color #f2f2f2 + +# Input controls + +input_panel_x 50% +input_panel_y 50% +input_name_x 200 +input_name_y 78 +input_pass_x 200 +input_pass_y 145 +input_font Sans:size=14:dpi=75 +input_color #b5cd60 + +username_msg +password_msg diff --git a/linux-live/unusedmodules/03-xfce-desktop.old/standard.list b/linux-live/unusedmodules/03-xfce-desktop.old/standard.list new file mode 100644 index 0000000..7e7a013 --- /dev/null +++ b/linux-live/unusedmodules/03-xfce-desktop.old/standard.list @@ -0,0 +1,24 @@ +dbus-x11 +slim +libxfce4ui-utils +thunar +thunar-volman +gvfs-backends +samba-common +avahi-daemon +tumbler +xfce4-appfinder +xfce4-panel +xfce4-session +xfce4-settings +xfconf +xfdesktop4 +xfwm4 +greybird-gtk-theme +xfce4-pulseaudio-plugin +pulseaudio +pavucontrol +xfce4-xkb-plugin +xfce4-battery-plugin +xfce4-whiskermenu-plugin +network-manager-gnome \ No newline at end of file diff --git a/linux-live/unusedmodules/05-chromium/install b/linux-live/unusedmodules/05-chromium/install index fe880a2..b9a33e7 100644 --- a/linux-live/unusedmodules/05-chromium/install +++ b/linux-live/unusedmodules/05-chromium/install @@ -1,13 +1,57 @@ #!/bin/bash -apt-get update >>$OUTPUT 2>&1 -apt-get install --yes --no-install-recommends chromium chromium-sandbox >>$OUTPUT 2>&1 +set -e # exit on error +set -o pipefail # exit on pipeline error +set -u # treat unset variable as error -echo 'export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --disk-cache-dir=/dev/null --disk-cache-size=1"' >>/etc/chromium.d/default-flags +SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" -rm -Rf /usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 -#rm -Rf /root/.fluxbox -#rm -Rf /root/.fluxbox/kblayout -#rm -Rf /root/.gtk-bookmarks -#rm -Rf /var/lib/wicd/dhclient.conf -rm -Rf /usr/share/applications/chromium.desktop >>$OUTPUT 2>&1 +# install packages +if [ -f $SCRIPT_DIR/$PACKAGE_VARIANT.list ]; then + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD update >>$OUTPUT 2>&1 && + #sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ + $(grep -vE "^\s*#" $SCRIPT_DIR/$PACKAGE_VARIANT.list | tr "\n" " ") >>$OUTPUT 2>&1 +fi + +if [ $PACKAGE_VARIANT = "minimal" ]; then + cat </etc/skel/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=pcmanfm +WebBrowser=chromium + +EOF + cat </home/live/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=pcmanfm +WebBrowser=chromium + +EOF + cat </root/.config/xfce4/helpers.rc +TerminalEmulator=xterm +FileManager=pcmanfm +WebBrowser=chromium --no-sandbox + +EOF + +elif [ $PACKAGE_VARIANT = "standard" ]; then + cat </etc/skel/.config/xfce4/helpers.rc +TerminalEmulator=xfce4-terminal +FileManager=Thunar +WebBrowser=chromium + +EOF + cat </home/live/.config/xfce4/helpers.rc +TerminalEmulator=xfce4-terminal +FileManager=Thunar +WebBrowser=chromium + +EOF + cat </root/.config/xfce4/helpers.rc +TerminalEmulator=xfce4-terminal +FileManager=Thunar +WebBrowser=chromium --no-sandbox + +EOF +fi \ No newline at end of file diff --git a/linux-live/unusedmodules/05-chromium/minimal.list b/linux-live/unusedmodules/05-chromium/minimal.list new file mode 100644 index 0000000..e4f291d --- /dev/null +++ b/linux-live/unusedmodules/05-chromium/minimal.list @@ -0,0 +1,2 @@ +chromium +chromium-sandbox \ No newline at end of file diff --git a/linux-live/unusedmodules/05-chromium/postinstall b/linux-live/unusedmodules/05-chromium/postinstall new file mode 100644 index 0000000..a407c94 --- /dev/null +++ b/linux-live/unusedmodules/05-chromium/postinstall @@ -0,0 +1,3 @@ +#!/bin/bash + +rm -Rf /usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 diff --git a/linux-live/unusedmodules/05-chromium/rootcopy/usr/share/applications/chromium-root.desktop b/linux-live/unusedmodules/05-chromium/rootcopy/usr/share/applications/chromium-root.desktop new file mode 100755 index 0000000..d2f2569 --- /dev/null +++ b/linux-live/unusedmodules/05-chromium/rootcopy/usr/share/applications/chromium-root.desktop @@ -0,0 +1,140 @@ +[Desktop Entry] +Version=1.0 +Name=Chromium Web Browser [root] +Name[ast]=Restolador web Chromium [root] +Name[ca]=Navegador web Chromium [root] +Name[de]=Chromium-Webbrowser [root] +Name[es]=Navegador web Chromium [root] +Name[fr]=Navigateur Web Chromium [root] +Name[gl]=Navegador web Chromium [root] +Name[he]=דפדפן האינטרנט Chromium [root] +Name[hr]=Chromium web preglednik [root] +Name[hu]=Chromium webböngésző [root] +Name[id]=Peramban Web Chromium [root] +Name[it]=Browser web Chromium [root] +Name[ja]=Chromium ウェブ・ブラウザ [root] +Name[ko]=Chromium 웹 브라우저 [root] +Name[pt_BR]=Chromium Navegador da Internet [root] +Name[ru]=Веб-браузер Chromium [root] +Name[sl]=Chromium spletni brskalnik [root] +Name[sv]=Webbläsaren Chromium [root] +Name[ug]=Chromium توركۆرگۈ [root] +Name[zh_CN]=Chromium 网页浏览器 [root] +Name[zh_HK]=Chromium 網頁瀏覽器 [root] +Name[zh_TW]=Chromium 網頁瀏覽器 [root] +GenericName=Web Browser [root] +GenericName[ar]=متصفح الشبكة [root] +GenericName[ast]=Restolador web [root] +GenericName[bg]=Уеб браузър [root] +GenericName[bn]=ওয়েব ব্রাউজার [root] +GenericName[ca]=Navegador web [root] +GenericName[cs]=WWW prohlížeč [root] +GenericName[da]=Browser [root] +GenericName[de]=Webbrowser [root] +GenericName[el]=Περιηγητής ιστού [root] +GenericName[en_GB]=Web Browser [root] +GenericName[es]=Navegador web [root] +GenericName[et]=Veebibrauser [root] +GenericName[fi]=WWW-selain [root] +GenericName[fil]=Web Browser [root] +GenericName[fr]=Navigateur Web [root] +GenericName[gl]=Navegador web [root] +GenericName[gu]=વેબ બ્રાઉઝર [root] +GenericName[he]=דפדפן אינטרנט [root] +GenericName[hi]=वेब ब्राउज़र [root] +GenericName[hr]=Web preglednik [root] +GenericName[hu]=Webböngésző [root] +GenericName[id]=Peramban Web [root] +GenericName[it]=Browser web [root] +GenericName[ja]=ウェブ・ブラウザ [root] +GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ [root] +GenericName[ko]=웹 브라우저 [root] +GenericName[lt]=Žiniatinklio naršyklė [root] +GenericName[lv]=Tīmekļa pārlūks [root] +GenericName[ml]=വെബ് ബ്രൌസര്‍ [root] +GenericName[mr]=वेब ब्राऊजर [root] +GenericName[nb]=Nettleser [root] +GenericName[nl]=Webbrowser [root] +GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର [root] +GenericName[pl]=Przeglądarka WWW [root] +GenericName[pt]=Navegador Web [root] +GenericName[pt_BR]=Navegador da Internet [root] +GenericName[ro]=Navigator de Internet [root] +GenericName[ru]=Веб-браузер [root] +GenericName[sk]=WWW prehliadač [root] +GenericName[sl]=Spletni brskalnik [root] +GenericName[sr]=Интернет прегледник [root] +GenericName[sv]=Webbläsare [root] +GenericName[ta]=இணைய உலாவி [root] +GenericName[te]=మహాతల అన్వేషి [root] +GenericName[th]=เว็บเบราว์เซอร์ [root] +GenericName[tr]=Web Tarayıcı [root] +GenericName[ug]=توركۆرگۈ [root] +GenericName[uk]=Навігатор Тенет [root] +GenericName[vi]=Bộ duyệt Web [root] +GenericName[zh_CN]=网页浏览器 [root] +GenericName[zh_HK]=網頁瀏覽器 [root] +GenericName[zh_TW]=網頁瀏覽器 [root] +Comment=Access the Internet +Comment[ar]=الدخول إلى الإنترنت +Comment[ast]=Accesu a Internet +Comment[bg]=Достъп до интернет +Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন +Comment[ca]=Accediu a Internet +Comment[cs]=Přístup k internetu +Comment[da]=Få adgang til internettet +Comment[de]=Internetzugriff +Comment[el]=Πρόσβαση στο Διαδίκτυο +Comment[en_GB]=Access the Internet +Comment[es]=Acceda a Internet +Comment[et]=Pääs Internetti +Comment[fi]=Käytä internetiä +Comment[fil]=I-access ang Internet +Comment[fr]=Explorer le Web +Comment[gl]=Acceda a Internet +Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો +Comment[he]=גישה לאינטרנט +Comment[hi]=इंटरनेट तक पहुंच स्थापित करें +Comment[hr]=Pristupite Internetu +Comment[hu]=Az internet elérése +Comment[id]=Akses Internet +Comment[it]=Accesso a Internet +Comment[ja]=インターネットにアクセス +Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ +Comment[ko]=인터넷에 연결합니다 +Comment[lt]=Interneto prieiga +Comment[lv]=Piekļūt internetam +Comment[ml]=ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക +Comment[mr]=इंटरनेटमध्ये प्रवेश करा +Comment[nb]=Gå til Internett +Comment[nl]=Verbinding maken met internet +Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ +Comment[pl]=Skorzystaj z internetu +Comment[pt]=Aceder à Internet +Comment[pt_BR]=Acessar a internet +Comment[ro]=Accesaţi Internetul +Comment[ru]=Доступ в Интернет +Comment[sk]=Prístup do siete Internet +Comment[sl]=Dostop do interneta +Comment[sr]=Приступите Интернету +Comment[sv]=Surfa på Internet +Comment[ta]=இணையத்தை அணுகுதல் +Comment[te]=ఇంటర్నెట్‌ను ఆక్సెస్ చెయ్యండి +Comment[th]=เข้าถึงอินเทอร์เน็ต +Comment[tr]=İnternet'e erişin +Comment[ug]=ئىنتېرنېتنى زىيارەت قىلىش +Comment[uk]=Доступ до Інтернету +Comment[vi]=Truy cập Internet +Comment[zh_CN]=访问互联网 +Comment[zh_HK]=連線到網際網路 +Comment[zh_TW]=連線到網際網路 +Exec=/usr/bin/chromium --no-sandbox %U +Terminal=false +X-MultipleArgs=false +Type=Application +Icon=chromium +Categories=Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml_xml;application/x-mimearchive;x-scheme-handler/http;x-scheme-handler/https; +StartupWMClass=chromium +StartupNotify=true +Keywords=browser diff --git a/linux-live/unusedmodules/05-chromium/standard.list b/linux-live/unusedmodules/05-chromium/standard.list new file mode 100644 index 0000000..e4f291d --- /dev/null +++ b/linux-live/unusedmodules/05-chromium/standard.list @@ -0,0 +1,2 @@ +chromium +chromium-sandbox \ No newline at end of file diff --git a/linux-live/unusedmodules/skel/.config/xfce4/desktop/icons.screen0-784x504.rc b/linux-live/unusedmodules/skel/.config/xfce4/desktop/icons.screen0-784x504.rc deleted file mode 100644 index e393b73..0000000 --- a/linux-live/unusedmodules/skel/.config/xfce4/desktop/icons.screen0-784x504.rc +++ /dev/null @@ -1,11 +0,0 @@ -[xfdesktop-version-4.10.3+-rcfile_format] -4.10.3+=true - -[/] -row=0 -col=0 - -[/root] -row=1 -col=0 - diff --git a/linux-live/unusedmodules/skel/.config/xfce4/desktop/icons.screen0-784x584.rc b/linux-live/unusedmodules/skel/.config/xfce4/desktop/icons.screen0-784x584.rc deleted file mode 100644 index a976360..0000000 --- a/linux-live/unusedmodules/skel/.config/xfce4/desktop/icons.screen0-784x584.rc +++ /dev/null @@ -1,31 +0,0 @@ -[xfdesktop-version-4.10.3+-rcfile_format] -4.10.3+=true - -[shm] -row=2 -col=0 - -[proc] -row=3 -col=0 - -[sys] -row=4 -col=0 - -[Filesystem root] -row=0 -col=0 - -[pts] -row=1 -col=0 - -[/] -row=0 -col=1 - -[/root] -row=1 -col=1 - diff --git a/linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-12/16233231144.desktop b/linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-12/16233231144.desktop deleted file mode 100644 index c795ef2..0000000 --- a/linux-live/unusedmodules/skel/.config/xfce4/panel/launcher-12/16233231144.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Exec=xfce4-appfinder -Icon=gtk-find -StartupNotify=true -Terminal=false -Type=Application -Categories=Utility;X-XFCE; -Name=Application Finder -Comment=Find and launch applications installed on your system -X-XFCE-Source=file:///usr/share/applications/xfce4-appfinder.desktop diff --git a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml b/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml deleted file mode 100644 index 9ddc443..0000000 --- a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml deleted file mode 100644 index c3d5d2a..0000000 --- a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index afc20d6..0000000 --- a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index c210190..0000000 --- a/linux-live/unusedmodules/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/minios-modules/modulelib b/minios-modules/modulelib new file mode 100644 index 0000000..8e49f8b --- /dev/null +++ b/minios-modules/modulelib @@ -0,0 +1,2057 @@ +#!/bin/bash + +# Functions library :: for install scripts +# Author: crims0n. +# + +# ================================================================= +# ================================================================= +# ========================= VARIABLES ============================= +# ================================================================= +# ================================================================= + +function common_variables() { + # + CONTAINER_TYPE="0" + set +u + if [ -z $container ]; then + container="" + fi + set -u + : 'if [ -f /.dockerenv ] || [ "$container" = "podman" ]; then + OUTPUT="/dev/stdout" + #CONTAINER="docker" + fi' + if [ -f /.dockerenv ] || [ "$container" = "podman" ] && [ ! -d /opt/minios-live ] && [ ! -f /.minios-live-container ]; then + CONTAINER_TYPE="1" + fi + if [[ (-f /.dockerenv || "$container" = "podman") && (-d /opt/minios-live || -f /.minios-live-container) ]]; then + CONTAINER_TYPE="2" + fi + + if [ $DISTRIBUTION_ARCH = "amd64" ]; then + KERNEL_ARCH="amd64" + #PACKAGE_VARIANT="standard" + elif [ $DISTRIBUTION_ARCH = "i386" ]; then + KERNEL_ARCH="686-pae" + PACKAGE_VARIANT="minimal" + elif [ $DISTRIBUTION_ARCH = "arm64" ]; then + KERNEL_ARCH="arm64" + fi +} + +# ================================================================= +# ================================================================= +# ===================== COMMON FUNCTIONS ========================== +# ================================================================= +# ================================================================= + +function current_process() { + echo -e "${LIGHTYELLOW}=====> running ${CYAN}${CMD[ii]}${ENDCOLOUR}${LIGHTYELLOW} ...${ENDCOLOUR}" +} + +# ================================================================= +# beautiful console +# красивая консоль +# ================================================================= +function console_colours() { + RED="\e[31m" + GREEN="\e[32m" + YELLOW="\e[33m" + BLUE="\e[34m" + MAGENTA="\e[35m" + CYAN="\e[36m" + LIGHTGRAY="\e[37m" + DARKGRAY="\e[90m" + LIGHTRED="\e[91m" + LIGHTGREEN="\e[92m" + LIGHTYELLOW="\e[93m" + LIGHTBLUE="\e[94m" + LIGHTMAGENTA="\e[95m" + LIGHTCYAN="\e[96m" + BOLD="\e[1m" + DIM="\e[2m" + UNDERLINED="\e[4m" + BLINK="\e[5m" + REVERSE="\e[7m" + HIDDEN="\e[8m" + ENDCOLOUR="\e[0m" +} + +# ================================================================= +# help functions +# функции помощи +# ================================================================= +function help() { + # if $1 is set, use $1 as headline message in help() + if grep 'LANG="ru_RU.UTF-8"' /etc/default/locale >>$OUTPUT; then + if [ -z ${1+x} ]; then + echo -e "${LIGHTYELLOW}Этот скрипт собирает загружаемый ISO образ $SYSTEMNAME.${ENDCOLOUR}" + echo -e + else + echo -e $1 + echo + fi + echo -e "Поддерживаемые команды : ${CYAN}${CMD[*]}${ENDCOLOUR}" + echo -e + echo -e "Синтаксис: ${MAGENTA}$0${ENDCOLOUR} [start_cmd] [-] [end_cmd]" + if [ -L /usr/bin/$LIVEKITNAME-install ] && [ "$0" != "/usr/bin/$LIVEKITNAME-install" ]; then + echo -e "\t${CYAN}$LIVEKITNAME-install${ENDCOLOUR} [start_cmd] [-] [end_cmd]" + fi + echo -e "\tзапуск от start_cmd до end_cmd" + echo -e "\tесли start_cmd опущен, выполняются все команды, начиная с первой" + echo -e "\tесли end_cmd опущен, выполняются все команды до последней" + echo -e "\tвведите одну команду, чтобы запустить определенную команду" + echo -e "\tвведите '-' как единственный аргумент для запуска всех команд" + echo -e "\t" + echo -e "\tПримеры:${LIGHTYELLOW}$0 build_bootstrap - build_chroot${ENDCOLOUR}" + echo -e "\t\t${LIGHTYELLOW}$0 - build_chroot${ENDCOLOUR}" + echo -e "\t\t${LIGHTYELLOW}$0 build_bootstrap -${ENDCOLOUR}" + echo -e "\t\t${LIGHTYELLOW}$0 build_iso${ENDCOLOUR}" + echo -e "\t\t${LIGHTYELLOW}$0 -${ENDCOLOUR}" + exit 0 + else + if [ -z ${1+x} ]; then + echo -e "${LIGHTYELLOW}This script builds bootable $SYSTEMNAME ISO image.${ENDCOLOUR}" + echo -e + else + echo -e $1 + echo + fi + echo -e "Supported commands : ${CYAN}${CMD[*]}${ENDCOLOUR}" + echo -e + echo -e "Syntax: ${MAGENTA}$0${ENDCOLOUR} [start_cmd] [-] [end_cmd]" + if [ -L /usr/bin/$LIVEKITNAME-install ] && [ "$0" != "/usr/bin/$LIVEKITNAME-install" ]; then + echo -e "\t${CYAN}$LIVEKITNAME-install${ENDCOLOUR} [start_cmd] [-] [end_cmd]" + fi + echo -e "\trun from start_cmd to end_cmd" + echo -e "\tif start_cmd is omitted, start from first command" + echo -e "\tif end_cmd is omitted, end with last command" + echo -e "\tenter single cmd to run the specific command" + echo -e "\tenter '-' as only argument to run all commands" + echo -e "\t" + echo -e "\tExamples:${LIGHTYELLOW}$0 build_bootstrap - build_chroot${ENDCOLOUR}" + echo -e "\t\t${LIGHTYELLOW}$0 - build_chroot${ENDCOLOUR}" + echo -e "\t\t${LIGHTYELLOW}$0 build_bootstrap -${ENDCOLOUR}" + echo -e "\t\t${LIGHTYELLOW}$0 build_iso${ENDCOLOUR}" + echo -e "\t\t${LIGHTYELLOW}$0 -${ENDCOLOUR}" + exit 0 + fi +} + +# ================================================================= +# parsing input commands +# разбор входных команд +# ================================================================= +function find_index() { + local ret + local i + for ((i = 0; i < ${#CMD[*]}; i++)); do + if [ "${CMD[i]}" == "$1" ]; then + index=$i + return + fi + done + help "Command not found : $1" +} + +# ================================================================= +# creating a symbolic link to the executable file for using +# autocompletion on the command line +# создание символической ссылки на исполняемый файл для +# использования автодополнения в командной строке +# ================================================================= +function create_livekitname_install_symlink() { + if [ -L /usr/bin/$LIVEKITNAME-install ]; then + if [ "$(readlink /usr/bin/$LIVEKITNAME-install)" != "$SCRIPT_DIR/install" ]; then + rm -f /usr/bin/$LIVEKITNAME-install + ln -s $SCRIPT_DIR/install /usr/bin/$LIVEKITNAME-install + if grep 'LANG="ru_RU.UTF-8"' /etc/default/locale >>$OUTPUT; then + echo -e "Символическая ссылка ${MAGENTA}/usr/bin/$LIVEKITNAME-install${ENDCOLOUR} была обновлена." + echo -e "Теперь она указывает на ${MAGENTA}$SCRIPT_DIR/install${ENDCOLOUR}." + else + echo -e "The ${MAGENTA}/usr/bin/$LIVEKITNAME-install${ENDCOLOUR} symbolic link has been updated." + echo -e "It now points to ${MAGENTA}$SCRIPT_DIR/install${ENDCOLOUR}." + fi + fi + if [ "$0" != "/usr/bin/$LIVEKITNAME-install" ]; then + if grep 'LANG="ru_RU.UTF-8"' /etc/default/locale >>$OUTPUT; then + echo -e "Вы можете использовать команду ${CYAN}$LIVEKITNAME-install${ENDCOLOUR} для запуска этой программы." + else + echo -e "You can use the ${CYAN}$LIVEKITNAME-install${ENDCOLOUR} command to run this program." + fi + fi + else + ln -s $SCRIPT_DIR/install /usr/bin/$LIVEKITNAME-install + if grep 'LANG="ru_RU.UTF-8"' /etc/default/locale >>$OUTPUT; then + echo -e "Символическая ссылка ${MAGENTA}/usr/bin/$LIVEKITNAME-install${ENDCOLOUR} была добавлена" + echo -e "для ${MAGENTA}$SCRIPT_DIR/install${ENDCOLOUR}." + + else + echo -e "The ${MAGENTA}/usr/bin/$LIVEKITNAME-install${ENDCOLOUR} symbolic link has been added" + echo -e "for ${MAGENTA}$SCRIPT_DIR/install${ENDCOLOUR}." + fi + fi +} + +# ================================================================= +# creating autocompletion on the command line +# создание автодополнения в командной строке +# ================================================================= +function create_completion() { + if [ -d /etc/bash_completion.d ]; then + if [ ! -f /etc/bash_completion.d/$LIVEKITNAME-install ] || ! grep "${CMD[*]}" /etc/bash_completion.d/$LIVEKITNAME-install >>$OUTPUT; then + cat </etc/bash_completion.d/$LIVEKITNAME-install +#/usr/bin/env bash +complete -W "${CMD[*]}" $LIVEKITNAME-install +EOF + fi + if [ "$0" != "/usr/bin/$LIVEKITNAME-install" ]; then + if grep 'LANG="ru_RU.UTF-8"' /etc/default/locale >>$OUTPUT; then + echo -e "Дополнение команд работает только при использовании команды ${CYAN}$LIVEKITNAME-install${ENDCOLOUR}." + echo -e + else + echo -e "Command completion only works when using the ${CYAN}$LIVEKITNAME-install${ENDCOLOUR} command." + echo -e + fi + fi + fi +} + +# ================================================================= +# only allow 'root' to run the script +# разрешаем запуск скрипта только пользователю 'root' +# ================================================================= + +function allow_root_only() { + if [ $(id -u) -ne 0 ]; then + echo -e "${BOLD}${RED}This script should be run as 'root'!${ENDCOLOUR}" + exit 1 + fi + + export HOME=/root + export LC_ALL=C +} + +# ================================================================= +# check that we are inside chroot +# проверяем, что мы внутри chroot +# ================================================================= + +function check_is_in_chroot() { + if [ $(stat -c %i /)="2" ]; then + echo -e "${BOLD}${RED}This script should be run inside chroot only!${ENDCOLOUR}" + exit 1 + fi +} + +# ================================================================= +# check if filesystems are unmounted inside chroot +# проверяем, размонтированы ли файловые системы внутри chroot +# ================================================================= + +function check_mounted() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if grep -qs "$BUILD_DIR/dev" /proc/mounts || grep -qs "$BUILD_DIR/run" /proc/mounts || grep -qs "$BUILD_DIR/proc" /proc/mounts || grep -qs "$BUILD_DIR/sys" /proc/mounts || grep -qs "$BUILD_DIR/dev/pts" /proc/mounts || grep -qs "$BUILD_DIR/tmp" /proc/mounts; then + echo -e "${BOLD}${LIGHTYELLOW}Сhroot contains mounted filesystems.${ENDCOLOUR}" + if [ "$UNATTENDED" = "1" ]; then + chroot_umount_fs + else + read -r -p "$(echo -e ""Do you want to ${GREEN}unmount them${ENDCOLOUR}? [${BOLD}${GREEN}Y${ENDCOLOUR}/n])" response + response=${response,,} + if [[ "$response" =~ ^(no|n)$ ]]; then + exit 1 + else + chroot_umount_fs + fi + fi + fi +} + +# ================================================================= +# check if the folder where the installation will be performed is empty +# проверяем, пуста ли папка, в которую будет производиться установка +# ================================================================= + +function check_build_dir() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ "$UNATTENDED" = "1" ]; then + #echo -e "${RED}!!!Unattended installation!!!${ENDCOLOUR}" + BUILD_DIR="/build/$DISTRIBUTION" + echo -e "The working directory is ${MAGENTA}$BUILD_DIR${ENDCOLOUR}." + if [ "$(ls -A $BUILD_DIR)" != "" ]; then + cleanup + check_mounted + fi + else + # ▼ должно быть только перенаправление ошибки! + if [ "$(ls -A $BUILD_DIR)" != "" ]; then + echo -e "${MAGENTA}$BUILD_DIR${ENDCOLOUR} is not empty." + cleanup + check_mounted + if [ ! -d "$BUILD_DIR" ]; then + mkdir -p $BUILD_DIR + fi + BUILD_DIR="$( + cd $BUILD_DIR + pwd + )" + echo $BUILD_DIR >$SCRIPT_DIR/.build_dir && chmod 644 $SCRIPT_DIR/.build_dir + echo -e "The working directory is ${MAGENTA}$BUILD_DIR${ENDCOLOUR}." + else + mkdir -p $BUILD_DIR + check_mounted + BUILD_DIR="$( + cd $BUILD_DIR + pwd + )" + echo $BUILD_DIR >$SCRIPT_DIR/.build_dir && chmod 644 $SCRIPT_DIR/.build_dir + echo -e "The working directory is ${MAGENTA}$BUILD_DIR${ENDCOLOUR}." + fi + fi +} + +# ================================================================= +# configure the build folder +# настраиваем папку для сборки +# ================================================================= + +function setup_build_dir() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ "$UNATTENDED" = "1" ] && [ "$BUILD_DIR" = "" ]; then + BUILD_DIR="/build/$DISTRIBUTION" + check_build_dir + else + if [ "$BUILD_DIR" = "" ]; then + if [ ! -f "$SCRIPT_DIR/.build_dir" ]; then + echo "Enter the address of the working directory where we will build the system" + read -r -p "$(echo -e "(Default is ${MAGENTA}$PARENT_DIR/$DISTRIBUTION${ENDCOLOUR}): ")" response + BUILD_DIR=${response,,} + if [ "$BUILD_DIR" = "" ]; then + BUILD_DIR=$PARENT_DIR/$DISTRIBUTION + fi + check_build_dir + else + LAST_BUILD_DIR=$(cat "$SCRIPT_DIR/.build_dir") + echo -e "Last time you used the build directory ${MAGENTA}$LAST_BUILD_DIR${ENDCOLOUR}." + read -r -p "$(echo -e ""Do you want to use it again? [${BOLD}${GREEN}Y${ENDCOLOUR}/n])" response + response=${response,,} + if [[ "$response" =~ ^(no|n)$ ]]; then + echo "Enter the address of the working directory where we will build the system" + read -r -p "$(echo -e "(Default is ${MAGENTA}$PARENT_DIR/$DISTRIBUTION${ENDCOLOUR}): ")" response + BUILD_DIR=${response,,} + if [ "$BUILD_DIR" = "" ]; then + BUILD_DIR=$PARENT_DIR/$DISTRIBUTION + fi + check_build_dir + else + BUILD_DIR="$LAST_BUILD_DIR" + check_build_dir + fi + fi + fi + fi +} + +# ================================================================= +# cleaning the build folder +# очистка папки для сборки +# ================================================================= +function cleanup() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ "${CMD[ii]}" = "setup_host" ] || [ "${CMD[ii]}" = "build_bootstrap" ] || [ "${CMD[ii]}" = "build_chroot" ]; then + if [ "$UNATTENDED" = "1" ]; then + check_mounted + rm -rf $BUILD_DIR + if [ -d "$BUILD_DIR" ]; then + cleanup + fi + else + read -r -p "$(echo -e ""Do you want to ${BOLD}${RED}completely remove content${ENDCOLOUR} of ${MAGENTA}$BUILD_DIR${ENDCOLOUR}? [y/${BOLD}${GREEN}N${ENDCOLOUR}])" response + response=${response,,} + if [[ "$response" =~ ^(yes|y)$ ]]; then + check_mounted + rm -rf $BUILD_DIR + if [ -d "$BUILD_DIR" ]; then + cleanup + fi + else + echo -e "${MAGENTA}$BUILD_DIR${ENDCOLOUR} should be empty to continue." + exit 1 + fi + fi + fi +} + +# ================================================================= +# mount filesystems inside chroot +# монтируем файловые системы внутри chroot +# ================================================================= + +function chroot_mount_fs() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + + check_mounted + + mount --bind /dev $BUILD_DIR/dev + mount --bind /run $BUILD_DIR/run + mount none -t proc $BUILD_DIR/proc + mount none -t sysfs $BUILD_DIR/sys + mount none -t devpts $BUILD_DIR/dev/pts + mount none -t tmpfs $BUILD_DIR/tmp +} + +# ================================================================= +# unmount filesystems inside chroot +# размонтируем файловые системы внутри chroot +# ================================================================= + +function chroot_umount_fs() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + + set +e + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + umount $BUILD_DIR/proc + umount $BUILD_DIR/sys + umount $BUILD_DIR/dev/pts + umount $BUILD_DIR/tmp + umount $BUILD_DIR/dev + umount $BUILD_DIR/run + else + umount $BUILD_DIR/proc >>$OUTPUT 2>&1 + umount $BUILD_DIR/sys >>$OUTPUT 2>&1 + umount $BUILD_DIR/dev/pts >>$OUTPUT 2>&1 + umount $BUILD_DIR/tmp >>$OUTPUT 2>&1 + umount $BUILD_DIR/dev >>$OUTPUT 2>&1 + umount $BUILD_DIR/run >>$OUTPUT 2>&1 + fi + set -e + + check_mounted +} + +# ================================================================= +# delete the log +# удаляем лог +# ================================================================= +function remove_log_file() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ -f $LOGPATH/$LIVEKITNAME.log ]; then + rm -f $LOGPATH/$LIVEKITNAME.log + fi + if [ -f $BUILD_DIR/$LIVEKITNAME.log ]; then + rm -f $BUILD_DIR/$LIVEKITNAME.log + fi +} + +# ================================================================= +# creating a backup of scripts (to run you need to set the variable +# CREATE_BACKUP = "1" in linux-live/buildconfig) +# создание бэкапа скриптов (для запуска необходимо установить +# переменную CREATE_BACKUP="1" в linux-live/buildconfig) +# ================================================================= +function create_backup() { + if [ $CREATE_BACKUP = "1" ]; then + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ ! -f $SCRIPT_DIR/.script_version ]; then + cat "1" >$SCRIPT_DIR/.script_version >>$OUTPUT 2>&1 + chmod 644 $SCRIPT_DIR/.script_version >>$OUTPUT 2>&1 + fi + DATE=$(date +%Y%m%d_%H%M) + CHANGED="0" + rm -rf $SCRIPT_DIR/iso >>$OUTPUT 2>&1 + rm -f $SCRIPT_DIR/.build_dir >>$OUTPUT 2>&1 + rm -f $SCRIPT_DIR/*.log >>$OUTPUT 2>&1 + if [ ! -d $PARENT_DIR/minios-live-current ]; then + CHANGED="1" + mkdir -p $PARENT_DIR/minios-live-current + (cd $SCRIPT_DIR && cp --parents -afr * $PARENT_DIR/minios-live-current) + else + for file in $(find $SCRIPT_DIR -path $SCRIPT_DIR/.git -prune -false -o -type f | sed "s,$SCRIPT_DIR/,,g" | sed "s,.script_version,,g"); do + if ! cmp $SCRIPT_DIR/$file $PARENT_DIR/minios-live-current/$file >>$OUTPUT 2>&1; then + CHANGED="1" + echo -e "$file has been modified since last backup." >>$OUTPUT 2>&1 + echo -e "Copying $SCRIPT_DIR/$file to $PARENT_DIR/minios-live-current/$file..." >>$OUTPUT 2>&1 + cp -f "$SCRIPT_DIR/$file" "$PARENT_DIR/minios-live-current/$file" >>$OUTPUT 2>&1 + fi + done + fi + if [ $CHANGED = "1" ]; then + SCRIPT_VERSION=$(cat $SCRIPT_DIR/.script_version) + echo $(($SCRIPT_VERSION + 1)) >$SCRIPT_DIR/.script_version + echo $(($SCRIPT_VERSION + 1)) >$PARENT_DIR/minios-live-current/.script_version + cd $SCRIPT_DIR >>$OUTPUT 2>&1 + rm -f $PARENT_DIR/minios-live-current.tar.gz + tar -czf $PARENT_DIR/minios-live-current.tar.gz ./ >>$OUTPUT 2>&1 + cp $PARENT_DIR/minios-live-current.tar.gz $PARENT_DIR/minios-live-v$SCRIPT_VERSION-$DATE.tar.gz >>$OUTPUT 2>&1 + fi + fi +} + +# ================================================================= +# Displaying information about the start of the build for a more +# convenient search in the logs +# Отображение информации о старте сборки для более удобного поиска +# в логах +# ================================================================= +function new_run() { + DATE=$(date +"%Y.%m.%d %H:%M") + echo "" + echo "=================================================================" >>$OUTPUT 2>&1 + echo "=================================================================" >>$OUTPUT 2>&1 + echo "============================ NEW RUN ============================" >>$OUTPUT 2>&1 + echo "======================== $DATE =======================" >>$OUTPUT 2>&1 + echo "=================================================================" >>$OUTPUT 2>&1 + echo "======= If during the installation you get an error that ========" >>$OUTPUT 2>&1 + echo "=== /dev/stdout is not available, try using a bionic or xenial ==" >>$OUTPUT 2>&1 + echo "================= based container to install. ===================" >>$OUTPUT 2>&1 + echo "=================================================================" >>$OUTPUT 2>&1 + echo "=================================================================" >>$OUTPUT 2>&1 + echo "" +} + +# ================================================================= +# ================================================================= +# ====================== HOST FUNCTIONS =========================== +# ================================================================= +# ================================================================= + +# ================================================================= +# Creating a $PACKAGE_VARIANT list from a template +# Создание списка пакетов из шаблона +# ================================================================= +function create_apt_list() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ ! -f $SCRIPT_DIR/linux-live/aptsources/$DISTRIBUTION.list ] && [ $DISTRIBUTION_TYPE != "debian" ]; then + cp -f $SCRIPT_DIR/linux-live/aptsources/sources.list $SCRIPT_DIR/linux-live/aptsources/$DISTRIBUTION.list + sed -i "s,distro,$DISTRIBUTION,g" $SCRIPT_DIR/linux-live/aptsources/$DISTRIBUTION.list + sed -i "s,http://ru.archive.ubuntu.com/ubuntu,$DISTRIBUTION_URL,g" $SCRIPT_DIR/linux-live/aptsources/$DISTRIBUTION.list + fi +} + +# ================================================================= +# Installing the base system +# Установка базовой системы +# ================================================================= +function build_bootstrap() { + current_process + + if [ $CONTAINER_TYPE = "1" ]; then + if [ ! -f /.minios-live ]; then + setup_host + fi + fi + if [ $DISTRIBUTION_TYPE != "debian" ]; then + sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + debootstrap --arch=$DISTRIBUTION_ARCH --variant=$DISTRIBUTION_VARIANT $DISTRIBUTION $BUILD_DIR $DISTRIBUTION_URL >>$OUTPUT 2>>$OUTPUT + else + sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + debootstrap --arch=$DISTRIBUTION_ARCH $DISTRIBUTION $BUILD_DIR $DISTRIBUTION_URL >>$OUTPUT 2>>$OUTPUT + fi +} + +# ================================================================= +# +# +# ================================================================= +function copy_build_scripts() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ ! -d $BUILD_DIR/linux-live ]; then + mkdir -p $BUILD_DIR/linux-live + (cd $SCRIPT_DIR/linux-live && cp --parents -afr * $BUILD_DIR/linux-live) + else + find $SCRIPT_DIR/linux-live -type f -print0 | sed "s,$SCRIPT_DIR/linux-live/,,g" | while IFS= read -r -d '' file; do + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + if ! cmp $SCRIPT_DIR/linux-live/"$file" $BUILD_DIR/linux-live/"$file"; then + echo -e "$file has been modified since last build run." + echo -e "Copying $SCRIPT_DIR/linux-live/$file to $BUILD_DIR/linux-live/$file..." + cp -f $SCRIPT_DIR/linux-live/"$file" $BUILD_DIR/linux-live/"$file" + fi + else + if ! cmp $SCRIPT_DIR/linux-live/"$file" $BUILD_DIR/linux-live/"$file" >>$OUTPUT 2>&1; then + echo -e "$file has been modified since last build run." >>$OUTPUT 2>&1 + echo -e "Copying $SCRIPT_DIR/linux-live/$file to $BUILD_DIR/linux-live/$file..." >>$OUTPUT 2>&1 + cp -f $SCRIPT_DIR/linux-live/"$file" $BUILD_DIR/linux-live/"$file" >>$OUTPUT 2>&1 + fi + fi + done + fi + + #chmod +x $BUILD_DIR/linux-live/build + chmod +x $BUILD_DIR/linux-live/install_chroot + + if [ "$DEV_SYSTEM" = "1" ]; then + if [ ! -d $BUILD_DIR/opt/minios-live ]; then + mkdir -p $BUILD_DIR/opt/minios-live + (cd $SCRIPT_DIR && cp --parents -afr * $BUILD_DIR/opt/minios-live) + else + find $SCRIPT_DIR/linux-live -type f -print0 | sed "s,$SCRIPT_DIR/linux-live/,,g" | while IFS= read -r -d '' file; do + if ! cmp $SCRIPT_DIR/"$file" $BUILD_DIR/opt/minios-live/"$file" >>$OUTPUT 2>&1; then + echo -e "$file has been modified since last build run." >>$OUTPUT 2>&1 + echo -e "Copying $SCRIPT_DIR/$file to $BUILD_DIR/opt/minios-live/$file..." >>$OUTPUT 2>&1 + cp -f $SCRIPT_DIR/"$file" $BUILD_DIR/opt/minios-live/"$file" >>$OUTPUT 2>&1 + fi + done + fi + fi +} + +# ================================================================= +# +# +# ================================================================= +function build_chroot() { + current_process + + if [ $CONTAINER_TYPE = "1" ]; then + if [ ! -f /.minios-live ]; then + setup_host + fi + fi + + chroot_mount_fs + + copy_build_scripts + + create_apt_list + + if [ "$OUTPUT"="$LOGPATH/$LIVEKITNAME.log" ] && [ -f /$LIVEKITNAME.log ]; then + mv -f /$LIVEKITNAME.log $BUILD_DIR/$LIVEKITNAME.log + fi + if [ "$OUTPUT"="$LOGPATH/$LIVEKITNAME.log" ] && [ -f $BUILD_DIR/$LIVEKITNAME.log ]; then + echo "===========================================" >>$BUILD_DIR/$LIVEKITNAME.log 2>&1 + echo "===========================================" >>$BUILD_DIR/$LIVEKITNAME.log 2>&1 + echo "=============== CHROOT LOG ================" >>$BUILD_DIR/$LIVEKITNAME.log 2>&1 + echo "===========================================" >>$BUILD_DIR/$LIVEKITNAME.log 2>&1 + echo "===========================================" >>$BUILD_DIR/$LIVEKITNAME.log 2>&1 + fi + + cp -f $SCRIPT_DIR/linux-live/aptsources/$DISTRIBUTION.list $BUILD_DIR/etc/apt/sources.list + + if [ -d /opt/minios-live ] || [ -f /.minios-live-container ]; then + chroot $BUILD_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE /linux-live/install_chroot - + else + chroot $BUILD_DIR /linux-live/install_chroot - + fi + + chroot_umount_fs + + if [ "$OUTPUT"="$LOGPATH/$LIVEKITNAME.log" ] && [ -f $BUILD_DIR/$LIVEKITNAME.log ]; then + mv -f $BUILD_DIR/$LIVEKITNAME.log $SCRIPT_DIR/$LIVEKITNAME.log + if [ -f $SCRIPT_DIR/$LIVEKITNAME.log ]; then + echo -e "Installation log was saved to ${MAGENTA}$SCRIPT_DIR/$LIVEKITNAME.log${ENDCOLOUR}" + fi + fi +} + +# ================================================================= +# +# +# ================================================================= +function build_live() { + current_process + + if [ $CONTAINER_TYPE = "1" ]; then + if [ ! -f /.minios-live ]; then + setup_host + fi + fi + + remove_log_file + + copy_build_scripts + + check_build_dir + + #(cd /linux-live/rootcopy && cp --parents -afr * /) + + chroot $BUILD_DIR mount none -t proc /proc + chroot $BUILD_DIR /linux-live/initrfs + chroot $BUILD_DIR umount /proc + + rm -rf $PARENT_DIR/image + mkdir -p $PARENT_DIR/image/$LIVEKITNAME/{boot,changes,modules} + + # copy kernel files + if [ $DISTRIBUTION_TYPE != "debian" ]; then + cp $BUILD_DIR/boot/vmlinuz-**-**-generic $PARENT_DIR/image/$LIVEKITNAME/boot/vmlinuz + else + cp $BUILD_DIR/boot/vmlinuz-**-**-$KERNEL_ARCH $PARENT_DIR/image/$LIVEKITNAME/boot/vmlinuz + fi + mv $BUILD_DIR/boot/initrfs.img $PARENT_DIR/image/$LIVEKITNAME/boot/initrfs.img + + cp -r $SCRIPT_DIR/linux-live/bootfiles/* $PARENT_DIR/image/$LIVEKITNAME + + # create compressed 01-core.sb + cd $BUILD_DIR + COREFS="" + for i in $MKMOD; do + if [ -d /$i ]; then + COREFS="$COREFS $i" + fi + done + if [ $COMP_TYPE = "zstd" ]; then + mksquashfs $COREFS $PARENT_DIR/image/$LIVEKITNAME/01-core-$COMP_TYPE.$BEXT -comp $COMP_TYPE -Xcompression-level 22 -b 1024K -always-use-fragments -keep-as-directory -noappend || exit + else + mksquashfs $COREFS $PARENT_DIR/image/$LIVEKITNAME/01-core-$COMP_TYPE.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -keep-as-directory -noappend || exit + fi + +} + +# ================================================================= +# +# +# ================================================================= +function build_iso() { + current_process + + if [ $CONTAINER_TYPE = "1" ]; then + if [ ! -f /.minios-live ]; then + setup_host + fi + fi + + check_build_dir + + if [ "$UNATTENDED" = "1" ]; then + BUILD_DIR="/build/$DISTRIBUTION" + fi + if [ "$BUILD_DIR" = "" ]; then + LAST_BUILD_DIR=$(cat "$SCRIPT_DIR/.build_dir") >>$OUTPUT 2>&1 + BUILD_DIR=$LAST_BUILD_DIR + fi + + cd $PARENT_DIR/image + if [ ! -d $ISO_DIR ]; then + mkdir -p $ISO_DIR + fi + + mkdir -p $ISO_DIR >>$OUTPUT 2>&1 + VER=$SYSTEMVER + DATE=$(date +%Y%m%d_%H%M) + + DIR=$PARENT_DIR/image + ISO=$ISO_DIR/$LIVEKITNAME-$DISTRIBUTION-$PACKAGE_VARIANT-$DISTRIBUTION_ARCH-$COMP_TYPE-$LIVE_TYPE-$DATE.iso + + B="-b $LIVEKITNAME/boot/isolinux.bin -c $LIVEKITNAME/boot/isolinux.boot" + + C="-no-emul-boot -boot-load-size 4 -boot-info-table" + + # ▼ должно быть только перенаправление ошибки! + + M=genisoimage + + D="" + + E="" + + #VER="$SYSTEMNAME $VER" + VER="$SYSTEMNAME" + + if [ REMOVE_OLD_ISO = "1" ]; then + rm $ISO_DIR/$LIVEKITNAME-$DISTRIBUTION-$PACKAGE_VARIANT-$DISTRIBUTION_ARCH-$COMP_TYPE-$LIVE_TYPE-*.iso >>$OUTPUT 2>&1 + fi + + if + ! $M -f -r -J -l -V "$VER" -A "$VER" \ + $B $C $D $E -o $ISO $DIR + then + exit 1 + fi + + echo ">>> $ISO created" + + if [ $BUILD_TEST_ISO = "1" ]; then + if [ -L $ISO_DIR/$LIVEKITNAME.iso ]; then + rm $ISO_DIR/$LIVEKITNAME.iso + fi + if ln -s $LIVEKITNAME-$DISTRIBUTION-$PACKAGE_VARIANT-$DISTRIBUTION_ARCH-$COMP_TYPE-$LIVE_TYPE-$DATE.iso $ISO_DIR/$LIVEKITNAME.iso; then + echo ">>> $ISO_DIR/$LIVEKITNAME.iso created" + fi + fi + exit 0 +} + +# ================================================================= +# ================================================================= +# ====================== INSTALL FUNCTIONS ======================== +# ================================================================= +# ================================================================= + +# ================================================================= +# +# +# ================================================================= +function setup_host() { + current_process + + if [ $CONTAINER_TYPE != "2" ]; then + hostreq_pkg_list + fi +} + +# ================================================================= +# +# +# ================================================================= +function chroot_setup_host() { + current_process + + echo $LIVEKITNAME >/etc/hostname + + prereq_pkg_list + + #configure machine id + dbus-uuidgen >/etc/machine-id >>$OUTPUT 2>&1 + ln -fs /etc/machine-id /var/lib/dbus/machine-id >>$OUTPUT 2>&1 + + # don't understand why, but multiple sources indicate this + dpkg-divert --local --rename --add /sbin/initctl >>$OUTPUT 2>&1 + ln -s /bin/true /sbin/initctl >>$OUTPUT 2>&1 + + current_process +} + +# ================================================================= +# +# +# ================================================================= +function chroot_build_cleanup() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + + set +e + + rm -f /preinstall >>$OUTPUT 2>&1 + rm -f /install >>$OUTPUT 2>&1 + rm -f /install2 >>$OUTPUT 2>&1 + rm -f /cleanup >>$OUTPUT 2>&1 + rm -f /$PACKAGE_VARIANT.list >>$OUTPUT 2>&1 + rm -f /postinstall >>$OUTPUT 2>&1 + rm -rf /rootcopy >>$OUTPUT 2>&1 + rm -rf /patches >>$OUTPUT 2>&1 + + rm -f /etc/fstab >>$OUTPUT 2>&1 + rm -f /etc/mtab >>$OUTPUT 2>&1 + rm -f /etc/apt/sources.list~ >>$OUTPUT 2>&1 + rm -Rf /etc/systemd/system/timers.target.wants >>$OUTPUT 2>&1 + rm -f /etc/systemd/system/multi-user.target.wants/ssh.service >>$OUTPUT 2>&1 + rm -f /etc/systemd/system/multi-user.target.wants/dnsmasq.service >>$OUTPUT 2>&1 + + rm -f /etc/ssh/ssh_host* >>$OUTPUT 2>&1 + + rm -f /var/backups/* >>$OUTPUT 2>&1 + rm -f /var/cache/ldconfig/* >>$OUTPUT 2>&1 + rm -f /var/cache/debconf/* >>$OUTPUT 2>&1 + rm -f /var/cache/fontconfig/* >>$OUTPUT 2>&1 + rm -f /var/lib/apt/extended_states >>$OUTPUT 2>&1 + rm -f /var/lib/systemd/random-seed >>$OUTPUT 2>&1 + rm -f /var/lib/apt/lists/deb.* >>$OUTPUT 2>&1 + rm -Rf /root/.local/share/mc >>$OUTPUT 2>&1 + rm -Rf /root/.cache >>$OUTPUT 2>&1 + rm -f /root/.wget-hsts >>$OUTPUT 2>&1 + + rm -f /var/lib/dpkg/*-old >>$OUTPUT 2>&1 + rm -f /var/log/* >>$OUTPUT 2>&1 + rm -f /var/log/*/* >>$OUTPUT 2>&1 + rm -f /var/log/*/*/* >>$OUTPUT 2>&1 + rm -f /var/cache/apt/archives/*.deb >>$OUTPUT 2>&1 + rm -f /var/cache/apt/*.bin >>$OUTPUT 2>&1 + rm -f /var/cache/debconf/*-old >>$OUTPUT 2>&1 + rm -f /var/lib/dhcp/dhclient.leases >>$OUTPUT 2>&1 + rm -f /root/.bash_history >>$OUTPUT 2>&1 + rm -f /root/.wget-hsts >>$OUTPUT 2>&1 + rm -Rf /usr/share/doc/* >>$OUTPUT 2>&1 + rm -Rf /usr/share/info/* >>$OUTPUT 2>&1 + rm -f /usr/share/images/fluxbox/debian-squared.jpg >>$OUTPUT 2>&1 + rm -Rf /usr/share/fluxbox/nls/??* >>$OUTPUT 2>&1 + rm -Rf /usr/share/gnome/help >>$OUTPUT 2>&1 + + rm -Rf /usr/share/locale/?? >>$OUTPUT 2>&1 + rm -Rf /usr/share/locale/??_* >>$OUTPUT 2>&1 + rm -Rf /usr/share/locale/??@* >>$OUTPUT 2>&1 + rm -Rf /usr/share/locale/??? >>$OUTPUT 2>&1 + rm -Rf /usr/share/i18n/locales/*_* >>$OUTPUT 2>&1 + rm -Rf /usr/share/man/?? >>$OUTPUT 2>&1 + rm -Rf /usr/share/man/*_* >>$OUTPUT 2>&1 + + #rm -Rf /usr/share/icons/elementaryXubuntu-dark >>$OUTPUT 2>&1 + rm -Rf /usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 + + rm /usr/share/applications/compton.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/debian-uxterm.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/debian-xterm.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/htop.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/mc.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/mcedit.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/pcmanfm-desktop-pref.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/python2.7.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/python3.7.desktop >>$OUTPUT 2>&1 + rm /usr/share/applications/vim.desktop >>$OUTPUT 2>&1 + + # Unzip gzipped files (man pages), so LZMA can compress 2times better. + # First we fix symlinks, then uncompress files + # $1 = search directory + uncompress_files() { + local LINK LINE + + find "$1" -type l -name "*.gz" | while read LINE; do + LINK="$(readlink "$LINE" | sed -r 's/.gz$//')" + FILE="$(echo "$LINE" | sed -r 's/.gz$//')" + ln -sfn "$LINK" "$FILE" + rm -f "$LINE" + done + find "$1" -type f -name "*.gz" | xargs -r gunzip >>$OUTPUT 2>&1 + } + + uncompress_files /etc/alternatives >>$OUTPUT 2>&1 + uncompress_files /usr/share/man >>$OUTPUT 2>&1 + + # remove broken links + # $1 = search directory + remove_broken_links() { + find "$1" -type l -exec test ! -e {} \; -print | xargs rm -vf >>$OUTPUT 2>&1 + } + + remove_broken_links /etc/alternatives >>$OUTPUT 2>&1 + remove_broken_links /usr/share/man >>$OUTPUT 2>&1 + + set -e + +} + +# ================================================================= +# +# +# ================================================================= +function hostreq_pkg_list() { + echo -e "${YELLOW}=====> installing required software for host system ...${ENDCOLOUR}" + $APT_CMD update >>$OUTPUT 2>&1 + + if [ -f $SCRIPT_DIR/linux-live/pkglists/hostreq.list ]; then + $APT_CMD install -y \ + $(grep -vE "^\s*#" $SCRIPT_DIR/linux-live/pkglists/hostreq.list | tr "\n" " ") >>$OUTPUT 2>&1 + else + $APT_CMD install -y sudo debootstrap genisoimage >>$OUTPUT 2>&1 + fi +} + +# ================================================================= +# +# +# ================================================================= +function prereq_pkg_list() { + echo -e "${YELLOW}=====> installing prerequested software for chroot system ...${ENDCOLOUR}" + + if [ -f $SCRIPT_DIR/pkglists/prereq.list ]; then + $APT_CMD update >>$OUTPUT 2>&1 && + echo -e "${YELLOW}=====> upgrading chroot system ...${ENDCOLOUR}" && + $APT_CMD upgrade $APT_OPTIONS >>$OUTPUT 2>&1 && + echo -e "${YELLOW}=====> installing packages ...${ENDCOLOUR}" && + $APT_CMD install $APT_OPTIONS \ + $(grep -vE "^\s*#" $SCRIPT_DIR/pkglists/prereq.list | tr "\n" " ") >>$OUTPUT 2>&1 + fi + +} + +# ================================================================= +# +# +# ================================================================= +function main_pkg_list() { + echo -e "${YELLOW}=====> installing main packages for chroot system ...${ENDCOLOUR}" + + if [ -f /linux-live/basesystem/01-core/preinstall ]; then + chmod +x /linux-live/basesystem/01-core/preinstall + /usr/bin/env \ + OUTPUT=$OUTPUT \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /linux-live/basesystem/01-core/preinstall + fi + : ' if [ "$(ls -A /linux-live/basesystem/01-core/rootcopy)" != "" ]; then + (cd /linux-live/basesystem/01-core/rootcopy && cp --parents -afr * /) + fi' + if [ -f /linux-live/basesystem/01-core/install ]; then + chmod +x /linux-live/basesystem/01-core/install + /usr/bin/env \ + OUTPUT=$OUTPUT \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + KERNEL_ARCH=$KERNEL_ARCH \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + COMP_TYPE=$COMP_TYPE \ + /linux-live/basesystem/01-core/install + fi + if [ -f /linux-live/basesystem/01-core/postinstall ]; then + chmod +x /linux-live/basesystem/01-core/postinstall + /usr/bin/env \ + OUTPUT=$OUTPUT \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /linux-live/basesystem/01-core/postinstall + fi + + chroot_build_cleanup +} + +# ================================================================= +# +# +# ================================================================= +function chroot_pkg_install() { + current_process + + main_pkg_list + + # remove unused + $APT_CMD autoremove $APT_OPTIONS >>$OUTPUT 2>&1 + + # clean up apt cache + $APT_CMD clean $APT_OPTIONS >>$OUTPUT 2>&1 +} + +# ================================================================= +# No longer used, it will be cleaned after successful testing. +# Больше не используется, будет убрано после успешного тестирования. +# ================================================================= +function chroot_configure() { + current_process + + echo "Set up password for user 'root'" >>$OUTPUT 2>&1 + echo root:toor | chpasswd >>$OUTPUT 2>&1 + + echo "Set up user 'live'" >>$OUTPUT 2>&1 + adduser --gecos '' live --disabled-password >>$OUTPUT 2>&1 + echo "Set up password for user 'live'" >>$OUTPUT 2>&1 + echo live:evil | chpasswd >>$OUTPUT 2>&1 + addgroup live adm >>$OUTPUT 2>&1 + addgroup live sudo >>$OUTPUT 2>&1 + addgroup live audio >>$OUTPUT 2>&1 + addgroup live plugdev >>$OUTPUT 2>&1 + addgroup live users >>$OUTPUT 2>&1 + addgroup live live >>$OUTPUT 2>&1 + + (cd /linux-live/basesystem/01-core/rootcopy && cp --parents -afr * /) + + chown live:live /home/live + chown -R live:live /home/live + + cat </etc/sudoers.d/90-minios +# live user is default user in minios. +# It needs passwordless sudo functionality. +live ALL=(ALL) NOPASSWD:ALL +EOF + + if [ ! -d /etc/NetworkManager ]; then + echo "Enable dhclient.service autostart." >>$OUTPUT 2>&1 + cat </usr/lib/systemd/system/dhclient.service +[Unit] +Description=DHCP Client +Documentation=man:dhclient(8) +Wants=network.target +After=network-pre.target systemd-sysctl.service systemd-modules-load.service +Before=network.target shutdown.target network-online.target +ConditionPathExists=!/run/initramfs/net.up.flag + +[Service] +Type=forking +ExecStart=-/bin/sh -c 'udevadm settle && dhclient -nw' +PIDFile=/run/dhclient.pid + +[Install] +WantedBy=multi-user.target +WantedBy=network-online.target +EOF + systemctl enable dhclient >>$OUTPUT 2>&1 + fi + + if [ -f /etc/systemd/system/multi-user.target.wants/grub-initrd-fallback.service ]; then + echo "Disable grub-initrd-fallback.service autostart." + systemctl disable grub-initrd-fallback.service + fi + + if grep openssh-server $SCRIPT_DIR/basesystem/01-core/$PACKAGE_VARIANT.list >>$OUTPUT 2>&1; then + echo "Enable ssh.service autostart." >>$OUTPUT 2>&1 + cat </usr/lib/systemd/system/ssh-keygen.service +[Unit] +Description=Generate sshd keys +Before=ssh.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/ssh-keygen -A +RemainAfterExit=true +StandardOutput=journal + +[Install] +WantedBy=multi-user.target +EOF + sed -i 's,#PermitRootLogin prohibit-password,PermitRootLogin yes,g' /etc/ssh/sshd_config + sed -i 's,#PasswordAuthentication yes,PasswordAuthentication yes,g' /etc/ssh/sshd_config + systemctl enable ssh-keygen >>$OUTPUT 2>&1 + systemctl enable ssh >>$OUTPUT 2>&1 + fi + + if [ ! -f /usr/share/sudo ]; then + cat </usr/share/sudo +#!/bin/bash +if [ "$#" -lt 1 ]; then + echo "Usage: sudo [command] [arguments]" + exit 1 +fi + +if [ "$UID" = 0 ]; then + exec "$@" +fi + +echo "Sudo is not installed. Run the command as root or install sudo." +EOF + fi + + if [ $DISTRIBUTION_TYPE = "debian" ]; then + cat </etc/issue + + + \l + + + + + + Thank you for using MiniOS. + Based on Debian GNU/Linux. + Powered by Slax. + + :::: :::: ::::::::::: :::: ::: ::::::::::: :::::::: ::::::::  + +:+:+: :+:+:+ :+: :+:+: :+: :+: :+: :+: :+: :+:  + +:+ +:+:+ +:+ +:+ :+:+:+ +:+ +:+ +:+ +:+ +:+  + +#+ +:+ +#+ +#+ +#+ +:+ +#+ +#+ +#+ +:+ +#++:++#++  + +#+ +#+ +#+ +#+ +#+#+# +#+ +#+ +#+ +#+  + #+# #+# #+# #+# #+#+# #+# #+# #+# #+# #+#  + ### ### ########### ### #### ########### ######## ########  + + : : + : Root login name: root : + : Password: toor : + : User login name: live : + : Password: evil : + + + + + + + +EOF + fi +} + +# ================================================================= +# +# +# ================================================================= +function chroot_finish_up() { + current_process + + # truncate machine id (why??) + truncate -s 0 /etc/machine-id >>$OUTPUT 2>&1 + + # remove diversion (why??) + rm /sbin/initctl >>$OUTPUT 2>&1 + dpkg-divert --rename --remove /sbin/initctl >>$OUTPUT 2>&1 + + # remove ssh config + #rm -f /etc/ssh/ssh_host* + + # clean up useless stuff + rm -rf /tmp/* ~/.bash_history >>$OUTPUT 2>&1 + rm -rf ~/.cache + find /var/log/ -type f | xargs rm -f >>$OUTPUT 2>&1 + rm -f /etc/ssh/ssh_host* + rm -f /var/backups/* >>$OUTPUT 2>&1 + rm -f /var/cache/ldconfig/* >>$OUTPUT 2>&1 + #rm -f /var/cache/debconf/* >>$OUTPUT 2>&1 + rm -f /var/cache/fontconfig/* >>$OUTPUT 2>&1 + rm -f /var/cache/apt/archives/*.deb >>$OUTPUT 2>&1 + rm -f /var/cache/apt/*.bin >>$OUTPUT 2>&1 + rm -f /var/cache/debconf/*-old >>$OUTPUT 2>&1 + rm -f /var/lib/apt/extended_states >>$OUTPUT 2>&1 + rm -f /var/lib/apt/lists/*Packages >>$OUTPUT 2>&1 + rm -f /var/lib/apt/lists/*Translation* >>$OUTPUT 2>&1 + rm -f /var/lib/apt/lists/*InRelease >>$OUTPUT 2>&1 + rm -f /var/lib/apt/lists/deb.* >>$OUTPUT 2>&1 + rm -f /var/lib/dpkg/*-old >>$OUTPUT 2>&1 + +} + +# ================================================================= +# ================================================================= +# ======================= MODULE FUNCTIONS ======================== +# ================================================================= +# ================================================================= + +# ================================================================= +# +# +# ================================================================= +function module_check_mounted() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if grep -qs "$MODULE_MERGED_DIR" /proc/mounts || grep -qs "$MODULE_MERGED_DIR/dev" /proc/mounts || grep -qs "$MODULE_MERGED_DIR/run" /proc/mounts || grep -qs "$MODULE_MERGED_DIR/proc" /proc/mounts || grep -qs "$MODULE_MERGED_DIR/sys" /proc/mounts || grep -qs "$MODULE_MERGED_DIR/dev/pts" /proc/mounts || grep -qs "$MODULE_MERGED_DIR/tmp" /proc/mounts; then + echo -e "${BOLD}${LIGHTYELLOW}Сhroot contains mounted filesystems.${ENDCOLOUR}" + if [ "$UNATTENDED" = "1" ]; then + module_chroot_umount_fs + else + read -r -p "$(echo -e ""Do you want to ${GREEN}unmount them${ENDCOLOUR}? [${BOLD}${GREEN}Y${ENDCOLOUR}/n])" response + response=${response,,} + if [[ "$response" =~ ^(no|n)$ ]]; then + exit 1 + else + module_chroot_umount_fs + fi + fi + fi +} + +# ================================================================= +# +# +# ================================================================= +function module_check_build_dir() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ "$UNATTENDED" = "1" ]; then + #echo -e "${RED}!!!Unattended installation!!!${ENDCOLOUR}" + echo -e "The working directory is ${MAGENTA}$MODULE_UPPER_DIR${ENDCOLOUR}." + if [ "$(ls -A $MODULE_UPPER_DIR)" != "" ]; then + module_cleanup + module_check_mounted + fi + else + # ▼ должно быть только перенаправление ошибки! + if [ "$(ls -A $MODULE_UPPER_DIR)" != "" ]; then + echo -e "${MAGENTA}$MODULE_UPPER_DIR${ENDCOLOUR} is not empty." + module_cleanup + module_check_mounted + echo -e "The working directory is ${MAGENTA}$MODULE_MERGED_DIR${ENDCOLOUR}." + else + module_check_mounted + echo -e "The working directory is ${MAGENTA}$MODULE_MERGED_DIR${ENDCOLOUR}." + fi + fi +} + +# ================================================================= +# +# +# ================================================================= +function module_chroot_mount_fs() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + + local MODULES MODULE_LOWER_DIR + + module_check_mounted + + if [ $UNION_BUILD_TYPE = "overlayfs" ]; then + MODULES_LIST="" + MODULES=($PARENT_DIR/image/$LIVEKITNAME/*.$BEXT) + for ((i = ${#MODULES[@]} - 1; i >= 0; i--)); do + MODULE_LOWER_DIR=$(basename ${MODULES[$i]} .$BEXT) + mkdir -p $MODULES_DIR/lower/$MODULE_LOWER_DIR-lower + mount ${MODULES[$i]} $MODULES_DIR/lower/$MODULE_LOWER_DIR-lower + MODULES_LIST=$MODULES_LIST":""$MODULES_DIR/lower/$MODULE_LOWER_DIR-lower" + done + MODULES_LIST=${MODULES_LIST:1} + + mkdir -p $MODULE_UPPER_DIR $MODULE_WORK_DIR $MODULE_MERGED_DIR + + mount -t overlay overlay -o lowerdir=$MODULES_LIST,upperdir=$MODULE_UPPER_DIR,workdir=$MODULE_WORK_DIR $MODULE_MERGED_DIR + elif [ $UNION_BUILD_TYPE = "aufs" ]; then + MODULES_LIST="" + MODULES=($PARENT_DIR/image/$LIVEKITNAME/*.$BEXT) + for ((i = ${#MODULES[@]} - 1; i >= 0; i--)); do + MODULE_LOWER_DIR=$(basename ${MODULES[$i]} .$BEXT) + mkdir -p $MODULES_DIR/lower/$MODULE_LOWER_DIR-lower + mount ${MODULES[$i]} $MODULES_DIR/lower/$MODULE_LOWER_DIR-lower + MODULES_LIST=$MODULES_LIST":""$MODULES_DIR/lower/$MODULE_LOWER_DIR-lower""=ro" + done + MODULES_LIST=${MODULES_LIST:1} + + mkdir -p $MODULE_UPPER_DIR $MODULE_WORK_DIR $MODULE_MERGED_DIR + + mount -t aufs -o br:$MODULE_UPPER_DIR=rw:$MODULES_LIST aufs $MODULE_MERGED_DIR + fi + + if [ ! -d $MODULE_MERGED_DIR/dev ]; then + mkdir -p $MODULE_MERGED_DIR/dev + fi + if [ ! -d $MODULE_MERGED_DIR/run ]; then + mkdir -p $MODULE_MERGED_DIR/run + fi + if [ ! -d $MODULE_MERGED_DIR/proc ]; then + mkdir -p $MODULE_MERGED_DIR/proc + fi + if [ ! -d $MODULE_MERGED_DIR/sys ]; then + mkdir -p $MODULE_MERGED_DIR/sys + fi + if [ ! -d $MODULE_MERGED_DIR/tmp ]; then + mkdir -p $MODULE_MERGED_DIR/tmp + fi + + mount --bind /dev $MODULE_MERGED_DIR/dev + if [ -f /.dockerenv ] || [ "$container" = "podman" ]; then + mkdir -p $MODULE_MERGED_DIR/run/resolvconf + touch $MODULE_MERGED_DIR/run/resolvconf/resolv.conf + mount --bind /etc/resolv.conf $MODULE_MERGED_DIR/run/resolvconf/resolv.conf + else + mount --bind /run $MODULE_MERGED_DIR/run + fi + mount none -t proc $MODULE_MERGED_DIR/proc + mount none -t sysfs $MODULE_MERGED_DIR/sys + mount none -t devpts $MODULE_MERGED_DIR/dev/pts + mount none -t tmpfs $MODULE_MERGED_DIR/tmp +} + +# ================================================================= +# +# +# ================================================================= +function module_chroot_umount_fs() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + + local MODULES MODULE_LOWER_DIR + + set +e + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + umount $MODULE_MERGED_DIR/proc + umount $MODULE_MERGED_DIR/sys + umount $MODULE_MERGED_DIR/dev/pts + umount $MODULE_MERGED_DIR/tmp + umount $MODULE_MERGED_DIR/dev + if [ -f /.dockerenv ] || [ "$container" = "podman" ]; then + umount $MODULE_MERGED_DIR/run/resolvconf/resolv.conf + rm -f $MODULE_MERGED_DIR/run/resolvconf/resolv.conf + rmdir $MODULE_MERGED_DIR/run/resolvconf + else + umount $MODULE_MERGED_DIR/run + fi + umount $MODULE_MERGED_DIR + else + umount $MODULE_MERGED_DIR/proc >>$OUTPUT 2>&1 + umount $MODULE_MERGED_DIR/sys >>$OUTPUT 2>&1 + umount $MODULE_MERGED_DIR/dev/pts >>$OUTPUT 2>&1 + umount $MODULE_MERGED_DIR/tmp >>$OUTPUT 2>&1 + umount $MODULE_MERGED_DIR/dev >>$OUTPUT 2>&1 + if [ -f /.dockerenv ] || [ "$container" = "podman" ]; then + umount $MODULE_MERGED_DIR/run/resolvconf/resolv.conf >>$OUTPUT 2>&1 + rm -f $MODULE_MERGED_DIR/run/resolvconf/resolv.conf + rmdir $MODULE_MERGED_DIR/run/resolvconf + else + umount $MODULE_MERGED_DIR/run >>$OUTPUT 2>&1 + fi + umount $MODULE_MERGED_DIR >>$OUTPUT 2>&1 + fi + + MODULES=($PARENT_DIR/image/$LIVEKITNAME/*.$BEXT) + for ((i = ${#MODULES[@]} - 1; i >= 0; i--)); do + MODULE_LOWER_DIR=$(basename ${MODULES[$i]} .$BEXT) + umount $MODULES_DIR/lower/$MODULE_LOWER_DIR-lower + done + + set -e + + module_check_mounted +} + +# ================================================================= +# +# +# ================================================================= +function module_cleanup() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + if [ "$UNATTENDED" = "1" ]; then + module_check_mounted + rm -rf $MODULE_UPPER_DIR + if [ -d "$MODULE_UPPER_DIR" ]; then + module_cleanup + fi + else + read -r -p "$(echo -e ""Do you want to ${BOLD}${RED}completely remove content${ENDCOLOUR} of ${MAGENTA}$MODULE_UPPER_DIR${ENDCOLOUR}? [y/${BOLD}${GREEN}N${ENDCOLOUR}])" response + response=${response,,} + if [[ "$response" =~ ^(yes|y)$ ]]; then + module_check_mounted + rm -rf $MODULE_UPPER_DIR + if [ -d "$MODULE_UPPER_DIR" ]; then + module_cleanup + fi + else + echo -e "${MAGENTA}$MODULE_UPPER_DIR${ENDCOLOUR} should be empty to continue." + exit 1 + fi + fi +} + +# ================================================================= +# +# +# ================================================================= +function module_chroot_finish_up() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + + # truncate machine id (why??) + chroot $MODULE_MERGED_DIR /bin/bash -x <>$OUTPUT 2>&1 + dpkg-divert --rename --remove /sbin/initctl >>$OUTPUT 2>&1 +EOF + fi + + if [ -d $MODULE_UPPER_DIR/home/live ]; then + chown 1000:1000 $MODULE_UPPER_DIR/home/live + chown -R 1000:1000 $MODULE_UPPER_DIR/home/live + fi +} + +# ================================================================= +# +# +# ================================================================= +function module_chroot_cleanup() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + # clean up useless stuff + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + rm -rf $MODULE_UPPER_DIR/boot $MODULE_UPPER_DIR/dev $MODULE_UPPER_DIR/proc $MODULE_UPPER_DIR/sys $MODULE_UPPER_DIR/rmp $MODULE_UPPER_DIR/run + rm -f $MODULE_UPPER_DIR/root/.bash_history + rm -rf $MODULE_UPPER_DIR/.cache + find $MODULE_UPPER_DIR/var/log/ -type f | xargs rm -f + rm -f $MODULE_UPPER_DIR/etc/ssh/ssh_host* + rm -f $MODULE_UPPER_DIR/var/backups/* + rm -f $MODULE_UPPER_DIR/var/cache/ldconfig/* + #rm -f $MODULE_UPPER_DIR/var/cache/debconf/* + rm -f $MODULE_UPPER_DIR/var/cache/fontconfig/* + rm -f $MODULE_UPPER_DIR/var/cache/apt/archives/*.deb + rm -f $MODULE_UPPER_DIR/var/cache/apt/*.bin + rm -f $MODULE_UPPER_DIR/var/cache/debconf/*-old + rm -f $MODULE_UPPER_DIR/var/lib/apt/extended_states + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/*Packages + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/*Translation* + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/*InRelease + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/deb.* + rm -f $MODULE_UPPER_DIR/var/lib/dpkg/*-old + rm -f $MODULE_UPPER_DIR/preinstall + rm -f $MODULE_UPPER_DIR/install + rm -f $MODULE_UPPER_DIR/install2 + rm -f $MODULE_UPPER_DIR/cleanup + rm -f $MODULE_UPPER_DIR/$PACKAGE_VARIANT.list + rm -f $MODULE_UPPER_DIR/postinstall + rm -rf $MODULE_UPPER_DIR/rootcopy + else + rm -rf $MODULE_UPPER_DIR/boot $MODULE_UPPER_DIR/dev $MODULE_UPPER_DIR/proc $MODULE_UPPER_DIR/sys $MODULE_UPPER_DIR/rmp $MODULE_UPPER_DIR/run + rm -f $MODULE_UPPER_DIR/root/.bash_history >>$OUTPUT 2>&1 + rm -rf $MODULE_UPPER_DIR/.cache + find $MODULE_UPPER_DIR/var/log/ -type f | xargs rm -f >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/etc/ssh/ssh_host* + rm -f $MODULE_UPPER_DIR/var/backups/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/ldconfig/* >>$OUTPUT 2>&1 + #rm -f $MODULE_UPPER_DIR/var/cache/debconf/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/fontconfig/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/apt/archives/*.deb >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/apt/*.bin >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/debconf/*-old >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/apt/extended_states >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/*Packages >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/*Translation* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/*InRelease >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/deb.* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/dpkg/*-old >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/preinstall >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/install >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/install2 >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/cleanup >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/$PACKAGE_VARIANT.list >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/postinstall >>$OUTPUT 2>&1 + rm -rf $MODULE_UPPER_DIR/rootcopy >>$OUTPUT 2>&1 + fi +} + +# ================================================================= +# +# +# ================================================================= +function module_build_cleanup() { + echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + + set +e + + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + rm -f $MODULE_UPPER_DIR/preinstall + rm -f $MODULE_UPPER_DIR/install + rm -f $MODULE_UPPER_DIR/install2 + rm -f $MODULE_UPPER_DIR/cleanup + rm -f $MODULE_UPPER_DIR/$PACKAGE_VARIANT.list + rm -f $MODULE_UPPER_DIR/postinstall + rm -rf $MODULE_UPPER_DIR/rootcopy + rm -rf $MODULE_UPPER_DIR/patches + + rm -f $MODULE_UPPER_DIR/etc/fstab + rm -f $MODULE_UPPER_DIR/etc/mtab + rm -f $MODULE_UPPER_DIR/etc/apt/sources.list~ + rm -Rf $MODULE_UPPER_DIR/etc/systemd/system/timers.target.wants + rm -f $MODULE_UPPER_DIR/etc/systemd/system/multi-user.target.wants/ssh.service + rm -f $MODULE_UPPER_DIR/etc/systemd/system/multi-user.target.wants/dnsmasq.service + + rm -f $MODULE_UPPER_DIR/etc/ssh/ssh_host* + + rm -f $MODULE_UPPER_DIR/var/backups/* + rm -f $MODULE_UPPER_DIR/var/cache/ldconfig/* + rm -f $MODULE_UPPER_DIR/var/cache/debconf/* + rm -f $MODULE_UPPER_DIR/var/cache/fontconfig/* + rm -f $MODULE_UPPER_DIR/var/lib/apt/extended_states + rm -f $MODULE_UPPER_DIR/var/lib/systemd/random-seed + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/deb.* + rm -Rf $MODULE_UPPER_DIR/root/.local/share/mc + rm -Rf $MODULE_UPPER_DIR/root/.cache + rm -f $MODULE_UPPER_DIR/root/.wget-hsts + + rm -f $MODULE_UPPER_DIR/var/lib/dpkg/*-old + rm -f $MODULE_UPPER_DIR/var/log/* + rm -f $MODULE_UPPER_DIR/var/log/*/* + rm -f $MODULE_UPPER_DIR/var/log/*/*/* + rm -f $MODULE_UPPER_DIR/var/cache/apt/archives/*.deb + rm -f $MODULE_UPPER_DIR/var/cache/apt/*.bin + rm -f $MODULE_UPPER_DIR/var/cache/debconf/*-old + rm -f $MODULE_UPPER_DIR/var/lib/dhcp/dhclient.leases + rm -f $MODULE_UPPER_DIR/root/.bash_history + rm -f $MODULE_UPPER_DIR/root/.wget-hsts + rm -Rf $MODULE_UPPER_DIR/usr/share/doc/* + rm -Rf $MODULE_UPPER_DIR/usr/share/info/* + rm -f $MODULE_UPPER_DIR/usr/share/images/fluxbox/debian-squared.jpg + rm -Rf $MODULE_UPPER_DIR/usr/share/fluxbox/nls/??* + rm -Rf $MODULE_UPPER_DIR/usr/share/gnome/help + + rm -Rf $MODULE_UPPER_DIR/usr/share/locale/?? + rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??_* + rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??@* + rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??? + rm -Rf $MODULE_UPPER_DIR/usr/share/i18n/locales/*_* + rm -Rf $MODULE_UPPER_DIR/usr/share/man/?? + rm -Rf $MODULE_UPPER_DIR/usr/share/man/*_* + + rm -Rf $MODULE_UPPER_DIR/usr/share/icons/elementaryXubuntu-dark + rm -Rf $MODULE_UPPER_DIR/usr/share/icons/gnome/256x256 + + rm $MODULE_UPPER_DIR/usr/share/applications/compton.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/debian-uxterm.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/debian-xterm.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/htop.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/mc.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/mcedit.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/pcmanfm-desktop-pref.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/python2.7.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/python3.7.desktop + rm $MODULE_UPPER_DIR/usr/share/applications/vim.desktop + + # Unzip gzipped files (man pages), so LZMA can compress 2times better. + # First we fix symlinks, then uncompress files + # $1 = search directory + uncompress_files() { + local LINK LINE + + find "$1" -type l -name "*.gz" | while read LINE; do + LINK="$(readlink "$LINE" | sed -r 's/.gz$//')" + FILE="$(echo "$LINE" | sed -r 's/.gz$//')" + ln -sfn "$LINK" "$FILE" + rm -f "$LINE" + done + find "$1" -type f -name "*.gz" | xargs -r gunzip + } + + uncompress_files $MODULE_UPPER_DIR/etc/alternatives + uncompress_files $MODULE_UPPER_DIR/usr/share/man + + # remove broken links + # $1 = search directory + remove_broken_links() { + find "$1" -type l -exec test ! -e {} \; -print | xargs rm -vf + } + + remove_broken_links $MODULE_UPPER_DIR/etc/alternatives + remove_broken_links $MODULE_UPPER_DIR/usr/share/man + else + rm -f $MODULE_UPPER_DIR/preinstall >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/install >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/install2 >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/cleanup >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/$PACKAGE_VARIANT.list >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/postinstall >>$OUTPUT 2>&1 + rm -rf $MODULE_UPPER_DIR/rootcopy >>$OUTPUT 2>&1 + rm -rf $MODULE_UPPER_DIR/patches >>$OUTPUT 2>&1 + + rm -f $MODULE_UPPER_DIR/etc/fstab >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/etc/mtab >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/etc/apt/sources.list~ >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/etc/systemd/system/timers.target.wants >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/etc/systemd/system/multi-user.target.wants/ssh.service >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/etc/systemd/system/multi-user.target.wants/dnsmasq.service >>$OUTPUT 2>&1 + + rm -f $MODULE_UPPER_DIR/etc/ssh/ssh_host* >>$OUTPUT 2>&1 + + rm -f $MODULE_UPPER_DIR/var/backups/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/ldconfig/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/debconf/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/fontconfig/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/apt/extended_states >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/systemd/random-seed >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/deb.* >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/root/.local/share/mc >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/root/.cache >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/root/.wget-hsts >>$OUTPUT 2>&1 + + rm -f $MODULE_UPPER_DIR/var/lib/dpkg/*-old >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/log/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/log/*/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/log/*/*/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/apt/archives/*.deb >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/apt/*.bin >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/cache/debconf/*-old >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/var/lib/dhcp/dhclient.leases >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/root/.bash_history >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/root/.wget-hsts >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/doc/* >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/info/* >>$OUTPUT 2>&1 + rm -f $MODULE_UPPER_DIR/usr/share/images/fluxbox/debian-squared.jpg >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/fluxbox/nls/??* >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/gnome/help >>$OUTPUT 2>&1 + + rm -Rf $MODULE_UPPER_DIR/usr/share/locale/?? >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??_* >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??@* >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??? >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/i18n/locales/*_* >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/man/?? >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/man/*_* >>$OUTPUT 2>&1 + + rm -Rf $MODULE_UPPER_DIR/usr/share/icons/elementaryXubuntu-dark >>$OUTPUT 2>&1 + rm -Rf $MODULE_UPPER_DIR/usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1 + + rm $MODULE_UPPER_DIR/usr/share/applications/compton.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/debian-uxterm.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/debian-xterm.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/htop.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/mc.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/mcedit.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/pcmanfm-desktop-pref.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/python2.7.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/python3.7.desktop >>$OUTPUT 2>&1 + rm $MODULE_UPPER_DIR/usr/share/applications/vim.desktop >>$OUTPUT 2>&1 + + # Unzip gzipped files (man pages), so LZMA can compress 2times better. + # First we fix symlinks, then uncompress files + # $1 = search directory + uncompress_files() { + local LINK LINE + + find "$1" -type l -name "*.gz" | while read LINE; do + LINK="$(readlink "$LINE" | sed -r 's/.gz$//')" + FILE="$(echo "$LINE" | sed -r 's/.gz$//')" + ln -sfn "$LINK" "$FILE" + rm -f "$LINE" + done + find "$1" -type f -name "*.gz" | xargs -r gunzip >>$OUTPUT 2>&1 + } + + uncompress_files $MODULE_UPPER_DIR/etc/alternatives >>$OUTPUT 2>&1 + uncompress_files $MODULE_UPPER_DIR/usr/share/man >>$OUTPUT 2>&1 + + # remove broken links + # $1 = search directory + remove_broken_links() { + find "$1" -type l -exec test ! -e {} \; -print | xargs rm -vf >>$OUTPUT 2>&1 + } + + remove_broken_links $MODULE_UPPER_DIR/etc/alternatives >>$OUTPUT 2>&1 + remove_broken_links $MODULE_UPPER_DIR/usr/share/man >>$OUTPUT 2>&1 + fi + + set -e + +} + +# ================================================================= +# +# +# ================================================================= +function build_modules() { + current_process + + if [ $CONTAINER_TYPE = "1" ]; then + if [ ! -f /.minios-live ]; then + setup_host + fi + fi + + MODULES_DIR=$PARENT_DIR/modules + + cd $SCRIPT_DIR/linux-live/modules + + for MODULE in *; do + if (ls $PARENT_DIR/image/$LIVEKITNAME/*.$BEXT | grep -q $MODULE 2>/dev/null); then + echo -e "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${ENDCOLOUR}" + echo -e "Please remove ${MAGENTA}$PARENT_DIR/image/$LIVEKITNAME/$MODULE.$BEXT${ENDCOLOUR} if you want to build ${MAGENTA}$MODULE${ENDCOLOUR}." + echo -e "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${ENDCOLOUR}" + else + MODULE_UPPER_DIR="$MODULES_DIR/$MODULE-upper" + MODULE_WORK_DIR="$MODULES_DIR/$MODULE-work" + MODULE_MERGED_DIR="$MODULES_DIR/$MODULE-merged" + + module_check_build_dir + + module_chroot_mount_fs + + # run pre-install script + if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/preinstall ]; then + cp $SCRIPT_DIR/linux-live/modules/$MODULE/preinstall $MODULE_MERGED_DIR/preinstall + chmod +x $MODULE_MERGED_DIR/preinstall + chroot $MODULE_MERGED_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /preinstall >>$OUTPUT 2>&1 + fi + + # copy files + if [ ! -f $SCRIPT_DIR/linux-live/modules/$MODULE/is_internal_build ]; then + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy)" != "" ]; then + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy && cp --parents -afr * $MODULE_MERGED_DIR/) + fi + else + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy)" != "" ] >>$OUTPUT 2>&1; then + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy && cp --parents -afr * $MODULE_MERGED_DIR/) + fi + fi + else + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy)" != "" ]; then + mkdir $MODULE_MERGED_DIR/rootcopy + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy && cp --parents -afr * $MODULE_MERGED_DIR/rootcopy/) + fi + else + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy)" != "" ] >>$OUTPUT 2>&1; then + mkdir $MODULE_MERGED_DIR/rootcopy + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy && cp --parents -afr * $MODULE_MERGED_DIR/rootcopy/) + fi + fi + fi + + # run install script + if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/install ]; then + cp $SCRIPT_DIR/linux-live/modules/$MODULE/install $MODULE_MERGED_DIR/install + chmod +x $MODULE_MERGED_DIR/install + if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/cleanup ]; then + cp $SCRIPT_DIR/linux-live/modules/$MODULE/cleanup $MODULE_MERGED_DIR/cleanup + fi + if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/$PACKAGE_VARIANT.list ]; then + cp $SCRIPT_DIR/linux-live/modules/$MODULE/$PACKAGE_VARIANT.list $MODULE_MERGED_DIR/$PACKAGE_VARIANT.list + fi + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + chroot $MODULE_MERGED_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /install + else + chroot $MODULE_MERGED_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /install >>$OUTPUT 2>&1 + fi + fi + + if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/is_internal_build ]; then + module_chroot_umount_fs + + module_build_cleanup + + # run external actions + + if [ "$(ls -A $MODULE_UPPER_DIR)" != "" ]; then + mkdir -p $PARENT_DIR/modules/tmp >>$OUTPUT 2>&1 + mksquashfs $MODULE_UPPER_DIR $PARENT_DIR/modules/tmp/$MODULE-stock.$BEXT -comp lz4 -b 1024K -always-use-fragments -noappend >>$OUTPUT 2>&1 || exit + mv $PARENT_DIR/modules/tmp/$MODULE-stock.$BEXT $MODULE_UPPER_DIR/$MODULE-stock.$BEXT >>$OUTPUT 2>&1 + cd $MODULE_UPPER_DIR >>$OUTPUT 2>&1 + unsquashfs $MODULE-stock.$BEXT >>$OUTPUT 2>&1 + else + echo -e "${MAGENTA}$MODULE_UPPER_DIR${ENDCOLOUR} is empty. Nothing to do." + fi + + #module_check_build_dir + + module_chroot_mount_fs + fi + + # run install2 script + if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/install2 ]; then + cp $SCRIPT_DIR/linux-live/modules/$MODULE/install2 $MODULE_MERGED_DIR/install2 + chmod +x $MODULE_MERGED_DIR/install2 + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/patches)" != "" ] >>$OUTPUT 2>&1; then + mkdir $MODULE_MERGED_DIR/patches + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/patches && cp --parents -afr * $MODULE_MERGED_DIR/patches/) + fi + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + chroot $MODULE_MERGED_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /install2 + else + chroot $MODULE_MERGED_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /install2 >>$OUTPUT 2>&1 + fi + fi + + # copy files + if [ ! -f $SCRIPT_DIR/linux-live/modules/$MODULE/is_internal_build ]; then + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy-postinstall)" != "" ]; then + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy-postinstall && cp --parents -afr * $MODULE_MERGED_DIR/) + fi + else + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy-postinstall)" != "" ] >>$OUTPUT 2>&1; then + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy-postinstall && cp --parents -afr * $MODULE_MERGED_DIR/) + fi + fi + else + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy-postinstall)" != "" ]; then + mkdir $MODULE_MERGED_DIR/rootcopy-postinstall + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy-postinstall && cp --parents -afr * $MODULE_MERGED_DIR/rootcopy-postinstall/) + fi + else + if [ "$(ls -A $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy-postinstall)" != "" ] >>$OUTPUT 2>&1; then + mkdir $MODULE_MERGED_DIR/rootcopy-postinstall + (cd $SCRIPT_DIR/linux-live/modules/$MODULE/rootcopy-postinstall && cp --parents -afr * $MODULE_MERGED_DIR/rootcopy-postinstall/) + fi + fi + fi + + # run post-install script + if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/postinstall ]; then + cp $SCRIPT_DIR/linux-live/modules/$MODULE/postinstall $MODULE_MERGED_DIR/postinstall + chmod +x $MODULE_MERGED_DIR/postinstall + if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then + chroot $MODULE_MERGED_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /postinstall + else + chroot $MODULE_MERGED_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + APT_OPTIONS2=$APT_OPTIONS2 \ + LIVE_TYPE=$LIVE_TYPE \ + DISTRIBUTION=$DISTRIBUTION \ + PACKAGE_VARIANT=$PACKAGE_VARIANT \ + /postinstall >>$OUTPUT 2>&1 + fi + fi + + # run external actions + if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/is_internal_build ]; then + cp $MODULE_UPPER_DIR/$MODULE.$BEXT $PARENT_DIR/image/$LIVEKITNAME/$MODULE-$COMP_TYPE.$BEXT >>$OUTPUT 2>&1 + fi + + module_chroot_finish_up + + module_chroot_umount_fs + + if [ ! -f $SCRIPT_DIR/linux-live/modules/$MODULE/is_internal_build ]; then + module_build_cleanup + fi + + module_chroot_cleanup + + if [ ! -f $SCRIPT_DIR/linux-live/modules/$MODULE/is_internal_build ]; then + if [ ! -f $PARENT_DIR/image/$LIVEKITNAME/$MODULE-$COMP_TYPE.$BEXT ]; then + if [ "$(ls -A $MODULE_UPPER_DIR)" != "" ]; then + if [ $COMP_TYPE = "zstd" ]; then + mksquashfs $MODULE_UPPER_DIR $PARENT_DIR/image/$LIVEKITNAME/$MODULE-$COMP_TYPE.$BEXT -comp $COMP_TYPE -Xcompression-level 22 -b 1024K -always-use-fragments -noappend || exit + else + mksquashfs $MODULE_UPPER_DIR $PARENT_DIR/image/$LIVEKITNAME/$MODULE-$COMP_TYPE.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -noappend || exit + fi + else + echo -e "${MAGENTA}$MODULE_UPPER_DIR${ENDCOLOUR} is empty. Nothing to do." + fi + else + echo -e "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${ENDCOLOUR}" + echo -e "Please remove ${MAGENTA}$PARENT_DIR/image/$LIVEKITNAME/$MODULE-$COMP_TYPE.$BEXT${ENDCOLOUR} if you want to build ${MAGENTA}$MODULE${ENDCOLOUR}." + echo -e "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${ENDCOLOUR}" + fi + fi + + fi + done +} + +# ================================================================= +# +# +# ================================================================= +function build_modules_live() { + current_process + echo "here 2" + if [ $CONTAINER_TYPE = "1" ]; then + if [ ! -f /.minios-live ]; then + setup_host + fi + fi + + MODULES_DIR=$PARENT_DIR/modules + + cd $SCRIPT_DIR/linux-live/modules + + for MODULE in *; do + + if (ls $PARENT_DIR/image/$LIVEKITNAME/*.$BEXT | grep -q $MODULE 2>/dev/null); then + echo -e "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${ENDCOLOUR}" + echo -e "Please remove ${MAGENTA}$PARENT_DIR/image/$LIVEKITNAME/$MODULE.$BEXT${ENDCOLOUR} if you want to build ${MAGENTA}$MODULE${ENDCOLOUR}." + echo -e "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${ENDCOLOUR}" + else + + MODULE_UPPER_DIR="$MODULES_DIR/$MODULE-upper" + MODULE_WORK_DIR="$MODULES_DIR/$MODULE-work" + MODULE_MERGED_DIR="$MODULES_DIR/$MODULE-merged" + + if [ "$(ls -A $MODULE_UPPER_DIR)" != "" ]; then + if [ $COMP_TYPE = "zstd" ]; then + mksquashfs $MODULE_UPPER_DIR $PARENT_DIR/image/$LIVEKITNAME/$MODULE-$COMP_TYPE.$BEXT -comp $COMP_TYPE -Xcompression-level 22 -b 1024K -always-use-fragments -noappend || exit + else + mksquashfs $MODULE_UPPER_DIR $PARENT_DIR/image/$LIVEKITNAME/$MODULE-$COMP_TYPE.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -noappend || exit + fi + else + echo -e "${MAGENTA}$MODULE_UPPER_DIR${ENDCOLOUR} is empty. Nothing to do." + fi + fi + done +} + +function repack_module() { + OLD_MODULE=$MODULE + MODULE=${MODULE%"-$OLD_COMP_TYPE.$BEXT"} + if [ $COMP_TYPE = $OLD_COMP_TYPE ]; then + echo "The module is already in the required compression format." && exit + fi + unsquashfs $OLD_MODULE + + mksquashfs squashfs-root $MODULE-$COMP_TYPE.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -noappend || exit + + rm -rf squashfs-root + rm -f $OLD_MODULE +} + +function repack_modules() { + current_process + + cd $PARENT_DIR/image/$LIVEKITNAME/ + for MODULE in *; do + if (ls ./*-xz.$BEXT | grep -q $MODULE >>/dev/null 2>&1); then + OLD_COMP_TYPE="xz" + repack_module + elif (ls ./*-lz4.$BEXT | grep -q $MODULE >>/dev/null 2>&1); then + OLD_COMP_TYPE="lz4" + repack_module + elif (ls ./*-zstd.$BEXT | grep -q $MODULE >>/dev/null 2>&1); then + OLD_COMP_TYPE="zstd" + repack_module + fi + done +}