From ee946025d64648bf55e66b621d14b35dec61b96e Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 22 Mar 2016 19:10:47 +0300
Subject: [PATCH] fixed mtproto scheme gen code, 9034001 beta

---
 Telegram/SourceFiles/mtproto/generate.py |   3 +-
 Telegram/SourceFiles/mtproto/mtpScheme.h | 256 -----------------------
 Telegram/Telegram.vcxproj                |   6 +
 3 files changed, 8 insertions(+), 257 deletions(-)

diff --git a/Telegram/SourceFiles/mtproto/generate.py b/Telegram/SourceFiles/mtproto/generate.py
index 433d9c2ae..240129331 100644
--- a/Telegram/SourceFiles/mtproto/generate.py
+++ b/Telegram/SourceFiles/mtproto/generate.py
@@ -598,7 +598,8 @@ for restype in typesList:
     if (len(prms) > len(trivialConditions)):
       dataTexts += dataText; # add data class
 
-    friendDecl += '\tfriend class MTP::internal::TypeCreator;\n';
+    if (not friendDecl):
+      friendDecl += '\tfriend class MTP::internal::TypeCreator;\n';
     creatorProxyText += '\t\tinline static MTP' + restype + ' new_' + name + '(' + ', '.join(creatorParams) + ') {\n';
     if (len(prms) > len(trivialConditions)): # creator with params
       creatorProxyText += '\t\t\treturn MTP' + restype + '(new MTPD' + name + '(' + ', '.join(creatorParamsList) + '));\n';
diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.h b/Telegram/SourceFiles/mtproto/mtpScheme.h
index 199ec12e7..9cc878cb7 100644
--- a/Telegram/SourceFiles/mtproto/mtpScheme.h
+++ b/Telegram/SourceFiles/mtproto/mtpScheme.h
@@ -1545,7 +1545,6 @@ private:
 	explicit MTPserver_DH_Params(MTPDserver_DH_params_fail *_data);
 	explicit MTPserver_DH_Params(MTPDserver_DH_params_ok *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -1671,8 +1670,6 @@ private:
 	explicit MTPset_client_DH_params_answer(MTPDdh_gen_retry *_data);
 	explicit MTPset_client_DH_params_answer(MTPDdh_gen_fail *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -1754,7 +1751,6 @@ private:
 	explicit MTPbadMsgNotification(MTPDbad_msg_notification *_data);
 	explicit MTPbadMsgNotification(MTPDbad_server_salt *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -1898,7 +1894,6 @@ private:
 	explicit MTPmsgDetailedInfo(MTPDmsg_detailed_info *_data);
 	explicit MTPmsgDetailedInfo(MTPDmsg_new_detailed_info *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -1998,8 +1993,6 @@ private:
 	explicit MTPrpcDropAnswer(mtpTypeId type);
 	explicit MTPrpcDropAnswer(MTPDrpc_answer_dropped *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2143,7 +2136,6 @@ private:
 	explicit MTPdestroySessionRes(MTPDdestroy_session_ok *_data);
 	explicit MTPdestroySessionRes(MTPDdestroy_session_none *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2230,7 +2222,6 @@ public:
 private:
 	explicit MTPbool(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2367,10 +2358,6 @@ private:
 	explicit MTPinputPeer(MTPDinputPeerUser *_data);
 	explicit MTPinputPeer(MTPDinputPeerChannel *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2408,8 +2395,6 @@ private:
 	explicit MTPinputUser(mtpTypeId type);
 	explicit MTPinputUser(MTPDinputUser *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2491,7 +2476,6 @@ private:
 	explicit MTPinputFile(MTPDinputFile *_data);
 	explicit MTPinputFile(MTPDinputFileBig *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2633,15 +2617,6 @@ private:
 	explicit MTPinputMedia(MTPDinputMediaVenue *_data);
 	explicit MTPinputMedia(MTPDinputMediaGifExternal *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2692,8 +2667,6 @@ private:
 	explicit MTPinputChatPhoto(MTPDinputChatUploadedPhoto *_data);
 	explicit MTPinputChatPhoto(MTPDinputChatPhoto *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2731,7 +2704,6 @@ private:
 	explicit MTPinputGeoPoint(mtpTypeId type);
 	explicit MTPinputGeoPoint(MTPDinputGeoPoint *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2769,7 +2741,6 @@ private:
 	explicit MTPinputPhoto(mtpTypeId type);
 	explicit MTPinputPhoto(MTPDinputPhoto *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2833,8 +2804,6 @@ private:
 	explicit MTPinputFileLocation(MTPDinputEncryptedFileLocation *_data);
 	explicit MTPinputFileLocation(MTPDinputDocumentFileLocation *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2872,7 +2841,6 @@ private:
 	explicit MTPinputPhotoCrop(mtpTypeId type);
 	explicit MTPinputPhotoCrop(MTPDinputPhotoCrop *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2967,8 +2935,6 @@ private:
 	explicit MTPpeer(MTPDpeerChat *_data);
 	explicit MTPpeer(MTPDpeerChannel *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -2993,15 +2959,6 @@ public:
 private:
 	explicit MTPstorage_fileType(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3052,7 +3009,6 @@ private:
 	explicit MTPfileLocation(MTPDfileLocationUnavailable *_data);
 	explicit MTPfileLocation(MTPDfileLocation *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3103,7 +3059,6 @@ private:
 	explicit MTPuser(MTPDuserEmpty *_data);
 	explicit MTPuser(MTPDuser *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3141,7 +3096,6 @@ private:
 	explicit MTPuserProfilePhoto(mtpTypeId type);
 	explicit MTPuserProfilePhoto(MTPDuserProfilePhoto *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3192,11 +3146,6 @@ private:
 	explicit MTPuserStatus(MTPDuserStatusOnline *_data);
 	explicit MTPuserStatus(MTPDuserStatusOffline *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3286,10 +3235,6 @@ private:
 	explicit MTPchat(MTPDchannel *_data);
 	explicit MTPchat(MTPDchannelForbidden *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3340,7 +3285,6 @@ private:
 	explicit MTPchatFull(MTPDchatFull *_data);
 	explicit MTPchatFull(MTPDchannelFull *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3404,8 +3348,6 @@ private:
 	explicit MTPchatParticipant(MTPDchatParticipantCreator *_data);
 	explicit MTPchatParticipant(MTPDchatParticipantAdmin *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3456,7 +3398,6 @@ private:
 	explicit MTPchatParticipants(MTPDchatParticipantsForbidden *_data);
 	explicit MTPchatParticipants(MTPDchatParticipants *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3494,7 +3435,6 @@ private:
 	explicit MTPchatPhoto(mtpTypeId type);
 	explicit MTPchatPhoto(MTPDchatPhoto *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3558,8 +3498,6 @@ private:
 	explicit MTPmessage(MTPDmessage *_data);
 	explicit MTPmessage(MTPDmessageService *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3662,13 +3600,6 @@ private:
 	explicit MTPmessageMedia(MTPDmessageMediaWebPage *_data);
 	explicit MTPmessageMedia(MTPDmessageMediaVenue *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3810,17 +3741,6 @@ private:
 	explicit MTPmessageAction(MTPDmessageActionChatMigrateTo *_data);
 	explicit MTPmessageAction(MTPDmessageActionChannelMigrateFrom *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3871,7 +3791,6 @@ private:
 	explicit MTPdialog(MTPDdialog *_data);
 	explicit MTPdialog(MTPDdialogChannel *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3922,7 +3841,6 @@ private:
 	explicit MTPphoto(MTPDphotoEmpty *_data);
 	explicit MTPphoto(MTPDphoto *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -3986,8 +3904,6 @@ private:
 	explicit MTPphotoSize(MTPDphotoSize *_data);
 	explicit MTPphotoSize(MTPDphotoCachedSize *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4025,7 +3941,6 @@ private:
 	explicit MTPgeoPoint(mtpTypeId type);
 	explicit MTPgeoPoint(MTPDgeoPoint *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4187,9 +4102,6 @@ private:
 	explicit MTPinputNotifyPeer(mtpTypeId type);
 	explicit MTPinputNotifyPeer(MTPDinputNotifyPeer *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4214,7 +4126,6 @@ public:
 private:
 	explicit MTPinputPeerNotifyEvents(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4270,7 +4181,6 @@ public:
 private:
 	explicit MTPpeerNotifyEvents(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4308,7 +4218,6 @@ private:
 	explicit MTPpeerNotifySettings(mtpTypeId type);
 	explicit MTPpeerNotifySettings(MTPDpeerNotifySettings *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4390,7 +4299,6 @@ private:
 	explicit MTPwallPaper(MTPDwallPaper *_data);
 	explicit MTPwallPaper(MTPDwallPaperSolid *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4428,9 +4336,6 @@ private:
 	explicit MTPreportReason(mtpTypeId type);
 	explicit MTPreportReason(MTPDinputReportReasonOther *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4654,7 +4559,6 @@ private:
 	explicit MTPcontacts_contacts(mtpTypeId type);
 	explicit MTPcontacts_contacts(MTPDcontacts_contacts *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4736,7 +4640,6 @@ private:
 	explicit MTPcontacts_blocked(MTPDcontacts_blocked *_data);
 	explicit MTPcontacts_blocked(MTPDcontacts_blockedSlice *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4787,7 +4690,6 @@ private:
 	explicit MTPmessages_dialogs(MTPDmessages_dialogs *_data);
 	explicit MTPmessages_dialogs(MTPDmessages_dialogsSlice *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4851,8 +4753,6 @@ private:
 	explicit MTPmessages_messages(MTPDmessages_messagesSlice *_data);
 	explicit MTPmessages_messages(MTPDmessages_channelMessages *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -4970,15 +4870,6 @@ public:
 private:
 	explicit MTPmessagesFilter(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -5562,50 +5453,6 @@ private:
 	explicit MTPupdate(MTPDupdateEditChannelMessage *_data);
 	explicit MTPupdate(MTPDupdateChannelPinnedMessage *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -5700,8 +5547,6 @@ private:
 	explicit MTPupdates_difference(MTPDupdates_difference *_data);
 	explicit MTPupdates_difference(MTPDupdates_differenceSlice *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -5804,12 +5649,6 @@ private:
 	explicit MTPupdates(MTPDupdates *_data);
 	explicit MTPupdates(MTPDupdateShortSentMessage *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -5860,7 +5699,6 @@ private:
 	explicit MTPphotos_photos(MTPDphotos_photos *_data);
 	explicit MTPphotos_photos(MTPDphotos_photosSlice *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6053,7 +5891,6 @@ private:
 	explicit MTPhelp_appUpdate(mtpTypeId type);
 	explicit MTPhelp_appUpdate(MTPDhelp_appUpdate *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6174,10 +6011,6 @@ private:
 	explicit MTPencryptedChat(MTPDencryptedChat *_data);
 	explicit MTPencryptedChat(MTPDencryptedChatDiscarded *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6246,7 +6079,6 @@ private:
 	explicit MTPencryptedFile(mtpTypeId type);
 	explicit MTPencryptedFile(MTPDencryptedFile *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6310,9 +6142,6 @@ private:
 	explicit MTPinputEncryptedFile(MTPDinputEncryptedFile *_data);
 	explicit MTPinputEncryptedFile(MTPDinputEncryptedFileBigUploaded *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6363,7 +6192,6 @@ private:
 	explicit MTPencryptedMessage(MTPDencryptedMessage *_data);
 	explicit MTPencryptedMessage(MTPDencryptedMessageService *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6414,7 +6242,6 @@ private:
 	explicit MTPmessages_dhConfig(MTPDmessages_dhConfigNotModified *_data);
 	explicit MTPmessages_dhConfig(MTPDmessages_dhConfig *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6465,7 +6292,6 @@ private:
 	explicit MTPmessages_sentEncryptedMessage(MTPDmessages_sentEncryptedMessage *_data);
 	explicit MTPmessages_sentEncryptedMessage(MTPDmessages_sentEncryptedFile *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6503,7 +6329,6 @@ private:
 	explicit MTPinputDocument(mtpTypeId type);
 	explicit MTPinputDocument(MTPDinputDocument *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6554,7 +6379,6 @@ private:
 	explicit MTPdocument(MTPDdocumentEmpty *_data);
 	explicit MTPdocument(MTPDdocument *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6623,9 +6447,6 @@ private:
 	explicit MTPnotifyPeer(mtpTypeId type);
 	explicit MTPnotifyPeer(MTPDnotifyPeer *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6702,15 +6523,6 @@ private:
 	explicit MTPsendMessageAction(MTPDsendMessageUploadPhotoAction *_data);
 	explicit MTPsendMessageAction(MTPDsendMessageUploadDocumentAction *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6766,7 +6578,6 @@ public:
 private:
 	explicit MTPinputPrivacyKey(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6791,7 +6602,6 @@ public:
 private:
 	explicit MTPprivacyKey(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6842,11 +6652,6 @@ private:
 	explicit MTPinputPrivacyRule(MTPDinputPrivacyValueAllowUsers *_data);
 	explicit MTPinputPrivacyRule(MTPDinputPrivacyValueDisallowUsers *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -6897,11 +6702,6 @@ private:
 	explicit MTPprivacyRule(MTPDprivacyValueAllowUsers *_data);
 	explicit MTPprivacyRule(MTPDprivacyValueDisallowUsers *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7053,11 +6853,6 @@ private:
 	explicit MTPdocumentAttribute(MTPDdocumentAttributeAudio *_data);
 	explicit MTPdocumentAttribute(MTPDdocumentAttributeFilename *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7095,7 +6890,6 @@ private:
 	explicit MTPmessages_stickers(mtpTypeId type);
 	explicit MTPmessages_stickers(MTPDmessages_stickers *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7164,7 +6958,6 @@ private:
 	explicit MTPmessages_allStickers(mtpTypeId type);
 	explicit MTPmessages_allStickers(MTPDmessages_allStickers *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7251,9 +7044,6 @@ public:
 private:
 	explicit MTPcontactLink(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7317,8 +7107,6 @@ private:
 	explicit MTPwebPage(MTPDwebPagePending *_data);
 	explicit MTPwebPage(MTPDwebPage *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7431,7 +7219,6 @@ private:
 	explicit MTPaccount_password(MTPDaccount_noPassword *_data);
 	explicit MTPaccount_password(MTPDaccount_password *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7593,7 +7380,6 @@ private:
 	explicit MTPexportedChatInvite(mtpTypeId type);
 	explicit MTPexportedChatInvite(MTPDchatInviteExported *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7644,7 +7430,6 @@ private:
 	explicit MTPchatInvite(MTPDchatInviteAlready *_data);
 	explicit MTPchatInvite(MTPDchatInvite *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7695,8 +7480,6 @@ private:
 	explicit MTPinputStickerSet(MTPDinputStickerSetID *_data);
 	explicit MTPinputStickerSet(MTPDinputStickerSetShortName *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7946,8 +7729,6 @@ private:
 	explicit MTPreplyMarkup(MTPDreplyKeyboardForceReply *_data);
 	explicit MTPreplyMarkup(MTPDreplyKeyboardMarkup *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -7985,7 +7766,6 @@ private:
 	explicit MTPhelp_appChangelog(mtpTypeId type);
 	explicit MTPhelp_appChangelog(MTPDhelp_appChangelog *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8153,16 +7933,6 @@ private:
 	explicit MTPmessageEntity(MTPDmessageEntityPre *_data);
 	explicit MTPmessageEntity(MTPDmessageEntityTextUrl *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8200,7 +7970,6 @@ private:
 	explicit MTPinputChannel(mtpTypeId type);
 	explicit MTPinputChannel(MTPDinputChannel *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8357,8 +8126,6 @@ private:
 	explicit MTPupdates_channelDifference(MTPDupdates_channelDifferenceTooLong *_data);
 	explicit MTPupdates_channelDifference(MTPDupdates_channelDifference *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8396,8 +8163,6 @@ private:
 	explicit MTPchannelMessagesFilter(mtpTypeId type);
 	explicit MTPchannelMessagesFilter(MTPDchannelMessagesFilter *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8500,11 +8265,6 @@ private:
 	explicit MTPchannelParticipant(MTPDchannelParticipantKicked *_data);
 	explicit MTPchannelParticipant(MTPDchannelParticipantCreator *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8529,9 +8289,6 @@ public:
 private:
 	explicit MTPchannelParticipantsFilter(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8556,8 +8313,6 @@ public:
 private:
 	explicit MTPchannelParticipantRole(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8701,7 +8456,6 @@ private:
 	explicit MTPfoundGif(MTPDfoundGif *_data);
 	explicit MTPfoundGif(MTPDfoundGifCached *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8770,7 +8524,6 @@ private:
 	explicit MTPmessages_savedGifs(mtpTypeId type);
 	explicit MTPmessages_savedGifs(MTPDmessages_savedGifs *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8821,7 +8574,6 @@ private:
 	explicit MTPinputBotInlineMessage(MTPDinputBotInlineMessageMediaAuto *_data);
 	explicit MTPinputBotInlineMessage(MTPDinputBotInlineMessageText *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8903,7 +8655,6 @@ private:
 	explicit MTPbotInlineMessage(MTPDbotInlineMessageMediaAuto *_data);
 	explicit MTPbotInlineMessage(MTPDbotInlineMessageText *_data);
 
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -8967,8 +8718,6 @@ private:
 	explicit MTPbotInlineResult(MTPDbotInlineMediaResultPhoto *_data);
 	explicit MTPbotInlineResult(MTPDbotInlineResult *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -9117,8 +8866,6 @@ public:
 private:
 	explicit MTPauth_codeType(mtpTypeId type);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
@@ -9195,9 +8942,6 @@ private:
 	explicit MTPauth_sentCodeType(MTPDauth_sentCodeTypeCall *_data);
 	explicit MTPauth_sentCodeType(MTPDauth_sentCodeTypeFlashCall *_data);
 
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
-	friend class MTP::internal::TypeCreator;
 	friend class MTP::internal::TypeCreator;
 
 	mtpTypeId _type;
diff --git a/Telegram/Telegram.vcxproj b/Telegram/Telegram.vcxproj
index f6d50ce38..df873ef61 100644
--- a/Telegram/Telegram.vcxproj
+++ b/Telegram/Telegram.vcxproj
@@ -640,6 +640,7 @@
     <ClCompile Include="GeneratedFiles\Deploy\moc_pspecific_winrt.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="GeneratedFiles\Deploy\moc_scrollarea.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -928,6 +929,7 @@
     <ClCompile Include="GeneratedFiles\Release\moc_pspecific_winrt.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="GeneratedFiles\Release\moc_scrollarea.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
@@ -1057,6 +1059,8 @@
     <ClCompile Include="SourceFiles\pspecific_win.cpp" />
     <ClCompile Include="SourceFiles\pspecific_winrt.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
     </ClCompile>
     <ClCompile Include="SourceFiles\settings.cpp" />
     <ClCompile Include="SourceFiles\settingswidget.cpp" />
@@ -1092,6 +1096,8 @@
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/pspecific_winrt.h"  -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
     </CustomBuild>
     <ClInclude Include="SourceFiles\shortcuts.h" />
     <ClInclude Include="ThirdParty\minizip\crypt.h" />