From 6302af263c2dd238ac7e8bc6e4d554b241fa0346 Mon Sep 17 00:00:00 2001 From: Stowy Date: Thu, 18 Apr 2024 11:53:13 +0200 Subject: [PATCH] Added proper plural support and changed order of abreviations --- examples/plural-example/main.pdf | Bin 0 -> 40382 bytes examples/plural-example/main.typ | 48 +++++++++++++++ glossarium.typ | 102 +++++++++++++++++++++++-------- 3 files changed, 123 insertions(+), 27 deletions(-) create mode 100644 examples/plural-example/main.pdf create mode 100644 examples/plural-example/main.typ diff --git a/examples/plural-example/main.pdf b/examples/plural-example/main.pdf new file mode 100644 index 0000000000000000000000000000000000000000..334e1f3e5ab2971e4280b7e605c9ec35c8a18d2c GIT binary patch literal 40382 zcmeFYbzIc{w*QMDqJV&abPO%c3=<69NGsjl-JK#JlF}(s(w)*smmn!1snXre9pJmq z-us-rf9E{TUyO6AmoQ4{+jJb`Bxq-2RlevxY z?Eo-_Wlev>S>&x4AQDa9#V;duV8>idpjsQ(4VqXRA+b$(rWgBzE zEMoxIZ5uj2KRROMttRx_LI15d5lPY8HE%V7{zn=S6BOMYos6v|ZA@$dcYz~hC>WcX zJ32YI16~LrHaBKOEQM&5cQ7(`xQ*w<-{SeJL($pJ&dS&t5hLI>GYHX$(YHEoBXuyh zbFy^+!0zHfw2P|V4Pr;^tYj-8DJrXP_xA+dPE-YGav%mnI5+^Dh;I;t0{{d9fFJ+} z4rAkj03lES5OQlEAe;>bg5LVDTl>2Y;s78F3g*3IuS%ZwaUnJW!)^@%LQLfZAyx)+-5M7s7aJE81_D5UcLwHQLkvNPKuAXz6pC0242Ezb z_PjMXF$E{8%LIz?%2$T&1MkE8F_}0L15E~Q*fpH;3-5MCNJ7RH! zW*G3+ARLIWA@ExtbZcNRlnn;E-5z#lw~0nbM;L??#s-1Ipiltp&Ok7Z`5JWm| z4Fcpsj7DUO3(*2WWE{u_;kwNk7xdOR5sN{=T!`FqA%-BH2oRBfAPf=p?S2R`oE&U0 zDB`Je!EX(WcmVg);T!;j!4N_I<%0n5+suRiS`G+A#SB_>IeXG z0y$vNzfBMpwsiw&vI04{Kx`bG2z{&|$lsnJB4iH4xkMadAP@w(D;knc`c~$KLN=yW z#`jlC=(fH%A<_b78Y9c`T*42@auhSAZ9+8R3F))6^lVx8fYpZ;RKh3;_Epgf2ydE)#PbBZt3& z0T|rwi;j41M&^c2e|dLphSrE=+)n<7n#*}V%E;O7uaS4P_CHr(fRV8Y;$a{j&cCR_ zfA9RqN_^Lfc=x#b&3+sF{XzUI;M)c7TK|d?0Q~#FyGO@y=L7Fm-M%L|+UXk_JLub( z8l&@aAinqkye5dRySJ$S)DPyopJrfUXr}LQH=GkOoPz_z!GGro-+Ns5p2)oizxTxN zJ&`*P2)y^i?mh6G#|gamMDIPJI}Zf9_r&kL`;p-Lks!!j9~gAs2fg<=?>*SP2fp|2 zwSe!nfbO+`@3nB=hRneM7QGwEc^?tvJ|a%8yFLiyzE9}hgWY@gYeMeV1m7!z-YWy& zD}&xE1K%ry-YWy&D}&xE1K;lez25`;77^y{JlMTz$h~UVy=ut4YS_JM$h~UV zy=p`X?&d-7v_S4-fZfLcxmOLlQwq;`j3Nd=o zoS}V7H#If8Y4cUbVJJu|f%Yv9E+(*p7C=w+gb?KcuBc2gp~bUU1F;WG)e{N})njaK z#kCg2)#DmRmXeFoBQum;~-hc4Pas0d_oOC;EknSxM2iNzcpfD&lR%6ja7}qEA z0`5(!T6%Mp=IKZOjarnuq2AJthHdF_Qh+6O@%H=#L#o#zPo2u+a!U2lnQ_Au=biDl zO4pbtp%b3~p0v93w0_djciid9sGpa9OIG*% z`J>0|KV@ubxP_h0>TUfBoLE=pslBz3$L&SC@gU(i?wLtpY0JYH4L0kV!vR7}cz7PF zkGIye4`bwneLJ@IQ0hsbB)H*~5zmo$k%s9eaJqDHJxQhVHNFM+qdw!!gk`>xx1rTt zPS{1cB)IOsWV=?mp1EW{dwp$qt$1Bkrd%iYgY8oEG;lY6+kIBv*>~)UkCk!jebu-* z+Q_!F=SZ}XWF<=(Sc9#yN;6)Qtyas@{l`9DKWV%xi*L>4EUrQ(e!`L}Q!G=CxO$OR zrj*?P5Z}k8pE%9*4-iz-DL7S9~~Q4-KO^94S(i4lBDL#RdUX*IhgRU zJG*eJ!Y@)$zVW18qy?u5*d=LIYMGaemuzSWxLmc3?hx-<9j$p)*iK~hW95?9P;8SY z@kDbv{OLLWz#~pU?r!qC`h#zn7q^2)Y(!V2hQvz5au`8md?Xu%HniTM%F=0N6()b2 zdKnqx%ah}!b-9N}DR8idk=q$kiHBG4aOYRbDb+Q}HFH$k{Gt-qcJ(bw5mbi`B06#MfVu^FrONN;kXZy`;`jK4xry%s z0>Wur!+D<)H)i$ug`sCvigPLx$40P`Sd%qbRXH9me@9`Mk&8&Zd>PjkP=NV3rmdql zgi@Xtws+Wp%|P+d&1~tkqda7x;|g#7W1a1iCfI zzZ|rv?{rdVN*U*>Z!fq4Wu!a0$@W+PXJgKMNCXeAs#4Ml7 z&HD1ia%)4&Ztkx52<7nS5uK^rp6dhok#gZ5Jx<1K8(f4~%2{!J_g(74vy>l8&Ep2{ zh%T;fWVMian;!;!Z~Ol9^)K6#o8yxCZSU^gh-+AGL;Biz)drdxGLYd(aVp#6 zTj1~4?39;vL9^TN!H}1`&0ABw_5`5OJB%-1vFRChY5v)W#D5rbseTf2hvr$JPJ5*ms3Qw%u>S=TAH*T$rszhn@~xTgJ)#P(f~9U#G*YlR$9C+;7?I853^ab}IQt70qSBd`Fln^@6reYUU=@W!55 z!au;}4;sm8XcXnBVC0@U(1-a@1N*8f6T9$nBjy(&6uvI&KruB#e-Yc_J(5)_N6XAd z9>aQpn8m%VRGgMfdQiJzqrh+KREk&BzuzOe%&W~m1*fTVf`>)AR2YzW$J)D!_@5p| zeW}Jl;$KgoZV^TCW_IWqK_?v*VJKP%c@E8(54ntbbk6gE^1EOQ_E`X87t0Mrzg+(v ziE9?5{V|cDVs@0dM_AVe?>Y!j$QrBs(V)^}7~tU> z0=UzUM-;0WiZw1z56e(B8IYh^!K^<#keXWMsddrna8HT$pCWxm*`aB9hD17k^8{{I zslVy5n)j4j&+zd2Dcou1n8@xFa|VNCRX_wwyDFoEq8a6L_8SThGl?i`Q*I=_s%~>Y z`9)M5IXbnzN`(lUOOKc^ACJ}0_9HCsa@|7zw`iM_mH;8!&8Pr!uXr5GnfYPCH|3^3 zAWL^c+f5}V=zG-o)NAyX5vwBJ!Hu;3lS(u$JY-TFo|Lt{JAvj7$3=7V4;n&{6J&DW_ z`SK>{Qtm13YMf)sBizHjCuiLHGl<{4UGK|Z?k2ItAR0R$(kM@=zKnpQK5>?ele|>p ztS>>3ikzH-b72xT><{pFl^&T zr~H&gI{~Rr%djbzDJZ-2UIKpOY#!ijj`;17%Z;`oQQ8yj^J6v{Yz(wFkq{|NC1Z0C za(Q(>p0K5Xx9SVf>>AUQp^EVBACVC09nkEC(+p#vZ0bKe=0(2Z;PoT(03r)m`^i(d z%c7txH$L07dC31`7kytI!l7qF3NQA507Z?De!bf8U}NX?>HOsPa4}(!#|b{@>L|hm5)*jTA`ftfdUp43&WQ(HPX4Qgs|%AK2xlV|bsH)ex4e zB)ogTeEOop9QXqk(rF{XD+vhc5RHBblBBA9$&@5JV1y+p;-=q*ZyiWl8-uw7kXxco zq75COv)O#;77}R`Ll!N)|B{~(5Sab$R1%mZA@!1xk>*eK8zqBDeg1sv@$4WLK(!H7 zK27LLK6M$Amo)0aY*eyFjOO$S(F7G?Rnh$~NzEC^jo|7+Yz)l3&$D9$OMVv`p-oBJ zP3M-;(=a zcX2X?6iMtgI?K-an8M!LUU3Jy#8`G>KeXy)}j0++1C6C`;xZO3x3S@XxuTa#AGSVhO)(b$(CwEhW90} zl>Do;%}O*$MNQiV*vr?S9;REPqkoI|RHo;iGHwIeu~2*?D{DQW_i481VJNZ6&$*I^ ze^9mg+GJc9*_MCX-?-k{)4wd&aaAerU}MW8zMzS3V90O^fo!Ziac5P_=fEZYT+9vAy?CI*bABX zXSG*}FSxklP#ZS2!-%SF4NQJvFqsTs}zK%Fsi!pM$}S46JL<0an= zaaXWPTvDt*Nr{UE%#eodlV!0)9+Ul2qxc2ys{FYMr!V6r*felYT}kZOcN+ro_2cn& z)5bG+L=dal>_2qgzA>1WT%CDq8vPyCuQ&|rH_fn(&&{-r9}=Hufn_0n3(d30iy(d^ z=2>dphBak!6`r!WfF>5_N1zP~LDHTa8Lkmi7GkyU8O-d_SRI>$3MJY~#=*>6+MO=O zlNB`w7=xR@8GLDThhc8m%NPeGrcF*p{u7lT2}aTRxlipPZyF~koSZAngQ9;2E4LTt zml0C-f087M8_kN56hXvCyOi;@_23vWz-jKUB)}?zxTR*4&Yn;QR#+N+`j#tJCZYO z&Z@RXzVKAE$g*PJ0uIDG z*{BD6Ac|H(kS{JpSXAK}Tunb9&!d>OX=gefgSlmNP54k|pSRmk)hldY<20qhWgaL7 zdG|Aa>2p%2`^rSKS(^JQNOBbAl(L8KJE4>CF#g)16k(rQa74c z>j*q>!dFo8QG|&rdK^;==#B)(qLJl?x8_jK6ZieF32RX7&)=XI==3EsBaM7bHtYdS zkcnuhJ7O}Xj`T?ag{kzX-($OEgGim5ie-sl`El9~N(dSXW|9KJ%{gm$D$0L+{ z{UMOi1J8J>>P__^e9mLdE&c0YcW~#Pv>HaIV6qwprh1=--b+qPf2u!Wzc2u>90I%% z+8FkOhkS}C=7xlAWO`dn@fbxS&+*yz?aF`R9m*Q-C#RUOMg+9^jl{@tC}NSGVS`i`73FuebMx+Z+JiPMuTr0m#qh zxUQZtq%{R|7I9sK;1F6Yb_~r8Z(UfCZxqs0MIUTL0FooH^jHIW>Zw17f5H2Od)doK z%OCOHgJIg;no!xIg_cHkSSIa7N`$syDlnZE{_ZOe1)tecCCQ z8!mZ*G!51>7mu%eWKNdbok{$Z;A|9C?!4bI-Yl8Y!?>VnIG74=I*U9tpmM~fiqPY% zNhgldIwNuweV=#fDqHXkt%DIo=aL>A@UhFWVkSKy)#xi12D6#IfBzcO3y;c1pP_=c z=gy(rW}OEp%;z@JFUx3)Tu<6{9Pod5{GQEtw^i88SqdXXwMEYL-6nV_;=?S#-_R>sf#%IrM`-kYvEfwQ^xs7=*@9UVuq8E0a@{{f)Pd_UEO4E2% z6}D2*7G?(ig;A$!HR(Umn@B1fX7BB0-{QH+t%~L{(PZ_909Hvt@JxXY(G`uNGfUNJj`~7{ zjDt2go_!b-l(R~&dxK~oa&du zF18-v(d8Uecsr(>;Tqo5A+4Gver_6{-gIVz_Aus-7IF=U!AgX5}8f&w2xRS3#Bn82wXDZ(W@R zwHIFsaBDkUyP0$^Ri#WjM~H*{si;u`d@BAX=HOg|GsRbcIjMs z{)c(5Y$w~P5C73RXM6naQdMiZjO%9Z@de^dJ*;%ib7PxOm&}pZCO6X7YR(bt+D=;Q zil#U@%g`SXH!!h{cPB%TU#J(-nc$njqyVzM*eeK2qhU**RpU7(LkUy;m;s9*;%y+|^Y zla+kezOBwJOK4mxN41CgMCK+i_Ba0bPIYS!;GC#ni2!@xuem2pINbH_N1W+fIr)+V zSgY(Y#xmVt!B{*VlLVByVzI$gx3OwG@Y8b~o_gmvK z$}9B8G%O$b{z=j%9t-&wNfIElA2rNsT8K6a$MuOs!eHZfig%oygM)o#%$2{q=xsmC zQVx2l`{O(-O{!n@x777E-Plzd zsp7(-I9f5ab@QIDHWX+nSc$^XASLnUa`KQ^3#9%O##Vyvq~7ZlUVu;j$6X(&uaS2? z*O|NnL5qIp=eax3ZxUZC5U-Z@uohFdUkZJLJkDvKRzs!fTBp{I{E;7#0?u#}b{3W3N!(c=ls_k_Q0w3@ zd@Rn-pyj`tm-*|9F{f=U8ZMVXQcQFz5h*#U#P20Ck16XbEs`bK-W+@n<=8iC-{l;0 z&#sk34t_B)UcV;2vFp8@oeZ(>#zrq7S7YGEIq|E}aM+;XH(Ar4 z-ffm#c<2npL6zI2%@o3Unugo>)~5X9y3_YRugCNj2>Wp~WxhZclTq9WeKD~YBs1~i zwNGDp0(^WvdFi~?HxL#!SpWLA<8)QDHlSAVyRqZzW#=L1x)3oYLnkot$H|O+dODys ztTK9G3_`FfjA{>j0?dHwhs1gY(mtIez>-#wPRdaKrp4Y54yA}S%v`f4VI9rWNpDV_ z?Ch$q(5h(6Dqdz&|5jxz-upAyYi2E7&8&Wb`@q38RA1rsq3oLPpaCt>hKFlCRtJ-a^eNjNM=@pQ2fonradFZwOC?7ZW4vjcm@_~*?+JUNY< zANlxdS@-(BpV5s+A1c`_K9F2bTA4jOpCxzQvSik#lRP1J$6`{VGfKa*+-Rk+Wq4Xt zceQSEE@>PtO~A0l>@gP~b+Td0_v6FV#d@07LCrpKJeo#e$jOl|TCr@lcGmbCuD9(~ z)2xQik=A<*P^b;QHhLs3SM`!?2B~0Rsu48LQ@qnws?}>IuBe`o4GGP{ovq4iWk?mN z`$&=>YFZ(Bi5bui$yA*J^`*CjTN6@Blfd`i*782gMCk) zUc^aib$krI{C3!Rd6WBXgR?h}o><&9*E;l-2y*z~w`n%XnT?r<9*1eGQhZW*#iOsX zPs}C7A71^$*X)y)N5e1&x*F+RPnig?5@;k_jmjwQf3x~iSHmLx=44su$_U8Nk>eJ} zIlnXp!zs(ZS}-ThA9YJ+TIYg(SX~R`ltf3L+QL|l_DfAqe&;*>gd;Lk^z0jBO<)pw zB@N_!MJ{?iM)y>h^nC&!wY(U?MB$>Q6dod zk8{+-fkPsLP*E*$ft^XFVnd9Fx;|4%Ly5?=HbhblDZ32SuLUUs#h}qCVh!sJASK4K z;l{nbuEa$oISNt+#P=}p=U2TS2yxgVE zJ#vm_n^D+m^)f4F(g>cXB}Z$|*Yh~NI1J*cHHwF@Rr<$UT7IqzIXM$ilb854J5=xY zT?GD0!i@XnA7CJz2p&F;nNdvGI+MW^h(3sK5C$T|>t3ScA^0OhT0d0Eou%U08Wo=y zrQhE(+})6$2x@n?*q}g;Tr%!)=DDVJ79+CF$^J%$(rS=aW){Hu zFcm*x=nX)2eE)2--nQ6hnYC~B=7`2WOhfWzs_sbbRr6rOq(=G=kEwYbpSZrO;_Xxq zTc6`dY}EN_s=Nv_VHQ?F0(-UKBmSj~#t5-z<~Tx+@CWnk@v;<@<;*(r407FyJ>aAr zfUn?$G+pm{T$!rI0V_u%E;0{MuLA7uX&&BP>Z?O3a9XC`XQIQ!HB9QSL2pL8_$Xtv zzIfDqc9M`7rMK*Bc0Lg(zXRodoKnI-O#Pl|e3+|YP@i+^d7fq_%}@?oCKr0Yfkzi@@blQ&2L}NZL93qv zkH?ZRNSNwgG*lg^vfHj^e@&}ucRy}ABiFUo9#Rf*tZ^c3A{C}!yE;AgH=X~iu)qK~*$xMqx%lpQiS~JMNOWG_4~LNTBNEm>I3F`U5Mk~Gp;s=augF541xlFVW2k?# z-Ebs%tR%-*nBXQkZ!d>80++>+tS<{ZK5n(@9Qip`SC?6o2N0O#gteQPD{HVja#;bz zVa7#r3gpD&_|miOdhh9{)9`-==d8AyWU1(#f8GvwoP7S^{TSYR<~$RFpWDsf0=`Fl z-p|S)Ws00|<@YMCt=bRXw+K$yu%qk9p~n}kZE7?frS6XYy1%?so5DkZnKsvSkl)Vi zSUJ(ud{M8`T?Q-UNMUZWnY3N5t}+fjhFGcF8_(5isAiA@L4U4@^C#*e7WuI24lJdl zA2v#9m2dBkJZ<;%tVFxiwDO+Z@v_q?nYXS!O`J~*I2*y%EH=K-K{voSeJT|`p#0XG zvXoWcqToHovWdpXhSTfCR*Np&(DcO>y@19i@4DWfVlc>eL7QG`#_%3sDp52R83wmS z?KqPtopf7;OKI^+oHW(t45!ahN%ADCVo|?x9da0(1zD}Ei?sC<&~0G8Lwo2FtqtMG zb4)exvA~tb9-nB!_i&!!Wfkw1WSSDc+Hl;ch3f|gs@Zl?$-Sda%2vWCi4m+@rx+LW zVNt|)4t_c7Y4~~~Y~)yCWCLXNLrjk}Q&g(iyNF4n-wgdv$vATe`bZzgT@Mr!!YC5zm9cu`K&#DZ9azo54nL#dxQK zxIB7ZQYCNhqk(M;CiFckEsBvuqGh{{VSvtpQuVr-yjJQ5we;#9{e))?423-Tj2bRL zMT65$>oD2C>HU>V^rUDRRXavcY_=()!qEAH%j)87s3ggzR&6q|hWptZyS=(>^jPit z=T#`aL?X0tEoUXtB2wI<fsTz{@!?IHF?_@ zmirBZulIfBIFT~0bddQFo>K}93|~tnouxp9tfa)ezV~@T=AP^e)On_!R6(Y(L~zAZ zmgVrV$9zpbHcii|vu-;2^IX|}VvMLo8D!2hUuTsi5bI2F7kLn?ZdFfC&kp_&B-WWe zp_5!6=xvtCf@&|2w%}}y=$-4$9tlshd{q0@hIYE80quI{n4*tj^ji_0gjLHN7ie2n*j1X& zyWGl=94)fRH=7+Enn3|ugo)8tF_l%bP!WIrgdzygVWQ?N$6q0sv)xEmJF5TXRAmiH z_MusJkwUm=d{{MKoQo>J)J5Lgc=dPLJjYgv$$AL)@pcGyo$4nBR3o2H)Wqeyq^|tq zK*FJ4X_S$ErWPJucm^~xX+14=cV*iY~eZ11@*{E z^-BRdc;iqO?i8!1(MI2P!F9Z4@I{18@3xLDKJ64k|CIlxk?+MHQh@^XTJGB1aWkm; z3rPP6YvDTK7c8MnJ_i$5*8Sp!1}DUucqK@o|#0 z1@b|7vV7N<;MKBM-=EBSi~}8T2??U4R8!wsyCk&RRA=WVnbI+Ib&JM)aVimVVOTai zHUKs+myZh4#SR-sPEN3~@Uw;0&h(iJ%}CX$+6E00JZJDGOSmvewlr=MtKItOS=)Qr z8qFUn8P-`9Er^%g;vp#$pY-vnD7Wct<+fXhCaLu|^o>z8VFH17-ucmf>8pDhuZB1o zhsA6BKe3f?oYIZ_4)r%^8U3IyD<1$PH8fHXmgX=ZfAf|2qHa3+m3CjlbD6IB-TH5nWZtJd1X6)Je;w&E4^tlmo zoX>qVa_q7e2Sx=gCJr}S-q$q4@PtI$X5W;#f$Z;tI~j3WLA1Fl19#_g#Mb#{c+ z5)jj4{K*u{V2!JH@VJQnns2|(-^#TymC|QmRX7S7$gskY7;=;$qgH0kDEVBJoyP&| zPWj_R%g`bDSf`qb;0#Y6X=O7khn7C8YUz?37-jA#_IerjTSnYmEr%G~EDSTFDrO|YE+Xl8CW5ff#s?7CO{{@Ze^M7ASO0+$~nXDD|`*526M=%ysT_{Q+b=kgPzvCvd&xD z@o14J43hZU(ta{JB+uHEa= z%C&eUpCo>6e#Qaf#PFpPY}b8KS5^8@5HGH8WtQBMUDDuRbiY+tv~qOQR7 zq`$B+S9M{)YMW}FTxSe6D1O^^Z~APkw^Q_!r{Ga@a@@8ZojRMnDjm_<&XPm=9P7*c zh&nS@O(~x=#_;W%&7Y5B9aFtmQsdeT;8BfaVx0n)Lmr-Mv{i*~G%~ z(R?cjdy`RdER$PpR>vHYqhBNgwke`r+K9Mw``^0L%6chXMVd?><_-_(!I zizq1s+Ij(#F7*|LZUQ^@uCj&R(aT=yWM2Eq@@fULmcvt1@=A0Q#YXDj9aL;|IvLLa z9|+p=_dZ_4x}7+xA5a_R3tamq*J2s^ zFDBghM%yKF_1w(Hx_&oAJ$vuL`|g+N=BF-t3{EZa`yJT_8VAvcd*_tW`SR2;QvUDlH~bQprPo7Pnb$Wi?k~Z3M-r@$ zyRQ|Vs-tYuty#ITJ3)&RF9mj-u#zr2VNwS6V(s#4`JU?u3(F&o9BiMyz2_*QfqEDd z5lVt*$-C&r&cumeNCLQBSuaVvS;8bxZj^~4sR9q#^?$xBfHPcV-Mo1a@M3u)$X;qB z&^FjUf+&zO(Eel9{15py->*XWDb*v z!3FY%bw@cbEpZ_J3H3RpxmtsM|F~59^!D7Kh$ZZhX?7;|GsN;@(&lI0*jemn|7)K} zuimb?r&3$3K~%>5K_BM^rKES3j{^Dx(?^15P&6lP)QZP!wzrho$X7|Hr>nmZ4i>M^ za{S;?qh`0Vcm*OnwppG1IbI63Ufb4fu-LbWuW;TPCaEgd@0syDDwqowu|$Ku&?fbW zmA2R$cFK)8@^&~{o-4_iqu3I1DRt31Sl6L*92_3*ir%!EP@-hsdwP5ZJ;XBZO~_QH zV`pHPZ~un6{^b=PVZLdL2b;>!!4Ei0f^Wscu8$`YHrP~Hd+2KYaT_+2kQMu4#j#AZ z_u#yV(7n0Z^#DLqKAaGVCLNcN(OkkRf?_%GrfZMILluoOv;Muoo>l`5WCXM-gBluXdrh)%3?j5Qamt!gsbr&XK`J)efZ z+6l?{szb!c;Ypw8UYM}O>-q<*FU*_+&VL1^_}Av0d4L{!`5i9)B=qs{vr_idEaq<@ zK2mE*D5wsyE0ty)6|a@rGQ=@GHcd3Dz%evyZIaPzT7L)2@@e6&VI}fxIUhJ1GRb&* z1bNeWMpSi9ke6c2BIeSPqb+6lBZ|vBW<|V&4j;>t_d$} zl}jJxW~;rM+i&NKM-Ec@=CXK3HKvxu56PBVWE$J^M^Rs-V6(aiwO$O}`N;gMczsdP z(z5DMcQ}Q8pz`K`0YbWGfPeEo{6*rogs5c3!INvk!|Nr(O^l6VX!53=@2E>^_(=GR zqx_*#RSD?S$ro0vr7wd_rony}N@vGIX6mGjN#};#c;!ZGojN0ZBKmIycEn?kT@4;z zbmqA|=hWWaJ=E>g7og@p+o+7`&H6Z1I#dxWpsa(b=WAcE**Njp*E{|#;wSZBqw;sE zZaSS?44LEy{C~DX0Y<*#FRslJ)Qr*hc0EITK6K4{x;-^d4NNM%W ztFQgN%2H9&mazcac_JB&PcK3Px^hATmU76g+mIbODw`_hr>cusd*JnNoZ6T?U85=| zd1)o~QZF)A-CX2ewtcy(i^|s>)(QamI||4#*r1~~L@vg?IGbP7kxTj)7y|H?kNi7_ za1UDD@|Jh-*8c%i6?>(iAotIps_^Zc|1qhG05Sh7stV-1ZTv?z?rzwBD-gj!{To>I z-|75ka_avEl}69E9;E%q1Fi9kjnUnJ-7+yK==r<76D$~k(*EiYY78^5FF@V=q3V4z2zkDKurXz z`FFzfp49|{5Jc%Mfch7z34tL{O%B9zaNw;${w5Z|Vcw#ch;9VMcne%2AljXbA-Wmm76^$Nrv-zfemqt~<8#|0gZ~ze`$z{sJ`r9chU`=5C2Q z@L#OsJ#mKs3vVgR{}aLZpD4xuEtmMuB;x;;J^Y{3hW8vK?4E=CXQEK}mPAAlg@{Zb zc)tG^slmJ3{9o=a41xUL76HVK|8J>5rSa;U=@m#!@9!(3uTcX@@Fa;u36LZ`UQbLT z6}Ew2B4Ft^&|mMRFfJzkm%eH(R7$fw|2(B)70cp}0BR4HfO$}79^^yBR9Su^PTo)HF0_S$Z^Uxz#iT=RkVk=T?WSw#%yfA*E&6 zeIGO4>s@fEso~`A+?=*NN)$cP_|482E1A@U?rx+Gu3aCU`Q7^P8=rm(Bf|-#Jo(ZM z67nt?YC+JlP?L?G<@{=Vbqa7EBkJMCm3GtTu%~NCxXT%4d<4Jc2s-tzz8?c-`Jx9l%l)-HZ*_nmfv5Ul}vj*))NI-y+OVD4t- zBvTn&h_>29ywSqPyF^K0dFl#jJw;L>LXPL@AVa0_V_&e9D6IIZdQ84*82x0(FBvtE zUI@=3P*Hb8$E>-!w1yB4bkZ<>n#mg%=e3NoPuA2OaR8U%dp;-{fhuT^dOgn}5zE_6 z*+v1=6GtUoNdH0L@@{tE8m}RxDWWOZJ1xyXz*xYv8}|h<_b)xyssqMx_tvwP6CqCC4XP$V$tmeYT02cgi=9G0!zm zUlSWmr&E!N4U1N;knXOOsJw|H2hAJ$3|ziFBR)7-P8cjro-f~x#|)i|HZIq2U}a|E zmyXOC0_lC}tQc}=aZWoz-`F8XiLjq+L<@_-pm(HqWN3;BrSGRNq)(8mk+Dhq$>o0V zd$Bix-WPsW*b8HrPxf-%Kj>x8?TNMMX2LFbvgu^jY;^h?4Qm^*Q~Pt47WO72RY zHxR&tD`_jo5P*aPv-nvNJ5bA<%gU{Hw`TF}qG5aPDt?GTN!`n~dWv!ig6I4yW0^W-y23^>#o#bAr`C>fgg zNcP66UaT!ys7S1r`VU}&A9bT)5N$AcP-3uqfIUeU*y2Ml5sF`Q74L((;rVQ%zvw~m z5O8^f4@>z&ngaTsQcx!h+huRO|OvMSmK92IOFrNHi=|tVi_74htVz zhmZxH^5UOLE?l?zw`%)e`Ol!#qS|1Ep^77?Afxy{^*{1&_7nJok&UK+((9isXaJzX zAsl`L_D}TV{)8U2#-58Zx+8znvZgEB!h1D#_+d>V*Hu=R)BEV~B)0|DG4<8Vw~p3mvMx9_F5!+s<~ihO(;3w(`l4Zg;o zz|ztJ!K`>*OnjR#C2H+n&d@M*i*960K*tPl2EO z)rN)1N}8V38PE%XvIUv4g}7JsD2!UYhJO`&c%rV?N<8qGJ_@$5hPYdB=rfu?-Lo*C){|!=Sm_^$ArnpL{L})jfWr04r8*G zk!dUkEWF@-I@DVEHIxInX(8BW(f9}QNh^m| zK}EZ9nb6TgEtCu8llHuI#_`cItS;rr0vpxYE*k|tbQC*y0|~|3Ts^eI)=%p?6$;KT ztI?oeT^5yBgM5S1>_{c)%)dTclw5RQL|r6aRCiN2Lgkewz+h0y|2p%P2gq!og3jKi zvIt*X`MR;|U58cjWyU-!VqU-SFdltsBZjBURgqY{0rR(cZwM>IzUugEhh zN5aaDRI0%@F41C``0UN}hYZ&$$LGVoj|QJzKl&XG;_A>*KRl8IRk@t%EvLFYm@ZQx#6c{Ud4CO2)YCkOH`CHSG?zPeQ59x0skfr6zGlT3Cv@s5u(%L9 z9JbJnOWoG>J5ocN!z-8mTq8kWJ=;u@J1`jQubqs;RViOI%j*2vFt%Ap{wPL_Z<=E? zYaltNgv6?!hu*DOgLW)v^*=a~cEhsrd_O|T zG`H|vFGS%g1<|P$)4&JQ>&oPK8rBf>;%Mb#ISWj~lJ`G=&jK#rK9UDXCWtCMbZ#d} z{bF%q^Fa!qfP~J9r+tHFYwy*5TAnVSh4M~J=_Y?b`$NI^N;EMR#C_Pf!ez|4WC82D z)yzDC6H>~V*g5aSCa;2+xGgk@IPqFpy>FiGmA{;S}s*=nJ6r$Nk3HxYS<;#VWE%&Bs zE66j^E?oLd(0Z)YD9+cz%=(1SspuRm`*M~-tfGT7)X5AOEjS91>V;Ix6>GS)>J@UW zc!speE-8vW1e^-ht2>1pNwENza~fPHrH>R;Yh|(v0-(Yp3grQTM9{TW*Heiv%ySkkTHMjLp_ZSUYlZONet;)k;kJ~ zlxe=-{fGw+$f8#><0lur6sOmcapL^!h6rlEv3?V1ICkG)`N}r>)yMAuJHqq5bj`vK z_UoX1+(Vn_WNOV1?9M%KH%7Z2jIEXN!Z~}KPe@6Rj2;`ub7SG=7!iY{Br`;6W?Zwp z$J}v(OZ(dvoqDNNwEwU6-U6(uu4@}r1Q8IBMo9tbj!lC!NH@~m>`iwFBHi86NH@|* zcPiZ-(%qf~KIQX1@BhVruJ4@xI)`h+UTe%T=bB^9SaS~Ubq~IF45IRgfQ&v$$`HmK z1zZEJa!q!opp7u>sdR*8(gHh=piRZFaUX*Iy60a0v7{x!8MdhaV$Ysy)-N@4ljEQ&ZKE5@b8Vi&_v=EP1 zor+^r_Zu1YFS`=HBA!`& zX*gQ-4O%iZxGmel1e@(gSD;3CT41+s660GB}>wKfzl>9Bc5Q|~&*nk9=4LgeWg3WPV zE&kw>JmQw^1G~f50tPgp#c`O~Ow^rGl*q{5o5E~tG3!ccUPA>f>(D|1Y0sfwN|BQ- zSYtD-8)cGqc9cAI^b;v8jdU&27M6?-i%MumU%_&Ugg-E88cNg*+v_LFbBqv^vx6f0 zAbEsY%Fc=+)*}jX*=};VoJ?z+nalZHSzt9@sFWWX1i>E;Q^}bf!gF0UYR(8fvv59R z)B3vqR-~-tY}0KVc7E!7Yq5FTbxD&1E}`8tM4oQU^3*Go5v$;Mc36s;H7o`zMd1BR zT5&b8D;$rff zS0lk%4RT{7CfIf;l|yK)#+ky~d=y_-%$8bj3)&C31~?Dk%*2Ri6P33dnS+_F1+8dZ z(aoFFg7kV$qD@qMSUpSf*PcSrRhD#dpVy>uGa9(9I5B1lwFHBN<9fRrc#tY}wN>mIGh4 zDj+k<+xaRs%Q2wCO{L<;!HaCcoJvD+W>oKMnjPLtS3pRS3@67J!E5-+Uc{d{j$h^& z7I)_K^ONUN)Aoh$lOj_3Sb8tk@_l)SzK;_0tm=6KDD5d5Qi4;upt6*`eN{VUZp5~s zf*LCK2O$jOrzexg6$*TePVl{Ao^fs2l)@PT2-Ga<-HceBPLO^$&+D0@s%$0CQQ9N( ziGzLXvY6gyvxe_W?Di^s#1UdPMgx0n#*d%5EOQFPMo%Dz)XACYQU{JHA7ed6hMu>e z?ENN|!N%Ar>5st89+3lntDmCnW~@x=NO?5O>tu@BTmCe3Q8Z)Nw}bqvP+NMJ?Ms84 z1W7iqA+s-s;Y;)td3g!USD2A4J|&G2>&i_Gt}w&64M*BSgK|>jwAC*2Ri`^g$W_P? zY>#DVv4-0AhPFic5qwt_9_BYuXRx2p#{1_3j&xDf-^ND>I5xkwG<{vbux*7zWf6tA z0R~ZPGgLftecAZ*y{HvO(eo2QgU#1NGJ$%-KeoRhBz;+COCDXRujHg+xg<#*jWP%2 zNA4H~l2LHgeflIR#Nn?hQK(=(MlrBObGVi>94FDKf}!x_$q^~TXk8sQjJ}3hkG+jt zbHm!$?xBx!#F3nuqLhQK#6D$)%uu!>@1Y)9YZJW(&qZI>o{H1?Vyn=}2)ua8S#FB5 zzkrDD_?V-eQYDx4(4qH1Y-)c<$|A zC>l=&1$(7dlO`C05+!pd{Wn6}R94bL$Ui|x6r&n;G9r+mX3w4wy zPbi6oYKXI+>*@|+M+caMykZL;V&R{CYFa53{AlN9t%|Z>ATO?lf1qN!psyzmE8oPz zL|s*3!&;@R9J5a?yp)JtHY0FUtb?sE89mQ(N>UI@TT+QHhs}|lgAbnLJq#qbCEPq% zWCea>D?X-2maXA~kS2mqWtX^HhgxRuxK4>)#S@9?qOv9K-9u#YryOM&SHqX}EgBIb zg`;F3lVZo!G`kv!H+=~=nWdlTs+VsZ>QuW`oWy)?Q#OvQbb zH>pm0LW=q+<+(i*fwwDgZtX$Km-P>fYPR1Ha|AEZVJkk3eElA#$rU9+w5Ocr?Pz!P zTY7m9>0}KrQOC7YL#pQ2@PRGzP{IgKgTZK}Gff9Nm9?C_pEdGH?PApJ_FFp=A`C1r zULk6kAHg#P22Yg-Z<{(~`bBd}{r#T?73H~;(~1>PI}Bl?6lp=U+6tKsNs9^+Ce*UIqD+A< z^hvTTrk?F$l?;ysFtl7_id9SNvr08%ljV|Ql9Ls4BxMOx%6kT12jwlD20`H-WMvj3 zf5<#vae{o3``Tq?Q<%`!g;B1T-jeI5Xq7X~Sv8<`2Km7G*%uMa_ugz~e6uq^VfO`Y zn*q&4YKNO%YZsOpRx*pRGWq*#8_^mA7gaON;@idd&3e=859FJoEA|F8!)DRBsw!`j zmTDCc1ud7Q2*H{q%2NTD^wa~0Y*yihZ3quDaGria^zp)Mi3%VeRyAyfb&a z>qp-a@vC{x+a-B#PYB*8YEGAiLN__?w4L^^(4k07Mo)OqR#R!5BYiZ0R)6pof82?n zC_#cLIG`MACdxvhJ5MU@yTHh2KDBoNLfPD^FH>H2&d#C_o#?!trK-$3K(p6u&2`Y& zGBLAMq#2Nlb%i%$h<)Vu4&0(h3fG%syitzAE-ay_7@ z47z}>weZhy@od1i7xqqm;XivR9K*rjKi(&O zsv)0W_$~BtaXE;(n|UL-GLUOpjCQyq8XLWyi5}@{V&|NjBwsERn<=ObcOt5)i0rhU&+V+CKXQtl4j0X1<@rK+0QjfZ>Y`7H-0VnS(*+TI2 z*Wv78buD*hO}FaQT)7OBNUc_{fTuS?R#xwQp3*5zR@F)t&W%~B6moxa#u#HeB^p!7 z6yK9=pG`=L{)A!pQ9DA-{bNvQb1!8JjF730<^kSjx5K1Ob$rD6DcV%j0$HNGQ8Hu0 zLhgA~SGm+spT%n~)7&4!(WT*1LU0DQs&b%qF&Rx&34-|`LovT{w3qeqhm`q*9J(+R zWaqBJ>iWCohPN9|#6j;yl-W&oY{{8UE&5O^T$ys$M;N z%-ioa2<6xcQLxH~wlvPHqjBl0aq&3nk(`cpL+(x!r!NjMJL%2#5t5e>R4ULvjaC<+ zsHu-4b+TZ=`I4i4qh)v#ub)7fKxxu|sXEOH@=H?jf$ zd^j@MHhR0WC;UtL$d3oBKUlMSi8q&R&^D7Lo7g>cx9DfP49jE7V{IhkkjOXnZXe$= zrKyNreLz;U2tUTL6JZvT|Mm0r$APWEZ=#zFxF`<+?DB*QL=uX<5^R;HCnfkb%A+~N zdzEXEhw&cDqL^R$ilb3Q3B$EYJCtxs2X6yRXuE^=aWf<0JtDi_`v(a+K3wYRN6`$n z-u2&S=;}q`!DQ^VLD3Anh7h~rI(Dt2@Zje?$GU;BpnV)oZU_=`gnBz8O~m!cba(a1 zV2kQ*@RLE$U)pI}FLlYEsBQE}^>9=%xAZR*c=QOV|4`>gstQ16ObW)| zJ_+@sx*^69X;0%RMTQ^;pCK2aeHXrVw`!M}pKu)aBWOQ4hZVWW2xK`aluR$2FzUGRN3$W`n2fica_!gk^-!?fSd>Pg*0gd1nycys zNm#?>oYL%dc#b{1u!(tTo^wpeYjuZh?MpTL!yGC}d&eAu#C$cgy9Cd(Vw}~%%4sS@ zA;Bkh7Wg=-^P$;Ow7oVoJp*uz$??Y6wJLFa*7ZAUeSqH@Cusa2R*u8l;L*YZMCwj!-YS$dBym_- zFF!fhXo3wqKKCr^*(VuY$b1ATS44%r+UlDY$s_jA--q3m$tyedHDl#4$BINY_0R`1 z*ba;>w@litQOvt8FoH!&Zr`O(8-8z%kp`5KWOGa1)UOcT7;)c6(T$iEw`7BnNHO ztgn&jD)wm_Ure9!t81K0NF*j*2B-G{07I+maA3G?tCE)UJ` zvMTmWoTiMAxK_MGE)FE7Y3jc+T=6zrU&eMiIKQ%G`&z3(L6D3mk8HZok@4&Tm8%0i zsZM4DdrYOcfk$4gX4CC_p@yV0_6ztT)Zl?1+$wPBGKDrnpTEo zL7GPKKED!Z)l@?eYLbTtZjx4KqaT59Wq0tg18I>>sV%m+#+$3)07E9Xk2F^3)4}9j zAuspjgdMd*R!XwzuLK^aL02!h5-jN|iC|;ia(1EC&|Xg^d%Z0>$C(;wO2oVsvU_LX z=M|feN)4qjNBSSaM;pTSS)Wvc11Ft(s;V6zY#$Y?tByxlOt?&B4 z`y@%lX{GlDxO%+&{G0~6mvGlBFh5}6QrJlU3EB1E4M8BKEG8u^`b!7`ezE@=wCkUu z5HS2p7yL{8|3MZ2e^Erw33$03_-+ z2o^Idz)KH=J^-lnf3oKTJoRjhcW|wHP!=;IfY|zp(E7=i4*~(X@5%S?+4BF0UI4Ji z-?85Ve^>#K*B#&fub8XTF6P}I@#p#(rno>%N$x~$g;Wp6F$w%i8eL!4WNODTi>?8)8jJy5Rbq_skAPo$JpBiT82nxo2H=$;{9&+o}D2}za*LuqEZX?#YA(?w5H~;&CzCt$5 zZ-IChdQQB}rzqw|$4KXAV|Wg{zF67o79!$BvKNj&3sc*gQK(6@ohI0h@VXsDSJv7&Y zkAw4%vPhE0m|(Uc&7Ey1DGzB7C?%j=XW%2THYqD+xAMO~Wb$K*Wv(JT{5sJ^hEI4l z!eH+=D7Ohc^~7!D-4uo+k{UqnH3MthNn~!E`lM03NU!W37u6q9`nd$TwCT-{K#Jjt z83iL#kOhNXToJv7$rQx7<2Y~A;;Tz`sN}jNAA?+lKe&{?0Mo3U)GE1Jyk4TouRE2P*GX*KKTeExv#|k_RwKysS-T{$-hO zB{1u43LJhtJUZ+>99-4v zf%G(09*&{s4<~>t-%v!@Bj+tD;ZJSyN}h1|DHZr1UgQ{@KFvW?f+A z_##$rBj?#;NcNfJx&)TsGrczRQo%~KM^hFm$AO;%kpn{mdF6H<8{+R|EAPY@OEKhp z*ftcZ!$@F_gDCHuMqFSVC1REcs*TW$)X%;c2IGr|uA26yuBNWij)I>~Nk)|ofsuQ1 zR@PTySCm)AS6NrIJO;q8@@DJDct*j<8MC*oi&p0ZSY$dQ%$sr4@#abDq4qc_*E~}@ z7^C2(1Xr9L5c@^*%E$GcDv3(9Wrd?}F%*N}P%6~wOh4xgfnV={(Bdwx;=e7FE+jWk zd%=2*!xkgBJJdSW>ePa34V_1AS8dyEFKj1mH*LFZ4=P-0Eo-$oARG=HMpFzl(nb=A zIqjRrCVC6H3v`~+P##Fv6#G^StzRa;Jo3DHboO``ZU*n%eZdg`Hw}Ej`-xjZ#D&9s zdJIzqI|bG6nfF>KmHrtXJ#;!$?SrHm$2E_EBwm|ciG{u^BX@_j`N8Yy`0+t5kF_-> z4I|aTZz&X9%L$irZGmXgQd|rNU2Uys$PzQWR=T>{y59vm+hY9f(1OvT(Js(x(Ad$6 z;B>sMZrbN#>wlCxe4i_va94NdbH~g$77H3hJDfeVx`=aCXcTG`;~|f^O92 zgOYfn*XYx^ErH3_Hwv{TP9yjZiHHwb*0DICgHwXKjgO1uH4zCPBlUZ9Q5a&w$<^0i zJ^gB?piuSSJyj~L|o}CM_j=1hmc)iFLNv^Top`<;bmiL*t5C*^4>_c%O(=`t+ z7_jvhen8oHNOx>SQ-X!>r8Ci;>}9rK+K3zS1#S*0!xf_m-u??dPYmlpZ#;bCv&%)* zj>pnp0xciZ>Vyrp)eXJjL3ymrJN{V1@)=U=nHZGV3S|vtQMg+FsI}d`ygTf5Qo)LI zwMz|E%}$H_19hhD<*gc)nR}p-fF*jz0;n2q_nq1zEnCP7{P$N2?$ubg5>*j86GE5W z51xBBy{zkcRgSPLd z`jI@#u|jxd2cf#Rj5wWBLRpoSvjqxv*g{!xy6t#)>FN33w`Cbk=3(&+=r@1GH^90eU(pADcH#Rpm=qa`LHl7p)2QncE5i3$bxxaHaMNczyt4q%< z{kko)oU0U3Zz9^sVJXq}D!vx{;hUY4X)-+PIIO*i`htF_3M;9doWZxsX3!PF5@kuR7hEp*Wch2CHt9?EhLesCysSjg9>98 zrz)hHD@~FE%)URqY#8MNZIL}*6j=khVz|@a+?{g5rONvfqev*$FyO`dWGllk&8{!fp8Bfz znQ>xFK7{A&Mb@(mVG(+{`P^=OOi8qT`8f$nRvAYdW0bb$gQxEYbaQlVsv~-n-mIZ! zY+QpgyZEp8BB*QI9^26|9B!4CKF;Oa+LrTEaHEV2YlBwTh5;v%1aV&HgiyBa;@OC$ ztAKpew-GYZ#qqE(@M}=&J~?izeNvsjWu~%DKQI~V$+A~a)}uEwqc>I5&7I5GXTeUx zuca{pkVea!;pj!#<*))Ng`3PoyJ>1D-5gdL5?pfJ32*s%PQF2=UPNP+#TmTHRl~)> zH)X;cd089fn293-RNwXUPmv@KNO$1q%hDPzIdHJzAA6 z+?J~}GTG>xdJL+nYh#q~D?ea13WHgOW2{ojPmKCzC$5q932st8JuMPXwZL#76+gj4 z){{MPosDEzh^4sGReo&o1=c8HIOqIqZ8hiK(KqptsD%jsa;tY2us8U7as?Y#(OM%~ z0mG80OBgsy21u_E@?Cw)S{gIe5kur3T=+2)@spQLSp|IJHhU)P0*@Oo%j0u7yuiol z8jf81HOo)5*0YT2wLYC zkb_G;BFrw6nWS2ebVE9}jA$~@rG^`zrx|8HC1d^UyG*HiTUB02i!eT@$dY`(Y0IJ_ zO-?IUH_Ev#Kz1Y_H^40An*a`_Ne*yEi;=xyNDsg2i`NJMHB`yCd8ZD^=oH)!y1T8CS8k}36JRf0yTrKrWTK-3*x~R7HniX%K zJK)A0jfj<{qL|YXy?ssGwz^((6cOQx;k7rjn5(HNmhE@6TvY@uSH} zvXAG?&xmcBwOc&@d1$k4UrIUHF>i3dYeHJDs_Yf|aJ{~l!B|GlY zc^^pzG*&j4KKB)YZ+z~ksTD%{F#9dxQ?zyk?8GP)Txr-4GVkdC(|sCox%ft(zzZC! zW;7$k4qS}Dva&!w9R`c&RYpeqhA)wlf&Lui3hiy3>;;%dWh>P!=k)}xW>PuacK%adj2hTb$yH2bcgncI{kYzo&mUkPpFmW7>lJH0v3!a+vY?+X{TU$9D z_qp-@M`BTHaM5&u2fddg*~22q5WY*GWKtThHIe-D94iQ>c;70+j-_sHGLjE zZWUdKvwud!_Od186>cYM+Kh3GC@KnHf-SXxD0)1T-N1S_TndCS^hMJ`V!vLZt+zo& zkB&W9ac<KRaPq@{W*UYhz`zORRS+ehCWBZaq&S4`f6!XV-HhbqYf=4O~ zK`Bf$^J$|(5u6`K7(mtt=^DFTw{f;~y1t;fQ!k~Q@78W@Ra&m2qPn)*HR2^siAu3K z%WN9p%&PX*B0P@NnyZ1^7T77I6`H^C|^MQ_5j>e6bz zTl1ED!7u*~Gec90_7kYRD`bfQ2Ytn8im`9A7i}p$gPttvnS=L$)L}#-NJ8_4PTcJ~>VFH@NmE|R-pUqrh3tE(cWX!o)zl0`lm zBfrwberJn5x8_{fliG>NjrQGY>h6N^_6ckzE!FZHqrImND9tLAGndawi}BC55nbY0 zga#R=h-f-Z5QzCv>W9o^j%XH*2H+jEw_}>~Cbi$J$!d%Umh&5*>Cy(JC9z#~Juo`;|njFeA=0n@8U4Q+oRFQ%Fv` zQ)9*>(vz~g*yhyloIFk0}BC$$H-V7{VtuMHsf$8jAE+RcBJ*+4@AbIF_p(tQpO`wNW%CqneEE zm#!c=C>ljc_S~l#X+`74EJ0NW%rA^F&!4!a<7ptN(oFZI+39Y8wbc}&+Ud!y*4K-= z%DPEkJbB!JwB1&e;TaZ}>f@pd6%18R@B}s3-|LMo(}G)zs^4bdieB{!MmW5j*hYwq ze@z_5rM^z!OZFm-kVtRNc?&TB>6dK(y_|*9H`Kw^(c(}$%1&UvRUcsxL2>-T`EynI z)egfeyy;YdHG<$u zN|l{~;Z-xM%jbwS2N$v6`1)m4H8bvm+#e!myZVqL4C=uZiG#{sh>`&hy-keU(;E!` z!3yhq^%q`R`7#Q^vxQ&6Xk`dyEY&NvGS}WVTRgWyVj{30gNbPWVoa%0wh$FYMLBU@ zpV4LhqLY3VxIdNzt~}3qH|@; z;hZ*M_J+A)9Xr_g9JX@`-)V!BCQ;m(%2i=3aj5ZK+17rIx^wiw5h$RKlkM(<#O*D`y07kwVZCm8LqByDp^bB90sr67uQ2PX0@-=o# zY!+%Z^q{Iba!LJ{a;Otto;7)5&1a$r0l^Ok=}RR(=vQXPsP-qQaK>W|8zK&aZzX{|dEUIZ3?iWqv3GyP6gvo(*^a;?KH!vP-$hv!;BO)($zie@r<9SlZn z?0+>;)!w*e)8l^g zBXaTbSMXjuMErwXpCy|>OCukmH_JGCU;IE=5<&jLmeM3XnRozaBd@53`j}XR*>QJ` znL4D*5g}Uy4YAjlD|Jx?(Ju0fwU_T)+P4L7OlRc~FL(;1BZzR)D5j@xIId*43r}+g z)^H*nzNCWIV)EO5b?lEA^;?`Qd}LZNsgtrPf|jiH)s^mS+3os)kU_s#?@QLpoqo-pl=bEH_QZ(9Y!^HF#K&r8Dxbm zH;DRe717FdTxuz$6ORF1#ubROTH@;$UVrIx2#MX`8^J)|aMD)~@tPibq`oSMk@*aD zIr>Oez2K!ORojat-RXmzhi*Z9P0xvlnEM^SGY-+w~;*b`R|w z%qL44YfKakCVSGo%#C9D%^9;vIz)uvxjOlA{UyJsS-FQ#r zP;Hn{N>aAWbJCaAtg6v0)&fi9zY&d&{Vo^hUFI7Mfh%RXj5=hIsyV-+iRzHk^J65E zOy3BST&&z4vg2-xCN{uE-nGBtWY>e=9Xk6+UaY2O`X=|&cSuj3&B*Yh!p~R4z4Fv4 z3!8Zak`M|S$aGwyY(k`|gvLw5%FyU~uwxi=eg^DZeFg($r&hA&IaTs`q2mXNvv4<$ zlIX!(`}Ulfqszrm-Wtls!*i^~bMw?RTuNUwlgbK@)VV^X~F9 zjMD%h-{_wWX}Teyy@e6NUSB9ib0nzmnE%j}%nc&$cy16N%d$gCw?Ch7G-7n1br#L<12MH9-`aD-#!TO!)YLXl(7^heZ06ol+xIYr+ec!P6ft3yg0KB zaSYe^>|ptgvsP|=s8*@Zd>_eKgyX7xY*ypOZPq5^?NSPl2i+m|F=vBIT|?__V;Wzn zO^JxQa%dzbW^#tZrm1j!vO8pOTaZJEm$|H!%JB5^rj@F^oPvsA$13OfSswTpyS-7)Z{DwLNujRUi{X>&Z^c#jfrmBlcnG{f{y40vh_ zo|ko|aJ#7A*!JJn_|ryRP{HOlB`u90p($5>%WJd>(6SsL%I0C_vF_PLhT%I6S#(z} z_DI!ACLqGy!QaF=4XqWvx>VHFM=(o6ehj?N2P4~F_XUA?LD{8YVjSjbe=5MG3HkDX zDM-j$*fO_4U}78@X{ecF`)mmpWvkTT8M|MXos8R6-;*VrQRfH3C;60wp3E z7QP$~(3=~zI0}@!A$ECgts*e?FLqD z%1eBUHbn{zS5pr;tn`cDuoP_ZW}1G@-6BkPKS_&@89BDTrHv{Sj;=%NY@qc0fU&+d z>N2h`n=W*6WqEqq4qHPJp zT-+6MJRqvq#~*ATgh~l?)ZFM7(ZXXL1vtXT@=J@ER(!LL2LytxOEjM^9VwPpGmlT! zIBoE1FhZdJIdLa%a7}90Y}0LSC=RbxhcC^ZB9z6kG0ph+|v*G z%Aue9X!2N;o~N~EU->lt;RmAZ^(&jr>2`8}{X}@4_VMc<84PZ9Du16}uA?8q-Dug5 zIYbw4!kqh7om%mOcg}M$32N;F;loXZK1BOOw{ggt%RT*`h_2H*W}o%tlfJ#9>+wl8 z!d{*NcJ8T(21)P4$Fa^4Gj&EyPARMSgxV_A?PcsM1pT#=7CgL8k%s-I!MAt`|A3SM zsAK*Wha%)?D0~Y}_?vM_D6eUbgcn9gZ zqY}DHVj#TdZu|BmwP;W;Tv^YWI(1}0^U&hy{4tt?!Ip6&hNcs<^B_Wk zOUa75Ij~JfNr`!h`XE#CvA=`2=Ha<$$=1OKZO-H%lyU!6Ih=e8^Nqyq>GzfdlyULs zJNOAGmL%b?k3$o8$0UQCUp#ZV8Sun1GO8~gf*Ly6s4Yf&ZAoB^U%lJu{~aXl`Q?$! z{Qi&eP|upjn=Xyn_)xKRU-lb{g*Lz?@ZXAP+Lcu0-eqT0KV}|ycZ*AJD==K-{&0Co ztMngw^FOlt00c~T{YmO)H~zD!{&P(f$|nvbi~eDdIT}+bQ2oVIltTD)_t)NG7E_=2 z=FRhO|7=)R$z$NBmay@HJapf+nKs#;8D|lhVaHttzdX z#Z41>lok{2w5g{bpKG0LTK*)c2#t_rW>wMv5q7B!uB!UyhRcw#Xwh9iY8g2j_^6$U2t`Cn!eE$wy~liHg50Nao(w$-PH@ zT`Yeh@(~Wyvz3|U`f$S)3Wu~r7TT&&~*tXWf^=53$w$D`YXSk^r`}b8kWK`m0Qvn?kWlU3Btklsx2lB9?6mC6Ol(YygiH(o`iuog`dR+{ zT*U*xNVtApGDZMn#{>d6#r}`BjDeYz7PwXPKwkma*4Tjd z0TD6+h(A^q5ZfI<5a2*#VPyQDY%?ZyT1Eg72s{=3w_6S1dt+gy2W(?zV+QEV7=ZR; z1ngx6F#tn=nH6AzV`X3kkcIzq9rFJ^<5*dN-p6)F+XrHzWdZD91jaQZEgLg4K)uJz z0s_V#12fzIq;0@>0PZV*%>3VOH=zHqgXr0Ru?+y00+>|*!uo%-X#jKI{m=rsA2Smz z0~4^WVqjsUWoBRkz_-jy0MwP8fsyrpvenp`0m4Q`cHqhWzuRoU@SYH#%vBXN$TSGueZ2UYk4~WP2cG&! z0h!cXIzBySt1Y(4Y;N=C2|1W5Hx(XD0vhDQndp<^!9AA7zOmcb=5t9KJeaLF zi}c$Q8IJk-L3dt?2Mb2y3+=OK(Pm0TPRj{_yA#P~;9Bn0{l3te-EM-5H9OF}{@2;g z&L+x74?l_(LRlP;VSS;=50Z*|+KGxFqQmEIjX)e<+WB{_-PYQHZY} zbEo>tJk+`$yJq%QHP+%`cGx@|Pgc`grO~+F8pG<1!tQBiME%lUpgFUdWOHH7g zOs!$Jso}E6?e^R|)nNyB`3q_kq`h|7nxJ1ZYfsBXKXKO%Pt#@iM6Gzi)!k$~Ks4VN zbss4aNznxBse%oYmxvgLl-RbK`? z5%vYyP zsy$kQvx8oEsVcIFRakXVWJu9UK4)erq@v|nATosqd##M5wj{&~UGJgRW5vMl7AX8X z-Z*09s>^NrBQnkUt{2tN)|IPe>J8s|6fEZzl2i zVFN`B{Y%NGIS`-5YW(n+zd0JK)5cs2Pd}R|MXd8p1?O-aa<6hq9Dd5Mi{R~Y(2Jh5 z%AEJll7R}eYF>JsJPz|no&{7vi?6T9T)os1Y@@k!3Ws*8k4u)cZ)2E+*XqAXm^40{ zOC_CX0keJUou!qJSUBy6!R@xZ{!Oz^ynGkK=k`sT8(#DuQ` ztvB9cs~1_*QQ2b2(79m{Kx20#7LW8Uv|b##X3EHMP05lcvlCH9_(I0}xUX$O^<@P& zX1#-GM@Fv=nskM&l$UPSC|#~f1?ssFtIf^AS4$thuGNYSUXYNl?8Cw0t@_qTx8#|>e2&GEx<$Y>t%l3 zEdH#gw4JTF3E1Gis=_ALK%sXFy`L1u5<0(}{%*-%JOy{x_{S}ggpRI(`CUDMje+3( z_uW1CYtCO^2NJM0(6NPB6Ose90xn8V%fLWOe{bl03b4}<1iUkZNd7O zB`x5&cpU+!kC}n(PZ&Qp(Oz8>5uu4bH<2=nB)z1ifPt}zsI#?!yt9;op0k-AyFL*w z50@i{qlKjfP&%Qbg*n)U!;zavM<1eVzyTcJiRp+4?^SHgxQPHw8V73=z=1==!)2{+ z$RQ^v{988QjGM^V*4C1Pj?Tfsf!2YE7GiBg$H30cPDjs3$H+(nXwcX=fo*jhX}~tb zzZLL1^D%HA3GWKj(S_LAauWg9yswPD-XDcp+F6_57pbpDXJBq%akoFE19pr+{eG{x zh2n+dD`@o~7Icm}mVhSxFPf5)|7%?fi(k|gWQ_jT`nGhIMt|n8{L9_=r7A!I zP!%RX6S(shmK?uzF9it1oae7SjEnB?seh^)+;u6QyY5Cq&rHL>ra;fm!NR}+^tr#} z`l)oE3Fw3-hED%MroSlNWdiKwkh*gr*zhpim--h0m%bi{A;j83$CgLO($d^SPv>sK zO$V69MfYdYot8P^jI#p@`Po_cb&P%L7${L0m`Mw;y|J)0;^w}u;IFE8HUJVau#K$_SkK@;k@+vG zzh#yK+>R!9rU{tq*x2w`T0+u#$nb4UmBcU?=CgyCHv-{j~Eh z9sW1VfiVOe{V@!A{v5`@^|^_xfkFBYQ#<3`dyIcBMt@Ec0>A`e4l%l$BktSoPp^-X ziGhQGwT!iap#k6y(lfC6!?hu3Vhy-t?#3UT1mkZmS0MlI^9|wMHtpxEE2U%c*L=V{ z|3@i6hM%cwzibVDugLwR`-d`}l${0exBclL0P)zsnftf%g~xrpLg<{4X*_VAuLLJq8wfz!UXrUf|uKyA9Vb z*JWT~1xWG#CIbP4*#9B}Cf~ow0H?;?Hs+V|7@64s2hQJQEKI9H~1 zg=zRTFW|BIm%QxEfTQORJzHxX6LSM=_WNmxjkD1s(EX?q)UI|GH|6h1+g_i&T literal 0 HcmV?d00001 diff --git a/examples/plural-example/main.typ b/examples/plural-example/main.typ new file mode 100644 index 0000000..637c4a9 --- /dev/null +++ b/examples/plural-example/main.typ @@ -0,0 +1,48 @@ +#import "../../glossarium.typ": make-glossary, print-glossary, gls, glspl +// Replace the local import with a import to the preview namespace. +// If you don't know what that mean, please go read typst documentation on how to import packages at https://typst.app/docs/packages/. + +#show: make-glossary + +#set page(numbering: "1", paper: "a5") + +#show link: set text(fill: blue.darken(60%)) + +I like to eat #glspl("potato"). Yes I still like to eat #glspl("potato"). + +But I don't like to eat #glspl("dm"). + +... + +I thought about it and now I like to eat #glspl("dm"). + +I love #glspl("cpu"). I ate a #gls("cpu") once. + +Would you eat a #gls("buffer") ? I heard #glspl("buffer") are tasty. + += Glossary +#print-glossary( + (( + key: "potato", + short: "potato", + // "plural" will be used when "short" should be pluralized + plural: "potatoes", + desc: [#lorem(10)], + ), ( + key: "dm", + short: "DM", + long: "diagonal matrix", + // "longplural" will be used when "long" should be pluralized + longplural: "diagonal matrices", + desc: "Probably some math stuff idk", + ), ( + key: "cpu", + short: "CPU", + long: "Central Processing Unit", + desc: [#lorem(10)], + ), (key: "buffer", short: "buffer", desc: "A place to store stuff"),), + // show all term even if they are not referenced, default to true + show-all: true, + // disable the back ref at the end of the descriptions + disable-back-references: true, +) \ No newline at end of file diff --git a/glossarium.typ b/glossarium.typ index 03e558a..b49ce10 100644 --- a/glossarium.typ +++ b/glossarium.typ @@ -15,7 +15,10 @@ SOFTWARE.*/ #let __query_labels_with_key(loc, key, before: false) = { if before { - query(selector(label(__glossary_label_prefix + key)).before(loc, inclusive: false), loc) + query( + selector(label(__glossary_label_prefix + key)).before(loc, inclusive: false), + loc, + ) } else { query(selector(label(__glossary_label_prefix + key)), loc) } @@ -27,19 +30,19 @@ SOFTWARE.*/ let __glossary_entries = __glossary_entries.final(here()) if key in __glossary_entries { let entry = __glossary_entries.at(key) - + let gloss = __query_labels_with_key(here(), key, before: true) - + let is_first = gloss == () let entlong = entry.at("long", default: "") let textLink = if display != none { [#display] } else if (is_first or long == true) and entlong != [] and entlong != "" and long != false { - [#entry.short#suffix (#emph(entlong))] + [#entlong (#entry.short#suffix)] } else { [#entry.short#suffix] } - + [#link(label(entry.key), textLink)#label(__glossary_label_prefix + entry.key)] } else { text(fill: red, "Glossary entry not found: " + key) @@ -48,7 +51,47 @@ SOFTWARE.*/ } // reference to term with pluralisation -#let glspl(key) = gls(key, suffix: "s") +#let glspl(key, long: none) = { + context { + let __glossary_entries = __glossary_entries.final(here()) + if key in __glossary_entries { + let entry = __glossary_entries.at(key) + + let gloss = __query_labels_with_key(here(), key, before: true) + + let suffix = "s"; + let is_first = gloss == () + let entlongplural = entry.at("longplural", default: ""); + let entlong = if entlongplural == [] or entlongplural == "" { + let entlong = entry.at("long", default: ""); + if entlong != [] and entlong != "" { + [#entlong#suffix] + } else { + entlong + } + } else { + [#entlongplural] + } + + let entplural = entry.at("plural", default: ""); + let short = if entplural == [] or entplural == "" { + [#entry.short#suffix] + } else { + [#entplural] + } + + let textLink = if (is_first or long == true) and entlong != [] and entlong != "" and long != false { + [#entlong (#short)] + } else { + [#short] + } + + [#link(label(entry.key), textLink)#label(__glossary_label_prefix + entry.key)] + } else { + text(fill: red, "Glossary entry not found: " + key) + } + } +} // show rule to make the references for glossarium #let make-glossary(body) = { @@ -66,44 +109,49 @@ SOFTWARE.*/ #let __normalize-entry-list(entry_list) = { let new-list = () for entry in entry_list { - new-list.push( - ( - key: entry.key, - short: entry.short, - long: entry.at("long", default: ""), - desc: entry.at("desc", default: ""), - group: entry.at("group", default: ""), - ), - ) - } - return new-list + new-list.push(( + key: entry.key, + short: entry.short, + plural: entry.at("plural", default: ""), + long: entry.at("long", default: ""), + longplural: entry.at("longplural", default: ""), + desc: entry.at("desc", default: ""), + group: entry.at("group", default: ""), + )) + } + return new-list } -#let print-glossary(entry_list, show-all: false, disable-back-references: false, enable-group-pagebreak: false) = { +#let print-glossary( + entry_list, + show-all: false, + disable-back-references: false, + enable-group-pagebreak: false, +) = { let entries = __normalize-entry-list(entry_list) __glossary_entries.update(x => { for entry in entry_list { - x.insert( - entry.key, - entry, - ) + x.insert(entry.key, entry) } - + x }) - + let groups = entries.map(x => x.at("group", default: "")).dedup() // move no group to the front groups.insert(0, "") groups.pop() - + for group in groups.sorted() { if group != "" [#heading(group, level: 2) ] for entry in entries.sorted(key: x => x.key) { if entry.group == group { [ #show figure.where(kind: __glossarium_figure): it => it.caption - #par(hanging-indent: 1em, first-line-indent: 0em)[ + #par( + hanging-indent: 1em, + first-line-indent: 0em, + )[ #figure( supplement: "", kind: __glossarium_figure, @@ -146,6 +194,6 @@ SOFTWARE.*/ ] } } - if enable-group-pagebreak {pagebreak(weak: true)} + if enable-group-pagebreak { pagebreak(weak: true) } } };