From 380495a69e0a80df96c594bbcc1251673f3d9738 Mon Sep 17 00:00:00 2001
From: 1004268 <isaac.pedrozaaguirre@student.unimelb.edu.au>
Date: Thu, 24 Oct 2019 18:55:27 +1100
Subject: [PATCH] Admin functions

---
 .idea/workspace.xml                           |  43 ++++++++---------
 .../GUI/ApplicationMain$1.class               | Bin 1847 -> 2568 bytes
 .../infinitymonkeys/GUI/ApplicationMain.class | Bin 5686 -> 5970 bytes
 .../infinitymonkeys/GUI/StartScreen$1.class   | Bin 2097 -> 2097 bytes
 .../infinitymonkeys/GUI/StartScreen$2.class   | Bin 0 -> 771 bytes
 .../infinitymonkeys/GUI/StartScreen.class     | Bin 3753 -> 4452 bytes
 .../infinitymonkeys/client/Client.class       | Bin 5455 -> 5555 bytes
 .../client/ClientUpdate$1.class               | Bin 780 -> 776 bytes
 .../infinitymonkeys/client/ClientUpdate.class | Bin 3520 -> 3601 bytes
 .../remote/IClientController$Action.class     | Bin 1081 -> 1131 bytes
 .../remote/IClientController.class            | Bin 684 -> 712 bytes
 .../remote/IClientUpdate$Action.class         | Bin 1103 -> 1099 bytes
 .../remote/IClientUpdate.class                | Bin 509 -> 509 bytes
 .../server/ClientController.class             | Bin 5582 -> 5950 bytes
 src/GUI/ApplicationMain.java                  |   5 +-
 src/GUI/StartScreen.java                      |  45 +++++++++++++++---
 src/client/Client.java                        |   4 ++
 src/client/ClientUpdate.java                  |   9 ++--
 src/remote/IClientController.java             |   4 +-
 src/remote/IClientUpdate.java                 |   4 +-
 src/server/ClientController.java              |  10 ++--
 21 files changed, 80 insertions(+), 44 deletions(-)
 create mode 100644 out/production/infinitymonkeys/GUI/StartScreen$2.class

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index ecbec17..242aaca 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -3,7 +3,22 @@
   <component name="ChangeListManager">
     <list default="true" id="688d774d-cfc7-4b0d-b00c-5ca931aba600" name="Default Changelist" comment="">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <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/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.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/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.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/infinitymonkeys/server/ClientController.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/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" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -47,7 +62,7 @@
     <property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.WIDTH" value="280" />
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="aspect.path.notification.shown" value="true" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../MaxCode/comp90015-dsass2-infinitymonkeys-remaster-mpriymak" />
     <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
     <property name="nodejs_npm_path_reset_for_default_project" value="true" />
     <property name="project.structure.last.edited" value="Project" />
@@ -66,7 +81,7 @@
       </list>
     </option>
   </component>
-  <component name="RunManager" selected="Application.Client 3">
+  <component name="RunManager" selected="Application.Client2">
     <configuration name="Client 3" type="Application" factoryName="Application">
       <option name="MAIN_CLASS_NAME" value="client.Client" />
       <module name="infinitymonkeys" />
@@ -120,7 +135,7 @@
       <workItem from="1571654347656" duration="27259000" />
       <workItem from="1571783604151" duration="19947000" />
       <workItem from="1571812296671" duration="25759000" />
-      <workItem from="1571879738075" duration="3774000" />
+      <workItem from="1571879738075" duration="12110000" />
     </task>
     <task id="LOCAL-00001" summary="Changed the join method to send over a reference of the ClientUpdate Interface">
       <created>1571646862883</created>
@@ -165,21 +180,6 @@
   <component name="XDebuggerManager">
     <breakpoint-manager>
       <breakpoints>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/GUI/StartScreen.java</url>
-          <line>38</line>
-          <option name="timeStamp" value="7" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/GUI/StartScreen.java</url>
-          <line>33</line>
-          <option name="timeStamp" value="8" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/GUI/StartScreen.java</url>
-          <line>85</line>
-          <option name="timeStamp" value="9" />
-        </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/client/Client.java</url>
           <line>47</line>
@@ -192,12 +192,7 @@
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/GUI/StartScreen.java</url>
-          <line>40</line>
-          <option name="timeStamp" value="12" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/GUI/StartScreen.java</url>
-          <line>62</line>
+          <line>59</line>
           <option name="timeStamp" value="13" />
         </line-breakpoint>
       </breakpoints>
