From 6832e47eb50febb456113aad0ef3dc41fefb60a2 Mon Sep 17 00:00:00 2001
From: 1004268 <isaac.pedrozaaguirre@student.unimelb.edu.au>
Date: Fri, 25 Oct 2019 16:00:08 +1100
Subject: [PATCH] Join Approval and pop-ups

---
 .idea/workspace.xml                           |  26 +++++++
 .../GUI/ApplicationMain$1.class               | Bin 685 -> 685 bytes
 .../infinitymonkeys/GUI/ApplicationMain.class | Bin 5480 -> 5346 bytes
 .../infinitymonkeys/GUI/ChatScreen$1.class    | Bin 3123 -> 3123 bytes
 .../infinitymonkeys/GUI/ChatScreen.class      | Bin 7290 -> 7616 bytes
 .../infinitymonkeys/GUI/PaintGUI.class        | Bin 7723 -> 8004 bytes
 .../infinitymonkeys/GUI/StartScreen$1.class   | Bin 2405 -> 1009 bytes
 .../infinitymonkeys/GUI/StartScreen$2.class   | Bin 782 -> 2475 bytes
 .../infinitymonkeys/GUI/StartScreen$3.class   | Bin 0 -> 782 bytes
 .../infinitymonkeys/GUI/StartScreen.class     | Bin 6295 -> 7347 bytes
 .../infinitymonkeys/client/Client.class       | Bin 5948 -> 5873 bytes
 .../client/ClientUpdate$1.class               | Bin 776 -> 829 bytes
 .../infinitymonkeys/client/ClientUpdate.class | Bin 3499 -> 3826 bytes
 .../remote/IClientController$Action.class     | Bin 1131 -> 1081 bytes
 .../remote/IClientController.class            | Bin 796 -> 812 bytes
 .../remote/IClientUpdate$Action.class         | Bin 1099 -> 1154 bytes
 .../remote/IClientUpdate.class                | Bin 509 -> 509 bytes
 .../server/ClientController$1.class           | Bin 760 -> 760 bytes
 .../server/ClientController.class             | Bin 6351 -> 6744 bytes
 .../infinitymonkeys/server/Server.class       | Bin 3251 -> 3306 bytes
 src/GUI/ApplicationMain.java                  |  15 ++--
 src/GUI/ChatScreen.java                       |  12 +++-
 src/GUI/PaintGUI.java                         |  14 ++++
 src/GUI/StartScreen.form                      |  51 +++++++++++---
 src/GUI/StartScreen.java                      |  44 ++++++++----
 src/client/Client.java                        |  22 ++----
 src/client/ClientUpdate.java                  |  13 +++-
 src/remote/IClientController.java             |   7 +-
 src/remote/IClientUpdate.java                 |   4 +-
 src/server/ClientController.java              |  64 ++++++++++++------
 src/server/Server.java                        |   2 +
 31 files changed, 196 insertions(+), 78 deletions(-)
 create mode 100644 out/production/infinitymonkeys/GUI/StartScreen$3.class

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 307e286..cd07381 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -6,13 +6,32 @@
       <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/ApplicationMain$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/ApplicationMain$1.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/ApplicationMain.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/ApplicationMain.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/ChatScreen$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/ChatScreen$1.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/ChatScreen.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/ChatScreen.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/PaintGUI.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/PaintGUI.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/StartScreen$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/StartScreen$1.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/StartScreen$2.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/StartScreen$2.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/StartScreen.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/GUI/StartScreen.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/client/Client.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/client/Client.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/client/ClientUpdate$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/client/ClientUpdate$1.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/client/ClientUpdate.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/client/ClientUpdate.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/remote/IClientController$Action.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/remote/IClientController$Action.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/remote/IClientController.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/remote/IClientController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/remote/IClientUpdate$Action.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/remote/IClientUpdate$Action.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/remote/IClientUpdate.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/remote/IClientUpdate.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/server/ClientController$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/server/ClientController$1.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/server/ClientController.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/server/ClientController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/out/production/infinitymonkeys/server/Server.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/server/Server.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/GUI/ApplicationMain.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GUI/ApplicationMain.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/GUI/ChatScreen.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GUI/ChatScreen.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/GUI/PaintGUI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GUI/PaintGUI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/GUI/StartScreen.form" beforeDir="false" afterPath="$PROJECT_DIR$/src/GUI/StartScreen.form" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/GUI/StartScreen.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GUI/StartScreen.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/client/Client.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/client/Client.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/client/ClientUpdate.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/client/ClientUpdate.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/remote/IClientController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/remote/IClientController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/remote/IClientUpdate.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/remote/IClientUpdate.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/server/ClientController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/server/ClientController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/server/Server.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/server/Server.java" afterDir="false" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
@@ -24,6 +43,13 @@
     <option name="testRunner" value="GRADLE" />
     <option name="delegatedBuild" value="true" />
   </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Class" />
+      </list>
+    </option>
+  </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
     <option name="RECENT_BRANCH_BY_REPOSITORY">
diff --git a/out/production/infinitymonkeys/GUI/ApplicationMain$1.class b/out/production/infinitymonkeys/GUI/ApplicationMain$1.class
index 9da93fe0fd73725e577d5b9ba69a3176d358c79e..fcdc48602cd2ed6ab5078d1bea4bbab1255dd03a 100644
GIT binary patch
delta 23
ecmZ3>x|Vf=91~;CWO*h})&d50hQi6YOb!4`js?yD

delta 23
ecmZ3>x|Vf=91~;iWO*h})<On$hN8*2Ob!4`s|C>j

diff --git a/out/production/infinitymonkeys/GUI/ApplicationMain.class b/out/production/infinitymonkeys/GUI/ApplicationMain.class
index 1bf2fdcad9c9b55e317a65ae344460242967937c..b19dc9d9b2eada94e9f2c8851184354cf191d3c1 100644
GIT binary patch
delta 2629
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
VSxpR{3=9lh42%rApvsVe0RW9b^l1P9

delta 2802
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
Jfoezw1^^NwBya!#

diff --git a/out/production/infinitymonkeys/GUI/ChatScreen$1.class b/out/production/infinitymonkeys/GUI/ChatScreen$1.class
index 07f8ee41c99d3c6317448f4b363d6dad253fe0b1..790e81e667f103031c8e45d78f22ffb1d5ee5de7 100644
GIT binary patch
delta 153
zcmdliu~}ln9}dRM&3`#|G1liW@G;~uNHXLzs4^5V7%&twSTK|_xHFV91Ts`Iq%qVo
zR53I&)G{<M)H5_Ov@o<Vv@^6aOl4?i*v`<waGarw;VMH9!vlt1hIb4T7``z~WaMC&
z#>mYunUR-aDx(m?3`S9gnT*N|a~Sm)<}%taEMRnDSjZU0u#_>9VKHMg8^aRD1cnup
IZMeS!03@*|SO5S3

delta 153
zcmdliu~}ln9}dRE&3`#|G1jLr@G+z@NHU}|s4`?Q7%*frSTN)=xHIH41Tqvdq%o8-
zR54UD)G|~s)H75uv@p~#v@_H)Ol7EN*v`<vaGaru;VMH5!vls^hIb4d4Br?!895mG
z7`Yj`8F?9c8HE@oFp4rvWK?FD!l=hEmC=S_2BQnZOvW&Vxr~tvvl*k=80Ii0Ff5pC
H!~Goq)2b#w

diff --git a/out/production/infinitymonkeys/GUI/ChatScreen.class b/out/production/infinitymonkeys/GUI/ChatScreen.class
index 46d8367ae972f7677755c399620f7213700f8aaf..24e02855f9471b8d068e3d2a0c3f59575a2cf3ac 100644
GIT binary patch
literal 7616
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

literal 7290
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

diff --git a/out/production/infinitymonkeys/GUI/PaintGUI.class b/out/production/infinitymonkeys/GUI/PaintGUI.class
index 2f6725da139d32563c716118e1249fad9798d7cc..67b2337d0fbc2a6ad287527d86196b8f5d27c0c3 100644
GIT binary patch
delta 2607
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

