zc 8 miesięcy temu
commit
190ee7fc79
100 zmienionych plików z 3159 dodań i 0 usunięć
  1. 32 0
      .devcontainer.json
  2. 68 0
      CMakeLists.txt
  3. 21 0
      LEGAL
  4. 688 0
      LICENSE
  5. 86 0
      README.md
  6. 2081 0
      Telegram/CMakeLists.txt
  7. BIN
      Telegram/Resources/animations/blocked_peers_empty.tgs
  8. BIN
      Telegram/Resources/animations/change_number.tgs
  9. BIN
      Telegram/Resources/animations/chat_link.tgs
  10. BIN
      Telegram/Resources/animations/cloud_filters.tgs
  11. BIN
      Telegram/Resources/animations/cloud_password/email.tgs
  12. BIN
      Telegram/Resources/animations/cloud_password/hint.tgs
  13. BIN
      Telegram/Resources/animations/cloud_password/intro.tgs
  14. BIN
      Telegram/Resources/animations/cloud_password/password_input.tgs
  15. BIN
      Telegram/Resources/animations/collectible_phone.tgs
  16. BIN
      Telegram/Resources/animations/collectible_username.tgs
  17. BIN
      Telegram/Resources/animations/dice/bball_idle.tgs
  18. BIN
      Telegram/Resources/animations/dice/dart_idle.tgs
  19. BIN
      Telegram/Resources/animations/dice/dice_idle.tgs
  20. BIN
      Telegram/Resources/animations/dice/fball_idle.tgs
  21. BIN
      Telegram/Resources/animations/dice/slot_0_idle.tgs
  22. BIN
      Telegram/Resources/animations/dice/slot_1_idle.tgs
  23. BIN
      Telegram/Resources/animations/dice/slot_2_idle.tgs
  24. BIN
      Telegram/Resources/animations/dice/slot_back.tgs
  25. BIN
      Telegram/Resources/animations/dice/slot_pull.tgs
  26. BIN
      Telegram/Resources/animations/dice/winners.tgs
  27. BIN
      Telegram/Resources/animations/discussion.tgs
  28. BIN
      Telegram/Resources/animations/filters.tgs
  29. BIN
      Telegram/Resources/animations/greeting.tgs
  30. BIN
      Telegram/Resources/animations/hello_status.tgs
  31. BIN
      Telegram/Resources/animations/hours.tgs
  32. BIN
      Telegram/Resources/animations/local_passcode_enter.tgs
  33. BIN
      Telegram/Resources/animations/location.tgs
  34. BIN
      Telegram/Resources/animations/noresults.tgs
  35. BIN
      Telegram/Resources/animations/palette.tgs
  36. BIN
      Telegram/Resources/animations/phone.tgs
  37. BIN
      Telegram/Resources/animations/robot.tgs
  38. BIN
      Telegram/Resources/animations/search.tgs
  39. BIN
      Telegram/Resources/animations/sleep.tgs
  40. BIN
      Telegram/Resources/animations/star_reaction/appear.tgs
  41. BIN
      Telegram/Resources/animations/star_reaction/center.tgs
  42. BIN
      Telegram/Resources/animations/star_reaction/effect1.tgs
  43. BIN
      Telegram/Resources/animations/star_reaction/effect2.tgs
  44. BIN
      Telegram/Resources/animations/star_reaction/effect3.tgs
  45. BIN
      Telegram/Resources/animations/star_reaction/select.tgs
  46. BIN
      Telegram/Resources/animations/star_reaction/toast.tgs
  47. BIN
      Telegram/Resources/animations/starref_link.tgs
  48. BIN
      Telegram/Resources/animations/stats.tgs
  49. BIN
      Telegram/Resources/animations/stats_boosts.tgs
  50. BIN
      Telegram/Resources/animations/stats_earn.tgs
  51. BIN
      Telegram/Resources/animations/swipe_action/archive.tgs
  52. BIN
      Telegram/Resources/animations/swipe_action/delete.tgs
  53. BIN
      Telegram/Resources/animations/swipe_action/disabled.tgs
  54. BIN
      Telegram/Resources/animations/swipe_action/mute.tgs
  55. BIN
      Telegram/Resources/animations/swipe_action/pin.tgs
  56. BIN
      Telegram/Resources/animations/swipe_action/read.tgs
  57. BIN
      Telegram/Resources/animations/swipe_action/unarchive.tgs
  58. BIN
      Telegram/Resources/animations/swipe_action/unmute.tgs
  59. BIN
      Telegram/Resources/animations/swipe_action/unpin.tgs
  60. BIN
      Telegram/Resources/animations/swipe_action/unread.tgs
  61. BIN
      Telegram/Resources/animations/ttl.tgs
  62. BIN
      Telegram/Resources/animations/voice_ttl_idle.tgs
  63. BIN
      Telegram/Resources/animations/voice_ttl_start.tgs
  64. BIN
      Telegram/Resources/animations/writing.tgs
  65. BIN
      Telegram/Resources/art/affiliate_logo.png
  66. BIN
      Telegram/Resources/art/background.tgv
  67. BIN
      Telegram/Resources/art/bg_initial.jpg
  68. BIN
      Telegram/Resources/art/bg_thumbnail.png
  69. BIN
      Telegram/Resources/art/business_logo.png
  70. BIN
      Telegram/Resources/art/icon128.png
  71. BIN
      Telegram/Resources/art/icon128@2x.png
  72. BIN
      Telegram/Resources/art/icon16.png
  73. BIN
      Telegram/Resources/art/icon16@2x.png
  74. BIN
      Telegram/Resources/art/icon256.ico
  75. BIN
      Telegram/Resources/art/icon256.png
  76. BIN
      Telegram/Resources/art/icon256@2x.png
  77. BIN
      Telegram/Resources/art/icon32.png
  78. BIN
      Telegram/Resources/art/icon32@2x.png
  79. BIN
      Telegram/Resources/art/icon48.png
  80. BIN
      Telegram/Resources/art/icon48@2x.png
  81. BIN
      Telegram/Resources/art/icon512.png
  82. BIN
      Telegram/Resources/art/icon512@2x.png
  83. BIN
      Telegram/Resources/art/icon64.png
  84. BIN
      Telegram/Resources/art/icon64@2x.png
  85. BIN
      Telegram/Resources/art/icon_green.png
  86. BIN
      Telegram/Resources/art/icon_round512@2x.png
  87. BIN
      Telegram/Resources/art/iconbig_green.png
  88. BIN
      Telegram/Resources/art/logo_256.png
  89. BIN
      Telegram/Resources/art/logo_256_no_margin.png
  90. BIN
      Telegram/Resources/art/mac_setup.tiff
  91. 22 0
      Telegram/Resources/art/recording/recording_info_audio.svg
  92. 41 0
      Telegram/Resources/art/recording/recording_info_video_landscape.svg
  93. 41 0
      Telegram/Resources/art/recording/recording_info_video_portrait.svg
  94. BIN
      Telegram/Resources/art/round_placeholder.jpg
  95. BIN
      Telegram/Resources/art/themeimage.jpg
  96. 18 0
      Telegram/Resources/art/topic_icons/blue.svg
  97. 7 0
      Telegram/Resources/art/topic_icons/general.svg
  98. 18 0
      Telegram/Resources/art/topic_icons/gray.svg
  99. 18 0
      Telegram/Resources/art/topic_icons/green.svg
  100. 18 0
      Telegram/Resources/art/topic_icons/red.svg

+ 32 - 0
.devcontainer.json

@@ -0,0 +1,32 @@
+{
+    "name": "CentOS",
+    "image": "tdesktop:centos_env",
+    "customizations": {
+        "vscode": {
+            "settings": {
+                "C_Cpp.intelliSenseEngine": "disabled",
+                "clangd.arguments": [
+                    "--compile-commands-dir=${workspaceFolder}/out"
+                ],
+                "cmake.generator": "Ninja Multi-Config",
+                "cmake.buildDirectory": "${workspaceFolder}/out"
+            },
+            "extensions": [
+                "ms-vscode.cpptools-extension-pack",
+                "llvm-vs-code-extensions.vscode-clangd",
+                "TheQtCompany.qt",
+                "ms-python.python",
+                "ms-azuretools.vscode-docker",
+                "eamodio.gitlens"
+            ]
+        }
+    },
+    "capAdd": [
+        "SYS_PTRACE"
+    ],
+    "securityOpt": [
+        "seccomp=unconfined"
+    ],
+    "workspaceMount": "source=${localWorkspaceFolder},target=/usr/src/tdesktop,type=bind,consistency=cached",
+    "workspaceFolder": "/usr/src/tdesktop"
+}

+ 68 - 0
CMakeLists.txt