diff --git a/out/production/infinitymonkeys/GUI/ApplicationMain$1.class b/out/production/infinitymonkeys/GUI/ApplicationMain$1.class
index 7daf4ebca183d7e6b8e4d39d2c016bd7d6e98c54..b1b7ffb50fadd02566fe4a67e2f639737ee986eb 100644
GIT binary patch
delta 1429
zcmdna*CA4W>ff$?3=9k=3_Y9-vJ4Jf3~~&PTnu&$PFxJm3@#wTm7Bqh!JUi2gTWId
z;RWJ)gIGQw!WTsNfyDelL;y%fAQwXrLogRZ2tz14Ll_r>5XeX&hH#Kb1Q$ajLlg%?
zGzUWrJ438I7lR~296Lii7lSlI0y{$@J3|s916xT(X0eI^BZKI~38E95Z$xwCmF9*P
zrxq16GBA2FGO!gT=B4E4GBODHWF?j*>X(*e=I953#jF___#v_&^`3btsTGV2Y>9cr
z<*7xC3_>NTMY)-Ii6yCy1qF^^!O3ZiiHz}+PcT~4C-X3*Fr@M@$TKMLFerjpX$<M?
z3>iEOnG9Jx4A~4h><qa)40#M$><sxl3<V5@JPbt)#XJlp45d5_WgrdZAZ`UnbtOX;
z4?{IbqK2WCouQ70p`M|EouQG3p^2fGkwF06;XDii%?vF(46O`p><sNZ3>^$vlf9W@
znL8P}Ca-3aW$R{01%<~%;mr@3vKcwpvon*k9dmLfFJaLU7c0)lFZWBWDDh3qOH5BK
z@=Yx+PE1do?8OpO&zqiF;+&CK5}aI=nwrPRAf%z`;~wg%j}WtFWZ**;VPp_aPc8Az
zOwI-cqH}(3Qod7u1tWu`h9)?`EA)%YGxO5*y<k$-j0~b64`E0!CNl7(r<Qn@q~<#3
zm*$l)GO*{RR+M;xSS%Wznx2ddoKShk5=I754Nr&-`Z<Yt>H7XjS*gh-*09h*5@TfG
zD9H~lDay=CpL~ubLt2(Wj)8%JQ9u9`c?=8;ObiSRiVR8&j10<?16ieQRTvl;*cccY
z7#PwRR2di;#K0=J7}OXv7(jpvtdEg_kwKF|3#5yIfvJjtg@J>CfiY_GN><r=Ms}?&
z42;_tIBaERF{pvqI~bU^F|fi}EIS!EnHWIaZ46w?8LrB(EMT|*;d0x_&SLO@uz9Rl
zKn!%vk}NwJc$pc(vB~XZ;A5(XnJmk)fT0Smihmn}z%~X!GnU;9LXq1UgsoU5Sw&g4
zF^HJ4p{NmM+r}WejX}%`><bLb+3{P>ptVI1<ae&+42FzC;zAP4I~b%U>$6GM^C9_|
z!&he;gUm)yC^H5!hA>DoFf*tyFff!c$TBc6<S@uH<T0o-6fkHr6f(Fl6fyWQlrRJ{
zlrls!lrzLLR4`;PR5G+MR58qDsAgEgP{**6p`KwkLj%JRhDL_73{4DA7@8Rw7+M%5
z8Cn??7&;l18M^Bkbs72?4H+gddNE973}l$b7{V}xF_d8{V<f{2a6}g{a5H2u*f3}_
z=rFJ_>}E)1&}GnLU|~4I5W}F)V8Fo2aF!vM!H_|ZfsNq_R2@4*G{aE_BL+PNW(IYJ
zpA5zfdJIgAx(q4|CSX=50}F#GgBb%8Lm&fV6f6xfMlqN(STHa$STZm$h%m7KVen)8
x!w|~&lcAbP*NL6MiiLrh!5W-4Z5V7B7#LU>>=^7B)EO8UxEL70VZ^||005*)FfRZA

delta 704
zcmeAW+0K`D>ff$?3=9k=3`v{}!VHF73?d9hTnzdQ##{_045lE$jGMun!GepylEDfj
zVGSZ|Kw`Ea!Vbi>=U{N)U~pt-aN=U%XK-d`aN%MQWN>9?aARk1XJlY2$;d2LF<@j6
zop?ZW;^rINY>9cr<*7xC42+(WpD`vfx=i+9vheocVen+|;$aYF5aVGG2eG^veApR$
zc^Lc{{COAx7y{WDf_NB$8T{E9LU<TL8NzrN!WklX7$QN^Q4G;M3^5F`JPdIRUX%Hm
zW0~U_5+>&}%Q7c2cx~=yZe*Ms%NjLVidAd!Otv&>VFnQf1_nj}0g!bJ3=B*R3=HB7
z5)6zCl9Q#_rR${_7#P?X7#SEC;uxeE7#PIBD!3SA7~~j0fD5dTk%5sxo<RYmi-Cc$
zh=GNHg@J)#i`Etf#vKgI+Zb5jEY_V2Y>W)s7}#erB!UFDF>u(*%wlkZusQueG*}BO
zn8gX!t-F(fYjQq^q!Kq114wuq1CI>L0tPN9dpUz4qY$qUAM*|dfywhYr0WsNmNRhp
z>TF{W+6eZ-YKC<Tf(*<IAWwNQ2r)1)q%g=cq%o*7q%&wUWH1;rWHR_MWHF>OWHaP3
z<T4a9<S|q+6fo2>6fv|jlrnTPlrt=0s9;#lP|L86p_*YmLk+`bhI(+o*fFp%7&BNi
zC^9JJF)%ZzGXygzGpH~yF|;$NFsOoA>ls)W)ELykA-Dw|f?F6g7&I9e8MGJ}7z7yD
y{xIY*{$k)}(sg2I&}Ly^X3zo0iY|j50|NsKgFb@+gDe9B0~Z4$gD@xp7#ILAIBXpN

diff --git a/out/production/infinitymonkeys/GUI/ApplicationMain.class b/out/production/infinitymonkeys/GUI/ApplicationMain.class
index f574ba2a0ddbc65b154bb66511c1bda548cbe2d1..b7c68a450c8b41db7a5ea3ee16997af0e61b8b6a 100644
GIT binary patch
delta 2903
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

delta 2616
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
POk(hbRv!)w3}7n(^Ca~$

diff --git a/out/production/infinitymonkeys/GUI/StartScreen$1.class b/out/production/infinitymonkeys/GUI/StartScreen$1.class
index f0ec3f4e26dd97aeef8b7b8b07905b0ca5fef5a5..0e33ae80ec6d5ad317fe34d7a81de97737a9c7ec 100644
GIT binary patch
delta 104
zcmdleuu))xI~$|SW)C(Q#!z_%J_bbwNd_eb6$TXsBL+1F3kD4aX9i6MUj{9PSO#r|
zECxM>5(a&SItBxVZUz&E=?rEJ^BF7{mNHl|tYxra*vw$Zu#dr>;RJ&N!&L?shFc8o
JlXtRL005iZ6cYdd

delta 104
zcmdleuu))xI~$|?W)C(Q#!w{&J_Z#ANd{F06$W(%BL+<d3kGclX9gVxUj|)<SOz_Y
zECxe{5(XoNItF8gZU%FP=?s<(^BJremNM8ftYxrg*v#O_u#drs;RJ&-!&L@%hFc6?
JlXtRL005~P6j%TN

diff --git a/out/production/infinitymonkeys/GUI/StartScreen$2.class b/out/production/infinitymonkeys/GUI/StartScreen$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..99249c7c0c083b5b04dcfe1b9535dc0a2207753e
GIT binary patch
literal 771
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|Mh0PYlU0nY85wxW
zGxJjN%l!*d^HNh78RRv5vJ%S@^%KiW^i#`H^Gfu?!Sb#kwl&BpjH!$aGWZlRGVlhM
zBqnG3CKf>5!xfxgT9lmXmI-pP0Fux3Kz1=Q@Vn+E=j0b>=B4|lmSp6ournz0FsLx7
z@-T2PaPly4fmmt`>O2e@AeJVB79)coS{SMrF*3-2Ov7-wV@hH{Noo-z13#J;Mh2$z
zd`1Rl4Un(+Gm9My3PMtgax?Q1OF$vPtf3jj$RJdlkzekenVjvIljECOT%4Gm%E%y4
zoLYjWnnfc@GmJrjfsKKkfq{WhKmg=)1_lNu1_lN$25tsM1|9|m20I2Oh=`W<Rt83`
z?F>vC!D@IJ7#P?X7#SECVi@=s7#PGLsu=hg1Q|ep3v3!A10#bFgD}*rWT;tET3Z+x
zw=po!WDtU|SU?o>HU?IZ*~|<evxOK~7#JAh8Mqh{7z7y-86+8!k?fIz+atvw!XV1P
r$RNhRz`)GFD9OOgAP#n*1cM|40|N_#6oWK_0N6{63~V5mF)#oCTE(E0

literal 0
HcmV?d00001

diff --git a/out/production/infinitymonkeys/GUI/StartScreen.class b/out/production/infinitymonkeys/GUI/StartScreen.class
index 1d786d989283babc6b573dafa0a7e900807ee030..6226aebe17cfba88b63cd0d2961a3cb076cc4561 100644
GIT binary patch
literal 4452
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

delta 2057
zcmaE&v{JVI)W2Q(7#J8#7&dY;h%q>T2uBd%1R|Wd7{nP|*cn{87}yxxKqBrO3?A$Z
zo?HxE3|?Fe-V8qM489x;eq0Q^4E`Yb01y!f;s$|;U=R@kB0||2!q^$Y85wvy^YT)Q
zoO2S3i&KjkC(c>CIiAssaq>^5>!vCUsyqy`401dSiXcLsL4k)sgTaK6LC`(aQ$M&Q
zv8W_CxhOR?PsI=<5y8Wt#-Ki#l|_X+k|BznA)1FFh9P#c35%+t27>_)gA#)>4}&Cw
z6c0ljLp%>d0z)DXLlT1t4}&Q~^5*+2CX6;L8c~{Ij10UgDk{aPC8Y(So+>ITJPaue
zCR_|+45^F^LRpDri52?A<(YZu`d$Hvd8s+<4C!1984NCy8`+GtvKSfoK}z%!%S-e<
z^NLeTirE=*7#Y|#JUu-<HN!y8%;RFnWyqg=k4;`dgQ1X%A)BEHYA{%rbADb)VrE`y
z5j#W4WLb6{jxvUFE{0NuiphcOhKyB{o7sIhG#F~Q7^)d+Ctqhb;izY50LeE_7Us}k
zYvy8TVQ`u3$RW<w#>LRi;4(RmL*BlVk%7H9wIn39qJ)Q`o527i)5FLh3UVskHy~NZ
zqSQoohCVKaeg+pF25ANvQ1nflyoW<Yaxx<WcX4WoYf5HGVp2{j55rW3WG;p&4AUn6
z<jAR?0b=$b`@<zOH#M&~Ge3`=VKyTJs|L*bbGaDiFwA3Q;EK#IEmFu!%uTi8U|7J&
zAco->x6IU>6n2J1TnvjDTtJD-g^_{Z%iq&aA>6|=#MQ~)G0263VHqQXRMzAtoYFEY
zxENM4^e{4T1*aC3r4}i823T=0tY&0j;9yugS(?kTUW`GU0mNehr2+;91}2aX!L%%c
z9GI48Pyo}4U_JvV$$<GP45|zupvIuiz`(%8z{sG%pvl0<pvAzz5XHdCz{J47Af>gP
zfmLfa16!n))^>)p?F{T&8921Gw=ytp1e>94!@$5G#K6M9z#z)N!XU>W!XU;V$so?4
z!@$5G1~Gy`mq8C?4}%l~$Vx^AP6mAj1CT|N<+-KIwZWEyEDK=ZU<d;1<Y8cBU|`^6
zFk~=dU|?WmFlI0Tsb^qdsAXUQ%UMq@;I^uVI)Z_LL5_i)fq@~6ftw+mL4qNIL75?v
zL7O3p!H6N6!HOXU$y95odl(r^;ij51Fo8|w)Y`%zz_N`&6k#wI*c0&#91ICahH!!n
z;bsuvU@&7a2f1zXd|t77kYCs!CLt+iWv~E+fB*-BC4&`6Edv9CJ_93I9jn$B2IdWr
zuw-Chz^B<7t7ax7&Gld-Ik8%8!(fZWYDOg8I5jhY3JZv4rXB`C20jJ`riR@N8Iju=
zGJQaaK~Q@)Lv|z^OZ{$!+(>3-X6Ee-1x!pJs(2eiB~+!a4nz@FHQGA68LA_hnORtv
z+1S_^85y@T)NNyE+Re}sxt*caPe&Id%>t5U5ny9Ml5daP&d_1SBFQ4uwT+>^S4WZs
zq!MJ100%QOGm^^w$n6XhtXQ=qS+_Dwl4NDx#xPxyRcPimhFLn2tRPLSAmiBt*aX-Z
zcQee16l9ntV6>fKKHMo_|5~w0vf=bcJwv57NV+-_Vit-|ATDK>WEWbvjiFbPO_CjC
zDK?ibj@-_$#EL^pl4C0alO&rY2S_2v^8y?!0&L7M*D)bG&O35D!_s;yPAy5!tqd%Z
zoI=aDF|3kgljH>H1-piY4LLL*p5c<@!s!{1U${WJK{jKH6)SE@E=g{<3Kjvjdd!&N
zk>n9t1M)AIBo9a_ZvXOXN%C%GV3y<+TDOg1mL!)XFGxMe={UU&%B2hfj121;Hh`1o
ZWIaJ~aS3pF!pOh|E^`<d?7*4J9su!ua#sKV

diff --git a/out/production/infinitymonkeys/client/Client.class b/out/production/infinitymonkeys/client/Client.class
index 7fea52fe06f8c6079c81f2fc781b3f2678e09aa6..3af763b9e570a46a5dd0509c235b098a294c9582 100644
GIT binary patch
delta 1429
zcmX@FwOPCV)W2Q(7#J8#7zH>P<QQgxh*=<FHi(!5BIa^2$T7_0Vvu2&58^HW5eq@Y
zA`r2di@}>=2?xVc5N8<&!*US4f}LR{7lR<fDiCKiJHr|-1`!BnEjz<HE(UQ3XFWSZ
z{RS=uDTY<-3>!fftYT-_1hQ>2h}go;u$6;h8%TaTh}Z!lc7l}c;$qm%um{B2$;Ggj
zVIPRt57Ke~WZyv$>kvrnFo<;or0ysu!!d^A><lNk7>q!!Jqe;uaWNQ$Go0pPIKyz3
zgW()EgA>Df4u%ULO&3ALB`$``3|BZ9u5vS6W4O-FaD#*4COg9|4u;$840k|IxXZzC
zkBi|x!vl~N54ji~F+ApCc*5|Mo#EN$P{tq3DtzgwCBY?$MJ2(>MX9NIj10mWnm+EK
zp880Flf76~7@tqhXDwmeI{69fUyekEBp!xFhW^P<*sPcv8D30QWcQg|#IC{7$WXw;
z(8tg}c@ev@?@JKp6+=G{!)p-nhM}LG;VlotI}rVzhv5T51`oqWhEF^Uc_3CWLkJH;
zI*9d|;R_E#A&B*r;Tt={cOHfx3_m9;ap=|mV))I&@P{FTo#8JJ!#{=sMh33X;?yFA
zyu{p8D;|dbj0}tn!p`}5d8x@IsVNF2`3l9UMP;c)JPi3Dw-hlHuro69FfuVRGcxcw
zXC#(5=jW9a<>%z27O^w3@G!D6vN1A<6{Y6pm!#@@qAFly5SV<PBUYK6k%N(eft`_)
zhmi|pXemP(J0mv_BM&1lJ0l+tBR@m`W`E8~W<g#CAqIa2Uj{}7KL!Q{CI<e=H+eD{
zMK?S19%WK%U|?j(WME*>X8^gGfq_+P3j_BCu(~V;1_m|;Mg|6k@W~(fMI#y+3K*Ec
zidQkPFfcJNFa&9BXW-Ei;@!%?rzOO{l|evDdn*Hz)@}yDNUiM*LR%SxwRSUzfY_p2
z8N{@9Gl+xO5?dK0wRST|f!NYp8Mr6M3CO6%Ft9KPGH@{nF$gfkGKez7F(@*`Gw3oT
zFjz7qGPp7%F$6LsPo6IzF4_e4N;3lk0}BHqLkj~ZLn}ku<kJEU^_dLZ3|S2P4EYQ~
z3^@$K40#L^3<V6?3=9kk49pDN3@i-o47s3~VPIwGVCV#UO_HIDp__q$p@)Hift`UV
zh@GLAm4OkIbf5ua1`QYvP{3?sP}v9%8!m7dlrpe0lz}aod`?h6d;&v1HjR@v3JSAU
zGO#mLO^z25XY8N+P|#4Zo`IdAfkBX=5v-jD>>iNIa~T*I7#Sup^iMVxQfF;pU}tEZ
z94{owJegt2<Z>Y`M*hi*gt9rsw6-t^Yi(hWoGd0h2Z^^^*sXp70~f<Y27ZRg43Z2}
z7-SfxGw3tSV6bAC$>7W|iy@w2HbXVT9ERx(a~b9{%wt%{uz+DP!%~J749ghSGAw5}
z#;}s%9K$Mx2MntjJ~6CeWMNpxsKBs+(S~6oqYJ|(MmL5nj2;X-7(E$wfnBb}z{2Rs
zzyuCcW(EdE@5v1!(o&!h<!4~y=lRXh!uXqEks~`pF9RdPREGY^TSfF`_cQP_8~|&F
jcwB%XhXLa8X$<|78AWv!4>RyG96?gS2Ujs290xN1R~j`X

delta 1262
zcmdn2eO{~n)W2Q(7#J8#82LCE<QS%dh#4SaCWx2?B4%?j$T7^}Vvu2&3*ycL5%WRB
z0xkw`hJ_pqi$I*k91Kf9^ip<)Wn2sb49h{B73>Tvxfp~YoK@@$tGO7&Ae=Sq3~RX<
zBpK?#>ejI{tOr@JoSk6<$hM6jViP;VW)6leAXQsI#5NGI9i(gr7sF15T_DzWE{5F<
zdqBiqkd}QQOZS6V2S8#6L99a{b%!|_jxZc$XE?^iU<7jVaS(lii@_+I;UpKsDTdP=
z3}?6*oEXk>Fq{KvIu9Z)a4}qDxWvJ5nVaDX!&P>MYa9&M*%@wdFx+HkxCL^;Z4QPz
zTnu*^?t!eh&&BY7;UO2pBZkN93{N(PGX7wmT*9iz_;m6#))L0eleyXcGS@ToP8MLd
zVy<U+Hrbcmhn0sRks)dFOm+>9dWHfXh8~9A$tT&31D=C8FBp1x7+!*iR}8)E46k_@
z-hk-0JPhv`GI$u?GkoA-$OEy08A5m%(m||`44-%y3PG&T3}4t8zVa}9WBAU<AU^p%
zm-ysl4iTjv3_p1oelcXQGyLXZ_`^`Z$iNj^oLZ!imzbMs#l!HI;osz$9E$7=|9Kc0
z7#SxY<Pc_K;$dWFWSM-6qf(ibk&Tgoft`_^hmiy1!cvAZc1BJfMlMEfc19i^MqY;A
z&1IaG%z``&LJa;4z6^{Eehdr@ObmRJcrzJAHfQl3WvVY=U}DH*U|?9qz{0@9z`zis
zwVi=mONeJH1Fx14-&O{GE$yugOj^4c1R}MzGYD>F5YpPsAPi!QY-JGD+RY#aVvBEO
zkkH!AAPHhiZDo+w+RY#XV#{u2VA%+^GmC+NL5qQlfq@}{frUYkfr~+iL4YCBg+Y`d
zib0Vfnn9N#hQX2{mcf-Fjv<gCo*|oofk6!7B!(P@Tm}#bVrT$+qmhAufrWvQp^1T$
zp_!p&vc8~$Un&DPLmC4=LpFmDLk5E|Ll%PsLk`#!1qNmYZUz>HR)$;#Mh0O9R)#i)
zb_PZU1_nun4u(z!28J#M1_pKprXY5PZdL|HaJ(}L2{TGhz9=ZnTFAi8P&7G_UzE9z
zp?5N)kT8q%HU`znR|K_~`x$yCy9ya{Rx_|O)G!D#)K0D!5@ntMQ8sy%kO*r713N<_
zSo1`NNt162X)*FmW)sfl6xG_oAf&a0L1J>1@Ejzbyog(U4+9rNF9SbAKZ7L01O^#~
z$qf1oQy8omrZPA)Ok;>=n9fkmFoR(_!%T+x46_&(GR$FE%&?GQ1;ZkSwG4|Hjxj7{
zILEMz;Q_;PhEEJD7+DxrF)A>uVYFdb%jm+ej?s-_1EUAS7Di8oZQ#(+VqjtPWMBe^
z2{Qu&qxa+|BGOWz5aDNF<LCL!(8BneVUZ&{LpK8>!(@iu$&#Y_vb!1h8TNp+^MC_V
h02)P%3{x0-C#Q<)D(+|CWjKJOf)B1@DmXn%0|2~A4m$t<

diff --git a/out/production/infinitymonkeys/client/ClientUpdate$1.class b/out/production/infinitymonkeys/client/ClientUpdate$1.class
index 1b1e4c50ab7b86ddfde6170006a51b4f94794531..e1872428e89b4af9c22e38f5a2aaf1a8f3fb5bd3 100644
GIT binary patch
delta 26
hcmeBS>tNd;%EZC$?dk08=;Je4k!e0-#N>la-T+(Z2SES;

delta 30
lcmeBR>tWj<%EZI%>*(j`?iv&r>KQUwmT5j?<mA0f-T-^=2!#Lu

diff --git a/out/production/infinitymonkeys/client/ClientUpdate.class b/out/production/infinitymonkeys/client/ClientUpdate.class
index 11926f3376c5f6523f889328cbc88369ea2c2a5a..2901f95ac1e068187f468f14edf6ba575cb7dd31 100644
GIT binary patch
delta 1290
zcmX>gJyAyJ)W2Q(7#J8#7>;l;Xfs4}GH6W{vS-wq802N9$I!^d5X{iT#gNF*%)!vY
z#n8&o#=+3e#SqKT!Nt(Y(8a|N&(O`z(8JEq%g)fp&d|@!Fk#|}C5#g%=Q1ASa$#iP
zD=kP#EJ>Ywk5OTAER!jF4?Dvoc81B5XENC{PMLg@$(Au}vN*HZ<Y;C^10#k29tHyj
zLw1I#JPgwqrn585;9;1_FpHgGHV?xbhPmtvlXw{BG0bOYSir-ukYUl}HOvZ}i+LE9
zFf3(c5T7i-E?&>Wu#90jBLkxX55o$El{^fqKt?(+I5IM@hPVcY7=lEW@-VDsm<ts#
z;$c|B5CG*EGcqtc=Hx(mCOiyl8CJ40Oy*%&$FQD<VFSZPc7{zn44Xj)Z(&%<!>|=(
z`Zf@;onZ$L!%haaT|5lC8TL#rWYJ>V3v$cS$qQMe1okoPXJ<IT!*Gz{5D&v)hJelc
zSa@0L`O;HMf=d#MN`jM%Qd9F78H6=7ecVGm^^pXv85#J|gcunFic?D*3kpI~i*hsb
z5=&B37#UbJqBO%88TeBxGC@)~naPPInfZAPiVRu|+6+t#It;oDj0{Ym&}Cp?U}s=t
zFsf%TW?*74VPIfzV_;%nVqjq4(%R0zsHMG?foUTH0|OI-DFXuo9|JQ31A`y~3xf~?
zCxbA983O}@7(_LLIfDfQ2ylUoWn{2qU|?WjU}UgjU}Ugnuz{K$%D@CRLs)AI1JgDJ
z=4}it+Zb4NwoR_(<n#nt!38!>oI#L55^THzL^<4eVFp_UI|fDu1_ogUdj>lOCM1iP
z7#tWJ85kK%CZFdFNdlQB#lXhEz#z}S!Jxn(!=S`q#-PAp!=S?8#Gnc{U4}u5!HL0+
zft7)Q!5MCkGlMgO3j-sAD+2=qF9Xv*1_5>kH%7)E4B8Bg4DJjbApcBm<=W3^I@y)m
zzaA74CJd|$sSJ)_!`K-Z7}miJTL(2vnqe}7CxaIQ6N4H<2ZJ|*7Xvfc0(Az~{|w;_
z?CcCa><n(~48CCG#>mLP@P|Q(oxxA$7X#l92391$GBWrx1b`gDz`$V1Fgb-sz(yVs
zQIJsdW8h-&2m6x;9Aey12O&pIAVUB+#Nv5mqCp`B(HYFZ#Snr;CnG};11JhX3FR3B
zGdOM<HZdsbY-3Q;TLp@K28MD52C!|Qq$0z>z+lh7z>qZg8jljA_2i#CO7#+us8?s%
z#-IUVGH+wh1i76VoXC_II2afhA{bN{q8MBlq8Z#7Vj0pI;ux|R5*SJu5*g|llEE&6
zq>KirpBNY#7{Z__qk$ouA%cMk9JFi<EGkM$B8ZSvVqjv31gGdI27Lww1|bF}20f6=
O1vnUj8FUyz93%mIg3<y2

delta 1142
zcmbOzb3j_?)W2Q(7#J8#81`^6Xfi}|GH6T`vS-wo804j+!_dgZ5XjKP#gNF*%)!vY
z#n8&o#=+3e#SqWX!Oqah&d|lq(9O=!!_Lq<@zN5;zRBf`#~7U^+cCwlcd|3|volPX
zyqL+JapL61Oty@klNFiGc-ZqxOOo?*QyCc;Jtv1UD;pRv`0+64G3c{1OyXgf%rJ$W
zVJZ*9G=}Ny3^RBbW-`oTXXxi)n9VSUonbBy!#sxhlUFb+ur1(WSjezw@;PQ1)5Q!+
z7#SE9co>#4EaPEV4l>P-!Jd(UHN-VI#1JI1h=*YX!z`$X5f8&k2EWPjED~m`7?!a!
zOyFTy&9H`tVJ*Wtc82vl3>!eEY-Cu(!>|ct)MgN|g<&fX!#0NPJPbP+c23S^(PG=h
z!?2iP(d4--Qp~#<wr@Vp!pmYQR-BPv?wgpGn4Ve`SejYln_66)n4Zd@$e_WX$-u;*
z#h}f=$iM{hD+2=qI|Czw0fQj}6NAy@NKR>IV+IBWJ_cq61_nU}76u^(P6lBH69xtb
zF$N|E1_mw$QwB2z5a0sqXJjyEU|?WjU}UghU}UglumYR2om0gVWDXZtk2r%MgCy7t
z1+cloa5ID%tQl+=7#SECgc)oZY#5l3Ok-lOW3XpnWH6en!WF`3Jh_rf-U;LmkQp)z
zQVb3ZHVmu`3=Gb2)0`O`8Jrjx8Jrmy7<d_&{xJx!Gq^A^{s4Q|mB9_{v|C*J8I32;
z;`Xlx8D_%3%8<(72sVtJfq`Ki+^}^}!=xD|Gq^K&FfcKwF?29^GI%gBgDp^JVExY!
z&cM#j;Kk11!p`6gMlOtu3=Dr5l-L=3WPUO5{a|24@)0A0FM}V*5ey6rmJIcbV2^Wa
zZDC;A#vr_nL4G3x0|OHSBHa8KxETDw;l=||3UwTEi2F16fx-xEBD#SJ=mrKea503y
z40K^&VBm(D$jA`D5DazMD+Xo;76t}}a%Q_t42nA27?ku@f#N%xfdT9aP|A>EU|_Ii
zU|>j??8hs{tFn!OXBz|GHU`z@42F~ac$Mn;Af960#-MH|yM}>*ff?*AB?b-#28IX*
zCWc4`6^3XA7ls%HcZN8IbcT3_EQUmeQif!(>$D&afI5zWp`0NEnoP<WLK(ssm>8HC
zN*Tf#BA{`>$-wf5L4{FCi3<|iYT)DuvIP{NQ4G2a3=BdHObj|8e+Y0e1Tttb1UX0o
E03B$q#{d8T

diff --git a/out/production/infinitymonkeys/remote/IClientController$Action.class b/out/production/infinitymonkeys/remote/IClientController$Action.class
index 035ddf1381adff501a6e806d89ed427882488ad0..b4c2cef704873af62401e4a1eb634a818a4d812d 100644
GIT binary patch
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`

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=

diff --git a/out/production/infinitymonkeys/remote/IClientController.class b/out/production/infinitymonkeys/remote/IClientController.class
index d438a291276cb8f60071c2bb1916a305991156c4..c3a87022f98ebf44dd8f90e2565327e5e9452c87 100644
GIT binary patch
delta 112
zcmZ3(dV*E#)W2Q(7#J8#7-ZNP#Mv1n*cl|*8KfqPwKGajoVT5WJv%cw+c76+axmj1
zM)t{SO!1aH42%q%3=9k`42%q1EQ}1o3?j%P3``873=9lR3}Osy3=9lh42)ovtPYX@
D_&N{1

delta 85
zcmX@Xx`tKk)W2Q(7#J8#7^K-5#Ml|c*%>6*86+o)wKGahoVR^)JmUpMw#f!e@#?}1
mj0~I%3=Av`j0{{1Obj9n3=B*Rq6};d3=CWhj9_tA2T1_@_zbTA

diff --git a/out/production/infinitymonkeys/remote/IClientUpdate$Action.class b/out/production/infinitymonkeys/remote/IClientUpdate$Action.class
index 92cdbe3fe1704265461317700f5d956ea36eb145..dd382481d4ab540e1f2e62b16ff37ddabd2cb284 100644
GIT binary patch
delta 19
bcmX@lahhYoG!AxePiJpOAD@kj)-nSCMKcE8

delta 23
fcmX@jah_wsG#+kWM?Xh**Py^q&ybDt)-nSCVLJ#V

diff --git a/out/production/infinitymonkeys/remote/IClientUpdate.class b/out/production/infinitymonkeys/remote/IClientUpdate.class
index cf1adf4c123b7ac99404efbeece8fb67c6d819de..7d8923621a39f42b6628c674a2a110f8b54dd03d 100644
GIT binary patch
delta 12
Tcmey%{Fiyc8OE@UXAKwuCt3w#

delta 12
Tcmey%{Fiyc8Ai{IXAKwuCm97+

diff --git a/out/production/infinitymonkeys/server/ClientController.class b/out/production/infinitymonkeys/server/ClientController.class
index 11839990a93f1c085e7afdc6628bb834a5e92355..2315795d340fb1296adc56bf6a7e5860ba62bebf 100644
GIT binary patch
delta 2411
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
QuwkfnkYw1&um(f}0Qb$+6951J

delta 1928
zcmdm|cTT(h)W2Q(7#J8#82)lGSTHnjGMF<oaxyeAG;=Vta51zpv~e+*GqiIubTD*s
zF?2C>vorK?F>o^Uf<*eb82T9|fQX48u}SO<lerl985%&u6b^=|AbJ`||8$U=86aXN
z$dFka46{LI&*5UI?`N3H%`lH)K8RQVGG!r1W)Vp3Vi0!;Cqp^IQjj6bK-}fr3@aE`
zg2YyFF{m@FW@lIfl3UBcunr`%o`Ycn2g61VhE1Fd)(o4u7|I#8a58LV*ani^&cU#Q
zgJCC#zYE0Q&B3sTpPgYZJHtM9hW+de2iO@7PL^U^!F`C4fh8+HGmnuWZ1MsY*~zaM
ze>3(>e#Yd@czCiA^L+Nb><nwz8IDZ8!Cb&tIN6iMi}C2>DJ-p%m04BO>=~kY7;G8r
z*cp!TFdSz%!N|blsgRhfkeR0dGLoI)BoD(WhHxH+Y=#_mhSNL@XBf`1Go0gLIL~l_
zk%7B7wWut$NI$eVwTOqop5Y=7!zG5x><m|U7_Ks0<6*eYaD#{8Cc~}C>sV!&Z!_GP
ze3n&K{4PTY4?{l4-g^x9c^DorJmg_`#BgCUBb!3~V~|x(7@o2-9Ohwo29kNs@Pdco
zB}mIDkd{{<Ew4cmZy0KM7|Iwbc^KX@yklp0&%^Kmq~Ie+_!Gl5Mh1bb#Ii*FoW#6z
z{os<K%)E3ShA4(;Mh1R`q}0s3bcMY9lFYQs)D#|u&kSD}8QAso^d>K0(--~9@QsJz
zJHrijh95i(9~pk~F#KZpJ^2Znp8OjS=MTsX5rxcRg_4X^g}l^qh1|rv#Prl6z0INQ
z%&f+qj10WRsU=~V#hFQ&IhiGu42lfq3>FMb43-R542%p+px|a;VBlh4VX$X#U|?c!
zoIICD+S!SLfq{>KnSp^ph=GMcn1Pc)gu$7CfkBLc39Q<M!Ic37xWM`u8Qd5c7+4q>
z8Qd8d89W#~!RGwtsbzGUT*+%(57KGJz{a4(;K1O;;LX6wz`&5h05c<p!H2<@fe|d`
z$KVgPA%`J=ArNeT4nq(_Farxi2m=EHHv`ij25)wT&|eI4C{~6sgoCVPU|^WWzy#K2
zqNTl!fz4KCHiM4VWNkh@MyJV9e9EpMmnc9K!0k7I+Rw(I#}L5~$-o4*i;aQt4}&qX
z&zL|l#=ywnIQbBtH>1;JK7M&Kka?gmQDfj@h+*&syWI+EGTg<&><qEL7~~lk8R8h?
zLGGNK%%98XH2EUGb`;0}6L5gUK(#S2#4sd410;qak-?XNiGhtFj3J33l7X3lm%*PQ
znIRGyAnXi`e;J|}kzL8ikOH+NOke?{)8y|0_Tcb`SW*wSq@E!aYDqmq8q|_Xu>V1p
z6fva3Es<nk{?8E0z{<{$!OoD$&XCE-$iT?XkR^+1Z8k#=C~z1U7*;SaF|aT&Fqkvh
zGTX^&ZJE4P(3H_>@@qk5FOYY&7+4rs7z`P5!5(5@Fo(Oz92yf$45kcu@R;CcVE)U%
z!pNxgi-DDa5tLcMVHhDa59B=|<2ab10t^~pLqQRx4~`B{0`7$x&&N>DP{2^gzzB|B
zQ3jU33<B&7MU1}~)c-K>fuqO;B~cYKlz=Vj5O!vCntVoB9vqIK)T7A212^6XYCJQ8
zK0_%uL_zV+4{|dfIJjcvelaki7+l6s2{M?0fpHZBGXom~1H;oz49r5h+ZZG_G3e=R
zW6;-I4a!^$43`-gz)1>}Ib;~vA)K<wg(9Mi%99_6h;bS0WH4lA2w(pH=Hz7}%8UtM
zDb2|bL}a+ab$2qDGBPaxe|a*is0O3cWIa*o`gn$I3`q<-7_u04GBh*nVrXO7%dmoB
zKf^kP0}MME4l?X#IK*&>;RwSihNBFR8BT)pyaxk2gCBz+*vG64Aq;#BRp7k2f<YWA
zwvIsrD#pO@6dE2NRy8<0K&%>uT2Q_UWME*BWMJ3%%fQXR&Jg>PK~ovd)K@?XBqoMB
ku-EGuY#10Aq!^ePtU)0nz`;<?V98M7Ajz<mVFic=0P+iV>i_@%

diff --git a/src/GUI/ApplicationMain.java b/src/GUI/ApplicationMain.java
index 58707ca..7aec01f 100644
--- a/src/GUI/ApplicationMain.java
+++ b/src/GUI/ApplicationMain.java
@@ -108,8 +108,10 @@ public class ApplicationMain extends JPanel {
                     if (client.getUserName().equals(client.getClientController().getAdmin())) {
 
                         int terminateAppAnswer = showManagerQuitMessage();
+                        // If the manager terminates the application
                         if (terminateAppAnswer == 0) {
-
+                            client.getClientController().kickAll(client.getUserName());
+                            exitApplication();
                         }
                         else if (terminateAppAnswer == 1) {
                             int answer = showNextManagerMessage();
@@ -159,6 +161,7 @@ public class ApplicationMain extends JPanel {
     }
 
     public void exitApplication(){
+        System.out.println("I am in exit application");
         frame.setVisible(false);
         frame.dispose();
         client.setVisibleStartScreen();
diff --git a/src/GUI/StartScreen.java b/src/GUI/StartScreen.java
index 8d44b48..8b09ec3 100644
--- a/src/GUI/StartScreen.java
+++ b/src/GUI/StartScreen.java
@@ -3,8 +3,7 @@ package GUI;
 import client.Client;
 
 import javax.swing.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
+import java.awt.event.*;
 
 public class StartScreen {
 
@@ -13,6 +12,9 @@ public class StartScreen {
     private JTextField textField1;
     private JButton joinButton;
     private JTextField textField2;
+    private boolean kickedOut;
+    private boolean appTerminated;
+
     JFrame frame;
 
     private Client client;
@@ -22,11 +24,6 @@ public class StartScreen {
         this.client = client;
     }
 
-//    public static void main(String[] args) {
-//        new StartScreen().go();
-//    }
-
-
     ActionListener actionListener = new ActionListener()
     {
         public void actionPerformed(ActionEvent e)
@@ -75,6 +72,8 @@ public class StartScreen {
 
     };
 
+
+
     public static void showErrorMessage(String message)
     {
         JOptionPane.showMessageDialog(null,
@@ -89,9 +88,41 @@ public class StartScreen {
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.pack();
         frame.setVisible(true);
+
+        frame.addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowOpened(WindowEvent e) {
+                if (isAppTerminated()){
+                    showKickAllMessage();
+                    setAppTerminated(false);
+                }
+            }
+        });
     }
 
     public void setVisible(){
         frame.setVisible(true);
     }
+
+    public void setKickedOut(boolean kickedOut) {
+        this.kickedOut = kickedOut;
+    }
+
+    public void setAppTerminated(boolean appTerminated) {
+        this.appTerminated = appTerminated;
+    }
+
+    public boolean isKickedOut() {
+        return kickedOut;
+    }
+
+    public boolean isAppTerminated() {
+        return appTerminated;
+    }
+
+    public void showKickAllMessage() {
+        JOptionPane.showMessageDialog(null,
+                "The manager terminated the application", "Application terminated",
+                JOptionPane.ERROR_MESSAGE);
+    }
 }
diff --git a/src/client/Client.java b/src/client/Client.java
index 1f7b285..a3b23c6 100644
--- a/src/client/Client.java
+++ b/src/client/Client.java
@@ -83,6 +83,10 @@ public class Client
 
     public IDrawingController getDrawingController() { return drawingController; }
 
+    public StartScreen getStartScreen() {
+        return startScreen;
+    }
+
 
     public Client(String username) throws RemoteException
     {
diff --git a/src/client/ClientUpdate.java b/src/client/ClientUpdate.java
index 32d91da..89c77fe 100644
--- a/src/client/ClientUpdate.java
+++ b/src/client/ClientUpdate.java
@@ -84,8 +84,7 @@ public class ClientUpdate extends UnicastRemoteObject implements IClientUpdate,
     }
 
     @Override
-    public int notifyManagerActions(String toClient, Action action) throws RemoteException {
-        int outcome = 0;
+    public void notifyManagerActions(String toClient, Action action) throws RemoteException {
         switch (action) {
             case KICKOUT:
                 client.getChatScreen().getChatDisplayBox().append(toClient + " has been kicked out by the manager.\n");
@@ -93,9 +92,9 @@ public class ClientUpdate extends UnicastRemoteObject implements IClientUpdate,
             case ASSIGNADMIN:
                 client.getChatScreen().getChatDisplayBox().append(toClient + " is the new manager.\n");
                 break;
-            case MANAGERQUIT:
-                outcome = client.getApplicationMain().showManagerQuitMessage();
+            case KICKALL:
+                client.getStartScreen().setAppTerminated(true);
+                client.getApplicationMain().exitApplication();
         }
-        return outcome;
     }
 }
diff --git a/src/remote/IClientController.java b/src/remote/IClientController.java
index 349297d..27fc06b 100644
--- a/src/remote/IClientController.java
+++ b/src/remote/IClientController.java
@@ -5,7 +5,7 @@ import java.rmi.RemoteException;
 
 public interface IClientController extends Remote
 {
-    enum Action {KICKOUT, ASSIGNADMIN};
+    enum Action {KICKOUT, ASSIGNADMIN, KICKALL};
 
     boolean join(String username, IChatUpdate clientChat, IClientUpdate clientUpdate, IDrawingUpdate clientDrawing) throws RemoteException;
 
@@ -17,5 +17,7 @@ public interface IClientController extends Remote
 
     boolean broadcastManagerMessage(String toClient, Action action) throws RemoteException;
 
+    void kickAll(String manager) throws RemoteException;
+
     String getAdmin() throws RemoteException;
 }
diff --git a/src/remote/IClientUpdate.java b/src/remote/IClientUpdate.java
index 853ce09..3788bd2 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, MANAGERQUIT};
+    enum Action {KICKOUT, ASSIGNADMIN, KICKALL};
     boolean updateUserList(String[] users) throws RemoteException;
     void terminateChat() throws RemoteException;
-    int notifyManagerActions(String toClient, Action action) throws RemoteException;
+    void notifyManagerActions(String toClient, Action action) throws RemoteException;
     void setVisibility() throws RemoteException;
 
 }
diff --git a/src/server/ClientController.java b/src/server/ClientController.java
index 2ebfe48..392e6a7 100644
--- a/src/server/ClientController.java
+++ b/src/server/ClientController.java
@@ -201,20 +201,22 @@ public class ClientController extends UnicastRemoteObject implements IClientCont
         return true;
     }
 
-    public void kickAllUsers (String manager) {
+    @Override
+    public void kickAll (String manager) throws RemoteException {
 
         int adminIndex = getUserIndex(manager);
         IClientUpdate client;
+        String toClient;
 
         if ( server.users.get(adminIndex).isAdmin() )
         {
-
             for( User u : server.users )
             {
                 client = u.getIClientUpdate();
-                client.notifyManagerActions(toClient, remote.IClientUpdate.Action.ASSIGNADMIN);
-                client.setVisibility();
+                toClient = u.getUserName();
+                client.notifyManagerActions(toClient, remote.IClientUpdate.Action.KICKALL);
             }
+            server.users.clear();
         }
         else {
             System.out.println("You are not the manager");
-- 
GitLab