git » swiftpm » commit f6a7022

Snapshot borogove changes

author Stephen Paul Weber
2025-08-11 14:18:08 UTC
committer Stephen Paul Weber
2025-08-11 14:18:08 UTC
parent ae06c5baf06c8e6e478de13bdfcb2f001e180b64

Snapshot borogove changes

Sources/c_snikket/src/snikket/AvailableChat.cpp +12 -12
Sources/c_snikket/src/snikket/Channel.cpp +747 -747
Sources/c_snikket/src/snikket/Chat.cpp +16 -2
Sources/c_snikket/src/snikket/DirectChat.cpp +402 -372
Sources/c_snikket/src/snikket/SerializedChat.cpp +79 -79
Sources/c_snikket/src/snikket/persistence/Sqlite.cpp +1 -1
Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp +1 -1
Sources/strophe/libstrophe +1 -1

diff --git a/Sources/c_snikket/src/snikket/AvailableChat.cpp b/Sources/c_snikket/src/snikket/AvailableChat.cpp
index cf4fdb4..e9e8d03 100644
--- a/Sources/c_snikket/src/snikket/AvailableChat.cpp
+++ b/Sources/c_snikket/src/snikket/AvailableChat.cpp
@@ -8,20 +8,20 @@
 #include <snikket/Caps.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1563_new,"snikket.AvailableChat","new",0xe206b262,"snikket.AvailableChat.new","snikket/Chat.hx",1563,0x18616bf4)
+HX_DEFINE_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1571_new,"snikket.AvailableChat","new",0xe206b262,"snikket.AvailableChat.new","snikket/Chat.hx",1571,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_84f492ff0c9cb600_355_chatId__fromC,"snikket.AvailableChat","chatId__fromC",0xa5503488,"snikket.AvailableChat.chatId__fromC","HaxeCBridge.hx",355,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_84f492ff0c9cb600_355_displayName__fromC,"snikket.AvailableChat","displayName__fromC",0x0c214eaa,"snikket.AvailableChat.displayName__fromC","HaxeCBridge.hx",355,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_84f492ff0c9cb600_355_note__fromC,"snikket.AvailableChat","note__fromC",0xff5acec9,"snikket.AvailableChat.note__fromC","HaxeCBridge.hx",355,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1559_isChannel,"snikket.AvailableChat","isChannel",0x4a03cd7b,"snikket.AvailableChat.isChannel","snikket/Chat.hx",1559,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1539_boot,"snikket.AvailableChat","boot",0xdbee63f0,"snikket.AvailableChat.boot","snikket/Chat.hx",1539,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1567_isChannel,"snikket.AvailableChat","isChannel",0x4a03cd7b,"snikket.AvailableChat.isChannel","snikket/Chat.hx",1567,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1547_boot,"snikket.AvailableChat","boot",0xdbee63f0,"snikket.AvailableChat.boot","snikket/Chat.hx",1547,0x18616bf4)
 namespace snikket{
 
 void AvailableChat_obj::__construct(::String chatId,::String displayName,::String note, ::snikket::Caps caps){
-            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1563_new)
-HXLINE(1564)		this->chatId = chatId;
-HXLINE(1565)		this->displayName = displayName;
-HXLINE(1566)		this->note = note;
-HXLINE(1567)		this->caps = caps;
+            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1571_new)
+HXLINE(1572)		this->chatId = chatId;
+HXLINE(1573)		this->displayName = displayName;
+HXLINE(1574)		this->note = note;
+HXLINE(1575)		this->caps = caps;
             	}
 
 Dynamic AvailableChat_obj::__CreateEmpty() { return new AvailableChat_obj; }
@@ -64,8 +64,8 @@ HXDLIN( 355)		return this->note;
 HX_DEFINE_DYNAMIC_FUNC0(AvailableChat_obj,note__fromC,return )
 
 bool AvailableChat_obj::isChannel(){
-            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1559_isChannel)
-HXDLIN(1559)		return this->caps->isChannel(this->chatId);
+            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1567_isChannel)
+HXDLIN(1567)		return this->caps->isChannel(this->chatId);
             	}
 
 
@@ -208,8 +208,8 @@ void AvailableChat_obj::__register()
 void AvailableChat_obj::__boot()
 {
 {
-            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1539_boot)
-HXDLIN(1539)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1547_boot)
+HXDLIN(1547)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("chatId__fromC",06,fc,b1,94), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
diff --git a/Sources/c_snikket/src/snikket/Channel.cpp b/Sources/c_snikket/src/snikket/Channel.cpp
index c1311c1..938f930 100644
--- a/Sources/c_snikket/src/snikket/Channel.cpp
+++ b/Sources/c_snikket/src/snikket/Channel.cpp
@@ -125,90 +125,90 @@
 #include <thenshim/_Promise/Promise_Impl_.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_5e4df8d46126c981_982_new,"snikket.Channel","new",0x8a02a1a4,"snikket.Channel.new","snikket/Chat.hx",982,0x18616bf4)
+HX_DEFINE_STACK_FRAME(_hx_pos_5e4df8d46126c981_990_new,"snikket.Channel","new",0x8a02a1a4,"snikket.Channel.new","snikket/Chat.hx",990,0x18616bf4)
 static const ::String _hx_array_data_db683fb2_1[] = {
 	HX_("http://jabber.org/protocol/muc",07,b2,7f,c6),
 };
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1025_selfPing,"snikket.Channel","selfPing",0x9e7c785a,"snikket.Channel.selfPing","snikket/Chat.hx",1025,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1033_selfPing,"snikket.Channel","selfPing",0x9e7c785a,"snikket.Channel.selfPing","snikket/Chat.hx",1033,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1023_selfPing,"snikket.Channel","selfPing",0x9e7c785a,"snikket.Channel.selfPing","snikket/Chat.hx",1023,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1011_selfPing,"snikket.Channel","selfPing",0x9e7c785a,"snikket.Channel.selfPing","snikket/Chat.hx",1011,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1015_selfPing,"snikket.Channel","selfPing",0x9e7c785a,"snikket.Channel.selfPing","snikket/Chat.hx",1015,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1003_selfPing,"snikket.Channel","selfPing",0x9e7c785a,"snikket.Channel.selfPing","snikket/Chat.hx",1003,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1007_selfPing,"snikket.Channel","selfPing",0x9e7c785a,"snikket.Channel.selfPing","snikket/Chat.hx",1007,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1057_join,"snikket.Channel","join",0x35ad7e26,"snikket.Channel.join","snikket/Chat.hx",1057,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1049_join,"snikket.Channel","join",0x35ad7e26,"snikket.Channel.join","snikket/Chat.hx",1049,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1041_join,"snikket.Channel","join",0x35ad7e26,"snikket.Channel.join","snikket/Chat.hx",1041,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1060_selfPingSuccess,"snikket.Channel","selfPingSuccess",0xafddf489,"snikket.Channel.selfPingSuccess","snikket/Chat.hx",1060,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1074_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1074,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1076_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1076,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1073_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1073,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1081_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1081,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1082_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1082,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1068_selfPingSuccess,"snikket.Channel","selfPingSuccess",0xafddf489,"snikket.Channel.selfPingSuccess","snikket/Chat.hx",1068,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1082_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1082,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1084_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1084,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1081_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1081,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1089_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1089,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1090_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1090,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1097_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1097,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1120_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1120,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1149_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1149,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1151_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1151,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1180_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1180,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1126_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1126,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1142_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1142,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1138_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1138,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1190_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1190,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1103_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1103,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1203_isTrusted,"snikket.Channel","isTrusted",0x2c7a5171,"snikket.Channel.isTrusted","snikket/Chat.hx",1203,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1207_isPrivate,"snikket.Channel","isPrivate",0x9f42c67d,"snikket.Channel.isPrivate","snikket/Chat.hx",1207,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1213_refreshDisco,"snikket.Channel","refreshDisco",0x9d89e5db,"snikket.Channel.refreshDisco","snikket/Chat.hx",1213,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1211_refreshDisco,"snikket.Channel","refreshDisco",0x9d89e5db,"snikket.Channel.refreshDisco","snikket/Chat.hx",1211,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1226_preview,"snikket.Channel","preview",0x1b05a34c,"snikket.Channel.preview","snikket/Chat.hx",1226,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1233_livePresence,"snikket.Channel","livePresence",0x644ddf83,"snikket.Channel.livePresence","snikket/Chat.hx",1233,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1240_syncing,"snikket.Channel","syncing",0x8651c0ab,"snikket.Channel.syncing","snikket/Chat.hx",1240,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1244_canAudioCall,"snikket.Channel","canAudioCall",0x94c730a0,"snikket.Channel.canAudioCall","snikket/Chat.hx",1244,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1248_canVideoCall,"snikket.Channel","canVideoCall",0x9aca02c5,"snikket.Channel.canVideoCall","snikket/Chat.hx",1248,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1252_nickInUse,"snikket.Channel","nickInUse",0x59744703,"snikket.Channel.nickInUse","snikket/Chat.hx",1252,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1256_getFullJid,"snikket.Channel","getFullJid",0xa835e1bc,"snikket.Channel.getFullJid","snikket/Chat.hx",1256,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1262_getParticipants,"snikket.Channel","getParticipants",0x390cb25a,"snikket.Channel.getParticipants","snikket/Chat.hx",1262,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1260_getParticipants,"snikket.Channel","getParticipants",0x390cb25a,"snikket.Channel.getParticipants","snikket/Chat.hx",1260,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1267_getParticipantDetails,"snikket.Channel","getParticipantDetails",0xdfad9dc9,"snikket.Channel.getParticipantDetails","snikket/Chat.hx",1267,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1280_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1280,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1098_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1098,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1105_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1105,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1128_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1128,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1157_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1157,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1159_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1159,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1188_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1188,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1134_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1134,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1150_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1150,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1146_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1146,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1198_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1198,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1111_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1111,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1211_isTrusted,"snikket.Channel","isTrusted",0x2c7a5171,"snikket.Channel.isTrusted","snikket/Chat.hx",1211,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1215_isPrivate,"snikket.Channel","isPrivate",0x9f42c67d,"snikket.Channel.isPrivate","snikket/Chat.hx",1215,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1221_refreshDisco,"snikket.Channel","refreshDisco",0x9d89e5db,"snikket.Channel.refreshDisco","snikket/Chat.hx",1221,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1219_refreshDisco,"snikket.Channel","refreshDisco",0x9d89e5db,"snikket.Channel.refreshDisco","snikket/Chat.hx",1219,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1234_preview,"snikket.Channel","preview",0x1b05a34c,"snikket.Channel.preview","snikket/Chat.hx",1234,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1241_livePresence,"snikket.Channel","livePresence",0x644ddf83,"snikket.Channel.livePresence","snikket/Chat.hx",1241,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1248_syncing,"snikket.Channel","syncing",0x8651c0ab,"snikket.Channel.syncing","snikket/Chat.hx",1248,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1252_canAudioCall,"snikket.Channel","canAudioCall",0x94c730a0,"snikket.Channel.canAudioCall","snikket/Chat.hx",1252,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1256_canVideoCall,"snikket.Channel","canVideoCall",0x9aca02c5,"snikket.Channel.canVideoCall","snikket/Chat.hx",1256,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1260_nickInUse,"snikket.Channel","nickInUse",0x59744703,"snikket.Channel.nickInUse","snikket/Chat.hx",1260,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1264_getFullJid,"snikket.Channel","getFullJid",0xa835e1bc,"snikket.Channel.getFullJid","snikket/Chat.hx",1264,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1270_getParticipants,"snikket.Channel","getParticipants",0x390cb25a,"snikket.Channel.getParticipants","snikket/Chat.hx",1270,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1268_getParticipants,"snikket.Channel","getParticipants",0x390cb25a,"snikket.Channel.getParticipants","snikket/Chat.hx",1268,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1275_getParticipantDetails,"snikket.Channel","getParticipantDetails",0xdfad9dc9,"snikket.Channel.getParticipantDetails","snikket/Chat.hx",1275,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1288_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1288,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1294_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1294,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1286_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1286,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1278_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1278,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1303_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1303,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1309_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1309,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1297_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1297,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1322_getMessagesAround,"snikket.Channel","getMessagesAround",0x0b8795b3,"snikket.Channel.getMessagesAround","snikket/Chat.hx",1322,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1321_getMessagesAround,"snikket.Channel","getMessagesAround",0x0b8795b3,"snikket.Channel.getMessagesAround","snikket/Chat.hx",1321,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1332_prepareIncomingMessage,"snikket.Channel","prepareIncomingMessage",0x3bfa74f6,"snikket.Channel.prepareIncomingMessage","snikket/Chat.hx",1332,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1343_prepareOutgoingMessage,"snikket.Channel","prepareOutgoingMessage",0xa2273a30,"snikket.Channel.prepareOutgoingMessage","snikket/Chat.hx",1343,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1361_correctMessage,"snikket.Channel","correctMessage",0x4d2d23b9,"snikket.Channel.correctMessage","snikket/Chat.hx",1361,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1356_correctMessage,"snikket.Channel","correctMessage",0x4d2d23b9,"snikket.Channel.correctMessage","snikket/Chat.hx",1356,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1374_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1374,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1390_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1390,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1397_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1397,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1428_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1428,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1408_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1408,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1423_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1423,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1438_lastMessageId,"snikket.Channel","lastMessageId",0xa72b1e90,"snikket.Channel.lastMessageId","snikket/Chat.hx",1438,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1443_markReadUpTo,"snikket.Channel","markReadUpTo",0x9e644e95,"snikket.Channel.markReadUpTo","snikket/Chat.hx",1443,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1442_markReadUpTo,"snikket.Channel","markReadUpTo",0x9e644e95,"snikket.Channel.markReadUpTo","snikket/Chat.hx",1442,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1478_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1478,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1496_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1496,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1457_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1457,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1507_sendChatState,"snikket.Channel","sendChatState",0xee67aff5,"snikket.Channel.sendChatState","snikket/Chat.hx",1507,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1523_close,"snikket.Channel","close",0xb85bc1fc,"snikket.Channel.close","snikket/Chat.hx",1523,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_982_boot,"snikket.Channel","boot",0x3063ce6e,"snikket.Channel.boot","snikket/Chat.hx",982,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1311_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1311,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1317_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1317,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1305_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1305,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1330_getMessagesAround,"snikket.Channel","getMessagesAround",0x0b8795b3,"snikket.Channel.getMessagesAround","snikket/Chat.hx",1330,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1329_getMessagesAround,"snikket.Channel","getMessagesAround",0x0b8795b3,"snikket.Channel.getMessagesAround","snikket/Chat.hx",1329,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1340_prepareIncomingMessage,"snikket.Channel","prepareIncomingMessage",0x3bfa74f6,"snikket.Channel.prepareIncomingMessage","snikket/Chat.hx",1340,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1351_prepareOutgoingMessage,"snikket.Channel","prepareOutgoingMessage",0xa2273a30,"snikket.Channel.prepareOutgoingMessage","snikket/Chat.hx",1351,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1369_correctMessage,"snikket.Channel","correctMessage",0x4d2d23b9,"snikket.Channel.correctMessage","snikket/Chat.hx",1369,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1364_correctMessage,"snikket.Channel","correctMessage",0x4d2d23b9,"snikket.Channel.correctMessage","snikket/Chat.hx",1364,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1382_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1382,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1398_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1398,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1405_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1405,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1436_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1436,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1416_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1416,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1431_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1431,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1446_lastMessageId,"snikket.Channel","lastMessageId",0xa72b1e90,"snikket.Channel.lastMessageId","snikket/Chat.hx",1446,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1451_markReadUpTo,"snikket.Channel","markReadUpTo",0x9e644e95,"snikket.Channel.markReadUpTo","snikket/Chat.hx",1451,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1450_markReadUpTo,"snikket.Channel","markReadUpTo",0x9e644e95,"snikket.Channel.markReadUpTo","snikket/Chat.hx",1450,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1486_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1486,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1504_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1504,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1465_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1465,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1515_sendChatState,"snikket.Channel","sendChatState",0xee67aff5,"snikket.Channel.sendChatState","snikket/Chat.hx",1515,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1531_close,"snikket.Channel","close",0xb85bc1fc,"snikket.Channel.close","snikket/Chat.hx",1531,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_990_boot,"snikket.Channel","boot",0x3063ce6e,"snikket.Channel.boot","snikket/Chat.hx",990,0x18616bf4)
 namespace snikket{
 
 void Channel_obj::__construct( ::snikket::Client client, ::snikket::GenericStream stream,::Dynamic persistence,::String chatId,::hx::Null< int >  __o_uiState,::hx::Null< bool >  __o_isBlocked, ::snikket::Stanza extensions,::String readUpToId,::String readUpToBy, ::snikket::Caps disco){
             		int uiState = __o_uiState.Default(1);
             		bool isBlocked = __o_isBlocked.Default(false);
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_982_new)
-HXLINE( 988)		this->_nickInUse = null();
-HXLINE( 987)		this->forceLive = false;
-HXLINE( 986)		this->sync = null();
-HXLINE( 985)		this->inSync = true;
-HXLINE( 984)		this->disco =  ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::fromData( _hx_array_data_db683fb2_1,1),null());
-HXLINE( 992)		super::__construct(client,stream,persistence,chatId,uiState,isBlocked,extensions,readUpToId,readUpToBy);
-HXLINE( 993)		if (::hx::IsNotNull( disco )) {
-HXLINE( 994)			this->disco = disco;
-HXLINE( 995)			if (!(disco->features->contains(HX_("http://jabber.org/protocol/muc",07,b2,7f,c6)))) {
-HXLINE( 997)				this->forceLive = true;
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_990_new)
+HXLINE( 996)		this->_nickInUse = null();
+HXLINE( 995)		this->forceLive = false;
+HXLINE( 994)		this->sync = null();
+HXLINE( 993)		this->inSync = true;
+HXLINE( 992)		this->disco =  ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::fromData( _hx_array_data_db683fb2_1,1),null());
+HXLINE(1000)		super::__construct(client,stream,persistence,chatId,uiState,isBlocked,extensions,readUpToId,readUpToBy);
+HXLINE(1001)		if (::hx::IsNotNull( disco )) {
+HXLINE(1002)			this->disco = disco;
+HXLINE(1003)			if (!(disco->features->contains(HX_("http://jabber.org/protocol/muc",07,b2,7f,c6)))) {
+HXLINE(1005)				this->forceLive = true;
             			}
             		}
             	}
@@ -237,100 +237,100 @@ void Channel_obj::selfPing(bool refresh){
             		void _hx_run(){
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_2, ::snikket::Channel,_gthis) HXARGC(1)
             			void _hx_run( ::snikket::Stanza response){
-            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1025_selfPing)
-HXLINE(1025)				if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
-HXLINE(1026)					 ::snikket::Stanza tmp = response->getChild(HX_("error",c8,cb,29,73),null());
-HXDLIN(1026)					 ::snikket::Stanza err;
-HXDLIN(1026)					if (::hx::IsNotNull( tmp )) {
-HXLINE(1026)						err = tmp->getChild(null(),HX_("urn:ietf:params:xml:ns:xmpp-stanzas",27,f2,3d,30));
+            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1033_selfPing)
+HXLINE(1033)				if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
+HXLINE(1034)					 ::snikket::Stanza tmp = response->getChild(HX_("error",c8,cb,29,73),null());
+HXDLIN(1034)					 ::snikket::Stanza err;
+HXDLIN(1034)					if (::hx::IsNotNull( tmp )) {
+HXLINE(1034)						err = tmp->getChild(null(),HX_("urn:ietf:params:xml:ns:xmpp-stanzas",27,f2,3d,30));
             					}
             					else {
-HXLINE(1026)						err = null();
+HXLINE(1034)						err = null();
             					}
-HXLINE(1027)					bool _hx_tmp;
-HXDLIN(1027)					if ((err->name != HX_("service-unavailable",f8,3c,11,1c))) {
-HXLINE(1027)						_hx_tmp = (err->name == HX_("feature-not-implemented",71,20,2e,96));
+HXLINE(1035)					bool _hx_tmp;
+HXDLIN(1035)					if ((err->name != HX_("service-unavailable",f8,3c,11,1c))) {
+HXLINE(1035)						_hx_tmp = (err->name == HX_("feature-not-implemented",71,20,2e,96));
             					}
             					else {
-HXLINE(1027)						_hx_tmp = true;
+HXLINE(1035)						_hx_tmp = true;
             					}
-HXDLIN(1027)					if (_hx_tmp) {
-HXLINE(1027)						_gthis->selfPingSuccess();
-HXDLIN(1027)						return;
+HXDLIN(1035)					if (_hx_tmp) {
+HXLINE(1035)						_gthis->selfPingSuccess();
+HXDLIN(1035)						return;
             					}
-HXLINE(1028)					bool _hx_tmp1;
-HXDLIN(1028)					if ((err->name != HX_("remote-server-not-found",e5,4f,ca,aa))) {
-HXLINE(1028)						_hx_tmp1 = (err->name == HX_("remote-server-timeout",fe,b0,ee,1a));
+HXLINE(1036)					bool _hx_tmp1;
+HXDLIN(1036)					if ((err->name != HX_("remote-server-not-found",e5,4f,ca,aa))) {
+HXLINE(1036)						_hx_tmp1 = (err->name == HX_("remote-server-timeout",fe,b0,ee,1a));
             					}
             					else {
-HXLINE(1028)						_hx_tmp1 = true;
+HXLINE(1036)						_hx_tmp1 = true;
             					}
-HXDLIN(1028)					if (_hx_tmp1) {
-HXLINE(1028)						_gthis->selfPingSuccess();
-HXDLIN(1028)						return;
+HXDLIN(1036)					if (_hx_tmp1) {
+HXLINE(1036)						_gthis->selfPingSuccess();
+HXDLIN(1036)						return;
             					}
-HXLINE(1029)					if ((err->name == HX_("item-not-found",4e,b5,9b,5b))) {
-HXLINE(1029)						_gthis->selfPingSuccess();
-HXDLIN(1029)						return;
+HXLINE(1037)					if ((err->name == HX_("item-not-found",4e,b5,9b,5b))) {
+HXLINE(1037)						_gthis->selfPingSuccess();
+HXDLIN(1037)						return;
             					}
-HXLINE(1030)					::haxe::Log_obj::trace(HX_("SYNC: self-ping fail, join",ea,45,f2,f0), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE(1038)					::haxe::Log_obj::trace(HX_("SYNC: self-ping fail, join",ea,45,f2,f0), ::Dynamic(::hx::Anon_obj::Create(5)
             						->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Channel",b2,3f,68,db))
             						->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis->chatId))
             						->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("selfPing",1e,60,3c,38))
             						->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Chat.hx",f4,6b,61,18))
-            						->setFixed(4,HX_("lineNumber",dd,81,22,76),1030)));
-HXLINE(1031)					_gthis->join();
+            						->setFixed(4,HX_("lineNumber",dd,81,22,76),1038)));
+HXLINE(1039)					_gthis->join();
             				}
             				else {
-HXLINE(1033)					_gthis->selfPingSuccess();
+HXLINE(1041)					_gthis->selfPingSuccess();
             				}
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1015_selfPing)
-HXLINE(1016)			if (!(_gthis->disco->features->contains(HX_("http://jabber.org/protocol/muc",07,b2,7f,c6)))) {
-HXLINE(1018)				_gthis->forceLive = true;
-HXLINE(1019)				return;
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1023_selfPing)
+HXLINE(1024)			if (!(_gthis->disco->features->contains(HX_("http://jabber.org/protocol/muc",07,b2,7f,c6)))) {
+HXLINE(1026)				_gthis->forceLive = true;
+HXLINE(1027)				return;
             			}
-HXLINE(1021)			 ::snikket::GenericStream _gthis1 = _gthis->stream;
-HXLINE(1022)			::String _hx_tmp = _gthis->getFullJid()->asString();
-HXLINE(1021)			_gthis1->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE(1029)			 ::snikket::GenericStream _gthis1 = _gthis->stream;
+HXLINE(1030)			::String _hx_tmp = _gthis->getFullJid()->asString();
+HXLINE(1029)			_gthis1->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
             				->setFixed(0,HX_("to",7b,65,00,00),_hx_tmp)
             				->setFixed(1,HX_("type",ba,f2,08,4d),HX_("get",96,80,4e,00))))->tag(HX_("ping",72,f2,57,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:ping",8e,30,3f,fd))))->up(), ::Dynamic(new _hx_Closure_2(_gthis)));
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1003_selfPing)
-HXDLIN(1003)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1004)		if ((this->uiState == 2)) {
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1011_selfPing)
+HXDLIN(1011)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1012)		if ((this->uiState == 2)) {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             			 ::snikket::Stanza _hx_run( ::snikket::Stanza stanza){
-            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1007_selfPing)
-HXLINE(1008)				::Reflect_obj::setField(stanza->attr,HX_("type",ba,f2,08,4d),HX_("unavailable",50,e0,29,fd));
-HXLINE(1009)				return stanza;
+            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1015_selfPing)
+HXLINE(1016)				::Reflect_obj::setField(stanza->attr,HX_("type",ba,f2,08,4d),HX_("unavailable",50,e0,29,fd));
+HXLINE(1017)				return stanza;
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1005)			 ::snikket::Client _hx_tmp = this->client;
-HXDLIN(1005)			_hx_tmp->sendPresence(this->getFullJid()->asString(), ::Dynamic(new _hx_Closure_0()));
-HXLINE(1012)			return;
+HXLINE(1013)			 ::snikket::Client _hx_tmp = this->client;
+HXDLIN(1013)			_hx_tmp->sendPresence(this->getFullJid()->asString(), ::Dynamic(new _hx_Closure_0()));
+HXLINE(1020)			return;
             		}
