1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
// Copyright 2014 Renato Tegon Forti, Antony Polukhin. // Copyright Antony Polukhin, 2015-2025. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_DLL_DETAIL_POSIX_ELF_INFO_HPP #define BOOST_DLL_DETAIL_POSIX_ELF_INFO_HPP #include #ifdef BOOST_HAS_PRAGMA_ONCE # pragma once #endif #include #include #include #include #include namespace boost { namespace dll { namespace detail { template struct Elf_Ehdr_template { unsigned char e_ident[16]; /* Magic number and other info */ std::uint16_t e_type; /* Object file type */ std::uint16_t e_machine; /* Architecture */ std::uint32_t e_version; /* Object file version */ AddressOffsetT e_entry; /* Entry point virtual address */ AddressOffsetT e_phoff; /* Program header table file offset */ AddressOffsetT e_shoff; /* Section header table file offset */ std::uint32_t e_flags; /* Processor-specific flags */ std::uint16_t e_ehsize; /* ELF header size in bytes */ std::uint16_t e_phentsize; /* Program header table entry size */ std::uint16_t e_phnum; /* Program header table entry count */ std::uint16_t e_shentsize; /* Section header table entry size */ std::uint16_t e_shnum; /* Section header table entry count */ std::uint16_t e_shstrndx; /* Section header string table index */ }; using Elf32_Ehdr_ = Elf_Ehdr_template; using Elf64_Ehdr_ = Elf_Ehdr_template; template struct Elf_Shdr_template { std::uint32_t sh_name; /* Section name (string tbl index) */ std::uint32_t sh_type; /* Section type */ AddressOffsetT sh_flags; /* Section flags */ AddressOffsetT sh_addr; /* Section virtual addr at execution */ AddressOffsetT sh_offset; /* Section file offset */ AddressOffsetT sh_size; /* Section size in bytes */ std::uint32_t sh_link; /* Link to another section */ std::uint32_t sh_info; /* Additional section information */ AddressOffsetT sh_addralign; /* Section alignment */ AddressOffsetT sh_entsize; /* Entry size if section holds table */ }; using Elf32_Shdr_ = Elf_Shdr_template; using Elf64_Shdr_ = Elf_Shdr_template; template struct Elf_Sym_template; template <> struct Elf_Sym_template { using AddressOffsetT = std::uint32_t; std::uint32_t st_name; /* Symbol name (string tbl index) */ AddressOffsetT st_value; /* Symbol value */ AddressOffsetT st_size; /* Symbol size */ unsigned char st_info; /* Symbol type and binding */ unsigned char st_other; /* Symbol visibility */ std::uint16_t st_shndx; /* Section index */ }; template <> struct Elf_Sym_template { using AddressOffsetT = std::uint64_t; std::uint32_t st_name; /* Symbol name (string tbl index) */ unsigned char st_info; /* Symbol type and binding */ unsigned char st_other; /* Symbol visibility */ std::uint16_t st_shndx; /* Section index */ AddressOffsetT st_value; /* Symbol value */ AddressOffsetT st_size; /* Symbol size */ }; using Elf32_Sym_ = Elf_Sym_template; using Elf64_Sym_ = Elf_Sym_template; template class elf_info { using header_t = boost::dll::detail::Elf_Ehdr_template; using section_t= boost::dll::detail::Elf_Shdr_template; using symbol_t = boost::dll::detail::Elf_Sym_template; static constexpr std::uint32_t SHT_SYMTAB_ = 2; static constexpr std::uint32_t SHT_STRTAB_ = 3; static constexpr std::uint32_t SHT_DYNSYM_ = 11; static constexpr unsigned char STB_LOCAL_ = 0; /* Local symbol */ static constexpr unsigned char STB_GLOBAL_ = 1; /* Global symbol */ static constexpr unsigned char STB_WEAK_ = 2; /* Weak symbol */ /* Symbol visibility specification encoded in the st_other field. */ static constexpr unsigned char STV_DEFAULT_ = 0; /* Default symbol visibility rules */ static constexpr unsigned char STV_INTERNAL_ = 1; /* Processor specific hidden class */ static constexpr unsigned char STV_HIDDEN_ = 2; /* Sym unavailable in other modules */ static constexpr unsigned char STV_PROTECTED_ = 3; /* Not preemptible, not exported */ public: static bool parsing_supported(std::ifstream& fs) { const unsigned char magic_bytes[5] = { 0x7f, 'E', 'L', 'F', sizeof(std::uint32_t) == sizeof(AddressOffsetT) ? 1 : 2 }; unsigned char ch; fs.seekg(0); for (std::size_t i = 0; i < sizeof(magic_bytes); ++i) { fs >> ch; if (ch != magic_bytes[i]) { return false; } } return true; } static std::vector sections(std::ifstream& fs) { std::vector ret; std::vector names; sections_names_raw(fs, names); const char* name_begin = &names[0]; const char* const name_end = name_begin + names.size(); ret.reserve(header(fs).e_shnum); do { if (*name_begin) { ret.push_back(name_begin); name_begin += ret.back().size() + 1; } else { ++name_begin; } } while (name_begin != name_end); return ret; } private: template static void checked_seekg(std::ifstream& fs, Integer pos) { if (pos < 0) { boost::throw_exception(std::runtime_error("Integral underflow while getting info from ELF file")); } if (static_cast(pos) < 0) { boost::throw_exception(std::runtime_error("Integral overflow while getting info from ELF file")); } // `seekg` will throw exceptions on an attempt to get outsize of the // file size. fs.seekg(static_cast(pos)); } template static void read_raw(std::ifstream& fs, T& value, std::size_t size = sizeof(T)) { fs.read(reinterpret_cast(&value), size); } static header_t header(std::ifstream& fs) { header_t elf; fs.seekg(0); read_raw(fs, elf); return elf; } static void sections_names_raw(std::ifstream& fs, std::vector& sections) { const header_t elf = header(fs); section_t section_names_section; checked_seekg(fs, elf.e_shoff + elf.e_shstrndx * sizeof(section_t)); read_raw(fs, section_names_section); sections.resize(static_cast(section_names_section.sh_size) + 1, '\0'); checked_seekg(fs, section_names_section.sh_offset); read_raw(fs, sections[0], static_cast(section_names_section.sh_size)); } static void symbols_text(std::ifstream& fs, std::vector& symbols, std::vector& text) { std::vector names; sections_names_raw(fs, names); symbols_text(fs, symbols, text, names); } static void symbols_text(std::ifstream& fs, std::vector& symbols, std::vector& text, const std::vector& names) { const header_t elf = header(fs); checked_seekg(fs, elf.e_shoff); // ".dynsym" section may not have info on symbols that could be used while self loading an executable, // so we prefer ".symtab" section. AddressOffsetT symtab_size = 0; AddressOffsetT symtab_offset = 0; AddressOffsetT strtab_size = 0; AddressOffsetT strtab_offset = 0; AddressOffsetT dynsym_size = 0; AddressOffsetT dynsym_offset = 0; AddressOffsetT dynstr_size = 0; AddressOffsetT dynstr_offset = 0; for (std::size_t i = 0; i < elf.e_shnum; ++i) { section_t section; read_raw(fs, section); if (section.sh_name >= names.size()) { continue; } const char* name = &names[section.sh_name]; if (section.sh_type == SHT_SYMTAB_ && !std::strcmp(name, ".symtab")) { symtab_size = section.sh_size; symtab_offset = section.sh_offset; } else if (section.sh_type == SHT_STRTAB_) { if (!std::strcmp(name, ".dynstr")) { dynstr_size = section.sh_size; dynstr_offset = section.sh_offset; } else if (!std::strcmp(name, ".strtab")) { strtab_size = section.sh_size; strtab_offset = section.sh_offset; } } else if (section.sh_type == SHT_DYNSYM_ && !std::strcmp(name, ".dynsym")) { dynsym_size = section.sh_size; dynsym_offset = section.sh_offset; } } if (!symtab_size || !strtab_size) { // ".symtab" stripped from the binary and we have to fallback to ".dynsym" symtab_size = dynsym_size; symtab_offset = dynsym_offset; strtab_size = dynstr_size; strtab_offset = dynstr_offset; } if (!symtab_size || !strtab_size) { return; } text.resize(static_cast(strtab_size) + 1, '\0'); checked_seekg(fs, strtab_offset); read_raw(fs, text[0], static_cast(strtab_size)); symbols.resize(static_cast(symtab_size / sizeof(symbol_t))); checked_seekg(fs, symtab_offset); read_raw(fs, symbols[0], static_cast(symtab_size - (symtab_size % sizeof(symbol_t))) ); } static bool is_visible(const symbol_t& sym) noexcept { const unsigned char visibility = (sym.st_other & 0x03); // `(sym.st_info >> 4) != STB_LOCAL_ && !!sym.st_size` check also workarounds the // GCC's issue https://sourceware.org/bugzilla/show_bug.cgi?id=13621 return (visibility == STV_DEFAULT_ || visibility == STV_PROTECTED_) && (sym.st_info >> 4) != STB_LOCAL_ && !!sym.st_size; } public: static std::vector symbols(std::ifstream& fs) { std::vector ret; std::vector symbols; std::vector text; symbols_text(fs, symbols, text); ret.reserve(symbols.size()); for (std::size_t i = 0; i < symbols.size(); ++i) { if (is_visible(symbols[i]) && symbols[i].st_name < text.size()) { ret.push_back(&text[symbols[i].st_name]); if (ret.back().empty()) { ret.pop_back(); // Do not show empty names } } } return ret; } static std::vector symbols(std::ifstream& fs, const char* section_name) { std::vector ret; std::size_t index = 0; std::size_t ptrs_in_section_count = 0; std::vector names; sections_names_raw(fs, names); const header_t elf = header(fs); for (; index < elf.e_shnum; ++index) { section_t section; checked_seekg(fs, elf.e_shoff + index * sizeof(section_t)); read_raw(fs, section); if (!std::strcmp(&names.at(section.sh_name), section_name)) { if (!section.sh_entsize) { section.sh_entsize = 1; } ptrs_in_section_count = static_cast(section.sh_size / section.sh_entsize); break; } } std::vector symbols; std::vector text; symbols_text(fs, symbols, text, names); if (ptrs_in_section_count < symbols.size()) { ret.reserve(ptrs_in_section_count); } else { ret.reserve(symbols.size()); } for (std::size_t i = 0; i < symbols.size(); ++i) { if (symbols[i].st_shndx == index && is_visible(symbols[i]) && symbols[i].st_name < text.size()) { ret.push_back(&text[symbols[i].st_name]); if (ret.back().empty()) { ret.pop_back(); // Do not show empty names } } } return ret; } }; using elf_info32 = elf_info ; using elf_info64 = elf_info; }}} // namespace boost::dll::detail #endif // BOOST_DLL_DETAIL_POSIX_ELF_INFO_HPP