From 0c74de9afe2bf9fd515640dfb7943bcea0fe3937 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gabriel=20Rodr=C3=ADguez?= Date: Tue, 30 Apr 2024 20:46:28 -0400 Subject: [PATCH] add name change tool --- names/code.js | 75 +++++++++++ names/index.html | 48 +++++++ names/loading.gif | Bin 0 -> 43889 bytes names/loading2.gif | Bin 0 -> 29031 bytes names/loading3.gif | Bin 0 -> 13623 bytes names/pacman.gif | Bin 0 -> 69372 bytes names/style.css | 0 names/webathena-login.js | 40 ++++++ names/winchan.js | 271 +++++++++++++++++++++++++++++++++++++++ 9 files changed, 434 insertions(+) create mode 100644 names/code.js create mode 100644 names/index.html create mode 100644 names/loading.gif create mode 100644 names/loading2.gif create mode 100644 names/loading3.gif create mode 100644 names/pacman.gif create mode 100644 names/style.css create mode 100644 names/webathena-login.js create mode 100644 names/winchan.js diff --git a/names/code.js b/names/code.js new file mode 100644 index 0000000..fd9cb67 --- /dev/null +++ b/names/code.js @@ -0,0 +1,75 @@ +// Force HTTPS - agnostic of which htaccess to use +// https://stackoverflow.com/questions/4723213/detect-http-or-https-then-force-https-in-javascript +if (location.protocol !== 'https:') { + location.replace(`https:${location.href.substring(location.protocol.length)}`); +} + +// Temporary host: the non-production VM inside matrix.mit.edu +const API_HOST = "https://uplink.mit.edu"; + +document.getElementById("fingerToFull").addEventListener("click", function (ev) { + document.getElementById("fingerName").value = moira_user_info.full_name; +}); + +async function loadUserInfo() { + const response = await fetch(API_HOST + "/users/me/", { + headers: { + "Authorization": "webathena " + webathena_base64, + } + }); + const json = await response.json(); + console.log(json); + document.getElementById("displayName").innerText = json.full_name; + + // Set global variable + moira_user_info = json; +} + +async function loadFinger() { + const response = await fetch(API_HOST + "/users/me/finger", { + headers: { + "Authorization": "webathena " + webathena_base64, + } + }); + const json = await response.json(); + document.getElementById("fingerName").value = json.fullname; + console.log(json); + + // Set global variable + moira_finger = json; +} + +async function onLogin() { + document.getElementById("login").hidden = true; + await loadUserInfo(); + await loadFinger(); + document.getElementById("loading").hidden = true; + document.getElementById("names").hidden = false; +} + +document.getElementById("apply").addEventListener("click", async function (ev) { + document.getElementById("applied").hidden = true; + document.getElementById("loading").hidden = false; + document.getElementById("names").hidden = true; + const input = { + fullname: document.getElementById("fingerName").value, + }; + const response = await fetch(API_HOST + "/users/me/finger", { + method: "PATCH", + headers: { + "Authorization": "webathena " + webathena_base64, + "Content-Type": "application/json", + }, + body: JSON.stringify(input), + }); + console.log(response); + if (response.status === 200) { + await onLogin(); + document.getElementById("applied").hidden = false; + } else { + const json = await(response.json()); + console.log(json); + document.getElementById("loading").hidden = false; + alert(`An error occured: ${json.name}`); + } +}); \ No newline at end of file diff --git a/names/index.html b/names/index.html new file mode 100644 index 0000000..ed7417c --- /dev/null +++ b/names/index.html @@ -0,0 +1,48 @@ + + + + + + Names + + + + +

Finger/Hesiod name change

+

+ +

+ + What is this? (click for more info) + + + + +
+

+
+

+ +