delta 2211
zcmX?Nx7w!u)W2Q(7#J8#7*}yIv@pB_5%0MeBp5!hGkoM=_{72RnS<dA2g6qmhHo4U
z-#Hk5a5A(o{N!Nx#li5KgW(T|_m_j=9|yyKPKFjn1`b9>5Y5EN$jrzBVzII_vVmxJ
z5WxW=I6(v#h~Q>ttmolkkYo4&;_<RG@^LXJGV+5s0_==}Tns7@ju1#hn4M9Ci$Q}?
z6vPo@XB6jR&}R6+#UQ~b!NDlW#VExn&B-XmD8t1l%P7arD9_HQz{Ow;Qen)f$ib+@
z#bC^+%*9~DsKUXh%E73{!Klu`s8P?ssL8>o#lfh}#i+xm%g(6B&Zy7D;KXRa#o)+j
z2(rrv#4-l4OhAMwh%f^Y<{-iXL|B3dD|SX}E(SkF8+JxpE`|U`JCL9~h~)qxz$Q4d
zGdgiFI&(3EF{*&1UFtzhR}kUG!RQVW^59_f1lb6d_u^pm1_}CbF#3XMKMqEJ5FNn5
z7zm<+K>iQrU<?7#p&X21?2O?Yj1e3RceogG86!Cuqc|AuaWTj-MuUhLkd{~wD-J}&
zb1@iMFeZSQiCm0HjLBRKEQ~22B9((N4MeAd0xg4sF%#s#EH1`u#vD)-<gzp7ZMI}8
zW?|1`XUu13w4S_~Z4XNUJEQ#MVs@R$C)f*lA2U4RVYta~i-%z=!;{Hw9Kp<84BeCG
za7ab>Fmy9Aum<NQ=HxIku=*qxrKj>R^nwH#co>#4EMsRZ<Y6pgSi!@voM8ncgHTpt
zSz?8Lad~E5y1rLHVqR(v55r1^RXhx<LBtvmu@*$EV^}p=kW-d<J;R2{hMdCnTNz&S
zFl=Pl#K^$s9_pzdkeHcQ;vVX$V#LF+nPCeLLmNXoBLhE3%B3g~WV&NfY9h$F+jtl{
z7&;jlL_s#|CzhA!JLMOpq!#%kR_2$M@GurLmM}7KloqEJ>7`^Au``zPFqScv^DtI0
zR<biz@i101)-W>gOg_x1!CcE&H~Af>97jE40}sPi#+u0@T>ID>c^I1*n<wAkGBDlB
z*a8x7<zbl1Fp-C`jj^4FVH(3k9){^4Vg`tq2_j~Jh}j@w4#ULBw%ii>9Sl#PE`*1T
zbAE18zEge$$iz+_hD8jEc^JDGyLlLvFf5+j!mUw1pJ4$HV-I654`Ux=KO+N^p%D+m
zLWTv546M#Msfk5A3=<e8GBPmxrIzzBOad`k{0ma^co-&w*};irsXPo*Kx}ppTfwoI
zhhZwn*%KHiGBU9G<rkG?@GwqboCJ#A{L+#PMh1OQ5W*ZdS)0cwe=Fl;Mg}gg0C$D7
z{G!~%5+24Wj8l0Sr!h|DVd!J%=V6@AID?0ACc`Zr##xLFJdCp$=dd#t@G#B=app13
z=V4sH*ucoZqL)>W&cnEnaS;z=E#qR4KtWzQ591QX26o1!JdDd2m-8^LU|hNRB9A3&
zJ%b`c3xfm$1A`I+11R1ZK%j%66GSm|F?56J9w^-lrTZBA!QvAbCW7fnP<k?yo&u$(
zLg{HxdODPz0i|a$)I$uI1r?YLrRPBDxlno@l%CJ90BqqxD7}bbF_^yuN-t$t2Ienk
zSOKP2GOPmAtD*E7D7_X+uhW1s)-!AXE8NJi2~2Nh*uucTz|O$Pu$5sO10%!s%`U?B
ztc*K0w@A!ptl!DNz;KE|gyAQXD8nv>WeiM=(u|)Ob~Ef@U}iLDyw0$fVGjcfV=&`x
zhJ6fs7+4we8Rs+XXV}BQ#@Nl+%y58V4+A^na>jIqgA98ZI2aEzdNUki*u%idc%M<9
z;V{D<1}?^@jG7Eb7>+V<GrnO|VmQWdl!1rwGov)aafYJ|y!DK~7)2OPFdSvzV`60F
zWjM)jl!2d#gOQEl6vI&l0VaNi{|u)Yjxq=`i81_OIKyz1L5Nw1fra5L!#M^f1_o9&
zhVu*;K;C3k14lU{!$k%L24M!K|IC66OzaGo*cmP}FtRgTVPRloxXN%1<bMVR27Lxb
z21W)32G+^4(p>607#JAX!2CrFpzz=Uvss}=GcsIfxB=2P*-u&wN$pZBYMDTVAxQ1!
zZfPY(#vPN_$%LnYj5J|jWk_OJ%WxYMoD2+%f>6Wd7(O%HVYth{$Y99ufZ-m)T?QtG
zP=-AW_Zc2AFoXRf%fRxV;V=U$*e?&+86GmSGdyBoVEWDA`ip^yfr;TU!xNB=le1;@
z>OnpM1rGz`Yz7X-ISj&#^B80p=Yw6Uz`)GFz#t2?n1ex-;VHv121W*91}=tY3=bHX
z1UML;GrRzqg&aa!+ZmWZ35tmUWH=<4M8O8ag6SnF1_U@5UNNw~2I-#sUQSFCuVMx!
ThBpih3``7f8Coan$%_F1=K{eg

diff --git a/out/production/infinitymonkeys/GUI/StartScreen$1.class b/out/production/infinitymonkeys/GUI/StartScreen$1.class
index 3e4336e2780d89088da9bfcd22e775729e478fc0..ce43dd31418e8591774c3831e2576d713e707fab 100644
GIT binary patch
literal 1009
zcmX^0Z`VEs1_l!bb4~^h201PUP6l}{23ZCLZU#jLB@j!Qi$R4!6~t0wXHaKn&|qiK
zWMp6~$;d2LF<@j6^l=aM)DJF6EGh|3E=o<!vu0#qv&qcMEU{x`5YfPp)eK`~U~$e*
zNo8c<_sPsl^()OyN-YXWOv*`RWDxSnPfpAUODxI+@u7k&AgdS|cs%p+Qj45(5{rvd
ziy0Y&(M?t{v}R=BDK1GYNp;Rh%u7#AVPsI!@X1OnORUf@F3-$M*H0}=%`4G|$hv~q
z)*#m~rZO_f6Hv#<z#CkWn4ImKSO9euS8#r5QF5wVCdl0aNdDIY*~rMi@0ypKlV6;f
zm+qTdl98Xn&Y;D^z|FwJ!@$d+&BLI>pv%sn$HSn{V8Fv*$Y8|IV9di{!eGk7V8&p?
z$RLOos49kx3<4m7^>Y&Q()In5vQm>v7#S2mLfCxglUZDnnwMI{$iR<g5+eh%2FTZ3
ziOI>S#l<QH1_q1_I#}WfB}AM`OG@(deDhOMbF3K|#F4E<l44}w%q$KlN-Zu11wONe
zW)vd>%pOCKJ?ez)@d`-H16v`4Yz0J=k%6l?wInRFI1`*!STv%L{b6Kaz@Wgu!NAGD
z$iT(GC?Eg|Yz77fCI$uuUIsn}Mh1Qc1_nC@Ca?&XmiAT#My>4(OdG*!1Q-|?*cccY
z7#Oq|1Q{3@#2~5|gcw8^K!6Ku8Y2TEgD8U-)U1h6v+T9DFfi_5VBX2V!pJa_K?cHQ
zW!c8S24S)@Z)0Fv&L9clv4VIICOb$C$N|g@AO}b>urV+&=rZs#=rKq!=rd?A7%><#
z7&F*0m?AmK9_}c625|-n21W)+1_lNe1||(r24)5+uy>>xWWZvw3=9my3=E(EVc-Dy
HgMk46ti<47

literal 2405
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
OxEL52WI$<zfdK&Rg=x+J

diff --git a/out/production/infinitymonkeys/GUI/StartScreen$2.class b/out/production/infinitymonkeys/GUI/StartScreen$2.class
index 74f7a1f37aaa51d21871b6e1451170f89f8a8321..990bec20e03310c91bf7b97debdded2d1dd03c30 100644
GIT binary patch
literal 2475
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

literal 782
zcmX^0Z`VEs1_l!bZB7O@1{p2}b_Q841}O$P5FrmD6xbOQ*%_1=8Q4lPGK*CV7#Re8
z+(SL}gG&;NN`jM%Qd9G+85!7YGV?M^>=+qDG%#c}!x$M@obyvs85#I}GV@aXN^_G^
zi$W5Ua#9%?gnaUo6LZ26i!wocs2~f-Dn<q#&%C_UBIlgM;^Nd|Mh0PYlU0nY85#JJ
z^K%RG^HTFlf-~~V^B5VFG<>oW%M$ey%S-fA%Tn`7^qpZUTtQrGkb4+Y85!gWsAFW{
z4K7Jc&h||#fVzt-IKQ+gIn^x_<Z=O|5YPkJ$jHF&nwOlDU!0kj?weYYk)OiOpv=Rd
z!l25-z`?-D!@vb%sWGVYFlc~SnhaWu41#E3sba*)AP+JPoBJJ85(`RFix?UB(R48~
zFs0`+GB9g^{KlVI>{w6`l3J9TnU`3SngSM&Vq_31&d4wK&P>jB%*pXhEiO(>Pi15f
zC{8UwQ_Z3gr5VPcz`(}9&cMLHC?EiGJp%&+69WSS7Xvo~BLfcu1A`p{6GTKydn*H@
z)^-M_jbJsr3=9lx42%p63`Gol3=9ln5LFEP41x?Gzy&sqk%5sxh(Q=?Rx;EqDXlFG
zjN2HPXEF#uSS%olc^d;O$ZTc?kl8{EEDQ_`B@A2)r3``$Wek!G6-f3-!R?V^5MdBy
rU}O+uU|?WoV3cHFW)KHEP=Y~{fq{XAL5e||K>+L}Mg}&J%NQ5{*u15w

diff --git a/out/production/infinitymonkeys/GUI/StartScreen$3.class b/out/production/infinitymonkeys/GUI/StartScreen$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..0be661b8057c888f890e19e6ae5c15ce9e7041b1
GIT binary patch
literal 782
zcmX^0Z`VEs1_l!bZB7O@1{p2}b_Q841}O$P5FrmD6xbOQ*%_1=8Q4lPGK*CV7#Re8
z+(SL}gG&;NN`jM%Qd9G+85!7YGV?M^>=+qDG%#c}!x$M@obyvs85#I}GV@aXN^_G^
zi$W5Ua#9%?gnaUo6LZ26i!wocs2~f-Dn<q#&%C_UBIlgM;^Nd|Mh0PYlU0nZ85#JJ
z^K%RG^HTFlf-~~V^B5VFG<>oW%M$ey%S-fA%Tn`7^qpZUTtQrGkb4+Y85!gWsAFW{
z4K7Jc&h||#fVzt-IKQ+gIn^x_<Z=O|5YPkJ$jHF&nwOlDU!0kj?weYYk)OiOpv=Rd
z!l25-z`?-D!@vb%sWGVYFlc~SnhaWu41#E3sbb8?AP+JPoBJJ85(`RFix?UB(R48~
zFs0`+GB9g^{KlVI>{w6`l3J9TnU`3SngSM&Vq_31&d4wK&P>jB%*pXhEiO(>Pi15f
zC{8UwQ_Z3gr5VPcz`(}9&cMLHC?EiGJp%&+69WSS7Xvo~BLfcu1A`p{6GTKydn*H@
z)^-M_jbJsr3=9lx42%p63~da23=9ln5LFEP41x?Gzy&sqk%5sxh(Q=?Rx;EqDXlFG
zjN2HPXEF#uSS%olc^d;O$ZTc?kl8{EEDQ_`9SmFyoeY8uT?~>8JxKOQ!R?V^5MdBy
rU}O+uU|?WoV3cHFW)KHEP=Y~{fq{XAL5e||K>+L}Mg}&J%NQ5{1AnFu

literal 0
HcmV?d00001

diff --git a/out/production/infinitymonkeys/GUI/StartScreen.class b/out/production/infinitymonkeys/GUI/StartScreen.class
index a4214e9bb0dfb7117a8ca674a28ce3af7da6bfe8..dbf9f6b974b0d0fde53e901f7cd0980230de39a8 100644
GIT binary patch
literal 7347
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
KO6P-X+yVeetoh&o

literal 6295
zcmX^0Z`VEs1_l#G4Ne9nh8PeL3nJn`L_CN{;9^i_NMvV7;$mQDNCt_da4@8@Go*1b
za5JQHF=Q}gvNL3HFl2Kv@G<0o<a0qp9*CO{A__o6A&4jf5ye~#B@Cq?ePtkSIXgoI
z7lSlIGKf<N(pd!}syP^HI2dZ#8S2;>>KPe$JoEBWi=1;3i;Gi>85y`U^V0H*auZ83
z^Ya)P#C@_7%MvT}i_0_f()GPUQY%UV67y2685!6L67y1X3>g_jP?dnBbF3K|cuR{@
zi}Dh4Q{6ICb5a-?Bv6%sOajYTGcs^x<!9zOm6nu%Y!pRR2N4D-DoL#<0qZbgWZ=xs
zOwLYC@h>f5WMGV9WZ+FKC<sX{%FWD6EJ;maWZ*7NEh<Yb0xM@^;DT#4W@O+kNGvWc
z&o4@WO3I+x7l15l&B(x-R+N~Vis4H)kSHh=l5;Xs^GX;Q_<bNOeP^(MH6sIGVlpTU
zeKLznQu9)a7#ZZjHt8ppm*}UKrRJ6BJEAB6nP!ujmsw)R$RMPFW}IdiBLj<beo89H
zrp&xlztY^K)S{5Yq?}Yn1|gsP<iwn?#G*_PA1cUFl95@=$ROzB9_pzdT#{H+5}aI=
znwn?L$RJRhkzejwRFq%jn_66)n4ZeWAgTdzTux$Mx_)p;QD$DcHONl(T$l<WOa+V#
zOzHWI49prJm0ZQCC1IJxnP3<36sMMWBcg~!BMPKMpg6U}5iO!Ji;>hZYiLF>GVo^>
zqp1=CIT)nQF((J^WUj>I<kaF~6$1kUMg|QH41a2Z9Sl#p@Px!vVZg`$(`*RRtW8ie
zN@|7LYXs5?GshUj(I;pQdg_8{Hvwr^!loTPRdEI9mlh?bx@CeQUH~ax^*|Ywhryh|
zf``GF!GwoFlR=Az!4O1fGwARzSTndYG6<q21{Fh)L<0|lC4&_s11mU9FfxdPjDiQ8
ze*q{NgR(UbLnA{IJ3})MLkmMIBZCl%GH{MyWZ*_}63A?49tKkeGad$Y1`QsDHimW{
zh7N{K9)>OkcOHgrh8`Y<UWPt)hJGG~2@Df?7$$*)Js7;OxYUS;VKT!M9tJ%IeI5n_
z27N{bwUCTdh1|rv#Prl6g%Wt~S18FyRY)u-$jMBG7Gh$K2p*C`Mh1Sg;9z7B0QpHD
zoD2MuvQm>v7#T#cL`xVWgCHnPLKCA)W@1i$IwOM(G#7!gxO0APL4ICpUWqk09U_~F
zECS7Io}m0846+;^?vMn_$RL=Ql7d=NFfu41S%kGL0U5_voLb_XpI4Ha2QIT28N`uv
zfg}<$^HPhz*<7MHwZtVgEwMDG#5pIwIMu%(wFnw`EE-_9u@odGXEQR07N?egN*hp;
z2ujUKEXgcO4arA08s>A5E4b5BOM>$Ap-zz0K+BdeDQiXsQ55gPBtXR#+;Ollk%0IF
zEv&#^;VDWjEKMygam!CGEoNj8NlZzBM+KrRR)rXVR2X9@0-MIGqM}lqT2fjN>Zzil
z!ox6?!JUgiiD4Rg>IY?y9Cn5oTnsZA5*ZovlJj%*GxJJPb8<4X^h+~cQj0Uw^HPiS
zlk<yG_1%jyQ+yID^Gi#7A*q+0VKyTJKgj!F2YKcdr<N46Gt6aVVAt^U^z_sW17)T8
zTnzIV7BDhMX?S`<(iAA2K@?kidPYS-lr7?7n8UCb>Oio0@VI7YSjx!235r6n?Tif4
zNWp;OB5ROY%NbU1F)U+P$;hBX&_B-kdBr6~iJ5sIhp$Gq-6b<OHLo}`KaZVZEh7V~
z2FyF_xfs?lY+z(?2YV6ZO@yc5dZ1Ya<Wc-$Aop4`Y~o^A!?2l=fjKcHg^@uM$#?MR
zg_?+z#le2v%CHUO*X@i9j0zkKI~f@yLD2zAU{3i(DXB$niOD7TMV0IfyBQgTl8aIk
zOHxBJOL9_EAkvHsg%As2x{|=U^dYjy_QEnfQZ%~d!%GT~XPxtN@{6od^9s~BWGk(C
z81^#k<6_vuu%D4Z4B5qAa1XOH9E3zV#2t(ba`;>c3dh3?N4OXcF&t%NP{teY!3BxQ
zsYUDz$GI3zfKokbh2WEzl$yiNaEgoJG)PhyR0yXk1iL7>=a*z;CM)=*=5sKdWn^Ga
zPb~rYo{>QiS~!3cEl9|khv7WK1&{$385uxX5vo*0MTL>U1mX=y!HO$HAt8ut;AMs@
zpd5Uak%7G!X0Z^|C{W0Q?FEIxb%q-tn{P5QNV#MdmlS0tm6oKYD1>KZmZT=-Cl;kB
zI2IIeFx-Y11ZpAhFx+Ku2I;wnUYLPoK}7^R!vijchYX2445|!jptks9Mh1E0XaluW
zA<b;0_<IU&(3ZHSWR`#$csvZx8N9d{o-w>&Wbh8iNlh$HRVXORFUw3xRjAA_EmDBB
zycH7jQWRj#T^)tQVukY5oE#7hX&$Q=D|iMdl;kTEgPMnW91O3}>wb`x`9%<yzu{td
z%Wx0WxkzMW;P>+P^iv4;@C<Qv@^=h!;b8c{$RLI66UQV_d5~NJDYDraK5;R8X1K@5
zz`()q6}fmo^5=I*Q2Hh2rt&cS1O?>}hF^>fV#TQ?K}dzVYaS>RQg|5tfP&!=!(T=Q
zu3&I`U%@lLii6=ldR731KDf2d&dA8c$i$Ec3cP!a44k3RE{YWgBP$~VC#-d5#lgsq
z<{K}V9Ml|6E=Dd;ss^=so%3@_bMuOM7<m{vxfq!kc^MgaK_LN8b?l7%j0|EbDk{*b
z5bkAgI+lW_dRVD}$hp>#%mE4yP%{LYmcb<#G`;gM3NwmuF$yq>BC23yd1zV7C=OC1
z!N|asoS5g5SzM5lSjou1qT#F=#ltAYC=HU8VPxP)Pb~>9sRXqwnKd*$c^Ksw<v~&k
z5O)M;R;BVVDnZ1QQQArn=dd%XGBWT6mn0@<`z98E`ymX93`z{j3=9ms3{0Rj&%nUI
z1ZoR{X-x(#Fs;p?1EzJMd_4wzFy8=58$!j6ptLcA2?Ge2GMItYnKM{`xS&QX0|SE~
z10#bqgAD^CgDnFCLlgrm0}}%SgOt{G1~#qT4D69wTH6_>Z)f1x%D}0my_JD+BiIZ(
z1_lNp1{MYe24w~o26YAz1{DTL22}=o1_lN(hzSf1431!Xq(H4~21W)>1}6q*s6FNk
zEDVec3=Eu%T0&gRI~aHn#&UtRCopg@B!P|Nfhc5fVQ^(&U|?i$V{nHWvJ+}Zy4Ds3
zR;?`zoZA?9wRSV`MGEn6XAs!RAgHwkjD@x_2!ohx+ZaSZ^fm@j5XHESK@3E1V-N=!
zu#G_iLP>%IS++4qf#}@~(ve!*8DzFG$ReDm$H2|Nz>o$SbzqQS$Y4-r$YjuF$YL;J
z$Y!u&$YJnc$Yt<nC}0R@C}K!ss6z5aIy6)m89d<LFlS(bcoAeD$X<j+kg%v_;9#gj
zGK3Ruh$n*=G%V~Gn84x2rX{_VK@Q!7Mg~@fCa?*R$YFz;z`(!;>LD;NGB7fDV>e44
z-K<syR)#hlW`U9*$SfZQU#PqE!Dcgn<40}{JngW7ecTB)1`@%nP$w}m_+iy7kFL2F
zt7d<Auv$P<2N$D|f{-G%G&YfelVJ*yDO?aI2yie2Fa%<8KkEiG_wyrZW@QKhrFQ`i
zhG2#eESgz}(;SLbGc$3T!x+M`*vv$n<_LyJESedK(aZ#D=tDF!XEO*g2r@7*+wEqU
z8M&QdmJg`Z5YpbwFej3YWjDjTNM>ec=Ism%nV3M-l5GsDpbC9;@Tk$&+0C#fl9`!>
zg_%u&osDrf!@5X;6alyG3>z7@Gi=$$utSGYXcsdxBjXN+1KSvm?PfR;xt-yppN=j_
z9}7qyivSx7BO_GxZids5+ZoPSv1kdMV-gUNWZA}WX&b{eD^^L?V+>r9ERw9-7;Z_j
z2;JGna9>A~1!M@=a%KTGW+X!%Ms8<#WW}Z>$+nf@i6k5IHinmyY(lTMF}%}}WCLkp
z1=-9dz$O53vLM4WWH&>7ZpALi4)Qw-_VCdL$*zfn8pY0rWPe8Fc82#>99ohbTNzj-
zIfOoLWB4M;F3AD18th&c0d{2ff@8#rQ<4*89XmVL=#b<T`nHYXw<IU?Him!NAf;;}
z!2t*kcvt{Ra$*Z_D=tY+NiMMMtSl_dtSkb^u7w0Sw<NbPBf~a^`;wfJ+#sc_%q*+|
z9H=47$P~Gqk=cqzOOj_R1B)b&(6?=jERvj(JRl8hU=1vwr~st{L568eh;#spSzbwA
zVMaEHHM}5Qpzy$94WE`I-&O`@Nlr;VkV+O}%;%Tn7iQ#un9mQ=#mvUSBEZ26N`tUO
z#>f@9osrv0Kuc0!D+80HfPlz0Mm|YSNdb_07O;98z5o@vjEw3G3=Gl?jQ<%9F|e^S
zD6uol1fvt|45!%{1sE6v7#Rf_g&-LZT#<vSR8UPQ1j@Ax0!$2-8LmL28ATab8Q2*Z
z7}6zKjx(?_ZqPo?z$?kJjZw^sbvc9KZbpGfZDs+k?TnIEY?5pOiQ5=uXEF#&vI!W1
zS)AG+Wn54VAk~trGP4=jWtKB=fCLp~XEU(NLOCki86`mufOudI0|z_rUj{V>c1D5!
z3~UgeFsd;!vNH;>GpaE#{Ab|B5M<_HaOPleW@l9U&%lBq%L12W{LjFSUm8<4D?&FT
a0~3P^xGBTLAPsJ;Fn|LI#Eb$L_R#?6AM{HA

diff --git a/out/production/infinitymonkeys/client/Client.class b/out/production/infinitymonkeys/client/Client.class
index 880fad11de6ed664c25e794417fd4a85cf09d5d8..7b171c082450f039a3cd482cbc0d730563997f5f 100644
GIT binary patch
delta 2393
zcmdm^_ffb0)W2Q(7#J8#7?n5~6c`qOh=m|x5r|mK#h}2jgo{C%VJV2a3`8sk5i3B%
zN-hR}hE*I4t3jMK91Lqg^g4Ei^;`@B3>!e4jqD7YxEO>XoXzYETeuj+Ae^o24BNOE
zBpK>Aurq82S+IefVFwq3EW;|0zMbq0yFga&1`&JM8TN88>;tLZ&&6<n;UI{02t*tP
zX*|NkaFpQ~h;^8Y;W)zy5OETu?-a<S(;(Ivkl0xe>l{ekc}|7{3>VlLE^;xLDuFz3
ziHpIM;WCK0!o_fv;Ti|Sbq<Cb+zf6EH@O+yCMz>)F&^FQ$9R&3aqnaaw#9s0S^1fH
z!6k_$rNxX4jFWe;dDMq91oAM1frtnYk<O68!%)sp!NX9=P{qR#%@D)G5X%t9!w}Dq
zz{8Nqkj2B$%rKdefzvTBKd&-3zqFW#A%G!}k%2QOKRGccBfq$WhangwAe@|&nVMIk
z?+m6w3sMqGQbC%(@GvAYBr!4wg5?EE^qn&jOJLH;3@MW*uuC$hGNesj!|oy*!Vt>H
zzzbFhGYMoy2@k_0hRKt8IZWM3*cra@FnnkD!Nc&AVKNWHFA(vYVKO_zA0CFkAo?E<
z!+(Yx9!3U6MjnPDh8!M-NQNjLhHQ`+6C*PZLn%Yf<PHvd&K!0|ZXQM+hLXt_I8?ZJ
z7>XH6co@nUN+yeNE*C4|VU%W+VP}-(VU%N(XJ=I4VN_(8y!j%h4HIM7<OVj8$x1v9
zOq!mX>v*ad>-`xR82A~4KtaR6$PmQ9z`(@7!yp6-891MhL5LxQArveZ#t;am!=ZEp
zl#XPG0*gm8#DM8ohBz=C&yWD76B&}gbTUH<m`-I#1JP0p=?obl1}MfD7#Ktt7(xDJ
zU}VUhJdsaKJ&%EbfsKKYfq_AjA)kSPfd|ZHWhh`MWME)m1cee<?KwWNdW2d%tZIuH
zN<eBE7#Qprm>8HqCTnSLWnkP0wjZRM3oL5Pz{+3(HbD%`XM@@XatX-Wj0}vRn1Gt4
z&j8{xFtFBZZDC;E05=QbY74MA=&mlq?h<Bnm)J6}GT4Dlz;p>H;6XN*GgLraGWij|
z2vT@Cg7u->T**)cQaxE#KoTjuT#(dqKz+-|P|Z*SQp>==0QaNT76x{7FM1+rMnp_4
zLmd{)97vk$!BOdlRd+o@0~Xz!NV>tA1F>puWN5;onG0RBYzS7}%?u?BOboe`0|oOK
z^Clk<G&TmMJ4pD)Lc@lEA(o+qA&`NQp_PGwfrEjWp^c%Pp@V^wp_8EtWcOq>Av4Cj
z$+1GpHXz*!49pDN3@i-Y422Ag48jbY3_T3JU?0db^fB}^FfdGDU|?WpU<zVqn8?Y%
z2r4tc#_SQ2)J7!C5(ajLQY1$sqG}4mWRUtv!pO=i7}yyqu_~VmQ9jv4SQ(rO_!yWO
z7#M09*cs{=1R3g)^aw$H%*ZeeqKAQj!3>(>IkdJguxw+{Mo+a(4D1ZeNM<0MIh|n!
z$e9cbOj8+H8CV$@7`rAv6IN1OthJ57Kzkd5;Y@}ZTH6?mbimABt!)gf+Zc?GF*Hxs
z6p7VU*4o0r0aB^8g+Wwn3xkl>76yr(40fyxW-OvC90_aK*Jx>PW3boK*~Z{7`GAP5
zx#Ly_eJ!mm4EjP&I~kmr7!EMFY-M1Fh`2&U+_o}sKt$Z3A|8`PL|p<E@!GbAeT@|h
z+ZqNI1_p)$jBO0c3<ntwf$77H%^;ewg|QVxGcYrNBCw1>cJgsi!}>i83mFbFEM+*%
zu!`XX!)k`J3~LykF|1>F$FQD}fnfuq5W_}B6^6}>4h&luBN?_arZMbbY-HHU*ut=v
zv5nynV+X?#aL9TvurusoU}c!eFpGhOv5|op%IaWX0;eq&P}oA_j)Ad@0a9);)H8N5
zfC>&Ku=H$(Kn7-T(&J}f<LCL!u!Qk9!vRNjhKUS}40GV|4Js``C9nV_KG?P~cnW!K
zWAH|g_md3#45z@ZgOoY~Q2QAf=EBVKV6cHE9zKX+KHC_4w=wvk8+Dd}m*E_eQG9Tt
J=79^?`2fe)jtc+)

delta 2527
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

diff --git a/out/production/infinitymonkeys/client/ClientUpdate$1.class b/out/production/infinitymonkeys/client/ClientUpdate$1.class
index 9f508e3770770bb0b90f6d8bc7cdc965e9ad66a5..4bcf9636a6fb854dde6e263d81fc41f259703c55 100644
GIT binary patch
delta 333
zcmeBR+skHl>ff$?3=9k=3`SfG5)6`@44e#7oD32S(jcx3JA*8UBL^bnL4*Q3gCaYF
z@<hXWM%jrQO(j&=8Ps?fG#E5_7`PdDco?)8w0RhG7<4E8ljqd~vGqZO0fY8rRmLC|
zLq-Pa$qGy&llvJb@bGx~d-^#B1O)kqIZl>gl2+$r;9_84U=)x583kf7a4_&P@G&ql
z@G~$lEMj10U}RumaGM;*WLCe4foT&1$2JBQcK_uJEZ!R#SQt1NL>R;wSQ#W3lo`|*
zSQ*qAj2KKASQ*S192r~~SQ(fZ1Q-|?*uaK_G6*s-FfcJNFbFX)Fo-d5gtIdUGx(ws
r49pB7U{#_FVhjunEDYid3=B$OJ%UUOoD2*M3<4Ys5)7&g>JE|sj?*LQ

delta 308
zcmdnX*1=|Y>ff$?3=9k=4EkIQ;tUd;3>*xSoDAX&QXsB0JA({}BMTzr*cs&685Ad)
z)icUW+-7R8#Ll3?!=T2X&cndPz|F&;!Jx^*pv9og$RL%KSeB@tlbDyT@0TB3nw;U5
znVOU0T2z!@#KWKiQl`tGIa!}Eh((W)L3;8|M(N257(4Anic)j)OH%bcopUl%^GZSs
zQW8s21r!)K7&sXi7#Ia4K=y!G3>*wR47?1C415d>3~da|42%p64Ca%|nar3sGB8ix
z&m<Ya%)rmUz`zEU31JXmU|?WkU|<jgW43U11|bGtIKjZoAPiO@!XV1Pz`(*F#=yX!
bz`(#D#K6SB!N9=4Ai%*O&Y;Yo>L3XKdvq&i

diff --git a/out/production/infinitymonkeys/client/ClientUpdate.class b/out/production/infinitymonkeys/client/ClientUpdate.class
index c82484b525905baada51fc5778f3b5c6b9e7ccc4..1554fe715b5103907147acd114f82a60bd60cdcc 100644
GIT binary patch
delta 1562
zcmZ22{Ykd|)W2Q(7#J8#7*238XfwoeGH5ZxaWTX*Byce#G9+;^Br~LNF{Co2aWbSc
zWN<KKaxr8vWV18ma4~Q(#Da)i4u(7soez>J;9}5XC<N&TYb^q4E#_b-0g04yF_bZs
zgIE>Z43!L3AhWB3L1YbxsO4nPW2oa|2xh1UaT_=o8o3yn7@9d4T0nYQxft3Q+Ch%$
z;9%(FVCdpt=w@f=;bPEW=w)Z<V`u1RXPCgwFp-^M(!_&H7$;9oV?4&_GFg`?j=hha
zVG29L)X9^W>=~y`zQkn9=s8({*^HYlF|W8hwTO{{(Q~p3v$BB^LjVth0fQks!*m{o
z84NSo8D{Y?%x0Lw&M=pUVIISLc7`cD3=0?*vNJ5=VOY$tWb$-o1-7L;49ggnPu|Nc
z6Ssn4B_ji)0uRF~hSfX_Ye1$sFgWrstYw(b!?2DafRTaOF(-$IVLiiYc7~}u3>z3W
z@-S>-*v!tbg@<7)NY6Hg<va}AK^k{}h@A|(co=pw?BQY9%dl^<Ig3{PejbJu49giA
zL=`fN6-qKv74lNc6><~v64O(Q^tgB!4lo>KXE?;eaG2o;55rNAm0TeisS2gVsYO-_
zj0~0v<%xME#R?_)3R(G?c_6wnzqCl9JR`FtH7P%_C`CshC10U3zZ9$xB%hd^oLW#~
z&&a^zm7l4Rr%;qySejZ~!pI<=l~|Top<i5{nU}8b<zG;enV%Psn3u}KaE#&j=7}r?
zEcJ{Gg2fs6<<9weX_-a2E}4lr`RR-dHX1%4t@?@OCHl_!xdr)osd**V5V4%ZymWp4
zq^#6r6p`SPqRhN>Yfnv221N!f25kl=1|0@n21W)ZP<$~kFt9T)G8i!!GcYljFfcH<
zF)%SOF))NMaA|F4VARsy%D}Xdfq{XE!IXi4fscWifq_AgfrUYcfs;X)!Hj`{K@6mv
zfs4VM!GZw<xWL9TGFUP&Ft9K%GFUM%GFUU%fQ+Bq$f@E9GKUMSN1Q>BK@x0+0@z$(
zxEaC>whVR*j0_A6!VLBdb_`5NrZF)%FgP+WGMG$$#~G3YGEItsje&tdo`HiwfkB2r
ziNTCPfx(7Bg~5qI6>ho=gA{`kgB=4a0|SFI+#Y8JX9gDrMg~^~1_oXRrhg0q><n&<
zj6WE(85kMd89cy_Ucxn>(R8v4w|zaxyCw{*46Y20V8hrM7#RBChV?-W6K1Gp@MQ2}
zU}BJCC}8kr@M2&FTcFOs`k%p^ft{Vfhn>NVoxvB3+!z@d82&IQu`~F|{9@qy!N7{-
zS4IYZh5(Qw7#J8V874FFh?{~u3<*9j1}+9~um^d-LB$Pq339*(G6aBw%8y4T9--5p
zfr}vki%v#{Acjzgb&ReIEDS6R3=9XE>^3pT=xk$<)msIM-mMG_VB0`)atsU%jtmS8
zDGUq@HIt9>C^42#e!-(uAELE|foU6q63aFQWeAgb8-vPn1{(-R6hevbWRPHF*v23>
zlR=qrHv?DXb_Q-C)olzs+S?d-gw(b%@N8q?6H;g1!Jug;yM}>*ff<|zjTm?sK<Sf-
zA(TObA)LX3A%el1A&McJA(|nNA(o+%p*D`8nIWE`jUka?K0^}2eufONU$r3qfrb(T
z!$F2H21p`1$PmsD0Z#Y(86p{?pz+1U!1{+lgHcII+yW^|m>8nL*&&8OpMilvh=GYg
R4-_l{91Ot>It(EWk^s0M8BzcM

delta 1233
zcmew)yIQ*b)W2Q(7#J8#7<O?ns4;|bGN>|yb1_6PL~=1iF+_7Q#4yBiF~l*%b220_
zByun$aWNz_q_8ujaxri*gn@`O4u*6PodJ@`<YG`|$O7pHYt05}&Ea6k1&QQwG2}B8
zfLMjx3`GpZAhS!HKx8S1DC1<%WGLri@MEX|aVt3(s<;@c8EQBfYC(GHxESgg8bFR}
zWM^n%XJ}?;Xklk)WoKxccxee^`{Z)QV~qBb?U>@&o7fpT*cmz}FJ`i5?3(<T$(Au}
zvLdtD<P>H_16>Ah9tLd&9d?Fp9)=!<UUr5)9)^B~3G56Lc^D=!OlD{3;9;1;FqNHQ
z8V|#Ch8dH$GAppn<YAb_FnjWCW|_D-409P77!`OJ<}u9YVORh%&6>f6hhZVZWFCe^
z4Bm_k%#JxZJPeB&=Cd<&@-Qr6Sjxk&jA1!D!wMdTl^{K<7-sV@tOjXZ10vQktm9!=
z&#-}qVI#w)$)PM-2Ag>p<}l1=WDr%zELJGVNL9#7Emz1*%u7s9Ez;xSVc5d3m7QT5
z55snb9Xt#>8N4^Eu@<l>F(@*qGN>^yF{m?WFfcMOfjr5;z`)MH$e_!h$H2s(Kbf0L
z+S!1Cfq{>KnSp^pkb#9kh=G$qn8A>NfkBLciGhKEi@}J&m;nU1!1@^(Oc)p#SQr=?
zOc@v%%oxnU=45iIc!JE~0_zcH5M+=9o1p+UR~T-FFoOkyB?BV^1A{Pw6@w)M6Ow66
z4Au-b42%r=ldo}wFd9tO=9YH?xdUW|41*MdErTTkD+2?AGu$+120I3O21W)41_lOR
z2Bv=u0_+TqjEp}Rv>6x~oEV(JPV3>G&uB1NhsVAiWS9v9D}yV8BiJx@1_p*cxM6)z
z!-N^C8C)1#8JHO47z!BN7+e{c!4{}9u>NN-XJBV%aA#+5WM}XIBS%I?28KTjO6&}t
zGQSx3elV~i`G}Fhi@_V@2nGfQONM$zu*bQzwlFYlV-VcNAhnT!fq{tu5pG@#Tnyge
zaN~g}g*py7#C;gNL16?o5#2y(bOZevxEKOp2D&gXFmOXnWMuGV2!Oim83QvomKruO
z$mncikkwlSifsmlas~#lD?lkjhJk^>o`HcOY4S#1B}VJX8+pYhzvAVomw<RiiDesu
zGK9&zjX?$E3}&#ulo&V|7#KnrR2ae-To}R`+!-Pn(ix%{vKV3*N*Q7q>KWp}&I83U
z149GUbs$zCG@Uds1Th3NFoC0hje$i)Nl63|!b%KG3?bk^3}w(_U|<kpU}De&xn6*S
M!H+?m!QVj=024j58~^|S