@@ -0,0 +1,68 @@
+# This file is part of Telegram Desktop,
+# the official desktop application for the Telegram messaging service.
+#
+# For license and copyright information please follow this link:
+# https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
+
+if (APPLE)
+    # target_precompile_headers with COMPILE_LANGUAGE restriction.
+    cmake_minimum_required(VERSION 3.23)
+else()
+    cmake_minimum_required(VERSION 3.16)
+endif()
+if (POLICY CMP0149)
+    cmake_policy(SET CMP0149 NEW)
+endif()
+
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
+include(cmake/validate_special_target.cmake)
+include(cmake/version.cmake)
+desktop_app_parse_version(Telegram/build/version)
+
+set(project_langs C CXX)
+if (APPLE)
+    list(APPEND project_langs OBJC OBJCXX)
+elseif (LINUX)
+    list(APPEND project_langs ASM)
+endif()
+
+project(Telegram
+    LANGUAGES ${project_langs}
+    VERSION ${desktop_app_version_cmake}
+    DESCRIPTION "Official Telegram Desktop messenger"
+    HOMEPAGE_URL "https://desktop.telegram.org"
+)
+set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Telegram)
+
+get_filename_component(third_party_loc "Telegram/ThirdParty" REALPATH)
+get_filename_component(submodules_loc "Telegram" REALPATH)
+get_filename_component(cmake_helpers_loc "cmake" REALPATH)
+
+if (NOT DESKTOP_APP_USE_PACKAGED AND WIN32)
+    set(Python3_EXECUTABLE ${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/python/Scripts/python)
+endif()
+
+include(cmake/variables.cmake)
+include(cmake/nice_target_sources.cmake)
+include(cmake/target_compile_options_if_exists.cmake)
+include(cmake/target_link_frameworks.cmake)
+include(cmake/target_link_optional_libraries.cmake)
+include(cmake/target_link_options_if_exists.cmake)
+include(cmake/target_link_static_libraries.cmake)
+include(cmake/init_target.cmake)
+include(cmake/generate_target.cmake)
+include(cmake/nuget.cmake)
+include(cmake/validate_d3d_compiler.cmake)
+include(cmake/target_prepare_qrc.cmake)
+
+include(cmake/options.cmake)
+include(cmake/external/qt/package.cmake)
+
+set(desktop_app_skip_libs
+    glibmm
+    variant
+)
+
+add_subdirectory(cmake)
+add_subdirectory(Telegram)

+ 21 - 0
LEGAL

@@ -0,0 +1,21 @@
+This file is part of Telegram Desktop,
+the official desktop application for the Telegram messaging service.
+
+Copyright (c) 2014-2025 The Telegram Desktop Authors.
+
+Telegram Desktop is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+It is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+In addition, as a special exception, the copyright holders give permission
+to link the code of portions of this program with the OpenSSL library.
+
+More information about the Telegram project: https://telegram.org
+
+Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE

+ 688 - 0
LICENSE

@@ -0,0 +1,688 @@
+Telegram Desktop is licensed under the GNU General Public License
+version 3 with the addition of the following special exception:
+
+In addition, as a special exception, the copyright holders give
+permission to link the code of portions of this program with the OpenSSL
+library.
+
+You must obey the GNU General Public License in all respects for all of
+the code used other than OpenSSL. If you modify file(s) with this
+exception, you may extend this exception to your version of the file(s),
+but you are not obligated to do so. If you do not wish to do so, delete
+this exception statement from your version. If you delete this exception
+statement from all source files in the program, then also delete it here.
+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    {one line to give the program's name and a brief idea of what it does.}
+    Copyright (C) {year}  {name of author}
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    {project}  Copyright (C) {year}  {fullname}
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.

+ 86 - 0
README.md

@@ -0,0 +1,86 @@
+# [Telegram Desktop][telegram_desktop] – Official Messenger
+
+This is the complete source code and the build instructions for the official [Telegram][telegram] messenger desktop client, based on the [Telegram API][telegram_api] and the [MTProto][telegram_proto] secure protocol.
+
+[![Version](https://badge.fury.io/gh/telegramdesktop%2Ftdesktop.svg)](https://github.com/telegramdesktop/tdesktop/releases)
+[![Build Status](https://github.com/telegramdesktop/tdesktop/workflows/Windows./badge.svg)](https://github.com/telegramdesktop/tdesktop/actions)
+[![Build Status](https://github.com/telegramdesktop/tdesktop/workflows/MacOS./badge.svg)](https://github.com/telegramdesktop/tdesktop/actions)
+[![Build Status](https://github.com/telegramdesktop/tdesktop/workflows/Linux./badge.svg)](https://github.com/telegramdesktop/tdesktop/actions)
+
+[![Preview of Telegram Desktop][preview_image]][preview_image_url]
+
+The source code is published under GPLv3 with OpenSSL exception, the license is available [here][license].
+
+## Supported systems
+
+The latest version is available for
+
+* [Windows 7 and above (64 bit)](https://telegram.org/dl/desktop/win64) ([portable](https://telegram.org/dl/desktop/win64_portable))
+* [Windows 7 and above (32 bit)](https://telegram.org/dl/desktop/win) ([portable](https://telegram.org/dl/desktop/win_portable))
+* [macOS 10.13 and above](https://telegram.org/dl/desktop/mac)
+* [Linux static build for 64 bit](https://telegram.org/dl/desktop/linux)
+* [Snap](https://snapcraft.io/telegram-desktop)
+* [Flatpak](https://flathub.org/apps/details/org.telegram.desktop)
+
+## Old system versions
+
+Version **4.9.9** was the last that supports older systems
+
+* [macOS 10.12](https://updates.tdesktop.com/tmac/tsetup.4.9.9.dmg)
+* [Linux with glibc < 2.28 static build](https://updates.tdesktop.com/tlinux/tsetup.4.9.9.tar.xz)
+
+Version **2.4.4** was the last that supports older systems
+
+* [OS X 10.10 and 10.11](https://updates.tdesktop.com/tosx/tsetup-osx.2.4.4.dmg)
+* [Linux static build for 32 bit](https://updates.tdesktop.com/tlinux32/tsetup32.2.4.4.tar.xz)
+
+Version **1.8.15** was the last that supports older systems
+
+* [Windows XP and Vista](https://updates.tdesktop.com/tsetup/tsetup.1.8.15.exe) ([portable](https://updates.tdesktop.com/tsetup/tportable.1.8.15.zip))
+* [OS X 10.8 and 10.9](https://updates.tdesktop.com/tmac/tsetup.1.8.15.dmg)
+* [OS X 10.6 and 10.7](https://updates.tdesktop.com/tmac32/tsetup32.1.8.15.dmg)
+
+## Third-party
+
+* Qt 6 ([LGPL](http://doc.qt.io/qt-6/lgpl.html)) and Qt 5.15 ([LGPL](http://doc.qt.io/qt-5/lgpl.html)) slightly patched
+* OpenSSL 3.2.1 ([Apache License 2.0](https://www.openssl.org/source/apache-license-2.0.txt))
+* WebRTC ([New BSD License](https://github.com/desktop-app/tg_owt/blob/master/LICENSE))
+* zlib 1.2.11 ([zlib License](http://www.zlib.net/zlib_license.html))
+* LZMA SDK 9.20 ([public domain](http://www.7-zip.org/sdk.html))
+* liblzma ([public domain](http://tukaani.org/xz/))
+* Google Breakpad ([License](https://chromium.googlesource.com/breakpad/breakpad/+/master/LICENSE))
+* Google Crashpad ([Apache License 2.0](https://chromium.googlesource.com/crashpad/crashpad/+/master/LICENSE))
+* GYP ([BSD License](https://github.com/bnoordhuis/gyp/blob/master/LICENSE))
+* Ninja ([Apache License 2.0](https://github.com/ninja-build/ninja/blob/master/COPYING))
+* OpenAL Soft ([LGPL](https://github.com/kcat/openal-soft/blob/master/COPYING))
+* Opus codec ([BSD License](http://www.opus-codec.org/license/))
+* FFmpeg ([LGPL](https://www.ffmpeg.org/legal.html))
+* Guideline Support Library ([MIT License](https://github.com/Microsoft/GSL/blob/master/LICENSE))
+* Range-v3 ([Boost License](https://github.com/ericniebler/range-v3/blob/master/LICENSE.txt))
+* Open Sans font ([Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html))
+* Vazirmatn font ([SIL Open Font License 1.1](https://github.com/rastikerdar/vazirmatn/blob/master/OFL.txt))
+* Emoji alpha codes ([MIT License](https://github.com/emojione/emojione/blob/master/extras/alpha-codes/LICENSE.md))
+* xxHash ([BSD License](https://github.com/Cyan4973/xxHash/blob/dev/LICENSE))
+* QR Code generator ([MIT License](https://github.com/nayuki/QR-Code-generator#license))
+* CMake ([New BSD License](https://github.com/Kitware/CMake/blob/master/Copyright.txt))
+* Hunspell ([LGPL](https://github.com/hunspell/hunspell/blob/master/COPYING.LESSER))
+* Ada ([Apache License 2.0](https://github.com/ada-url/ada/blob/main/LICENSE-APACHE))
+
+## Build instructions
+
+* Windows [(32-bit)][win32] [(64-bit)][win64]
+* [macOS][mac]
+* [GNU/Linux using Docker][linux]
+
+[//]: # (LINKS)
+[telegram]: https://telegram.org
+[telegram_desktop]: https://desktop.telegram.org
+[telegram_api]: https://core.telegram.org
+[telegram_proto]: https://core.telegram.org/mtproto
+[license]: LICENSE
+[win32]: docs/building-win.md
+[win64]: docs/building-win-x64.md
+[mac]: docs/building-mac.md
+[linux]: docs/building-linux.md
+[preview_image]: https://github.com/telegramdesktop/tdesktop/blob/dev/docs/assets/preview.png "Preview of Telegram Desktop"
+[preview_image_url]: https://raw.githubusercontent.com/telegramdesktop/tdesktop/dev/docs/assets/preview.png

+ 2081 - 0
Telegram/CMakeLists.txt

@@ -0,0 +1,2081 @@
+# This file is part of Telegram Desktop,
+# the official desktop application for the Telegram messaging service.
+#
+# For license and copyright information please follow this link:
+# https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
+
+add_executable(Telegram WIN32 MACOSX_BUNDLE)
+init_non_host_target(Telegram)
+
+add_subdirectory(lib_rpl)
+add_subdirectory(lib_crl)
+add_subdirectory(lib_base)
+add_subdirectory(lib_ui)
+add_subdirectory(lib_tl)
+add_subdirectory(lib_spellcheck)
+add_subdirectory(lib_storage)
+add_subdirectory(lib_lottie)
+add_subdirectory(lib_qr)
+add_subdirectory(lib_webrtc)
+add_subdirectory(lib_webview)
+add_subdirectory(codegen)
+
+get_filename_component(src_loc SourceFiles REALPATH)
+get_filename_component(res_loc Resources REALPATH)
+
+include(cmake/telegram_options.cmake)
+include(cmake/lib_ffmpeg.cmake)
+include(cmake/lib_stripe.cmake)
+include(cmake/lib_tgvoip.cmake)
+include(cmake/lib_tgcalls.cmake)
+include(cmake/lib_prisma.cmake)
+include(cmake/td_export.cmake)
+include(cmake/td_iv.cmake)
+include(cmake/td_lang.cmake)
+include(cmake/td_mtproto.cmake)
+include(cmake/td_scheme.cmake)
+include(cmake/td_ui.cmake)
+include(cmake/generate_appdata_changelog.cmake)
+
+if (DESKTOP_APP_TEST_APPS)
+    include(cmake/tests.cmake)
+endif()
+
+if (WIN32)
+    include(cmake/generate_midl.cmake)
+    generate_midl(Telegram ${src_loc}
+        platform/win/windows_quiethours.idl
+        platform/win/windows_toastactivator.idl
+    )
+
+    nuget_add_winrt(Telegram)
+endif()
+
+set_target_properties(Telegram PROPERTIES AUTOMOC ON)
+
+target_link_libraries(Telegram
+PRIVATE
+    tdesktop::lib_tgcalls_legacy
+    tdesktop::lib_tgcalls
+    tdesktop::lib_tgvoip
+
+    # Order in this list defines the order of include paths in command line.
+    # We need to place desktop-app::external_minizip this early to have its
+    # include paths (usually ${PREFIX}/include/minizip) before any depend that
+    # would add ${PREFIX}/include. This path may have a different <zip.h>,
+    # for example installed by libzip (https://libzip.org).
+    desktop-app::external_minizip
+
+    tdesktop::td_export
+    tdesktop::td_iv
+    tdesktop::td_lang
+    tdesktop::td_mtproto
+    tdesktop::td_scheme
+    tdesktop::td_ui
+    desktop-app::lib_webrtc
+    desktop-app::lib_base
+    desktop-app::lib_crl
+    desktop-app::lib_ui
+    desktop-app::lib_tl
+    desktop-app::lib_spellcheck
+    desktop-app::lib_storage
+    desktop-app::lib_lottie
+    desktop-app::lib_qr
+    desktop-app::lib_webview
+    desktop-app::lib_ffmpeg
+    desktop-app::lib_stripe
+    desktop-app::external_rlottie
+    desktop-app::external_zlib
+    desktop-app::external_kcoreaddons
+    desktop-app::external_qt_static_plugins
+    desktop-app::external_qt
+    desktop-app::external_qr_code_generator
+    desktop-app::external_crash_reports
+    desktop-app::external_auto_updates
+    desktop-app::external_openssl
+    desktop-app::external_openal
+    desktop-app::external_xxhash
+)
+
+target_precompile_headers(Telegram PRIVATE $<$<COMPILE_LANGUAGE:CXX,OBJCXX>:${src_loc}/stdafx.h>)
+nice_target_sources(Telegram ${src_loc}
+PRIVATE
+    ${style_files}
+
+    api/api_attached_stickers.cpp
+    api/api_attached_stickers.h
+    api/api_authorizations.cpp
+    api/api_authorizations.h
+    api/api_blocked_peers.cpp
+    api/api_blocked_peers.h
+    api/api_bot.cpp
+    api/api_bot.h
+    api/api_chat_filters.cpp
+    api/api_chat_filters.h
+    api/api_chat_filters_remove_manager.cpp
+    api/api_chat_filters_remove_manager.h
+    api/api_chat_invite.cpp
+    api/api_chat_invite.h
+    api/api_chat_links.cpp
+    api/api_chat_links.h
+    api/api_chat_participants.cpp
+    api/api_chat_participants.h
+    api/api_cloud_password.cpp
+    api/api_cloud_password.h
+    api/api_common.cpp
+    api/api_common.h
+    api/api_confirm_phone.cpp
+    api/api_confirm_phone.h
+    api/api_credits.cpp
+    api/api_credits.h
+    api/api_earn.cpp
+    api/api_earn.h
+    api/api_editing.cpp
+    api/api_editing.h
+    api/api_filter_updates.h
+    api/api_global_privacy.cpp
+    api/api_global_privacy.h
+    api/api_hash.cpp
+    api/api_hash.h
+    api/api_invite_links.cpp
+    api/api_invite_links.h
+    api/api_media.cpp
+    api/api_media.h
+    api/api_messages_search.cpp
+    api/api_messages_search.h
+    api/api_messages_search_merged.cpp
+    api/api_messages_search_merged.h
+    api/api_peer_colors.cpp
+    api/api_peer_colors.h
+    api/api_peer_photo.cpp
+    api/api_peer_photo.h
+    api/api_polls.cpp
+    api/api_polls.h
+    api/api_premium.cpp
+    api/api_premium.h
+    api/api_premium_option.cpp
+    api/api_premium_option.h
+    api/api_report.cpp
+    api/api_report.h
+    api/api_ringtones.cpp
+    api/api_ringtones.h
+    api/api_self_destruct.cpp
+    api/api_self_destruct.h
+    api/api_send_progress.cpp
+    api/api_send_progress.h
+    api/api_sending.cpp
+    api/api_sending.h
+    api/api_sensitive_content.cpp
+    api/api_sensitive_content.h
+    api/api_single_message_search.cpp
+    api/api_single_message_search.h
+    api/api_statistics.cpp
+    api/api_statistics.h
+    api/api_statistics_data_deserialize.cpp
+    api/api_statistics_data_deserialize.h
+    api/api_statistics_sender.cpp
+    api/api_statistics_sender.h
+    api/api_text_entities.cpp
+    api/api_text_entities.h
+    api/api_toggling_media.cpp
+    api/api_toggling_media.h
+    api/api_transcribes.cpp
+    api/api_transcribes.h
+    api/api_unread_things.cpp
+    api/api_unread_things.h
+    api/api_updates.cpp
+    api/api_updates.h
+    api/api_user_names.cpp
+    api/api_user_names.h
+    api/api_user_privacy.cpp
+    api/api_user_privacy.h
+    api/api_views.cpp
+    api/api_views.h
+    api/api_websites.cpp
+    api/api_websites.h
+    api/api_who_reacted.cpp
+    api/api_who_reacted.h
+    boxes/filters/edit_filter_box.cpp
+    boxes/filters/edit_filter_box.h
+    boxes/filters/edit_filter_chats_list.cpp
+    boxes/filters/edit_filter_chats_list.h
+    boxes/filters/edit_filter_chats_preview.cpp
+    boxes/filters/edit_filter_chats_preview.h
+    boxes/filters/edit_filter_links.cpp
+    boxes/filters/edit_filter_links.h
+    boxes/peers/add_bot_to_chat_box.cpp
+    boxes/peers/add_bot_to_chat_box.h
+    boxes/peers/add_participants_box.cpp
+    boxes/peers/add_participants_box.h
+    boxes/peers/choose_peer_box.cpp
+    boxes/peers/choose_peer_box.h
+    boxes/peers/edit_contact_box.cpp
+    boxes/peers/edit_contact_box.h
+    boxes/peers/edit_forum_topic_box.cpp
+    boxes/peers/edit_forum_topic_box.h
+    boxes/peers/edit_linked_chat_box.cpp
+    boxes/peers/edit_linked_chat_box.h
+    boxes/peers/edit_members_visible.cpp
+    boxes/peers/edit_members_visible.h
+    boxes/peers/edit_participant_box.cpp
+    boxes/peers/edit_participant_box.h
+    boxes/peers/edit_participants_box.cpp
+    boxes/peers/edit_participants_box.h
+    boxes/peers/edit_peer_color_box.cpp
+    boxes/peers/edit_peer_color_box.h
+    boxes/peers/edit_peer_common.h
+    boxes/peers/edit_peer_info_box.cpp
+    boxes/peers/edit_peer_info_box.h
+    boxes/peers/edit_peer_invite_link.cpp
+    boxes/peers/edit_peer_invite_link.h
+    boxes/peers/edit_peer_invite_links.cpp
+    boxes/peers/edit_peer_invite_links.h
+    boxes/peers/edit_peer_permissions_box.cpp
+    boxes/peers/edit_peer_permissions_box.h
+    boxes/peers/edit_peer_reactions.cpp
+    boxes/peers/edit_peer_reactions.h
+    boxes/peers/edit_peer_requests_box.cpp
+    boxes/peers/edit_peer_requests_box.h
+    boxes/peers/edit_peer_type_box.cpp
+    boxes/peers/edit_peer_type_box.h
+    boxes/peers/edit_peer_usernames_list.cpp
+    boxes/peers/edit_peer_usernames_list.h
+    boxes/peers/peer_short_info_box.cpp
+    boxes/peers/peer_short_info_box.h
+    boxes/peers/prepare_short_info_box.cpp
+    boxes/peers/prepare_short_info_box.h
+    boxes/peers/replace_boost_box.cpp
+    boxes/peers/replace_boost_box.h
+    boxes/peers/verify_peers_box.cpp
+    boxes/peers/verify_peers_box.h
+    boxes/about_box.cpp
+    boxes/about_box.h
+    boxes/about_sponsored_box.cpp
+    boxes/about_sponsored_box.h
+    boxes/abstract_box.cpp
+    boxes/abstract_box.h
+    boxes/add_contact_box.cpp
+    boxes/add_contact_box.h
+    boxes/auto_lock_box.cpp
+    boxes/auto_lock_box.h
+    boxes/auto_download_box.cpp
+    boxes/auto_download_box.h
+    boxes/background_box.cpp
+    boxes/background_box.h
+    boxes/background_preview_box.cpp
+    boxes/background_preview_box.h
+    boxes/choose_filter_box.cpp
+    boxes/choose_filter_box.h
+    boxes/connection_box.cpp
+    boxes/connection_box.h
+    boxes/create_poll_box.cpp
+    boxes/create_poll_box.h
+    boxes/delete_messages_box.cpp
+    boxes/delete_messages_box.h
+    boxes/dictionaries_manager.cpp
+    boxes/dictionaries_manager.h
+    boxes/download_path_box.cpp
+    boxes/download_path_box.h
+    boxes/edit_caption_box.cpp
+    boxes/edit_caption_box.h
+    boxes/edit_privacy_box.cpp
+    boxes/edit_privacy_box.h
+    boxes/gift_credits_box.cpp
+    boxes/gift_credits_box.h
+    boxes/gift_premium_box.cpp
+    boxes/gift_premium_box.h
+    boxes/language_box.cpp
+    boxes/language_box.h
+    boxes/local_storage_box.cpp
+    boxes/local_storage_box.h
+    boxes/max_invite_box.cpp
+    boxes/max_invite_box.h
+    boxes/moderate_messages_box.cpp
+    boxes/moderate_messages_box.h
+    boxes/peer_list_box.cpp
+    boxes/peer_list_box.h
+    boxes/peer_list_controllers.cpp
+    boxes/peer_list_controllers.h
+    boxes/peer_list_widgets.cpp
+    boxes/peer_list_widgets.h
+    boxes/peer_lists_box.cpp
+    boxes/peer_lists_box.h
+    boxes/passcode_box.cpp
+    boxes/passcode_box.h
+    boxes/phone_banned_box.cpp
+    boxes/phone_banned_box.h
+    boxes/pin_messages_box.cpp
+    boxes/pin_messages_box.h
+    boxes/premium_limits_box.cpp
+    boxes/premium_limits_box.h
+    boxes/premium_preview_box.cpp
+    boxes/premium_preview_box.h
+    boxes/reactions_settings_box.cpp
+    boxes/reactions_settings_box.h
+    boxes/report_messages_box.cpp
+    boxes/report_messages_box.h
+    boxes/ringtones_box.cpp
+    boxes/ringtones_box.h
+    boxes/self_destruction_box.cpp
+    boxes/self_destruction_box.h
+    boxes/send_credits_box.cpp
+    boxes/send_credits_box.h
+    boxes/send_gif_with_caption_box.cpp
+    boxes/send_gif_with_caption_box.h
+    boxes/send_files_box.cpp
+    boxes/send_files_box.h
+    boxes/share_box.cpp
+    boxes/share_box.h
+    boxes/star_gift_box.cpp
+    boxes/star_gift_box.h
+    boxes/sticker_set_box.cpp
+    boxes/sticker_set_box.h
+    boxes/stickers_box.cpp
+    boxes/stickers_box.h
+    boxes/transfer_gift_box.cpp
+    boxes/transfer_gift_box.h
+    boxes/translate_box.cpp
+    boxes/translate_box.h
+    boxes/url_auth_box.cpp
+    boxes/url_auth_box.h
+    boxes/username_box.cpp
+    boxes/username_box.h
+    calls/group/calls_choose_join_as.cpp
+    calls/group/calls_choose_join_as.h
+    calls/group/calls_cover_item.cpp
+    calls/group/calls_cover_item.h
+    calls/group/calls_group_call.cpp
+    calls/group/calls_group_call.h
+    calls/group/calls_group_common.cpp
+    calls/group/calls_group_common.h
+    calls/group/calls_group_invite_controller.cpp
+    calls/group/calls_group_invite_controller.h
+    calls/group/calls_group_members.cpp
+    calls/group/calls_group_members.h
+    calls/group/calls_group_members_row.cpp
+    calls/group/calls_group_members_row.h
+    calls/group/calls_group_menu.cpp
+    calls/group/calls_group_menu.h
+    calls/group/calls_group_panel.cpp
+    calls/group/calls_group_panel.h
+    calls/group/calls_group_rtmp.cpp
+    calls/group/calls_group_rtmp.h
+    calls/group/calls_group_settings.cpp
+    calls/group/calls_group_settings.h
+    calls/group/calls_group_toasts.cpp
+    calls/group/calls_group_toasts.h
+    calls/group/calls_group_viewport.cpp
+    calls/group/calls_group_viewport.h
+    calls/group/calls_group_viewport_opengl.cpp
+    calls/group/calls_group_viewport_opengl.h
+    calls/group/calls_group_viewport_raster.cpp
+    calls/group/calls_group_viewport_raster.h
+    calls/group/calls_group_viewport_tile.cpp
+    calls/group/calls_group_viewport_tile.h
+    calls/group/calls_volume_item.cpp
+    calls/group/calls_volume_item.h
+    calls/calls_box_controller.cpp
+    calls/calls_box_controller.h
+    calls/calls_call.cpp
+    calls/calls_call.h
+    calls/calls_emoji_fingerprint.cpp
+    calls/calls_emoji_fingerprint.h
+    calls/calls_instance.cpp
+    calls/calls_instance.h
+    calls/calls_panel.cpp
+    calls/calls_panel.h
+    calls/calls_signal_bars.cpp
+    calls/calls_signal_bars.h
+    calls/calls_top_bar.cpp
+    calls/calls_top_bar.h
+    calls/calls_userpic.cpp
+    calls/calls_userpic.h
+    calls/calls_video_bubble.cpp
+    calls/calls_video_bubble.h
+    calls/calls_video_incoming.cpp
+    calls/calls_video_incoming.h
+    chat_helpers/compose/compose_features.h
+    chat_helpers/compose/compose_show.cpp
+    chat_helpers/compose/compose_show.h
+    chat_helpers/bot_command.cpp
+    chat_helpers/bot_command.h
+    chat_helpers/bot_keyboard.cpp
+    chat_helpers/bot_keyboard.h
+    chat_helpers/emoji_interactions.cpp
+    chat_helpers/emoji_interactions.h
+    chat_helpers/emoji_keywords.cpp
+    chat_helpers/emoji_keywords.h
+    chat_helpers/emoji_list_widget.cpp
+    chat_helpers/emoji_list_widget.h
+    chat_helpers/emoji_sets_manager.cpp
+    chat_helpers/emoji_sets_manager.h
+    chat_helpers/emoji_suggestions_widget.cpp
+    chat_helpers/emoji_suggestions_widget.h
+    chat_helpers/field_autocomplete.cpp
+    chat_helpers/field_autocomplete.h
+    chat_helpers/gifs_list_widget.cpp
+    chat_helpers/gifs_list_widget.h
+    chat_helpers/message_field.cpp
+    chat_helpers/message_field.h
+    chat_helpers/share_message_phrase_factory.cpp
+    chat_helpers/share_message_phrase_factory.h
+    chat_helpers/spellchecker_common.cpp
+    chat_helpers/spellchecker_common.h
+    chat_helpers/stickers_dice_pack.cpp
+    chat_helpers/stickers_dice_pack.h
+    chat_helpers/stickers_emoji_pack.cpp
+    chat_helpers/stickers_emoji_pack.h
+    chat_helpers/stickers_gift_box_pack.cpp
+    chat_helpers/stickers_gift_box_pack.h
+    chat_helpers/stickers_list_footer.cpp
+    chat_helpers/stickers_list_footer.h
+    chat_helpers/stickers_list_widget.cpp
+    chat_helpers/stickers_list_widget.h
+    chat_helpers/stickers_lottie.cpp
+    chat_helpers/stickers_lottie.h
+    chat_helpers/tabbed_panel.cpp
+    chat_helpers/tabbed_panel.h
+    chat_helpers/tabbed_section.cpp
+    chat_helpers/tabbed_section.h
+    chat_helpers/tabbed_selector.cpp
+    chat_helpers/tabbed_selector.h
+    chat_helpers/ttl_media_layer_widget.cpp
+    chat_helpers/ttl_media_layer_widget.h
+    core/application.cpp
+    core/application.h
+    core/base_integration.cpp
+    core/base_integration.h
+    core/changelogs.cpp
+    core/changelogs.h
+    core/click_handler_types.cpp
+    core/click_handler_types.h
+    core/core_cloud_password.cpp
+    core/core_cloud_password.h
+    core/core_settings.cpp
+    core/core_settings.h
+    core/core_settings_proxy.cpp
+    core/core_settings_proxy.h
+    core/crash_report_window.cpp
+    core/crash_report_window.h
+    core/crash_reports.cpp
+    core/crash_reports.h
+    core/deadlock_detector.h
+    core/file_utilities.cpp
+    core/file_utilities.h
+    core/launcher.cpp
+    core/launcher.h
+    core/local_url_handlers.cpp
+    core/local_url_handlers.h
+    core/phone_click_handler.cpp
+    core/phone_click_handler.h
+    core/sandbox.cpp
+    core/sandbox.h
+    core/shortcuts.cpp
+    core/shortcuts.h
+    core/stars_amount.h
+    core/ui_integration.cpp
+    core/ui_integration.h
+    core/update_checker.cpp
+    core/update_checker.h
+    core/utils.cpp
+    core/utils.h
+    core/version.h
+    countries/countries_manager.cpp
+    countries/countries_manager.h
+    data/business/data_business_chatbots.cpp
+    data/business/data_business_chatbots.h
+    data/business/data_business_common.cpp
+    data/business/data_business_common.h
+    data/business/data_business_info.cpp
+    data/business/data_business_info.h
+    data/business/data_shortcut_messages.cpp
+    data/business/data_shortcut_messages.h
+    data/components/credits.cpp
+    data/components/credits.h
+    data/components/factchecks.cpp
+    data/components/factchecks.h
+    data/components/location_pickers.cpp
+    data/components/location_pickers.h
+    data/components/recent_peers.cpp
+    data/components/recent_peers.h
+    data/components/scheduled_messages.cpp
+    data/components/scheduled_messages.h
+    data/components/sponsored_messages.cpp
+    data/components/sponsored_messages.h
+    data/components/top_peers.cpp
+    data/components/top_peers.h
+    data/notify/data_notify_settings.cpp
+    data/notify/data_notify_settings.h
+    data/notify/data_peer_notify_settings.cpp
+    data/notify/data_peer_notify_settings.h
+    data/stickers/data_custom_emoji.cpp
+    data/stickers/data_custom_emoji.h
+    data/stickers/data_stickers_set.cpp
+    data/stickers/data_stickers_set.h
+    data/stickers/data_stickers.cpp
+    data/stickers/data_stickers.h
+    data/data_abstract_sparse_ids.h
+    data/data_abstract_structure.cpp
+    data/data_abstract_structure.h
+    data/data_audio_msg_id.cpp
+    data/data_audio_msg_id.h
+    data/data_auto_download.cpp
+    data/data_auto_download.h
+    data/data_boosts.h
+    data/data_bot_app.cpp
+    data/data_bot_app.h
+    data/data_chat.cpp
+    data/data_chat.h
+    data/data_chat_filters.cpp
+    data/data_chat_filters.h
+    data/data_chat_participant_status.cpp
+    data/data_chat_participant_status.h
+    data/data_changes.cpp
+    data/data_changes.h
+    data/data_channel.cpp
+    data/data_channel.h
+    data/data_channel_admins.cpp
+    data/data_channel_admins.h
+    data/data_cloud_file.cpp
+    data/data_cloud_file.h
+    data/data_cloud_themes.cpp
+    data/data_cloud_themes.h
+    data/data_document.cpp
+    data/data_document.h
+    data/data_document_media.cpp
+    data/data_document_media.h
+    data/data_document_resolver.cpp
+    data/data_document_resolver.h
+    data/data_download_manager.cpp
+    data/data_download_manager.h
+    data/data_drafts.cpp
+    data/data_drafts.h
+    data/data_emoji_statuses.cpp
+    data/data_emoji_statuses.h
+    data/data_folder.cpp
+    data/data_folder.h
+    data/data_forum.cpp
+    data/data_forum.h
+    data/data_forum_icons.cpp
+    data/data_forum_icons.h
+    data/data_forum_topic.cpp
+    data/data_forum_topic.h
+    data/data_file_click_handler.cpp
+    data/data_file_click_handler.h
+    data/data_file_origin.cpp
+    data/data_file_origin.h
+    data/data_flags.h
+    data/data_game.cpp
+    data/data_game.h
+    data/data_group_call.cpp
+    data/data_group_call.h
+    data/data_groups.cpp
+    data/data_groups.h
+    data/data_histories.cpp
+    data/data_histories.h
+    data/data_history_messages.cpp
+    data/data_history_messages.h
+    data/data_lastseen_status.h
+    data/data_location.cpp
+    data/data_location.h
+    data/data_media_preload.cpp
+    data/data_media_preload.h
+    data/data_media_rotation.cpp
+    data/data_media_rotation.h
+    data/data_media_types.cpp
+    data/data_media_types.h
+    # data/data_messages.cpp
+    # data/data_messages.h
+    data/data_message_reaction_id.cpp
+    data/data_message_reaction_id.h
+    data/data_message_reactions.cpp
+    data/data_message_reactions.h
+    data/data_msg_id.h
+    data/data_peer.cpp
+    data/data_peer.h
+    data/data_peer_bot_command.cpp
+    data/data_peer_bot_command.h
+    data/data_peer_bot_commands.cpp
+    data/data_peer_bot_commands.h
+    data/data_peer_id.cpp
+    data/data_peer_id.h
+    data/data_peer_values.cpp
+    data/data_peer_values.h
+    data/data_photo.cpp
+    data/data_photo.h
+    data/data_photo_media.cpp
+    data/data_photo_media.h
+    data/data_poll.cpp
+    data/data_poll.h
+    data/data_premium_limits.cpp
+    data/data_premium_limits.h
+    data/data_pts_waiter.cpp
+    data/data_pts_waiter.h
+    data/data_replies_list.cpp
+    data/data_replies_list.h
+    data/data_reply_preview.cpp
+    data/data_reply_preview.h
+    data/data_report.h
+    data/data_saved_messages.cpp
+    data/data_saved_messages.h
+    data/data_saved_sublist.cpp
+    data/data_saved_sublist.h
+    data/data_search_controller.cpp
+    data/data_search_controller.h
+    data/data_send_action.cpp
+    data/data_send_action.h
+    data/data_session.cpp
+    data/data_session.h
+    data/data_shared_media.cpp
+    data/data_shared_media.h
+    data/data_sparse_ids.cpp
+    data/data_sparse_ids.h
+    data/data_star_gift.h
+    data/data_statistics.h
+    data/data_stories.cpp
+    data/data_stories.h
+    data/data_stories_ids.cpp
+    data/data_stories_ids.h
+    data/data_story.cpp
+    data/data_story.h
+    data/data_streaming.cpp
+    data/data_streaming.h
+    data/data_thread.cpp
+    data/data_thread.h
+    data/data_types.cpp
+    data/data_types.h
+    data/data_unread_value.cpp
+    data/data_unread_value.h
+    data/data_user.cpp
+    data/data_user.h
+    data/data_user_photos.cpp
+    data/data_user_photos.h
+    data/data_user_names.cpp
+    data/data_user_names.h
+    data/data_wall_paper.cpp
+    data/data_wall_paper.h
+    data/data_web_page.cpp
+    data/data_web_page.h
+    dialogs/ui/dialogs_layout.cpp
+    dialogs/ui/dialogs_layout.h
+    dialogs/ui/dialogs_message_view.cpp
+    dialogs/ui/dialogs_message_view.h
+    dialogs/ui/dialogs_stories_content.cpp
+    dialogs/ui/dialogs_stories_content.h
+    dialogs/ui/dialogs_suggestions.cpp
+    dialogs/ui/dialogs_suggestions.h
+    dialogs/ui/dialogs_topics_view.cpp
+    dialogs/ui/dialogs_topics_view.h
+    dialogs/ui/dialogs_video_userpic.cpp
+    dialogs/ui/dialogs_video_userpic.h
+    dialogs/dialogs_entry.cpp
+    dialogs/dialogs_entry.h
+    dialogs/dialogs_indexed_list.cpp
+    dialogs/dialogs_indexed_list.h
+    dialogs/dialogs_inner_widget.cpp
+    dialogs/dialogs_inner_widget.h
+    dialogs/dialogs_key.cpp
+    dialogs/dialogs_key.h
+    dialogs/dialogs_list.cpp
+    dialogs/dialogs_list.h
+    dialogs/dialogs_main_list.cpp
+    dialogs/dialogs_main_list.h
+    dialogs/dialogs_pinned_list.cpp
+    dialogs/dialogs_pinned_list.h
+    dialogs/dialogs_quick_action.cpp
+    dialogs/dialogs_quick_action.h
+    dialogs/dialogs_row.cpp
+    dialogs/dialogs_row.h
+    dialogs/dialogs_search_from_controllers.cpp
+    dialogs/dialogs_search_from_controllers.h
+    dialogs/dialogs_search_tags.cpp
+    dialogs/dialogs_search_tags.h
+    dialogs/dialogs_widget.cpp
+    dialogs/dialogs_widget.h
+    editor/color_picker.cpp
+    editor/color_picker.h
+    editor/controllers/controllers.h
+    editor/controllers/stickers_panel_controller.cpp
+    editor/controllers/stickers_panel_controller.h
+    editor/editor_paint.cpp
+    editor/editor_paint.h
+    editor/photo_editor.cpp
+    editor/photo_editor.h
+    editor/photo_editor_content.cpp
+    editor/photo_editor_content.h
+    editor/photo_editor_controls.cpp
+    editor/photo_editor_controls.h
+    editor/photo_editor_layer_widget.cpp
+    editor/photo_editor_layer_widget.h
+    editor/scene/scene_item_sticker.cpp
+    editor/scene/scene_item_sticker.h
+    export/export_manager.cpp
+    export/export_manager.h
+    export/view/export_view_content.cpp
+    export/view/export_view_content.h
+    export/view/export_view_panel_controller.cpp
+    export/view/export_view_panel_controller.h
+    export/view/export_view_progress.cpp
+    export/view/export_view_progress.h
+    export/view/export_view_settings.cpp
+    export/view/export_view_settings.h
+    export/view/export_view_top_bar.cpp
+    export/view/export_view_top_bar.h
+    history/admin_log/history_admin_log_filter.cpp
+    history/admin_log/history_admin_log_filter.h
+    history/admin_log/history_admin_log_inner.cpp
+    history/admin_log/history_admin_log_inner.h
+    history/admin_log/history_admin_log_item.cpp
+    history/admin_log/history_admin_log_item.h
+    history/admin_log/history_admin_log_section.cpp
+    history/admin_log/history_admin_log_section.h
+    history/view/controls/compose_controls_common.h
+    history/view/controls/history_view_compose_controls.cpp
+    history/view/controls/history_view_compose_controls.h
+    history/view/controls/history_view_compose_media_edit_manager.cpp
+    history/view/controls/history_view_compose_media_edit_manager.h
+    history/view/controls/history_view_compose_search.cpp
+    history/view/controls/history_view_compose_search.h
+    history/view/controls/history_view_draft_options.cpp
+    history/view/controls/history_view_draft_options.h
+    history/view/controls/history_view_forward_panel.cpp
+    history/view/controls/history_view_forward_panel.h
+    history/view/controls/history_view_ttl_button.cpp
+    history/view/controls/history_view_ttl_button.h
+    history/view/controls/history_view_voice_record_bar.cpp
+    history/view/controls/history_view_voice_record_bar.h
+    history/view/controls/history_view_webpage_processor.cpp
+    history/view/controls/history_view_webpage_processor.h
+    history/view/media/history_view_call.cpp
+    history/view/media/history_view_call.h
+    history/view/media/history_view_contact.cpp
+    history/view/media/history_view_contact.h
+    history/view/media/history_view_custom_emoji.cpp
+    history/view/media/history_view_custom_emoji.h
+    history/view/media/history_view_dice.cpp
+    history/view/media/history_view_dice.h
+    history/view/media/history_view_document.cpp
+    history/view/media/history_view_document.h
+    history/view/media/history_view_file.cpp
+    history/view/media/history_view_file.h
+    history/view/media/history_view_game.cpp
+    history/view/media/history_view_game.h
+    history/view/media/history_view_gif.cpp
+    history/view/media/history_view_gif.h
+    history/view/media/history_view_giveaway.cpp
+    history/view/media/history_view_giveaway.h
+    history/view/media/history_view_invoice.cpp
+    history/view/media/history_view_invoice.h
+    history/view/media/history_view_large_emoji.cpp
+    history/view/media/history_view_large_emoji.h
+    history/view/media/history_view_location.cpp
+    history/view/media/history_view_location.h
+    history/view/media/history_view_media.cpp
+    history/view/media/history_view_media.h
+    history/view/media/history_view_media_common.cpp
+    history/view/media/history_view_media_common.h
+    history/view/media/history_view_media_generic.cpp
+    history/view/media/history_view_media_generic.h
+    history/view/media/history_view_media_grouped.cpp
+    history/view/media/history_view_media_grouped.h
+    history/view/media/history_view_media_spoiler.cpp
+    history/view/media/history_view_media_spoiler.h
+    history/view/media/history_view_media_unwrapped.cpp
+    history/view/media/history_view_media_unwrapped.h
+    history/view/media/history_view_photo.cpp
+    history/view/media/history_view_photo.h
+    history/view/media/history_view_poll.cpp
+    history/view/media/history_view_poll.h
+    history/view/media/history_view_premium_gift.cpp
+    history/view/media/history_view_premium_gift.h
+    history/view/media/history_view_service_box.cpp
+    history/view/media/history_view_service_box.h
+    history/view/media/history_view_similar_channels.cpp
+    history/view/media/history_view_similar_channels.h
+    history/view/media/history_view_slot_machine.cpp
+    history/view/media/history_view_slot_machine.h
+    history/view/media/history_view_sticker.cpp
+    history/view/media/history_view_sticker.h
+    history/view/media/history_view_sticker_player.cpp
+    history/view/media/history_view_sticker_player.h
+    history/view/media/history_view_sticker_player_abstract.h
+    history/view/media/history_view_story_mention.cpp
+    history/view/media/history_view_story_mention.h
+    history/view/media/history_view_theme_document.cpp
+    history/view/media/history_view_theme_document.h
+    history/view/media/history_view_unique_gift.cpp
+    history/view/media/history_view_unique_gift.h
+    history/view/media/history_view_userpic_suggestion.cpp
+    history/view/media/history_view_userpic_suggestion.h
+    history/view/media/history_view_web_page.cpp
+    history/view/media/history_view_web_page.h
+    history/view/reactions/history_view_reactions.cpp
+    history/view/reactions/history_view_reactions.h
+    history/view/reactions/history_view_reactions_button.cpp
+    history/view/reactions/history_view_reactions_button.h
+    history/view/reactions/history_view_reactions_list.cpp
+    history/view/reactions/history_view_reactions_list.h
+    history/view/reactions/history_view_reactions_selector.cpp
+    history/view/reactions/history_view_reactions_selector.h
+    history/view/reactions/history_view_reactions_strip.cpp
+    history/view/reactions/history_view_reactions_strip.h
+    history/view/reactions/history_view_reactions_tabs.cpp
+    history/view/reactions/history_view_reactions_tabs.h
+    history/view/history_view_about_view.cpp
+    history/view/history_view_about_view.h
+    history/view/history_view_bottom_info.cpp
+    history/view/history_view_bottom_info.h
+    history/view/history_view_chat_preview.cpp
+    history/view/history_view_chat_preview.h
+    history/view/history_view_contact_status.cpp
+    history/view/history_view_contact_status.h
+    history/view/history_view_context_menu.cpp
+    history/view/history_view_context_menu.h
+    history/view/history_view_corner_buttons.cpp
+    history/view/history_view_corner_buttons.h
+    history/view/history_view_cursor_state.cpp
+    history/view/history_view_cursor_state.h
+    history/view/history_view_element.cpp
+    history/view/history_view_element.h
+    history/view/history_view_emoji_interactions.cpp
+    history/view/history_view_emoji_interactions.h
+    history/view/history_view_empty_list_bubble.cpp
+    history/view/history_view_empty_list_bubble.h
+    history/view/history_view_fake_items.cpp
+    history/view/history_view_fake_items.h
+    history/view/history_view_group_call_bar.cpp
+    history/view/history_view_group_call_bar.h
+    history/view/history_view_item_preview.h
+    history/view/history_view_list_widget.cpp
+    history/view/history_view_list_widget.h
+    history/view/history_view_message.cpp
+    history/view/history_view_message.h
+    history/view/history_view_object.h
+    history/view/history_view_paid_reaction_toast.cpp
+    history/view/history_view_paid_reaction_toast.h
+    history/view/history_view_pinned_bar.cpp
+    history/view/history_view_pinned_bar.h
+    history/view/history_view_pinned_section.cpp
+    history/view/history_view_pinned_section.h
+    history/view/history_view_pinned_tracker.cpp
+    history/view/history_view_pinned_tracker.h
+    history/view/history_view_quick_action.cpp
+    history/view/history_view_quick_action.h
+    history/view/history_view_replies_section.cpp
+    history/view/history_view_replies_section.h
+    history/view/history_view_reply.cpp
+    history/view/history_view_reply.h
+    history/view/history_view_requests_bar.cpp
+    history/view/history_view_requests_bar.h
+    history/view/history_view_schedule_box.cpp
+    history/view/history_view_schedule_box.h
+    history/view/history_view_scheduled_section.cpp
+    history/view/history_view_scheduled_section.h
+    history/view/history_view_send_action.cpp
+    history/view/history_view_send_action.h
+    history/view/history_view_service_message.cpp
+    history/view/history_view_service_message.h
+    history/view/history_view_sponsored_click_handler.cpp
+    history/view/history_view_sponsored_click_handler.h
+    history/view/history_view_sticker_toast.cpp
+    history/view/history_view_sticker_toast.h
+    history/view/history_view_sublist_section.cpp
+    history/view/history_view_sublist_section.h
+    history/view/history_view_text_helper.cpp
+    history/view/history_view_text_helper.h
+    history/view/history_view_transcribe_button.cpp
+    history/view/history_view_transcribe_button.h
+    history/view/history_view_translate_bar.cpp
+    history/view/history_view_translate_bar.h
+    history/view/history_view_translate_tracker.cpp
+    history/view/history_view_translate_tracker.h
+    history/view/history_view_top_bar_widget.cpp
+    history/view/history_view_top_bar_widget.h
+    history/view/history_view_view_button.cpp
+    history/view/history_view_view_button.h
+    history/view/history_view_webpage_preview.cpp
+    history/view/history_view_webpage_preview.h
+    history/history.cpp
+    history/history.h
+    history/history_drag_area.cpp
+    history/history_drag_area.h
+    history/history_item.cpp
+    history/history_item.h
+    history/history_item_components.cpp
+    history/history_item_components.h
+    history/history_item_edition.cpp
+    history/history_item_edition.h
+    history/history_item_helpers.cpp
+    history/history_item_helpers.h
+    history/history_item_reply_markup.cpp
+    history/history_item_reply_markup.h
+    history/history_item_text.cpp
+    history/history_item_text.h
+    history/history_inner_widget.cpp
+    history/history_inner_widget.h
+    history/history_location_manager.cpp
+    history/history_location_manager.h
+    history/history_translation.cpp
+    history/history_translation.h
+    history/history_unread_things.cpp
+    history/history_unread_things.h
+    history/history_view_highlight_manager.cpp
+    history/history_view_highlight_manager.h
+    history/history_view_swipe_back_session.cpp
+    history/history_view_swipe_back_session.h
+    history/history_widget.cpp
+    history/history_widget.h
+    info/bot/earn/info_bot_earn_list.cpp
+    info/bot/earn/info_bot_earn_list.h
+    info/bot/earn/info_bot_earn_widget.cpp
+    info/bot/earn/info_bot_earn_widget.h
+    info/bot/starref/info_bot_starref_common.cpp
+    info/bot/starref/info_bot_starref_common.h
+    info/bot/starref/info_bot_starref_join_widget.cpp
+    info/bot/starref/info_bot_starref_join_widget.h
+    info/bot/starref/info_bot_starref_setup_widget.cpp
+    info/bot/starref/info_bot_starref_setup_widget.h
+    info/channel_statistics/boosts/create_giveaway_box.cpp
+    info/channel_statistics/boosts/create_giveaway_box.h
+    info/channel_statistics/boosts/giveaway/giveaway_list_controllers.cpp
+    info/channel_statistics/boosts/giveaway/giveaway_list_controllers.h
+    info/channel_statistics/boosts/info_boosts_inner_widget.cpp
+    info/channel_statistics/boosts/info_boosts_inner_widget.h
+    info/channel_statistics/boosts/info_boosts_widget.cpp
+    info/channel_statistics/boosts/info_boosts_widget.h
+    info/channel_statistics/earn/info_channel_earn_list.cpp
+    info/channel_statistics/earn/info_channel_earn_list.h
+    info/channel_statistics/earn/info_channel_earn_widget.cpp
+    info/channel_statistics/earn/info_channel_earn_widget.h
+    info/common_groups/info_common_groups_inner_widget.cpp
+    info/common_groups/info_common_groups_inner_widget.h
+    info/common_groups/info_common_groups_widget.cpp
+    info/common_groups/info_common_groups_widget.h
+    info/downloads/info_downloads_inner_widget.cpp
+    info/downloads/info_downloads_inner_widget.h
+    info/downloads/info_downloads_provider.cpp
+    info/downloads/info_downloads_provider.h
+    info/downloads/info_downloads_widget.cpp
+    info/downloads/info_downloads_widget.h
+    info/global_media/info_global_media_widget.cpp
+    info/global_media/info_global_media_widget.h
+    info/global_media/info_global_media_inner_widget.cpp
+    info/global_media/info_global_media_inner_widget.h
+    info/global_media/info_global_media_provider.cpp
+    info/global_media/info_global_media_provider.h
+    info/media/info_media_buttons.cpp
+    info/media/info_media_buttons.h
+    info/media/info_media_common.cpp
+    info/media/info_media_common.h
+    info/media/info_media_empty_widget.cpp
+    info/media/info_media_empty_widget.h
+    info/media/info_media_inner_widget.cpp
+    info/media/info_media_inner_widget.h
+    info/media/info_media_list_section.cpp
+    info/media/info_media_list_section.h
+    info/media/info_media_list_widget.cpp
+    info/media/info_media_list_widget.h
+    info/media/info_media_provider.cpp
+    info/media/info_media_provider.h
+    info/media/info_media_widget.cpp
+    info/media/info_media_widget.h
+    info/members/info_members_widget.cpp
+    info/members/info_members_widget.h
+    info/peer_gifts/info_peer_gifts_common.cpp
+    info/peer_gifts/info_peer_gifts_common.h
+    info/peer_gifts/info_peer_gifts_widget.cpp
+    info/peer_gifts/info_peer_gifts_widget.h
+    info/polls/info_polls_results_inner_widget.cpp
+    info/polls/info_polls_results_inner_widget.h
+    info/polls/info_polls_results_widget.cpp
+    info/polls/info_polls_results_widget.h
+    info/profile/info_profile_actions.cpp
+    info/profile/info_profile_actions.h
+    info/profile/info_profile_badge.cpp
+    info/profile/info_profile_badge.h
+    info/profile/info_profile_cover.cpp
+    info/profile/info_profile_cover.h
+    info/profile/info_profile_emoji_status_panel.cpp
+    info/profile/info_profile_emoji_status_panel.h
+    info/profile/info_profile_inner_widget.cpp
+    info/profile/info_profile_inner_widget.h
+    info/profile/info_profile_members.cpp
+    info/profile/info_profile_members.h
+    info/profile/info_profile_members_controllers.cpp
+    info/profile/info_profile_members_controllers.h
+    info/profile/info_profile_phone_menu.cpp
+    info/profile/info_profile_phone_menu.h
+    info/profile/info_profile_text.cpp
+    info/profile/info_profile_text.h
+    info/profile/info_profile_values.cpp
+    info/profile/info_profile_values.h
+    info/profile/info_profile_widget.cpp
+    info/profile/info_profile_widget.h
+    info/reactions_list/info_reactions_list_widget.cpp
+    info/reactions_list/info_reactions_list_widget.h
+    info/requests_list/info_requests_list_widget.cpp
+    info/requests_list/info_requests_list_widget.h
+    info/saved/info_saved_sublists_widget.cpp
+    info/saved/info_saved_sublists_widget.h
+    info/settings/info_settings_widget.cpp
+    info/settings/info_settings_widget.h
+    info/similar_peers/info_similar_peers_widget.cpp
+    info/similar_peers/info_similar_peers_widget.h
+    info/statistics/info_statistics_common.h
+    info/statistics/info_statistics_inner_widget.cpp
+    info/statistics/info_statistics_inner_widget.h
+    info/statistics/info_statistics_list_controllers.cpp
+    info/statistics/info_statistics_list_controllers.h
+    info/statistics/info_statistics_recent_message.cpp
+    info/statistics/info_statistics_recent_message.h
+    info/statistics/info_statistics_tag.h
+    info/statistics/info_statistics_widget.cpp
+    info/statistics/info_statistics_widget.h
+    info/stories/info_stories_inner_widget.cpp
+    info/stories/info_stories_inner_widget.h
+    info/stories/info_stories_provider.cpp
+    info/stories/info_stories_provider.h
+    info/stories/info_stories_widget.cpp
+    info/stories/info_stories_widget.h
+    info/userpic/info_userpic_colors_editor.cpp
+    info/userpic/info_userpic_colors_editor.h
+    info/userpic/info_userpic_emoji_builder.cpp
+    info/userpic/info_userpic_emoji_builder.h
+    info/userpic/info_userpic_emoji_builder_common.cpp
+    info/userpic/info_userpic_emoji_builder_common.h
+    info/userpic/info_userpic_emoji_builder_menu_item.cpp
+    info/userpic/info_userpic_emoji_builder_menu_item.h
+    info/userpic/info_userpic_emoji_builder_preview.cpp
+    info/userpic/info_userpic_emoji_builder_preview.h
+    info/userpic/info_userpic_emoji_builder_widget.cpp
+    info/userpic/info_userpic_emoji_builder_widget.h
+    info/info_content_widget.cpp
+    info/info_content_widget.h
+    info/info_controller.cpp
+    info/info_controller.h
+    info/info_layer_widget.cpp
+    info/info_layer_widget.h
+    info/info_memento.cpp
+    info/info_memento.h
+    info/info_section_widget.cpp
+    info/info_section_widget.h
+    info/info_top_bar.cpp
+    info/info_top_bar.h
+    info/info_wrap_widget.cpp
+    info/info_wrap_widget.h
+    inline_bots/bot_attach_web_view.cpp
+    inline_bots/bot_attach_web_view.h
+    inline_bots/inline_bot_confirm_prepared.cpp
+    inline_bots/inline_bot_confirm_prepared.h
+    inline_bots/inline_bot_downloads.cpp
+    inline_bots/inline_bot_downloads.h
+    inline_bots/inline_bot_layout_internal.cpp
+    inline_bots/inline_bot_layout_internal.h
+    inline_bots/inline_bot_layout_item.cpp
+    inline_bots/inline_bot_layout_item.h
+    inline_bots/inline_bot_result.cpp
+    inline_bots/inline_bot_result.h
+    inline_bots/inline_bot_send_data.cpp
+    inline_bots/inline_bot_send_data.h
+    inline_bots/inline_results_inner.cpp
+    inline_bots/inline_results_inner.h
+    inline_bots/inline_results_widget.cpp
+    inline_bots/inline_results_widget.h
+    intro/intro_code.cpp
+    intro/intro_code.h
+    intro/intro_password_check.cpp
+    intro/intro_password_check.h
+    intro/intro_phone.cpp
+    intro/intro_phone.h
+    intro/intro_qr.cpp
+    intro/intro_qr.h
+    intro/intro_signup.cpp
+    intro/intro_signup.h
+    intro/intro_start.cpp
+    intro/intro_start.h
+    intro/intro_step.cpp
+    intro/intro_step.h
+    intro/intro_widget.cpp
+    intro/intro_widget.h
+    iv/iv_delegate_impl.cpp
+    iv/iv_delegate_impl.h
+    iv/iv_instance.cpp
+    iv/iv_instance.h
+    lang/lang_cloud_manager.cpp
+    lang/lang_cloud_manager.h
+    lang/lang_instance.cpp
+    lang/lang_instance.h
+    lang/lang_numbers_animation.cpp
+    lang/lang_numbers_animation.h
+    lang/lang_translator.cpp
+    lang/lang_translator.h
+    layout/layout_document_generic_preview.cpp
+    layout/layout_document_generic_preview.h
+    layout/layout_item_base.cpp
+    layout/layout_item_base.h
+    main/main_account.cpp
+    main/main_account.h
+    main/main_app_config.cpp
+    main/main_app_config.h
+    main/main_app_config_values.cpp
+    main/main_app_config_values.h
+    main/main_domain.cpp
+    main/main_domain.h
+    main/main_session.cpp
+    main/main_session.h
+    main/main_session_settings.cpp
+    main/main_session_settings.h
+    main/session/send_as_peers.cpp
+    main/session/send_as_peers.h
+    main/session/session_show.cpp
+    main/session/session_show.h
+    media/audio/media_audio.cpp
+    media/audio/media_audio.h
+    media/audio/media_audio_capture.cpp
+    media/audio/media_audio_capture.h
+    media/audio/media_audio_capture_common.h
+    media/audio/media_audio_ffmpeg_loader.cpp
+    media/audio/media_audio_ffmpeg_loader.h
+    media/audio/media_audio_loader.cpp
+    media/audio/media_audio_loader.h
+    media/audio/media_audio_loaders.cpp
+    media/audio/media_audio_loaders.h
+    media/audio/media_audio_local_cache.cpp
+    media/audio/media_audio_local_cache.h
+    media/audio/media_audio_track.cpp
+    media/audio/media_audio_track.h
+    media/audio/media_child_ffmpeg_loader.cpp
+    media/audio/media_child_ffmpeg_loader.h
+    media/player/media_player_float.cpp
+    media/player/media_player_float.h
+    media/player/media_player_instance.cpp
+    media/player/media_player_instance.h
+    media/player/media_player_panel.cpp
+    media/player/media_player_panel.h
+    media/player/media_player_volume_controller.cpp
+    media/player/media_player_volume_controller.h
+    media/player/media_player_widget.cpp
+    media/player/media_player_widget.h
+    media/stories/media_stories_caption_full_view.cpp
+    media/stories/media_stories_caption_full_view.h
+    media/stories/media_stories_controller.cpp
+    media/stories/media_stories_controller.h
+    media/stories/media_stories_delegate.cpp
+    media/stories/media_stories_delegate.h
+    media/stories/media_stories_header.cpp
+    media/stories/media_stories_header.h
+    media/stories/media_stories_reactions.cpp
+    media/stories/media_stories_reactions.h
+    media/stories/media_stories_recent_views.cpp
+    media/stories/media_stories_recent_views.h
+    media/stories/media_stories_reply.cpp
+    media/stories/media_stories_reply.h
+    media/stories/media_stories_repost_view.cpp
+    media/stories/media_stories_repost_view.h
+    media/stories/media_stories_share.cpp
+    media/stories/media_stories_share.h
+    media/stories/media_stories_sibling.cpp
+    media/stories/media_stories_sibling.h
+    media/stories/media_stories_slider.cpp
+    media/stories/media_stories_slider.h
+    media/stories/media_stories_stealth.cpp
+    media/stories/media_stories_stealth.h
+    media/stories/media_stories_view.cpp
+    media/stories/media_stories_view.h
+    media/streaming/media_streaming_audio_track.cpp
+    media/streaming/media_streaming_audio_track.h
+    media/streaming/media_streaming_common.h
+    media/streaming/media_streaming_document.cpp
+    media/streaming/media_streaming_document.h
+    media/streaming/media_streaming_file.cpp
+    media/streaming/media_streaming_file.h
+    media/streaming/media_streaming_file_delegate.h
+    media/streaming/media_streaming_instance.cpp
+    media/streaming/media_streaming_instance.h
+    media/streaming/media_streaming_loader.cpp
+    media/streaming/media_streaming_loader.h
+    media/streaming/media_streaming_loader_local.cpp
+    media/streaming/media_streaming_loader_local.h
+    media/streaming/media_streaming_loader_mtproto.cpp
+    media/streaming/media_streaming_loader_mtproto.h
+    media/streaming/media_streaming_player.cpp
+    media/streaming/media_streaming_player.h
+    media/streaming/media_streaming_reader.cpp
+    media/streaming/media_streaming_reader.h
+    media/streaming/media_streaming_round_preview.cpp
+    media/streaming/media_streaming_round_preview.h
+    media/streaming/media_streaming_utility.cpp
+    media/streaming/media_streaming_utility.h
+    media/streaming/media_streaming_video_track.cpp
+    media/streaming/media_streaming_video_track.h
+    media/view/media_view_group_thumbs.cpp
+    media/view/media_view_group_thumbs.h
+    media/view/media_view_open_common.cpp
+    media/view/media_view_open_common.h
+    media/view/media_view_overlay_opengl.cpp
+    media/view/media_view_overlay_opengl.h
+    media/view/media_view_overlay_raster.cpp
+    media/view/media_view_overlay_raster.h
+    media/view/media_view_overlay_renderer.h
+    media/view/media_view_overlay_widget.cpp
+    media/view/media_view_overlay_widget.h
+    media/view/media_view_pip.cpp
+    media/view/media_view_pip.h
+    media/view/media_view_pip_opengl.cpp
+    media/view/media_view_pip_opengl.h
+    media/view/media_view_pip_raster.cpp
+    media/view/media_view_pip_raster.h
+    media/view/media_view_pip_renderer.h
+    media/view/media_view_playback_controls.cpp
+    media/view/media_view_playback_controls.h
+    media/view/media_view_playback_progress.cpp
+    media/view/media_view_playback_progress.h
+    media/system_media_controls_manager.h
+    media/system_media_controls_manager.cpp
+    menu/menu_antispam_validator.cpp
+    menu/menu_antispam_validator.h
+    menu/menu_item_download_files.cpp
+    menu/menu_item_download_files.h
+    menu/menu_mute.cpp
+    menu/menu_mute.h
+    menu/menu_send.cpp
+    menu/menu_send.h
+    menu/menu_sponsored.cpp
+    menu/menu_sponsored.h
+    menu/menu_ttl_validator.cpp
+    menu/menu_ttl_validator.h
+    mtproto/config_loader.cpp
+    mtproto/config_loader.h
+    mtproto/connection_abstract.cpp
+    mtproto/connection_abstract.h
+    mtproto/connection_http.cpp
+    mtproto/connection_http.h
+    mtproto/connection_resolving.cpp
+    mtproto/connection_resolving.h
+    mtproto/connection_tcp.cpp
+    mtproto/connection_tcp.h
+    mtproto/core_types.h
+    mtproto/dedicated_file_loader.cpp
+    mtproto/dedicated_file_loader.h
+    mtproto/facade.cpp
+    mtproto/facade.h
+    mtproto/mtp_instance.cpp
+    mtproto/mtp_instance.h
+    mtproto/sender.h
+    mtproto/session.cpp
+    mtproto/session.h
+    mtproto/session_private.cpp
+    mtproto/session_private.h
+    mtproto/special_config_request.cpp
+    mtproto/special_config_request.h
+    mtproto/type_utils.h
+    overview/overview_layout.cpp
+    overview/overview_layout.h
+    overview/overview_layout_delegate.h
+    passport/passport_encryption.cpp
+    passport/passport_encryption.h
+    passport/passport_form_controller.cpp
+    passport/passport_form_controller.h
+    passport/passport_form_view_controller.cpp
+    passport/passport_form_view_controller.h
+    passport/passport_panel.cpp
+    passport/passport_panel.h
+    passport/passport_panel_controller.cpp
+    passport/passport_panel_controller.h
+    passport/passport_panel_edit_contact.cpp
+    passport/passport_panel_edit_contact.h
+    passport/passport_panel_edit_document.cpp
+    passport/passport_panel_edit_document.h
+    passport/passport_panel_edit_scans.cpp
+    passport/passport_panel_edit_scans.h
+    passport/passport_panel_form.cpp
+    passport/passport_panel_form.h
+    passport/passport_panel_password.cpp
+    passport/passport_panel_password.h
+    payments/payments_checkout_process.cpp
+    payments/payments_checkout_process.h
+    payments/payments_form.cpp
+    payments/payments_form.h
+    payments/payments_non_panel_process.cpp
+    payments/payments_non_panel_process.h
+    payments/payments_reaction_process.cpp
+    payments/payments_reaction_process.h
+    platform/linux/file_utilities_linux.cpp
+    platform/linux/file_utilities_linux.h
+    platform/linux/launcher_linux.cpp
+    platform/linux/launcher_linux.h
+    platform/linux/integration_linux.cpp
+    platform/linux/integration_linux.h
+    platform/linux/main_window_linux.cpp
+    platform/linux/main_window_linux.h
+    platform/linux/notifications_manager_linux.cpp
+    platform/linux/notifications_manager_linux.h
+    platform/linux/overlay_widget_linux.h
+    platform/linux/specific_linux.cpp
+    platform/linux/specific_linux.h
+    platform/linux/tray_linux.cpp
+    platform/linux/tray_linux.h
+    platform/mac/file_utilities_mac.mm
+    platform/mac/file_utilities_mac.h
+    platform/mac/launcher_mac.mm
+    platform/mac/launcher_mac.h
+    platform/mac/integration_mac.mm
+    platform/mac/integration_mac.h
+    platform/mac/mac_iconv_helper.c
+    platform/mac/main_window_mac.mm
+    platform/mac/main_window_mac.h
+    platform/mac/notifications_manager_mac.mm
+    platform/mac/notifications_manager_mac.h
+    platform/mac/overlay_widget_mac.h
+    platform/mac/overlay_widget_mac.mm
+    platform/mac/specific_mac.mm
+    platform/mac/specific_mac.h
+    platform/mac/specific_mac_p.mm
+    platform/mac/specific_mac_p.h
+    platform/mac/tray_mac.mm
+    platform/mac/tray_mac.h
+    platform/mac/window_title_mac.mm
+    platform/mac/touchbar/items/mac_formatter_item.h
+    platform/mac/touchbar/items/mac_formatter_item.mm
+    platform/mac/touchbar/items/mac_pinned_chats_item.h
+    platform/mac/touchbar/items/mac_pinned_chats_item.mm
+    platform/mac/touchbar/items/mac_scrubber_item.h
+    platform/mac/touchbar/items/mac_scrubber_item.mm
+    platform/mac/touchbar/mac_touchbar_audio.h
+    platform/mac/touchbar/mac_touchbar_audio.mm
+    platform/mac/touchbar/mac_touchbar_common.h
+    platform/mac/touchbar/mac_touchbar_common.mm
+    platform/mac/touchbar/mac_touchbar_controls.h
+    platform/mac/touchbar/mac_touchbar_controls.mm
+    platform/mac/touchbar/mac_touchbar_main.h
+    platform/mac/touchbar/mac_touchbar_main.mm
+    platform/mac/touchbar/mac_touchbar_manager.h
+    platform/mac/touchbar/mac_touchbar_manager.mm
+    platform/mac/touchbar/mac_touchbar_media_view.h
+    platform/mac/touchbar/mac_touchbar_media_view.mm
+    platform/win/file_utilities_win.cpp
+    platform/win/file_utilities_win.h
+    platform/win/launcher_win.cpp
+    platform/win/launcher_win.h
+    platform/win/integration_win.cpp
+    platform/win/integration_win.h
+    platform/win/main_window_win.cpp
+    platform/win/main_window_win.h
+    platform/win/notifications_manager_win.cpp
+    platform/win/notifications_manager_win.h
+    platform/win/overlay_widget_win.h
+    platform/win/specific_win.cpp
+    platform/win/specific_win.h
+    platform/win/tray_win.cpp
+    platform/win/tray_win.h
+    platform/win/windows_app_user_model_id.cpp
+    platform/win/windows_app_user_model_id.h
+    platform/win/windows_dlls.cpp
+    platform/win/windows_dlls.h
+    platform/win/windows_autostart_task.cpp
+    platform/win/windows_autostart_task.h
+    platform/win/windows_toast_activator.cpp
+    platform/win/windows_toast_activator.h
+    platform/platform_file_utilities.h
+    platform/platform_launcher.h
+    platform/platform_integration.cpp
+    platform/platform_integration.h
+    platform/platform_main_window.h
+    platform/platform_notifications_manager.h
+    platform/platform_overlay_widget.cpp
+    platform/platform_overlay_widget.h
+    platform/platform_specific.h
+    platform/platform_tray.h
+    platform/platform_window_title.h
+    profile/profile_back_button.cpp
+    profile/profile_back_button.h
+    profile/profile_block_group_members.cpp
+    profile/profile_block_group_members.h
+    profile/profile_block_peer_list.cpp
+    profile/profile_block_peer_list.h
+    profile/profile_block_widget.cpp
+    profile/profile_block_widget.h
+    profile/profile_cover_drop_area.cpp
+    profile/profile_cover_drop_area.h
+    settings/business/settings_away_message.cpp
+    settings/business/settings_away_message.h
+    settings/business/settings_shortcut_messages.cpp
+    settings/business/settings_shortcut_messages.h
+    settings/business/settings_chat_intro.cpp
+    settings/business/settings_chat_intro.h
+    settings/business/settings_chat_links.cpp
+    settings/business/settings_chat_links.h
+    settings/business/settings_chatbots.cpp
+    settings/business/settings_chatbots.h
+    settings/business/settings_greeting.cpp
+    settings/business/settings_greeting.h
+    settings/business/settings_location.cpp
+    settings/business/settings_location.h
+    settings/business/settings_quick_replies.cpp
+    settings/business/settings_quick_replies.h
+    settings/business/settings_recipients_helper.cpp
+    settings/business/settings_recipients_helper.h
+    settings/business/settings_working_hours.cpp
+    settings/business/settings_working_hours.h
+    settings/cloud_password/settings_cloud_password_email.cpp
+    settings/cloud_password/settings_cloud_password_email.h
+    settings/cloud_password/settings_cloud_password_email_confirm.cpp
+    settings/cloud_password/settings_cloud_password_email_confirm.h
+    settings/cloud_password/settings_cloud_password_hint.cpp
+    settings/cloud_password/settings_cloud_password_hint.h
+    settings/cloud_password/settings_cloud_password_input.cpp
+    settings/cloud_password/settings_cloud_password_input.h
+    settings/cloud_password/settings_cloud_password_manage.cpp
+    settings/cloud_password/settings_cloud_password_manage.h
+    settings/cloud_password/settings_cloud_password_start.cpp
+    settings/cloud_password/settings_cloud_password_start.h
+    settings/cloud_password/settings_cloud_password_step.cpp
+    settings/cloud_password/settings_cloud_password_step.h
+    settings/settings_active_sessions.cpp
+    settings/settings_active_sessions.h
+    settings/settings_advanced.cpp
+    settings/settings_advanced.h
+    settings/settings_blocked_peers.cpp
+    settings/settings_blocked_peers.h
+    settings/settings_business.cpp
+    settings/settings_business.h
+    settings/settings_chat.cpp
+    settings/settings_chat.h
+    settings/settings_calls.cpp
+    settings/settings_calls.h
+    settings/settings_codes.cpp
+    settings/settings_codes.h
+    settings/settings_common_session.cpp
+    settings/settings_common_session.h
+    settings/settings_credits.cpp
+    settings/settings_credits.h
+    settings/settings_credits_graphics.cpp
+    settings/settings_credits_graphics.h
+    settings/settings_experimental.cpp
+    settings/settings_experimental.h
+    settings/settings_folders.cpp
+    settings/settings_folders.h
+    settings/settings_global_ttl.cpp
+    settings/settings_global_ttl.h
+    settings/settings_information.cpp
+    settings/settings_information.h
+    settings/settings_intro.cpp
+    settings/settings_intro.h
+    settings/settings_local_passcode.cpp
+    settings/settings_local_passcode.h
+    settings/settings_main.cpp
+    settings/settings_main.h
+    settings/settings_notifications.cpp
+    settings/settings_notifications.h
+    settings/settings_notifications_type.cpp
+    settings/settings_notifications_type.h
+    settings/settings_power_saving.cpp
+    settings/settings_power_saving.h
+    settings/settings_premium.cpp
+    settings/settings_premium.h
+    settings/settings_privacy_controllers.cpp
+    settings/settings_privacy_controllers.h
+    settings/settings_privacy_security.cpp
+    settings/settings_privacy_security.h
+    settings/settings_scale_preview.cpp
+    settings/settings_scale_preview.h
+    settings/settings_shortcuts.cpp
+    settings/settings_shortcuts.h
+    settings/settings_type.h
+    settings/settings_websites.cpp
+    settings/settings_websites.h
+    storage/details/storage_file_utilities.cpp
+    storage/details/storage_file_utilities.h
+    storage/details/storage_settings_scheme.cpp
+    storage/details/storage_settings_scheme.h
+    storage/download_manager_mtproto.cpp
+    storage/download_manager_mtproto.h
+    storage/file_download.cpp
+    storage/file_download.h
+    storage/file_download_mtproto.cpp
+    storage/file_download_mtproto.h
+    storage/file_download_web.cpp
+    storage/file_download_web.h
+    storage/file_upload.cpp
+    storage/file_upload.h
+    storage/localimageloader.cpp
+    storage/localimageloader.h
+    storage/localstorage.cpp
+    storage/localstorage.h
+    storage/serialize_common.cpp
+    storage/serialize_common.h
+    storage/serialize_document.cpp
+    storage/serialize_document.h
+    storage/serialize_peer.cpp
+    storage/serialize_peer.h
+    storage/storage_account.cpp
+    storage/storage_account.h
+    storage/storage_cloud_blob.cpp
+    storage/storage_cloud_blob.h
+    storage/storage_domain.cpp
+    storage/storage_domain.h
+    storage/storage_facade.cpp
+    storage/storage_facade.h
+    storage/storage_media_prepare.cpp
+    storage/storage_media_prepare.h
+    storage/storage_shared_media.cpp
+    storage/storage_shared_media.h
+    storage/storage_sparse_ids_list.cpp
+    storage/storage_sparse_ids_list.h
+    storage/storage_user_photos.cpp
+    storage/storage_user_photos.h
+    storage/streamed_file_downloader.cpp
+    storage/streamed_file_downloader.h
+    support/support_autocomplete.cpp
+    support/support_autocomplete.h
+    support/support_common.cpp
+    support/support_common.h
+    support/support_helper.cpp
+    support/support_helper.h
+    support/support_preload.cpp
+    support/support_preload.h
+    support/support_templates.cpp
+    support/support_templates.h
+    ui/boxes/edit_invite_link_session.cpp
+    ui/boxes/edit_invite_link_session.h
+    ui/boxes/peer_qr_box.cpp
+    ui/boxes/peer_qr_box.h
+    ui/chat/attach/attach_item_single_file_preview.cpp
+    ui/chat/attach/attach_item_single_file_preview.h
+    ui/chat/attach/attach_item_single_media_preview.cpp
+    ui/chat/attach/attach_item_single_media_preview.h
+    ui/chat/choose_send_as.cpp
+    ui/chat/choose_send_as.h
+    ui/chat/choose_theme_controller.cpp
+    ui/chat/choose_theme_controller.h
+    ui/chat/sponsored_message_bar.cpp
+    ui/chat/sponsored_message_bar.h
+    ui/controls/emoji_button_factory.cpp
+    ui/controls/emoji_button_factory.h
+    ui/controls/location_picker.cpp
+    ui/controls/location_picker.h
+    ui/controls/silent_toggle.cpp
+    ui/controls/silent_toggle.h
+    ui/controls/userpic_button.cpp
+    ui/controls/userpic_button.h
+    ui/effects/credits_graphics.cpp
+    ui/effects/credits_graphics.h
+    ui/effects/emoji_fly_animation.cpp
+    ui/effects/emoji_fly_animation.h
+    ui/effects/message_sending_animation_common.h
+    ui/effects/message_sending_animation_controller.cpp
+    ui/effects/message_sending_animation_controller.h
+    ui/effects/reaction_fly_animation.cpp
+    ui/effects/reaction_fly_animation.h
+    ui/effects/send_action_animations.cpp
+    ui/effects/send_action_animations.h
+    ui/image/image.cpp
+    ui/image/image.h
+    ui/image/image_location.cpp
+    ui/image/image_location.h
+    ui/image/image_location_factory.cpp
+    ui/image/image_location_factory.h
+    ui/text/format_song_document_name.cpp
+    ui/text/format_song_document_name.h
+    ui/widgets/expandable_peer_list.cpp
+    ui/widgets/expandable_peer_list.h
+    ui/widgets/label_with_custom_emoji.cpp
+    ui/widgets/label_with_custom_emoji.h
+    ui/widgets/chat_filters_tabs_strip.cpp
+    ui/widgets/chat_filters_tabs_strip.h
+    ui/widgets/peer_bubble.cpp
+    ui/widgets/peer_bubble.h
+    ui/countryinput.cpp
+    ui/countryinput.h
+    ui/dynamic_thumbnails.cpp
+    ui/dynamic_thumbnails.h
+    ui/filter_icons.cpp
+    ui/filter_icons.h
+    ui/filter_icon_panel.cpp
+    ui/filter_icon_panel.h
+    ui/item_text_options.cpp
+    ui/item_text_options.h
+    ui/resize_area.h
+    ui/unread_badge.cpp
+    ui/unread_badge.h
+    window/main_window.cpp
+    window/main_window.h
+    window/notifications_manager.cpp
+    window/notifications_manager.h
+    window/notifications_manager_default.cpp
+    window/notifications_manager_default.h
+    window/notifications_utilities.cpp
+    window/notifications_utilities.h
+    window/section_memento.h
+    window/section_widget.cpp
+    window/section_widget.h
+    window/window_adaptive.cpp
+    window/window_adaptive.h
+    window/window_chat_preview.cpp
+    window/window_chat_preview.h
+    window/window_connecting_widget.cpp
+    window/window_connecting_widget.h
+    window/window_controller.cpp
+    window/window_controller.h
+    window/window_filters_menu.cpp
+    window/window_filters_menu.h
+    window/window_history_hider.cpp
+    window/window_history_hider.h
+    window/window_lock_widgets.cpp
+    window/window_lock_widgets.h
+    window/window_main_menu.cpp
+    window/window_main_menu.h
+    window/window_main_menu_helpers.cpp
+    window/window_main_menu_helpers.h
+    window/window_media_preview.cpp
+    window/window_media_preview.h
+    window/window_peer_menu.cpp
+    window/window_peer_menu.h
+    window/window_section_common.h
+    window/window_separate_id.cpp
+    window/window_separate_id.h
+    window/window_session_controller.cpp
+    window/window_session_controller.h
+    window/window_session_controller_link_info.h
+    window/window_top_bar_wrap.h
+    window/themes/window_theme.cpp
+    window/themes/window_theme.h
+    window/themes/window_theme_editor.cpp
+    window/themes/window_theme_editor.h
+    window/themes/window_theme_editor_block.cpp
+    window/themes/window_theme_editor_block.h
+    window/themes/window_theme_editor_box.cpp
+    window/themes/window_theme_editor_box.h
+    window/themes/window_theme_preview.cpp
+    window/themes/window_theme_preview.h
+    window/themes/window_theme_warning.cpp
+    window/themes/window_theme_warning.h
+    window/themes/window_themes_cloud_list.cpp
+    window/themes/window_themes_cloud_list.h
+    window/themes/window_themes_embedded.cpp
+    window/themes/window_themes_embedded.h
+    window/themes/window_themes_generate_name.cpp
+    window/themes/window_themes_generate_name.h
+    apiwrap.cpp
+    apiwrap.h
+    config.h
+    logs.cpp
+    logs.h
+    main.cpp
+    mainwidget.cpp
+    mainwidget.h
+    mainwindow.cpp
+    mainwindow.h
+    settings.cpp
+    settings.h
+    stdafx.h
+    tray.cpp
+    tray.h
+)
+
+if (NOT build_winstore)
+    remove_target_sources(Telegram ${src_loc}
+        platform/win/windows_start_task.cpp
+        platform/win/windows_start_task.h
+    )
+endif()
+
+if (DESKTOP_APP_USE_PACKAGED)
+    remove_target_sources(Telegram ${src_loc}
+        platform/mac/mac_iconv_helper.c
+    )
+endif()
+
+nice_target_sources(Telegram ${res_loc}
+PRIVATE
+    qrc/emoji_1.qrc
+    qrc/emoji_2.qrc
+    qrc/emoji_3.qrc
+    qrc/emoji_4.qrc
+    qrc/emoji_5.qrc
+    qrc/emoji_6.qrc
+    qrc/emoji_7.qrc
+    qrc/emoji_8.qrc
+    qrc/emoji_preview.qrc
+    qrc/telegram/animations.qrc
+    qrc/telegram/export.qrc
+    qrc/telegram/iv.qrc
+    qrc/telegram/picker.qrc
+    qrc/telegram/telegram.qrc
+    qrc/telegram/sounds.qrc
+    winrc/Telegram.rc
+    winrc/Telegram.manifest
+    langs/lang.strings
+    langs/cloud_lang.strings
+    numbers.txt
+)
+
+if (APPLE AND NOT build_macstore)
+    nice_target_sources(Telegram ${res_loc}
+    PRIVATE
+        qrc/telegram/mac_icons.qrc
+    )
+endif()
+
+if (WIN32)
+    # message(${CMAKE_GENERATOR})
+    # mt.exe -manifest "${res_loc}/winrc/Telegram.manifest" "-inputresource:\"$<TARGET_FILE:Telegram>\";#1" "-outputresource:\"$<TARGET_FILE:Telegram>\";#1" >NUL
+    # set(hash_symbol "#")
+    # set(release $<CONFIG:Release>)
+    # add_custom_command(
+    # TARGET
+    #     Telegram
+    # POST_BUILD COMMAND
+    #     $<IF:${release},mt.exe,echo.> $<${release}:-manifest> $<${release}:"${res_loc}/winrc/Telegram.manifest"> $<${release}:-inputresource:"$<TARGET_FILE:Telegram>"$<SEMICOLON>${hash_symbol}1> $<${release}:-outputresource:"$<TARGET_FILE:Telegram>"$<SEMICOLON>${hash_symbol}1> $<${release}:$<ANGLE-R>NUL>
+    # COMMENT
+    #     $<IF:${release},"Appending compatibility manifest.","Finalizing build.">
+    # )
+elseif (APPLE)
+    if (NOT DESKTOP_APP_USE_PACKAGED)
+        target_link_libraries(Telegram PRIVATE desktop-app::external_iconv)
+    endif()
+
+    set(icons_path ${CMAKE_CURRENT_SOURCE_DIR}/Telegram/Images.xcassets)
+    if (CMAKE_GENERATOR STREQUAL Xcode)
+        target_add_resource(Telegram ${icons_path})
+    else()
+        set(icon_path ${icons_path}/Icon.iconset)
+        find_program(ICONUTIL iconutil)
+        find_program(PNG2ICNS png2icns)
+        if (ICONUTIL)
+            add_custom_command(
+                OUTPUT Icon.icns
+                COMMAND ${ICONUTIL}
+                ARGS
+                    --convert icns
+                    --output Icon.icns
+                    ${icon_path}
+            )
+        elseif (PNG2ICNS)
+            add_custom_command(
+                OUTPUT Icon.icns
+                COMMAND ${PNG2ICNS}
+                ARGS
+                    Icon.icns
+                    ${icon_path}/icon_16x16.png
+                    ${icon_path}/icon_32x32.png
+                    ${icon_path}/icon_128x128.png
+                    ${icon_path}/icon_256x256.png
+                    ${icon_path}/icon_512x512.png
+            )
+        endif()
+        if (ICONUTIL OR PNG2ICNS)
+            set_source_files_properties(Icon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
+            target_add_resource(Telegram Icon.icns)
+        endif()
+    endif()
+
+    set(lang_packs
+        en
+        de
+        es
+        it
+        nl
+        ko
+        pt-BR
+    )
+    foreach (lang ${lang_packs})
+        set(strings_path ${res_loc}/langs/${lang}.lproj/Localizable.strings)
+        set_source_files_properties(${strings_path} PROPERTIES
+        MACOSX_PACKAGE_LOCATION
+            Resources/${lang}.lproj
+        )
+        target_sources(Telegram PRIVATE ${strings_path})
+        source_group(TREE ${res_loc} PREFIX Resources FILES ${strings_path})
+    endforeach()
+
+    add_custom_command(TARGET Telegram
+    PRE_LINK
+        COMMAND mkdir -p $<TARGET_FILE_DIR:Telegram>/../Resources
+        COMMAND cp ${CMAKE_BINARY_DIR}/lib_ui.rcc $<TARGET_FILE_DIR:Telegram>/../Resources
+        COMMAND cp ${CMAKE_BINARY_DIR}/lib_spellcheck.rcc $<TARGET_FILE_DIR:Telegram>/../Resources
+    )
+    if (NOT build_macstore AND NOT DESKTOP_APP_DISABLE_CRASH_REPORTS)
+        if (DESKTOP_APP_MAC_ARCH STREQUAL "x86_64" OR DESKTOP_APP_MAC_ARCH STREQUAL "arm64")
+            set(crashpad_dir_part ".${DESKTOP_APP_MAC_ARCH}")
+        else()
+            set(crashpad_dir_part "")
+        endif()
+        add_custom_command(TARGET Telegram
+        PRE_LINK
+            COMMAND mkdir -p $<TARGET_FILE_DIR:Telegram>/../Helpers
+            COMMAND cp ${libs_loc}/crashpad/out/$<IF:$<CONFIG:Debug>,Debug,Release>${crashpad_dir_part}/crashpad_handler $<TARGET_FILE_DIR:Telegram>/../Helpers/
+        )
+    endif()
+else()
+    include(${cmake_helpers_loc}/external/glib/generate_dbus.cmake)
+    generate_dbus(Telegram org.freedesktop.portal. XdpBackground ${third_party_loc}/xdg-desktop-portal/data/org.freedesktop.portal.Background.xml)
+    generate_dbus(Telegram org.freedesktop. XdgNotifications ${src_loc}/platform/linux/org.freedesktop.Notifications.xml)
+
+    if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
+        target_link_libraries(Telegram
+        PRIVATE
+            desktop-app::external_xcb
+        )
+    endif()
+endif()
+
+if (build_macstore)
+    set(bundle_identifier "org.telegram.desktop")
+    set(bundle_entitlements "Telegram Lite.entitlements")
+    set(output_name "Telegram Lite")
+    set_target_properties(Telegram PROPERTIES
+        XCODE_ATTRIBUTE_FRAMEWORK_SEARCH_PATHS ${libs_loc}/breakpad/src/client/mac/build/Release
+    )
+    target_link_frameworks(Telegram PRIVATE Breakpad)
+    add_custom_command(TARGET Telegram
+    PRE_LINK
+        COMMAND rm -rf $<TARGET_FILE_DIR:Telegram>/../Frameworks
+        COMMAND mkdir -p $<TARGET_FILE_DIR:Telegram>/../Frameworks
+        COMMAND cp -a ${libs_loc}/breakpad/src/client/mac/build/Release/Breakpad.framework $<TARGET_FILE_DIR:Telegram>/../Frameworks/Breakpad.framework
+        COMMAND rm -rf $<TARGET_FILE_DIR:Telegram>/../Frameworks/Breakpad.framework/Resources/crash_report_sender.app
+        COMMAND rm -rf $<TARGET_FILE_DIR:Telegram>/../Frameworks/Breakpad.framework/Resources/Inspector
+    )
+else()
+    if (CMAKE_GENERATOR STREQUAL Xcode)
+        set(bundle_identifier "com.tdesktop.Telegram$<$<CONFIG:Debug>:Debug>")
+    else()
+        set(bundle_identifier "com.tdesktop.Telegram")
+    endif()
+    set(bundle_entitlements "Telegram.entitlements")
+    if (LINUX AND DESKTOP_APP_USE_PACKAGED)
+        set(output_name "telegram-desktop")
+    else()
+        set(output_name "Telegram")
+    endif()
+endif()
+
+if (CMAKE_GENERATOR STREQUAL Xcode)
+    set(bundle_identifier_plist "$(PRODUCT_BUNDLE_IDENTIFIER)")
+else()
+    set(bundle_identifier_plist ${bundle_identifier})
+endif()
+
+set_target_properties(Telegram PROPERTIES
+    OUTPUT_NAME ${output_name}
+    MACOSX_BUNDLE_GUI_IDENTIFIER ${bundle_identifier}
+    MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Telegram.plist
+    XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/Telegram/${bundle_entitlements}"
+    XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${bundle_identifier}
+    XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION ${desktop_app_version_string}
+    XCODE_ATTRIBUTE_PRODUCT_NAME ${output_name}
+    XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon
+    XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES
+    XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES YES
+    XCODE_ATTRIBUTE_COPY_PHASE_STRIP NO
+    XCODE_ATTRIBUTE_ALWAYS_SEARCH_USER_PATHS NO
+    XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY libc++
+    XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS --deep
+    XCODE_ATTRIBUTE_CLANG_DEBUG_INFORMATION_LEVEL $<IF:$<CONFIG:Debug>,default,line-tables-only>
+)
+set(entitlement_sources
+    "${CMAKE_CURRENT_SOURCE_DIR}/Telegram/Telegram.entitlements"
+    "${CMAKE_CURRENT_SOURCE_DIR}/Telegram/Telegram Lite.entitlements"
+)
+target_sources(Telegram PRIVATE ${entitlement_sources})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/Telegram PREFIX Resources FILES ${entitlement_sources})
+
+target_include_directories(Telegram PRIVATE ${src_loc})
+
+target_compile_definitions(Telegram
+PRIVATE
+    TDESKTOP_API_ID=${TDESKTOP_API_ID}
+    TDESKTOP_API_HASH=${TDESKTOP_API_HASH}
+    G_LOG_DOMAIN="Telegram"
+)
+
+if (APPLE
+    OR "${CMAKE_GENERATOR}" STREQUAL "Ninja Multi-Config"
+    OR NOT CMAKE_EXECUTABLE_SUFFIX STREQUAL ""
+    OR NOT "${output_name}" STREQUAL "Telegram")
+    set(output_folder ${CMAKE_BINARY_DIR})
+else()
+    set(output_folder ${CMAKE_BINARY_DIR}/bin)
+endif()
+
+set_target_properties(Telegram PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder})
+
+if (MSVC)
+    target_link_libraries(Telegram
+    PRIVATE
+        delayimp
+    )
+    target_link_options(Telegram
+    PRIVATE
+        /DELAYLOAD:secur32.dll
+        /DELAYLOAD:winmm.dll
+        /DELAYLOAD:ws2_32.dll
+        /DELAYLOAD:user32.dll
+        /DELAYLOAD:gdi32.dll
+        /DELAYLOAD:advapi32.dll
+        /DELAYLOAD:shell32.dll
+        /DELAYLOAD:ole32.dll
+        /DELAYLOAD:oleaut32.dll
+        /DELAYLOAD:shlwapi.dll
+        /DELAYLOAD:iphlpapi.dll
+        /DELAYLOAD:gdiplus.dll
+        /DELAYLOAD:version.dll
+        /DELAYLOAD:dwmapi.dll
+        /DELAYLOAD:uxtheme.dll
+        /DELAYLOAD:crypt32.dll
+        /DELAYLOAD:bcrypt.dll
+        /DELAYLOAD:netapi32.dll
+        /DELAYLOAD:imm32.dll
+        /DELAYLOAD:userenv.dll
+        /DELAYLOAD:wtsapi32.dll
+        /DELAYLOAD:propsys.dll
+    )
+    if (QT_VERSION GREATER 6)
+        if (NOT build_winarm)
+            target_link_options(Telegram PRIVATE
+                /DELAYLOAD:API-MS-Win-EventLog-Legacy-l1-1-0.dll
+            )
+        endif()
+
+        target_link_options(Telegram
+        PRIVATE
+            /DELAYLOAD:API-MS-Win-Core-Console-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-Fibers-l2-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-Fibers-l2-1-1.dll
+            /DELAYLOAD:API-MS-Win-Core-File-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-LibraryLoader-l1-2-0.dll
+            /DELAYLOAD:API-MS-Win-Core-Localization-l1-2-0.dll
+            /DELAYLOAD:API-MS-Win-Core-Memory-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-Memory-l1-1-1.dll
+            /DELAYLOAD:API-MS-Win-Core-ProcessThreads-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-Synch-l1-2-0.dll # Synchronization.lib
+            /DELAYLOAD:API-MS-Win-Core-SysInfo-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-Timezone-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-WinRT-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-WinRT-Error-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Core-WinRT-String-l1-1-0.dll
+            /DELAYLOAD:API-MS-Win-Security-CryptoAPI-l1-1-0.dll
+            # /DELAYLOAD:API-MS-Win-Shcore-Scaling-l1-1-1.dll # We shadowed GetDpiForMonitor
+            /DELAYLOAD:authz.dll # Authz.lib
+            /DELAYLOAD:comdlg32.dll
+            /DELAYLOAD:dwrite.dll # DWrite.lib
+            /DELAYLOAD:dxgi.dll # DXGI.lib
+            /DELAYLOAD:d3d9.dll # D3D9.lib
+            /DELAYLOAD:d3d11.dll # D3D11.lib
+            /DELAYLOAD:d3d12.dll # D3D12.lib
+            /DELAYLOAD:setupapi.dll # SetupAPI.lib
+            /DELAYLOAD:winhttp.dll
+        )
+    endif()
+endif()
+
+target_prepare_qrc(Telegram)
+
+if (NOT DESKTOP_APP_DISABLE_AUTOUPDATE AND NOT build_macstore AND NOT build_winstore)
+    add_executable(Updater WIN32)
+    init_non_host_target(Updater)
+
+    add_dependencies(Telegram Updater)
+
+    nice_target_sources(Updater ${src_loc}
+    PRIVATE
+        _other/updater_win.cpp
+        _other/updater_linux.cpp
+        _other/updater_osx.m
+        _other/updater.h
+    )
+
+    set_target_properties(Updater PROPERTIES
+        RUNTIME_OUTPUT_DIRECTORY ${output_folder}
+    )
+
+    if (WIN32)
+        get_filename_component(lib_base_loc lib_base REALPATH)
+        nice_target_sources(Updater ${lib_base_loc}
+        PRIVATE
+            base/platform/win/base_windows_safe_library.cpp
+            base/platform/win/base_windows_safe_library.h
+        )
+        target_include_directories(Updater PRIVATE ${lib_base_loc})
+        if (MSVC)
+            target_link_libraries(Updater
+            PRIVATE
+                delayimp
+            )
+            target_link_options(Updater
+            PRIVATE
+                /DELAYLOAD:user32.dll
+                /DELAYLOAD:advapi32.dll
+                /DELAYLOAD:shell32.dll
+                /DELAYLOAD:ole32.dll
+                /DELAYLOAD:shlwapi.dll
+            )
+        else()
+            target_link_options(Updater PRIVATE -municode)
+        endif()
+    elseif (APPLE)
+        add_custom_command(TARGET Updater
+        PRE_LINK
+            COMMAND mkdir -p $<TARGET_FILE_DIR:Telegram>/../Frameworks
+            COMMAND cp $<TARGET_FILE:Updater> $<TARGET_FILE_DIR:Telegram>/../Frameworks/
+        )
+    endif()
+
+    if (DESKTOP_APP_SPECIAL_TARGET)
+        add_executable(Packer)
+        init_target(Packer)
+
+        add_dependencies(Telegram Packer)
+
+        nice_target_sources(Packer ${src_loc}
+        PRIVATE
+            _other/packer.cpp
+            _other/packer.h
+        )
+
+        target_link_libraries(Packer
+        PRIVATE
+            desktop-app::external_qt
+            desktop-app::external_zlib
+            desktop-app::external_auto_updates
+            desktop-app::external_openssl
+        )
+
+        set_target_properties(Packer PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder})
+    endif()
+elseif (build_winstore)
+    add_executable(StartupTask WIN32)
+    init_non_host_target(StartupTask)
+
+    add_dependencies(Telegram StartupTask)
+
+    nice_target_sources(StartupTask ${src_loc}
+    PRIVATE
+        _other/startup_task_win.cpp
+    )
+
+    set_target_properties(StartupTask PROPERTIES
+        RUNTIME_OUTPUT_DIRECTORY ${output_folder}
+    )
+endif()
+
+if (LINUX AND DESKTOP_APP_USE_PACKAGED)
+    include(GNUInstallDirs)
+    configure_file("../lib/xdg/org.telegram.desktop.service" "${CMAKE_CURRENT_BINARY_DIR}/org.telegram.desktop.service" @ONLY)
+    configure_file("../lib/xdg/org.telegram.desktop.metainfo.xml" "${CMAKE_CURRENT_BINARY_DIR}/org.telegram.desktop.metainfo.xml" @ONLY)
+    generate_appdata_changelog(Telegram "${CMAKE_SOURCE_DIR}/changelog.txt" "${CMAKE_CURRENT_BINARY_DIR}/org.telegram.desktop.metainfo.xml")
+    install(TARGETS Telegram RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}")
+    install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "org.telegram.desktop.png")
+    install(FILES "Resources/art/icon32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "org.telegram.desktop.png")
+    install(FILES "Resources/art/icon48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "org.telegram.desktop.png")
+    install(FILES "Resources/art/icon64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "org.telegram.desktop.png")
+    install(FILES "Resources/art/icon128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "org.telegram.desktop.png")
+    install(FILES "Resources/art/icon256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "org.telegram.desktop.png")
+    install(FILES "Resources/art/icon512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "org.telegram.desktop.png")
+    install(FILES "Resources/icons/tray_monochrome.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "org.telegram.desktop-symbolic.svg")
+    install(FILES "Resources/icons/tray_monochrome_attention.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "org.telegram.desktop-attention-symbolic.svg")
+    install(FILES "Resources/icons/tray_monochrome_mute.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "org.telegram.desktop-mute-symbolic.svg")
+    install(FILES "../lib/xdg/org.telegram.desktop.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
+    install(FILES "${CMAKE_CURRENT_BINARY_DIR}/org.telegram.desktop.service" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/dbus-1/services")
+    install(FILES "${CMAKE_CURRENT_BINARY_DIR}/org.telegram.desktop.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo")
+endif()

BIN
Telegram/Resources/animations/blocked_peers_empty.tgs


BIN
Telegram/Resources/animations/change_number.tgs


BIN
Telegram/Resources/animations/chat_link.tgs


BIN
Telegram/Resources/animations/cloud_filters.tgs


BIN
Telegram/Resources/animations/cloud_password/email.tgs


BIN
Telegram/Resources/animations/cloud_password/hint.tgs


BIN
Telegram/Resources/animations/cloud_password/intro.tgs


BIN
Telegram/Resources/animations/cloud_password/password_input.tgs


BIN
Telegram/Resources/animations/collectible_phone.tgs


BIN
Telegram/Resources/animations/collectible_username.tgs


BIN
Telegram/Resources/animations/dice/bball_idle.tgs


BIN
Telegram/Resources/animations/dice/dart_idle.tgs


BIN
Telegram/Resources/animations/dice/dice_idle.tgs


BIN
Telegram/Resources/animations/dice/fball_idle.tgs


BIN
Telegram/Resources/animations/dice/slot_0_idle.tgs


BIN
Telegram/Resources/animations/dice/slot_1_idle.tgs


BIN
Telegram/Resources/animations/dice/slot_2_idle.tgs


BIN
Telegram/Resources/animations/dice/slot_back.tgs


BIN
Telegram/Resources/animations/dice/slot_pull.tgs


BIN
Telegram/Resources/animations/dice/winners.tgs


BIN
Telegram/Resources/animations/discussion.tgs


BIN
Telegram/Resources/animations/filters.tgs


BIN
Telegram/Resources/animations/greeting.tgs


BIN
Telegram/Resources/animations/hello_status.tgs


BIN
Telegram/Resources/animations/hours.tgs


BIN
Telegram/Resources/animations/local_passcode_enter.tgs


BIN
Telegram/Resources/animations/location.tgs


BIN
Telegram/Resources/animations/noresults.tgs


BIN
Telegram/Resources/animations/palette.tgs


BIN
Telegram/Resources/animations/phone.tgs


BIN
Telegram/Resources/animations/robot.tgs


BIN
Telegram/Resources/animations/search.tgs


BIN
Telegram/Resources/animations/sleep.tgs


BIN
Telegram/Resources/animations/star_reaction/appear.tgs


BIN
Telegram/Resources/animations/star_reaction/center.tgs


BIN
Telegram/Resources/animations/star_reaction/effect1.tgs


BIN
Telegram/Resources/animations/star_reaction/effect2.tgs


BIN
Telegram/Resources/animations/star_reaction/effect3.tgs


BIN
Telegram/Resources/animations/star_reaction/select.tgs


BIN
Telegram/Resources/animations/star_reaction/toast.tgs


BIN
Telegram/Resources/animations/starref_link.tgs


BIN
Telegram/Resources/animations/stats.tgs


BIN
Telegram/Resources/animations/stats_boosts.tgs


BIN
Telegram/Resources/animations/stats_earn.tgs


BIN
Telegram/Resources/animations/swipe_action/archive.tgs


BIN
Telegram/Resources/animations/swipe_action/delete.tgs


BIN
Telegram/Resources/animations/swipe_action/disabled.tgs


BIN
Telegram/Resources/animations/swipe_action/mute.tgs


BIN
Telegram/Resources/animations/swipe_action/pin.tgs


BIN
Telegram/Resources/animations/swipe_action/read.tgs


BIN
Telegram/Resources/animations/swipe_action/unarchive.tgs


BIN
Telegram/Resources/animations/swipe_action/unmute.tgs


BIN
Telegram/Resources/animations/swipe_action/unpin.tgs


BIN
Telegram/Resources/animations/swipe_action/unread.tgs


BIN
Telegram/Resources/animations/ttl.tgs


BIN
Telegram/Resources/animations/voice_ttl_idle.tgs


BIN
Telegram/Resources/animations/voice_ttl_start.tgs


BIN
Telegram/Resources/animations/writing.tgs


BIN
Telegram/Resources/art/affiliate_logo.png


BIN
Telegram/Resources/art/background.tgv


BIN
Telegram/Resources/art/bg_initial.jpg


BIN
Telegram/Resources/art/bg_thumbnail.png


BIN
Telegram/Resources/art/business_logo.png


BIN
Telegram/Resources/art/icon128.png


BIN
Telegram/Resources/art/icon128@2x.png


BIN
Telegram/Resources/art/icon16.png


BIN
Telegram/Resources/art/icon16@2x.png


BIN
Telegram/Resources/art/icon256.ico


BIN
Telegram/Resources/art/icon256.png


BIN
Telegram/Resources/art/icon256@2x.png


BIN
Telegram/Resources/art/icon32.png


BIN
Telegram/Resources/art/icon32@2x.png


BIN
Telegram/Resources/art/icon48.png


BIN
Telegram/Resources/art/icon48@2x.png


BIN
Telegram/Resources/art/icon512.png


BIN
Telegram/Resources/art/icon512@2x.png


BIN
Telegram/Resources/art/icon64.png


BIN
Telegram/Resources/art/icon64@2x.png


BIN
Telegram/Resources/art/icon_green.png


BIN
Telegram/Resources/art/icon_round512@2x.png


BIN
Telegram/Resources/art/iconbig_green.png


BIN
Telegram/Resources/art/logo_256.png


BIN
Telegram/Resources/art/logo_256_no_margin.png


BIN
Telegram/Resources/art/mac_setup.tiff


+ 22 - 0
Telegram/Resources/art/recording/recording_info_audio.svg

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="212px" height="80px" viewBox="0 0 212 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>record_td_audio</title>
+    <g id="record_td_audio" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M43.7701975,66.2857143 C47.6576358,66.2857143 51.3477972,65.4403128 54.6671733,63.9231737 C63.7325049,59.7798145 70.032316,50.6262682 70.032316,40 C70.032316,25.4828009 58.2743651,13.7142857 43.7701975,13.7142857 C29.26603,13.7142857 17.508079,25.4828009 17.508079,40 C17.508079,54.5171992 29.26603,66.2857143 43.7701975,66.2857143 Z" id="Oval" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M125.220826,25.5238095 C126.482058,25.5238095 127.504488,26.5471587 127.504488,27.8095238 L127.504488,52.952381 C127.504488,54.2147459 126.482058,55.2380952 125.220826,55.2380952 C123.959594,55.2380952 122.937163,54.2147459 122.937163,52.952381 L122.937163,27.8095238 C122.937163,26.5471587 123.959594,25.5238095 125.220826,25.5238095 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M97.8168761,26.6666667 C99.0781079,26.6666667 100.100539,27.6900158 100.100539,28.952381 L100.100539,51.8095238 C100.100539,53.0718888 99.0781079,54.0952381 97.8168761,54.0952381 C96.5556444,54.0952381 95.5332136,53.0718888 95.5332136,51.8095238 L95.5332136,28.952381 C95.5332136,27.6900158 96.5556444,26.6666667 97.8168761,26.6666667 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M170.894075,26.6666667 C172.155307,26.6666667 173.177738,27.6900158 173.177738,28.952381 L173.177738,51.8095238 C173.177738,53.0718888 172.155307,54.0952381 170.894075,54.0952381 C169.632844,54.0952381 168.610413,53.0718888 168.610413,51.8095238 L168.610413,28.952381 C168.610413,27.6900158 169.632844,26.6666667 170.894075,26.6666667 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M106.951526,28.952381 C108.212758,28.952381 109.235189,29.9757301 109.235189,31.2380952 L109.235189,49.5238095 C109.235189,50.7861745 108.212758,51.8095238 106.951526,51.8095238 C105.690294,51.8095238 104.667864,50.7861745 104.667864,49.5238095 L104.667864,31.2380952 C104.667864,29.9757301 105.690294,28.952381 106.951526,28.952381 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M180.028725,28.952381 C181.289957,28.952381 182.312388,29.9757301 182.312388,31.2380952 L182.312388,49.5238095 C182.312388,50.7861745 181.289957,51.8095238 180.028725,51.8095238 C178.767494,51.8095238 177.745063,50.7861745 177.745063,49.5238095 L177.745063,31.2380952 C177.745063,29.9757301 178.767494,28.952381 180.028725,28.952381 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M134.355476,28.952381 C135.616708,28.952381 136.639138,29.9757301 136.639138,31.2380952 L136.639138,49.5238095 C136.639138,50.7861745 135.616708,51.8095238 134.355476,51.8095238 C133.094244,51.8095238 132.071813,50.7861745 132.071813,49.5238095 L132.071813,31.2380952 C132.071813,29.9757301 133.094244,28.952381 134.355476,28.952381 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M152.624776,30.0952381 C153.886007,30.0952381 154.908438,31.1185872 154.908438,32.3809524 L154.908438,48.3809524 C154.908438,49.6433173 153.886007,50.6666667 152.624776,50.6666667 C151.363544,50.6666667 150.341113,49.6433173 150.341113,48.3809524 L150.341113,32.3809524 C150.341113,31.1185872 151.363544,30.0952381 152.624776,30.0952381 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M88.6822262,32.3809524 C89.943458,32.3809524 90.9658887,33.4043015 90.9658887,34.6666667 L90.9658887,46.0952381 C90.9658887,47.357603 89.943458,48.3809524 88.6822262,48.3809524 C87.4209944,48.3809524 86.3985637,47.357603 86.3985637,46.0952381 L86.3985637,34.6666667 C86.3985637,33.4043015 87.4209944,32.3809524 88.6822262,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M161.759425,32.3809524 C163.020657,32.3809524 164.043088,33.4043015 164.043088,34.6666667 L164.043088,46.0952381 C164.043088,47.357603 163.020657,48.3809524 161.759425,48.3809524 C160.498194,48.3809524 159.475763,47.357603 159.475763,46.0952381 L159.475763,34.6666667 C159.475763,33.4043015 160.498194,32.3809524 161.759425,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M116.086176,32.3809524 C117.347408,32.3809524 118.369838,33.4043015 118.369838,34.6666667 L118.369838,46.0952381 C118.369838,47.357603 117.347408,48.3809524 116.086176,48.3809524 C114.824944,48.3809524 113.802513,47.357603 113.802513,46.0952381 L113.802513,34.6666667 C113.802513,33.4043015 114.824944,32.3809524 116.086176,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M189.163375,32.3809524 C190.424607,32.3809524 191.447038,33.4043015 191.447038,34.6666667 L191.447038,46.0952381 C191.447038,47.357603 190.424607,48.3809524 189.163375,48.3809524 C187.902143,48.3809524 186.879713,47.357603 186.879713,46.0952381 L186.879713,34.6666667 C186.879713,33.4043015 187.902143,32.3809524 189.163375,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M143.490126,32.3809524 C144.751357,32.3809524 145.773788,33.4043015 145.773788,34.6666667 L145.773788,46.0952381 C145.773788,47.357603 144.751357,48.3809524 143.490126,48.3809524 C142.228894,48.3809524 141.206463,47.357603 141.206463,46.0952381 L141.206463,34.6666667 C141.206463,33.4043015 142.228894,32.3809524 143.490126,32.3809524 Z" id="Path" fill="#37A8FF" fill-rule="nonzero"></path>
+        <path d="M43.6031289,49.3105246 L43.937266,49.3105246 C44.5887999,49.3105246 45.116973,49.8391722 45.116973,50.4912914 L45.116973,52.9144712 C45.116973,53.5665909 44.5887999,54.0952381 43.937266,54.0952381 L43.6031289,54.0952381 C42.9515951,54.0952381 42.423422,53.5665909 42.423422,52.9144712 L42.423422,50.4912914 C42.423422,49.8391722 42.9515951,49.3105246 43.6031289,49.3105246 Z" id="Rectangle" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M43.8481579,28.952381 C46.5276427,28.952381 48.6997943,31.1264842 48.6997943,33.8083764 L48.6997943,41.4774827 C48.6997943,44.1593749 46.5276427,46.3334781 43.8481579,46.3334781 C41.1686732,46.3334781 38.9965216,44.1593749 38.9965216,41.4774827 L38.9965216,33.8083764 C38.9965216,31.1264842 41.1686732,28.952381 43.8481579,28.952381 Z" id="Rectangle" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M35.016158,40.687141 C35.6155766,40.687141 36.1015014,41.1735025 36.1015014,41.7734594 C36.1015014,45.5539211 39.5589126,48.7799303 43.7701975,48.7799303 C48.0292505,48.7799303 51.4388937,45.7047695 51.4388937,41.9709718 C51.4388937,41.3710149 51.9248182,40.8846533 52.524237,40.8846533 C53.1236558,40.8846533 53.6095803,41.3710149 53.6095803,41.9709718 C53.6095803,46.9580564 49.1805897,50.9525672 43.7701975,50.9525672 C38.3927905,50.9525672 33.9308146,46.7892282 33.9308146,41.7734594 C33.9308146,41.1735025 34.4167394,40.687141 35.016158,40.687141 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+    </g>
+</svg>

+ 41 - 0
Telegram/Resources/art/recording/recording_info_video_landscape.svg

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="120px" height="77px" viewBox="0 0 120 77" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>record_td_landscape</title>
+    <g id="record_td_landscape" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M9.16666667,5.26258992 L88.0555555,5.26258992 C88.6692052,5.26258992 89.1666667,5.75844141 89.1666667,6.37010522 L89.1666667,70.6298949 C89.1666667,71.2415585 88.6692052,71.7374101 88.0555555,71.7374101 L9.16666667,71.7374101 C7.3257175,71.7374101 5.83333332,70.2498556 5.83333332,68.4148643 L5.83333332,8.58513578 C5.83333332,6.75014437 7.3257175,5.26258992 9.16666667,5.26258992 Z" id="Rectangle" fill="#0A9AD8" fill-rule="nonzero"></path>
+        <path d="M74.175461,39.4799628 C74.175461,39.4869105 74.817287,41.6527331 75.1547623,43.9104391 C75.473963,46.0458881 75.4898313,48.2806063 75.4898313,48.2674632 C75.5304818,49.6193866 75.5846828,51.4580021 72.725589,54.3511176 C72.7526893,54.3375982 72.5494363,54.5539059 71.0182628,55.8787906 C73.3353483,60.8403487 73.9857583,67.0758169 73.4166495,71.7669903 L21.8987622,71.7669903 C21.3161033,66.9541439 22.0207141,60.7457142 24.2971489,55.8652715 C24.2835987,55.8517521 22.8472767,54.5944637 22.8608269,54.6079829 C21.3296535,53.1208674 19.8120303,51.160579 19.8120303,49.0380595 C19.8120303,49.0317313 19.6476379,47.7958611 19.8540957,45.3139483 C20.0605534,42.8320357 21.6277581,37.9387704 21.7226095,37.5602319 C25.3676153,24.7034427 37.8338058,9.56190341 42.03437,10.5082496 C43.1183865,10.7515958 44.1888528,12.049442 45.1644678,13.9691729 C45.7606768,15.1859037 46.4788378,17.1597116 46.61434,17.5517693 C48.9991763,17.5247308 48.57912,17.5517693 48.7959233,17.5517693 C49.2701805,16.1592884 49.5953855,15.4022114 49.5818353,15.4157307 C50.2457955,13.8069421 51.655017,10.9003073 53.362343,10.5082496 C57.6984093,9.53486495 71.0453633,25.7444235 74.175461,39.4799628 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M40.5130087,14.8004607 C41.4545255,14.724296 42.3404242,15.2703395 43.2401358,16.2211174 C43.844097,16.9402459 44.1541125,17.3103582 44.1701823,17.3314543 C44.5770235,17.8655479 44.4723282,18.6271598 43.936339,19.0325621 C43.4003495,19.4379644 42.6360345,19.3336395 42.2291933,18.7995458 C41.986018,18.4899876 41.859044,18.3286785 41.8482713,18.3156185 L40.7542925,17.2813836 L40.7238148,17.2641429 L39.7325905,18.5678988 C39.670905,18.6704726 39.4567875,19.0863831 39.0902378,19.8156303 C38.8095898,20.4250562 38.0862888,20.6923879 37.4746997,20.4127325 C36.863111,20.133077 36.5948303,19.4123342 36.8754783,18.8029084 L37.1182785,18.2914213 C37.2236442,18.0768659 37.396533,17.7560017 37.636944,17.3288288 C38.5371665,15.8019494 39.4390397,14.8788265 40.5130087,14.8004607 Z" id="Path" fill="#CABCB4" fill-rule="nonzero"></path>
+        <path d="M64.4562625,57.51838 C65.0461218,57.1956882 65.7868188,57.4105788 66.110656,57.9983519 C66.434493,58.5861248 66.2188398,59.3242022 65.6289805,59.646894 C64.6740205,60.1693201 63.6660473,60.6703037 62.630571,61.1433322 C60.832103,61.9079537 59.9107008,62.2989963 59.8663643,62.3164596 L57.2760995,63.2679242 C57.0121855,63.3579578 55.7335118,63.7430351 53.4400788,64.4231557 C53.399373,64.4336807 52.6414868,64.6066673 51.1664195,64.9421162 C49.841893,65.1997916 48.6707235,65.3396191 47.739007,65.3396191 C46.6094163,65.3396191 45.1279263,65.1361679 43.4474528,64.7677954 L40.509949,64.0139408 C40.46734,64.0015585 39.4183938,63.6628116 37.3631103,62.9976998 C35.0519835,62.0964758 33.8524645,61.626955 33.7645538,61.5891375 L30.684499,60.1442387 C30.195084,59.8878868 29.8904378,59.7271255 29.7705605,59.6619556 C29.1798465,59.34082 28.962234,58.6033138 29.2845093,58.0146891 C29.6067845,57.4260642 30.3469085,57.2092215 30.9376225,57.5303569 C31.5036995,57.838099 32.0901055,58.1381032 32.690561,58.4288397 L35.6549235,59.7469342 C35.7178573,59.7726505 38.805909,60.9280903 38.8683885,60.9493811 L42.486846,62.0428091 C42.563244,62.0627458 43.520094,62.2726207 45.3573965,62.6724328 C46.2758583,62.8282629 47.0840855,62.9114246 47.739007,62.9114246 C48.3222293,62.9114246 49.0274493,62.8446472 49.8240148,62.7186528 C52.5754125,62.0856116 53.9708033,61.7634157 54.0101865,61.752065 L56.564689,60.9442341 L59.573909,59.8160545 C61.95057,58.7510394 63.4072285,58.0769116 63.943884,57.7936712 L64.2866305,57.610619 C64.343372,57.5799509 64.3999183,57.5492039 64.4562625,57.51838 Z" id="Path" fill="#CABCB4" fill-rule="nonzero"></path>
+        <path d="M46.885344,43.6844439 C47.8880595,45.090444 49.7308875,46.0773477 51.8989208,46.1990209 L51.8989208,46.8073862 C51.8989208,50.6468482 50.7607033,53.7562714 47.6848063,53.7562714 C44.64956,53.7562714 43.4977923,50.7009251 43.470692,46.9155401 C43.470692,46.3747708 43.470692,46.0458029 43.470692,45.9286363 C44.9341143,45.5365785 46.1400828,44.7389439 46.885344,43.6844439 Z" id="Path" fill="#F23C57" fill-rule="nonzero"></path>
+        <path d="M34.9609983,39.8510278 C35.6170285,39.7017956 36.270252,40.1107558 36.4200138,40.7644658 C36.7971668,42.4107383 37.729436,43.8209474 39.0211698,44.6728535 C41.5888978,46.3662851 44.882324,45.3493015 46.4210183,42.3125645 C46.7243048,41.7140047 47.4571178,41.4737684 48.057802,41.7759822 C48.6584865,42.0781957 48.8995753,42.8084171 48.5962888,43.406977 C46.4204265,47.7012159 41.5011325,49.2202545 37.6762575,46.6977268 C35.8447725,45.4898517 34.5567008,43.5414332 34.044318,41.304883 C33.8945563,40.6511732 34.304968,40.0002598 34.9609983,39.8510278 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M58.312739,40.7644658 C58.4625008,40.1107558 59.1157243,39.7017956 59.7717545,39.8510278 C60.4277848,40.0002598 60.8381965,40.6511732 60.6884348,41.304883 C60.176052,43.5414332 58.8879803,45.4898517 57.0564953,46.6977268 C53.2316203,49.2202545 48.3123263,47.7012159 46.136464,43.406977 C45.8331778,42.8084171 46.0742665,42.0781957 46.6749508,41.7759822 C47.2756353,41.4737684 48.0084483,41.7140047 48.3117345,42.3125645 C49.850429,45.3493015 53.1438553,46.3662851 55.711583,44.6728535 C57.0033168,43.8209474 57.935586,42.4107383 58.312739,40.7644658 Z" id="Path-Copy" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M47.468003,43.7250015 C49.3379315,43.7250015 51.9531215,40.9941167 51.9531215,38.6823283 C51.9531215,36.3705396 50.3270968,36.1271934 47.400252,36.1271934 C44.4734073,36.1271934 42.8473823,36.3705396 42.8473823,38.6823283 C42.8473823,40.9941167 45.5980745,43.7250015 47.468003,43.7250015 Z" id="Oval" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M38.701019,30.4626353 C36.8310905,30.962847 35.7877245,33.125924 36.0316283,34.0317124 C36.275532,34.9375011 38.0641593,35.5458663 39.9340878,35.0456549 C41.8040165,34.5454432 43.023535,33.0177702 42.8067318,32.2201354 C42.5899285,31.4089815 40.5709475,29.9624239 38.701019,30.4626353 Z" id="Oval-Copy-3" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M56.7227945,30.4626353 C58.592723,30.962847 59.636089,33.125924 59.3921852,34.0317124 C59.1482815,34.9375011 57.3596542,35.5458663 55.4897255,35.0456549 C53.619797,34.5454432 52.4002782,33.0177702 52.6170817,32.2201354 C52.833885,31.4225009 54.8393155,29.9624239 56.7227945,30.4626353 Z" id="Oval-Copy-4" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M51.925176,16.3090342 C52.8606485,15.2995095 53.7683583,14.7222917 54.7250875,14.7997248 C55.7860473,14.8771785 56.6728375,15.7638522 57.5493765,17.2256689 C57.842431,17.7415165 58.055606,18.1375372 58.1889015,18.4137309 C58.2972335,18.6430962 58.3583273,18.772822 58.3721823,18.8029084 C58.6528303,19.4123342 58.3845498,20.133077 57.772961,20.4127325 C57.161372,20.6923879 56.438071,20.4250562 56.157423,19.8156303 L55.5096673,18.5588251 C55.2122455,18.0543638 54.5848463,17.3156962 54.5447338,17.2816756 C54.1999508,17.5123321 53.9414935,17.7180916 53.769362,17.8989543 L53.0184675,18.7995458 C52.6116263,19.3336395 51.847311,19.4379644 51.3113218,19.0325621 C50.7753325,18.6271598 50.6706373,17.8655479 51.0774785,17.3314543 L51.925176,16.3090342 Z" id="Path-Copy-2" fill="#CABCB4" fill-rule="nonzero"></path>
+        <path d="M39.0857368,32.8474823 C39.6149,32.3195282 39.7864885,31.6347423 39.4689905,31.31797 C39.1514925,31.0011978 38.4651378,31.1723942 37.935974,31.7003478 C37.4068108,32.2283019 37.2352223,32.9130876 37.5527203,33.2298598 C37.8702183,33.5466321 38.556573,33.3754357 39.0857368,32.8474823 Z" id="Oval-Copy-7" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M55.3486545,32.954987 C55.9763015,32.5483632 56.2868768,31.9141422 56.0423438,31.5384146 C55.7978105,31.1626872 55.0907685,31.1877336 54.463121,31.5943569 C53.835474,32.000981 53.5248988,32.6352021 53.7694318,33.0109294 C54.0139653,33.3866568 54.721007,33.3616106 55.3486545,32.954987 Z" id="Oval-Copy-8" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M91.9444445,5.26258992 L110.833333,5.26258992 C112.674283,5.26258992 114.166667,6.75014437 114.166667,8.58513578 L114.166667,25.2054344 C114.166667,25.8170983 113.669205,26.4142395 113.055556,26.4142395 L91.9444445,26.4142395 C91.3307948,26.4142395 90.8333333,25.8170983 90.8333333,25.2054344 L90.8333333,6.37010522 C90.8333333,5.75844141 91.3307948,5.26258992 91.9444445,5.26258992 Z" id="Rectangle" fill="#FFCA3D" fill-rule="nonzero"></path>
+        <path d="M103.2142,7.97411003 C107.632602,7.97411003 109.969538,10.9765406 110.178,14.3005289 C110.380517,17.5297332 110.201469,22.6688803 109.0483,26.4142395 L97.5363535,26.4142395 C96.9669115,23.4651448 96.2977453,19.3968245 96.3087163,16.4487992 C95.6055153,16.0427077 95.1394328,15.7437666 94.910469,15.5519759 C94.0706783,14.8485281 93.6948253,14.2919279 93.7565138,13.9735572 C94.0114313,12.6579448 95.058614,12.4439806 96.5508963,12.6122341 C97.3323058,10.02525 99.5632098,7.97411003 103.2142,7.97411003 Z" id="Path" fill="#4CBFEA" fill-rule="nonzero"></path>
+        <path d="M93.75,14.2803021 C94.7387305,14.2869003 100.665601,16.0421213 100.779908,16.0623312 C101.710781,16.2269147 102.358415,16.0406637 102.722809,15.5035784 L102.727941,15.8398107 C102.634666,22.8737477 102.587527,26.3985574 102.586524,26.4142395 L97.333057,26.4142395 C96.5029448,23.4278615 96.1931475,19.365188 96.204203,16.3958621 L96.1288678,16.3519496 C94.9332718,15.5938989 94.3316638,15.2114978 94.3240435,15.2047464 L94.2901418,15.1742545 C93.9997255,14.9090217 93.7985318,14.6182939 93.75,14.2803021 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M104.691488,12.1608256 C105.876093,12.443808 106.596703,13.5928637 106.301507,14.7272315 C106.249909,14.9255078 106.039995,15.0462441 105.83265,14.9969034 C105.625305,14.9475627 105.499047,14.7468294 105.550644,14.5485531 C105.742783,13.8102114 105.273946,13.0626231 104.503958,12.8786861 C103.734236,12.6948126 102.954477,13.1437115 102.762404,13.8817999 C102.710806,14.0800763 102.500892,14.2008125 102.293547,14.1514718 C102.086202,14.102131 101.959944,13.9013978 102.011541,13.7031214 C102.306804,12.5685003 103.506617,11.8777806 104.691488,12.1608256 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M102.365249,14.9966072 C102.574812,15.0062043 102.737019,15.1861129 102.727547,15.3984443 C102.688118,16.2823197 101.977686,16.6059177 100.863027,16.4063951 C100.775397,16.3907082 100.39878,16.2862544 99.7331758,16.0930336 L98.4516848,15.6415518 C96.8548668,15.0830675 95.593332,14.7499239 94.0835805,14.562086 C93.875367,14.5361809 93.7273033,14.3441607 93.7528708,14.133197 C93.778438,13.9222333 93.967955,13.7722137 94.1761683,13.7981189 C95.681789,13.9854428 96.9471038,14.3108231 98.4958953,14.8433357 L99.9405645,15.3515853 C100.555982,15.5337867 100.907523,15.6327335 100.995189,15.6484258 C101.697446,15.77413 101.940227,15.6770468 101.966787,15.3910546 C102.092719,15.1216917 102.22554,14.9902092 102.365249,14.9966072 Z" id="Path" fill="#1683AC" fill-rule="nonzero"></path>
+        <path d="M105.342285,17.6077403 C105.449023,17.440419 105.661516,17.3862365 105.831012,17.4771775 L105.862251,17.4959374 L107.653171,18.6918577 C107.748825,18.7557323 107.810292,18.8601897 107.821629,18.975104 L107.82353,19.0137547 L107.82353,23.8401474 C107.82353,24.0842782 107.603986,24.2665628 107.370484,24.2163065 C104.918229,23.6885105 103.69853,21.5111838 103.69853,17.8178344 C103.69853,17.6055406 103.866738,17.4333981 104.074233,17.4333981 C104.281728,17.4333981 104.449937,17.6055406 104.449937,17.8178344 C104.449937,20.9087224 105.316738,22.7106219 107.040407,23.3266985 L107.071928,23.3375379 L107.071928,19.2215938 L105.451561,18.1397314 C105.288021,18.030525 105.235064,17.8131177 105.323949,17.6397028 L105.342285,17.6077403 Z" id="Path-11" fill="#1683AC" fill-rule="nonzero"></path>
+        <path d="M108.990216,13.783927 C108.786461,13.8348866 108.580611,13.7084298 108.530439,13.5014778 C108.471102,13.2567271 108.387979,13.0082108 108.282177,12.7603458 C108.048814,12.2136439 107.709765,11.6803939 107.28247,11.1972642 C106.855196,10.7141701 106.369777,10.3152109 105.860217,10.0218583 C105.629222,9.88887579 105.395234,9.77878492 105.162451,9.69316556 C104.965148,9.6205959 104.863122,9.39931123 104.934571,9.19891243 C105.00602,8.99851365 105.223887,8.89488767 105.42119,8.96745733 C105.694614,9.06802466 105.967329,9.19633622 106.234928,9.35039253 C106.816569,9.68524149 107.366171,10.1369525 107.847779,10.6814707 C108.32934,11.2259638 108.713115,11.8295599 108.979376,12.4533316 C109.101862,12.7402812 109.198668,13.0297058 109.268303,13.3169365 C109.318475,13.5238886 109.193972,13.7329673 108.990216,13.783927 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M91.9444445,27.9748202 L113.055556,27.9748202 C113.669205,27.9748202 114.166667,28.4706715 114.166667,29.0823353 L114.166667,47.9176647 C114.166667,48.5293285 113.669205,49.0251798 113.055556,49.0251798 L91.9444445,49.0251798 C91.3307948,49.0251798 90.8333333,48.5293285 90.8333333,47.9176647 L90.8333333,29.0823353 C90.8333333,28.4706715 91.3307948,27.9748202 91.9444445,27.9748202 Z" id="Rectangle-Copy-5" fill="#FE5BA3" fill-rule="nonzero"></path>
+        <path d="M91.9444445,50.6870504 L113.055556,50.6870504 C113.669205,50.6870504 114.166667,51.1829017 114.166667,51.7945656 L114.166667,68.4148643 C114.166667,70.2498556 112.674283,71.7374101 110.833333,71.7374101 L91.9444445,71.7374101 C91.3307948,71.7374101 90.8333333,71.2415585 90.8333333,70.6298949 L90.8333333,51.7945656 C90.8333333,51.1829017 91.3307948,50.6870504 91.9444445,50.6870504 Z" id="Rectangle-Copy-6" fill="#4DC17B" fill-rule="nonzero"></path>
+        <path d="M102.25,52.3300971 C104.064924,52.3300971 106.494853,54.4941995 107.590007,57.0290814 C108.926565,60.1227278 109.75,64.5446101 109.75,65.4829234 C109.75,65.8797612 109.465807,66.2975642 109.0014,66.7051419 L108.275763,67.2454656 C108.734593,68.2433846 108.946429,69.4043108 108.946429,70.6431768 C108.946429,70.9457113 108.926633,71.4749893 108.888273,71.7669903 L95.573462,71.7669903 C95.5351018,71.4749893 95.515306,70.9457113 95.515306,70.6431768 C95.515306,69.4347129 95.7168725,68.3004102 96.152671,67.3191466 L95.9808008,67.2012549 C95.2383448,66.6744278 94.75,66.0858807 94.75,65.4829234 C94.75,64.4035757 95.566779,60.0431632 96.8797585,57.0076953 C97.9738345,54.4783084 100.435077,52.3300971 102.25,52.3300971 Z" id="Path" fill="#112F40" fill-rule="nonzero"></path>
+        <path d="M102.261954,61.3438098 C102.88843,61.3438098 103.307995,61.2569433 103.656078,61.1556076 L104.289433,60.9572583 C104.533466,60.8877973 104.788283,60.8385647 105.118273,60.8439809 C106.72513,60.8703535 106.90094,64.5129651 106.889183,66.1986132 C106.880102,67.5004661 103.47449,68.664433 102.25,68.664433 C101.02551,68.664433 97.4285715,67.5004661 97.4285715,66.1425046 L97.4313878,65.7434914 C97.4548043,64.2006391 97.663843,60.8270556 99.4181933,60.8270556 C99.638903,60.8270556 99.8337898,60.8619881 100.028218,60.9136885 L100.872784,61.1693216 C101.231515,61.2652115 101.666038,61.3438098 102.261954,61.3438098 Z" id="Mask" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M99.4181933,60.8270556 C99.638903,60.8270556 99.8337898,60.8619881 100.028218,60.9136885 L100.872784,61.1693216 C101.231515,61.2652115 101.666038,61.3438098 102.261954,61.3438098 C102.88843,61.3438098 103.307995,61.2569433 103.656078,61.1556076 L104.289433,60.9572583 C104.533466,60.8877973 104.788283,60.8385647 105.118273,60.8439809 C105.478219,60.8498884 105.766356,61.0372536 105.996662,61.343432 L105.933366,62.8865975 L105.655612,64.7457443 C104.975579,66.8910871 103.843542,67.5004661 102.269133,67.5004661 C100.694723,67.5004661 99.5723178,66.8910871 98.8922845,64.7457443 C98.8050003,64.2669887 98.7205035,63.6002265 98.638794,62.7454582 C98.6008363,62.3483809 98.5432378,61.2050488 98.5429283,61.1876999 C98.7804968,60.9609601 99.0686768,60.8270556 99.4181933,60.8270556 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M102.25,66.5692924 C103.348934,66.5692924 104.239796,65.4441246 104.239796,64.7845433 C104.239796,63.6702853 103.348934,63.4653808 102.25,63.4653808 C101.151066,63.4653808 100.260204,63.6702853 100.260204,64.7845433 C100.260204,65.4441246 101.151066,66.5692924 102.25,66.5692924 Z" id="Oval" fill="#0D222E" fill-rule="nonzero"></path>
+        <path d="M106.970793,67.8435271 C107.138274,67.750305 107.349413,67.8108706 107.442385,67.9788041 C107.535356,68.1467376 107.474953,68.3584457 107.307471,68.4516678 C106.903146,68.6767189 106.172738,69.0035268 105.116247,69.4320909 C105.016337,69.4679318 104.794238,69.5422161 104.44995,69.6549438 C103.576411,69.9255996 102.778547,70.0861309 102.251361,70.0861309 C101.929201,70.0861309 101.194351,69.9426061 100.046812,69.6555566 C99.1225755,69.3244815 98.6353858,69.1485422 98.585242,69.127739 C97.848853,68.7912533 97.379051,68.5668758 97.1758355,68.4546068 C97.00806,68.3619172 96.946989,68.1504017 97.0394295,67.9821739 C97.1318698,67.8139461 97.3428163,67.7527102 97.5105918,67.8454 C97.8941468,68.0573 98.3108265,68.25649 98.7360393,68.4368654 L100.819361,69.1536913 C101.397379,69.3047451 101.902378,69.3905734 102.251361,69.3905734 C102.600083,69.3905734 103.103441,69.304695 103.679035,69.1535076 L104.691113,68.8445846 C105.181443,68.6754929 106.875458,67.8965913 106.970793,67.8435271 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M102.5,30.7446044 C106.745647,30.7446044 110.189142,34.0574222 110.189142,38.14695 C110.189142,39.9020569 109.555397,41.5155537 108.496201,42.7814621 C109.728237,44.1331949 110.277778,45.9869998 110.277778,48.0382003 C110.277778,48.3729151 110.255619,48.7033388 110.211301,49.0251798 L94.788699,49.0251798 C94.7443813,48.7033388 94.7222223,48.3729151 94.7222223,48.0382003 C94.7222223,45.9869998 95.2717633,44.1331949 96.5037988,42.7814621 C95.4446028,41.5155537 94.8108577,39.9020569 94.8108577,38.14695 C94.8108577,34.0574222 98.2543527,30.7446044 102.5,30.7446044 Z" id="Path" fill="#FFE934" fill-rule="nonzero"></path>
+        <path d="M107.08304,43.0985663 C107.263989,42.9842186 107.503676,43.0377353 107.618395,43.2180995 C107.733114,43.3984634 107.679423,43.6373747 107.498474,43.7517225 C107.057364,44.0304734 106.579716,44.273003 106.073054,44.4755372 C104.968595,44.9115697 103.752383,45.1421002 102.5,45.1421002 C101.247617,45.1421002 100.031405,44.9115697 98.9265333,44.4753737 C98.4237678,44.2762205 97.9495623,44.0348505 97.5015263,43.7517225 C97.3205768,43.6373747 97.2668863,43.3984634 97.3816053,43.2180995 C97.4963243,43.0377353 97.736011,42.9842186 97.9169605,43.0985663 C98.3242775,43.3559626 98.7553408,43.5753735 99.2126545,43.7565229 C100.226009,44.156588 101.345271,44.3687419 102.5,44.3687419 C103.65473,44.3687419 104.773991,44.156588 105.785799,43.7571371 C106.247296,43.5726538 106.682532,43.3516599 107.08304,43.0985663 Z" id="Path" fill="#FF9000" fill-rule="nonzero"></path>
+        <ellipse id="Oval" fill="#000000" fill-rule="nonzero" cx="99.4420703" cy="37.6534603" rx="1.17442228" ry="1.33027662"></ellipse>
+        <ellipse id="Oval-Copy-3" fill="#FFFFFF" fill-rule="nonzero" cx="99.1761633" cy="37.3316192" rx="1" ry="1"></ellipse>
+        <ellipse id="Oval-Copy-2" fill="#000000" fill-rule="nonzero" cx="105.55793" cy="37.6534603" rx="1.17442228" ry="1.33027662"></ellipse>
+        <path d="M102.544318,38.2542305 C103.204653,38.2542305 103.510446,38.5202856 103.763058,38.7949235 L103.794081,38.8292532 L103.896012,38.9451161 L103.927034,38.9794459 L103.958056,39.0094843 C104.144191,39.2111713 104.343622,39.3699462 104.698164,39.3699462 C105.863723,39.3699462 106.413264,39.7175347 106.426559,40.421294 L106.426559,40.4427501 L106.426559,40.4770797 C106.382241,41.6399989 104.281577,42.3137198 102.579772,42.3308846 L102.526591,42.3308846 L102.504432,42.3308846 L102.482273,42.3308846 C100.771605,42.3308846 98.6266223,41.6528727 98.5823045,40.4770797 L98.5823045,40.4427501 C98.5823045,39.721826 99.1362773,39.3699462 100.3107,39.3699462 C100.647515,39.3699462 100.842514,39.224045 101.019785,39.0395228 L101.050807,39.0094843 L101.08183,38.9794459 L101.112852,38.9451161 L101.214783,38.8292532 C101.219215,38.8249619 101.223647,38.8163795 101.228079,38.8120885 L101.259101,38.7777587 C101.507281,38.5117033 101.813074,38.2542305 102.460114,38.2542305 C102.473409,38.2542305 102.491137,38.2542305 102.504432,38.2542305 C102.513295,38.2542305 102.531023,38.2542305 102.544318,38.2542305 Z" id="Path" fill="#FF4B00" fill-rule="nonzero"></path>
+        <path d="M105.067531,40.1325146 C105.263202,40.0455276 105.492571,40.1331202 105.57984,40.3281582 C105.66711,40.5231962 105.579233,40.7518226 105.383562,40.8388097 C104.621871,41.1774248 103.668289,41.344375 102.522159,41.344375 C101.376029,41.344375 100.422447,41.1774248 99.6607563,40.8388097 C99.465085,40.7518226 99.377208,40.5231962 99.4644775,40.3281582 C99.551747,40.1331202 99.7811158,40.0455276 99.9767873,40.1325146 C100.629104,40.4225066 101.477361,40.5710167 102.522159,40.5710167 C103.566958,40.5710167 104.415214,40.4225066 105.067531,40.1325146 Z" id="Path" fill="#921000" fill-rule="nonzero"></path>
+        <ellipse id="Oval-Copy-4" fill="#FFFFFF" fill-rule="nonzero" cx="105.247705" cy="37.3316192" rx="1" ry="1"></ellipse>
+    </g>
+</svg>

+ 41 - 0
Telegram/Resources/art/recording/recording_info_video_portrait.svg

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="83px" height="120px" viewBox="0 0 83 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>record_td_portrait</title>
+    <g id="record_td_portrait" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M77,9.55160931 L77,84.7273399 C77,85.3811732 76.470394,86 75.8170923,86 L7.18290784,86 C6.52960589,86 6,85.3811732 6,84.7273399 L6,9.55160931 C6,7.59010964 7.58881763,6 9.5487235,6 L73.4512766,6 C75.4111823,6 77,7.59010964 77,9.55160931 Z" id="Rectangle" fill="#0A9AD8" fill-rule="nonzero"></path>
+        <path d="M77,89.8056802 L77,110.134529 C77,112.11582 75.7238703,114 73.7458927,114 L55.8305058,114 C55.1711798,114 55,112.66043 55,112 L55,89.5084229 C55,88.8479926 55.9805666,88 56.6398926,88 C57.0794432,88 63.57732,88 76.1335231,88 C76.7928488,88 77,89.14525 77,89.8056802 Z" id="Rectangle" fill="#FFCA3D" fill-rule="nonzero"></path>
+        <path d="M53,89.5047607 L53,111.526158 C53,112.186589 51.6593259,114 51,114 L32.3484913,114 C31.6891654,114 30,112.186589 30,111.526158 C30,97.0575332 30,89.7170673 30,89.5047607 C30,89.1863009 31.6615311,88 32.0029297,88 L51.1621094,88 C51.8214353,88 53,88.8443305 53,89.5047607 Z" id="Rectangle-Copy-5" fill="#FE5BA3" fill-rule="nonzero"></path>
+        <path d="M28,90 L28,112 C28,112.66043 26.6593259,114 26,114 L9,114 C7.02202225,114 6,113.11582 6,111.134529 L6,89.8056802 C6,89.14525 7.20715113,88 7.86647705,88 L26.1694942,88 C26.8288202,88 28,89.3395698 28,90 Z" id="Rectangle-Copy-6" fill="#4DC17B" fill-rule="nonzero"></path>
+        <path d="M41.3656958,92.5560538 C46.2043205,92.5560538 50.1287584,96.3592496 50.1287584,101.054127 C50.1287584,103.069033 49.4065002,104.921367 48.1993694,106.374661 C49.6034796,107.926483 50.2297735,110.054696 50.2297735,112.409524 C50.2297735,112.793785 50.2045197,113.630519 50.1540122,114 L32.5773794,114 C32.5268719,113.630519 32.5016181,112.793785 32.5016181,112.409524 C32.5016181,110.054696 33.1279119,107.926483 34.5320221,106.374661 C33.3248914,104.921367 32.6026332,103.069033 32.6026332,101.054127 C32.6026332,96.3592496 36.5270711,92.5560538 41.3656958,92.5560538 Z" id="Path" fill="#FFE934" fill-rule="nonzero"></path>
+        <path d="M35.5300673,106.874427 C35.6619508,106.666553 35.9370974,106.605129 36.1446243,106.737234 C36.6086526,107.032618 37.0997263,107.284407 37.6206979,107.492285 C38.7751269,107.951388 40.0502062,108.194849 41.3656958,108.194849 C42.6811854,108.194849 43.9562647,107.951388 45.1089166,107.492997 C45.6346668,107.281287 46.1304986,107.027678 46.5867673,106.737234 C46.7942941,106.605129 47.0694408,106.666553 47.2013243,106.874427 C47.3332078,107.082302 47.2718866,107.357909 47.0643598,107.490013 C46.5614652,107.810139 46.0169132,108.088667 45.4392689,108.321269 C44.1800966,108.822026 42.7935134,109.086778 41.3656958,109.086778 C39.9378782,109.086778 38.551295,108.822026 37.2916478,108.321079 C36.7184525,108.092363 36.1778208,107.815164 35.6670318,107.490013 C35.459505,107.357909 35.3981838,107.082302 35.5300673,106.874427 Z" id="Path" fill="#FF9000" fill-rule="nonzero"></path>
+        <ellipse id="Oval" fill="#000000" fill-rule="nonzero" cx="37.8806738" cy="100.487589" rx="1.33845047" ry="1.52719005"></ellipse>
+        <ellipse id="Oval-Copy-3" fill="#FFFFFF" fill-rule="nonzero" cx="37.5776284" cy="100.118108" rx="1" ry="1"></ellipse>
+        <ellipse id="Oval-Copy-2" fill="#000000" fill-rule="nonzero" cx="44.8507178" cy="100.487589" rx="1.33845047" ry="1.52719005"></ellipse>
+        <path d="M41.4162033,101.177288 C42.1687662,101.177288 42.5172681,101.482726 42.8051613,101.798017 L42.8405166,101.837428 L42.9566841,101.970442 L42.9920394,102.009853 L43.0273947,102.044338 C43.2395264,102.275879 43.4668104,102.458157 43.8708711,102.458157 C45.19922,102.458157 45.8255138,102.857197 45.840666,103.66513 L45.840666,103.689762 L45.840666,103.729173 C45.7901585,105.064233 43.3960998,105.837681 41.4566095,105.857387 L41.3960005,105.857387 L41.3707464,105.857387 L41.3454927,105.857387 C39.3959008,105.857387 36.9513346,105.079012 36.9008271,103.729173 L36.9008271,103.689762 C36.9008271,102.862123 37.5321716,102.458157 38.870622,102.458157 C39.2544796,102.458157 39.4767128,102.290659 39.6787431,102.078823 L39.7140984,102.044338 L39.7494537,102.009853 L39.784809,101.970442 L39.9009765,101.837428 C39.9060272,101.832502 39.9110778,101.822649 39.9161287,101.817722 L39.951484,101.778311 C40.2343263,101.472873 40.5828285,101.177288 41.3202389,101.177288 C41.3353911,101.177288 41.3555942,101.177288 41.3707464,101.177288 C41.380848,101.177288 41.4010511,101.177288 41.4162033,101.177288 Z" id="Path" fill="#FF4B00" fill-rule="nonzero"></path>
+        <path d="M44.2902005,103.331896 C44.514676,103.231372 44.7780041,103.33216 44.8783603,103.557011 C44.9787161,103.781863 44.8780973,104.045632 44.6536215,104.146156 C43.7850075,104.535136 42.6976887,104.726897 41.3909496,104.726897 C40.0842107,104.726897 38.9968916,104.535136 38.1282776,104.146156 C37.9038018,104.045632 37.803183,103.781863 37.9035388,103.557011 C38.003895,103.33216 38.2672231,103.231372 38.4916986,103.331896 C39.2345824,103.664572 40.2007594,103.834968 41.3909496,103.834968 C42.5811397,103.834968 43.5473167,103.664572 44.2902005,103.331896 Z" id="Path" fill="#921000" fill-rule="nonzero"></path>
+        <ellipse id="Oval-Copy-4" fill="#FFFFFF" fill-rule="nonzero" cx="44.4971649" cy="100.118108" rx="1" ry="1"></ellipse>
+        <path d="M70.8949759,50.0041797 C70.8949759,50.0120623 71.6193972,52.4693865 72.0003017,55.0309609 C72.36058,57.4538236 72.3784903,59.9893162 72.3784903,59.9744042 C72.4243721,61.5082851 72.4855479,63.5943627 69.2585219,66.8768674 C69.2891099,66.8615287 69.0597003,67.1069497 67.3314827,68.6101528 C69.9467501,74.2394949 70.6423464,80.6774339 70,86 L12,86 C11.3423596,80.5393847 12.0285146,74.1321234 14.5979003,68.5948138 C14.5826063,68.5794751 12.9614463,67.1529662 12.9767402,67.1683049 C11.2485225,65.4810361 9.53559871,63.256909 9.53559871,60.8487164 C9.53559871,60.8415363 9.35005086,59.4393285 9.58307734,56.6233709 C9.81610381,53.8074135 11.5849897,48.2555556 11.6920474,47.8260689 C15.8061233,33.2388635 29.8765688,16.0593993 34.6176969,17.1331158 C35.8412139,17.4092144 37.0494371,18.8817398 38.1506024,21.0598505 C38.8235366,22.4403431 39.6341168,24.679809 39.7870565,25.1246344 C42.4787938,25.0939568 42.0046808,25.1246344 42.2493842,25.1246344 C42.7846729,23.5447372 43.1517282,22.685764 43.1364342,22.7011028 C43.8858382,20.8757848 45.4764105,17.5779412 47.4034497,17.1331158 C52.2975175,16.0287217 67.3620705,34.4199517 70.8949759,50.0041797 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M32.9005543,22.0030227 C33.9632333,21.9166069 34.963137,22.5361432 35.978631,23.6148879 C36.6603151,24.4308051 37.0102259,24.8507314 37.0283637,24.8746668 C37.4875608,25.480645 37.3693925,26.3447635 36.7644275,26.8047296 C36.1594625,27.2646955 35.296789,27.1463295 34.8375919,26.5403512 C34.5631227,26.1891291 34.4198088,26.0061091 34.4076495,25.9912914 L33.1728885,24.8178571 L33.1384887,24.798296 L32.0197051,26.2775265 C31.9500815,26.3939059 31.7084094,26.8657945 31.2946888,27.6931921 C30.9779248,28.3846418 30.1615433,28.6879542 29.47125,28.3706594 C28.7809567,28.0533646 28.4781515,27.235616 28.7949158,26.5441664 L29.0689613,25.9638374 C29.1878866,25.7204046 29.3830239,25.3563548 29.6543732,24.871688 C30.6704437,23.1393033 31.6883779,22.0919358 32.9005543,22.0030227 Z" id="Path" fill="#CABCB4" fill-rule="nonzero"></path>
+        <path d="M59.9250284,70.470417 C60.5907959,70.1042935 61.4268122,70.3481069 61.7923232,71.0149891 C62.1578345,71.6818714 61.9144291,72.5192879 61.2486619,72.8854114 C60.1708094,73.4781517 59.0331217,74.0465634 57.8643917,74.5832575 C55.8344814,75.4507908 54.7945054,75.8944644 54.7444634,75.9142781 L51.8208614,76.9938019 C51.5229846,77.0959534 50.0797605,77.5328586 47.491189,78.304518 C47.4452449,78.3164594 46.5898273,78.5127288 44.9249362,78.893326 C43.4299582,79.1856826 42.1080728,79.3443299 41.0564553,79.3443299 C39.7814992,79.3443299 38.1093584,79.1134956 36.2126274,78.6955434 L32.8971008,77.8402262 C32.8490086,77.8261773 31.6650748,77.4418378 29.3453003,76.6872075 C26.736758,75.6646865 25.3828749,75.131972 25.2836511,75.0890648 L21.8072286,73.4496944 C21.2548316,73.1588395 20.910981,72.9764413 20.7756767,72.9025001 C20.1089447,72.5381424 19.863328,71.7013738 20.2270764,71.0335251 C20.5908248,70.3656764 21.4261942,70.1196484 22.0929262,70.4840061 C22.7318509,70.8331674 23.3937206,71.1735498 24.0714476,71.5034171 L27.4172895,72.9989161 C27.488322,73.0280935 30.9737702,74.3390457 31.0442904,74.3632022 L35.1284016,75.6037967 C35.2146311,75.6264167 36.2946166,75.8645387 38.3683587,76.3181626 C39.4050158,76.4949659 40.317253,76.5893204 41.0564553,76.5893204 C41.7147312,76.5893204 42.510705,76.5135554 43.4097792,76.3706031 C46.5152503,75.6523601 48.0902116,75.2867992 48.134663,75.2739207 L51.0179006,74.3573626 L54.4143724,73.0773393 C57.0968824,71.8689821 58.7409958,71.1041222 59.3467129,70.7827604 L59.7335668,70.5750708 C59.7976103,70.5402751 59.8614333,70.5053898 59.9250284,70.470417 Z" id="Path" fill="#CABCB4" fill-rule="nonzero"></path>
+        <path d="M40.0929357,54.7745486 C41.2246887,56.3697845 43.3046677,57.4895174 45.7517016,57.6275669 L45.7517016,58.3178131 C45.7517016,62.6740343 44.4670088,66.20196 40.9952794,66.20196 C37.5694319,66.20196 36.269445,62.7353895 36.238857,58.4405236 C36.238857,57.8269714 36.238857,57.453727 36.238857,57.3207907 C37.8906051,56.8759652 39.2517677,55.9709755 40.0929357,54.7745486 Z" id="Path" fill="#F23C57" fill-rule="nonzero"></path>
+        <path d="M26.6340641,50.4251868 C27.3745179,50.2558692 28.1118037,50.7198721 28.2808382,51.461566 C28.7065264,53.3294131 29.7587676,54.9294245 31.2167327,55.89599 C34.1148977,57.8173434 37.83215,56.6634823 39.5688565,53.2180259 C39.9111724,52.5389048 40.7382899,52.266335 41.4162753,52.6092239 C42.0942609,52.9521132 42.366375,53.7806161 42.0240593,54.459737 C39.5681884,59.3319447 34.0158382,61.0554331 29.6987457,58.1933943 C27.6315698,56.8229494 26.1777382,54.6122898 25.5994178,52.0747189 C25.4303833,51.333025 25.8936103,50.5945044 26.6340641,50.4251868 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M52.9909044,51.461566 C53.1599388,50.7198721 53.8972246,50.2558692 54.6376784,50.4251868 C55.3781321,50.5945044 55.8413591,51.333025 55.6723247,52.0747189 C55.0940043,54.6122898 53.6401726,56.8229494 51.5729968,58.1933943 C47.2559044,61.0554331 41.7035539,59.3319447 39.2476833,54.459737 C38.9053676,53.7806161 39.1774816,52.9521132 39.855467,52.6092239 C40.5334526,52.266335 41.3605702,52.5389048 41.7028861,53.2180259 C43.4395926,56.6634823 47.1568449,57.8173434 50.0550098,55.89599 C51.5129747,54.9294245 52.5652162,53.3294131 52.9909044,51.461566 Z" id="Path-Copy" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M40.7505761,54.8205651 C42.8611428,54.8205651 45.8128774,51.7221261 45.8128774,49.09919 C45.8128774,46.476254 43.9776021,46.2001555 40.6741062,46.2001555 C37.3706103,46.2001555 35.5353347,46.476254 35.5353347,49.09919 C35.5353347,51.7221261 38.6400091,54.8205651 40.7505761,54.8205651 Z" id="Oval" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M30.8553824,39.7731952 C28.7448154,40.3407312 27.5671803,42.7949403 27.8424717,43.8226404 C28.1177631,44.8503404 30.1365662,45.5405868 32.2471329,44.9730509 C34.3576996,44.4055149 35.7341563,42.6722298 35.4894529,41.7672401 C35.2447496,40.8469117 32.9659491,39.2056593 30.8553824,39.7731952 Z" id="Oval-Copy-3" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M51.1963522,39.7731952 C53.3069192,40.3407312 54.4845541,42.7949403 54.209263,43.8226404 C53.9339716,44.8503404 51.9151685,45.5405868 49.8046018,44.9730509 C47.6940348,44.4055149 46.3175784,42.6722298 46.5622817,41.7672401 C46.8069851,40.8622507 49.0704915,39.2056593 51.1963522,39.7731952 Z" id="Oval-Copy-4" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M45.7813355,23.7146376 C46.8371928,22.5692392 47.8617144,21.9143328 48.9415635,22.0021877 C50.1390566,22.0900661 51.1399665,23.0960787 52.1293061,24.7546436 C52.4600732,25.3399201 52.7006813,25.7892418 52.8511305,26.1026089 C52.9734037,26.3628448 53.0423593,26.5100306 53.0579974,26.5441664 C53.3747617,27.235616 53.0719564,28.0533646 52.3816632,28.3706594 C51.6913699,28.6879542 50.8749883,28.3846418 50.5582241,27.6931921 L49.8271096,26.2672316 C49.491413,25.694874 48.783275,24.8567879 48.7380005,24.8181883 C48.3488479,25.0798893 48.05713,25.3133423 47.8628472,25.5185476 L47.0153213,26.5403512 C46.5561242,27.1463295 45.6934506,27.2646955 45.0884857,26.8047296 C44.4835207,26.3447635 44.3653523,25.480645 44.8245494,24.8746668 L45.7813355,23.7146376 Z" id="Path-Copy-2" fill="#CABCB4" fill-rule="nonzero"></path>
+        <path d="M31.2896089,42.4790225 C31.8868691,41.8800102 32.0805392,41.1030581 31.7221831,40.7436509 C31.3638265,40.3842439 30.5891458,40.5784819 29.9918848,41.1774934 C29.3946246,41.7765057 29.2009544,42.5534578 29.5593106,42.912865 C29.9176672,43.2722723 30.6923479,43.078034 31.2896089,42.4790225 Z" id="Oval-Copy-7" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M49.6453766,42.6009969 C50.3537945,42.1396445 50.7043371,41.4200626 50.4283355,40.9937656 C50.1523337,40.5674683 49.3543034,40.5958857 48.645885,41.0572372 C47.9374671,41.5185893 47.5869243,42.2381712 47.8629261,42.6644685 C48.138928,43.0907656 48.9369579,43.0623482 49.6453766,42.6009969 Z" id="Oval-Copy-8" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M66.9321135,93.0941704 C71.9620717,93.0941704 74.6224662,96.5136105 74.8597814,100.299269 C75.0903297,103.97698 74.8864994,109.734446 73.5737187,114 L60.4683894,114 C59.8201299,110.641304 59.0583435,106.103392 59.0708333,102.745914 C58.2703012,102.28342 57.7397077,101.942959 57.4790528,101.724531 C56.5230255,100.92338 56.0951503,100.289474 56.1653772,99.9268843 C56.4555779,98.4285457 57.6477029,98.1848639 59.3465338,98.3764862 C60.236099,95.4301945 62.7757854,93.0941704 66.9321135,93.0941704 Z" id="Path" fill="#4CBFEA" fill-rule="nonzero"></path>
+        <path d="M56.1519564,100.373352 C57.2689339,100.380813 63.9645721,102.365468 64.0937051,102.38832 C65.1453207,102.574417 65.8769584,102.36382 66.288618,101.756529 L66.2944157,102.136712 C66.1890419,109.90225 66.1357887,113.793885 66.134656,113.811617 L60.1997673,113.811617 C59.2619825,110.434873 58.9120016,106.12291 58.9244911,102.765448 L58.8393841,102.715796 C57.488709,101.858656 56.8090672,101.426269 56.8004585,101.418636 L56.7621593,101.384158 C56.4340734,101.084255 56.2067832,100.755525 56.1519564,100.373352 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M68.5645035,97.8576051 C69.8975496,98.1911701 70.7084588,99.5456177 70.3762719,100.882752 C70.3182089,101.11647 70.0819904,101.258787 69.8486634,101.200627 C69.6153362,101.142467 69.4732566,100.905853 69.5313195,100.672135 C69.7475348,99.8018158 69.2199484,98.9205974 68.3534746,98.7037819 C67.4872995,98.4870414 66.6098296,99.0161801 66.3936885,99.8862008 C66.3356256,100.119919 66.099407,100.262236 65.8660801,100.204076 C65.6327528,100.145916 65.4906732,99.9093016 65.5487362,99.6755836 C65.8809975,98.338151 67.2311585,97.5239664 68.5645035,97.8576051 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M65.9592058,101.164067 C66.1994035,101.174942 66.3853214,101.378802 66.3744647,101.619402 C66.3292722,102.620952 65.5149871,102.987632 64.2373853,102.761546 C64.1369462,102.743771 63.7052745,102.62541 62.9423702,102.406465 L61.4735479,101.894876 C59.6433036,101.262038 58.1973547,100.884541 56.4669046,100.671696 C56.2282541,100.642342 56.058546,100.424757 56.0878509,100.185707 C56.1171558,99.9466569 56.3343767,99.7766645 56.5730272,99.8060185 C58.2987428,100.018282 59.7490241,100.386981 61.5242211,100.99039 L63.1800754,101.566305 C63.8854556,101.772763 64.2883865,101.884883 64.3888678,101.902665 C65.1937817,102.045105 65.4720533,101.935096 65.5024952,101.611029 C65.646837,101.305804 65.7990738,101.156817 65.9592058,101.164067 Z" id="Path" fill="#1683AC" fill-rule="nonzero"></path>
+        <path d="M69.2123975,104.194477 C69.3360842,104.004652 69.5823186,103.943183 69.7787275,104.046354 L69.8149281,104.067637 L71.8902236,105.4244 C72.0010659,105.496865 72.0722933,105.615371 72.0854302,105.74574 L72.0876325,105.789589 L72.0876325,111.265095 C72.0876325,111.542059 71.8332283,111.748859 71.5626492,111.691844 C68.7210066,111.093063 67.3076337,108.622903 67.3076337,104.432827 C67.3076337,104.191981 67.5025513,103.996687 67.7429945,103.996687 C67.9834375,103.996687 68.178355,104.191981 68.178355,104.432827 C68.178355,107.939415 69.1827936,109.983657 71.1801596,110.682591 L71.2166861,110.694888 L71.2166861,106.025381 L69.3390246,104.798017 C69.1495176,104.674123 69.0881505,104.427476 69.1911501,104.230738 L69.2123975,104.194477 Z" id="Path-11" fill="#1683AC" fill-rule="nonzero"></path>
+        <path d="M73.5439784,99.765205 C73.3105091,99.8227905 73.0746408,99.6798917 73.0171516,99.4460314 C72.9491623,99.169458 72.8539178,98.8886295 72.7326859,98.6085366 C72.4652919,97.9907521 72.0768,97.3881683 71.5871927,96.8422213 C71.097609,96.2963169 70.5414024,95.8454825 69.9575326,95.5139879 C69.6928528,95.3637148 69.4247424,95.2393098 69.1580126,95.142558 C68.9319365,95.0605528 68.8150327,94.8104965 68.8969008,94.5840417 C68.9787689,94.3575869 69.2284071,94.2404874 69.4544833,94.3224926 C69.7677806,94.4361358 70.0802649,94.5811305 70.3868886,94.7552174 C71.0533499,95.1336038 71.6831002,95.6440466 72.2349403,96.2593639 C72.7867267,96.8746526 73.226468,97.5567291 73.5315572,98.2616042 C73.6719056,98.5858633 73.7828282,98.9129193 73.8626181,99.2374959 C73.9201076,99.4713562 73.7774475,99.7076196 73.5439784,99.765205 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M17.0566343,91.2107623 C19.1691504,91.2107623 21.9975154,93.7271446 23.2722409,96.6746631 C24.8279544,100.271904 25.7864078,105.413595 25.7864078,106.50465 C25.7864078,106.966087 25.4556152,107.451901 24.9150599,107.925826 L24.0704404,108.554105 C24.6045043,109.714469 24.8510749,111.064375 24.8510749,112.504907 C24.8510749,112.85669 24.8280333,113.660466 24.7833831,114 L9.28534584,114 C9.24069562,113.660466 9.21765404,112.85669 9.21765404,112.504907 C9.21765404,111.099726 9.45227133,109.780777 9.95952763,108.63978 L9.75947568,108.502698 C8.8952793,107.890112 8.32686084,107.205759 8.32686084,106.50465 C8.32686084,105.249603 9.2775668,100.179388 10.8058353,96.649796 C12.0793069,93.7086667 14.9441182,91.2107623 17.0566343,91.2107623 Z" id="Path" fill="#112F40" fill-rule="nonzero"></path>
+        <path d="M17.0705483,101.691758 C17.7997477,101.691758 18.2881087,101.590751 18.6932669,101.472919 L19.4304722,101.242282 C19.7145196,101.161514 20.0111192,101.104267 20.3952178,101.110565 C22.2655508,101.141231 22.4701879,105.376799 22.4565026,107.336843 C22.4459332,108.850616 18.4819034,110.204057 17.0566343,110.204057 C15.6313652,110.204057 11.4446371,108.850616 11.4446371,107.271601 L11.4479151,106.807635 C11.4751714,105.013632 11.7184861,101.090885 13.7604969,101.090885 C14.0173964,101.090885 14.2442386,101.131504 14.4705466,101.19162 L15.4535958,101.488866 C15.8711487,101.600365 16.3769196,101.691758 17.0705483,101.691758 Z" id="Mask" fill="#000000" fill-rule="nonzero"></path>
+        <path d="M13.7604969,101.090885 C14.0173964,101.090885 14.2442386,101.131504 14.4705466,101.19162 L15.4535958,101.488866 C15.8711487,101.600365 16.3769196,101.691758 17.0705483,101.691758 C17.7997477,101.691758 18.2881087,101.590751 18.6932669,101.472919 L19.4304722,101.242282 C19.7145196,101.161514 20.0111192,101.104267 20.3952178,101.110565 C20.814183,101.117434 21.149566,101.3353 21.4176357,101.691319 L21.343961,103.485686 L21.0206641,105.647471 C20.229126,108.14204 18.9114691,108.850616 17.0789041,108.850616 C15.2463391,108.850616 13.939893,108.14204 13.1483549,105.647471 C13.0467586,105.090782 12.9484068,104.315482 12.8532995,103.321572 C12.809118,102.859857 12.7420749,101.530409 12.7417149,101.510236 C13.0182372,101.246586 13.3536701,101.090885 13.7604969,101.090885 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
+        <path d="M17.0566343,107.767862 C18.3357602,107.767862 19.3726967,106.459536 19.3726967,105.692586 C19.3726967,104.396945 18.3357602,104.158685 17.0566343,104.158685 C15.7775084,104.158685 14.740572,104.396945 14.740572,105.692586 C14.740572,106.459536 15.7775084,107.767862 17.0566343,107.767862 Z" id="Oval" fill="#0D222E" fill-rule="nonzero"></path>
+        <path d="M22.5514943,109.249521 C22.746438,109.141124 22.9921973,109.211549 23.100413,109.406819 C23.2086287,109.602089 23.1383217,109.84826 22.943378,109.956657 C22.472756,110.218343 21.6225831,110.59835 20.3928594,111.096677 C20.2765672,111.138352 20.0180506,111.224729 19.6173098,111.355806 C18.6005361,111.670521 17.6718474,111.857184 17.0582185,111.857184 C16.6832333,111.857184 15.8278904,111.690295 14.4921899,111.356519 C13.4164068,110.97155 12.8493324,110.766971 12.7909667,110.742782 C11.9338323,110.351522 11.3869967,110.090619 11.15046,109.960075 C10.9551746,109.852297 10.8840897,109.60635 10.9916875,109.410737 C11.0992853,109.215125 11.3448207,109.143921 11.5401061,109.251699 C11.9865528,109.498093 12.4715555,109.729708 12.9664902,109.939445 L15.3914133,110.772958 C16.0642095,110.948601 16.6520132,111.048401 17.0582185,111.048401 C17.4641206,111.048401 18.0500138,110.948543 18.7199873,110.772745 L19.8980163,110.413534 C20.4687448,110.216917 22.4405277,109.311223 22.5514943,109.249521 Z" id="Path" fill="#000000" fill-rule="nonzero"></path>
+    </g>
+</svg>

BIN
Telegram/Resources/art/round_placeholder.jpg


BIN
Telegram/Resources/art/themeimage.jpg


+ 18 - 0
Telegram/Resources/art/topic_icons/blue.svg

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="84px" height="84px" viewBox="0 0 84 84" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>topic blue</title>
+    <defs>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
+            <stop stop-color="#4BB7FF" offset="0%"></stop>
+            <stop stop-color="#015EC1" offset="100%"></stop>
+        </linearGradient>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="99.39588%" id="linearGradient-2">
+            <stop stop-color="#0888DF" offset="0%"></stop>
+            <stop stop-color="#0042AC" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="topic-blue" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M42,4.47368421 C52.6535116,4.47368421 62.3029461,8.44172846 69.286057,14.8715044 C76.2233062,21.2590526 80.5263158,30.0798831 80.5263158,39.8304382 C80.5263158,49.5809933 76.2233062,58.4018239 69.286057,64.7893721 C62.3029461,71.219148 52.6535116,75.1871923 42,75.1871923 C37.5267059,75.1871923 33.2308553,74.4877643 29.2348341,73.2001187 C29.0182529,73.1303293 28.8019654,73.0586229 28.5862413,72.9852481 C28.3948519,73.106612 28.2000814,73.2292009 28.0019297,73.3530173 C26.1800899,74.4914063 24.5768234,75.4183854 23.1902273,76.1332316 C19.9632993,77.7968433 15.8838664,78.895322 10.968708,79.4573148 L10.3331597,79.5269374 C10.8475353,78.5381033 11.3155893,77.6262907 11.7364879,76.7897918 L12.0856904,76.0911971 C13.1548056,73.9371347 13.8747553,72.3343394 14.2288664,71.2486595 C14.8154652,69.4501884 15.1095499,67.6701625 15.2363061,66.0328103 C15.2549358,65.7921643 15.2704685,65.5479168 15.2812363,65.2994157 C15.1072303,65.1457013 14.9345381,64.9902431 14.7631844,64.8330639 C7.79678435,58.4429296 3.47368421,49.6037286 3.47368421,39.8304382 C3.47368421,30.0798831 7.77669379,21.2590526 14.713943,14.8715044 C21.6970539,8.44172846 31.3464884,4.47368421 42,4.47368421 Z" id="Combined-Shape-Copy-2" stroke="url(#linearGradient-2)" stroke-width="2.94736842" fill="url(#linearGradient-1)"></path>
+        <path d="M9.68078613,24.6137047 C9.8721537,24.8136848 10.1894036,24.8206666 10.3893837,24.629299 C10.3964827,24.6225057 10.4033805,24.6155051 10.410082,24.6083194 C20.5178445,13.7276637 31.3141669,8.50123177 42.7990494,8.92902374 C54.2584365,9.35586606 64.9235425,15.3681505 74.7943671,26.9658769 C75.0309355,27.243826 75.4426222,27.2904538 75.7353592,27.0724506 C76.0315877,26.8518473 76.1075038,26.440096 75.9094038,26.1283693 C67.7821181,13.3374534 56.7453333,6.69089625 42.7990494,6.18869781 C28.8220513,5.68539338 17.7581791,11.5492352 9.60743269,23.7802233 C9.4336795,24.0409463 9.46416665,24.3873362 9.68078613,24.6137047 Z" id="Path-22" fill="#71D0FF" opacity="0.37491644"></path>
+    </g>
+</svg>

+ 7 - 0
Telegram/Resources/art/topic_icons/general.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>general</title>
+    <g id="general" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M14.4576257,1.02558449 C15.189053,1.1696007 15.6657078,1.88165413 15.5222641,2.61600035 L14.8818905,5.62412405 L16.6504058,5.62421139 C17.3957661,5.62421139 18,6.23085664 18,6.97919149 C18,7.72752633 17.3957661,8.33417159 16.6504058,8.33417159 L14.3525674,8.33397488 L13.6850637,11.7513347 L15.3008116,11.7515071 C16.0461719,11.7515071 16.6504058,12.3581524 16.6504058,13.1064872 C16.6504058,13.8548221 16.0461719,14.4614673 15.3008116,14.4614673 L13.1557407,14.4614328 L12.4307242,17.9055215 C12.2872804,18.6398677 11.5780573,19.1184247 10.84663,18.9744085 C10.1152028,18.8303923 9.63854794,18.1183389 9.7819917,17.3839927 L10.4051821,14.4614328 L7.75733538,14.4614328 L7.03234733,17.9055215 C6.90989534,18.5324024 6.37514133,18.9728813 5.76623746,18.9987859 L5.71387199,19 C5.62631985,19.0002755 5.53745163,18.9919715 5.44825318,18.9744085 C4.71682589,18.8303923 4.24017107,18.1183389 4.38361482,17.3839927 L5.00702313,14.4614328 L3.34959422,14.4614673 C2.60423391,14.4614673 2,13.8548221 2,13.1064872 C2,12.3581524 2.60423391,11.7515071 3.34959422,11.7515071 L5.53634616,11.7513347 L6.20384986,8.33397488 L4.69918844,8.33417159 C3.95382813,8.33417159 3.34959422,7.72752633 3.34959422,6.97919149 C3.34959422,6.23085664 3.95382813,5.62421139 4.69918844,5.62421139 L6.73317289,5.62412405 L7.4751547,2.09447154 C7.60110532,1.44967974 8.16325465,1.00209364 8.79363004,1 L8.84631136,1.00087004 C8.91674267,1.00340951 8.98789009,1.01153413 9.05924885,1.02558449 C9.79067614,1.1696007 10.267331,1.88165413 10.1238872,2.61600035 L9.48348515,5.62412405 L12.1315782,5.62412405 L12.8735316,2.09447154 C13.0169753,1.36012532 13.7261984,0.881568286 14.4576257,1.02558449 Z M10.9345052,11.7513347 L11.6020089,8.33397488 L8.95416211,8.33397488 L8.28665842,11.7513347 L10.9345052,11.7513347 Z" id="Combined-Shape-Copy-6" fill="#FFFFFF"></path>
+    </g>
+</svg>

+ 18 - 0
Telegram/Resources/art/topic_icons/gray.svg

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="84px" height="84px" viewBox="0 0 84 84" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>topic gray</title>
+    <defs>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
+            <stop stop-color="#A5A5A5" offset="0%"></stop>
+            <stop stop-color="#616161" offset="100%"></stop>
+        </linearGradient>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="99.39588%" id="linearGradient-2">
+            <stop stop-color="#737373" offset="0%"></stop>
+            <stop stop-color="#565656" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="topic-gray" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M42,4.47368421 C52.6535116,4.47368421 62.3029461,8.44172846 69.286057,14.8715044 C76.2233062,21.2590526 80.5263158,30.0798831 80.5263158,39.8304382 C80.5263158,49.5809933 76.2233062,58.4018239 69.286057,64.7893721 C62.3029461,71.219148 52.6535116,75.1871923 42,75.1871923 C37.5267059,75.1871923 33.2308553,74.4877643 29.2348341,73.2001187 C29.0182529,73.1303293 28.8019654,73.0586229 28.5862413,72.9852481 C28.3948519,73.106612 28.2000814,73.2292009 28.0019297,73.3530173 C26.1800899,74.4914063 24.5768234,75.4183854 23.1902273,76.1332316 C19.9632993,77.7968433 15.8838664,78.895322 10.968708,79.4573148 L10.3331597,79.5269374 C10.8475353,78.5381033 11.3155893,77.6262907 11.7364879,76.7897918 L12.0856904,76.0911971 C13.1548056,73.9371347 13.8747553,72.3343394 14.2288664,71.2486595 C14.8154652,69.4501884 15.1095499,67.6701625 15.2363061,66.0328103 C15.2549358,65.7921643 15.2704685,65.5479168 15.2812363,65.2994157 C15.1072303,65.1457013 14.9345381,64.9902431 14.7631844,64.8330639 C7.79678435,58.4429296 3.47368421,49.6037286 3.47368421,39.8304382 C3.47368421,30.0798831 7.77669379,21.2590526 14.713943,14.8715044 C21.6970539,8.44172846 31.3464884,4.47368421 42,4.47368421 Z" id="Combined-Shape-Copy-2" stroke="url(#linearGradient-2)" stroke-width="2.94736842" fill="url(#linearGradient-1)"></path>
+        <path d="M9.68078613,24.6137047 C9.8721537,24.8136848 10.1894036,24.8206666 10.3893837,24.629299 C10.3964827,24.6225057 10.4033805,24.6155051 10.410082,24.6083194 C20.5178445,13.7276637 31.3141669,8.50123177 42.7990494,8.92902374 C54.2584365,9.35586606 64.9235425,15.3681505 74.7943671,26.9658769 C75.0309355,27.243826 75.4426222,27.2904538 75.7353592,27.0724506 C76.0315877,26.8518473 76.1075038,26.440096 75.9094038,26.1283693 C67.7821181,13.3374534 56.7453333,6.69089625 42.7990494,6.18869781 C28.8220513,5.68539338 17.7581791,11.5492352 9.60743269,23.7802233 C9.4336795,24.0409463 9.46416665,24.3873362 9.68078613,24.6137047 Z" id="Path-22" fill="#B8B8B8" opacity="0.37491644"></path>
+    </g>
+</svg>

+ 18 - 0
Telegram/Resources/art/topic_icons/green.svg

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="84px" height="84px" viewBox="0 0 84 84" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>topic green</title>
+    <defs>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="99.7635421%" id="linearGradient-1">
+            <stop stop-color="#97E334" offset="0%"></stop>
+            <stop stop-color="#11B411" offset="100%"></stop>
+        </linearGradient>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="98.9250576%" id="linearGradient-2">
+            <stop stop-color="#48AF18" offset="0%"></stop>
+            <stop stop-color="#05951A" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="topic-green" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M42,4.42105263 C52.6675181,4.42105263 62.3294728,8.39460913 69.3217075,14.8327858 C76.2697184,21.230243 80.5789474,30.0648871 80.5789474,39.8304382 C80.5789474,49.5959894 76.2697184,58.4306335 69.3217075,64.8280906 C62.3294728,71.2662674 52.6675181,75.2398239 42,75.2398239 C37.5210466,75.2398239 33.2197662,74.5394876 29.2186919,73.2502137 C29.0098956,73.1829329 28.8013719,73.1138726 28.5929684,73.0432995 C28.4083865,73.1602808 28.2206704,73.2783974 28.0298198,73.3976517 C26.2065565,74.5369301 24.6020235,75.4646079 23.2143446,76.1800123 C19.9826132,77.8461004 15.8972513,78.9467661 10.9744394,79.5096334 L10.3380323,79.5793501 C12.3422829,75.5502987 13.657562,72.8305079 14.1788292,71.2323391 C14.7640488,69.4380965 15.0573738,67.6622454 15.1838316,66.0287479 C15.2017691,65.7970433 15.21683,65.561992 15.2283048,65.3228731 C15.0601712,65.1741519 14.8932645,65.0238038 14.727607,64.8718496 C7.75040024,58.4718025 3.42105263,49.6187586 3.42105263,39.8304382 C3.42105263,30.0648871 7.7302816,21.230243 14.6782925,14.8327858 C21.6705272,8.39460913 31.3324819,4.42105263 42,4.42105263 Z" id="Combined-Shape-Copy-2" stroke="url(#linearGradient-2)" stroke-width="2.84210526" fill="url(#linearGradient-1)"></path>
+        <path d="M9.68078613,24.6137047 C9.8721537,24.8136848 10.1894036,24.8206666 10.3893837,24.629299 C10.3964827,24.6225057 10.4033805,24.6155051 10.410082,24.6083194 C20.5178445,13.7276637 31.3141669,8.50123177 42.7990494,8.92902374 C54.2584365,9.35586606 64.9235425,15.3681505 74.7943671,26.9658769 C75.0309355,27.243826 75.4426222,27.2904538 75.7353592,27.0724506 C76.0315877,26.8518473 76.1075038,26.440096 75.9094038,26.1283693 C67.7821181,13.3374534 56.7453333,6.69089625 42.7990494,6.18869781 C28.8220513,5.68539338 17.7581791,11.5492352 9.60743269,23.7802233 C9.4336795,24.0409463 9.46416665,24.3873362 9.68078613,24.6137047 Z" id="Path-22" fill="#C2FF71" opacity="0.37491644"></path>
+    </g>
+</svg>

+ 18 - 0
Telegram/Resources/art/topic_icons/red.svg

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="84px" height="84px" viewBox="0 0 84 84" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>topic red</title>
+    <defs>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
+            <stop stop-color="#FF714C" offset="0%"></stop>
+            <stop stop-color="#C61505" offset="100%"></stop>
+        </linearGradient>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="98.6056043%" id="linearGradient-2">
+            <stop stop-color="#E12F1F" offset="0%"></stop>
+            <stop stop-color="#B40101" offset="100%"></stop>
+        </linearGradient>
+    </defs>
+    <g id="topic-red" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <path d="M42,4.42105263 C52.6675181,4.42105263 62.3294728,8.39460913 69.3217075,14.8327858 C76.2697184,21.230243 80.5789474,30.0648871 80.5789474,39.8304382 C80.5789474,49.5959894 76.2697184,58.4306335 69.3217075,64.8280906 C62.3294728,71.2662674 52.6675181,75.2398239 42,75.2398239 C37.5210466,75.2398239 33.2197662,74.5394876 29.2186919,73.2502137 C29.0098956,73.1829329 28.8013719,73.1138726 28.5929684,73.0432995 C28.4083865,73.1602808 28.2206704,73.2783974 28.0298198,73.3976517 C26.2065565,74.5369301 24.6020235,75.4646079 23.2143446,76.1800123 C19.9826132,77.8461004 15.8972513,78.9467661 10.9744394,79.5096334 L10.3380323,79.5793501 C12.3422829,75.5502987 13.657562,72.8305079 14.1788292,71.2323391 C14.7640488,69.4380965 15.0573738,67.6622454 15.1838316,66.0287479 C15.2017691,65.7970433 15.21683,65.561992 15.2283048,65.3228731 C15.0601712,65.1741519 14.8932645,65.0238038 14.727607,64.8718496 C7.75040024,58.4718025 3.42105263,49.6187586 3.42105263,39.8304382 C3.42105263,30.0648871 7.7302816,21.230243 14.6782925,14.8327858 C21.6705272,8.39460913 31.3324819,4.42105263 42,4.42105263 Z" id="Combined-Shape-Copy-2" stroke="url(#linearGradient-2)" stroke-width="2.84210526" fill="url(#linearGradient-1)"></path>
+        <path d="M9.68078613,24.6137047 C9.8721537,24.8136848 10.1894036,24.8206666 10.3893837,24.629299 C10.3964827,24.6225057 10.4033805,24.6155051 10.410082,24.6083194 C20.5178445,13.7276637 31.3141669,8.50123177 42.7990494,8.92902374 C54.2584365,9.35586606 64.9235425,15.3681505 74.7943671,26.9658769 C75.0309355,27.243826 75.4426222,27.2904538 75.7353592,27.0724506 C76.0315877,26.8518473 76.1075038,26.440096 75.9094038,26.1283693 C67.7821181,13.3374534 56.7453333,6.69089625 42.7990494,6.18869781 C28.8220513,5.68539338 17.7581791,11.5492352 9.60743269,23.7802233 C9.4336795,24.0409463 9.46416665,24.3873362 9.68078613,24.6137047 Z" id="Path-22" fill="#FFB47D" opacity="0.37491644"></path>
+    </g>
+</svg>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików