diff --git a/Makefile b/Makefile
index 40fabf1fe7..a1f2c94cf4 100644
--- a/Makefile
+++ b/Makefile
@@ -249,11 +249,21 @@ build_verbose: check_env
//submodules/TelegramUI:TelegramUI#shared,iphoneos-arm64 \
//:WatchAppExtension#dwarf-and-dsym,watchos-arm64_32,watchos-armv7k \
//:ShareExtension#dwarf-and-dsym,iphoneos-arm64 \
- //:WidgetExtension#dwarf-and-dsym,iphoneos-arm64 \
- //:NotificationContentExtension#dwarf-and-dsym,iphoneos-arm64 \
- //:NotificationServiceExtension#dwarf-and-dsym,iphoneos-arm64 \
- //:IntentsExtension#dwarf-and-dsym,iphoneos-arm64 \
- --verbose 8 ${BUCK_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_DEBUG_OPTIONS}
+ //:WidgetExtension#dwarf-and-dsym,iphoneos-arm64 \
+ //:NotificationContentExtension#dwarf-and-dsym,iphoneos-arm64 \
+ //:NotificationServiceExtension#dwarf-and-dsym,iphoneos-arm64 \
+ //:IntentsExtension#dwarf-and-dsym,iphoneos-arm64 \
+ --verbose 8 ${BUCK_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_DEBUG_OPTIONS}
+
+build_openssl: check_env
+ $(BUCK) build \
+ //submodules/openssl:openssl#iphoneos-arm64 \
+ --verbose 7 ${BUCK_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_DEBUG_OPTIONS}
+
+build_ton: check_env
+ $(BUCK) build \
+ //submodules/ton:ton#iphoneos-arm64 \
+ --verbose 7 ${BUCK_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_DEBUG_OPTIONS}
kill_xcode:
killall Xcode || true
diff --git a/Telegram_Buck.xcworkspace/buck-project.meta.json b/Telegram_Buck.xcworkspace/buck-project.meta.json
index 3e9789ef89..91edc129f0 100644
--- a/Telegram_Buck.xcworkspace/buck-project.meta.json
+++ b/Telegram_Buck.xcworkspace/buck-project.meta.json
@@ -1 +1 @@
-{"required-targets":["//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_ac3_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_adts_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avcodec.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avdct.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avfft.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_d3d11va.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dirac.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dv_profile.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dxva2.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_jni.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_mediacodec.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_qsv.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vaapi.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vdpau.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_videotoolbox.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vorbis_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_xvmc.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_avformat.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_avio.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_adler32.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_aes.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_aes_ctr.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_attributes.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_audio_fifo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avassert.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avconfig.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avstring.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avutil.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_base64.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_blowfish.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_bprint.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_bswap.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_buffer.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_camellia.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_cast5.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_channel_layout.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_common.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_cpu.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_crc.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_des.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_dict.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_display.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_downmix_info.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_encryption_info.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_error.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_eval.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_ffversion.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_fifo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_file.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_frame.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hash.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hmac.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_cuda.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_d3d11va.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_drm.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_dxva2.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_mediacodec.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_qsv.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_vaapi.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_vdpau.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_videotoolbox.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_imgutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_intfloat.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_intreadwrite.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_lfg.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_log.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_lzo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_macros.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mastering_display_metadata.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mathematics.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_md5.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mem.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_motion_vector.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_murmur3.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_opt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_parseutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixdesc.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixelutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixfmt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_random_seed.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_rational.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_rc4.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_replaygain.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_ripemd.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_samplefmt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_sha.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_sha512.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_spherical.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_stereo3d.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_tea.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_threadmessage.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_time.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_timecode.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_timestamp.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_tree.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_twofish.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_xtea.h","//submodules/FFMpeg:ffmpeg_header_libswresample_sub_swresample.h","//submodules/FFMpeg:ffmpeg_header_libswresample_sub_version.h","//submodules/FFMpeg:libffmpeg_build","//submodules/MtProtoKit:openssl_libs","//submodules/MtProtoKit:ton_libs","//submodules/Opus:opus_lib_file","//submodules/WebP:WebP_lib_file"],"xcconfig-paths":["buck-out/gen/AppLibrary-Debug.xcconfig","buck-out/gen/AppLibrary-Profile.xcconfig","buck-out/gen/AppLibrary-Release.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/Telegram-Debug.xcconfig","buck-out/gen/Telegram-Profile.xcconfig","buck-out/gen/Telegram-Release.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Debug.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Profile.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Release.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Debug.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Profile.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Release.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Debug.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Profile.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Release.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Debug.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Profile.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Release.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Debug.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Profile.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Release.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Debug.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Profile.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Release.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Debug.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Profile.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Release.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Debug.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Profile.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Release.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Debug.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Profile.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Release.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Debug.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Profile.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Release.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Debug.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Profile.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Release.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Debug.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Profile.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Release.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Debug.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Profile.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Release.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Debug.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Profile.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Release.xcconfig","buck-out/gen/submodules/Camera/Camera-Debug.xcconfig","buck-out/gen/submodules/Camera/Camera-Profile.xcconfig","buck-out/gen/submodules/Camera/Camera-Release.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Release.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Release.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Release.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Debug.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Profile.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Release.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Debug.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Profile.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Release.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Debug.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Profile.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Release.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Debug.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Profile.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Release.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Debug.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Profile.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Release.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Debug.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Profile.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Release.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Debug.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Profile.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Release.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Debug.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Profile.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Release.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Debug.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Profile.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Release.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Debug.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Profile.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Release.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Debug.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Profile.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Release.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Debug.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Profile.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Release.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Debug.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Profile.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Release.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Debug.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Profile.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Release.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Debug.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Profile.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Release.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Debug.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Profile.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Release.xcconfig","buck-out/gen/submodules/Display/Display#shared-Debug.xcconfig","buck-out/gen/submodules/Display/Display#shared-Profile.xcconfig","buck-out/gen/submodules/Display/Display#shared-Release.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Debug.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Profile.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Release.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Debug.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Profile.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Release.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Debug.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Profile.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Release.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Debug.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Profile.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Release.xcconfig","buck-out/gen/submodules/GZip/GZip-Debug.xcconfig","buck-out/gen/submodules/GZip/GZip-Profile.xcconfig","buck-out/gen/submodules/GZip/GZip-Release.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Debug.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Profile.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Release.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Debug.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Profile.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Release.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Debug.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Profile.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Release.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Debug.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Profile.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Release.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Debug.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Profile.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Release.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Debug.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Profile.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Release.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Debug.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Profile.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Release.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Debug.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Profile.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Release.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Debug.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Profile.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Release.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Debug.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Profile.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Release.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Debug.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Profile.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Release.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Debug.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Profile.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Release.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Debug.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Profile.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Release.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Debug.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Profile.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Release.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Debug.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Profile.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Release.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Debug.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Profile.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Release.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Debug.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Profile.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Release.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Debug.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Profile.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Release.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Debug.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Profile.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Release.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Debug.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Profile.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Release.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Debug.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Profile.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Release.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Debug.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Profile.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Release.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Debug.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Profile.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Release.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Debug.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Profile.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Release.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Debug.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Profile.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Release.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Debug.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Profile.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Release.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Debug.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Profile.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Release.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Debug.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Profile.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Release.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Debug.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Profile.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Release.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Debug.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Profile.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Release.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Debug.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Profile.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Release.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Debug.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Profile.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Release.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Debug.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Profile.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Release.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Debug.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Profile.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Release.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Debug.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Profile.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Release.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Debug.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Profile.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Release.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Debug.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Profile.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Release.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Debug.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Profile.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Release.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Debug.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Profile.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Release.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Debug.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Profile.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Release.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Debug.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Profile.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Release.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Debug.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Profile.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/ton-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/ton-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/ton-Release.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Debug.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Profile.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Release.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Debug.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Profile.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Release.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Debug.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Profile.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Release.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Debug.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Profile.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Release.xcconfig","buck-out/gen/submodules/Opus/opus-Debug.xcconfig","buck-out/gen/submodules/Opus/opus-Profile.xcconfig","buck-out/gen/submodules/Opus/opus-Release.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Debug.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Profile.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Release.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Debug.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Profile.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Release.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Debug.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Profile.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Release.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Debug.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Profile.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Release.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Debug.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Profile.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Release.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Debug.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Profile.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Release.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Debug.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Profile.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Release.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Debug.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Profile.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Release.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Debug.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Profile.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Release.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Debug.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Profile.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Release.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Debug.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Profile.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Release.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Debug.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Profile.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Release.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Debug.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Profile.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Release.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Debug.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Profile.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Release.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Debug.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Profile.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Release.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Debug.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Profile.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Release.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Debug.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Profile.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Release.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Debug.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Profile.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Release.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Debug.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Profile.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Release.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Debug.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Profile.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Release.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Debug.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Profile.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Release.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Debug.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Profile.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Release.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Debug.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Profile.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Release.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Debug.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Profile.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Release.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Debug.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Profile.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Release.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Debug.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Profile.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Release.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Debug.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Profile.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Release.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Debug.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Profile.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Release.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Debug.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Profile.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Release.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Debug.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Profile.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Release.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Debug.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Profile.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Release.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Debug.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Profile.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Release.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Debug.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Profile.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Release.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Debug.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Profile.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Release.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Debug.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Profile.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Release.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Debug.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Profile.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Release.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Debug.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Profile.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Release.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Debug.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Profile.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Release.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Debug.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Profile.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Release.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Debug.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Profile.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Release.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Debug.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Profile.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Release.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Debug.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Profile.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Release.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Debug.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Profile.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Release.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Debug.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Profile.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Release.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Debug.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Profile.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Release.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Debug.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Profile.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Release.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Debug.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Profile.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Release.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Debug.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Profile.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Release.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Debug.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Profile.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Release.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Debug.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Profile.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Release.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Debug.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Profile.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Release.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Debug.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Profile.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Release.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Debug.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Profile.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Release.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Debug.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Profile.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Release.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Debug.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Profile.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Release.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Debug.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Profile.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Release.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Debug.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Profile.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Release.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Debug.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Profile.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Release.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Debug.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Profile.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Release.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Debug.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Profile.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Release.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Debug.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Profile.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Release.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Debug.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Profile.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Release.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Debug.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Profile.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Release.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Debug.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Profile.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Release.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Debug.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Profile.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Release.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Debug.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Profile.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Release.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Debug.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Profile.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Release.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Debug.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Profile.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Release.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Debug.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Profile.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Release.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Debug.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Profile.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Release.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Debug.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Profile.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Release.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Debug.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Profile.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Release.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Debug.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Profile.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Release.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Debug.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Profile.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Release.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Debug.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Profile.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Release.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Debug.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Profile.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Release.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Debug.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Profile.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Release.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Debug.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Profile.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Release.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Debug.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Profile.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Release.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Debug.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Profile.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Release.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Debug.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Profile.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Release.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Debug.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Profile.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Release.xcconfig"],"copy-in-xcode":[]}
\ No newline at end of file
+{"required-targets":["//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_ac3_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_adts_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avcodec.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avdct.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_avfft.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_d3d11va.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dirac.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dv_profile.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_dxva2.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_jni.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_mediacodec.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_qsv.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vaapi.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vdpau.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_videotoolbox.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_vorbis_parser.h","//submodules/FFMpeg:ffmpeg_header_libavcodec_sub_xvmc.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_avformat.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_avio.h","//submodules/FFMpeg:ffmpeg_header_libavformat_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_adler32.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_aes.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_aes_ctr.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_attributes.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_audio_fifo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avassert.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avconfig.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avstring.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_avutil.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_base64.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_blowfish.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_bprint.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_bswap.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_buffer.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_camellia.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_cast5.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_channel_layout.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_common.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_cpu.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_crc.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_des.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_dict.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_display.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_downmix_info.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_encryption_info.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_error.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_eval.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_ffversion.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_fifo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_file.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_frame.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hash.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hmac.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_cuda.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_d3d11va.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_drm.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_dxva2.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_mediacodec.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_qsv.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_vaapi.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_vdpau.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_hwcontext_videotoolbox.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_imgutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_intfloat.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_intreadwrite.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_lfg.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_log.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_lzo.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_macros.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mastering_display_metadata.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mathematics.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_md5.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_mem.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_motion_vector.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_murmur3.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_opt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_parseutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixdesc.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixelutils.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_pixfmt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_random_seed.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_rational.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_rc4.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_replaygain.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_ripemd.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_samplefmt.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_sha.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_sha512.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_spherical.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_stereo3d.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_tea.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_threadmessage.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_time.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_timecode.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_timestamp.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_tree.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_twofish.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_version.h","//submodules/FFMpeg:ffmpeg_header_libavutil_sub_xtea.h","//submodules/FFMpeg:ffmpeg_header_libswresample_sub_swresample.h","//submodules/FFMpeg:ffmpeg_header_libswresample_sub_version.h","//submodules/FFMpeg:libffmpeg_build","//submodules/Opus:opus_lib_file","//submodules/WebP:WebP_lib_file","//submodules/openssl:openssl_build_merged","//submodules/openssl:openssl_header_openssl_sub_aes.h","//submodules/openssl:openssl_header_openssl_sub_asn1.h","//submodules/openssl:openssl_header_openssl_sub_asn1_mac.h","//submodules/openssl:openssl_header_openssl_sub_asn1err.h","//submodules/openssl:openssl_header_openssl_sub_asn1t.h","//submodules/openssl:openssl_header_openssl_sub_async.h","//submodules/openssl:openssl_header_openssl_sub_asyncerr.h","//submodules/openssl:openssl_header_openssl_sub_bio.h","//submodules/openssl:openssl_header_openssl_sub_bioerr.h","//submodules/openssl:openssl_header_openssl_sub_blowfish.h","//submodules/openssl:openssl_header_openssl_sub_bn.h","//submodules/openssl:openssl_header_openssl_sub_bnerr.h","//submodules/openssl:openssl_header_openssl_sub_buffer.h","//submodules/openssl:openssl_header_openssl_sub_buffererr.h","//submodules/openssl:openssl_header_openssl_sub_camellia.h","//submodules/openssl:openssl_header_openssl_sub_cast.h","//submodules/openssl:openssl_header_openssl_sub_cmac.h","//submodules/openssl:openssl_header_openssl_sub_cms.h","//submodules/openssl:openssl_header_openssl_sub_cmserr.h","//submodules/openssl:openssl_header_openssl_sub_comp.h","//submodules/openssl:openssl_header_openssl_sub_comperr.h","//submodules/openssl:openssl_header_openssl_sub_conf.h","//submodules/openssl:openssl_header_openssl_sub_conf_api.h","//submodules/openssl:openssl_header_openssl_sub_conferr.h","//submodules/openssl:openssl_header_openssl_sub_crypto.h","//submodules/openssl:openssl_header_openssl_sub_cryptoerr.h","//submodules/openssl:openssl_header_openssl_sub_ct.h","//submodules/openssl:openssl_header_openssl_sub_cterr.h","//submodules/openssl:openssl_header_openssl_sub_des.h","//submodules/openssl:openssl_header_openssl_sub_dh.h","//submodules/openssl:openssl_header_openssl_sub_dherr.h","//submodules/openssl:openssl_header_openssl_sub_dsa.h","//submodules/openssl:openssl_header_openssl_sub_dsaerr.h","//submodules/openssl:openssl_header_openssl_sub_dtls1.h","//submodules/openssl:openssl_header_openssl_sub_e_os2.h","//submodules/openssl:openssl_header_openssl_sub_ebcdic.h","//submodules/openssl:openssl_header_openssl_sub_ec.h","//submodules/openssl:openssl_header_openssl_sub_ecdh.h","//submodules/openssl:openssl_header_openssl_sub_ecdsa.h","//submodules/openssl:openssl_header_openssl_sub_ecerr.h","//submodules/openssl:openssl_header_openssl_sub_engine.h","//submodules/openssl:openssl_header_openssl_sub_engineerr.h","//submodules/openssl:openssl_header_openssl_sub_err.h","//submodules/openssl:openssl_header_openssl_sub_evp.h","//submodules/openssl:openssl_header_openssl_sub_evperr.h","//submodules/openssl:openssl_header_openssl_sub_hmac.h","//submodules/openssl:openssl_header_openssl_sub_idea.h","//submodules/openssl:openssl_header_openssl_sub_kdf.h","//submodules/openssl:openssl_header_openssl_sub_kdferr.h","//submodules/openssl:openssl_header_openssl_sub_lhash.h","//submodules/openssl:openssl_header_openssl_sub_md2.h","//submodules/openssl:openssl_header_openssl_sub_md4.h","//submodules/openssl:openssl_header_openssl_sub_md5.h","//submodules/openssl:openssl_header_openssl_sub_mdc2.h","//submodules/openssl:openssl_header_openssl_sub_modes.h","//submodules/openssl:openssl_header_openssl_sub_obj_mac.h","//submodules/openssl:openssl_header_openssl_sub_objects.h","//submodules/openssl:openssl_header_openssl_sub_objectserr.h","//submodules/openssl:openssl_header_openssl_sub_ocsp.h","//submodules/openssl:openssl_header_openssl_sub_ocsperr.h","//submodules/openssl:openssl_header_openssl_sub_opensslconf.h","//submodules/openssl:openssl_header_openssl_sub_opensslv.h","//submodules/openssl:openssl_header_openssl_sub_ossl_typ.h","//submodules/openssl:openssl_header_openssl_sub_pem.h","//submodules/openssl:openssl_header_openssl_sub_pem2.h","//submodules/openssl:openssl_header_openssl_sub_pemerr.h","//submodules/openssl:openssl_header_openssl_sub_pkcs12.h","//submodules/openssl:openssl_header_openssl_sub_pkcs12err.h","//submodules/openssl:openssl_header_openssl_sub_pkcs7.h","//submodules/openssl:openssl_header_openssl_sub_pkcs7err.h","//submodules/openssl:openssl_header_openssl_sub_rand.h","//submodules/openssl:openssl_header_openssl_sub_rand_drbg.h","//submodules/openssl:openssl_header_openssl_sub_randerr.h","//submodules/openssl:openssl_header_openssl_sub_rc2.h","//submodules/openssl:openssl_header_openssl_sub_rc4.h","//submodules/openssl:openssl_header_openssl_sub_rc5.h","//submodules/openssl:openssl_header_openssl_sub_ripemd.h","//submodules/openssl:openssl_header_openssl_sub_rsa.h","//submodules/openssl:openssl_header_openssl_sub_rsaerr.h","//submodules/openssl:openssl_header_openssl_sub_safestack.h","//submodules/openssl:openssl_header_openssl_sub_seed.h","//submodules/openssl:openssl_header_openssl_sub_sha.h","//submodules/openssl:openssl_header_openssl_sub_srp.h","//submodules/openssl:openssl_header_openssl_sub_srtp.h","//submodules/openssl:openssl_header_openssl_sub_ssl.h","//submodules/openssl:openssl_header_openssl_sub_ssl2.h","//submodules/openssl:openssl_header_openssl_sub_ssl3.h","//submodules/openssl:openssl_header_openssl_sub_sslerr.h","//submodules/openssl:openssl_header_openssl_sub_stack.h","//submodules/openssl:openssl_header_openssl_sub_store.h","//submodules/openssl:openssl_header_openssl_sub_storeerr.h","//submodules/openssl:openssl_header_openssl_sub_symhacks.h","//submodules/openssl:openssl_header_openssl_sub_tls1.h","//submodules/openssl:openssl_header_openssl_sub_ts.h","//submodules/openssl:openssl_header_openssl_sub_tserr.h","//submodules/openssl:openssl_header_openssl_sub_txt_db.h","//submodules/openssl:openssl_header_openssl_sub_ui.h","//submodules/openssl:openssl_header_openssl_sub_uierr.h","//submodules/openssl:openssl_header_openssl_sub_whrlpool.h","//submodules/openssl:openssl_header_openssl_sub_x509.h","//submodules/openssl:openssl_header_openssl_sub_x509_vfy.h","//submodules/openssl:openssl_header_openssl_sub_x509err.h","//submodules/openssl:openssl_header_openssl_sub_x509v3.h","//submodules/openssl:openssl_header_openssl_sub_x509v3err.h","//submodules/ton:ton_build","//submodules/ton:ton_header_auto_sub_tl_sub_tonlib_api.h","//submodules/ton:ton_header_td_sub_utils_sub_SharedSlice.h","//submodules/ton:ton_header_td_sub_utils_sub_Slice-decl.h","//submodules/ton:ton_header_td_sub_utils_sub_Slice.h","//submodules/ton:ton_header_td_sub_utils_sub_check.h","//submodules/ton:ton_header_td_sub_utils_sub_common.h","//submodules/ton:ton_header_td_sub_utils_sub_config.h","//submodules/ton:ton_header_td_sub_utils_sub_int_types.h","//submodules/ton:ton_header_td_sub_utils_sub_port_sub_platform.h","//submodules/ton:ton_header_td_sub_utils_sub_unique_ptr.h","//submodules/ton:ton_header_tl_sub_TlObject.h","//submodules/ton:ton_header_tonlib_sub_Client.h","//submodules/ton:ton_header_tonlib_sub_tonlib_client_json.h","//submodules/ton:ton_header_tonlib_sub_tonlibjson_export.h"],"xcconfig-paths":["buck-out/gen/AppLibrary-Debug.xcconfig","buck-out/gen/AppLibrary-Profile.xcconfig","buck-out/gen/AppLibrary-Release.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/IntentsExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/NotificationContentExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/NotificationServiceExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/ShareExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/Telegram-Debug.xcconfig","buck-out/gen/Telegram-Profile.xcconfig","buck-out/gen/Telegram-Release.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Debug.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Profile.xcconfig","buck-out/gen/WatchApp#watchsimulator-i386-Release.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Debug.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Profile.xcconfig","buck-out/gen/WatchAppExtension#watchsimulator-i386-Release.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/WidgetExtension#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Debug.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Profile.xcconfig","buck-out/gen/submodules/AccountContext/AccountContext-Release.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Debug.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Profile.xcconfig","buck-out/gen/submodules/ActionSheetPeerItem/ActionSheetPeerItem-Release.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Debug.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Profile.xcconfig","buck-out/gen/submodules/ActivityIndicator/ActivityIndicator-Release.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Debug.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Profile.xcconfig","buck-out/gen/submodules/AlertUI/AlertUI-Release.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Debug.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Profile.xcconfig","buck-out/gen/submodules/AnimationUI/AnimationUI-Release.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Debug.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Profile.xcconfig","buck-out/gen/submodules/AppBundle/AppBundle-Release.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Debug.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Profile.xcconfig","buck-out/gen/submodules/AsyncDisplayKit/AsyncDisplayKit#shared-Release.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Debug.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Profile.xcconfig","buck-out/gen/submodules/AuthorizationUI/AuthorizationUI-Release.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Debug.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Profile.xcconfig","buck-out/gen/submodules/AvatarNode/AvatarNode-Release.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Debug.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Profile.xcconfig","buck-out/gen/submodules/BotPaymentsUI/BotPaymentsUI-Release.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Debug.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Profile.xcconfig","buck-out/gen/submodules/BuildConfig/BuildConfig-Release.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Debug.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Profile.xcconfig","buck-out/gen/submodules/CallListUI/CallListUI-Release.xcconfig","buck-out/gen/submodules/Camera/Camera-Debug.xcconfig","buck-out/gen/submodules/Camera/Camera-Profile.xcconfig","buck-out/gen/submodules/Camera/Camera-Release.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchItemHeader/ChatListSearchItemHeader-Release.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchItemNode/ChatListSearchItemNode-Release.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Debug.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Profile.xcconfig","buck-out/gen/submodules/ChatListSearchRecentPeersNode/ChatListSearchRecentPeersNode-Release.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Debug.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Profile.xcconfig","buck-out/gen/submodules/ChatListUI/ChatListUI-Release.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Debug.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Profile.xcconfig","buck-out/gen/submodules/ChatTitleActivityNode/ChatTitleActivityNode-Release.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Debug.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Profile.xcconfig","buck-out/gen/submodules/CheckNode/CheckNode-Release.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Debug.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Profile.xcconfig","buck-out/gen/submodules/ComposePollUI/ComposePollUI-Release.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Debug.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Profile.xcconfig","buck-out/gen/submodules/ContactListUI/ContactListUI-Release.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Debug.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Profile.xcconfig","buck-out/gen/submodules/ContactsPeerItem/ContactsPeerItem-Release.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Debug.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Profile.xcconfig","buck-out/gen/submodules/ContextUI/ContextUI-Release.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Debug.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Profile.xcconfig","buck-out/gen/submodules/CounterContollerTitleView/CounterContollerTitleView-Release.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Debug.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Profile.xcconfig","buck-out/gen/submodules/CountrySelectionUI/CountrySelectionUI-Release.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Debug.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Profile.xcconfig","buck-out/gen/submodules/Crc32/Crc32-Release.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Debug.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Profile.xcconfig","buck-out/gen/submodules/DateSelectionUI/DateSelectionUI-Release.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Debug.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Profile.xcconfig","buck-out/gen/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem-Release.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Debug.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Profile.xcconfig","buck-out/gen/submodules/DeviceAccess/DeviceAccess-Release.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Debug.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Profile.xcconfig","buck-out/gen/submodules/DeviceLocationManager/DeviceLocationManager-Release.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Debug.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Profile.xcconfig","buck-out/gen/submodules/DeviceProximity/DeviceProximity-Release.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Debug.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Profile.xcconfig","buck-out/gen/submodules/DirectionalPanGesture/DirectionalPanGesture-Release.xcconfig","buck-out/gen/submodules/Display/Display#shared-Debug.xcconfig","buck-out/gen/submodules/Display/Display#shared-Profile.xcconfig","buck-out/gen/submodules/Display/Display#shared-Release.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Debug.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Profile.xcconfig","buck-out/gen/submodules/Emoji/Emoji-Release.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Debug.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Profile.xcconfig","buck-out/gen/submodules/EncryptionKeyVisualization/EncryptionKeyVisualization-Release.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Debug.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Profile.xcconfig","buck-out/gen/submodules/FFMpeg/FFMpeg-Release.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Debug.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Profile.xcconfig","buck-out/gen/submodules/FFMpeg/libffmpeg-Release.xcconfig","buck-out/gen/submodules/GZip/GZip-Debug.xcconfig","buck-out/gen/submodules/GZip/GZip-Profile.xcconfig","buck-out/gen/submodules/GZip/GZip-Release.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Debug.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Profile.xcconfig","buck-out/gen/submodules/GalleryUI/GalleryUI-Release.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Debug.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Profile.xcconfig","buck-out/gen/submodules/GameUI/GameUI-Release.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Debug.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Profile.xcconfig","buck-out/gen/submodules/Geocoding/Geocoding-Release.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Debug.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Profile.xcconfig","buck-out/gen/submodules/GridMessageSelectionNode/GridMessageSelectionNode-Release.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Debug.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Profile.xcconfig","buck-out/gen/submodules/HashtagSearchUI/HashtagSearchUI-Release.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Debug.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Profile.xcconfig","buck-out/gen/submodules/HexColor/HexColor-Release.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Debug.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Profile.xcconfig","buck-out/gen/submodules/HockeySDK-iOS/HockeySDK-Release.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Debug.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Profile.xcconfig","buck-out/gen/submodules/HorizontalPeerItem/HorizontalPeerItem-Release.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Debug.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Profile.xcconfig","buck-out/gen/submodules/ImageBlur/ImageBlur-Release.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Debug.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Profile.xcconfig","buck-out/gen/submodules/ImageCompression/ImageCompression-Release.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Debug.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Profile.xcconfig","buck-out/gen/submodules/ImageTransparency/ImageTransparency-Release.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Debug.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Profile.xcconfig","buck-out/gen/submodules/InstantPageCache/InstantPageCache-Release.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Debug.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Profile.xcconfig","buck-out/gen/submodules/InstantPageUI/InstantPageUI-Release.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Debug.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Profile.xcconfig","buck-out/gen/submodules/ItemListAddressItem/ItemListAddressItem-Release.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Debug.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Profile.xcconfig","buck-out/gen/submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem-Release.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Debug.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Profile.xcconfig","buck-out/gen/submodules/ItemListPeerActionItem/ItemListPeerActionItem-Release.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Debug.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Profile.xcconfig","buck-out/gen/submodules/ItemListPeerItem/ItemListPeerItem-Release.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Debug.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Profile.xcconfig","buck-out/gen/submodules/ItemListStickerPackItem/ItemListStickerPackItem-Release.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Debug.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Profile.xcconfig","buck-out/gen/submodules/ItemListUI/ItemListUI-Release.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Debug.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Profile.xcconfig","buck-out/gen/submodules/JoinLinkPreviewUI/JoinLinkPreviewUI-Release.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Debug.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Profile.xcconfig","buck-out/gen/submodules/LanguageLinkPreviewUI/LanguageLinkPreviewUI-Release.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Debug.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Profile.xcconfig","buck-out/gen/submodules/LanguageSuggestionUI/LanguageSuggestionUI-Release.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Debug.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Profile.xcconfig","buck-out/gen/submodules/LegacyComponents/LegacyComponents-Release.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Debug.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Profile.xcconfig","buck-out/gen/submodules/LegacyDataImport/LegacyDataImport-Release.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Debug.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Profile.xcconfig","buck-out/gen/submodules/LegacyMediaPickerUI/LegacyMediaPickerUI-Release.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Debug.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Profile.xcconfig","buck-out/gen/submodules/LegacyUI/LegacyUI-Release.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Debug.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Profile.xcconfig","buck-out/gen/submodules/LightweightAccountData/LightweightAccountData-Release.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Debug.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Profile.xcconfig","buck-out/gen/submodules/ListSectionHeaderNode/ListSectionHeaderNode-Release.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Debug.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Profile.xcconfig","buck-out/gen/submodules/LiveLocationManager/LiveLocationManager-Release.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Debug.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Profile.xcconfig","buck-out/gen/submodules/LiveLocationPositionNode/LiveLocationPositionNode-Release.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Debug.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Profile.xcconfig","buck-out/gen/submodules/LiveLocationTimerNode/LiveLocationTimerNode-Release.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Debug.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Profile.xcconfig","buck-out/gen/submodules/LocalAuth/LocalAuth-Release.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Debug.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Profile.xcconfig","buck-out/gen/submodules/LocalMediaResources/LocalMediaResources-Release.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Debug.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Profile.xcconfig","buck-out/gen/submodules/LocalizedPeerData/LocalizedPeerData-Release.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Debug.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Profile.xcconfig","buck-out/gen/submodules/LocationUI/LocationUI-Release.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Debug.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Profile.xcconfig","buck-out/gen/submodules/MapResourceToAvatarSizes/MapResourceToAvatarSizes-Release.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Debug.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Profile.xcconfig","buck-out/gen/submodules/MediaPlayer/UniversalMediaPlayer-Release.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Debug.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Profile.xcconfig","buck-out/gen/submodules/MediaResources/MediaResources-Release.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Debug.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Profile.xcconfig","buck-out/gen/submodules/MergeLists/MergeLists-Release.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Debug.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Profile.xcconfig","buck-out/gen/submodules/MessageReactionListUI/MessageReactionListUI-Release.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Debug.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Profile.xcconfig","buck-out/gen/submodules/MimeTypes/MimeTypes-Release.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Debug.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Profile.xcconfig","buck-out/gen/submodules/MosaicLayout/MosaicLayout-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKit#shared-Release.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Debug.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Profile.xcconfig","buck-out/gen/submodules/MusicAlbumArtResources/MusicAlbumArtResources-Release.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Debug.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Profile.xcconfig","buck-out/gen/submodules/NotificationMuteSettingsUI/NotificationMuteSettingsUI-Release.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Debug.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Profile.xcconfig","buck-out/gen/submodules/NotificationSoundSelectionUI/NotificationSoundSelectionUI-Release.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Debug.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Profile.xcconfig","buck-out/gen/submodules/OpenInExternalAppUI/OpenInExternalAppUI-Release.xcconfig","buck-out/gen/submodules/Opus/opus-Debug.xcconfig","buck-out/gen/submodules/Opus/opus-Profile.xcconfig","buck-out/gen/submodules/Opus/opus-Release.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Debug.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Profile.xcconfig","buck-out/gen/submodules/Opus/opus_lib-Release.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Debug.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Profile.xcconfig","buck-out/gen/submodules/OpusBinding/OpusBinding-Release.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Debug.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Profile.xcconfig","buck-out/gen/submodules/OverlayStatusController/OverlayStatusController-Release.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Debug.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Profile.xcconfig","buck-out/gen/submodules/PasscodeUI/PasscodeUI-Release.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Debug.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Profile.xcconfig","buck-out/gen/submodules/PassportUI/PassportUI-Release.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Debug.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Profile.xcconfig","buck-out/gen/submodules/PasswordSetupUI/PasswordSetupUI-Release.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Debug.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Profile.xcconfig","buck-out/gen/submodules/Pdf/Pdf-Release.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Debug.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Profile.xcconfig","buck-out/gen/submodules/PeerAvatarGalleryUI/PeerAvatarGalleryUI-Release.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Debug.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Profile.xcconfig","buck-out/gen/submodules/PeerInfoUI/PeerInfoUI-Release.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Debug.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Profile.xcconfig","buck-out/gen/submodules/PeerOnlineMarkerNode/PeerOnlineMarkerNode-Release.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Debug.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Profile.xcconfig","buck-out/gen/submodules/PeerPresenceStatusManager/PeerPresenceStatusManager-Release.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Debug.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Profile.xcconfig","buck-out/gen/submodules/PeersNearbyIconNode/PeersNearbyIconNode-Release.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Debug.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Profile.xcconfig","buck-out/gen/submodules/PeersNearbyUI/PeersNearbyUI-Release.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Debug.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Profile.xcconfig","buck-out/gen/submodules/PersistentStringHash/PersistentStringHash-Release.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Debug.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Profile.xcconfig","buck-out/gen/submodules/PhoneInputNode/PhoneInputNode-Release.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Debug.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Profile.xcconfig","buck-out/gen/submodules/PhotoResources/PhotoResources-Release.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Debug.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Profile.xcconfig","buck-out/gen/submodules/PlatformRestrictionMatching/PlatformRestrictionMatching-Release.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Debug.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Profile.xcconfig","buck-out/gen/submodules/Postbox/Postbox#shared-Release.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Debug.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Profile.xcconfig","buck-out/gen/submodules/ProgressNavigationButtonNode/ProgressNavigationButtonNode-Release.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Debug.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Profile.xcconfig","buck-out/gen/submodules/QrCode/QrCode-Release.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Debug.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Profile.xcconfig","buck-out/gen/submodules/RMIntro/RMIntro-Release.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Debug.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Profile.xcconfig","buck-out/gen/submodules/RadialStatusNode/RadialStatusNode-Release.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Debug.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Profile.xcconfig","buck-out/gen/submodules/RaiseToListen/RaiseToListen-Release.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Debug.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Profile.xcconfig","buck-out/gen/submodules/ReactionSelectionNode/ReactionSelectionNode-Release.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Debug.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Profile.xcconfig","buck-out/gen/submodules/SSignalKit/SSignalKit/SSignalKit-Release.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Debug.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Profile.xcconfig","buck-out/gen/submodules/SSignalKit/SwiftSignalKit/SwiftSignalKit#shared-Release.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Debug.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Profile.xcconfig","buck-out/gen/submodules/SaveToCameraRoll/SaveToCameraRoll-Release.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Debug.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Profile.xcconfig","buck-out/gen/submodules/ScreenCaptureDetection/ScreenCaptureDetection-Release.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Debug.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Profile.xcconfig","buck-out/gen/submodules/SearchBarNode/SearchBarNode-Release.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Debug.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Profile.xcconfig","buck-out/gen/submodules/SearchUI/SearchUI-Release.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Debug.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Profile.xcconfig","buck-out/gen/submodules/SegmentedControlNode/SegmentedControlNode-Release.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Debug.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Profile.xcconfig","buck-out/gen/submodules/SelectablePeerNode/SelectablePeerNode-Release.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Debug.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Profile.xcconfig","buck-out/gen/submodules/SettingsUI/SettingsUI-Release.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Debug.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Profile.xcconfig","buck-out/gen/submodules/ShareController/ShareController-Release.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Debug.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Profile.xcconfig","buck-out/gen/submodules/ShareItems/ShareItems-Release.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Debug.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Profile.xcconfig","buck-out/gen/submodules/SinglePhoneInputNode/SinglePhoneInputNode-Release.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Debug.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Profile.xcconfig","buck-out/gen/submodules/SolidRoundedButtonNode/SolidRoundedButtonNode-Release.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Debug.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Profile.xcconfig","buck-out/gen/submodules/StickerPackPreviewUI/StickerPackPreviewUI-Release.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Debug.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Profile.xcconfig","buck-out/gen/submodules/StickerResources/StickerResources-Release.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Debug.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Profile.xcconfig","buck-out/gen/submodules/Stripe/Stripe-Release.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Debug.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Profile.xcconfig","buck-out/gen/submodules/SwipeToDismissGesture/SwipeToDismissGesture-Release.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Debug.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Profile.xcconfig","buck-out/gen/submodules/SwitchNode/SwitchNode-Release.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Debug.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Profile.xcconfig","buck-out/gen/submodules/TelegramApi/TelegramApi-Release.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Debug.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Profile.xcconfig","buck-out/gen/submodules/TelegramAudio/TelegramAudio-Release.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Debug.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Profile.xcconfig","buck-out/gen/submodules/TelegramBaseController/TelegramBaseController-Release.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Debug.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Profile.xcconfig","buck-out/gen/submodules/TelegramCallsUI/TelegramCallsUI-Release.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Debug.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Profile.xcconfig","buck-out/gen/submodules/TelegramCore/TelegramCore#shared-Release.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Debug.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Profile.xcconfig","buck-out/gen/submodules/TelegramNotices/TelegramNotices-Release.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Debug.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Profile.xcconfig","buck-out/gen/submodules/TelegramPermissions/TelegramPermissions-Release.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Debug.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Profile.xcconfig","buck-out/gen/submodules/TelegramPermissionsUI/TelegramPermissionsUI-Release.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Debug.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Profile.xcconfig","buck-out/gen/submodules/TelegramPresentationData/TelegramPresentationData-Release.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Debug.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Profile.xcconfig","buck-out/gen/submodules/TelegramStringFormatting/TelegramStringFormatting-Release.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Debug.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Profile.xcconfig","buck-out/gen/submodules/TelegramUI/TelegramUI#shared-Release.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Debug.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Profile.xcconfig","buck-out/gen/submodules/TelegramUIPreferences/TelegramUIPreferences-Release.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Debug.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Profile.xcconfig","buck-out/gen/submodules/TelegramUniversalVideoContent/TelegramUniversalVideoContent-Release.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Debug.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Profile.xcconfig","buck-out/gen/submodules/TelegramUpdateUI/TelegramUpdateUI-Release.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Debug.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Profile.xcconfig","buck-out/gen/submodules/TelegramVoip/TelegramVoip-Release.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Debug.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Profile.xcconfig","buck-out/gen/submodules/TemporaryCachedPeerDataManager/TemporaryCachedPeerDataManager-Release.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Debug.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Profile.xcconfig","buck-out/gen/submodules/TextFormat/TextFormat-Release.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Debug.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Profile.xcconfig","buck-out/gen/submodules/TextSelectionNode/TextSelectionNode-Release.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Debug.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Profile.xcconfig","buck-out/gen/submodules/TinyThumbnail/TinyThumbnail-Release.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Debug.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Profile.xcconfig","buck-out/gen/submodules/TouchDownGesture/TouchDownGesture-Release.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Debug.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Profile.xcconfig","buck-out/gen/submodules/Tuples/Tuples-Release.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Debug.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Profile.xcconfig","buck-out/gen/submodules/UndoUI/UndoUI-Release.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Debug.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Profile.xcconfig","buck-out/gen/submodules/UrlEscaping/UrlEscaping-Release.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Debug.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Profile.xcconfig","buck-out/gen/submodules/UrlHandling/UrlHandling-Release.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Debug.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Profile.xcconfig","buck-out/gen/submodules/WalletUI/WalletUI-Release.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Debug.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Profile.xcconfig","buck-out/gen/submodules/WallpaperResources/WallpaperResources-Release.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Debug.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Profile.xcconfig","buck-out/gen/submodules/WatchBridge/WatchBridge-Release.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Debug.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Profile.xcconfig","buck-out/gen/submodules/WatchBridgeAudio/WatchBridgeAudio-Release.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Debug.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Profile.xcconfig","buck-out/gen/submodules/WatchCommon/Host/WatchCommon-Release.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Debug.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Profile.xcconfig","buck-out/gen/submodules/WebP/WebPImage-Release.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Debug.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Profile.xcconfig","buck-out/gen/submodules/WebP/WebP_lib-Release.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Debug.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Profile.xcconfig","buck-out/gen/submodules/WebSearchUI/WebSearchUI-Release.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Debug.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Profile.xcconfig","buck-out/gen/submodules/WebUI/WebUI-Release.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Debug.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Profile.xcconfig","buck-out/gen/submodules/WebsiteType/WebsiteType-Release.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Debug.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Profile.xcconfig","buck-out/gen/submodules/YuvConversion/YuvConversion-Release.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Debug.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Profile.xcconfig","buck-out/gen/submodules/libphonenumber/libphonenumber-Release.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Debug.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Profile.xcconfig","buck-out/gen/submodules/libtgvoip/libtgvoip-Release.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Debug.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Profile.xcconfig","buck-out/gen/submodules/lottie-ios/Lottie-Release.xcconfig","buck-out/gen/submodules/openssl/openssl-Debug.xcconfig","buck-out/gen/submodules/openssl/openssl-Profile.xcconfig","buck-out/gen/submodules/openssl/openssl-Release.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Debug.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Profile.xcconfig","buck-out/gen/submodules/rlottie/RLottieBinding-Release.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Debug.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Profile.xcconfig","buck-out/gen/submodules/sqlcipher/sqlcipher-Release.xcconfig","buck-out/gen/submodules/ton/ton-Debug.xcconfig","buck-out/gen/submodules/ton/ton-Profile.xcconfig","buck-out/gen/submodules/ton/ton-Release.xcconfig"],"copy-in-xcode":[]}
\ No newline at end of file
diff --git a/Telegram_Buck.xcworkspace/contents.xcworkspacedata b/Telegram_Buck.xcworkspace/contents.xcworkspacedata
index f8d39baefe..56b76f1d96 100644
--- a/Telegram_Buck.xcworkspace/contents.xcworkspacedata
+++ b/Telegram_Buck.xcworkspace/contents.xcworkspacedata
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Telegram_Buck.xcworkspace/xcshareddata/xcschemes/Telegram_Buck.xcscheme b/Telegram_Buck.xcworkspace/xcshareddata/xcschemes/Telegram_Buck.xcscheme
index 4598c4b8b6..49314580e4 100644
--- a/Telegram_Buck.xcworkspace/xcshareddata/xcschemes/Telegram_Buck.xcscheme
+++ b/Telegram_Buck.xcworkspace/xcshareddata/xcschemes/Telegram_Buck.xcscheme
@@ -73,7 +73,7 @@
BlueprintIdentifier = "E66DC04EB4B57B8200000000"
BuildableName = "libopenssl.a"
BlueprintName = "openssl"
- ReferencedContainer = "container:submodules/MtProtoKit/MtProtoKit.xcodeproj">
+ ReferencedContainer = "container:submodules/openssl/openssl.xcodeproj">
+ ReferencedContainer = "container:submodules/ton/ton.xcodeproj">
"$TEMP_PATH/temp.plist" && /usr/libexec/PlistBuddy -x -c 'Print:Entitlements' "$TEMP_PATH/temp.plist" > "$PROFILE_ENTITLEMENTS_PATH"
-
- for KEY in "${REMOVE_ENTITLEMENT_KEYS[@]}"; do
- /usr/libexec/PlistBuddy -c "Delete $KEY" "$PROFILE_ENTITLEMENTS_PATH" 2>/dev/null
- done
-
- ENTITLEMENTS_VAR=PACKAGE_ENTITLEMENTS_$ITEM
- if [ ! -z "${!ENTITLEMENTS_VAR}" ]; then
- if [ ! -f "${!ENTITLEMENTS_VAR}" ]; then
- echo "${!ENTITLEMENTS_VAR} does not exist"
- exit 1
- fi
-
- for KEY in "${COPY_ENTITLEMENT_KEYS[@]}"; do
- VALUE=$(PlistBuddy -c "Print :$KEY" "${!ENTITLEMENTS_VAR}")
- echo "$VALUE"
- exit 0
- done
- fi
- declare ENTITLEMENTS_PATH_$ITEM="$PROFILE_ENTITLEMENTS_PATH"
- fi
- done
-done
-
-for ITEM in $APP_ITEMS_WITH_PROVISIONING_PROFILE; do
- PROFILE_PATH_VAR=PROFILE_PATH_$ITEM
- if [ -z "${!PROFILE_PATH_VAR}" ]; then
- echo "Provisioning profile for $ITEM was not found"
- exit 1
- fi
-done
-
-for ITEM in $APP_ITEMS_WITH_ENTITLEMENTS; do
- ENTITLEMENTS_VAR=PACKAGE_ENTITLEMENTS_$ITEM
- if [ -z "${!ENTITLEMENTS_VAR}" ]; then
- echo "$ENTITLEMENTS_VAR is not set"
- exit 1
- fi
- if [ ! -f "${!ENTITLEMENTS_VAR}" ]; then
- echo "${!ENTITLEMENTS_VAR} does not exist"
- exit 1
- fi
-done
-
-if [ -z "$COMMON_IDENTITY_HASH" ]; then
- echo "Failed to determine signing identity"
- exit 1
-fi
-
-for DEPENDENCY in $(${BUCK} query "kind('apple_library', deps('//:Telegram#$PLATFORM_FLAVORS', 1))" "$@"); do
- DEPENDENCY_PATH=$(echo "$DEPENDENCY" | sed -e "s#^//##" | sed -e "s#:#/#")
- DEPENDENCY_NAME=$(echo "$DEPENDENCY" | sed -e "s/#.*//" | sed -e "s/^.*\://")
- DYLIB_PATH="buck-out/gen/$DEPENDENCY_PATH/lib$DEPENDENCY_NAME.dylib"
- TARGET_DYLIB_PATH="$FRAMEWORKS_DIR/lib$DEPENDENCY_NAME.dylib"
- cp "$DYLIB_PATH" "$TARGET_DYLIB_PATH"
- DSYM_PATH="buck-out/gen/$(echo "$DEPENDENCY" | sed -e "s/#/#apple-dsym,/" | sed -e "s#^//##" | sed -e "s#:#/#").dSYM"
- cp -r "$DSYM_PATH" "$DSYMS_DIR/"
-done
-
-APP_BINARY_DSYM_PATH="buck-out/gen/Telegram#dwarf-and-dsym,$PLATFORM_FLAVORS,no-include-frameworks/Telegram.app.dSYM"
-cp -r "$APP_BINARY_DSYM_PATH" "$DSYMS_DIR/"
-
-EXTENSIONS="Share Widget Intents NotificationContent NotificationService"
-for EXTENSION in $EXTENSIONS; do
- EXTENSION_DSYM_PATH="buck-out/gen/${EXTENSION}Extension#dwarf-and-dsym,$PLATFORM_FLAVORS,no-include-frameworks/${EXTENSION}Extension.appex.dSYM"
- cp -r "$EXTENSION_DSYM_PATH" "$DSYMS_DIR/"
-done
-
-WATCH_EXTENSION_DSYM_PATH="buck-out/gen/WatchAppExtension#dwarf-and-dsym,no-include-frameworks,watchos-arm64_32,watchos-armv7k/WatchAppExtension.appex.dSYM"
-cp -r "$WATCH_EXTENSION_DSYM_PATH" "$DSYMS_DIR/"
-
-for LIB in $(ls "$FRAMEWORKS_DIR"/*.dylib); do
- strip -S -T "$LIB"
-done
-
-xcrun swift-stdlib-tool --scan-folder "$IPA_PATH.original.unpacked/Payload/Telegram.app" --scan-folder "$IPA_PATH.original.unpacked/Payload/Telegram.app/Frameworks" --scan-folder "$IPA_PATH.original.unpacked/Payload/Telegram.app/PlugIns" --strip-bitcode --platform iphoneos --copy --destination "$IPA_PATH.original.unpacked/SwiftSupport/iphoneos"
-
-cp "$IPA_PATH.original.unpacked/SwiftSupport/iphoneos/"*.dylib "$FRAMEWORKS_DIR/"
-
-REMOVE_ARCHS="armv7s arm64e"
-
-for framework in "$FRAMEWORKS_DIR"/*; do
- if [[ "$framework" == *.framework || "$framework" == *.dylib ]]; then
- codesign --remove-signature "$framework"
- for ARCH in $REMOVE_ARCHS; do
- lipo -remove "$ARCH" "$framework" -o "$framework" || true
- done
- xcrun bitcode_strip -r "$framework" -o "$framework"
- strip -S -T "$framework"
- /usr/bin/codesign ${VERBOSE} ${KEYCHAIN_FLAG} -f -s "$COMMON_IDENTITY_HASH" "$framework"
- fi
-done
-
-PLUGINS="Share Widget Intents NotificationService NotificationContent"
-for PLUGIN in $PLUGINS; do
- PLUGIN_PATH="$APP_PATH/PlugIns/${PLUGIN}Extension.appex"
- if [ ! -d "$PLUGIN_PATH" ]; then
- echo "Directory at $PLUGIN_PATH does not exist"
- exit 1
- fi
- PROFILE_PATH_VAR="PROFILE_PATH_EXTENSION_$PLUGIN"
- if [ -z "${!PROFILE_PATH_VAR}" ]; then
- echo "$PROFILE_PATH_VAR is not defined"
- exit 1
- fi
- if [ ! -f "${!PROFILE_PATH_VAR}" ]; then
- echo "${!PROFILE_PATH_VAR} does not exist"
- exit 1
- fi
- ENTITLEMENTS_PATH_VAR="ENTITLEMENTS_PATH_EXTENSION_$PLUGIN"
- if [ -z "${!ENTITLEMENTS_PATH_VAR}" ]; then
- echo "$ENTITLEMENTS_PATH_VAR is not defined"
- exit 1
- fi
- if [ ! -f "${!ENTITLEMENTS_PATH_VAR}" ]; then
- echo "${!ENTITLEMENTS_PATH_VAR} does not exist"
- exit 1
- fi
- cp "${!PROFILE_PATH_VAR}" "$PLUGIN_PATH/embedded.mobileprovision"
- /usr/bin/codesign ${VERBOSE} -f -s "$COMMON_IDENTITY_HASH" --entitlements "${!ENTITLEMENTS_PATH_VAR}" "$PLUGIN_PATH"
-done
-
-WATCH_APP_PATH="$APP_PATH/Watch/WatchApp.app"
-WATCH_EXTENSION_PATH="$WATCH_APP_PATH/PlugIns/WatchAppExtension.appex"
-
-WATCH_EXTENSION_PROFILE_PATH_VAR="PROFILE_PATH_WATCH_EXTENSION"
-if [ -z "${!WATCH_EXTENSION_PROFILE_PATH_VAR}" ]; then
- echo "$WATCH_EXTENSION_PROFILE_PATH_VAR is not defined"
- exit 1
-fi
-if [ ! -f "${!WATCH_EXTENSION_PROFILE_PATH_VAR}" ]; then
- echo "${!WATCH_EXTENSION_PROFILE_PATH_VAR} does not exist"
- exit 1
-fi
-WATCH_EXTENSION_ENTITLEMENTS_PATH_VAR="ENTITLEMENTS_PATH_WATCH_EXTENSION"
-if [ -z "${!WATCH_EXTENSION_ENTITLEMENTS_PATH_VAR}" ]; then
- echo "$WATCH_EXTENSION_ENTITLEMENTS_PATH_VAR is not defined"
- exit 1
-fi
-if [ ! -f "${!WATCH_EXTENSION_ENTITLEMENTS_PATH_VAR}" ]; then
- echo "${!WATCH_EXTENSION_ENTITLEMENTS_PATH_VAR} does not exist"
- exit 1
-fi
-
-cp "${!WATCH_EXTENSION_PROFILE_PATH_VAR}" "$WATCH_EXTENSION_PATH/embedded.mobileprovision"
-/usr/bin/codesign ${VERBOSE} -f -s "$COMMON_IDENTITY_HASH" --entitlements "${!WATCH_EXTENSION_ENTITLEMENTS_PATH_VAR}" "$WATCH_EXTENSION_PATH"
-
-WATCH_APP_PROFILE_PATH_VAR="PROFILE_PATH_WATCH_APP"
-if [ -z "${!WATCH_APP_PROFILE_PATH_VAR}" ]; then
- echo "$WATCH_APP_PROFILE_PATH_VAR is not defined"
- exit 1
-fi
-if [ ! -f "${!WATCH_APP_PROFILE_PATH_VAR}" ]; then
- echo "${!WATCH_APP_PROFILE_PATH_VAR} does not exist"
- exit 1
-fi
-WATCH_APP_ENTITLEMENTS_PATH_VAR="ENTITLEMENTS_PATH_WATCH_APP"
-if [ -z "${!WATCH_APP_ENTITLEMENTS_PATH_VAR}" ]; then
- echo "$WATCH_APP_ENTITLEMENTS_PATH_VAR is not defined"
- exit 1
-fi
-if [ ! -f "${!WATCH_APP_ENTITLEMENTS_PATH_VAR}" ]; then
- echo "${!WATCH_APP_ENTITLEMENTS_PATH_VAR} does not exist"
- exit 1
-fi
-
-cp "${!WATCH_APP_PROFILE_PATH_VAR}" "$WATCH_APP_PATH/embedded.mobileprovision"
-/usr/bin/codesign ${VERBOSE} -f -s "$COMMON_IDENTITY_HASH" --entitlements "${!WATCH_APP_ENTITLEMENTS_PATH_VAR}" "$WATCH_APP_PATH"
-
-APP_PROFILE_PATH_VAR="PROFILE_PATH_APP"
-if [ -z "${!APP_PROFILE_PATH_VAR}" ]; then
- echo "$APP_PROFILE_PATH_VAR is not defined"
- exit 1
-fi
-if [ ! -f "${!APP_PROFILE_PATH_VAR}" ]; then
- echo "${!APP_PROFILE_PATH_VAR} does not exist"
- exit 1
-fi
-APP_ENTITLEMENTS_PATH_VAR="ENTITLEMENTS_PATH_APP"
-if [ -z "${!APP_ENTITLEMENTS_PATH_VAR}" ]; then
- echo "$APP_ENTITLEMENTS_PATH_VAR is not defined"
- exit 1
-fi
-if [ ! -f "${!APP_ENTITLEMENTS_PATH_VAR}" ]; then
- echo "${!APP_ENTITLEMENTS_PATH_VAR} does not exist"
- exit 1
-fi
-
-cp "${!APP_PROFILE_PATH_VAR}" "$APP_PATH/embedded.mobileprovision"
-/usr/bin/codesign ${VERBOSE} -f -s "$COMMON_IDENTITY_HASH" --entitlements "${!APP_ENTITLEMENTS_PATH_VAR}" "$APP_PATH"
-
-DIR=$(pwd)
-
-cd "$UNPACKED_PATH"
-if [ "$PACKAGE_METHOD" == "appstore" ]; then
- zip -r "../${APP_NAME}_signed.ipa" Payload SwiftSupport WatchKitSupport2
-elif [ "$PACKAGE_METHOD" == "enterprise" ]; then
- zip -r "../${APP_NAME}_signed.ipa" Payload
-fi
-cd "$DIR"
-
-cd "$BUILD_PATH"
-zip -r "$DSYMS_FOLDER_NAME.zip" "$DSYMS_FOLDER_NAME"
-
-cd "$DIR"
diff --git a/submodules/Display/Display/ListView.swift b/submodules/Display/Display/ListView.swift
index 2ac3ce8669..0b7f6c16ee 100644
--- a/submodules/Display/Display/ListView.swift
+++ b/submodules/Display/Display/ListView.swift
@@ -1053,7 +1053,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
if self.stackFromBottom {
topOffset = 0.0
} else {
- topOffset = self.visibleSize.height
+ topOffset = 0.0
}
} else {
if self.stackFromBottom {
diff --git a/submodules/Display/Display/Navigation/NavigationContainer.swift b/submodules/Display/Display/Navigation/NavigationContainer.swift
index 8f9e665d18..a7449e0a2a 100644
--- a/submodules/Display/Display/Navigation/NavigationContainer.swift
+++ b/submodules/Display/Display/Navigation/NavigationContainer.swift
@@ -85,6 +85,9 @@ final class NavigationContainer: ASDisplayNode, UIGestureRecognizerDelegate {
}
}
+ var statusBarStyle: StatusBarStyle = .Ignore
+ var statusBarStyleUpdated: (() -> Void)?
+
init(controllerRemoved: @escaping (ViewController) -> Void) {
self.controllerRemoved = controllerRemoved
@@ -286,6 +289,9 @@ final class NavigationContainer: ASDisplayNode, UIGestureRecognizerDelegate {
if let top = self.state.top {
self.applyLayout(layout: layout, to: top, transition: transition)
+ self.statusBarStyle = top.value.statusBar.statusBarStyle
+ } else {
+ self.statusBarStyle = .Ignore
}
if self.state.transition == nil {
diff --git a/submodules/Display/Display/Navigation/NavigationController.swift b/submodules/Display/Display/Navigation/NavigationController.swift
index 64c6bddfd2..aa2bd05dad 100644
--- a/submodules/Display/Display/Navigation/NavigationController.swift
+++ b/submodules/Display/Display/Navigation/NavigationController.swift
@@ -238,6 +238,8 @@ open class NavigationController: UINavigationController, ContainableController,
let navigationLayout = makeNavigationLayout(layout: layout, controllers: self._viewControllers)
var transition = transition
+ var statusBarStyle: StatusBarStyle = .Ignore
+ var animateStatusBarStyleTransition = transition.isAnimated
var modalContainers: [NavigationModalContainer] = []
for i in 0 ..< navigationLayout.modal.count {
@@ -408,6 +410,15 @@ open class NavigationController: UINavigationController, ContainableController,
}
}
+ if let rootContainer = self.rootContainer {
+ switch rootContainer {
+ case let .flat(container):
+ statusBarStyle = container.statusBarStyle
+ case .split:
+ break
+ }
+ }
+
switch layout.metrics.widthClass {
case .compact:
if visibleModalCount != 0 {
@@ -451,16 +462,14 @@ open class NavigationController: UINavigationController, ContainableController,
rootModalFrame.updateDismissal(transition: transition, progress: effectiveRootModalDismissProgress, additionalProgress: additionalModalFrameProgress, completion: {})
}
if effectiveRootModalDismissProgress < 0.5 {
- self.statusBarHost?.setStatusBarStyle(.lightContent, animated: transition.isAnimated || forceStatusBarAnimation)
+ statusBarStyle = .White
+ if forceStatusBarAnimation {
+ animateStatusBarStyleTransition = true
+ }
} else {
- let normalStatusBarStyle: UIStatusBarStyle
- switch self.theme.statusBar {
- case .black:
- normalStatusBarStyle = .default
- case .white:
- normalStatusBarStyle = .lightContent
+ if forceStatusBarAnimation {
+ animateStatusBarStyleTransition = true
}
- self.statusBarHost?.setStatusBarStyle(normalStatusBarStyle, animated: transition.isAnimated || forceStatusBarAnimation)
}
if let rootContainer = self.rootContainer {
var rootContainerNode: ASDisplayNode
@@ -494,14 +503,6 @@ open class NavigationController: UINavigationController, ContainableController,
rootModalFrame.updateDismissal(transition: transition, progress: 1.0, additionalProgress: 0.0, completion: { [weak rootModalFrame] in
rootModalFrame?.removeFromSupernode()
})
- let normalStatusBarStyle: UIStatusBarStyle
- switch self.theme.statusBar {
- case .black:
- normalStatusBarStyle = .default
- case .white:
- normalStatusBarStyle = .lightContent
- }
- self.statusBarHost?.setStatusBarStyle(normalStatusBarStyle, animated: transition.isAnimated)
}
if let rootContainer = self.rootContainer {
var rootContainerNode: ASDisplayNode
@@ -520,14 +521,6 @@ open class NavigationController: UINavigationController, ContainableController,
rootModalFrame.updateDismissal(transition: .immediate, progress: 1.0, additionalProgress: 0.0, completion: { [weak rootModalFrame] in
rootModalFrame?.removeFromSupernode()
})
- let normalStatusBarStyle: UIStatusBarStyle
- switch self.theme.statusBar {
- case .black:
- normalStatusBarStyle = .default
- case .white:
- normalStatusBarStyle = .lightContent
- }
- self.statusBarHost?.setStatusBarStyle(normalStatusBarStyle, animated: false)
}
if let rootContainer = self.rootContainer {
var rootContainerNode: ASDisplayNode
@@ -541,16 +534,26 @@ open class NavigationController: UINavigationController, ContainableController,
}
}
- if self.validStatusBarStyle != self.theme.statusBar {
- self.validStatusBarStyle = self.theme.statusBar
+ let resolvedStatusBarStyle: NavigationStatusBarStyle
+ switch statusBarStyle {
+ case .Ignore, .Hide:
+ resolvedStatusBarStyle = self.theme.statusBar
+ case .Black:
+ resolvedStatusBarStyle = .black
+ case .White:
+ resolvedStatusBarStyle = .white
+ }
+
+ if self.validStatusBarStyle != resolvedStatusBarStyle {
+ self.validStatusBarStyle = resolvedStatusBarStyle
let normalStatusBarStyle: UIStatusBarStyle
- switch self.theme.statusBar {
+ switch resolvedStatusBarStyle {
case .black:
normalStatusBarStyle = .default
case .white:
normalStatusBarStyle = .lightContent
}
- self.statusBarHost?.setStatusBarStyle(normalStatusBarStyle, animated: false)
+ self.statusBarHost?.setStatusBarStyle(normalStatusBarStyle, animated: animateStatusBarStyleTransition)
}
}
diff --git a/submodules/MtProtoKit/BUCK b/submodules/MtProtoKit/BUCK
index 7849442a2a..450f4d878c 100644
--- a/submodules/MtProtoKit/BUCK
+++ b/submodules/MtProtoKit/BUCK
@@ -1,81 +1,4 @@
-load("//Config:buck_rule_macros.bzl", "static_library", "framework")
-
-genrule(
- name = "openssl_libs",
- srcs = [
- "openssl/iOS/libcrypto.a",
- ],
- bash = "mkdir -p $OUT; cp $SRCS $OUT/",
- out = "openssl_libs",
- visibility = ["PUBLIC"]
-)
-
-apple_library(
- name = "openssl",
- visibility = [
- "//submodules/MtProtoKit:MtProtoKit"
- ],
- header_namespace = "openssl",
- exported_headers = glob([
- "openssl/**/*.h",
- ]),
- exported_linker_flags = [
- "-lcrypto",
- "-L$(location :openssl_libs)",
- ],
-)
-
-ton_lib_names = [
- "adnllite",
- "crc32c",
- "fift",
- "keys",
- "memprof",
- "tdactor",
- "tddb",
- "tdnet",
- "tdtl",
- "tdutils",
- "terminal",
- "tl-lite-utils",
- "tl-utils",
- "tl_api",
- "tl_lite_api",
- "tl_tonlib_api",
- "tl_tonlib_api_json",
- "ton_block",
- "ton_crypto",
- "ton_db",
- "tonlib",
- "tonlibjson_private",
- "tonlibjson_static",
-]
-
-ton_lib_flags = ["-l" + name for name in ton_lib_names]
-
-genrule(
- name = "ton_libs",
- srcs = glob([
- "TON/*.a",
- ]),
- bash = "mkdir -p $OUT; cp $SRCS $OUT/",
- out = "ton_libs",
- visibility = ["PUBLIC"]
-)
-
-apple_library(
- name = "ton",
- visibility = [
- "//submodules/MtProtoKit:MtProtoKit"
- ],
- header_namespace = "ton",
- exported_headers = glob([
- "TON/include/*.h",
- ]),
- exported_linker_flags = [
- "-L$(location :ton_libs)",
- ] + ton_lib_flags,
-)
+load("//Config:buck_rule_macros.bzl", "static_library", "framework", "glob_map", "merge_maps")
framework(
name = "MtProtoKit",
@@ -87,13 +10,14 @@ framework(
"TON/*.m",
"TON/*.mm",
]),
- headers = glob([
- "*.h",
- "MtProtoKit/*.h",
- "thirdparty/AFNetworking/*.h",
- "thirdparty/AsyncSocket/*.h",
- "TON/*.h",
- "TON/include/*.h",
+ headers = merge_maps([
+ glob_map(glob([
+ "*.h",
+ "MtProtoKit/*.h",
+ "thirdparty/AFNetworking/*.h",
+ "thirdparty/AsyncSocket/*.h",
+ "TON/*.h",
+ ])),
]),
exported_headers = [
"MtProtoKit/MTTime.h",
@@ -159,8 +83,8 @@ framework(
],
visibility = ["PUBLIC"],
deps = [
- ":openssl",
- ":ton",
+ "//submodules/openssl:openssl",
+ "//submodules/ton:ton",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
diff --git a/submodules/MtProtoKit/MTPKCS.m b/submodules/MtProtoKit/MTPKCS.m
index 8fc6143692..c7c221d3b3 100644
--- a/submodules/MtProtoKit/MTPKCS.m
+++ b/submodules/MtProtoKit/MTPKCS.m
@@ -51,7 +51,10 @@
return nil;
}
- result = [[MTPKCS alloc] initWithName:[NSString stringWithUTF8String:cert->name] data:[NSData dataWithBytes:cert->cert_info->key->public_key->data length:cert->cert_info->key->public_key->length]];
+ X509_NAME *name = X509_get_subject_name(cert);
+ EVP_PKEY *publicKey = X509_get_pubkey(cert);
+
+ //result = [[MTPKCS alloc] initWithName:[NSString stringWithUTF8String:cert->name] data:[NSData dataWithBytes:cert->cert_info->key->public_key->data length:cert->cert_info->key->public_key->length]];
return result;
}
diff --git a/submodules/MtProtoKit/MTProtoKit/MTEncryption.m b/submodules/MtProtoKit/MTProtoKit/MTEncryption.m
index 3bf73680c7..4e778873f9 100644
--- a/submodules/MtProtoKit/MTProtoKit/MTEncryption.m
+++ b/submodules/MtProtoKit/MTProtoKit/MTEncryption.m
@@ -10,6 +10,7 @@
#include
#include
+#include
#import "MTAes.h"
#import "MTRsa.h"
@@ -800,17 +801,20 @@ uint64_t MTRsaFingerprint(NSString *key) {
BIO_write(keyBio, keyData.bytes, (int)keyData.length);
RSA *rsaKey = PEM_read_bio_RSAPublicKey(keyBio, NULL, NULL, NULL);
- int nBytes = BN_num_bytes(rsaKey->n);
- int eBytes = BN_num_bytes(rsaKey->e);
+ BIGNUM *rsaKeyN = RSA_get0_n(rsaKey);
+ BIGNUM *rsaKeyE = RSA_get0_e(rsaKey);
+
+ int nBytes = BN_num_bytes(rsaKeyN);
+ int eBytes = BN_num_bytes(rsaKeyE);
MTBuffer *buffer = [[MTBuffer alloc] init];
NSMutableData *nData = [[NSMutableData alloc] initWithLength:nBytes];
- BN_bn2bin(rsaKey->n, nData.mutableBytes);
+ BN_bn2bin(rsaKeyN, nData.mutableBytes);
[buffer appendTLBytes:nData];
NSMutableData *eData = [[NSMutableData alloc] initWithLength:eBytes];
- BN_bn2bin(rsaKey->e, eData.mutableBytes);
+ BN_bn2bin(rsaKeyE, eData.mutableBytes);
[buffer appendTLBytes:eData];
NSData *sha1Data = MTSha1(buffer.data);
@@ -877,32 +881,33 @@ static NSData *decrypt_TL_data(unsigned char buffer[256]) {
return nil;
}
- BIGNUM x, y;
+ BIGNUM *x = BN_new();
+ BIGNUM *y = BN_new();
BN_CTX *bnContext = BN_CTX_new();
uint8_t *bytes = buffer;
- BN_init(&x);
- BN_init(&y);
- BN_bin2bn(bytes, 256, &x);
+ BN_bin2bn(bytes, 256, x);
+
+ BIGNUM *rsaKeyN = RSA_get0_n(rsaKey);
+ BIGNUM *rsaKeyE = RSA_get0_e(rsaKey);
NSData *result = nil;
- if (BN_mod_exp(&y, &x, rsaKey->e, rsaKey->n, bnContext) == 1) {
- unsigned l = 256 - BN_num_bytes(&y);
+ if (BN_mod_exp(y, x, rsaKeyE, rsaKeyN, bnContext) == 1) {
+ unsigned l = 256 - BN_num_bytes(y);
memset(bytes, 0, l);
- if (BN_bn2bin(&y, bytes + l) == 256 - l) {
+ if (BN_bn2bin(y, bytes + l) == 256 - l) {
AES_KEY aeskey;
unsigned char iv[16];
memcpy(iv, bytes + 16, 16);
AES_set_decrypt_key(bytes, 256, &aeskey);
AES_cbc_encrypt(bytes + 32, bytes + 32, 256 - 32, &aeskey, iv, AES_DECRYPT);
- EVP_MD_CTX ctx;
+ EVP_MD_CTX *ctx = EVP_MD_CTX_new();
unsigned char sha256_out[32];
unsigned olen = 0;
- EVP_MD_CTX_init(&ctx);
- EVP_DigestInit_ex(&ctx, EVP_sha256(), NULL);
- EVP_DigestUpdate(&ctx, bytes + 32, 256 - 32 - 16);
- EVP_DigestFinal_ex(&ctx, sha256_out, &olen);
- EVP_MD_CTX_cleanup(&ctx);
+ EVP_DigestInit_ex(ctx, EVP_sha256(), NULL);
+ EVP_DigestUpdate(ctx, bytes + 32, 256 - 32 - 16);
+ EVP_DigestFinal_ex(ctx, sha256_out, &olen);
+ EVP_MD_CTX_free(ctx);
if (olen == 32) {
if (memcmp(bytes + 256 - 16, sha256_out, 16) == 0) {
unsigned data_len = *(unsigned *) (bytes + 32);
@@ -921,8 +926,8 @@ static NSData *decrypt_TL_data(unsigned char buffer[256]) {
}
}
}
- BN_free(&x);
- BN_free(&y);
+ BN_free(x);
+ BN_free(y);
RSA_free(rsaKey);
BIO_free(keyBio);
BN_CTX_free(bnContext);
diff --git a/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj b/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
index 20d7499874..5562d9a393 100644
--- a/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/project.pbxproj
@@ -47,35 +47,29 @@
D018559922DDD37300AC458A /* int_types.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558D22DDD36C00AC458A /* int_types.h */; };
D018559A22DDD37300AC458A /* TonlibCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558E22DDD36C00AC458A /* TonlibCallback.h */; };
D018559B22DDD37300AC458A /* platform.h in Headers */ = {isa = PBXBuildFile; fileRef = D018558F22DDD36C00AC458A /* platform.h */; };
- D018559C22DDD38B00AC458A /* libtdutils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D08A159322DD32CF0073B508 /* libtdutils.a */; };
- D018559D22DDD38B00AC458A /* libtddb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D08A159522DD32CF0073B508 /* libtddb.a */; };
- D018559E22DDD38B00AC458A /* libtdactor.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D08A159422DD32CF0073B508 /* libtdactor.a */; };
- D01855B322DDD38D00AC458A /* libtl_lite_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D018559F22DDD38B00AC458A /* libtl_lite_api.a */; };
- D01855B422DDD38D00AC458A /* libadnllite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A022DDD38C00AC458A /* libadnllite.a */; };
- D01855B522DDD38D00AC458A /* libfift.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A122DDD38C00AC458A /* libfift.a */; };
- D01855B622DDD38D00AC458A /* libkeys.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A222DDD38C00AC458A /* libkeys.a */; };
- D01855B722DDD38D00AC458A /* libtl-lite-utils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A322DDD38C00AC458A /* libtl-lite-utils.a */; };
- D01855B822DDD38D00AC458A /* libtl-utils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A422DDD38C00AC458A /* libtl-utils.a */; };
- D01855B922DDD38D00AC458A /* libton_db.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A522DDD38C00AC458A /* libton_db.a */; };
- D01855BA22DDD38D00AC458A /* libtonlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A622DDD38C00AC458A /* libtonlib.a */; };
- D01855BB22DDD38D00AC458A /* libterminal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A722DDD38C00AC458A /* libterminal.a */; };
- D01855BC22DDD38D00AC458A /* libtonlibjson_private.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A822DDD38C00AC458A /* libtonlibjson_private.a */; };
- D01855BD22DDD38D00AC458A /* libton_crypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855A922DDD38C00AC458A /* libton_crypto.a */; };
- D01855BE22DDD38D00AC458A /* libtl_tonlib_api_json.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AA22DDD38C00AC458A /* libtl_tonlib_api_json.a */; };
- D01855BF22DDD38D00AC458A /* libtdnet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AB22DDD38C00AC458A /* libtdnet.a */; };
- D01855C022DDD38D00AC458A /* libtl_tonlib_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AC22DDD38C00AC458A /* libtl_tonlib_api.a */; };
- D01855C122DDD38D00AC458A /* libtonlibjson_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AD22DDD38C00AC458A /* libtonlibjson_static.a */; };
- D01855C222DDD38D00AC458A /* libton_block.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AE22DDD38D00AC458A /* libton_block.a */; };
- D01855C322DDD38D00AC458A /* libtl_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855AF22DDD38D00AC458A /* libtl_api.a */; };
- D01855C422DDD38D00AC458A /* libcrc32c.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855B022DDD38D00AC458A /* libcrc32c.a */; };
- D01855C522DDD38D00AC458A /* libtdtl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855B122DDD38D00AC458A /* libtdtl.a */; };
- D01855C622DDD38D00AC458A /* libmemprof.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01855B222DDD38D00AC458A /* libmemprof.a */; };
D0185E722089D265005E1A6C /* MTProxyConnectivity.h in Headers */ = {isa = PBXBuildFile; fileRef = D0185E702089D265005E1A6C /* MTProxyConnectivity.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0185E732089D265005E1A6C /* MTProxyConnectivity.h in Headers */ = {isa = PBXBuildFile; fileRef = D0185E702089D265005E1A6C /* MTProxyConnectivity.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0185E742089D265005E1A6C /* MTProxyConnectivity.h in Headers */ = {isa = PBXBuildFile; fileRef = D0185E702089D265005E1A6C /* MTProxyConnectivity.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0185E752089D265005E1A6C /* MTProxyConnectivity.m in Sources */ = {isa = PBXBuildFile; fileRef = D0185E712089D265005E1A6C /* MTProxyConnectivity.m */; };
D0185E762089D265005E1A6C /* MTProxyConnectivity.m in Sources */ = {isa = PBXBuildFile; fileRef = D0185E712089D265005E1A6C /* MTProxyConnectivity.m */; };
D0185E772089D265005E1A6C /* MTProxyConnectivity.m in Sources */ = {isa = PBXBuildFile; fileRef = D0185E712089D265005E1A6C /* MTProxyConnectivity.m */; };
+ D01B263623324B9000A6448B /* libtdnet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262623324B8F00A6448B /* libtdnet.a */; };
+ D01B263723324B9000A6448B /* libtl_tonlib_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262723324B9000A6448B /* libtl_tonlib_api.a */; };
+ D01B263823324B9000A6448B /* libtdutils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262823324B9000A6448B /* libtdutils.a */; };
+ D01B263923324B9000A6448B /* libtl_lite_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262923324B9000A6448B /* libtl_lite_api.a */; };
+ D01B263A23324B9000A6448B /* libtl-utils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262A23324B9000A6448B /* libtl-utils.a */; };
+ D01B263B23324B9000A6448B /* libton_block.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262B23324B9000A6448B /* libton_block.a */; };
+ D01B263C23324B9000A6448B /* libtonlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262C23324B9000A6448B /* libtonlib.a */; };
+ D01B263D23324B9000A6448B /* liblite-client-common.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262D23324B9000A6448B /* liblite-client-common.a */; };
+ D01B263E23324B9000A6448B /* libtddb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262E23324B9000A6448B /* libtddb.a */; };
+ D01B263F23324B9000A6448B /* libadnllite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B262F23324B9000A6448B /* libadnllite.a */; };
+ D01B264023324B9000A6448B /* libton_crypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B263023324B9000A6448B /* libton_crypto.a */; };
+ D01B264123324B9000A6448B /* libtdactor.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B263123324B9000A6448B /* libtdactor.a */; };
+ D01B264223324B9000A6448B /* libtl-lite-utils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B263223324B9000A6448B /* libtl-lite-utils.a */; };
+ D01B264323324B9100A6448B /* libkeys.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B263323324B9000A6448B /* libkeys.a */; };
+ D01B264423324B9100A6448B /* libtl_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B263423324B9000A6448B /* libtl_api.a */; };
+ D01B264523324B9100A6448B /* libcrc32c.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B263523324B9000A6448B /* libcrc32c.a */; };
+ D01B264B23324D4100A6448B /* TON.mm in Sources */ = {isa = PBXBuildFile; fileRef = D08A159C22DD32F20073B508 /* TON.mm */; };
D020FAFA1D994E3100F279AA /* MTHttpRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D020FAF81D994E3100F279AA /* MTHttpRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
D020FAFB1D994E3100F279AA /* MTHttpRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D020FAF81D994E3100F279AA /* MTHttpRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
D020FAFC1D994E3100F279AA /* MTHttpRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D020FAF81D994E3100F279AA /* MTHttpRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -88,6 +82,33 @@
D033873C223BC115007A2CE4 /* MTPKCS.m in Sources */ = {isa = PBXBuildFile; fileRef = D0338738223BC115007A2CE4 /* MTPKCS.m */; };
D033873D223BC115007A2CE4 /* MTPKCS.m in Sources */ = {isa = PBXBuildFile; fileRef = D0338738223BC115007A2CE4 /* MTPKCS.m */; };
D033873E223BC115007A2CE4 /* MTPKCS.m in Sources */ = {isa = PBXBuildFile; fileRef = D0338738223BC115007A2CE4 /* MTPKCS.m */; };
+ D038789E2332500A00DB441C /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D038789D2332500A00DB441C /* libc++.tbd */; };
+ D03878A02332503300DB441C /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D038789F2332503300DB441C /* Security.framework */; };
+ D03878A22332503E00DB441C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878A12332503E00DB441C /* SystemConfiguration.framework */; };
+ D03878A42332504600DB441C /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878A32332504600DB441C /* CFNetwork.framework */; };
+ D03878BC2332506800DB441C /* libton_crypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878A52332506700DB441C /* libton_crypto.a */; };
+ D03878BD2332506800DB441C /* libmemprof.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878A62332506700DB441C /* libmemprof.a */; };
+ D03878BE2332506800DB441C /* libtonlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878A72332506700DB441C /* libtonlib.a */; };
+ D03878BF2332506800DB441C /* libtonlibjson_private.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878A82332506700DB441C /* libtonlibjson_private.a */; };
+ D03878C02332506800DB441C /* libtdtl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878A92332506700DB441C /* libtdtl.a */; };
+ D03878C12332506800DB441C /* libkeys.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878AA2332506700DB441C /* libkeys.a */; };
+ D03878C22332506800DB441C /* libtdnet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878AB2332506700DB441C /* libtdnet.a */; };
+ D03878C32332506800DB441C /* libtonlibjson_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878AC2332506700DB441C /* libtonlibjson_static.a */; };
+ D03878C42332506800DB441C /* libfift.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878AD2332506700DB441C /* libfift.a */; };
+ D03878C52332506800DB441C /* libtl_tonlib_api_json.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878AE2332506800DB441C /* libtl_tonlib_api_json.a */; };
+ D03878C62332506800DB441C /* libtl-utils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878AF2332506800DB441C /* libtl-utils.a */; };
+ D03878C72332506800DB441C /* libadnllite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B02332506800DB441C /* libadnllite.a */; };
+ D03878C82332506800DB441C /* libtl_tonlib_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B12332506800DB441C /* libtl_tonlib_api.a */; };
+ D03878C92332506800DB441C /* libtdutils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B22332506800DB441C /* libtdutils.a */; };
+ D03878CA2332506800DB441C /* libterminal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B32332506800DB441C /* libterminal.a */; };
+ D03878CB2332506800DB441C /* libtl_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B42332506800DB441C /* libtl_api.a */; };
+ D03878CC2332506800DB441C /* libcrc32c.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B52332506800DB441C /* libcrc32c.a */; };
+ D03878CD2332506800DB441C /* libtl-lite-utils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B62332506800DB441C /* libtl-lite-utils.a */; };
+ D03878CE2332506800DB441C /* libtddb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B72332506800DB441C /* libtddb.a */; };
+ D03878CF2332506800DB441C /* libtl_lite_api.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B82332506800DB441C /* libtl_lite_api.a */; };
+ D03878D02332506800DB441C /* libton_block.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878B92332506800DB441C /* libton_block.a */; };
+ D03878D12332506800DB441C /* libton_db.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878BA2332506800DB441C /* libton_db.a */; };
+ D03878D22332506800DB441C /* libtdactor.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D03878BB2332506800DB441C /* libtdactor.a */; };
D0529D2B21A434BF00D7C3C4 /* MTTransportSchemeStats.h in Headers */ = {isa = PBXBuildFile; fileRef = D0529D2921A434BF00D7C3C4 /* MTTransportSchemeStats.h */; };
D0529D2C21A434BF00D7C3C4 /* MTTransportSchemeStats.h in Headers */ = {isa = PBXBuildFile; fileRef = D0529D2921A434BF00D7C3C4 /* MTTransportSchemeStats.h */; };
D0529D2D21A434BF00D7C3C4 /* MTTransportSchemeStats.h in Headers */ = {isa = PBXBuildFile; fileRef = D0529D2921A434BF00D7C3C4 /* MTTransportSchemeStats.h */; };
@@ -111,9 +132,6 @@
D0B0DF611DD7E7A2003BA12D /* MTBag.h in Headers */ = {isa = PBXBuildFile; fileRef = D0B0DF601DD7E768003BA12D /* MTBag.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0B0DF621DD7E7A3003BA12D /* MTBag.h in Headers */ = {isa = PBXBuildFile; fileRef = D0B0DF601DD7E768003BA12D /* MTBag.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0B0DF631DD7E7A4003BA12D /* MTBag.h in Headers */ = {isa = PBXBuildFile; fileRef = D0B0DF601DD7E768003BA12D /* MTBag.h */; settings = {ATTRIBUTES = (Public, ); }; };
- D0B418751D7E04B7004562A4 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B418741D7E04B7004562A4 /* CFNetwork.framework */; };
- D0B418771D7E04C3004562A4 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B418761D7E04C3004562A4 /* SystemConfiguration.framework */; };
- D0B418791D7E04CB004562A4 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B418781D7E04CB004562A4 /* Security.framework */; };
D0B4187B1D7E04CF004562A4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B4187A1D7E04CF004562A4 /* libz.tbd */; };
D0B4187D1D7E04EB004562A4 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D0B4187C1D7E04EB004562A4 /* libcrypto.a */; };
D0BFAE6020AB504600793CF2 /* MTDatacenterVerificationData.h in Headers */ = {isa = PBXBuildFile; fileRef = D0BFAE5E20AB504600793CF2 /* MTDatacenterVerificationData.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -690,11 +708,56 @@
D01855B222DDD38D00AC458A /* libmemprof.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmemprof.a; path = TON/libmemprof.a; sourceTree = ""; };
D0185E702089D265005E1A6C /* MTProxyConnectivity.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTProxyConnectivity.h; sourceTree = ""; };
D0185E712089D265005E1A6C /* MTProxyConnectivity.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTProxyConnectivity.m; sourceTree = ""; };
+ D01B262623324B8F00A6448B /* libtdnet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdnet.a; path = TON/lib/macos/libtdnet.a; sourceTree = ""; };
+ D01B262723324B9000A6448B /* libtl_tonlib_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_tonlib_api.a; path = TON/lib/macos/libtl_tonlib_api.a; sourceTree = ""; };
+ D01B262823324B9000A6448B /* libtdutils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdutils.a; path = TON/lib/macos/libtdutils.a; sourceTree = ""; };
+ D01B262923324B9000A6448B /* libtl_lite_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_lite_api.a; path = TON/lib/macos/libtl_lite_api.a; sourceTree = ""; };
+ D01B262A23324B9000A6448B /* libtl-utils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libtl-utils.a"; path = "TON/lib/macos/libtl-utils.a"; sourceTree = ""; };
+ D01B262B23324B9000A6448B /* libton_block.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libton_block.a; path = TON/lib/macos/libton_block.a; sourceTree = ""; };
+ D01B262C23324B9000A6448B /* libtonlib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtonlib.a; path = TON/lib/macos/libtonlib.a; sourceTree = ""; };
+ D01B262D23324B9000A6448B /* liblite-client-common.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "liblite-client-common.a"; path = "TON/lib/macos/liblite-client-common.a"; sourceTree = ""; };
+ D01B262E23324B9000A6448B /* libtddb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtddb.a; path = TON/lib/macos/libtddb.a; sourceTree = ""; };
+ D01B262F23324B9000A6448B /* libadnllite.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libadnllite.a; path = TON/lib/macos/libadnllite.a; sourceTree = ""; };
+ D01B263023324B9000A6448B /* libton_crypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libton_crypto.a; path = TON/lib/macos/libton_crypto.a; sourceTree = ""; };
+ D01B263123324B9000A6448B /* libtdactor.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdactor.a; path = TON/lib/macos/libtdactor.a; sourceTree = ""; };
+ D01B263223324B9000A6448B /* libtl-lite-utils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libtl-lite-utils.a"; path = "TON/lib/macos/libtl-lite-utils.a"; sourceTree = ""; };
+ D01B263323324B9000A6448B /* libkeys.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libkeys.a; path = TON/lib/macos/libkeys.a; sourceTree = ""; };
+ D01B263423324B9000A6448B /* libtl_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_api.a; path = TON/lib/macos/libtl_api.a; sourceTree = ""; };
+ D01B263523324B9000A6448B /* libcrc32c.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrc32c.a; path = TON/lib/macos/libcrc32c.a; sourceTree = ""; };
D020FAF81D994E3100F279AA /* MTHttpRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MTHttpRequestOperation.h; path = MTProtoKit/MTHttpRequestOperation.h; sourceTree = ""; };
D020FAF91D994E3100F279AA /* MTHttpRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MTHttpRequestOperation.m; path = MTProtoKit/MTHttpRequestOperation.m; sourceTree = ""; };
D0254CC518B10404009452AA /* MTEncryption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MTEncryption.h; path = MTProtoKit/MTEncryption.h; sourceTree = ""; };
D0338737223BC115007A2CE4 /* MTPKCS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTPKCS.h; sourceTree = ""; };
D0338738223BC115007A2CE4 /* MTPKCS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTPKCS.m; sourceTree = ""; };
+ D038789D2332500A00DB441C /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; };
+ D038789F2332503300DB441C /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; };
+ D03878A12332503E00DB441C /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; };
+ D03878A32332504600DB441C /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; };
+ D03878A52332506700DB441C /* libton_crypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libton_crypto.a; path = TON/lib/ios/libton_crypto.a; sourceTree = ""; };
+ D03878A62332506700DB441C /* libmemprof.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmemprof.a; path = TON/lib/ios/libmemprof.a; sourceTree = ""; };
+ D03878A72332506700DB441C /* libtonlib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtonlib.a; path = TON/lib/ios/libtonlib.a; sourceTree = ""; };
+ D03878A82332506700DB441C /* libtonlibjson_private.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtonlibjson_private.a; path = TON/lib/ios/libtonlibjson_private.a; sourceTree = ""; };
+ D03878A92332506700DB441C /* libtdtl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdtl.a; path = TON/lib/ios/libtdtl.a; sourceTree = ""; };
+ D03878AA2332506700DB441C /* libkeys.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libkeys.a; path = TON/lib/ios/libkeys.a; sourceTree = ""; };
+ D03878AB2332506700DB441C /* libtdnet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdnet.a; path = TON/lib/ios/libtdnet.a; sourceTree = ""; };
+ D03878AC2332506700DB441C /* libtonlibjson_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtonlibjson_static.a; path = TON/lib/ios/libtonlibjson_static.a; sourceTree = ""; };
+ D03878AD2332506700DB441C /* libfift.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libfift.a; path = TON/lib/ios/libfift.a; sourceTree = ""; };
+ D03878AE2332506800DB441C /* libtl_tonlib_api_json.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_tonlib_api_json.a; path = TON/lib/ios/libtl_tonlib_api_json.a; sourceTree = ""; };
+ D03878AF2332506800DB441C /* libtl-utils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libtl-utils.a"; path = "TON/lib/ios/libtl-utils.a"; sourceTree = ""; };
+ D03878B02332506800DB441C /* libadnllite.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libadnllite.a; path = TON/lib/ios/libadnllite.a; sourceTree = ""; };
+ D03878B12332506800DB441C /* libtl_tonlib_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_tonlib_api.a; path = TON/lib/ios/libtl_tonlib_api.a; sourceTree = ""; };
+ D03878B22332506800DB441C /* libtdutils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdutils.a; path = TON/lib/ios/libtdutils.a; sourceTree = ""; };
+ D03878B32332506800DB441C /* libterminal.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libterminal.a; path = TON/lib/ios/libterminal.a; sourceTree = ""; };
+ D03878B42332506800DB441C /* libtl_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_api.a; path = TON/lib/ios/libtl_api.a; sourceTree = ""; };
+ D03878B52332506800DB441C /* libcrc32c.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrc32c.a; path = TON/lib/ios/libcrc32c.a; sourceTree = ""; };
+ D03878B62332506800DB441C /* libtl-lite-utils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libtl-lite-utils.a"; path = "TON/lib/ios/libtl-lite-utils.a"; sourceTree = ""; };
+ D03878B72332506800DB441C /* libtddb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtddb.a; path = TON/lib/ios/libtddb.a; sourceTree = ""; };
+ D03878B82332506800DB441C /* libtl_lite_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtl_lite_api.a; path = TON/lib/ios/libtl_lite_api.a; sourceTree = ""; };
+ D03878B92332506800DB441C /* libton_block.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libton_block.a; path = TON/lib/ios/libton_block.a; sourceTree = ""; };
+ D03878BA2332506800DB441C /* libton_db.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libton_db.a; path = TON/lib/ios/libton_db.a; sourceTree = ""; };
+ D03878BB2332506800DB441C /* libtdactor.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtdactor.a; path = TON/lib/ios/libtdactor.a; sourceTree = ""; };
+ D03878D3233250CF00DB441C /* libtonlibjson.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtonlibjson.dylib; path = TON/lib/macos/libtonlibjson.dylib; sourceTree = ""; };
+ D03878D4233250CF00DB441C /* libtonlibjson.0.5.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtonlibjson.0.5.dylib; path = TON/lib/macos/libtonlibjson.0.5.dylib; sourceTree = ""; };
D0503AD818B027F80074C3FE /* MTOutputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MTOutputStream.h; path = MTProtoKit/MTOutputStream.h; sourceTree = ""; };
D0503AD918B027F80074C3FE /* MTOutputStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MTOutputStream.m; path = MTProtoKit/MTOutputStream.m; sourceTree = ""; };
D0503ADC18B029480074C3FE /* MTInputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MTInputStream.h; path = MTProtoKit/MTInputStream.h; sourceTree = ""; };
@@ -932,11 +995,28 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D03878A42332504600DB441C /* CFNetwork.framework in Frameworks */,
+ D03878A22332503E00DB441C /* SystemConfiguration.framework in Frameworks */,
+ D03878A02332503300DB441C /* Security.framework in Frameworks */,
+ D01B264023324B9000A6448B /* libton_crypto.a in Frameworks */,
+ D01B263C23324B9000A6448B /* libtonlib.a in Frameworks */,
+ D01B263623324B9000A6448B /* libtdnet.a in Frameworks */,
D0B4187D1D7E04EB004562A4 /* libcrypto.a in Frameworks */,
+ D038789E2332500A00DB441C /* libc++.tbd in Frameworks */,
+ D01B263723324B9000A6448B /* libtl_tonlib_api.a in Frameworks */,
+ D01B263823324B9000A6448B /* libtdutils.a in Frameworks */,
+ D01B263923324B9000A6448B /* libtl_lite_api.a in Frameworks */,
+ D01B263A23324B9000A6448B /* libtl-utils.a in Frameworks */,
+ D01B263B23324B9000A6448B /* libton_block.a in Frameworks */,
+ D01B263D23324B9000A6448B /* liblite-client-common.a in Frameworks */,
+ D01B263E23324B9000A6448B /* libtddb.a in Frameworks */,
+ D01B263F23324B9000A6448B /* libadnllite.a in Frameworks */,
+ D01B264123324B9000A6448B /* libtdactor.a in Frameworks */,
+ D01B264223324B9000A6448B /* libtl-lite-utils.a in Frameworks */,
+ D01B264323324B9100A6448B /* libkeys.a in Frameworks */,
+ D01B264423324B9100A6448B /* libtl_api.a in Frameworks */,
+ D01B264523324B9100A6448B /* libcrc32c.a in Frameworks */,
D0B4187B1D7E04CF004562A4 /* libz.tbd in Frameworks */,
- D0B418791D7E04CB004562A4 /* Security.framework in Frameworks */,
- D0B418771D7E04C3004562A4 /* SystemConfiguration.framework in Frameworks */,
- D0B418751D7E04B7004562A4 /* CFNetwork.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -952,29 +1032,29 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- D01855B322DDD38D00AC458A /* libtl_lite_api.a in Frameworks */,
- D01855B422DDD38D00AC458A /* libadnllite.a in Frameworks */,
- D01855B522DDD38D00AC458A /* libfift.a in Frameworks */,
- D01855B622DDD38D00AC458A /* libkeys.a in Frameworks */,
- D01855B722DDD38D00AC458A /* libtl-lite-utils.a in Frameworks */,
- D01855B822DDD38D00AC458A /* libtl-utils.a in Frameworks */,
- D01855B922DDD38D00AC458A /* libton_db.a in Frameworks */,
- D01855BA22DDD38D00AC458A /* libtonlib.a in Frameworks */,
- D01855BB22DDD38D00AC458A /* libterminal.a in Frameworks */,
- D01855BC22DDD38D00AC458A /* libtonlibjson_private.a in Frameworks */,
- D01855BD22DDD38D00AC458A /* libton_crypto.a in Frameworks */,
- D01855BE22DDD38D00AC458A /* libtl_tonlib_api_json.a in Frameworks */,
- D01855BF22DDD38D00AC458A /* libtdnet.a in Frameworks */,
- D01855C022DDD38D00AC458A /* libtl_tonlib_api.a in Frameworks */,
- D01855C122DDD38D00AC458A /* libtonlibjson_static.a in Frameworks */,
- D01855C222DDD38D00AC458A /* libton_block.a in Frameworks */,
- D01855C322DDD38D00AC458A /* libtl_api.a in Frameworks */,
- D01855C422DDD38D00AC458A /* libcrc32c.a in Frameworks */,
- D01855C522DDD38D00AC458A /* libtdtl.a in Frameworks */,
- D01855C622DDD38D00AC458A /* libmemprof.a in Frameworks */,
- D018559C22DDD38B00AC458A /* libtdutils.a in Frameworks */,
- D018559D22DDD38B00AC458A /* libtddb.a in Frameworks */,
- D018559E22DDD38B00AC458A /* libtdactor.a in Frameworks */,
+ D03878BC2332506800DB441C /* libton_crypto.a in Frameworks */,
+ D03878BD2332506800DB441C /* libmemprof.a in Frameworks */,
+ D03878BE2332506800DB441C /* libtonlib.a in Frameworks */,
+ D03878BF2332506800DB441C /* libtonlibjson_private.a in Frameworks */,
+ D03878C02332506800DB441C /* libtdtl.a in Frameworks */,
+ D03878C12332506800DB441C /* libkeys.a in Frameworks */,
+ D03878C22332506800DB441C /* libtdnet.a in Frameworks */,
+ D03878C32332506800DB441C /* libtonlibjson_static.a in Frameworks */,
+ D03878C42332506800DB441C /* libfift.a in Frameworks */,
+ D03878C52332506800DB441C /* libtl_tonlib_api_json.a in Frameworks */,
+ D03878C62332506800DB441C /* libtl-utils.a in Frameworks */,
+ D03878C72332506800DB441C /* libadnllite.a in Frameworks */,
+ D03878C82332506800DB441C /* libtl_tonlib_api.a in Frameworks */,
+ D03878C92332506800DB441C /* libtdutils.a in Frameworks */,
+ D03878CA2332506800DB441C /* libterminal.a in Frameworks */,
+ D03878CB2332506800DB441C /* libtl_api.a in Frameworks */,
+ D03878CC2332506800DB441C /* libcrc32c.a in Frameworks */,
+ D03878CD2332506800DB441C /* libtl-lite-utils.a in Frameworks */,
+ D03878CE2332506800DB441C /* libtddb.a in Frameworks */,
+ D03878CF2332506800DB441C /* libtl_lite_api.a in Frameworks */,
+ D03878D02332506800DB441C /* libton_block.a in Frameworks */,
+ D03878D12332506800DB441C /* libton_db.a in Frameworks */,
+ D03878D22332506800DB441C /* libtdactor.a in Frameworks */,
D00083C922DD33E500EC418C /* libc++.tbd in Frameworks */,
D0CAF2FD1D7628FD0011F558 /* libcrypto.a in Frameworks */,
D0CAF2F11D75F4EA0011F558 /* CFNetwork.framework in Frameworks */,
@@ -1065,8 +1145,53 @@
D05A831618AFB3F9007F1076 /* Frameworks */ = {
isa = PBXGroup;
children = (
+ D03878D4233250CF00DB441C /* libtonlibjson.0.5.dylib */,
+ D03878D3233250CF00DB441C /* libtonlibjson.dylib */,
+ D03878B02332506800DB441C /* libadnllite.a */,
+ D03878B52332506800DB441C /* libcrc32c.a */,
+ D03878AD2332506700DB441C /* libfift.a */,
+ D03878AA2332506700DB441C /* libkeys.a */,
+ D03878A62332506700DB441C /* libmemprof.a */,
+ D03878BB2332506800DB441C /* libtdactor.a */,
+ D03878B72332506800DB441C /* libtddb.a */,
+ D03878AB2332506700DB441C /* libtdnet.a */,
+ D03878A92332506700DB441C /* libtdtl.a */,
+ D03878B22332506800DB441C /* libtdutils.a */,
+ D03878B32332506800DB441C /* libterminal.a */,
+ D03878B42332506800DB441C /* libtl_api.a */,
+ D03878B82332506800DB441C /* libtl_lite_api.a */,
+ D03878AE2332506800DB441C /* libtl_tonlib_api_json.a */,
+ D03878B12332506800DB441C /* libtl_tonlib_api.a */,
+ D03878B62332506800DB441C /* libtl-lite-utils.a */,
+ D03878AF2332506800DB441C /* libtl-utils.a */,
+ D03878B92332506800DB441C /* libton_block.a */,
+ D03878A52332506700DB441C /* libton_crypto.a */,
+ D03878BA2332506800DB441C /* libton_db.a */,
+ D03878A72332506700DB441C /* libtonlib.a */,
+ D03878A82332506700DB441C /* libtonlibjson_private.a */,
+ D03878AC2332506700DB441C /* libtonlibjson_static.a */,
+ D03878A32332504600DB441C /* CFNetwork.framework */,
+ D03878A12332503E00DB441C /* SystemConfiguration.framework */,
+ D038789F2332503300DB441C /* Security.framework */,
+ D038789D2332500A00DB441C /* libc++.tbd */,
D01855A022DDD38C00AC458A /* libadnllite.a */,
D01855B022DDD38D00AC458A /* libcrc32c.a */,
+ D01B262F23324B9000A6448B /* libadnllite.a */,
+ D01B263523324B9000A6448B /* libcrc32c.a */,
+ D01B263323324B9000A6448B /* libkeys.a */,
+ D01B262D23324B9000A6448B /* liblite-client-common.a */,
+ D01B263123324B9000A6448B /* libtdactor.a */,
+ D01B262E23324B9000A6448B /* libtddb.a */,
+ D01B262623324B8F00A6448B /* libtdnet.a */,
+ D01B262823324B9000A6448B /* libtdutils.a */,
+ D01B263423324B9000A6448B /* libtl_api.a */,
+ D01B262923324B9000A6448B /* libtl_lite_api.a */,
+ D01B262723324B9000A6448B /* libtl_tonlib_api.a */,
+ D01B263223324B9000A6448B /* libtl-lite-utils.a */,
+ D01B262A23324B9000A6448B /* libtl-utils.a */,
+ D01B262B23324B9000A6448B /* libton_block.a */,
+ D01B263023324B9000A6448B /* libton_crypto.a */,
+ D01B262C23324B9000A6448B /* libtonlib.a */,
D01855A122DDD38C00AC458A /* libfift.a */,
D01855A222DDD38C00AC458A /* libkeys.a */,
D01855B222DDD38D00AC458A /* libmemprof.a */,
@@ -2166,6 +2291,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ D01B264B23324D4100A6448B /* TON.mm in Sources */,
D0CD99021D75C0ED00F41187 /* MTRequestErrorContext.m in Sources */,
D0CD98371D74B9AA00F41187 /* MTMsgsStateInfoMessage.m in Sources */,
D0CD99011D75C0ED00F41187 /* MTRequestContext.m in Sources */,
@@ -2616,13 +2742,17 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_VERSION = A;
GCC_NO_COMMON_BLOCKS = YES;
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -2675,6 +2805,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -2893,13 +3025,17 @@
"DEBUG=1",
"$(inherited)",
);
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -2956,6 +3092,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -3144,13 +3282,17 @@
"$(inherited)",
"BETA=1",
);
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -3207,6 +3349,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -3395,13 +3539,17 @@
"$(inherited)",
"BETA=1",
);
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -3458,6 +3606,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -3621,13 +3771,17 @@
FRAMEWORK_VERSION = A;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = "";
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -3661,13 +3815,17 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_VERSION = A;
GCC_NO_COMMON_BLOCKS = YES;
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -3807,13 +3965,17 @@
"$(inherited)",
"BETA=1",
);
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -3870,6 +4032,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -4043,13 +4207,17 @@
FRAMEWORK_VERSION = A;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = APPSTORE;
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -4100,6 +4268,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -4266,13 +4436,17 @@
FRAMEWORK_VERSION = A;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = STABLE;
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -4323,6 +4497,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -4488,13 +4664,17 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_VERSION = A;
GCC_NO_COMMON_BLOCKS = YES;
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -4545,6 +4725,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -4710,13 +4892,17 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_VERSION = A;
GCC_NO_COMMON_BLOCKS = YES;
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -4767,6 +4953,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -4948,13 +5136,17 @@
"$(inherited)",
"BETA=1",
);
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -5011,6 +5203,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -5297,13 +5491,17 @@
FRAMEWORK_VERSION = A;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = APPSTORE;
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -5354,6 +5552,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -5450,6 +5650,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -5504,6 +5706,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "-DMtProtoKitDynamicFramework=1";
@@ -5693,13 +5897,17 @@
"$(inherited)",
"BETA=1",
);
- HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/openssl";
+ HEADER_SEARCH_PATHS = (
+ "$(PROJECT_DIR)/openssl",
+ "$(PROJECT_DIR)/TON/include",
+ );
INFOPLIST_FILE = MtProtoKitMac/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/openssl/OSX",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.10;
@@ -5756,6 +5964,8 @@
"$(inherited)",
"$(PROJECT_DIR)/openssl/iOS",
"$(PROJECT_DIR)/TON",
+ "$(PROJECT_DIR)/TON/lib/ios",
+ "$(PROJECT_DIR)/TON/lib/macos",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
diff --git a/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/xcshareddata/xcschemes/MtProtoKitMac.xcscheme b/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/xcshareddata/xcschemes/MtProtoKitMac.xcscheme
new file mode 100644
index 0000000000..617e7bfff5
--- /dev/null
+++ b/submodules/MtProtoKit/MtProtoKit_Xcode.xcodeproj/xcshareddata/xcschemes/MtProtoKitMac.xcscheme
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/submodules/MtProtoKit/TON/TON.h b/submodules/MtProtoKit/TON/TON.h
index 010f7faf0b..21051e8dee 100644
--- a/submodules/MtProtoKit/TON/TON.h
+++ b/submodules/MtProtoKit/TON/TON.h
@@ -19,29 +19,73 @@ NS_ASSUME_NONNULL_BEGIN
@end
+@interface TONTransactionId : NSObject
+
+@property (nonatomic, readonly) int64_t lt;
+@property (nonatomic, strong, readonly) NSData * _Nonnull transactionHash;
+
+- (instancetype)initWithLt:(int64_t)lt transactionHash:(NSData * _Nonnull)transactionHash;
+
+@end
+
@interface TONAccountState : NSObject
@property (nonatomic, readonly) int64_t balance;
@property (nonatomic, readonly) int32_t seqno;
+@property (nonatomic, strong, readonly) TONTransactionId * _Nullable lastTransactionId;
-- (instancetype)initWithBalance:(int64_t)balance seqno:(int32_t)seqno;
+- (instancetype)initWithBalance:(int64_t)balance seqno:(int32_t)seqno lastTransactionId:(TONTransactionId * _Nullable)lastTransactionId;
+
+@end
+
+@interface TONTransactionMessage : NSObject
+
+@property (nonatomic, readonly) int64_t value;
+@property (nonatomic, strong, readonly) NSString * _Nonnull source;
+@property (nonatomic, strong, readonly) NSString * _Nonnull destination;
+
+- (instancetype)initWithValue:(int64_t)value source:(NSString * _Nonnull)source destination:(NSString * _Nonnull)destination;
+
+@end
+
+@interface TONTransaction : NSObject
+
+@property (nonatomic, strong, readonly) NSData * _Nonnull data;
+@property (nonatomic, strong, readonly) TONTransactionId * _Nonnull transactionId;
+@property (nonatomic, readonly) int64_t timestamp;
+@property (nonatomic, readonly) int64_t fee;
+@property (nonatomic, strong, readonly) TONTransactionMessage * _Nullable inMessage;
+@property (nonatomic, strong, readonly) NSArray * _Nonnull outMessages;
+
+- (instancetype)initWithData:(NSData * _Nonnull)data transactionId:(TONTransactionId * _Nonnull)transactionId timestamp:(int64_t)timestamp fee:(int64_t)fee inMessage:(TONTransactionMessage * _Nullable)inMessage outMessages:(NSArray * _Nonnull)outMessages;
+
+@end
+
+@interface TONExternalRequest : NSObject
+
+@property (nonatomic, strong, readonly) NSData * _Nonnull data;
+@property (nonatomic, copy, readonly) void (^onResult)(NSData * _Nullable, NSString * _Nullable);
+
+- (instancetype)initWithData:(NSData * _Nonnull)data onResult:(void (^)(NSData * _Nullable, NSString * _Nullable))onResult;
@end
@interface TON : NSObject
-- (instancetype)initWithKeystoreDirectory:(NSString *)keystoreDirectory config:(NSString *)config;
+- (instancetype)initWithKeystoreDirectory:(NSString *)keystoreDirectory config:(NSString *)config performExternalRequest:(void (^)(TONExternalRequest * _Nonnull))performExternalRequest;
-- (MTSignal *)createKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSString *)mnemonicPassword;
+- (MTSignal *)createKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSData *)mnemonicPassword;
- (MTSignal *)getTestWalletAccountAddressWithPublicKey:(NSString *)publicKey;
- (MTSignal *)getTestGiverAccountState;
+- (MTSignal *)getTestGiverAddress;
- (MTSignal *)testGiverSendGramsWithAccountState:(TONAccountState *)accountState accountAddress:(NSString *)accountAddress amount:(int64_t)amount;
- (MTSignal *)getAccountStateWithAddress:(NSString *)accountAddress;
- (MTSignal *)sendGramsFromKey:(TONKey *)key localPassword:(NSData *)localPassword fromAddress:(NSString *)fromAddress toAddress:(NSString *)address amount:(int64_t)amount;
- (MTSignal *)exportKey:(TONKey *)key localPassword:(NSData *)localPassword;
-- (MTSignal *)importKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSString *)mnemonicPassword wordList:(NSArray *)wordList;
+- (MTSignal *)importKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSData *)mnemonicPassword wordList:(NSArray *)wordList;
- (MTSignal *)deleteKeyWithPublicKey:(NSString *)publicKey;
- (MTSignal *)makeWalletInitialized:(TONKey *)key localPassword:(NSData *)localPassword;
+- (MTSignal *)getTransactionListWithAddress:(NSString * _Nonnull)address lt:(int64_t)lt hash:(NSData * _Nonnull)hash;
@end
diff --git a/submodules/MtProtoKit/TON/TON.mm b/submodules/MtProtoKit/TON/TON.mm
index 9fe09d5050..a1d75df6eb 100644
--- a/submodules/MtProtoKit/TON/TON.mm
+++ b/submodules/MtProtoKit/TON/TON.mm
@@ -1,11 +1,54 @@
#import "TON.h"
-#import "tonlib_client_json.h"
#import "MTLogging.h"
-#import "Client.h"
+#import "tonlib/Client.h"
#import "MTQueue.h"
#import "MTSignal.h"
+static td::SecureString makeSecureString(NSData * _Nonnull data) {
+ if (data == nil || data.length == 0) {
+ return td::SecureString();
+ } else {
+ return td::SecureString((const char *)data.bytes, (size_t)data.length);
+ }
+}
+
+static std::string makeString(NSData * _Nonnull data) {
+ if (data == nil || data.length == 0) {
+ return std::string();
+ } else {
+ return std::string((const char *)data.bytes, ((const char *)data.bytes) + data.length);
+ }
+}
+
+static NSData * _Nonnull makeData(std::string &string) {
+ if (string.size() == 0) {
+ return [NSData data];
+ } else {
+ return [[NSData alloc] initWithBytes:string.data() length:string.size()];
+ }
+}
+
+static NSString * _Nullable readString(std::string &string) {
+ if (string.size() == 0) {
+ return @"";
+ } else {
+ return [[NSString alloc] initWithBytes:string.data() length:string.size() encoding:NSUTF8StringEncoding];
+ }
+}
+
+static TONTransactionMessage * _Nullable parseTransactionMessage(tonlib_api::object_ptr &message) {
+ if (message == nullptr) {
+ return nil;
+ }
+ NSString *source = readString(message->source_);
+ NSString *destination = readString(message->source_);
+ if (source == nil || destination == nil) {
+ return nil;
+ }
+ return [[TONTransactionMessage alloc] initWithValue:message->value_ source:source destination:destination];
+}
+
@implementation TONKey
- (instancetype)initWithPublicKey:(NSString *)publicKey secret:(NSData *)secret {
@@ -21,11 +64,69 @@
@implementation TONAccountState
-- (instancetype)initWithBalance:(int64_t)balance seqno:(int32_t)seqno {
+- (instancetype)initWithBalance:(int64_t)balance seqno:(int32_t)seqno lastTransactionId:(TONTransactionId * _Nullable)lastTransactionId {
self = [super init];
if (self != nil) {
_balance = balance;
_seqno = seqno;
+ _lastTransactionId = lastTransactionId;
+ }
+ return self;
+}
+
+@end
+
+@implementation TONTransactionId
+
+- (instancetype)initWithLt:(int64_t)lt transactionHash:(NSData *)transactionHash {
+ self = [super init];
+ if (self != nil) {
+ _lt = lt;
+ _transactionHash = transactionHash;
+ }
+ return self;
+}
+
+@end
+
+@implementation TONTransactionMessage
+
+- (instancetype)initWithValue:(int64_t)value source:(NSString * _Nonnull)source destination:(NSString * _Nonnull)destination {
+ self = [super init];
+ if (self != nil) {
+ _value = value;
+ _source = source;
+ _destination = destination;
+ }
+ return self;
+}
+
+@end
+
+@implementation TONTransaction
+
+- (instancetype)initWithData:(NSData * _Nonnull)data transactionId:(TONTransactionId * _Nonnull)transactionId timestamp:(int64_t)timestamp fee:(int64_t)fee inMessage:(TONTransactionMessage * _Nullable)inMessage outMessages:(NSArray * _Nonnull)outMessages {
+ self = [super init];
+ if (self != nil) {
+ _data = data;
+ _transactionId = transactionId;
+ _timestamp = timestamp;
+ _fee = fee;
+ _inMessage = inMessage;
+ _outMessages = outMessages;
+ }
+ return self;
+}
+
+@end
+
+@implementation TONExternalRequest
+
+- (instancetype)initWithData:(NSData * _Nonnull)data onResult:(void (^)(NSData * _Nullable, NSString * _Nullable))onResult {
+ self = [super init];
+ if (self != nil) {
+ _data = data;
+ _onResult = [onResult copy];
}
return self;
}
@@ -84,12 +185,18 @@ using tonlib_api::make_object;
@end
+typedef enum {
+ TONInitializationStatusInitializing,
+ TONInitializationStatusReady,
+ TONInitializationStatusError
+} TONInitializationStatus;
+
@interface TON () {
std::shared_ptr _client;
uint64_t _nextRequestId;
NSLock *_requestHandlersLock;
NSMutableDictionary *_requestHandlers;
- MTPipe *_initialized;
+ MTPipe *_initializedStatus;
}
@end
@@ -105,20 +212,51 @@ using tonlib_api::make_object;
}
}
-- (instancetype)initWithKeystoreDirectory:(NSString *)keystoreDirectory config:(NSString *)config {
+- (instancetype)initWithKeystoreDirectory:(NSString *)keystoreDirectory config:(NSString *)config performExternalRequest:(void (^)(TONExternalRequest * _Nonnull))performExternalRequest {
self = [super init];
if (self != nil) {
_requestHandlersLock = [[NSLock alloc] init];
_requestHandlers = [[NSMutableDictionary alloc] init];
- _initialized = [[MTPipe alloc] initWithReplay:true];
- _initialized.sink(@false);
+ _initializedStatus = [[MTPipe alloc] initWithReplay:true];
+ _initializedStatus.sink(@(TONInitializationStatusInitializing));
_nextRequestId = 1;
_client = std::make_shared();
+ std::weak_ptr weakClient = _client;
+
NSLock *requestHandlersLock = _requestHandlersLock;
NSMutableDictionary *requestHandlers = _requestHandlers;
NSThread *thread = [[NSThread alloc] initWithTarget:[self class] selector:@selector(receiveThread:) object:[[TONReceiveThreadParams alloc] initWithClient:_client received:^(tonlib::Client::Response &response) {
+ if (response.object->get_id() == tonlib_api::updateSendLiteServerQuery::ID) {
+ auto result = tonlib_api::move_object_as(response.object);
+ int64_t requestId = result->id_;
+ NSData *data = makeData(result->data_);
+ if (performExternalRequest) {
+ performExternalRequest([[TONExternalRequest alloc] initWithData:data onResult:^(NSData * _Nullable result, NSString * _Nullable error) {
+ auto strongClient = weakClient.lock();
+ if (strongClient != nullptr) {
+ if (result != nil) {
+ auto query = make_object(
+ requestId,
+ makeString(result)
+ );
+ strongClient->send({ 1, std::move(query) });
+ } else if (error != nil) {
+ auto query = make_object(
+ requestId,
+ make_object(
+ 400,
+ error.UTF8String
+ )
+ );
+ strongClient->send({ 1, std::move(query) });
+ }
+ }
+ }]);
+ }
+ return;
+ }
NSNumber *requestId = @(response.id);
[requestHandlersLock lock];
TONRequestHandler *handler = requestHandlers[requestId];
@@ -132,8 +270,15 @@ using tonlib_api::make_object;
[[NSFileManager defaultManager] createDirectoryAtPath:keystoreDirectory withIntermediateDirectories:true attributes:nil error:nil];
- [[self requestInitWithConfigString:config keystoreDirectory:keystoreDirectory] startWithNext:nil completed:^{
- _initialized.sink(@true);
+ MTPipe *initializedStatus = _initializedStatus;
+ [[self requestInitWithConfigString:config keystoreDirectory:keystoreDirectory] startWithNext:nil error:^(id error) {
+ NSString *errorText = @"Unknown error";
+ if ([error isKindOfClass:[TONError class]]) {
+ errorText = ((TONError *)error).text;
+ }
+ initializedStatus.sink(@(TONInitializationStatusError));
+ } completed:^{
+ initializedStatus.sink(@(TONInitializationStatusReady));
}];
}
return self;
@@ -153,7 +298,11 @@ using tonlib_api::make_object;
}
}];
- auto query = make_object(make_object(configString.UTF8String, keystoreDirectory.UTF8String));
+ auto query = make_object(make_object(
+ configString.UTF8String,
+ keystoreDirectory.UTF8String,
+ false
+ ));
_client->send({ requestId, std::move(query) });
return [[MTBlockDisposable alloc] initWithBlock:^{
@@ -161,7 +310,7 @@ using tonlib_api::make_object;
}] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
}
-- (MTSignal *)createKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSString *)mnemonicPassword {
+- (MTSignal *)createKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSData *)mnemonicPassword {
return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
uint64_t requestId = _nextRequestId;
_nextRequestId += 1;
@@ -172,7 +321,11 @@ using tonlib_api::make_object;
[subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
} else if (object->get_id() == tonlib_api::key::ID) {
auto result = tonlib_api::move_object_as(object);
- NSString *publicKey = [[[NSData alloc] initWithBytes:result->public_key_.data() length:result->public_key_.length()] base64EncodedStringWithOptions:0];
+ NSString *publicKey = [[NSString alloc] initWithData:[[NSData alloc] initWithBytes:result->public_key_.data() length:result->public_key_.length()] encoding:NSUTF8StringEncoding];
+ if (publicKey == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error decoding UTF8 string in createKeyWithLocalPassword"]];
+ return;
+ }
NSData *secret = [[NSData alloc] initWithBytes:result->secret_.data() length:result->secret_.length()];
[subscriber putNext:[[TONKey alloc] initWithPublicKey:publicKey secret:secret]];
[subscriber putCompletion];
@@ -181,9 +334,11 @@ using tonlib_api::make_object;
}
}];
- NSString *localPasswordString = [localPassword base64EncodedStringWithOptions:0];
-
- auto query = make_object(localPasswordString.UTF8String, mnemonicPassword.UTF8String);
+ auto query = make_object(
+ makeSecureString(localPassword),
+ makeSecureString(mnemonicPassword),
+ td::SecureString()
+ );
_client->send({ requestId, std::move(query) });
return [[MTBlockDisposable alloc] initWithBlock:^{
@@ -193,6 +348,12 @@ using tonlib_api::make_object;
- (MTSignal *)getTestWalletAccountAddressWithPublicKey:(NSString *)publicKey {
return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ NSData *publicKeyData = [publicKey dataUsingEncoding:NSUTF8StringEncoding];
+ if (publicKeyData == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error encoding UTF8 string in getTestWalletAccountAddressWithPublicKey"]];
+ return [[MTBlockDisposable alloc] initWithBlock:^{}];
+ }
+
uint64_t requestId = _nextRequestId;
_nextRequestId += 1;
@@ -209,10 +370,11 @@ using tonlib_api::make_object;
}
}];
- NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:publicKey options:0];
- std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
-
- auto query = make_object(make_object(publicKeyString));
+ auto query = make_object(
+ make_object(
+ makeString(publicKeyData)
+ )
+ );
_client->send({ requestId, std::move(query) });
return [[MTBlockDisposable alloc] initWithBlock:^{
@@ -231,7 +393,8 @@ using tonlib_api::make_object;
[subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
} else if (object->get_id() == tonlib_api::testGiver_accountState::ID) {
auto result = tonlib_api::move_object_as(object);
- [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->balance_ seqno:result->seqno_]];
+ TONTransactionId *lastTransactionId = [[TONTransactionId alloc] initWithLt:result->last_transaction_id_->lt_ transactionHash:makeData(result->last_transaction_id_->hash_)];
+ [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->balance_ seqno:result->seqno_ lastTransactionId:lastTransactionId]];
[subscriber putCompletion];
} else {
assert(false);
@@ -246,6 +409,32 @@ using tonlib_api::make_object;
}] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
}
+- (MTSignal *)getTestGiverAddress {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else if (object->get_id() == tonlib_api::accountAddress::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ [subscriber putNext:[[NSString alloc] initWithUTF8String:result->account_address_.c_str()]];
+ [subscriber putCompletion];
+ } else {
+ assert(false);
+ }
+ }];
+
+ auto query = make_object();
+ _client->send({ requestId, std::move(query) });
+
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
- (MTSignal *)testGiverSendGramsWithAccountState:(TONAccountState *)accountState accountAddress:(NSString *)accountAddress amount:(int64_t)amount {
return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
uint64_t requestId = _nextRequestId;
@@ -279,11 +468,17 @@ using tonlib_api::make_object;
[subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
} else if (object->get_id() == tonlib_api::generic_accountStateUninited::ID) {
auto result = tonlib_api::move_object_as(object);
- [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->account_state_->balance_ seqno:-1]];
+ [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->account_state_->balance_ seqno:-1 lastTransactionId:nil]];
[subscriber putCompletion];
} else if (object->get_id() == tonlib_api::generic_accountStateTestWallet::ID) {
auto result = tonlib_api::move_object_as(object);
- [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->account_state_->balance_ seqno:result->account_state_->seqno_]];
+ TONTransactionId *lastTransactionId = [[TONTransactionId alloc] initWithLt:result->account_state_->last_transaction_id_->lt_ transactionHash:makeData(result->account_state_->last_transaction_id_->hash_)];
+ [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->account_state_->balance_ seqno:result->account_state_->seqno_ lastTransactionId:lastTransactionId]];
+ [subscriber putCompletion];
+ } else if (object->get_id() == tonlib_api::generic_accountStateTestGiver::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ TONTransactionId *lastTransactionId = [[TONTransactionId alloc] initWithLt:result->account_state_->last_transaction_id_->lt_ transactionHash:makeData(result->account_state_->last_transaction_id_->hash_)];
+ [subscriber putNext:[[TONAccountState alloc] initWithBalance:result->account_state_->balance_ seqno:result->account_state_->seqno_ lastTransactionId:lastTransactionId]];
[subscriber putCompletion];
} else {
assert(false);
@@ -300,6 +495,12 @@ using tonlib_api::make_object;
- (MTSignal *)sendGramsFromKey:(TONKey *)key localPassword:(NSData *)localPassword fromAddress:(NSString *)fromAddress toAddress:(NSString *)address amount:(int64_t)amount {
return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ NSData *publicKeyData = [key.publicKey dataUsingEncoding:NSUTF8StringEncoding];
+ if (publicKeyData == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error encoding UTF8 string in sendGramsFromKey"]];
+ return [[MTBlockDisposable alloc] initWithBlock:^{}];
+ }
+
uint64_t requestId = _nextRequestId;
_nextRequestId += 1;
@@ -312,17 +513,18 @@ using tonlib_api::make_object;
}
}];
- NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:key.publicKey options:0];
- std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
-
- NSData *secretData = key.secret;
- std::string secretString((uint8_t *)secretData.bytes, (uint8_t *)secretData.bytes + secretData.length);
-
- NSString *localPasswordConvertedString = [localPassword base64EncodedStringWithOptions:0];
- NSData *localPasswordData = [localPasswordConvertedString dataUsingEncoding:NSUTF8StringEncoding];
- std::string localPasswordString((uint8_t *)localPasswordData.bytes, (uint8_t *)localPasswordData.bytes + localPasswordData.length);
-
- auto query = make_object(make_object(make_object(publicKeyString, secretString), localPasswordString), make_object(fromAddress.UTF8String), make_object(address.UTF8String), amount);
+ auto query = make_object(
+ make_object(
+ make_object(
+ makeString(publicKeyData),
+ makeSecureString(key.secret)
+ ),
+ makeSecureString(localPassword)
+ ),
+ make_object(fromAddress.UTF8String),
+ make_object(address.UTF8String),
+ amount
+ );
_client->send({ requestId, std::move(query) });
return [[MTBlockDisposable alloc] initWithBlock:^{
@@ -332,6 +534,12 @@ using tonlib_api::make_object;
- (MTSignal *)exportKey:(TONKey *)key localPassword:(NSData *)localPassword {
return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ NSData *publicKeyData = [key.publicKey dataUsingEncoding:NSUTF8StringEncoding];
+ if (publicKeyData == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error encoding UTF8 string in exportKey"]];
+ return [[MTBlockDisposable alloc] initWithBlock:^{}];
+ }
+
uint64_t requestId = _nextRequestId;
_nextRequestId += 1;
@@ -342,8 +550,13 @@ using tonlib_api::make_object;
} else if (object->get_id() == tonlib_api::exportedKey::ID) {
auto result = tonlib_api::move_object_as(object);
NSMutableArray *wordList = [[NSMutableArray alloc] init];
- for (auto it : result->word_list_) {
- [wordList addObject:[[NSString alloc] initWithUTF8String:it.c_str()]];
+ for (auto &it : result->word_list_) {
+ NSString *string = [[NSString alloc] initWithData:[[NSData alloc] initWithBytes:it.data() length:it.size()] encoding:NSUTF8StringEncoding];
+ if (string == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error decoding UTF8 string in exportedKey::word_list"]];
+ return;
+ }
+ [wordList addObject:string];
}
[subscriber putNext:wordList];
[subscriber putCompletion];
@@ -351,18 +564,15 @@ using tonlib_api::make_object;
assert(false);
}
}];
-
- NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:key.publicKey options:0];
- std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
-
- NSData *secretData = key.secret;
- std::string secretString((uint8_t *)secretData.bytes, (uint8_t *)secretData.bytes + secretData.length);
-
- NSString *localPasswordConvertedString = [localPassword base64EncodedStringWithOptions:0];
- NSData *localPasswordData = [localPasswordConvertedString dataUsingEncoding:NSUTF8StringEncoding];
- std::string localPasswordString((uint8_t *)localPasswordData.bytes, (uint8_t *)localPasswordData.bytes + localPasswordData.length);
-
- auto query = make_object(make_object(make_object(publicKeyString, secretString), localPasswordString));
+ auto query = make_object(
+ make_object(
+ make_object(
+ makeString(publicKeyData),
+ makeSecureString(key.secret)
+ ),
+ makeSecureString(localPassword)
+ )
+ );
_client->send({ requestId, std::move(query) });
return [[MTBlockDisposable alloc] initWithBlock:^{
@@ -372,6 +582,12 @@ using tonlib_api::make_object;
- (MTSignal *)makeWalletInitialized:(TONKey *)key localPassword:(NSData *)localPassword {
return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ NSData *publicKeyData = [key.publicKey dataUsingEncoding:NSUTF8StringEncoding];
+ if (publicKeyData == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error encoding UTF8 string in exportKey"]];
+ return [[MTBlockDisposable alloc] initWithBlock:^{}];
+ }
+
uint64_t requestId = _nextRequestId;
_nextRequestId += 1;
@@ -384,17 +600,15 @@ using tonlib_api::make_object;
}
}];
- NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:key.publicKey options:0];
- std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
-
- NSData *secretData = key.secret;
- std::string secretString((uint8_t *)secretData.bytes, (uint8_t *)secretData.bytes + secretData.length);
-
- NSString *localPasswordConvertedString = [localPassword base64EncodedStringWithOptions:0];
- NSData *localPasswordData = [localPasswordConvertedString dataUsingEncoding:NSUTF8StringEncoding];
- std::string localPasswordString((uint8_t *)localPasswordData.bytes, (uint8_t *)localPasswordData.bytes + localPasswordData.length);
-
- auto query = make_object(make_object(make_object(publicKeyString, secretString), localPasswordString));
+ auto query = make_object(
+ make_object(
+ make_object(
+ makeString(publicKeyData),
+ makeSecureString(key.secret)
+ ),
+ makeSecureString(localPassword)
+ )
+ );
_client->send({ requestId, std::move(query) });
return [[MTBlockDisposable alloc] initWithBlock:^{
@@ -402,7 +616,7 @@ using tonlib_api::make_object;
}] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
}
-- (MTSignal *)importKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSString *)mnemonicPassword wordList:(NSArray *)wordList {
+- (MTSignal *)importKeyWithLocalPassword:(NSData *)localPassword mnemonicPassword:(NSData *)mnemonicPassword wordList:(NSArray *)wordList {
return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
uint64_t requestId = _nextRequestId;
_nextRequestId += 1;
@@ -413,7 +627,11 @@ using tonlib_api::make_object;
[subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
} else if (object->get_id() == tonlib_api::key::ID) {
auto result = tonlib_api::move_object_as(object);
- NSString *publicKey = [[[NSData alloc] initWithBytes:result->public_key_.data() length:result->public_key_.length()] base64EncodedStringWithOptions:0];
+ NSString *publicKey = [[NSString alloc] initWithData:[[NSData alloc] initWithBytes:result->public_key_.data() length:result->public_key_.length()] encoding:NSUTF8StringEncoding];
+ if (publicKey == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error decoding UTF8 string in importKeyWithLocalPassword"]];
+ return;
+ }
NSData *secret = [[NSData alloc] initWithBytes:result->secret_.data() length:result->secret_.length()];
[subscriber putNext:[[TONKey alloc] initWithPublicKey:publicKey secret:secret]];
[subscriber putCompletion];
@@ -422,21 +640,16 @@ using tonlib_api::make_object;
}
}];
- NSString *localPasswordConvertedString = [localPassword base64EncodedStringWithOptions:0];
- NSData *localPasswordData = [localPasswordConvertedString dataUsingEncoding:NSUTF8StringEncoding];
- std::string localPasswordString((uint8_t *)localPasswordData.bytes, (uint8_t *)localPasswordData.bytes + localPasswordData.length);
-
- NSData *mnemonicPasswordData = [mnemonicPassword dataUsingEncoding:NSUTF8StringEncoding];
- std::string mnemonicPasswordString((uint8_t *)mnemonicPasswordData.bytes, (uint8_t *)mnemonicPasswordData.bytes + mnemonicPasswordData.length);
-
- std::vector wordVector;
+ std::vector wordVector;
for (NSString *word in wordList) {
NSData *wordData = [word dataUsingEncoding:NSUTF8StringEncoding];
- std::string wordString((uint8_t *)wordData.bytes, (uint8_t *)wordData.bytes + wordData.length);
- wordVector.push_back(wordString);
+ wordVector.push_back(makeSecureString(wordData));
}
- auto query = make_object(localPasswordString, mnemonicPasswordString, make_object(std::move(wordVector)));
+ auto query = make_object(
+ makeSecureString(localPassword),
+ makeSecureString(mnemonicPassword),
+ make_object(std::move(wordVector)));
_client->send({ requestId, std::move(query) });
return [[MTBlockDisposable alloc] initWithBlock:^{
@@ -446,6 +659,12 @@ using tonlib_api::make_object;
- (MTSignal *)deleteKeyWithPublicKey:(NSString *)publicKey {
return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ NSData *publicKeyData = [publicKey dataUsingEncoding:NSUTF8StringEncoding];
+ if (publicKeyData == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error encoding UTF8 string in deleteKeyWithPublicKey"]];
+ return [[MTBlockDisposable alloc] initWithBlock:^{}];
+ }
+
uint64_t requestId = _nextRequestId;
_nextRequestId += 1;
@@ -458,10 +677,62 @@ using tonlib_api::make_object;
}
}];
- NSData *publicKeyData = [[NSData alloc] initWithBase64EncodedString:publicKey options:0];
- std::string publicKeyString((uint8_t *)publicKeyData.bytes, (uint8_t *)publicKeyData.bytes + publicKeyData.length);
+ auto query = make_object(
+ makeString(publicKeyData)
+ );
+ _client->send({ requestId, std::move(query) });
- auto query = make_object(publicKeyString);
+ return [[MTBlockDisposable alloc] initWithBlock:^{
+ }];
+ }] startOn:[MTQueue mainQueue]] deliverOn:[MTQueue mainQueue]];
+}
+
+- (MTSignal *)getTransactionListWithAddress:(NSString * _Nonnull)address lt:(int64_t)lt hash:(NSData * _Nonnull)hash {
+ return [[[[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) {
+ NSData *addressData = [address dataUsingEncoding:NSUTF8StringEncoding];
+ if (addressData == nil) {
+ [subscriber putError:[[TONError alloc] initWithText:@"Error encoding UTF8 string in getTransactionListWithAddress"]];
+ return [[MTBlockDisposable alloc] initWithBlock:^{}];
+ }
+
+ uint64_t requestId = _nextRequestId;
+ _nextRequestId += 1;
+
+ _requestHandlers[@(requestId)] = [[TONRequestHandler alloc] initWithCompletion:^(tonlib_api::object_ptr &object) {
+ if (object->get_id() == tonlib_api::error::ID) {
+ auto error = tonlib_api::move_object_as(object);
+ [subscriber putError:[[TONError alloc] initWithText:[[NSString alloc] initWithUTF8String:error->message_.c_str()]]];
+ } else if (object->get_id() == tonlib_api::raw_transactions::ID) {
+ auto result = tonlib_api::move_object_as(object);
+ NSMutableArray *transactions = [[NSMutableArray alloc] init];
+ for (auto &it : result->transactions_) {
+ TONTransactionId *transactionId = [[TONTransactionId alloc] initWithLt:it->transaction_id_->lt_ transactionHash:makeData(it->transaction_id_->hash_)];
+ TONTransactionMessage *inMessage = parseTransactionMessage(it->in_msg_);
+ NSMutableArray * outMessages = [[NSMutableArray alloc] init];
+ for (auto &messageIt : it->out_msgs_) {
+ TONTransactionMessage *outMessage = parseTransactionMessage(messageIt);
+ if (outMessage != nil) {
+ [outMessages addObject:outMessage];
+ }
+ }
+ [transactions addObject:[[TONTransaction alloc] initWithData:makeData(it->data_) transactionId:transactionId timestamp:it->utime_ fee:it->fee_ inMessage:inMessage outMessages:outMessages]];
+ }
+ [subscriber putNext:transactions];
+ [subscriber putCompletion];
+ } else {
+ assert(false);
+ }
+ }];
+
+ auto query = make_object(
+ make_object(
+ makeString(addressData)
+ ),
+ make_object(
+ lt,
+ makeString(hash)
+ )
+ );
_client->send({ requestId, std::move(query) });
return [[MTBlockDisposable alloc] initWithBlock:^{
diff --git a/submodules/MtProtoKit/TON/include/Client.h b/submodules/MtProtoKit/TON/include/Client.h
deleted file mode 100644
index f1b14ad686..0000000000
--- a/submodules/MtProtoKit/TON/include/Client.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#pragma once
-#include "tonlib_api.h"
-
-#include "TonlibCallback.h"
-
-namespace tonlib {
-class Client final {
- public:
- Client();
- struct Request {
- std::uint64_t id;
- tonlib_api::object_ptr function;
- };
-
- void send(Request&& request);
-
- struct Response {
- std::uint64_t id;
- tonlib_api::object_ptr object;
- };
-
- Response receive(double timeout);
-
- static Response execute(Request&& request);
-
- ~Client();
- Client(Client&& other);
- Client& operator=(Client&& other);
-
- private:
- class Impl;
- std::unique_ptr impl_;
-};
-} // namespace tonlib
diff --git a/submodules/MtProtoKit/TON/include/TonlibCallback.h b/submodules/MtProtoKit/TON/include/TonlibCallback.h
deleted file mode 100644
index 866521709e..0000000000
--- a/submodules/MtProtoKit/TON/include/TonlibCallback.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma once
-
-#include "tonlib_api.h"
-
-namespace tonlib_api = ton::tonlib_api;
-
-class TonlibCallback {
- public:
- virtual void on_result(std::uint64_t id, tonlib_api::object_ptr result) = 0;
- virtual void on_error(std::uint64_t id, tonlib_api::object_ptr error) = 0;
- virtual ~TonlibCallback() = default;
-};
diff --git a/submodules/MtProtoKit/TON/libadnllite.a b/submodules/MtProtoKit/TON/libadnllite.a
deleted file mode 100644
index 09be1342ad..0000000000
Binary files a/submodules/MtProtoKit/TON/libadnllite.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libcrc32c.a b/submodules/MtProtoKit/TON/libcrc32c.a
deleted file mode 100644
index 2350b11123..0000000000
Binary files a/submodules/MtProtoKit/TON/libcrc32c.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libfift.a b/submodules/MtProtoKit/TON/libfift.a
deleted file mode 100644
index e4df5e5c33..0000000000
Binary files a/submodules/MtProtoKit/TON/libfift.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libkeys.a b/submodules/MtProtoKit/TON/libkeys.a
deleted file mode 100644
index ebc2dc031d..0000000000
Binary files a/submodules/MtProtoKit/TON/libkeys.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libmemprof.a b/submodules/MtProtoKit/TON/libmemprof.a
deleted file mode 100644
index 8a5d7d4716..0000000000
Binary files a/submodules/MtProtoKit/TON/libmemprof.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtdactor.a b/submodules/MtProtoKit/TON/libtdactor.a
deleted file mode 100644
index fa25a35335..0000000000
Binary files a/submodules/MtProtoKit/TON/libtdactor.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtddb.a b/submodules/MtProtoKit/TON/libtddb.a
deleted file mode 100644
index 030eac1e67..0000000000
Binary files a/submodules/MtProtoKit/TON/libtddb.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtdnet.a b/submodules/MtProtoKit/TON/libtdnet.a
deleted file mode 100644
index 981e7dd50c..0000000000
Binary files a/submodules/MtProtoKit/TON/libtdnet.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtdtl.a b/submodules/MtProtoKit/TON/libtdtl.a
deleted file mode 100644
index b2ad5ef1d6..0000000000
Binary files a/submodules/MtProtoKit/TON/libtdtl.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtdutils.a b/submodules/MtProtoKit/TON/libtdutils.a
deleted file mode 100644
index 72905b5b4b..0000000000
Binary files a/submodules/MtProtoKit/TON/libtdutils.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libterminal.a b/submodules/MtProtoKit/TON/libterminal.a
deleted file mode 100644
index 944a816912..0000000000
Binary files a/submodules/MtProtoKit/TON/libterminal.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtl-lite-utils.a b/submodules/MtProtoKit/TON/libtl-lite-utils.a
deleted file mode 100644
index 0d2fa23364..0000000000
Binary files a/submodules/MtProtoKit/TON/libtl-lite-utils.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtl-utils.a b/submodules/MtProtoKit/TON/libtl-utils.a
deleted file mode 100644
index 6522867d1b..0000000000
Binary files a/submodules/MtProtoKit/TON/libtl-utils.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtl_api.a b/submodules/MtProtoKit/TON/libtl_api.a
deleted file mode 100644
index 2c5d6415b5..0000000000
Binary files a/submodules/MtProtoKit/TON/libtl_api.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtl_lite_api.a b/submodules/MtProtoKit/TON/libtl_lite_api.a
deleted file mode 100644
index 711589ccf9..0000000000
Binary files a/submodules/MtProtoKit/TON/libtl_lite_api.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtl_tonlib_api.a b/submodules/MtProtoKit/TON/libtl_tonlib_api.a
deleted file mode 100644
index ebddedc92a..0000000000
Binary files a/submodules/MtProtoKit/TON/libtl_tonlib_api.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtl_tonlib_api_json.a b/submodules/MtProtoKit/TON/libtl_tonlib_api_json.a
deleted file mode 100644
index 276d711111..0000000000
Binary files a/submodules/MtProtoKit/TON/libtl_tonlib_api_json.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libton_block.a b/submodules/MtProtoKit/TON/libton_block.a
deleted file mode 100644
index 4c2540a60c..0000000000
Binary files a/submodules/MtProtoKit/TON/libton_block.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libton_crypto.a b/submodules/MtProtoKit/TON/libton_crypto.a
deleted file mode 100644
index ed91623899..0000000000
Binary files a/submodules/MtProtoKit/TON/libton_crypto.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libton_db.a b/submodules/MtProtoKit/TON/libton_db.a
deleted file mode 100644
index 31a15926c2..0000000000
Binary files a/submodules/MtProtoKit/TON/libton_db.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtonlib.a b/submodules/MtProtoKit/TON/libtonlib.a
deleted file mode 100644
index 3a491dc5a0..0000000000
Binary files a/submodules/MtProtoKit/TON/libtonlib.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtonlibjson_private.a b/submodules/MtProtoKit/TON/libtonlibjson_private.a
deleted file mode 100644
index f3b10d1ecd..0000000000
Binary files a/submodules/MtProtoKit/TON/libtonlibjson_private.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/libtonlibjson_static.a b/submodules/MtProtoKit/TON/libtonlibjson_static.a
deleted file mode 100644
index 1a3e28189f..0000000000
Binary files a/submodules/MtProtoKit/TON/libtonlibjson_static.a and /dev/null differ
diff --git a/submodules/MtProtoKit/TON/include/tonlib_api.h b/submodules/MtProtoKit/TON/macOS/include/auto/tl/tonlib_api.h
similarity index 74%
rename from submodules/MtProtoKit/TON/include/tonlib_api.h
rename to submodules/MtProtoKit/TON/macOS/include/auto/tl/tonlib_api.h
index 516b3db5d8..c07d383c72 100644
--- a/submodules/MtProtoKit/TON/include/tonlib_api.h
+++ b/submodules/MtProtoKit/TON/macOS/include/auto/tl/tonlib_api.h
@@ -1,10 +1,11 @@
#pragma once
-#include "TlObject.h"
+#include "tl/TlObject.h"
-#include "int_types.h"
+#include "td/utils/int_types.h"
#include
+#include "td/utils/SharedSlice.h"
#include
#include
@@ -45,8 +46,12 @@ std::string to_string(const object_ptr &value) {
class accountAddress;
+class bip39Hints;
+
class error;
+class exportedEncryptedKey;
+
class exportedKey;
class exportedPemKey;
@@ -69,6 +74,12 @@ class raw_accountState;
class raw_initialAccountState;
+class raw_message;
+
+class raw_transaction;
+
+class raw_transactions;
+
class testGiver_accountState;
class testWallet_accountState;
@@ -103,6 +114,22 @@ class accountAddress final : public Object {
void store(td::TlStorerToString &s, const char *field_name) const final;
};
+class bip39Hints final : public Object {
+ public:
+ std::vector words_;
+
+ bip39Hints();
+
+ explicit bip39Hints(std::vector &&words_);
+
+ static const std::int32_t ID = 1012243456;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
class error final : public Object {
public:
std::int32_t code_;
@@ -120,15 +147,31 @@ class error final : public Object {
void store(td::TlStorerToString &s, const char *field_name) const final;
};
+class exportedEncryptedKey final : public Object {
+ public:
+ td::SecureString data_;
+
+ exportedEncryptedKey();
+
+ explicit exportedEncryptedKey(td::SecureString &&data_);
+
+ static const std::int32_t ID = 2024406612;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
class exportedKey final : public Object {
public:
- std::vector word_list_;
+ std::vector word_list_;
exportedKey();
- explicit exportedKey(std::vector &&word_list_);
+ explicit exportedKey(std::vector &&word_list_);
- static const std::int32_t ID = -1591775274;
+ static const std::int32_t ID = -1449248297;
std::int32_t get_id() const final {
return ID;
}
@@ -138,13 +181,13 @@ class exportedKey final : public Object {
class exportedPemKey final : public Object {
public:
- std::string pem_;
+ td::SecureString pem_;
exportedPemKey();
- explicit exportedPemKey(std::string const &pem_);
+ explicit exportedPemKey(td::SecureString &&pem_);
- static const std::int32_t ID = -1606004936;
+ static const std::int32_t ID = 1425473725;
std::int32_t get_id() const final {
return ID;
}
@@ -155,13 +198,13 @@ class exportedPemKey final : public Object {
class inputKey final : public Object {
public:
object_ptr key_;
- std::string local_password_;
+ td::SecureString local_password_;
inputKey();
- inputKey(object_ptr &&key_, std::string const &local_password_);
+ inputKey(object_ptr &&key_, td::SecureString &&local_password_);
- static const std::int32_t ID = -896546932;
+ static const std::int32_t ID = 869287093;
std::int32_t get_id() const final {
return ID;
}
@@ -172,13 +215,13 @@ class inputKey final : public Object {
class key final : public Object {
public:
std::string public_key_;
- std::string secret_;
+ td::SecureString secret_;
key();
- key(std::string const &public_key_, std::string const &secret_);
+ key(std::string const &public_key_, td::SecureString &&secret_);
- static const std::int32_t ID = -1824886393;
+ static const std::int32_t ID = -1978362923;
std::int32_t get_id() const final {
return ID;
}
@@ -342,13 +385,13 @@ class raw_accountState final : public Object {
std::int64_t balance_;
std::string code_;
std::string data_;
- object_ptr last_transaction_;
+ object_ptr last_transaction_id_;
raw_accountState();
- raw_accountState(std::int64_t balance_, std::string const &code_, std::string const &data_, object_ptr &&last_transaction_);
+ raw_accountState(std::int64_t balance_, std::string const &code_, std::string const &data_, object_ptr &&last_transaction_id_);
- static const std::int32_t ID = 1473454653;
+ static const std::int32_t ID = -550396199;
std::int32_t get_id() const final {
return ID;
}
@@ -373,6 +416,60 @@ class raw_initialAccountState final : public Object {
void store(td::TlStorerToString &s, const char *field_name) const final;
};
+class raw_message final : public Object {
+ public:
+ std::string source_;
+ std::string destination_;
+ std::int64_t value_;
+
+ raw_message();
+
+ raw_message(std::string const &source_, std::string const &destination_, std::int64_t value_);
+
+ static const std::int32_t ID = -1131081640;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class raw_transaction final : public Object {
+ public:
+ std::string data_;
+ object_ptr previous_transaction_id_;
+ std::int64_t fee_;
+ object_ptr in_msg_;
+ std::vector> out_msgs_;
+
+ raw_transaction();
+
+ raw_transaction(std::string const &data_, object_ptr &&previous_transaction_id_, std::int64_t fee_, object_ptr &&in_msg_, std::vector> &&out_msgs_);
+
+ static const std::int32_t ID = -463758736;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class raw_transactions final : public Object {
+ public:
+ std::vector> transactions_;
+
+ raw_transactions();
+
+ explicit raw_transactions(std::vector> &&transactions_);
+
+ static const std::int32_t ID = -442987753;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
class testGiver_accountState final : public Object {
public:
std::int64_t balance_;
@@ -417,7 +514,7 @@ class testWallet_initialAccountState final : public Object {
explicit testWallet_initialAccountState(std::string const &public_key_);
- static const std::int32_t ID = 276948331;
+ static const std::int32_t ID = -1231516227;
std::int32_t get_id() const final {
return ID;
}
@@ -444,13 +541,13 @@ class uninited_accountState final : public Object {
class changeLocalPassword final : public Function {
public:
object_ptr input_key_;
- std::string new_local_password_;
+ td::SecureString new_local_password_;
changeLocalPassword();
- changeLocalPassword(object_ptr &&input_key_, std::string const &new_local_password_);
+ changeLocalPassword(object_ptr &&input_key_, td::SecureString &&new_local_password_);
- static const std::int32_t ID = 1851603483;
+ static const std::int32_t ID = -1685491421;
std::int32_t get_id() const final {
return ID;
}
@@ -477,14 +574,15 @@ class close final : public Function {
class createNewKey final : public Function {
public:
- std::string local_password_;
- std::string mnemonic_password_;
+ td::SecureString local_password_;
+ td::SecureString mnemonic_password_;
+ td::SecureString random_extra_seed_;
createNewKey();
- createNewKey(std::string const &local_password_, std::string const &mnemonic_password_);
+ createNewKey(td::SecureString &&local_password_, td::SecureString &&mnemonic_password_, td::SecureString &&random_extra_seed_);
- static const std::int32_t ID = -132817741;
+ static const std::int32_t ID = -1861385712;
std::int32_t get_id() const final {
return ID;
}
@@ -502,7 +600,7 @@ class deleteKey final : public Function {
explicit deleteKey(std::string const &public_key_);
- static const std::int32_t ID = -1148357295;
+ static const std::int32_t ID = 917647652;
std::int32_t get_id() const final {
return ID;
}
@@ -512,6 +610,25 @@ class deleteKey final : public Function {
void store(td::TlStorerToString &s, const char *field_name) const final;
};
+class exportEncryptedKey final : public Function {
+ public:
+ object_ptr input_key_;
+ td::SecureString key_password_;
+
+ exportEncryptedKey();
+
+ exportEncryptedKey(object_ptr &&input_key_, td::SecureString &&key_password_);
+
+ static const std::int32_t ID = 155352861;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
class exportKey final : public Function {
public:
object_ptr input_key_;
@@ -533,13 +650,13 @@ class exportKey final : public Function {
class exportPemKey final : public Function {
public:
object_ptr input_key_;
- std::string key_password_;
+ td::SecureString key_password_;
exportPemKey();
- exportPemKey(object_ptr &&input_key_, std::string const &key_password_);
+ exportPemKey(object_ptr &&input_key_, td::SecureString &&key_password_);
- static const std::int32_t ID = -189764962;
+ static const std::int32_t ID = -2047752448;
std::int32_t get_id() const final {
return ID;
}
@@ -588,17 +705,55 @@ class generic_sendGrams final : public Function {
void store(td::TlStorerToString &s, const char *field_name) const final;
};
+class getBip39Hints final : public Function {
+ public:
+ std::string prefix_;
+
+ getBip39Hints();
+
+ explicit getBip39Hints(std::string const &prefix_);
+
+ static const std::int32_t ID = -1889640982;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
+class importEncryptedKey final : public Function {
+ public:
+ td::SecureString local_password_;
+ td::SecureString key_password_;
+ object_ptr exported_encrypted_key_;
+
+ importEncryptedKey();
+
+ importEncryptedKey(td::SecureString &&local_password_, td::SecureString &&key_password_, object_ptr &&exported_encrypted_key_);
+
+ static const std::int32_t ID = 656724958;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
class importKey final : public Function {
public:
- std::string local_password_;
- std::string mnemonic_password_;
+ td::SecureString local_password_;
+ td::SecureString mnemonic_password_;
object_ptr exported_key_;
importKey();
- importKey(std::string const &local_password_, std::string const &mnemonic_password_, object_ptr &&exported_key_);
+ importKey(td::SecureString &&local_password_, td::SecureString &&mnemonic_password_, object_ptr &&exported_key_);
- static const std::int32_t ID = -1396771552;
+ static const std::int32_t ID = -1607900903;
std::int32_t get_id() const final {
return ID;
}
@@ -610,15 +765,15 @@ class importKey final : public Function {
class importPemKey final : public Function {
public:
- std::string local_password_;
- std::string key_password_;
+ td::SecureString local_password_;
+ td::SecureString key_password_;
object_ptr exported_key_;
importPemKey();
- importPemKey(std::string const &local_password_, std::string const &key_password_, object_ptr &&exported_key_);
+ importPemKey(td::SecureString &&local_password_, td::SecureString &&key_password_, object_ptr &&exported_key_);
- static const std::int32_t ID = -15644852;
+ static const std::int32_t ID = 76385617;
std::int32_t get_id() const final {
return ID;
}
@@ -700,6 +855,25 @@ class raw_getAccountState final : public Function {
void store(td::TlStorerToString &s, const char *field_name) const final;
};
+class raw_getTransactions final : public Function {
+ public:
+ object_ptr account_address_;
+ object_ptr from_transaction_id_;
+
+ raw_getTransactions();
+
+ raw_getTransactions(object_ptr &&account_address_, object_ptr &&from_transaction_id_);
+
+ static const std::int32_t ID = 935377269;
+ std::int32_t get_id() const final {
+ return ID;
+ }
+
+ using ReturnType = object_ptr;
+
+ void store(td::TlStorerToString &s, const char *field_name) const final;
+};
+
class raw_sendMessage final : public Function {
public:
object_ptr destination_;
diff --git a/submodules/MtProtoKit/TON/macOS/include/td/utils/SharedSlice.h b/submodules/MtProtoKit/TON/macOS/include/td/utils/SharedSlice.h
new file mode 100644
index 0000000000..ab941cb588
--- /dev/null
+++ b/submodules/MtProtoKit/TON/macOS/include/td/utils/SharedSlice.h
@@ -0,0 +1,392 @@
+/*
+ This file is part of TON Blockchain Library.
+
+ TON Blockchain Library is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ TON Blockchain Library 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with TON Blockchain Library. If not, see .
+
+ Copyright 2017-2019 Telegram Systems LLP
+*/
+#pragma once
+
+#include "td/utils/Slice.h"
+
+#include
+#include
+
+namespace td {
+
+namespace detail {
+struct SharedSliceHeader {
+ explicit SharedSliceHeader(size_t size) : refcnt_{1}, size_{size} {
+ }
+
+ void inc() {
+ refcnt_.fetch_add(1, std::memory_order_relaxed);
+ }
+
+ bool dec() {
+ return refcnt_.fetch_sub(1, std::memory_order_acq_rel) == 1;
+ }
+
+ bool is_unique() const {
+ // NB: race if std::memory_order_relaxed is used
+ // reader may see a change by a new writer
+ return refcnt_.load(std::memory_order_acquire) == 1;
+ }
+
+ size_t size() const {
+ return size_;
+ }
+
+ private:
+ std::atomic refcnt_;
+ size_t size_;
+};
+
+struct UniqueSliceHeader {
+ explicit UniqueSliceHeader(size_t size) : size_{size} {
+ }
+
+ void inc() {
+ }
+
+ bool dec() {
+ return true;
+ }
+
+ bool is_unique() const {
+ return true;
+ }
+
+ size_t size() const {
+ return size_;
+ }
+
+ private:
+ size_t size_;
+};
+
+template
+class UnsafeSharedSlice {
+ public:
+ UnsafeSharedSlice() = default;
+ UnsafeSharedSlice clone() const {
+ if (is_null()) {
+ return UnsafeSharedSlice();
+ }
+ header()->inc();
+ return UnsafeSharedSlice(ptr_.get());
+ }
+
+ bool is_null() const {
+ return !ptr_;
+ }
+
+ bool is_unique() const {
+ if (is_null()) {
+ return true;
+ }
+ return header()->is_unique();
+ }
+
+ MutableSlice as_mutable_slice() {
+ if (is_null()) {
+ return MutableSlice();
+ }
+ return MutableSlice(ptr_.get() + sizeof(HeaderT), header()->size());
+ }
+
+ Slice as_slice() const {
+ if (is_null()) {
+ return Slice();
+ }
+ return Slice(ptr_.get() + sizeof(HeaderT), header()->size());
+ }
+
+ size_t size() const {
+ if (is_null()) {
+ return 0;
+ }
+ return header()->size();
+ }
+
+ static UnsafeSharedSlice create(size_t size) {
+ static_assert(std::is_standard_layout::value, "HeaderT must have statdard layout");
+ auto ptr = std::make_unique(size + sizeof(HeaderT));
+ auto header_ptr = new (ptr.get()) HeaderT(size);
+ CHECK(reinterpret_cast(header_ptr) == ptr.get());
+
+ return UnsafeSharedSlice(std::move(ptr));
+ }
+
+ static UnsafeSharedSlice create(Slice slice) {
+ auto res = create(slice.size());
+ res.as_mutable_slice().copy_from(slice);
+ return res;
+ }
+
+ void clear() {
+ ptr_.reset();
+ }
+
+ private:
+ explicit UnsafeSharedSlice(char *ptr) : ptr_(ptr) {
+ }
+ explicit UnsafeSharedSlice(std::unique_ptr from) : ptr_(from.release()) {
+ }
+
+ HeaderT *header() const {
+ return reinterpret_cast(ptr_.get());
+ }
+
+ struct Destructor {
+ void operator()(char *ptr) {
+ auto header = reinterpret_cast(ptr);
+ if (header->dec()) {
+ if (zero_on_destruct) {
+ MutableSlice(ptr, sizeof(HeaderT) + header->size()).fill_zero_secure();
+ }
+ std::default_delete()(ptr);
+ }
+ }
+ };
+
+ std::unique_ptr ptr_;
+};
+} // namespace detail
+
+class BufferSlice;
+
+class UniqueSharedSlice;
+
+class SharedSlice {
+ using Impl = detail::UnsafeSharedSlice;
+
+ public:
+ SharedSlice() = default;
+
+ explicit SharedSlice(Slice slice) : impl_(Impl::create(slice.size())) {
+ impl_.as_mutable_slice().copy_from(slice);
+ }
+
+ explicit SharedSlice(UniqueSharedSlice from);
+
+ SharedSlice(const char *ptr, size_t size) : SharedSlice(Slice(ptr, size)) {
+ }
+
+ SharedSlice clone() const {
+ return SharedSlice(impl_.clone());
+ }
+
+ Slice as_slice() const {
+ return impl_.as_slice();
+ }
+
+ BufferSlice clone_as_buffer_slice() const;
+
+ operator Slice() const {
+ return as_slice();
+ }
+
+ // like in std::string
+ const char *data() const {
+ return as_slice().data();
+ }
+
+ char operator[](size_t at) const {
+ return as_slice()[at];
+ }
+
+ bool empty() const {
+ return size() == 0;
+ }
+
+ size_t size() const {
+ return impl_.size();
+ }
+
+ // like in std::string
+ size_t length() const {
+ return size();
+ }
+
+ void clear() {
+ impl_.clear();
+ }
+
+ private:
+ friend class UniqueSharedSlice;
+ explicit SharedSlice(Impl impl) : impl_(std::move(impl)) {
+ }
+ Impl impl_;
+};
+
+class UniqueSharedSlice {
+ using Impl = detail::UnsafeSharedSlice;
+
+ public:
+ UniqueSharedSlice() = default;
+
+ explicit UniqueSharedSlice(size_t size) : impl_(Impl::create(size)) {
+ }
+ explicit UniqueSharedSlice(Slice slice) : impl_(Impl::create(slice)) {
+ }
+
+ UniqueSharedSlice(const char *ptr, size_t size) : UniqueSharedSlice(Slice(ptr, size)) {
+ }
+ explicit UniqueSharedSlice(SharedSlice from) : impl_() {
+ if (from.impl_.is_unique()) {
+ impl_ = std::move(from.impl_);
+ } else {
+ impl_ = Impl::create(from.as_slice());
+ }
+ }
+
+ UniqueSharedSlice copy() const {
+ return UniqueSharedSlice(as_slice());
+ }
+
+ Slice as_slice() const {
+ return impl_.as_slice();
+ }
+
+ MutableSlice as_mutable_slice() {
+ return impl_.as_mutable_slice();
+ }
+
+ operator Slice() const {
+ return as_slice();
+ }
+
+ // like in std::string
+ char *data() {
+ return as_mutable_slice().data();
+ }
+ const char *data() const {
+ return as_slice().data();
+ }
+ char operator[](size_t at) const {
+ return as_slice()[at];
+ }
+
+ bool empty() const {
+ return size() == 0;
+ }
+
+ size_t size() const {
+ return impl_.size();
+ }
+
+ // like in std::string
+ size_t length() const {
+ return size();
+ }
+
+ void clear() {
+ impl_.clear();
+ }
+
+ private:
+ friend class SharedSlice;
+ explicit UniqueSharedSlice(Impl impl) : impl_(std::move(impl)) {
+ }
+ Impl impl_;
+};
+
+inline SharedSlice::SharedSlice(UniqueSharedSlice from) : impl_(std::move(from.impl_)) {
+}
+
+template
+class UniqueSliceImpl {
+ using Impl = detail::UnsafeSharedSlice;
+
+ public:
+ UniqueSliceImpl() = default;
+
+ explicit UniqueSliceImpl(size_t size) : impl_(Impl::create(size)) {
+ }
+ UniqueSliceImpl(size_t size, char c) : impl_(Impl::create(size)) {
+ std::memset(as_mutable_slice().data(), c, size);
+ }
+ explicit UniqueSliceImpl(Slice slice) : impl_(Impl::create(slice)) {
+ }
+
+ UniqueSliceImpl(const char *ptr, size_t size) : UniqueSliceImpl(Slice(ptr, size)) {
+ }
+
+ UniqueSliceImpl copy() const {
+ return UniqueSliceImpl(as_slice());
+ }
+
+ Slice as_slice() const {
+ return impl_.as_slice();
+ }
+
+ MutableSlice as_mutable_slice() {
+ return impl_.as_mutable_slice();
+ }
+
+ operator Slice() const {
+ return as_slice();
+ }
+
+ // like in std::string
+ char *data() {
+ return as_mutable_slice().data();
+ }
+ const char *data() const {
+ return as_slice().data();
+ }
+ char operator[](size_t at) const {
+ return as_slice()[at];
+ }
+
+ bool empty() const {
+ return size() == 0;
+ }
+
+ size_t size() const {
+ return impl_.size();
+ }
+
+ // like in std::string
+ size_t length() const {
+ return size();
+ }
+
+ void clear() {
+ impl_.clear();
+ }
+
+ private:
+ explicit UniqueSliceImpl(Impl impl) : impl_(std::move(impl)) {
+ }
+ Impl impl_;
+};
+
+using UniqueSlice = UniqueSliceImpl;
+using SecureString = UniqueSliceImpl;
+
+inline MutableSlice as_mutable_slice(UniqueSharedSlice &unique_shared_slice) {
+ return unique_shared_slice.as_mutable_slice();
+}
+
+inline MutableSlice as_mutable_slice(UniqueSlice &unique_slice) {
+ return unique_slice.as_mutable_slice();
+}
+
+inline MutableSlice as_mutable_slice(SecureString &secure_string) {
+ return secure_string.as_mutable_slice();
+}
+
+} // namespace td
diff --git a/submodules/MtProtoKit/TON/macOS/include/td/utils/Slice-decl.h b/submodules/MtProtoKit/TON/macOS/include/td/utils/Slice-decl.h
new file mode 100644
index 0000000000..5f86c33797
--- /dev/null
+++ b/submodules/MtProtoKit/TON/macOS/include/td/utils/Slice-decl.h
@@ -0,0 +1,224 @@
+/*
+ This file is part of TON Blockchain Library.
+
+ TON Blockchain Library is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ TON Blockchain Library 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with TON Blockchain Library. If not, see .
+
+ Copyright 2017-2019 Telegram Systems LLP
+*/
+#pragma once
+
+#include "td/utils/common.h"
+
+#include
+
+namespace td {
+
+class Slice;
+
+class MutableSlice {
+ char *s_;
+ size_t len_;
+
+ struct private_tag {};
+
+ public:
+ MutableSlice();
+ MutableSlice(char *s, size_t len);
+ MutableSlice(unsigned char *s, size_t len);
+ MutableSlice(string &s);
+ template
+ explicit MutableSlice(T s, std::enable_if_t::value, private_tag> = {});
+ MutableSlice(char *s, char *t);
+ MutableSlice(unsigned char *s, unsigned char *t);
+ template
+ constexpr MutableSlice(char (&a)[N]) = delete;
+
+ bool empty() const;
+ size_t size() const;
+
+ MutableSlice &remove_prefix(size_t prefix_len);
+ MutableSlice &remove_suffix(size_t suffix_len);
+ MutableSlice &truncate(size_t size);
+
+ MutableSlice copy() const;
+
+ char *data() const;
+ char *begin() const;
+ unsigned char *ubegin() const;
+ char *end() const;
+ unsigned char *uend() const;
+
+ string str() const;
+ MutableSlice substr(size_t from) const;
+ MutableSlice substr(size_t from, size_t size) const;
+ size_t find(char c) const;
+ size_t rfind(char c) const;
+ void fill(char c);
+ void fill_zero();
+ void fill_zero_secure();
+
+ void copy_from(Slice from);
+
+ char &back();
+ char &operator[](size_t i);
+
+ static const size_t npos = string::npos;
+};
+
+class Slice {
+ const char *s_;
+ size_t len_;
+
+ struct private_tag {};
+
+ public:
+ Slice();
+ Slice(const MutableSlice &other);
+ Slice(const char *s, size_t len);
+ Slice(const unsigned char *s, size_t len);
+ Slice(const string &s);
+ template
+ explicit Slice(T s, std::enable_if_t>::value, private_tag> = {});
+ template
+ explicit Slice(T s, std::enable_if_t>::value, private_tag> = {});
+ Slice(const char *s, const char *t);
+ Slice(const unsigned char *s, const unsigned char *t);
+
+ template
+ constexpr Slice(char (&a)[N]) = delete;
+
+ template
+ constexpr Slice(const char (&a)[N]) : s_(a), len_(N - 1) {
+ }
+
+ Slice &operator=(string &&s) = delete;
+
+ template
+ constexpr Slice &operator=(char (&a)[N]) = delete;
+
+ template
+ constexpr Slice &operator=(const char (&a)[N]) {
+ s_ = a;
+ len_ = N - 1;
+ return *this;
+ }
+
+ bool empty() const;
+ size_t size() const;
+
+ Slice &remove_prefix(size_t prefix_len);
+ Slice &remove_suffix(size_t suffix_len);
+ Slice &truncate(size_t size);
+
+ Slice copy() const;
+
+ const char *data() const;
+ const char *begin() const;
+ const unsigned char *ubegin() const;
+ const char *end() const;
+ const unsigned char *uend() const;
+
+ string str() const;
+ Slice substr(size_t from) const;
+ Slice substr(size_t from, size_t size) const;
+ size_t find(char c) const;
+ size_t rfind(char c) const;
+
+ char back() const;
+ char operator[](size_t i) const;
+
+ static const size_t npos = string::npos;
+};
+
+bool operator==(const Slice &a, const Slice &b);
+bool operator!=(const Slice &a, const Slice &b);
+bool operator<(const Slice &a, const Slice &b);
+
+class MutableCSlice : public MutableSlice {
+ struct private_tag {};
+
+ MutableSlice &remove_suffix(size_t suffix_len) = delete;
+ MutableSlice &truncate(size_t size) = delete;
+
+ public:
+ MutableCSlice() = delete;
+ MutableCSlice(string &s) : MutableSlice(s) {
+ }
+ template
+ explicit MutableCSlice(T s, std::enable_if_t::value, private_tag> = {}) : MutableSlice(s) {
+ }
+ MutableCSlice(char *s, char *t);
+
+ template
+ constexpr MutableCSlice(char (&a)[N]) = delete;
+
+ const char *c_str() const {
+ return begin();
+ }
+};
+
+class CSlice : public Slice {
+ struct private_tag {};
+
+ Slice &remove_suffix(size_t suffix_len) = delete;
+ Slice &truncate(size_t size) = delete;
+
+ public:
+ explicit CSlice(const MutableSlice &other) : Slice(other) {
+ }
+ CSlice(const MutableCSlice &other) : Slice(other.begin(), other.size()) {
+ }
+ CSlice(const string &s) : Slice(s) {
+ }
+ template
+ explicit CSlice(T s, std::enable_if_t>::value, private_tag> = {})
+ : Slice(s) {
+ }
+ template
+ explicit CSlice(T s, std::enable_if_t>::value, private_tag> = {})
+ : Slice(s) {
+ }
+ CSlice(const char *s, const char *t);
+
+ template
+ constexpr CSlice(char (&a)[N]) = delete;
+
+ template
+ constexpr CSlice(const char (&a)[N]) : Slice(a) {
+ }
+
+ CSlice() : CSlice("") {
+ }
+
+ CSlice &operator=(string &&s) = delete;
+
+ template
+ constexpr CSlice &operator=(char (&a)[N]) = delete;
+
+ template
+ constexpr CSlice &operator=(const char (&a)[N]) {
+ this->Slice::operator=(a);
+ return *this;
+ }
+
+ const char *c_str() const {
+ return begin();
+ }
+};
+
+struct SliceHash {
+ std::size_t operator()(Slice slice) const;
+};
+
+} // namespace td
diff --git a/submodules/MtProtoKit/TON/macOS/include/td/utils/Slice.h b/submodules/MtProtoKit/TON/macOS/include/td/utils/Slice.h
new file mode 100644
index 0000000000..2bd02c89fe
--- /dev/null
+++ b/submodules/MtProtoKit/TON/macOS/include/td/utils/Slice.h
@@ -0,0 +1,339 @@
+/*
+ This file is part of TON Blockchain Library.
+
+ TON Blockchain Library is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ TON Blockchain Library 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with TON Blockchain Library. If not, see .
+
+ Copyright 2017-2019 Telegram Systems LLP
+*/
+#pragma once
+
+#include "td/utils/common.h"
+#include "td/utils/Slice-decl.h"
+
+#include
+#include
+
+namespace td {
+
+inline MutableSlice::MutableSlice() : s_(const_cast("")), len_(0) {
+}
+
+inline MutableSlice::MutableSlice(char *s, size_t len) : s_(s), len_(len) {
+ CHECK(s_ != nullptr);
+}
+
+inline MutableSlice::MutableSlice(unsigned char *s, size_t len) : s_(reinterpret_cast(s)), len_(len) {
+ CHECK(s_ != nullptr);
+}
+
+inline MutableSlice::MutableSlice(string &s) : s_(&s[0]), len_(s.size()) {
+}
+
+template
+MutableSlice::MutableSlice(T s, std::enable_if_t::value, private_tag>) : s_(s) {
+ CHECK(s_ != nullptr);
+ len_ = std::strlen(s_);
+}
+
+inline MutableSlice::MutableSlice(char *s, char *t) : MutableSlice(s, t - s) {
+}
+
+inline MutableSlice::MutableSlice(unsigned char *s, unsigned char *t) : MutableSlice(s, t - s) {
+}
+
+inline size_t MutableSlice::size() const {
+ return len_;
+}
+
+inline MutableSlice &MutableSlice::remove_prefix(size_t prefix_len) {
+ CHECK(prefix_len <= len_);
+ s_ += prefix_len;
+ len_ -= prefix_len;
+ return *this;
+}
+inline MutableSlice &MutableSlice::remove_suffix(size_t suffix_len) {
+ CHECK(suffix_len <= len_);
+ len_ -= suffix_len;
+ return *this;
+}
+
+inline MutableSlice &MutableSlice::truncate(size_t size) {
+ if (len_ > size) {
+ len_ = size;
+ }
+ return *this;
+}
+
+inline MutableSlice MutableSlice::copy() const {
+ return *this;
+}
+
+inline bool MutableSlice::empty() const {
+ return len_ == 0;
+}
+
+inline char *MutableSlice::data() const {
+ return s_;
+}
+
+inline char *MutableSlice::begin() const {
+ return s_;
+}
+
+inline unsigned char *MutableSlice::ubegin() const {
+ return reinterpret_cast(s_);
+}
+
+inline char *MutableSlice::end() const {
+ return s_ + len_;
+}
+
+inline unsigned char *MutableSlice::uend() const {
+ return reinterpret_cast(s_) + len_;
+}
+
+inline string MutableSlice::str() const {
+ return string(begin(), size());
+}
+
+inline MutableSlice MutableSlice::substr(size_t from) const {
+ CHECK(from <= len_);
+ return MutableSlice(s_ + from, len_ - from);
+}
+inline MutableSlice MutableSlice::substr(size_t from, size_t size) const {
+ CHECK(from <= len_);
+ return MutableSlice(s_ + from, min(size, len_ - from));
+}
+
+inline size_t MutableSlice::find(char c) const {
+ for (size_t pos = 0; pos < len_; pos++) {
+ if (s_[pos] == c) {
+ return pos;
+ }
+ }
+ return npos;
+}
+
+inline size_t MutableSlice::rfind(char c) const {
+ for (size_t pos = len_; pos-- > 0;) {
+ if (s_[pos] == c) {
+ return pos;
+ }
+ }
+ return npos;
+}
+
+inline void MutableSlice::copy_from(Slice from) {
+ CHECK(size() >= from.size());
+ std::memcpy(ubegin(), from.ubegin(), from.size());
+}
+
+inline char &MutableSlice::back() {
+ CHECK(1 <= len_);
+ return s_[len_ - 1];
+}
+
+inline char &MutableSlice::operator[](size_t i) {
+ return s_[i];
+}
+
+inline Slice::Slice() : s_(""), len_(0) {
+}
+
+inline Slice::Slice(const MutableSlice &other) : s_(other.begin()), len_(other.size()) {
+}
+
+inline Slice::Slice(const char *s, size_t len) : s_(s), len_(len) {
+ CHECK(s_ != nullptr);
+}
+
+inline Slice::Slice(const unsigned char *s, size_t len) : s_(reinterpret_cast(s)), len_(len) {
+ CHECK(s_ != nullptr);
+}
+
+inline Slice::Slice(const string &s) : s_(s.c_str()), len_(s.size()) {
+}
+
+template
+Slice::Slice(T s, std::enable_if_t>::value, private_tag>) : s_(s) {
+ CHECK(s_ != nullptr);
+ len_ = std::strlen(s_);
+}
+
+template
+Slice::Slice(T s, std::enable_if_t>::value, private_tag>) : s_(s) {
+ CHECK(s_ != nullptr);
+ len_ = std::strlen(s_);
+}
+
+inline Slice::Slice(const char *s, const char *t) : s_(s), len_(t - s) {
+ CHECK(s_ != nullptr);
+}
+
+inline Slice::Slice(const unsigned char *s, const unsigned char *t)
+ : s_(reinterpret_cast(s)), len_(t - s) {
+ CHECK(s_ != nullptr);
+}
+
+inline size_t Slice::size() const {
+ return len_;
+}
+
+inline Slice &Slice::remove_prefix(size_t prefix_len) {
+ CHECK(prefix_len <= len_);
+ s_ += prefix_len;
+ len_ -= prefix_len;
+ return *this;
+}
+
+inline Slice &Slice::remove_suffix(size_t suffix_len) {
+ CHECK(suffix_len <= len_);
+ len_ -= suffix_len;
+ return *this;
+}
+
+inline Slice &Slice::truncate(size_t size) {
+ if (len_ > size) {
+ len_ = size;
+ }
+ return *this;
+}
+
+inline Slice Slice::copy() const {
+ return *this;
+}
+
+inline bool Slice::empty() const {
+ return len_ == 0;
+}
+
+inline const char *Slice::data() const {
+ return s_;
+}
+
+inline const char *Slice::begin() const {
+ return s_;
+}
+
+inline const unsigned char *Slice::ubegin() const {
+ return reinterpret_cast(s_);
+}
+
+inline const char *Slice::end() const {
+ return s_ + len_;
+}
+
+inline const unsigned char *Slice::uend() const {
+ return reinterpret_cast(s_) + len_;
+}
+
+inline string Slice::str() const {
+ return string(begin(), size());
+}
+
+inline Slice Slice::substr(size_t from) const {
+ CHECK(from <= len_);
+ return Slice(s_ + from, len_ - from);
+}
+inline Slice Slice::substr(size_t from, size_t size) const {
+ CHECK(from <= len_);
+ return Slice(s_ + from, min(size, len_ - from));
+}
+
+inline size_t Slice::find(char c) const {
+ for (size_t pos = 0; pos < len_; pos++) {
+ if (s_[pos] == c) {
+ return pos;
+ }
+ }
+ return npos;
+}
+
+inline size_t Slice::rfind(char c) const {
+ for (size_t pos = len_; pos-- > 0;) {
+ if (s_[pos] == c) {
+ return pos;
+ }
+ }
+ return npos;
+}
+
+inline char Slice::back() const {
+ CHECK(1 <= len_);
+ return s_[len_ - 1];
+}
+
+inline char Slice::operator[](size_t i) const {
+ return s_[i];
+}
+
+inline bool operator==(const Slice &a, const Slice &b) {
+ return a.size() == b.size() && std::memcmp(a.data(), b.data(), a.size()) == 0;
+}
+
+inline bool operator!=(const Slice &a, const Slice &b) {
+ return !(a == b);
+}
+
+inline bool operator<(const Slice &a, const Slice &b) {
+ auto x = std::memcmp(a.data(), b.data(), td::min(a.size(), b.size()));
+ if (x == 0) {
+ return a.size() < b.size();
+ }
+ return x < 0;
+}
+
+inline MutableCSlice::MutableCSlice(char *s, char *t) : MutableSlice(s, t) {
+ CHECK(*t == '\0');
+}
+
+inline CSlice::CSlice(const char *s, const char *t) : Slice(s, t) {
+ CHECK(*t == '\0');
+}
+
+inline std::size_t SliceHash::operator()(Slice slice) const {
+ // simple string hash
+ std::size_t result = 0;
+ constexpr std::size_t MUL = 123456789;
+ for (auto c : slice) {
+ result = result * MUL + c;
+ }
+ return result;
+}
+
+inline Slice as_slice(Slice slice) {
+ return slice;
+}
+
+inline MutableSlice as_slice(MutableSlice slice) {
+ return slice;
+}
+
+inline Slice as_slice(const string &str) {
+ return str;
+}
+
+inline MutableSlice as_slice(string &str) {
+ return str;
+}
+
+inline MutableSlice as_mutable_slice(MutableSlice slice) {
+ return slice;
+}
+
+inline MutableSlice as_mutable_slice(string &str) {
+ return str;
+}
+
+} // namespace td
diff --git a/submodules/MtProtoKit/TON/macOS/include/td/utils/check.h b/submodules/MtProtoKit/TON/macOS/include/td/utils/check.h
new file mode 100644
index 0000000000..938323236f
--- /dev/null
+++ b/submodules/MtProtoKit/TON/macOS/include/td/utils/check.h
@@ -0,0 +1,44 @@
+/*
+ This file is part of TON Blockchain Library.
+
+ TON Blockchain Library is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ TON Blockchain Library 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with TON Blockchain Library. If not, see