diff --git a/out/production/infinitymonkeys/remote/IClientController$Action.class b/out/production/infinitymonkeys/remote/IClientController$Action.class
index b4c2cef704873af62401e4a1eb634a818a4d812d..035ddf1381adff501a6e806d89ed427882488ad0 100644
GIT binary patch
delta 451
zcmaFOv6I8*)W2Q(7#J8#7)&@BSQyl}7}Oaw*cpV`8ML?<co?)ngboJ-FBby~gAPcA
zE(e1kh}L6g(4XiMzHw;}BcBjRy)X}h0fQksgVAJrCKVwG24fxuSq3>C23`gM9tJ@M
zfyq@&9rZj63=GT;k|03_1_w!yI0J)#6oU|hFarYv3j-&E2!kjCBZC+N1A`I+BLfI<
zZDL^D#=vxdfq4T10|O(2I0FL%8(5Bmfs;XkK@zIogn<bx$|c02wS$5600Rq1JrlC}
zdIl*51_mC8G6rb|83qOhCXh23n7~#VGB7hRGcYi)YiY}DXJFe1mPWP@p`D#Uo<V?t
zfk6SRMv;MoL5V>T>Jm2w7Ldak^ma3_L<+GpZ)f1x%)q&ufh8bPh>Hcx<7VB<z!J&4
viGedXl4TPEckpHgMv!%=-eZOuugstVwnmkKpMimai-D1Wg+Y^n&p{FZt*0p=

delta 499
zcmdnV@tVWs)W2Q(7#J8#7%Vs$SQs?97_=C)*%`#x8FaZA_!#s+ggyrYKNkZFgFZ-w
z0SALHh&JS45CPFf><q>eZNk~TJ)ONBeS9`f=x5{;1?d;#VK8AZWoIy(tjnY#F3n)h
z!=S*R$iu+TAjHEU3?f7rgeE65b=31QFfgz<NP=V-7#t))l3-edL5P7tK#D<>K@6mV
zfs;X;L4tviL6U)iL5YEp0R*@<F)(gpU^>9Syn%s%fssLqfq{VyEXTpX$so-j166Or
zzyucM5@ONX!N7Wefd!<V38cOru0fW8fq@62j6se;o`HdZ3FKx5Ca{%;49pD73=9nH
zTG}$(8Q3<0rIGDJXlG|o0=b<*8LUQyfrCMnK?UlPNCp;=!x<cRGq6Mou`_SaX5iS&
zzzODYv1|u%xWODARxpQ`Z7%~$B=aT)&frLvO$^+@k*u2-c!M`HFoIlw>SJc8jcN?)
XV4F1<1Q{3@xEL52SQvB|1RNv*a4|6`