+
+ + + + + + + + diff --git a/names/loading.gif b/names/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..c2146b77f7085786e2e8b618fc9058a9044c3880 GIT binary patch literal 43889 zcmeF&S5#BsBRjfB{$k9st4Z!Jt}syX4Mj>uo#|08rpJFROCg>2Tq9=(1hnM34FI z-{My^b-U@+AbDo^ozKQLOMSGf-#&Kz zG&iW9}3{Pc@i0g<%Pv1 z2^F=%5E38>>}6F+nGTQ?1gih&K!OK#_JPbbTS{~Y!Gsf&V1gba2%dC)VF9nEF`Cw< z4*2qQbL;!Ge(&P`V%KV1yyn)~IpJ@uy@Q)h87wa0G5J8VFYHV}>U7^sffc+%1Vq%n$8UXqI_Q#5g?gxm@K4~ji00;c&2vA zxI_I!sdBpE*{a6_nX`}>LXYV+_e1^t>SXCFs)?3-J99fnXt8jcCuBnLgdADPDI3-`bgsudeP|&u151c?ilnZZS+vz2YAx+y5hcfa?gk!( zxI~^KqI5khzCh0-r1wX*tG{rulRo6K+nGx=6_Z%wdtjp*-mSat7AshcaCOw*=ET$< z((^#g6}gIvt?j)MvYD+f6_QH&a<|J^klU7!&^i4L?gsu92Z1JmF7CvarYrW)g!pfz zlxVUQ{4HRDR+pc;Q~!z&JZb-c`(6H$cURHp*E>Br@=t!l&p7rNA~m2#l$+zTxejuL*?z2S4lg7d?M_I*k%W&@(~^myh!O zs6{#m5NYzo>@vCXY}T%L)Pp32_%FId>i&q*l6Q*9Ckop$r*~r}Tr<-M+UKgvBhTZr zP`4w#GD~Nq8aqkUEY+FP=Qt(X4ylbupCt(}w$USh#dh6V!Uh?jo3~w_K^C`@-G9?n zBdYBH;VqI!OOxuI?X~p?0rp#RFJDKrt-u!i=SfE8J6lGOs{0png6KB|O`X78L68O2 z`t?x+_)hJ)QNlQ=*0U|>Gi2_=q~csLj{bY(9atDU?b1WB1~L)x=abgzFQzN0I~l6yAGp>0ztiWmoEQIfw~_^j6QZ zktB2-+9+D#Wdnm=g55k$wDivuFzlRw)mt0GfSM zA$yBpSiG?dh-GqZoe8N-XH6Dq1YRR}<6dAR`5I7s5yl`f@K_X184UO~jGEcO95GWE2^K3L(R=V6?q}FZ zN+pN0L%pTvB$?ejzrH`km*W{$p_%e3CfiU%h zZ1Md8qE4&59=Z>SKjf?idw&o-NU8O;;X2q-^3%uWygFWYt=Z~+PX6IG{l=P1QXch` znU+RF&{~D~q2%zD62 zLrl$`Hbh5_fUJk-ms;FwP+gTSp*{x02z=wf?yinlx8a)fbc6V77|6SA`3Gx_0;s(95H|7aj^k)0#;{zX)D-L{gs_{&J zW&PbA0Ze@I=k;M3dzv`?Cu6NI*5Kh^f<9i=357N9bG?7{Ig3`>YS*PtkF1NgUW~d# z*JVzIqorBT#wzU4*=KDw((@PN0evJn(9w;Lpv#E>ZRG89*yyHQ;6orT`hC`2zj)~J|PQ-KVYp%Y1v5d(}ZS>{0)T(bKFL$@pb1%PPun)>rMx$SLGH86vepp$Z z2Y9u7`J`p)v;?oDGy?6Uci{F=2TI(K>qU2k@C8tWXzqHu5Psmujgm`j&UEFu) z<5;<>`dmcf|N9C1!eXTPdF^3)c&O3>1r^0uwkOYi|-c|t;mKUa;6c>&eUhk9q{ksLl zgT55+VLr^Klk%E*7swwRSG}^>HorxG56B{{tY#n(+;16wMFy^EHTi9&a&mWM%#EVN zWLMk8XGVe2(?G^z_5HFp@!p<0C(LC3xsJlJ5_2@3#Qz{Dv;|6zycp8E0ppfiiD}>3 z-IrwfB7pN<&2hZ=YL*R7n{Hc^(y_f~owX-OdA%uOemR#T2QJl-B{7iSMEJ^0BuU@@8|o(qnPj~ota$79+a_mS z#N6+z&&v6aa>QS`n9K9QfNPRWv#Tw$zeg5A;M?=7%+uqS0kkdwO8sEJGjR3v+ea$_ z!ca8O)(4J6Z%Tk&8w2<@z@+DH-_OwXDn3*O?;e@E!%|)M=zQrnUGEHFDB&1Z12;LB zcSwY*2nvgoK=aOE_-C+ePy*UU!Bb^d1Tv626)R!j&5#=?GY|;e@Hr?VP&B|2>jo*? z`b%>YTyheu>0?*8f*2`-pBZ?W;DR*Foi!-ms!zN#Mg^I{LM#k|tx&F-1NO)PkPgn< z0p;_22CIpF$0B0?PBqkhCfJiZz^Nou%f(#>ZwJW@CP@v!qC%NnP|he^3N7R#r^CyG zpvZH8X;TObI%sEuAaKf|;ttLOb{obF2+u2dQ-li7J`b}Tc$1Fv3WR}jxg(-e!|QQg zjj3h63 zfqOQA74CqfPgI+YlQZ0j7nlVr4r1hV6Spnmoz4=~)zI>371q5v+VWs?n(vpQ- z0Sutyz->;wC^}c#x!}17w#MF|^Quap)$qMES4c0=M$JMXS$;vT8sUMb>!JFh`Q;>Oubzk|#P zJ7}9!R^&m{lpPT)Ei21BZb6M$=_0Ez7U05@U4c(qmm;;rg_ckO|KlGbf`1O;7X%Oj zCIA-z0O&R-rgV6h;zQ=Axrn-@wkwK|HPz(xu%hjuhCP!0Kbq60Q5%@Syol5;pZ?u&MHVx>aolnpJ-&1Hx8s%q z&Mm2GV2i?~mNX5_Y@WmDd8E_~?YzR$N}C5~w=Renc%{{i?7hR&%UXu!wl9ep`D8R+ zIrv0ml(!Dg?_7~E@ylu&JNiauR}^0yPIc$_^8PJ_a4sH0K*Au46VB@nCS{cNg^A>U4x`~SYQu?q z=!+6%lJWiv6D=5sAV5tQpyH!SQ-8lo zj^}6TuJIaxcCT8|!1SleHuh0T{KN|2Ti?vD7P+C@-(oD|v`u)P?OTpYntPnEJ5sRpM4J^Y;2YOwIwXQJ9TmGSpBBd213(E;6 z=$_kBwD-JtzDttm@(`_n%H9Ah|T5Ax6q zsJYFnjx>+yU$575>HI5&5yJfuPWYt z>1^67vmJ&ht8~}UFrLPq?mzE3NA#ro!bJoIx!?}oz~^GNV@$lSoPi0`^CamKANGFF zJ~5a#ILl6tQmmhwWO+<7SaI?2Em5{ZJ>^n_x}#FR50@E0_Tign<54OBEAxCyp?uj& z%l?+q|Ne4zwgDAh5?))AQl|3vZXS^wMQj9`Q_QwsQ!gsKV7`Sk=IJt6&t0DZ{KdBD zjGbM11{BfCWVQ<4+ko@TV5&EGgb}%$u36|=Z}DRs!-O?M7`1l41&sTRFk6JqeJC3$ zPFCfIn;;gQ2UBNOHNeUU+OoYCF%q_ldw;)wHHOO_&uSqgsNqhX{rZ$?X- zI`{5oF);!N;Xft_R(7u`gqqMkMFPPib~b6MxuqM~5Jc?fP##VmOnB^li;X-S6_Fyq zSG=q^N4aM9nY*QT)9M`pL|JK;(%sd~Vp~pgf?Rl8vqGkXR=C*+Khz{L8zkfQC_ zB+uRN_-k}uh>%lFf8P@JgHfR8>hu-6W&AactEy#HSEQTHDzny#Lg#=TLY*V*)_Xr= z!MUP9%Bu^swM%@@aJuZ^&w$9VuUiC;5FsK2hu4Vdh2M}KlPhLah`@Nt+f>Cg#J*!E z*~?p9GnYT-&#z{QD?(0> zd|n)JnuiMoVE_PCbI^4$$Bmr>#Vko~qq8DfTFT|c&xF7Wj&q*AC`EU==ik|X_IEux zseprEd1Y`o4wf9N!}94f=y_AAw&Ovtoj3Hv)*zBGSvVv{^&VNk2{{$yASe@V2^5_P z``zX2^)2@v_3PE1BjBAoi1#bTlDN<6x4&z=Gez<@TVP>Ad(Pt8#w_%#alK;7#o=zP zY;1VjoSDiyRIRPcGE@lV$i>4uSs81tD@{V_Prf+mvspJTbv+c)%8l7m9~dT>y(c$D z$^rYp5k+Iyoq->ZV?_TH$h7QJ!ce*7g0tM#yU`7XH2{9uLVg>yVWYV}$xS1Lf}VpK z1BHK5@T5h;p=u+R*l0Ck%_7j9k`Zgsy0nSNq6ZjP(1Uv`=`$lm;*Eo&&fZ5Evk#D$ z4NAqp)T7Kz&0^{4!7-1PqfGJ=Jt$sn+|FX_qt*00X4cD1xh5~Li zOBAVxh_TYgdCPy<3F*|ogtxrAm8BdlQLd9>jPO4Gu>KxND6aktmk%l6KG`HtA9{uz zs%7Pg+ETnf@im?Hy{PD@ouZxnWHy$%Sek5G&TD%z-&rqzpR(-P`~{i-eo{L7nD-%X z)3>txgc99{WzQp?YL^?;1GGoC^%{9e%Dn5#4DLGU4Dv?Q8Jz(Ao;f_lZ0i?xzo?RX zXlvGDG@ZFkQT^zcz$bHfB@ zmAZ^kqz!aPUk59mcS-Wv_)g8-l<8!BbuXu*A>aJWoJWHnLvj!$!&l(vqs9(0L6=az zg*B?Prapna7e0dv>(Xb<6Sq-S?~64Sw~eM-YSqym^}};r(krbiQ8q$%Y8L;bPxGv5 z38Acr)c>TPwJ-D*cyBO{r^Ksf9*hdHQnLXrFX?i3zgMICc}Q* z_I=lVEFr(a)8pwbC=1$;i+z=dL^3BDUxNcOt&;l~;J;DUhCdukqHb;K&eW}qJQ*OO zZbjjR8y*9#`K_qVdix|yYxq4ztmwH?`KC$#L@D^fmTA-a`DqDblVn%E?yU|!VZkpm ziM-|&Yl0j2e~gL1mhD*MsAD#N3P%3v3jJgEO-R%L=OrW2o z7y+4K=t3cZHTLqnk@QoSXn|O?&ivez5u(1-)5%_LR7BQL@S*Ih>i@D9y2Q*EiyI_<#aK+jE zV(8JTd@kqawK@RLE$v3HRU z=wAz`7tc&@<;>Vd+S(rG;71SJG1)SH8@$sGCsNu$Y}Cwck0hl%6P%9<&8}9Y11=}K zj52dMmqT{rH8AY)tEqcEV^* zX^Km7FrJkWY{A+#dE|8dx^3lEeJyW~r^nFaS8c%m60Bwa@UFU77444%4SG+evNU<@uJq?tsf*Lb|?h z_7O*RA@ceDJ|9J6RU@2YBU;gG#O|Nuqmu&D?JOQ2OSvN=9o*7WOu{w$c zV}jfB51pV@i2#{m;QC9STQ1SdMvv!xe*7x|Y+Ps=Pc)5rz}W_PX4>W7(HiLtn!E%U z$A#8X!8EGe!9w^2*Zr9%FbtGv5I2TK7hM?2lgepF9YSzZ>?RJyfCqqVI0Ah-=a~ev z#n*ucDOhQg8#5p@iT$R6`T8rs=G;>S9;!YaIFS@WfeJ$ChIo309)t!0nnE~ZgU5qIy-ET( z@u9C(LO)vLLT9jCNL>4I@EF%SY$}ds02loe7lR58+zhcD2xCEo#n}cp&fMaj;6Rq# z{ye!jyf@N+M9soOR+~VJ18fkx zAn(-JAF6D3y<&%OU}~OwWJD;bgP8afF!8J#^Veu0WPD&TnDv5{cMEh5_d8B~clt8H z=1#&5JWjwRe)u%D1Q-JBPq;++)7V9hhQ`XQB(y2VwqX+0yt?9GFMS?R#j~flKb}o^ zuEw6T0p{oNl-vRqZY1_wBuP$#&3HT?>w0Oj#b2c)9ilv~>6zaUd7BcY2-e_CpQQ{a z6WH2ZvG0|37ia@F@I2>DNNd3~4{& zhh^VNpO+i8msR{PV7&ZacgL7J{69he9gGL!$q(q4|AFzZ$!%e_iz+{Z0={5tz)?Df zzmQ73(kPE~>v(9_+rntqQ&aG5_p3VZ-6zGf2a;kt+C%&2rq@~fS1;fDJOBj*hafOm z4${!5Xu7cQ$e6_FIBY^vIv&eBH5|m4V0jDgAZGwyx?PUL|xekCVAHQC_ z9?yBOx>i_jCB$dvMoev5SS0#<_L+$r?%|Tzu*j?iM=ebjQKO@!moIShf@g zz^Ps|VwlXrcBvu~X@55abI3fJa{6)J@g1u(@M=qGSrAhm%fEnj$ZQK^*Qt^vbSO{$ z;F&2`fB9#9EX?7hh)>JeN^@^Uk{t7i*Y{~3Ih6-2PrR1*mfr$cO`jZA@;UaJ-1=V* z0$30y81p$5!jJe&mm~LsWwV8?uLzRElb>c-7Jf-e44wT!t_ARMQ&$iV3jP$Q#*71n z3y}|4lF*wzUyEQGdU4NA?2iqbmDHOWbhyf>>W2tc{LG7BIgp%3GK0@Khh)RIhLKWB-l<=!;2KtT-> zP(TnB5|HP-6pPG`6i+Xf95+t`X1z*RBL#%KDdQyNTbf;+Q-9~^pBe-S?!na5Ei8H7o**Jf4yzzjcMXC8XBwYZ-xzzIG6Bmr~ zZJVsAu4Vf%c|=u#6=Zf#oa=hWh5RR#@ouvKB6pY22nZu8!%6*iDZfzV7wP3Qc2wwF zf4>vh&l2bxIKalZpjg{ynR^#PLjBk+oWG7#WJDxpo~bt=xi8Df_hjVb@DC8#(HNqj zJQnY=I%4uwUFf=QQb%SsvyKXHr9Fmdu0c*2?%*Fzh<-rSKQPyrcnKL6Kc$>ghx&HS zX*XVXmFVxbg+kl|P8gQd#VWa%wfh$_F43V;%4wetHM(YT#qCPBpChM9+#zpU-IYah zC=9)RGQiMw>yJpjcrEi3q*x2S$}?3MQ#~8@Ui){h)iCcgyEOlX+q}bPXZ)P}(*ZTW zwEWHpo9pHw|BfGMW9a3M1jI^2zU}GcrAB-Ilu%0h=lNHNlZ_d4&d+nXSGD+yO;5^% zC>{QpitEW9R-r3pIQ)9Ew}bQ=OI&mjnWw+eX`3Wu4d#D&$ytLwH@L@`dB+rd`?{Ia zTnHPLp8HdMB1|L^3%D7=28qLk_FpKV5f7%d;dn(|+B-PwbHsJ#>JwU)S_&g3 zE1@cQuTsHNFThA3wIQre23Pye^|KOv|I2>41y?7pwjLHw&pv)~;aImBbH>9%J4|T3QKjYOrCW!r599DU6en)VoF+cS|u>ZEp#W<>SXBwMo)AI5g19!ne;YMVaoX>^G_JgJbV#b2EQFu#u4>1QBqoWS@@|%l#J^k8&E=;RLk#1-rV^k`V##HpN}9bRo&;|EVKUffm^Fo z9qJMp*K%BV`}_Wr=jxN`_A~%+6I9c4NY9tIzX(aTt;jPmncsaZuBcU}tMKMqQS_&R zbIH$2gp8@?nsk9g1H=&4_`poN5>Hqroi(i)m{Z-$^<9m6Z z325jO&4|@07gk6}&c8_Uqx~d%&107&jV8{dtrt8Qvrq5_&U73EWf*mb3PQsA}IwF5}>tvkpyC4FzUlzzz9I=Y|&E4=TIzH@qPCR;va} zmaYYoLE-ZS2!OPj7K9me=@eta{uW!y#6AY;4CJ+bWNWKbe5pww+FIPS#TxBxBf#`o zZ6uj7QD)0bFWpp3q^B>yX5qZQ(n&YmtHP2Me9^y8FBRS(}wu_39v+yzZ70Hflr5#W3P_3jQ#txuz0$L7Bi=m-pk~jfT=JMc~+{ zNHeUh4l8}1C*{MWt4IpHK&gH!UH1$b7XabR+!XtsVgNJV!Bh+d&hn^F9!BikuWJD{ zYI}V2F%CABxtcAR!si6x=enf zG1T`~pFn_}jAOfOzZurnI6d3BoGqa=T>vpq8U6bAfEnejjp} z{s#C;Vr7F&7f>g23pm1k$XyXzcA{{;F~3{myV1zv4WR)Xmw^{o@q(BC&ZaR1FH;RP zS%pb*m-ZcBUH^WO(n2U#b>dQo-yyD&BJIxJxhtFXTX7r@oESUHwL$MXc{U8_0XzX4 z0HDRV6!c(e&+6>@5DxHN@wpy^A{G~n%@j(iud%HO?Z7+UvOk58=)vJDLYMKb^%rD; z1i~GQ(sb9G0_NVXuY|Uw@aJTv%TDz=$bU;Ma<`W`&|FXE?4kp+ak%G01nAs{1I`b8 zvMxR_8lPnL1NX1}fMxPI`|#A8x_9Qz2|vtF92+i9lbG|`18#qh1^~dH<(-+CZvW=% z`w~x8JKnZ;vfc!!1hna^^o82EZGh7Hz{4sY3@iS((D#R2K#=NN85ggdBJgJMTjGI$ zr_*SPRFALXn1N%@up;yp7XcH>fpG=R3dc}MVwBJ}8q>ClHE7*4XZ~}v;5nd>3k^kq z2{$djZ-BT%ou0&E8~T7!=K(V30BT!*5fnx#7ef~sB-I$SKOICOj0v0uORNLNp99N_ z14Ph428~!&7={_)RWE_HwXjqg0Oz;^Cfy0%G&$RyztcL$f@TN;APx|VK$*r+3Uu(Y z3T}lH?TXU!#D#jP;agI7zIA0sNXbkz?IA8HVh99 zf5nY9nK4&|g$JjGk^v&ZR0Eu65QQ@?d|VMV@Gw7=Y4dB@;I^vH6W)P-Tz4?Ar6-5mXakvvz(;pSn1TscxRfPt5Oh@tPMyx?` zZ$C!1{@We7!zMYR+xtP^&QVj6z(=Y95d&=VB{9ECK;tk=aC7uA47LH+`nMhCY=ZJ7 zy;e$WwsB}e!gQ@9Jjc^|F%iGR1hjVF#-kl|C6@Du^xO= zpss>{X{$fg;}0Temw#!iBOh;;edkI|^888o_~xfrWAU=(gY$|-<)MAl!wl!Tja&3f zc3&qC$tkSi2@*iA)SO(}_zdx+yyBen0?DG1Dn25%+Dgq2 z<)74*q$DBLmK0Zj(fLvTagE8zt1;{@ z5YgZ~jWi|>be3s#JpAhON^~!@$UlRJAXD+cAo=wU>PcEtntWdrvxXHBozv^yRIo!) z(KN#{t&uz*Nu}j+jcV3anf9C1dhY3Z364d{G^g$HhW)h=6NA&=E8Qk%&P>fCTQoR% zA0@%*leN}b%vgu!qdGUbRx3fMNQTGR&ktQTW`{B&XGh;dmz|b=U4;HAUybmHYCjM6 z`?WOGx}9>N-KTxM_|`clwx##k}A`DcpOrNL)I)du<(AXHy` zaRhBtUon9l71hhwGQ(Ol0LM852v+~SwVACw04{cRbEBe*)D%W@gEKwKN&y$Y{%n?@ zL{|&VZCTWS{?9`uahL`{ja|iOw)D@H1L7@~5X_&$ zgxh4hxC;!hhst5M0?CB_-2mR@RWJ0*{QM?Q!Pb7a`C|h^Ps8t<3(m5UvKGyF=F#xI z_Vk+x!Pe%}!2-+*OB^B(e}SxQKhNhwR$es>Cp1zUzg}+h*wc0DK0lps>0uCZSc$7R zH5csTaA*_hmr*6ICZvi9wIl70=RfL}&1`e+l=RY6z)P9~D&**fGiwILKQIw}rZ}h& z?EN}O`Dx<(Yn##+agr`}e7P_~w}(h1Y5l}wz4k+rrYIYR>N-2-d);OUq`W=7T`r?)#R!M9V)) ze{KTYHDj@@maCWvxzm32``Pj{+M~KiXsV}taF!0qU$Jz^W9*}sg^v~L_z-6^p%4O& znt;-7Rd~EB`~LlCG*#r?eD3oQ63bYycYH4+M_wQ~S~%!j#+*oNpfaP4IAlZdId~G; z^Ga>_&MAq-8UGihS1&lQl0To{2wQZqNpG`CXyz9u!-%=$?y#uRtWla-^vd4)DTV9# zGRn4`NAZ`v4dQdPq%Tx`5=#^3QjA2?+l6vdM1Ki#A$>wa!mZr*;ESIZ!IP15?w*q0 z)hLW+FH>Gf39EmPpM#?*Ga*O2>et%Xt_!P$4%FbiyRQ=rerAw26AZom{l$rciE8gg z0gzY!MT-KpEKghdd7~>HwCh&DZpvN$W$_u%Is=wt$}rp`{c{!vnoDL`Z5*XN0&0>*|KG#}kd+{B z4evoH0f7I3n3N{mKyitQaHHefe7MsaTM$|oggXB4A7ZMge~nLnUjRS=AT+UGl3TtN zF5W?^>-;0;+;I_M>X?S-&}2AUC{V1uR5w)pIRN#cSXFCVF0kimzVu1yLqa@3qWX)1 zInEN@(K3AnUQC&{dvTt~rhb3fi&FoS3IQ@Q{lTHBJV8LEOMQvay!vz=F}l!olutpV zZmQ+7zJOw)-27?~4n97q#u4(ELir2`X-;dxv>eUp`3y$j;vZ89d0sY{{Yksu>1=V^FH*C)mO1M^ zm58cb-l{K;-q0UbARH`+Sav%yr;{T zPCuTt|LWzC*w9$MoIC3{AFcL38#bePfR--E6Vm7{)oBH|0|=4ASQ7JL`)um0F@AIq zm!<`Qgk%~8`Gz{Y#{3^KyTPij(?t2l!i86QxU+?^BARPdO0_*a%7=jG(rdH{N30@a zBEi2jvcNMlnXkXq#@=!4U-^5UxlH*np4u2q%zV+cj6RHir}<+~R;p)Q7@ycU@*~MO z?enc)FQ}mHH8Wi^n;E1|h(LE;pc*c0*HA0ex3Dhy@`BSfxlZVl@rGz9eB8^~HSx;W z<^j}byaVz6HVdlz%8co<{{RL^yZh)TiP_p0l|GTeD}Kwz<_up+(vFMV|Gv@iW%x!S zf-X_X`av(h_N@dmSZ2ul185*kUK4$yP9W@HRNORaJ5Zl1HG#HdY@LaI1P+C+0HDG? zfQCH)zNatcSzZR&nzZh zNb23{zDp2O*x=p&Lm<8Pj{b}hqUb5|B|_VkJhFM#z*BtUe(bw~=~skI-#zQ06E1fj zGiUPUwtRVLepu1kKC8dqGCfFk1QfsSnS^xD8qR_0=b6Bg0j(=LazN8@<{tvO=ZjpL z=X9Big#Nd!gv5yRAqQFTg`Di#EBw!13Ow{_sKU>3Qy|D-=}(YQ(>htl2|d4QcO?`v z@kHJmWwml#e3rKG^7ewx<$N#71~Xu#>oaeL{?k~pZsOmn-~ zsMGOF1b-D+Z4CLkEO8P%8n|P%3_6Z#M!Ka=9=P3bi8+~af{I4aPZH$|!ozdSHum!5k(72O2R3To{T8-|`LK4^uv%)HezU*MDIU!zOlg3d3@anV|I* zLIM&Ye%)uU)pM~HeOS43EF&T?^eh00#J)}@&}kshoC#Vu3zBaF7I6hd77>)K+lUl9 z@H7Q7PGIF=fmDc)kz^h{We?2>XQPr3#)&{VSWqx~aOgBac#4%i+FGk7m>C};xEVqf zYpw{#YUiRzip)8iz{}qNgKr2mH-X-pSYMQnrE0L|3V9YAw%QyQx_KL%!sXD4+{0eC}ri3mV6Wi=bHveJ5d7e;%O& zkL+&@U$Bns$Au3yMb;TaPR#%_nlN8cz%;I)$LAW0wh=n1Q8dDlv+tvqU=h6de;AK` z{U;KEj)av&@0^Dfz}ffCqwxcvkxlo?^B5*{%tdhw4IcMXRSPl*T*je~Q-R>pcb{Pz zr;^y28BhpU5HSyef++4_26VU7?F&sjv^fs>G#)MyM;af;Lm79m5l=51nJ~l5ofh8+ z1M@d~ounpsNyZBbJ6WE`bpaC{O5%kk5+I&&JfH+##BIX1N&rSJi1bic@kwNaEZ;dbm!pcFrQepIH%^c zOuGPi-PA$P)X$%P;)E!wV{ui zc}8(#hU>JSo@HhSQHC5o*_1BzE|r%$Iy1RAb4fC|V36UtXV`diQvX(HG%oI;=lfK8 zg0==9^4zQe1#k6(jAXh@Ru{{$DaQ%roa=gv=&k0Q97N9LMotMjYlthi7?6uC&VevM zVCiTQVq&r(488j!pN!7pDa%hb z_ilO_E$9uqIQ6I!|Io35Zu}oNQvv`d;2bdXf7}`+`TyOm{}t5!x6L$^@PE6KVh}`9 z*#A!0%rGk_cDH|7?S4Ndqvp*yeat|?S0zSr@Nmg{_16!xdMw?CceQKHGykom!`%iY z|88g6Oqe(NI*0Ucoy&gT`*wA!tl+C?gboQ6d>P1Y|BtXN*oepfvRbk?%2o6Pi2qBfa1-wm1N-PJYGUq3PF5BHI~yR`?he~yMu;5@@AF=p}s z)BXi@b%M%RXM*-!u}w+~MOKp41r3@n%)KbuTOnx@T<&Uw7W2Gc1^lZ~%xhoqkLc8A z=_5&u;q?!u*x4Bp1nk!{aC*IC0n+Ak&1u*oUGv8g`4e6=jMDMQm$EN-lAgS97&Pbp zUh-pA|E!WUpFV4S|eD!8Ncn_8=(>MO4vm~l8_%IyhYp|9ZXv{jUCma3J7dKfaAX{Ji9MBiiC z++g_W=F-UZH*J6d9mN<>Vm-ImvZnu|My+ju?5TD#f;VwsM8Pu40YOmAuRQD>}f(`m}t`b&$RxsWj;6ch2rqZ4yo zqQ1M##D|YO?>RJ;3M20Ej3m#63O*iK4PkxGO%onwJ;N5^-<%pBD69z2cLfg8VKGvc zO-qp^{*qD#)VcLd<35}0t?<9ZR9q7VId|QA0`1vQ% zVW4A!7dlk+n`dI+Md8yQNvgtlG+)(ko+lt@$lN-WhCQ-~EG$cHf{GO1z475HiF>oa zk<&FLxx>}4D^BhA#b$A(Fq)vSpo6|Rm7d9dJoVGPSu7y8Z#(=>;gmQ2j;N(>v5$Tc zZ7DQ+h_`|QHe*zN$8GOZW*Ix+b^h(^sxr!onvcX2fwc|YhO|W)_Pm&U!V6)6`kp;q z{)X9(#B#3}&n8&SzxWFaHg|^`(YDN->T85D7JeA<6f zlWEijCmQ_(E*@Oj3=pDtu@{)uf8AqfFTfKESU z{h(fe?g?pNYQagE!24bIk^3=DA7fF#!f1#Cm=-z9+_qa!;Wqv|)j{g|lfshQAwOo` zKc)Qbigio_ZGw)l#Vm28grLLi%$cH~JFz(X-9fQL45KEooCCQS71Sr%CG7KkOj9to zb(MF8Mw47)oS8tJB&_k)Bx+CT9p$A!c(t%hA|65^wxRw>yRG((7=LiS=Iowq&V+`@ zqYjp!#J2Z5uRE{ti+cC2&-%qT#?M=x(A2TytMNT^LX^i`Ik>feSj4!ecC+{bAEY!OY?~5@lfVjA`3&l_&xA*B2lFp z-Q7D0xuk{MDr!T|(*GouXcqF!7pQ4r50a{Usrk)#Gz?jOC)Y>5=70BC7zjfHJC6&6 z{fIOT?&PN8zfB4ysEwFQ*QJiqaEkiTKc=Wr1I~=R0e}2&S?zxaTkBO0zNe@2pR6{a z`9E20)}C<@KwNa}KUwYhbHIHbMNQP@QO-ZYif(ve2!0;r!XDX51=eX|{;i~x_wo0r z|E;9q?{4$*?YJLH3_V4eJ_FJIBWzu>j^X>`0&bHH6$;_6$wu!VGH8`*O7MPxHXRoc z-TlB06Q9g>`&J}L#w#b1o}7AlTyjf;)=jY=AA#R3)paTcGz@+#^RE+mI=U@iYX7|| zUQgJFtX!sDU7wJ$p4(E(LAu#UzexNIQ0E2Tv-!F2BLgog)C>9a#(9&PmfVX#=B1{= zL(}=^C)M2T1?Es6y;L^ZGHP>vZRV?)Z2x0mL{h~Ql2_k`PT%LJS906zxEYLtjz7kc zIVq};=uf)Q)Zf+J)upfoc(jO@uKG|*c{)rj5uY};p9s9g@GY!>QVIt~M?=wSXp8?R ztKC^x@77P68LjeY9A4b>K5JbedrMMf$N1=uxqtC4X;{0Kf?W*BQ+K#uAC! zPSyU?!$!|w0KgGh4SM5hkm8qTC(K{y2|#uQ0)@95NCU83Bc_BsJza2G7x0sJ=EOQp zow4S~5S0aEVfUFHnhxPGHRF}OOn5I1M1+l?W{p7!E-Msr7$l$>&M-aGK`~StttU&$ z%6QR{cIQtlkMUQjiJ1XqXOV{-Z9jP>atGbeACoQaGw}J)4?A$M zDQ$fI>LB6XNSMV9;Lrs2$Shd>;GV0lijFECUHeSX2aVs1v=eQbOm{rI%yaM+ir!&L5Zo zzz*N7Ztk-f@BVsjW)2{SHPi%>p+zWj0R!6NA0tMAcYYX6x(Pq5Zk)w{NU!F)t9b6h z5Du?>S^-kNf9m`+H&|4C<`8`iErE{!yuMe9gM0H$dB)BWTCGE(ri~rU2tw3VE1)sE zG3FvN$VX^)8V)$^_`c|TAGWf5bAxUo%(g)2tS(e3OJ37f?cYZ(EYI!z%W9)ny#w)M z5S7|UF1)Ls#9vtdjbz)?8bEyY%ugo#dFjJ!Am~%u4{qFBV(Z(ReHzL6b$W5^7~kkS zvcF85Ot=$3k@g8tSZ4ciPBXD`^f4fzg^))@grws7y*t<#3~)hypO$l11|xRv(A}AC z-3u(d^7=)`ebr)i+HXa0WuJkV#x!OSkzkJ%K1zmdM;)BubIs9yp*|LQ89%_ z;44;w$o>wnq=fh0)#5P?>gp`15`0LJ{+FNfCUidE|JFjs6g0Hq?=bCq6zWJd=`E8R zP|^q93iYE$paZzP3E^*LDE;#EMP;VJInx2;fPh#i#xVs*jdN^(3ODtEvroZHa7P9J z_8vEu{T%$m#yOPJha2f}{Sw=_fqfC`!Hx?M(tQ^g@{Z2MW@8$}H}F~*jGWZ(Po`V+3}(dT%* z&+|Bc^~OlRZE%_ZKz+2Zl`*{x$v@rA4d6pL5qSBuTl@u3Y#N*9AIo1Bm?VX+--u10jw*i{{8ture* zDzu?2fk95Uvn&+l09@L@FqkItj3w+jU}WVIq8a1kwd_xDplVc15+mRv9z=ppB$121 z>PQqC#R|D&e>G@xOoy#&qc1nGzcMi5d`S#v38JI%s-5WR(nK6zeg7HyUF%(Q@X$@W*0 z4cZ}nSr5&!b$)sjct;sGK&twr7bagV|49FGmJ?H*Go}OkW|r&eo;y7Qoo&i>Hi+rm z%ncX~RVvF|c7%Qk$O~wXTq@7=ua4g%BfIU8_tOl@Ynq?Vi#QEnBBMkEsW;_&wZ970 z$^^ucLL0UJ>$wz6jOwlde*F)2#;g24VduX`b+>x{j|1xY|JM!lFq!i;>Az=mtD{lg zxnKS%b@Fi3^HMF{Vo$`cYT@;0(?-j@E3%}szg7Awwpuh1OP%Y)8tjI5iHmW|qP6ch z;QjYE#sLQb`xgNLfzrXmjIIbWoX?w>(dB{1MkJ=Dv7lok)3XzjlKHZ7iUb1$Zs_8| zF*>ABC@GOYUq2;Ad9)ThcWc~@L@spfPaoKH51Qzm z87KljeQ=E}`UfI}9fT=TjFY$$mkDm9V^mD!QEj8m^yr0)9n=@~CjW&uxS#yqg|n(yWoVKg&Qr?x>a@h{_sVlBpQ2iXE>g5}JB0=c_<* zOGap>*4`%|GYLSL78jvw+A~JM-eB7km0_1kI)^TgC(=RYA;&MjOQVaI{Frhu58uD(l5E};U zTfncY#4Ha)8wSu8Q+<0rZJd&>$4nB#YOtZ9dPj4q-^Pfupgq&!COlkv9f)3m7{_Xq z(29{*~q^1CLxarB}(CbD1!{O@r*t|?jy6{JEA*y%X0TVfQ zSqp?-7kD<`D=r2(K|(RDXMm*RVDhcEroL8o<;7XJdvEBUIVD5y2fkD!CUTowN56&(ly0A#)2%H`wxqZyn$i7=zx|oHg?bH4Gf-8n#0F6c66gUU?mK zkY)I;7FVHl9A(Kc@b^!C}Xkb*5Lrt$&=c?zLMZg$^PygRS@vANbRs7 ztCClfV8mz%2}eNCjO?`w%D1myQr`9Y%2g0YH@sy<*wcgmnynjum~u;cNV+FVBzAY< z2FJ9EiQ@4nzJJSP?t|k>rH#z*!Q%ntPj{szy3c+LHDhX6elA#@?4B$(>y!!H81N}G zVY1}suBRar89u!tGloIbEH35e7|Cl)_oRxlXt>x+JW3}fBh#`kE9lD~>NA>@xhTBc zsTF&gulzA%t~pWe@4|QQUmD*p26{eY0}fdC2geQu0oUIw3{cD|QLEjvyh)&`mLf^v zw#xrox0|zcw~Y&=-m1t4Ym{GOCxv?5H}tkW$gZ8XU&2e%voX6K< zMR#6M?b~-NURlv0nhKY@^Ms(+#;O&pMOf%LHu9v{Z=tw?u^jwwG*s{j80Jj={N)!t zrc9cNHw>>?e#=W)=u(b5piV57ux8I{M4v1-Yk# zg362XNbn$$KGW=6_sU1Y+3T|Z1jFGh{RXy^43e<;GW8mH;7b|e0rg6NN>#A`Yq&1p zHE-_v4UGDlLX*$PxQ?*yEu z=CeP^R@2{-U$h>3efhXt?Yfg;Zs6lG=*N=BAr()&VkatRzv0Z&HnruKCi0cri(YgK zIrck^lNB=+Ke`?VoQ@sqJ^l5LGJf0q8L_PO6!6YJt<>VIbE<9a4zX_NqWRXyw5#@) zbgbxl82k3LYiN7=sl-G?bl=QyVEu={tTzt-xPh{c>&pId16@FYj6@1zMQD=20l*y3 zbP9KbtKWcmtvDP2+PLnHRJ=cZc-+{W_D+|X_StYJJpg|d@9L=vnj0ZUq)}q4e0|f7X`m5qnA?Ppr}%26Fcm(>!cbIX>GWP2o(-Q%whzIXru^vYHBBz)$0W|PB;C%Mrs7p?cw z5YEykZy}j7Vvhc+#@0QbTk8`P9K&zf^qIM^COyRQyPE&mz|NDJpk9}GWhJ&DW@As7 zg*gCFtO|et5IOP&&t>kjQX5BmA$JFnQ`Cgfn1okX0Zj<|Sp|iW$OQoK&!CNTj@jtg zlMf`6@f#2L6~-P}wZGQdbuh4p52jx3vRPp^&(m4Kc?r@*Hi{&`jm&S2d+-Xy7JJdh zjT1-GKG2u?JNLw%k~Q>5S4G7mpL-oo=;B4IH-lWL8C#~Q%j)Ua-|e`D71R$y?J{4x zZ#wQ9kFx^WKfaIOac#*SV1a+kACHTa%{Fg2XlrkN|8AFC;QM^PvT7qkFvNIKv3YO- zPZwn;yRUW*U8=Yr`0hp{&iQ?`9^p&@KTJ-U12e!H$!~=Ge9qhi zJv)cIWS=m3{NK(g)@M-g)q0-XV3r=tgFc)zb45DQG9PFX|y;XWv(K z*3ZR{}_spNB|AU{sCpef|^-)4p?`%IgFv1$9vB~l-hsC*+v4N^)4*AT>d3PaGf&K zwjXgU>7$d?<{U^L@Ss3!T(+}zXBg?O74=3 zgs9sSE*^{^%DVR*MqVTOG-3|VO-3)T28bD5g;Lo1NoK!0Tc<}kz! zS+8HRi1irIj~J`jDUe*cyWA*(qdJ(@-;@0yc+?(3XN(l$wb2|!6tjd2Xa#|_&4qBF zQ|Sm{ob~fA(AH#F)LMA)34lR6Y^)R`(zIr}Do3vG>c+$~aI+qdx!}AvK0bM+JIK`{$G1$Fcg| ztVZ9Yja-IB)6mDF8{u8@oEnTji~i`bn4 zb>cxEP<|iFbg4{HKk%S&f1S_MKDP@{x8aykd(0QZ_*9m-+XiU=#&|J!;%x$Ya6{m{ zF>%Tvp=6rBj1)|?1%VxW@A4(gv4BBmpmmgAqA3^b4D*K+yno93v&`G{G)c@VvDE~1 zkIsC>H2Io#tTSr_9|(J!Exw`#3q6cwF2_{C5{^}qN;2ZAaadk6?3G6_Q#qJsCgmt2 zwhEY<**Fen$pmYj@#vJN-avze(0=Tl$tXP7C=*;i8T25NgWu8XZgr|0Enw6ny=f`! zaKp_^IK4F{(d|Wm8XHEb30%3Jem3nhSC*l!lksvr1FV^>QIM`+fV;xGlQd)~VUuh# zGWKfRbP8~!W&QxGjENd|5i*h&ju32#eM8SvNBN8rM>1SyRw8Xyr4HFBDe}EAxx6gy z!wl(1$CQRm(k9{Tmh!CTv+Q_rPk>NPHX*ymjEn*h7M+>neh@OWnKP0Zm@1t6T+?q- z-sWLL(jMJ^sd>@^V1N<8@&B-6yx9LAcC`CHFO~m|6-PXTUd#Q*r4p0r9fJRd6=_oH z2}Az~fba?K@_GvSqZ_eJsl>3Y(8sLZz|S?ilEB;9BUzEADA$$&=e?i@exQ~5=Ft6? z6~|y?xJp<+L=1{2G)kW+0Ah@b!lq)A!_qQE$#ZgZd@%?evf?*RStfZEx!M{2+9fq) zq%X@J^1p4;tn$#T{ajqH)AS`@{gbms`#@()cXw~$4fTPEp^%Z0kTJe*6N6KVGqZQ` z*2;^EOY$o-Kjz{UHYc|wcUPAW?*2OZt#UGY=&|B~AYLl70rV>`Tq$UtLc_Z6m8rde z`<}0AKxC5m$m3Y9c5Mf1l3w>l@|tWqXlvN?SqhpJKSM=aXUGuK?@pCBvK>m2@a&vx zDk>demHE+5tB~qI{<o-V7ou44Et(}&vGoADJ>R#tJbPY{d_aUY5m zN_MM_w{J8U5hk-Zj74S)o{t=AWd7E8By;;{kLyoeRa}><#fGgO>z2(YAx5K~tS414 ze6*?F!r)A;-XM==O5Sp#&=z%;Nrp^dmNWT8?Zo-J)4+Q>bIpEXJGpBjAVT8QVSO%p zmHn!>c?973JrdWA5DFT5YL45-tNo=64F?xN?&GmNCXKGjih<2rf~ju%mw%yKMM~AB zi>7k0KjRzgoL6Clvr-^po>Yj{kV$){+i>o`i7^i$Dvmm93z)8#h)WwA4{R6es3%G(mgK0T8EhxuJ)- zmtewAtz%ryPp5B3CLjZS3V-QgABDrEy-c5uNO$m@u@z`#TFs@g?FpEpb|^8UPPI6O zCYiYRvkB7pOa`oH(Fg0Sq>7%Fmr)~SZYE$E+E>_$ZVeWdX0KkFd;s6kPHG)*B0K|ZACsC+IQi%WnZ7D^g zeL5Q400dYD-$5OC5W!1XNUBBJ2^8U#1!@-pjd7jK%?DB9m_kZ>p)MwNcoe%8fXoly z#eF^s1oKjXKvrFR>_1W3dPVdZ_%9p@`XJD0A!DgfH?O2-l>T55a|2$T@5&e+^O*8A ztA;~&6KztQgWhX)VeuZB=A;PQPrB%D+Pw<5B>-OR?Hng^ns;V@CL-#V$ava&)gDPC zD6(1evN-laXxp*aKi5oIb@~*xB$9Cg*T7YtJ-UI9;xZ}Ukdn3cJ1?Jx z$U98aeEdd)t6jIKkv_dK=gm#$rWEt#!?cWVwl}~A{g#)Kv7Ljf0`cg96#<466b8+g z>DUjzUc-&7t~@IX(6!d(&5jZQSO)hEsVsYdtRVIruQyX2(;2W9#c+iQHqHLIgWR>q z1qd^IMDzW!m?29|3g@0Bc{94vn+;(_^cM7u0e+M>?ady^S!rq4EdBux;M?Q7N&{Nypp{ z0MR0V5vePj`S{Nu7lT9tAB3C@J)r0|p~6JtrqS;DH=sY!Bb(+#z{XD0+W7#@sTTP= zh#uMVu1fc)w|~8-C!1@1xQJm}W43~am(#!BTjf@49_gAE9WyCDClRsYa;K_gPOsj* z26)VLf2KqExOVhK`%B@sraiOEwFS@HU%AJxs;?YstNX6%ZHE+A1$wA$R-16rnpEB)IJ&z&izWn}BArv+ZU z*)|Uw{oUO3d&jrQ+?-Iv2OyBV7pH_TtR_s-ZMIf{lga0gn;YnzQgZ59^(G31$S1trgv28)-09gk>p(!G#2lCH?fxF+mnqPqyR80f^a)k zyYAb(eRRtnU=cY0RqK%XG=NpRcAFTMy@vz(@D7@9-?g=lT`1bEC+g9Wg zl}S>rXlZl5IMCAA`EXGWg37R9+pZMR+QwZ+V=fqnox9AVet&0!96}4w9BOC-irZ0QTjosdkj+c8PA)CqXV=%- zOV^*Tc~Jls&l4IAf9h|BfrGz*#A{*DHWThTj!7R^WDy(nk5D57fHtGC|J7X}#PrW{ zn5$|S%;JE?p?-GC4j8E8x)!Lyi?~S>*d}pB@Wf@aF9;cYZ1#b}vDvgxB^v25qubtS za64WsCZJPA+`S}XZe3X1_uEJ?5Ngo6MQ48ou66ZhQ#Xg@44+XjEBgxC5Oy3EWgFu6 z?13*8Hs2lxCjYnu1x(HNeIg2w1QWdLErYkand=BITn>3Q{C`RA zG`MY;6$2r=H!a=|c0Ktu;Dps_woc`aPQAc!^kv4AhhUnY`KEd&`J86X>^ zjq)&r8$GxN7=`&V!6VZ0>@QQI4NE~KWvH9tsBV_<3;tLet=KnmXjQ*xgVd-`q+He+ zfwvA~QyW3GrvYZ^Dx;-AVP$ch4WM#V$mvQ{D+_vT9YcQ-M`Pe^hEl22_I!LAG;JCp zNx`C)4A<@v&@hQp zI>0T~B=<(gRcU9Y$;Yi-!+{wSy6~Bb)hTbFnRwNB0ly4k1Dv-R5ObQf-R^atElHmY z?k1G|8=k06$kMRNT4PpLAa%Oy0BJLWH1_x^8e?Ukwj_~|UPp-Xv76$JG&~(ZX#M4% zHON=_$1XC~mBNq7bh4Jo$mY%R65aDQGD)|Z@?r`CPFY-u$4aPpYLFgW{UuxlkSifkSM^W8*|CFNXdossj~9Wq=j_kWI`<73(R>;3NYo#1UgOL z|9Z`Y5v{aSfX)9Q(s+^oYa*>v{TI^z*IASQhNH=2sMr6g7b+R_ekb7Zui$LG)$YG= z^r0I5F=sOIbUEuJlmE}@^5awD>C*IHr^~uE1J{a0ckdQ--1q(YCfd0Di;(+)YGIL4 z;^BJHv2lVfC>cyrGHXJjR0Ux`<@Od85s;#N}6X5qpGf{r3zMmouO4$ z-tx)kongU;4>vR#?r4&J>hJ$-&^c18k(RB|H!xM+Hl)%q+Ew2(Hofv)ePO*$WjtMd zW$)t;g^l&CCB**9>`(Fczec|(VSuYhu|;Lc%TH&fCk`)EJz+KiM>68Dd+O9Y7B);j zyVczeu1;sZ7kY5^CWtEEoV$jNsY;$QXf_}dEsjeUc;T9wnY?xx`FLECLErXsyE8=&_?%p(qq$ZX1(7cL$l7?V=A1OV_UwD*OQ@hS=h8;R6e0~@-%v`-zd&? zM+tniQONMN9o;Eqwqy0Ace1_J(EXsRRJOtuc(qx*aN2qXPqkeN6mx-tBwO>3ltb>x2q*OsLeFTUym z`C%`Vchk+GY~QPv!1f^88q~HM?Edl zU1rviB}w}Gva#ZmM`rXgj4l3mD5I)_<2c&CD_>WYea!p#`Dyk;z8bIPRL{ShSNh17 ziL$+m@9ZwnDCxOC+U6GPomUEPLIxxQy$kq2^nb74AM$Mw}uZw@Wb%ggPJ z@4!FjMnwyQ7lplHF!1pBe!KGNt(?n01+@pa zR$09Ky6Y?6;RK-ue~`st_pEdj{1%;@o#R$7mzADuM-_Z;}hu0%W@z`sEH zD^OV^{vzDd5sYk63>xwp0`Y7+%g`#J>zPMR@drtTj~{K^fCv~SaMHqo&;vdi*X~59 zwg4|nA6`@8FbRt(77*0w(=9>*#Q2JD$oBO;2s|VPXMe=C!Sd9h1Y&UZhcHz^|Kr-) zw6fqgH*Lx8KURh(akCZ+`4LZ-dy;X@678qaL?12tFC1R4L^7q1$R3B8qmd=`*xy~r&SIz-uT|%^dIIx!C&LL4R6eIr$ zwlS6mh`%BHrgkKJ%?kw7caWm78I8{K@+XgX5IZ@15JS`pWzhf->ay(p$o}FY7OG7p zdEK#xJsQPA`fDKF{xSVLsW;-+*FcvukCNM@N+g~;>YD``<&=1rC|)n8GXy=#e|iMm zq;ygjc6yx3_qd$i*1_oBO`$BciM;kyUBl9fhvd(s3+_pin{Yh^0)r>=_BfqY#R|TD zs4$WN8f>fHAsD-n3r2a~6@<+`HL(a}lnS`MPDXAu(MB&>IWBem77GWUN1?t38&YY_ zf8VU{X?=eBV5Obx0P%Er{GovAokOpj9UmvrpGQrXiMg;;czG2iL`{Up+?dedzdG zi}}-&_Rq8jh;c>Ba?X?X%fH>>f;rz?N$ERDT}h&Z2Q6P)v3Aif97H}eo6`$s?E+Xt zhHFqRtZS}*;c@MWHJh_mS_bw=^oYf4%q=l3vv!#ceZlw*66hC~I#iV1WBHRT`MerC zAbOq&0}?LLMcR`Iu}zzE<<${f0alcww#Z1l71{(+P1!p%Nhx>_+2qo8DVmf^_30x z8{w=UW!`WCrX2lP6~Gl?dGVC2b3v@w(8}fT(K)E!SjGuWaItg?0@o(^2FA~YpBpPS zl}#c5wXHk+-WO9l^s<2u10VwV98JPj4Yd!g9OUu|qx-%-Z_l@9ODe;4k~pp?WA1_aA- zntYqJI7J@PhZ_CBrOE%h!!-gakhe6}EA zkIdWu3o42G0|FwNr&n@-6)jIUSojt4p0s<|z5TvjapP#Z_kqI)liVj_vdt7bubdj3 zt$^-{irwqCeVe||k4wM-J${1`P8T6yq?-aX@4;!FC4dlP`HGUBcfV(Gc1;Knyh@_) z&~MVV>NBEL$-wh!WS{NmjJvf!VswA}mlE;sexj~=@Uk^SaVT-Weatq|cl`UpI%|9I zS`fiuu>n4)j14Ie4*64NZ?)B=rMS?_xhVi!1aGIe4LMtetO}}}G@qoTg&|hwRw%Ecg6Cm#`o@A*7057!A&!Rm(-)%C+w!Qjj+Er!103+n2#V>tO45Ep+8C^ zZVE;eOd#>c;ZNnlPFSK79!I&u02*>Y06u~jj?DiN#Zw(kryb3Rij035?Vb_MFdF$% zD0-vU>_9Lm1Qj(g6{C)i%6t>~ItCPsN7>-a{5O1j8)K|+AXf(+cf1?WKQMYDX2wJ( zmNg*I6d3P-MhRW%WR{^_9AYYOJt9Y!4|WP5@&e8(Y_aPV0?xB8`785I;_wJDHB1 z+6WU9j{^yLO>SIkW(`;%&)JICnCQdjca2H{&#YBtq#vHLEGP3`<`Q@;Qy&z=7wc<6Dgrzj`FLOgr<)`>~h-cZpFl zwg5$Vyo5Uj-ixuj7D_7|%%+p5Ldv_`3kJF;d-sARn>>|-gN({R;+bGdG9J-BZ(&EE zPWfPJrdEnU9qMjDLe2)bqBjYtl_u8|Yl4m=9ZRJ+0fRE5lCAx;ggKrI3(NNCDEJUgD-no2F#ofnfynAKUNwW(*xWTag=L-o4lkY|hs*nxZj$9UWo267s>(^r$$Wg+vdzV_ z)9tfUh(20*vPL!!*6D1&gX|>X90#~(DJ-bx3|8Kh^A3??Xp%h~0KK6FkVUiqS3)EK zKmjv=-~U61@iPC{g!pf}CI6~fR{yt{>jmJyv0~yF<|X()Vy-vRy}kY|<~jvWaU-f| z6AP>ikS@g2W%{E&%+vR#8!qIPcAp927)7S+k&U7BXZKqc?PZuAyx01n+YkH`>b&=n=d+xPaTk^n2F7n(Fn2;CXURhUh%lSc7ZQG-6RpZS2A9(9MnZ(oV zF!h53Weti7*S2DRpVo;BRo=yibry)fV19SA&ReT$Ty>LCk9s4n1zEYvr7ri2a;}dJ zs!1BY7iH$~l&F7YH^!~Na-S+NYGbNeu~<FOe(uX`Jyi?K*vXeQMLby{e~xM9*Gu;YhcACJ zOl+=)U%60M`|-f~mOkbnhVHH}S_(n%Rum$9bMkt|%AqqWmx;$~VR+>xbR zw`rfPJt(}9^O)LW4QkfxFCZ5tlhvQCKzUO*S6yg^%{ytMPw*k}%>gKuU=-ghv!?fO zfTAt11ng zzrWe5Ryplufo~2b$j6ju>iT?BwQjscxoNr|1IR@1ZCp5d$$r zbi*RDJ=(5{46f-kfRxbfK??PvNdg(4B4h(s9fG8DXnjylzfu1Cm83gN@Q30%1Q^ay)dl}~bDfnFrYcL3k%>V$Y{-)A2w z57`AO-@UC}X{BnQAs-lWC3n~zR294Kq%#>5`u$lXAYAO34Ai$LlA@JY>ayXAE@^$c zy^$SmdqRyfsg(a};9XS%(@pvIP1tNT~PTV;Qkf;`=!blpJcPnP<{wvK+syEQH5 zT&J%4Y#k~Tfh1poyrR_lZiVf$0in{`WgWZ&f~wWt(;^)%PMe`YeY#(Nts0wLb|Gc$?MfN{Bbm}$#H?|37&JJ zW}jA=b2hm0Mgx-vABs8KfGTN{^7D@kClz(bw1Z!6j%u}?b`gNCl>|F8_m4wVSi2ND!(&;i?OLp{yaTa85j3QWo>Vbnt5Ihgj4g zG8JIe`|qsC&qk)BtLvE@@QE5kS>5-*lOCA2BOoNNqidK>e4J6*3L7=)(n1Ky|HNGF zh5Pi>dhQ<#{Igy1Z!y;$TUf2uz(1@QfAm27UoqG5`)qKcidJ}Fsc}DZdT{NIuojUO zKP0{OiUrmYSrPOhk><2Sp;cI|5cezhV9=IlN@v7z_KxrY))RRC3)e7L3jfeY z4*m11piV$f8P;!Lr;GrQ#tVsjm+y&w>V1{DnOdgFU!FnSF3EU5SEijpmXVnCI0Hty zsjV^lHKkb!kp8S(-F)j&3KUQznI@zGtR2mgIf6om9Mze&#uIhnWu#Q4+OdIO#g-V$ zf6ocu!#Np}!zc2K3%B4@2FSNn3^FUstSYSAuWMYJ_D;l3 z_WsPEu1wNDtoWZX*Iim-mQ%F{AH& z+}Osos*fI+6JBBq5hDuDRfuooZIMw3+1LE5q z^bCykQv+J<28_I=I-bpV%doWs;Bu>g-Wd=ApC zj{HfHy|*ygu@F_wEim|kd|Tr)>%#l!-S#DVvD51i>Kdfhvl#l8(=SI3)v*+V)(VZ& z-P}-8l)a0U6@<_u2Gx!Y__S;XV8e@te!-%jz2xUP>(OEU0`eVvNteF@c-ZEVK&SfS zrpl>q`>9*{495=zk(mKLnPvGeN_Icf<*Dp7e}#5@T9aAyry<4;A|@(%h@l5f1E%ir;-N37hifm)T?ce39 z;;x<#FG$xl{c2RPJH9+Yu%DXyWIOuq4*T%Mna~r+`MVu;uoB^$w0}OC>wcJD)@YTw zT(e>Oo^Kq>16mqC@-2N2D?fOB#Dg=Cz%DY_`PsP217zvly!mU-T|za17BEmhtqQ9*2I_=&x`i#U=wA*=y2{9y&I zZV`77TSheS@ec{FqAab}q#8tM(yM+^5mmI1VZiK39qV_HGVY3@xe>M7e z<|M(F^7QUDu%HOqOuZV@`+bWSuGI8;$iL0f3K-VwODSY&J&-c{O|DUKfoU;dq*URk zdqIJmF#L*3DjRR;*)lJ!vU~NBd$%<@q}dC8aWC6qIGROvU;lDr(TEG2%@|tg0}njj zBYaot2_{eH*;!Kz+hW5i4+a?g&5C&2U$&0i>T^Bbk5KuuJR(ICYZ>r+B@fWYBX<(^ z&hP339CG+`-6Gi!bYyRB*=uta1G;E%qHplO%<$x(Ma)iue+UNsDYCZi6{Elt)2#@V z2H;o0P>FT$4=sq5p9R|~2vUsx*$jyK7V!UwCQOA+5 zZKD{qP&CysmoQMMP)N}m6r-P2)O3U(!2G9QjJ6sYBI_QFcSE7H?eM6K)2nbHT67^x z0BRL&TZ*`=9gUZXjY^H-WQoNJMKC*PR^j}=$HWyiqNBgXjoZaCz+=94L`4dqC>${K z1k_#wsN&SGQb@ZV2Qm|i%hikveH?oW5Wm<98b9@GLGgVt#fTsf2thRY0=i*)^zp0C9XdA?#~k?l@ZlfsANe$X!80 zb5Ekzg>A1+H2y10f&uh^L%`Diz+}AQ{|ik1vvX2%^S^0({tu$0F``VkLkR~|xoo$& zi;Q?fQ~fO@eTe4Sg6fi6%j8}Em}kQ=1}R>|aTA-b8wBFG$@?gm)DzL{5p@s7A=eh! z7t*PJs=kkS?uLwfUYiO*hTnsR8APDaQc=+wv5DAQn0Wc5^bFRN)a$t1+^p=pB1t}e z5)z0}LF!|2s`u|-+rAL|C~$*9?`^z(RrTlUT4TtK`W^vo-Ii#*_Ti4s2eQ521pBko zbVt6|eAWFjv7|E)HaquyLAQIUml_l~EvK`-zNyB)GeLdu^Wxso@14J<8T+P^ysL+Q zz%Jcv{Fp)gWlysB1Kr~3_iyfd zi`(ESGx~dVCE%_ygKS=c(s6M&Ef`}{$|znFgI4c0BOHxNMIf}1x_l<_`DPVQeWICq zjH}GsZthB?yO^=iex3A$Ye7xnQpDoq_hpgC#o~M16@@1(i!2^L@&Mw}+)JJF)GAMc zLDdu;nulr$BAF!M&j$8ZzEU<`5yKk7G-W{nuPDa_3_k;2eXDY2EwSy=7MXgE`Ks^| zr~EFc-f4grVc*r-Bu5FVFod+t^ELeX7Mm1gaC^V|U|U>SE36|oECM>k?eS_ z7syngHWMki>qci_?BA)55Z-7ZYs=rNr!T@8s!*ohn5GRJLZbgv&HLa9!WzcDb=nE4 z>pQZ7s_5eKiP4OW38;=;S&=41PI#hlW%+m!)X+}+2Q4|VGl_fIBclN*F)d#cHY4xg zc-p3lzDA;Y!*DIvR^eJZ!1>rQ7O2M<@F*2xu zyUiqny7%fhZQ-s7Yk6^dG@$C1s_MJnDoo><)g44hk7w_{ZQG%?vQFuJ;XZH!U~*rK z(wZ3~>T#DAA>O$_P3ETT{rrGUhLv&-*-cW~vfDFP!3#z^JUJ(7R%GqQ_cfS`jr%=ra~p-<6igC zK-3p%QfygBdM5NV{uzUceJd#0w>8jAUPnsT9LSWQXDB+Wnzr<2|D!f6xN9A zSjFWekmE}p5O-Ot$|C?^D4gto5{)#f#5}y6s)5tQ0+~n_eEP@g5ZA{UUy;{@e|V{$KK1Dbl%jLMt-e-dO>bRvU3x^n?eO}SIeWXAakYvC^ZfJabO00BW-AJIK zpRG|<*0xX}q;Cx&=AYV30m3KS%MJfRS>8YG1Ic+qS!uVeITR;5OF&hxhIV#5t;Sm> z-OJyLFL7Qqcb>fw1%upoTzj)-hp1(v^|^ML@>M6M+T7|Lw|9O08pxLt8a~Jy>^<uOkW z_xo;^MxP-|akFaahLzIF=|`{LzeAB&80Rt@?^#4f`#Q$v@avU%Q%g!N8Mu86AYR&D z`}~UAmD=dp+QpFcI|FKh&j`3p{imkl;P5d)~e=;T8;S+n3pix;p*Hkw5dv zQne$)jc39+^S8u?-_as53|l&XK4pJQQ;_Qr>7PG%{}Qm!dv!v{Ryj&~81@e7esQHe zFn=~P1zKha39|`1Iq~Z*4g0kQE@g(ijq&2C4p@gC#MwIx^s7I{P#)4tw ztcXIX2xnF#s?0aGj5v{^`%5;IcQj@K22wbE24)SpRe;9IqHXcdEHo-wSi=1VQF~njE$f^ zZD6fXG_OhQ>!aA56Av2kc=R-AKs%<$JC*^DihC3H74OS7jnT8l6gnh`kD?3IBUeom zI{sIC=k*Qe!>{jY7>p9Vmk^x{Nigb2(Fq|zh??k~F#0H?m(hDmbP*(?6TP=YFnWpT zK?tKn?D@WXt@ro-);`&Pz+Q7QhtGNrX03bf&wX8I@rPS#d${-$+l1*zbKbHz+K#xS zGcWv^%9?br1Q)h)AYsK;6-StGGGq5qFFpzIk}wAx8wN(A;u$AmP`|M;Dqymvm^(UH ziJJ*G5s7q0iL6JlH5o~lhDjo7-0?Ut&tM{xIffq*DqWsvflFpbBwy$zOO_|yHBY)& zP0HyH&$3C8m`#AV|B5Nt0!uXorWjiC4y0%?C*MP-YzIf{Z>Ok`rkdXkykQh<>Ek;R znaacrdCKfYp~hvsEog^G>nn|K=1%oVPs9$SDp04ZAyS=<(!Gp)g^!Xvx6@&^{=)8w zI_VG>LCAv{FBwpxI(4QgBg)_B<;w;L0R@{Bp^~tj88!<}Iah%KlIEu&`3MM2L*|NG zR1a~saa1gT(Rn&mtT;0}dLpZpnY8^pJApc5h{=3%znv$~*^xrIqNitb>!u@C1@mlHJOXX=-l75e{dvgJ)QkU|RYCw@!1w$#J=FZi9$Q07Qf{sARocl$63N^^*uJ$nz|W7=X)5L@6dk$B(3F!^h` z`xcE4zIVh+D71fXd{D$0$~RjWR(O<4mHtq5C{oa)BqmFe=XvXDH^*Z;1v7vszo$Sa zJ9+$?##~p=*OywNJO13S=kzLs-am2N{_Ow*y(q4QWZ&Pr_d(mI=+RIbX8xtaixsvH zQ~L|%KD&X9F^+vp+_$blv+FB-xHI^G=XnGf07H##)+0F6JI%ATH z4)KkwIor_^u*wk(?6fsm{WNwS#&b`Xsmfr}%PNbBeEExQeZ17dd%JISFX|-c<&x|c zgs^&#Eqt8OJBs;IUP30|&}m#}Deem8zrfHrWhOrAe>!oL@tigN^V-F)Euo%%vuo7a ztP~yjV)4^u^c6jnpsC4Wob!T(=&-mD+lQDDk$OGl)}r(Utom*Rs741-B{7;i@O7Ef zTYRtpnUetO7_4GKF^xcXR&_3}c!+|R6%mi`M4|o&pgbj>`S1*A8?9Sbgb{Gp;U!Vj zX6CiHIhGOZ6kQxaL%4uN0y3>F`yhTM&&w@IjD!l&Ac}8Bn>kN2d^Ym@vg`n~Ge5mM zQ{Qp!<+S8Tu0fC9El{rRFE7RdVAbtbBmM?rG4 z>*tU(z%A09cNII`yhPerQZH!UHSbg)J`%U^(=gT>Z2K{r4~4#Imt^g^27Mrttt^r? zVYGUGj^W#)9Q86TmHQg5fi9DSBLx#nv6XmO(Ym(N=uI zq;8a(`=@Iaq~YA1lX8zO>#Lxu{K;n(V|MtkQA=?rtL@p|ce5v6$lo~SYxC1SSr47P zr*4V`*m;-nAE3oYJe|lo?-+6~k}#k`=WRrsN$`M3q?Yt7G7@`sJtee9@vVdAn``Jg zG5PzDAL*YfA$8g0Ia0*lqKOB()y8n|9hlUr-R>_?4XV&mJnG25gU)JpzGw%y>K zc#E2$1KRgjmQYRa{$LEN{2o%&jP7y3W4QcD?DJ)!(^+!k7RbHevF_vDurxJZ z%v+_3P9%9|AOBJvW)pAs7$|x#KBj<8m^HTcw--1TTCy{l0nMI9{1JpdnRmz%R9%t1 z(+XnHT|q<0QD{ZO!w~-qGk(6UD)2rxAnO5l5!+1Ejihl*uxbI!#*muz$pH<2iiLvV zmN47>n~`Kit2~i7A)e=!K=G798ureIT0b5{$a4zfvGp(#dBd$rkB2KGgIR>{aeR<@A@d!ua?Yw76_Mjx^A83vvAG1rf%zP=2E$gW z*)IvJs*4=L-&E{G-D5pzd4oXcI&KE7WP0_Y4zl}-E?Q4Cs8B^0T$bH>Z`?ttcWKqt zjoJ*H0Y0w0$qWu#LOOHqAP9AEo){tqJYlCz=KACIzu7zg?Z@mx192t*FhhZsle0(m z;-0l+=ed?k)^Ron%8wWy)B?h5WT4V$xnw&{t1-L0v$|5b-NEsfUnlc_FW4v^*o{EA z%;oocO70V_jD<KVbJNXYCsjGBXcPSN zZzQP6_vou_v6#V`uBE%F!CHHozwAk~Sx##Q908zr6}TZWeK>a1QT2xT?3g9p$E>M$ zFXc7nqR9Gc3q?h2H0F)^o`F7ca1uExr%G=y@Lp7%-84LYiJJWX!K>pjdUSNi|-tt zpY$U)He#s~S2^Yl)s(c4uoM>Se9Mh82<;E?mAWta=QFyGqCTX&Ze3T@pB++pHlEhM z@IxNWJTm&_D5J?F_D;UfU3=3z*)iMJaH~uqx3uFN6L&+ z{aUA97J!`7GFMK zU7IY8uPp(0?kLFKoQ^Ves~X?ik?CNW5zrp0@Lv3GS`EY{ZXf|5bF}qs*`Ak#Z*Wbg z(4jb7YhHJ8V%0h&yk&NU(i=eRh_N%cTwrRKtgjjgH}fzaSfXrb{gJD5D}!}$lMhck z?exlu^I*|9a1*qlz8vWa)ZGv1n7AE{xIc^ z$>u%Nkm2AL8yVoXmAm=KkHw-+V6K97`bMcQU#|G+x!QWE6O_jB??Ot)bHL9^o9Cv+ zf~%JOiOg=-ekqjjq8^{yqwl`}Pmg(5c*}#G4bGOIVm%_jh5Mb(N}xki*LMUzruYnU zh5m0ymzCeXrHWjuS;twQ4dAGNTE6i?iCNRptucRc z>Fbk;^uOOp9s_sZ`WaE;Uy->V9JAN`y}ZS!xGoO&-%Sp(-R-*?_QRsDU4lN(=JN*y z@cVA4IPpa|DRy`&9tIJo1Hbd3{qa6Ts!n~Ipn*-dd2f5LeAaK4DjR$4$K^6o(Jv8UWr`^~2-AsU;8~_N8VGN^2_&$rP$99iqAN z@*xiVq2BKf8ncuZ{&gDoLfY3w8cfkZMD{~VuOql^GkC~4!Y?Bt8IMsl*J1UFaI6iD zwk2RL|kF3F_M1Q#v{v3d-B^N`z`%d53c# zqu0_wRgJHS)1oVEBf_LY3eMC+wtT}HW9-U64XU1>%Wl2N0M!Wu2*X1M%Xl-(K%-E9 zVb@qm#yC;SaFIsP6qBEbdDLW4%t&MO3^eXbPuyW?9Mxf5r+2&~RErQHTgy=GXPTWj zpKjH-jR6o2<-RAtIXnQ`mkwe;MGxOi_+ywLdYHh1j}}czc#j7WoueK_Vyla=fKByIcutdKJrgRflf;cm+LFEnR!h7>CH{i) zvZ!I@x08v=cz1BYJVrptCNEj8cxjrH``gz^(&x#XYe9$oV2weqdn&0g3D?C&uu*xq z79xZi!S)OhnJyjkfEhexkizGl);0sS*p4*bPUGxCix8|STVMenXVEUSS`^TOIRj!F z5HuUC2+u(3pu?hQOa)`(1fv`fX*~pP&p)j`B)TaheD-FBpob50D%&|YfRq$b#pNvms&5W!q-&OHlj*)hU)jp`;RndPUAK&#_)fsU}Oor;O=e|8O3wT{*K?e@T%ry!pGCz%Jdz|7pLbViJ&6HMB)V zW|TD!;I_`7%z_9tBRij{%<`te+3j;u79kn+=k~tQSryGgb2}GgtirMy#twcl*_AEB z^ShViY$9@+CXW8GIqzCW7WV$Y*hS^FUN{BB{!sBZJyCSR&s!tK2{}{nf0Z-+ zHV7~b?sEtc6hH+K0TbTdCE){rTptdqRklg*j<#GU0qBU3(0>O_klpeF@qY!)MJH7l z0o+qW^U!e)@Q-3708ve(Pf(0JQNe9=XozL|tO~D=5W32+-zQqt4L=N90?m5I3D>Vm zZh=~a>sN^|%mc#ptDt$T)IUKpCYhHIG?TKda^Juq#W$biXFUl+=)5(BLHLU60EBIC zg*p+qjj|2=S*BVK__1!F81P)VJXx*d%h$FZ-4BDfx^AU0Ori4RYR8n?>_#0-xoLc5 zZH;nWW%GD6D@AGleEFAr|MB2(&X_}H&vYzFcMy{60@&s7 zrZJlA`gY!fMyp&YE{;Vf@VRB7>PspT=c7ak&S9q8Di;%xn<`q-QfBLNj0F*ck@A5c zin*>I6Hl&Q?k5A0+bShm`PLrN-?x-Go>g1ED4b%W%5$Fx%axqQOqTLi4VW-niO$!H z3|R{!ydz%NdHxES$QE&)Y`^nYnGiGqtIx^l)U@6;8kqNSa!g8SGKj~T=`=ER(dq>bEi#vq!(B6*L9py-?{|u`&Ya z5Yi^Y9@DD?HOr7&ME##`5e`4#@C`q8Y>816qsaEdAYmaO8tgf}-4U#uG1!ske-y<> zqnCDaGnkpF3*~)E z7hN^qPRsLC>eXu;c`&9z58xAj$--);o@hA0*0p?r?+xHPKW$dSg@4-qNRzFkdaLky zzaDR5UZzV3nl5dS?Cl56rq6tLTSVa0husQvBELQfu~izBYYWK*yYyC^!h7Vg!ftK1 zQmxk^60chw4Db8@5$~l>koyH=&{Grsd?F4D0f@E8)r=4&2!=wl+$5=qWxQ*Ul z($AYW;|}`;KEt@pY@4?x%#_6C4~x2`MbRQ!YgX>Pm8e87dInMq2)K@bxhxe zg~A>U&?s9EMb>`nDAndt>^!s7O&uwQNBqB~Wcr{cC0(y>{2RbsX85T6ljE%E5kAQV zyHSB#TtMgR&IWI(%;eyhNAsOr?&oN^O||iVDMkoO$=xP?h#(S30WCw4 zs858j{4RiMZ6WDh0hD{kh13Md>)Uene+5mZ(K66o_?LJBxF@1jjnGwoO(L!INZv zT<=lEw#GX{GsFw`s$I2qg)g4ZKo;m~tm*dzpc*qIOn}-bB4Ml9p{E00sp1Z~BKoEF zvlR+YKN?Zk+e8SlybEC{zgx9u`?>;WpTkhjVCban7L_^DUSGsySm7vZ57@$;)-x@3 zIOhuG5w27V%YUHN)0<6vBpI_Nt}*)_rMn9|>J80TVH1i8eiK2G#{|VlHLCxgt`gt6 zrR8#mks1wP>S+7V==W-lNg^&e9-_U>kFbf8|I@k4NH81?Q4Zb;IF)e{8(X^(`&ZM$c{+RWsb3-z_@slsyJtx8BhS+@O z(A30no}b*N%AclD7lq^Nf**gPWjN=0eo_B^*2vFSgJo)>ksA3jojcMi`4nZxU!8L?2@zt*P zruVFH4Ze?G792=*M&8(NU){jA7s2SaW|0T%mtESSkNmT2fjn0;UIK@k{UJMTJNK;o z3*7wOy2O3^!n?oVcZ_q&&?5O6RUOAVBerdG)YNZ&+4N9m2DM>kj$aN91l2Ms%te{~ zaXJ9tE&g`4Z7YB`4K7c~&Knjl=_XhfwiNGG z`*r-ip8mW9IG91zNd@(7fN?5Tb9lSqnSdn~r*;OkpA;Hm7$oe9UOfe4W~_Jm!B-7F z)tiRY(tb43K}hppVm$bi!HQD=OtFQgVhXV-B}@z*=>|afe!H;J;9m`3_6!s?2^ub- z9Uv7d(O`4WR$9LvtuPVNQ6Iv^6t=wXbO+_@%x|rN4QAa8+wBjNRRy*ZW7?!JAa972 zs+IoPYavva*hHvzDFz9}3`t_tT|I3EKzsKr)S(a)9ER>NT!|^-PFZ-el%+A(nmCoT?q{r z3oNq1%H2!=Z^xfXW454d&~4Wnf{Elt*zo~1rp&~@(mo8N+?;A&;_$>(egfs^)|vnq zE*NkJp3FEHwkwr1U6#yzgdJl{VscIH@(vId12sYX;GCSGkqsYeLIu zlq^4+(jXP;pTVZL?aOAHYG4=5+?D)Cg`lSl&>f_+MWmU`rmmpUCgkXVHOEmZtnn#`o_bTM>-Y$obu zWcr=M6ke5NZ*NHQHtOY;x6>e#RRp9|5M7@6x|TO(I}K9J9IVRa&eM?9(dnb^ntjtY zdxi-!(35>!mbpU@?LY(!&XNu@hmH=Cjtho;@gbd5%bBtx9mve}0)$5n=K4_woIvw( zpJl9PLf4{_H;wYL8}m|Kv-j=n=$P}T%kzHElCFiBongpw@d&b?srI#ma4Gv=+zNBa literal 0 HcmV?d00001 diff --git a/names/loading2.gif b/names/loading2.gif new file mode 100644 index 0000000000000000000000000000000000000000..4219c4f5dde0b7fda0cc1a8fd1f45508daf71e6d GIT binary patch literal 29031 zcmeIbdo-l`W-`P9b zSuF9Vp=hXkC{&oM4X3KU{_#xL0qLnK MFUCs3c2co-fa{FJ-PJNmkzSGq;F*}=& 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 literal 0 HcmV?d00001 diff --git a/names/style.css b/names/style.css new file mode 100644 index 0000000..e69de29 diff --git a/names/webathena-login.js b/names/webathena-login.js new file mode 100644 index 0000000..ece05ab --- /dev/null +++ b/names/webathena-login.js @@ -0,0 +1,40 @@ +(function () { + var WEBATHENA_HOST = "https://webathena.mit.edu"; + var REALM = "ATHENA.MIT.EDU"; + var PRINCIPAL = ["moira", "moira7.mit.edu"]; + + var button = document.getElementById("login"); + button.addEventListener("click", function (ev) { + document.getElementById("loading").hidden = false; + + WinChan.open({ + url: WEBATHENA_HOST + "/#!request_ticket_v1", + relay_url: WEBATHENA_HOST + "/relay.html", + params: { + realm: REALM, + principal: PRINCIPAL, + } + }, + function (err, r) { + if (err) { + console.log(err); + window.alert(err); + return; + } + if (r.status !== "OK") { + console.log(r); + if (r.code == "BAD_ORIGIN") { + window.alert("Please use HTTPS to connect to this URL"); + } + return; + } + console.log(r); + var session = JSON.stringify(r.session); + + // Store the encoded ticket as a global variable + webathena_base64 = btoa(session); + + onLogin(); + }); + }); +})(); diff --git a/names/winchan.js b/names/winchan.js new file mode 100644 index 0000000..5d66bcc --- /dev/null +++ b/names/winchan.js @@ -0,0 +1,271 @@ +;WinChan = (function() { + var RELAY_FRAME_NAME = "__winchan_relay_frame"; + var CLOSE_CMD = "die"; + + // a portable addListener implementation + function addListener(w, event, cb) { + if(w.attachEvent) w.attachEvent('on' + event, cb); + else if (w.addEventListener) w.addEventListener(event, cb, false); + } + + // a portable removeListener implementation + function removeListener(w, event, cb) { + if(w.detachEvent) w.detachEvent('on' + event, cb); + else if (w.removeEventListener) w.removeEventListener(event, cb, false); + } + + // checking for IE8 or above + function isInternetExplorer() { + var rv = -1; // Return value assumes failure. + if (navigator.appName === 'Microsoft Internet Explorer') { + var ua = navigator.userAgent; + var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); + if (re.exec(ua) != null) + rv = parseFloat(RegExp.$1); + } + return rv >= 8; + } + + // checking Mobile Firefox (Fennec) + function isFennec() { + try { + // We must check for both XUL and Java versions of Fennec. Both have + // distinct UA strings. + var userAgent = navigator.userAgent; + return (userAgent.indexOf('Fennec/') != -1) || // XUL + (userAgent.indexOf('Firefox/') != -1 && userAgent.indexOf('Android') != -1); // Java + } catch(e) {}; + return false; + } + + // feature checking to see if this platform is supported at all + function isSupported() { + return (window.JSON && window.JSON.stringify && + window.JSON.parse && window.postMessage); + } + + // given a URL, extract the origin + function extractOrigin(url) { + if (!/^https?:\/\//.test(url)) url = window.location.href; + var m = /^(https?:\/\/[\-_a-zA-Z\.0-9:]+)/.exec(url); + if (m) return m[1]; + return url; + } + + // find the relay iframe in the opener + function findRelay() { + var loc = window.location; + var frames = window.opener.frames; + var origin = loc.protocol + '//' + loc.host; + for (var i = frames.length - 1; i >= 0; i--) { + try { + if (frames[i].location.href.indexOf(origin) === 0 && + frames[i].name === RELAY_FRAME_NAME) + { + return frames[i]; + } + } catch(e) { } + } + return; + } + + var isIE = isInternetExplorer(); + + if (isSupported()) { + /* General flow: + * 0. user clicks + * (IE SPECIFIC) 1. caller adds relay iframe (served from trusted domain) to DOM + * 2. caller opens window (with content from trusted domain) + * 3. window on opening adds a listener to 'message' + * (IE SPECIFIC) 4. window on opening finds iframe + * 5. window checks if iframe is "loaded" - has a 'doPost' function yet + * (IE SPECIFIC5) 5a. if iframe.doPost exists, window uses it to send ready event to caller + * (IE SPECIFIC5) 5b. if iframe.doPost doesn't exist, window waits for frame ready + * (IE SPECIFIC5) 5bi. once ready, window calls iframe.doPost to send ready event + * 6. caller upon reciept of 'ready', sends args + */ + return { + open: function(opts, cb) { + if (!cb) throw "missing required callback argument"; + + // test required options + var err; + if (!opts.url) err = "missing required 'url' parameter"; + if (!opts.relay_url) err = "missing required 'relay_url' parameter"; + if (err) setTimeout(function() { cb(err); }, 0); + + // supply default options + if (!opts.window_name) opts.window_name = null; + if (!opts.window_features || isFennec()) opts.window_features = undefined; + + // opts.params may be undefined + + var iframe; + + // sanity check, are url and relay_url the same origin? + var origin = extractOrigin(opts.url); + if (origin !== extractOrigin(opts.relay_url)) { + return setTimeout(function() { + cb('invalid arguments: origin of url and relay_url must match'); + }, 0); + } + + var messageTarget; + + if (isIE) { + // first we need to add a "relay" iframe to the document that's served + // from the target domain. We can postmessage into a iframe, but not a + // window + iframe = document.createElement("iframe"); + // iframe.setAttribute('name', framename); + iframe.setAttribute('src', opts.relay_url); + iframe.style.display = "none"; + iframe.setAttribute('name', RELAY_FRAME_NAME); + document.body.appendChild(iframe); + messageTarget = iframe.contentWindow; + } + + var w = window.open(opts.url, opts.window_name, opts.window_features); + + if (!messageTarget) messageTarget = w; + + var req = JSON.stringify({a: 'request', d: opts.params}); + + // cleanup on unload + function cleanup() { + if (iframe) document.body.removeChild(iframe); + iframe = undefined; + if (w) { + try { + w.close(); + } catch (securityViolation) { + // This happens in Opera 12 sometimes + // see https://github.com/mozilla/browserid/issues/1844 + messageTarget.postMessage(CLOSE_CMD, origin); + } + } + w = messageTarget = undefined; + } + + addListener(window, 'unload', cleanup); + + function onMessage(e) { + try { + var d = JSON.parse(e.data); + if (d.a === 'ready') messageTarget.postMessage(req, origin); + else if (d.a === 'error') { + if (cb) { + cb(d.d); + cb = null; + } + } else if (d.a === 'response') { + removeListener(window, 'message', onMessage); + removeListener(window, 'unload', cleanup); + cleanup(); + if (cb) { + cb(null, d.d); + cb = null; + } + } + } catch(err) { } + } + + addListener(window, 'message', onMessage); + + return { + close: cleanup, + focus: function() { + if (w) { + try { + w.focus(); + } catch (e) { + // IE7 blows up here, do nothing + } + } + } + }; + }, + onOpen: function(cb) { + var o = "*"; + var msgTarget = isIE ? findRelay() : window.opener; + if (!msgTarget) throw "can't find relay frame"; + function doPost(msg) { + msg = JSON.stringify(msg); + if (isIE) msgTarget.doPost(msg, o); + else msgTarget.postMessage(msg, o); + } + + function onMessage(e) { + // only one message gets through, but let's make sure it's actually + // the message we're looking for (other code may be using + // postmessage) - we do this by ensuring the payload can + // be parsed, and it's got an 'a' (action) value of 'request'. + var d; + try { + d = JSON.parse(e.data); + } catch(err) { } + if (!d || d.a !== 'request') return; + removeListener(window, 'message', onMessage); + o = e.origin; + if (cb) { + // this setTimeout is critically important for IE8 - + // in ie8 sometimes addListener for 'message' can synchronously + // cause your callback to be invoked. awesome. + setTimeout(function() { + cb(o, d.d, function(r) { + cb = undefined; + doPost({a: 'response', d: r}); + }); + }, 0); + } + } + + function onDie(e) { + if (e.data === CLOSE_CMD) { + try { window.close(); } catch (o_O) {} + } + } + addListener(isIE ? msgTarget : window, 'message', onMessage); + addListener(isIE ? msgTarget : window, 'message', onDie); + + // we cannot post to our parent that we're ready before the iframe + // is loaded. (IE specific possible failure) + try { + doPost({a: "ready"}); + } catch(e) { + // this code should never be exectued outside IE + addListener(msgTarget, 'load', function(e) { + doPost({a: "ready"}); + }); + } + + // if window is unloaded and the client hasn't called cb, it's an error + var onUnload = function() { + try { + // IE8 doesn't like this... + removeListener(isIE ? msgTarget : window, 'message', onDie); + } catch (ohWell) { } + if (cb) doPost({ a: 'error', d: 'client closed window' }); + cb = undefined; + // explicitly close the window, in case the client is trying to reload or nav + try { window.close(); } catch (e) { } + }; + addListener(window, 'unload', onUnload); + return { + detach: function() { + removeListener(window, 'unload', onUnload); + } + }; + } + }; + } else { + return { + open: function(url, winopts, arg, cb) { + setTimeout(function() { cb("unsupported browser"); }, 0); + }, + onOpen: function(cb) { + setTimeout(function() { cb("unsupported browser"); }, 0); + } + }; + } +})(); -- 2.45.2