From 38074a5cc1c40a64c1cca3bc2332b4e026208cfc Mon Sep 17 00:00:00 2001 From: Aroy-Art Date: Tue, 7 May 2024 23:07:08 +0200 Subject: [PATCH 1/3] Add: more words to spell checker --- .vscode/settings.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index a72e9ba..97b8a03 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,7 +3,9 @@ "artstation", "devantart", "iframes", + "LANCZOS", "ncols", + "nostatic", "phash", "Popover", "preimport", From 9c1abcfda0d463e2211abcc3f2d2016e11f02ea9 Mon Sep 17 00:00:00 2001 From: Aroy-Art Date: Tue, 7 May 2024 23:08:08 +0200 Subject: [PATCH 2/3] Add: place holder profile banner image --- .../img/placeholder/no-banner-1500x500.png | Bin 0 -> 216971 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 archivist/static/img/placeholder/no-banner-1500x500.png diff --git a/archivist/static/img/placeholder/no-banner-1500x500.png b/archivist/static/img/placeholder/no-banner-1500x500.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0881f05dd5165212d197547b8ac1b9c791d14c GIT binary patch literal 216971 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
>__hM}bZ*t1SCG0T)>q3fTsYBVr`?Ec@zDxfSS zvkC0AioQT`V`{LZv#xxXrBG@xNs54!dZSn{Hn5QlEszjl!4hoh>dUl_iUL+>)C(Xf z=@&}^G0p+qA?r)(k>GhZ8fBekX1gmn2Z1u-z=m-=8JZ+jEmi>mDR90AVC=_yi{=yx zefk1C1i{j6N@qZil#Fata8*h|Z#b~pL!p=-HpL)PQ!MFB`UW_$yp@fGWUW=XwIpTa zIVaJDA!4IG_xDb+{vis6`y>L;;o*QQ6UWJYL&||c!ehgeYoqiRlBpYk>Gzse{#43= zfsm5nTeoeVE2Wq~zef&L+Q2!n+gHV;AhFR`TG};3q#+p6ppg))y#b>P9TBym@SNsU z?Q>AxFJc;`3APtZ_H;O|V!GSVC`%qZB-#6dG@zzifW3PHNR6!7 zUXUhaUWU?GRy5;40Pdw>svmy{hbLLw^NQ-)2e8RKrT%PaVO zzK#48@LOT%TSq+4$$2Gz>{loFE&3LB0oqPM;qEw6Xh`wEl!ipGvA^ ztzLlb`Ez5kK?df=R(jq97JEuW1nAD%<%R)vtaWvpCXOWxy(9*#mNt+qcdK>X-Fb`* z5sF&VHjQlhaZckwGglP5=S|ivj>&8_1|ERwz&OGDd1gTf83z){Z4j_&bR19vrC8UB zy=5M@io3;7Edjc>rDde{dZ|>BOPC~IAx%{0fbLS~eU7e--Z0Y!E!gfEc+bBpHlljP z+6U0ss>TpjEco`UT6=G-c1ESYOl+Q|43-NZ5nHBk)g;*vny21e%>*V~@N2Ll9>m{KvYs+n+R$*9*SC;oFesU@Qg@#LD)ny*Du1$q z(Vj=56Yy0P=?yrY`Y&+5oYFv$y=*x4G^bz&*gpS$DZzHqO-wbD+Wy=6wcN3i+R5OA z=Sse5?AQR{w*Ja^%p&F4iD`m%-H!L=-DQM8WivW7633=*92y=0CRy9(R zlT1La(6tiziqtS?LwHa|qwXYR@Vd}CN3n+}qx94w5IKfFzez@hLaZ>8a9^3^1>+iU zF8_1BK342^Le`1I#GEbyOYa?ICc7|94WCc4v9%ElcT@QB5U}J-nJeH>TK7;!7g15? zaUO)#vMHu#{J0Qgu-!@qZ?;us;HgCns7N2!U!CIGwv-+j80*Q~FvWa6u7p%h1rR#nK;f-#ns zHD_SA19X)9Z#Zw#=bGlMb0{J~OHQwd32Hqr8WZNkylR|!i^PQSSP&OsX&F>&HW;>J zCS9SD_s+g6Mo5TS$gz{4G2z`Vlv{#?ecxJPI5Tq(gkpBHCqHR;Kym!Th3a*p_8qgb zQktgD&lu(>9KE1BuIp#Yk=`5tu`mr%<295eW7r_Ii%!wD&}bgD+s9+qbr#5cL&U8jzH{O#We-Gx-(a=Rv%JC?@f>F*N=?vxmb6S8Xv#)> zC_wiTh!W$r*_tlvy3-t>sn}?9mtF(!CHM{s`kD{yS6q9d0bnByC<_{3Kw)q^6Ku~v z+|q3a{n`y9&U}v`Gcv8=Ms;pj8)@`evXvxggvy{x7jPSU?+*t@aAu=UGX70shhc~X z?mS>LSjNtH9cUZxRUd<0Ty#HYC%%yuCY!?al8te}`nZF+;m3x`=~4uO{y;blxB$veA##*_Hg6%K^ zY;UxR^F)v=cBzRIX)SkcCS6LqaPyKB6K&q;uAD&O=4QX&g{<8H3g$c2FkpXVTkzg3 zBpq1xL7Q%4@wWu^1P8AQKLS(4O(|^!MiF;dHUPw=UeG!>NZMSql$9xf3Y!}aTDlIR zE<1LyfeB%BJLG90MxfIHh7dO(O}|(s0R)CTR3j27Ok8tQP5SSEAWulrga_TB%HhiM zQQm*JWDrG8xnM(3)C>26 zk^1dv8ZA%gG05&^tH5LsIPc}sUrGX8)T`=V=(R4wFR{Ed5~QiDJ7E_ z?uoG_1KxOy$FA%y$~7wiu89qSjnEYKN~tL7xL7j07u!g6_YBLZ2TEDCux3*zjo&0I z;}Sv?V{@siFW6xjn9qPa&H&u8U94dPw4jYR-=!unW%D35Lo~TL;Xrpnc9Qq<5Rr)% zz;%l3w9rVPfU9Lgv|#of*q|O{_c%PoqC6#NtWKJx{46wz0}Ya)lFn*K$z<6UtTwRz zuIJ$FwjnR0rDZBzVg(q9jZJE;L&5J7N)4fDL0V!4pur}k8KAoakR)(Zz(j)qg?@(B z5LWNZy|DlcMg3AUb)nGT6>=EW*Q+%|I)N6&yh#P40AGDkmNh6Xv!+M_C)i*Rara+N zaxCvYU&agd0PcANJ+az_d{nF-6EJQQyNGN&!wI;GP1QVtNf9gpn3!ZzYa?*vHgxn5*8~)B?&BDcXtGG-d96py?uEmy&-&uLY(~j{ms21N zqG$h;#ywGj?X`e$Jq=QUZxXZ??@}?$dM199nY5Hnkzgb>KzCp!bh*FHyiZ~-fXeTp zU}_6cQnK*5*k8xxYnc=_rUYb6A_=?~j7Y>96v#}Yd_7Ike8Q}24k)GZj9_*fKYb$g z+Y?w1<$ahf=c#DuGvnH8v`_eR=euJujbdYr0YMg(FphYm_KryL2$30BNhcZ91Tf1W zNYaEsmO=mtxEsxIS5p8bNIh$Rq@iD^!O<)Wgu&Di#1w~bG;}P>l$$|$vd9X?FE>8q zooYow(E`ntS0bs~z92V9pn3oxJs35F262#k&=ff4;le(Op+qpOcNVCFPZ6e znk2?41_>%BJ=Mi&*$lAfsoF3ZO`@Jjlerl06L;@3=uRH2=V@D!+xS12wa8KCAw4&G zDS_DZ=}K|j=th!$5dv5U)@=iD*sGFM=SNIz5Dj_5*Ex{RN-(~Nhe@6zHv!|+x@)jZ z<5yBwQ2OmaJvCJw6L`uOX2ygh8MjzWP<>=E2H8_f?k+K5JO(Fbl2lX@YRc}FV!Fp% ziNu;C&`EB!Yf1T1dACat9*bC$YDjGCgA!y{5Hl4Rdx<|&*`w0&qgB?-(=;Pcd+ACx z4VnXnFBI$+`5A2Y&f57(YxGBVPYLAS#$6g7HkB!k z#cFH>i_os>6lc1j)_c#K^K? zbiK2J6-Vrc(Y|eHHuN?)i|reI#u<$%0gNct|9r5$ni8qN_MRyq8JD17Oac`;&GL0f zlp|Paytm>c8&NZprVn_>mLx<4y0@jb7<|`-62gFZivymgRuw?H>6!dB5Q=tgyBVF| zbKEZ^bJ`nmPB?F&WGE^DYGhDdX`V}SQP4*ADqsj=0~f6rePE&)YG}`8Aj4VR2WjTy z-D4sMWgFL$s+@q=E;m~Blp^a7C;uHN815!%Mk7?9Qj#;Ao5SJ4U*Kksh=D1`V#OJ) zb!#{?{%Y%OV(U2_~$j~Z*Mz_ulr3KgiX^Qwgk@Ls|~BR)V$=0;7nL2i{(OMXwS zMWH(`jV%d^_g6If5trZ3UM8vzdJ-m^#!?NcO4czJP;mwvsm?E<@qH51hq9*^!AUF( zRQ1Fd1bIGyIDrqsm=G$dj+E1T=}Hvl+gZ9Yt|iN?bTq<$%Kc8`K>J9#f;g#*(RdX_ zeTaGr+GdhVq3140F6G3unOQ@S(n*)EK?qukW{I>3f|g_ys(nF$&&ZQcCi{F~)@nCm zBB;DqFxHi6x>*uDyX@_gVi!Vt(sN!+sAo3h8lD*wT5G>ICd`R>edMhXYu|0bb}T{n zT;HXpn`k^!3A&5DP401`-lIj*ebUqIYpKS|I8(Ld2x@6JF>+5;Gf9B=r4*ecvld@l znGJm5hJokp8VZL2?nS2*tE)x|Z1=&g3o|gqk~f8wxJc>1D^CHNSl%5 zr%@@-7K`Iiv0ags)G>D|jn_SN=M)V~ofs?MfX}7_lf^UMgSn)Mnu|e3!YClcUBxbY zP9TqR<|0BTg&+VV$a>J)L~)o7X9L__=nl2lOa&Zrli*^4#ku7D=c{yzvL zbcd;6;L-4PBS+R7ot}ZF=P=yacOFoImF8;+9xAZCl*K5)_6ESn*FtNLmdsr(jLeRQ zDiO0(nLZ)TFpI;|g|TNWkQP~k%SHtT6bvR~WkH@L$sPF5Lt*B%+(m3QNh%`xiP>1d z*#yAbP#7oU#}ub2Q}#6Tu$Ds5U^`-6D6vR^o+!x-%0y%VTU_U)+0M^d5ORELMP{0c zP4lK7+fqv?il{($_5Mr%$Xt$qCdmSYDY^jO*zmVd$P0`&n2z#Oh@xf@FD_%b*bmYqA|!Tu zL5K)%fmk}mq}YT|%F?w=x0iVs#6llB{u@baqoT-L1Xd+E4GgGtl zXHkZ5vauj=YGzL80G{q?=Z3@W~AsP`*w5b@+Uu z#)3G((lPgv{tGog33c3+e>#=slEpdH`49@@YAmK48d7~?QYxoBnJsF8_1lmq1p9y| zW8%n5B2<}3=!vqSDNV4TB>Vy(FHGJ2>&4F_=q|}c{<#R&nX<-vvs%*GmlhKSeQ7+l8VXfNxI!jr3bS%z zW;qg8pu1mN5^P77_|tN(9610R`CjkWq-6n!r!X+8Y+08G)pgQctIp=?s-(a z9%z4+;#k>T7DAu?7B-T5QtbAU;Vz86hy)9DyxGQMYXrNr6)I1GOk**6BL&G87Nf(^ zac~Qi%aSBj1B<26qWZT{dcj=yL#30Nt5L#54CWUj11||=Zw4A_FzivN>bhWR0%O%n z%LEbkz)Uk~uquv3$1%?EH5*37o%_-B`nYq`k(2?cwM2Q$8U(n|U}i$WZf(NtqWGiP zCO2y_1skU4UP~&-j(L;8*#37OtkB~r(c>OM}wJ~!~G>NB}Q$!-j>){UNK5*^TxH{?8AZ% z4s1$^bxnfFiJ)UApr|v~2e!ASu~3Y>N`{ZtbC*(CV$~H4T;6$%M^f_Mo0=xV+*ktk z^R=3A4(MKk|4@SOh!u3AfQ-4Lv)&?Bp695i88TUd8B&T!KuNFrbW4~GEj*LRH{3LnH)kIY%Loy zax+FHm5EiX%pb)_QyF#D-{(8^v0*QAXzw?L5lqkZo|NB8PnLN`(66GXV`0kP0aFZ@Yp;DjkEXiYb)29hXdV>hKXyYRoE`9QJqNhhf&RZ8WEX$D|ZXLk;} zB*oWtnc1Fo@&~;K{XVqs3#oENGI8560UPMqdSXIDLJM&O+4m4Uishw1$xLCThuE4d znpZE+a^|8Q71nmWF;CT{9Cw>%&?-*?%`5sBc-t%eGAb>H^f>{6@e`6U5pGc%W%S(QepRM#{n(0YtN~;TY&Jgs(#$Uvi>L@sB_O0mpGC0^V!Rcxt>50(+*|v}EKO8_ zkk9c96V(!Q=M7i$#7J^LNPJyf8|u~m9k@GhLbC@7Km!{KTTeeUSnYt#_0W=((NiW+ znWAC=I`kINST_dNG~`D`8nh%4_hmQD>%4+QVZ+QWBA(&R8mge>yX3XTq$8Y~Q=SQL zeB36{kYZ_VqhxnxSc(?%BMFQxt{B!=5KDklj7t)>`%yYGEBRTtJ}E{w6ByE5 z|IoNsK;0jUfbBSo)+usZ1-i>IakUXupE5{`(NGS8-mc>2ASobGX~Cn&j%ik-ZyqSp z1Gj*&frEHxBmn3UI*tqq#u*rh@Moi6jkn3k_jJ86T-u_7ZGO6hvxw@$@XP^d@i;JZUA~<&h<;<9_t*9<6gVw%~Z1XjW z$<0wkT*)~BiF3k)1RFiO*tdwp#UtI2>5B={D|JXr$hq9?m>}~+6%%ksOemAW5o+H< z;dlO^WVaeXw(x&aQb{xrL@x@Bet?~3VCFO<&NOn1p1?F~f}NT_LNnqV!AfUsBTy;3 z^8ukwT6_-)kL3M8o74^H)<}SyZ{p%zj2rC>Gqf@)rEk;s|@?LiNVDuB0 zcHfqNhtyq9#>;VPIWwk|12>85Ay@+bEPAlr1__B+Bgz+Oe*u=ioLNSPai3xWnqp6$@N$_AW1xj+?R@Gs>PB(Qt2ZXQd9sR^5T&io!6yM zVM>ez!ztaP3D}}?J@j2&)DFkXZbHof*_E`GXyhqCq`EKq@0EqX_IXAlDQ8s@TZME1 zl)e^HVvF*~Y>0mbBmieW~IdNw%1L$XJL< zqAg`)B+Y+G>|xcU0fT>(gz-ptGK7&8&um4X!*u~0@Vu)s?v0Uq&wHIEoe&kPf(%%pM$>GySiA?BC!tu3dzqrqku*rDWhTHi7dY@gR4Xtn~1zoq@kD^6x*roy)KO@aYMwa_{?9#x-rGbg-G?`oZ$D{z=lc|(oU`ricH3DSCh%IPC zDcRwdQzJopI3!>;YH}G237um*L^a|pwGaSglZ`<6e}>020R#xrEW>+hHfmx^8-lZm z?yQaMgHlspCA8ECv&PYR1vDxL{T?6eUxK4BKl_i1g zMft3l?sCMtM`DWsj|AqLs_6&{BqX&Gs+xE$w-?UYoe_J0cAN>clVD)tjBaq{>4FtM zIJ~kUMNH6n(}WFA#q-eEJLQfNya=^sX}AZX*1Ibj<)^!{>qha8RdTy|-;6?hOEo+iwJ+v59O>(Ny{v^y#=4=G0Q-np*OP zSw0SXuA6A?Rcp6y$VllK14iQ(MtVkw936DyNyZM6jXPk2(`2xobiq?|P5q4YT(P9( z0aNKBZcNVSg!^S^T_bnke}f z{t+dsTtM~vF;C2dJ|%ijj(DM?ocRv&;dQFF{gQTCJi(kTv=UR z?M;B@mlQY$G@n;>;h^uAqkU{}#GoX9BUNu9C*Tv~B_90GP5$P21!bW%2JPn>7C^SE3v7N8r`~Bd}aL@>&^cXv&Y7S#22n$ z`Cg2Ah90C(%ncAa#U;SlN4M^il--187&Srn#2P7>tmOlkX_8;al3)*0OuSqH9pX?b z4*lUiOaMr5LeT5GTirzwEH?$VS9-0b!C9TXE>%vZk-YVrs5U_NLa)8bGodsI#7gd? z*Jlbz8L?2MOHOMC1=j^2QcSU4op}seu4cbbOom!13XaMcDdxn&?uVA*Or(P zK|SR|!bq*WzVmJxTuUsQ3AAHUCzvroGyCSn5=|4=Es2C496HB0}$`=YlVwrPf6Hpy5frJ1i$*fIE5yUU0 zh5_<9_W-;10EqREoSd}WH1!jWNs1@M2xK8G#Cam4H2-O=?`!r~u*Jk)T0$hipX7l- zv7v%d9SEZtwY$DumR2-!su>ys(FKK5%gIP@l%Ct5AtzIsDmQQ93Ll<{Du}$P4=@(@ zWAA>}Xx#UJ#XVUSES;#a#(rQ)M(LN8DJ5mtNRoO;A62kzG-c+QZ$puvOMit)s`Dmn zZj9xyKGr!?mvq2oJc&vLHW2|VW%u(ch7@@U$VMQP^^N7}nE11n#1vmao*=S}6BJoEvkp6qmYgtkaezL&TUN$L;t}A4aEfBF3gTbm@hX80oo)0Z+LOMr7_&8}pM`w8mmB z0rrs0$#Su#?`DGoEzM~#9<~I)otppV!Z;34mP|BCG7(9}IjZa`e??BhOp?Sx%BG17 zP!jBPXW6a>0N#xy+AhCt0*eyRq>_6%23P>FgBS^_@qtTN*J}mcS;Mt1eyB*;g~XW1 z?UfmpVzg0FXj2Wq&j91s4cz2=zGs%-OJ!HQjyCCb8q}t|;x&vZWp!loZ2bFhQ#&>~xFx;Z{)qt^m@i^w zAWT$)vvU2m01#foSTvj$Z9=9M5jDvj|$cO*6%f{CawN%@m|plAw4rhAefK~xe- z9{-3_zc#-c(k80OurnE*_I0%-=*}Irf@!K5?F?EKpqK#HSPn(7y3+ImifIZj8w0t4 z@6DI3oK#9v0TFz+8Z5N7ykDT%lpP4S&$#uqUl61z&zMt&kAi_K=Mr+>>~du7n`3>0 zrSq&)=aCT%hiBxI2#pw^8v;6)5>0_#vqzX~rb`8*m8W0oMjS~W5!5lEG@tLeWvaN> zXCB=Wc;85(#xlV7URjxjPlnPUCTtp5t2kT6r-m1Z&eymB1d=E?F-1dg5-0CXMNE>C zF=<-P*L0oD)3!F7nOc^Vk$F{$8H(gk0PzWQ2W^NBf~iWG03al)Vxgn;nyIL%NVkT2 zWds{$#4~gA89=mXtYlU@vRr5Om?}sIGTvv<++yB;LvfcF?-Yquu3n_+W^QAGW;qyoz{fI=y1{}>38aZdn-vCR2_Q~jp2-E=^wFVm zQ)Na6sIIqru7jC7ec!OJ}|3bB;eriy>JmU40H!21>IzHX0sM%7)oTF zlu=WGIe|98V(s15zL};#aKZOWGxo#6uCB?{g$A%wJ_k+EywadX6mk^reMnET%@^6CJ0q5G|e>Q z;+2}s!MR{pVXW!9d2wDEA+gw@ZptNDF)#{nr(`u@Flay9&~%^-toD||4XCZ&gNVu) zP%_vHkiEDkT0nbMOwN*!$&*B&^_S<~FLmYL1l`s1a$ZMzoJa#b%e9) zSH<+9o{ob&u^87O>Oy>>hCB@ptIYn5HC!N58Q=8ltYNlg);N!oma&m*B8ke^gfTCh z(1c|oJUKN<|4=EXTmwjIpQH+Ss+vWusqiMrp0B!x=gIF4AfqBrDTkxhpg4*8Vu>9QN%ssPl6y>YdT}Xg!B&7i*Kraz1s&euqgQ{XAtS|RN z1@G4*3hDP*U|oC^$_OQH)7#CO4km81Se<^~Bu>)^9Ex)WmncobPr3cb z{YLjO$9EIYb0T4}SB5e^T_`5Nnqop-W3*%{8!-?1x>BQl`|bs{i*=xIR`!`d)b(=0 zL#(Rrg2a_oQ+f02mR8~pzw*bK;XVxi9tyh;MA`el5oaW1 zq3{nudgA{RzQ>#X7?~f(@AqBV02Wv;Ei(yP$sUk2fdw&w?c=cvI*QDKFd10)tSmFh zAA?qMGS}hM&=%|i>x14ZbgR|_?k)g!soQ8{(Ux{{qV~-me?9OH5i0L9p74v1X)Bw$yh3ih7I1uYrv@wbT7;v8!Y#N-(JH&33x9cDanB6ZxdiW zFay393|x3!we~UO$p^*wl*L*xrO;FO&jk?I3AQU=3DM*ZU=}w76I%-_(=RUgd?FTE zS#BKKcA{u3SXLW~wa>rp=l@(W{z%f(Ar+FgC7VM{Emg3#cn&lZ4MhyHb$n8P{4DQI zVeMcNcb72BG^I6zSzi>q4ss^JBNvmLZdx|!PWw#K67JhyVAkMBy;sZxXe)56ZXB0| z^jubZaj&cyY+o=2N{v>4V#)`!{xnz4MZ*!Ouwz37;^)0<(UiOq+xi+MNJRk;P-))R zAUjsmtb=l=L=KSb_Gvs?nHZ5j#du{*t{r5oO6M%gJb{*iqH;3HLN*kwn?Lg0YY>S+ zEUZB+Wu|ItiH3}%uqh%`Efb-wY)~+#<=={t&5l`#4zBc02av2Q+}u+5(KR0N6M(%>~=%y}v%Q_455~HR%Xp9Nm`ef@Vx*MG!hnVa z$F+7&mL7rKZn9icYW!vLLSnn8?-A!W)pV|Qb0jL;b)lw9`IFyst!BZ42EHp<2Nq;+ z`00=a>Sca|^0lHC9)Qq_mn1IY##TvEDD{zNX(ZDeCMn`9YDBT0NOrr_K(|U>hSvy1 z$rzi-W$qMs`>jdLmGb1L^*%Sr0}bLZG6uoD+!!R!Y^OK{9b~<-2L-g4y6cY#(&J;z zF#+bs1l)=-VLTQJpvp_a2%=S%aKpmmpa$D>BT(ctv-Q=77kq1nXKBs9mX`RM?(bje zx~~5laZUT)fY-pqUQaUIjg*sd0cWDV-IBod<<=co-?a}r6S zK_E;~MF5uLw^?2W+aStP!LSWEB&by;uU1VJNVB?>=(`QdYqew4?n~}F`J6HBhkQyX}%KGooR z0l)(k+O)Lh+nIkC6-;|<$zed_UTJ}d{l=&>0mM>LV-T}l01AoiAQ|oxZU#;YcDt0q zkgWCqw0FK(Ty=4&>jT`E+g`(EzX~?ug9V{?nyNXgO@j(HyDn_00PgF8Stp%6D%{i_ z=is;yn_H7$h>Fq75wJAGO+PisO9sqOV;EjfaQf`)yBJIpp;@7T zNQ&5opt9Nt)Y>{Q@BY?mBq|boY(Q9wooeH>DG_1Z$;ceY47rmElhblf!&GAGEU`2- z=F$`kEJOaxB`TWVxhX^Na+@}f!%0q|EF_!KO;Zt?CJsT{q_Gh}%T-i+1EEug|WP`kn z1bTq28~dWlBVGIahQHNL%FW+prvje?PFpok=8u`bAB>mD1iGvL#rfCJu%ed)2unK3 z6r++ga{k_{+o^kVZ8>|>dCnmeY-h3p=TDuqV2s&ipA;Nxm^JGhyOFbAydPNNoQ?3 znF$HI5YB3o56SbU#@@V{Gq0Xag-D@vooLFL8iXP-1C%Xda=P-j#{`ks)R>?@WCnRY@f93<$s^d#@kl^-L>y$M(p9zf{h^-AKk+x=-qZfIk3F?V zRIFE(!e^zOWyGf)QdJUW>p|KY+6Ys<7mnQO%iLuoX_<{jA2=~XWPNK$q2nIwcY>VJ z__HRd3}$6{n{}K=OkdhwO{FJDO+tocWGbljRg<)@-H#m_bI)}!vH;C6MmrX4rdY$l zIIMx~Wn}MSZ->3c8d;=+u@ELVc5Y4n8VRlyjHMNPZM8<9O~PqBQDg!r87ir9u{KF` zNb0LzQ$65H(<8No@9Zi*Ocv--x@0H)3M1hX;M6~CL3eb2=cMUwl1Y_J$d28P?)l>+ zRfCQLa(q5tOMV`~MSydF;t^Zd0)Ti3mV3?6a{ywx8EhZf?M}D7OErvAG74%s85x$f zYQ^GrO#0gQUN~C0D_5)?g{MD;-4Ek~Gk-M=x#XE-qaoP@x~FkGd)7id9KFVaED}6S z(mt?L+;05ztgq2Fc|vIMug;69#j^H&oBx|yvR%Jp!_Kz5JShn-cCH#6FpKCOfb3TQ z?Y$E>OUV4>Ub!FWzKDMZW`6UePo5iz3uDVU-mUZ9vkdqJxPBDhW{`c=ELmOhBN>h~ z0b9A{_9x?iv#IyZ_uEsAPeNL-XQNC6Cg~BC2D;N8uH*$}f0krWS`(Y6J+-_aeRIx% z?r4n-2f#fg7b+gb9{>O#07*naR3ls*SXPK=`bg0Cn6lW7`6;N8t~Fp!rr@5Nz*o*i z+$`We$bU8sb~peddl zNl}6QzH2k9!BEmoz9cjGGRjRE&>h|7_BrX6A|E#r6YzHzZ)Z?ltrcT5tx=^k?Nh>1zEWB#&y1!Bg%sSJ^eX)z^WT?UX-#N#4{5Ri%64 z*nFaghlQ5<*zl9?ZBc_5*9demYx+3~-6tbmlVIV;gL3+e@rxwsj$-C**_b&qa84Y- z8kaAwt@TCm^I;Tg3YlD_P3Hso3@EJ;SefvR=*j2BX78EIW~&?hysb9{_1e|AhcFW= zRQl+enBa4Td&h)ybxcTq8xvyv40H$2a#yh3*8~YY(Q^XZr=Z~v|6|zUI7u7Ak+Ns5%|4v9&15(Jecx0 z0-y#)`&A&K0}#_i!^iUg;+oyw*`wK;IIEirone^#>U!_i&+UyqTZrJE zyf$~^eu-BIGwRnc-SL#uG?cu=UJW1w^S!XtcAt!)*R1w`mXNsv=x$Bux|#IB$>=|J zzTr3)>OYHja6srjFg;x~OxD*jEevVl5R7lzGiNo;Ws5x;-Y(z-+l4}ZAmT8lfsX25l{5REj zXC3DDmXw&+f9x`EJ!)_dO}jJ@8CC|%%U9ByDqD%LdGZgJp!?J)!z-E`7aRC+AeD1f zH2>8~3a1z~cw`u+?*zKz=yx$7?-yS`pO@tC0!>=`R%%o@xFi*0txbHA zn3^PA=6wqmn56Vrg2onWc+>0hbU_pkv=Nyn+FpgP)QUY}B&dzxM(l?sGeZ$64`4Ux z9&e370iE2gV7`^yr_OQV7>BvM-lDjjy?l!+$$;_I@n z%QM_Zt-oI@(H|EZ5LM$88K}cv%&x$<IUu`CD-Oeuv3fz)5@f2g|E zDXY9g&z}m#o@~sr#DG3&lona-<11vD76ATPR{NvC_8UNV z0Y>dDapY^!r6i`v2UE-gv`&#fiFf}JYLGT|>9B{3o&3|+acL$x0Y`K0(9igyUJV^6bOkFWEz?%b zzG>cDuQB?)-hH||*p3535f2(s4~)bH;Gy~}yYoQugJ%3%&+{#HhI_^3n~X!%P_87> zO|{U|=Gu(mBjl2_~lU|SJDA>Jki2YtFfFUepbdowA|}RbY-}2rG7nwnw9Y-I$eliq8jVr zK@N-)v;*2Vm6sWr5AA?YD%nt3SziWhuK?E^{BF5-RSPZ|UAb1o2onmy*iq{9u^sl* z&B)*)sQy&o`YoV)2f#Tw+8a%wy%7wxUWc8>4FSOvkkDUaeeF1QF{{1ONbC2X+Kgfn z#Jv@alVRGC#E8*m^+n+y6;0hB$Rw1#z?pU3dmfGR9&-Cso{0sZ2G+ZiUKpzFF1Ikz zM&YNoc$&=xM{o%}3<+mgCh1rfWBQ(d0uW7X8rbb3)8OS~Qa6v%_XX^%nRuy{0=@FF}jSmV*9^S5))PEaWR|Mq{g#j@dg9_!VI@h{t_uoI-+p+ z`6Hk`UBzmD2-to#=zh?2Oez@yC)M-vU@Z15(=>I8sm2JN zUK;_gz@7^Xr?Z7N=lfox#d93F=A(3c_bf+ zMo{nZjI^@bbWN@CDti>S_O^ld)%>~UOd|1@W*LqtDlMmE1lT*@;9f$~h2q`(vWk{5OVn_V>AM~QF|PoQ|b7c+d3GzN19m~p=9y|tU2%AblfYT zZb@f!25&s|jI6X!CvsXIU9TtS+htN&_(^{7FEQaDm%6IK80_|!LZL=-70VxGLtxg} zWIT>Vj?d`0kB{e-koj}K{dZ~q|FStG(AOql({V4UOE5H+df8Lnp#{LqhXJA%i7oEb zB)n_6e;;}~$;;%TTJ8b1$9mj89ssRwq@zZuo6&9e(>&rcP?)8~x}*P7*2BKDo;!N^ znOg~@&L7?;Vm(PI3XDoZlDvdKNk8#Kfai@v6X>2y+kunTLdnuzs z1^ppX1SmV+*)6g4!UNq-QM+)#lYDzAe>QZ zGI9)BFz(j$Yu~vccx0|~w;T3XlGQOT6bGtHF+0lUtfeF5`v6Ql1qI{5;_MfnE=(U6 zkg9+*L{kH*657U-B-&*7CIitZEK?vLES)$;@$=p{iBDn@%f(|lGO?RAzK=lG>k7l< zr#{?0k`_SlFR|Kx3c9BQUH7zNXIgF`I!)R!=6L}Ar}xP@7Vp?NxfW!H18^kyhO*>O zGHD~e5~q#K2)Epc3@X>)!RiLUGRV~OCgfThxzlXBlIn+cCfr#diXOy^s!#2yi*zH8)z%+d~Q zs+xrnFJOJnz1f#HGBT`>2ELm~K@eFimxo;1g9}6QG`TC@E=M)SfkQp_F%KG;+5^aT zZGOGXEfz6zZYKOvocvKdHM1v!p8F*Nhi|sv4X>Zc>oZG$W?)lPX$o%Lz!^F*5L_I_ zG=l9c4_bD^BsEfe=`x`TV2DAMH7(!oNGe|E#U8iExwcip#{sEc~^cP5McWifcvZbq1||c1D{A^ zG}gm+f>sOp8tk^r2hzZDmvE6A7R4P#W)W9bOFam6GuaXO*g3K83(|DmQEQYsu-iR5 z%Q6@=xRJ>h8CEnInO-Pz#!^;=7%Wq>mH8vCzzZoh0aS0BrBalwbbRPuzMY==ezPDk zrokIXO+0I?Y0P#?j@r0k&Ycy}^c*s$VHrAjo&il-N-UX^VV*SWFve(0SzW#3qVO3L zB+->!Nz9}}wz~(Pj)3(WK zUFvGH>~@V!c`6o7e8Mt-?J^Fn#iG+6eTjR2jAL*Z7y9l5!a??Z)V+_sVfI z=%?4&d~CpjbRx@w)NuAHow4RnXbTJiZ{%d0Ob*-!a`!;yQ7q-xxg=$|CpMp~`4e!B z*K(hF7Ga+}XrMVzJ=bDuCe8PDjA!~cf6Dz$l1IBR3vfnk?|#y4m-oja4;leB8w<>h zf0kTxHvAvv%^WXxYx&9i;k}c+M9mTZL)xVUVQ%n zgnsMr)eX~g=VVn9jJY1aeBJwxuU9q%lESg4dEe;1aWah?c}(PtEGxrxH3L<-2zlcN zF(Ii8-MwSN*&Hgs_7}mTj4d|j`(*BH!FF(YhZwmxc&U*T(0Fj+?D-JubpiJ@6c^Sd zx9KAnH5keDfLgNLbtJWZOw3caGP_2XlEOeW*4+VHVKrNshRuNP*5Ip8W}rS22fe*_ z7r8iWMPlh)N1O`8!Gb-FuH`V*;$A=dMu6{)52_)9WTkt76ltX#@RTheVIVKe^;35Du8ld|}Q?N^>dm1KWhP%beHo$!59Rt|& zz0oD@?CrtYyg2n>;O_m;$V$a)`=gIkmWp?83{;5 zjCMNI$sm<<+>xaWI!78v>zj%vlQ4~DTjQaNX#rlO69?!=&j z>ORj*_Zn;Hx-qjfYtE+Lge=#Pi_3px^j!++s%J`QK573!L8H@mLu2Hb#(`5>OU#%A z-wj(Fj0dlZfpJS(?e{TJA8gDHlld#)>+2c2u+VzHAd7M7KD_1nIw=_wpQIsp>g=pF zyIsMnsGH5}D49MGm)W(*DK0pcBlxUsDoe zLeg(<@g&!?1qghvq^YKl3_YgS{ei?~XrZdrbZqRLtx0vmw2I3I&}vIB^I%*wy6>0+ z-w+4*W{xAbvigneYU$^bn-{={<&{U>#qOi5vEmIJNks#)LhELUaT| zWwp!Hvd^3T3EYzSdv2elbRF=Xj&f_Cv*1B4y*_sqvwN3EuF~D6=Z?-NYX;Q`4?NqW?sV4dT{pV|_vQS4erQa<*N+LY<~w4*qbBY4 z0`7hjKzEC7>~`~L?DxzE@W^s!Ev09ERB{b*@A(lK_plBs!f{c(x>iry$S|)dKT!ut zEP?k$F))Hq6Z72^1+HOnAC}Ecj9m*n{YVz$-|j=J-#0Y_H>=;C7v2)|0y^WtePFjs zvSubS-tJ8O*J6JtN9_wNd-vkL8gisV&|QCvW8TYu?LKips2DmI(i&}Y)}=AENP=eX z#I@6=y32BJSxt8rpN{UI={CI73?5D{>xb~HK>OLf!&m(r`w(Cq_YOgjqnP(^aqjG% zgacDmya4>!od?PcgiYg9=J<5lj4WT5yn@L!PUr}-A4^Fr)xi6+HHXm1KEpgG@UQ#j zni!GJY`l2fys1AFh_VGf*rCkI~a57`Ijz|bkTziEG@s~h<*k>fw|9)r0~qI`&b zSDI7|#h{ab?Y6#y%}k7GzS*VttbV(d;4@Q!cLBG~oHs57y#aWi&YcUSf%CaG+z@0^-lntlWW*u)*fX*OLg0Qv!^gKO98E&wUKGxoB3pC zbX zvovCu^%;!4;*5F)p#3oR-Bw&* z3xcd;-fUv`W0d2Z7W=`qov-Tv{&wA40@63uzddD+OU!N;aI5WA^D~PzDeaBFq(Byv z7UbDumyp57oSBzm#42|~JOoJpEr+{fGvUs_J8+z-*QmzHN=T>41}8?arC=63_OqnirU_E;^4fI zyaXKJJVRf zpQ`j|^`qE?@M#{@#9`z4W?pgOI^8uU!2897j|bb$IX`-Jwc0LscDv06N2yTp4V=9s zV!bWkF5AHt{4{pBH_3%ufhaakDrR$8K(c1eesL5e$nXHD=4>`*iuUytK%fwLE2RqJi_;h;LuY&fQ^30xoyWkt zO)_V8#{zt}bu1i~Qj5(0d?s^gW@M7Yzym<>#%9+~uPc~>Vg%c>(L>&>31J@D?Q?wE zomr~t{S`M3{Yf#wvJ^Q7IcOLyS$23;xL(#y*L->R2N4ZXk?J$WXHU|TYCIzsgnKhe z-I8w->mTs7Bgtfmc=GCRTrdZZ0mRk4kzN;Qzw%5uS6m;)y&GcQ*|-OAB@T5kosiN6 zCY}FGk4-i1u%AF9(QGz0F;StiM(u>4=prZeC+M?$W+2EZVXY*vB~v@_RH5s^!BYG@AU_5 z1g>wX%gm(0I>~^VKL2$Ne3btf&{)oq+j9H!F%%9ouU|69KfK4}HN3|?rd}sqnjtI5 z-UtgP0^jo>+aUOb1=~GIfeln0xb*-W;sVKKj7JyqmL5mFF~m92fCb|(1L@Z#w%1S4 zT{As*+|*Y&#VQ|4HJxbiOJ0pKF$ikNN_&PRXSOR7Hd7}+Z~oe?o1*6lZj zn-=WSq4ICTZdbb)bY{-#5oqI4D1dwf;O<%OJR-V71EBV5np*ah+rI@kN4Mz+bcZJH z&^nB56o^6hc0eM5VIV>f5F0Djj{q$RaNB5<%FKt&Xd`6$6N&b{Q5F-C|U0q{7n2Z*w{TtBk z&j;?EgBam~_jT@eh1$iLM${{SCVo`C=fKUgrfRwGjo~if<;G1Z>|ka?vMBbPG=`E{ zYDuT2Z=9Q1Zadb@1O!a`|3V}0k^5tnS31!6IJd_i?~h-4et&olUvrO*ui@l)#S$UP zS~t>Gr@Zjx%4(XK6sYQ8`{;jTjZ*K;ZvThZ>SErqk}^4W_TbXf^q;}SpPy0JP0xue zj!5NEzQkS=wN}pre)kC-%;tXL^R25aPz~5{DC={CO~g;Jt`spL*3YphyYIS8UpGtD ztL~;>%m9ByJ)%7STq<-FEDyqWMHwSeJjLzXA{-> z9TmvOV7SNnA)wW@k%irE7^L|~N+ylWQ3GZ%_+C&ocePL)lO;VYH9ywE{2G`csx8e*VV$}b8iH)-vELfu@BFIAh*T53&HF{<$hbN^B>d3 zGjvv{fbESr+8!tNzB#p+1)vi+4zNY&rsEm7F3U( zm;eAE07*naR1R*9*SSYjjRFT6_*3`KcV(DPXw7iR zcOrc?GaQ~mRFnEkapqU|$kF~7@*jJ1UhC5I=g;ry?y<|SA#}rGAyXMsd6ARJ+6=Tc zpzd*_-OjkhKIpf5Pq~yHPF6U4t!~R(V3@R?&YmBV1+J~TZ_mZyy7Orzg(K$-KjoGO z*E4$GNmgcO!e_#MKJ`iF`q8>CkoHNFF|PZ_O3M_ORTl0Z6VBECQTM+M7B%U%Ya>vY zG|@)hDi9l)1MncMrN{f8x~?%%sz zt1AnqLssAs0KeGkc$V9Abs6icid!Tx9+>b>YzOg`=nX+TeUp_1v5=CnMyXv!rm@?V z;f`h``Xgo8R&iMh*r_-=U?%0;bF-aqS@H|7Sbn0GT|cK}`- z#k%q1!}Epgib9fPAbEzy96fP^Fk1~$(+o1B&b?@44bp0Cheo>{i-H;b6@+KG#$)dG z6EneA&EW`a?+uY=5KoiJ4bYN$Z_oYXsY}aH%xx1jb)PtVtfa3xIVgLh2C6-GLIi1Z zqY1%J@cJF?j|phIGGBR%{qd-K?26bonho|CHOla*wmUemJvp$wbkCdJG26?)B>gq$ z!Ms-P)wwcnS;?6k>4_gs@clc)cy%tm&L6HIy(DlXgC>1diBOGz0*&wq>~jO`!_blY zPGTTT3Y#ZMB|GGfJE@+#{Ov|%A!0(Tt8Qgau5#M#0G&hw2U0R!yWMzo{aOR?&DQB1 zo`eO!1$5tAfU9FYJAv&r`0=Jf0xjG+Adi*7ML)y8J7U~H86GV z{KUm&EMX3&yA4vkTz# zVBb!=;a)GIVXhbMg#hwMbgrPg0+|iS;_D7#_6){Mp238Amu*#AX4BYIk@v5}8t-ii zhm8u^r{eGqyZnLAI-72YdkzG#`M|lDmu^UGuZ?wAO(&S|Gy1!I0@WHhOH+_11+$ZE zU@$_*$;doYWUZLlUS&j@fjNV?ILPt+X$^TUP7L7SmB`7<-X~r%l%{YJYq>W)_nkD| zOEw=*sAlvsGS3svjo9#g#+@3mDkU=v_q|x6hVP+ObNDGhrz0TrANR*cfolJFkCEA_ zdfy14Dl@QN>$;jlHD8JLv29^SD7h1QsZh?PdUNovb&{RiYG3iC8%CQrtD(SNsr`85a^PbofFc~U$&n}sgzz({Tyv#-0`f#%j4!Lbj(bt5pPQ zph|{>sVDgYj8ed31J&*xp803X_g)jgVtsCqTY&At8a=5=sx1_!bj+EgekWpIg}`=U zLRhJWm6q0!D6JvF0NH=>#A5~oF|jHmt90Yr+}Q4rMX^0CrDfV;s#eo-=Mm`A!7#P~ zL#vnl8HLkSd>$|Z?T96u0Wk3v-S)E>;Tg8)nWX+v$*xiUaK<_6DWQ)sK6NRXWJjTk zm$~9*;9h*u_-6&BHq!6*>3r!A61LqlEzeRqJH|~#*kEg>ucFSuh z5)9&dvxz^~Y3nk4BFiUw$qLG<389@}R(87>r9RnY;1BZciSY7I`Sxum(>1yH@v(G} z+rzO#eedL|1z-5~XA)NU^~m{!0+5`q|q>u<&= zNxAC;bMu)f+z9-BTg`T=$3z`%28lCvZvc}>v4w3J`znQi_tcYeoqFhuzYn?Tt^qPN zA%z0~^BVore@Xh!11FC!fc+@6Gy}VSdp0Ji`LdKuVd-TriMuNpz?Z3=J3tM<#&$26t~Hy0ZSog51680~41k>_)O-@jsgM^lzAAv<;@0^X z6#)D7d+4&192|fg{}S_l9_yy-Yet`YQP}j`mEG=$3KFB-^o=PDjS(Tmq@w0uwupS@ zd>-I@-gY71dzZ{_)d; z!1iA_2V#r@)>jT0G$G=&9@OC5)5dhWF;xEa4wHL@h* zRF*RS-b*#->Ogz~Q`=p5c_Jpnay6e~oL0BJPwDWTh@+Iu0q7p}+|SnAG2GkRZURQq zGPz01l<&h(#(Oe@TzLZCMbBNNWx7tb*>D7Mg|tkp3xJkrBTF*2WoMM?%~A)M1}Q4O z6EX|7cZL=xW&czt#v%Kwu}J{%J|7x@DOb#VWWMg_ma4%i5K_>%8Gr|`u zAV2K>m<&|wwF3jXSNR48w7P7lG-9|&YkR4MDE0BG^<8yQ#YA~k`l1QJw6o-u(U5<| z^CZ@NUqk4wnF^57TbAG3PAYK)Uk7eyeaCre_5yZdrD~7pA5PeGOgHKcc=6bL;ww9c7t|lnc898a&wvX&e3~F z%fz|>XsI@`=#5g5xLuTz=?osxZ6AyXrTZA2#utoDV$znx_={pw+besff>8{fjn{;N z5o)rtRThM447Q)!NTbM_@E_h3JODD!f|#C4crWy6{S|+b1kYf5wo^9?sjHFQ?#!Hv znmF(KO6xBs!TzP#zg4^aC$IFRm0Tz%q6sTDC#+-5{2(LM)IHR!v`p2uV)%+oQ>)Cw z##3u%{I?Elb{;1u@N`vk`I8C#?^u0`A zR_aXmC?H=ccOuZTf#EeKC6aC^;?Gq`JGpdF3YfT{W2d6N-AxIraeW1}`UDT@y+grc z&E#008dw*`gId#RtQyHw#`xEGb4iV->~_taUQ!bBB5~l{*>lB|+nsaq+s>z3^C;+f zGVny-&hZHbzX?sB1UEHJq$v`z$tO1LX{jDH-_Hr_Y?8zsrsoT7ymHKu? zJ@+r`?ErV(3##W%<~k*PiGixoatA=aL5;Lb8xyONGN+;ry@m9b!$39Gc|Z$1tKDe( zX)-oS$rw2qV?MZ>hp^u<3dNUVOCE|=_j z+ML8^6dlv>o48mIEN-BmXysm&?*B2vWaU(!b2g*UvjO4R_+*(`+zec?M`PW8|NeWK zc`ix!(^iObO=TK~9$>t1SQ#B9zuZRWfv%RSb^j^5GC*@Ep}DwN|BZ=ZJl74^R9B!v}G!Nj!B zIC~zKAOB`9ZYP;bp=SuaDY!HCR5ZVy;*-IkGGS1;sr^t2jBe$fKSx=KWe+ z8b+YA0kk&D9u?`etb5OyUlwJM+Nqm;mXUcnqtsZ}fmz91b77Gd&vFMtsImsCqE{<= z$;2exI4-e_7Lbn)K(O3norzI4m)g`jl#B!JMK?!;s1S#+l=v4z=Ic=ReQ$HqS*THg+Wx*^p zOI1TcVrOk#8`&jf$+Jf#(2+UnuKJ@rDNE65d=p?xK&Lit*kom@i7Fd_W$1;Y9C|t? z#+_@E>~DpqadtBODz&L-z9*8h`xgtZ_Gi09EL)Q=1+)6zJBUxcK;-zeTcACRbzU6M znzfQ!f!FdUA}-_>S8~gRvamr>_Y1>QZ4XJBj*>%lwpJNf^1*VCkh*5Kd$662QWtU9 zGqbE7av>=h9L)$*oQp4TV9l>U+jc0Wie1CBYIcgNo^+vs@ul- zmX(%)h)J<7;8Ce#o!7A2OUEN@t~AG`SU+EH3%FY*X_r_q<~ofblXrHu2dCvOL64F$ z1++?I$5X*b4AT@W_gDtdnhgo_mb;TZEOn9PU>>9z%Fdv>CT79PdM{v03&z6cI=dPD z%51W8EZxwx+>v5ao8D=l7Jbf2U&Z?LBMax^oWIh*cX+2Ij`_3zmDVGcjtI6x0|6 zIz^GZ(R@MM5ZuqirZ@-RDvv5@@S9-YE--Nl4cW69$#cv?!kf09HwjrG1h8+~MyhG58Dy;I&q*PlkBTSJgR z_d12saw7(|I$^>2OL*T2*MMf0I~HZ4Cf2Qmkiq)6;&24C`uVphs0Ey_JE;b9mRjA> z(S)$GwMsBZ-z9faX&Kb|j`xsw;M7NMzN;G+rXVZ4YaT_OU8PIQvUS{Msk>Lj=F~OUN9kWu#>YJTF`{;)3O_ z8A}rZ{(aa^uqEeKCR6NgPHY?dDA!&O<)#~Cr)L$ z*E7w4=ECY4&FH}tjF#ozn58WMGML}Nv^e8Fr#M^~Ij;aMSa?eeY%GmY=shJ016nEK z)H{M%ok7fu^qrZbHE-(d_nJRhmOCd>I#D5Y9?3T71P;ZcXb65bfHhCx4ANI-`bPGb zBPyT=+1Ift1zF*3^C)c$c4AeO~_W#GIh^X7IA9`)?{qK za_{?2q-6wj-z%V{Mqu^pD^P~9cRnluvw&8fO$ay7Zcj^gJI?yZcKQa(pxqv4;QIht zIucEi3d|gB-XgVF+)cqqTBN>NBk_s#l3V`teI|bAPStNh0QWYbQ)5)|zc3Fux5 znSbrPmnc@vEcd?mEIX?*+&2M3YeKeBky!z;5(ns~CSj8a;b=y97@v}1i`vN>iBUE_ z#lCtsK&$06DJiH~rLPLZe<&S-TwYymehD8Q-zX4F~hypb~Seb0;!VG*iMqWx8|Rir(&1tYkP+$ze-6a z2ai4UX)!AI8c!sz@{-*yo5ab4PLG-09=Z8@<4<*WkRh||2~YxyGk7)z^xY?C)NX4$GH@r|_8~UKUitw1i4HD9tjfL4YuHmIzO*`x@hAR& zH-*EK%r!3IR_A*1AT1N;+b7q2X&^8x+3kkBiRjJdXLftMuJ>H0PkExs5C&pbRnt?E zm1$kWv1rs2x4!4h35DHW($F0WX_?OiwhVi;f?21HK&`Hk?6upyj0`^n$f^n1K7&~i z{5~Kda{xl_Ag3@%!D{`bHOqb5u(8_fo;q=2UpVov46cGY?i%auqmyH|E7+bV?RLv< z?^0Jq*`xa|X3o1#-h_7hCq$>EfhtKhaBSkUikMi*#V5~lX9HEqp}6?8EceQAFFig5 zsP)cq$+Jg?IMwB37VLIjWoQVN-A)OXzQ42?7;)+y>pE=;Chs@FlY%6BrGOR~LX~PI zrklB-Zz06ynh}A zN%h>7<-W7|e482sp76`WZlAmaO>D}XLv`6JG#%+!ABI7xN7qGmds<2H*&ICB?T=cg zPkX}FU`e#xy8)QhN;XLuCe`TPI0?h=qOr=#P`4W02DaMFvEDhz$-XefqJZv3e-y@X z!{ou$z3H|SnAIL!G-8?E>tnrdLN@P<%5LBL^h7g4Z6nh-v)mJyrXZ%RaC|xyPW+h( z!Q+RK;D1H}Ha7&le!B<0Y;mxVyBel%3I@CV{qv>SKvffUKOxwR3M+N$b0wKQaC!U^@{=Nz%`rk+D81 zYI)Fop{mevhUJ8yU`;95?GIcZ2Dp3a1^{M|R=|@F&yv9hFX=KSGnOwb()M#U0>aR{ z+6SBFGZHf|*I-!fTkcwaD=C>7%o5O@*;&jkjo|k=37Nzw9XZ^aqkY{+yMPh}x@SN# zQxh^a)|-Ocrb&M_Y1*W4Ozmd}L+djVFw4qvEO*1$N>h9q~`1B;AESGE>VjMBImd+WX85==Uy4s2h6 zS;>P5#Z2E^nhp%}uTKKARLY|^0QU;4v+qd#caKkiT^dGqmY6$lH3l`W32b`FTQ;>_ zhG+$!77ur&jN@cC&NRL7!{0_~RFognaB*`cfm+t))&we&fb%JY>8GkO93quh|P>tI2PKMh2IzHtMHq6|JdY=oFzWB zh9H>ulm@d@AD_BRLj$ucpd|@f6pWt(Xc?Bf$e^|Ow70mF3z&k@8>osjU*C_8<<9>` z)+SBh0RGTRexKMR(3IC1%~NC08l}R(+{2`rqs5pwmqAX(=TEVJJ_pQNNy~T!DK!Np zXVSeXpjPHsv@w&^6RLcJI`-C^$EYrM1->B&I>DTH*uhEhAsUnUmFG>wrq9izG(Lgk zQkkV?`kq5m*U{VNHNkmPBhJ+QWE+A7g7EoS5lb;96RSGAeK;d0cDvDVPk}W(e4Re; zDWhTWv4&P)ESO}1EcAl4O9GGlxa^WGkt9H3RAVEnke$*|l}bw?XR zi_M*>;8QOgnTuvVs5i-MO+oUTkRnn{3fr_{FCK$Q`Zlp?p^LobF@N$!V-IQz?;C42 zUl!W!VI=p7U=}d(No0pA(;di!zKjiNOvy^ifC06bNm|56)ySs-8_-8X@I7Oc#Gal* z!3eZxql-MS+q>MA#3uA$d&H)w@rG%^8lT`h&(3B_P)Jc0bZ=9uH9l?0O)}?2YzhyY zPl;E_dEvlCcDsV?P7>6}+Qxd!`alhL9k&tbh8FP3cd+~7WS`j(-PPXcxX&!oO*N2A z*9f}Ka%|u?3v;BG4Flt$nGtT+vD-~DCZo{3aO_etv1dLP*h*x`{QckF%u<=<&YJEt z)?C<7XC*CD_g`Y!hMZ2Pt&iU$X2aBq@x!-^O=6&%J+qyFtdZS*K0Z-Q+WR=PmAeWv z=K!=?j?~$s%yMTfQi@Tj$;goUm0@YsW?}Ly($ch(#SAQ%r0*G|( zU^@;II9_*BHwFzI$Z963^1jm^U9;O|)UfL#i^d;X=4b@J&jq&X9!cW9 z#N&q45d4x6eBk($R?;%GS6iXTEccUiwCm5y;WzP~u_;YbSDP56o;Hnux<~*3AOJ~3 zK~$EM$<9n?3$8`*;IODUPyH=mU^jeu4mc9yW*C3o6+k4XWTR9dEwM%UQW0QXHt zTTAvM(m!fTK3+C>JQNU zCSv^XEn-ue!FHLv*%tc9&WO;AxE5iImfe|sh4yHyE~792T9)MwEYW8{cPlNEy1_Ga z@TzGgR|9%xl4d*h%6V7hQLmmi4c<3~q|kFGHU}4C%gAo;=a@927l4-CCvl{GTJA*P z6!OLQvJIuP-D|9>sSm}cL0TpmX&IIk%{?w;OjyZukr#{%xNfodXCxSE({0^wZ-K z=S_V?l>jZva+gLR$j2bH_|uwtlYuIM?p01^V^5qij7XDwgOm;dYQ0`;8hmeze2kqA ztnmq?ne5o@rZ8MF+o$3&SX%*RnX}EvHtZnY6NcrU25A{-4vMr4qBD6`wmVPhw4V|6 z-RlBa`ZhZ$8I=pQWQClKQK6Z>X?gXSNA;<|5@dx~QyyiF=xO4e^CssdSd6qxQt2yc zTqAo-RDZ9wPrW2xoQ3Zgv%u^R-3z_88#kL(;2320VsHH3I(_n!x1d(jOK!>7&I~Ql z$1<8)JW>sZ(lWJJ+}c6AIj!W-`Fr``2Hr$x1hclhDFY(ws3{+*jsc-YgaT@*$!@UQ zV-2Nam%UPBot(ZZLo1W~Rq1S-tQ=A!-B2sZRw&lyP}^?=Y6%-c^p;Z;jV~ITtZ9xh zNj<5gjDTF)3&CIRQ5WgH8Ivk;==3f{#&~^_S?94fZS?8SW|>iq7-K z@6lMF9;b{%U$f+*#-Pd@doRJJvM}OLyjN)oXKQ$sk`=;0^{wl@VWOFUcCgxwefp}j zBM^=3Ua;H$Vx8h8U{H(olGUV8^xU;rC_n|`N?Jyev8@KY$|Nn=JB=0Cf{>PZ>7o&M z1YV^YL>GB;pcYtmmMa#KS?vt8fAOOOS|x&BtTPE2gYF_N)6AW-F>k7|h)llx7{4${ zH=4vL6r-fcLoq6a-^3dLTEOfpVYj?|@+ z-Izs+UGEQ@4rwrNUb$%WNmvK73_}Zsg3+-@t#1352eX3R9_vyRAS*zG&48J^3 z>cMvFeX~z;GAVNGSW7T#%%M7qwB=L4n#ssh%*jnzbQwvWWZpX9URVwS*smg3?ym@7 z9mc55%U?nFzHvKjGI8Dq$*YJ>v5xa7FKvuXQqN8^>(n3-K{KIM48DUgP?fk;n79xI zs_$FxIT;z-2o$t^1-4JkzZC5DUtYm*H$h0;dnp+!ZRAkcq%bhG#?c-E-RTCXQX{Pp zs0VIiM3e^7i_UTY7O#_#DMQ$^+fOTI`vs%a&Tj93)*kHkSXU=x#LyC!d!dHlFou69 zEyFBQX$qc-777`KK_6p>FIOz`qw)6nD8AlDEDW2|$4R!!zf zAGs*Yo%5!>pN*t3nyj=8Bm;I3)4fdzHnzKA<^TrE{iR|Qc&*uN4V^b5)c_Z~Z>Ug| z*i;EI4$vyWZjW`GJ9V98jv>}_LRjt+pGf)&dNWW=G>K7&9gMADd((Gs`tX!HB@CAP zO9EKJ61B$i1G^ojhMM$oQBPP$K=Sgjf+17S!pxUMc zB}V0nJwd~rS`LQ6aewt(%6s7)JWOt$(AIgYcogKR-(CT@4+)w`H&8MrOf5Fo$uI${ zezYfdX_*rP?t7sCC@l8?v|cPBOM?-in53Q<%woV(jdX@$v5y(r$L<(fmZcRd)+!;B z)um->q4>oUI6y21VUp&`v`R3Ipye#_DL2`M25Qx&&v$Z0EO=!m#$J4pViCONXlJ)? z+k!o+u}PbO3tx%-sA!CR5$g!hGUkLOQK7gSE%*J5v`o?|95Mkj2C6%OTT(m*%l(y# zLzqkm{p8JN^hZZ2K2)&XGDbOvD$bA)o#a*QiC88|^?1>2Y9>Hy@8-@fK4CJ_p{dt* z#B9$b(bvdS%5=}6<^GZ}%F11-B%hhY$tu~&wVBM5i&2> zU@%Q`%|MyHvFy<#dtqj`?^ddT0r&1L5zW9@7xN}M_|%+`@}~}HFFc7ifE^AOf#^1OUQ`yB9D(1%T5Tk zXwi(~Td<;BsmWmN&TB%YvaCU!g6>k|A=hnDmknYXI6oiJo0b zMhOcRY`5(85p<7u^!qCS_d`(2YW=`!xEV5Fj>a3LBS z{WTJ@$%t?;O0{5nO2<+%R=fSnBxhDiCbmSZYYRt7#+u%?9K>II5Eqq?L9}2yGUL$1 zCjs4g9~X{o&DcH)gr`oxQd;XGiUd1kvAm)v<7p+ zS}bO;1*3rS%yQ>FEwL%1&!I|-Ys%OPmir48hrnjdn-Uf_qumaWjZ}l4b#l)6W*|$- z>@gl4>z3S!B^wxxu;*W!WCl>L37MoZ2C8!6c0dbNK2+ozx|TbtnP$YMSBO#B%UyAd zl6(s6bRb_)_2u#t%r0-T&A^CFv2LvKS`IZ#;^e~8GOb1XxVl%l)Mi zvIe%ZOoKApx6am5hL$fDZ6a2|tgo-H_SWgP2YWQujfG=frO?r;BZm}kNH@7KV;y>- zsfYIf(h7rg*MBRZ6|eVmCSZe6Di|Z@lQP@4oF`r6V<{P8kA4kuGEp$bx+QP2TFC{J zuu#5>#l24mmYyTcEO#a>)cBKOh)>w!T7h7>KXYvAms7N_g*9qq8oXBWT1v)y-%xy- zj0g*cw?wRKqg3A?l0UVk-!5^AWUDG$y-D%`IAF3sdkaT1|nlp5>bYP=Swu(U~>?l-~2g^E8ld16CXa4dJrg3g|R z6+VKmi$z(J)K2sqq-1OkRZL^h%gF@x_*W|c_j3WSn9=A8WPJy`Ef)sRv2_v~qd}Mu zoN!Us99_Y<^-g2%EcakQJTIW-bVr+cj*)7(MoOm3HSCSq-X&#>_9!cD#fu*6=E6~> zWhecX(x6MIb*%hK9tvM@7yD_HJNo}7j6#PrXD($yEEBj zmb>aDE6Y8Fmiub}Sb3Zh+`3UJNi=4SO|)s8E^?o~5r%ugrF28oc(Hy~neoCH$G0Hg&(!zjJ44tyu0dnkELD@;y{I=8(R6+5`-yNd=XX$!79q z-3(NtuhA%V?}ejfMWhs9R;=6drV-GpG0K|omM+VO6U$xL(M|K60j<67X*MY2*cL4J zCoT^2FiDkt?vy99ucWN?qDF)QY88_^#q>?ApXE+gT83hkl@4t>?q~olq=&NHDNqT^ z9Xrb%CYC#-V7Whaj9N^45>Y`}?_KJOy27+yaFCKI`*gNpm^jC}Ta8Cd_vST`ORx2y za2#UdCYho#{sby{)f$3e4OBzR{Z%k1e$U`hJ}$Y*z<#Dl>^YL%i+J>xD**Q^K&={} zM6O}uE~BvA;rsL3cR-VyBbfuennD$3k+#m{rVK3`^x_71K0r&sECSk_oXo_|N;A7% zbVti>ObGWrc37NtdtCTfKPwz{&y@~n31E5+%bgfK*g*CM*2>=OO~H`9dgd7Afp(+Y zZsJpN4MAc)SkP)WO+jI|%P3+BFe}zi^CkmmIr$>Pa`&=)Tv#M#yEDtZWTIYeupG3l{Lr|l+X2YH6`$cjl#r}MOI5kh>K-Oli5L7UY7!)pa+v9pa!wSIt zBB%wF=x04>b72FE9>BElP%U>Ei>_b@6%Y;7%F6r-J+0>~9)U**rBFPbyp+s13hjXf z%Wfw*85uiNc6*9KG1grGE;mt8Wo0Vx+F1~+M|z~?4(w?E{dK3Z^`as3UJjP~GsPuv z46V#YgxhA>?VB3v3@p3$5UHzOG?9hbE=*DbXa$%R>kfd{G0WW$7BDAkJTLoQm|A4; zytSAlOn2{dl;V2~|Ikz*K=c!Vw-Cmp~Y2?naZqJ#V-vpCn zfDH-vTGKJOr3R|!wcJ}n5Ggj1e?_p|pEG~*#)H}AQ43!#3T=awO!4e?3$_n>$#KnN z{d+c*TqBwqf-C`A<4h%1p%|w!X+fIa$c;eAE^lgIZ<<1}o)3dkEXw-{&Qda(J30BG zg;{FEqrYDPxL-`r>_H0+pb&;m(@q95MD;9pRLO?Qde{iiLe`~}#0IUJQ3FDLTlRwh7%SG#;}X5)h9I*b_OGwbEVO#0hb;G6C^G22RnWZx z99fJFgXR8=F-lojGJzxPQRv$4Zt`Y~PtGjWFtnWBUtIH8_W`tySngm53$s?T*K#M& zouv7^CTXzTpCmeIe1bJ|bhBn(hdDO-3Bh8?3fusW@#t9p2xCdiP_hi=O1Vq)<))D= z2CCO;xfk~KYIR+(+@Cf^wH#^1ZqLvOS7~4Z&r*CoHjR^kalK>Rr^fR!YOk?LaH!TO z{LYVhcmgNOhul!g48Au)Rs9(au#GeHdE*qMiRBJ?mf_?7b4IDS_K=9{{P!yW_lt>{ zVJ}w(AQU!G-6_dJ89z*_LF%;Jxy#tJ-#3<|$t3v@TJFyk6?^Ob*&am7~vDoyInIW&HhEX{Dd1M;3+hsCA z#znWWVD!^B$pTt?>CATD4CEM9B1Xl!FQ7HD+y!(eR%vFI*2a5%#d6Ps9yrIef=0_d zn52Ibn-($37|v%a!*^tqDzVALsINYS6LJl)?wvCoGzDd{uTL_QkHpM!r+Q)3a^JYF zv;JPea(|ZmX<)aT8c)ayV8M1_3lDpv7%7=`YzlBI*8Ss^-G^Z0Wn>bkeCJO&B_lNg zo#npOTuGXNId_(OC@eg2K4s#T5E#@a5=Q4hw?}XRx<{_`94i3#D-ttnHrGZDSBuRyP6bw*@if@{}#|%=#IKE=)5%3v7o18 zXMOFRrR9poC>Ucs0?;yGMXAzPJAtxonx=pO&S#c8vRs3*NSWm>V3>^kr(lx)L4+El zt_F7drr_40QR*PqKuy41wUSw`A;zO)-7!iXvfQDAS=X`LNxGphscK-k7wECDeoy33 zf0I9r?Dh`2Z(h4yrUS)`q)U1fJApIArU18MJ-Ws#1gsVqCHiX2q4Hcy@zhk1GC&M zh`V(*qDlZjgs49RwCGxN%~8W{-$d#PR?|0{jO}Iu=g{mc3dUG>%bPq|!J1)OJ?_Gv zm-AGrMr9@1CezGz*8(N-sNc<<&gdd%KY0VoTo(t)A#axI_Q`ODMTm;^Z#mOZoH9)2 z*61OrwKAB`seBR`iBaQI03%2eIn;CHPr_y&fp+67VG<}D_QQVUDG`%_u^yUDC5l01 zlwQ*~<+h)d$ej#FyYiAjdt4p~PI(*e63-M$DZnOMJ* zH#u`cmX@g+q%;}$y)Rjho#YwN>5yV)xzluxWlooF0#=BrTBm$^2@*`w-zp9vjZ!ir zsU&wGerC6)ftghXgZbj71J#T-u5GOQz*vsuUWh@OnL#RA?#dv&#B#@0H&oUsT9*6J z1dlWJ_wpx+RlO0|>pbvA&T<|3>Nk-QsMR*G(a);DY6GeG zV_?k=jF!6{>tX4JmXu-cH%FC&2x*zW0kpE!9BrEIn`*aj=h*Ga+_RE0mYEe&GO>Q8 za7?Mo%BWU1%U%_gy%OENNqg67xwoQmqk@9<-*Yqt{|3-vz_DrVZ-cLdfbKAl9J=^~ zhFLr?+j~PW*buQEk~ewT29;lf)(jL-t8l?sn|#I$$7ory7Y^_L26${pIaF;n*6%N2 zp!(azVOmTEy2+ai2a}wpP&DBBJ~Br!#-n3BDn1QO!DMxkO%tdHs4iOW$uZZZzH2oe z(!Q^;DH~RN&C4VXii~Ki-^ib4xlo;8-lhqhk=>4N9}LWPEQ|OQE7k++Jn@+T0@{l- z2@8{=YVMO2oVC+uMP#o~eZ7e68OF}ffkh=ZF=%T#NXC~d`5MpW)oR!rxzaPP0Nig( z(0tKY*aUSaZLE55*P;<}FG`Zrwj>tmscgzB%yPqof$Co-WZ3{&_3cUCKVY|`WyQF0 z!`(BpLP{pqFT^E^HnX3=#!S-oI2duZEcdqeWju{X`ExV{{|wNQ2gM{Q zI|#59Ow!*e4hOPAe{4D(2zjADYK`W-8KDEU9J4(dg0UVKo7!7YE%!X=B#V}Ni%-Iw zHs^FVcSg#gC^nhgzfIskpO%jGyZO`XFR@L{z|L+Lc4!eom6wo3C&L%#OswCi@ho{^ zn5^e~3U~si)o4it-TU+z8>s4Zpr62rz5KUW)EKh_cM{_6xF2xv=d$ef$d#UR1>k;D zz*B?5%E&66p~dE@GLD##4|181<{PL2xJU)!$&9LH#E_Qx!-ULA$(&B7@5jdMhfRat zz-~`C09m_^L+{SDK31$>DjZo#K|%K_ZN!Yj-2(2p16m58$b<)yl+5=%fL&WTM^o^R z0IjY&Dl%8!@o774&d_-VvQ4> zu-&rU+c}L)Qm9in$Wu5-%|eQQkgSkt=1 zHJbcM2vaSO>QYzUPa?<)v3|YI6G9ZwbC2lWsSba3Bb61&$|L}|3Lw13&uU~YMN728w*X)OMspQQQ3)xeW-vIb_PVS zNPh>=a)!2@*}ipiws91CWM=J7w|yVvWP;ru>-P#r)$CSjnYt(Q7mxNA_LFF_Nm&qf zjE#~pY6{k$b7JtLm`R){7=I-Na|VQ4-a43NHImoyDQTf7a#y=$x6dZdaVcXxK5z02 z(x&BJS?+r#mezO7l7g`{_fk?#cMI;err^f9y19c~#406bs>H*PZ+K*JXf%+mscoOW z0b@q!0Rx)w^nN3y=TGR^?GdA5Js!lOMqMR5RoJyKTeJbKu(!BW1kkGSC2L$#mb-f4 z2(e0QyWH!##6+BkO^>MUY>hYOQ0mQP_1lHrF7$Q*+pRI>zK^~VK~{+M`#BU<1}uBU zO~HmkeaEQGv8hc2e&9OA}^yOJ|$SB zzm$;qM9j#@Y?;~Z;Pl&V!DvUiYEt&~ef__7%Wf}mXvO-2q%3tK!4{huh((|ly-!T{ zIv$M!%e^IJNhWbf$Grj{yD?CueIHH1$0lH0*c;!E%u+JhGy}WQ7bG_lYFTK- zWc?*1K1IP8>o*ET$!RRR85)pLW6{n)IkUBZKz9PCV9;`>dxDr+3~JT}!| z(E@b8du(!2G8&^q=E@tUGRtltEC`_Grf()d%Qgh#`o(%&&SZ&BVocZ?LK&Lh1WgE% zv`i&4RFhQT9ICTPE5;?$HsWVcHUn(sw(nB|#v+G$P?Yiv(LCt3=gm*wSi%CTQEC~b zLYb_93nEoqzgWMELM5KCr&zQDFz{Xsv6JwpW<)RelMoh=Cvc2UK_e_AiA#Y!{U#PQ zsx4&e%ashfU8F*jOa~6JD9D{pzXEXoVPe(_2BbjOSfp~Zv>S!TdqA~FTi3D8_T=_+ zMCWfS*v!K$%RN}6zmt%SV}>#ky&2Y4axUJ(goA)tU;9G8J=pEBejnJ9eJWbX6>xS%SM*Zg6{R_ke+*KX3qsJu`r}% zejAH|MWav$m&Gg<7e=W@)@rdwVm;Ri!2KTz$6hoxX&KUSZ*2D>qtO++%BsNx-T-W4 zmU}e-^9HKO#bN}$`zK_u)E$+F7L3^h!i8b(ZXf%=(84I-WBp-Lmdrkd#%!WBpBS2gx@DyR=O8 zn%Iq&d;QPKHjqw?#;1(xiR1LXQ>zng{&WGm@d*_h#~zFedXA z$lTG#CsW(m`Yu9KtiQvcz{?v05kL3tHIWiQ?x50qY@SL}IIQQsiM$MJxremOFXU8e zyxn5fXy9yscy)44M)GR?hI&6a{3gzpCw0>c(`PR0TT8yu0|6`XsXu ztB6@m`@MQ~m8KbWL%L&^lfDu?_bnSDm64W->6^#J zEs$$urTRuG89o}=4wY)~f|FsY#G<%V&%FY0{|8WufGsvCte{3e=t(=dCT5BCNY~Ob z#DF;AiOmq||83?Vmyw~kk^U)tbVcLLYCoO6-=1b|zgc&52D82#yFEIMv7QIm5&%}T z+`lp#sDiS44y9#e?2wy+_}^^Il8XE;)KNsd_s#n!-~1;F&J-wNG3!K5- zA(QmOZ-dpV0z(2d8f$k}JI5zylsZVsIQHnkZuds>CN@o=UaVNZmpj?KzwKAnNw%^L zB3sh(pMIDR(lV*mcOrGAbwPzw+F4v{2JjPt^PYc(Tn5hMF3*rd4aVBW`=&JpPqrDD z)hN}l+lwPqsr;VG@Ns+!a4Xi6U{GK%s0xx(F69~0wXx?^7E)5uXKM(G1eSQgWt_H$A)TqJ&Vu-)pmm(WFy z^*q2XQfDAqkIpvVxTR?;%L`%Q3sI%%;{zjE*K>G$?L{P_=fOl+cL44lkWjZdc< zpG59zV7DJh$%qNzm(y*>FiMT}B!wdM{HcOYjnQ6+pipBJ@Pr^~?3VWBJ%8dj)uj5e zGJi-?Mz?kSn%%JEr()#B?T;UNzx2^(!@%kw)^aj%l#(&PrOBZ#8Kp*yiuL!oQ|f^D zk!%CSq%Pdx8iOr=s{d`@ITT8x(cD`VAOjp4f{(|u-s!Fy301AW%g}4Q_Baib%STc& zj@j;;fj%|`xE1SZP$)J~Wv_|v_>}g+52_kG*L@3G;bpp6T2ru|;gXvv{*<|10B#ok zq?o$x9$DQ|?@#D_e3d!vK3r@Jh}v#YTjmB3cg)tmC*LF-Hk(Z$)F?CNQfXX@gWlH%k55 zyFPLleZ_h{V5=U|i3&z$K2+JOFENyYE2L$b+VVyPV`um9J@S1YkQ5fCN9(x%KG6O< znVuAk-89Dn?v~wdwMQ>V$#^5@8PGaPZezvzwK7pyIfb;`$$TDK-jf;F-HnEFljb{+ zmT5xDn}YB4eiBA%mF1I0(@0u~TL7<$dm!O%!g zmiry=eaFAoO$EjjQu3!R%V!#beR>&a!c&b1wT8zE(nhZI8Y=+zJAzt!(?%vHX)8>20=0@^TBXjO#tv#F3Wa^(P?$v3q-S+={UwYA z506FC90FX!()RSh1c0*h*qjD4^EfUC?vBLRyBZM$;8! zhN(0RWwedKEPVD*@I-$=A88&6M$tw-Vz(zZeUk<$nd0J;GjfiGV63Oen~V>R09s%S z=wa`1Nu?W5rDYg+Z==#hneL~g_Yq0@6^>7v%Gmr)*!@{Bz~B30@Y?XVVz?Uw zj0(D|Ck`(BCE_l)B6P}hW(Tok3P;)PTQ_soDRW7nL`tSl-dIlwT$wn>YaZ*l;#9?; z3VU_|Gu&ya8M=HD=G@P6lu5xhg)_$*>!IUf)8YQddp(^Se=1&Au>ELw==SGyE;dZk zS77`kjGPRZ-#$vo%ton^E4|VR!2M3JRuL9NXOfnb_r2d#I^NUm>{}6;ISAT9M~a%w z7!~$g5HEp3k41{$q2CA({hJkN%sL7!?)8I|j9gbM)gW>*7R+ji85XCd6)V=W09&$? zMY^H0NWb@cZRpiFRph|$TFKVLvsI1ePBO-MeeW+~)6)f@=llb#RIOG+hN( zTMM(r-CYY5clQECiWLvRio3geaVb#T-66PJaCdiiC{|qia=*3SA4qa0Gkf;zGa`5l zJ)u^}&O{Jx+3a!QzR!w%=mRQ^RBR5!tsyy?aOKMX=Z`cll1LcKs-uF|BOv;-EiU5@ za)zVX=U@KUC2~|H*|;~!0K6hsm~fPDm2tjuXDHv(o7SU$;}2+l{!i)9yrcp1m{Lv) z;=x|oy=aZ7yIr+RoAIhBBDmJXmP_+h50wacQ3qBNHSVFaOok8Tb;kwqA1H33By@?? zkLUA9-?-si$5RxKk0w=b+RLdcb%;Pp&Kw>kL92AB=fn{MH(YOYYdzPnZ9`3`1_B|x8Uwi%iCsS*2_hke*-ZeMoH~m^AI;#t(csP zmw!OFZWlX-U|1K!WXs8ijy$fXWT|p3;ner`^aWiSw*uS}t9F+i0%@;F#SRIfxgRS* zsEw>7goDPI?c}zE50Yjrsch7^qgo(M=;oJ^{90KTUM~$14~C*t-RL20%}#LY^Z-3> z_N7qdtptq!zp^4T^7Dq-`*XSqFT+@QUkOIEc+wy^}emzsG;vW;hwtuaW;qwIo&p;!>FmS$p#Zd!;|)(0$iQ!JkG(}a*0t4{8V zKwqEnzu`?sGuo9yA_d(seG7vw2X#{EcZc6A7b#_iMb*^^JH~@A`vRd>cY~bzL2r&* zs_D{mp8n~3$(}BXAr;J2577DDGxCLSt^c1GZ)r%7auoP( zK#B2aLqiUJQ4l?=zR^?oP{~0?u>0QE9GPW%88JVA0yh@?M25>DBu7-J*qTf)V8?N}4)QA~Cb`tq+?rGi~8E zVcvz`AJMA&Xm8#RxU2IwG+y)&S$=StXV)1E>G^dtbiJ$T7l(R=P4m! zs8|D0wYr(h25Z%gN>VrqxuLH}8{}+y8H}?Ht)wFFHX~`FgQrf#HcSbBx_Yjk@1guP zjbZNLJS=IA9YfiQF=EmK*!;zZfXFg*^Nf{-#QO3xWOs;Jh&g{X5^PM_uWm@}M0?L>lsr z-#}L5(z&Erh0s0gt%a!#^RHz%c^p}XRVCwppC=n+Ziq@E|L&>%+WY4L2;z`?ebTB3 zT-usceLsLq&}h{}h>yOyVII>>A|4R`WWt5Dv#An;vZD}==n5Imks)&888wI-1^*8Ko+V(4o$IvWC@ z5X0UfAsO04C>pKR2oxdotut)@^8xB5EWF4|>6<%ON=i)weDfd8yzZzIMS$5|tw3;% z?2vI6R_);f53LbQgl$3bc~Bxj%%)2?E;sY(H8`2-ZEjk3m~K1)z%4OOsfaLvq8zEk zj%MkWC;@F2%$e+xIe}Tz$lqE`iJnbfi$t6@eI{SVc_65d7NqnvsPH* z^9FX)3kO7ouKL`2=$o=C@|W^oQ~Y;EVFPMII)}SCfsq3hvVjU zAz@1^f4U_KC9bhsGE6JIK1;{KPC}Yf<>N`@H2X?0cOdeo*OEZ|-|!Y%SDM(F|VPev{L4?LnWUsBJ0c zXQ@H&;RlruBbXU`t|k4HT3JwgZ4~+7ZEQfu36a z_7_I`XBs?$6L*EPKOaB#BgHWKYx;@Px_OIYUyN}*DWFe*nz5-n_!1`+iy;Az-#>~@ z;_#U@qQd3?123NMCVtLuUL~(kxsUuSkuIb1rPPnx=?Za*~xM(^ILU!H(3H|HF`T11bL6xch0cKw%&Gg98; zrBhwgUiJ4^Vz@s``G^@1s_#DecVnvVS{>B~Trb05Dp(PE;`jV{qHjI7PRGT5HtsUd zI`a_@j#kC#@0>`W7;U1Pim3UKvjfnDe`Wup`fX?`j?VEwI1rPh@<+uo4&mArT!aip*ugg2?(RyvDa5b1vD)SJ593E! zm|0#broVIqeTq>6FK0gpjb1W2*X6cc4d3>e_Sfv8A|vw!EQF?Fc6_ z<+x8|mXyqx z1#yVfMrx;V%WEOFy}C^7=8C?@8GKyBj_A`*XOMF9yJ+1s*)G>+DENyxm)mdm^!Rbe znsi~5Ej~6vU62l!+Cu*@;1|k!SE2V!j}u{I*+tI{h!2|0@QvXdJMBS1S`yW-`C+x} z$nJdfdla(oY`s8C19S}E(8@6(p|!KZqlo+>VS}IP4ZxBKd)>bbF74>QHuzA}8YuPF zV=0GAdFoc$TG4Gi>M0J^A@Agm89`F5%i;APp&#}B1RqvA)2(4GlwM#q9mEBtQz9tP z%kRXln@$>p<2fl9FSFz4yS#L!P&78FJD0^vgey>|j~tvK2egZW-Bq6It`4Q2jQ>+8 zV89LwYk+J`VL@_Cbj>#UPl_|3loy$eU18>_K3AaKVWhs>WXIqf;phCPykl z_p}(|kREKGT$bQK(AuRJ9flhu*Ez!Tn>in!Mk>C_S;=Wzi7OKqyHK{HqzV0t?1moP zHk@6S=r(k1JnY9=3FM-)7|aWTY4#D}to+ScyKb}5>vT3vT!zA+d=p^|;Jk@+E=}u+ypMXuQ;hG$ zDy+}!6E`VXtD^^O-xCeiSxxQ@o!eV={cKBY3C=Qk?DOP+D?9p36a*K_=Q*|^ zS(U#u28WZHJyF-F-WuW4K&dR0KS5E}M1e(#AuC+BiSn42aXWvu8Y+~mq~m^=-Kh8G znI@s!!XC+>Hy1~Ari@>PEzEjD{9!}*YX<0R=sr`x3-x#7PAUr@1_`%!<&bZ`V5qME zw>j=93)Y6R>n*uG>5qq8g}{RZHK}T|M^Qqj(|?~t-*XWq z(Q4S4?8`ZDkmh>(wGc)DnZsT~N$*IYd?B|CPAYW=<9aBLP(9x%v2!BF!zqUP&uJW3 zt#%p4wCl;Ih?=65@6n!P1xaHH99a1v%@Q=|;+C9f zHj-GH0D(PjY=2xxzu!bXE_t)8Z6ZHTrgVLu76$=tp+G8AiRC~5wzPlmEBw``f)(~4 z?LsapAavDB$J(%(d;B_NYi^-6c;Rc+oH5|i04s<-0od9jtbsUqp#~s4N zK{=VAK-&iBHBmvOaMA2u&xVf<%hRVw!QUSl(9u##Q2_f_E{j`tl9cLfC9Mt1!Z2HR zXiZ0pkN#LjYfKdQo&A=Xyq@^fnA+D0;FL!V4)b{l*ST6N*-M80Qz~{m+_tlN9Mdw$ zoY&53QB%8wozkK>?!;BaSkfO>?_9!Lyut2)Ah=q-eg7oc$86;@)j7}%COgzhpM6~{997O znDV+tn3<^itjLuWw2fBckt=ou0IQ3u#Zv!N-Rb#x<@*nuh6a`h!U*L6)=INP4!MN& z^L9HD2)9VzORT3DLCb)u%4gIn3mmBW+u&@I5wa}>g3J>p!Q1uV;HJI|SDh|n<-!dl ze39>Y0 zvWVG%DO>i?1ovYdJe<4n{Is*}v_9Rv%(`7_9)2-w zp2A@GTyM?Zz9Tr)v(&f4#eI6efH!cXUoSlgRy=am(_x6@l0%!tZ>`&yNNLT zBTh5upMDY}C%w>v6dO~D83)t{nLye%oYRSAy&PG?Rs z>&(T=Q^!N0r#mx}JbQ6`8x%G_q$#*K?2m3syDvGjW>9&i|LVBWj_%K3n&AdzFZ*`- z!N%*Dfx(ii)tJ-|F3W*^G>!FBOA&%i{YY|Mjo;C}Z-&aV=3ErmACG^fYLXQ{!@m@> z^H8#PgKrrwEw`^BNV;H`Fs;psLIQpf@C}lX+#?cTpBx#I_SCcprY99#Eiw~HnP9@= zhpp@{GjwYTD@GB`w_UZR(^65hS!dqhl&f?Q`+h{Hn6BZCYm)IV6)u3VV9ECto%u%n z(=!!_G8t-dHF35i554MH$4tbrnfcs3ub~4a^QTi~;fd|e3;kt2Uo(1F$!8Jk{Ew-Q z9p-<68#}aV++GWU4B<~7gQ@D#YC{$(-bjdQf0CYrq1p8HQ*M*kI{GU35=g4Z zRs2+I{LKz4?Ng|OcI!u8|31wgUW`iE-HEA8Fc4$$z%`xN%GTTrG~amZlHB)N`6S=N z378QJm=iL!@(N-`tm;N7|B~}_`N41R;uSCya5eF-t7Tf0QsVEM{qmWZ3^iOh5;s3mSJnfckR6 zn_-fFTVT~f%;!4u7_tEB>Tiibch0BLW8~SG?qEl4Oxpp&8!50rM`iooyzye7Pi5r= zD@Lq7{7r+?>GE+6_eU6osB)Rr=f2Tq2NqeG+GvtLT+3O>zL-w~L_oP!et}&WglN7viA1nr+ z!W#{gP=pEnGumU;;l;b>Zw`=Xhx5&J$v!WvT|2+vP>_8rPskO$ysx+bYAjhfTCd`P zzOxZ}+Ui`(u|8vrJ{;uwQ#hzvh|)N9Od0!sf~9v^UXBYzZ?zS$sJSD9c=e-LX-q z0@38FzN;|7F%$pcqrvb!`%Yw}8$I>uY`vd~ziPfZ|MytK3e40%Sv_Yuu*1i17CnUk zP0@c;p*h;os8eb252@`wlTR7wRW#bIeH~tiJzW>X0RQ;L8k=@cRK%T)nPE}?-fp4<)bkyEsOEx3LfH zfwsm{zg8LSuEd>P3pBgds3E^)P%*c;d7%}$b?To8i5_uS82te24i(~Z*qhk8ehxMOXz8%VYe$_eC%eU{hzAE=} z?xQo7OX##^l(t%A2L#K3SUZe|4j>cymt=X2&7xHC^2Tq@Jo7(rX`3r?$IsF z$4bMKP$mLCb8#dWX~)sm#8_`KnfIP}m5J)WwS2lO>Rk$M=^BGt1j)FlAU@-SL0TRd zlvVM4&fF=({L4EOS9~wG;Aa=sJpD=KSL~aUdiS|G*#8kEchK)NOlius{)4*qweDh+ zA>4kTjhMlVJ`-Ex|8XV9bv~p>%HNu8@7uB(*cD(a(b~cLV6|D>l2Rv~g;Zs<&Y|DE zBv^|TA6QGDpX_E}EG6qok)-pZfwIr+c4&fROewqRv^Y-}seZ1MUUU;9GtKpiyFVww zeXDQvh{Px0pSz}*YC}q-|9I0_&&jnFQ{zjcZQ2t04}D~F5o6hna34J#^fUJr_~Mk` ziF0nWLOQxt;vtMWPpk#s@w9Vh`s8%&6xx?#22eJ&`SaFs7F@1BB$Mq-Wlxp*;L%mc ze})E@J5RUUTs1zZ_Fh^ySzi+dDQ#AVEQOh)ud!Z9*D|-jIz*_(PLTY2a6z`PM|EH8 zTSdzqqg?v#G))3V%OMJ#&roiL4L3B3AY-bMu!exJBH7&u2!6DL4H@%Ci;D|^ zFYE~knTe?yT=6sTi_B-S>`3bE5!@P`WHrHeSN}eAx)x(HPnGz%3ptsMSz)bNxijrt zjU4=ZdGv8Fnn|)r9zn047v8pKe0dw%QK-uCgOU{lDc6sScQW;m60A{g)wdgw8v@ov z@&8CwE2~B0Uw%B-x1>bcl$cZ+*={MYKi-gNpsL(6M?o-YvmyL1k(<>;kH?(=LsKCj z?m@P(QjM7(&LKiEXQqHvT&)$dZuxrbkf6 zgVL@9mNiZNT8=GZx9@&4tW#6MX$jM}Mt$bUD$+;gY)5P3nZ^^J+$%ndaeC9_hLl;> zBP+je6jjft;-+yP^($kJ#~_)Vg^f>u7WjrXm=-gQo)wI7FsBE69b4?@=|Ab0F`8$` zqW@Nh&jIwOu`G^hB#7io*$;k(c<-i12%>VdyC3NC;|S6mnF#1}<%m|NuLs`fk82P9 zg{u*pBnR?DBrQ|uD@fsJMzYzXZp0+3{FQjAmIkFw6QQIRRSm3)h+TdY%iQM=QW`Xk zbkY|i?lPA6gh@K`NYpg-n?FX278kRznRI7@7%G}$@L94)9+{W8sJ)(=^z}DsJJnT^CclwkX$=yMqgjUJ?9OQg6vcDA%d;lj&bIRt^kOSEsom zd2@(Oo**gUfIO?S=@)!iA5Ha)9@ijKhE%yo;cv3~R(vq~z2kAKGbd zj-< znfgx{uVHIO6%<8A+=SdS`E?qAcqQKoy}HVxRG+2IYpWVZOg=6|4X)y};W~^+%dHEp zFLOS$%LP}#id=azHtACjnmt5|dYHUf&kGtuh-LM;9mWd+s2g#kf+_~{>IvqXrp>}g zaw4@|C}$7GULMwqSW>_rNV1#L9$vp4w#2L)&b`ZSgl^3urrdEgD>AR18t#-`hR&0? z=U8n%1247XddlnV_s9(Afo`t})Daylk#8RU2c4y2C7FPe7Ym9;6mipGuh|6W+<#^C zRWuvj92_b2pc`Kfj`kMFbf-v(WX;(F$R~)ri*24=TLR@=r5(^f{zYyRy#OsxRG?*9 zqnS^Z;~`Y0K8H~b%5<|4`xZSN5dC6=os~Vo>n2=D!Po7~z%*w&b{YG<(3Uj=Q5r+V z&&5=OhB0QTLf(9}!8%jYWSNz$#(6rQ^PJ68gR-vkkwMDgpuTLq&Sqt~ot!9qxbsW< zbRfe!tM+)rm|oCHB_WGzUjgutEmOdJ6B^KJ$n;pP5 zn~T|bQQq`C5K=+aDd8`>Lu$9u%LPz#L??I)av~dtEahrWkS||jN2AbX1kMR>LU5W;r9Pe>%Q-pveET6}!#^VDypA5iALbU$8X8^?W5rDD-J`TPZ{ zkNzvadd66Gj*NtPOx%#swCQ%B!boZ--bB08RU@h!0%m+9n8I*LODc3EYIO zn{_Qdp#&!@tP$nL#yQKo=|~JY)*ZvDL-6bnW6-C~g57rrVy;`e^aPDcAnc!oi#&(C zT9k`^q)j`MiggMx0SqwtPsjxVOVE$iw4w?<5Ge;o)@napV{MJiHQwyefQa=#LRU$3zNrS z=_N~;`B$n?TnEJTdVdGmjdk6{P4}I%P4He~D2Ds-F4${M1i32wUfGzHTlSuf zrsIo@=XaHQ$1kU!fS3DTi=~G7w{3aX>NK?0lizzm+gI7f6itTe+&~|d7Qz{7%T=5l z*I`(EtDJSnXCN+d@fB%QQv|>MGmMknx;O0+j#K~no=?TbWa;a7C%4E}(&2Z}A-zM&jx zumwAcsk9*Sr+@N$Z^n{ZF~Kr|*ep^d3UGT5Nvj;}k1G$>dw|mDZncT|u0T|%%B$nO z&r;^FOJyzX%w7s0=jD6oOJ)~Dm1AXi6c4y0Tgwf~4XXG^l1rqgtZmzB71!6^z zIj4naEY(n{W4j46)|=iAy;AqHjjYy?FwKhIoWAedb>XqBCW(-w>%#Khltcb?A6lQ} z4y}Q_+y0yUp!s|C!p(A53|R%>f~dI@e~B^< z=*+gtB}G^nLQsh1QGI7LGy4P4Vrl`9f$iCvugv9#f$UWzQ!>^+ZAxTtA2j%ZnBNo4 z{r&teYJZ;@@fh@18)p&qyIt<(iWqy|1|?s>S?(pUsAQsAEiXGGvAEr zI#u!q52<(>AJ`Uc2V2t<+@YI(9`Xi-tM>ic%3Pt-1dvH2BT4;Nda8%s0XIJR-pw`& z+8~cGs3((uvKbayw5Jrl@P&ZiQHYHw`S_l*3(#n%lKhJ1wY3tQ?L$w%X6Uw}ZtTg# zheF$VT})}GE$4amdR6S1w#20^c9K2zsgNdG&Y}ZligdNss)c-|WfMUO4{#{x=lTzi z+sSf>l#qsF)ZKy9nn~3W$K)bc1r9ZoKaDl>vt3QSeXqFJxXNaq(L~hQL%ped?T8D# znr!~@^9>V1nfDZfciV73Ok)1kR5Bg#(xRMZ;~ytaHA;jABo^KJ3$OrG49St87IE_~ zbc>Rvpj6>-+*r)AENcoR7>;q%I`Ryg*`k@VDezBy2U!W`bIrBd+MoLih1MSM zJ`M+;#Y6Oyd9P0|F5XQ5fAtW?Y{#Y~tcfKe$NYBY$q49AKR&!M7lnzeM4gcJS{o=x z5bJ=Mdw@Y{4IWwfYS|JqGryRLs3?#nJpckwdi4$xD%P5rVY9;D+&UN)5@&>#f0x0E z{ciWO-?dd}#XPTM6e`2b#A1<3UOJj&P8S74Flmb?J)6wT>(HGacLB6T;>})5(if8- zRK^>Kma#0hdg`LT=Ca0H+@ZZEYPJ#P+#C(=_-r@!4o!bP&9$B-HS~WEE{pPEK=IV) za}+?OuVXwvCQI5)`ip7@Yz@De;)A=F!16HldH6mZq}iGYosR_Wc~LiM-9znWHuYQD zhoqRe^?KU8KJ;iiaw6^B{t#IY@p2cf4YKr5WZz>r!Gq;DiUammbp}+ddXOgpOPRU|0u`mxYcsDSxt<)xBaOrUQ&h00EI*}eN1l@ z1YtYm`LtfUwB|4YFz4!TsPJ_2dg% zdXskx{|yvC_O`cWLi=iitvhb&LDz==n(GDnpzeMi4Q4jyfn^cs~}2=!RxttR zsR3!pJwA>KJCJiremtM`FI%FR7pSr@eQ|jKUUrn!`x7#f2C#y;_^KT|f`KWaG!X&< zM#$Ne4G+%6FYPp&*<-qn%}Bu|-~hI^IC?)##L< zojKLLZh%)f1#`iEi+mu;%kZ1qhp26plGFmcJ3<`(dG=RF=*vLfGrxDPlk+y&ssd3< zhqrcz3X-G1DA;p^9bmtlWn`DaV~jS$h<@GJutO9zwhrRrV?`RAO))xpR%y4j?Od3T zr^neET*_Z9N6+PogyC^ulLT)i-C0rl@+xRy}`nFc4HxcoUX438%*p0yCyJxshpuo zNp9`CK8m?tlSh<@x=J&@a=YfcP5^i`7PJ2$W-YuuF6(CMmnz@+pkh{)Eo>Ygp;V+P zD=dhO)!GM$1X*;Qs)vw~hXMd*+)H9GdAEeOVLX&Q3!8T+kUc%w1SbdU4-w6B>vgb zo?qY@&HDBeUm5rh0T}AlP9}^wE#z9iz&Z{yC zf|k4qu9@+G<5FU>?=($A*9NKh?5gn<+a{48YYZWh{K-DYUpcHFz9P?pKmokQ#VbsW z!^PvFZ15i9QyIG5m@j9U)LWZ9X&PL|4n0M_J-6y@-EuSQ=F<#KDZQbN5vf6XZwch( zyuhM#{`h-ju5sUZD@weAu4j&8uV;YAR$+;4TyO!?I;<#dzMH7V=o1ne6w}!89yeIztw2RRy7ReN3bM&;%@b2h~SjBQHFN_)@^$hq2~!_*|My zX1HQ|nOofl1?5SZ{A1|q#LHRhp(D|L@IZkKgj}A_oXqDP=dJuP(GGu5TohuF{>&^Q zlk4P&mj_U@DddnSbC7O5N35t>dfT=-RFV&uv*g8K=;X1Vd8JvWg48tZJjMkWi&Uy3 z?t~9!Pel{q05c<+wH6UkGr+?a^fb+Qg!M2vovI}+tgxXms`6d6>p8_k(H2K8htKDU zrYX1IG`1g{s@W88X*(B_m7)(V@rCr^9$PIvgI(}!Pm9(#QaSBF$M4G`O0(qG){yic z0#e{;9ntV1(79>K<2OFi^dnHURC!Z_jaIXR@rduy_7{&UnjZpqfvB0LJ1SrETT;qJ zcb#nA6scu8%bCO^nLFDN3b?MO-Rdn_2r`VOQjRmP>m!6KH&dR# z0sUbu!oM@BdE!s#41)E0!7VPO7v}Fw7vpM&9}zFNAsw1=6?&4~kYY~ehiv2$FJxGm zVG$ntrM8Aa1 ze?9b%wh?$|{8t2IqH#LbbCUGK2>17hGxs>NzqaVB{G0H__RB2K&W^rJrp~*~kj-XG zg^-s{q~#kezr!1K#z$6}+!+O0;BC|s+-qnc8V*Z<6F{_wA@lsK!d`~D!IAK{w@4;) z+}5qpLP&|Vi24e_ADW7cE*#Q&=Ht^N;Wn%yZoa7rBo>hMcxq562ve{Oh7)$!0bV0q zd8~O~^oMaYfu`5!?V4Y*VDrH@)BXSN1qeP`g&Ju1W`H{W*r4n!Rov&N`ZdI;ZnQ-l zaR{fg!4_W!iG`S;gTBGryQNzSaMbl7#3(bUVVX=%?Wm;J?9j+~`(!FtP6Vo6IU3VLc*q$8l}eZ7&7Ha6%D||@=LXeu z=!_FVQ@DJ0L@2lKx*>@5YAd{jo3PL}PB5Ow;W3cxc_T?`7wh)B$gjrH@jA*u%`CV` z-igrS{XN#jl<#KA3aj79;mttTvS4n0rz&B6h?U;7mqf@ch4cLeIcpKfNlU4RL+(TE zpjqGc_m2pp^o>VRxDbj;wiv>q_Bfs}_q@h}6mV;t9803rMPrEy5lF3+UcYIENB~E%E7XFV$uchSgid zT&_&rQTi>qYI9#zT9k3lS#fl3ZOq`;7?VmZjdV(=3{dz`=*YzHfU;HUZ5Gd4r<6Y= z`qb8wb&-E-O%O?0iY%Ca8a-)n_zM!@mVVY&{>B8+UV}nE7|)p>oR5D+TCxJOg zAmA!(yFUgtLH~xfZxE07ji>&vTCSN-^6EZ#ZtpNh)v5wQ>jodfs!uX|i7LEOD!iio zz(4f$em5JHoF(BRMT5^|vvpYvS_ICTi)xK_Vn#XqQchs63oAZ?x}I1uRa~%aMs)wJ zS%2$5ct4@*g0Nhx8mtiw9|#|}9s|C(VGJK4!|DHxq`JAqHq7TctikoJvI%bM<&>)` zm0_@8?MIoDa7Ry^SnEMz-NKPNe#BG=igJTBQrDzqT;(qs6JdT(dbLFkSM`4_`SgR= zvvTIEwcVe1mZt-@j)ol4LSIaLkXiGj6l+f(EOOp56mVvPbPOR6J!`9KTE16eY50q} zo+u@f$OUN6|J6KNygZGdDIh2{Asy`=nT~XNSl+|c&sX$6v!yuxv()M&dv1QsTX3#L z5E)?s#u=-K9pw9Gm;CbPRI~O{JCB)Gd6Y-O^psFpXmxLG6A#p=1{~%z@fqcTF9@fS zvAz?de!g>;YSq#sUftq9z8zNlfdN%B>$%#psuKpQ{?0uWjyGhkFoN7i-!`#&G-$Xu z-goD$%ysT4dl1v}-A35qfG8=-Tfd{FLgmei^EOkq#{y#IZ*%5-|gi2v*Y3@A2w}4?yQnyyL@4`MFvM-5|znM)SQZ( z$#r$aKIywN0C*MEV|(f=RF(4*Bpv15tofkX{q!c2ZID7=zb11Anze9ii1k|E$^r)8 zN>9=K`IgCrRSld}C6U=n z&HUcyhEVak#P)19*z9(ZDpP&z{A!(XTL5Jew4Gc zGbQDA8hTU)Ip@CP)&{(uv}C}~p^AFZT45vx)OgITVz8_a9d9oTlD2tPRyue3nYidp zB+KHTRvIPU&#p<w;9gMo; z0;)8)Y;vT`o!>r=ULw8>HOp#Pnp^bGJpp;!|1*q@(=LPQk7}QAp=|n|Xko+sO z$o>n9{cZ{;a-^mmjlSpgbP=Jd&Ry-06Ys)l-f_{?eubMURW`-5Xl?wb*-*#^rL*^a*F zr^WZnKzQUSQn?j!^7P~H@3Np!>#Y%$b7x{t1@rXDMRTSqGBN|~{D&p3ui657$W@lT zltn28Nr1GuRT}_^!%30F0;(V0H7B<_44|1*$b8DSq~+YY@aRd^An}{qyn2A5hv76I z0U_pi7R~*LJFnT7lF7q|L#Kxu!v0XjSFsL2#RDZ`F>0@9WLVqobnBJl9YvL}T4fstIkG(KP6W%ZGu0;B6JuIP z=j9u>Vmc=9bEpO>=2z9WhBf&}7HQ!cXNLmk^!5H`F6lxMH)2b_q)t*4`3FcrV2ED zQo@KlyJv@V94skd1Kc86&^cMA?>D73s;e!fRMJ|N1jjUxX?p_+l|g4RwFgnijX&KI8zU4M)2sLUnH0b#p*m z#&!(BC07dog#o-2aM?YOm@%MC%wsz47$^?}#>jb;VQ2b^T{$9oNcq^qecXe`{IQ~z zy+7UmRejG9nG-piX4*K%Nz%!#$*pKO%bDn*t@B3(kHk-m-M*eF5@W;mD6V|L<%UZZ zwX|d@J{3>kwE(om-SSCr+%K)!sTMU&7}yN>N}3n7KgaUPSQ5)I$qXc36pgL%umJfS zyeroK!AP_vTbjaKWfz&-EEOeMa4GG{<6dbd`}EJ%)}6IZ*2MT1J=jjXFs~dSvwArF z0g=Rls%PT0H}zn=?=8_Xm1q0T@0HA18=?rjlU+C*%M;efEep+g)G~^Sm^`-d@ap>R zlpl%+EOS%tJAkh)mPc%)f~mkPvB6=O;oIV=$C~LU9Jva>An1hUF7&2hO`5x z2(;#N;y4h4#>h{JBToK0ekQiwof6!B*UMU4|NC<~*>UvenwVZ)!e~s-0L!h7%>Fzy zq^92in>Uq=wky6f_UW;q1;6A!FT5OezE61k7-jiIg)hDtyBS|BXZ}vBhMN7kL=ghP zQpJpg)ooB@3CVbT#Ri9{Ds2M_;1Y;2;Gm4PF<-^4onS1(JK#v;gvacsABA zTBCXKf2bIM*K+Wv5IB43N{mOEfh=TWgIN_OK9RsGF-8SS>#WWhJ*dDIl0*{dP&RRW zy}z1p*Hkau`Af?rPzOT>`3(KHZ_LE5D@g-O2B*2Emt02p$FV(p7nSX{n^0U1@ZJRH zC*jhVz)=+Ew@=Cc2XH};zI!noc$I>MKa5i=+3vHt)}Yk&G7w{~1m;FyR-E}X78SUM zE=;P20<&kzvNK@BI|hlnO53$RPon)k^=An8Kyk`Oqs^YK17R<^#9fWqlL zT55RqDL%=i;840>DyiJ-LTaUo^p(+Rr*02Hgw2udP~9T*mF*k8nBLnpq-fzU^-ijC zAJ3*GoN!~?274~DV8J!?;7IqWY=6fj%9@bPo=TrHr0|d6)2bd_RHNEI#h}!X&xL#u z*so#JN@`@iK29;73~U0zrMW3ME^nBKpW)7;80GWjMOD&6_3`~ND^A-PNWsFNoAJtC z;oep;)jlXy?2NtLRd<+_c$DSCQ&&HC^OcGIGUB+9mNNILKcsNK;yvosSrFBu1wCPb zGdxGt?Td1>_aw9aBB>?dCMx%BoS*lz@y2It0}0=?fWqPxgSry^-jEHleR?dnd7egt zHU|O@082vaRU0wikky?+D|q~Qb-TATV!Nw}Pj76~z=LCM-~4q_3zT%9mJK63_05Mf zRkLmYdsY@dG`2A`ws(xe83KmEleDXfH0uuxi8?4Q{-aRMt^t;yR4-U~yJmG|gF-&$ zUcYw|qG_l+iw`GUZ5za%uVT1tE|PUp%c64cs(dF~J_;$!9_n>_C;9f_h2YMrL4s0a z4~5=FX1g9pm_5{A!Kj!wF)sv>a&HFlJ}(6~dEWIIDi3-n`MEjHom>d=j7Pmx+Ft!p z#M<{!tC(sHO69Ysmd4##$#gID%(Ig{mEed!a%9P8zA~si6m8=~>`CJNcJ(I+_n^-5 zD?GAt_@TPptFurC#VxI5vI40^XJnioQMr!~s4hU20}8>Z+y@0eg6^jRq9NJJjI-6M z`kRh6Zv37}X#IgEtS)vk-l_rqg-@hz@AEQnwUS99>+h0U+_W$FR0r|Cv1&{FlF{2< zS@_(*Ew#St)x6vp(>C-0PkG2*i_AJ!x7RhqS=Q=ZQ0nATz4xe7jvfmZ^8Ea@-U&+V zpQcE`+ct>O9obsOT?S5f5abYgQIQS{5y7VE+<=O0C9P#%ws+E?dFi8I2_sZ;6WsZW zL8;pZfrNP(_?K}C_87(Xe42$b{%<@73pHMnvLvLt&3Jx8ki6Ulo3dV+gNkz=1fu;| z-Ci^(6@#@^ZUkmsoB6260k?h3+>x8@iaZ9ddAn!bq+XtISMq>^mgd8cm07{t&#NC8 z?Yxh6=a4T6`|3$%Wi6!EP*IKMiJGxq-s z39VOd#MDNn)&2HOy|#U0WV?EgEw3R8KIMgZyJ!2zsVvt>^f%R$M@JhXt%y@o#8Nzm;h^!XD z!p=&D=e$kAo4bV+Vhs7s`fL4@soas(?OwPrRPGxqlYv2v#H8NKokUf$hnl@T20wRL zRLxnh$U!aM?K`Why}Dg_04G}T8-d9^WnDq8VoG<(4@Bjiti$&z_u@nesdB$X{Q-r$ zZ^S^AS&fOUR;&Kpk$N-)eRZ*Ez$CM>4jUv5*BL5f7oHkPEg~oEd@||I;e;B_#LYgb zAw&t0gx1S7V&dEG)}SXgwJYj&eu$zU6g4n)v$g1+YtUJ8WQZ{^d}5WmkXl~lUTw9| z0#qqjby_yaCQfHEYmn_Imx+*s)~jKYZr*s$(PpdAqHaHUE}~awG16L};6iL{(Z_w15LxZaT%X!vb0iXP4V6+KstZc7A z-EJ+E*~vInJ3199=4D`(^x7<1sA7NBcPe*aOri^Dp6!^`Qc;!IUSSM(&H&ZF!9i8; z-5x9*7j^qVw#2c$RbJ3!9raZv1QoI!*;WP?(*61~Hc9v2u9qgBpk$P`pseJasqSoDLy=AM@pHL-ZPzyDU1F9v1R z9=i;WbSapAq_2fd;OrSB#QD;U*iv;nK*T1Dsw{6O)0e?9)uV|~AwZQwQ{Nb)hNt_C z!I|pOs!CFSR;QAbdn@yEH)3m&TD&QkJ=6=~lkcH+*<28P+igA2WlJ1?hX~cD9z0phB>VYXnxex3(isGeGrKIjA*1ka4PcOBw66l~r2$r(<<{o|CNW zoRrOBW_2a-vUikmUz2|BH>uaRlqsMJEgBZvB(*Nh6k6mx8rPxwLT0H|gMeP}9LU5?bg~q?H3yyHi8t>f!4&V&;*pgw`P2FO9cvTC|ec z*)=#4OL8SPTZQ(-S5`J(el4C9$K>C>xq-1u0NBiya0Gm@b=bzL_AxZh->20`YH@&S zDz%;;n-rg_*j0yIwT$%N zQ@8-3hXTzfWGgH>wCv?h)>kt`b=Zg2(XSH`Z?;#7O|OAdWx=T$E(N`Jy8x6B?P4Q? z>a5^7r?fH7`Yb2qu!Q~l^v4d)>qIL|OPO2M%M$L<)6XeLCz;h)Ny;mS06s>?DMyis ztW7^;Q0%F0&pK?%X!US3Pcy~7Z<=IJ;Z0^OBV?){B6MIBujIzQlFsu_$kZgXo*bh> zu7qsgG$Ps;JDEUdp$pJqn}#>RC|-+BqCIQhd=>UdCPHg&;S7B0lsQp{A8Gdis{2bp z8XCyvYN|;2LeS&Wyt+;m>5~tM=H0INRGS4kyX~90hB+T>-)!7R^^VKnSaNX8QX-4a z!gz)i#U%<+6`bNt!Oqq)B@*ruP}tZnnYINflyGheW`OGJ%y)HFwgYW0`|X>`LMm|T zQRj^uvL!ySy2{E5)-pW%PkX*`DL8^tc`JvkWvE9o>njORl?ysJ<-1q)|;)~q$ zvmX}ib`f=0jK0X?Kbq?HtWULN^Zbl&ZBwO1Udh`aDOgoH2LU0dmhh)}UdPXkMy%JV z(&||CTuSh24g^m;EV|3U=JBajH!#L^MC->QJ_WKpz1y>{HeW7lVor_DBN^x%4(o=l zSraf-r1ne&3Q!&T_i5R{3ex_5Zk@dhDn4b?_RK?~c_W)0pQuOMN4YnBy%3E3lLqc4 zMrDP;P)IGXaKcW+`?kT%!XaxJCfx_)4&qTtzfUdX1_lU(CcFauOyp?5m= zZeN4up~B7^x%hk}CEK^Fn>VR$&ss6cLY}=nACQ2-+lNdN-3SR1*p!({boUAK9%Pf(4!MIg25LTQ`M!w;;lvLt@s4q?Y$fhWC$+6cBG4ueh@6y{y(U zZkVW~BpqjVn}imrNQVj)RSA)V*7G%Dz9BPgs$Si$17qDa-;r$Jf|blTXEZRTcYD@V zgkll_<~iAz&>H9GO}1}z3#ZSu=Rm4DFVd+Xt$ZQa2dUM`BRK<9pLR%;&ua*w7c8vG zcD)Rg?LZzDH-916w_wNDQ{A5RLGLt@Ac}|!)LMpx3iJCyV9{`ha!FJyKy}zR5I#jx zi}0yrfa-X*M;KMYd6JOlO}22lUG$7KoT}%w zxaVs%+bf>+sBZ_hgQ&Cdg3#z)~ol>Nb_1(G8tK4liD+P8U zcd-P8C3H3a6@OYUN4SR&9azJ@9H9k{(9#?oUV~QOQMQrU#NW@S*5~bW*2hg5oe}a% z-dN>s%A3Ae%g6&7bS;{~ziPR3@^T+4(q1z_^~n)xQD;?JF>F52c_p+C21RGnpcjJM zaf*FbmLC%3Jk8**L2hjl^33?OEdkHyRHU46Kh7>;l4#eD+m^HaLl?g7zS&Z&ID_xO&r}2T&!ilO^$1T>Ymi9^qI+y?4h2k zcPb)Q5WB0@zdhJofri6ruEY}Jthl7vH>qyV`Zq?YJ)aACp3gh4axa8Iav4~b=c|eq zD)&z;R49o}FEQfyL zQ@wAy8yH(#y!~WQEN)nIs?j&6ZqJaftgnF_TfmgAYtd6ZT3vvuTFXFC@J#Cll-1}~ zE*hXxdEGjLEuNFiie$T4$VBz%&PK)u5y~1g<5S;-rRJH)`WTm_$UBs*8|Y&2jj`#- zS_a}dcGe9e=y{yICO8GDa(`BAvT!f2ZjXeP+BNu~`M#1_l6~VtzqpSoxq*{)eK1sO z8D6iS)-oYL6&7n5Q2PeZ89?%Ikb<5&k?lm1@$)s6q)&uT{JJhS4Yk$%=1m22YT$!q zRx-<_;OgDpbH>a1JbBe!$n&@qEL*XB0r5k2*c1X(IUl8V7Fh8)t*LTqvx)jx6GFKX}uKT9*4&9AOlslU&1;x zXjp|F#lHBq_sz(xz9+L1^RoU;YVmsXXt*@dep3aOTFVIVxidV!T`l}eypro&tL~h3 zUmPi$2l8nev0&A}*u-JZharSzxeR1A`x=zmbNeRi3(c2bi5{*0CdyI16tn=<_jA>% zuJQ}+h_#F;NJ*(xT`*Xx+@A`Y%HB@K2hCS!(@?{OV6>7UB5PBuvX$tb>d~yP^-i6z ziZ1V@hw6k;U4#onRDlkTcG)+{jxL)T?`OD2zvNW8KMy|n4N#xW73^f>=Uq^0aYR*L zf}9V%+w~mgzkSw67$x7PkmuopCG*_&MsuF1-6;sQ6pM@#u@zg(yq{kp+R27ARqjuV zRxzW?ZwfA#fuNmu373Jkb+hfr_B;n!-^VN;pvp5~5uw7-NzT*u+x0Sp`=K{-r9qJf zMrybr1XUC_F#1MpD{pU05Md6AS>GnLY&CigjPQQGm4a8N z#f-On$badlYQ&s(yO3F})t$Frz^5hTYm)76Td-`%rY!4g%~#Q9+EkHlpqGL|s_GU_ z=hf&%PUFa zl_<_i23IRSZ*yf>mX-ChxsT>J9|8^K3hQ2?$~|%DXZ1n~_XE3zy80r6dS}6|88c