-HXLINE(1015)		 ::Dynamic _hx_tmp1;
-HXDLIN(1015)		if (refresh) {
-HXLINE(1015)			_hx_tmp1 = this->refreshDisco_dyn();
+HXLINE(1023)		 ::Dynamic _hx_tmp1;
+HXDLIN(1023)		if (refresh) {
+HXLINE(1023)			_hx_tmp1 = this->refreshDisco_dyn();
             		}
             		else {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             			void _hx_run( ::Dynamic cb){
-            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1015_selfPing)
-HXLINE(1015)				cb();
+            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1023_selfPing)
+HXLINE(1023)				cb();
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1015)			_hx_tmp1 =  ::Dynamic(new _hx_Closure_1());
+HXLINE(1023)			_hx_tmp1 =  ::Dynamic(new _hx_Closure_1());
             		}
-HXDLIN(1015)		_hx_tmp1( ::Dynamic(new _hx_Closure_3(_gthis)));
+HXDLIN(1023)		_hx_tmp1( ::Dynamic(new _hx_Closure_3(_gthis)));
             	}
 
 
@@ -339,49 +339,49 @@ HX_DEFINE_DYNAMIC_FUNC1(Channel_obj,selfPing,(void))
 void Channel_obj::join(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(1)
             		 ::snikket::Stanza _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1049_join)
-HXLINE(1050)			stanza->tag(HX_("x",78,00,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1057_join)
+HXLINE(1058)			stanza->tag(HX_("x",78,00,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/muc",07,b2,7f,c6))));
-HXLINE(1051)			if (_gthis->disco->features->contains(HX_("urn:xmpp:mam:2",f5,ef,8c,da))) {
-HXLINE(1051)				stanza->tag(HX_("history",54,35,47,64), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1059)			if (_gthis->disco->features->contains(HX_("urn:xmpp:mam:2",f5,ef,8c,da))) {
+HXLINE(1059)				stanza->tag(HX_("history",54,35,47,64), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("maxchars",b9,7f,a3,5c),HX_("0",30,00,00,00))))->up();
             			}
-HXLINE(1053)			stanza->up();
-HXLINE(1054)			return stanza;
+HXLINE(1061)			stanza->up();
+HXLINE(1062)			return stanza;
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1041_join)
-HXDLIN(1041)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1042)		this->presence =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE(1043)		this->_nickInUse = null();
-HXLINE(1044)		this->inSync = false;
-HXLINE(1045)		this->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
-HXLINE(1046)		 ::snikket::JID desiredFullJid = ::snikket::JID_obj::parse(this->chatId);
-HXDLIN(1046)		 ::snikket::JID desiredFullJid1 = desiredFullJid->withResource(this->client->displayName());
-HXLINE(1047)		 ::snikket::Client _hx_tmp = this->client;
-HXDLIN(1047)		_hx_tmp->sendPresence(desiredFullJid1->asString(), ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(1057)		::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN(1057)		::String _hx_tmp2 = this->client->accountId();
-HXDLIN(1057)		::snikket::Persistence_obj::lastId(_hx_tmp1,_hx_tmp2,this->chatId,this->doSync_dyn());
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1049_join)
+HXDLIN(1049)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1050)		this->presence =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE(1051)		this->_nickInUse = null();
+HXLINE(1052)		this->inSync = false;
+HXLINE(1053)		this->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
+HXLINE(1054)		 ::snikket::JID desiredFullJid = ::snikket::JID_obj::parse(this->chatId);
+HXDLIN(1054)		 ::snikket::JID desiredFullJid1 = desiredFullJid->withResource(this->client->displayName());
+HXLINE(1055)		 ::snikket::Client _hx_tmp = this->client;
+HXDLIN(1055)		_hx_tmp->sendPresence(desiredFullJid1->asString(), ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE(1065)		::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN(1065)		::String _hx_tmp2 = this->client->accountId();
+HXDLIN(1065)		::snikket::Persistence_obj::lastId(_hx_tmp1,_hx_tmp2,this->chatId,this->doSync_dyn());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,join,(void))
 
 void Channel_obj::selfPingSuccess(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1060_selfPingSuccess)
-HXLINE(1061)		::String _hx_tmp = this->nickInUse();
-HXDLIN(1061)		if ((_hx_tmp != this->client->displayName())) {
-HXLINE(1062)			 ::snikket::JID desiredFullJid = ::snikket::JID_obj::parse(this->chatId);
-HXDLIN(1062)			 ::snikket::JID desiredFullJid1 = desiredFullJid->withResource(this->client->displayName());
-HXLINE(1063)			 ::snikket::Client _hx_tmp1 = this->client;
-HXDLIN(1063)			_hx_tmp1->sendPresence(desiredFullJid1->asString(),null());
-            		}
-HXLINE(1067)		this->inSync = false;
-HXLINE(1068)		::Dynamic _hx_tmp2 = this->persistence;
-HXDLIN(1068)		::String _hx_tmp3 = this->client->accountId();
-HXDLIN(1068)		::snikket::Persistence_obj::lastId(_hx_tmp2,_hx_tmp3,this->chatId,this->doSync_dyn());
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1068_selfPingSuccess)
+HXLINE(1069)		::String _hx_tmp = this->nickInUse();
+HXDLIN(1069)		if ((_hx_tmp != this->client->displayName())) {
+HXLINE(1070)			 ::snikket::JID desiredFullJid = ::snikket::JID_obj::parse(this->chatId);
+HXDLIN(1070)			 ::snikket::JID desiredFullJid1 = desiredFullJid->withResource(this->client->displayName());
+HXLINE(1071)			 ::snikket::Client _hx_tmp1 = this->client;
+HXDLIN(1071)			_hx_tmp1->sendPresence(desiredFullJid1->asString(),null());
+            		}
+HXLINE(1075)		this->inSync = false;
+HXLINE(1076)		::Dynamic _hx_tmp2 = this->persistence;
+HXDLIN(1076)		::String _hx_tmp3 = this->client->accountId();
+HXDLIN(1076)		::snikket::Persistence_obj::lastId(_hx_tmp2,_hx_tmp3,this->chatId,this->doSync_dyn());
             	}
 
 
@@ -390,140 +390,140 @@ HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,selfPingSuccess,(void))
  ::Dynamic Channel_obj::getCaps(){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(0)
             		bool _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1074_getCaps)
-HXLINE(1074)			return false;
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1082_getCaps)
+HXLINE(1082)			return false;
             		}
             		HX_END_LOCAL_FUNC0(return)
 
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(0)
             		 ::Dynamic _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1076_getCaps)
-HXLINE(1076)			return  ::Dynamic(::hx::Anon_obj::Create(2)
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1084_getCaps)
+HXLINE(1084)			return  ::Dynamic(::hx::Anon_obj::Create(2)
             				->setFixed(0,HX_("key",9f,89,51,00),HX_("",00,00,00,00))
             				->setFixed(1,HX_("value",71,7f,b8,31),null()));
             		}
             		HX_END_LOCAL_FUNC0(return)
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1073_getCaps)
-HXDLIN(1073)		return  ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1081_getCaps)
+HXDLIN(1081)		return  ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("hasNext",6d,a5,46,18), ::Dynamic(new _hx_Closure_0()))
             			->setFixed(1,HX_("next",f3,84,02,49), ::Dynamic(new _hx_Closure_1())));
             	}
 
 
 void Channel_obj::setPresence(::String resource, ::snikket::Presence presence){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1081_setPresence)
-HXLINE(1082)		 ::snikket::Stanza tmp;
-HXDLIN(1082)		if (::hx::IsNotNull( presence )) {
-HXLINE(1082)			tmp = presence->mucUser;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1089_setPresence)
+HXLINE(1090)		 ::snikket::Stanza tmp;
+HXDLIN(1090)		if (::hx::IsNotNull( presence )) {
+HXLINE(1090)			tmp = presence->mucUser;
             		}
             		else {
-HXLINE(1082)			tmp = null();
+HXLINE(1090)			tmp = null();
             		}
-HXDLIN(1082)		 ::snikket::Stanza oneTen;
-HXDLIN(1082)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1090)		 ::snikket::Stanza oneTen;
+HXDLIN(1090)		if (::hx::IsNotNull( tmp )) {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             			bool _hx_run( ::snikket::Stanza status){
-            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1082_setPresence)
-HXLINE(1082)				return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("110",50,59,25,00));
+            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1090_setPresence)
+HXLINE(1090)				return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("110",50,59,25,00));
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1082)			oneTen = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_0()))) );
+HXLINE(1090)			oneTen = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_0()))) );
             		}
             		else {
-HXLINE(1082)			oneTen = null();
+HXLINE(1090)			oneTen = null();
             		}
-HXLINE(1083)		if (::hx::IsNotNull( oneTen )) {
-HXLINE(1084)			this->_nickInUse = resource;
+HXLINE(1091)		if (::hx::IsNotNull( oneTen )) {
+HXLINE(1092)			this->_nickInUse = resource;
             		}
             		else {
-HXLINE(1085)			if ((resource == this->_nickInUse)) {
-HXLINE(1086)				this->_nickInUse = null();
+HXLINE(1093)			if ((resource == this->_nickInUse)) {
+HXLINE(1094)				this->_nickInUse = null();
             			}
             		}
-HXLINE(1088)		bool _hx_tmp;
-HXDLIN(1088)		bool _hx_tmp1;
-HXDLIN(1088)		if (::hx::IsNotNull( presence )) {
-HXLINE(1088)			_hx_tmp1 = ::hx::IsNotNull( presence->mucUser );
+HXLINE(1096)		bool _hx_tmp;
+HXDLIN(1096)		bool _hx_tmp1;
+HXDLIN(1096)		if (::hx::IsNotNull( presence )) {
+HXLINE(1096)			_hx_tmp1 = ::hx::IsNotNull( presence->mucUser );
             		}
             		else {
-HXLINE(1088)			_hx_tmp1 = false;
+HXLINE(1096)			_hx_tmp1 = false;
             		}
-HXDLIN(1088)		if (_hx_tmp1) {
-HXLINE(1088)			_hx_tmp = ::hx::IsNull( oneTen );
+HXDLIN(1096)		if (_hx_tmp1) {
+HXLINE(1096)			_hx_tmp = ::hx::IsNull( oneTen );
             		}
             		else {
-HXLINE(1088)			_hx_tmp = false;
-            		}
-HXDLIN(1088)		if (_hx_tmp) {
-HXLINE(1089)			 ::snikket::Presence existing = ( ( ::snikket::Presence)(this->presence->get(resource)) );
-HXLINE(1090)			bool _hx_tmp2;
-HXDLIN(1090)			if (::hx::IsNotNull( existing )) {
-HXLINE(1090)				 ::snikket::Stanza tmp1;
-HXDLIN(1090)				if (::hx::IsNotNull( existing )) {
-HXLINE(1090)					tmp1 = existing->mucUser;
+HXLINE(1096)			_hx_tmp = false;
+            		}
+HXDLIN(1096)		if (_hx_tmp) {
+HXLINE(1097)			 ::snikket::Presence existing = ( ( ::snikket::Presence)(this->presence->get(resource)) );
+HXLINE(1098)			bool _hx_tmp2;
+HXDLIN(1098)			if (::hx::IsNotNull( existing )) {
+HXLINE(1098)				 ::snikket::Stanza tmp1;
+HXDLIN(1098)				if (::hx::IsNotNull( existing )) {
+HXLINE(1098)					tmp1 = existing->mucUser;
             				}
             				else {
-HXLINE(1090)					tmp1 = null();
+HXLINE(1098)					tmp1 = null();
             				}
-HXDLIN(1090)				 ::snikket::Stanza _hx_tmp3;
-HXDLIN(1090)				if (::hx::IsNotNull( tmp1 )) {
+HXDLIN(1098)				 ::snikket::Stanza _hx_tmp3;
+HXDLIN(1098)				if (::hx::IsNotNull( tmp1 )) {
             					HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             					bool _hx_run( ::snikket::Stanza status){
-            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1090_setPresence)
-HXLINE(1090)						return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("110",50,59,25,00));
+            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1098_setPresence)
+HXLINE(1098)						return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("110",50,59,25,00));
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1090)					_hx_tmp3 = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp1->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_1()))) );
+HXLINE(1098)					_hx_tmp3 = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp1->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_1()))) );
             				}
             				else {
-HXLINE(1090)					_hx_tmp3 = null();
+HXLINE(1098)					_hx_tmp3 = null();
             				}
-HXDLIN(1090)				_hx_tmp2 = ::hx::IsNotNull( _hx_tmp3 );
+HXDLIN(1098)				_hx_tmp2 = ::hx::IsNotNull( _hx_tmp3 );
             			}
             			else {
-HXLINE(1090)				_hx_tmp2 = false;
+HXLINE(1098)				_hx_tmp2 = false;
             			}
-HXDLIN(1090)			if (_hx_tmp2) {
-HXLINE(1091)				presence->mucUser->tag(HX_("status",32,e7,fb,05), ::Dynamic(::hx::Anon_obj::Create(1)
+HXDLIN(1098)			if (_hx_tmp2) {
+HXLINE(1099)				presence->mucUser->tag(HX_("status",32,e7,fb,05), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("code",2d,b1,c4,41),HX_("110",50,59,25,00))));
-HXLINE(1092)				this->setPresence(resource,presence);
-HXLINE(1093)				return;
+HXLINE(1100)				this->setPresence(resource,presence);
+HXLINE(1101)				return;
             			}
             		}
-HXLINE(1096)		this->super::setPresence(resource,presence);
-HXLINE(1097)		 ::snikket::Stanza tmp2;
-HXDLIN(1097)		if (::hx::IsNotNull( presence )) {
-HXLINE(1097)			tmp2 = presence->mucUser;
+HXLINE(1104)		this->super::setPresence(resource,presence);
+HXLINE(1105)		 ::snikket::Stanza tmp2;
+HXDLIN(1105)		if (::hx::IsNotNull( presence )) {
+HXLINE(1105)			tmp2 = presence->mucUser;
             		}
             		else {
-HXLINE(1097)			tmp2 = null();
+HXLINE(1105)			tmp2 = null();
             		}
-HXDLIN(1097)		 ::snikket::Stanza tripleThree;
-HXDLIN(1097)		if (::hx::IsNotNull( tmp2 )) {
+HXDLIN(1105)		 ::snikket::Stanza tripleThree;
+HXDLIN(1105)		if (::hx::IsNotNull( tmp2 )) {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_2) HXARGC(1)
             			bool _hx_run( ::snikket::Stanza status){
-            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1097_setPresence)
-HXLINE(1097)				return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("333",93,df,26,00));
+            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1105_setPresence)
+HXLINE(1105)				return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("333",93,df,26,00));
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1097)			tripleThree = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp2->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_2()))) );
+HXLINE(1105)			tripleThree = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp2->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_2()))) );
             		}
             		else {
-HXLINE(1097)			tripleThree = null();
+HXLINE(1105)			tripleThree = null();
             		}
-HXLINE(1098)		bool _hx_tmp4;
-HXDLIN(1098)		if (::hx::IsNotNull( oneTen )) {
-HXLINE(1098)			_hx_tmp4 = ::hx::IsNotNull( tripleThree );
+HXLINE(1106)		bool _hx_tmp4;
+HXDLIN(1106)		if (::hx::IsNotNull( oneTen )) {
+HXLINE(1106)			_hx_tmp4 = ::hx::IsNotNull( tripleThree );
             		}
             		else {
-HXLINE(1098)			_hx_tmp4 = false;
+HXLINE(1106)			_hx_tmp4 = false;
             		}
-HXDLIN(1098)		if (_hx_tmp4) {
-HXLINE(1099)			this->selfPing(true);
+HXDLIN(1106)		if (_hx_tmp4) {
+HXLINE(1107)			this->selfPing(true);
             		}
             	}
 
@@ -531,10 +531,10 @@ HXLINE(1099)			this->selfPing(true);
 void Channel_obj::doSync(::String lastId){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(2)
             		 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1120_doSync)
-HXLINE(1121)			builder = _gthis->prepareIncomingMessage(builder,stanza);
-HXLINE(1122)			builder->syncPoint = true;
-HXLINE(1123)			return builder;
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1128_doSync)
+HXLINE(1129)			builder = _gthis->prepareIncomingMessage(builder,stanza);
+HXLINE(1130)			builder->syncPoint = true;
+HXLINE(1131)			return builder;
             		}
             		HX_END_LOCAL_FUNC2(return)
 
@@ -542,140 +542,140 @@ HXLINE(1123)			return builder;
             		void _hx_run( ::Dynamic messageList){
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_5, ::snikket::Channel,_gthis,::Array< ::Dynamic>,pageChatMessages) HXARGC(2)
             			void _hx_run( ::Dynamic resolve, ::Dynamic reject){
-            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1149_doSync)
-HXLINE(1149)				_gthis->client->storeMessages(pageChatMessages,resolve);
+            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1157_doSync)
+HXLINE(1157)				_gthis->client->storeMessages(pageChatMessages,resolve);
             			}
             			HX_END_LOCAL_FUNC2((void))
 
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_7, ::snikket::Channel,_gthis,::Array< ::Dynamic>,chatMessages) HXARGC(1)
             			void _hx_run(::Array< ::Dynamic> stored){
-            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1151_doSync)
-HXLINE(1152)				{
-HXLINE(1152)					int _g = 0;
-HXDLIN(1152)					while((_g < stored->length)){
-HXLINE(1152)						::Array< ::Dynamic> messages = stored->__get(_g).StaticCast< ::Array< ::Dynamic> >();
-HXDLIN(1152)						_g = (_g + 1);
-HXLINE(1153)						if (::hx::IsNotNull( messages )) {
-HXLINE(1154)							int _g1 = 0;
-HXDLIN(1154)							while((_g1 < messages->length)){
-HXLINE(1154)								 ::snikket::ChatMessage message = messages->__get(_g1).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1154)								_g1 = (_g1 + 1);
-HXLINE(1155)								_gthis->client->notifySyncMessageHandlers(message);
-HXLINE(1156)								bool _hx_tmp;
-HXDLIN(1156)								if (::hx::IsNotNull( message )) {
-HXLINE(1156)									::String _hx_tmp1 = message->chatId();
-HXDLIN(1156)									_hx_tmp = (_hx_tmp1 == _gthis->chatId);
+            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1159_doSync)
+HXLINE(1160)				{
+HXLINE(1160)					int _g = 0;
+HXDLIN(1160)					while((_g < stored->length)){
+HXLINE(1160)						::Array< ::Dynamic> messages = stored->__get(_g).StaticCast< ::Array< ::Dynamic> >();
+HXDLIN(1160)						_g = (_g + 1);
+HXLINE(1161)						if (::hx::IsNotNull( messages )) {
+HXLINE(1162)							int _g1 = 0;
+HXDLIN(1162)							while((_g1 < messages->length)){
+HXLINE(1162)								 ::snikket::ChatMessage message = messages->__get(_g1).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1162)								_g1 = (_g1 + 1);
+HXLINE(1163)								_gthis->client->notifySyncMessageHandlers(message);
+HXLINE(1164)								bool _hx_tmp;
+HXDLIN(1164)								if (::hx::IsNotNull( message )) {
+HXLINE(1164)									::String _hx_tmp1 = message->chatId();
+HXDLIN(1164)									_hx_tmp = (_hx_tmp1 == _gthis->chatId);
             								}
             								else {
-HXLINE(1156)									_hx_tmp = false;
+HXLINE(1164)									_hx_tmp = false;
             								}
-HXDLIN(1156)								if (_hx_tmp) {
-HXLINE(1156)									chatMessages->push(message);
+HXDLIN(1164)								if (_hx_tmp) {
+HXLINE(1164)									chatMessages->push(message);
             								}
-HXLINE(1157)								if ((chatMessages->length > 1000)) {
-HXLINE(1157)									chatMessages->shift().StaticCast<  ::snikket::ChatMessage >();
+HXLINE(1165)								if ((chatMessages->length > 1000)) {
+HXLINE(1165)									chatMessages->shift().StaticCast<  ::snikket::ChatMessage >();
             								}
             							}
             						}
             					}
             				}
-HXLINE(1161)				if (_gthis->sync->hasMore()) {
-HXLINE(1162)					_gthis->sync->fetchNext();
+HXLINE(1169)				if (_gthis->sync->hasMore()) {
+HXLINE(1170)					_gthis->sync->fetchNext();
             				}
             				else {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_6, ::snikket::Channel,_gthis) HXARGC(1)
             					bool _hx_run( ::snikket::ChatMessage m){
-            						HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1180_doSync)
-HXLINE(1180)						::String m1 = m->serverId;
-HXDLIN(1180)						if ((m1 != _gthis->readUpTo())) {
-HXLINE(1180)							return !(m->isIncoming());
+            						HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1188_doSync)
+HXLINE(1188)						::String m1 = m->serverId;
+HXDLIN(1188)						if ((m1 != _gthis->readUpTo())) {
+HXLINE(1188)							return !(m->isIncoming());
             						}
             						else {
-HXLINE(1180)							return true;
+HXLINE(1188)							return true;
             						}
-HXDLIN(1180)						return false;
+HXDLIN(1188)						return false;
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1164)					_gthis->inSync = true;
-HXLINE(1165)					_gthis->sync = null();
-HXLINE(1166)					 ::snikket::ChatMessage lastFromSync = chatMessages->__get((chatMessages->length - 1)).StaticCast<  ::snikket::ChatMessage >();
-HXLINE(1167)					bool _hx_tmp2;
-HXDLIN(1167)					if (::hx::IsNotNull( lastFromSync )) {
-HXLINE(1167)						if (::hx::IsNotNull( _gthis->lastMessageTimestamp() )) {
-HXLINE(1167)							::String lastFromSync1 = lastFromSync->timestamp;
-HXDLIN(1167)							_hx_tmp2 = (::Reflect_obj::compare(lastFromSync1,_gthis->lastMessageTimestamp()) > 0);
+HXLINE(1172)					_gthis->inSync = true;
+HXLINE(1173)					_gthis->sync = null();
+HXLINE(1174)					 ::snikket::ChatMessage lastFromSync = chatMessages->__get((chatMessages->length - 1)).StaticCast<  ::snikket::ChatMessage >();
+HXLINE(1175)					bool _hx_tmp2;
+HXDLIN(1175)					if (::hx::IsNotNull( lastFromSync )) {
+HXLINE(1175)						if (::hx::IsNotNull( _gthis->lastMessageTimestamp() )) {
+HXLINE(1175)							::String lastFromSync1 = lastFromSync->timestamp;
+HXDLIN(1175)							_hx_tmp2 = (::Reflect_obj::compare(lastFromSync1,_gthis->lastMessageTimestamp()) > 0);
             						}
             						else {
-HXLINE(1167)							_hx_tmp2 = true;
+HXLINE(1175)							_hx_tmp2 = true;
             						}
             					}
             					else {
-HXLINE(1167)						_hx_tmp2 = false;
+HXLINE(1175)						_hx_tmp2 = false;
             					}
-HXDLIN(1167)					if (_hx_tmp2) {
-HXLINE(1168)						_gthis->setLastMessage(lastFromSync);
-HXLINE(1169)						_gthis->client->sortChats();
+HXDLIN(1175)					if (_hx_tmp2) {
+HXLINE(1176)						_gthis->setLastMessage(lastFromSync);
+HXLINE(1177)						_gthis->client->sortChats();
             					}
-HXLINE(1171)					 ::haxe::ds::StringMap serverIds =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE(1172)					::Array< ::Dynamic> dedupedMessages = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1173)					chatMessages->reverse();
-HXLINE(1174)					{
-HXLINE(1174)						int _g2 = 0;
-HXDLIN(1174)						while((_g2 < chatMessages->length)){
-HXLINE(1174)							 ::snikket::ChatMessage m = chatMessages->__get(_g2).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1174)							_g2 = (_g2 + 1);
-HXLINE(1175)							 ::Dynamic tmp = serverIds->get(m->serverId);
-HXDLIN(1175)							bool _hx_tmp3;
-HXDLIN(1175)							if (::hx::IsNotNull( tmp )) {
-HXLINE(1175)								_hx_tmp3 = ( (bool)(tmp) );
+HXLINE(1179)					 ::haxe::ds::StringMap serverIds =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE(1180)					::Array< ::Dynamic> dedupedMessages = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1181)					chatMessages->reverse();
+HXLINE(1182)					{
+HXLINE(1182)						int _g2 = 0;
+HXDLIN(1182)						while((_g2 < chatMessages->length)){
+HXLINE(1182)							 ::snikket::ChatMessage m = chatMessages->__get(_g2).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1182)							_g2 = (_g2 + 1);
+HXLINE(1183)							 ::Dynamic tmp = serverIds->get(m->serverId);
+HXDLIN(1183)							bool _hx_tmp3;
+HXDLIN(1183)							if (::hx::IsNotNull( tmp )) {
+HXLINE(1183)								_hx_tmp3 = ( (bool)(tmp) );
             							}
             							else {
-HXLINE(1175)								_hx_tmp3 = false;
+HXLINE(1183)								_hx_tmp3 = false;
             							}
-HXDLIN(1175)							if (!(_hx_tmp3)) {
-HXLINE(1176)								dedupedMessages->unshift(m);
-HXLINE(1177)								serverIds->set(m->serverId,true);
+HXDLIN(1183)							if (!(_hx_tmp3)) {
+HXLINE(1184)								dedupedMessages->unshift(m);
+HXLINE(1185)								serverIds->set(m->serverId,true);
             							}
             						}
             					}
-HXLINE(1180)					int readIndex = ::Lambda_obj::findIndex(dedupedMessages, ::Dynamic(new _hx_Closure_6(_gthis)));
-HXLINE(1181)					if ((readIndex < 0)) {
-HXLINE(1182)						 ::snikket::Channel _gthis1 = _gthis;
-HXDLIN(1182)						int _hx_tmp4 = _gthis->unreadCount();
-HXDLIN(1182)						_gthis1->setUnreadCount((_hx_tmp4 + dedupedMessages->length));
+HXLINE(1188)					int readIndex = ::Lambda_obj::findIndex(dedupedMessages, ::Dynamic(new _hx_Closure_6(_gthis)));
+HXLINE(1189)					if ((readIndex < 0)) {
+HXLINE(1190)						 ::snikket::Channel _gthis1 = _gthis;
+HXDLIN(1190)						int _hx_tmp4 = _gthis->unreadCount();
+HXDLIN(1190)						_gthis1->setUnreadCount((_hx_tmp4 + dedupedMessages->length));
             					}
             					else {
-HXLINE(1184)						_gthis->setUnreadCount(((dedupedMessages->length - readIndex) - 1));
+HXLINE(1192)						_gthis->setUnreadCount(((dedupedMessages->length - readIndex) - 1));
             					}
-HXLINE(1186)					_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXLINE(1194)					_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             				}
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1126_doSync)
-HXLINE(1127)			::Array< ::Dynamic> promises = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1128)			::Array< ::Dynamic> pageChatMessages = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1129)			{
-HXLINE(1129)				int _g = 0;
-HXDLIN(1129)				::Array< ::Dynamic> _g1 = ( (::Array< ::Dynamic>)(messageList->__Field(HX_("messages",cc,d8,fd,34),::hx::paccDynamic)) );
-HXDLIN(1129)				while((_g < _g1->length)){
-HXLINE(1129)					 ::snikket::MessageStanza m = _g1->__get(_g).StaticCast<  ::snikket::MessageStanza >();
-HXDLIN(1129)					_g = (_g + 1);
-HXLINE(1130)					switch((int)(m->_hx_getIndex())){
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1134_doSync)
+HXLINE(1135)			::Array< ::Dynamic> promises = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1136)			::Array< ::Dynamic> pageChatMessages = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1137)			{
+HXLINE(1137)				int _g = 0;
+HXDLIN(1137)				::Array< ::Dynamic> _g1 = ( (::Array< ::Dynamic>)(messageList->__Field(HX_("messages",cc,d8,fd,34),::hx::paccDynamic)) );
+HXDLIN(1137)				while((_g < _g1->length)){
+HXLINE(1137)					 ::snikket::MessageStanza m = _g1->__get(_g).StaticCast<  ::snikket::MessageStanza >();
+HXDLIN(1137)					_g = (_g + 1);
+HXLINE(1138)					switch((int)(m->_hx_getIndex())){
             						case (int)1: {
-HXLINE(1131)							 ::snikket::ChatMessage message = m->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1131)							{
-HXLINE(1132)								{
-HXLINE(1132)									int _g2 = 0;
-HXDLIN(1132)									::Array< ::Dynamic> _g3 = message->inlineHashReferences();
-HXDLIN(1132)									while((_g2 < _g3->length)){
-HXLINE(1132)										 ::snikket::Hash hash = _g3->__get(_g2).StaticCast<  ::snikket::Hash >();
-HXDLIN(1132)										_g2 = (_g2 + 1);
-HXLINE(1133)										_gthis->client->fetchMediaByHash(::Array_obj< ::Dynamic>::__new(1)->init(0,hash),::Array_obj< ::Dynamic>::__new(1)->init(0,message->from));
+HXLINE(1139)							 ::snikket::ChatMessage message = m->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1139)							{
+HXLINE(1140)								{
+HXLINE(1140)									int _g2 = 0;
+HXDLIN(1140)									::Array< ::Dynamic> _g3 = message->inlineHashReferences();
+HXDLIN(1140)									while((_g2 < _g3->length)){
+HXLINE(1140)										 ::snikket::Hash hash = _g3->__get(_g2).StaticCast<  ::snikket::Hash >();
+HXDLIN(1140)										_g2 = (_g2 + 1);
+HXLINE(1141)										_gthis->client->fetchMediaByHash(::Array_obj< ::Dynamic>::__new(1)->init(0,hash),::Array_obj< ::Dynamic>::__new(1)->init(0,message->from));
             									}
             								}
-HXLINE(1135)								pageChatMessages->push(message);
+HXLINE(1143)								pageChatMessages->push(message);
             							}
             						}
             						break;
@@ -684,18 +684,18 @@ HXLINE(1135)								pageChatMessages->push(message);
             							void _hx_run( ::Dynamic resolve, ::Dynamic reject){
             								HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::Dynamic,resolve) HXARGC(1)
             								void _hx_run( ::snikket::ChatMessage _){
-            									HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1142_doSync)
-HXLINE(1142)									resolve(null());
+            									HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1150_doSync)
+HXLINE(1150)									resolve(null());
             								}
             								HX_END_LOCAL_FUNC1((void))
 
-            								HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1142_doSync)
-HXLINE(1142)								::thenshim::_Promise::Promise_Impl__obj::then(_gthis->client->moderateMessage(action), ::Dynamic(new _hx_Closure_1(resolve)),null());
+            								HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1150_doSync)
+HXLINE(1150)								::thenshim::_Promise::Promise_Impl__obj::then(_gthis->client->moderateMessage(action), ::Dynamic(new _hx_Closure_1(resolve)),null());
             							}
             							HX_END_LOCAL_FUNC2((void))
 
-HXLINE(1140)							 ::snikket::ModerationAction action = m->_hx_getObject(0).StaticCast<  ::snikket::ModerationAction >();
-HXLINE(1141)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_2(_gthis,action))));
+HXLINE(1148)							 ::snikket::ModerationAction action = m->_hx_getObject(0).StaticCast<  ::snikket::ModerationAction >();
+HXLINE(1149)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_2(_gthis,action))));
             						}
             						break;
             						case (int)3: {
@@ -703,20 +703,20 @@ HXLINE(1141)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new(
             							void _hx_run( ::Dynamic resolve, ::Dynamic reject){
             								HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_3, ::Dynamic,resolve) HXARGC(1)
             								void _hx_run( ::snikket::ChatMessage _){
-            									HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1138_doSync)
-HXLINE(1138)									resolve(null());
+            									HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1146_doSync)
+HXLINE(1146)									resolve(null());
             								}
             								HX_END_LOCAL_FUNC1((void))
 
