From 881d4e1642d1a796b1aca589b68a6d6d5f75259f Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 23 Aug 2025 18:27:08 +1200 Subject: [PATCH] feat: Add 8 files --- source/src/autogen/_agent-local.cpp | 153 ++++++++ source/src/autogen/_agent-local.hpp | 15 + source/src/autogen/_agent-remote.cpp | 510 +++++++++++++++++++++++++++ source/src/autogen/_agent-remote.hpp | 15 + 4 files changed, 693 insertions(+) create mode 100644 source/src/autogen/_agent-local.cpp create mode 100644 source/src/autogen/_agent-local.hpp create mode 100644 source/src/autogen/_agent-remote.cpp create mode 100644 source/src/autogen/_agent-remote.hpp diff --git a/source/src/autogen/_agent-local.cpp b/source/src/autogen/_agent-local.cpp new file mode 100644 index 0000000..4c9cc78 --- /dev/null +++ b/source/src/autogen/_agent-local.cpp @@ -0,0 +1,153 @@ +#include +#include +#include +#include +#include + +/* + + THIS FILE IS AUTO-GENERATED BY DEHYDRATE. + DO NOT EDIT THIS FILE. + +*/ + + +#include "_agent-local.hpp" +namespace recreate_agent_local { + + +// Tiny dependency-free FNV-1a 64-bit hash +static uint64_t fnv1a_64(const void* data, size_t len) { + const uint8_t* p = static_cast(data); + uint64_t h = 0xcbf29ce484222325ULL; + for (size_t i = 0; i < len; ++i) + h = (h ^ p[i]) * 0x100000001b3ULL; + return h; +} + + +// Base64 decoding function - no dependencies +static void base64_decode(const char* encoded_data, size_t encoded_len, unsigned char* output, size_t* output_len) { + const char* base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + size_t out_pos = 0; + int val = 0, valb = -8; + + for (size_t i = 0; i < encoded_len; i++) { + char c = encoded_data[i]; + if (c == '=') break; + + // Find position in base64_chars + const char* pos = strchr(base64_chars, c); + if (pos == nullptr) continue; // Skip invalid characters + + val = (val << 6) + static_cast(pos - base64_chars); + valb += 6; + if (valb >= 0) { + output[out_pos++] = static_cast((val >> valb) & 0xFF); + valb -= 8; + } + } + + *output_len = out_pos; +} + +// Utility function to recreate a file with proper permissions +static bool _recreate_file_(const std::filesystem::path& outpath, uint64_t file_hash, std::filesystem::perms file_perms, const unsigned char* filedata, size_t filedata_len) { + namespace fs = std::filesystem; + bool needs_write = false; + + // Check if file exists and has correct hash + if (fs::exists(outpath)) { + // Check content hash + std::ifstream in(outpath, std::ios::binary); + std::ostringstream oss; + oss << in.rdbuf(); + std::string data = oss.str(); + uint64_t existing_hash = fnv1a_64(data.data(), data.size()); + needs_write = existing_hash != file_hash; + } else { + needs_write = true; // File doesn't exist, need to create it + } + + bool needs_permission_update = true; + if (!needs_write) { // we always update permissions if the file is written or changed. Othewise we check. + fs::perms current_perms = fs::status(outpath).permissions(); + needs_permission_update = current_perms != file_perms; + } + + if (needs_write) { + bool existed = fs::exists(outpath); + + fs::create_directories(outpath.parent_path()); + std::ofstream out(outpath, std::ios::binary); + out.write(reinterpret_cast(filedata), filedata_len); + out.close(); + // Set the file permissions + fs::permissions(outpath, file_perms); + + if (!existed) { + std::cout << "[dehydrate] " << outpath.filename() << ": created\n"; + } else { + std::cout << "[dehydrate] " << outpath.filename() << ": updated (hash changed)\n"; + } + return true; + } + + if (needs_permission_update) { + // Update only permissions + fs::permissions(outpath, file_perms); + std::cout << "[dehydrate] " << outpath.filename() << ": updated (permissions changed)\n"; + return true; + } + + return false; +} + +bool recreate_tree(std::string destination_folder) { + namespace fs = std::filesystem; + bool any_written = false; + { + // File: agent-install.sh + fs::path outpath = fs::path(destination_folder) / "agent-install.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKCiMgaW5zdGFsbCB0aGUgZHJvcHNoZWxsIGhvc3QgYWdlbnQgb24gdGhpcyBj"\ + "b21wdXRlci4KIyAobm90IGZvciByZW1vdGUgc2VydmVycykKClNDUklQVF9ESVI9JChkaXJuYW1l"\ + "ICIkMCIpCgplY2hvICJJbnN0YWxsaW5nIGRyb3BzaGVsbCBob3N0IGFnZW50IG9uIHRoaXMgY29t"\ + "cHV0ZXIuLi4iCgoKIyBQcmludHMgYW4gZXJyb3IgbWVzc2FnZSBpbiByZWQgYW5kIGV4aXRzIHdp"\ + "dGggc3RhdHVzIGNvZGUgMS4KX2RpZSgpIHsKICAgIGVjaG8gLWUgIkVycm9yOiAkMSIKICAgIGV4"\ + "aXQgMQp9CgoKIyBDaGVja3MgaWYgbGlzdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgc2V0"\ + "OyBjYWxscyBfZGllKCkgaWYgYW55IGFyZSBtaXNzaW5nLgpfY2hlY2tfcmVxdWlyZWRfZW52X3Zh"\ + "cnMoKSB7CiAgICBsb2NhbCByZXF1aXJlZF92YXJzPSgiJEAiKQogICAgZm9yIHZhciBpbiAiJHty"\ + "ZXF1aXJlZF92YXJzW0BdfSI7IGRvCiAgICAgICAgaWYgWyAteiAiJHshdmFyfSIgXTsgdGhlbgog"\ + "ICAgICAgICAgICBfZGllICJSZXF1aXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZSAkdmFyIGlzIG5v"\ + "dCBzZXQiCiAgICAgICAgZmkKICAgIGRvbmUKfQoKCmZ1bmN0aW9uIGluc3RhbGxfYmI2NCgpIHsg"\ + "ICAgCiAgICAjIGNoZWNrIGN1cmwgaW5zdGFsbGVkCiAgICBpZiAhIGNvbW1hbmQgLXYgY3VybCAm"\ + "PiAvZGV2L251bGw7IHRoZW4KICAgICAgICBfZGllICJDdXJsIGlzIG5vdCBpbnN0YWxsZWQuIEN1"\ + "cmwgaXMgcmVxdWlyZWQgZm9yIGFnZW50IGluc3RhbGxhdGlvbi4iCiAgICBmaQoKICAgIEJCNjRf"\ + "cGF0aD0iJHtBR0VOVF9MT0NBTF9QQVRIfS9iYjY0IgogICAgQVJDSD0kKHVuYW1lIC1tKQogICAg"\ + "aWYgISBjdXJsICJodHRwczovL2dldGJpbi54eXovYmI2NDpsYXRlc3QtJHtBUkNIfSIgPiAiJHtC"\ + "QjY0X3BhdGh9IjsgdGhlbgogICAgICAgIF9kaWUgIkZhaWxlZCB0byBpbnN0YWxsIGJiNjQuIEN1"\ + "cmwgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBjb2RlLiIKICAgIGZpCiAgICBjaG93biAiJChpZCAt"\ + "dSAiJFVTRVIiKTokKGlkIC1nICIkVVNFUiIpIiAiJHtCQjY0X3BhdGh9IgogICAgY2htb2QgK3gg"\ + "IiR7QkI2NF9wYXRofSIKCiAgICAjIHRlc3QgaWYgYmI2NCBpcyBpbnN0YWxsZWQKICAgIGlmICEg"\ + "VkVSPSQoIiR7QkI2NF9wYXRofSIgdmVyc2lvbik7IHRoZW4KICAgICAgICBfZGllICJiYjY0IGRp"\ + "ZCBub3QgaW5zdGFsbCBjb3JyZWN0bHkuIgogICAgZmkKCiAgICBlY2hvICJiYjY0IHYkVkVSIGlu"\ + "c3RhbGxlZC4iCiAgICByZXR1cm4gMDsKfQoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzZXQgLWEKQUdF"\ + "TlRfTE9DQUxfUEFUSD0iJFNDUklQVF9ESVIiCnNldCArYQoKX2NoZWNrX3JlcXVpcmVkX2Vudl92"\ + "YXJzICJBR0VOVF9MT0NBTF9QQVRIIgplY2hvICJJbnN0YWxsaW5nIGhvc3QgYWdlbnQgaW50byAk"\ + "QUdFTlRfTE9DQUxfUEFUSCIKCmluc3RhbGxfYmI2NAoK"; + + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 7211800578327693679ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; + } + return any_written; +} +} diff --git a/source/src/autogen/_agent-local.hpp b/source/src/autogen/_agent-local.hpp new file mode 100644 index 0000000..1e52976 --- /dev/null +++ b/source/src/autogen/_agent-local.hpp @@ -0,0 +1,15 @@ + +#pragma once + +/* + + THIS FILE IS AUTO-GENERATED BY DEHYDRATE. + DO NOT EDIT THIS FILE. + +*/ + + +#include +namespace recreate_agent_local { + bool recreate_tree(std::string destination_folder); +} diff --git a/source/src/autogen/_agent-remote.cpp b/source/src/autogen/_agent-remote.cpp new file mode 100644 index 0000000..56bf4bf --- /dev/null +++ b/source/src/autogen/_agent-remote.cpp @@ -0,0 +1,510 @@ +#include +#include +#include +#include +#include + +/* + + THIS FILE IS AUTO-GENERATED BY DEHYDRATE. + DO NOT EDIT THIS FILE. + +*/ + + +#include "_agent-remote.hpp" +namespace recreate_agent_remote { + + +// Tiny dependency-free FNV-1a 64-bit hash +static uint64_t fnv1a_64(const void* data, size_t len) { + const uint8_t* p = static_cast(data); + uint64_t h = 0xcbf29ce484222325ULL; + for (size_t i = 0; i < len; ++i) + h = (h ^ p[i]) * 0x100000001b3ULL; + return h; +} + + +// Base64 decoding function - no dependencies +static void base64_decode(const char* encoded_data, size_t encoded_len, unsigned char* output, size_t* output_len) { + const char* base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + size_t out_pos = 0; + int val = 0, valb = -8; + + for (size_t i = 0; i < encoded_len; i++) { + char c = encoded_data[i]; + if (c == '=') break; + + // Find position in base64_chars + const char* pos = strchr(base64_chars, c); + if (pos == nullptr) continue; // Skip invalid characters + + val = (val << 6) + static_cast(pos - base64_chars); + valb += 6; + if (valb >= 0) { + output[out_pos++] = static_cast((val >> valb) & 0xFF); + valb -= 8; + } + } + + *output_len = out_pos; +} + +// Utility function to recreate a file with proper permissions +static bool _recreate_file_(const std::filesystem::path& outpath, uint64_t file_hash, std::filesystem::perms file_perms, const unsigned char* filedata, size_t filedata_len) { + namespace fs = std::filesystem; + bool needs_write = false; + + // Check if file exists and has correct hash + if (fs::exists(outpath)) { + // Check content hash + std::ifstream in(outpath, std::ios::binary); + std::ostringstream oss; + oss << in.rdbuf(); + std::string data = oss.str(); + uint64_t existing_hash = fnv1a_64(data.data(), data.size()); + needs_write = existing_hash != file_hash; + } else { + needs_write = true; // File doesn't exist, need to create it + } + + bool needs_permission_update = true; + if (!needs_write) { // we always update permissions if the file is written or changed. Othewise we check. + fs::perms current_perms = fs::status(outpath).permissions(); + needs_permission_update = current_perms != file_perms; + } + + if (needs_write) { + bool existed = fs::exists(outpath); + + fs::create_directories(outpath.parent_path()); + std::ofstream out(outpath, std::ios::binary); + out.write(reinterpret_cast(filedata), filedata_len); + out.close(); + // Set the file permissions + fs::permissions(outpath, file_perms); + + if (!existed) { + std::cout << "[dehydrate] " << outpath.filename() << ": created\n"; + } else { + std::cout << "[dehydrate] " << outpath.filename() << ": updated (hash changed)\n"; + } + return true; + } + + if (needs_permission_update) { + // Update only permissions + fs::permissions(outpath, file_perms); + std::cout << "[dehydrate] " << outpath.filename() << ": updated (permissions changed)\n"; + return true; + } + + return false; +} + +bool recreate_tree(std::string destination_folder) { + namespace fs = std::filesystem; + bool any_written = false; + { + // File: datacommands.sh + fs::path outpath = fs::path(destination_folder) / "datacommands.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKCiMgVGhpcyBzY3JpcHQgY29udGFpbnMgdGhlIGNvbW1vbiBjb2RlIGZvciB0"\ + "aGUgYXV0b2NvbW1hbmRzLgoKTVlJRD0kKGlkIC11KQpNWUdSUD0kKGlkIC1nKQoKX2F1dG9jb21t"\ + "YW5kcnVuX3ZvbHVtZSgpIHsKICAgIGxvY2FsIGNvbW1hbmQ9IiQxIgogICAgbG9jYWwgdm9sdW1l"\ + "X25hbWU9IiQyIgogICAgbG9jYWwgYmFja3VwX2ZvbGRlcj0iJDMiCgogICAgY2FzZSAiJGNvbW1h"\ + "bmQiIGluCiAgICAgICAgY3JlYXRlKQogICAgICAgICAgICBpZiBkb2NrZXIgdm9sdW1lIGxzIHwg"\ + "Z3JlcCAtcSAiJHt2b2x1bWVfbmFtZX0iOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICJWb2x1"\ + "bWUgJHt2b2x1bWVfbmFtZX0gYWxyZWFkeSBleGlzdHMgLSBsZWF2aW5nIHVuY2hhbmdlZCIKICAg"\ + "ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBmaQogICAgICAgICAgICBlY2hvICJDcmVh"\ + "dGluZyB2b2x1bWUgJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIGRvY2tlciB2b2x1bWUgY3Jl"\ + "YXRlICIke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgOzsKICAgICAgICBkZXN0cm95KQogICAg"\ + "ICAgICAgICBlY2hvICJEZXN0cm95aW5nIHZvbHVtZSAke3ZvbHVtZV9uYW1lfSIKICAgICAgICAg"\ + "ICAgZG9ja2VyIHZvbHVtZSBybSAiJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIDs7CiAgICAg"\ + "ICAgYmFja3VwKQogICAgICAgICAgICBlY2hvICJCYWNraW5nIHVwIHZvbHVtZSAke3ZvbHVtZV9u"\ + "YW1lfSIKICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3ZvbHVtZV9uYW1lfSI6L3Zv"\ + "bHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4gYmFzaCAtYyAidGFyIC1j"\ + "enZmIC9iYWNrdXAvYmFja3VwLnRneiAtQyAvdm9sdW1lIC4gJiYgY2hvd24gLVIgJE1ZSUQ6JE1Z"\ + "R1JQIC9iYWNrdXAiCiAgICAgICAgICAgIDs7CiAgICAgICAgcmVzdG9yZSkKICAgICAgICAgICAg"\ + "ZWNobyAiUmVzdG9yaW5nIHZvbHVtZSAke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgZG9ja2Vy"\ + "IHZvbHVtZSBybSAiJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIGRvY2tlciB2b2x1bWUgY3Jl"\ + "YXRlICIke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3Zv"\ + "bHVtZV9uYW1lfSI6L3ZvbHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4g"\ + "YmFzaCAtYyAidGFyIC14enZmIC9iYWNrdXAvYmFja3VwLnRneiAtQyAvdm9sdW1lIC0tc3RyaXAt"\ + "Y29tcG9uZW50cz0xIgogICAgICAgICAgICA7OwogICAgZXNhYwp9ICAgCgpfYXV0b2NvbW1hbmRy"\ + "dW5fcGF0aCgpIHsKICAgIGxvY2FsIGNvbW1hbmQ9IiQxIgogICAgbG9jYWwgcGF0aD0iJDIiCiAg"\ + "ICBsb2NhbCBiYWNrdXBfZm9sZGVyPSIkMyIKCiAgICBjYXNlICIkY29tbWFuZCIgaW4KICAgICAg"\ + "ICBjcmVhdGUpCiAgICAgICAgICAgIGlmIFsgLWQgIiR7cGF0aH0iIF07IHRoZW4KICAgICAgICAg"\ + "ICAgICAgIGVjaG8gIlBhdGggJHtwYXRofSBhbHJlYWR5IGV4aXN0cyAtIHVuY2hhbmdlZCIKICAg"\ + "ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBmaQogICAgICAgICAgICBlY2hvICJDcmVh"\ + "dGluZyBwYXRoICR7cGF0aH0iCiAgICAgICAgICAgIG1rZGlyIC1wICIke3BhdGh9IgogICAgICAg"\ + "ICAgICA7OwogICAgICAgIGRlc3Ryb3kpCiAgICAgICAgICAgIGVjaG8gIkRlc3Ryb3lpbmcgcGF0"\ + "aCAke3BhdGh9IgogICAgICAgICAgICBsb2NhbCBwYXRoX3BhcmVudDsKICAgICAgICAgICAgcGF0"\ + "aF9wYXJlbnQ9JChkaXJuYW1lICIke3BhdGh9IikKICAgICAgICAgICAgbG9jYWwgcGF0aF9jaGls"\ + "ZDsKICAgICAgICAgICAgcGF0aF9jaGlsZD0kKGJhc2VuYW1lICIke3BhdGh9IikKICAgICAgICAg"\ + "ICAgaWYgWyAtZCAiJHtwYXRoX3BhcmVudH0vJHtwYXRoX2NoaWxkfSIgXTsgdGhlbgogICAgICAg"\ + "ICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke3BhdGhfcGFyZW50fSI6L3ZvbHVtZSBkZWJp"\ + "YW4gYmFzaCAtYyAicm0gLXJmdiAvdm9sdW1lLyR7cGF0aF9jaGlsZH0iIHx8IGVjaG8gIkZhaWxl"\ + "ZCB0byBkZXN0cm95IHBhdGggJHtwYXRofSIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg"\ + "ICAgZWNobyAiUGF0aCAke3BhdGh9IGRvZXMgbm90IGV4aXN0IC0gbm90aGluZyB0byBkZXN0cm95"\ + "IgogICAgICAgICAgICBmaQogICAgICAgICAgICA7OwogICAgICAgIGJhY2t1cCkKICAgICAgICAg"\ + "ICAgZWNobyAiQmFja2luZyB1cCBwYXRoICR7cGF0aH0iCiAgICAgICAgICAgIGlmIFsgLWQgIiR7"\ + "cGF0aH0iIF07IHRoZW4KICAgICAgICAgICAgICAgIGRvY2tlciBydW4gLS1ybSAtdiAiJHtwYXRo"\ + "fSI6L3BhdGggLXYgIiR7YmFja3VwX2ZvbGRlcn0iOi9iYWNrdXAgZGViaWFuIGJhc2ggLWMgInRh"\ + "ciAtY3p2ZiAvYmFja3VwL2JhY2t1cC50Z3ogLUMgL3BhdGggLiAmJiBjaG93biAtUiAkTVlJRDok"\ + "TVlHUlAgL2JhY2t1cCIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZWNobyAiUGF0"\ + "aCAke3BhdGh9IGRvZXMgbm90IGV4aXN0IC0gbm90aGluZyB0byBiYWNrdXAiCiAgICAgICAgICAg"\ + "IGZpCiAgICAgICAgICAgIDs7CiAgICAgICAgcmVzdG9yZSkKICAgICAgICAgICAgaWYgWyAhIC1m"\ + "ICIke2JhY2t1cF9mb2xkZXJ9L2JhY2t1cC50Z3oiIF07IHRoZW4KICAgICAgICAgICAgICAgIGVj"\ + "aG8gIkJhY2t1cCBmaWxlICR7YmFja3VwX2ZvbGRlcn0vYmFja3VwLnRneiBkb2VzIG5vdCBleGlz"\ + "dCAtIG5vdGhpbmcgdG8gcmVzdG9yZSIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg"\ + "ZWNobyAiQ2xlYXJpbmcgZXhpc3RpbmcgZGF0YSBpbiBwYXRoICR7cGF0aH0iCiAgICAgICAgICAg"\ + "ICAgICBkb2NrZXIgcnVuIC0tcm0gLXYgIiR7cGF0aH0iOi9wYXRoIGRlYmlhbiBiYXNoIC1jICJy"\ + "bSAtcmZ2IC9wYXRoL3sqLC4qfSIKICAgICAgICAgICAgICAgIGVjaG8gIlJlc3RvcmluZyBwYXRo"\ + "ICR7cGF0aH0gZnJvbSBiYWNrdXAgZmlsZSAke2JhY2t1cF9mb2xkZXJ9L2JhY2t1cC50Z3oiCiAg"\ + "ICAgICAgICAgICAgICB0YXIgLXh6dmYgIiR7YmFja3VwX2ZvbGRlcn0vYmFja3VwLnRneiIgLUMg"\ + "IiR7cGF0aH0iIC0tc3RyaXAtY29tcG9uZW50cz0xCiAgICAgICAgICAgIGZpCiAgICAgICAgICAg"\ + "IDs7CiAgICBlc2FjCn0KCl9hdXRvY29tbWFuZHJ1bl9maWxlKCkgewogICAgbG9jYWwgY29tbWFu"\ + "ZD0iJDEiCiAgICBsb2NhbCBmaWxlcGF0aD0iJDIiCiAgICBsb2NhbCBiYWNrdXBfZm9sZGVyPSIk"\ + "MyIKCiAgICBjYXNlICIkY29tbWFuZCIgaW4KICAgICAgICBjcmVhdGUpCiAgICAgICAgICAgIGxv"\ + "Y2FsIGZpbGVfcGFyZW50OwogICAgICAgICAgICBmaWxlX3BhcmVudD0kKGRpcm5hbWUgIiR7Zmls"\ + "ZXBhdGh9IikKICAgICAgICAgICAgbG9jYWwgZmlsZV9uYW1lOwogICAgICAgICAgICBmaWxlX25h"\ + "bWU9JChiYXNlbmFtZSAiJHtmaWxlcGF0aH0iKQogICAgICAgICAgICBpZiBbICEgLWQgIiR7Zmls"\ + "ZV9wYXJlbnR9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICJQYXJlbnQgZGlyZWN0b3J5"\ + "ICR7ZmlsZV9wYXJlbnR9IG9mICR7ZmlsZV9uYW1lfSBkb2VzIG5vdCBleGlzdCAtIGNyZWF0aW5n"\ + "IgogICAgICAgICAgICAgICAgbWtkaXIgLXAgIiR7ZmlsZV9wYXJlbnR9IgogICAgICAgICAgICBm"\ + "aQogICAgICAgICAgICA7OwogICAgICAgIGRlc3Ryb3kpCiAgICAgICAgICAgIHJtIC1mICIke2Zp"\ + "bGVwYXRofSIKICAgICAgICAgICAgOzsKICAgICAgICBiYWNrdXApCiAgICAgICAgICAgIGVjaG8g"\ + "IkJhY2tpbmcgdXAgZmlsZSAke2ZpbGVwYXRofSIKICAgICAgICAgICAgbG9jYWwgZmlsZV9wYXJl"\ + "bnQ7CiAgICAgICAgICAgIGZpbGVfcGFyZW50PSQoZGlybmFtZSAiJHtmaWxlcGF0aH0iKQogICAg"\ + "ICAgICAgICBsb2NhbCBmaWxlX25hbWU7CiAgICAgICAgICAgIGZpbGVfbmFtZT0kKGJhc2VuYW1l"\ + "ICIke2ZpbGVwYXRofSIpCiAgICAgICAgICAgIGlmIFsgLWYgIiR7ZmlsZV9wYXJlbnR9LyR7Zmls"\ + "ZV9uYW1lfSIgXTsgdGhlbgogICAgICAgICAgICAgICAgZG9ja2VyIHJ1biAtLXJtIC12ICIke2Zp"\ + "bGVfcGFyZW50fSI6L3ZvbHVtZSAtdiAiJHtiYWNrdXBfZm9sZGVyfSI6L2JhY2t1cCBkZWJpYW4g"\ + "YmFzaCAtYyAiY3AgL3ZvbHVtZS8ke2ZpbGVfbmFtZX0gL2JhY2t1cC8ke2ZpbGVfbmFtZX0gJiYg"\ + "Y2hvd24gLVIgJE1ZSUQ6JE1ZR1JQIC9iYWNrdXAiCiAgICAgICAgICAgIGVsc2UKICAgICAgICAg"\ + "ICAgICAgIGVjaG8gIkZpbGUgJHtmaWxlcGF0aH0gZG9lcyBub3QgZXhpc3QgLSBub3RoaW5nIHRv"\ + "IGJhY2t1cCIKICAgICAgICAgICAgZmkKICAgICAgICAgICAgOzsKICAgICAgICByZXN0b3JlKQog"\ + "ICAgICAgICAgICBlY2hvICJSZXN0b3JpbmcgZmlsZSAke2ZpbGVwYXRofSIKICAgICAgICAgICAg"\ + "bG9jYWwgZmlsZV9uYW1lOwogICAgICAgICAgICBmaWxlX25hbWU9JChiYXNlbmFtZSAiJHtmaWxl"\ + "cGF0aH0iKQogICAgICAgICAgICBybSAtZiAiJHtmaWxlcGF0aH0iIHx8IHJldHVybl9kaWUgIlVu"\ + "YWJsZSB0byByZW1vdmUgZXhpc3RpbmcgZmlsZSAke2ZpbGVwYXRofSwgcmVzdG9yZSBmYWlsZWQu"\ + "IgogICAgICAgICAgICBjcCAiJHtiYWNrdXBfZm9sZGVyfS8ke2ZpbGVfbmFtZX0iICIke2ZpbGVw"\ + "YXRofSIgfHwgcmV0dXJuX2RpZSAiVW5hYmxlIHRvIGNvcHkgZmlsZSAke2JhY2t1cF9mb2xkZXJ9"\ + "LyR7ZmlsZV9uYW1lfSB0byAke2ZpbGVwYXRofSwgcmVzdG9yZSBmYWlsZWQuIgogICAgICAgICAg"\ + "ICA7OwogICAgZXNhYwp9CgpfYXV0b2NvbW1hbmRwYXJzZSgpIHsKICAgICMgZmlyc3QgYXJndW1l"\ + "bnQgaXMgdGhlIGNvbW1hbmQKICAgICMgaWYgdGhlIGNvbW1hbmQgaXMgYmFja3VwIG9yIHJlc3Rv"\ + "cmUsIHRoZW4gdGhlIGxhc3QgdHdvIGFyZ3VtZW50cyBhcmUgdGhlIGJhY2t1cCBmaWxlIGFuZCB0"\ + "aGUgdGVtcG9yYXJ5IHBhdGgKICAgICMgYWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgb2YgZm9ybToK"\ + "ICAgICMga2V5PXZhbHVlCiAgICAjIHdoZXJlIGtleSBjYW4gYmUgb25lIG9mIHZvbHVtZSwgcGF0"\ + "aCBvciBmaWxlLgogICAgIyB2YWx1ZSBpcyB0aGUgcGF0aCBvciB2b2x1bWUgbmFtZS4KCiAgICAj"\ + "IHdlIGl0ZXJhdGUgb3ZlciB0aGUga2V5PXZhbHVlIGFyZ3VtZW50cywgYW5kIGZvciBlYWNoIHdl"\ + "IGNhbGw6CiAgICAjICAgIGF1dG9ydW4gPGNvbW1hbmQ+IDxiYWNrdXBmaWxlPiA8a2V5PiA8dmFs"\ + "dWU+CgogICAgbG9jYWwgY29tbWFuZD0iJDEiCiAgICBzaGlmdAoKICAgIGxvY2FsIGJhY2t1cF90"\ + "ZW1wX3BhdGg9IiQxIgogICAgc2hpZnQKCiAgICBlY2hvICJhdXRvY29tbWFuZHBhcnNlOiBjb21t"\ + "YW5kPSRjb21tYW5kIGJhY2t1cF90ZW1wX3BhdGg9JGJhY2t1cF90ZW1wX3BhdGgiCgogICAgIyBF"\ + "eHRyYWN0IHRoZSBiYWNrdXAgZmlsZSBhbmQgdGVtcCBwYXRoIChsYXN0IHR3byBhcmd1bWVudHMp"\ + "CiAgICBsb2NhbCBhcmdzPSgiJEAiKQogICAgbG9jYWwgYXJnX2NvdW50PSR7I2FyZ3NbQF19CiAg"\ + "ICAKICAgICMgUHJvY2VzcyBhbGwga2V5PXZhbHVlIHBhaXJzCiAgICBmb3IgKChpPTA7IGk8JGFy"\ + "Z19jb3VudDsgaSsrKSk7IGRvCiAgICAgICAgbG9jYWwgcGFpcj0iJHthcmdzWyRpXX0iCiAgICAg"\ + "ICAgCiAgICAgICAgIyBTa2lwIGlmIG5vdCBpbiBrZXk9dmFsdWUgZm9ybWF0CiAgICAgICAgaWYg"\ + "W1sgIiRwYWlyIiAhPSAqIj0iKiBdXTsgdGhlbgogICAgICAgICAgICBjb250aW51ZQogICAgICAg"\ + "IGZpCiAgICAgICAgCiAgICAgICAgbG9jYWwga2V5PSIke3BhaXIlJT0qfSIKICAgICAgICBsb2Nh"\ + "bCB2YWx1ZT0iJHtwYWlyIyo9fSIKCiAgICAgICAgIyBjcmVhdGUgYmFja3VwIGZvbGRlciB1bmlx"\ + "dWUgdG8ga2V5L3ZhbHVlLgogICAgICAgIGxvY2FsIGJmb2xkZXI7CiAgICAgICAgYmZvbGRlcj0k"\ + "KGVjaG8gIiR7a2V5fV8ke3ZhbHVlfSIgfCB0ciAtY2QgJ1s6YWxudW06XV8tJykKICAgICAgICBs"\ + "b2NhbCB0YXJnZXRwYXRoPSIke2JhY2t1cF90ZW1wX3BhdGh9LyR7YmZvbGRlcn0iCiAgICAgICAg"\ + "bWtkaXIgLXAgIiR7dGFyZ2V0cGF0aH0iCgogICAgICAgICMgS2V5IG11c3QgYmUgb25lIG9mIHZv"\ + "bHVtZSwgcGF0aCBvciBmaWxlCiAgICAgICAgY2FzZSAiJGtleSIgaW4KICAgICAgICAgICAgdm9s"\ + "dW1lKQogICAgICAgICAgICAgICAgX2F1dG9jb21tYW5kcnVuX3ZvbHVtZSAiJGNvbW1hbmQiICIk"\ + "dmFsdWUiICIkdGFyZ2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHBhdGgp"\ + "CiAgICAgICAgICAgICAgICBfYXV0b2NvbW1hbmRydW5fcGF0aCAiJGNvbW1hbmQiICIkdmFsdWUi"\ + "ICIkdGFyZ2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGZpbGUpCiAgICAg"\ + "ICAgICAgICAgICBfYXV0b2NvbW1hbmRydW5fZmlsZSAiJGNvbW1hbmQiICIkdmFsdWUiICIkdGFy"\ + "Z2V0cGF0aCIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAg"\ + "ICBfZGllICJVbmtub3duIGtleSAka2V5IHBhc3NlZCB0byBhdXRvJHtjb21tYW5kfS4gV2Ugb25s"\ + "eSBzdXBwb3J0IHZvbHVtZSwgcGF0aCBhbmQgZmlsZS4iCiAgICAgICAgICAgICAgICA7OwogICAg"\ + "ICAgIGVzYWMKICAgIGRvbmUKfQoKCmRhdGFjcmVhdGUoKSB7CiAgICBfYXV0b2NvbW1hbmRwYXJz"\ + "ZSBjcmVhdGUgbm9uZSAiJEAiCn0KCgpkYXRhZGVzdHJveSgpIHsKICAgIF9hdXRvY29tbWFuZHBh"\ + "cnNlIGRlc3Ryb3kgbm9uZSAiJEAiCn0KCmRhdGFiYWNrdXAoKSB7CiAgICBfY2hlY2tfcmVxdWly"\ + "ZWRfZW52X3ZhcnMgIkJBQ0tVUF9GSUxFIiAiVEVNUF9ESVIiCiAgICBCQUNLVVBfVEVNUF9QQVRI"\ + "PSIkVEVNUF9ESVIvYmFja3VwIgoKCiAgICBta2RpciAtcCAiJEJBQ0tVUF9URU1QX1BBVEgiCiAg"\ + "ICBlY2hvICJfYXV0b2NvbW1hbmRwYXJzZSBbYmFja3VwXSBbJEJBQ0tVUF9URU1QX1BBVEhdIiAi"\ + "JEAiCiAgICBfYXV0b2NvbW1hbmRwYXJzZSBiYWNrdXAgIiRCQUNLVVBfVEVNUF9QQVRIIiAiJEAi"\ + "CgogICAgdGFyIHpjdmYgIiRCQUNLVVBfRklMRSIgLUMgIiRCQUNLVVBfVEVNUF9QQVRIIiAuCn0K"\ + "CmRhdGFyZXN0b3JlKCkgewogICAgX2NoZWNrX3JlcXVpcmVkX2Vudl92YXJzICJCQUNLVVBfRklM"\ + "RSIgIlRFTVBfRElSIgogICAgQkFDS1VQX1RFTVBfUEFUSD0iJFRFTVBfRElSL3Jlc3RvcmUiCgog"\ + "ICAgZWNobyAiX2F1dG9jb21tYW5kcGFyc2UgW3Jlc3RvcmVdIFskQkFDS1VQX1RFTVBfUEFUSF0i"\ + "ICIkQCIKCiAgICBta2RpciAtcCAiJEJBQ0tVUF9URU1QX1BBVEgiCiAgICB0YXIgenh2ZiAiJEJB"\ + "Q0tVUF9GSUxFIiAtQyAiJEJBQ0tVUF9URU1QX1BBVEgiIC0tc3RyaXAtY29tcG9uZW50cz0xCgog"\ + "ICAgX2F1dG9jb21tYW5kcGFyc2UgcmVzdG9yZSAiJEJBQ0tVUF9URU1QX1BBVEgiICIkQCIKfQo="; + + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 11153801105139786982ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; + } + { + // File: agent-install.sh + fs::path outpath = fs::path(destination_folder) / "agent-install.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKCiMgVGhpcyBzY3JpcHQgaXMgdXNlZCB0byBpbnN0YWxsIHRoZSBkcm9wc2hl"\ + "bGwgYWdlbnQgb24gYSByZW1vdGUgc2VydmVyLgoKU0NSSVBUX0RJUj0kKGRpcm5hbWUgIiQwIikK"\ + "CnNldCAtYQoKQUdFTlRfUEFUSD0iJFNDUklQVF9ESVIiCgpzZXQgK2EKCgppZiBbIC1mICIkU0NS"\ + "SVBUX0RJUi9jb21tb24uc2giIF07IHRoZW4KICAgIHNvdXJjZSAiJFNDUklQVF9ESVIvY29tbW9u"\ + "LnNoIgplbHNlCiAgICBlY2hvICJFcnJvcjogY29tbW9uLnNoIG5vdCBmb3VuZCBpbiAkU0NSSVBU"\ + "X0RJUiIKICAgIGV4aXQgMQpmaQoKX2NoZWNrX3JlcXVpcmVkX2Vudl92YXJzICJBR0VOVF9QQVRI"\ + "IgoKZnVuY3Rpb24gaW5zdGFsbF9iYjY0KCkgeyAgICAKICAgIEJCNjRfcGF0aD0iJHtBR0VOVF9Q"\ + "QVRIfS9iYjY0IgogICAgQVJDSD0kKHVuYW1lIC1tKQogICAgaWYgISBjdXJsIC1zICJodHRwczov"\ + "L2dldGJpbi54eXovYmI2NDpsYXRlc3QtJHtBUkNIfSIgPiAiJHtCQjY0X3BhdGh9IjsgdGhlbgog"\ + "ICAgICAgIF9kaWUgIkZhaWxlZCB0byBpbnN0YWxsIGJiNjQuIEN1cmwgcmV0dXJuZWQgbm9uLXpl"\ + "cm8gZXhpdCBjb2RlLiIKICAgIGZpCiAgICBjaG93biAiJChpZCAtdSAiJFVTRVIiKTokKGlkIC1n"\ + "ICIkVVNFUiIpIiAiJHtCQjY0X3BhdGh9IgogICAgY2htb2QgK3ggIiR7QkI2NF9wYXRofSIKCiAg"\ + "ICAjIHRlc3QgaWYgYmI2NCBpcyBpbnN0YWxsZWQKICAgIGlmIFZFUj0kKCIke0JCNjRfcGF0aH0i"\ + "IHZlcnNpb24pOyB0aGVuCiAgICAgICAgZWNobyAiYmI2NCB2JFZFUiBpbnN0YWxsZWQuIgogICAg"\ + "ZWxzZQogICAgICAgIF9kaWUgImJiNjQgZGlkIG5vdCBpbnN0YWxsIGNvcnJlY3RseS4iCiAgICBm"\ + "aQoKICAgIHJldHVybiAwOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBDaGVjayBwcmUtcmVxdWlz"\ + "aXRlcwoKIyBDaGVjayBpZiBjdXJsIGlzIGluc3RhbGxlZAppZiAhIGNvbW1hbmQgLXYgY3VybCAm"\ + "PiAvZGV2L251bGw7IHRoZW4KICAgIF9kaWUgIkN1cmwgaXMgbm90IGluc3RhbGxlZC4gQ3VybCBp"\ + "cyByZXF1aXJlZCBmb3IgYWdlbnQgaW5zdGFsbGF0aW9uLiIKZmkKCiMgY2hlY2sgZG9ja2VyIGlu"\ + "c3RhbGxhdGlvbgppZiAhIGNvbW1hbmQgLXYgZG9ja2VyICY+IC9kZXYvbnVsbDsgdGhlbgogICAg"\ + "ZWNobyAiRG9ja2VyIGlzIG5vdCBpbnN0YWxsZWQuIERvY2tlciBpcyByZXF1aXJlZCBmb3IgYWdl"\ + "bnQgaW5zdGFsbGF0aW9uLiIKICAgIGV4aXQgMQpmaQoKIyBjaGVjayByc3luYyBpbnN0YWxsYXRp"\ + "b24KaWYgISBjb21tYW5kIC12IHJzeW5jICY+IC9kZXYvbnVsbDsgdGhlbgogICAgZWNobyAiUnN5"\ + "bmMgaXMgbm90IGluc3RhbGxlZC4gUnN5bmMgaXMgcmVxdWlyZWQgZm9yIGFnZW50IGluc3RhbGxh"\ + "dGlvbi4iCiAgICBleGl0IDEKZmkKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZWNobyAiSW5zdGFsbGlu"\ + "ZyBkcm9wc2hlbGwgYWdlbnQuLi4iCgppbnN0YWxsX2JiNjQKCiMtLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoj"\ + "IGNvbmZpcm0gd2UncmUgaW4gYSBnb29kIHN0YXRlLgoKcmVxdWlyZWRfZmlsZXM9KAogICAgIiRB"\ + "R0VOVF9QQVRIL2JiNjQiCiAgICAiJEFHRU5UX1BBVEgvX2FsbHNlcnZpY2Vzc3RhdHVzLnNoIgog"\ + "ICAgIiRBR0VOVF9QQVRIL2NvbW1vbi5zaCIKICAgICIkQUdFTlRfUEFUSC9kYXRhY29tbWFuZHMu"\ + "c2giCikKCiMgY2hlY2sgaWYgYWxsIGZpbGVzIGV4aXN0CmZvciBmaWxlIGluICIke3JlcXVpcmVk"\ + "X2ZpbGVzW0BdfSI7IGRvCiAgICBpZiBbICEgLWYgIiRmaWxlIiBdOyB0aGVuCiAgICAgICAgX2Rp"\ + "ZSAiJGZpbGUgZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjaGVjayB0aGUgaW5zdGFsbGF0aW9uLiIK"\ + "ICAgIGZpCmRvbmUKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgplY2hvICJDb21wbGV0ZWQgZHJvcHNoZWxs"\ + "IGFnZW50IGluc3RhbGxhdGlvbi4iCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZXhpdCAwCg=="; + + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 15303959887899096456ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; + } + { + // File: _allservicesstatus.sh + fs::path outpath = fs::path(destination_folder) / "_allservicesstatus.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKCiMgVGhpcyBzY3JpcHQgY2hlY2tzIEFMTCBzZXJ2aWNlcyBvbiB0aGUgc2Vy"\ + "dmVyIGFuZCByZXR1cm5zIGEgc3RhdHVzIGZvciBlYWNoLgoKIyBSZXR1cm4gZm9ybWF0IGlzIHNp"\ + "bXBsZSBFTlYgd2l0aCB0aGUgZm9sbG93aW5nIGZvcm1hdDoKIyBTRVJWSUNFX05BTUVfSEVBTFRI"\ + "PWhlYWx0aHl8dW5oZWFsdGh5fHVua25vd24KIyBTRVJWSUNFX05BTUVfUE9SVFM9cG9ydDEscG9y"\ + "dDIscG9ydDMKCiMgR2V0IGFsbCBzZXJ2aWNlcyBvbiB0aGUgc2VydmVyClNDUklQVF9ESVI9IiQo"\ + "ZGlybmFtZSAiJDAiKSIKCiAgICAjIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tCiAgICAjIC8vIHJlbW90ZSBwYXRocwogICAgIyAvLyBEUk9QU0hFTExfRElSCiAgICAj"\ + "IC8vICAgfC0tIGJhY2t1cHMKICAgICMgLy8gICB8LS0gdGVtcF9maWxlcwogICAgIyAvLyAgIHwt"\ + "LSBhZ2VudAogICAgIyAvLyAgIHwgICB8LS0gYmI2NAogICAgIyAvLyAgIHwgICB8LS0gKG90aGVy"\ + "IGFnZW50IGZpbGVzLCBpbmNsdWRpbmcgX2FsbHNlcnZpY2Vzc3RhdHVzLnNoKQogICAgIyAvLyAg"\ + "IHwtLSBzZXJ2aWNlcwogICAgIyAvLyAgICAgICB8LS0gc2VydmljZSBuYW1lCiAgICAjIC8vICAg"\ + "ICAgICAgICB8LS0gY29uZmlnCiAgICAjIC8vICAgICAgICAgICAgICAgfC0tIHNlcnZpY2UuZW52"\ + "IChhY3R1YWwgc2VydmljZSBjb25maWcpCiAgICAjIC8vICAgICAgICAgICAgICAgfC0tIC50ZW1w"\ + "bGF0ZV9pbmZvLmVudgogICAgIyAvLyAgICAgICAgICAgfC0tIHRlbXBsYXRlCiAgICAjIC8vICAg"\ + "ICAgICAgICAgICAgfC0tIChzY3JpcHQgZmlsZXMpCiAgICAjIC8vICAgICAgICAgICAgICAgfC0t"\ + "IGNvbmZpZwogICAgIyAvLyAgICAgICAgICAgICAgICAgICB8LS0gc2VydmljZS5lbnYgKGRlZmF1"\ + "bHQgc2VydmljZSBjb25maWcpCiAgICAjIC8vICAgICAgICAgICAgICAgICAgIHwtLSAudGVtcGxh"\ + "dGVfaW5mby5lbnYKICAgICMgLy8gICAgICAgICAgICAgICAgICAgfC0tIChvdGhlciBjb25maWcg"\ + "ZmlsZXMgZm9yIHNwZWNpZmljIHNlcnZlciZzZXJ2aWNlKQoKIyBHZXQgYWxsIHNlcnZpY2VzIG9u"\ + "IHRoZSBzZXJ2ZXIKU0VSVklDRVNfUEFUSD0kKHJlYWxwYXRoICIke1NDUklQVF9ESVJ9Ly4uL3Nl"\ + "cnZpY2VzLyIpCgpDVVJSRU5UX09VVFBVVD0iIgpDVVJSRU5UX0VYSVRfQ09ERT0wCgpsb2FkX2Rv"\ + "dGVudigpewogICAgbG9jYWwgZmlsZV9wYXRoPSQxCiAgICBpZiBbIC1mICIke2ZpbGVfcGF0aH0i"\ + "IF07IHRoZW4KICAgICMgc2hlbGxjaGVjayBzb3VyY2U9L2Rldi9udWxsCiAgICAgICAgc291cmNl"\ + "ICIke2ZpbGVfcGF0aH0iCiAgICBmaQp9CgpfY2hlY2tfcmVxdWlyZWRfZW52X3ZhcnNfYWxsc2Vy"\ + "dmljZXNzdGF0dXMoKSB7CiAgICBsb2NhbCByZXF1aXJlZF92YXJzPSgiJEAiKQogICAgZm9yIHZh"\ + "ciBpbiAiJHtyZXF1aXJlZF92YXJzW0BdfSI7IGRvCiAgICAgICAgaWYgWyAteiAiJHshdmFyfSIg"\ + "XTsgdGhlbgogICAgICAgICAgICBfZGllICJSZXF1aXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZSAk"\ + "dmFyIGlzIG5vdCBzZXQiCiAgICAgICAgZmkKICAgIGRvbmUKfQoKZnVuY3Rpb24gcnVuX2NvbW1h"\ + "bmQoKSB7CiAgICBsb2NhbCBzZXJ2aWNlX3BhdGg9JDEKICAgIGxvY2FsIGNvbW1hbmQ9JDIKICAg"\ + "IGxvY2FsIGNhcHR1cmVfb3V0cHV0PSR7MzotZmFsc2V9ICAjIGRlZmF1bHQgdG8gZmFsc2UgaWYg"\ + "bm90IHNwZWNpZmllZAoKICAgICMgY2hlY2sgaWYgdGhlIGNvbW1hbmQgaXMgYSBmaWxlCiAgICBp"\ + "ZiBbICEgLWYgIiR7c2VydmljZV9wYXRofS90ZW1wbGF0ZS8ke2NvbW1hbmR9LnNoIiBdOyB0aGVu"\ + "CiAgICAgICAgcmV0dXJuOwogICAgZmkKCiAgICAjIHJ1biB0aGUgY29tbWFuZCBpbiBhIHN1YnNo"\ + "ZWxsIHRvIHByZXZlbnQgZW52aXJvbm1lbnQgY2hhbmdlcwogICAgQ1VSUkVOVF9PVVRQVVQ9JCgK"\ + "ICAgICAgICBzZXQgLWEKCiAgICAgICAgbG9hZF9kb3RlbnYgIiR7c2VydmljZV9wYXRofS9jb25m"\ + "aWcvc2VydmljZS5lbnYiCiAgICAgICAgbG9hZF9kb3RlbnYgIiR7c2VydmljZV9wYXRofS9jb25m"\ + "aWcvLnRlbXBsYXRlX2luZm8uZW52IgoKICAgICAgICAjIHVwZGF0ZSB0aGUgbWFpbiB2YXJpYWJs"\ + "ZXMuCiAgICAgICAgZXhwb3J0IENPTkZJR19QQVRIPSIke3NlcnZpY2VfcGF0aH0vY29uZmlnIgog"\ + "ICAgICAgIGV4cG9ydCBTRVJWSUNFPSIke1NFUlZJQ0VfTkFNRX0iCiAgICAgICAgZXhwb3J0IERP"\ + "Q0tFUl9DTElfSElOVFM9ZmFsc2UKCiAgICAgICAgc2V0ICthCgogICAgICAgIF9jaGVja19yZXF1"\ + "aXJlZF9lbnZfdmFyc19hbGxzZXJ2aWNlc3N0YXR1cyAiQ09ORklHX1BBVEgiICJTRVJWRVIiICJT"\ + "RVJWSUNFIiAiQUdFTlRfUEFUSCIgIkhPU1RfTkFNRSIgIlRFTVBMQVRFIgoKICAgICAgICBpZiBb"\ + "ICIkY2FwdHVyZV9vdXRwdXQiID0gInRydWUiIF07IHRoZW4KICAgICAgICAgICAgIyBDYXB0dXJl"\ + "IGFuZCByZXR1cm4gb3V0cHV0CiAgICAgICAgICAgIGJhc2ggIiR7c2VydmljZV9wYXRofS90ZW1w"\ + "bGF0ZS8ke2NvbW1hbmR9LnNoIiAyPiYxCiAgICAgICAgZWxzZQogICAgICAgICAgICAjIFJ1biBz"\ + "aWxlbnRseSBhbmQgcmV0dXJuIGV4aXQgY29kZQogICAgICAgICAgICBiYXNoICIke3NlcnZpY2Vf"\ + "cGF0aH0vdGVtcGxhdGUvJHtjb21tYW5kfS5zaCIgPiAvZGV2L251bGwgMj4mMQogICAgICAgIGZp"\ + "CiAgICApCiAgICBDVVJSRU5UX0VYSVRfQ09ERT0kPwp9CgpmdW5jdGlvbiBjb21tYW5kX2V4aXN0"\ + "cygpIHsKICAgIGxvY2FsIHNlcnZpY2VfcGF0aD0kMQogICAgbG9jYWwgY29tbWFuZD0kMgogICAg"\ + "aWYgWyAhIC1mICIke3NlcnZpY2VfcGF0aH0vdGVtcGxhdGUvJHtjb21tYW5kfS5zaCIgXTsgdGhl"\ + "bgogICAgICAgIHJldHVybiAxCiAgICBmaQogICAgcmV0dXJuIDAKfQoKCmlmIFsgISAtZCAiJHtT"\ + "RVJWSUNFU19QQVRIfSIgXTsgdGhlbgogICAgZWNobyAiU2VydmljZXMgcGF0aCBkb2VzIG5vdCBl"\ + "eGlzdDogJHtTRVJWSUNFU19QQVRIfSIKICAgIGV4aXQgMApmaQoKIyBHZXQgYWxsIHNlcnZpY2Ug"\ + "bmFtZXMKU0VSVklDRV9OQU1FUz0kKGxzICIke1NFUlZJQ0VTX1BBVEh9IikKCiMgSXRlcmF0ZSBv"\ + "dmVyIGFsbCBzZXJ2aWNlIG5hbWVzCmZvciBTRVJWSUNFX05BTUUgaW4gJHtTRVJWSUNFX05BTUVT"\ + "fTsgZG8KCiAgICBTRVJWSUNFX1BBVEg9JChyZWFscGF0aCAiJHtTRVJWSUNFU19QQVRIfS8ke1NF"\ + "UlZJQ0VfTkFNRX0iKQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg"\ + "IyBHZXQgdGhlIHNlcnZpY2UgaGVhbHRoCiAgICBpZiAhIGNvbW1hbmRfZXhpc3RzICIke1NFUlZJ"\ + "Q0VfUEFUSH0iICJzdGF0dXMiOyB0aGVuCiAgICAgICAgU0VSVklDRV9IRUFMVEg9InVua25vd24i"\ + "CiAgICBlbHNlCiAgICAgICAgcnVuX2NvbW1hbmQgIiR7U0VSVklDRV9QQVRIfSIgInN0YXR1cyIg"\ + "ImZhbHNlIgogICAgICAgIGlmIFsgIiR7Q1VSUkVOVF9FWElUX0NPREV9IiAtZXEgMCBdOyB0aGVu"\ + "CiAgICAgICAgICAgIFNFUlZJQ0VfSEVBTFRIPSJoZWFsdGh5IgogICAgICAgIGVsc2UKICAgICAg"\ + "ICAgICAgU0VSVklDRV9IRUFMVEg9InVuaGVhbHRoeSIKICAgICAgICBmaQogICAgZmkKCiAgICAj"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgR2V0IHRoZSBzZXJ2aWNlIHBv"\ + "cnRzCiAgICBpZiAhIGNvbW1hbmRfZXhpc3RzICIke1NFUlZJQ0VfUEFUSH0iICJwb3J0cyI7IHRo"\ + "ZW4KICAgICAgICBTRVJWSUNFX1BPUlRTPSIiCiAgICBlbHNlCiAgICAgICAgcnVuX2NvbW1hbmQg"\ + "IiR7U0VSVklDRV9QQVRIfSIgInBvcnRzIiAidHJ1ZSIKICAgICAgICBTRVJWSUNFX1BPUlRTPSIk"\ + "e0NVUlJFTlRfT1VUUFVUfSIKICAgIGZpCgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tCiAgICAjIHJldHVybiB0aGUgaGVhbHRoIGFuZCBwb3J0cwogICAgZWNobyAiJHtTRVJW"\ + "SUNFX05BTUV9X0hFQUxUSD0ke1NFUlZJQ0VfSEVBTFRIfSIKICAgIGVjaG8gIiR7U0VSVklDRV9O"\ + "QU1FfV9QT1JUUz0ke1NFUlZJQ0VfUE9SVFN9Igpkb25lCg=="; + + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 5357556424345185129ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; + } + { + // File: common.sh + fs::path outpath = fs::path(destination_folder) / "common.sh"; + static const char filedata_base64[] = "IyBDT01NT04gRlVOQ1RJT05TCiMgSkRFCiMgMjAyNS0wNS0wMwoKIyBUaGlzIGZpbGUgaXMgYXZh"\ + "aWxhYmxlIFRPICoqKkFMTCoqKiB0ZW1wbGF0ZXMsIGFzICR7QUdFTlRfUEFUSH0vX2NvbW1vbi5z"\ + "aAoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoj"\ + "IHN1bW1hcnkgb2YgZnVuY3Rpb25zOgojICAgX2RpZSAibWVzc2FnZSIgICAgICAgICAgICAgICAg"\ + "ICAgICAgICAgOiBQcmludHMgYW4gZXJyb3IgbWVzc2FnZSBpbiByZWQgYW5kIGV4aXRzIHdpdGgg"\ + "c3RhdHVzIGNvZGUgMS4KIyAgIF9ncmV5X3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg"\ + "IDogU3dpdGNoZXMgdGVybWluYWwgb3V0cHV0IGNvbG9yIHRvIGdyZXkuCiMgICBfZ3JleV9lbmQg"\ + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFJlc2V0cyB0ZXJtaW5hbCBvdXRwdXQgY29s"\ + "b3IgZnJvbSBncmV5LgojICAgX2NyZWF0ZV9hbmRfc3RhcnRfY29udGFpbmVyICI8cnVuX2NtZD4i"\ + "IDxjb250YWluZXJfbmFtZT4gOiBDcmVhdGVzL3N0YXJ0cyBhIGNvbnRhaW5lciwgdmVyaWZ5aW5n"\ + "IGl0IHJ1bnMuCiMgICBfY3JlYXRlX2ZvbGRlciA8Zm9sZGVyX3BhdGg+ICAgICAgICAgICA6IENy"\ + "ZWF0ZXMgYSBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdCAoY2htb2QgNzc3KS4KIyAgIF9j"\ + "aGVja19kb2NrZXJfaW5zdGFsbGVkICAgICAgICAgICAgICAgOiBDaGVja3MgaWYgRG9ja2VyIGlz"\ + "IGluc3RhbGxlZCwgcnVubmluZywgYW5kIHVzZXIgaGFzIHBlcm1pc3Npb24uIFJldHVybnMgMSBv"\ + "biBmYWlsdXJlLgojICAgX2lzX2NvbnRhaW5lcl9leGlzdHMgPGNvbnRhaW5lcl9uYW1lPiA6IENo"\ + "ZWNrcyBpZiBhIGNvbnRhaW5lciAoYW55IHN0YXRlKSBleGlzdHMuIFJldHVybnMgMSBpZiBub3Qg"\ + "Zm91bmQuCiMgICBfaXNfY29udGFpbmVyX3J1bm5pbmcgPGNvbnRhaW5lcl9uYW1lPjogQ2hlY2tz"\ + "IGlmIGEgY29udGFpbmVyIGlzIGN1cnJlbnRseSBydW5uaW5nLiBSZXR1cm5zIDEgaWYgbm90IHJ1"\ + "bm5pbmcuCiMgICBfZ2V0X2NvbnRhaW5lcl9pZCA8Y29udGFpbmVyX25hbWU+ICAgIDogUHJpbnRz"\ + "IHRoZSBJRCBvZiB0aGUgbmFtZWQgY29udGFpbmVyLgojICAgX2dldF9jb250YWluZXJfc3RhdHVz"\ + "IDxjb250YWluZXJfbmFtZT46IFByaW50cyB0aGUgc3RhdHVzIHN0cmluZyBvZiB0aGUgbmFtZWQg"\ + "Y29udGFpbmVyLgojICAgX3N0YXJ0X2NvbnRhaW5lciA8Y29udGFpbmVyX25hbWU+ICAgICA6IFN0"\ + "YXJ0cyBhbiBleGlzdGluZywgc3RvcHBlZCBjb250YWluZXIuCiMgICBfc3RvcF9jb250YWluZXIg"\ + "PGNvbnRhaW5lcl9uYW1lPiAgICAgIDogU3RvcHMgYSBydW5uaW5nIGNvbnRhaW5lci4KIyAgIF9y"\ + "ZW1vdmVfY29udGFpbmVyIDxjb250YWluZXJfbmFtZT4gICAgOiBTdG9wcyAoaWYgbmVlZGVkKSBh"\ + "bmQgcmVtb3ZlcyBhIGNvbnRhaW5lci4KIyAgIF9nZXRfY29udGFpbmVyX2xvZ3MgPGNvbnRhaW5l"\ + "cl9uYW1lPiAgOiBQcmludHMgdGhlIGxvZ3MgZm9yIGEgY29udGFpbmVyLgojICAgX2NoZWNrX3Jl"\ + "cXVpcmVkX2Vudl92YXJzICJWQVIxIiAuLi4gICAgOiBDaGVja3MgaWYgbGlzdGVkIGVudmlyb25t"\ + "ZW50IHZhcmlhYmxlcyBhcmUgc2V0OyBjYWxscyBfZGllKCkgaWYgYW55IGFyZSBtaXNzaW5nLgoj"\ + "ICAgX3Jvb3RfcmVtb3ZlX3RyZWUgPHBhdGg+ICAgICAgICAgICAgICA6IFJlbW92ZXMgYSBwYXRo"\ + "IHVzaW5nIGEgcm9vdCBEb2NrZXIgY29udGFpbmVyIChmb3IgcGVybWlzc2lvbnMpLgoKIyAtLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIFByaW50cyBh"\ + "biBlcnJvciBtZXNzYWdlIGluIHJlZCBhbmQgZXhpdHMgd2l0aCBzdGF0dXMgY29kZSAxLgpfZGll"\ + "KCkgewogICAgZWNobyAtZSAiRXJyb3I6ICQxIgogICAgZXhpdCAxCn0KCiMgQ3JlYXRlcy9zdGFy"\ + "dHMgYSBjb250YWluZXIsIHZlcmlmeWluZyBpdCBydW5zLgpfY3JlYXRlX2FuZF9zdGFydF9jb250"\ + "YWluZXIoKSB7CiAgICBpZiBbIC16ICIkMSIgXSB8fCBbIC16ICIkMiIgXTsgdGhlbgogICAgICAg"\ + "IF9kaWUgIlRlbXBsYXRlIGVycm9yOiBjcmVhdGVfYW5kX3N0YXJ0X2NvbnRhaW5lciA8cnVuX2Nt"\ + "ZD4gPGNvbnRhaW5lcl9uYW1lPiIKICAgIGZpCgogICAgbG9jYWwgcnVuX2NtZD0iJDEiCiAgICBs"\ + "b2NhbCBjb250YWluZXJfbmFtZT0iJDIiCgogICAgaWYgX2lzX2NvbnRhaW5lcl9leGlzdHMgIiRj"\ + "b250YWluZXJfbmFtZSI7IHRoZW4KICAgICAgICBfaXNfY29udGFpbmVyX3J1bm5pbmcgIiRjb250"\ + "YWluZXJfbmFtZSIgJiYgcmV0dXJuIDAKICAgICAgICBfc3RhcnRfY29udGFpbmVyICIkY29udGFp"\ + "bmVyX25hbWUiCiAgICBlbHNlCiAgICAgICAgJHJ1bl9jbWQKICAgIGZpCgogICAgaWYgISBfaXNf"\ + "Y29udGFpbmVyX3J1bm5pbmcgIiRjb250YWluZXJfbmFtZSI7IHRoZW4KICAgICAgICBfZGllICJD"\ + "b250YWluZXIgJHtjb250YWluZXJfbmFtZX0gZmFpbGVkIHRvIHN0YXJ0IgogICAgZmkKCiAgICBJ"\ + "RD0kKF9nZXRfY29udGFpbmVyX2lkICIkY29udGFpbmVyX25hbWUiKQogICAgZWNobyAiQ29udGFp"\ + "bmVyICR7Y29udGFpbmVyX25hbWV9IGlzIHJ1bm5pbmcgd2l0aCBJRCAke0lEfSIKfQoKIyBDcmVh"\ + "dGVzIGEgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QgKGNobW9kIDc3NykuCl9jcmVhdGVf"\ + "Zm9sZGVyKCkgewogICAgbG9jYWwgZm9sZGVyPSIkMSIKICAgIGlmIFsgLWQgIiRmb2xkZXIiIF07"\ + "IHRoZW4KICAgICAgICByZXR1cm4gMAogICAgZmkKICAgIGlmICEgbWtkaXIgLXAgIiRmb2xkZXIi"\ + "OyB0aGVuCiAgICAgICAgX2RpZSAiRmFpbGVkIHRvIGNyZWF0ZSBmb2xkZXI6ICRmb2xkZXIiCiAg"\ + "ICBmaQogICAgY2htb2QgNzc3ICIkZm9sZGVyIgogICAgZWNobyAiRm9sZGVyIGNyZWF0ZWQ6ICRm"\ + "b2xkZXIiCn0KCiMgQ2hlY2tzIGlmIERvY2tlciBpcyBpbnN0YWxsZWQsIHJ1bm5pbmcsIGFuZCB1"\ + "c2VyIGhhcyBwZXJtaXNzaW9uLiBSZXR1cm5zIDEgb24gZmFpbHVyZS4KX2NoZWNrX2RvY2tlcl9p"\ + "bnN0YWxsZWQoKSB7CiAgICBpZiAhIGNvbW1hbmQgLXYgZG9ja2VyICY+IC9kZXYvbnVsbDsgdGhl"\ + "bgogICAgICAgIGVjaG8gIkRvY2tlciBpcyBub3QgaW5zdGFsbGVkIgogICAgICAgIHJldHVybiAx"\ + "CiAgICBmaQoKICAgICMgY2hlY2sgaWYgZG9ja2VyIGRhZW1vbiBpcyBydW5uaW5nCiAgICBpZiAh"\ + "IGRvY2tlciBpbmZvICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIGVjaG8gIkRvY2tlciBkYWVt"\ + "b24gaXMgbm90IHJ1bm5pbmciCiAgICAgICAgcmV0dXJuIDEKICAgIGZpCgogICAgIyBjaGVjayBp"\ + "ZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIHJ1biBkb2NrZXIKICAgIGlmICEgZG9ja2VyIHJ1biAt"\ + "LXJtIGhlbGxvLXdvcmxkICY+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIGVjaG8gIlVzZXIgZG9l"\ + "cyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHJ1biBkb2NrZXIiCiAgICAgICAgcmV0dXJuIDEKICAg"\ + "IGZpCgogICAgcmV0dXJuIDAKfQoKIyBDaGVja3MgaWYgYSBjb250YWluZXIgKGFueSBzdGF0ZSkg"\ + "ZXhpc3RzLiBSZXR1cm5zIDEgaWYgbm90IGZvdW5kLgpfaXNfY29udGFpbmVyX2V4aXN0cygpIHsK"\ + "ICAgIFsgLW4gIiR7MTotfSIgXSB8fCB7IGVjaG8gIl9pc19jb250YWluZXJfZXhpc3RzOiBDb250"\ + "YWluZXIgbmFtZSBpcyBlbXB0eSIgPiYyOyByZXR1cm4gMTsgfQogICAgaWYgISBkb2NrZXIgcHMg"\ + "LWEgLS1mb3JtYXQgInt7Lk5hbWVzfX0iIHwgZ3JlcCAtcSAiXiQxJCI7IHRoZW4KICAgICAgICBy"\ + "ZXR1cm4gMQogICAgZmkKICAgIHJldHVybiAwCn0KCiMgQ2hlY2tzIGlmIGEgY29udGFpbmVyIGlz"\ + "IGN1cnJlbnRseSBydW5uaW5nLiBSZXR1cm5zIDEgaWYgbm90IHJ1bm5pbmcuCl9pc19jb250YWlu"\ + "ZXJfcnVubmluZygpIHsKICAgIFsgLW4gIiR7MTotfSIgXSB8fCB7IGVjaG8gIl9pc19jb250YWlu"\ + "ZXJfcnVubmluZzogQ29udGFpbmVyIG5hbWUgaXMgZW1wdHkiID4mMjsgcmV0dXJuIDE7IH0KICAg"\ + "IGlmICEgZG9ja2VyIHBzIC0tZm9ybWF0ICJ7ey5OYW1lc319IiB8IGdyZXAgLXEgIl4kMSQiOyB0"\ + "aGVuCiAgICAgICAgcmV0dXJuIDEKICAgIGZpCiAgICByZXR1cm4gMAp9CgojIFByaW50cyB0aGUg"\ + "SUQgb2YgdGhlIG5hbWVkIGNvbnRhaW5lci4KX2dldF9jb250YWluZXJfaWQoKSB7CiAgICBkb2Nr"\ + "ZXIgcHMgLS1mb3JtYXQgInt7LklEfX0iIC0tZmlsdGVyICJuYW1lPSQxIgp9CgojIFByaW50cyB0"\ + "aGUgc3RhdHVzIHN0cmluZyBvZiB0aGUgbmFtZWQgY29udGFpbmVyLgpfZ2V0X2NvbnRhaW5lcl9z"\ + "dGF0dXMoKSB7CiAgICBkb2NrZXIgcHMgLS1mb3JtYXQgInt7LlN0YXR1c319IiAtLWZpbHRlciAi"\ + "bmFtZT0kMSIKfQoKIyBTdGFydHMgYW4gZXhpc3RpbmcsIHN0b3BwZWQgY29udGFpbmVyLgpfc3Rh"\ + "cnRfY29udGFpbmVyKCkgewogICAgX2lzX2NvbnRhaW5lcl9leGlzdHMgIiQxIiB8fCByZXR1cm4g"\ + "MQogICAgX2lzX2NvbnRhaW5lcl9ydW5uaW5nICIkMSIgJiYgcmV0dXJuIDAKICAgIGRvY2tlciBz"\ + "dGFydCAiJDEiCn0KCiMgU3RvcHMgYSBydW5uaW5nIGNvbnRhaW5lci4KX3N0b3BfY29udGFpbmVy"\ + "KCkgewogICAgX2lzX2NvbnRhaW5lcl9ydW5uaW5nICIkMSIgfHwgcmV0dXJuIDA7CiAgICBkb2Nr"\ + "ZXIgc3RvcCAiJDEiCn0gICAKCiMgU3RvcHMgKGlmIG5lZWRlZCkgYW5kIHJlbW92ZXMgYSBjb250"\ + "YWluZXIuCl9yZW1vdmVfY29udGFpbmVyKCkgewogICAgX3N0b3BfY29udGFpbmVyICIkMSIKICAg"\ + "IF9pc19jb250YWluZXJfZXhpc3RzICIkMSIgfHwgcmV0dXJuIDA7CiAgICBkb2NrZXIgcm0gIiQx"\ + "Igp9CgojIFByaW50cyB0aGUgbG9ncyBmb3IgYSBjb250YWluZXIuCl9nZXRfY29udGFpbmVyX2xv"\ + "Z3MoKSB7CiAgICBpZiAhIF9pc19jb250YWluZXJfZXhpc3RzICIkMSI7IHRoZW4KICAgICAgICBl"\ + "Y2hvICJDb250YWluZXIgJDEgZG9lcyBub3QgZXhpc3QiCiAgICAgICAgcmV0dXJuIDEKICAgIGZp"\ + "CgogICAgZG9ja2VyIGxvZ3MgIiQxIgp9CgojIENoZWNrcyBpZiBsaXN0ZWQgZW52aXJvbm1lbnQg"\ + "dmFyaWFibGVzIGFyZSBzZXQ7IGNhbGxzIF9kaWUoKSBpZiBhbnkgYXJlIG1pc3NpbmcuCl9jaGVj"\ + "a19yZXF1aXJlZF9lbnZfdmFycygpIHsKICAgIGxvY2FsIHJlcXVpcmVkX3ZhcnM9KCIkQCIpCiAg"\ + "ICBmb3IgdmFyIGluICIke3JlcXVpcmVkX3ZhcnNbQF19IjsgZG8KICAgICAgICBpZiBbIC16ICIk"\ + "eyF2YXI6LX0iIF07IHRoZW4KICAgICAgICAgICAgX2RpZSAiUmVxdWlyZWQgZW52aXJvbm1lbnQg"\ + "dmFyaWFibGUgJHZhciBpcyBub3Qgc2V0IgogICAgICAgIGZpCiAgICBkb25lCn0KCiMgUmVtb3Zl"\ + "cyBhIHBhdGggdXNpbmcgYSByb290IERvY2tlciBjb250YWluZXIgKGZvciBwZXJtaXNzaW9ucyku"\ + "Cl9yb290X3JlbW92ZV90cmVlKCkgewogICAgbG9jYWwgdG9fcmVtb3ZlPSIkMSIKICAgIHBhcmVu"\ + "dD0kKGRpcm5hbWUgIiR0b19yZW1vdmUiKQogICAgYWJzX3BhcmVudD0kKHJlYWxwYXRoICIkcGFy"\ + "ZW50IikKICAgIGNoaWxkPSQoYmFzZW5hbWUgIiR0b19yZW1vdmUiKQogICAgZG9ja2VyIHJ1biAt"\ + "LXJtIC12ICIkYWJzX3BhcmVudCI6L2RhdGEgYWxwaW5lIHJtIC1yZiAiL2RhdGEvJGNoaWxkIgp9"\ + "CgoKIyBMb2FkIGF1dG9jb21tYW5kcwpzb3VyY2UgIiR7QUdFTlRfUEFUSH0vZGF0YWNvbW1hbmRz"\ + "LnNoIg=="; + + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 10529534466039467911ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; + } + return any_written; +} +} diff --git a/source/src/autogen/_agent-remote.hpp b/source/src/autogen/_agent-remote.hpp new file mode 100644 index 0000000..2c0d46f --- /dev/null +++ b/source/src/autogen/_agent-remote.hpp @@ -0,0 +1,15 @@ + +#pragma once + +/* + + THIS FILE IS AUTO-GENERATED BY DEHYDRATE. + DO NOT EDIT THIS FILE. + +*/ + + +#include +namespace recreate_agent_remote { + bool recreate_tree(std::string destination_folder); +}