j{xmU3cl^#k|?p18F5}Td}r%Y58dMP*Cfy=YMDxjWzb`i)S&TUyaTnP7d4O)Xz zLvxn?ep%l_sAw(2gjOBrtCI2x+=ZYg-B*>nJa_xnrp=5GC>&v{m;=Lk(P<4z^)?O7 z4UDx|(AO0!8Mz4Df?Y!nj#=O7oxm_^X4eo#b@odJIhWJ64>>?p)TAYPC8M*IndgzM z9;TACWDj*(Y?7c^I%Q!Fhd8Vf~X`AZjnL#mrMc)spStr1z zqp9cn_W%GO07*naRG`#Wos|r$gjJnI&!wG}%qm*gZQtbJnDx!xX>3tcQIQfJjh;u& zUIp30A+oEW)4Gew9a-hxh}6>Xd9lnwnha9SbtZf&k&pzN@j}SFTJaet5Ugajm@N^B zt?Z$)e%eR5kZ10p2%p4ahJ;bWK1MDC37;V1)3`)Jzkwq{hs36*z$u;c!1$;GD;a*W zMJpMZ^AH!_DSPIu+xA!=o64lE%x~2TDBNMEaF;MbTZy)yRKIE%tz_t9drLAa>$ap8 zIhdUckj)|*vB zUwx4opM17NZr^16#;_>oXAN&^@@!PUQ6k>8GjoFm@}(e-0I+d3CqA*t9Wp@m+ykQ{ zwZs>>MRgXaItz)=Iz(kF^_~7n2&tnUYHSG3&73t0 zXWhc_qJ@efU>sPjkl1u`oN@vby$JM|f$qWPx0g{vQgN3lk*{~wjgYH|oeW*(`EUR0 ztY>!Mcj~1qW%k~qYtR>H2opUNy9@cc=8K$-Sk`ZnTBOPv4b)V*kAT9_aBW~s8LK74 z(|tB(s?Z|B7B9TYkBytN;;d!zyq*b{*2}=!OhM{xWYibAEcnzNJ}p)ni$ZWrD&jBw%;e_K?fXx4nxOXbGk zZu8L1G!==(PG!o z+&Z-TIxN0%M0Q)4@Nn4J1pMqOAz5oXsto1Z+s!B_=L#5*!fy#{T!F1xi{qv%;zCg_DW`= zYpzDus?T8gJaKD0dyz3|D&0*)2Gn_MVUx2!>IU6NS$tS3cSxG+TvZSC=aLs)YY=g~b=krB{W9{lUTSi|PcdPcenARIl^w)HF7H~B2e`kmfM z&)-zClSRYW3>?o#aJE;od#}Zm&rE97Iapc`Rhy~Y_ttz#Y(0*^f&+DX^lk@Fwl6`c zeHAQR2_(e449xmHlrok3yb$zC_fB~@vgKFm404`*l$`k;KG}w#x8*y+#H>g3QTu+X zI;@i1o8sU}#Z+#CdG&7>(mkI&S@)RtJn8<`^Pdp(wR&2@J%kZ1K-YFbI;L))A3dhl zYtUCeBD3;DW&Qr}C;^4rIGaPEHHfXY&G6JN0jkxM&tly`10{L=VXM=sq4&m389HTF zDzqNnh?S^rKMYE(=G!jSowuL&Mpm*tw{Nm;NNSDKD7IG;pgJ+C5b4>djAy9Us&)_kP=%Jcged@AOL%(Gr|p6wNupwtp`NFt%dO41A@%(^jo zHD|jb0nhX?g$rXlRmBP>K#=oGo6NP)qB5$VJ6ZCLUaQhpM%rGT1+A9A)M&%!twL9I zJK4edkW}Z}?#@$I*1d4c&K&MUHb-YaL!7@}Pf57j8hZ%=6#?v2p;gMNeh79lTi+?O zlFZ7wHK{e%1PiIN`pgX&KJIlA@1Qm#Mo`JQ*MJ>lFYw+Ynp`C1F*?8 zV#{S<+xa3_#V|P=rhJI_)SZ<~Pb-`LcBF1E3VMFk zE386qTTnp=>6Hg7>(-=Jr`>4w_hSVq2dEOURd&`gQx7dZe@H&0TVDw+vzGBIL-`E9 zBcbK-NkW{5%|=_)55)zg%CLwBWL8?qWZj+A8fUH$q1CrZY5|9T&2MvBy#;`kV0}ei zq&UM?#R@C>CEK6*Z$(Ac?+%H!bwilsb0zjc&hk3NVe!DOA=RTwct`3s9}Ba)+^gSkzj^e3FTPCzV#2&DdoS?^AVX)-qH* ziP?J(jHReLivm*XB(f~TSq8>h7I@-@t4BK-r_Msm?VGH-Ae3ED>*Wur+-Ked@X*NQ z`_#DCqC-f?n|Q~gc4JGXE|MLN#w5G@pyBF^8n*J%wwYEr&j z#5~ov!Kf%!kU6e78$R2>@m73(`v9Y$N`nY{B-<08vhFtDvB(c(6K4yTMU#j}p6UFh z6K@I5i@?S>rKTiw?&k1S-;R_60{`L43;d%x^wPXqxy^YfzsLL#=>&bwXB(R`yNK{`uV zh4&myGArvoO_`8dM7oca!wPRk+HP)D4Iymy$WYQGRHt1u1PYfwN7koPops~EFqEUeWHY8fIgb|IAr8$0p}R%7oV3xEW*?t4P5qc*HL`SYJ&Ab(sYF zRA&k4?gonSYbC&L$hPnX!_`lFj^A!#A46u9KxQdEao<$idLekEZZ9F|Yo}^QQ)^`q zVb-nRPiEWD$vTg7CN|hqB`P1Ctz{;{u*$vCt>DD1fls9sJ-d=*F-WrcnJa*8 zhVGl9(g8-%vqWrU{6%0p%;w@>=eB9+GSDnTLr7|hsr{_Y$c``fa&yK2@yxo9KX zzVX}3%Ozk*?kVd8bDzCGtlyDCe9RT6m-|=hG63Qh#M5s#X1WzxY|YRJt)^K=693iUP-RsufW#HBwK4nvub$48{GbYwo!`^5E7eW|9 z$#EG<*o$-oeYMGFg?aG(w;GhzyhzM5eQS6Ey`&8R^Nddy{!njZsE1ZE>W#cHPHp{g zcuXsqtXua?X4?Qtv;q_F5=0L>YZ)L*_Rv2SO+y)*f_{df4`=1@!VS56d5KZC5>$Em#d~Y8*-w~fcJD)9~gnM)NL>|fD zH*n_!2tim_X6sZHdrFIZ3S9>F zc)|UEi^1zW+#UWN_}xDhzu08C*JiyGRCT)(p@bgVS@A7_scFHNbx!OmDx&)My^&}3 zD|H#l%TLdG@bgI!zWxJO8ZxIK<)%zQ&jH@f*Kg}gWNnem$~D8R2a{S7u0z%`@8?s< zSxvgfU@fEMNvXTm0EX8xpKo2ceHDN_(|-cEe|3l#g0^|nmhGF^l*ep|t-LKkgz4R$ z^|+=>u!)1ZHu^jX_TfkBt*_V<*^};7%}J|!pA3B3IJ=_$2?gn6Au1}|gQZNcx~egV zPzHFkRp`wHrEaNi&pJWx1SR%QqhA_?dEI&lP%UaL<2`xDx$lNgmqJ@Sf=%OW*Ahhw zFFbGJUGV5|xZ7Fs8Ah!N(xUQVy%6p(`$m-QN^qf9x92-2>)!L7g*?xk30ApRcOf`) zZzO=;eXg>GQ{shS9f8qUjkLY?F2;Mj-@k^7c#}U8%dh|Ee7J=p!iA=}IMzQw*$YxVWh zdSB#JK4hJZ)S9Gw=YSm!X6bIwsAW-*4kD~sFxYGc)(5+?C(k*gJ;P&1{9(a0VxG*3 zVP8uSp${SCOTqD3)9mw~IO`$!v~J-buj})`C@S|Zr2D!WP45MLmjDH<))B(mIXnvE zv~f?;2fx+voQSOY!Y`D~sQG+wc@lxl^7w?fw`$mh&G%HdXFaxeDyX6YCEbCZp)m0Y zrvPDK)X0>Oc|!Xsth#k0f}Z*Ot$hZkYX9`ATV{{`j|v$RZ1oc`svZzpl2_z{2z%UQ z4l2@;GhWss=Q}#Fhau0pCHRgva>j+h8if1&wX~gc8Q3&01nWHC)!R*e^uC6Fzu&(l z$im-(9sKey#P9sY@MnK*A9fq8WU4(o^fIuNV8w^s&2$)Z0~43B&fOruKOW#ox__oF z{|gFt_!@Bz@VTMzW10M?c>bW$Di8-n1-u$>7mI7eHX*WDJ-Rs{Oyxt?sYtD^UhYGE zRcj9__tGG|{YU}PXV4CL`!V4@S87Z2aK|%ETF)^Ler{g8;*;#KX?zY$pARAo__S%* zSKqBeXJtL+9T>K7R+W1vLIm9w4!C||Vicg_Q-`i(Zov`-%Vtzk^RoFgk@6 zDACSgU#@>1f9)>YHC{a$?D#O%?O6}*ot&DmGnvI0vq{KvCq?Kyr;gB4XOej-h^De0 zRx^XtLUbE~&znei)~f=r0Z#+Ci})k6KtaL@ZF3oP^6Q zD=0p3p3Stz@&T%a`Sz;TaP&N`p@;f8EPW2&@ZbNz-*1aPX-|XSdm+B~XCB;H?6z?H zMIh`hHlp2?S<9>a zF)Hhkz0*536$%pcUdiLRIxS)5G?Z_^H43kAAODDbc@eL390*;Gci)7yaLlvbwyg-5D7#L8-RId~^|*+*8)s z=fCfe?s0a^8Z|xK5A9yyv-2K&{%hfbVen&=)35W**KSw@hnS1xj@Ya z6#5{|`aU$aPNcd#tmVx6chV41&$YxJSFN>ey8BVT|9k7+f1>~Qzlu%8ZhmnM(or(& z8rhx?uB`KrTKZhA9Q-v%t@mf^uyxxj)uShP<*xy+8pR`Q!Y{uA&xAoIqq6KdA*$XF z@JZ)UTr96d)xLNnr+PH&9K91AT(!O$IO8s~QTrzw9e2-Wbod0t*^zi8!HmNBeT0gH z`!eS#fGOLK4x_x7%DvtpyD0G~>ya3>Y~t`Ub=rl_%fLEkf!b+H5Z9~;il8Wzty-r_ z-UJI@y9~rn|0I4NH@^G(e5f|ZZ-W|s@;2b#g!@4zPVqKZCHBcY<86lVP1{3D%%GUz@jTvkZvBI`rbw+ z6%bixBDHLdAE(bTVHAD8s-Gz8GZ~g(VZk>d+hOPbji(2SFEUAZ!{7UhUw(v3hxkbvmLh#952=3dblkeg@)7uf2J~s4F zONg_(6!gy_>}F9GY-AFjvQ9eR$$716+s1R-4xeD*NO0O?75TjuaJp(PgFl6luUTsS zn^6Cv3;REQ?Z4e<@C(2HKd{OP7yM-)Ftx9us<3f`u74`YJ!L)J{I>_E>u;hw+xxmq zUtw!E|2f=!NREG%NIxX3u6AP|G-XFGx~;!^4=r2gNp*YHIYBLwtzDDo`#-|zKx7c? z{5MH2;LljDW-i>J&Aiv#_OoFVe)fkS`jM9CiyWJ8uf#ec+w(nYYe* zV?BP^k*`9DxQQY@qa6`Xic>e6Q2ic=Su)3%?g0&to6t`K?z5 z@IihL9vKtk$5^=jn%&pKzo9$ibuGAs!C~PFKDj)k%leZWAD$%P;h?eLtTsLxV?bYBL? ztFQM;0vMr{FqL)w`47L;?P$-$0EL`AQJjDHRbuC%JqSGIC=6F-JSE*fV)on?g7sFo z>$S47&IU_RmZ130@~@0X$i38LdBuVT*EiL_Rp7gK7k*6KeDpg;g8Vu;f4Ccj2Yk{8 zzwTo)ANGG&Jor)f^}F8&KkA{}Yw_VD$6XHkEvW>itf!v+{*4TI#EU zqGAOoy;3^P=EBdt4Zmy&gWrCiAO1dH`tv_$WrH8g#J}oNiz0`MPUo4Y!_c6o}+PkcnyU*CAb^*7V6T^llwTt~JtD&Ud?>0L+| zW|D5!IpHjv*~%Z5ie9eRC|RCV92(C+wBxD&pr8Ehyp7DYulN|BA}+a*uzZkZovhLF zb|lw=%V9qwx^Lt0=dTPbXD>X{Uj<80vM)>)wL%{m`hoeC77H}wAI{z>>m)sse;ONU zWnu*%au){>-yg}h(Qn7@0qQ(&_h)|p;q@7Q*Zs)lp#O!^C#${aUZ|4zlyy3c0{bXS z@Fu|CXhrR3$`Uk>D|VIg(?I8+c((uZ_xTE0{>gsuE5Gii9`8qYd$9g<9{^6w^eQYI zmDe=^D(kg|oqXnAugeG&Jyxq7PG5cu`^A^hm6~+hfN0p!3HDg9zc_PaXjW?aq@Rq;Pv)rZ{sb$1DUdfn<_@u8b zzuvujjKUlovrdXr_IxFblFk5@wPx7k(n@IQTRRW>EwRbt5@mb9)iqHe1oZWt7r)&R zmwSt#tgJ_!aU-yn3&HBe3Z?9B1#uzT5!LFg;3`=7q=NLTJ<@lD+4vgpWR_y6xDvvg z%c70~yH+{8_$}6hB|c@H2c!JibRX}%Q=JV|QL+7Z*Ig|JonJ2Ywx7z8aGH zc@;i>P;kx#`ghzE3Zuij!4xS!$;Fl2O_y5~r*G_@MC^raJm-FH6 z{q*PMb?)@-cWmk^Aq7WfB}QdEwtMo=-s$i%k#DPO!XB^L;_r8ho2`g~8cj8ml*?KA1VHEXFUa%8cEWx7A;q=%S zwfjHc`}lRJ_!4oC-@+pNy0^{e{%gL}Pagl8V|)0>K^49jRQEF6&+@jZj4bkya$o)W!xs5d6Qd4`UR5{!v?@2#ZcWRBoit;umWFMT z?c?i_lfqNwo^=*53oC|9aDKL?iCPc^dNoK`S3baxq-g| zljq!Q)#%!&cs23KUhCfFa&Ww+q$o|5d)7I~EVq3l7e#y-sD#$RMc^p82#lY-(mkKS zH$^8nP=g8~S=_K+IK-CMrRDOszJEvXslQ`WorEM2?!DyjnDzKU5Zq-F;SpU1PJ9aL zXPXi&s~o9sQZkFktzg{{nw94{=y+~q(iabk^}kBA??hEc&m_X9`8*o0;kZELEFBS5 zX+U=ZRMtZ<%3lUb|HNmvRl_TH#?jeaDJH$ob(3`O{R5TzKTrUF3pf7l>yDrO^*<3@ z9Nad1`dxmYqQ{T8DknVA*AF-w2N%(TyX>W2w`#^$UIb=6ckOezvi@B}xUcQcCq!HD z#jigEuP^;s#nf3$W{m+5D?M;#vsGf~2tC;91jEsEkFV{m(Xc;0s`p1L*^Fg9c=U*> z=T?o>s;k1?ompwbw$Y4j{JHbsc%*QDfr$-I`0AA~@Q=-!HZS|yAgD^+88pgZNtcGG z-df{eW*fPDdS?W6uuOUE2Dl3hsgFuLlb~{&j0`o+DSw~ zRAbFc!K||pTG6gStz=xzgeVnPn=2ULL1$`;P2R-*6B{Jh>P7(CfY4LU>%@Bj8~ zN){BKydoZz&>GJoq;0`YeUn@Y+GYdh@R;?0XRh<#YwCn2;t^-l8r zNxEOLZTJG2^S27Wgi5ObL0`jZ3xgA%2F?@_R6#Al*`4P>WMLJF9JqHHwhfwzllYW% z0*um)F`MykRL7^}V(3 z+DE%!sdMY5velIc6-1~`$tjV88n5%%3ak>g>MR(O zd&+v6_92hyx9ieDe)7-t3exeQX?V~D&z{PWT3!XgYl=8j@w1U`Q%O3$ z9-)_1Kx92)^6@tY!34kZiB!rC^myK}_3*tVbbK*uD`PnZ_4_ieF_RvlyS`LU7{K=2cpK ze<6rp8^+)_*lqX&uc5mT9F{Ossm_-j7k4K({w;=rT?R;U-*8(vRReA5B%u>%8SySs&2AS?M zb9}ZJlk{_Ir>_@+Np5954x`EeJ~h7`2;j(e`X7%^vwzx5xS*DN=<(@?XZm}&r?(&4 z@HhX2Um)DM9}-`7ny)Kg436H(^^`6PXWC@3kNc#Zc&3y7H!lLSPEEh$+5B-`25^6W z0EOQL)~kc!0(bzsRdjI?6F|fY&R4nUz&P+xNG%^^F_aMDB8X$j87FUKs7G~ zv+j;h&Z0qVt_Yt%z1-CsnL9HLAr#f9v%A_hH#FihEPlsV^Jj0`Kl56S>R@&a6Jz|p z1Ah#Ky8x8@um~0^*3dsmc&hm&=O#|p{m%38_KmaUa{-(lSp=W3y9>d25xA*6U&n9y zB>yhQ^UG87DH^5gWR_E-qZd?N{I8Q|4(fpCMGGjT`||oFxs`SQ{;4>z!unyG%ig

DrRkLq0+bfwdzB}KY<2``C{^fWR*b-$ra&8SA%zy7aQJ)ZHmx(}8^gGgh zTpo`8No^Q&M$bAMhMfr~p1&>~zwg!c(HFv(8%6lU1HrEc+8-~(`fS2BzdBlrjEu7G zGa9)Gc#Rb9UHp;}>DP7nbMu5{-3QP_&z8p=4H#WIKPJ>QP>Sese_DCMvB! zXg&GE{H%ZVB}{|{xoU*F{@fNrZ^8WBfe*rbo%uqL6sW_`9TlG@p_P|{S$Ax-b{B$+ zy4{DR>b$rpv&MiptYlWQeI?vq<&g_;PN4E)1hiNWMJW4#GE*n2`x%I&`&73#vgex@ zD?t9FJp)v;?n-Du@I%%uoK}On-Mf&Wsz=SP;f;xQv6T^`3&REuemI|8d*A;A*M1vI z9*wa8*I;2)k3#&rs!apE?tKzgOnyoKRLN2X*;0o3D7g?!ax3c*Jpcqt5fLruc3^cg zL0Pw#QFA5yOxHKm?LcHA3{K@zEE5f-k&37afpx&X1>+))_guNw+iX5 z0jlm#NbV`?Oy@q2RgQ;b`7D;Ygk-Yq1%P6WLk~h$Pj}wr@~>gRp_XGSO&%yBC}4} zh4D8e2ZEI75c{x!Q{H|9NabE!nBgSb3k`=&d`PFCd$lG!F9oyigHX}GeQw_nk#+Ie z5_QF<64dQ|l37e*xz8F(i0e7VyZ?9ojRw`k3Nx$=&@S#a+X4iqwyRjJf8xe(JddV2 zeh!sH9C-VN3{cIwPw#ZFfip!5%`OA|h2W%0ic^oGQ;sqwZ9QHFdOMjquv`Idd+*GC7kN|Cn4*3Be0VFRp)t+0_c<6%DQ*|v^8nS>LP6eO`p$eANh)h7-;p-TNkBI0(n_0PAyYT7a!1-9!rFk)l{`7jY5@-4R+t z1(5-&S+{<0udC3iY#0A_4b_2g!KK3@##LwuN?p}i=*&kGJa65M+4s9^#5Ul~o4U;g zd-E!HUW=BO*axV_kY^qmAuk29?m=k54xhYo)YPL@vr>?=B2?Y(!oK@l&=38gi$?S2#){TSzi?;-9_m>E(J3{HS1o_S*EiNm7{CO{LZSO zMD?ilP<_Ft&_8AGbbDkfsyyG}6Ti;mIieSOQ$1>gmUy~XR+x%is9XpRQ577JTUl8* z!zkVgQ)?@p?ac1V6z;{@9ih*@=|;3GK4HvGNqo8!M)AM(+SACT$9Qdobe}nbNZv9a z0Tc*3(!F=zYsWt)D=X`@>hf%VVNWzoQfnAyjsM>Uk<}*&4?TKgqpm9!w|ZF3x`7F; zX)iMdP2GD;1w_`Z2%i{4sJ_Tv-CiwlN6tPjtI#tC{;AkT7H;2I3S^N&lpq8jftwv-_A?Pi>8L&civ& z^|^&ZIMfTxZDK9sMOB4)CJ}!ItK^ay6IofWSeIw~OMAeRht7B)K_`{_YS)1RdZh%P zz)7~VdT%HoTD1VxEfo-1HyJEo3DI#1_bLi^=j~Ta`9qgX&Kr5NK*DI#kYxK~@d*P~ ziSl7?;8emX*hux#XU%CJ{j)D^`2u8_|j}KdBVJ~*R=-d1TPEfX|y8Tfzo!RoC!zb>aO3@w)4)94f9z-7`I%Lu;y*h4 z_Vo<#Ce92TEU_U2wwpn|i0NZ!)J+^z(kmOYtlz|^xbo^R1D9Nh>ecNoSHca7;Ucj6 zps)BI$+|zW<-bovc~|SJx6nV8*$a*S2?5ptDgJe6EFqw9T3>asnK42Da#JwtmwTsh zA*ePDPSsvPt*)Rrb^8oTEjz0Qx(viab$gQSkLjEIrJ&AtKr79#nI)gicBo{#dbu;9 zi9jmTDw#Mu+oj4q>t^#^DT{aez$l0~<(sFn2BoeWg2+Oup7Y%qIjDJ=3u^h<#eRV| zbB4tgIm*CtKHRfRF)3B=koCLxWL8(zws2g~S6GDxBeVP}^yafAoO1No zsv+xP$b@_$Sh;s{_!LQZ_9T@lP*$YppeQQR#ug6U`I4rJH0!r}r(@-43o23z(v)Yg zs7L*V;Og1#L*}!GIsuV2U$Zi0?xb=DvTSgqy9lRdKO`g-UkFZ>DbfcCt61qSVTFlL zS+~F_^=$VWg3Xcbb+NkQ?3+c^KE+h%@^11X@T43R=L$|D%5rhKT)K?cP48FYrJ&j# j11>7}#HOsQSF8U6brIieF4I)T00000NkvXXu0mjfnwtFL literal 0 HcmV?d00001 From 640ed5a07dd9a4a18677647f12fc2de5fd2258c1 Mon Sep 17 00:00:00 2001 From: Aroy-Art Date: Tue, 7 May 2024 23:09:00 +0200 Subject: [PATCH 3/3] Add: htmx lib v1.9.12 --- archivist/static/libs/htmx/htmx.js | 3925 ++++++++++++++++++++++++ archivist/static/libs/htmx/htmx.min.js | 1 + 2 files changed, 3926 insertions(+) create mode 100644 archivist/static/libs/htmx/htmx.js create mode 100644 archivist/static/libs/htmx/htmx.min.js diff --git a/archivist/static/libs/htmx/htmx.js b/archivist/static/libs/htmx/htmx.js new file mode 100644 index 0000000..e75f84c --- /dev/null +++ b/archivist/static/libs/htmx/htmx.js @@ -0,0 +1,3925 @@ +// UMD insanity +// This code sets up support for (in order) AMD, ES6 modules, and globals. +(function (root, factory) { + //@ts-ignore + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + //@ts-ignore + define([], factory); + } else if (typeof module === 'object' && module.exports) { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals + root.htmx = root.htmx || factory(); + } +}(typeof self !== 'undefined' ? self : this, function () { +return (function () { + 'use strict'; + + // Public API + //** @type {import("./htmx").HtmxApi} */ + // TODO: list all methods in public API + var htmx = { + onLoad: onLoadHelper, + process: processNode, + on: addEventListenerImpl, + off: removeEventListenerImpl, + trigger : triggerEvent, + ajax : ajaxHelper, + find : find, + findAll : findAll, + closest : closest, + values : function(elt, type){ + var inputValues = getInputValues(elt, type || "post"); + return inputValues.values; + }, + remove : removeElement, + addClass : addClassToElement, + removeClass : removeClassFromElement, + toggleClass : toggleClassOnElement, + takeClass : takeClassForElement, + defineExtension : defineExtension, + removeExtension : removeExtension, + logAll : logAll, + logNone : logNone, + logger : null, + config : { + historyEnabled:true, + historyCacheSize:10, + refreshOnHistoryMiss:false, + defaultSwapStyle:'innerHTML', + defaultSwapDelay:0, + defaultSettleDelay:20, + includeIndicatorStyles:true, + indicatorClass:'htmx-indicator', + requestClass:'htmx-request', + addedClass:'htmx-added', + settlingClass:'htmx-settling', + swappingClass:'htmx-swapping', + allowEval:true, + allowScriptTags:true, + inlineScriptNonce:'', + attributesToSettle:["class", "style", "width", "height"], + withCredentials:false, + timeout:0, + wsReconnectDelay: 'full-jitter', + wsBinaryType: 'blob', + disableSelector: "[hx-disable], [data-hx-disable]", + useTemplateFragments: false, + scrollBehavior: 'smooth', + defaultFocusScroll: false, + getCacheBusterParam: false, + globalViewTransitions: false, + methodsThatUseUrlParams: ["get"], + selfRequestsOnly: false, + ignoreTitle: false, + scrollIntoViewOnBoost: true, + triggerSpecsCache: null, + }, + parseInterval:parseInterval, + _:internalEval, + createEventSource: function(url){ + return new EventSource(url, {withCredentials:true}) + }, + createWebSocket: function(url){ + var sock = new WebSocket(url, []); + sock.binaryType = htmx.config.wsBinaryType; + return sock; + }, + version: "1.9.12" + }; + + /** @type {import("./htmx").HtmxInternalApi} */ + var internalAPI = { + addTriggerHandler: addTriggerHandler, + bodyContains: bodyContains, + canAccessLocalStorage: canAccessLocalStorage, + findThisElement: findThisElement, + filterValues: filterValues, + hasAttribute: hasAttribute, + getAttributeValue: getAttributeValue, + getClosestAttributeValue: getClosestAttributeValue, + getClosestMatch: getClosestMatch, + getExpressionVars: getExpressionVars, + getHeaders: getHeaders, + getInputValues: getInputValues, + getInternalData: getInternalData, + getSwapSpecification: getSwapSpecification, + getTriggerSpecs: getTriggerSpecs, + getTarget: getTarget, + makeFragment: makeFragment, + mergeObjects: mergeObjects, + makeSettleInfo: makeSettleInfo, + oobSwap: oobSwap, + querySelectorExt: querySelectorExt, + selectAndSwap: selectAndSwap, + settleImmediately: settleImmediately, + shouldCancel: shouldCancel, + triggerEvent: triggerEvent, + triggerErrorEvent: triggerErrorEvent, + withExtensions: withExtensions, + } + + var VERBS = ['get', 'post', 'put', 'delete', 'patch']; + var VERB_SELECTOR = VERBS.map(function(verb){ + return "[hx-" + verb + "], [data-hx-" + verb + "]" + }).join(", "); + + var HEAD_TAG_REGEX = makeTagRegEx('head'), + TITLE_TAG_REGEX = makeTagRegEx('title'), + SVG_TAGS_REGEX = makeTagRegEx('svg', true); + + //==================================================================== + // Utilities + //==================================================================== + + /** + * @param {string} tag + * @param {boolean} [global] + * @returns {RegExp} + */ + function makeTagRegEx(tag, global) { + return new RegExp('<' + tag + '(\\s[^>]*>|>)([\\s\\S]*?)<\\/' + tag + '>', + !!global ? 'gim' : 'im') + } + + function parseInterval(str) { + if (str == undefined) { + return undefined; + } + + let interval = NaN; + if (str.slice(-2) == "ms") { + interval = parseFloat(str.slice(0, -2)); + } else if (str.slice(-1) == "s") { + interval = parseFloat(str.slice(0, -1)) * 1000; + } else if (str.slice(-1) == "m") { + interval = parseFloat(str.slice(0, -1)) * 1000 * 60; + } else { + interval = parseFloat(str); + } + return isNaN(interval) ? undefined : interval; + } + + /** + * @param {HTMLElement} elt + * @param {string} name + * @returns {(string | null)} + */ + function getRawAttribute(elt, name) { + return elt.getAttribute && elt.getAttribute(name); + } + + // resolve with both hx and data-hx prefixes + function hasAttribute(elt, qualifiedName) { + return elt.hasAttribute && (elt.hasAttribute(qualifiedName) || + elt.hasAttribute("data-" + qualifiedName)); + } + + /** + * + * @param {HTMLElement} elt + * @param {string} qualifiedName + * @returns {(string | null)} + */ + function getAttributeValue(elt, qualifiedName) { + return getRawAttribute(elt, qualifiedName) || getRawAttribute(elt, "data-" + qualifiedName); + } + + /** + * @param {HTMLElement} elt + * @returns {HTMLElement | null} + */ + function parentElt(elt) { + return elt.parentElement; + } + + /** + * @returns {Document} + */ + function getDocument() { + return document; + } + + /** + * @param {HTMLElement} elt + * @param {(e:HTMLElement) => boolean} condition + * @returns {HTMLElement | null} + */ + function getClosestMatch(elt, condition) { + while (elt && !condition(elt)) { + elt = parentElt(elt); + } + + return elt ? elt : null; + } + + function getAttributeValueWithDisinheritance(initialElement, ancestor, attributeName){ + var attributeValue = getAttributeValue(ancestor, attributeName); + var disinherit = getAttributeValue(ancestor, "hx-disinherit"); + if (initialElement !== ancestor && disinherit && (disinherit === "*" || disinherit.split(" ").indexOf(attributeName) >= 0)) { + return "unset"; + } else { + return attributeValue + } + } + + /** + * @param {HTMLElement} elt + * @param {string} attributeName + * @returns {string | null} + */ + function getClosestAttributeValue(elt, attributeName) { + var closestAttr = null; + getClosestMatch(elt, function (e) { + return closestAttr = getAttributeValueWithDisinheritance(elt, e, attributeName); + }); + if (closestAttr !== "unset") { + return closestAttr; + } + } + + /** + * @param {HTMLElement} elt + * @param {string} selector + * @returns {boolean} + */ + function matches(elt, selector) { + // @ts-ignore: non-standard properties for browser compatibility + // noinspection JSUnresolvedVariable + var matchesFunction = elt.matches || elt.matchesSelector || elt.msMatchesSelector || elt.mozMatchesSelector || elt.webkitMatchesSelector || elt.oMatchesSelector; + return matchesFunction && matchesFunction.call(elt, selector); + } + + /** + * @param {string} str + * @returns {string} + */ + function getStartTag(str) { + var tagMatcher = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i + var match = tagMatcher.exec( str ); + if (match) { + return match[1].toLowerCase(); + } else { + return ""; + } + } + + /** + * + * @param {string} resp + * @param {number} depth + * @returns {Element} + */ + function parseHTML(resp, depth) { + var parser = new DOMParser(); + var responseDoc = parser.parseFromString(resp, "text/html"); + + /** @type {Element} */ + var responseNode = responseDoc.body; + while (depth > 0) { + depth--; + // @ts-ignore + responseNode = responseNode.firstChild; + } + if (responseNode == null) { + // @ts-ignore + responseNode = getDocument().createDocumentFragment(); + } + return responseNode; + } + + function aFullPageResponse(resp) { + return /", 0); + // @ts-ignore type mismatch between DocumentFragment and Element. + // TODO: Are these close enough for htmx to use interchangeably? + var fragmentContent = fragment.querySelector('template').content; + if (htmx.config.allowScriptTags) { + // if there is a nonce set up, set it on the new script tags + forEach(fragmentContent.querySelectorAll("script"), function (script) { + if (htmx.config.inlineScriptNonce) { + script.nonce = htmx.config.inlineScriptNonce; + } + // mark as executed due to template insertion semantics on all browsers except firefox fml + script.htmxExecuted = navigator.userAgent.indexOf("Firefox") === -1; + }) + } else { + forEach(fragmentContent.querySelectorAll("script"), function (script) { + // remove all script tags if scripts are disabled + removeElement(script); + }) + } + return fragmentContent; + } + switch (startTag) { + case "thead": + case "tbody": + case "tfoot": + case "colgroup": + case "caption": + return parseHTML("" + content + "
", 1); + case "col": + return parseHTML("" + content + "
", 2); + case "tr": + return parseHTML("" + content + "
", 2); + case "td": + case "th": + return parseHTML("" + content + "
", 3); + case "script": + case "style": + return parseHTML("