-            								HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1138_doSync)
-HXLINE(1138)								::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN(1138)								::String _hx_tmp = _gthis->client->accountId();
-HXDLIN(1138)								::snikket::Persistence_obj::storeReaction(_gthis1,_hx_tmp,update, ::Dynamic(new _hx_Closure_3(resolve)));
+            								HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1146_doSync)
+HXLINE(1146)								::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN(1146)								::String _hx_tmp = _gthis->client->accountId();
+HXDLIN(1146)								::snikket::Persistence_obj::storeReaction(_gthis1,_hx_tmp,update, ::Dynamic(new _hx_Closure_3(resolve)));
             							}
             							HX_END_LOCAL_FUNC2((void))
 
-HXLINE(1136)							 ::snikket::ReactionUpdate update = m->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
-HXLINE(1137)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_4(_gthis,update))));
+HXLINE(1144)							 ::snikket::ReactionUpdate update = m->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
+HXLINE(1145)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_4(_gthis,update))));
             						}
             						break;
             						default:{
@@ -724,70 +724,70 @@ HXLINE(1137)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new(
             					}
             				}
             			}
-HXLINE(1148)			promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_5(_gthis,pageChatMessages))));
-HXLINE(1151)			::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::PromiseTools_obj::all(promises), ::Dynamic(new _hx_Closure_7(_gthis,chatMessages)),null());
+HXLINE(1156)			promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_5(_gthis,pageChatMessages))));
+HXLINE(1159)			::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::PromiseTools_obj::all(promises), ::Dynamic(new _hx_Closure_7(_gthis,chatMessages)),null());
             		}
             		HX_END_LOCAL_FUNC1((void))
 
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_9, ::snikket::Channel,_gthis,::String,lastId) HXARGC(1)
             		void _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1190_doSync)
-HXLINE(1191)			_gthis->sync = null();
-HXLINE(1192)			if (::hx::IsNotNull( lastId )) {
-HXLINE(1194)				_gthis->doSync(null());
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1198_doSync)
+HXLINE(1199)			_gthis->sync = null();
+HXLINE(1200)			if (::hx::IsNotNull( lastId )) {
+HXLINE(1202)				_gthis->doSync(null());
             			}
             			else {
-HXLINE(1196)				::haxe::Log_obj::trace(HX_("SYNC failed",e2,ec,6f,fa), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE(1204)				::haxe::Log_obj::trace(HX_("SYNC failed",e2,ec,6f,fa), ::Dynamic(::hx::Anon_obj::Create(5)
             					->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Channel",b2,3f,68,db))
             					->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(2)->init(0,_gthis->chatId)->init(1,stanza))
             					->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("doSync",86,5f,63,1c))
             					->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Chat.hx",f4,6b,61,18))
-            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1196)));
+            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1204)));
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1103_doSync)
-HXDLIN(1103)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1104)		if (!(this->disco->features->contains(HX_("urn:xmpp:mam:2",f5,ef,8c,da)))) {
-HXLINE(1105)			this->inSync = true;
-HXLINE(1106)			return;
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1111_doSync)
+HXDLIN(1111)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1112)		if (!(this->disco->features->contains(HX_("urn:xmpp:mam:2",f5,ef,8c,da)))) {
+HXLINE(1113)			this->inSync = true;
+HXLINE(1114)			return;
             		}
-HXLINE(1108)		if (::hx::IsNotNull( this->sync )) {
-HXLINE(1108)			return;
+HXLINE(1116)		if (::hx::IsNotNull( this->sync )) {
+HXLINE(1116)			return;
             		}
-HXLINE(1110)		::String threeDaysAgo = ::snikket::Date_obj::format(::Date_obj::fromTime((::Date_obj::now()->getTime() + ((Float)-259200000.))));
-HXLINE(1116)		 ::Dynamic _hx_tmp;
-HXDLIN(1116)		if (::hx::IsNull( lastId )) {
-HXLINE(1116)			_hx_tmp =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1118)		::String threeDaysAgo = ::snikket::Date_obj::format(::Date_obj::fromTime((::Date_obj::now()->getTime() + ((Float)-259200000.))));
+HXLINE(1124)		 ::Dynamic _hx_tmp;
+HXDLIN(1124)		if (::hx::IsNull( lastId )) {
+HXLINE(1124)			_hx_tmp =  ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("startTime",8f,45,f0,05),threeDaysAgo));
             		}
             		else {
-HXLINE(1116)			_hx_tmp =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1124)			_hx_tmp =  ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("after",1c,66,a2,1d),lastId))));
             		}
-HXLINE(1113)		this->sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,this->client,this->stream,_hx_tmp,this->chatId);
-HXLINE(1119)		this->sync->setNewestPageFirst(false);
-HXLINE(1120)		this->sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(1125)		::Array< ::Dynamic> chatMessages = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1126)		this->sync->onMessages( ::Dynamic(new _hx_Closure_8(_gthis,chatMessages)));
-HXLINE(1190)		this->sync->onError( ::Dynamic(new _hx_Closure_9(_gthis,lastId)));
-HXLINE(1199)		this->sync->fetchNext();
+HXLINE(1121)		this->sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,this->client,this->stream,_hx_tmp,this->chatId);
+HXLINE(1127)		this->sync->setNewestPageFirst(false);
+HXLINE(1128)		this->sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE(1133)		::Array< ::Dynamic> chatMessages = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1134)		this->sync->onMessages( ::Dynamic(new _hx_Closure_8(_gthis,chatMessages)));
+HXLINE(1198)		this->sync->onError( ::Dynamic(new _hx_Closure_9(_gthis,lastId)));
+HXLINE(1207)		this->sync->fetchNext();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Channel_obj,doSync,(void))
 
 bool Channel_obj::isTrusted(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1203_isTrusted)
-HXDLIN(1203)		return (this->uiState != 2);
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1211_isTrusted)
+HXDLIN(1211)		return (this->uiState != 2);
             	}
 
 
 bool Channel_obj::isPrivate(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1207_isPrivate)
-HXDLIN(1207)		return this->disco->features->contains(HX_("muc_membersonly",41,e9,70,b7));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1215_isPrivate)
+HXDLIN(1215)		return this->disco->features->contains(HX_("muc_membersonly",41,e9,70,b7));
             	}
 
 
@@ -796,154 +796,154 @@ HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,isPrivate,return )
 void Channel_obj::refreshDisco( ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis, ::snikket::queries::DiscoInfoGet,discoGet, ::Dynamic,callback) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1213_refreshDisco)
-HXLINE(1214)			if (::hx::IsNotNull( discoGet->getResult() )) {
-HXLINE(1215)				bool setupNotifications;
-HXDLIN(1215)				if (::hx::IsNull( _gthis->disco )) {
-HXLINE(1215)					setupNotifications = ::hx::IsNull( _gthis->notificationSettings );
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1221_refreshDisco)
+HXLINE(1222)			if (::hx::IsNotNull( discoGet->getResult() )) {
+HXLINE(1223)				bool setupNotifications;
+HXDLIN(1223)				if (::hx::IsNull( _gthis->disco )) {
+HXLINE(1223)					setupNotifications = ::hx::IsNull( _gthis->notificationSettings );
             				}
             				else {
-HXLINE(1215)					setupNotifications = false;
+HXLINE(1223)					setupNotifications = false;
             				}
-HXLINE(1216)				_gthis->disco = discoGet->getResult();
-HXLINE(1217)				bool _hx_tmp;
-HXDLIN(1217)				if (setupNotifications) {
-HXLINE(1217)					_hx_tmp = !(_gthis->isPrivate());
+HXLINE(1224)				_gthis->disco = discoGet->getResult();
+HXLINE(1225)				bool _hx_tmp;
+HXDLIN(1225)				if (setupNotifications) {
+HXLINE(1225)					_hx_tmp = !(_gthis->isPrivate());
             				}
             				else {
-HXLINE(1217)					_hx_tmp = false;
+HXLINE(1225)					_hx_tmp = false;
             				}
-HXDLIN(1217)				if (_hx_tmp) {
-HXLINE(1217)					_gthis->notificationSettings =  ::Dynamic(::hx::Anon_obj::Create(2)
+HXDLIN(1225)				if (_hx_tmp) {
+HXLINE(1225)					_gthis->notificationSettings =  ::Dynamic(::hx::Anon_obj::Create(2)
             						->setFixed(0,HX_("mention",ea,9e,bf,b9),true)
             						->setFixed(1,HX_("reply",2a,09,c6,e6),false));
             				}
-HXLINE(1218)				::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN(1218)				::snikket::Persistence_obj::storeCaps(_gthis1,discoGet->getResult());
-HXLINE(1219)				::Dynamic _gthis2 = _gthis->persistence;
-HXDLIN(1219)				::String _hx_tmp1 = _gthis->client->accountId();
-HXDLIN(1219)				::snikket::Persistence_obj::storeChats(_gthis2,_hx_tmp1,::Array_obj< ::Dynamic>::__new(1)->init(0,_gthis));
+HXLINE(1226)				::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN(1226)				::snikket::Persistence_obj::storeCaps(_gthis1,discoGet->getResult());
+HXLINE(1227)				::Dynamic _gthis2 = _gthis->persistence;
+HXDLIN(1227)				::String _hx_tmp1 = _gthis->client->accountId();
+HXDLIN(1227)				::snikket::Persistence_obj::storeChats(_gthis2,_hx_tmp1,::Array_obj< ::Dynamic>::__new(1)->init(0,_gthis));
             			}
-HXLINE(1221)			if (::hx::IsNotNull( callback )) {
-HXLINE(1221)				callback();
+HXLINE(1229)			if (::hx::IsNotNull( callback )) {
+HXLINE(1229)				callback();
             			}
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1211_refreshDisco)
-HXDLIN(1211)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1212)		 ::snikket::queries::DiscoInfoGet discoGet =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,this->chatId,null());
-HXLINE(1213)		discoGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,discoGet,callback)));
-HXLINE(1223)		this->client->sendQuery(discoGet);
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1219_refreshDisco)
+HXDLIN(1219)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1220)		 ::snikket::queries::DiscoInfoGet discoGet =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,this->chatId,null());
+HXLINE(1221)		discoGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,discoGet,callback)));
+HXLINE(1231)		this->client->sendQuery(discoGet);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Channel_obj,refreshDisco,(void))
 
 ::String Channel_obj::preview(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1226_preview)
-HXLINE(1227)		if (::hx::IsNull( this->lastMessage )) {
-HXLINE(1227)			return this->super::preview();
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1234_preview)
+HXLINE(1235)		if (::hx::IsNull( this->lastMessage )) {
+HXLINE(1235)			return this->super::preview();
             		}
-HXLINE(1229)		::String _hx_tmp = (this->getParticipantDetails(this->lastMessage->senderId)->displayName + HX_(": ",a6,32,00,00));
-HXDLIN(1229)		return (_hx_tmp + this->super::preview());
+HXLINE(1237)		::String _hx_tmp = (this->getParticipantDetails(this->lastMessage->senderId)->displayName + HX_(": ",a6,32,00,00));
+HXDLIN(1237)		return (_hx_tmp + this->super::preview());
             	}
 
 
 bool Channel_obj::livePresence(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1233_livePresence)
-HXLINE(1234)		if (this->forceLive) {
-HXLINE(1234)			return true;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1241_livePresence)
+HXLINE(1242)		if (this->forceLive) {
+HXLINE(1242)			return true;
             		}
-HXLINE(1236)		return ::hx::IsNotNull( this->_nickInUse );
+HXLINE(1244)		return ::hx::IsNotNull( this->_nickInUse );
             	}
 
 
 bool Channel_obj::syncing(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1240_syncing)
-HXDLIN(1240)		if (this->inSync) {
-HXDLIN(1240)			return !(this->livePresence());
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1248_syncing)
+HXDLIN(1248)		if (this->inSync) {
+HXDLIN(1248)			return !(this->livePresence());
             		}
             		else {
-HXDLIN(1240)			return true;
+HXDLIN(1248)			return true;
             		}
-HXDLIN(1240)		return false;
+HXDLIN(1248)		return false;
             	}
 
 
 bool Channel_obj::canAudioCall(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1244_canAudioCall)
-HXDLIN(1244)		 ::snikket::Caps tmp = this->disco;
-HXDLIN(1244)		::Array< ::String > tmp1;
-HXDLIN(1244)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1244)			tmp1 = tmp->features;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1252_canAudioCall)
+HXDLIN(1252)		 ::snikket::Caps tmp = this->disco;
+HXDLIN(1252)		::Array< ::String > tmp1;
+HXDLIN(1252)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1252)			tmp1 = tmp->features;
             		}
             		else {
-HXDLIN(1244)			tmp1 = null();
+HXDLIN(1252)			tmp1 = null();
             		}
-HXDLIN(1244)		 ::Dynamic tmp2;
-HXDLIN(1244)		if (::hx::IsNotNull( tmp1 )) {
-HXDLIN(1244)			tmp2 = tmp1->contains(HX_("urn:xmpp:jingle:apps:rtp:audio",0f,8b,54,6c));
+HXDLIN(1252)		 ::Dynamic tmp2;
+HXDLIN(1252)		if (::hx::IsNotNull( tmp1 )) {
+HXDLIN(1252)			tmp2 = tmp1->contains(HX_("urn:xmpp:jingle:apps:rtp:audio",0f,8b,54,6c));
             		}
             		else {
-HXDLIN(1244)			tmp2 = null();
+HXDLIN(1252)			tmp2 = null();
             		}
-HXDLIN(1244)		if (::hx::IsNotNull( tmp2 )) {
-HXDLIN(1244)			return ( (bool)(tmp2) );
+HXDLIN(1252)		if (::hx::IsNotNull( tmp2 )) {
+HXDLIN(1252)			return ( (bool)(tmp2) );
             		}
             		else {
-HXDLIN(1244)			return false;
+HXDLIN(1252)			return false;
             		}
-HXDLIN(1244)		return false;
+HXDLIN(1252)		return false;
             	}
 
 
 bool Channel_obj::canVideoCall(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1248_canVideoCall)
-HXDLIN(1248)		 ::snikket::Caps tmp = this->disco;
-HXDLIN(1248)		::Array< ::String > tmp1;
-HXDLIN(1248)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1248)			tmp1 = tmp->features;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1256_canVideoCall)
+HXDLIN(1256)		 ::snikket::Caps tmp = this->disco;
+HXDLIN(1256)		::Array< ::String > tmp1;
+HXDLIN(1256)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1256)			tmp1 = tmp->features;
             		}
             		else {
-HXDLIN(1248)			tmp1 = null();
+HXDLIN(1256)			tmp1 = null();
             		}
-HXDLIN(1248)		 ::Dynamic tmp2;
-HXDLIN(1248)		if (::hx::IsNotNull( tmp1 )) {
-HXDLIN(1248)			tmp2 = tmp1->contains(HX_("urn:xmpp:jingle:apps:rtp:video",b4,26,d0,7b));
+HXDLIN(1256)		 ::Dynamic tmp2;
+HXDLIN(1256)		if (::hx::IsNotNull( tmp1 )) {
+HXDLIN(1256)			tmp2 = tmp1->contains(HX_("urn:xmpp:jingle:apps:rtp:video",b4,26,d0,7b));
             		}
             		else {
-HXDLIN(1248)			tmp2 = null();
+HXDLIN(1256)			tmp2 = null();
             		}
-HXDLIN(1248)		if (::hx::IsNotNull( tmp2 )) {
-HXDLIN(1248)			return ( (bool)(tmp2) );
+HXDLIN(1256)		if (::hx::IsNotNull( tmp2 )) {
+HXDLIN(1256)			return ( (bool)(tmp2) );
             		}
             		else {
-HXDLIN(1248)			return false;
+HXDLIN(1256)			return false;
             		}
-HXDLIN(1248)		return false;
+HXDLIN(1256)		return false;
             	}
 
 
 ::String Channel_obj::nickInUse(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1252_nickInUse)
-HXDLIN(1252)		::String tmp = this->_nickInUse;
-HXDLIN(1252)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1252)			return tmp;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1260_nickInUse)
+HXDLIN(1260)		::String tmp = this->_nickInUse;
+HXDLIN(1260)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1260)			return tmp;
             		}
             		else {
-HXDLIN(1252)			return this->client->displayName();
+HXDLIN(1260)			return this->client->displayName();
             		}
-HXDLIN(1252)		return null();
+HXDLIN(1260)		return null();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,nickInUse,return )
 
  ::snikket::JID Channel_obj::getFullJid(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1256_getFullJid)
-HXDLIN(1256)		 ::snikket::JID _hx_tmp = ::snikket::JID_obj::parse(this->chatId);
-HXDLIN(1256)		return _hx_tmp->withResource(this->nickInUse());
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1264_getFullJid)
+HXDLIN(1264)		 ::snikket::JID _hx_tmp = ::snikket::JID_obj::parse(this->chatId);
+HXDLIN(1264)		return _hx_tmp->withResource(this->nickInUse());
             	}
 
 
@@ -952,215 +952,215 @@ HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,getFullJid,return )
 ::Array< ::String > Channel_obj::getParticipants(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(0)
             		 ::Dynamic _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1262_getParticipants)
