Compare commits
68 Commits
Author | SHA256 | Date | |
---|---|---|---|
1c3b4013b5 | |||
2725b78b8e | |||
|
8dace92026 | ||
bcb053c88b | |||
|
82380f061c | ||
|
71c74542d9 | ||
|
f05ae432d1 | ||
6e9adb1305 | |||
|
1540c60568 | ||
39aed69e5b | |||
|
1b181557cd | ||
d2cfc3a360 | |||
|
300e8a31b2 | ||
22b1d85aab | |||
12f7d540cc | |||
acb5906ade | |||
ae8af582f5 | |||
|
054f2a3488 | ||
be10cd150b | |||
|
9e80b11229 | ||
103ef0e7e8 | |||
|
2b4987b144 | ||
|
e418a7a454 | ||
|
acbb25ad65 | ||
|
ac2e8e2f0c | ||
1032db6e44 | |||
|
5b960576e0 | ||
9811977847 | |||
|
d67fd7a7dd | ||
6fd6e3d303 | |||
|
292428ea93 | ||
83e03f802e | |||
|
8784907685 | ||
fae10281e0 | |||
|
f8298c7b5e | ||
2143d8257f | |||
|
508e429528 | ||
45fd960f7b | |||
|
4f4da483dd | ||
|
8123c26635 | ||
20c189215d | |||
|
d42006b7a2 | ||
a5b0db87de | |||
|
262d774734 | ||
d640b12663 | |||
|
e9808a504a | ||
973b7d7e00 | |||
|
06885aabc7 | ||
2890656574 | |||
|
78c85b8c60 | ||
1808227a45 | |||
|
6c2c36fb61 | ||
|
e02a8f075e | ||
|
a014462a03 | ||
66c42f3e47 | |||
|
9a19407776 | ||
a4a6acb0a4 | |||
|
5ef713f48e | ||
275db9eefc | |||
|
fa2577dfb1 | ||
6ddc806833 | |||
|
5de860c1f4 | ||
cdc87adf0e | |||
ec7aba9473 | |||
|
afd376eb21 | ||
3ad57c7634 | |||
|
d6af5ce121 | ||
|
cce241a791 |
@@ -1,73 +0,0 @@
|
||||
From 582cbde53cfb9e79182663bfd7c86aa46c0b46eb Mon Sep 17 00:00:00 2001
|
||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
Date: Thu, 29 Aug 2024 15:20:54 -0400
|
||||
Subject: [PATCH 1/3] kcms: pull dmidecode-helper into a separate dir
|
||||
|
||||
This allows us to reuse the helper in other
|
||||
places, like the memory info kcm.
|
||||
---
|
||||
kcms/CMakeLists.txt | 1 +
|
||||
kcms/about-distro/src/CMakeLists.txt | 2 --
|
||||
kcms/helpers/CMakeLists.txt | 4 ++++
|
||||
.../src => helpers}/dmidecode-helper/CMakeLists.txt | 0
|
||||
.../{about-distro/src => helpers}/dmidecode-helper/helper.cpp | 0
|
||||
kcms/{about-distro/src => helpers}/dmidecode-helper/helper.h | 0
|
||||
.../dmidecode-helper/org.kde.kinfocenter.dmidecode.actions | 0
|
||||
7 files changed, 5 insertions(+), 2 deletions(-)
|
||||
create mode 100644 kcms/helpers/CMakeLists.txt
|
||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/CMakeLists.txt (100%)
|
||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/helper.cpp (100%)
|
||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/helper.h (100%)
|
||||
rename kcms/{about-distro/src => helpers}/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions (100%)
|
||||
|
||||
diff --git a/kcms/CMakeLists.txt b/kcms/CMakeLists.txt
|
||||
index f283f477..ce534f40 100644
|
||||
--- a/kcms/CMakeLists.txt
|
||||
+++ b/kcms/CMakeLists.txt
|
||||
@@ -1,3 +1,4 @@
|
||||
+add_subdirectory(helpers)
|
||||
|
||||
add_subdirectory( about-distro )
|
||||
add_subdirectory(vulkan)
|
||||
diff --git a/kcms/about-distro/src/CMakeLists.txt b/kcms/about-distro/src/CMakeLists.txt
|
||||
index fffb24d6..961ac959 100644
|
||||
--- a/kcms/about-distro/src/CMakeLists.txt
|
||||
+++ b/kcms/about-distro/src/CMakeLists.txt
|
||||
@@ -1,8 +1,6 @@
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/Version.h)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
-add_subdirectory(dmidecode-helper)
|
||||
-
|
||||
set(kcm_SRCS
|
||||
CPUEntry.cpp
|
||||
CPUEntry.h
|
||||
diff --git a/kcms/helpers/CMakeLists.txt b/kcms/helpers/CMakeLists.txt
|
||||
new file mode 100644
|
||||
index 00000000..cbf024bd
|
||||
--- /dev/null
|
||||
+++ b/kcms/helpers/CMakeLists.txt
|
||||
@@ -0,0 +1,4 @@
|
||||
+# SPDX-License-Identifier: BSD-3-Clause
|
||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
+
|
||||
+add_subdirectory(dmidecode-helper)
|
||||
diff --git a/kcms/about-distro/src/dmidecode-helper/CMakeLists.txt b/kcms/helpers/dmidecode-helper/CMakeLists.txt
|
||||
similarity index 100%
|
||||
rename from kcms/about-distro/src/dmidecode-helper/CMakeLists.txt
|
||||
rename to kcms/helpers/dmidecode-helper/CMakeLists.txt
|
||||
diff --git a/kcms/about-distro/src/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
similarity index 100%
|
||||
rename from kcms/about-distro/src/dmidecode-helper/helper.cpp
|
||||
rename to kcms/helpers/dmidecode-helper/helper.cpp
|
||||
diff --git a/kcms/about-distro/src/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
||||
similarity index 100%
|
||||
rename from kcms/about-distro/src/dmidecode-helper/helper.h
|
||||
rename to kcms/helpers/dmidecode-helper/helper.h
|
||||
diff --git a/kcms/about-distro/src/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
similarity index 100%
|
||||
rename from kcms/about-distro/src/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
rename to kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
--
|
||||
2.47.0
|
||||
|
@@ -1,150 +0,0 @@
|
||||
From e6f449a1aa0bf5b1dceaff13390955bd3d21de9d Mon Sep 17 00:00:00 2001
|
||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
Date: Thu, 5 Sep 2024 13:03:45 -0400
|
||||
Subject: [PATCH 2/3] refactor(dmidecode-helper): support multiple methods
|
||||
|
||||
This allows the helper to extend and support other
|
||||
types of information, eg. memory information.
|
||||
---
|
||||
kcms/helpers/dmidecode-helper/helper.cpp | 60 +++++++++++++++++-------
|
||||
kcms/helpers/dmidecode-helper/helper.h | 15 ++++++
|
||||
2 files changed, 58 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/kcms/helpers/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
index 396b2d74..e9d068dc 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
+++ b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
@@ -1,5 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
// SPDX-FileCopyrightText: 2021-2022 Harald Sitter <sitter@kde.org>
|
||||
+// SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
|
||||
#include "helper.h"
|
||||
|
||||
@@ -16,16 +17,18 @@ auto make_array(Input &&...args) -> std::array<Output, sizeof...(args)> // NB: w
|
||||
return {std::forward<Input>(args)...};
|
||||
}
|
||||
|
||||
-KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
+DMIDecodeHelper::DMIDecodeHelper(QObject *parent)
|
||||
+ : QObject(parent)
|
||||
{
|
||||
- Q_UNUSED(args);
|
||||
-
|
||||
// PATH is super minimal when invoked through dbus
|
||||
setenv("PATH", "/usr/sbin:/sbin:/usr/local/sbin", 1);
|
||||
- const QString dmidecode = QStandardPaths::findExecutable("dmidecode");
|
||||
- if (dmidecode.isEmpty()) {
|
||||
- return KAuth::ActionReply::HelperErrorReply();
|
||||
- }
|
||||
+
|
||||
+ m_dmidecodePath = QStandardPaths::findExecutable("dmidecode");
|
||||
+}
|
||||
+
|
||||
+KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
+{
|
||||
+ Q_UNUSED(args);
|
||||
|
||||
// NB: Microsoft also outlines a limited set of DMI values to be required for IOT OEM licensing, as such we
|
||||
// can rely on the same fields to have sound content . Since this only applies to OEMs we still need to filter
|
||||
@@ -33,19 +36,20 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
// https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/license-requirements?view=windows-11#smbios-support
|
||||
|
||||
KAuth::ActionReply reply;
|
||||
- for (const auto &key : {QStringLiteral("system-manufacturer"),
|
||||
- QStringLiteral("system-product-name"),
|
||||
- QStringLiteral("system-version"),
|
||||
- QStringLiteral("system-serial-number")}) {
|
||||
- QProcess proc;
|
||||
- proc.start(dmidecode, {QStringLiteral("--string"), key});
|
||||
- proc.waitForFinished();
|
||||
- const QByteArray output = proc.readAllStandardOutput().trimmed();
|
||||
-
|
||||
- if (output.isEmpty() || proc.error() != QProcess::UnknownError || proc.exitStatus() != QProcess::NormalExit) {
|
||||
+
|
||||
+ const auto keys = {QStringLiteral("system-manufacturer"),
|
||||
+ QStringLiteral("system-product-name"),
|
||||
+ QStringLiteral("system-version"),
|
||||
+ QStringLiteral("system-serial-number")};
|
||||
+
|
||||
+ for (const auto &key : keys) {
|
||||
+ auto result = executeDmidecode({QStringLiteral("--string"), key});
|
||||
+ if (result.failed()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
+ const auto output = result.data().value("result").toString();
|
||||
+
|
||||
// Fairly exhaustive filter list based on a dozen or so samples gathered from reddit and other places.
|
||||
// These are values that may appear in the DMI system information but aren't really useful.
|
||||
static const auto dummyData = make_array<QString>(QStringLiteral("system version"),
|
||||
@@ -59,12 +63,34 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
QStringLiteral("not specified"),
|
||||
QStringLiteral("not applicable")
|
||||
/* may also be empty, but that is filtered above already */);
|
||||
+
|
||||
if (std::find(dummyData.cbegin(), dummyData.cend(), output.toLower()) != dummyData.cend()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
reply.addData(key, output);
|
||||
}
|
||||
+
|
||||
+ return reply;
|
||||
+}
|
||||
+
|
||||
+KAuth::ActionReply DMIDecodeHelper::executeDmidecode(const QStringList &arguments)
|
||||
+{
|
||||
+ if (m_dmidecodePath.isEmpty()) {
|
||||
+ return KAuth::ActionReply::HelperErrorReply();
|
||||
+ }
|
||||
+
|
||||
+ QProcess proc;
|
||||
+ proc.start(m_dmidecodePath, arguments);
|
||||
+ proc.waitForFinished();
|
||||
+ const QByteArray output = proc.readAllStandardOutput().trimmed();
|
||||
+
|
||||
+ if (output.isEmpty() || proc.error() != QProcess::UnknownError || proc.exitStatus() != QProcess::NormalExit) {
|
||||
+ return KAuth::ActionReply::HelperErrorReply();
|
||||
+ }
|
||||
+
|
||||
+ KAuth::ActionReply reply;
|
||||
+ reply.addData("result", output);
|
||||
return reply;
|
||||
}
|
||||
|
||||
diff --git a/kcms/helpers/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
||||
index dd8fe90d..c1b588e8 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/helper.h
|
||||
+++ b/kcms/helpers/dmidecode-helper/helper.h
|
||||
@@ -1,5 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
// SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
|
||||
+// SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
|
||||
#pragma once
|
||||
|
||||
@@ -8,6 +9,20 @@
|
||||
class DMIDecodeHelper : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
+
|
||||
+public:
|
||||
+ explicit DMIDecodeHelper(QObject *parent = nullptr);
|
||||
+
|
||||
public Q_SLOTS:
|
||||
KAuth::ActionReply systeminformation(const QVariantMap &args);
|
||||
+
|
||||
+private:
|
||||
+ KAuth::ActionReply executeDmidecode(const QStringList &arguments);
|
||||
+
|
||||
+ /**
|
||||
+ * Path to the dmidecode binary.
|
||||
+ *
|
||||
+ * If the binary is not found, this helper will not work.
|
||||
+ */
|
||||
+ QString m_dmidecodePath;
|
||||
};
|
||||
--
|
||||
2.47.0
|
||||
|
@@ -1,254 +0,0 @@
|
||||
From 375abcd571b991aa1ea8436fad6c7a4d30f62fa1 Mon Sep 17 00:00:00 2001
|
||||
From: Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
Date: Mon, 14 Oct 2024 15:45:02 -0400
|
||||
Subject: [PATCH 3/3] kcms/memory: use KAuth dmidecode helper
|
||||
|
||||
Refactor to use a KAuth helper to run dmidecode as
|
||||
root, rather than using the CommandOutputContext.
|
||||
|
||||
This means the KCM no longer requires the user to
|
||||
enter their password to view memory information,
|
||||
and won't show an obtuse error like before if the
|
||||
user cancelled the password dialog.
|
||||
---
|
||||
kcms/helpers/dmidecode-helper/helper.cpp | 26 ++++++++++
|
||||
kcms/helpers/dmidecode-helper/helper.h | 5 ++
|
||||
.../org.kde.kinfocenter.dmidecode.actions | 7 +++
|
||||
kcms/memory/CMakeLists.txt | 9 +++-
|
||||
kcms/memory/main.cpp | 48 ++++++++++++++++---
|
||||
kcms/memory/ui/main.qml | 25 ++++++++--
|
||||
6 files changed, 108 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/kcms/helpers/dmidecode-helper/helper.cpp b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
index e9d068dc..11921934 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
+++ b/kcms/helpers/dmidecode-helper/helper.cpp
|
||||
@@ -26,6 +26,24 @@ DMIDecodeHelper::DMIDecodeHelper(QObject *parent)
|
||||
m_dmidecodePath = QStandardPaths::findExecutable("dmidecode");
|
||||
}
|
||||
|
||||
+KAuth::ActionReply DMIDecodeHelper::memoryinformation(const QVariantMap &args)
|
||||
+{
|
||||
+ Q_UNUSED(args);
|
||||
+
|
||||
+ KAuth::ActionReply reply;
|
||||
+ auto result = executeDmidecode({QStringLiteral("--type"), QStringLiteral("17")});
|
||||
+
|
||||
+ if (result.failed()) {
|
||||
+ qWarning() << "DMIDecodeHelper: Unable to get memory information";
|
||||
+ return KAuth::ActionReply::HelperErrorReply();
|
||||
+ }
|
||||
+
|
||||
+ const QString output = result.data().value("result").toString();
|
||||
+ reply.addData("memory", output);
|
||||
+
|
||||
+ return reply;
|
||||
+}
|
||||
+
|
||||
KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
{
|
||||
Q_UNUSED(args);
|
||||
@@ -45,6 +63,8 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
for (const auto &key : keys) {
|
||||
auto result = executeDmidecode({QStringLiteral("--string"), key});
|
||||
if (result.failed()) {
|
||||
+ qWarning() << "DMIDecodeHelper: Unable to get system information for " << key;
|
||||
+ // We don't want to fail the entire action if we can't get a single piece of information.
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -71,6 +91,12 @@ KAuth::ActionReply DMIDecodeHelper::systeminformation(const QVariantMap &args)
|
||||
reply.addData(key, output);
|
||||
}
|
||||
|
||||
+ if (reply.data().isEmpty()) {
|
||||
+ qWarning() << "DMIDecodeHelper: Unable to get system information";
|
||||
+ // If we didn't get any data, we should fail the action.
|
||||
+ return KAuth::ActionReply::HelperErrorReply();
|
||||
+ }
|
||||
+
|
||||
return reply;
|
||||
}
|
||||
|
||||
diff --git a/kcms/helpers/dmidecode-helper/helper.h b/kcms/helpers/dmidecode-helper/helper.h
|
||||
index c1b588e8..805d5fa6 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/helper.h
|
||||
+++ b/kcms/helpers/dmidecode-helper/helper.h
|
||||
@@ -14,6 +14,11 @@ public:
|
||||
explicit DMIDecodeHelper(QObject *parent = nullptr);
|
||||
|
||||
public Q_SLOTS:
|
||||
+ /**
|
||||
+ * Retrieves memory (RAM) information from dmidecode.
|
||||
+ */
|
||||
+ KAuth::ActionReply memoryinformation(const QVariantMap &args);
|
||||
+
|
||||
KAuth::ActionReply systeminformation(const QVariantMap &args);
|
||||
|
||||
private:
|
||||
diff --git a/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
index 66d3aa99..9f0c76f3 100644
|
||||
--- a/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
+++ b/kcms/helpers/dmidecode-helper/org.kde.kinfocenter.dmidecode.actions
|
||||
@@ -1,5 +1,7 @@
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
# SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
|
||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
+
|
||||
[Domain]
|
||||
Icon=computer
|
||||
URL=https://www.kde.org
|
||||
@@ -47,6 +49,11 @@ Name[x-test]=xxDesktop Management Interfacexx
|
||||
Name[zh_CN]=桌面管理界面 (DMI)
|
||||
Name[zh_TW]=桌面管理介面
|
||||
|
||||
+[org.kde.kinfocenter.dmidecode.memoryinformation]
|
||||
+Policy=yes
|
||||
+Name=Memory Information
|
||||
+Description=Read memory information from system's Desktop Management Interface (DMI)
|
||||
+
|
||||
[org.kde.kinfocenter.dmidecode.systeminformation]
|
||||
Policy=yes
|
||||
PolicyInactive=yes
|
||||
diff --git a/kcms/memory/CMakeLists.txt b/kcms/memory/CMakeLists.txt
|
||||
index 49219ac4..59c93b69 100644
|
||||
--- a/kcms/memory/CMakeLists.txt
|
||||
+++ b/kcms/memory/CMakeLists.txt
|
||||
@@ -1,5 +1,6 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
||||
+# SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
|
||||
find_package(dmidecode)
|
||||
set_package_properties(dmidecode PROPERTIES TYPE RUNTIME)
|
||||
@@ -7,4 +8,10 @@ set_package_properties(dmidecode PROPERTIES TYPE RUNTIME)
|
||||
add_definitions(-DTRANSLATION_DOMAIN=\"kcm_memory\")
|
||||
|
||||
kinfocenter_add_kcm(kcm_memory main.cpp)
|
||||
-target_link_libraries(kcm_memory PRIVATE KF6::CoreAddons KF6::KCMUtilsQuick KF6::I18n KInfoCenterInternal)
|
||||
+target_link_libraries(kcm_memory PRIVATE
|
||||
+ KF6::AuthCore
|
||||
+ KF6::CoreAddons
|
||||
+ KF6::KCMUtilsQuick
|
||||
+ KF6::I18n
|
||||
+ KInfoCenterInternal
|
||||
+)
|
||||
diff --git a/kcms/memory/main.cpp b/kcms/memory/main.cpp
|
||||
index d2190140..7aab18ce 100644
|
||||
--- a/kcms/memory/main.cpp
|
||||
+++ b/kcms/memory/main.cpp
|
||||
@@ -1,30 +1,64 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
||||
+ SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
*/
|
||||
|
||||
+#include <KAuth/Action>
|
||||
+#include <KAuth/ExecuteJob>
|
||||
+#include <KLocalizedString>
|
||||
#include <KPluginFactory>
|
||||
#include <KQuickConfigModule>
|
||||
|
||||
-#include "CommandOutputContext.h"
|
||||
-
|
||||
class KCMMemory : public KQuickConfigModule
|
||||
{
|
||||
Q_OBJECT
|
||||
- Q_PROPERTY(CommandOutputContext *infoOutputContext READ outputContext CONSTANT FINAL)
|
||||
+ Q_PROPERTY(QString memoryInformation READ memoryInformation NOTIFY changed)
|
||||
public:
|
||||
explicit KCMMemory(QObject *parent, const KPluginMetaData &data)
|
||||
: KQuickConfigModule(parent, data)
|
||||
{
|
||||
- m_outputContext = new CommandOutputContext(QStringLiteral("pkexec"), {"dmidecode", "--type", "17"}, parent);
|
||||
+ loadData();
|
||||
}
|
||||
- CommandOutputContext *outputContext() const
|
||||
+
|
||||
+ QString memoryInformation() const
|
||||
{
|
||||
- return m_outputContext;
|
||||
+ return m_memoryInformation;
|
||||
}
|
||||
|
||||
private:
|
||||
- CommandOutputContext *m_outputContext;
|
||||
+ Q_SIGNAL void changed();
|
||||
+
|
||||
+ /**
|
||||
+ * The memory information that will be displayed in the KCM.
|
||||
+ */
|
||||
+ QString m_memoryInformation;
|
||||
+
|
||||
+ /**
|
||||
+ * Load the memory information from the dmidecode helper.
|
||||
+ */
|
||||
+ void loadData()
|
||||
+ {
|
||||
+ KAuth::Action action(QStringLiteral("org.kde.kinfocenter.dmidecode.memoryinformation"));
|
||||
+ action.setHelperId(QStringLiteral("org.kde.kinfocenter.dmidecode"));
|
||||
+ KAuth::ExecuteJob *job = action.execute();
|
||||
+
|
||||
+ connect(job, &KJob::result, this, [this, job]() {
|
||||
+ if (job->error()) {
|
||||
+ qWarning() << "Failed to retrieve memory information: " << job->errorString();
|
||||
+ return;
|
||||
+ } else {
|
||||
+ const auto reply = job->data();
|
||||
+ if (reply.contains("memory")) {
|
||||
+ m_memoryInformation = reply["memory"].toString();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ Q_EMIT changed();
|
||||
+ });
|
||||
+
|
||||
+ job->start();
|
||||
+ }
|
||||
};
|
||||
|
||||
K_PLUGIN_CLASS_WITH_JSON(KCMMemory, "kcm_memory.json")
|
||||
diff --git a/kcms/memory/ui/main.qml b/kcms/memory/ui/main.qml
|
||||
index 0300d619..42fdcbc7 100644
|
||||
--- a/kcms/memory/ui/main.qml
|
||||
+++ b/kcms/memory/ui/main.qml
|
||||
@@ -1,14 +1,31 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
SPDX-FileCopyrightText: 2024 Thomas Duckworth <tduck973564@gmail.com>
|
||||
+ SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
|
||||
*/
|
||||
|
||||
-import QtQuick 2.5
|
||||
+import QtQuick 2.15
|
||||
|
||||
+import org.kde.kirigami 2.20 as Kirigami
|
||||
import org.kde.kcmutils as KCM
|
||||
|
||||
-import org.kde.kinfocenter.private 1.0 as KInfoCenter
|
||||
+KCM.SimpleKCM {
|
||||
+ id: kcm_memory
|
||||
+ Kirigami.Theme.colorSet: Kirigami.Theme.View
|
||||
+ Kirigami.Theme.inherit: false
|
||||
|
||||
-KInfoCenter.CommandOutputKCM {
|
||||
- output: kcm.infoOutputContext
|
||||
+ Kirigami.PlaceholderMessage {
|
||||
+ anchors.centerIn: parent
|
||||
+ width: parent.width - (Kirigami.Units.largeSpacing * 8)
|
||||
+ visible: kcm.memoryInformation === ""
|
||||
+ icon.name: "data-warning"
|
||||
+ text: i18ndc("kinfocenter", "@info the KCM has no data to display", "No data available")
|
||||
+ }
|
||||
+
|
||||
+ Kirigami.SelectableLabel {
|
||||
+ id: text
|
||||
+ text: kcm.memoryInformation
|
||||
+ font.family: "monospace"
|
||||
+ visible: kcm.memoryInformation !== ""
|
||||
+ }
|
||||
}
|
||||
--
|
||||
2.47.0
|
||||
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:69c4bebf97c5a980c3da57deedfff628254f03b7c094cca8d742f537bfc45738
|
||||
size 718828
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmaWVKMACgkQ11dEg7tX
|
||||
sY3JMQ//Vdl6zMvBjoSN2gQQZK0Cq+lEiZHQsewVQXT9SgiZPrrjyHX0fv2l0Mpp
|
||||
h8Q+wyQuvgBY5JYOslz5UVp/FdQwIeglWKTQ/SzifOizPsBT4P0brqDJEzcz5BJJ
|
||||
eZtnzqVMMu2avmdOoBpgNR/oiSu4FSgwsRsSFrKEBTDT7DPE0CUsbTuUEIX5zy4l
|
||||
iDjc2Nyv5On/O8OCCgN7aMV3Rp0fZtdrJXiqPeP05iY/R/AtBjzr3gk724Rc6T2N
|
||||
zMHEZQDAsp1uluWhIKL/Wo8mkHdxSuQUk2fefnQ9USVPRb4oB3F2eIteYqzi4lVl
|
||||
9FA9BptbZfvB9dcd9b8MPBg0ZKQ6ft1KbqdP2pKOBOHHcImaBvAhf8+3zHJL4mNP
|
||||
AG+kvCfAhfAy1HrZX3w2LaT0H29N85ACgXAEiseUvSW7gRK18DNhTATztVMYF1tV
|
||||
Nf1PFumtvtVFPhkqYYBAGv/bnTVRXQGVA5uI/4aN/CRN/y6tA3RbvkqHf4aZH/K0
|
||||
/kK8tLcoy6sNyiPXZ+8N35PUDRrNl8A+6C39RgYznjFr4IVuODXSSmJtnRFm7RZB
|
||||
c4kBzrylL7wdPHPGjjnADHj7bC7VZo2zxLqD6iHvIVZhknRxKbZsJL96CziFspD0
|
||||
/4dEIYE6KpR6yjhjZ3qdq/0AmiOcE+DPDEpwZ+mj7RhAvxjukaI=
|
||||
=H72k
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:179dfdc224ff66f1d692456560b1c9f0dd74b568e233347182316709ac2520d9
|
||||
size 718988
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmayGCEACgkQ11dEg7tX
|
||||
sY0/kw/9HIB8Hbw4Mz0qmz0xmswOKEkoRErJhUR56EhPh0uNFQsvMidUB5ubpHyJ
|
||||
x4JDX8dvAzT1uPITDfG7fLq9gPRUoJkALLXl4serf61nE5zdWAGVuSgK+NMQFN8t
|
||||
fHrH/cZfqKMbtszFDO/IDpPj5Kr2Irwdi/bgVkZSrkyaKrznOVkAZp1GIwo79y97
|
||||
jRet86vZPwmlhSTtmcCeIOgkMz7JkxZ6O0pb+bb7m6cIE2IIITNFWXBv0xgcPsO0
|
||||
AmqZc4hnR3yf91dFoQp4M2PQZwBmV+MboIRxmvJFkojd3uiqAeXjKllKP/zp/3Gn
|
||||
KA/U8lbsP0qAzvRrJGn8QZ5L2pWsSdPjiT9hkJ5qFgkNOxM+xZyvGPbAte/yo58i
|
||||
VDrReeiQKoIcnvworlcZUiEMNai0kRJP+UA6MUhV9vViOB6ZTgRIQ/imukeSJana
|
||||
+qC8kz6dzcKdzU8b/gu88VKJfTEARjLpAhwx3JqLKKgR6fq3XUfK5AqdELrJV1gc
|
||||
Asjsix4mFV5QzDQaPwk4k/ye0kV2L45cLue072R3kqGWstWM5hbAh5NjffSIyqPt
|
||||
Zy+E/f5JxtFh4u3WZRyZPHF9wR66lTe4CzYXCnploFMBz7gA7f+dtyiA5uQ+YdYU
|
||||
ulTrwTTX0H4RJEADErfZkWMlFOE+eQsn3yCA9uZy9/6uRv78F1A=
|
||||
=lLoV
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0976ae43756b6ddbf4e70e750cb17f422dabe7604c5e2f824ab4f1e0161ae5d0
|
||||
size 720016
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmbgCFQACgkQ11dEg7tX
|
||||
sY2jxRAAukjAlx7cA4jJNgoqhjKhqjoYTJuhcZPxkwKVqyyGcArtHlciKGndpz/d
|
||||
2YyoN6HDY9z8tIbwJTgJ2mPNqHnwaT8FPitkA8fO54McoWnfqCUNCVOE56wKYZPq
|
||||
T3bqlLfO1fipyGsffs+ivTXl1jYWjt8wGSSnVI/a89/HKcn/snqAoTvhlfnzQg5m
|
||||
SIsxPEXjP9lPuDJtKbvUWHV5ZzlZ8RY/EfeOzIYzypBP9eftqsEgVrZqdSnaiSat
|
||||
+16ffHMl2CThSJ8y/6yUIAo65MNX+Ikw1oYWjRPhArmUPDpes15r+wdd/gkqWAJi
|
||||
GfDL5pSwv5A8h+0BF9y0DHLpjAP5TDpja0kyVfGeUFfoSg9mNGWmfux4C5NOjW0D
|
||||
ul0jalqz0D+PbIE7Q3ft2X65gQaoUfyI4qN49M649UHN04e5Eu15P5Wkbimo/qo2
|
||||
Js+ESeYvBTkYGiWrGlJ6iSqOJgAM1olmaSw/7smuMYJA7RtRKwk26QOOZmEvzlST
|
||||
UmrG8Ljto8FKRFuIvLha6vIsvbGjSLcI4Cu9doX3DZ7sw99msB49EUI5GRtM3n37
|
||||
GWrzHwKswlNrjdUXrJVpbVYc1mHsrghOWGv2pwm73gYyUm3jU7+pHTTc1xcdozw/
|
||||
4oxAlZyoUTvDPA5432JLObQf+jScjXIOSASzuiZcpdNkMEFmYeE=
|
||||
=acRA
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:508730f7b44dc85ba4e67caf526199528cefcf3dd603f6280917a930e0fe06cc
|
||||
size 729176
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmb+j+oACgkQ11dEg7tX
|
||||
sY24wg//ZVyr962LpPxP+eaAnBqgNW0svVjOS9IA7Nmct0Ux0uGM0pFNPKq+RMrI
|
||||
6ieWbSBBVzwhk32/Phi5u5F0LCbIQMs2r7I+Uouj+MbYte4AxBD1PureLlm91S+n
|
||||
lJZrx+FJDuSxUQ+jN1e7B2SCST7ZL92EHrQX9FTGAFBs4ZyEz6oJJ5F6IKNnN7D7
|
||||
gpn0agtaW6DbfXLIP4VZ3/4niNtbOCAsZquY+hY4hyzVgeVzaAfror8wvzyaEyI6
|
||||
bzFzN+vFUzuAzBUm2a7cx3/ETfX/d/nFMZ65VPxKPhgVznk5+HH1jEcu0Xbw4oQb
|
||||
vA67c1DdT77sXFYp6KDt9OxKSH+foPS18WVcFRV7RuJ+KQPp4zgvug32ZLahnzcw
|
||||
FCD0Vx6iWP+9ZWMgmTHz+Bm8pGJFKG9P+7aM0AkanYmVJlxKprc+P7geo8iq6Um7
|
||||
xO/rnw7x/5ht//6lwzUxq4Cd6Wh9kMlugV3zpajGriH0ffavybvppWQjvVfKBR0b
|
||||
WnvywpM4XMp5RErF08kk9/H5LNoYDkhg+E+mR1YOLJU0aRxUOQSacIxivA77quRl
|
||||
ys5Nw01QztnfHIdjQKXn2J7OroYmrCfYxOvn2Zg/6qTFUzYMfE6Lq+Nk33pk3jxM
|
||||
+wh23CF8oGjZB3ksIRPFw7f07JUb51wJix7rDY8rx5PL/0VhFro=
|
||||
=uQfZ
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:504162e6c9ba91f3d1af0898debe2b6a9c3f515bffb589227e739907b68060eb
|
||||
size 731224
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmcOan0ACgkQ11dEg7tX
|
||||
sY3HtQ/9FEUzzWZTP5U5zNePx7nId/dmRqZG7jRfOMZU7PaFxKmuLj0rkjP63Auj
|
||||
SjhzSkEdSGP/q9rprpmZSywk7IOjKdIJYcFDaWKMvR21xbZmvv84lF8Gt4Mb5zI6
|
||||
PoCJYcVDJtTFbhZhyUqarkjx4/v+urERzbqlFR5mzPk9NnRYC91NGY5Jj2zgFNb3
|
||||
mD0dZ8ItnbZ+OvTubiA6tJEIeLHJEajrB+ldl3ope7as83EFEMgCOUWkB2zrFjQj
|
||||
j+KxawmzwoJ5GwdQq003bH5/SV7Rm65oksXtgpXS8EakH/W2vrqn9dHGJ3Lgz9CK
|
||||
miIqKZcSVqojyGIbnbc8Ro4YhPEMv2CeKND94Eg9+Ws9ogTR9c7f6lvrxs3pkEY7
|
||||
+zXAqWxgYwOJFpzAzBVlwSqTVnETg2yXXkCeN27txz+ZBlmSlpNaP54uzEhywukn
|
||||
gNv7nz4SqmXrWFLGRhd2SxFym/EyS2IgkJW/A0d0DyihRV/7hPQhkuYiZeSJH3zM
|
||||
wM0OtlHYcJ75mfIsjGaEFqbPm9zKy5VTEuymcYJ1BCyuP9FGQ6xywycDaLCnyzK8
|
||||
2fg3zM9jqI2ROn/+XKpWO+H2sq0E2vV3p2nMkhVV0qjvtebICHLUWIPg/EHu8Jok
|
||||
GW8b/27xecwETYpJDeBAN/miNbicI9qPpho+CLdzRtszHazpiJs=
|
||||
=PIpt
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:897ed12aac54bf9ccdc3deba549009dd483ab1117839a382ebf022a1e9accca0
|
||||
size 731288
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmcqEQEACgkQ11dEg7tX
|
||||
sY1gug/+Nh3/DGwSMgTWUzipy6b1fo5McJaPq7tf8HgDw6GXFkEp7VyzrxGzt6Gh
|
||||
x6M8J8gN8dyvKovx5xJGs6iXn6iJHFBCBjdh4BSo1is8SX/E4m/ix5ykNGdZZCFY
|
||||
RnjVy/90pJkHs34qZQblnJ/j86karj5Chz6cc9J4Ynsogw9uI3bms5kEZ98QiSru
|
||||
Wtn9pkULqWPnY4sPnoiOibAg5KCOwgqY/oB6BkGVkybn1xVQQAznCk/LhupaffEo
|
||||
rGLF1l1Hea3w2MiEgw/4jm7pMzwy9NBAMRmIbOfOvz/YINDl0o582UpuuzCejx3f
|
||||
V2Z1ssObOAYklhh9Q4u5B8wH0SqEfuIuSVvq3sgpCClTdS/+3vvKVxeoQf8C0V7c
|
||||
XNd5tF3oDJ/SeLLtTUaujc/a4JYw516Nx1vEZA9i3EEfbRfbQXiQaaQSNhSQbY2m
|
||||
s9lbdd4SX1yxsBYx/uteeSagwRvkNmLnmNv+Ck5LIb/pB5h2tdl2c37zhj37Zw0v
|
||||
nmEl3UvqBH3T8i+/t9NFD5CosKCxTGFnow9q/S9gTEaLPDdb0i2aXSRgvKkufjfU
|
||||
HuFXBvZLomI94Jv8ONPgKD9/aEuHwemNNL2KLAI2d1KznN7u53imw2evkujNmeGI
|
||||
jWbm7WbMr3BogwZ25t/ualu6B/SsHQdKsoEUZ8n9MYUjBF2q5uc=
|
||||
=bXyY
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6bdda6067f6d1156a258a43a56d73412620ff224b0640b3ea424adf122303ba2
|
||||
size 731644
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmdFndYACgkQ11dEg7tX
|
||||
sY0JOA//Tdqbi1K44D+WDIYfO49Hi7t2bamjOgRLbLlr0YXfF0UBapZfilvCtRcF
|
||||
SpPmV0XCkwcQOXfSlkxCJ+fpImuEqSATspi2kbV3Z8t1LKKA4x9ps3I2dCRZ2SNZ
|
||||
jTHS43z1osqewRM0U3qDzN1YzEBEaeMop59YP2ULjBx9IVXPoT9OR82FRe01pl/+
|
||||
uLU6IEo7kqRfNiZEf4r6jfVa8Bnw2ZcXpHDOsy3xXvIpXapqB8PcGTpVTpi0Pg46
|
||||
I1H/N2vdUK3TpBg1JV/ZKc3OyJvesiRTm4I8CjpR8Nz4MnSFMsseqvFAfVI4QdQx
|
||||
8NXNgOYEyQRuTy6CHNmAWo3RGvQpz4suDWIXuTIHgZ/hXnxGxjogCvBMUYzHD1M6
|
||||
ZIZF6Z5DOq08/J3janDjVTR4cF92sHylzkvx5IP/KW/zeTGTr9SrVNpXiyQaBTsM
|
||||
T6wQ/gHKVTYYti4tE9qtC8KIjA2W3n5OCrzpz+DXQVjdgbZdMAt3ePvjCDE2sC4p
|
||||
umAAwj7sEtrHZ/e0bxwQSRvUy1FCviF6403hFx4vmf5UiTBuxyHepPSm4aHVs4Wq
|
||||
q+v3OV8TKzaVIVP2eHbP+Yw5ghHY1FzVtnB3zayYLNeIhwE3J5vrj5+Y7wQsCGLH
|
||||
4YNFtoW9bD/FivLHBUqj7imN7a3qCQtRUI1GRI1p+HCBME3pexA=
|
||||
=E8Kl
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9ed87edb3a24256189f8dc79c821b8f45589aab7032d8dde78d5d94cf0639ff9
|
||||
size 732392
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmdy7PgACgkQ11dEg7tX
|
||||
sY3N8hAAsQDSequKrBIJc6JJYxMSimq2LOBRTRMKp4nGDRIXMFzUKMVxjLiQY3DH
|
||||
IgwGY7o12cxYvRnM3Ub3UEpFyeLfYgGFno9qIntp/cfj7Ef7T13z0a1xKjAXGaZT
|
||||
5D14BRhRkCspSe6wXQB7Y4tkct16Uag7/Wk7jLb+FIU4VIFU5PiINT59L2YfOp1U
|
||||
1guzAyiA9J6rbj9317IAMBWq/poHVYr8gqUOjCV3r+KcKzG7AHBHBbjfbwPHcXu4
|
||||
RBCc7zTISi6/rTD5+5M3G5j5x4AYmHzZS44+TvNt82u17Nl+9yzhRFmSuYgtkojw
|
||||
7zZ33RLgGkalYGvuQia/MeiUUGyTT4ygitanF+Q+qbYVV9jbnOjzfmLKHGt7MMQ+
|
||||
gA1trPk2VUoRsxE5IOI+KrvEAuj40DUQKHYkz0ZoKOLpFXsIohguX2zAlq1QfSB3
|
||||
XeFquIq/MYusgw99AS/A4NWa8Qz/lrM75kE6CdbDfyAXabXrCdj0XpxgqYHJyjVW
|
||||
7vKD4WeUtp7Vx7frm488SWxCqblRmf0R6j+USpAXCs7MZHQACmw4PBMGZCFbrA0O
|
||||
AEnoU0JgbjKsOc+jbta263m+qxF1yDol2tzX2w8PagwzgJaAhJNV31P4g6EIW3+g
|
||||
Izq2PJoS64C9mkAUdSt95IBoc+EbLoRs5DZhkY/WY7wmmzBA6tg=
|
||||
=BdEQ
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:20fb607366d166390dc18beca8f9321813924305a0adfee91f795e4e05ead311
|
||||
size 747832
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmeklpAACgkQ11dEg7tX
|
||||
sY2hpw//Sag4OEMDZy5QB5oyl00yeJpowAWSRlo0i5qEImrpLYboz7wtxdLxy9kw
|
||||
cDsSIPvevfjUE8SEBPcPmbipDzW8vk3F32fEH4us7icJLng9uRg788hDurFhnN7b
|
||||
fQ2wxiJHFyddWDNvuxk/xa4vHolgAJOAwlxXXMqvxXeNBUKaPlNS2VVkYt/7Fwgk
|
||||
b4gqKBtgsYz2/Pari0n3L2jqOA/YUOMC3q3jpvdsINcV0T8uwsbQrO9NAlUQ/ppH
|
||||
2FtnWO5+Di5Mea9dD2DHjSEtu4QdDgmGyUYXLPT1/qddvIB2OREurz73rn5nWVv7
|
||||
kXR2Fs0NTjNa6850H0spAPmxGKpi9U9GdVxeBOosJB+Gafo94NquSEd3d9PqCuA2
|
||||
J0mm+z3D5DvyZMwgiCQAsgd6UlSVN4I82XrOOVFmF2O82++rjpBn+4QyBFaO182I
|
||||
RkUa9IpkaUG/2caEIMUzf2PLSNx9ibkxTQm30khvBDlHxwGGT7FVLrv9G+b6jk3Y
|
||||
pxeSUStL2yOUNt2GYav8L3hqiKlIeZKFkv6yXoST7GyhZXLXJLqmWq/Y7rkZqzg9
|
||||
MruVXciqBpV6E6we+RgrAIzcJiyYbGa9IYC5TlwN6C2RU5QxRmaLwQwhs36mFgKR
|
||||
1BdwZ2W/Nq3sZaa/odonU9TrClhEkcHETk/G/5yvXcV4YMyjOlQ=
|
||||
=6GpF
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8370baddb5e389769c65103d7105acfad15a13bc12c98fe351a913264ff8587c
|
||||
size 748632
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAme0iwsACgkQ11dEg7tX
|
||||
sY1Y2A/+IlSol1RdonTNj+5IMa12hFhE4BheuwWq/aRmMagz8hp2zuaYIZD5MFkw
|
||||
ALAc2MdowQG/uJ7XMQ/yIlbnz5K1sxlxynp2bsEmqC8wPRP116ZQQTA3JHB1lL+4
|
||||
KZgHlM5Y8cOyZgAz42jH6lF2gKSfIi1iUdNebz8bUFJJYuzrplM586bJKP8ecTv/
|
||||
QdOrMELhSHk9bJPcQrqlBVitY/6hJYBHtqjOGGWlzM5ULzbcW9AxyynRqmJGvt56
|
||||
Be/3C8z1WJBx/GlJV8ozwF//P5BPPCP0Whx8pdM4Wy6KeZH09qapotR1/1IrB6SZ
|
||||
KWPQ1boUZ8hEt0rC9qs0v8bLHIDNim5qI10nUPA8272bE8y0Ytb4cm98XVIrkF2T
|
||||
e7x6g/PZFX7/6Y9hIVhYnFr6BzilycyMGy66nE61GVWEEUqEQtNRNwOEqSE1QbRT
|
||||
L/r+CYxBtVeT5rRf6KfntguWBrdS2XfFKs9+CAga6aWj9F2Z/xPLS8jkpuRNp6H8
|
||||
N8M3dMpvLQv0iQN2AFc0jYKWb7BK4mtq0yEM6q0DXkXPp0MMBqbKGKDesoyqWWox
|
||||
fB0MXjUlu2gDHqO4AHgVS75MCfvTLDppX/31AYbokckX83sFdbJ7pViMeJ1evxf3
|
||||
rs42Qw4VH/7dYvup9435B2EQWVWqhC3jDFg/UIrCo6EeOtZ7dio=
|
||||
=VQ6f
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c9269e50c451fd7b880b81013bdbdcddec14ba24e6f0b5d95fd035bd26eac5eb
|
||||
size 748688
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAme96owACgkQ11dEg7tX
|
||||
sY0iAQ/+M5x1At2/I2zYY2w8PVrT0JhSBgXAc36QqnfMv12zwqnu5+oYl16m8K1C
|
||||
TgWEDTghDn/cW2aAExqpAZvf5NxJWmX6GRhMb9W1PwzeYxoc/pgD+JGp6MW8rWM3
|
||||
OWwdugRocJVL3jFg7cu96Gku8lH81HdLbGb8GmyenWylGZdYXVWCkG3vgOGNhw3g
|
||||
oti5Q9G/yo7/XPDh7yuP5e+ZUeT7sAZ7PG23cXpJaK/WzNaetytEMOKsWSVhXe8m
|
||||
JG76dJS4uhGv2Yy/jidN9Onr/VDL7yCE1dJwY77aJq5IRugdnsAyIlCb0TBYNFbB
|
||||
LhxeMjv3vpHPnGB7kNd4qJOXqimrCy16AqxFPJvQcrXQFbxMypeASdXcElYNmu0g
|
||||
f1l66+S43tx0dWtQwG2wZ90sox+KgnMt+YLb1t++wjWFQ4A6hSfrd1+Ya85hawbg
|
||||
rbhMVNCJDI8v/H5DY0N47MEEjXnNftERD+NsLfEC4f6eTsAq4XeUaxYzMSenT7gA
|
||||
jzldw/Q56wL5dHcFqRbfMjUITyFhMgWrjd48Id3p/hxyv4YqNtggUd9muHJhT8Po
|
||||
H0envuJR23+4VwnO9eprx6dghLc4kZ5LKz5Lch67YebyiboTxiYn6vE0+qrIizv4
|
||||
bQEA6mpVsSvYD7fADE/VdkT40a3IKL8MH1deL514adqzQrCRvnA=
|
||||
=DV//
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:26182e215e55b4f3ab60e980bbae5d0b1a6795406d11901ed33822e84812eea2
|
||||
size 749032
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmfQPY8ACgkQ11dEg7tX
|
||||
sY3DrA/9H1G55dWVTUEZei/dDxQKuEwgC6Dlu4iuJTg6UzcBgt5HdjnBvMiAmZ4X
|
||||
00IQg+bhHBWx/glvB2UoV7rm1BMixV3Z2Fd7b/3onvQpHR7OXCVNN135P8qMNvr1
|
||||
6Gq5akYy/VdTcnoVMY3+uSAwz96iOoko8QPXrTZfqz1BfOXjsC9Vuh/WZlBgJSr+
|
||||
YA3chrvqNzkS+lu3GnaM5GFiaAWmjL14+aJxMFByOl/rdf9jsdIjnzGjxOftZ1Wj
|
||||
B/P/1RihA2JV4cojA/YUnlNecAP/GnYLwfRcqHbhnnD95a/EuSIuucVR/gxryHA5
|
||||
8VzancQRVSF6jxEWNrQ+IgPpNlTfnVjPVgUpbt+QZVDHQrHi+aAmKrucisICdXOO
|
||||
KlSOW72HvNh603lmyKA3W1vTvlPu4bnk/lpcasXyjaTuKkYhvM7GQTwnCsat/Plk
|
||||
SYqJGQ49Jb1y4eu10oUsTm/ff31VLHbs3P6GRGHKbYMNN4GX5FhUDSfo0tJivhF9
|
||||
2lJmFqO4wodz5RRKFlZNlOE/6wKJuX8i2umMLnGXvhYgoYLkbgBvQ5+jUtyLOEnE
|
||||
QWYFhxH0WQQHoRo3DiEnrkT5lVizk1VtX+bbmfWgY8qFnW7IrGkKadK6XH+gdOfY
|
||||
jRs7plWVW6VuMormI5rA4N7JRme1MaF7mB8/4vBdgFvRVtdGD8c=
|
||||
=LkLk
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8ab78619f6c05e7162099d52ba83b0b5d11a3985cc4b0abf4112d91f815c2f69
|
||||
size 749116
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmfssKsACgkQ11dEg7tX
|
||||
sY1wqw/6AsIAQLu60plwtkXm3sVuK3ZkkaY1vCaXxQGahzTC31PPGs0KTJdkHaku
|
||||
Fr/ivC3yssKPldGHpHrqcNHXGDE12piet9IYteU/yCdsAswvAquPSw6jp734n5ql
|
||||
wA7s0SZM7sDkGN5Jdv9mpLv5z1Itw90ZN0k1nx8+Xss1imRpH2DIebjPCUJzOBhY
|
||||
ZaoOgXaVE/JKyPSAbs+3BoZZcFYn4Hk2ZPIyL5ecfirjHn9hXt1ZlgWMn1KyvdLa
|
||||
399tzY9EA2DlUA2PtcxWHlqa9gvBwSwSk0twclX4XmJrE1q2Y02COHLJnZElnpfT
|
||||
wEzPXR0ZoSz5g8AcoJ6Hhdn6yVu1IOzf87FdpG2TjiFRMeCIZFcjorCvEWeG/3hS
|
||||
uaiZu16IqtzDMWA7bHLtMB29/f2vap/6/kWNPTyC9yP3dpaXt6S2/25mOeLOLnof
|
||||
6YHnd37sRFim+0JOD5bWOf2OMkCeYriHHE/eZKd5avoVi15xvSicqI5hlS+RkMBp
|
||||
bE+GXWdMwwBRDgvicDX8aAEkqA+jdRF74G7XpYxkxtTPVCm77s7CiQLIKG+FMb6S
|
||||
GODL4jdnajvdC1BBht8xGxj3ofgMz/X+AUjgSGz2nkTThb8mAfuVR9LRornn8GbO
|
||||
7GcA633HNcB1e6VxahOS6S1fDp6whljE+6/T0eg6Z0f41sZs9UU=
|
||||
=uXwj
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:403544aeeb606ffb3be55da4213d1712cbf93534c0982e38204ad863e01ae8c3
|
||||
size 749100
|
@@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE4KPrIC+OV1KOE+cv11dEg7tXsY0FAmgaTV4ACgkQ11dEg7tX
|
||||
sY2VWA/+Pm+sHd5P3Yd3vmVX0P61kDuqrkEWd5/vDgKEbNRDyVceC1Zst4DDpo57
|
||||
fmE5+0V6/sa7yDKTWt6rnF8EswMONHwi1pSaVJPEp9tuO/RgLs5pmSG7zlXGFb7u
|
||||
OqPOiI3nysFepnLMF0/FODEmKt4FrNo2fgK2lkk0aCIWFAIP3SihkaVpmSnH4t0j
|
||||
Ke2/hRmQxoMkyL+WtzU6AlcpHwRERsNn+oAkg2G0gB7rGvbbctx4kXi73YL+XjbI
|
||||
cA02y2vTzMcupHVuiLpYFhlrLg4yxU9oc2OKF2UdvnT7XYtd+UGdH458HJuuc7Zx
|
||||
pqsnWBZYhcIWOtMIv4jYncWYQkg/JtzE9GG051/ZpPl+JsNZK7qemibfIRHyPVL2
|
||||
+IO7DFiUWoIOZAlCdx/nB+I8TKQHrtBpBRZql2Q8n0b781i2wWB39taep4fJEFZ7
|
||||
k/zaP+/hmog2gbbDriFXN7HSWAxw2u4AY3EnO81hXX0g65hMGELJ0x8uG6DA89Wu
|
||||
vyVYV44S/UJfsVt0OIzQncA91oPRgtgmIZpuigzvvWEv2clcQrVCdLX6I/zsUWGK
|
||||
3gxuQPcSjiVen3XUhWEIVA+TsYam0HtndQ8W0bie8H+gqNuua/t9/RAd+L/ypMCI
|
||||
TUQ+DrISOwItYMTeK9YUtZb0HFqOYiBI64DQqOzFpueFkwh4qmY=
|
||||
=LH2q
|
||||
-----END PGP SIGNATURE-----
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:20eafbae78a437f767b8b6e9493875b230033f9760454732e810483c82127927
|
||||
size 758196
|
@@ -1,11 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAABCgAdFiEEs8s2ZVJUC+Bu6a2XEZaMRJKMrvwFAmhacDwACgkQEZaMRJKM
|
||||
rvywKwf/afg8FZljY030lwyDduvqkk0HqmT1q667DLLCxbdWKaAlejMZUxDmKKJv
|
||||
5GglO3j9bHqNxqrsUxfA+pdMdDugYJCzFg4XXR3xeBf2pE2a7PfczTsQQ4aGLel7
|
||||
iszLAwLe0XeLb29Em7yLd+X1aiFrBIgdd3YAYtNZIfuZOorUQdN+WHwif1rT35tY
|
||||
BH5ZokChQNBBNTq/JUUHon/KobnbHSiX6vE8JyjhLQ+QJZJKgP5+jErmRwbfJnOP
|
||||
rMD82qeZbVQiIiQvO3s2Oqzodk1gtwU5B2QrasEw+tt9H22jnKL6xL4mWZffzlSg
|
||||
KCXeYtg4S699pNJlJD6pDeJuPybVuw==
|
||||
=YIgq
|
||||
-----END PGP SIGNATURE-----
|
Reference in New Issue
Block a user