" + content + "
", 1); + default: + return parseHTML(content, 0); + } + } + + /** + * @param {Function} func + */ + function maybeCall(func){ + if(func) { + func(); + } + } + + /** + * @param {any} o + * @param {string} type + * @returns + */ + function isType(o, type) { + return Object.prototype.toString.call(o) === "[object " + type + "]"; + } + + /** + * @param {*} o + * @returns {o is Function} + */ + function isFunction(o) { + return isType(o, "Function"); + } + + /** + * @param {*} o + * @returns {o is Object} + */ + function isRawObject(o) { + return isType(o, "Object"); + } + + /** + * getInternalData retrieves "private" data stored by htmx within an element + * @param {HTMLElement} elt + * @returns {*} + */ + function getInternalData(elt) { + var dataProp = 'htmx-internal-data'; + var data = elt[dataProp]; + if (!data) { + data = elt[dataProp] = {}; + } + return data; + } + + /** + * toArray converts an ArrayLike object into a real array. + * @param {ArrayLike} arr + * @returns {any[]} + */ + function toArray(arr) { + var returnArr = []; + if (arr) { + for (var i = 0; i < arr.length; i++) { + returnArr.push(arr[i]); + } + } + return returnArr + } + + function forEach(arr, func) { + if (arr) { + for (var i = 0; i < arr.length; i++) { + func(arr[i]); + } + } + } + + function isScrolledIntoView(el) { + var rect = el.getBoundingClientRect(); + var elemTop = rect.top; + var elemBottom = rect.bottom; + return elemTop < window.innerHeight && elemBottom >= 0; + } + + function bodyContains(elt) { + // IE Fix + if (elt.getRootNode && elt.getRootNode() instanceof window.ShadowRoot) { + return getDocument().body.contains(elt.getRootNode().host); + } else { + return getDocument().body.contains(elt); + } + } + + function splitOnWhitespace(trigger) { + return trigger.trim().split(/\s+/); + } + + /** + * mergeObjects takes all of the keys from + * obj2 and duplicates them into obj1 + * @param {Object} obj1 + * @param {Object} obj2 + * @returns {Object} + */ + function mergeObjects(obj1, obj2) { + for (var key in obj2) { + if (obj2.hasOwnProperty(key)) { + obj1[key] = obj2[key]; + } + } + return obj1; + } + + function parseJSON(jString) { + try { + return JSON.parse(jString); + } catch(error) { + logError(error); + return null; + } + } + + function canAccessLocalStorage() { + var test = 'htmx:localStorageTest'; + try { + localStorage.setItem(test, test); + localStorage.removeItem(test); + return true; + } catch(e) { + return false; + } + } + + function normalizePath(path) { + try { + var url = new URL(path); + if (url) { + path = url.pathname + url.search; + } + // remove trailing slash, unless index page + if (!(/^\/$/.test(path))) { + path = path.replace(/\/+$/, ''); + } + return path; + } catch (e) { + // be kind to IE11, which doesn't support URL() + return path; + } + } + + //========================================================================================== + // public API + //========================================================================================== + + function internalEval(str){ + return maybeEval(getDocument().body, function () { + return eval(str); + }); + } + + function onLoadHelper(callback) { + var value = htmx.on("htmx:load", function(evt) { + callback(evt.detail.elt); + }); + return value; + } + + function logAll(){ + htmx.logger = function(elt, event, data) { + if(console) { + console.log(event, elt, data); + } + } + } + + function logNone() { + htmx.logger = null + } + + function find(eltOrSelector, selector) { + if (selector) { + return eltOrSelector.querySelector(selector); + } else { + return find(getDocument(), eltOrSelector); + } + } + + function findAll(eltOrSelector, selector) { + if (selector) { + return eltOrSelector.querySelectorAll(selector); + } else { + return findAll(getDocument(), eltOrSelector); + } + } + + function removeElement(elt, delay) { + elt = resolveTarget(elt); + if (delay) { + setTimeout(function(){ + removeElement(elt); + elt = null; + }, delay); + } else { + elt.parentElement.removeChild(elt); + } + } + + function addClassToElement(elt, clazz, delay) { + elt = resolveTarget(elt); + if (delay) { + setTimeout(function(){ + addClassToElement(elt, clazz); + elt = null; + }, delay); + } else { + elt.classList && elt.classList.add(clazz); + } + } + + function removeClassFromElement(elt, clazz, delay) { + elt = resolveTarget(elt); + if (delay) { + setTimeout(function(){ + removeClassFromElement(elt, clazz); + elt = null; + }, delay); + } else { + if (elt.classList) { + elt.classList.remove(clazz); + // if there are no classes left, remove the class attribute + if (elt.classList.length === 0) { + elt.removeAttribute("class"); + } + } + } + } + + function toggleClassOnElement(elt, clazz) { + elt = resolveTarget(elt); + elt.classList.toggle(clazz); + } + + function takeClassForElement(elt, clazz) { + elt = resolveTarget(elt); + forEach(elt.parentElement.children, function(child){ + removeClassFromElement(child, clazz); + }) + addClassToElement(elt, clazz); + } + + function closest(elt, selector) { + elt = resolveTarget(elt); + if (elt.closest) { + return elt.closest(selector); + } else { + // TODO remove when IE goes away + do{ + if (elt == null || matches(elt, selector)){ + return elt; + } + } + while (elt = elt && parentElt(elt)); + return null; + } + } + + function startsWith(str, prefix) { + return str.substring(0, prefix.length) === prefix + } + + function endsWith(str, suffix) { + return str.substring(str.length - suffix.length) === suffix + } + + function normalizeSelector(selector) { + var trimmedSelector = selector.trim(); + if (startsWith(trimmedSelector, "<") && endsWith(trimmedSelector, "/>")) { + return trimmedSelector.substring(1, trimmedSelector.length - 2); + } else { + return trimmedSelector; + } + } + + function querySelectorAllExt(elt, selector) { + if (selector.indexOf("closest ") === 0) { + return [closest(elt, normalizeSelector(selector.substr(8)))]; + } else if (selector.indexOf("find ") === 0) { + return [find(elt, normalizeSelector(selector.substr(5)))]; + } else if (selector === "next") { + return [elt.nextElementSibling] + } else if (selector.indexOf("next ") === 0) { + return [scanForwardQuery(elt, normalizeSelector(selector.substr(5)))]; + } else if (selector === "previous") { + return [elt.previousElementSibling] + } else if (selector.indexOf("previous ") === 0) { + return [scanBackwardsQuery(elt, normalizeSelector(selector.substr(9)))]; + } else if (selector === 'document') { + return [document]; + } else if (selector === 'window') { + return [window]; + } else if (selector === 'body') { + return [document.body]; + } else { + return getDocument().querySelectorAll(normalizeSelector(selector)); + } + } + + var scanForwardQuery = function(start, match) { + var results = getDocument().querySelectorAll(match); + for (var i = 0; i < results.length; i++) { + var elt = results[i]; + if (elt.compareDocumentPosition(start) === Node.DOCUMENT_POSITION_PRECEDING) { + return elt; + } + } + } + + var scanBackwardsQuery = function(start, match) { + var results = getDocument().querySelectorAll(match); + for (var i = results.length - 1; i >= 0; i--) { + var elt = results[i]; + if (elt.compareDocumentPosition(start) === Node.DOCUMENT_POSITION_FOLLOWING) { + return elt; + } + } + } + + function querySelectorExt(eltOrSelector, selector) { + if (selector) { + return querySelectorAllExt(eltOrSelector, selector)[0]; + } else { + return querySelectorAllExt(getDocument().body, eltOrSelector)[0]; + } + } + + function resolveTarget(arg2) { + if (isType(arg2, 'String')) { + return find(arg2); + } else { + return arg2; + } + } + + function processEventArgs(arg1, arg2, arg3) { + if (isFunction(arg2)) { + return { + target: getDocument().body, + event: arg1, + listener: arg2 + } + } else { + return { + target: resolveTarget(arg1), + event: arg2, + listener: arg3 + } + } + + } + + function addEventListenerImpl(arg1, arg2, arg3) { + ready(function(){ + var eventArgs = processEventArgs(arg1, arg2, arg3); + eventArgs.target.addEventListener(eventArgs.event, eventArgs.listener); + }) + var b = isFunction(arg2); + return b ? arg2 : arg3; + } + + function removeEventListenerImpl(arg1, arg2, arg3) { + ready(function(){ + var eventArgs = processEventArgs(arg1, arg2, arg3); + eventArgs.target.removeEventListener(eventArgs.event, eventArgs.listener); + }) + return isFunction(arg2) ? arg2 : arg3; + } + + //==================================================================== + // Node processing + //==================================================================== + + var DUMMY_ELT = getDocument().createElement("output"); // dummy element for bad selectors + function findAttributeTargets(elt, attrName) { + var attrTarget = getClosestAttributeValue(elt, attrName); + if (attrTarget) { + if (attrTarget === "this") { + return [findThisElement(elt, attrName)]; + } else { + var result = querySelectorAllExt(elt, attrTarget); + if (result.length === 0) { + logError('The selector "' + attrTarget + '" on ' + attrName + " returned no matches!"); + return [DUMMY_ELT] + } else { + return result; + } + } + } + } + + function findThisElement(elt, attribute){ + return getClosestMatch(elt, function (elt) { + return getAttributeValue(elt, attribute) != null; + }) + } + + function getTarget(elt) { + var targetStr = getClosestAttributeValue(elt, "hx-target"); + if (targetStr) { + if (targetStr === "this") { + return findThisElement(elt,'hx-target'); + } else { + return querySelectorExt(elt, targetStr) + } + } else { + var data = getInternalData(elt); + if (data.boosted) { + return getDocument().body; + } else { + return elt; + } + } + } + + function shouldSettleAttribute(name) { + var attributesToSettle = htmx.config.attributesToSettle; + for (var i = 0; i < attributesToSettle.length; i++) { + if (name === attributesToSettle[i]) { + return true; + } + } + return false; + } + + function cloneAttributes(mergeTo, mergeFrom) { + forEach(mergeTo.attributes, function (attr) { + if (!mergeFrom.hasAttribute(attr.name) && shouldSettleAttribute(attr.name)) { + mergeTo.removeAttribute(attr.name) + } + }); + forEach(mergeFrom.attributes, function (attr) { + if (shouldSettleAttribute(attr.name)) { + mergeTo.setAttribute(attr.name, attr.value); + } + }); + } + + function isInlineSwap(swapStyle, target) { + var extensions = getExtensions(target); + for (var i = 0; i < extensions.length; i++) { + var extension = extensions[i]; + try { + if (extension.isInlineSwap(swapStyle)) { + return true; + } + } catch(e) { + logError(e); + } + } + return swapStyle === "outerHTML"; + } + + /** + * + * @param {string} oobValue + * @param {HTMLElement} oobElement + * @param {*} settleInfo + * @returns + */ + function oobSwap(oobValue, oobElement, settleInfo) { + var selector = "#" + getRawAttribute(oobElement, "id"); + var swapStyle = "outerHTML"; + if (oobValue === "true") { + // do nothing + } else if (oobValue.indexOf(":") > 0) { + swapStyle = oobValue.substr(0, oobValue.indexOf(":")); + selector = oobValue.substr(oobValue.indexOf(":") + 1, oobValue.length); + } else { + swapStyle = oobValue; + } + + var targets = getDocument().querySelectorAll(selector); + if (targets) { + forEach( + targets, + function (target) { + var fragment; + var oobElementClone = oobElement.cloneNode(true); + fragment = getDocument().createDocumentFragment(); + fragment.appendChild(oobElementClone); + if (!isInlineSwap(swapStyle, target)) { + fragment = oobElementClone; // if this is not an inline swap, we use the content of the node, not the node itself + } + + var beforeSwapDetails = {shouldSwap: true, target: target, fragment:fragment }; + if (!triggerEvent(target, 'htmx:oobBeforeSwap', beforeSwapDetails)) return; + + target = beforeSwapDetails.target; // allow re-targeting + if (beforeSwapDetails['shouldSwap']){ + swap(swapStyle, target, target, fragment, settleInfo); + } + forEach(settleInfo.elts, function (elt) { + triggerEvent(elt, 'htmx:oobAfterSwap', beforeSwapDetails); + }); + } + ); + oobElement.parentNode.removeChild(oobElement); + } else { + oobElement.parentNode.removeChild(oobElement); + triggerErrorEvent(getDocument().body, "htmx:oobErrorNoTarget", {content: oobElement}); + } + return oobValue; + } + + function handleOutOfBandSwaps(elt, fragment, settleInfo) { + var oobSelects = getClosestAttributeValue(elt, "hx-select-oob"); + if (oobSelects) { + var oobSelectValues = oobSelects.split(","); + for (var i = 0; i < oobSelectValues.length; i++) { + var oobSelectValue = oobSelectValues[i].split(":", 2); + var id = oobSelectValue[0].trim(); + if (id.indexOf("#") === 0) { + id = id.substring(1); + } + var oobValue = oobSelectValue[1] || "true"; + var oobElement = fragment.querySelector("#" + id); + if (oobElement) { + oobSwap(oobValue, oobElement, settleInfo); + } + } + } + forEach(findAll(fragment, '[hx-swap-oob], [data-hx-swap-oob]'), function (oobElement) { + var oobValue = getAttributeValue(oobElement, "hx-swap-oob"); + if (oobValue != null) { + oobSwap(oobValue, oobElement, settleInfo); + } + }); + } + + function handlePreservedElements(fragment) { + forEach(findAll(fragment, '[hx-preserve], [data-hx-preserve]'), function (preservedElt) { + var id = getAttributeValue(preservedElt, "id"); + var oldElt = getDocument().getElementById(id); + if (oldElt != null) { + preservedElt.parentNode.replaceChild(oldElt, preservedElt); + } + }); + } + + function handleAttributes(parentNode, fragment, settleInfo) { + forEach(fragment.querySelectorAll("[id]"), function (newNode) { + var id = getRawAttribute(newNode, "id") + if (id && id.length > 0) { + var normalizedId = id.replace("'", "\\'"); + var normalizedTag = newNode.tagName.replace(':', '\\:'); + var oldNode = parentNode.querySelector(normalizedTag + "[id='" + normalizedId + "']"); + if (oldNode && oldNode !== parentNode) { + var newAttributes = newNode.cloneNode(); + cloneAttributes(newNode, oldNode); + settleInfo.tasks.push(function () { + cloneAttributes(newNode, newAttributes); + }); + } + } + }); + } + + function makeAjaxLoadTask(child) { + return function () { + removeClassFromElement(child, htmx.config.addedClass); + processNode(child); + processScripts(child); + processFocus(child) + triggerEvent(child, 'htmx:load'); + }; + } + + function processFocus(child) { + var autofocus = "[autofocus]"; + var autoFocusedElt = matches(child, autofocus) ? child : child.querySelector(autofocus) + if (autoFocusedElt != null) { + autoFocusedElt.focus(); + } + } + + function insertNodesBefore(parentNode, insertBefore, fragment, settleInfo) { + handleAttributes(parentNode, fragment, settleInfo); + while(fragment.childNodes.length > 0){ + var child = fragment.firstChild; + addClassToElement(child, htmx.config.addedClass); + parentNode.insertBefore(child, insertBefore); + if (child.nodeType !== Node.TEXT_NODE && child.nodeType !== Node.COMMENT_NODE) { + settleInfo.tasks.push(makeAjaxLoadTask(child)); + } + } + } + + // based on https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0, + // derived from Java's string hashcode implementation + function stringHash(string, hash) { + var char = 0; + while (char < string.length){ + hash = (hash << 5) - hash + string.charCodeAt(char++) | 0; // bitwise or ensures we have a 32-bit int + } + return hash; + } + + function attributeHash(elt) { + var hash = 0; + // IE fix + if (elt.attributes) { + for (var i = 0; i < elt.attributes.length; i++) { + var attribute = elt.attributes[i]; + if(attribute.value){ // only include attributes w/ actual values (empty is same as non-existent) + hash = stringHash(attribute.name, hash); + hash = stringHash(attribute.value, hash); + } + } + } + return hash; + } + + function deInitOnHandlers(elt) { + var internalData = getInternalData(elt); + if (internalData.onHandlers) { + for (var i = 0; i < internalData.onHandlers.length; i++) { + const handlerInfo = internalData.onHandlers[i]; + elt.removeEventListener(handlerInfo.event, handlerInfo.listener); + } + delete internalData.onHandlers + } + } + + function deInitNode(element) { + var internalData = getInternalData(element); + if (internalData.timeout) { + clearTimeout(internalData.timeout); + } + if (internalData.webSocket) { + internalData.webSocket.close(); + } + if (internalData.sseEventSource) { + internalData.sseEventSource.close(); + } + if (internalData.listenerInfos) { + forEach(internalData.listenerInfos, function (info) { + if (info.on) { + info.on.removeEventListener(info.trigger, info.listener); + } + }); + } + deInitOnHandlers(element); + forEach(Object.keys(internalData), function(key) { delete internalData[key] }); + } + + function cleanUpElement(element) { + triggerEvent(element, "htmx:beforeCleanupElement") + deInitNode(element); + if (element.children) { // IE + forEach(element.children, function(child) { cleanUpElement(child) }); + } + } + + function swapOuterHTML(target, fragment, settleInfo) { + if (target.tagName === "BODY") { + return swapInnerHTML(target, fragment, settleInfo); + } else { + // @type {HTMLElement} + var newElt + var eltBeforeNewContent = target.previousSibling; + insertNodesBefore(parentElt(target), target, fragment, settleInfo); + if (eltBeforeNewContent == null) { + newElt = parentElt(target).firstChild; + } else { + newElt = eltBeforeNewContent.nextSibling; + } + settleInfo.elts = settleInfo.elts.filter(function(e) { return e != target }); + while(newElt && newElt !== target) { + if (newElt.nodeType === Node.ELEMENT_NODE) { + settleInfo.elts.push(newElt); + } + newElt = newElt.nextElementSibling; + } + cleanUpElement(target); + parentElt(target).removeChild(target); + } + } + + function swapAfterBegin(target, fragment, settleInfo) { + return insertNodesBefore(target, target.firstChild, fragment, settleInfo); + } + + function swapBeforeBegin(target, fragment, settleInfo) { + return insertNodesBefore(parentElt(target), target, fragment, settleInfo); + } + + function swapBeforeEnd(target, fragment, settleInfo) { + return insertNodesBefore(target, null, fragment, settleInfo); + } + + function swapAfterEnd(target, fragment, settleInfo) { + return insertNodesBefore(parentElt(target), target.nextSibling, fragment, settleInfo); + } + function swapDelete(target, fragment, settleInfo) { + cleanUpElement(target); + return parentElt(target).removeChild(target); + } + + function swapInnerHTML(target, fragment, settleInfo) { + var firstChild = target.firstChild; + insertNodesBefore(target, firstChild, fragment, settleInfo); + if (firstChild) { + while (firstChild.nextSibling) { + cleanUpElement(firstChild.nextSibling) + target.removeChild(firstChild.nextSibling); + } + cleanUpElement(firstChild) + target.removeChild(firstChild); + } + } + + function maybeSelectFromResponse(elt, fragment, selectOverride) { + var selector = selectOverride || getClosestAttributeValue(elt, "hx-select"); + if (selector) { + var newFragment = getDocument().createDocumentFragment(); + forEach(fragment.querySelectorAll(selector), function (node) { + newFragment.appendChild(node); + }); + fragment = newFragment; + } + return fragment; + } + + function swap(swapStyle, elt, target, fragment, settleInfo) { + switch (swapStyle) { + case "none": + return; + case "outerHTML": + swapOuterHTML(target, fragment, settleInfo); + return; + case "afterbegin": + swapAfterBegin(target, fragment, settleInfo); + return; + case "beforebegin": + swapBeforeBegin(target, fragment, settleInfo); + return; + case "beforeend": + swapBeforeEnd(target, fragment, settleInfo); + return; + case "afterend": + swapAfterEnd(target, fragment, settleInfo); + return; + case "delete": + swapDelete(target, fragment, settleInfo); + return; + default: + var extensions = getExtensions(elt); + for (var i = 0; i < extensions.length; i++) { + var ext = extensions[i]; + try { + var newElements = ext.handleSwap(swapStyle, target, fragment, settleInfo); + if (newElements) { + if (typeof newElements.length !== 'undefined') { + // if handleSwap returns an array (like) of elements, we handle them + for (var j = 0; j < newElements.length; j++) { + var child = newElements[j]; + if (child.nodeType !== Node.TEXT_NODE && child.nodeType !== Node.COMMENT_NODE) { + settleInfo.tasks.push(makeAjaxLoadTask(child)); + } + } + } + return; + } + } catch (e) { + logError(e); + } + } + if (swapStyle === "innerHTML") { + swapInnerHTML(target, fragment, settleInfo); + } else { + swap(htmx.config.defaultSwapStyle, elt, target, fragment, settleInfo); + } + } + } + + function findTitle(content) { + if (content.indexOf(' -1) { + var contentWithSvgsRemoved = content.replace(SVG_TAGS_REGEX, ''); + var result = contentWithSvgsRemoved.match(TITLE_TAG_REGEX); + if (result) { + return result[2]; + } + } + } + + function selectAndSwap(swapStyle, target, elt, responseText, settleInfo, selectOverride) { + settleInfo.title = findTitle(responseText); + var fragment = makeFragment(responseText); + if (fragment) { + handleOutOfBandSwaps(elt, fragment, settleInfo); + fragment = maybeSelectFromResponse(elt, fragment, selectOverride); + handlePreservedElements(fragment); + return swap(swapStyle, elt, target, fragment, settleInfo); + } + } + + function handleTrigger(xhr, header, elt) { + var triggerBody = xhr.getResponseHeader(header); + if (triggerBody.indexOf("{") === 0) { + var triggers = parseJSON(triggerBody); + for (var eventName in triggers) { + if (triggers.hasOwnProperty(eventName)) { + var detail = triggers[eventName]; + if (!isRawObject(detail)) { + detail = {"value": detail} + } + triggerEvent(elt, eventName, detail); + } + } + } else { + var eventNames = triggerBody.split(",") + for (var i = 0; i < eventNames.length; i++) { + triggerEvent(elt, eventNames[i].trim(), []); + } + } + } + + var WHITESPACE = /\s/; + var WHITESPACE_OR_COMMA = /[\s,]/; + var SYMBOL_START = /[_$a-zA-Z]/; + var SYMBOL_CONT = /[_$a-zA-Z0-9]/; + var STRINGISH_START = ['"', "'", "/"]; + var NOT_WHITESPACE = /[^\s]/; + var COMBINED_SELECTOR_START = /[{(]/; + var COMBINED_SELECTOR_END = /[})]/; + function tokenizeString(str) { + var tokens = []; + var position = 0; + while (position < str.length) { + if(SYMBOL_START.exec(str.charAt(position))) { + var startPosition = position; + while (SYMBOL_CONT.exec(str.charAt(position + 1))) { + position++; + } + tokens.push(str.substr(startPosition, position - startPosition + 1)); + } else if (STRINGISH_START.indexOf(str.charAt(position)) !== -1) { + var startChar = str.charAt(position); + var startPosition = position; + position++; + while (position < str.length && str.charAt(position) !== startChar ) { + if (str.charAt(position) === "\\") { + position++; + } + position++; + } + tokens.push(str.substr(startPosition, position - startPosition + 1)); + } else { + var symbol = str.charAt(position); + tokens.push(symbol); + } + position++; + } + return tokens; + } + + function isPossibleRelativeReference(token, last, paramName) { + return SYMBOL_START.exec(token.charAt(0)) && + token !== "true" && + token !== "false" && + token !== "this" && + token !== paramName && + last !== "."; + } + + function maybeGenerateConditional(elt, tokens, paramName) { + if (tokens[0] === '[') { + tokens.shift(); + var bracketCount = 1; + var conditionalSource = " return (function(" + paramName + "){ return ("; + var last = null; + while (tokens.length > 0) { + var token = tokens[0]; + if (token === "]") { + bracketCount--; + if (bracketCount === 0) { + if (last === null) { + conditionalSource = conditionalSource + "true"; + } + tokens.shift(); + conditionalSource += ")})"; + try { + var conditionFunction = maybeEval(elt,function () { + return Function(conditionalSource)(); + }, + function(){return true}) + conditionFunction.source = conditionalSource; + return conditionFunction; + } catch (e) { + triggerErrorEvent(getDocument().body, "htmx:syntax:error", {error:e, source:conditionalSource}) + return null; + } + } + } else if (token === "[") { + bracketCount++; + } + if (isPossibleRelativeReference(token, last, paramName)) { + conditionalSource += "((" + paramName + "." + token + ") ? (" + paramName + "." + token + ") : (window." + token + "))"; + } else { + conditionalSource = conditionalSource + token; + } + last = tokens.shift(); + } + } + } + + function consumeUntil(tokens, match) { + var result = ""; + while (tokens.length > 0 && !match.test(tokens[0])) { + result += tokens.shift(); + } + return result; + } + + function consumeCSSSelector(tokens) { + var result; + if (tokens.length > 0 && COMBINED_SELECTOR_START.test(tokens[0])) { + tokens.shift(); + result = consumeUntil(tokens, COMBINED_SELECTOR_END).trim(); + tokens.shift(); + } else { + result = consumeUntil(tokens, WHITESPACE_OR_COMMA); + } + return result; + } + + var INPUT_SELECTOR = 'input, textarea, select'; + + /** + * @param {HTMLElement} elt + * @param {string} explicitTrigger + * @param {cache} cache for trigger specs + * @returns {import("./htmx").HtmxTriggerSpecification[]} + */ + function parseAndCacheTrigger(elt, explicitTrigger, cache) { + var triggerSpecs = []; + var tokens = tokenizeString(explicitTrigger); + do { + consumeUntil(tokens, NOT_WHITESPACE); + var initialLength = tokens.length; + var trigger = consumeUntil(tokens, /[,\[\s]/); + if (trigger !== "") { + if (trigger === "every") { + var every = {trigger: 'every'}; + consumeUntil(tokens, NOT_WHITESPACE); + every.pollInterval = parseInterval(consumeUntil(tokens, /[,\[\s]/)); + consumeUntil(tokens, NOT_WHITESPACE); + var eventFilter = maybeGenerateConditional(elt, tokens, "event"); + if (eventFilter) { + every.eventFilter = eventFilter; + } + triggerSpecs.push(every); + } else if (trigger.indexOf("sse:") === 0) { + triggerSpecs.push({trigger: 'sse', sseEvent: trigger.substr(4)}); + } else { + var triggerSpec = {trigger: trigger}; + var eventFilter = maybeGenerateConditional(elt, tokens, "event"); + if (eventFilter) { + triggerSpec.eventFilter = eventFilter; + } + while (tokens.length > 0 && tokens[0] !== ",") { + consumeUntil(tokens, NOT_WHITESPACE) + var token = tokens.shift(); + if (token === "changed") { + triggerSpec.changed = true; + } else if (token === "once") { + triggerSpec.once = true; + } else if (token === "consume") { + triggerSpec.consume = true; + } else if (token === "delay" && tokens[0] === ":") { + tokens.shift(); + triggerSpec.delay = parseInterval(consumeUntil(tokens, WHITESPACE_OR_COMMA)); + } else if (token === "from" && tokens[0] === ":") { + tokens.shift(); + if (COMBINED_SELECTOR_START.test(tokens[0])) { + var from_arg = consumeCSSSelector(tokens); + } else { + var from_arg = consumeUntil(tokens, WHITESPACE_OR_COMMA); + if (from_arg === "closest" || from_arg === "find" || from_arg === "next" || from_arg === "previous") { + tokens.shift(); + var selector = consumeCSSSelector(tokens); + // `next` and `previous` allow a selector-less syntax + if (selector.length > 0) { + from_arg += " " + selector; + } + } + } + triggerSpec.from = from_arg; + } else if (token === "target" && tokens[0] === ":") { + tokens.shift(); + triggerSpec.target = consumeCSSSelector(tokens); + } else if (token === "throttle" && tokens[0] === ":") { + tokens.shift(); + triggerSpec.throttle = parseInterval(consumeUntil(tokens, WHITESPACE_OR_COMMA)); + } else if (token === "queue" && tokens[0] === ":") { + tokens.shift(); + triggerSpec.queue = consumeUntil(tokens, WHITESPACE_OR_COMMA); + } else if (token === "root" && tokens[0] === ":") { + tokens.shift(); + triggerSpec[token] = consumeCSSSelector(tokens); + } else if (token === "threshold" && tokens[0] === ":") { + tokens.shift(); + triggerSpec[token] = consumeUntil(tokens, WHITESPACE_OR_COMMA); + } else { + triggerErrorEvent(elt, "htmx:syntax:error", {token:tokens.shift()}); + } + } + triggerSpecs.push(triggerSpec); + } + } + if (tokens.length === initialLength) { + triggerErrorEvent(elt, "htmx:syntax:error", {token:tokens.shift()}); + } + consumeUntil(tokens, NOT_WHITESPACE); + } while (tokens[0] === "," && tokens.shift()) + if (cache) { + cache[explicitTrigger] = triggerSpecs + } + return triggerSpecs + } + + /** + * @param {HTMLElement} elt + * @returns {import("./htmx").HtmxTriggerSpecification[]} + */ + function getTriggerSpecs(elt) { + var explicitTrigger = getAttributeValue(elt, 'hx-trigger'); + var triggerSpecs = []; + if (explicitTrigger) { + var cache = htmx.config.triggerSpecsCache + triggerSpecs = (cache && cache[explicitTrigger]) || parseAndCacheTrigger(elt, explicitTrigger, cache) + } + + if (triggerSpecs.length > 0) { + return triggerSpecs; + } else if (matches(elt, 'form')) { + return [{trigger: 'submit'}]; + } else if (matches(elt, 'input[type="button"], input[type="submit"]')){ + return [{trigger: 'click'}]; + } else if (matches(elt, INPUT_SELECTOR)) { + return [{trigger: 'change'}]; + } else { + return [{trigger: 'click'}]; + } + } + + function cancelPolling(elt) { + getInternalData(elt).cancelled = true; + } + + function processPolling(elt, handler, spec) { + var nodeData = getInternalData(elt); + nodeData.timeout = setTimeout(function () { + if (bodyContains(elt) && nodeData.cancelled !== true) { + if (!maybeFilterEvent(spec, elt, makeEvent('hx:poll:trigger', { + triggerSpec: spec, + target: elt + }))) { + handler(elt); + } + processPolling(elt, handler, spec); + } + }, spec.pollInterval); + } + + function isLocalLink(elt) { + return location.hostname === elt.hostname && + getRawAttribute(elt,'href') && + getRawAttribute(elt,'href').indexOf("#") !== 0; + } + + function boostElement(elt, nodeData, triggerSpecs) { + if ((elt.tagName === "A" && isLocalLink(elt) && (elt.target === "" || elt.target === "_self")) || elt.tagName === "FORM") { + nodeData.boosted = true; + var verb, path; + if (elt.tagName === "A") { + verb = "get"; + path = getRawAttribute(elt, 'href') + } else { + var rawAttribute = getRawAttribute(elt, "method"); + verb = rawAttribute ? rawAttribute.toLowerCase() : "get"; + if (verb === "get") { + } + path = getRawAttribute(elt, 'action'); + } + triggerSpecs.forEach(function(triggerSpec) { + addEventListener(elt, function(elt, evt) { + if (closest(elt, htmx.config.disableSelector)) { + cleanUpElement(elt) + return + } + issueAjaxRequest(verb, path, elt, evt) + }, nodeData, triggerSpec, true); + }); + } + } + + /** + * + * @param {Event} evt + * @param {HTMLElement} elt + * @returns + */ + function shouldCancel(evt, elt) { + if (evt.type === "submit" || evt.type === "click") { + if (elt.tagName === "FORM") { + return true; + } + if (matches(elt, 'input[type="submit"], button') && closest(elt, 'form') !== null) { + return true; + } + if (elt.tagName === "A" && elt.href && + (elt.getAttribute('href') === '#' || elt.getAttribute('href').indexOf("#") !== 0)) { + return true; + } + } + return false; + } + + function ignoreBoostedAnchorCtrlClick(elt, evt) { + return getInternalData(elt).boosted && elt.tagName === "A" && evt.type === "click" && (evt.ctrlKey || evt.metaKey); + } + + function maybeFilterEvent(triggerSpec, elt, evt) { + var eventFilter = triggerSpec.eventFilter; + if(eventFilter){ + try { + return eventFilter.call(elt, evt) !== true; + } catch(e) { + triggerErrorEvent(getDocument().body, "htmx:eventFilter:error", {error: e, source:eventFilter.source}); + return true; + } + } + return false; + } + + function addEventListener(elt, handler, nodeData, triggerSpec, explicitCancel) { + var elementData = getInternalData(elt); + var eltsToListenOn; + if (triggerSpec.from) { + eltsToListenOn = querySelectorAllExt(elt, triggerSpec.from); + } else { + eltsToListenOn = [elt]; + } + // store the initial values of the elements, so we can tell if they change + if (triggerSpec.changed) { + eltsToListenOn.forEach(function (eltToListenOn) { + var eltToListenOnData = getInternalData(eltToListenOn); + eltToListenOnData.lastValue = eltToListenOn.value; + }) + } + forEach(eltsToListenOn, function (eltToListenOn) { + var eventListener = function (evt) { + if (!bodyContains(elt)) { + eltToListenOn.removeEventListener(triggerSpec.trigger, eventListener); + return; + } + if (ignoreBoostedAnchorCtrlClick(elt, evt)) { + return; + } + if (explicitCancel || shouldCancel(evt, elt)) { + evt.preventDefault(); + } + if (maybeFilterEvent(triggerSpec, elt, evt)) { + return; + } + var eventData = getInternalData(evt); + eventData.triggerSpec = triggerSpec; + if (eventData.handledFor == null) { + eventData.handledFor = []; + } + if (eventData.handledFor.indexOf(elt) < 0) { + eventData.handledFor.push(elt); + if (triggerSpec.consume) { + evt.stopPropagation(); + } + if (triggerSpec.target && evt.target) { + if (!matches(evt.target, triggerSpec.target)) { + return; + } + } + if (triggerSpec.once) { + if (elementData.triggeredOnce) { + return; + } else { + elementData.triggeredOnce = true; + } + } + if (triggerSpec.changed) { + var eltToListenOnData = getInternalData(eltToListenOn) + if (eltToListenOnData.lastValue === eltToListenOn.value) { + return; + } + eltToListenOnData.lastValue = eltToListenOn.value + } + if (elementData.delayed) { + clearTimeout(elementData.delayed); + } + if (elementData.throttle) { + return; + } + + if (triggerSpec.throttle > 0) { + if (!elementData.throttle) { + handler(elt, evt); + elementData.throttle = setTimeout(function () { + elementData.throttle = null; + }, triggerSpec.throttle); + } + } else if (triggerSpec.delay > 0) { + elementData.delayed = setTimeout(function() { handler(elt, evt) }, triggerSpec.delay); + } else { + triggerEvent(elt, 'htmx:trigger') + handler(elt, evt); + } + } + }; + if (nodeData.listenerInfos == null) { + nodeData.listenerInfos = []; + } + nodeData.listenerInfos.push({ + trigger: triggerSpec.trigger, + listener: eventListener, + on: eltToListenOn + }) + eltToListenOn.addEventListener(triggerSpec.trigger, eventListener); + }); + } + + var windowIsScrolling = false // used by initScrollHandler + var scrollHandler = null; + function initScrollHandler() { + if (!scrollHandler) { + scrollHandler = function() { + windowIsScrolling = true + }; + window.addEventListener("scroll", scrollHandler) + setInterval(function() { + if (windowIsScrolling) { + windowIsScrolling = false; + forEach(getDocument().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"), function (elt) { + maybeReveal(elt); + }) + } + }, 200); + } + } + + function maybeReveal(elt) { + if (!hasAttribute(elt,'data-hx-revealed') && isScrolledIntoView(elt)) { + elt.setAttribute('data-hx-revealed', 'true'); + var nodeData = getInternalData(elt); + if (nodeData.initHash) { + triggerEvent(elt, 'revealed'); + } else { + // if the node isn't initialized, wait for it before triggering the request + elt.addEventListener("htmx:afterProcessNode", function(evt) { triggerEvent(elt, 'revealed') }, {once: true}); + } + } + } + + //==================================================================== + // Web Sockets + //==================================================================== + + function processWebSocketInfo(elt, nodeData, info) { + var values = splitOnWhitespace(info); + for (var i = 0; i < values.length; i++) { + var value = values[i].split(/:(.+)/); + if (value[0] === "connect") { + ensureWebSocket(elt, value[1], 0); + } + if (value[0] === "send") { + processWebSocketSend(elt); + } + } + } + + function ensureWebSocket(elt, wssSource, retryCount) { + if (!bodyContains(elt)) { + return; // stop ensuring websocket connection when socket bearing element ceases to exist + } + + if (wssSource.indexOf("/") == 0) { // complete absolute paths only + var base_part = location.hostname + (location.port ? ':'+location.port: ''); + if (location.protocol == 'https:') { + wssSource = "wss://" + base_part + wssSource; + } else if (location.protocol == 'http:') { + wssSource = "ws://" + base_part + wssSource; + } + } + var socket = htmx.createWebSocket(wssSource); + socket.onerror = function (e) { + triggerErrorEvent(elt, "htmx:wsError", {error:e, socket:socket}); + maybeCloseWebSocketSource(elt); + }; + + socket.onclose = function (e) { + if ([1006, 1012, 1013].indexOf(e.code) >= 0) { // Abnormal Closure/Service Restart/Try Again Later + var delay = getWebSocketReconnectDelay(retryCount); + setTimeout(function() { + ensureWebSocket(elt, wssSource, retryCount+1); // creates a websocket with a new timeout + }, delay); + } + }; + socket.onopen = function (e) { + retryCount = 0; + } + + getInternalData(elt).webSocket = socket; + socket.addEventListener('message', function (event) { + if (maybeCloseWebSocketSource(elt)) { + return; + } + + var response = event.data; + withExtensions(elt, function(extension){ + response = extension.transformResponse(response, null, elt); + }); + + var settleInfo = makeSettleInfo(elt); + var fragment = makeFragment(response); + var children = toArray(fragment.children); + for (var i = 0; i < children.length; i++) { + var child = children[i]; + oobSwap(getAttributeValue(child, "hx-swap-oob") || "true", child, settleInfo); + } + + settleImmediately(settleInfo.tasks); + }); + } + + function maybeCloseWebSocketSource(elt) { + if (!bodyContains(elt)) { + getInternalData(elt).webSocket.close(); + return true; + } + } + + function processWebSocketSend(elt) { + var webSocketSourceElt = getClosestMatch(elt, function (parent) { + return getInternalData(parent).webSocket != null; + }); + if (webSocketSourceElt) { + elt.addEventListener(getTriggerSpecs(elt)[0].trigger, function (evt) { + var webSocket = getInternalData(webSocketSourceElt).webSocket; + var headers = getHeaders(elt, webSocketSourceElt); + var results = getInputValues(elt, 'post'); + var errors = results.errors; + var rawParameters = results.values; + var expressionVars = getExpressionVars(elt); + var allParameters = mergeObjects(rawParameters, expressionVars); + var filteredParameters = filterValues(allParameters, elt); + filteredParameters['HEADERS'] = headers; + if (errors && errors.length > 0) { + triggerEvent(elt, 'htmx:validation:halted', errors); + return; + } + webSocket.send(JSON.stringify(filteredParameters)); + if(shouldCancel(evt, elt)){ + evt.preventDefault(); + } + }); + } else { + triggerErrorEvent(elt, "htmx:noWebSocketSourceError"); + } + } + + function getWebSocketReconnectDelay(retryCount) { + var delay = htmx.config.wsReconnectDelay; + if (typeof delay === 'function') { + // @ts-ignore + return delay(retryCount); + } + if (delay === 'full-jitter') { + var exp = Math.min(retryCount, 6); + var maxDelay = 1000 * Math.pow(2, exp); + return maxDelay * Math.random(); + } + logError('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"'); + } + + //==================================================================== + // Server Sent Events + //==================================================================== + + function processSSEInfo(elt, nodeData, info) { + var values = splitOnWhitespace(info); + for (var i = 0; i < values.length; i++) { + var value = values[i].split(/:(.+)/); + if (value[0] === "connect") { + processSSESource(elt, value[1]); + } + + if ((value[0] === "swap")) { + processSSESwap(elt, value[1]) + } + } + } + + function processSSESource(elt, sseSrc) { + var source = htmx.createEventSource(sseSrc); + source.onerror = function (e) { + triggerErrorEvent(elt, "htmx:sseError", {error:e, source:source}); + maybeCloseSSESource(elt); + }; + getInternalData(elt).sseEventSource = source; + } + + function processSSESwap(elt, sseEventName) { + var sseSourceElt = getClosestMatch(elt, hasEventSource); + if (sseSourceElt) { + var sseEventSource = getInternalData(sseSourceElt).sseEventSource; + var sseListener = function (event) { + if (maybeCloseSSESource(sseSourceElt)) { + return; + } + if (!bodyContains(elt)) { + sseEventSource.removeEventListener(sseEventName, sseListener); + return; + } + + /////////////////////////// + // TODO: merge this code with AJAX and WebSockets code in the future. + + var response = event.data; + withExtensions(elt, function(extension){ + response = extension.transformResponse(response, null, elt); + }); + + var swapSpec = getSwapSpecification(elt) + var target = getTarget(elt) + var settleInfo = makeSettleInfo(elt); + + selectAndSwap(swapSpec.swapStyle, target, elt, response, settleInfo) + settleImmediately(settleInfo.tasks) + triggerEvent(elt, "htmx:sseMessage", event) + }; + + getInternalData(elt).sseListener = sseListener; + sseEventSource.addEventListener(sseEventName, sseListener); + } else { + triggerErrorEvent(elt, "htmx:noSSESourceError"); + } + } + + function processSSETrigger(elt, handler, sseEventName) { + var sseSourceElt = getClosestMatch(elt, hasEventSource); + if (sseSourceElt) { + var sseEventSource = getInternalData(sseSourceElt).sseEventSource; + var sseListener = function () { + if (!maybeCloseSSESource(sseSourceElt)) { + if (bodyContains(elt)) { + handler(elt); + } else { + sseEventSource.removeEventListener(sseEventName, sseListener); + } + } + }; + getInternalData(elt).sseListener = sseListener; + sseEventSource.addEventListener(sseEventName, sseListener); + } else { + triggerErrorEvent(elt, "htmx:noSSESourceError"); + } + } + + function maybeCloseSSESource(elt) { + if (!bodyContains(elt)) { + getInternalData(elt).sseEventSource.close(); + return true; + } + } + + function hasEventSource(node) { + return getInternalData(node).sseEventSource != null; + } + + //==================================================================== + + function loadImmediately(elt, handler, nodeData, delay) { + var load = function(){ + if (!nodeData.loaded) { + nodeData.loaded = true; + handler(elt); + } + } + if (delay > 0) { + setTimeout(load, delay); + } else { + load(); + } + } + + function processVerbs(elt, nodeData, triggerSpecs) { + var explicitAction = false; + forEach(VERBS, function (verb) { + if (hasAttribute(elt,'hx-' + verb)) { + var path = getAttributeValue(elt, 'hx-' + verb); + explicitAction = true; + nodeData.path = path; + nodeData.verb = verb; + triggerSpecs.forEach(function(triggerSpec) { + addTriggerHandler(elt, triggerSpec, nodeData, function (elt, evt) { + if (closest(elt, htmx.config.disableSelector)) { + cleanUpElement(elt) + return + } + issueAjaxRequest(verb, path, elt, evt) + }) + }); + } + }); + return explicitAction; + } + + function addTriggerHandler(elt, triggerSpec, nodeData, handler) { + if (triggerSpec.sseEvent) { + processSSETrigger(elt, handler, triggerSpec.sseEvent); + } else if (triggerSpec.trigger === "revealed") { + initScrollHandler(); + addEventListener(elt, handler, nodeData, triggerSpec); + maybeReveal(elt); + } else if (triggerSpec.trigger === "intersect") { + var observerOptions = {}; + if (triggerSpec.root) { + observerOptions.root = querySelectorExt(elt, triggerSpec.root) + } + if (triggerSpec.threshold) { + observerOptions.threshold = parseFloat(triggerSpec.threshold); + } + var observer = new IntersectionObserver(function (entries) { + for (var i = 0; i < entries.length; i++) { + var entry = entries[i]; + if (entry.isIntersecting) { + triggerEvent(elt, "intersect"); + break; + } + } + }, observerOptions); + observer.observe(elt); + addEventListener(elt, handler, nodeData, triggerSpec); + } else if (triggerSpec.trigger === "load") { + if (!maybeFilterEvent(triggerSpec, elt, makeEvent("load", {elt: elt}))) { + loadImmediately(elt, handler, nodeData, triggerSpec.delay); + } + } else if (triggerSpec.pollInterval > 0) { + nodeData.polling = true; + processPolling(elt, handler, triggerSpec); + } else { + addEventListener(elt, handler, nodeData, triggerSpec); + } + } + + function evalScript(script) { + if (!script.htmxExecuted && htmx.config.allowScriptTags && + (script.type === "text/javascript" || script.type === "module" || script.type === "") ) { + var newScript = getDocument().createElement("script"); + forEach(script.attributes, function (attr) { + newScript.setAttribute(attr.name, attr.value); + }); + newScript.textContent = script.textContent; + newScript.async = false; + if (htmx.config.inlineScriptNonce) { + newScript.nonce = htmx.config.inlineScriptNonce; + } + var parent = script.parentElement; + + try { + parent.insertBefore(newScript, script); + } catch (e) { + logError(e); + } finally { + // remove old script element, but only if it is still in DOM + if (script.parentElement) { + script.parentElement.removeChild(script); + } + } + } + } + + function processScripts(elt) { + if (matches(elt, "script")) { + evalScript(elt); + } + forEach(findAll(elt, "script"), function (script) { + evalScript(script); + }); + } + + function shouldProcessHxOn(elt) { + var attributes = elt.attributes + if (!attributes) { + return false + } + for (var j = 0; j < attributes.length; j++) { + var attrName = attributes[j].name + if (startsWith(attrName, "hx-on:") || startsWith(attrName, "data-hx-on:") || + startsWith(attrName, "hx-on-") || startsWith(attrName, "data-hx-on-")) { + return true + } + } + return false + } + + function findHxOnWildcardElements(elt) { + var node = null + var elements = [] + + if (shouldProcessHxOn(elt)) { + elements.push(elt) + } + + if (document.evaluate) { + var iter = document.evaluate('.//*[@*[ starts-with(name(), "hx-on:") or starts-with(name(), "data-hx-on:") or' + + ' starts-with(name(), "hx-on-") or starts-with(name(), "data-hx-on-") ]]', elt) + while (node = iter.iterateNext()) elements.push(node) + } else if (typeof elt.getElementsByTagName === "function") { + var allElements = elt.getElementsByTagName("*") + for (var i = 0; i < allElements.length; i++) { + if (shouldProcessHxOn(allElements[i])) { + elements.push(allElements[i]) + } + } + } + + return elements + } + + function findElementsToProcess(elt) { + if (elt.querySelectorAll) { + var boostedSelector = ", [hx-boost] a, [data-hx-boost] a, a[hx-boost], a[data-hx-boost]"; + var results = elt.querySelectorAll(VERB_SELECTOR + boostedSelector + ", form, [type='submit'], [hx-sse], [data-hx-sse], [hx-ws]," + + " [data-hx-ws], [hx-ext], [data-hx-ext], [hx-trigger], [data-hx-trigger], [hx-on], [data-hx-on]"); + return results; + } else { + return []; + } + } + + // Handle submit buttons/inputs that have the form attribute set + // see https://developer.mozilla.org/docs/Web/HTML/Element/button + function maybeSetLastButtonClicked(evt) { + var elt = closest(evt.target, "button, input[type='submit']"); + var internalData = getRelatedFormData(evt) + if (internalData) { + internalData.lastButtonClicked = elt; + } + }; + function maybeUnsetLastButtonClicked(evt){ + var internalData = getRelatedFormData(evt) + if (internalData) { + internalData.lastButtonClicked = null; + } + } + function getRelatedFormData(evt) { + var elt = closest(evt.target, "button, input[type='submit']"); + if (!elt) { + return; + } + var form = resolveTarget('#' + getRawAttribute(elt, 'form')) || closest(elt, 'form'); + if (!form) { + return; + } + return getInternalData(form); + } + function initButtonTracking(elt) { + // need to handle both click and focus in: + // focusin - in case someone tabs in to a button and hits the space bar + // click - on OSX buttons do not focus on click see https://bugs.webkit.org/show_bug.cgi?id=13724 + elt.addEventListener('click', maybeSetLastButtonClicked) + elt.addEventListener('focusin', maybeSetLastButtonClicked) + elt.addEventListener('focusout', maybeUnsetLastButtonClicked) + } + + function countCurlies(line) { + var tokens = tokenizeString(line); + var netCurlies = 0; + for (var i = 0; i < tokens.length; i++) { + const token = tokens[i]; + if (token === "{") { + netCurlies++; + } else if (token === "}") { + netCurlies--; + } + } + return netCurlies; + } + + function addHxOnEventHandler(elt, eventName, code) { + var nodeData = getInternalData(elt); + if (!Array.isArray(nodeData.onHandlers)) { + nodeData.onHandlers = []; + } + var func; + var listener = function (e) { + return maybeEval(elt, function() { + if (!func) { + func = new Function("event", code); + } + func.call(elt, e); + }); + }; + elt.addEventListener(eventName, listener); + nodeData.onHandlers.push({event:eventName, listener:listener}); + } + + function processHxOn(elt) { + var hxOnValue = getAttributeValue(elt, 'hx-on'); + if (hxOnValue) { + var handlers = {} + var lines = hxOnValue.split("\n"); + var currentEvent = null; + var curlyCount = 0; + while (lines.length > 0) { + var line = lines.shift(); + var match = line.match(/^\s*([a-zA-Z:\-\.]+:)(.*)/); + if (curlyCount === 0 && match) { + line.split(":") + currentEvent = match[1].slice(0, -1); // strip last colon + handlers[currentEvent] = match[2]; + } else { + handlers[currentEvent] += line; + } + curlyCount += countCurlies(line); + } + + for (var eventName in handlers) { + addHxOnEventHandler(elt, eventName, handlers[eventName]); + } + } + } + + function processHxOnWildcard(elt) { + // wipe any previous on handlers so that this function takes precedence + deInitOnHandlers(elt) + + for (var i = 0; i < elt.attributes.length; i++) { + var name = elt.attributes[i].name + var value = elt.attributes[i].value + if (startsWith(name, "hx-on") || startsWith(name, "data-hx-on")) { + var afterOnPosition = name.indexOf("-on") + 3; + var nextChar = name.slice(afterOnPosition, afterOnPosition + 1); + if (nextChar === "-" || nextChar === ":") { + var eventName = name.slice(afterOnPosition + 1); + // if the eventName starts with a colon or dash, prepend "htmx" for shorthand support + if (startsWith(eventName, ":")) { + eventName = "htmx" + eventName + } else if (startsWith(eventName, "-")) { + eventName = "htmx:" + eventName.slice(1); + } else if (startsWith(eventName, "htmx-")) { + eventName = "htmx:" + eventName.slice(5); + } + + addHxOnEventHandler(elt, eventName, value) + } + } + } + } + + function initNode(elt) { + if (closest(elt, htmx.config.disableSelector)) { + cleanUpElement(elt) + return; + } + var nodeData = getInternalData(elt); + if (nodeData.initHash !== attributeHash(elt)) { + // clean up any previously processed info + deInitNode(elt); + + nodeData.initHash = attributeHash(elt); + + processHxOn(elt); + + triggerEvent(elt, "htmx:beforeProcessNode") + + if (elt.value) { + nodeData.lastValue = elt.value; + } + + var triggerSpecs = getTriggerSpecs(elt); + var hasExplicitHttpAction = processVerbs(elt, nodeData, triggerSpecs); + + if (!hasExplicitHttpAction) { + if (getClosestAttributeValue(elt, "hx-boost") === "true") { + boostElement(elt, nodeData, triggerSpecs); + } else if (hasAttribute(elt, 'hx-trigger')) { + triggerSpecs.forEach(function (triggerSpec) { + // For "naked" triggers, don't do anything at all + addTriggerHandler(elt, triggerSpec, nodeData, function () { + }) + }) + } + } + + // Handle submit buttons/inputs that have the form attribute set + // see https://developer.mozilla.org/docs/Web/HTML/Element/button + if (elt.tagName === "FORM" || (getRawAttribute(elt, "type") === "submit" && hasAttribute(elt, "form"))) { + initButtonTracking(elt) + } + + var sseInfo = getAttributeValue(elt, 'hx-sse'); + if (sseInfo) { + processSSEInfo(elt, nodeData, sseInfo); + } + + var wsInfo = getAttributeValue(elt, 'hx-ws'); + if (wsInfo) { + processWebSocketInfo(elt, nodeData, wsInfo); + } + triggerEvent(elt, "htmx:afterProcessNode"); + } + } + + function processNode(elt) { + elt = resolveTarget(elt); + if (closest(elt, htmx.config.disableSelector)) { + cleanUpElement(elt) + return; + } + initNode(elt); + forEach(findElementsToProcess(elt), function(child) { initNode(child) }); + // Because it happens second, the new way of adding onHandlers superseeds the old one + // i.e. if there are any hx-on:eventName attributes, the hx-on attribute will be ignored + forEach(findHxOnWildcardElements(elt), processHxOnWildcard); + } + + //==================================================================== + // Event/Log Support + //==================================================================== + + function kebabEventName(str) { + return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase(); + } + + function makeEvent(eventName, detail) { + var evt; + if (window.CustomEvent && typeof window.CustomEvent === 'function') { + evt = new CustomEvent(eventName, {bubbles: true, cancelable: true, detail: detail}); + } else { + evt = getDocument().createEvent('CustomEvent'); + evt.initCustomEvent(eventName, true, true, detail); + } + return evt; + } + + function triggerErrorEvent(elt, eventName, detail) { + triggerEvent(elt, eventName, mergeObjects({error:eventName}, detail)); + } + + function ignoreEventForLogging(eventName) { + return eventName === "htmx:afterProcessNode" + } + + /** + * `withExtensions` locates all active extensions for a provided element, then + * executes the provided function using each of the active extensions. It should + * be called internally at every extendable execution point in htmx. + * + * @param {HTMLElement} elt + * @param {(extension:import("./htmx").HtmxExtension) => void} toDo + * @returns void + */ + function withExtensions(elt, toDo) { + forEach(getExtensions(elt), function(extension){ + try { + toDo(extension); + } catch (e) { + logError(e); + } + }); + } + + function logError(msg) { + if(console.error) { + console.error(msg); + } else if (console.log) { + console.log("ERROR: ", msg); + } + } + + function triggerEvent(elt, eventName, detail) { + elt = resolveTarget(elt); + if (detail == null) { + detail = {}; + } + detail["elt"] = elt; + var event = makeEvent(eventName, detail); + if (htmx.logger && !ignoreEventForLogging(eventName)) { + htmx.logger(elt, eventName, detail); + } + if (detail.error) { + logError(detail.error); + triggerEvent(elt, "htmx:error", {errorInfo:detail}) + } + var eventResult = elt.dispatchEvent(event); + var kebabName = kebabEventName(eventName); + if (eventResult && kebabName !== eventName) { + var kebabedEvent = makeEvent(kebabName, event.detail); + eventResult = eventResult && elt.dispatchEvent(kebabedEvent) + } + withExtensions(elt, function (extension) { + eventResult = eventResult && (extension.onEvent(eventName, event) !== false && !event.defaultPrevented) + }); + return eventResult; + } + + //==================================================================== + // History Support + //==================================================================== + var currentPathForHistory = location.pathname+location.search; + + function getHistoryElement() { + var historyElt = getDocument().querySelector('[hx-history-elt],[data-hx-history-elt]'); + return historyElt || getDocument().body; + } + + function saveToHistoryCache(url, content, title, scroll) { + if (!canAccessLocalStorage()) { + return; + } + + if (htmx.config.historyCacheSize <= 0) { + // make sure that an eventually already existing cache is purged + localStorage.removeItem("htmx-history-cache"); + return; + } + + url = normalizePath(url); + + var historyCache = parseJSON(localStorage.getItem("htmx-history-cache")) || []; + for (var i = 0; i < historyCache.length; i++) { + if (historyCache[i].url === url) { + historyCache.splice(i, 1); + break; + } + } + var newHistoryItem = {url:url, content: content, title:title, scroll:scroll}; + triggerEvent(getDocument().body, "htmx:historyItemCreated", {item:newHistoryItem, cache: historyCache}) + historyCache.push(newHistoryItem) + while (historyCache.length > htmx.config.historyCacheSize) { + historyCache.shift(); + } + while(historyCache.length > 0){ + try { + localStorage.setItem("htmx-history-cache", JSON.stringify(historyCache)); + break; + } catch (e) { + triggerErrorEvent(getDocument().body, "htmx:historyCacheError", {cause:e, cache: historyCache}) + historyCache.shift(); // shrink the cache and retry + } + } + } + + function getCachedHistory(url) { + if (!canAccessLocalStorage()) { + return null; + } + + url = normalizePath(url); + + var historyCache = parseJSON(localStorage.getItem("htmx-history-cache")) || []; + for (var i = 0; i < historyCache.length; i++) { + if (historyCache[i].url === url) { + return historyCache[i]; + } + } + return null; + } + + function cleanInnerHtmlForHistory(elt) { + var className = htmx.config.requestClass; + var clone = elt.cloneNode(true); + forEach(findAll(clone, "." + className), function(child){ + removeClassFromElement(child, className); + }); + return clone.innerHTML; + } + + function saveCurrentPageToHistory() { + var elt = getHistoryElement(); + var path = currentPathForHistory || location.pathname+location.search; + + // Allow history snapshot feature to be disabled where hx-history="false" + // is present *anywhere* in the current document we're about to save, + // so we can prevent privileged data entering the cache. + // The page will still be reachable as a history entry, but htmx will fetch it + // live from the server onpopstate rather than look in the localStorage cache + var disableHistoryCache + try { + disableHistoryCache = getDocument().querySelector('[hx-history="false" i],[data-hx-history="false" i]') + } catch (e) { + // IE11: insensitive modifier not supported so fallback to case sensitive selector + disableHistoryCache = getDocument().querySelector('[hx-history="false"],[data-hx-history="false"]') + } + if (!disableHistoryCache) { + triggerEvent(getDocument().body, "htmx:beforeHistorySave", {path: path, historyElt: elt}); + saveToHistoryCache(path, cleanInnerHtmlForHistory(elt), getDocument().title, window.scrollY); + } + + if (htmx.config.historyEnabled) history.replaceState({htmx: true}, getDocument().title, window.location.href); + } + + function pushUrlIntoHistory(path) { + // remove the cache buster parameter, if any + if (htmx.config.getCacheBusterParam) { + path = path.replace(/org\.htmx\.cache-buster=[^&]*&?/, '') + if (endsWith(path, '&') || endsWith(path, "?")) { + path = path.slice(0, -1); + } + } + if(htmx.config.historyEnabled) { + history.pushState({htmx:true}, "", path); + } + currentPathForHistory = path; + } + + function replaceUrlInHistory(path) { + if(htmx.config.historyEnabled) history.replaceState({htmx:true}, "", path); + currentPathForHistory = path; + } + + function settleImmediately(tasks) { + forEach(tasks, function (task) { + task.call(); + }); + } + + function loadHistoryFromServer(path) { + var request = new XMLHttpRequest(); + var details = {path: path, xhr:request}; + triggerEvent(getDocument().body, "htmx:historyCacheMiss", details); + request.open('GET', path, true); + request.setRequestHeader("HX-Request", "true"); + request.setRequestHeader("HX-History-Restore-Request", "true"); + request.setRequestHeader("HX-Current-URL", getDocument().location.href); + request.onload = function () { + if (this.status >= 200 && this.status < 400) { + triggerEvent(getDocument().body, "htmx:historyCacheMissLoad", details); + var fragment = makeFragment(this.response); + // @ts-ignore + fragment = fragment.querySelector('[hx-history-elt],[data-hx-history-elt]') || fragment; + var historyElement = getHistoryElement(); + var settleInfo = makeSettleInfo(historyElement); + var title = findTitle(this.response); + if (title) { + var titleElt = find("title"); + if (titleElt) { + titleElt.innerHTML = title; + } else { + window.document.title = title; + } + } + // @ts-ignore + swapInnerHTML(historyElement, fragment, settleInfo) + settleImmediately(settleInfo.tasks); + currentPathForHistory = path; + triggerEvent(getDocument().body, "htmx:historyRestore", {path: path, cacheMiss:true, serverResponse:this.response}); + } else { + triggerErrorEvent(getDocument().body, "htmx:historyCacheMissLoadError", details); + } + }; + request.send(); + } + + function restoreHistory(path) { + saveCurrentPageToHistory(); + path = path || location.pathname+location.search; + var cached = getCachedHistory(path); + if (cached) { + var fragment = makeFragment(cached.content); + var historyElement = getHistoryElement(); + var settleInfo = makeSettleInfo(historyElement); + swapInnerHTML(historyElement, fragment, settleInfo) + settleImmediately(settleInfo.tasks); + document.title = cached.title; + setTimeout(function () { + window.scrollTo(0, cached.scroll); + }, 0); // next 'tick', so browser has time to render layout + currentPathForHistory = path; + triggerEvent(getDocument().body, "htmx:historyRestore", {path:path, item:cached}); + } else { + if (htmx.config.refreshOnHistoryMiss) { + + // @ts-ignore: optional parameter in reload() function throws error + window.location.reload(true); + } else { + loadHistoryFromServer(path); + } + } + } + + function addRequestIndicatorClasses(elt) { + var indicators = findAttributeTargets(elt, 'hx-indicator'); + if (indicators == null) { + indicators = [elt]; + } + forEach(indicators, function (ic) { + var internalData = getInternalData(ic); + internalData.requestCount = (internalData.requestCount || 0) + 1; + ic.classList["add"].call(ic.classList, htmx.config.requestClass); + }); + return indicators; + } + + function disableElements(elt) { + var disabledElts = findAttributeTargets(elt, 'hx-disabled-elt'); + if (disabledElts == null) { + disabledElts = []; + } + forEach(disabledElts, function (disabledElement) { + var internalData = getInternalData(disabledElement); + internalData.requestCount = (internalData.requestCount || 0) + 1; + disabledElement.setAttribute("disabled", ""); + }); + return disabledElts; + } + + function removeRequestIndicators(indicators, disabled) { + forEach(indicators, function (ic) { + var internalData = getInternalData(ic); + internalData.requestCount = (internalData.requestCount || 0) - 1; + if (internalData.requestCount === 0) { + ic.classList["remove"].call(ic.classList, htmx.config.requestClass); + } + }); + forEach(disabled, function (disabledElement) { + var internalData = getInternalData(disabledElement); + internalData.requestCount = (internalData.requestCount || 0) - 1; + if (internalData.requestCount === 0) { + disabledElement.removeAttribute('disabled'); + } + }); + } + + //==================================================================== + // Input Value Processing + //==================================================================== + + function haveSeenNode(processed, elt) { + for (var i = 0; i < processed.length; i++) { + var node = processed[i]; + if (node.isSameNode(elt)) { + return true; + } + } + return false; + } + + function shouldInclude(elt) { + if(elt.name === "" || elt.name == null || elt.disabled || closest(elt, "fieldset[disabled]")) { + return false; + } + // ignore "submitter" types (see jQuery src/serialize.js) + if (elt.type === "button" || elt.type === "submit" || elt.tagName === "image" || elt.tagName === "reset" || elt.tagName === "file" ) { + return false; + } + if (elt.type === "checkbox" || elt.type === "radio" ) { + return elt.checked; + } + return true; + } + + function addValueToValues(name, value, values) { + // This is a little ugly because both the current value of the named value in the form + // and the new value could be arrays, so we have to handle all four cases :/ + if (name != null && value != null) { + var current = values[name]; + if (current === undefined) { + values[name] = value; + } else if (Array.isArray(current)) { + if (Array.isArray(value)) { + values[name] = current.concat(value); + } else { + current.push(value); + } + } else { + if (Array.isArray(value)) { + values[name] = [current].concat(value); + } else { + values[name] = [current, value]; + } + } + } + } + + function processInputValue(processed, values, errors, elt, validate) { + if (elt == null || haveSeenNode(processed, elt)) { + return; + } else { + processed.push(elt); + } + if (shouldInclude(elt)) { + var name = getRawAttribute(elt,"name"); + var value = elt.value; + if (elt.multiple && elt.tagName === "SELECT") { + value = toArray(elt.querySelectorAll("option:checked")).map(function (e) { return e.value }); + } + // include file inputs + if (elt.files) { + value = toArray(elt.files); + } + addValueToValues(name, value, values); + if (validate) { + validateElement(elt, errors); + } + } + if (matches(elt, 'form')) { + var inputs = elt.elements; + forEach(inputs, function(input) { + processInputValue(processed, values, errors, input, validate); + }); + } + } + + function validateElement(element, errors) { + if (element.willValidate) { + triggerEvent(element, "htmx:validation:validate") + if (!element.checkValidity()) { + errors.push({elt: element, message:element.validationMessage, validity:element.validity}); + triggerEvent(element, "htmx:validation:failed", {message:element.validationMessage, validity:element.validity}) + } + } + } + + /** + * @param {HTMLElement} elt + * @param {string} verb + */ + function getInputValues(elt, verb) { + var processed = []; + var values = {}; + var formValues = {}; + var errors = []; + var internalData = getInternalData(elt); + if (internalData.lastButtonClicked && !bodyContains(internalData.lastButtonClicked)) { + internalData.lastButtonClicked = null + } + + // only validate when form is directly submitted and novalidate or formnovalidate are not set + // or if the element has an explicit hx-validate="true" on it + var validate = (matches(elt, 'form') && elt.noValidate !== true) || getAttributeValue(elt, "hx-validate") === "true"; + if (internalData.lastButtonClicked) { + validate = validate && internalData.lastButtonClicked.formNoValidate !== true; + } + + // for a non-GET include the closest form + if (verb !== 'get') { + processInputValue(processed, formValues, errors, closest(elt, 'form'), validate); + } + + // include the element itself + processInputValue(processed, values, errors, elt, validate); + + // if a button or submit was clicked last, include its value + if (internalData.lastButtonClicked || elt.tagName === "BUTTON" || + (elt.tagName === "INPUT" && getRawAttribute(elt, "type") === "submit")) { + var button = internalData.lastButtonClicked || elt + var name = getRawAttribute(button, "name") + addValueToValues(name, button.value, formValues) + } + + // include any explicit includes + var includes = findAttributeTargets(elt, "hx-include"); + forEach(includes, function(node) { + processInputValue(processed, values, errors, node, validate); + // if a non-form is included, include any input values within it + if (!matches(node, 'form')) { + forEach(node.querySelectorAll(INPUT_SELECTOR), function (descendant) { + processInputValue(processed, values, errors, descendant, validate); + }) + } + }); + + // form values take precedence, overriding the regular values + values = mergeObjects(values, formValues); + + return {errors:errors, values:values}; + } + + function appendParam(returnStr, name, realValue) { + if (returnStr !== "") { + returnStr += "&"; + } + if (String(realValue) === "[object Object]") { + realValue = JSON.stringify(realValue); + } + var s = encodeURIComponent(realValue); + returnStr += encodeURIComponent(name) + "=" + s; + return returnStr; + } + + function urlEncode(values) { + var returnStr = ""; + for (var name in values) { + if (values.hasOwnProperty(name)) { + var value = values[name]; + if (Array.isArray(value)) { + forEach(value, function(v) { + returnStr = appendParam(returnStr, name, v); + }); + } else { + returnStr = appendParam(returnStr, name, value); + } + } + } + return returnStr; + } + + function makeFormData(values) { + var formData = new FormData(); + for (var name in values) { + if (values.hasOwnProperty(name)) { + var value = values[name]; + if (Array.isArray(value)) { + forEach(value, function(v) { + formData.append(name, v); + }); + } else { + formData.append(name, value); + } + } + } + return formData; + } + + //==================================================================== + // Ajax + //==================================================================== + + /** + * @param {HTMLElement} elt + * @param {HTMLElement} target + * @param {string} prompt + * @returns {Object} // TODO: Define/Improve HtmxHeaderSpecification + */ + function getHeaders(elt, target, prompt) { + var headers = { + "HX-Request" : "true", + "HX-Trigger" : getRawAttribute(elt, "id"), + "HX-Trigger-Name" : getRawAttribute(elt, "name"), + "HX-Target" : getAttributeValue(target, "id"), + "HX-Current-URL" : getDocument().location.href, + } + getValuesForElement(elt, "hx-headers", false, headers) + if (prompt !== undefined) { + headers["HX-Prompt"] = prompt; + } + if (getInternalData(elt).boosted) { + headers["HX-Boosted"] = "true"; + } + return headers; + } + + /** + * filterValues takes an object containing form input values + * and returns a new object that only contains keys that are + * specified by the closest "hx-params" attribute + * @param {Object} inputValues + * @param {HTMLElement} elt + * @returns {Object} + */ + function filterValues(inputValues, elt) { + var paramsValue = getClosestAttributeValue(elt, "hx-params"); + if (paramsValue) { + if (paramsValue === "none") { + return {}; + } else if (paramsValue === "*") { + return inputValues; + } else if(paramsValue.indexOf("not ") === 0) { + forEach(paramsValue.substr(4).split(","), function (name) { + name = name.trim(); + delete inputValues[name]; + }); + return inputValues; + } else { + var newValues = {} + forEach(paramsValue.split(","), function (name) { + name = name.trim(); + newValues[name] = inputValues[name]; + }); + return newValues; + } + } else { + return inputValues; + } + } + + function isAnchorLink(elt) { + return getRawAttribute(elt, 'href') && getRawAttribute(elt, 'href').indexOf("#") >=0 + } + + /** + * + * @param {HTMLElement} elt + * @param {string} swapInfoOverride + * @returns {import("./htmx").HtmxSwapSpecification} + */ + function getSwapSpecification(elt, swapInfoOverride) { + var swapInfo = swapInfoOverride ? swapInfoOverride : getClosestAttributeValue(elt, "hx-swap"); + var swapSpec = { + "swapStyle" : getInternalData(elt).boosted ? 'innerHTML' : htmx.config.defaultSwapStyle, + "swapDelay" : htmx.config.defaultSwapDelay, + "settleDelay" : htmx.config.defaultSettleDelay + } + if (htmx.config.scrollIntoViewOnBoost && getInternalData(elt).boosted && !isAnchorLink(elt)) { + swapSpec["show"] = "top" + } + if (swapInfo) { + var split = splitOnWhitespace(swapInfo); + if (split.length > 0) { + for (var i = 0; i < split.length; i++) { + var value = split[i]; + if (value.indexOf("swap:") === 0) { + swapSpec["swapDelay"] = parseInterval(value.substr(5)); + } else if (value.indexOf("settle:") === 0) { + swapSpec["settleDelay"] = parseInterval(value.substr(7)); + } else if (value.indexOf("transition:") === 0) { + swapSpec["transition"] = value.substr(11) === "true"; + } else if (value.indexOf("ignoreTitle:") === 0) { + swapSpec["ignoreTitle"] = value.substr(12) === "true"; + } else if (value.indexOf("scroll:") === 0) { + var scrollSpec = value.substr(7); + var splitSpec = scrollSpec.split(":"); + var scrollVal = splitSpec.pop(); + var selectorVal = splitSpec.length > 0 ? splitSpec.join(":") : null; + swapSpec["scroll"] = scrollVal; + swapSpec["scrollTarget"] = selectorVal; + } else if (value.indexOf("show:") === 0) { + var showSpec = value.substr(5); + var splitSpec = showSpec.split(":"); + var showVal = splitSpec.pop(); + var selectorVal = splitSpec.length > 0 ? splitSpec.join(":") : null; + swapSpec["show"] = showVal; + swapSpec["showTarget"] = selectorVal; + } else if (value.indexOf("focus-scroll:") === 0) { + var focusScrollVal = value.substr("focus-scroll:".length); + swapSpec["focusScroll"] = focusScrollVal == "true"; + } else if (i == 0) { + swapSpec["swapStyle"] = value; + } else { + logError('Unknown modifier in hx-swap: ' + value); + } + } + } + } + return swapSpec; + } + + function usesFormData(elt) { + return getClosestAttributeValue(elt, "hx-encoding") === "multipart/form-data" || + (matches(elt, "form") && getRawAttribute(elt, 'enctype') === "multipart/form-data"); + } + + function encodeParamsForBody(xhr, elt, filteredParameters) { + var encodedParameters = null; + withExtensions(elt, function (extension) { + if (encodedParameters == null) { + encodedParameters = extension.encodeParameters(xhr, filteredParameters, elt); + } + }); + if (encodedParameters != null) { + return encodedParameters; + } else { + if (usesFormData(elt)) { + return makeFormData(filteredParameters); + } else { + return urlEncode(filteredParameters); + } + } + } + + /** + * + * @param {Element} target + * @returns {import("./htmx").HtmxSettleInfo} + */ + function makeSettleInfo(target) { + return {tasks: [], elts: [target]}; + } + + function updateScrollState(content, swapSpec) { + var first = content[0]; + var last = content[content.length - 1]; + if (swapSpec.scroll) { + var target = null; + if (swapSpec.scrollTarget) { + target = querySelectorExt(first, swapSpec.scrollTarget); + } + if (swapSpec.scroll === "top" && (first || target)) { + target = target || first; + target.scrollTop = 0; + } + if (swapSpec.scroll === "bottom" && (last || target)) { + target = target || last; + target.scrollTop = target.scrollHeight; + } + } + if (swapSpec.show) { + var target = null; + if (swapSpec.showTarget) { + var targetStr = swapSpec.showTarget; + if (swapSpec.showTarget === "window") { + targetStr = "body"; + } + target = querySelectorExt(first, targetStr); + } + if (swapSpec.show === "top" && (first || target)) { + target = target || first; + target.scrollIntoView({block:'start', behavior: htmx.config.scrollBehavior}); + } + if (swapSpec.show === "bottom" && (last || target)) { + target = target || last; + target.scrollIntoView({block:'end', behavior: htmx.config.scrollBehavior}); + } + } + } + + /** + * @param {HTMLElement} elt + * @param {string} attr + * @param {boolean=} evalAsDefault + * @param {Object=} values + * @returns {Object} + */ + function getValuesForElement(elt, attr, evalAsDefault, values) { + if (values == null) { + values = {}; + } + if (elt == null) { + return values; + } + var attributeValue = getAttributeValue(elt, attr); + if (attributeValue) { + var str = attributeValue.trim(); + var evaluateValue = evalAsDefault; + if (str === "unset") { + return null; + } + if (str.indexOf("javascript:") === 0) { + str = str.substr(11); + evaluateValue = true; + } else if (str.indexOf("js:") === 0) { + str = str.substr(3); + evaluateValue = true; + } + if (str.indexOf('{') !== 0) { + str = "{" + str + "}"; + } + var varsValues; + if (evaluateValue) { + varsValues = maybeEval(elt,function () {return Function("return (" + str + ")")();}, {}); + } else { + varsValues = parseJSON(str); + } + for (var key in varsValues) { + if (varsValues.hasOwnProperty(key)) { + if (values[key] == null) { + values[key] = varsValues[key]; + } + } + } + } + return getValuesForElement(parentElt(elt), attr, evalAsDefault, values); + } + + function maybeEval(elt, toEval, defaultVal) { + if (htmx.config.allowEval) { + return toEval(); + } else { + triggerErrorEvent(elt, 'htmx:evalDisallowedError'); + return defaultVal; + } + } + + /** + * @param {HTMLElement} elt + * @param {*} expressionVars + * @returns + */ + function getHXVarsForElement(elt, expressionVars) { + return getValuesForElement(elt, "hx-vars", true, expressionVars); + } + + /** + * @param {HTMLElement} elt + * @param {*} expressionVars + * @returns + */ + function getHXValsForElement(elt, expressionVars) { + return getValuesForElement(elt, "hx-vals", false, expressionVars); + } + + /** + * @param {HTMLElement} elt + * @returns {Object} + */ + function getExpressionVars(elt) { + return mergeObjects(getHXVarsForElement(elt), getHXValsForElement(elt)); + } + + function safelySetHeaderValue(xhr, header, headerValue) { + if (headerValue !== null) { + try { + xhr.setRequestHeader(header, headerValue); + } catch (e) { + // On an exception, try to set the header URI encoded instead + xhr.setRequestHeader(header, encodeURIComponent(headerValue)); + xhr.setRequestHeader(header + "-URI-AutoEncoded", "true"); + } + } + } + + function getPathFromResponse(xhr) { + // NB: IE11 does not support this stuff + if (xhr.responseURL && typeof(URL) !== "undefined") { + try { + var url = new URL(xhr.responseURL); + return url.pathname + url.search; + } catch (e) { + triggerErrorEvent(getDocument().body, "htmx:badResponseUrl", {url: xhr.responseURL}); + } + } + } + + function hasHeader(xhr, regexp) { + return regexp.test(xhr.getAllResponseHeaders()) + } + + function ajaxHelper(verb, path, context) { + verb = verb.toLowerCase(); + if (context) { + if (context instanceof Element || isType(context, 'String')) { + return issueAjaxRequest(verb, path, null, null, { + targetOverride: resolveTarget(context), + returnPromise: true + }); + } else { + return issueAjaxRequest(verb, path, resolveTarget(context.source), context.event, + { + handler : context.handler, + headers : context.headers, + values : context.values, + targetOverride: resolveTarget(context.target), + swapOverride: context.swap, + select: context.select, + returnPromise: true + }); + } + } else { + return issueAjaxRequest(verb, path, null, null, { + returnPromise: true + }); + } + } + + function hierarchyForElt(elt) { + var arr = []; + while (elt) { + arr.push(elt); + elt = elt.parentElement; + } + return arr; + } + + function verifyPath(elt, path, requestConfig) { + var sameHost + var url + if (typeof URL === "function") { + url = new URL(path, document.location.href); + var origin = document.location.origin; + sameHost = origin === url.origin; + } else { + // IE11 doesn't support URL + url = path + sameHost = startsWith(path, document.location.origin) + } + + if (htmx.config.selfRequestsOnly) { + if (!sameHost) { + return false; + } + } + return triggerEvent(elt, "htmx:validateUrl", mergeObjects({url: url, sameHost: sameHost}, requestConfig)); + } + + function issueAjaxRequest(verb, path, elt, event, etc, confirmed) { + var resolve = null; + var reject = null; + etc = etc != null ? etc : {}; + if(etc.returnPromise && typeof Promise !== "undefined"){ + var promise = new Promise(function (_resolve, _reject) { + resolve = _resolve; + reject = _reject; + }); + } + if(elt == null) { + elt = getDocument().body; + } + var responseHandler = etc.handler || handleAjaxResponse; + var select = etc.select || null; + + if (!bodyContains(elt)) { + // do not issue requests for elements removed from the DOM + maybeCall(resolve); + return promise; + } + var target = etc.targetOverride || getTarget(elt); + if (target == null || target == DUMMY_ELT) { + triggerErrorEvent(elt, 'htmx:targetError', {target: getAttributeValue(elt, "hx-target")}); + maybeCall(reject); + return promise; + } + + var eltData = getInternalData(elt); + var submitter = eltData.lastButtonClicked; + + if (submitter) { + var buttonPath = getRawAttribute(submitter, "formaction"); + if (buttonPath != null) { + path = buttonPath; + } + + var buttonVerb = getRawAttribute(submitter, "formmethod") + if (buttonVerb != null) { + // ignore buttons with formmethod="dialog" + if (buttonVerb.toLowerCase() !== "dialog") { + verb = buttonVerb; + } + } + } + + var confirmQuestion = getClosestAttributeValue(elt, "hx-confirm"); + // allow event-based confirmation w/ a callback + if (confirmed === undefined) { + var issueRequest = function(skipConfirmation) { + return issueAjaxRequest(verb, path, elt, event, etc, !!skipConfirmation); + } + var confirmDetails = {target: target, elt: elt, path: path, verb: verb, triggeringEvent: event, etc: etc, issueRequest: issueRequest, question: confirmQuestion}; + if (triggerEvent(elt, 'htmx:confirm', confirmDetails) === false) { + maybeCall(resolve); + return promise; + } + } + + var syncElt = elt; + var syncStrategy = getClosestAttributeValue(elt, "hx-sync"); + var queueStrategy = null; + var abortable = false; + if (syncStrategy) { + var syncStrings = syncStrategy.split(":"); + var selector = syncStrings[0].trim(); + if (selector === "this") { + syncElt = findThisElement(elt, 'hx-sync'); + } else { + syncElt = querySelectorExt(elt, selector); + } + // default to the drop strategy + syncStrategy = (syncStrings[1] || 'drop').trim(); + eltData = getInternalData(syncElt); + if (syncStrategy === "drop" && eltData.xhr && eltData.abortable !== true) { + maybeCall(resolve); + return promise; + } else if (syncStrategy === "abort") { + if (eltData.xhr) { + maybeCall(resolve); + return promise; + } else { + abortable = true; + } + } else if (syncStrategy === "replace") { + triggerEvent(syncElt, 'htmx:abort'); // abort the current request and continue + } else if (syncStrategy.indexOf("queue") === 0) { + var queueStrArray = syncStrategy.split(" "); + queueStrategy = (queueStrArray[1] || "last").trim(); + } + } + + if (eltData.xhr) { + if (eltData.abortable) { + triggerEvent(syncElt, 'htmx:abort'); // abort the current request and continue + } else { + if(queueStrategy == null){ + if (event) { + var eventData = getInternalData(event); + if (eventData && eventData.triggerSpec && eventData.triggerSpec.queue) { + queueStrategy = eventData.triggerSpec.queue; + } + } + if (queueStrategy == null) { + queueStrategy = "last"; + } + } + if (eltData.queuedRequests == null) { + eltData.queuedRequests = []; + } + if (queueStrategy === "first" && eltData.queuedRequests.length === 0) { + eltData.queuedRequests.push(function () { + issueAjaxRequest(verb, path, elt, event, etc) + }); + } else if (queueStrategy === "all") { + eltData.queuedRequests.push(function () { + issueAjaxRequest(verb, path, elt, event, etc) + }); + } else if (queueStrategy === "last") { + eltData.queuedRequests = []; // dump existing queue + eltData.queuedRequests.push(function () { + issueAjaxRequest(verb, path, elt, event, etc) + }); + } + maybeCall(resolve); + return promise; + } + } + + var xhr = new XMLHttpRequest(); + eltData.xhr = xhr; + eltData.abortable = abortable; + var endRequestLock = function(){ + eltData.xhr = null; + eltData.abortable = false; + if (eltData.queuedRequests != null && + eltData.queuedRequests.length > 0) { + var queuedRequest = eltData.queuedRequests.shift(); + queuedRequest(); + } + } + var promptQuestion = getClosestAttributeValue(elt, "hx-prompt"); + if (promptQuestion) { + var promptResponse = prompt(promptQuestion); + // prompt returns null if cancelled and empty string if accepted with no entry + if (promptResponse === null || + !triggerEvent(elt, 'htmx:prompt', {prompt: promptResponse, target:target})) { + maybeCall(resolve); + endRequestLock(); + return promise; + } + } + + if (confirmQuestion && !confirmed) { + if(!confirm(confirmQuestion)) { + maybeCall(resolve); + endRequestLock() + return promise; + } + } + + + var headers = getHeaders(elt, target, promptResponse); + + if (verb !== 'get' && !usesFormData(elt)) { + headers['Content-Type'] = 'application/x-www-form-urlencoded'; + } + + if (etc.headers) { + headers = mergeObjects(headers, etc.headers); + } + var results = getInputValues(elt, verb); + var errors = results.errors; + var rawParameters = results.values; + if (etc.values) { + rawParameters = mergeObjects(rawParameters, etc.values); + } + var expressionVars = getExpressionVars(elt); + var allParameters = mergeObjects(rawParameters, expressionVars); + var filteredParameters = filterValues(allParameters, elt); + + if (htmx.config.getCacheBusterParam && verb === 'get') { + filteredParameters['org.htmx.cache-buster'] = getRawAttribute(target, "id") || "true"; + } + + // behavior of anchors w/ empty href is to use the current URL + if (path == null || path === "") { + path = getDocument().location.href; + } + + + var requestAttrValues = getValuesForElement(elt, 'hx-request'); + + var eltIsBoosted = getInternalData(elt).boosted; + + var useUrlParams = htmx.config.methodsThatUseUrlParams.indexOf(verb) >= 0 + + var requestConfig = { + boosted: eltIsBoosted, + useUrlParams: useUrlParams, + parameters: filteredParameters, + unfilteredParameters: allParameters, + headers:headers, + target:target, + verb:verb, + errors:errors, + withCredentials: etc.credentials || requestAttrValues.credentials || htmx.config.withCredentials, + timeout: etc.timeout || requestAttrValues.timeout || htmx.config.timeout, + path:path, + triggeringEvent:event + }; + + if(!triggerEvent(elt, 'htmx:configRequest', requestConfig)){ + maybeCall(resolve); + endRequestLock(); + return promise; + } + + // copy out in case the object was overwritten + path = requestConfig.path; + verb = requestConfig.verb; + headers = requestConfig.headers; + filteredParameters = requestConfig.parameters; + errors = requestConfig.errors; + useUrlParams = requestConfig.useUrlParams; + + if(errors && errors.length > 0){ + triggerEvent(elt, 'htmx:validation:halted', requestConfig) + maybeCall(resolve); + endRequestLock(); + return promise; + } + + var splitPath = path.split("#"); + var pathNoAnchor = splitPath[0]; + var anchor = splitPath[1]; + + var finalPath = path + if (useUrlParams) { + finalPath = pathNoAnchor; + var values = Object.keys(filteredParameters).length !== 0; + if (values) { + if (finalPath.indexOf("?") < 0) { + finalPath += "?"; + } else { + finalPath += "&"; + } + finalPath += urlEncode(filteredParameters); + if (anchor) { + finalPath += "#" + anchor; + } + } + } + + if (!verifyPath(elt, finalPath, requestConfig)) { + triggerErrorEvent(elt, 'htmx:invalidPath', requestConfig) + maybeCall(reject); + return promise; + }; + + xhr.open(verb.toUpperCase(), finalPath, true); + xhr.overrideMimeType("text/html"); + xhr.withCredentials = requestConfig.withCredentials; + xhr.timeout = requestConfig.timeout; + + // request headers + if (requestAttrValues.noHeaders) { + // ignore all headers + } else { + for (var header in headers) { + if (headers.hasOwnProperty(header)) { + var headerValue = headers[header]; + safelySetHeaderValue(xhr, header, headerValue); + } + } + } + + var responseInfo = { + xhr: xhr, target: target, requestConfig: requestConfig, etc: etc, boosted: eltIsBoosted, select: select, + pathInfo: { + requestPath: path, + finalRequestPath: finalPath, + anchor: anchor + } + }; + + xhr.onload = function () { + try { + var hierarchy = hierarchyForElt(elt); + responseInfo.pathInfo.responsePath = getPathFromResponse(xhr); + responseHandler(elt, responseInfo); + removeRequestIndicators(indicators, disableElts); + triggerEvent(elt, 'htmx:afterRequest', responseInfo); + triggerEvent(elt, 'htmx:afterOnLoad', responseInfo); + // if the body no longer contains the element, trigger the event on the closest parent + // remaining in the DOM + if (!bodyContains(elt)) { + var secondaryTriggerElt = null; + while (hierarchy.length > 0 && secondaryTriggerElt == null) { + var parentEltInHierarchy = hierarchy.shift(); + if (bodyContains(parentEltInHierarchy)) { + secondaryTriggerElt = parentEltInHierarchy; + } + } + if (secondaryTriggerElt) { + triggerEvent(secondaryTriggerElt, 'htmx:afterRequest', responseInfo); + triggerEvent(secondaryTriggerElt, 'htmx:afterOnLoad', responseInfo); + } + } + maybeCall(resolve); + endRequestLock(); + } catch (e) { + triggerErrorEvent(elt, 'htmx:onLoadError', mergeObjects({error:e}, responseInfo)); + throw e; + } + } + xhr.onerror = function () { + removeRequestIndicators(indicators, disableElts); + triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo); + triggerErrorEvent(elt, 'htmx:sendError', responseInfo); + maybeCall(reject); + endRequestLock(); + } + xhr.onabort = function() { + removeRequestIndicators(indicators, disableElts); + triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo); + triggerErrorEvent(elt, 'htmx:sendAbort', responseInfo); + maybeCall(reject); + endRequestLock(); + } + xhr.ontimeout = function() { + removeRequestIndicators(indicators, disableElts); + triggerErrorEvent(elt, 'htmx:afterRequest', responseInfo); + triggerErrorEvent(elt, 'htmx:timeout', responseInfo); + maybeCall(reject); + endRequestLock(); + } + if(!triggerEvent(elt, 'htmx:beforeRequest', responseInfo)){ + maybeCall(resolve); + endRequestLock() + return promise + } + var indicators = addRequestIndicatorClasses(elt); + var disableElts = disableElements(elt); + + forEach(['loadstart', 'loadend', 'progress', 'abort'], function(eventName) { + forEach([xhr, xhr.upload], function (target) { + target.addEventListener(eventName, function(event){ + triggerEvent(elt, "htmx:xhr:" + eventName, { + lengthComputable:event.lengthComputable, + loaded:event.loaded, + total:event.total + }); + }) + }); + }); + triggerEvent(elt, 'htmx:beforeSend', responseInfo); + var params = useUrlParams ? null : encodeParamsForBody(xhr, elt, filteredParameters) + xhr.send(params); + return promise; + } + + function determineHistoryUpdates(elt, responseInfo) { + + var xhr = responseInfo.xhr; + + //=========================================== + // First consult response headers + //=========================================== + var pathFromHeaders = null; + var typeFromHeaders = null; + if (hasHeader(xhr,/HX-Push:/i)) { + pathFromHeaders = xhr.getResponseHeader("HX-Push"); + typeFromHeaders = "push"; + } else if (hasHeader(xhr,/HX-Push-Url:/i)) { + pathFromHeaders = xhr.getResponseHeader("HX-Push-Url"); + typeFromHeaders = "push"; + } else if (hasHeader(xhr,/HX-Replace-Url:/i)) { + pathFromHeaders = xhr.getResponseHeader("HX-Replace-Url"); + typeFromHeaders = "replace"; + } + + // if there was a response header, that has priority + if (pathFromHeaders) { + if (pathFromHeaders === "false") { + return {} + } else { + return { + type: typeFromHeaders, + path : pathFromHeaders + } + } + } + + //=========================================== + // Next resolve via DOM values + //=========================================== + var requestPath = responseInfo.pathInfo.finalRequestPath; + var responsePath = responseInfo.pathInfo.responsePath; + + var pushUrl = getClosestAttributeValue(elt, "hx-push-url"); + var replaceUrl = getClosestAttributeValue(elt, "hx-replace-url"); + var elementIsBoosted = getInternalData(elt).boosted; + + var saveType = null; + var path = null; + + if (pushUrl) { + saveType = "push"; + path = pushUrl; + } else if (replaceUrl) { + saveType = "replace"; + path = replaceUrl; + } else if (elementIsBoosted) { + saveType = "push"; + path = responsePath || requestPath; // if there is no response path, go with the original request path + } + + if (path) { + // false indicates no push, return empty object + if (path === "false") { + return {}; + } + + // true indicates we want to follow wherever the server ended up sending us + if (path === "true") { + path = responsePath || requestPath; // if there is no response path, go with the original request path + } + + // restore any anchor associated with the request + if (responseInfo.pathInfo.anchor && + path.indexOf("#") === -1) { + path = path + "#" + responseInfo.pathInfo.anchor; + } + + return { + type:saveType, + path: path + } + } else { + return {}; + } + } + + function handleAjaxResponse(elt, responseInfo) { + var xhr = responseInfo.xhr; + var target = responseInfo.target; + var etc = responseInfo.etc; + var requestConfig = responseInfo.requestConfig; + var select = responseInfo.select; + + if (!triggerEvent(elt, 'htmx:beforeOnLoad', responseInfo)) return; + + if (hasHeader(xhr, /HX-Trigger:/i)) { + handleTrigger(xhr, "HX-Trigger", elt); + } + + if (hasHeader(xhr, /HX-Location:/i)) { + saveCurrentPageToHistory(); + var redirectPath = xhr.getResponseHeader("HX-Location"); + var swapSpec; + if (redirectPath.indexOf("{") === 0) { + swapSpec = parseJSON(redirectPath); + // what's the best way to throw an error if the user didn't include this + redirectPath = swapSpec['path']; + delete swapSpec['path']; + } + ajaxHelper('GET', redirectPath, swapSpec).then(function(){ + pushUrlIntoHistory(redirectPath); + }); + return; + } + + var shouldRefresh = hasHeader(xhr, /HX-Refresh:/i) && "true" === xhr.getResponseHeader("HX-Refresh"); + + if (hasHeader(xhr, /HX-Redirect:/i)) { + location.href = xhr.getResponseHeader("HX-Redirect"); + shouldRefresh && location.reload(); + return; + } + + if (shouldRefresh) { + location.reload(); + return; + } + + if (hasHeader(xhr,/HX-Retarget:/i)) { + if (xhr.getResponseHeader("HX-Retarget") === "this") { + responseInfo.target = elt; + } else { + responseInfo.target = querySelectorExt(elt, xhr.getResponseHeader("HX-Retarget")); + } + } + + var historyUpdate = determineHistoryUpdates(elt, responseInfo); + + // by default htmx only swaps on 200 return codes and does not swap + // on 204 'No Content' + // this can be ovverriden by responding to the htmx:beforeSwap event and + // overriding the detail.shouldSwap property + var shouldSwap = xhr.status >= 200 && xhr.status < 400 && xhr.status !== 204; + var serverResponse = xhr.response; + var isError = xhr.status >= 400; + var ignoreTitle = htmx.config.ignoreTitle + var beforeSwapDetails = mergeObjects({shouldSwap: shouldSwap, serverResponse:serverResponse, isError:isError, ignoreTitle:ignoreTitle }, responseInfo); + if (!triggerEvent(target, 'htmx:beforeSwap', beforeSwapDetails)) return; + + target = beforeSwapDetails.target; // allow re-targeting + serverResponse = beforeSwapDetails.serverResponse; // allow updating content + isError = beforeSwapDetails.isError; // allow updating error + ignoreTitle = beforeSwapDetails.ignoreTitle; // allow updating ignoring title + + responseInfo.target = target; // Make updated target available to response events + responseInfo.failed = isError; // Make failed property available to response events + responseInfo.successful = !isError; // Make successful property available to response events + + if (beforeSwapDetails.shouldSwap) { + if (xhr.status === 286) { + cancelPolling(elt); + } + + withExtensions(elt, function (extension) { + serverResponse = extension.transformResponse(serverResponse, xhr, elt); + }); + + // Save current page if there will be a history update + if (historyUpdate.type) { + saveCurrentPageToHistory(); + } + + var swapOverride = etc.swapOverride; + if (hasHeader(xhr,/HX-Reswap:/i)) { + swapOverride = xhr.getResponseHeader("HX-Reswap"); + } + var swapSpec = getSwapSpecification(elt, swapOverride); + + if (swapSpec.hasOwnProperty('ignoreTitle')) { + ignoreTitle = swapSpec.ignoreTitle; + } + + target.classList.add(htmx.config.swappingClass); + + // optional transition API promise callbacks + var settleResolve = null; + var settleReject = null; + + var doSwap = function () { + try { + var activeElt = document.activeElement; + var selectionInfo = {}; + try { + selectionInfo = { + elt: activeElt, + // @ts-ignore + start: activeElt ? activeElt.selectionStart : null, + // @ts-ignore + end: activeElt ? activeElt.selectionEnd : null + }; + } catch (e) { + // safari issue - see https://github.com/microsoft/playwright/issues/5894 + } + + var selectOverride; + if (select) { + selectOverride = select; + } + + if (hasHeader(xhr, /HX-Reselect:/i)) { + selectOverride = xhr.getResponseHeader("HX-Reselect"); + } + + // if we need to save history, do so, before swapping so that relative resources have the correct base URL + if (historyUpdate.type) { + triggerEvent(getDocument().body, 'htmx:beforeHistoryUpdate', mergeObjects({ history: historyUpdate }, responseInfo)); + if (historyUpdate.type === "push") { + pushUrlIntoHistory(historyUpdate.path); + triggerEvent(getDocument().body, 'htmx:pushedIntoHistory', {path: historyUpdate.path}); + } else { + replaceUrlInHistory(historyUpdate.path); + triggerEvent(getDocument().body, 'htmx:replacedInHistory', {path: historyUpdate.path}); + } + } + + var settleInfo = makeSettleInfo(target); + selectAndSwap(swapSpec.swapStyle, target, elt, serverResponse, settleInfo, selectOverride); + + if (selectionInfo.elt && + !bodyContains(selectionInfo.elt) && + getRawAttribute(selectionInfo.elt, "id")) { + var newActiveElt = document.getElementById(getRawAttribute(selectionInfo.elt, "id")); + var focusOptions = { preventScroll: swapSpec.focusScroll !== undefined ? !swapSpec.focusScroll : !htmx.config.defaultFocusScroll }; + if (newActiveElt) { + // @ts-ignore + if (selectionInfo.start && newActiveElt.setSelectionRange) { + // @ts-ignore + try { + newActiveElt.setSelectionRange(selectionInfo.start, selectionInfo.end); + } catch (e) { + // the setSelectionRange method is present on fields that don't support it, so just let this fail + } + } + newActiveElt.focus(focusOptions); + } + } + + target.classList.remove(htmx.config.swappingClass); + forEach(settleInfo.elts, function (elt) { + if (elt.classList) { + elt.classList.add(htmx.config.settlingClass); + } + triggerEvent(elt, 'htmx:afterSwap', responseInfo); + }); + + if (hasHeader(xhr, /HX-Trigger-After-Swap:/i)) { + var finalElt = elt; + if (!bodyContains(elt)) { + finalElt = getDocument().body; + } + handleTrigger(xhr, "HX-Trigger-After-Swap", finalElt); + } + + var doSettle = function () { + forEach(settleInfo.tasks, function (task) { + task.call(); + }); + forEach(settleInfo.elts, function (elt) { + if (elt.classList) { + elt.classList.remove(htmx.config.settlingClass); + } + triggerEvent(elt, 'htmx:afterSettle', responseInfo); + }); + + if (responseInfo.pathInfo.anchor) { + var anchorTarget = getDocument().getElementById(responseInfo.pathInfo.anchor); + if(anchorTarget) { + anchorTarget.scrollIntoView({block:'start', behavior: "auto"}); + } + } + + if(settleInfo.title && !ignoreTitle) { + var titleElt = find("title"); + if(titleElt) { + titleElt.innerHTML = settleInfo.title; + } else { + window.document.title = settleInfo.title; + } + } + + updateScrollState(settleInfo.elts, swapSpec); + + if (hasHeader(xhr, /HX-Trigger-After-Settle:/i)) { + var finalElt = elt; + if (!bodyContains(elt)) { + finalElt = getDocument().body; + } + handleTrigger(xhr, "HX-Trigger-After-Settle", finalElt); + } + maybeCall(settleResolve); + } + + if (swapSpec.settleDelay > 0) { + setTimeout(doSettle, swapSpec.settleDelay) + } else { + doSettle(); + } + } catch (e) { + triggerErrorEvent(elt, 'htmx:swapError', responseInfo); + maybeCall(settleReject); + throw e; + } + }; + + var shouldTransition = htmx.config.globalViewTransitions + if(swapSpec.hasOwnProperty('transition')){ + shouldTransition = swapSpec.transition; + } + + if(shouldTransition && + triggerEvent(elt, 'htmx:beforeTransition', responseInfo) && + typeof Promise !== "undefined" && document.startViewTransition){ + var settlePromise = new Promise(function (_resolve, _reject) { + settleResolve = _resolve; + settleReject = _reject; + }); + // wrap the original doSwap() in a call to startViewTransition() + var innerDoSwap = doSwap; + doSwap = function() { + document.startViewTransition(function () { + innerDoSwap(); + return settlePromise; + }); + } + } + + + if (swapSpec.swapDelay > 0) { + setTimeout(doSwap, swapSpec.swapDelay) + } else { + doSwap(); + } + } + if (isError) { + triggerErrorEvent(elt, 'htmx:responseError', mergeObjects({error: "Response Status Error Code " + xhr.status + " from " + responseInfo.pathInfo.requestPath}, responseInfo)); + } + } + + //==================================================================== + // Extensions API + //==================================================================== + + /** @type {Object} */ + var extensions = {}; + + /** + * extensionBase defines the default functions for all extensions. + * @returns {import("./htmx").HtmxExtension} + */ + function extensionBase() { + return { + init: function(api) {return null;}, + onEvent : function(name, evt) {return true;}, + transformResponse : function(text, xhr, elt) {return text;}, + isInlineSwap : function(swapStyle) {return false;}, + handleSwap : function(swapStyle, target, fragment, settleInfo) {return false;}, + encodeParameters : function(xhr, parameters, elt) {return null;} + } + } + + /** + * defineExtension initializes the extension and adds it to the htmx registry + * + * @param {string} name + * @param {import("./htmx").HtmxExtension} extension + */ + function defineExtension(name, extension) { + if(extension.init) { + extension.init(internalAPI) + } + extensions[name] = mergeObjects(extensionBase(), extension); + } + + /** + * removeExtension removes an extension from the htmx registry + * + * @param {string} name + */ + function removeExtension(name) { + delete extensions[name]; + } + + /** + * getExtensions searches up the DOM tree to return all extensions that can be applied to a given element + * + * @param {HTMLElement} elt + * @param {import("./htmx").HtmxExtension[]=} extensionsToReturn + * @param {import("./htmx").HtmxExtension[]=} extensionsToIgnore + */ + function getExtensions(elt, extensionsToReturn, extensionsToIgnore) { + + if (elt == undefined) { + return extensionsToReturn; + } + if (extensionsToReturn == undefined) { + extensionsToReturn = []; + } + if (extensionsToIgnore == undefined) { + extensionsToIgnore = []; + } + var extensionsForElement = getAttributeValue(elt, "hx-ext"); + if (extensionsForElement) { + forEach(extensionsForElement.split(","), function(extensionName){ + extensionName = extensionName.replace(/ /g, ''); + if (extensionName.slice(0, 7) == "ignore:") { + extensionsToIgnore.push(extensionName.slice(7)); + return; + } + if (extensionsToIgnore.indexOf(extensionName) < 0) { + var extension = extensions[extensionName]; + if (extension && extensionsToReturn.indexOf(extension) < 0) { + extensionsToReturn.push(extension); + } + } + }); + } + return getExtensions(parentElt(elt), extensionsToReturn, extensionsToIgnore); + } + + //==================================================================== + // Initialization + //==================================================================== + var isReady = false + getDocument().addEventListener('DOMContentLoaded', function() { + isReady = true + }) + + /** + * Execute a function now if DOMContentLoaded has fired, otherwise listen for it. + * + * This function uses isReady because there is no realiable way to ask the browswer whether + * the DOMContentLoaded event has already been fired; there's a gap between DOMContentLoaded + * firing and readystate=complete. + */ + function ready(fn) { + // Checking readyState here is a failsafe in case the htmx script tag entered the DOM by + // some means other than the initial page load. + if (isReady || getDocument().readyState === 'complete') { + fn(); + } else { + getDocument().addEventListener('DOMContentLoaded', fn); + } + } + + function insertIndicatorStyles() { + if (htmx.config.includeIndicatorStyles !== false) { + getDocument().head.insertAdjacentHTML("beforeend", + ""); + } + } + + function getMetaConfig() { + var element = getDocument().querySelector('meta[name="htmx-config"]'); + if (element) { + // @ts-ignore + return parseJSON(element.content); + } else { + return null; + } + } + + function mergeMetaConfig() { + var metaConfig = getMetaConfig(); + if (metaConfig) { + htmx.config = mergeObjects(htmx.config , metaConfig) + } + } + + // initialize the document + ready(function () { + mergeMetaConfig(); + insertIndicatorStyles(); + var body = getDocument().body; + processNode(body); + var restoredElts = getDocument().querySelectorAll( + "[hx-trigger='restored'],[data-hx-trigger='restored']" + ); + body.addEventListener("htmx:abort", function (evt) { + var target = evt.target; + var internalData = getInternalData(target); + if (internalData && internalData.xhr) { + internalData.xhr.abort(); + } + }); + /** @type {(ev: PopStateEvent) => any} */ + const originalPopstate = window.onpopstate ? window.onpopstate.bind(window) : null; + /** @type {(ev: PopStateEvent) => any} */ + window.onpopstate = function (event) { + if (event.state && event.state.htmx) { + restoreHistory(); + forEach(restoredElts, function(elt){ + triggerEvent(elt, 'htmx:restored', { + 'document': getDocument(), + 'triggerEvent': triggerEvent + }); + }); + } else { + if (originalPopstate) { + originalPopstate(event); + } + } + }; + setTimeout(function () { + triggerEvent(body, 'htmx:load', {}); // give ready handlers a chance to load up before firing this event + body = null; // kill reference for gc + }, 0); + }) + + return htmx; + } +)() +})); \ No newline at end of file diff --git a/archivist/static/libs/htmx/htmx.min.js b/archivist/static/libs/htmx/htmx.min.js new file mode 100644 index 0000000..de5f0f1 --- /dev/null +++ b/archivist/static/libs/htmx/htmx.min.js @@ -0,0 +1 @@ +(function(e,t){if(typeof define==="function"&&define.amd){define([],t)}else if(typeof module==="object"&&module.exports){module.exports=t()}else{e.htmx=e.htmx||t()}})(typeof self!=="undefined"?self:this,function(){return function(){"use strict";var Q={onLoad:F,process:zt,on:de,off:ge,trigger:ce,ajax:Nr,find:C,findAll:f,closest:v,values:function(e,t){var r=dr(e,t||"post");return r.values},remove:_,addClass:z,removeClass:n,toggleClass:$,takeClass:W,defineExtension:Ur,removeExtension:Br,logAll:V,logNone:j,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,allowScriptTags:true,inlineScriptNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",useTemplateFragments:false,scrollBehavior:"smooth",defaultFocusScroll:false,getCacheBusterParam:false,globalViewTransitions:false,methodsThatUseUrlParams:["get"],selfRequestsOnly:false,ignoreTitle:false,scrollIntoViewOnBoost:true,triggerSpecsCache:null},parseInterval:d,_:t,createEventSource:function(e){return new EventSource(e,{withCredentials:true})},createWebSocket:function(e){var t=new WebSocket(e,[]);t.binaryType=Q.config.wsBinaryType;return t},version:"1.9.12"};var r={addTriggerHandler:Lt,bodyContains:se,canAccessLocalStorage:U,findThisElement:xe,filterValues:yr,hasAttribute:o,getAttributeValue:te,getClosestAttributeValue:ne,getClosestMatch:c,getExpressionVars:Hr,getHeaders:xr,getInputValues:dr,getInternalData:ae,getSwapSpecification:wr,getTriggerSpecs:it,getTarget:ye,makeFragment:l,mergeObjects:le,makeSettleInfo:T,oobSwap:Ee,querySelectorExt:ue,selectAndSwap:je,settleImmediately:nr,shouldCancel:ut,triggerEvent:ce,triggerErrorEvent:fe,withExtensions:R};var w=["get","post","put","delete","patch"];var i=w.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");var S=e("head"),q=e("title"),H=e("svg",true);function e(e,t){return new RegExp("<"+e+"(\\s[^>]*>|>)([\\s\\S]*?)<\\/"+e+">",!!t?"gim":"im")}function d(e){if(e==undefined){return undefined}let t=NaN;if(e.slice(-2)=="ms"){t=parseFloat(e.slice(0,-2))}else if(e.slice(-1)=="s"){t=parseFloat(e.slice(0,-1))*1e3}else if(e.slice(-1)=="m"){t=parseFloat(e.slice(0,-1))*1e3*60}else{t=parseFloat(e)}return isNaN(t)?undefined:t}function ee(e,t){return e.getAttribute&&e.getAttribute(t)}function o(e,t){return e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function te(e,t){return ee(e,t)||ee(e,"data-"+t)}function u(e){return e.parentElement}function re(){return document}function c(e,t){while(e&&!t(e)){e=u(e)}return e?e:null}function L(e,t,r){var n=te(t,r);var i=te(t,"hx-disinherit");if(e!==t&&i&&(i==="*"||i.split(" ").indexOf(r)>=0)){return"unset"}else{return n}}function ne(t,r){var n=null;c(t,function(e){return n=L(t,e,r)});if(n!=="unset"){return n}}function h(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function A(e){var t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return""}}function s(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}if(i==null){i=re().createDocumentFragment()}return i}function N(e){return/",0);var a=i.querySelector("template").content;if(Q.config.allowScriptTags){oe(a.querySelectorAll("script"),function(e){if(Q.config.inlineScriptNonce){e.nonce=Q.config.inlineScriptNonce}e.htmxExecuted=navigator.userAgent.indexOf("Firefox")===-1})}else{oe(a.querySelectorAll("script"),function(e){_(e)})}return a}switch(r){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return s(""+n+"
",1);case"col":return s(""+n+"
",2);case"tr":return s(""+n+"
",2);case"td":case"th":return s(""+n+"
",3);case"script":case"style":return s("
"+n+"
",1);default:return s(n,0)}}function ie(e){if(e){e()}}function I(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function k(e){return I(e,"Function")}function P(e){return I(e,"Object")}function ae(e){var t="htmx-internal-data";var r=e[t];if(!r){r=e[t]={}}return r}function M(e){var t=[];if(e){for(var r=0;r=0}function se(e){if(e.getRootNode&&e.getRootNode()instanceof window.ShadowRoot){return re().body.contains(e.getRootNode().host)}else{return re().body.contains(e)}}function D(e){return e.trim().split(/\s+/)}function le(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function E(e){try{return JSON.parse(e)}catch(e){b(e);return null}}function U(){var e="htmx:localStorageTest";try{localStorage.setItem(e,e);localStorage.removeItem(e);return true}catch(e){return false}}function B(t){try{var e=new URL(t);if(e){t=e.pathname+e.search}if(!/^\/$/.test(t)){t=t.replace(/\/+$/,"")}return t}catch(e){return t}}function t(e){return Tr(re().body,function(){return eval(e)})}function F(t){var e=Q.on("htmx:load",function(e){t(e.detail.elt)});return e}function V(){Q.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function j(){Q.logger=null}function C(e,t){if(t){return e.querySelector(t)}else{return C(re(),e)}}function f(e,t){if(t){return e.querySelectorAll(t)}else{return f(re(),e)}}function _(e,t){e=p(e);if(t){setTimeout(function(){_(e);e=null},t)}else{e.parentElement.removeChild(e)}}function z(e,t,r){e=p(e);if(r){setTimeout(function(){z(e,t);e=null},r)}else{e.classList&&e.classList.add(t)}}function n(e,t,r){e=p(e);if(r){setTimeout(function(){n(e,t);e=null},r)}else{if(e.classList){e.classList.remove(t);if(e.classList.length===0){e.removeAttribute("class")}}}}function $(e,t){e=p(e);e.classList.toggle(t)}function W(e,t){e=p(e);oe(e.parentElement.children,function(e){n(e,t)});z(e,t)}function v(e,t){e=p(e);if(e.closest){return e.closest(t)}else{do{if(e==null||h(e,t)){return e}}while(e=e&&u(e));return null}}function g(e,t){return e.substring(0,t.length)===t}function G(e,t){return e.substring(e.length-t.length)===t}function J(e){var t=e.trim();if(g(t,"<")&&G(t,"/>")){return t.substring(1,t.length-2)}else{return t}}function Z(e,t){if(t.indexOf("closest ")===0){return[v(e,J(t.substr(8)))]}else if(t.indexOf("find ")===0){return[C(e,J(t.substr(5)))]}else if(t==="next"){return[e.nextElementSibling]}else if(t.indexOf("next ")===0){return[K(e,J(t.substr(5)))]}else if(t==="previous"){return[e.previousElementSibling]}else if(t.indexOf("previous ")===0){return[Y(e,J(t.substr(9)))]}else if(t==="document"){return[document]}else if(t==="window"){return[window]}else if(t==="body"){return[document.body]}else{return re().querySelectorAll(J(t))}}var K=function(e,t){var r=re().querySelectorAll(t);for(var n=0;n=0;n--){var i=r[n];if(i.compareDocumentPosition(e)===Node.DOCUMENT_POSITION_FOLLOWING){return i}}};function ue(e,t){if(t){return Z(e,t)[0]}else{return Z(re().body,e)[0]}}function p(e){if(I(e,"String")){return C(e)}else{return e}}function ve(e,t,r){if(k(t)){return{target:re().body,event:e,listener:t}}else{return{target:p(e),event:t,listener:r}}}function de(t,r,n){jr(function(){var e=ve(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=k(r);return e?r:n}function ge(t,r,n){jr(function(){var e=ve(t,r,n);e.target.removeEventListener(e.event,e.listener)});return k(r)?r:n}var pe=re().createElement("output");function me(e,t){var r=ne(e,t);if(r){if(r==="this"){return[xe(e,t)]}else{var n=Z(e,r);if(n.length===0){b('The selector "'+r+'" on '+t+" returned no matches!");return[pe]}else{return n}}}}function xe(e,t){return c(e,function(e){return te(e,t)!=null})}function ye(e){var t=ne(e,"hx-target");if(t){if(t==="this"){return xe(e,"hx-target")}else{return ue(e,t)}}else{var r=ae(e);if(r.boosted){return re().body}else{return e}}}function be(e){var t=Q.config.attributesToSettle;for(var r=0;r0){o=e.substr(0,e.indexOf(":"));t=e.substr(e.indexOf(":")+1,e.length)}else{o=e}var r=re().querySelectorAll(t);if(r){oe(r,function(e){var t;var r=i.cloneNode(true);t=re().createDocumentFragment();t.appendChild(r);if(!Se(o,e)){t=r}var n={shouldSwap:true,target:e,fragment:t};if(!ce(e,"htmx:oobBeforeSwap",n))return;e=n.target;if(n["shouldSwap"]){Fe(o,e,e,t,a)}oe(a.elts,function(e){ce(e,"htmx:oobAfterSwap",n)})});i.parentNode.removeChild(i)}else{i.parentNode.removeChild(i);fe(re().body,"htmx:oobErrorNoTarget",{content:i})}return e}function Ce(e,t,r){var n=ne(e,"hx-select-oob");if(n){var i=n.split(",");for(var a=0;a0){var r=t.replace("'","\\'");var n=e.tagName.replace(":","\\:");var i=o.querySelector(n+"[id='"+r+"']");if(i&&i!==o){var a=e.cloneNode();we(e,i);s.tasks.push(function(){we(e,a)})}}})}function Oe(e){return function(){n(e,Q.config.addedClass);zt(e);Nt(e);qe(e);ce(e,"htmx:load")}}function qe(e){var t="[autofocus]";var r=h(e,t)?e:e.querySelector(t);if(r!=null){r.focus()}}function a(e,t,r,n){Te(e,r,n);while(r.childNodes.length>0){var i=r.firstChild;z(i,Q.config.addedClass);e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE&&i.nodeType!==Node.COMMENT_NODE){n.tasks.push(Oe(i))}}}function He(e,t){var r=0;while(r-1){var t=e.replace(H,"");var r=t.match(q);if(r){return r[2]}}}function je(e,t,r,n,i,a){i.title=Ve(n);var o=l(n);if(o){Ce(r,o,i);o=Be(r,o,a);Re(o);return Fe(e,r,t,o,i)}}function _e(e,t,r){var n=e.getResponseHeader(t);if(n.indexOf("{")===0){var i=E(n);for(var a in i){if(i.hasOwnProperty(a)){var o=i[a];if(!P(o)){o={value:o}}ce(r,a,o)}}}else{var s=n.split(",");for(var l=0;l0){var o=t[0];if(o==="]"){n--;if(n===0){if(a===null){i=i+"true"}t.shift();i+=")})";try{var s=Tr(e,function(){return Function(i)()},function(){return true});s.source=i;return s}catch(e){fe(re().body,"htmx:syntax:error",{error:e,source:i});return null}}}else if(o==="["){n++}if(Qe(o,a,r)){i+="(("+r+"."+o+") ? ("+r+"."+o+") : (window."+o+"))"}else{i=i+o}a=t.shift()}}}function y(e,t){var r="";while(e.length>0&&!t.test(e[0])){r+=e.shift()}return r}function tt(e){var t;if(e.length>0&&Ze.test(e[0])){e.shift();t=y(e,Ke).trim();e.shift()}else{t=y(e,x)}return t}var rt="input, textarea, select";function nt(e,t,r){var n=[];var i=Ye(t);do{y(i,Je);var a=i.length;var o=y(i,/[,\[\s]/);if(o!==""){if(o==="every"){var s={trigger:"every"};y(i,Je);s.pollInterval=d(y(i,/[,\[\s]/));y(i,Je);var l=et(e,i,"event");if(l){s.eventFilter=l}n.push(s)}else if(o.indexOf("sse:")===0){n.push({trigger:"sse",sseEvent:o.substr(4)})}else{var u={trigger:o};var l=et(e,i,"event");if(l){u.eventFilter=l}while(i.length>0&&i[0]!==","){y(i,Je);var f=i.shift();if(f==="changed"){u.changed=true}else if(f==="once"){u.once=true}else if(f==="consume"){u.consume=true}else if(f==="delay"&&i[0]===":"){i.shift();u.delay=d(y(i,x))}else if(f==="from"&&i[0]===":"){i.shift();if(Ze.test(i[0])){var c=tt(i)}else{var c=y(i,x);if(c==="closest"||c==="find"||c==="next"||c==="previous"){i.shift();var h=tt(i);if(h.length>0){c+=" "+h}}}u.from=c}else if(f==="target"&&i[0]===":"){i.shift();u.target=tt(i)}else if(f==="throttle"&&i[0]===":"){i.shift();u.throttle=d(y(i,x))}else if(f==="queue"&&i[0]===":"){i.shift();u.queue=y(i,x)}else if(f==="root"&&i[0]===":"){i.shift();u[f]=tt(i)}else if(f==="threshold"&&i[0]===":"){i.shift();u[f]=y(i,x)}else{fe(e,"htmx:syntax:error",{token:i.shift()})}}n.push(u)}}if(i.length===a){fe(e,"htmx:syntax:error",{token:i.shift()})}y(i,Je)}while(i[0]===","&&i.shift());if(r){r[t]=n}return n}function it(e){var t=te(e,"hx-trigger");var r=[];if(t){var n=Q.config.triggerSpecsCache;r=n&&n[t]||nt(e,t,n)}if(r.length>0){return r}else if(h(e,"form")){return[{trigger:"submit"}]}else if(h(e,'input[type="button"], input[type="submit"]')){return[{trigger:"click"}]}else if(h(e,rt)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function at(e){ae(e).cancelled=true}function ot(e,t,r){var n=ae(e);n.timeout=setTimeout(function(){if(se(e)&&n.cancelled!==true){if(!ct(r,e,Wt("hx:poll:trigger",{triggerSpec:r,target:e}))){t(e)}ot(e,t,r)}},r.pollInterval)}function st(e){return location.hostname===e.hostname&&ee(e,"href")&&ee(e,"href").indexOf("#")!==0}function lt(t,r,e){if(t.tagName==="A"&&st(t)&&(t.target===""||t.target==="_self")||t.tagName==="FORM"){r.boosted=true;var n,i;if(t.tagName==="A"){n="get";i=ee(t,"href")}else{var a=ee(t,"method");n=a?a.toLowerCase():"get";if(n==="get"){}i=ee(t,"action")}e.forEach(function(e){ht(t,function(e,t){if(v(e,Q.config.disableSelector)){m(e);return}he(n,i,e,t)},r,e,true)})}}function ut(e,t){if(e.type==="submit"||e.type==="click"){if(t.tagName==="FORM"){return true}if(h(t,'input[type="submit"], button')&&v(t,"form")!==null){return true}if(t.tagName==="A"&&t.href&&(t.getAttribute("href")==="#"||t.getAttribute("href").indexOf("#")!==0)){return true}}return false}function ft(e,t){return ae(e).boosted&&e.tagName==="A"&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function ct(e,t,r){var n=e.eventFilter;if(n){try{return n.call(t,r)!==true}catch(e){fe(re().body,"htmx:eventFilter:error",{error:e,source:n.source});return true}}return false}function ht(a,o,e,s,l){var u=ae(a);var t;if(s.from){t=Z(a,s.from)}else{t=[a]}if(s.changed){t.forEach(function(e){var t=ae(e);t.lastValue=e.value})}oe(t,function(n){var i=function(e){if(!se(a)){n.removeEventListener(s.trigger,i);return}if(ft(a,e)){return}if(l||ut(e,a)){e.preventDefault()}if(ct(s,a,e)){return}var t=ae(e);t.triggerSpec=s;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(a)<0){t.handledFor.push(a);if(s.consume){e.stopPropagation()}if(s.target&&e.target){if(!h(e.target,s.target)){return}}if(s.once){if(u.triggeredOnce){return}else{u.triggeredOnce=true}}if(s.changed){var r=ae(n);if(r.lastValue===n.value){return}r.lastValue=n.value}if(u.delayed){clearTimeout(u.delayed)}if(u.throttle){return}if(s.throttle>0){if(!u.throttle){o(a,e);u.throttle=setTimeout(function(){u.throttle=null},s.throttle)}}else if(s.delay>0){u.delayed=setTimeout(function(){o(a,e)},s.delay)}else{ce(a,"htmx:trigger");o(a,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:s.trigger,listener:i,on:n});n.addEventListener(s.trigger,i)})}var vt=false;var dt=null;function gt(){if(!dt){dt=function(){vt=true};window.addEventListener("scroll",dt);setInterval(function(){if(vt){vt=false;oe(re().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"),function(e){pt(e)})}},200)}}function pt(t){if(!o(t,"data-hx-revealed")&&X(t)){t.setAttribute("data-hx-revealed","true");var e=ae(t);if(e.initHash){ce(t,"revealed")}else{t.addEventListener("htmx:afterProcessNode",function(e){ce(t,"revealed")},{once:true})}}}function mt(e,t,r){var n=D(r);for(var i=0;i=0){var t=wt(n);setTimeout(function(){xt(s,r,n+1)},t)}};t.onopen=function(e){n=0};ae(s).webSocket=t;t.addEventListener("message",function(e){if(yt(s)){return}var t=e.data;R(s,function(e){t=e.transformResponse(t,null,s)});var r=T(s);var n=l(t);var i=M(n.children);for(var a=0;a0){ce(u,"htmx:validation:halted",i);return}t.send(JSON.stringify(l));if(ut(e,u)){e.preventDefault()}})}else{fe(u,"htmx:noWebSocketSourceError")}}function wt(e){var t=Q.config.wsReconnectDelay;if(typeof t==="function"){return t(e)}if(t==="full-jitter"){var r=Math.min(e,6);var n=1e3*Math.pow(2,r);return n*Math.random()}b('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"')}function St(e,t,r){var n=D(r);for(var i=0;i0){setTimeout(i,n)}else{i()}}function Ht(t,i,e){var a=false;oe(w,function(r){if(o(t,"hx-"+r)){var n=te(t,"hx-"+r);a=true;i.path=n;i.verb=r;e.forEach(function(e){Lt(t,e,i,function(e,t){if(v(e,Q.config.disableSelector)){m(e);return}he(r,n,e,t)})})}});return a}function Lt(n,e,t,r){if(e.sseEvent){Rt(n,r,e.sseEvent)}else if(e.trigger==="revealed"){gt();ht(n,r,t,e);pt(n)}else if(e.trigger==="intersect"){var i={};if(e.root){i.root=ue(n,e.root)}if(e.threshold){i.threshold=parseFloat(e.threshold)}var a=new IntersectionObserver(function(e){for(var t=0;t0){t.polling=true;ot(n,r,e)}else{ht(n,r,t,e)}}function At(e){if(!e.htmxExecuted&&Q.config.allowScriptTags&&(e.type==="text/javascript"||e.type==="module"||e.type==="")){var t=re().createElement("script");oe(e.attributes,function(e){t.setAttribute(e.name,e.value)});t.textContent=e.textContent;t.async=false;if(Q.config.inlineScriptNonce){t.nonce=Q.config.inlineScriptNonce}var r=e.parentElement;try{r.insertBefore(t,e)}catch(e){b(e)}finally{if(e.parentElement){e.parentElement.removeChild(e)}}}}function Nt(e){if(h(e,"script")){At(e)}oe(f(e,"script"),function(e){At(e)})}function It(e){var t=e.attributes;if(!t){return false}for(var r=0;r0){var o=n.shift();var s=o.match(/^\s*([a-zA-Z:\-\.]+:)(.*)/);if(a===0&&s){o.split(":");i=s[1].slice(0,-1);r[i]=s[2]}else{r[i]+=o}a+=Bt(o)}for(var l in r){Ft(e,l,r[l])}}}function jt(e){Ae(e);for(var t=0;tQ.config.historyCacheSize){i.shift()}while(i.length>0){try{localStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){fe(re().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function Yt(e){if(!U()){return null}e=B(e);var t=E(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r=200&&this.status<400){ce(re().body,"htmx:historyCacheMissLoad",o);var e=l(this.response);e=e.querySelector("[hx-history-elt],[data-hx-history-elt]")||e;var t=Zt();var r=T(t);var n=Ve(this.response);if(n){var i=C("title");if(i){i.innerHTML=n}else{window.document.title=n}}Ue(t,e,r);nr(r.tasks);Jt=a;ce(re().body,"htmx:historyRestore",{path:a,cacheMiss:true,serverResponse:this.response})}else{fe(re().body,"htmx:historyCacheMissLoadError",o)}};e.send()}function ar(e){er();e=e||location.pathname+location.search;var t=Yt(e);if(t){var r=l(t.content);var n=Zt();var i=T(n);Ue(n,r,i);nr(i.tasks);document.title=t.title;setTimeout(function(){window.scrollTo(0,t.scroll)},0);Jt=e;ce(re().body,"htmx:historyRestore",{path:e,item:t})}else{if(Q.config.refreshOnHistoryMiss){window.location.reload(true)}else{ir(e)}}}function or(e){var t=me(e,"hx-indicator");if(t==null){t=[e]}oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)+1;e.classList["add"].call(e.classList,Q.config.requestClass)});return t}function sr(e){var t=me(e,"hx-disabled-elt");if(t==null){t=[]}oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)+1;e.setAttribute("disabled","")});return t}function lr(e,t){oe(e,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.classList["remove"].call(e.classList,Q.config.requestClass)}});oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.removeAttribute("disabled")}})}function ur(e,t){for(var r=0;r=0}function wr(e,t){var r=t?t:ne(e,"hx-swap");var n={swapStyle:ae(e).boosted?"innerHTML":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&ae(e).boosted&&!br(e)){n["show"]="top"}if(r){var i=D(r);if(i.length>0){for(var a=0;a0?l.join(":"):null;n["scroll"]=u;n["scrollTarget"]=f}else if(o.indexOf("show:")===0){var c=o.substr(5);var l=c.split(":");var h=l.pop();var f=l.length>0?l.join(":"):null;n["show"]=h;n["showTarget"]=f}else if(o.indexOf("focus-scroll:")===0){var v=o.substr("focus-scroll:".length);n["focusScroll"]=v=="true"}else if(a==0){n["swapStyle"]=o}else{b("Unknown modifier in hx-swap: "+o)}}}}return n}function Sr(e){return ne(e,"hx-encoding")==="multipart/form-data"||h(e,"form")&&ee(e,"enctype")==="multipart/form-data"}function Er(t,r,n){var i=null;R(r,function(e){if(i==null){i=e.encodeParameters(t,n,r)}});if(i!=null){return i}else{if(Sr(r)){return mr(n)}else{return pr(n)}}}function T(e){return{tasks:[],elts:[e]}}function Cr(e,t){var r=e[0];var n=e[e.length-1];if(t.scroll){var i=null;if(t.scrollTarget){i=ue(r,t.scrollTarget)}if(t.scroll==="top"&&(r||i)){i=i||r;i.scrollTop=0}if(t.scroll==="bottom"&&(n||i)){i=i||n;i.scrollTop=i.scrollHeight}}if(t.show){var i=null;if(t.showTarget){var a=t.showTarget;if(t.showTarget==="window"){a="body"}i=ue(r,a)}if(t.show==="top"&&(r||i)){i=i||r;i.scrollIntoView({block:"start",behavior:Q.config.scrollBehavior})}if(t.show==="bottom"&&(n||i)){i=i||n;i.scrollIntoView({block:"end",behavior:Q.config.scrollBehavior})}}}function Rr(e,t,r,n){if(n==null){n={}}if(e==null){return n}var i=te(e,t);if(i){var a=i.trim();var o=r;if(a==="unset"){return null}if(a.indexOf("javascript:")===0){a=a.substr(11);o=true}else if(a.indexOf("js:")===0){a=a.substr(3);o=true}if(a.indexOf("{")!==0){a="{"+a+"}"}var s;if(o){s=Tr(e,function(){return Function("return ("+a+")")()},{})}else{s=E(a)}for(var l in s){if(s.hasOwnProperty(l)){if(n[l]==null){n[l]=s[l]}}}}return Rr(u(e),t,r,n)}function Tr(e,t,r){if(Q.config.allowEval){return t()}else{fe(e,"htmx:evalDisallowedError");return r}}function Or(e,t){return Rr(e,"hx-vars",true,t)}function qr(e,t){return Rr(e,"hx-vals",false,t)}function Hr(e){return le(Or(e),qr(e))}function Lr(t,r,n){if(n!==null){try{t.setRequestHeader(r,n)}catch(e){t.setRequestHeader(r,encodeURIComponent(n));t.setRequestHeader(r+"-URI-AutoEncoded","true")}}}function Ar(t){if(t.responseURL&&typeof URL!=="undefined"){try{var e=new URL(t.responseURL);return e.pathname+e.search}catch(e){fe(re().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function O(e,t){return t.test(e.getAllResponseHeaders())}function Nr(e,t,r){e=e.toLowerCase();if(r){if(r instanceof Element||I(r,"String")){return he(e,t,null,null,{targetOverride:p(r),returnPromise:true})}else{return he(e,t,p(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:p(r.target),swapOverride:r.swap,select:r.select,returnPromise:true})}}else{return he(e,t,null,null,{returnPromise:true})}}function Ir(e){var t=[];while(e){t.push(e);e=e.parentElement}return t}function kr(e,t,r){var n;var i;if(typeof URL==="function"){i=new URL(t,document.location.href);var a=document.location.origin;n=a===i.origin}else{i=t;n=g(t,document.location.origin)}if(Q.config.selfRequestsOnly){if(!n){return false}}return ce(e,"htmx:validateUrl",le({url:i,sameHost:n},r))}function he(t,r,n,i,a,e){var o=null;var s=null;a=a!=null?a:{};if(a.returnPromise&&typeof Promise!=="undefined"){var l=new Promise(function(e,t){o=e;s=t})}if(n==null){n=re().body}var M=a.handler||Mr;var X=a.select||null;if(!se(n)){ie(o);return l}var u=a.targetOverride||ye(n);if(u==null||u==pe){fe(n,"htmx:targetError",{target:te(n,"hx-target")});ie(s);return l}var f=ae(n);var c=f.lastButtonClicked;if(c){var h=ee(c,"formaction");if(h!=null){r=h}var v=ee(c,"formmethod");if(v!=null){if(v.toLowerCase()!=="dialog"){t=v}}}var d=ne(n,"hx-confirm");if(e===undefined){var D=function(e){return he(t,r,n,i,a,!!e)};var U={target:u,elt:n,path:r,verb:t,triggeringEvent:i,etc:a,issueRequest:D,question:d};if(ce(n,"htmx:confirm",U)===false){ie(o);return l}}var g=n;var p=ne(n,"hx-sync");var m=null;var x=false;if(p){var B=p.split(":");var F=B[0].trim();if(F==="this"){g=xe(n,"hx-sync")}else{g=ue(n,F)}p=(B[1]||"drop").trim();f=ae(g);if(p==="drop"&&f.xhr&&f.abortable!==true){ie(o);return l}else if(p==="abort"){if(f.xhr){ie(o);return l}else{x=true}}else if(p==="replace"){ce(g,"htmx:abort")}else if(p.indexOf("queue")===0){var V=p.split(" ");m=(V[1]||"last").trim()}}if(f.xhr){if(f.abortable){ce(g,"htmx:abort")}else{if(m==null){if(i){var y=ae(i);if(y&&y.triggerSpec&&y.triggerSpec.queue){m=y.triggerSpec.queue}}if(m==null){m="last"}}if(f.queuedRequests==null){f.queuedRequests=[]}if(m==="first"&&f.queuedRequests.length===0){f.queuedRequests.push(function(){he(t,r,n,i,a)})}else if(m==="all"){f.queuedRequests.push(function(){he(t,r,n,i,a)})}else if(m==="last"){f.queuedRequests=[];f.queuedRequests.push(function(){he(t,r,n,i,a)})}ie(o);return l}}var b=new XMLHttpRequest;f.xhr=b;f.abortable=x;var w=function(){f.xhr=null;f.abortable=false;if(f.queuedRequests!=null&&f.queuedRequests.length>0){var e=f.queuedRequests.shift();e()}};var j=ne(n,"hx-prompt");if(j){var S=prompt(j);if(S===null||!ce(n,"htmx:prompt",{prompt:S,target:u})){ie(o);w();return l}}if(d&&!e){if(!confirm(d)){ie(o);w();return l}}var E=xr(n,u,S);if(t!=="get"&&!Sr(n)){E["Content-Type"]="application/x-www-form-urlencoded"}if(a.headers){E=le(E,a.headers)}var _=dr(n,t);var C=_.errors;var R=_.values;if(a.values){R=le(R,a.values)}var z=Hr(n);var $=le(R,z);var T=yr($,n);if(Q.config.getCacheBusterParam&&t==="get"){T["org.htmx.cache-buster"]=ee(u,"id")||"true"}if(r==null||r===""){r=re().location.href}var O=Rr(n,"hx-request");var W=ae(n).boosted;var q=Q.config.methodsThatUseUrlParams.indexOf(t)>=0;var H={boosted:W,useUrlParams:q,parameters:T,unfilteredParameters:$,headers:E,target:u,verb:t,errors:C,withCredentials:a.credentials||O.credentials||Q.config.withCredentials,timeout:a.timeout||O.timeout||Q.config.timeout,path:r,triggeringEvent:i};if(!ce(n,"htmx:configRequest",H)){ie(o);w();return l}r=H.path;t=H.verb;E=H.headers;T=H.parameters;C=H.errors;q=H.useUrlParams;if(C&&C.length>0){ce(n,"htmx:validation:halted",H);ie(o);w();return l}var G=r.split("#");var J=G[0];var L=G[1];var A=r;if(q){A=J;var Z=Object.keys(T).length!==0;if(Z){if(A.indexOf("?")<0){A+="?"}else{A+="&"}A+=pr(T);if(L){A+="#"+L}}}if(!kr(n,A,H)){fe(n,"htmx:invalidPath",H);ie(s);return l}b.open(t.toUpperCase(),A,true);b.overrideMimeType("text/html");b.withCredentials=H.withCredentials;b.timeout=H.timeout;if(O.noHeaders){}else{for(var N in E){if(E.hasOwnProperty(N)){var K=E[N];Lr(b,N,K)}}}var I={xhr:b,target:u,requestConfig:H,etc:a,boosted:W,select:X,pathInfo:{requestPath:r,finalRequestPath:A,anchor:L}};b.onload=function(){try{var e=Ir(n);I.pathInfo.responsePath=Ar(b);M(n,I);lr(k,P);ce(n,"htmx:afterRequest",I);ce(n,"htmx:afterOnLoad",I);if(!se(n)){var t=null;while(e.length>0&&t==null){var r=e.shift();if(se(r)){t=r}}if(t){ce(t,"htmx:afterRequest",I);ce(t,"htmx:afterOnLoad",I)}}ie(o);w()}catch(e){fe(n,"htmx:onLoadError",le({error:e},I));throw e}};b.onerror=function(){lr(k,P);fe(n,"htmx:afterRequest",I);fe(n,"htmx:sendError",I);ie(s);w()};b.onabort=function(){lr(k,P);fe(n,"htmx:afterRequest",I);fe(n,"htmx:sendAbort",I);ie(s);w()};b.ontimeout=function(){lr(k,P);fe(n,"htmx:afterRequest",I);fe(n,"htmx:timeout",I);ie(s);w()};if(!ce(n,"htmx:beforeRequest",I)){ie(o);w();return l}var k=or(n);var P=sr(n);oe(["loadstart","loadend","progress","abort"],function(t){oe([b,b.upload],function(e){e.addEventListener(t,function(e){ce(n,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});ce(n,"htmx:beforeSend",I);var Y=q?null:Er(b,n,T);b.send(Y);return l}function Pr(e,t){var r=t.xhr;var n=null;var i=null;if(O(r,/HX-Push:/i)){n=r.getResponseHeader("HX-Push");i="push"}else if(O(r,/HX-Push-Url:/i)){n=r.getResponseHeader("HX-Push-Url");i="push"}else if(O(r,/HX-Replace-Url:/i)){n=r.getResponseHeader("HX-Replace-Url");i="replace"}if(n){if(n==="false"){return{}}else{return{type:i,path:n}}}var a=t.pathInfo.finalRequestPath;var o=t.pathInfo.responsePath;var s=ne(e,"hx-push-url");var l=ne(e,"hx-replace-url");var u=ae(e).boosted;var f=null;var c=null;if(s){f="push";c=s}else if(l){f="replace";c=l}else if(u){f="push";c=o||a}if(c){if(c==="false"){return{}}if(c==="true"){c=o||a}if(t.pathInfo.anchor&&c.indexOf("#")===-1){c=c+"#"+t.pathInfo.anchor}return{type:f,path:c}}else{return{}}}function Mr(l,u){var f=u.xhr;var c=u.target;var e=u.etc;var t=u.requestConfig;var h=u.select;if(!ce(l,"htmx:beforeOnLoad",u))return;if(O(f,/HX-Trigger:/i)){_e(f,"HX-Trigger",l)}if(O(f,/HX-Location:/i)){er();var r=f.getResponseHeader("HX-Location");var v;if(r.indexOf("{")===0){v=E(r);r=v["path"];delete v["path"]}Nr("GET",r,v).then(function(){tr(r)});return}var n=O(f,/HX-Refresh:/i)&&"true"===f.getResponseHeader("HX-Refresh");if(O(f,/HX-Redirect:/i)){location.href=f.getResponseHeader("HX-Redirect");n&&location.reload();return}if(n){location.reload();return}if(O(f,/HX-Retarget:/i)){if(f.getResponseHeader("HX-Retarget")==="this"){u.target=l}else{u.target=ue(l,f.getResponseHeader("HX-Retarget"))}}var d=Pr(l,u);var i=f.status>=200&&f.status<400&&f.status!==204;var g=f.response;var a=f.status>=400;var p=Q.config.ignoreTitle;var o=le({shouldSwap:i,serverResponse:g,isError:a,ignoreTitle:p},u);if(!ce(c,"htmx:beforeSwap",o))return;c=o.target;g=o.serverResponse;a=o.isError;p=o.ignoreTitle;u.target=c;u.failed=a;u.successful=!a;if(o.shouldSwap){if(f.status===286){at(l)}R(l,function(e){g=e.transformResponse(g,f,l)});if(d.type){er()}var s=e.swapOverride;if(O(f,/HX-Reswap:/i)){s=f.getResponseHeader("HX-Reswap")}var v=wr(l,s);if(v.hasOwnProperty("ignoreTitle")){p=v.ignoreTitle}c.classList.add(Q.config.swappingClass);var m=null;var x=null;var y=function(){try{var e=document.activeElement;var t={};try{t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null}}catch(e){}var r;if(h){r=h}if(O(f,/HX-Reselect:/i)){r=f.getResponseHeader("HX-Reselect")}if(d.type){ce(re().body,"htmx:beforeHistoryUpdate",le({history:d},u));if(d.type==="push"){tr(d.path);ce(re().body,"htmx:pushedIntoHistory",{path:d.path})}else{rr(d.path);ce(re().body,"htmx:replacedInHistory",{path:d.path})}}var n=T(c);je(v.swapStyle,c,l,g,n,r);if(t.elt&&!se(t.elt)&&ee(t.elt,"id")){var i=document.getElementById(ee(t.elt,"id"));var a={preventScroll:v.focusScroll!==undefined?!v.focusScroll:!Q.config.defaultFocusScroll};if(i){if(t.start&&i.setSelectionRange){try{i.setSelectionRange(t.start,t.end)}catch(e){}}i.focus(a)}}c.classList.remove(Q.config.swappingClass);oe(n.elts,function(e){if(e.classList){e.classList.add(Q.config.settlingClass)}ce(e,"htmx:afterSwap",u)});if(O(f,/HX-Trigger-After-Swap:/i)){var o=l;if(!se(l)){o=re().body}_e(f,"HX-Trigger-After-Swap",o)}var s=function(){oe(n.tasks,function(e){e.call()});oe(n.elts,function(e){if(e.classList){e.classList.remove(Q.config.settlingClass)}ce(e,"htmx:afterSettle",u)});if(u.pathInfo.anchor){var e=re().getElementById(u.pathInfo.anchor);if(e){e.scrollIntoView({block:"start",behavior:"auto"})}}if(n.title&&!p){var t=C("title");if(t){t.innerHTML=n.title}else{window.document.title=n.title}}Cr(n.elts,v);if(O(f,/HX-Trigger-After-Settle:/i)){var r=l;if(!se(l)){r=re().body}_e(f,"HX-Trigger-After-Settle",r)}ie(m)};if(v.settleDelay>0){setTimeout(s,v.settleDelay)}else{s()}}catch(e){fe(l,"htmx:swapError",u);ie(x);throw e}};var b=Q.config.globalViewTransitions;if(v.hasOwnProperty("transition")){b=v.transition}if(b&&ce(l,"htmx:beforeTransition",u)&&typeof Promise!=="undefined"&&document.startViewTransition){var w=new Promise(function(e,t){m=e;x=t});var S=y;y=function(){document.startViewTransition(function(){S();return w})}}if(v.swapDelay>0){setTimeout(y,v.swapDelay)}else{y()}}if(a){fe(l,"htmx:responseError",le({error:"Response Status Error Code "+f.status+" from "+u.pathInfo.requestPath},u))}}var Xr={};function Dr(){return{init:function(e){return null},onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,r,n){return false},encodeParameters:function(e,t,r){return null}}}function Ur(e,t){if(t.init){t.init(r)}Xr[e]=le(Dr(),t)}function Br(e){delete Xr[e]}function Fr(e,r,n){if(e==undefined){return r}if(r==undefined){r=[]}if(n==undefined){n=[]}var t=te(e,"hx-ext");if(t){oe(t.split(","),function(e){e=e.replace(/ /g,"");if(e.slice(0,7)=="ignore:"){n.push(e.slice(7));return}if(n.indexOf(e)<0){var t=Xr[e];if(t&&r.indexOf(t)<0){r.push(t)}}})}return Fr(u(e),r,n)}var Vr=false;re().addEventListener("DOMContentLoaded",function(){Vr=true});function jr(e){if(Vr||re().readyState==="complete"){e()}else{re().addEventListener("DOMContentLoaded",e)}}function _r(){if(Q.config.includeIndicatorStyles!==false){re().head.insertAdjacentHTML("beforeend","")}}function zr(){var e=re().querySelector('meta[name="htmx-config"]');if(e){return E(e.content)}else{return null}}function $r(){var e=zr();if(e){Q.config=le(Q.config,e)}}jr(function(){$r();_r();var e=re().body;zt(e);var t=re().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){var t=e.target;var r=ae(t);if(r&&r.xhr){r.xhr.abort()}});const r=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){if(e.state&&e.state.htmx){ar();oe(t,function(e){ce(e,"htmx:restored",{document:re(),triggerEvent:ce})})}else{if(r){r(e)}}};setTimeout(function(){ce(e,"htmx:load",{});e=null},0)});return Q}()}); \ No newline at end of file