-HXLINE(1262)			return _gthis->presence->keys();
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1270_getParticipants)
+HXLINE(1270)			return _gthis->presence->keys();
             		}
             		HX_END_LOCAL_FUNC0(return)
 
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             		bool _hx_run(::String resource){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1262_getParticipants)
-HXLINE(1262)			return ::hx::IsNotNull( resource );
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1270_getParticipants)
+HXLINE(1270)			return ::hx::IsNotNull( resource );
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1260_getParticipants)
-HXDLIN(1260)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1261)		 ::snikket::JID jid = ::snikket::JID_obj::parse(this->chatId);
-HXLINE(1262)		::Array< ::String > _this = ::Lambda_obj::filter( ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1268_getParticipants)
+HXDLIN(1268)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1269)		 ::snikket::JID jid = ::snikket::JID_obj::parse(this->chatId);
+HXLINE(1270)		::Array< ::String > _this = ::Lambda_obj::filter( ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("iterator",ee,49,9a,93), ::Dynamic(new _hx_Closure_0(_gthis)))), ::Dynamic(new _hx_Closure_1()));
-HXDLIN(1262)		::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
-HXDLIN(1262)		{
-HXLINE(1262)			int _g = 0;
-HXDLIN(1262)			int _g1 = _this->length;
-HXDLIN(1262)			while((_g < _g1)){
-HXLINE(1262)				_g = (_g + 1);
-HXDLIN(1262)				int i = (_g - 1);
-HXDLIN(1262)				{
-HXLINE(1262)					::String resource = ( (::String)(_hx_array_unsafe_get(_this,i)) );
-HXDLIN(1262)					::String inValue =  ::snikket::JID_obj::__alloc( HX_CTX ,jid->node,jid->domain,resource,null())->asString();
-HXDLIN(1262)					result->__unsafe_set(i,inValue);
+HXDLIN(1270)		::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
+HXDLIN(1270)		{
+HXLINE(1270)			int _g = 0;
+HXDLIN(1270)			int _g1 = _this->length;
+HXDLIN(1270)			while((_g < _g1)){
+HXLINE(1270)				_g = (_g + 1);
+HXDLIN(1270)				int i = (_g - 1);
+HXDLIN(1270)				{
+HXLINE(1270)					::String resource = ( (::String)(_hx_array_unsafe_get(_this,i)) );
+HXDLIN(1270)					::String inValue =  ::snikket::JID_obj::__alloc( HX_CTX ,jid->node,jid->domain,resource,null())->asString();
+HXDLIN(1270)					result->__unsafe_set(i,inValue);
             				}
             			}
             		}
-HXDLIN(1262)		return result;
+HXDLIN(1270)		return result;
             	}
 
 
  ::snikket::Participant Channel_obj::getParticipantDetails(::String participantId){
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1267_getParticipantDetails)
-HXDLIN(1267)		if ((participantId == this->getFullJid()->asString())) {
-HXLINE(1268)			 ::snikket::Client chat = this->client;
-HXDLIN(1268)			 ::snikket::DirectChat chat1 = chat->getDirectChat(this->client->accountId(),false);
-HXLINE(1269)			::String _hx_tmp = this->client->displayName();
-HXDLIN(1269)			::String _hx_tmp1 = chat1->getPhoto();
-HXDLIN(1269)			return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp,_hx_tmp1,chat1->getPlaceholder(),true);
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1275_getParticipantDetails)
+HXDLIN(1275)		if ((participantId == this->getFullJid()->asString())) {
+HXLINE(1276)			 ::snikket::Client chat = this->client;
+HXDLIN(1276)			 ::snikket::DirectChat chat1 = chat->getDirectChat(this->client->accountId(),false);
+HXLINE(1277)			::String _hx_tmp = this->client->displayName();
+HXDLIN(1277)			::String _hx_tmp1 = chat1->getPhoto();
+HXDLIN(1277)			return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp,_hx_tmp1,chat1->getPlaceholder(),true);
             		}
             		else {
-HXLINE(1271)			::String nick = ::snikket::JID_obj::parse(participantId)->resource;
-HXLINE(1272)			::String placeholderUri;
-HXDLIN(1272)			if (::hx::IsNull( nick )) {
-HXLINE(1272)				placeholderUri = HX_(" ",20,00,00,00);
+HXLINE(1279)			::String nick = ::snikket::JID_obj::parse(participantId)->resource;
+HXLINE(1280)			::String placeholderUri;
+HXDLIN(1280)			if (::hx::IsNull( nick )) {
+HXLINE(1280)				placeholderUri = HX_(" ",20,00,00,00);
             			}
             			else {
-HXLINE(1272)				placeholderUri = nick.charAt(0);
+HXLINE(1280)				placeholderUri = nick.charAt(0);
             			}
-HXDLIN(1272)			::String placeholderUri1 = ::snikket::Color_obj::defaultPhoto(participantId,placeholderUri);
-HXLINE(1273)			::String tmp = nick;
-HXDLIN(1273)			::String _hx_tmp2;
-HXDLIN(1273)			if (::hx::IsNotNull( tmp )) {
-HXLINE(1273)				_hx_tmp2 = tmp;
+HXDLIN(1280)			::String placeholderUri1 = ::snikket::Color_obj::defaultPhoto(participantId,placeholderUri);
+HXLINE(1281)			::String tmp = nick;
+HXDLIN(1281)			::String _hx_tmp2;
+HXDLIN(1281)			if (::hx::IsNotNull( tmp )) {
+HXLINE(1281)				_hx_tmp2 = tmp;
             			}
             			else {
-HXLINE(1273)				_hx_tmp2 = HX_("",00,00,00,00);
+HXLINE(1281)				_hx_tmp2 = HX_("",00,00,00,00);
             			}
-HXDLIN(1273)			return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp2,null(),placeholderUri1,false);
+HXDLIN(1281)			return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp2,null(),placeholderUri1,false);
             		}
-HXLINE(1267)		return null();
+HXLINE(1275)		return null();
             	}
 
 
 void Channel_obj::getMessagesBefore(::String beforeId,::String beforeTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis,::String,beforeId, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1280_getMessagesBefore)
-HXLINE(1280)			if ((messages->length > 0)) {
-HXLINE(1281)				handler(messages);
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1288_getMessagesBefore)
+HXLINE(1288)			if ((messages->length > 0)) {
+HXLINE(1289)				handler(messages);
             			}
             			else {
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(2)
             				 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza stanza){
-            					HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1286_getMessagesBefore)
-HXLINE(1287)					builder = _gthis->prepareIncomingMessage(builder,stanza);
-HXLINE(1288)					builder->syncPoint = false;
-HXLINE(1289)					return builder;
+            					HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1294_getMessagesBefore)
+HXLINE(1295)					builder = _gthis->prepareIncomingMessage(builder,stanza);
+HXLINE(1296)					builder->syncPoint = false;
+HXLINE(1297)					return builder;
             				}
             				HX_END_LOCAL_FUNC2(return)
 
-HXLINE(1283)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(0));
-HXLINE(1284)				if (::hx::IsNotNull( beforeId )) {
-HXLINE(1284)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1291)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(0));
+HXLINE(1292)				if (::hx::IsNotNull( beforeId )) {
+HXLINE(1292)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("before",7f,54,32,9a),beforeId)),::hx::paccDynamic);
             				}
-HXLINE(1285)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,_gthis->chatId);
-HXLINE(1286)				sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(1291)				_gthis->fetchFromSync(sync,handler);
+HXLINE(1293)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,_gthis->chatId);
+HXLINE(1294)				sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE(1299)				_gthis->fetchFromSync(sync,handler);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1278_getMessagesBefore)
-HXDLIN(1278)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1279)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1279)		::String _hx_tmp1 = this->client->accountId();
-HXDLIN(1279)		::snikket::Persistence_obj::getMessagesBefore(_hx_tmp,_hx_tmp1,this->chatId,beforeId,beforeTime, ::Dynamic(new _hx_Closure_1(_gthis,beforeId,handler)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1286_getMessagesBefore)
+HXDLIN(1286)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1287)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1287)		::String _hx_tmp1 = this->client->accountId();
+HXDLIN(1287)		::snikket::Persistence_obj::getMessagesBefore(_hx_tmp,_hx_tmp1,this->chatId,beforeId,beforeTime, ::Dynamic(new _hx_Closure_1(_gthis,beforeId,handler)));
             	}
 
 
 void Channel_obj::getMessagesAfter(::String afterId,::String afterTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis,::String,afterId, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1303_getMessagesAfter)
-HXLINE(1303)			if ((messages->length > 0)) {
-HXLINE(1304)				handler(messages);
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1311_getMessagesAfter)
+HXLINE(1311)			if ((messages->length > 0)) {
+HXLINE(1312)				handler(messages);
             			}
             			else {
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(2)
             				 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza stanza){
-            					HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1309_getMessagesAfter)
-HXLINE(1310)					builder = _gthis->prepareIncomingMessage(builder,stanza);
-HXLINE(1311)					builder->syncPoint = false;
-HXLINE(1312)					return builder;
+            					HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1317_getMessagesAfter)
+HXLINE(1318)					builder = _gthis->prepareIncomingMessage(builder,stanza);
+HXLINE(1319)					builder->syncPoint = false;
+HXLINE(1320)					return builder;
             				}
             				HX_END_LOCAL_FUNC2(return)
 
-HXLINE(1306)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(0));
-HXLINE(1307)				if (::hx::IsNotNull( afterId )) {
-HXLINE(1307)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1314)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(0));
+HXLINE(1315)				if (::hx::IsNotNull( afterId )) {
+HXLINE(1315)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("after",1c,66,a2,1d),afterId)),::hx::paccDynamic);
             				}
-HXLINE(1308)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,_gthis->chatId);
-HXLINE(1309)				sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(1314)				_gthis->fetchFromSync(sync,handler);
+HXLINE(1316)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,_gthis->chatId);
+HXLINE(1317)				sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE(1322)				_gthis->fetchFromSync(sync,handler);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1297_getMessagesAfter)
-HXDLIN(1297)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1298)		bool _hx_tmp;
-HXDLIN(1298)		::String afterId1 = afterId;
-HXDLIN(1298)		if ((afterId1 == this->lastMessageId())) {
-HXLINE(1298)			_hx_tmp = !(this->syncing());
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1305_getMessagesAfter)
+HXDLIN(1305)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1306)		bool _hx_tmp;
+HXDLIN(1306)		::String afterId1 = afterId;
+HXDLIN(1306)		if ((afterId1 == this->lastMessageId())) {
+HXLINE(1306)			_hx_tmp = !(this->syncing());
             		}
             		else {
-HXLINE(1298)			_hx_tmp = false;
+HXLINE(1306)			_hx_tmp = false;
             		}
-HXDLIN(1298)		if (_hx_tmp) {
-HXLINE(1299)			handler(::Array_obj< ::Dynamic>::__new(0));
-HXLINE(1300)			return;
+HXDLIN(1306)		if (_hx_tmp) {
+HXLINE(1307)			handler(::Array_obj< ::Dynamic>::__new(0));
+HXLINE(1308)			return;
             		}
-HXLINE(1302)		::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN(1302)		::String _hx_tmp2 = this->client->accountId();
-HXDLIN(1302)		::snikket::Persistence_obj::getMessagesAfter(_hx_tmp1,_hx_tmp2,this->chatId,afterId,afterTime, ::Dynamic(new _hx_Closure_1(_gthis,afterId,handler)));
+HXLINE(1310)		::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN(1310)		::String _hx_tmp2 = this->client->accountId();
+HXDLIN(1310)		::snikket::Persistence_obj::getMessagesAfter(_hx_tmp1,_hx_tmp2,this->chatId,afterId,afterTime, ::Dynamic(new _hx_Closure_1(_gthis,afterId,handler)));
             	}
 
 
 void Channel_obj::getMessagesAround(::String aroundId,::String aroundTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1322_getMessagesAround)
-HXLINE(1322)			if ((messages->length > 0)) {
-HXLINE(1323)				handler(messages);
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1330_getMessagesAround)
+HXLINE(1330)			if ((messages->length > 0)) {
+HXLINE(1331)				handler(messages);
             			}
             			else {
-HXLINE(1326)				handler(::Array_obj< ::Dynamic>::__new(0));
+HXLINE(1334)				handler(::Array_obj< ::Dynamic>::__new(0));
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1321_getMessagesAround)
-HXDLIN(1321)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1321)		::String _hx_tmp1 = this->client->accountId();
-HXDLIN(1321)		::snikket::Persistence_obj::getMessagesAround(_hx_tmp,_hx_tmp1,this->chatId,aroundId,aroundTime, ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1329_getMessagesAround)
+HXDLIN(1329)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1329)		::String _hx_tmp1 = this->client->accountId();
+HXDLIN(1329)		::snikket::Persistence_obj::getMessagesAround(_hx_tmp,_hx_tmp1,this->chatId,aroundId,aroundTime, ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
  ::snikket::ChatMessageBuilder Channel_obj::prepareIncomingMessage( ::snikket::ChatMessageBuilder message, ::snikket::Stanza stanza){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1332_prepareIncomingMessage)
-HXLINE(1333)		message->syncPoint = !(this->syncing());
-HXLINE(1334)		if ((message->type == 0)) {
-HXLINE(1334)			message->type = 3;
-            		}
-HXLINE(1335)		message->senderId = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
-HXLINE(1336)		::String _hx_tmp = message->get_senderId();
-HXDLIN(1336)		if ((_hx_tmp == this->getFullJid()->asString())) {
-HXLINE(1337)			message->recipients = message->replyTo;
-HXLINE(1338)			message->direction = 1;
-            		}
-HXLINE(1340)		return message;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1340_prepareIncomingMessage)
+HXLINE(1341)		message->syncPoint = !(this->syncing());
+HXLINE(1342)		if ((message->type == 0)) {
+HXLINE(1342)			message->type = 3;
+            		}
+HXLINE(1343)		message->senderId = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
+HXLINE(1344)		::String _hx_tmp = message->get_senderId();
+HXDLIN(1344)		if ((_hx_tmp == this->getFullJid()->asString())) {
+HXLINE(1345)			message->recipients = message->replyTo;
+HXLINE(1346)			message->direction = 1;
+            		}
+HXLINE(1348)		return message;
             	}
 
 
  ::snikket::ChatMessageBuilder Channel_obj::prepareOutgoingMessage( ::snikket::ChatMessageBuilder message){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1343_prepareOutgoingMessage)
-HXLINE(1344)		message->type = 2;
-HXLINE(1345)		::String tmp = message->timestamp;
-HXDLIN(1345)		::String _hx_tmp;
-HXDLIN(1345)		if (::hx::IsNotNull( tmp )) {
-HXLINE(1345)			_hx_tmp = tmp;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1351_prepareOutgoingMessage)
+HXLINE(1352)		message->type = 2;
+HXLINE(1353)		::String tmp = message->timestamp;
+HXDLIN(1353)		::String _hx_tmp;
+HXDLIN(1353)		if (::hx::IsNotNull( tmp )) {
+HXLINE(1353)			_hx_tmp = tmp;
             		}
             		else {
-HXLINE(1345)			_hx_tmp = ::snikket::Date_obj::format(::Date_obj::now());
-            		}
-HXDLIN(1345)		message->timestamp = _hx_tmp;
-HXLINE(1346)		message->direction = 1;
-HXLINE(1347)		message->from = this->client->jid;
-HXLINE(1348)		message->sender = this->getFullJid();
-HXLINE(1349)		message->replyTo = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->sender);
-HXLINE(1350)		message->to = ::snikket::JID_obj::parse(this->chatId);
-HXLINE(1351)		message->recipients = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->to);
-HXLINE(1352)		return message;
+HXLINE(1353)			_hx_tmp = ::snikket::Date_obj::format(::Date_obj::now());
+            		}
+HXDLIN(1353)		message->timestamp = _hx_tmp;
+HXLINE(1354)		message->direction = 1;
+HXLINE(1355)		message->from = this->client->jid;
+HXLINE(1356)		message->sender = this->getFullJid();
+HXLINE(1357)		message->replyTo = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->sender);
+HXLINE(1358)		message->to = ::snikket::JID_obj::parse(this->chatId);
+HXLINE(1359)		message->recipients = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->to);
+HXLINE(1360)		return message;
             	}
 
 
@@ -1169,131 +1169,131 @@ HX_DEFINE_DYNAMIC_FUNC1(Channel_obj,prepareOutgoingMessage,return )
 void Channel_obj::correctMessage(::String localId, ::snikket::ChatMessageBuilder message){
             		HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis,::Array< ::Dynamic>,message1,::String,localId,::String,toSendId) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> corrected){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1361_correctMessage)
-HXLINE(1362)			::Array< ::Dynamic> _hx_tmp;
-HXDLIN(1362)			 ::snikket::ChatMessage tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->__get(0).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1362)			::String _hx_tmp1;
-HXDLIN(1362)			if (::hx::IsNotNull( tmp )) {
-HXLINE(1362)				_hx_tmp1 = tmp->localId;
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1369_correctMessage)
+HXLINE(1370)			::Array< ::Dynamic> _hx_tmp;
+HXDLIN(1370)			 ::snikket::ChatMessage tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->__get(0).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1370)			::String _hx_tmp1;
+HXDLIN(1370)			if (::hx::IsNotNull( tmp )) {
+HXLINE(1370)				_hx_tmp1 = tmp->localId;
             			}
             			else {
-HXLINE(1362)				_hx_tmp1 = null();
+HXLINE(1370)				_hx_tmp1 = null();
             			}
-HXDLIN(1362)			if ((_hx_tmp1 == localId)) {
-HXLINE(1362)				_hx_tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions;
+HXDLIN(1370)			if ((_hx_tmp1 == localId)) {
+HXLINE(1370)				_hx_tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions;
             			}
             			else {
-HXLINE(1362)				_hx_tmp = ::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build());
+HXLINE(1370)				_hx_tmp = ::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build());
             			}
-HXDLIN(1362)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = _hx_tmp;
-HXLINE(1363)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = toSendId;
-HXLINE(1364)			 ::snikket::Client _gthis1 = _gthis->client;
-HXDLIN(1364)			_gthis1->sendStanza(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza());
-HXLINE(1365)			_gthis->client->notifyMessageHandlers(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
-HXLINE(1366)			 ::snikket::ChatMessage tmp1 = _gthis->lastMessage;
-HXDLIN(1366)			::String _hx_tmp2;
-HXDLIN(1366)			if (::hx::IsNotNull( tmp1 )) {
-HXLINE(1366)				_hx_tmp2 = tmp1->localId;
+HXDLIN(1370)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = _hx_tmp;
+HXLINE(1371)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = toSendId;
+HXLINE(1372)			 ::snikket::Client _gthis1 = _gthis->client;
+HXDLIN(1372)			_gthis1->sendStanza(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza());
+HXLINE(1373)			_gthis->client->notifyMessageHandlers(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
+HXLINE(1374)			 ::snikket::ChatMessage tmp1 = _gthis->lastMessage;
+HXDLIN(1374)			::String _hx_tmp2;
+HXDLIN(1374)			if (::hx::IsNotNull( tmp1 )) {
+HXLINE(1374)				_hx_tmp2 = tmp1->localId;
             			}
             			else {
-HXLINE(1366)				_hx_tmp2 = null();
+HXLINE(1374)				_hx_tmp2 = null();
             			}
-HXDLIN(1366)			if ((localId == _hx_tmp2)) {
-HXLINE(1367)				_gthis->setLastMessage(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >());
-HXLINE(1368)				_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXDLIN(1374)			if ((localId == _hx_tmp2)) {
+HXLINE(1375)				_gthis->setLastMessage(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >());
+HXLINE(1376)				_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1356_correctMessage)
-HXDLIN(1356)		::Array< ::Dynamic> message1 = ::Array_obj< ::Dynamic>::__new(1)->init(0,message);
-HXDLIN(1356)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1357)		::String toSendId = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId;
-HXLINE(1358)		message1[0] = this->prepareOutgoingMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >());
-HXLINE(1359)		 ::snikket::ChatMessage _hx_tmp = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build();
-HXDLIN(1359)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = ::Array_obj< ::Dynamic>::__new(1)->init(0,_hx_tmp);
-HXLINE(1360)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = localId;
-HXLINE(1361)		 ::snikket::Client _hx_tmp1 = this->client;
-HXDLIN(1361)		_hx_tmp1->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()), ::Dynamic(new _hx_Closure_0(_gthis,message1,localId,toSendId)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1364_correctMessage)
+HXDLIN(1364)		::Array< ::Dynamic> message1 = ::Array_obj< ::Dynamic>::__new(1)->init(0,message);
+HXDLIN(1364)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1365)		::String toSendId = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId;
+HXLINE(1366)		message1[0] = this->prepareOutgoingMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >());
+HXLINE(1367)		 ::snikket::ChatMessage _hx_tmp = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build();
+HXDLIN(1367)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = ::Array_obj< ::Dynamic>::__new(1)->init(0,_hx_tmp);
+HXLINE(1368)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = localId;
+HXLINE(1369)		 ::snikket::Client _hx_tmp1 = this->client;
+HXDLIN(1369)		_hx_tmp1->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()), ::Dynamic(new _hx_Closure_0(_gthis,message1,localId,toSendId)));
             	}
 
 
 void Channel_obj::sendMessage( ::snikket::ChatMessageBuilder message){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1374_sendMessage)
-HXDLIN(1374)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1375)		if (::hx::IsNotNull( this->typingTimer )) {
-HXLINE(1375)			this->typingTimer->stop();
-            		}
-HXLINE(1376)		this->client->chatActivity(::hx::ObjectPtr<OBJ_>(this),null());
-HXLINE(1377)		message = this->prepareOutgoingMessage(message);
-HXLINE(1378)		 ::snikket::Stanza stanza = message->build()->asStanza();
-HXLINE(1380)		{
-HXLINE(1380)			 ::Dynamic this1 = stanza->attr;
-HXDLIN(1380)			::String value = this->getFullJid()->asString();
-HXDLIN(1380)			::Reflect_obj::setField(this1,HX_("from",6a,a5,c2,43),value);
-            		}
-HXLINE(1381)		 ::snikket::MessageStanza fromStanza = ::snikket::Message_obj::fromStanza(stanza,this->client->jid,null())->parsed;
-HXLINE(1382)		{
-HXLINE(1382)			 ::Dynamic this2 = stanza->attr;
-HXDLIN(1382)			::String value1 = this->client->jid->asString();
-HXDLIN(1382)			::Reflect_obj::setField(this2,HX_("from",6a,a5,c2,43),value1);
-            		}
-HXLINE(1383)		switch((int)(fromStanza->_hx_getIndex())){
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1382_sendMessage)
+HXDLIN(1382)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1383)		if (::hx::IsNotNull( this->typingTimer )) {
+HXLINE(1383)			this->typingTimer->stop();
+            		}
+HXLINE(1384)		this->client->chatActivity(::hx::ObjectPtr<OBJ_>(this),null());
+HXLINE(1385)		message = this->prepareOutgoingMessage(message);
+HXLINE(1386)		 ::snikket::Stanza stanza = message->build()->asStanza();
+HXLINE(1388)		{
+HXLINE(1388)			 ::Dynamic this1 = stanza->attr;
+HXDLIN(1388)			::String value = this->getFullJid()->asString();
+HXDLIN(1388)			::Reflect_obj::setField(this1,HX_("from",6a,a5,c2,43),value);
+            		}
+HXLINE(1389)		 ::snikket::MessageStanza fromStanza = ::snikket::Message_obj::fromStanza(stanza,this->client->jid,null())->parsed;
+HXLINE(1390)		{
+HXLINE(1390)			 ::Dynamic this2 = stanza->attr;
+HXDLIN(1390)			::String value1 = this->client->jid->asString();
+HXDLIN(1390)			::Reflect_obj::setField(this2,HX_("from",6a,a5,c2,43),value1);
+            		}
+HXLINE(1391)		switch((int)(fromStanza->_hx_getIndex())){
             			case (int)1: {
-HXLINE(1384)				 ::snikket::ChatMessage _g = fromStanza->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1384)				{
+HXLINE(1392)				 ::snikket::ChatMessage _g = fromStanza->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1392)				{
             					HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis, ::snikket::Stanza,stanza) HXARGC(1)
             					void _hx_run(::Array< ::Dynamic> stored){
-            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1390_sendMessage)
-HXLINE(1391)						_gthis->client->sendStanza(stanza);
-HXLINE(1392)						_gthis->setLastMessage(stored->__get(0).StaticCast<  ::snikket::ChatMessage >());
-HXLINE(1393)						int _hx_tmp;
-HXDLIN(1393)						if ((stored->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->length > 1)) {
-HXLINE(1393)							_hx_tmp = 1;
+            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1398_sendMessage)
+HXLINE(1399)						_gthis->client->sendStanza(stanza);
+HXLINE(1400)						_gthis->setLastMessage(stored->__get(0).StaticCast<  ::snikket::ChatMessage >());
+HXLINE(1401)						int _hx_tmp;
+HXDLIN(1401)						if ((stored->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->length > 1)) {
+HXLINE(1401)							_hx_tmp = 1;
             						}
             						else {
-HXLINE(1393)							_hx_tmp = 0;
+HXLINE(1401)							_hx_tmp = 0;
             						}
-HXDLIN(1393)						_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),_hx_tmp);
-HXLINE(1394)						_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXDLIN(1401)						_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),_hx_tmp);
+HXLINE(1402)						_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             					}
             					HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1385)					if (::hx::IsNotNull( this->isActive )) {
-HXLINE(1386)						this->isActive = true;
-HXLINE(1387)						this->activeThread = message->threadId;
-HXLINE(1388)						stanza->tag(HX_("active",c6,41,46,16), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1393)					if (::hx::IsNotNull( this->isActive )) {
+HXLINE(1394)						this->isActive = true;
+HXLINE(1395)						this->activeThread = message->threadId;
+HXLINE(1396)						stanza->tag(HX_("active",c6,41,46,16), ::Dynamic(::hx::Anon_obj::Create(1)
             							->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/chatstates",8e,6d,41,6d))))->up();
             					}
-HXLINE(1390)					 ::snikket::Client _hx_tmp = this->client;
-HXDLIN(1390)					_hx_tmp->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message->build()), ::Dynamic(new _hx_Closure_0(_gthis,stanza)));
+HXLINE(1398)					 ::snikket::Client _hx_tmp = this->client;
+HXDLIN(1398)					_hx_tmp->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message->build()), ::Dynamic(new _hx_Closure_0(_gthis,stanza)));
             				}
             			}
             			break;
             			case (int)3: {
             				HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis, ::snikket::Stanza,stanza) HXARGC(1)
             				void _hx_run( ::snikket::ChatMessage stored){
-            					HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1397_sendMessage)
-HXLINE(1398)					_gthis->client->sendStanza(stanza);
-HXLINE(1399)					if (::hx::IsNotNull( stored )) {
-HXLINE(1399)						_gthis->client->notifyMessageHandlers(stored,2);
+            					HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1405_sendMessage)
+HXLINE(1406)					_gthis->client->sendStanza(stanza);
+HXLINE(1407)					if (::hx::IsNotNull( stored )) {
+HXLINE(1407)						_gthis->client->notifyMessageHandlers(stored,2);
             					}
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1396)				 ::snikket::ReactionUpdate update = fromStanza->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
-HXLINE(1397)				::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN(1397)				::snikket::Persistence_obj::storeReaction(_hx_tmp1,this->client->accountId(),update, ::Dynamic(new _hx_Closure_1(_gthis,stanza)));
+HXLINE(1404)				 ::snikket::ReactionUpdate update = fromStanza->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
+HXLINE(1405)				::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN(1405)				::snikket::Persistence_obj::storeReaction(_hx_tmp1,this->client->accountId(),update, ::Dynamic(new _hx_Closure_1(_gthis,stanza)));
             			}
             			break;
             			default:{
-HXLINE(1402)				::haxe::Log_obj::trace(HX_("Invalid message",7e,ab,89,95), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE(1410)				::haxe::Log_obj::trace(HX_("Invalid message",7e,ab,89,95), ::Dynamic(::hx::Anon_obj::Create(5)
             					->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Channel",b2,3f,68,db))
             					->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,fromStanza))
             					->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("sendMessage",5f,89,1d,24))
             					->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Chat.hx",f4,6b,61,18))
-            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1402)));
-HXLINE(1403)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0,91));
+            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1410)));
+HXLINE(1411)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0,91));
             			}
             		}
             	}