diff --git a/out/production/infinitymonkeys/remote/IClientController.class b/out/production/infinitymonkeys/remote/IClientController.class
index f0570f208a2b61645357e61733a8760bb450a683..ab5e065a224484d13368745498a84b2720abdb90 100644
GIT binary patch
delta 136
zcmbQkwuVjY)W2Q(7#J8#806U*q}Umx*%@Tm8DuAlDKdslv<MN>^kih<a;->CEhx#%
z&nsqUklVO}n^8=(C^a{~EY+<jKQ}xvvm`Sw-6ylSWb#4A4UC+Vi<l<purM-+Gw?7l
lGH^05Ft9K%GH@|4F-R~lFfcJlGO#f)FmN$2g2h=KBmwxh8;1Y@

delta 125
zcmZ3(Hiu2@)W2Q(7#J8#806R)B-t6H*cqhR8Du7kDKZvJmSvQk7;3KLQ<R#UUy`ct
z>6({ZR9R4xnV%P0kdj!EYONW?$iU@Vk(>$^EM{kr-8he%aq>aNb&MR73z#NIF)%TR
bGcYhPF-S15F)%Q2F)%W)FfcN(I!FQlK{*|L

diff --git a/out/production/infinitymonkeys/remote/IClientUpdate$Action.class b/out/production/infinitymonkeys/remote/IClientUpdate$Action.class
index dd382481d4ab540e1f2e62b16ff37ddabd2cb284..45c78af26c807b84f2065b100c89470d2f837048 100644
GIT binary patch
delta 499
zcmX@j(ZuO<>ff$?3=9k=3^tq$EDSna47v<@><p6Z3<g{b0t|*A!ia-Gkc)wZ!3d<n
zn1ewSM4NChh=FKR4hC@$ZN|=EKG7wHhsVp`)6X#=Ajm(=apT+?MnMUXVUj!y77Ui`
z3|5Q`(vv4LiA=U*;*^nNu;yV<W>Dc_5M&VHVGsooVjx1CL1c0qQ%k)70|NuAgCt0r
zfx$r%qykKfF^GU^aS$ya#UQ~T$-uzC!obNO#URbV$RNYOz@Wsy$N&Odn;00kF)$rq
zVBWyMz`)2L%fP_E2A1Pw;AD_vkcX-_VPFD_atX0$?O<R%z`(Mho`HdZ2}Oef0|NsO
zL>Yr3gA!O?nL&kt32dby12Y3N0|NuQmbT1x2DXi0X=M8l+SwUYL2hSI1FKPI;9$^T
zP=~rChk*s;aE6e{H<;D=b~CU<3h}XRXW-b(z|TI3MbsveZ4(23@MZ=^kOin7Vul*1
a$)E)`SerqZfq{XGfsuiQL7zd$K@tFX=q}Cx

delta 448
zcmZqTJk8;9>ff$?3=9k=3>KUWEDV}l3|b7@><nV;47ywld<=RZLZ5?ypNoNoK_8^T
zfP+C8L>qE2h=6D#b_U~#J~11&S2FU6g7k^;FqklyvNM=XwqsHdmu4{MVNhUD<YC}v
z5aMAF1`#3*LX)eQTI%^27#LU_BtbF^3=WbYNiZ$KAjH5RAjKfcAO=#wz{w!aAi==M
zAj!bMpv1t)00LZ_7#O!PFdblE-oU`Xz{nuQz`(!;mg8jLWRPZ%fvPuQU;>MB39)GH
zU|>DKzyeaw1X5oQ*C5Nlz`z4h#vsQa&%nUI1adP26WB^a24)6k1_lOpEp3_Y3~U?0
z(#ZB9w6ilPf!xlZ3|6DUz`>x(paOMCBm)b`;S7$u8CW8P*qOIaW?_+MWSeZrB5Jmo
kfe~aZsyCRS#;7r<gN@T*5M*Fr;9_88U}4Z<5O9zL0O+VCLI3~&

diff --git a/out/production/infinitymonkeys/remote/IClientUpdate.class b/out/production/infinitymonkeys/remote/IClientUpdate.class
index 7d8923621a39f42b6628c674a2a110f8b54dd03d..cf1adf4c123b7ac99404efbeece8fb67c6d819de 100644
GIT binary patch
delta 12
Tcmey%{Fiyc8Ai{IXAKwuCm97+

delta 12
Tcmey%{Fiyc8OE@UXAKwuCt3w#

diff --git a/out/production/infinitymonkeys/server/ClientController$1.class b/out/production/infinitymonkeys/server/ClientController$1.class
index cb6060440a9f351d1a83801bacf34cb7966f7940..35d99027b635a76211ddf6ed9731e0785e4ac005 100644
GIT binary patch
delta 13
Vcmeyt`h#`DMkdCilQ%KB0RSuv1+f4C

delta 13
Vcmeyt`h#`DMkdDflQ%KB0RStW1)Bf>

diff --git a/out/production/infinitymonkeys/server/ClientController.class b/out/production/infinitymonkeys/server/ClientController.class
index 67913932995b7befd2ca552d73cee8caf7a6d463..1323063bdd741b05765fdf485cffca7210e6d2a6 100644
GIT binary patch
literal 6744
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
Wlmi7g7+M(|7}^{p85S|j0nq@!+d$O-

literal 6351
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

diff --git a/out/production/infinitymonkeys/server/Server.class b/out/production/infinitymonkeys/server/Server.class
index adabadce0f0b08ff96e1e31afdb03dd14a91cb01..8884fc35671e4085f5b8100ebd585fa634eb19f0 100644
GIT binary patch
delta 1607
zcmdli`AV|>)W2Q(7#J8#7}jtx=rW{oG6*oFu`{G|F)%|o86c5Nc7`l226l#Q5GRM7
zA(xAR3&P1`XUOMb;DvAs*cl4B7z7wnK|~QdLopYFFhdCkLn#+S8ACaUsNi6z<YK5|
zsODm*VW{O|sPST`<6x-gU})fAXyj&SVrb@MsA6d0U})uHXk%yxnbX0}(8<N1!cfA_
z(8a}|#*oUv&<&z{KtwMGLm$Z8es+cl6OV-QaF-`$mSpCo`(zfEY!+t}U}T&)S%Yam
zWAWq{O#fI4*%>BHe#NZEGMSyBbFvJJEQd9N4G)7QgVkh576}eL27Mj|BL@A+F)T71
z)(lg47>pTACO5E1F`F`&O`gjl>uk<o!N|Z{oLW?tTBIKgrg#_v8EhCCgtHRM67_Qu
z^V0QQE0R+SN;32Fco?RFq!`#4Ci5^%W0=mvFoVH;@?REN;h8)PvlwQxGtA*(n9DGa
zhhaX$g2}q9R$2>r7#1-s=3!XEu#}O3A7X(*X0bw1YGO(yJHs*_hUE;dJPh#+Hj^i^
z`pB$cSjoe%iou<cfyX1ixJ1D(F*nspSAmCNHG})+pRBb^^#TmK3=9lx3@i+K4EhX=
z3<eAg3``7$3@jjjqVSCwOc)p#SQtzh%)qocg9TWvC4&{%1V#pH1{($@23rOOhAsvc
z21W)31{baE42)WgTN#+Nb~7+XZf9WG%D{?XvT4=tW?+xh+RnhSm4Q=hHv<=l&ApX@
zM{73&FNn>zm4SaF*cv+q1_mVt4h9AWIR+L6c?M1f1qKlYMFx2WB?fH<Wd?Hw6$WPp
zRR((o1_mC8<qQrCjtmS8PGILUGB`7^Ft{+dGBARjXve_Bz{F6`z`&-Zy_JCpVF?!l
z69WT-CIc&j7T7Q`FrN)-7$~ejK4xTKVQ^z`hZ+V7Igo!@wYD%YZGgL%4eSm*urUxf
zu|kdEWbk0{WME{d2ZdG**eMJQqPrOcBDXUL`e<)s5L(W_0is1Vg3aJz;AaqKU}gY?
zf)oQA0|SF80|$dS0}q1@13!Z$g8+jyg9w8y*d_%AW(E!h76vZ{M+Qa)0R|QZZw4Q*
zDWVL%41Np@4E_uZ4D1X{{_G6(0icKqghd=<4g)g-Cj$dRu8^qD4hAt_oox)_KFb+6
zKnxKf3GE#WlHr0Z-a8ni!gnx8`wGeU3CUWq2+3K2e9mdbrnQBE$BJER3j@CuhmNi!
z+fD{~W(FNe7D;v}i&c^X%-Y1DAf&jBp<YRAJA*RFkIW3nehgy}Wnf@%WMF1+W?*M<
zVc=nKXW(aWWe{L+V-R8RWRPa?W>8}AVNhcTV$fs=X3%8_VK8I}V=!k3XRu|6U~p!L
zV(?*zW(Z@5VMt)eV#r{~VaQ>~1&2=o12+RZ11m!iLoh=<6Fh)Gv7QT!9%hCth7blT
z21W)o26u)~hA;*u22BPRhHwTe24)6b1_y=+1}g>@215oLhDZi0237`h1~Ud@hA0L$
z23rOL22+M;26hH#1}z42h8PA8aDWRlF#TuXXJBGyh-GJpV_;-w2w-8TM<h-rP_Bih
zr$Y?P49pA+4DO7eSb#-<>Lvz--3)4x+Zoh_G`2BlYHwo@-^QT1jX`T0gA$UQHbhPb
zE(Z!<CI&VJP6icd8iM4cLWUG3hEfJLhAIY5hH?fjhDruLh8hMfhFS(UhB|Oyff5rJ
lI0+?y^MN}wgqRpy!2!sK@Ea%8Z;2qkC4tgaGB_us001}1@TdR)

delta 1601
zcmaDQxmmLQ)W2Q(7#J8#7*=vI=rAO6GVn8`urs7`F)%|oY3vN?Tnuas86cTVc7`l2
z22Kbko1Gzti-8Bi$z^BA<6_`vNCpx4><k553_=Wr91KNV48;s3Afl9mp^S^6oS}k?
zp^~8rL{xJy)VOjm)N(M?aWm92G;lJMGc<BAG;uLBGqixrX=P_<<6=-|C}d}7=VDN0
zNakSZ0MVTwqKku}8)R+|J45fplcAe+82K0(`zBj6?Pn~Q{F~_?OCCEz|Kz{SdMp#z
z8QLc6v&gDhGFb62m@`-~G6-iSmL=+!mSpDWI~ElsR{CTXm+&y?GUzcfh);H86xZTm
zuw<CX!(hl@#K<68oLW?tTBPrskyzrKpI1_ppOceX#KU0BV8X~CF?kN7L_H6KDT5g!
z120r%FjxZ*gFk~6%&wfoymWonisaOSlFa-(9)?LEDF$|i2|Nsw8K&?sOl5FoWRL(k
zORp$5Qx9U0UPgX#NnT=ZDm%k89){@*GuRns@-WO|n9aj5hhZ)wgMf2RW@=uE^JITk
z1Fd;H4D%Tl@GvZ7Sj5P{4{?G*X0bw1YGO(yJHuigh9wNnJPff6R+Cq<`p7J0SjNM!
z9AqnxM}BdMf?r~8s+Fz+55o!u*Uf@#wM_o}3_1)946F<+pnzduWYA||U|?b}U|<0S
z3j+fK3n&D@v?+rbSk9cmf`Ng7je(KDlEI3BiNTtIfuWj#g@KWQfx&X}TMqGhwn(k*
z4D4GOIJ9;%aDv!eTN${ub~EsR*t}aA_%?zKvSDCgkYiwHU|^7CU}2DB;AD_z5MfYY
zP+(AG&|y$wuwYPTuw`Ii;DH#;V8>w3z`)=Db_^qfBLfSA6N57YBiI3U3``76AZKZ5
zZ?$D$LRi2B7FK6qWzYZ{CI;rSK@9`>1LPk@1{MYv23L?_lh1RC)q|V{@*x9*4p<k&
z39L|EoD6OZ?jW@c3=B0;i$!-c@JDWE5b)97#vr(yfdfPfZv?xXhk>6#h=G{_WT+Ga
z8v_G_F#`vKDFY9K6$3wmIfDR$C4&fqHP|8r24)5hhI$qT4+eV%Mg{=}76wlSFR(G9
z4BiYr3=9mu3=9nH3{3v)41S<M_lHFSV-5o|11AFmL#~jB&khDrU!83XVm`|mI6w?x
zA#v>;3=-jjEZ#d9B*S+wNcjp$`w7Wdu?Wdpv1)B$;ILxT+QPtX#jdr5fv?_*Lq}JV
zZ6|{qGlPyKizGXg#VW}GW^H1S7gE^9ps2N-K?&qXW(H(GhB1gTFfiCNFf%wZuroL@
z@G!VC@H03w2r#%Xh%mS_NHcgcC^2|3s4)aEXfgyc=rRN`7&3$~m@|Yj*fNAMI5X5o
zF!(S;GK4WiF(fc#Fk~=fG2}30g9E65ft!Jyft4YEA&`Ly9zLL`&xOVgGeZ_b5Q7B+
zBZC@)J3}x-2m=#?CW8w@D1!w9GlMRJ149^t1vq`%FoZK$Ft9S1Gng?LGDI-2G1xK~
zFc>pL)-$j(I5TK5m@-5$aDW3`n1Sg(13v>3J3}-(Lkt5WIPeikkqMOJpef=I12Y3N
z0|SFQBPbSN5umb(L4G%bYUFkXH6itF3>w<o7{s<QXl!H9+{U1YB&P+EtKY_;4VMH3
zFcSkC11EzrG!ZE=a4;}1<TEfa6f>|fR4{Ndlrn%yT|R~?1}%na1~-Npa9Dv76BjrI
k#eq}3J2Zrt7+k^O$B6J6C)8{4Ag?8GgA!IEIFlv;0IE#*z5oCK

diff --git a/src/GUI/ApplicationMain.java b/src/GUI/ApplicationMain.java
index 0c3cc61..0d13b9b 100644
--- a/src/GUI/ApplicationMain.java
+++ b/src/GUI/ApplicationMain.java
@@ -39,8 +39,7 @@ public class ApplicationMain extends JPanel {
         return answer;
     }
 
-    public String showAssignManagerMessage() {
-        int numUsers = client.getChatScreen().getKickUserComboBox().getItemCount();
+    public String showAssignManagerMessage(int numUsers) {
         String[] userOptions = new String[numUsers];
         for (int i = 0; i < numUsers; i++) {
             userOptions[i] = client.getChatScreen().getKickUserComboBox().getItemAt(i).toString();
@@ -124,7 +123,6 @@ public class ApplicationMain extends JPanel {
     }
 
     public void exitApplication(){
-        System.out.println("I am in exit application");
         frame.setVisible(false);
         client.setVisibleStartScreen();
     }
@@ -136,8 +134,8 @@ public class ApplicationMain extends JPanel {
 
     public void closeWindow() {
         try {
-            if (client.getUserName().equals(client.getClientController().getAdmin())) {
-
+            int numUsers = client.getChatScreen().getKickUserComboBox().getItemCount();
+            if (client.getUserName().equals(client.getClientController().getAdmin()) && numUsers > 0) {
                 int terminateAppAnswer = showManagerQuitMessage();
                 // If the manager terminates the application
                 if (terminateAppAnswer == 0) {
@@ -148,14 +146,13 @@ public class ApplicationMain extends JPanel {
                     int answer = showNextManagerMessage();
                     // If the manager wants to assign the next manager manually
                     if (answer == 0) {
-                        String newManager = showAssignManagerMessage();
+                        String newManager = showAssignManagerMessage(numUsers);
                         client.getClientController().assignAdmin(client.getUserName(), newManager);
                         client.getClientController().quit(client.getUserName());
                         exitApplication();
                     }
                     // If the manager wants to assign the next manager by random choice
                     if (answer == 1) {
-                        int numUsers = client.getChatScreen().getKickUserComboBox().getItemCount();
                         Random random = new Random();
                         int randomUserIndex = random.nextInt(numUsers);
                         String newManager = client.getChatScreen().getKickUserComboBox().getItemAt(randomUserIndex).toString();
@@ -164,14 +161,12 @@ public class ApplicationMain extends JPanel {
                         exitApplication();
                     }
                 }
-
             }
             else {
                 int reply = JOptionPane.showConfirmDialog(null,
                         "Are you sure you want to quit the session?",
                         "Shut down session", JOptionPane.YES_NO_OPTION);
-                if( reply == 0 )
-                {
+                if (reply == 0) {
                     client.getClientController().quit(client.getUserName());
                     exitApplication();
                 }
diff --git a/src/GUI/ChatScreen.java b/src/GUI/ChatScreen.java
index 0e228cc..bae2442 100644
--- a/src/GUI/ChatScreen.java
+++ b/src/GUI/ChatScreen.java
@@ -79,10 +79,18 @@ public class ChatScreen {
     public void setManagerToolsVisibility() {
         try {
             if (client.getClientController().getAdmin().equals(client.getUserName())){
-                managersPanel.setVisible(true);
+                managersPanel.setEnabled(true);
+                kickUserComboBox.setEnabled(true);
+                kickOutButton.setEnabled(true);
+                promoteToManagerButton.setEnabled(true);
+                client.getApplicationMain().getPaintGUI().enableFileControl();
             }
             else {
-                managersPanel.setVisible(false);
+                managersPanel.setEnabled(false);
+                kickUserComboBox.setEnabled(false);
+                kickOutButton.setEnabled(false);
+                promoteToManagerButton.setEnabled(false);
+                client.getApplicationMain().getPaintGUI().disableFileControl();
             }
         } catch (RemoteException e) {
             e.printStackTrace();
diff --git a/src/GUI/PaintGUI.java b/src/GUI/PaintGUI.java
index 7f8e024..2fc328d 100644
--- a/src/GUI/PaintGUI.java
+++ b/src/GUI/PaintGUI.java
@@ -414,4 +414,18 @@ public class PaintGUI extends JPanel {
         drawingArea.setModeText(textString, size);
     }
 
+    public void disableFileControl() {
+        newBtn.setEnabled(false);
+        openBtn.setEnabled(false);
+        saveBtn.setEnabled(false);
+        saveAsBtn.setEnabled(false);
+    }
+
+    public void enableFileControl() {
+        newBtn.setEnabled(true);
+        openBtn.setEnabled(true);
+        saveBtn.setEnabled(true);
+        saveAsBtn.setEnabled(true);
+    }
+
 }
\ No newline at end of file
diff --git a/src/GUI/StartScreen.form b/src/GUI/StartScreen.form
index f348817..c6bb9dc 100644
--- a/src/GUI/StartScreen.form
+++ b/src/GUI/StartScreen.form
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="GUI.StartScreen">
-  <grid id="27dc6" binding="panel1" layout-manager="GridLayoutManager" row-count="3" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+  <grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="4" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
     <margin top="0" left="0" bottom="0" right="0"/>
     <constraints>
-      <xy x="20" y="20" width="833" height="400"/>
+      <xy x="20" y="20" width="833" height="417"/>
     </constraints>
     <properties/>
     <border type="none"/>
     <children>
-      <grid id="abaca" layout-manager="GridLayoutManager" row-count="3" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+      <grid id="abaca" binding="titlePanel" layout-manager="GridLayoutManager" row-count="3" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
         <margin top="0" left="0" bottom="0" right="0"/>
         <constraints>
           <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false">
@@ -29,33 +29,33 @@
             </constraints>
             <properties>
               <font name="Apple SD Gothic Neo" size="20"/>
-              <text value="Distributed Whiteboard App"/>
+              <text value="Shared Whiteboard App"/>
             </properties>
           </component>
           <component id="e3c91" class="javax.swing.JTextPane" binding="information">
             <constraints>
-              <grid row="2" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="6" anchor="0" fill="3" indent="0" use-parent-layout="false">
+              <grid row="2" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false">
                 <preferred-size width="150" height="70"/>
               </grid>
             </constraints>
             <properties>
               <editable value="false"/>
-              <text value="Please provide your username and password, as well as server's IP to start."/>
+              <text value="Please provide your username and password, as well as server's IP to join."/>
             </properties>
           </component>
         </children>
       </grid>
-      <grid id="790e1" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+      <grid id="790e1" binding="joinButtonPanel" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
         <margin top="0" left="0" bottom="0" right="0"/>
         <constraints>
-          <grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
+          <grid row="3" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
         </constraints>
         <properties/>
         <border type="none"/>
         <children>
           <component id="ea0c1" class="javax.swing.JButton" binding="joinButton">
             <constraints>
-              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="7" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
+              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="7" anchor="0" fill="0" indent="0" use-parent-layout="false"/>
             </constraints>
             <properties>
               <text value="JOIN WHITEBOARD"/>
@@ -63,10 +63,10 @@
           </component>
         </children>
       </grid>
-      <grid id="6ef31" layout-manager="GridLayoutManager" row-count="4" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+      <grid id="6ef31" binding="logInPanel" layout-manager="GridLayoutManager" row-count="4" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
         <margin top="0" left="0" bottom="0" right="0"/>
         <constraints>
-          <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
+          <grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
         </constraints>
         <properties>
           <name value=""/>
@@ -133,6 +133,35 @@
           </component>
         </children>
       </grid>
+      <grid id="a1249" binding="waitingPanel" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+        <margin top="0" left="0" bottom="0" right="0"/>
+        <constraints>
+          <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
+        </constraints>
+        <properties>
+          <visible value="false"/>
+        </properties>
+        <border type="none"/>
+        <children>
+          <vspacer id="b85ee">
+            <constraints>
+              <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
+            </constraints>
+          </vspacer>
+          <component id="3a3ef" class="javax.swing.JTextPane">
+            <constraints>
+              <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false">
+                <preferred-size width="150" height="70"/>
+              </grid>
+            </constraints>
+            <properties>
+              <editable value="false"/>
+              <text value="Waiting for manager's approval ..."/>
+              <visible value="true"/>
+            </properties>
+          </component>
+        </children>
+      </grid>
     </children>
   </grid>
 </form>
diff --git a/src/GUI/StartScreen.java b/src/GUI/StartScreen.java
index 39a230f..914b944 100644
--- a/src/GUI/StartScreen.java
+++ b/src/GUI/StartScreen.java
@@ -2,20 +2,18 @@ package GUI;
 
 import client.Client;
 
-import javax.imageio.ImageIO;
 import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
 import java.awt.event.*;
-import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.io.File;
-import java.io.IOException;
 
 
 public class StartScreen {
 
     private JTextPane information;
-    private JPanel panel1;
+    private JPanel mainPanel;
     private JTextField usernameField;
     private JButton joinButton;
 
@@ -26,6 +24,11 @@ public class StartScreen {
     private JTextField serverField;
     private JTextField textField3;
     private JPasswordField passwordField;
+    private JPanel logInPanel;
+    private JPanel joinButtonPanel;
+    private JPanel titlePanel;
+    private JPanel waitingPanel;
+    private ButtonModel joinButtonModel = joinButton.getModel();
 
     JFrame frame;
 
@@ -36,6 +39,20 @@ public class StartScreen {
         this.client = client;
     }
 
+    ChangeListener changeListener = new ChangeListener() {
+        @Override
+        public void stateChanged(ChangeEvent e) {
+            if (joinButtonModel.isPressed()){
+                waitingPanel.setVisible(true);
+                logInPanel.setVisible(false);
+            }
+            else {
+                waitingPanel.setVisible(false);
+                logInPanel.setVisible(true);
+            }
+        }
+    };
+
     ActionListener actionListener = new ActionListener()
     {
         public void actionPerformed(ActionEvent e)
@@ -48,7 +65,7 @@ public class StartScreen {
 
                 int connectionStatus = client.connect(userName, serverAddress, password);
 
-                if( connectionStatus == 1 )
+                if( connectionStatus == 0 )
                 {
                     frame.setVisible(false);
                     frame.dispose();
@@ -60,11 +77,14 @@ public class StartScreen {
                         client.clearDrawingArea();
                         client.setVisibleApplication();
                     }
-
                 }
-                else if( connectionStatus == 2 || connectionStatus == 6 )
+                else if( connectionStatus == 1 || connectionStatus == 6)
+                {
+                    showErrorMessage("The manager rejected your join request");
+                }
+                else if( connectionStatus == 2 || connectionStatus == 7 )
                 {
-                    showErrorMessage("Duplicate usernameField: Please enter a new usernameField");
+                    showErrorMessage("Duplicate username: Please enter a different username");
                 }
                 else if( connectionStatus == 3 )
                 {
@@ -90,18 +110,18 @@ public class StartScreen {
     };
 
 
-
     public static void showErrorMessage(String message)
     {
         JOptionPane.showMessageDialog(null,
-                message, "Error", JOptionPane.ERROR_MESSAGE);
+            message, "Error", JOptionPane.ERROR_MESSAGE);
     }
 
     public void go()
     {
         joinButton.addActionListener(actionListener);
+        joinButtonModel.addChangeListener(changeListener);
         frame = new JFrame("StartScreen");
-        frame.setContentPane(panel1);
+        frame.setContentPane(mainPanel);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.pack();
         frame.setLocationRelativeTo(null);
diff --git a/src/client/Client.java b/src/client/Client.java
index a4b16f5..98776a7 100644
--- a/src/client/Client.java
+++ b/src/client/Client.java
@@ -157,15 +157,8 @@ public class Client
 
                 if( clientController.checkPassword(password) )
                 {
-                    if (clientController.join(getUserName(), this.chatUpdate, this.clientUpdate, this.drawingUpdate, this.encryptionUpdate))
-                    {
-                        System.out.println("Connected to server");
-                        return 5;
-                    }
-                    else
-                    {
-                        return 6;
-                    }
+                    int joinStatus = clientController.join(getUserName(), this.chatUpdate, this.clientUpdate, this.drawingUpdate);
+                    return joinStatus + 5;
                 }
                 else
                 {
@@ -188,15 +181,8 @@ public class Client
 
                 if( clientController.checkPassword(password) )
                 {
-                    if (clientController.join(getUserName(), this.chatUpdate, this.clientUpdate, this.drawingUpdate, this.encryptionUpdate))
-                    {
-                        System.out.println("Connected to server");
-                        return 1;
-                    }
-                    else
-                    {
-                        return 2;
-                    }
+                    int joinStatus = clientController.join(getUserName(), this.chatUpdate, this.clientUpdate, this.drawingUpdate);
+                    return joinStatus;
                 }
                 else
                 {
diff --git a/src/client/ClientUpdate.java b/src/client/ClientUpdate.java
index 860a34b..1e5389a 100644
--- a/src/client/ClientUpdate.java
+++ b/src/client/ClientUpdate.java
@@ -80,7 +80,8 @@ public class ClientUpdate extends UnicastRemoteObject implements IClientUpdate,
     }
 
     @Override
-    public void notifyManagerActions(String toClient, Action action) throws RemoteException {
+    public int notifyManagerActions(String toClient, Action action) throws RemoteException {
+        int answer = -1;
         switch (action) {
             case KICKOUT:
                 client.getChatScreen().getChatDisplayBox().append(toClient + " has been kicked out by the manager.\n");
@@ -91,6 +92,16 @@ public class ClientUpdate extends UnicastRemoteObject implements IClientUpdate,
             case KICKALL:
                 client.getStartScreen().setAppTerminated(true);
                 client.getApplicationMain().exitApplication();
+                break;
+            case JOINAPPROVAL:
+               if (client.getUserName().equals(client.getClientController().getAdmin())) {
+                   answer = JOptionPane.showConfirmDialog(null,
+                           "The user: " + toClient + " wants to join to your whiteboard, do you want to accept?",
+                           "Join request", JOptionPane.YES_NO_OPTION);
+               }
+               break;
         }
+        return answer;
     }
+
 }
diff --git a/src/remote/IClientController.java b/src/remote/IClientController.java
index a8b583f..ca006a9 100644
--- a/src/remote/IClientController.java
+++ b/src/remote/IClientController.java
@@ -5,9 +5,9 @@ import java.rmi.RemoteException;
 
 public interface IClientController extends Remote
 {
-    enum Action {KICKOUT, ASSIGNADMIN, KICKALL};
+    enum Action {KICKOUT, ASSIGNADMIN};
 
-    boolean join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing, IEncryptionUpdate encryptionUpdate) throws RemoteException;
+    int join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing) throws RemoteException;
 
     void quit(String username) throws RemoteException;
 
@@ -22,4 +22,7 @@ public interface IClientController extends Remote
     String getAdmin() throws RemoteException;
 
     boolean checkPassword(String password) throws RemoteException;
+
+    void removeFromWaitingList(String username) throws RemoteException;
+
 }
diff --git a/src/remote/IClientUpdate.java b/src/remote/IClientUpdate.java
index 3788bd2..0f818fb 100644
--- a/src/remote/IClientUpdate.java
+++ b/src/remote/IClientUpdate.java
@@ -6,10 +6,10 @@ import java.rmi.RemoteException;
 
 public interface IClientUpdate extends Remote, Serializable {
 
-    enum Action {KICKOUT, ASSIGNADMIN, KICKALL};
+    enum Action {KICKOUT, ASSIGNADMIN, KICKALL, JOINAPPROVAL};
     boolean updateUserList(String[] users) throws RemoteException;
     void terminateChat() throws RemoteException;
-    void notifyManagerActions(String toClient, Action action) throws RemoteException;
+    int notifyManagerActions(String toClient, Action action) throws RemoteException;
     void setVisibility() throws RemoteException;
 
 }
diff --git a/src/server/ClientController.java b/src/server/ClientController.java
index 6ff46e6..1462772 100644
--- a/src/server/ClientController.java
+++ b/src/server/ClientController.java
@@ -17,34 +17,56 @@ public class ClientController extends UnicastRemoteObject implements IClientCont
     }
 
     @Override
-    public boolean join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing, IEncryptionUpdate encryptionUpdate) throws RemoteException
+    public int join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing) throws RemoteException
     {
-        System.out.println("I am in join");
-        if( getUserIndex(username) < 0 )
-        {
-            // user with same username is not connected
-            server.chatController.broadcastMessageUserLogin(username);
-
-            new MySharedKey(encryptionUpdate);
-
+        // If there is no user in the list then let the user be the manager
+        if(server.users.size() == 0) {
             User newUser = new User(username, clientChat, clientUpdate, clientDrawing);
-
             server.users.add(newUser);
-
-            if(server.users.size() == 1)
-            {
-                newUser.setAdmin(true);
+            newUser.setAdmin(true);
+            broadcastUserList();
+            clientUpdate.setVisibility();
+            return 0;
+        }
+        // If there are users in the user list, then check if the username is used
+        else if (getUserIndex(username) < 0 ) {
+            // Ask the manager for the join approval
+            int managerIndex = getUserIndex(getAdmin());
+            User manager = server.users.get(managerIndex);
+            IClientUpdate client;
+            client = manager.getIClientUpdate();
+            int answer = client.notifyManagerActions(username, IClientUpdate.Action.JOINAPPROVAL);
+
+            // If the manager accepts the new user to enter, then add the user to the list
+            if (answer == 0) {
+                server.chatController.broadcastMessageUserLogin(username);
+                User newUser = new User(username, clientChat, clientUpdate, clientDrawing);
+                server.users.add(newUser);
+                broadcastUserList();
+                return 0;
             }
+            else {
+                return 1;
+            }
+        }
+        else {
+            return 2;
+        }
 
-            System.out.println(username + " registered successfully");
-
-            broadcastUserList();
+    }
 
-            return true;
+    @Override
+    public void removeFromWaitingList(String username) throws RemoteException {
+        int userIndex = -1;
+        for( int i = 0; i < server.waitingList.size(); i++ ) {
+            if (server.waitingList.get(i).getUserName().equals(username)) {
+                userIndex = i;
+                break;
+            }
         }
-        else
+        if( userIndex >= 0 )
         {
-            return false;
+            server.waitingList.remove(userIndex);
         }
     }
 
@@ -206,11 +228,13 @@ public class ClientController extends UnicastRemoteObject implements IClientCont
         int adminIndex = getUserIndex(manager);
         IClientUpdate client;
         String toClient;
+        String[] connectedUsers = {};
 
         if (server.users.get(adminIndex).isAdmin()) {
             for (User u : server.users) {
                 client = u.getIClientUpdate();
                 toClient = u.getUserName();
+                client.updateUserList(connectedUsers);
                 client.notifyManagerActions(toClient, remote.IClientUpdate.Action.KICKALL);
             }
             server.users.clear();
diff --git a/src/server/Server.java b/src/server/Server.java
index 5a9b983..3c87547 100644
--- a/src/server/Server.java
+++ b/src/server/Server.java
@@ -18,6 +18,7 @@ import java.util.ArrayList;
 public class Server
 {
     protected ArrayList<User> users;
+    protected ArrayList<User> waitingList;
 
     protected ClientController clientController;
     protected ChatController chatController;
@@ -29,6 +30,7 @@ public class Server
     {
         password = null;
         users = new ArrayList<User>();
+        waitingList = new ArrayList<User>();
         clientController = new ClientController(this);
         chatController = new ChatController(this);
         drawingController = new DrawingController(this);
-- 
GitLab