2021-06-09 23:32:56 +00:00
|
|
|
# Maintainer: Clayton Craft <clayton@craftyguy.net>
|
|
|
|
pkgname=postmarketos-base-ui
|
2024-05-03 16:40:08 +00:00
|
|
|
pkgver=22
|
|
|
|
pkgrel=0
|
2021-06-09 23:32:56 +00:00
|
|
|
pkgdesc="Meta package for minimal postmarketOS UI base"
|
|
|
|
url="https://postmarketos.org"
|
|
|
|
arch="noarch"
|
|
|
|
license="GPL-3.0-or-later"
|
|
|
|
depends="
|
|
|
|
chrony
|
|
|
|
dbus
|
2022-10-11 01:42:18 +00:00
|
|
|
font-dejavu
|
2021-06-09 23:32:56 +00:00
|
|
|
haveged
|
|
|
|
nftables
|
2024-05-01 22:18:30 +00:00
|
|
|
pipewire
|
2022-01-20 09:17:09 +00:00
|
|
|
postmarketos-artwork-icons
|
2021-06-09 23:32:56 +00:00
|
|
|
postmarketos-base
|
|
|
|
shadow
|
2023-06-11 16:44:17 +00:00
|
|
|
tzdata
|
2021-06-09 23:32:56 +00:00
|
|
|
util-linux
|
|
|
|
wireless-regdb
|
2024-05-01 22:18:30 +00:00
|
|
|
wireplumber
|
2021-06-09 23:32:56 +00:00
|
|
|
"
|
|
|
|
subpackages="
|
2024-04-26 16:55:24 +00:00
|
|
|
$pkgname-audio-pipewire:_audio_pipewire
|
|
|
|
$pkgname-audio-pulseaudio:_audio_pulseaudio
|
2023-05-30 08:01:22 +00:00
|
|
|
$pkgname-bluez
|
|
|
|
$pkgname-bluez-obexd:_obexd
|
2021-06-09 23:32:56 +00:00
|
|
|
$pkgname-elogind
|
2024-02-06 22:38:53 +00:00
|
|
|
$pkgname-flatpak
|
2024-02-05 15:41:34 +00:00
|
|
|
$pkgname-networkmanager-usb-tethering:_usb_tethering
|
2023-05-30 08:01:22 +00:00
|
|
|
$pkgname-networkmanager
|
2023-03-14 19:49:31 +00:00
|
|
|
$pkgname-openrc-settingsd:_openrc_settingsd
|
2023-05-30 08:01:22 +00:00
|
|
|
$pkgname-pulseaudio
|
2023-07-10 07:50:31 +00:00
|
|
|
$pkgname-qt-tweaks:qt_tweaks
|
|
|
|
$pkgname-qt-wayland:qt_wayland
|
2023-11-22 08:03:57 +00:00
|
|
|
$pkgname-tinydm
|
|
|
|
$pkgname-wifi-iwd:iwd
|
|
|
|
$pkgname-wifi-wpa_supplicant:wpa_supplicant
|
|
|
|
$pkgname-x11
|
2023-02-01 08:14:38 +00:00
|
|
|
postmarketos-default-camera:_default_camera
|
2021-06-09 23:32:56 +00:00
|
|
|
"
|
|
|
|
install="$pkgname.post-install $pkgname.post-upgrade"
|
|
|
|
replaces="
|
|
|
|
chrony
|
|
|
|
wpa_supplicant-openrc
|
|
|
|
postmarketos-base
|
|
|
|
"
|
|
|
|
replaces_priority=100 # leave plenty for alpine
|
|
|
|
|
|
|
|
_source644="
|
|
|
|
etc/chrony/chrony.conf
|
2023-07-01 18:40:02 +00:00
|
|
|
etc/elogind/logind.conf
|
2023-05-30 08:01:22 +00:00
|
|
|
etc/conf.d/bluetooth
|
2023-03-14 19:49:31 +00:00
|
|
|
etc/conf.d/openrc-settingsd
|
2021-06-09 23:32:56 +00:00
|
|
|
etc/conf.d/tinydm
|
|
|
|
etc/conf.d/wpa_supplicant
|
2022-09-08 00:05:26 +00:00
|
|
|
etc/pulse/default.pa.d/postmarketos.pa
|
2021-08-17 11:26:14 +00:00
|
|
|
etc/skel/.profile
|
2021-08-22 13:48:31 +00:00
|
|
|
etc/sleep-inhibitor.conf
|
2021-12-19 15:32:36 +00:00
|
|
|
etc/X11/Xwrapper.config
|
2023-07-15 20:06:54 +00:00
|
|
|
usr/lib/NetworkManager/conf.d/50-hostname-mode.conf
|
2023-11-22 08:03:57 +00:00
|
|
|
usr/lib/NetworkManager/conf.d/50-iwd.conf
|
2023-07-15 20:06:54 +00:00
|
|
|
usr/lib/NetworkManager/conf.d/50-random-mac.conf
|
|
|
|
usr/lib/NetworkManager/conf.d/50-tethering.conf
|
|
|
|
usr/lib/NetworkManager/conf.d/50-use-dnsmasq.conf
|
2024-05-03 16:40:08 +00:00
|
|
|
usr/share/wireplumber/wireplumber.conf.d/50-pulseaudio.conf
|
|
|
|
"
|
2023-01-22 17:55:54 +00:00
|
|
|
_source600="
|
|
|
|
usr/lib/NetworkManager/system-connections/USB_Networking.nmconnection
|
|
|
|
"
|
2021-06-27 19:41:19 +00:00
|
|
|
_source755="
|
|
|
|
etc/tinydm.d/env-wayland.d/50-firefox-wayland.sh
|
2021-11-09 09:25:47 +00:00
|
|
|
etc/tinydm.d/env-wayland.d/50-sdl-wayland.sh
|
2023-07-15 20:06:54 +00:00
|
|
|
usr/lib/NetworkManager/dispatcher.d/50-dns-filter.sh
|
|
|
|
usr/lib/NetworkManager/dispatcher.d/50-tethering.sh
|
2023-07-10 07:50:31 +00:00
|
|
|
etc/profile.d/qt-mobile-controls.sh
|
|
|
|
etc/profile.d/qt-wayland.sh
|
2021-06-27 19:41:19 +00:00
|
|
|
"
|
2021-06-09 23:32:56 +00:00
|
|
|
|
|
|
|
# Avoid filename based checksum conflicts by including the whole path.
|
|
|
|
flatpath() {
|
|
|
|
local i
|
|
|
|
for i in $@; do
|
|
|
|
echo "rootfs-$i" | sed s./.-.g
|
|
|
|
done
|
|
|
|
}
|
2023-01-22 17:55:54 +00:00
|
|
|
source="$(flatpath $_source644 $_source600 $_source755)"
|
2021-06-09 23:32:56 +00:00
|
|
|
|
2023-11-22 08:03:57 +00:00
|
|
|
_pmb_select="postmarketos-base-ui-wifi"
|
2021-06-09 23:32:56 +00:00
|
|
|
package() {
|
2023-11-22 08:03:57 +00:00
|
|
|
# wifi-backend is provided by a subpackage in this APKBUILD, and it won't
|
|
|
|
# exist when this is evaluated at the top level. It's moved into this
|
|
|
|
# function to work around this.
|
|
|
|
depends="$depends postmarketos-base-ui-wifi"
|
|
|
|
|
2021-06-09 23:32:56 +00:00
|
|
|
local i
|
|
|
|
for i in $_source644; do
|
|
|
|
install -Dm644 "$srcdir/$(flatpath "$i")" "$pkgdir/$i"
|
|
|
|
done
|
2023-01-22 17:55:54 +00:00
|
|
|
for i in $_source600; do
|
|
|
|
install -Dm600 "$srcdir/$(flatpath "$i")" "$pkgdir/$i"
|
|
|
|
done
|
2021-06-27 19:41:19 +00:00
|
|
|
for i in $_source755; do
|
|
|
|
install -Dm755 "$srcdir/$(flatpath "$i")" "$pkgdir/$i"
|
|
|
|
done
|
2021-06-09 23:32:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
x11() {
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel xorg-server"
|
|
|
|
depends="
|
|
|
|
libinput
|
|
|
|
xf86-input-libinput
|
|
|
|
xf86-video-fbdev"
|
|
|
|
provides="postmarketos-base-x11=$pkgver-r$pkgrel"
|
2021-12-19 15:32:36 +00:00
|
|
|
amove etc/X11/Xwrapper.config
|
2021-06-09 23:32:56 +00:00
|
|
|
}
|
|
|
|
|
2023-05-30 08:01:22 +00:00
|
|
|
bluez() {
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel bluez-openrc"
|
|
|
|
|
|
|
|
amove etc/conf.d/bluetooth
|
|
|
|
}
|
|
|
|
|
2021-06-09 23:32:56 +00:00
|
|
|
elogind() {
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel elogind"
|
|
|
|
depends="sleep-inhibitor"
|
|
|
|
install="$subpkgname.pre-upgrade $subpkgname.post-install"
|
|
|
|
replaces="
|
|
|
|
elogind
|
|
|
|
sleep-inhibitor
|
|
|
|
"
|
|
|
|
provides="postmarketos-base-elogind=$pkgver-r$pkgrel"
|
|
|
|
|
|
|
|
amove etc/elogind/logind.conf
|
|
|
|
amove etc/sleep-inhibitor.conf
|
|
|
|
}
|
|
|
|
|
2023-03-14 19:49:31 +00:00
|
|
|
_openrc_settingsd() {
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel openrc-settingsd-openrc"
|
|
|
|
install="$subpkgname.post-install $subpkgname.post-upgrade"
|
|
|
|
replaces="openrc-settingsd-openrc"
|
|
|
|
amove etc/conf.d/openrc-settingsd
|
|
|
|
}
|
|
|
|
|
2021-06-09 23:32:56 +00:00
|
|
|
tinydm() {
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel tinydm-openrc"
|
|
|
|
replaces="tinydm-openrc"
|
|
|
|
provides="postmarketos-base-tinydm=$pkgver-r$pkgrel"
|
|
|
|
amove etc/conf.d/tinydm
|
2021-06-27 19:41:19 +00:00
|
|
|
amove etc/tinydm.d/env-wayland.d/50-firefox-wayland.sh
|
2021-11-09 09:25:47 +00:00
|
|
|
amove etc/tinydm.d/env-wayland.d/50-sdl-wayland.sh
|
2021-06-09 23:32:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pulseaudio() {
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel pulseaudio"
|
2022-09-08 08:44:59 +00:00
|
|
|
depends="pulseaudio-utils"
|
2021-06-09 23:32:56 +00:00
|
|
|
provides="postmarketos-base-pulseaudio=$pkgver-r$pkgrel"
|
2022-09-08 00:05:26 +00:00
|
|
|
amove etc/pulse/default.pa.d/postmarketos.pa
|
2021-06-09 23:32:56 +00:00
|
|
|
}
|
2021-06-11 19:00:21 +00:00
|
|
|
|
|
|
|
_obexd() {
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel bluez-obexd"
|
|
|
|
replaces="bluez-obexd"
|
|
|
|
depends="obex-capabilities"
|
|
|
|
mkdir -p "$subpkgdir"
|
|
|
|
}
|
|
|
|
|
2024-02-05 15:41:34 +00:00
|
|
|
_usb_tethering() {
|
|
|
|
install_if="$pkgname-networkmanager=$pkgver-r$pkgrel"
|
|
|
|
replaces="$pkgname-networkmanager"
|
|
|
|
|
|
|
|
amove usr/lib/NetworkManager/conf.d/50-tethering.conf
|
|
|
|
amove usr/lib/NetworkManager/dispatcher.d/50-tethering.sh
|
|
|
|
amove usr/lib/NetworkManager/system-connections/USB_Networking.nmconnection
|
|
|
|
}
|
|
|
|
|
2021-08-22 13:48:31 +00:00
|
|
|
networkmanager() {
|
2022-12-31 15:53:45 +00:00
|
|
|
depends="
|
2023-01-25 08:14:08 +00:00
|
|
|
busctl
|
|
|
|
dnsmasq-dnssec-dbus>=2.89-r2
|
|
|
|
gojq
|
2022-12-31 15:53:45 +00:00
|
|
|
networkmanager
|
|
|
|
networkmanager-cli
|
|
|
|
networkmanager-openrc
|
|
|
|
networkmanager-tui
|
|
|
|
networkmanager-wifi
|
2023-01-22 17:55:54 +00:00
|
|
|
networkmanager-wwan
|
|
|
|
networkmanager-dnsmasq"
|
2023-07-15 20:06:54 +00:00
|
|
|
amove usr/lib/NetworkManager/conf.d/50-hostname-mode.conf
|
|
|
|
amove usr/lib/NetworkManager/conf.d/50-random-mac.conf
|
|
|
|
amove usr/lib/NetworkManager/conf.d/50-use-dnsmasq.conf
|
|
|
|
amove usr/lib/NetworkManager/dispatcher.d/50-dns-filter.sh
|
2021-08-22 13:48:31 +00:00
|
|
|
}
|
|
|
|
|
2023-02-01 08:14:38 +00:00
|
|
|
_default_camera() {
|
|
|
|
# dummy package for camera app, packages can install_if on this to install
|
|
|
|
# the appropriate camera app for that device/UI
|
|
|
|
mkdir "$subpkgdir"
|
|
|
|
}
|
|
|
|
|
2023-07-10 07:50:31 +00:00
|
|
|
qt_tweaks() {
|
|
|
|
amove etc/profile.d/qt-mobile-controls.sh
|
|
|
|
}
|
|
|
|
|
|
|
|
qt_wayland() {
|
|
|
|
amove etc/profile.d/qt-wayland.sh
|
|
|
|
}
|
2023-02-01 08:14:38 +00:00
|
|
|
|
2023-11-22 08:03:57 +00:00
|
|
|
wpa_supplicant() {
|
|
|
|
pkgdesc="Use wpa_supplicant as the WiFi backend."
|
|
|
|
depends="wpa_supplicant"
|
|
|
|
install="$subpkgname.post-install $subpkgname.post-upgrade"
|
|
|
|
replaces="wpa_supplicant-openrc"
|
|
|
|
provides="postmarketos-base-ui-wifi=$pkgver-r$pkgrel"
|
|
|
|
provider_priority=100
|
|
|
|
|
|
|
|
amove etc/conf.d/wpa_supplicant
|
|
|
|
}
|
|
|
|
|
|
|
|
iwd() {
|
2023-12-13 17:08:40 +00:00
|
|
|
pkgdesc="Use iwd as the WiFi backend (but may not work with all devices)"
|
2023-11-22 08:03:57 +00:00
|
|
|
depends="iwd"
|
|
|
|
install="$subpkgname.post-install $subpkgname.post-upgrade"
|
|
|
|
provides="postmarketos-base-ui-wifi=$pkgver-r$pkgrel"
|
|
|
|
# Lower than wpa_supplicant for now, see:
|
|
|
|
# https://gitlab.com/postmarketOS/pmaports/-/issues/1379
|
|
|
|
provider_priority=90
|
|
|
|
|
|
|
|
amove usr/lib/NetworkManager/conf.d/50-iwd.conf
|
|
|
|
}
|
|
|
|
|
2024-04-26 16:55:24 +00:00
|
|
|
_audio_pipewire() {
|
|
|
|
pkgdesc="Use pipewire as the audio backend. (but may not work with all devices)"
|
2024-05-01 22:18:30 +00:00
|
|
|
depends="pipewire-alsa pipewire-pulse"
|
2024-04-26 16:55:24 +00:00
|
|
|
provides="postmarketos-base-ui-audio=$pkgver-r$pkgrel"
|
|
|
|
provider_priority=90
|
|
|
|
|
|
|
|
mkdir "$subpkgdir"
|
|
|
|
}
|
|
|
|
|
|
|
|
_audio_pulseaudio() {
|
|
|
|
pkgdesc="Use pulseaudio as the audio backend."
|
|
|
|
depends="alsa-plugins-pulse pulseaudio pulseaudio-alsa"
|
|
|
|
provides="postmarketos-base-ui-audio=$pkgver-r$pkgrel"
|
|
|
|
provider_priority=100
|
|
|
|
|
|
|
|
mkdir "$subpkgdir"
|
2024-05-03 16:40:08 +00:00
|
|
|
amove usr/share/wireplumber/wireplumber.conf.d/50-pulseaudio.conf
|
2024-04-26 16:55:24 +00:00
|
|
|
}
|
|
|
|
|
2024-02-06 22:38:53 +00:00
|
|
|
flatpak() {
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel flatpak"
|
|
|
|
install="$subpkgname.post-install"
|
|
|
|
|
|
|
|
mkdir "$subpkgdir"
|
|
|
|
}
|
|
|
|
|
2021-06-09 23:32:56 +00:00
|
|
|
sha512sums="
|
|
|
|
e5d049db1d82c510bab9246208b51b8ec2711d008d67792fc10d4c0b65ed4dece7b5ae3c3dd28a8539d177b6849c1f921cb9fef3d2c7bee0355451f7b4757ec6 rootfs-etc-chrony-chrony.conf
|
2023-07-10 07:50:31 +00:00
|
|
|
8d2c54fe3ca62c62f8337fb6be28479d0e02ea63f32abae81907f2768631e65c9e17485f8bc0854a013377f729b06dd1873e2b75f86f657ece866d00aecbbdb4 rootfs-etc-elogind-logind.conf
|
2023-05-30 08:01:22 +00:00
|
|
|
b841282b96110ec59a7aa539db0737327b09549d55c78dc4b2c3b28b4a6ad1facf015b3175cb6d3a38f13e47aa6314ef3dc1514a4e60dd653a97409ec54ba706 rootfs-etc-conf.d-bluetooth
|
2023-03-14 19:49:31 +00:00
|
|
|
49fb494b659fe0149a93eafe109609acce6a470bb8acea160638d07e0e4b11af2544f34549d5ef2deb2914a7ef13d0d470b04ad62981f14f96999af02a5f24cf rootfs-etc-conf.d-openrc-settingsd
|
2021-06-09 23:32:56 +00:00
|
|
|
44e4283c6f77de83915977dd3bc2d8e2d96b3ed6cc68d3cc156304359ae649b5a8b0bac843e517ec6faa2066dd43ba85e313899b1eda04862f864fb9eb508aa0 rootfs-etc-conf.d-tinydm
|
|
|
|
fe0651904c1f40ffa67d83daca190af199f63247e53642a59a1e1147cd06776fcf20b7b2fcc5373783d50b8bd6ce8d1354c8e5f4d582d319727b9ceefd1e8e16 rootfs-etc-conf.d-wpa_supplicant
|
2022-09-08 00:05:26 +00:00
|
|
|
6c516635a61fbaa93102f02301a75070a91de837456b07a50e24a9e0ee5dac785087d4a8f78906807719ebf6f0124127383441cccf00475d9a91d3dbaf9d4d81 rootfs-etc-pulse-default.pa.d-postmarketos.pa
|
2021-08-17 11:26:14 +00:00
|
|
|
90b30cbea660ef6cd4c0461b6935de0cd63a84a1a40edb24348a83044c97935b974bd8bafda9cd558e92d3eb69e22c5ccf55483b80f839e24f0eb57ae2df6fe3 rootfs-etc-skel-.profile
|
2021-08-22 13:48:31 +00:00
|
|
|
6b9c7bb73213187eb9ca8a94109b2b816f50c1158c90fec2e92b373864280d67741589e5bfbab8810945f031d2f4b535aad78a72e46e52ea50be5b85324da381 rootfs-etc-sleep-inhibitor.conf
|
2021-12-19 15:32:36 +00:00
|
|
|
cac604e25c46e695dd30bd5a10cfd2d69595fcc3bc290096ac94b76b10834d591ea6576afb79c46b5da492a1dbf8660cf87b6110cd39937e15237bc74fa7a5c6 rootfs-etc-X11-Xwrapper.config
|
2023-07-15 20:06:54 +00:00
|
|
|
3c9ae7415f4891bee8595166ed6a42cb577a837f741c6b5409d193558626348b41516888a01d0c4895282c5f4e9a1ff838c19712888750b2ef68429bb4b42ee3 rootfs-usr-lib-NetworkManager-conf.d-50-hostname-mode.conf
|
2023-11-22 08:03:57 +00:00
|
|
|
439615745d5be0d1ab6801cfbf960a31b12da30bf5df64ba2914ff32dae9e650595d7f96e66f5dff6308f092de1f746277ea7f4e701888a22571f7c119b7bf0d rootfs-usr-lib-NetworkManager-conf.d-50-iwd.conf
|
2023-07-15 20:06:54 +00:00
|
|
|
d4b4c4fed2dee7266f6a87ae266691377593014943e2953e4cd87a59f3110f25bfb5f3f866cc843519f628695e4df7602bfdcd3d79f2c2cd6e8256535c33b038 rootfs-usr-lib-NetworkManager-conf.d-50-random-mac.conf
|
2023-07-10 07:50:31 +00:00
|
|
|
6507eb31cdd694a7db0280246433118a650bf5d99fbe639f967ae2d95945429a7e03ca6feb5bb6e7b9fb14fcec21e13e51209a79edd0041e77b5bf76b129ed6f rootfs-usr-lib-NetworkManager-conf.d-50-tethering.conf
|
|
|
|
900554534191fa0797064d35350934cdd8af59f30f0ae7d8ec63c2e11c44a16c643d3024b6543940488cd590fec1d392548bcaacc3be88cddff90f69b17ece07 rootfs-usr-lib-NetworkManager-conf.d-50-use-dnsmasq.conf
|
2024-05-03 16:40:08 +00:00
|
|
|
ebb7700018cf64fe6dcb747365cd2fb816deb6e06e7368af779284b51b1f0749e24f8e70b0b72fa6bff4178a02af934f728c3b115c8c1f77aa1a3490879af731 rootfs-usr-share-wireplumber-wireplumber.conf.d-50-pulseaudio.conf
|
2023-01-22 17:55:54 +00:00
|
|
|
1b8add60574ec4644197cb93263c0653325c2e88e03673de918be5fb3280c7b81e8e97dce498850a07f2f3307771c44f3c876922e5cbd5207523ede31816296f rootfs-usr-lib-NetworkManager-system-connections-USB_Networking.nmconnection
|
2021-06-27 19:41:19 +00:00
|
|
|
d1ddd43489e6016e3ffd716027ed2bae4a2ab5f213118bdbcb96750e267ab7c0367cd0e0e386300aa5550352653144f5caeddd790621fe0879f83ca1995bb65c rootfs-etc-tinydm.d-env-wayland.d-50-firefox-wayland.sh
|
2021-11-09 09:25:47 +00:00
|
|
|
ecaa57d033a119a53a6574c27636b7c89d659d75ea48a973a6a4ff6f90e5d07202529fd489bfc9dfc7430f5b60f40612f6d5c06f7fab47e681b0a3112a874058 rootfs-etc-tinydm.d-env-wayland.d-50-sdl-wayland.sh
|
2024-02-14 20:04:42 +00:00
|
|
|
91410389f8d59ee504068b108ea8b93b89d3e9dd40f8db44ac984ada9a5b82ded1c0bbe2fedd6d8803ba449a66967e3b302ebbf0e2362923edb277f6c75a84af rootfs-usr-lib-NetworkManager-dispatcher.d-50-dns-filter.sh
|
2024-03-10 20:05:59 +00:00
|
|
|
9dcf698c729e6a3d05201aa74c1618169f344f9c973e6a074591b0b4f352470235decbbc658393f44c62b6b1508c68f3c1787a640f219dbcc136e9335f3994c4 rootfs-usr-lib-NetworkManager-dispatcher.d-50-tethering.sh
|
2023-07-10 07:50:31 +00:00
|
|
|
bf8db527c49fa724e640a90269ba2648a2555f5867b2adbfbd88d1f685261f757339757c09ee08f590c76de4bd3d0c73a47dea9bd340644dd4707e76152cefd1 rootfs-etc-profile.d-qt-mobile-controls.sh
|
|
|
|
6e193eca3961a78d47b4656892eae34d019d9317a255a201f5ea61e3300caff04c526a27cd98d0edc072b36e3eaf3a1768f4cd27c5e2be8b19c167d535c820a6 rootfs-etc-profile.d-qt-wayland.sh
|
2021-06-09 23:32:56 +00:00
|
|
|
"
|