@@ -1302,143 +1302,143 @@ HXLINE(1403)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0
 void Channel_obj::removeReaction( ::snikket::ChatMessage m, ::snikket::Reaction reaction){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis, ::snikket::ReactionUpdate,update4) HXARGC(1)
             		void _hx_run( ::snikket::ChatMessage stored){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1428_removeReaction)
-HXLINE(1429)			 ::snikket::Stanza stanza = update4->asStanza();
-HXLINE(1430)			{
-HXLINE(1430)				::String value = _gthis->chatId;
-HXDLIN(1430)				::Reflect_obj::setField(stanza->attr,HX_("to",7b,65,00,00),value);
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1436_removeReaction)
+HXLINE(1437)			 ::snikket::Stanza stanza = update4->asStanza();
+HXLINE(1438)			{
+HXLINE(1438)				::String value = _gthis->chatId;
+HXDLIN(1438)				::Reflect_obj::setField(stanza->attr,HX_("to",7b,65,00,00),value);
             			}
-HXLINE(1431)			_gthis->client->sendStanza(stanza);
-HXLINE(1432)			if (::hx::IsNotNull( stored )) {
-HXLINE(1432)				_gthis->client->notifyMessageHandlers(stored,2);
+HXLINE(1439)			_gthis->client->sendStanza(stanza);
+HXLINE(1440)			if (::hx::IsNotNull( stored )) {
+HXLINE(1440)				_gthis->client->notifyMessageHandlers(stored,2);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1408_removeReaction)
-HXDLIN(1408)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1409)		if (::Std_obj::isOfType(reaction,::hx::ClassOf< ::snikket::CustomEmojiReaction >())) {
-HXLINE(1410)			if (::hx::IsNull( reaction->envelopeId )) {
-HXLINE(1410)				HX_STACK_DO_THROW(HX_("Cannot remove custom emoji reaction without envelopeId",90,e6,80,fb));
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1416_removeReaction)
+HXDLIN(1416)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1417)		if (::Std_obj::isOfType(reaction,::hx::ClassOf< ::snikket::CustomEmojiReaction >())) {
+HXLINE(1418)			if (::hx::IsNull( reaction->envelopeId )) {
+HXLINE(1418)				HX_STACK_DO_THROW(HX_("Cannot remove custom emoji reaction without envelopeId",90,e6,80,fb));
             			}
-HXLINE(1411)			 ::snikket::ChatMessageBuilder correct = m->reply();
-HXLINE(1412)			correct->localId = ::snikket::ID_obj::_hx_long();
-HXLINE(1413)			correct->setHtml(HX_("",00,00,00,00));
-HXLINE(1414)			correct->text = null();
-HXLINE(1415)			this->correctMessage(reaction->envelopeId,correct);
-HXLINE(1416)			return;
-            		}
-HXLINE(1420)		::Array< ::Dynamic> reactions = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1421)		{
-HXLINE(1421)			::Dynamic map = m->reactions;
-HXDLIN(1421)			::Dynamic _g_map = map;
-HXDLIN(1421)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN(1421)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE(1421)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN(1421)				::Array< ::Dynamic> _g_value = ( (::Array< ::Dynamic>)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN(1421)				::String _g_key = key;
-HXDLIN(1421)				::String areaction = _g_key;
-HXDLIN(1421)				::Array< ::Dynamic> reacts = _g_value;
-HXLINE(1422)				if ((areaction != reaction->key)) {
+HXLINE(1419)			 ::snikket::ChatMessageBuilder correct = m->reply();
+HXLINE(1420)			correct->localId = ::snikket::ID_obj::_hx_long();
+HXLINE(1421)			correct->setHtml(HX_("",00,00,00,00));
+HXLINE(1422)			correct->text = null();
+HXLINE(1423)			this->correctMessage(reaction->envelopeId,correct);
+HXLINE(1424)			return;
+            		}
+HXLINE(1428)		::Array< ::Dynamic> reactions = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1429)		{
+HXLINE(1429)			::Dynamic map = m->reactions;
+HXDLIN(1429)			::Dynamic _g_map = map;
+HXDLIN(1429)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN(1429)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE(1429)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN(1429)				::Array< ::Dynamic> _g_value = ( (::Array< ::Dynamic>)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN(1429)				::String _g_key = key;
+HXDLIN(1429)				::String areaction = _g_key;
+HXDLIN(1429)				::Array< ::Dynamic> reacts = _g_value;
+HXLINE(1430)				if ((areaction != reaction->key)) {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(1)
             					bool _hx_run( ::snikket::Reaction r){
-            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1423_removeReaction)
-HXLINE(1423)						::String r1 = r->senderId;
-HXDLIN(1423)						return (r1 == _gthis->getFullJid()->asString());
+            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1431_removeReaction)
+HXLINE(1431)						::String r1 = r->senderId;
+HXDLIN(1431)						return (r1 == _gthis->getFullJid()->asString());
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1423)					 ::snikket::Reaction react = ( ( ::snikket::Reaction)(::Lambda_obj::find(reacts, ::Dynamic(new _hx_Closure_0(_gthis)))) );
-HXLINE(1424)					bool _hx_tmp;
-HXDLIN(1424)					if (::hx::IsNotNull( react )) {
-HXLINE(1424)						_hx_tmp = !(::Std_obj::isOfType(react,::hx::ClassOf< ::snikket::CustomEmojiReaction >()));
+HXLINE(1431)					 ::snikket::Reaction react = ( ( ::snikket::Reaction)(::Lambda_obj::find(reacts, ::Dynamic(new _hx_Closure_0(_gthis)))) );
+HXLINE(1432)					bool _hx_tmp;
+HXDLIN(1432)					if (::hx::IsNotNull( react )) {
+HXLINE(1432)						_hx_tmp = !(::Std_obj::isOfType(react,::hx::ClassOf< ::snikket::CustomEmojiReaction >()));
             					}
             					else {
-HXLINE(1424)						_hx_tmp = false;
+HXLINE(1432)						_hx_tmp = false;
             					}
-HXDLIN(1424)					if (_hx_tmp) {
-HXLINE(1424)						reactions->push(react);
+HXDLIN(1432)					if (_hx_tmp) {
+HXLINE(1432)						reactions->push(react);
             					}
             				}
             			}
             		}
-HXLINE(1427)		::String update = ::snikket::ID_obj::_hx_long();
-HXDLIN(1427)		::String m1 = m->serverId;
-HXDLIN(1427)		::String update1 = m->chatId();
-HXDLIN(1427)		::String update2 = m->chatId();
-HXDLIN(1427)		::String update3 = this->getFullJid()->asString();
-HXDLIN(1427)		 ::snikket::ReactionUpdate update4 =  ::snikket::ReactionUpdate_obj::__alloc( HX_CTX ,update,m1,update1,null(),update2,update3,::snikket::Date_obj::format(::Date_obj::now()),reactions,0);
-HXLINE(1428)		::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN(1428)		::String _hx_tmp2 = this->client->accountId();
-HXDLIN(1428)		::snikket::Persistence_obj::storeReaction(_hx_tmp1,_hx_tmp2,update4, ::Dynamic(new _hx_Closure_1(_gthis,update4)));
+HXLINE(1435)		::String update = ::snikket::ID_obj::_hx_long();
+HXDLIN(1435)		::String m1 = m->serverId;
+HXDLIN(1435)		::String update1 = m->chatId();
+HXDLIN(1435)		::String update2 = m->chatId();
+HXDLIN(1435)		::String update3 = this->getFullJid()->asString();
+HXDLIN(1435)		 ::snikket::ReactionUpdate update4 =  ::snikket::ReactionUpdate_obj::__alloc( HX_CTX ,update,m1,update1,null(),update2,update3,::snikket::Date_obj::format(::Date_obj::now()),reactions,0);
+HXLINE(1436)		::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN(1436)		::String _hx_tmp2 = this->client->accountId();
+HXDLIN(1436)		::snikket::Persistence_obj::storeReaction(_hx_tmp1,_hx_tmp2,update4, ::Dynamic(new _hx_Closure_1(_gthis,update4)));
             	}
 
 
 ::String Channel_obj::lastMessageId(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1438_lastMessageId)
-HXDLIN(1438)		 ::snikket::ChatMessage tmp = this->lastMessage;
-HXDLIN(1438)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1438)			return tmp->serverId;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1446_lastMessageId)
+HXDLIN(1446)		 ::snikket::ChatMessage tmp = this->lastMessage;
+HXDLIN(1446)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1446)			return tmp->serverId;
             		}
             		else {
-HXDLIN(1438)			return null();
+HXDLIN(1446)			return null();
             		}
-HXDLIN(1438)		return null();
+HXDLIN(1446)		return null();
             	}
 
 
 void Channel_obj::markReadUpTo( ::snikket::ChatMessage message){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::ChatMessage,message, ::snikket::Channel,_gthis) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1443_markReadUpTo)
-HXLINE(1444)			::String _gthis1 = _gthis->chatId;
-HXDLIN(1444)			::String stanza = ::snikket::ID_obj::_hx_long();
-HXDLIN(1444)			 ::snikket::Stanza stanza1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1451_markReadUpTo)
+HXLINE(1452)			::String _gthis1 = _gthis->chatId;
+HXDLIN(1452)			::String stanza = ::snikket::ID_obj::_hx_long();
+HXDLIN(1452)			 ::snikket::Stanza stanza1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("id",db,5b,00,00),stanza)
             				->setFixed(1,HX_("to",7b,65,00,00),_gthis1)
             				->setFixed(2,HX_("type",ba,f2,08,4d),HX_("groupchat",97,1d,c8,e5))))->tag(HX_("displayed",21,17,db,c1), ::Dynamic(::hx::Anon_obj::Create(2)
             				->setFixed(0,HX_("id",db,5b,00,00),message->serverId)
             				->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:chat-markers:0",96,b8,66,e7))))->up();
-HXLINE(1446)			if (::hx::IsNotNull( message->threadId )) {
-HXLINE(1447)				stanza1->textTag(HX_("thread",ca,7a,b9,8e),message->threadId,null());
+HXLINE(1454)			if (::hx::IsNotNull( message->threadId )) {
+HXLINE(1455)				stanza1->textTag(HX_("thread",ca,7a,b9,8e),message->threadId,null());
             			}
-HXLINE(1449)			_gthis->client->sendStanza(stanza1);
-HXLINE(1451)			_gthis->publishMds();
-HXLINE(1452)			_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXLINE(1457)			_gthis->client->sendStanza(stanza1);
+HXLINE(1459)			_gthis->publishMds();
+HXLINE(1460)			_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1442_markReadUpTo)
-HXDLIN(1442)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1443)		this->markReadUpToMessage(message, ::Dynamic(new _hx_Closure_0(message,_gthis)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1450_markReadUpTo)
+HXDLIN(1450)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1451)		this->markReadUpToMessage(message, ::Dynamic(new _hx_Closure_0(message,_gthis)));
             	}
 
 
 void Channel_obj::bookmark(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis) HXARGC(1)
             		void _hx_run( ::snikket::Stanza response){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1478_bookmark)
-HXLINE(1478)			if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
-HXLINE(1479)				 ::snikket::Stanza tmp = response->getChild(HX_("error",c8,cb,29,73),null());
-HXDLIN(1479)				 ::snikket::Stanza preconditionError;
-HXDLIN(1479)				if (::hx::IsNotNull( tmp )) {
-HXLINE(1479)					preconditionError = tmp->getChild(HX_("precondition-not-met",2d,db,78,db),HX_("http://jabber.org/protocol/pubsub#errors",97,74,3a,a8));
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1486_bookmark)
+HXLINE(1486)			if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
+HXLINE(1487)				 ::snikket::Stanza tmp = response->getChild(HX_("error",c8,cb,29,73),null());
+HXDLIN(1487)				 ::snikket::Stanza preconditionError;
+HXDLIN(1487)				if (::hx::IsNotNull( tmp )) {
+HXLINE(1487)					preconditionError = tmp->getChild(HX_("precondition-not-met",2d,db,78,db),HX_("http://jabber.org/protocol/pubsub#errors",97,74,3a,a8));
             				}
             				else {
-HXLINE(1479)					preconditionError = null();
+HXLINE(1487)					preconditionError = null();
             				}
-HXLINE(1480)				if (::hx::IsNotNull( preconditionError )) {
+HXLINE(1488)				if (::hx::IsNotNull( preconditionError )) {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(1)
             					void _hx_run( ::snikket::Stanza response){
-            						HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1496_bookmark)
-HXLINE(1496)						if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("result",dd,68,84,08))) {
-HXLINE(1497)							_gthis->bookmark();
+            						HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1504_bookmark)
+HXLINE(1504)						if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("result",dd,68,84,08))) {
+HXLINE(1505)							_gthis->bookmark();
             						}
             					}
             					HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1482)					 ::snikket::GenericStream _gthis1 = _gthis->stream;
-HXDLIN(1482)					_gthis1->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1490)					 ::snikket::GenericStream _gthis1 = _gthis->stream;
+HXDLIN(1490)					_gthis1->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))))->tag(HX_("pubsub",e3,da,f8,66), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/pubsub#owner",c7,28,a3,08))))->tag(HX_("configure",e6,f9,5b,c0), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("node",02,0a,0a,49),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d))))->tag(HX_("x",78,00,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
@@ -1457,28 +1457,28 @@ HXDLIN(1482)					_gthis1->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("i
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1457_bookmark)
-HXDLIN(1457)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1458)		 ::snikket::GenericStream _hx_tmp = this->stream;
-HXLINE(1459)		 ::snikket::Stanza _hx_tmp1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1465_bookmark)
+HXDLIN(1465)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1466)		 ::snikket::GenericStream _hx_tmp = this->stream;
+HXLINE(1467)		 ::snikket::Stanza _hx_tmp1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))))->tag(HX_("pubsub",e3,da,f8,66), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/pubsub",57,94,3c,f2))))->tag(HX_("publish",8f,21,1d,ae), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("node",02,0a,0a,49),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d))))->tag(HX_("item",13,c5,bf,45), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("id",db,5b,00,00),this->chatId)));
-HXLINE(1463)		::String _hx_tmp2 = this->getDisplayName();
-HXDLIN(1463)		::String _hx_tmp3;
-HXDLIN(1463)		if ((this->uiState == 2)) {
-HXLINE(1463)			_hx_tmp3 = HX_("false",a3,35,4f,fb);
+HXLINE(1471)		::String _hx_tmp2 = this->getDisplayName();
+HXDLIN(1471)		::String _hx_tmp3;
+HXDLIN(1471)		if ((this->uiState == 2)) {
+HXLINE(1471)			_hx_tmp3 = HX_("false",a3,35,4f,fb);
             		}
             		else {
-HXLINE(1463)			_hx_tmp3 = HX_("true",4e,a7,03,4d);
+HXLINE(1471)			_hx_tmp3 = HX_("true",4e,a7,03,4d);
             		}
-HXLINE(1459)		 ::snikket::Stanza _hx_tmp4 = _hx_tmp1->tag(HX_("conference",1c,2b,83,41), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE(1467)		 ::snikket::Stanza _hx_tmp4 = _hx_tmp1->tag(HX_("conference",1c,2b,83,41), ::Dynamic(::hx::Anon_obj::Create(3)
             			->setFixed(0,HX_("autojoin",d9,f6,b1,3e),_hx_tmp3)
             			->setFixed(1,HX_("name",4b,72,ff,48),_hx_tmp2)
             			->setFixed(2,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d))));
-HXLINE(1464)		::String _hx_tmp5 = this->client->displayName();
-HXLINE(1458)		_hx_tmp->sendIq(_hx_tmp4->textTag(HX_("nick",a3,7b,05,49),_hx_tmp5,null())->addChild(this->extensions)->up()->up()->tag(HX_("publish-options",60,0b,5c,74),null())->tag(HX_("x",78,00,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE(1472)		::String _hx_tmp5 = this->client->displayName();
+HXLINE(1466)		_hx_tmp->sendIq(_hx_tmp4->textTag(HX_("nick",a3,7b,05,49),_hx_tmp5,null())->addChild(this->extensions)->up()->up()->tag(HX_("publish-options",60,0b,5c,74),null())->tag(HX_("x",78,00,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("type",ba,f2,08,4d),HX_("submit",18,58,06,9a))
             			->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("jabber:x:data",c2,e1,e9,7c))))->tag(HX_("field",ba,94,93,00), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("var",e7,de,59,00),HX_("FORM_TYPE",d5,96,c9,5a))
@@ -1493,34 +1493,34 @@ HXLINE(1458)		_hx_tmp->sendIq(_hx_tmp4->textTag(HX_("nick",a3,7b,05,49),_hx_tmp5
 
 
 void Channel_obj::sendChatState(::String state,::String threadId){
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1507_sendChatState)
-HXLINE(1509)		::String stanza = ::snikket::ID_obj::_hx_long();
-HXLINE(1511)		::String stanza1 = this->client->jid->asString();
-HXLINE(1508)		 ::snikket::Stanza stanza2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(4)
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1515_sendChatState)
+HXLINE(1517)		::String stanza = ::snikket::ID_obj::_hx_long();
+HXLINE(1519)		::String stanza1 = this->client->jid->asString();
+HXLINE(1516)		 ::snikket::Stanza stanza2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(4)
             			->setFixed(0,HX_("id",db,5b,00,00),stanza)
             			->setFixed(1,HX_("to",7b,65,00,00),this->chatId)
             			->setFixed(2,HX_("from",6a,a5,c2,43),stanza1)
             			->setFixed(3,HX_("type",ba,f2,08,4d),HX_("groupchat",97,1d,c8,e5))))->tag(state, ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/chatstates",8e,6d,41,6d))))->up();
-HXLINE(1516)		if (::hx::IsNotNull( threadId )) {
-HXLINE(1517)			stanza2->textTag(HX_("thread",ca,7a,b9,8e),threadId,null());
+HXLINE(1524)		if (::hx::IsNotNull( threadId )) {
+HXLINE(1525)			stanza2->textTag(HX_("thread",ca,7a,b9,8e),threadId,null());
             		}
-HXLINE(1519)		this->stream->sendStanza(stanza2);
+HXLINE(1527)		this->stream->sendStanza(stanza2);
             	}
 
 
 void Channel_obj::close(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1523_close)
-HXLINE(1524)		if (::hx::IsNotNull( this->typingTimer )) {
-HXLINE(1524)			this->typingTimer->stop();
-            		}
-HXLINE(1525)		this->uiState = 2;
-HXLINE(1526)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1526)		::snikket::Persistence_obj::storeChats(_hx_tmp,this->client->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
-HXLINE(1527)		this->selfPing(false);
-HXLINE(1528)		this->bookmark();
-HXLINE(1529)		this->sendChatState(HX_("gone",5f,94,69,44),null());
-HXLINE(1530)		this->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1531_close)
+HXLINE(1532)		if (::hx::IsNotNull( this->typingTimer )) {
+HXLINE(1532)			this->typingTimer->stop();
+            		}
+HXLINE(1533)		this->uiState = 2;
+HXLINE(1534)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1534)		::snikket::Persistence_obj::storeChats(_hx_tmp,this->client->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
+HXLINE(1535)		this->selfPing(false);
+HXLINE(1536)		this->bookmark();
+HXLINE(1537)		this->sendChatState(HX_("gone",5f,94,69,44),null());
+HXLINE(1538)		this->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
             	}
 
 
@@ -1748,8 +1748,8 @@ void Channel_obj::__register()
 void Channel_obj::__boot()
 {
 {
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_982_boot)
-HXDLIN( 982)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_990_boot)
+HXDLIN( 990)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(20)
             				->setFixed(0,HX_("setPresence",fd,1b,38,97), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
diff --git a/Sources/c_snikket/src/snikket/Chat.cpp b/Sources/c_snikket/src/snikket/Chat.cpp
index 74b7c9c..f86447b 100644
--- a/Sources/c_snikket/src/snikket/Chat.cpp
+++ b/Sources/c_snikket/src/snikket/Chat.cpp
@@ -1154,9 +1154,23 @@ HXDLIN( 477)					while((_g < _g1)){
 HXLINE( 477)						_g = (_g + 1);
 HXDLIN( 477)						int i = (_g - 1);
 HXDLIN( 477)						{
-HXLINE( 478)							 ::snikket::Participant p = _gthis->getParticipantDetails(( (::String)(_hx_array_unsafe_get(participants,i)) ));
+HXLINE( 477)							::String id = ( (::String)(_hx_array_unsafe_get(participants,i)) );
+HXLINE( 478)							 ::snikket::Participant p;
+HXDLIN( 478)							if ((id == _gthis->chatId)) {
+HXLINE( 478)								p = null();
+            							}
+            							else {
+HXLINE( 478)								p = _gthis->getParticipantDetails(id);
+            							}
 HXLINE( 477)							::String inValue;
-HXLINE( 479)							if (p->isSelf) {
+HXLINE( 479)							bool inValue1;
+HXDLIN( 479)							if (::hx::IsNotNull( p )) {
+HXLINE( 479)								inValue1 = p->isSelf;
+            							}
+            							else {
+HXLINE( 479)								inValue1 = true;
+            							}
+HXDLIN( 479)							if (inValue1) {
 HXLINE( 477)								inValue = null();
             							}
             							else {
diff --git a/Sources/c_snikket/src/snikket/DirectChat.cpp b/Sources/c_snikket/src/snikket/DirectChat.cpp
index 0092289..ec5c588 100644
--- a/Sources/c_snikket/src/snikket/DirectChat.cpp
+++ b/Sources/c_snikket/src/snikket/DirectChat.cpp
@@ -90,32 +90,33 @@
 #endif
 
 HX_DEFINE_STACK_FRAME(_hx_pos_af7b91d6026813b6_727_new,"snikket.DirectChat","new",0x757e3104,"snikket.DirectChat.new","snikket/Chat.hx",727,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_745_getParticipants,"snikket.DirectChat","getParticipants",0x9f51d1ba,"snikket.DirectChat.getParticipants","snikket/Chat.hx",745,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_731_getParticipants,"snikket.DirectChat","getParticipants",0x9f51d1ba,"snikket.DirectChat.getParticipants","snikket/Chat.hx",731,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_741_counterparts,"snikket.DirectChat","counterparts",0x2a527b80,"snikket.DirectChat.counterparts","snikket/Chat.hx",741,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_745_getParticipantDetails,"snikket.DirectChat","getParticipantDetails",0x79208529,"snikket.DirectChat.getParticipantDetails","snikket/Chat.hx",745,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_753_getMessagesBefore,"snikket.DirectChat","getMessagesBefore",0x4909a945,"snikket.DirectChat.getMessagesBefore","snikket/Chat.hx",753,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_751_getMessagesBefore,"snikket.DirectChat","getMessagesBefore",0x4909a945,"snikket.DirectChat.getMessagesBefore","snikket/Chat.hx",751,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_771_getMessagesAfter,"snikket.DirectChat","getMessagesAfter",0x26744c16,"snikket.DirectChat.getMessagesAfter","snikket/Chat.hx",771,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_765_getMessagesAfter,"snikket.DirectChat","getMessagesAfter",0x26744c16,"snikket.DirectChat.getMessagesAfter","snikket/Chat.hx",765,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_785_getMessagesAround,"snikket.DirectChat","getMessagesAround",0x64db4d13,"snikket.DirectChat.getMessagesAround","snikket/Chat.hx",785,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_784_getMessagesAround,"snikket.DirectChat","getMessagesAround",0x64db4d13,"snikket.DirectChat.getMessagesAround","snikket/Chat.hx",784,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_795_prepareIncomingMessage,"snikket.DirectChat","prepareIncomingMessage",0xe7120196,"snikket.DirectChat.prepareIncomingMessage","snikket/Chat.hx",795,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_800_prepareOutgoingMessage,"snikket.DirectChat","prepareOutgoingMessage",0x4d3ec6d0,"snikket.DirectChat.prepareOutgoingMessage","snikket/Chat.hx",800,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_817_correctMessage,"snikket.DirectChat","correctMessage",0x83971059,"snikket.DirectChat.correctMessage","snikket/Chat.hx",817,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_812_correctMessage,"snikket.DirectChat","correctMessage",0x83971059,"snikket.DirectChat.correctMessage","snikket/Chat.hx",812,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_833_sendMessage,"snikket.DirectChat","sendMessage",0x7d4f2e03,"snikket.DirectChat.sendMessage","snikket/Chat.hx",833,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_749_counterparts,"snikket.DirectChat","counterparts",0x2a527b80,"snikket.DirectChat.counterparts","snikket/Chat.hx",749,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_753_getParticipantDetails,"snikket.DirectChat","getParticipantDetails",0x79208529,"snikket.DirectChat.getParticipantDetails","snikket/Chat.hx",753,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_761_getMessagesBefore,"snikket.DirectChat","getMessagesBefore",0x4909a945,"snikket.DirectChat.getMessagesBefore","snikket/Chat.hx",761,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_759_getMessagesBefore,"snikket.DirectChat","getMessagesBefore",0x4909a945,"snikket.DirectChat.getMessagesBefore","snikket/Chat.hx",759,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_779_getMessagesAfter,"snikket.DirectChat","getMessagesAfter",0x26744c16,"snikket.DirectChat.getMessagesAfter","snikket/Chat.hx",779,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_773_getMessagesAfter,"snikket.DirectChat","getMessagesAfter",0x26744c16,"snikket.DirectChat.getMessagesAfter","snikket/Chat.hx",773,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_793_getMessagesAround,"snikket.DirectChat","getMessagesAround",0x64db4d13,"snikket.DirectChat.getMessagesAround","snikket/Chat.hx",793,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_792_getMessagesAround,"snikket.DirectChat","getMessagesAround",0x64db4d13,"snikket.DirectChat.getMessagesAround","snikket/Chat.hx",792,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_803_prepareIncomingMessage,"snikket.DirectChat","prepareIncomingMessage",0xe7120196,"snikket.DirectChat.prepareIncomingMessage","snikket/Chat.hx",803,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_808_prepareOutgoingMessage,"snikket.DirectChat","prepareOutgoingMessage",0x4d3ec6d0,"snikket.DirectChat.prepareOutgoingMessage","snikket/Chat.hx",808,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_825_correctMessage,"snikket.DirectChat","correctMessage",0x83971059,"snikket.DirectChat.correctMessage","snikket/Chat.hx",825,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_820_correctMessage,"snikket.DirectChat","correctMessage",0x83971059,"snikket.DirectChat.correctMessage","snikket/Chat.hx",820,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_841_sendMessage,"snikket.DirectChat","sendMessage",0x7d4f2e03,"snikket.DirectChat.sendMessage","snikket/Chat.hx",841,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_857_sendMessage,"snikket.DirectChat","sendMessage",0x7d4f2e03,"snikket.DirectChat.sendMessage","snikket/Chat.hx",857,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_893_removeReaction,"snikket.DirectChat","removeReaction",0x4fdefde9,"snikket.DirectChat.removeReaction","snikket/Chat.hx",893,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_871_removeReaction,"snikket.DirectChat","removeReaction",0x4fdefde9,"snikket.DirectChat.removeReaction","snikket/Chat.hx",871,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_886_removeReaction,"snikket.DirectChat","removeReaction",0x4fdefde9,"snikket.DirectChat.removeReaction","snikket/Chat.hx",886,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_905_lastMessageId,"snikket.DirectChat","lastMessageId",0x6bb7a5f0,"snikket.DirectChat.lastMessageId","snikket/Chat.hx",905,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_910_markReadUpTo,"snikket.DirectChat","markReadUpTo",0xa06bd335,"snikket.DirectChat.markReadUpTo","snikket/Chat.hx",910,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_909_markReadUpTo,"snikket.DirectChat","markReadUpTo",0xa06bd335,"snikket.DirectChat.markReadUpTo","snikket/Chat.hx",909,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_941_bookmark,"snikket.DirectChat","bookmark",0x9ab25992,"snikket.DirectChat.bookmark","snikket/Chat.hx",941,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_931_bookmark,"snikket.DirectChat","bookmark",0x9ab25992,"snikket.DirectChat.bookmark","snikket/Chat.hx",931,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_950_sendChatState,"snikket.DirectChat","sendChatState",0xb2f43755,"snikket.DirectChat.sendChatState","snikket/Chat.hx",950,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_967_close,"snikket.DirectChat","close",0x2561e95c,"snikket.DirectChat.close","snikket/Chat.hx",967,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_849_sendMessage,"snikket.DirectChat","sendMessage",0x7d4f2e03,"snikket.DirectChat.sendMessage","snikket/Chat.hx",849,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_865_sendMessage,"snikket.DirectChat","sendMessage",0x7d4f2e03,"snikket.DirectChat.sendMessage","snikket/Chat.hx",865,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_901_removeReaction,"snikket.DirectChat","removeReaction",0x4fdefde9,"snikket.DirectChat.removeReaction","snikket/Chat.hx",901,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_879_removeReaction,"snikket.DirectChat","removeReaction",0x4fdefde9,"snikket.DirectChat.removeReaction","snikket/Chat.hx",879,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_894_removeReaction,"snikket.DirectChat","removeReaction",0x4fdefde9,"snikket.DirectChat.removeReaction","snikket/Chat.hx",894,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_913_lastMessageId,"snikket.DirectChat","lastMessageId",0x6bb7a5f0,"snikket.DirectChat.lastMessageId","snikket/Chat.hx",913,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_918_markReadUpTo,"snikket.DirectChat","markReadUpTo",0xa06bd335,"snikket.DirectChat.markReadUpTo","snikket/Chat.hx",918,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_917_markReadUpTo,"snikket.DirectChat","markReadUpTo",0xa06bd335,"snikket.DirectChat.markReadUpTo","snikket/Chat.hx",917,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_949_bookmark,"snikket.DirectChat","bookmark",0x9ab25992,"snikket.DirectChat.bookmark","snikket/Chat.hx",949,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_939_bookmark,"snikket.DirectChat","bookmark",0x9ab25992,"snikket.DirectChat.bookmark","snikket/Chat.hx",939,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_958_sendChatState,"snikket.DirectChat","sendChatState",0xb2f43755,"snikket.DirectChat.sendChatState","snikket/Chat.hx",958,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_975_close,"snikket.DirectChat","close",0x2561e95c,"snikket.DirectChat.close","snikket/Chat.hx",975,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_af7b91d6026813b6_724_boot,"snikket.DirectChat","boot",0x5105b30e,"snikket.DirectChat.boot","snikket/Chat.hx",724,0x18616bf4)
 namespace snikket{
 
@@ -146,208 +147,237 @@ bool DirectChat_obj::_hx_isInstanceOf(int inClassId) {
 }
 
 ::Array< ::String > DirectChat_obj::getParticipants(){
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_731_getParticipants)
+            		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::haxe::ds::StringMap,ids) HXARGC(0)
+            		 ::Dynamic _hx_run(){
+            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_745_getParticipants)
+HXLINE( 745)			return ids->keys();
+            		}
+            		HX_END_LOCAL_FUNC0(return)
+
+            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_731_getParticipants)
 HXLINE( 732)		::Array< ::String > counters = this->counterparts();
-HXLINE( 733)		bool _hx_tmp;
-HXDLIN( 733)		if ((counters->length < 2)) {
-HXLINE( 733)			 ::snikket::ChatMessage tmp = this->lastMessage;
-HXDLIN( 733)			::Array< ::Dynamic> tmp1;
-HXDLIN( 733)			if (::hx::IsNotNull( tmp )) {
-HXLINE( 733)				tmp1 = tmp->recipients;
+HXLINE( 733)		 ::haxe::ds::StringMap ids =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 734)		bool _hx_tmp;
+HXDLIN( 734)		if ((counters->length < 2)) {
+HXLINE( 734)			 ::snikket::ChatMessage tmp = this->lastMessage;
+HXDLIN( 734)			::Array< ::Dynamic> tmp1;
+HXDLIN( 734)			if (::hx::IsNotNull( tmp )) {
+HXLINE( 734)				tmp1 = tmp->recipients;
             			}
             			else {
-HXLINE( 733)				tmp1 = null();
+HXLINE( 734)				tmp1 = null();
             			}
-HXDLIN( 733)			 ::Dynamic tmp2;
-HXDLIN( 733)			if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 733)				tmp2 = tmp1->length;
+HXDLIN( 734)			 ::Dynamic tmp2;
+HXDLIN( 734)			if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 734)				tmp2 = tmp1->length;
             			}
             			else {
-HXLINE( 733)				tmp2 = null();
+HXLINE( 734)				tmp2 = null();
             			}
-HXDLIN( 733)			int _hx_tmp1;
-HXDLIN( 733)			if (::hx::IsNotNull( tmp2 )) {
-HXLINE( 733)				_hx_tmp1 = ( (int)(tmp2) );
+HXDLIN( 734)			int _hx_tmp1;
+HXDLIN( 734)			if (::hx::IsNotNull( tmp2 )) {
+HXLINE( 734)				_hx_tmp1 = ( (int)(tmp2) );
             			}
             			else {
-HXLINE( 733)				_hx_tmp1 = 0;
+HXLINE( 734)				_hx_tmp1 = 0;
             			}
-HXDLIN( 733)			_hx_tmp = (_hx_tmp1 > 1);
+HXDLIN( 734)			_hx_tmp = (_hx_tmp1 > 1);
             		}
             		else {
-HXLINE( 733)			_hx_tmp = false;
-            		}
-HXDLIN( 733)		if (_hx_tmp) {
-HXLINE( 734)			::Array< ::Dynamic> _this = this->lastMessage->recipients;
-HXDLIN( 734)			::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
-HXDLIN( 734)			{
-HXLINE( 734)				int _g = 0;
-HXDLIN( 734)				int _g1 = _this->length;
-HXDLIN( 734)				while((_g < _g1)){
-HXLINE( 734)					_g = (_g + 1);
-HXDLIN( 734)					int i = (_g - 1);
-HXDLIN( 734)					{
-HXLINE( 734)						::String inValue = ( ( ::snikket::JID)(_hx_array_unsafe_get(_this,i)) )->asString();
-HXDLIN( 734)						result->__unsafe_set(i,inValue);
+HXLINE( 734)			_hx_tmp = false;
+            		}
+HXDLIN( 734)		if (_hx_tmp) {
+HXLINE( 735)			ids->set(this->lastMessage->senderId,true);
+HXLINE( 736)			{
+HXLINE( 736)				int _g = 0;
+HXDLIN( 736)				::Array< ::Dynamic> _this = this->lastMessage->recipients;
+HXDLIN( 736)				::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
+HXDLIN( 736)				{
+HXLINE( 736)					int _g1 = 0;
+HXDLIN( 736)					int _g2 = _this->length;
+HXDLIN( 736)					while((_g1 < _g2)){
+HXLINE( 736)						_g1 = (_g1 + 1);
+HXDLIN( 736)						int i = (_g1 - 1);
+HXDLIN( 736)						{
+HXLINE( 736)							::String inValue = ( ( ::snikket::JID)(_hx_array_unsafe_get(_this,i)) )->asString();
+HXDLIN( 736)							result->__unsafe_set(i,inValue);
+            						}
             					}
             				}
+HXDLIN( 736)				::Array< ::String > _g3 = result;
+HXDLIN( 736)				while((_g < _g3->length)){
+HXLINE( 736)					::String id = _g3->__get(_g);
+HXDLIN( 736)					_g = (_g + 1);
+HXLINE( 737)					ids->set(id,true);
+            				}
             			}
-HXDLIN( 734)			return result->concat(::Array_obj< ::String >::__new(1)->init(0,this->lastMessage->senderId));
             		}
             		else {
-HXLINE( 736)			::Array< ::String > _hx_tmp2 = this->counterparts();
-HXDLIN( 736)			return _hx_tmp2->concat(::Array_obj< ::String >::__new(1)->init(0,this->client->accountId()));
+HXLINE( 740)			{
+HXLINE( 740)				::String k = this->client->accountId();
+HXDLIN( 740)				ids->set(k,true);
+            			}
+HXLINE( 741)			{
+HXLINE( 741)				int _g4 = 0;
+HXDLIN( 741)				::Array< ::String > _g5 = this->counterparts();
+HXDLIN( 741)				while((_g4 < _g5->length)){
+HXLINE( 741)					::String id1 = _g5->__get(_g4);
+HXDLIN( 741)					_g4 = (_g4 + 1);
+HXLINE( 742)					ids->set(id1,true);
+            				}
+            			}
             		}
-HXLINE( 733)		return null();
+HXLINE( 745)		return ::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
+            			->setFixed(0,HX_("iterator",ee,49,9a,93), ::Dynamic(new _hx_Closure_0(ids)))));
             	}
 
 
 ::Array< ::String > DirectChat_obj::counterparts(){
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_741_counterparts)
-HXDLIN( 741)		return this->chatId.split(HX_("\n",0a,00,00,00));
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_749_counterparts)
+HXDLIN( 749)		return this->chatId.split(HX_("\n",0a,00,00,00));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(DirectChat_obj,counterparts,return )
 
  ::snikket::Participant DirectChat_obj::getParticipantDetails(::String participantId){
-            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_745_getParticipantDetails)
-HXLINE( 746)		 ::snikket::DirectChat chat = this->client->getDirectChat(participantId,null());
-HXLINE( 747)		::String _hx_tmp = chat->getDisplayName();
-HXDLIN( 747)		::String _hx_tmp1 = chat->getPhoto();
-HXDLIN( 747)		::String _hx_tmp2 = chat->getPlaceholder();
-HXDLIN( 747)		::String chat1 = chat->chatId;
-HXDLIN( 747)		return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp,_hx_tmp1,_hx_tmp2,(chat1 == this->client->accountId()));
+            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_753_getParticipantDetails)
+HXLINE( 754)		 ::snikket::DirectChat chat = this->client->getDirectChat(participantId,null());
+HXLINE( 755)		::String _hx_tmp = chat->getDisplayName();
+HXDLIN( 755)		::String _hx_tmp1 = chat->getPhoto();
+HXDLIN( 755)		::String _hx_tmp2 = chat->getPlaceholder();
+HXDLIN( 755)		::String chat1 = chat->chatId;
+HXDLIN( 755)		return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp,_hx_tmp1,_hx_tmp2,(chat1 == this->client->accountId()));
             	}
 
 
 void DirectChat_obj::getMessagesBefore(::String beforeId,::String beforeTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::DirectChat,_gthis,::String,beforeId, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_753_getMessagesBefore)
-HXLINE( 753)			if ((messages->length > 0)) {
-HXLINE( 754)				handler(messages);
+            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_761_getMessagesBefore)
+HXLINE( 761)			if ((messages->length > 0)) {
+HXLINE( 762)				handler(messages);
             			}
             			else {
-HXLINE( 756)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 764)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("with",06,76,f8,4e),_gthis->chatId));
-HXLINE( 757)				if (::hx::IsNotNull( beforeId )) {
-HXLINE( 757)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 765)				if (::hx::IsNotNull( beforeId )) {
+HXLINE( 765)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("before",7f,54,32,9a),beforeId)),::hx::paccDynamic);
             				}
-HXLINE( 758)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,null());
-HXLINE( 759)				_gthis->fetchFromSync(sync,handler);
+HXLINE( 766)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,null());
+HXLINE( 767)				_gthis->fetchFromSync(sync,handler);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_751_getMessagesBefore)
-HXDLIN( 751)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 752)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN( 752)		::String _hx_tmp1 = this->client->accountId();
-HXDLIN( 752)		::snikket::Persistence_obj::getMessagesBefore(_hx_tmp,_hx_tmp1,this->chatId,beforeId,beforeTime, ::Dynamic(new _hx_Closure_0(_gthis,beforeId,handler)));
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_759_getMessagesBefore)
+HXDLIN( 759)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 760)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN( 760)		::String _hx_tmp1 = this->client->accountId();
+HXDLIN( 760)		::snikket::Persistence_obj::getMessagesBefore(_hx_tmp,_hx_tmp1,this->chatId,beforeId,beforeTime, ::Dynamic(new _hx_Closure_0(_gthis,beforeId,handler)));
             	}
 
 
 void DirectChat_obj::getMessagesAfter(::String afterId,::String afterTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::DirectChat,_gthis,::String,afterId, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_771_getMessagesAfter)
-HXLINE( 771)			if ((messages->length > 0)) {
-HXLINE( 772)				handler(messages);
+            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_779_getMessagesAfter)
+HXLINE( 779)			if ((messages->length > 0)) {
+HXLINE( 780)				handler(messages);
             			}
             			else {
-HXLINE( 774)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 782)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("with",06,76,f8,4e),_gthis->chatId));
-HXLINE( 775)				if (::hx::IsNotNull( afterId )) {
-HXLINE( 775)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 783)				if (::hx::IsNotNull( afterId )) {
+HXLINE( 783)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("after",1c,66,a2,1d),afterId)),::hx::paccDynamic);
             				}
-HXLINE( 776)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,null());
-HXLINE( 777)				_gthis->fetchFromSync(sync,handler);
+HXLINE( 784)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,null());
+HXLINE( 785)				_gthis->fetchFromSync(sync,handler);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_765_getMessagesAfter)
-HXDLIN( 765)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 766)		bool _hx_tmp;
-HXDLIN( 766)		::String afterId1 = afterId;
-HXDLIN( 766)		if ((afterId1 == this->lastMessageId())) {
-HXLINE( 766)			_hx_tmp = !(this->syncing());
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_773_getMessagesAfter)
+HXDLIN( 773)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 774)		bool _hx_tmp;
+HXDLIN( 774)		::String afterId1 = afterId;
+HXDLIN( 774)		if ((afterId1 == this->lastMessageId())) {
+HXLINE( 774)			_hx_tmp = !(this->syncing());
             		}
             		else {
-HXLINE( 766)			_hx_tmp = false;
+HXLINE( 774)			_hx_tmp = false;
             		}
-HXDLIN( 766)		if (_hx_tmp) {
-HXLINE( 767)			handler(::Array_obj< ::Dynamic>::__new(0));
-HXLINE( 768)			return;
+HXDLIN( 774)		if (_hx_tmp) {
+HXLINE( 775)			handler(::Array_obj< ::Dynamic>::__new(0));
+HXLINE( 776)			return;
             		}
-HXLINE( 770)		::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN( 770)		::String _hx_tmp2 = this->client->accountId();
-HXDLIN( 770)		::snikket::Persistence_obj::getMessagesAfter(_hx_tmp1,_hx_tmp2,this->chatId,afterId,afterTime, ::Dynamic(new _hx_Closure_0(_gthis,afterId,handler)));
+HXLINE( 778)		::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN( 778)		::String _hx_tmp2 = this->client->accountId();
+HXDLIN( 778)		::snikket::Persistence_obj::getMessagesAfter(_hx_tmp1,_hx_tmp2,this->chatId,afterId,afterTime, ::Dynamic(new _hx_Closure_0(_gthis,afterId,handler)));
             	}
 
 
 void DirectChat_obj::getMessagesAround(::String aroundId,::String aroundTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_785_getMessagesAround)
-HXLINE( 785)			if ((messages->length > 0)) {
-HXLINE( 786)				handler(messages);
+            			HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_793_getMessagesAround)
+HXLINE( 793)			if ((messages->length > 0)) {
+HXLINE( 794)				handler(messages);
             			}
             			else {
-HXLINE( 789)				handler(::Array_obj< ::Dynamic>::__new(0));
+HXLINE( 797)				handler(::Array_obj< ::Dynamic>::__new(0));
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_784_getMessagesAround)
-HXDLIN( 784)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN( 784)		::String _hx_tmp1 = this->client->accountId();
-HXDLIN( 784)		::snikket::Persistence_obj::getMessagesAround(_hx_tmp,_hx_tmp1,this->chatId,aroundId,aroundTime, ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_792_getMessagesAround)
+HXDLIN( 792)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN( 792)		::String _hx_tmp1 = this->client->accountId();
+HXDLIN( 792)		::snikket::Persistence_obj::getMessagesAround(_hx_tmp,_hx_tmp1,this->chatId,aroundId,aroundTime, ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
  ::snikket::ChatMessageBuilder DirectChat_obj::prepareIncomingMessage( ::snikket::ChatMessageBuilder message, ::snikket::Stanza stanza){
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_795_prepareIncomingMessage)
-HXLINE( 796)		message->syncPoint = !(this->syncing());
-HXLINE( 797)		return message;
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_803_prepareIncomingMessage)
+HXLINE( 804)		message->syncPoint = !(this->syncing());
+HXLINE( 805)		return message;
             	}
 
 
  ::snikket::ChatMessageBuilder DirectChat_obj::prepareOutgoingMessage( ::snikket::ChatMessageBuilder message){
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_800_prepareOutgoingMessage)
-HXLINE( 801)		::String tmp = message->timestamp;
-HXDLIN( 801)		::String _hx_tmp;
-HXDLIN( 801)		if (::hx::IsNotNull( tmp )) {
-HXLINE( 801)			_hx_tmp = tmp;
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_808_prepareOutgoingMessage)
+HXLINE( 809)		::String tmp = message->timestamp;
+HXDLIN( 809)		::String _hx_tmp;
+HXDLIN( 809)		if (::hx::IsNotNull( tmp )) {
+HXLINE( 809)			_hx_tmp = tmp;
             		}
             		else {
-HXLINE( 801)			_hx_tmp = ::snikket::Date_obj::format(::Date_obj::now());
-            		}
-HXDLIN( 801)		message->timestamp = _hx_tmp;
-HXLINE( 802)		message->direction = 1;
-HXLINE( 803)		message->from = this->client->jid;
-HXLINE( 804)		message->sender = message->from->asBare();
-HXLINE( 805)		message->replyTo = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->sender);
-HXLINE( 806)		::Array< ::String > _this = this->counterparts();
-HXDLIN( 806)		::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(_this->length);
-HXDLIN( 806)		{
-HXLINE( 806)			int _g = 0;
-HXDLIN( 806)			int _g1 = _this->length;
-HXDLIN( 806)			while((_g < _g1)){
-HXLINE( 806)				_g = (_g + 1);
-HXDLIN( 806)				int i = (_g - 1);
-HXDLIN( 806)				{
-HXLINE( 806)					 ::snikket::JID inValue = ::snikket::JID_obj::parse(( (::String)(_hx_array_unsafe_get(_this,i)) ));
-HXDLIN( 806)					result->__unsafe_set(i,inValue);
+HXLINE( 809)			_hx_tmp = ::snikket::Date_obj::format(::Date_obj::now());
+            		}
+HXDLIN( 809)		message->timestamp = _hx_tmp;
+HXLINE( 810)		message->direction = 1;
+HXLINE( 811)		message->from = this->client->jid;
+HXLINE( 812)		message->sender = message->from->asBare();
+HXLINE( 813)		message->replyTo = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->sender);
+HXLINE( 814)		::Array< ::String > _this = this->counterparts();
+HXDLIN( 814)		::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(_this->length);
+HXDLIN( 814)		{
+HXLINE( 814)			int _g = 0;
+HXDLIN( 814)			int _g1 = _this->length;
+HXDLIN( 814)			while((_g < _g1)){
+HXLINE( 814)				_g = (_g + 1);
+HXDLIN( 814)				int i = (_g - 1);
+HXDLIN( 814)				{
+HXLINE( 814)					 ::snikket::JID inValue = ::snikket::JID_obj::parse(( (::String)(_hx_array_unsafe_get(_this,i)) ));
+HXDLIN( 814)					result->__unsafe_set(i,inValue);
             				}
             			}
             		}
-HXDLIN( 806)		message->recipients = result;
-HXLINE( 807)		message->to = message->recipients->__get(0).StaticCast<  ::snikket::JID >();
-HXLINE( 808)		return message;
+HXDLIN( 814)		message->recipients = result;
+HXLINE( 815)		message->to = message->recipients->__get(0).StaticCast<  ::snikket::JID >();
+HXLINE( 816)		return message;
             	}
 
 
@@ -356,151 +386,151 @@ HX_DEFINE_DYNAMIC_FUNC1(DirectChat_obj,prepareOutgoingMessage,return )
 void DirectChat_obj::correctMessage(::String localId, ::snikket::ChatMessageBuilder message){
             		HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_0, ::snikket::DirectChat,_gthis,::Array< ::Dynamic>,message1,::String,localId,::String,toSendId) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> corrected){
-            			HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_817_correctMessage)
-HXLINE( 818)			::Array< ::Dynamic> _hx_tmp;
-HXDLIN( 818)			 ::snikket::ChatMessage tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->__get((corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->length - 1)).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 818)			::String _hx_tmp1;
-HXDLIN( 818)			if (::hx::IsNotNull( tmp )) {
-HXLINE( 818)				_hx_tmp1 = tmp->localId;
+            			HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_825_correctMessage)
+HXLINE( 826)			::Array< ::Dynamic> _hx_tmp;
+HXDLIN( 826)			 ::snikket::ChatMessage tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->__get((corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->length - 1)).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 826)			::String _hx_tmp1;
+HXDLIN( 826)			if (::hx::IsNotNull( tmp )) {
+HXLINE( 826)				_hx_tmp1 = tmp->localId;
             			}
             			else {
-HXLINE( 818)				_hx_tmp1 = null();
+HXLINE( 826)				_hx_tmp1 = null();
             			}
-HXDLIN( 818)			if ((_hx_tmp1 == localId)) {
-HXLINE( 818)				_hx_tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions;
+HXDLIN( 826)			if ((_hx_tmp1 == localId)) {
+HXLINE( 826)				_hx_tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions;
             			}
             			else {
-HXLINE( 818)				_hx_tmp = ::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build());
-            			}
-HXDLIN( 818)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = _hx_tmp;
-HXLINE( 819)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = toSendId;
-HXLINE( 820)			{
-HXLINE( 820)				int _g = 0;
-HXDLIN( 820)				::Array< ::Dynamic> _g1 = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->recipients;
-HXDLIN( 820)				while((_g < _g1->length)){
-HXLINE( 820)					 ::snikket::JID recipient = _g1->__get(_g).StaticCast<  ::snikket::JID >();
-HXDLIN( 820)					_g = (_g + 1);
-HXLINE( 821)					message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->to = recipient;
-HXLINE( 822)					 ::snikket::Client _gthis1 = _gthis->client;
-HXDLIN( 822)					_gthis1->sendStanza(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza());
+HXLINE( 826)				_hx_tmp = ::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build());
+            			}
+HXDLIN( 826)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = _hx_tmp;
+HXLINE( 827)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = toSendId;
+HXLINE( 828)			{
+HXLINE( 828)				int _g = 0;
+HXDLIN( 828)				::Array< ::Dynamic> _g1 = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->recipients;
+HXDLIN( 828)				while((_g < _g1->length)){
+HXLINE( 828)					 ::snikket::JID recipient = _g1->__get(_g).StaticCast<  ::snikket::JID >();
+HXDLIN( 828)					_g = (_g + 1);
+HXLINE( 829)					message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->to = recipient;
+HXLINE( 830)					 ::snikket::Client _gthis1 = _gthis->client;
+HXDLIN( 830)					_gthis1->sendStanza(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza());
             				}
             			}
-HXLINE( 824)			 ::snikket::ChatMessage tmp1 = _gthis->lastMessage;
-HXDLIN( 824)			::String _hx_tmp2;
-HXDLIN( 824)			if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 824)				_hx_tmp2 = tmp1->localId;
+HXLINE( 832)			 ::snikket::ChatMessage tmp1 = _gthis->lastMessage;
+HXDLIN( 832)			::String _hx_tmp2;
+HXDLIN( 832)			if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 832)				_hx_tmp2 = tmp1->localId;
             			}
             			else {
-HXLINE( 824)				_hx_tmp2 = null();
+HXLINE( 832)				_hx_tmp2 = null();
             			}
-HXDLIN( 824)			if ((localId == _hx_tmp2)) {
-HXLINE( 825)				_gthis->setLastMessage(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >());
-HXLINE( 826)				_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXDLIN( 832)			if ((localId == _hx_tmp2)) {
+HXLINE( 833)				_gthis->setLastMessage(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >());
+HXLINE( 834)				_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             			}
-HXLINE( 828)			_gthis->client->notifyMessageHandlers(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
+HXLINE( 836)			_gthis->client->notifyMessageHandlers(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_812_correctMessage)
-HXDLIN( 812)		::Array< ::Dynamic> message1 = ::Array_obj< ::Dynamic>::__new(1)->init(0,message);
-HXDLIN( 812)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 813)		::String toSendId = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId;
-HXLINE( 814)		message1[0] = this->prepareOutgoingMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >());
-HXLINE( 815)		 ::snikket::ChatMessage _hx_tmp = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build();
-HXDLIN( 815)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = ::Array_obj< ::Dynamic>::__new(1)->init(0,_hx_tmp);
-HXLINE( 816)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = localId;
-HXLINE( 817)		 ::snikket::Client _hx_tmp1 = this->client;
-HXDLIN( 817)		_hx_tmp1->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()), ::Dynamic(new _hx_Closure_0(_gthis,message1,localId,toSendId)));
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_820_correctMessage)
+HXDLIN( 820)		::Array< ::Dynamic> message1 = ::Array_obj< ::Dynamic>::__new(1)->init(0,message);
+HXDLIN( 820)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 821)		::String toSendId = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId;
+HXLINE( 822)		message1[0] = this->prepareOutgoingMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >());
+HXLINE( 823)		 ::snikket::ChatMessage _hx_tmp = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build();
+HXDLIN( 823)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = ::Array_obj< ::Dynamic>::__new(1)->init(0,_hx_tmp);
+HXLINE( 824)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = localId;
+HXLINE( 825)		 ::snikket::Client _hx_tmp1 = this->client;
+HXDLIN( 825)		_hx_tmp1->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()), ::Dynamic(new _hx_Closure_0(_gthis,message1,localId,toSendId)));
             	}
 
 
 void DirectChat_obj::sendMessage( ::snikket::ChatMessageBuilder message){
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_833_sendMessage)
-HXDLIN( 833)		::Array< ::Dynamic> message1 = ::Array_obj< ::Dynamic>::__new(1)->init(0,message);
-HXDLIN( 833)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 834)		if (::hx::IsNotNull( this->typingTimer )) {
-HXLINE( 834)			this->typingTimer->stop();
-            		}
-HXLINE( 835)		this->client->chatActivity(::hx::ObjectPtr<OBJ_>(this),null());
-HXLINE( 836)		message1[0] = this->prepareOutgoingMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >());
-HXLINE( 837)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->to = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->recipients->__get(0).StaticCast<  ::snikket::JID >();
-HXLINE( 838)		 ::snikket::Stanza fromStanza = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza();
-HXDLIN( 838)		 ::snikket::MessageStanza fromStanza1 = ::snikket::Message_obj::fromStanza(fromStanza,this->client->jid,null())->parsed;
-HXLINE( 839)		switch((int)(fromStanza1->_hx_getIndex())){
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_841_sendMessage)
+HXDLIN( 841)		::Array< ::Dynamic> message1 = ::Array_obj< ::Dynamic>::__new(1)->init(0,message);
+HXDLIN( 841)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 842)		if (::hx::IsNotNull( this->typingTimer )) {
+HXLINE( 842)			this->typingTimer->stop();
+            		}
+HXLINE( 843)		this->client->chatActivity(::hx::ObjectPtr<OBJ_>(this),null());
+HXLINE( 844)		message1[0] = this->prepareOutgoingMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >());
+HXLINE( 845)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->to = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->recipients->__get(0).StaticCast<  ::snikket::JID >();
+HXLINE( 846)		 ::snikket::Stanza fromStanza = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza();
+HXDLIN( 846)		 ::snikket::MessageStanza fromStanza1 = ::snikket::Message_obj::fromStanza(fromStanza,this->client->jid,null())->parsed;
+HXLINE( 847)		switch((int)(fromStanza1->_hx_getIndex())){
             			case (int)1: {
             				HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::DirectChat,_gthis,::Array< ::Dynamic>,message1) HXARGC(1)
             				void _hx_run(::Array< ::Dynamic> stored){
-            					HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_841_sendMessage)
-HXLINE( 842)					{
-HXLINE( 842)						int _g = 0;
-HXDLIN( 842)						::Array< ::Dynamic> _g1 = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->recipients;
-HXDLIN( 842)						while((_g < _g1->length)){
-HXLINE( 842)							 ::snikket::JID recipient = _g1->__get(_g).StaticCast<  ::snikket::JID >();
-HXDLIN( 842)							_g = (_g + 1);
-HXLINE( 843)							message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->to = recipient;
-HXLINE( 844)							 ::snikket::Stanza stanza = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza();
-HXLINE( 845)							if (::hx::IsNotNull( _gthis->isActive )) {
-HXLINE( 846)								_gthis->isActive = true;
-HXLINE( 847)								_gthis->activeThread = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->threadId;
-HXLINE( 848)								stanza->tag(HX_("active",c6,41,46,16), ::Dynamic(::hx::Anon_obj::Create(1)
+            					HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_849_sendMessage)
+HXLINE( 850)					{
+HXLINE( 850)						int _g = 0;
+HXDLIN( 850)						::Array< ::Dynamic> _g1 = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->recipients;
+HXDLIN( 850)						while((_g < _g1->length)){
+HXLINE( 850)							 ::snikket::JID recipient = _g1->__get(_g).StaticCast<  ::snikket::JID >();
+HXDLIN( 850)							_g = (_g + 1);
+HXLINE( 851)							message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->to = recipient;
+HXLINE( 852)							 ::snikket::Stanza stanza = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza();
+HXLINE( 853)							if (::hx::IsNotNull( _gthis->isActive )) {
+HXLINE( 854)								_gthis->isActive = true;
+HXLINE( 855)								_gthis->activeThread = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->threadId;
+HXLINE( 856)								stanza->tag(HX_("active",c6,41,46,16), ::Dynamic(::hx::Anon_obj::Create(1)
             									->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/chatstates",8e,6d,41,6d))))->up();
             							}
-HXLINE( 850)							_gthis->client->sendStanza(stanza);
+HXLINE( 858)							_gthis->client->sendStanza(stanza);
             						}
             					}
-HXLINE( 852)					 ::snikket::DirectChat _gthis1 = _gthis;
-HXDLIN( 852)					_gthis1->setLastMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build());
-HXLINE( 853)					_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
-HXLINE( 854)					int _hx_tmp;
-HXDLIN( 854)					if ((stored->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->length > 1)) {
-HXLINE( 854)						_hx_tmp = 1;
+HXLINE( 860)					 ::snikket::DirectChat _gthis1 = _gthis;
+HXDLIN( 860)					_gthis1->setLastMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build());
+HXLINE( 861)					_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXLINE( 862)					int _hx_tmp;
+HXDLIN( 862)					if ((stored->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->length > 1)) {
+HXLINE( 862)						_hx_tmp = 1;
             					}
             					else {
-HXLINE( 854)						_hx_tmp = 0;
+HXLINE( 862)						_hx_tmp = 0;
             					}
-HXDLIN( 854)					_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),_hx_tmp);
+HXDLIN( 862)					_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),_hx_tmp);
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 840)				 ::snikket::ChatMessage _g = fromStanza1->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
-HXLINE( 841)				 ::snikket::Client _hx_tmp = this->client;
-HXDLIN( 841)				_hx_tmp->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()), ::Dynamic(new _hx_Closure_0(_gthis,message1)));
+HXLINE( 848)				 ::snikket::ChatMessage _g = fromStanza1->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
+HXLINE( 849)				 ::snikket::Client _hx_tmp = this->client;
+HXDLIN( 849)				_hx_tmp->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()), ::Dynamic(new _hx_Closure_0(_gthis,message1)));
             			}
             			break;
             			case (int)3: {
             				HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::DirectChat,_gthis,::Array< ::Dynamic>,message1) HXARGC(1)
             				void _hx_run( ::snikket::ChatMessage stored){
-            					HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_857_sendMessage)
-HXLINE( 858)					{
-HXLINE( 858)						int _g = 0;
-HXDLIN( 858)						::Array< ::Dynamic> _g1 = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->recipients;
-HXDLIN( 858)						while((_g < _g1->length)){
-HXLINE( 858)							 ::snikket::JID recipient = _g1->__get(_g).StaticCast<  ::snikket::JID >();
-HXDLIN( 858)							_g = (_g + 1);
-HXLINE( 859)							message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->to = recipient;
-HXLINE( 860)							 ::snikket::Client _gthis1 = _gthis->client;
-HXDLIN( 860)							_gthis1->sendStanza(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza());
+            					HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_865_sendMessage)
+HXLINE( 866)					{
+HXLINE( 866)						int _g = 0;
+HXDLIN( 866)						::Array< ::Dynamic> _g1 = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->recipients;
+HXDLIN( 866)						while((_g < _g1->length)){
+HXLINE( 866)							 ::snikket::JID recipient = _g1->__get(_g).StaticCast<  ::snikket::JID >();
+HXDLIN( 866)							_g = (_g + 1);
+HXLINE( 867)							message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->to = recipient;
+HXLINE( 868)							 ::snikket::Client _gthis1 = _gthis->client;
+HXDLIN( 868)							_gthis1->sendStanza(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza());
             						}
             					}
-HXLINE( 862)					if (::hx::IsNotNull( stored )) {
-HXLINE( 862)						_gthis->client->notifyMessageHandlers(stored,2);
+HXLINE( 870)					if (::hx::IsNotNull( stored )) {
+HXLINE( 870)						_gthis->client->notifyMessageHandlers(stored,2);
             					}
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 856)				 ::snikket::ReactionUpdate update = fromStanza1->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
-HXLINE( 857)				::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN( 857)				::snikket::Persistence_obj::storeReaction(_hx_tmp1,this->client->accountId(),update, ::Dynamic(new _hx_Closure_1(_gthis,message1)));
+HXLINE( 864)				 ::snikket::ReactionUpdate update = fromStanza1->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
+HXLINE( 865)				::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN( 865)				::snikket::Persistence_obj::storeReaction(_hx_tmp1,this->client->accountId(),update, ::Dynamic(new _hx_Closure_1(_gthis,message1)));
             			}
             			break;
             			default:{
-HXLINE( 865)				::haxe::Log_obj::trace(HX_("Invalid message",7e,ab,89,95), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE( 873)				::haxe::Log_obj::trace(HX_("Invalid message",7e,ab,89,95), ::Dynamic(::hx::Anon_obj::Create(5)
             					->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.DirectChat",12,9f,50,5b))
             					->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,fromStanza1))
             					->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("sendMessage",5f,89,1d,24))
             					->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Chat.hx",f4,6b,61,18))
-            					->setFixed(4,HX_("lineNumber",dd,81,22,76),865)));
-HXLINE( 866)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0,91));
+            					->setFixed(4,HX_("lineNumber",dd,81,22,76),873)));
+HXLINE( 874)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0,91));
             			}
             		}
             	}
@@ -509,165 +539,165 @@ HXLINE( 866)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0
 void DirectChat_obj::removeReaction( ::snikket::ChatMessage m, ::snikket::Reaction reaction){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::DirectChat,_gthis, ::snikket::ReactionUpdate,update3) HXARGC(1)
             		void _hx_run( ::snikket::ChatMessage stored){
-            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_893_removeReaction)
-HXLINE( 894)			 ::snikket::Stanza stanza = update3->asStanza();
-HXLINE( 895)			{
-HXLINE( 895)				int _g = 0;
-HXDLIN( 895)				::Array< ::String > _g1 = _gthis->counterparts();
-HXDLIN( 895)				while((_g < _g1->length)){
-HXLINE( 895)					::String recipient = _g1->__get(_g);
-HXDLIN( 895)					_g = (_g + 1);
-HXLINE( 896)					::Reflect_obj::setField(stanza->attr,HX_("to",7b,65,00,00),recipient);
-HXLINE( 897)					_gthis->client->sendStanza(stanza);
+            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_901_removeReaction)
+HXLINE( 902)			 ::snikket::Stanza stanza = update3->asStanza();
+HXLINE( 903)			{
+HXLINE( 903)				int _g = 0;
+HXDLIN( 903)				::Array< ::String > _g1 = _gthis->counterparts();
+HXDLIN( 903)				while((_g < _g1->length)){
+HXLINE( 903)					::String recipient = _g1->__get(_g);
+HXDLIN( 903)					_g = (_g + 1);
+HXLINE( 904)					::Reflect_obj::setField(stanza->attr,HX_("to",7b,65,00,00),recipient);
+HXLINE( 905)					_gthis->client->sendStanza(stanza);
             				}
             			}
-HXLINE( 899)			if (::hx::IsNotNull( stored )) {
-HXLINE( 899)				_gthis->client->notifyMessageHandlers(stored,2);
+HXLINE( 907)			if (::hx::IsNotNull( stored )) {
+HXLINE( 907)				_gthis->client->notifyMessageHandlers(stored,2);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_871_removeReaction)
-HXDLIN( 871)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 872)		if (::Std_obj::isOfType(reaction,::hx::ClassOf< ::snikket::CustomEmojiReaction >())) {
-HXLINE( 873)			if (::hx::IsNull( reaction->envelopeId )) {
-HXLINE( 873)				HX_STACK_DO_THROW(HX_("Cannot remove custom emoji reaction without envelopeId",90,e6,80,fb));
-            			}
-HXLINE( 874)			 ::snikket::ChatMessageBuilder correct = m->reply();
-HXLINE( 875)			correct->localId = ::snikket::ID_obj::_hx_long();
-HXLINE( 876)			correct->setHtml(HX_("",00,00,00,00));
-HXLINE( 877)			correct->text = null();
-HXLINE( 878)			this->correctMessage(reaction->envelopeId,correct);
-HXLINE( 879)			return;
-            		}
-HXLINE( 883)		::Array< ::Dynamic> reactions = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 884)		{
-HXLINE( 884)			::Dynamic map = m->reactions;
-HXDLIN( 884)			::Dynamic _g_map = map;
-HXDLIN( 884)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN( 884)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 884)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN( 884)				::Array< ::Dynamic> _g_value = ( (::Array< ::Dynamic>)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN( 884)				::String _g_key = key;
-HXDLIN( 884)				::String areaction = _g_key;
-HXDLIN( 884)				::Array< ::Dynamic> reacts = _g_value;
-HXLINE( 885)				if ((areaction != reaction->key)) {
+            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_879_removeReaction)
+HXDLIN( 879)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 880)		if (::Std_obj::isOfType(reaction,::hx::ClassOf< ::snikket::CustomEmojiReaction >())) {
+HXLINE( 881)			if (::hx::IsNull( reaction->envelopeId )) {
+HXLINE( 881)				HX_STACK_DO_THROW(HX_("Cannot remove custom emoji reaction without envelopeId",90,e6,80,fb));
+            			}
+HXLINE( 882)			 ::snikket::ChatMessageBuilder correct = m->reply();
+HXLINE( 883)			correct->localId = ::snikket::ID_obj::_hx_long();
+HXLINE( 884)			correct->setHtml(HX_("",00,00,00,00));
+HXLINE( 885)			correct->text = null();
+HXLINE( 886)			this->correctMessage(reaction->envelopeId,correct);
+HXLINE( 887)			return;
+            		}
+HXLINE( 891)		::Array< ::Dynamic> reactions = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 892)		{
+HXLINE( 892)			::Dynamic map = m->reactions;
+HXDLIN( 892)			::Dynamic _g_map = map;
+HXDLIN( 892)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN( 892)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 892)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN( 892)				::Array< ::Dynamic> _g_value = ( (::Array< ::Dynamic>)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN( 892)				::String _g_key = key;
+HXDLIN( 892)				::String areaction = _g_key;
+HXDLIN( 892)				::Array< ::Dynamic> reacts = _g_value;
+HXLINE( 893)				if ((areaction != reaction->key)) {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::DirectChat,_gthis) HXARGC(1)
             					bool _hx_run( ::snikket::Reaction r){
-            						HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_886_removeReaction)
-HXLINE( 886)						::String r1 = r->senderId;
-HXDLIN( 886)						return (r1 == _gthis->client->accountId());
+            						HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_894_removeReaction)
+HXLINE( 894)						::String r1 = r->senderId;
+HXDLIN( 894)						return (r1 == _gthis->client->accountId());
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 886)					 ::snikket::Reaction react = ( ( ::snikket::Reaction)(::Lambda_obj::find(reacts, ::Dynamic(new _hx_Closure_0(_gthis)))) );
-HXLINE( 887)					bool _hx_tmp;
-HXDLIN( 887)					if (::hx::IsNotNull( react )) {
-HXLINE( 887)						_hx_tmp = !(::Std_obj::isOfType(react,::hx::ClassOf< ::snikket::CustomEmojiReaction >()));
+HXLINE( 894)					 ::snikket::Reaction react = ( ( ::snikket::Reaction)(::Lambda_obj::find(reacts, ::Dynamic(new _hx_Closure_0(_gthis)))) );
+HXLINE( 895)					bool _hx_tmp;
+HXDLIN( 895)					if (::hx::IsNotNull( react )) {
+HXLINE( 895)						_hx_tmp = !(::Std_obj::isOfType(react,::hx::ClassOf< ::snikket::CustomEmojiReaction >()));
             					}
             					else {
-HXLINE( 887)						_hx_tmp = false;
+HXLINE( 895)						_hx_tmp = false;
             					}
-HXDLIN( 887)					if (_hx_tmp) {
-HXLINE( 888)						reactions->push(react);
+HXDLIN( 895)					if (_hx_tmp) {
+HXLINE( 896)						reactions->push(react);
             					}
             				}
             			}
             		}
-HXLINE( 892)		::String update = ::snikket::ID_obj::_hx_long();
-HXDLIN( 892)		::String m1 = m->localId;
-HXDLIN( 892)		::String update1 = m->chatId();
-HXDLIN( 892)		::String update2 = this->client->accountId();
-HXDLIN( 892)		 ::snikket::ReactionUpdate update3 =  ::snikket::ReactionUpdate_obj::__alloc( HX_CTX ,update,null(),null(),m1,update1,update2,::snikket::Date_obj::format(::Date_obj::now()),reactions,0);
-HXLINE( 893)		::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN( 893)		::String _hx_tmp2 = this->client->accountId();
-HXDLIN( 893)		::snikket::Persistence_obj::storeReaction(_hx_tmp1,_hx_tmp2,update3, ::Dynamic(new _hx_Closure_1(_gthis,update3)));
+HXLINE( 900)		::String update = ::snikket::ID_obj::_hx_long();
+HXDLIN( 900)		::String m1 = m->localId;
+HXDLIN( 900)		::String update1 = m->chatId();
+HXDLIN( 900)		::String update2 = this->client->accountId();
+HXDLIN( 900)		 ::snikket::ReactionUpdate update3 =  ::snikket::ReactionUpdate_obj::__alloc( HX_CTX ,update,null(),null(),m1,update1,update2,::snikket::Date_obj::format(::Date_obj::now()),reactions,0);
+HXLINE( 901)		::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN( 901)		::String _hx_tmp2 = this->client->accountId();
+HXDLIN( 901)		::snikket::Persistence_obj::storeReaction(_hx_tmp1,_hx_tmp2,update3, ::Dynamic(new _hx_Closure_1(_gthis,update3)));
             	}
 
 
 ::String DirectChat_obj::lastMessageId(){
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_905_lastMessageId)
-HXDLIN( 905)		 ::snikket::ChatMessage tmp = this->lastMessage;
-HXDLIN( 905)		::String tmp1;
-HXDLIN( 905)		if (::hx::IsNotNull( tmp )) {
-HXDLIN( 905)			tmp1 = tmp->localId;
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_913_lastMessageId)
+HXDLIN( 913)		 ::snikket::ChatMessage tmp = this->lastMessage;
+HXDLIN( 913)		::String tmp1;
+HXDLIN( 913)		if (::hx::IsNotNull( tmp )) {
+HXDLIN( 913)			tmp1 = tmp->localId;
             		}
             		else {
-HXDLIN( 905)			tmp1 = null();
+HXDLIN( 913)			tmp1 = null();
             		}
-HXDLIN( 905)		if (::hx::IsNotNull( tmp1 )) {
-HXDLIN( 905)			return tmp1;
+HXDLIN( 913)		if (::hx::IsNotNull( tmp1 )) {
+HXDLIN( 913)			return tmp1;
             		}
             		else {
-HXDLIN( 905)			 ::snikket::ChatMessage tmp2 = this->lastMessage;
-HXDLIN( 905)			if (::hx::IsNotNull( tmp2 )) {
-HXDLIN( 905)				return tmp2->serverId;
+HXDLIN( 913)			 ::snikket::ChatMessage tmp2 = this->lastMessage;
+HXDLIN( 913)			if (::hx::IsNotNull( tmp2 )) {
+HXDLIN( 913)				return tmp2->serverId;
             			}
             			else {
-HXDLIN( 905)				return null();
+HXDLIN( 913)				return null();
             			}
             		}
-HXDLIN( 905)		return null();
+HXDLIN( 913)		return null();
             	}
 
 
 void DirectChat_obj::markReadUpTo( ::snikket::ChatMessage message){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::DirectChat,_gthis, ::snikket::ChatMessage,message) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_910_markReadUpTo)
-HXLINE( 913)			bool _hx_tmp;
-HXDLIN( 913)			if (message->isIncoming()) {
-HXLINE( 913)				_hx_tmp = ::hx::IsNotNull( message->localId );
+            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_918_markReadUpTo)
+HXLINE( 921)			bool _hx_tmp;
+HXDLIN( 921)			if (message->isIncoming()) {
+HXLINE( 921)				_hx_tmp = ::hx::IsNotNull( message->localId );
             			}
             			else {
-HXLINE( 913)				_hx_tmp = false;
-            			}
-HXDLIN( 913)			if (_hx_tmp) {
-HXLINE( 914)				int _g = 0;
-HXDLIN( 914)				::Array< ::String > _g1 = _gthis->counterparts();
-HXDLIN( 914)				while((_g < _g1->length)){
-HXLINE( 914)					::String recipient = _g1->__get(_g);
-HXDLIN( 914)					_g = (_g + 1);
-HXLINE( 916)					::String stanza = ::snikket::ID_obj::_hx_long();
-HXDLIN( 916)					 ::snikket::Stanza stanza1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 921)				_hx_tmp = false;
+            			}
+HXDLIN( 921)			if (_hx_tmp) {
+HXLINE( 922)				int _g = 0;
+HXDLIN( 922)				::Array< ::String > _g1 = _gthis->counterparts();
+HXDLIN( 922)				while((_g < _g1->length)){
+HXLINE( 922)					::String recipient = _g1->__get(_g);
+HXDLIN( 922)					_g = (_g + 1);
+HXLINE( 924)					::String stanza = ::snikket::ID_obj::_hx_long();
+HXDLIN( 924)					 ::snikket::Stanza stanza1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(2)
             						->setFixed(0,HX_("id",db,5b,00,00),stanza)
             						->setFixed(1,HX_("to",7b,65,00,00),recipient)))->tag(HX_("displayed",21,17,db,c1), ::Dynamic(::hx::Anon_obj::Create(2)
             						->setFixed(0,HX_("id",db,5b,00,00),message->localId)
             						->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:chat-markers:0",96,b8,66,e7))))->up();
-HXLINE( 918)					if (::hx::IsNotNull( message->threadId )) {
-HXLINE( 919)						stanza1->textTag(HX_("thread",ca,7a,b9,8e),message->threadId,null());
+HXLINE( 926)					if (::hx::IsNotNull( message->threadId )) {
+HXLINE( 927)						stanza1->textTag(HX_("thread",ca,7a,b9,8e),message->threadId,null());
             					}
-HXLINE( 921)					_gthis->client->sendStanza(stanza1);
+HXLINE( 929)					_gthis->client->sendStanza(stanza1);
             				}
             			}
-HXLINE( 925)			_gthis->publishMds();
-HXLINE( 926)			_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXLINE( 933)			_gthis->publishMds();
+HXLINE( 934)			_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_909_markReadUpTo)
-HXDLIN( 909)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 910)		this->markReadUpToMessage(message, ::Dynamic(new _hx_Closure_0(_gthis,message)));
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_917_markReadUpTo)
+HXDLIN( 917)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 918)		this->markReadUpToMessage(message, ::Dynamic(new _hx_Closure_0(_gthis,message)));
             	}
 
 
 void DirectChat_obj::bookmark(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::DirectChat,_gthis) HXARGC(1)
             		void _hx_run( ::snikket::Stanza response){
-            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_941_bookmark)
-HXLINE( 942)			if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
-HXLINE( 942)				return;
+            			HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_949_bookmark)
+HXLINE( 950)			if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
+HXLINE( 950)				return;
             			}
-HXLINE( 943)			 ::snikket::GenericStream _gthis1 = _gthis->stream;
-HXDLIN( 943)			::String _gthis2 = _gthis->chatId;
-HXDLIN( 943)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("presence",3b,52,d7,66), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 951)			 ::snikket::GenericStream _gthis1 = _gthis->stream;
+HXDLIN( 951)			::String _gthis2 = _gthis->chatId;
+HXDLIN( 951)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("presence",3b,52,d7,66), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("id",db,5b,00,00),::snikket::ID_obj::_hx_short())
             				->setFixed(1,HX_("to",7b,65,00,00),_gthis2)
             				->setFixed(2,HX_("type",ba,f2,08,4d),HX_("subscribe",4a,0b,18,19)))));
-HXLINE( 944)			if (_gthis->isTrusted()) {
-HXLINE( 944)				 ::snikket::GenericStream _gthis3 = _gthis->stream;
-HXDLIN( 944)				::String _gthis4 = _gthis->chatId;
-HXDLIN( 944)				_gthis3->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("presence",3b,52,d7,66), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 952)			if (_gthis->isTrusted()) {
+HXLINE( 952)				 ::snikket::GenericStream _gthis3 = _gthis->stream;
+HXDLIN( 952)				::String _gthis4 = _gthis->chatId;
+HXDLIN( 952)				_gthis3->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("presence",3b,52,d7,66), ::Dynamic(::hx::Anon_obj::Create(3)
             					->setFixed(0,HX_("id",db,5b,00,00),::snikket::ID_obj::_hx_short())
             					->setFixed(1,HX_("to",7b,65,00,00),_gthis4)
             					->setFixed(2,HX_("type",ba,f2,08,4d),HX_("subscribed",da,d5,f1,db)))));
@@ -675,70 +705,70 @@ HXDLIN( 944)				_gthis3->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_931_bookmark)
-HXDLIN( 931)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 932)		 ::Dynamic attr =  ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_939_bookmark)
+HXDLIN( 939)		 ::snikket::DirectChat _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 940)		 ::Dynamic attr =  ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("jid",c5,ca,50,00),this->chatId));
-HXLINE( 933)		bool _hx_tmp;
-HXDLIN( 933)		bool _hx_tmp1;
-HXDLIN( 933)		if (::hx::IsNotNull( this->displayName )) {
-HXLINE( 933)			_hx_tmp1 = (this->displayName != HX_("",00,00,00,00));
+HXLINE( 941)		bool _hx_tmp;
+HXDLIN( 941)		bool _hx_tmp1;
+HXDLIN( 941)		if (::hx::IsNotNull( this->displayName )) {
+HXLINE( 941)			_hx_tmp1 = (this->displayName != HX_("",00,00,00,00));
             		}
             		else {
-HXLINE( 933)			_hx_tmp1 = false;
+HXLINE( 941)			_hx_tmp1 = false;
             		}
-HXDLIN( 933)		if (_hx_tmp1) {
-HXLINE( 933)			_hx_tmp = (this->displayName != this->chatId);
+HXDLIN( 941)		if (_hx_tmp1) {
+HXLINE( 941)			_hx_tmp = (this->displayName != this->chatId);
             		}
             		else {
-HXLINE( 933)			_hx_tmp = false;
+HXLINE( 941)			_hx_tmp = false;
             		}
-HXDLIN( 933)		if (_hx_tmp) {
-HXLINE( 934)			::String value = this->displayName;
-HXDLIN( 934)			::Reflect_obj::setField(attr,HX_("name",4b,72,ff,48),value);
+HXDLIN( 941)		if (_hx_tmp) {
+HXLINE( 942)			::String value = this->displayName;
+HXDLIN( 942)			::Reflect_obj::setField(attr,HX_("name",4b,72,ff,48),value);
             		}
-HXLINE( 936)		 ::snikket::GenericStream _hx_tmp2 = this->stream;
-HXDLIN( 936)		_hx_tmp2->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 944)		 ::snikket::GenericStream _hx_tmp2 = this->stream;
+HXDLIN( 944)		_hx_tmp2->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))))->tag(HX_("query",08,8b,ea,5d), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("jabber:iq:roster",47,76,6e,06))))->tag(HX_("item",13,c5,bf,45),attr)->up()->up(), ::Dynamic(new _hx_Closure_0(_gthis)));
             	}
 
 
 void DirectChat_obj::sendChatState(::String state,::String threadId){
-            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_950_sendChatState)
-HXDLIN( 950)		int _g = 0;
-HXDLIN( 950)		::Array< ::String > _g1 = this->counterparts();
-HXDLIN( 950)		while((_g < _g1->length)){
-HXDLIN( 950)			::String recipient = _g1->__get(_g);
-HXDLIN( 950)			_g = (_g + 1);
-HXLINE( 952)			::String stanza = ::snikket::ID_obj::_hx_long();
-HXLINE( 954)			::String stanza1 = this->client->jid->asString();
-HXLINE( 951)			 ::snikket::Stanza stanza2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(4)
+            	HX_GC_STACKFRAME(&_hx_pos_af7b91d6026813b6_958_sendChatState)
+HXDLIN( 958)		int _g = 0;
+HXDLIN( 958)		::Array< ::String > _g1 = this->counterparts();
+HXDLIN( 958)		while((_g < _g1->length)){
+HXDLIN( 958)			::String recipient = _g1->__get(_g);
+HXDLIN( 958)			_g = (_g + 1);
+HXLINE( 960)			::String stanza = ::snikket::ID_obj::_hx_long();
+HXLINE( 962)			::String stanza1 = this->client->jid->asString();
+HXLINE( 959)			 ::snikket::Stanza stanza2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(4)
             				->setFixed(0,HX_("id",db,5b,00,00),stanza)
             				->setFixed(1,HX_("to",7b,65,00,00),recipient)
             				->setFixed(2,HX_("from",6a,a5,c2,43),stanza1)
             				->setFixed(3,HX_("type",ba,f2,08,4d),HX_("chat",d8,5e,bf,41))))->tag(state, ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/chatstates",8e,6d,41,6d))))->up();
-HXLINE( 959)			if (::hx::IsNotNull( threadId )) {
-HXLINE( 960)				stanza2->textTag(HX_("thread",ca,7a,b9,8e),threadId,null());
+HXLINE( 967)			if (::hx::IsNotNull( threadId )) {
+HXLINE( 968)				stanza2->textTag(HX_("thread",ca,7a,b9,8e),threadId,null());
             			}
-HXLINE( 962)			this->stream->sendStanza(stanza2);
+HXLINE( 970)			this->stream->sendStanza(stanza2);
             		}
             	}
 
 
 void DirectChat_obj::close(){
-            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_967_close)
-HXLINE( 968)		if (::hx::IsNotNull( this->typingTimer )) {
-HXLINE( 968)			this->typingTimer->stop();
+            	HX_STACKFRAME(&_hx_pos_af7b91d6026813b6_975_close)
+HXLINE( 976)		if (::hx::IsNotNull( this->typingTimer )) {
+HXLINE( 976)			this->typingTimer->stop();
             		}
-HXLINE( 970)		this->uiState = 2;
-HXLINE( 971)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN( 971)		::snikket::Persistence_obj::storeChats(_hx_tmp,this->client->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
-HXLINE( 972)		if (!(this->isBlocked)) {
-HXLINE( 972)			this->sendChatState(HX_("gone",5f,94,69,44),null());
+HXLINE( 978)		this->uiState = 2;
+HXLINE( 979)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN( 979)		::snikket::Persistence_obj::storeChats(_hx_tmp,this->client->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
+HXLINE( 980)		if (!(this->isBlocked)) {
+HXLINE( 980)			this->sendChatState(HX_("gone",5f,94,69,44),null());
             		}
-HXLINE( 973)		this->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
+HXLINE( 981)		this->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/SerializedChat.cpp b/Sources/c_snikket/src/snikket/SerializedChat.cpp
index 99367e9..f32d037 100644
--- a/Sources/c_snikket/src/snikket/SerializedChat.cpp
+++ b/Sources/c_snikket/src/snikket/SerializedChat.cpp
@@ -47,54 +47,54 @@
 #include <snikket/_Stanza/NodeInterface.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_59459d97d9a61381_1589_new,"snikket.SerializedChat","new",0xcbfecbdf,"snikket.SerializedChat.new","snikket/Chat.hx",1589,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_59459d97d9a61381_1607_toChat,"snikket.SerializedChat","toChat",0x0e8ec7d4,"snikket.SerializedChat.toChat","snikket/Chat.hx",1607,0x18616bf4)
+HX_DEFINE_STACK_FRAME(_hx_pos_59459d97d9a61381_1597_new,"snikket.SerializedChat","new",0xcbfecbdf,"snikket.SerializedChat.new","snikket/Chat.hx",1597,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_59459d97d9a61381_1615_toChat,"snikket.SerializedChat","toChat",0x0e8ec7d4,"snikket.SerializedChat.toChat","snikket/Chat.hx",1615,0x18616bf4)
 static const ::String _hx_array_data_8cddf06d_3[] = {
 	HX_("http://jabber.org/protocol/muc",07,b2,7f,c6),
 };
 namespace snikket{
 
 void SerializedChat_obj::__construct(::String chatId,bool trusted,::Array< unsigned char > avatarSha1, ::haxe::ds::StringMap presence,::String displayName, ::Dynamic uiState, ::Dynamic isBlocked,::String extensions,::String readUpToId,::String readUpToBy, ::Dynamic notificationsFiltered,bool notifyMention,bool notifyReply, ::snikket::Caps disco,::String klass){
-            	HX_STACKFRAME(&_hx_pos_59459d97d9a61381_1589_new)
-HXLINE(1590)		this->chatId = chatId;
-HXLINE(1591)		this->trusted = trusted;
-HXLINE(1592)		this->avatarSha1 = avatarSha1;
-HXLINE(1593)		this->presence = presence;
-HXLINE(1594)		this->displayName = displayName;
-HXLINE(1595)		 ::Dynamic tmp = uiState;
-HXDLIN(1595)		int _hx_tmp;
-HXDLIN(1595)		if (::hx::IsNotNull( tmp )) {
-HXLINE(1595)			_hx_tmp = ( (int)(tmp) );
+            	HX_STACKFRAME(&_hx_pos_59459d97d9a61381_1597_new)
+HXLINE(1598)		this->chatId = chatId;
+HXLINE(1599)		this->trusted = trusted;
+HXLINE(1600)		this->avatarSha1 = avatarSha1;
+HXLINE(1601)		this->presence = presence;
+HXLINE(1602)		this->displayName = displayName;
+HXLINE(1603)		 ::Dynamic tmp = uiState;
+HXDLIN(1603)		int _hx_tmp;
+HXDLIN(1603)		if (::hx::IsNotNull( tmp )) {
+HXLINE(1603)			_hx_tmp = ( (int)(tmp) );
             		}
             		else {
-HXLINE(1595)			_hx_tmp = 1;
+HXLINE(1603)			_hx_tmp = 1;
             		}
-HXDLIN(1595)		this->uiState = _hx_tmp;
-HXLINE(1596)		 ::Dynamic tmp1 = isBlocked;
-HXDLIN(1596)		bool _hx_tmp1;
-HXDLIN(1596)		if (::hx::IsNotNull( tmp1 )) {
-HXLINE(1596)			_hx_tmp1 = ( (bool)(tmp1) );
+HXDLIN(1603)		this->uiState = _hx_tmp;
+HXLINE(1604)		 ::Dynamic tmp1 = isBlocked;
+HXDLIN(1604)		bool _hx_tmp1;
+HXDLIN(1604)		if (::hx::IsNotNull( tmp1 )) {
+HXLINE(1604)			_hx_tmp1 = ( (bool)(tmp1) );
             		}
             		else {
-HXLINE(1596)			_hx_tmp1 = false;
+HXLINE(1604)			_hx_tmp1 = false;
             		}
-HXDLIN(1596)		this->isBlocked = _hx_tmp1;
-HXLINE(1597)		::String tmp2 = extensions;
-HXDLIN(1597)		::String _hx_tmp2;
-HXDLIN(1597)		if (::hx::IsNotNull( tmp2 )) {
-HXLINE(1597)			_hx_tmp2 = tmp2;
+HXDLIN(1604)		this->isBlocked = _hx_tmp1;
+HXLINE(1605)		::String tmp2 = extensions;
+HXDLIN(1605)		::String _hx_tmp2;
+HXDLIN(1605)		if (::hx::IsNotNull( tmp2 )) {
+HXLINE(1605)			_hx_tmp2 = tmp2;
             		}
             		else {
-HXLINE(1597)			_hx_tmp2 = HX_("<extensions xmlns='urn:app:bookmarks:1' />",84,43,42,a9);
+HXLINE(1605)			_hx_tmp2 = HX_("<extensions xmlns='urn:app:bookmarks:1' />",84,43,42,a9);
             		}
-HXDLIN(1597)		this->extensions = _hx_tmp2;
-HXLINE(1598)		this->readUpToId = readUpToId;
-HXLINE(1599)		this->readUpToBy = readUpToBy;
-HXLINE(1600)		this->notificationsFiltered = notificationsFiltered;
-HXLINE(1601)		this->notifyMention = notifyMention;
-HXLINE(1602)		this->notifyReply = notifyReply;
-HXLINE(1603)		this->disco = disco;
-HXLINE(1604)		this->klass = klass;
+HXDLIN(1605)		this->extensions = _hx_tmp2;
+HXLINE(1606)		this->readUpToId = readUpToId;
+HXLINE(1607)		this->readUpToBy = readUpToBy;
+HXLINE(1608)		this->notificationsFiltered = notificationsFiltered;
+HXLINE(1609)		this->notifyMention = notifyMention;
+HXLINE(1610)		this->notifyReply = notifyReply;
+HXLINE(1611)		this->disco = disco;
+HXLINE(1612)		this->klass = klass;
             	}
 
 Dynamic SerializedChat_obj::__CreateEmpty() { return new SerializedChat_obj; }
@@ -113,72 +113,72 @@ bool SerializedChat_obj::_hx_isInstanceOf(int inClassId) {
 }
 
  ::snikket::Chat SerializedChat_obj::toChat( ::snikket::Client client, ::snikket::GenericStream stream,::Dynamic persistence){
-            	HX_GC_STACKFRAME(&_hx_pos_59459d97d9a61381_1607_toChat)
-HXLINE(1608)		 ::snikket::Stanza extensionsStanza = ::snikket::Stanza_obj::parse(this->extensions);
-HXLINE(1609)		bool filterN;
-HXDLIN(1609)		 ::Dynamic tmp = this->notificationsFiltered;
-HXDLIN(1609)		if (::hx::IsNotNull( tmp )) {
-HXLINE(1609)			filterN = ( (bool)(tmp) );
+            	HX_GC_STACKFRAME(&_hx_pos_59459d97d9a61381_1615_toChat)
+HXLINE(1616)		 ::snikket::Stanza extensionsStanza = ::snikket::Stanza_obj::parse(this->extensions);
+HXLINE(1617)		bool filterN;
+HXDLIN(1617)		 ::Dynamic tmp = this->notificationsFiltered;
+HXDLIN(1617)		if (::hx::IsNotNull( tmp )) {
+HXLINE(1617)			filterN = ( (bool)(tmp) );
             		}
             		else {
-HXLINE(1609)			filterN = false;
+HXLINE(1617)			filterN = false;
             		}
-HXLINE(1610)		bool mention = this->notifyMention;
-HXLINE(1612)		 ::snikket::Chat chat;
-HXDLIN(1612)		if ((this->klass == HX_("DirectChat",c1,22,a3,05))) {
-HXLINE(1612)			chat =  ::snikket::DirectChat_obj::__alloc( HX_CTX ,client,stream,persistence,this->chatId,this->uiState,this->isBlocked,extensionsStanza,this->readUpToId,this->readUpToBy);
+HXLINE(1618)		bool mention = this->notifyMention;
+HXLINE(1620)		 ::snikket::Chat chat;
+HXDLIN(1620)		if ((this->klass == HX_("DirectChat",c1,22,a3,05))) {
+HXLINE(1620)			chat =  ::snikket::DirectChat_obj::__alloc( HX_CTX ,client,stream,persistence,this->chatId,this->uiState,this->isBlocked,extensionsStanza,this->readUpToId,this->readUpToBy);
             		}
             		else {
-HXLINE(1614)			if ((this->klass == HX_("Channel",a3,28,23,9a))) {
-HXLINE(1615)				 ::snikket::Channel channel =  ::snikket::Channel_obj::__alloc( HX_CTX ,client,stream,persistence,this->chatId,this->uiState,this->isBlocked,extensionsStanza,this->readUpToId,this->readUpToBy,null());
-HXLINE(1616)				 ::snikket::Caps tmp1 = this->disco;
-HXDLIN(1616)				 ::snikket::Caps chat1;
-HXDLIN(1616)				if (::hx::IsNotNull( tmp1 )) {
-HXLINE(1616)					chat1 = tmp1;
+HXLINE(1622)			if ((this->klass == HX_("Channel",a3,28,23,9a))) {
+HXLINE(1623)				 ::snikket::Channel channel =  ::snikket::Channel_obj::__alloc( HX_CTX ,client,stream,persistence,this->chatId,this->uiState,this->isBlocked,extensionsStanza,this->readUpToId,this->readUpToBy,null());
+HXLINE(1624)				 ::snikket::Caps tmp1 = this->disco;
+HXDLIN(1624)				 ::snikket::Caps chat1;
+HXDLIN(1624)				if (::hx::IsNotNull( tmp1 )) {
+HXLINE(1624)					chat1 = tmp1;
             				}
             				else {
-HXLINE(1616)					chat1 =  ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::fromData( _hx_array_data_8cddf06d_3,1),null());
+HXLINE(1624)					chat1 =  ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::fromData( _hx_array_data_8cddf06d_3,1),null());
             				}
-HXDLIN(1616)				channel->disco = chat1;
-HXLINE(1617)				bool chat2;
-HXDLIN(1617)				if (::hx::IsNull( this->notificationsFiltered )) {
-HXLINE(1617)					chat2 = !(channel->isPrivate());
+HXDLIN(1624)				channel->disco = chat1;
+HXLINE(1625)				bool chat2;
+HXDLIN(1625)				if (::hx::IsNull( this->notificationsFiltered )) {
+HXLINE(1625)					chat2 = !(channel->isPrivate());
             				}
             				else {
-HXLINE(1617)					chat2 = false;
+HXLINE(1625)					chat2 = false;
             				}
-HXDLIN(1617)				if (chat2) {
-HXLINE(1618)					filterN = true;
-HXDLIN(1618)					mention = filterN;
+HXDLIN(1625)				if (chat2) {
+HXLINE(1626)					filterN = true;
+HXDLIN(1626)					mention = filterN;
             				}
-HXLINE(1612)				chat = channel;
+HXLINE(1620)				chat = channel;
             			}
             			else {
-HXLINE(1622)				HX_STACK_DO_THROW((((HX_("Unknown class of ",0b,cb,7f,f2) + this->chatId) + HX_(": ",a6,32,00,00)) + this->klass));
+HXLINE(1630)				HX_STACK_DO_THROW((((HX_("Unknown class of ",0b,cb,7f,f2) + this->chatId) + HX_(": ",a6,32,00,00)) + this->klass));
             			}
             		}
-HXLINE(1624)		chat->setNotificationsInternal(filterN,mention,this->notifyReply);
-HXLINE(1625)		if (::hx::IsNotNull( this->displayName )) {
-HXLINE(1625)			chat->displayName = this->displayName;
+HXLINE(1632)		chat->setNotificationsInternal(filterN,mention,this->notifyReply);
+HXLINE(1633)		if (::hx::IsNotNull( this->displayName )) {
+HXLINE(1633)			chat->displayName = this->displayName;
             		}
-HXLINE(1626)		if (::hx::IsNotNull( this->avatarSha1 )) {
-HXLINE(1626)			chat->setAvatarSha1(this->avatarSha1);
+HXLINE(1634)		if (::hx::IsNotNull( this->avatarSha1 )) {
+HXLINE(1634)			chat->setAvatarSha1(this->avatarSha1);
             		}
-HXLINE(1627)		chat->setTrusted(this->trusted);
-HXLINE(1628)		{
-HXLINE(1628)			::Dynamic map = this->presence;
-HXDLIN(1628)			::Dynamic _g_map = map;
-HXDLIN(1628)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN(1628)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE(1628)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN(1628)				 ::snikket::Presence _g_value = ( ( ::snikket::Presence)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN(1628)				::String _g_key = key;
-HXDLIN(1628)				::String resource = _g_key;
-HXDLIN(1628)				 ::snikket::Presence p = _g_value;
-HXLINE(1629)				chat->setPresence(resource,p);
+HXLINE(1635)		chat->setTrusted(this->trusted);
+HXLINE(1636)		{
+HXLINE(1636)			::Dynamic map = this->presence;
+HXDLIN(1636)			::Dynamic _g_map = map;
+HXDLIN(1636)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN(1636)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE(1636)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN(1636)				 ::snikket::Presence _g_value = ( ( ::snikket::Presence)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN(1636)				::String _g_key = key;
+HXDLIN(1636)				::String resource = _g_key;
+HXDLIN(1636)				 ::snikket::Presence p = _g_value;
+HXLINE(1637)				chat->setPresence(resource,p);
             			}
             		}
-HXLINE(1631)		return chat;
+HXLINE(1639)		return chat;
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/persistence/Sqlite.cpp b/Sources/c_snikket/src/snikket/persistence/Sqlite.cpp
index 9915070..f303451 100644
--- a/Sources/c_snikket/src/snikket/persistence/Sqlite.cpp
+++ b/Sources/c_snikket/src/snikket/persistence/Sqlite.cpp
@@ -1405,7 +1405,7 @@ HXLINE( 405)			return _gthis->hydrateReactions(accountId,messages);
 
             	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_366_getMessages)
 HXDLIN( 366)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 367)		::String q = HX_("SELECT\n\t\t\tcorrection_id AS stanza_id,\n\t\t\tversions.stanza,\n\t\t\tjson_group_object(CASE WHEN versions.mam_id IS NULL OR versions.mam_id='' THEN versions.stanza_id ELSE versions.mam_id END, strftime('%FT%H:%M:%fZ', versions.created_at / 1000.0, 'unixepoch')) AS version_times,\n\t\t\tjson_group_object(CASE WHEN versions.mam_id IS NULL OR versions.mam_id='' THEN versions.stanza_id ELSE versions.mam_id END, versions.stanza) AS versions,\n\t\t\tmessages.direction,\n\t\t\tmessages.type,\n\t\t\tmessages.status,\n\t\t\tstrftime('%FT%H:%M:%fZ', messages.created_at / 1000.0, 'unixepoch') AS timestamp,\n\t\t\tmessages.sender_id,\n\t\t\tmessages.mam_id,\n\t\t\tmessages.mam_by,\n\t\t\tmessages.sync_point,\n\t\t\tMAX(versions.created_at)\n\t\t\tFROM messages INNER JOIN messages versions USING (correction_id) WHERE (messages.stanza_id IS NULL OR messages.stanza_id='' OR messages.stanza_id=correction_id) AND messages.account_id=? AND messages.chat_id=?",23,4e,0b,77);
+HXLINE( 367)		::String q = HX_("SELECT\n\t\t\tcorrection_id AS stanza_id,\n\t\t\tversions.stanza,\n\t\t\tjson_group_object(CASE WHEN versions.mam_id IS NULL OR versions.mam_id='' THEN versions.stanza_id ELSE versions.mam_id END, strftime('%FT%H:%M:%fZ', versions.created_at / 1000.0, 'unixepoch')) AS version_times,\n\t\t\tjson_group_object(CASE WHEN versions.mam_id IS NULL OR versions.mam_id='' THEN versions.stanza_id ELSE versions.mam_id END, versions.stanza) AS versions,\n\t\t\tmessages.direction,\n\t\t\tmessages.type,\n\t\t\tmessages.status,\n\t\t\tstrftime('%FT%H:%M:%fZ', messages.created_at / 1000.0, 'unixepoch') AS timestamp,\n\t\t\tmessages.sender_id,\n\t\t\tmessages.mam_id,\n\t\t\tmessages.mam_by,\n\t\t\tmessages.sync_point,\n\t\t\tMAX(versions.created_at)\n\t\t\tFROM messages INNER JOIN messages versions USING (correction_id, sender_id) WHERE (messages.stanza_id IS NULL OR messages.stanza_id='' OR messages.stanza_id=correction_id) AND messages.account_id=? AND messages.chat_id=?",2a,9e,b1,ea);
 HXLINE( 382)		::Array< ::String > params = ::Array_obj< ::String >::__new(2)->init(0,accountId)->init(1,chatId);
 HXLINE( 383)		if (::hx::IsNotNull( time )) {
 HXLINE( 384)			q = (q + ((HX_(" AND messages.created_at ",3d,a0,ae,bb) + op) + HX_("CAST(unixepoch(?, 'subsec') * 1000 AS INTEGER)",17,de,5d,f8)));
diff --git a/Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp b/Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp
index d149243..0a3dfd2 100644
--- a/Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp
+++ b/Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp
@@ -85,7 +85,7 @@ HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_358_strophe_connect,"snikket.strea
 HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_435_parseStanza,"snikket.streams.XmppStropheStream","parseStanza",0x685ccb88,"snikket.streams.XmppStropheStream.parseStanza","snikket/streams/XmppStropheStream.hx",435,0x06c67012)
 HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_443_convertToStanza,"snikket.streams.XmppStropheStream","convertToStanza",0x53baabe3,"snikket.streams.XmppStropheStream.convertToStanza","snikket/streams/XmppStropheStream.hx",443,0x06c67012)
 
-xmpp_log_t *logger = getenv("SNIKKET_XMPP_DEBUG") ? xmpp_get_default_logger(XMPP_LEVEL_DEBUG) : 0;
+xmpp_log_t *logger = xmpp_get_default_logger(XMPP_LEVEL_DEBUG);
 xmpp_ctx_t* snikket::streams::XmppStropheStream_obj::ctx = xmpp_ctx_new(0,logger);
 
 namespace snikket{
diff --git a/Sources/strophe/libstrophe b/Sources/strophe/libstrophe
index 51be03d..77c9608 160000
--- a/Sources/strophe/libstrophe
+++ b/Sources/strophe/libstrophe
@@ -1 +1 @@
-Subproject commit 51be03d58266ba23d099ba4a76354fae2751e3a1
+Subproject commit 77c960814c6ea806cffcc65d93822fb51ff8f623