From 1328a3fe3e4ca46e2c5e1cfc799042147e4a5f5b Mon Sep 17 00:00:00 2001 From: warriorstar-orion Date: Sun, 10 Nov 2024 08:43:41 -0500 Subject: [PATCH] docs: Add tutorial on bitflags (#27192) * docs: Add tutorial on bitflags * add bit about max flags, also fix horrible admonition font size * accidentally a word * better terminology * include contra's docs, better distinction between value and variable (hopefully), better example without a leading 0 * fuck * this should stay higher up * fix operator --- docs/css/para.css | 4 + docs/references/adv_bitflags.md | 114 ++++++++++++++++++++++ docs/references/bitflags.md | 146 ++++++++++++++++++++++++++++ docs/references/glossary.md | 4 + docs/references/images/bitflags.png | Bin 0 -> 67839 bytes mkdocs.yml | 2 + 6 files changed, 270 insertions(+) create mode 100644 docs/references/adv_bitflags.md create mode 100644 docs/references/bitflags.md create mode 100644 docs/references/images/bitflags.png diff --git a/docs/css/para.css b/docs/css/para.css index f0c5021b48d..88fe41387dd 100644 --- a/docs/css/para.css +++ b/docs/css/para.css @@ -26,3 +26,7 @@ header { --md-typeset-a-color: #ff558d; } + +.md-typeset .admonition { + font-size: 0.8rem; +} diff --git a/docs/references/adv_bitflags.md b/docs/references/adv_bitflags.md new file mode 100644 index 00000000000..a76435abcac --- /dev/null +++ b/docs/references/adv_bitflags.md @@ -0,0 +1,114 @@ +# Advanced Bitwise Operations + +Expanding on information covered in [Bitflags](./bitflags.md), this document +further explores how other bitwise operators can be used. This document uses the +prefix `0b` to denote a binary number, to distinguish them from numbers in base +ten. For example, the base ten number 5 is `0b101`, and the base ten number +1,110 is `0b10001010110`. + +## Or Operator + +The Or operator can be used merge bitflags, even if they contain the same flag. + +``` +var/a = 5 // 0b101 +var/b = 6 // 0b110 +var/c = a | b // 0b111 = 7 +``` + +The Or operator can be used in conjunction with each other to reduce line count. +This example from the previous bitflags document can be simplified. + +```dm +var/player_abilities = WALK +player_abilities |= SING +player_abilities |= READ +``` + +Instead of assigning twice, we can simplify. + +```dm +var/player_abilities = DANCE +player_abilities |= (SING|READ) +``` + +Note that these are now wrapped in parentheses, primarily to make them easier to +read that they are a pair of OR'd bitflags. + +## And Operator + +The And operator can be used to check if 2 variables contain the same bitflag. + +``` +var/a = 5 // 0b101 +var/b = 6 // 0b110 +var/c = a & b // 0b100 = 4 +``` + +The only bit that stayed true was the bit that was in both inputs. This is +different to the Or operator, where it only had to be in one input. + +In the previous section, we turned a flag off using this example: + +```dm +player_abilities &= ~SING +``` + +This done by using the & (And) operator and a negation of the bitflag. Negating +this bitflag replace all the 1s with 0s and all the 0s with 1s. + +``` +#define DANCE (1 << 4) // 0b10000 = 16 +to_chat(world, DANCE) // 0b10000 = 16, note that all the leading zeros have been hidden here. +to_chat(world, ~DANCE) // 0b111111111111111111101111 = 16777199 +``` + +When the `&= ~DANCE` operation is performed, it takes negated version, where the +flag is only zero and applies the and operation + +``` +var/player_abilities = (DANCE|SING|SWIM) +player_abilities &= ~DANCE // remove the dance flag +to_chat(world, player_abilities) // now just contains (SING | SWIM) +``` + +## Exclusive Or Operator. + +The exclusive or operator `^` acts as a "toggle", and doesn't require knowledge +of what is inside the flags, as seen in the example below. + +``` +var/player_abilities = (DANCE|SING|SWIM) +player_abilities ^= DANCE // remove the dance flag +to_chat(world, player_abilities) // (SING | SWIM) +player_abilities ^= DANCE // enable the dance flag +to_chat(world, player_abilities) // (DANCE | SING | SWIM) +``` + +When used between two variables, this can be used to check the differences +between them. + +``` +var/a = 3 // 0b010 +var/b = 5 // 0b101 +var/c = a ^ b // 0b110 = 6 +``` + +## Bitwise Shift Right + +Finally, in conjunction to `<<` bitwise left shift, there is a bitwise right +shift, used with `>>`. These shifts can also be used with numbers other than +one, as shown in the example below. + +```dm +var/a = 5 // 0b101 = 5 +var/b = (a<<3) // 0b101000 = 40 +var/c = (b>>1) // 0b10100 = 20 +``` + +However, using these shifts are not common outside of defining bitflags, bitwise +right shift is barely used. + +Not to be confused, these operators (`<<` and `>>`) are also used as "output" +and "input" operators for mobs, savefiles, etc. These are only rarely used, +users should be using helper procs like to_chat() instead. diff --git a/docs/references/bitflags.md b/docs/references/bitflags.md new file mode 100644 index 00000000000..2df3988181d --- /dev/null +++ b/docs/references/bitflags.md @@ -0,0 +1,146 @@ +# Bitflags + +Let's say we wanted to store the abilities of a player. We could create a set of +variables like this: + +```dm +/mob/player + var/can_walk = TRUE + var/can_swim = FALSE + var/can_fly = FALSE + var/can_sing = TRUE + var/can_dance = FALSE + var/can_read = TRUE +``` + +This isn't very clean or extensible. If we added a new ability, we'd have to add +a new variable. Instead, we can store all of these in a single variable using +_bitflags_. + +Bitflags are a way of storing many pieces of information in a single number. + +This is a simplification, but when you assign a number to a variable, that +number is stored in binary. If you write: + +```dm +var/player_abilities = 41 +``` + +Internally, BYOND stores the number 41 as the binary value `101001`. If we think +of every `0` and `1` in binary as representing an on/off switch, then we can +store lots of switches in a single number, by associating every binary digit +with a setting. + +To be able to access each "on/off" switch in that number, we create a set of +defines. Each one represents one thing we want to toggle. We use the _bitwise +left shift_ operator, `<<`, to make reading them easier: + +```dm +#define WALK (1 << 0) // 000001 = 1 in binary +#define SWIM (1 << 1) // 000010 = 2 in binary +#define FLY (1 << 2) // 000100 = 4 in binary +#define SING (1 << 3) // 001000 = 8 in binary +#define DANCE (1 << 4) // 010000 = 16 in binary +#define READ (1 << 5) // 100000 = 32 in binary +``` + +A bitwise left shift "shifts" the value 1 to each place in a binary +digit. If our binary value has 6 places, i.e. `000000`, then `(1 << 0)` +represents a `1` in the "zeroth" place: `000001`. Then `(1 << 1)` represents a +`1` in the first place: `000010`, and so on. These are still specific numbers; +we are just representing them in a unique way. For example, `(1 << 3)` is equal +to 8 in base ten, and is equal to `001000` in binary. + +![](./images/bitflags.png) + +> [!WARNING] +> +> Because of how BYOND represents numbers, a single number can only hold 24 +> flags. In other words, once the amount of flags you wish to represent in a +> number reaches `(1 << 23)`, you have run out of available places to store +> flags in that variable. +> +> The technical explanation is: BYOND has a single numeric datatype stored as +> 32-bit IEEE 754 floating point. Performing bitwise operations on numbers in +> BYOND converts the number to its integer representation, using the 24 bits of +> the significand in the floating point representation, and then back to +> floating point afterwards. + +## Operating on Bitflags + +There will be several kinds of operations you'll want to perform on bitflags. +These operations are performed using _binary arithemetic operators_. + +> [!NOTE] +> +> This guide only describes the most common bitflag operations. For a deeper +> dive into binary arithmetic and more complex operators, see the +> [Advanced Bitflags](./adv_bitflags.md) reference. + +### Setting and Unsetting + +In order to set flags, use the OR bitwise operator, `|`: + +```dm +var/player_abilities = WALK | SING | READ +``` + +This "toggles" the slots for the provided flags and returns the result. In this +case, the value of `player_abilities` is now the number 41, because that is the +sum of the values represented by those three individual flags. + +In other words, the value of these two variables is the same: + +```dm +var/alice_abilities = 41 +var/brian_abilities = WALK | SING | READ +``` + +The OR bitwise operator can also be used in assignment. For example: + +```dm +var/player_abilities = WALK +player_abilities |= SING +player_abilities |= READ +``` + +This results in the same value as above. + +If you have a flag you wish to toggle "off", you will use a combination of +bitwise AND (`&`) and negation (`~`). For example, if we wanted to remove +`SING` from the bitflag above: + +```dm +player_abilities &= ~SING +``` + +This removes `SING` from the bitflag while keeping the other values set. + +### Checking + +In order to see if a bitflag has a specific flag toggled, use the bitwise AND +(`&`) operator in a conditional: + +```dm +if(player_abilities & READ) + world << "Player can read!" + +if(!(player_abilities & SING)) + world << "Player can't sing!" +``` + +## Important Notes + +### Use flags for unique settings + +Bitflags should be used when it makes sense that multiple flags can be set +simultaneously. For example, it would not make sense to make the following +bitflag: + +```dm +#define CAN_WALK (1 << 0) +#define CANNOT_WALK (1 << 1) +``` + +Because then both values can be toggled on in a single variable. Only use +bitflags when it makes sense to toggle any or all of the flags simultaneously. diff --git a/docs/references/glossary.md b/docs/references/glossary.md index ab9f8bf5971..d2921f08c03 100644 --- a/docs/references/glossary.md +++ b/docs/references/glossary.md @@ -64,6 +64,10 @@ An SS13 variable that saves the data of what is underneath if that that is removed. For example, under station floors there would be a space turf and under Lavaland turfs there would be lava. +## Bitflag +A single variable made of individual TRUE/FALSE values. See +[Bitflags](./bitflags.md) for an introduction on how to use bitflags. + ## Buff A buff is a change to a gameplay mechanic that makes it more powerful or more useful. Generally the opposite of a [nerf](#nerf). diff --git a/docs/references/images/bitflags.png b/docs/references/images/bitflags.png new file mode 100644 index 0000000000000000000000000000000000000000..2c35287a7518e6e1a67aef0c3e1e73802bb5c5c0 GIT binary patch literal 67839 zcmeFZby$>Z7e1+}&^3TaDd~^~Al)HtP(vyy zeIEAS?r;CTz4y7!pXZ$G`@_Qbou}5b*1hg^uZh&wRK~wXaqYr|3;3!k3c43AT!vh@ zaPc$l74VZcrBy$`9~a$qmE|s!_fcWMKdwGfF>=3ff#&`BuZu1No>CVs&|Oefkk$7w zU(3Y%MEdRU4J~~F>iK-YHBqOiC?{1`lcx?P3OaH+PdylP)fBpNbrW@S8AfNL)Zpv) ze$t0)w0SM(M5siao%yB|A1tOD@jI3og{OMK+SpW4`H zy-v4;O^6Ux)(rc%m0hq*5dF6`;m&7Vu;g3nC?@>x{rt5u87LplufPBI<_Bkx$UqmV zL`miTZDS%-7yoTdbkE(fB04h|i{$>{G=CqFx0C9>hx~IJ+%zxnrn=AT`VW)CI36@f8N*s9roX>>3=u-pD)q>ZuZ}N>i^vMKL?TjuexzU6JB({fg8D0z?+^l zL3OEvc@ojD5sWB}bRoA1>y*xmI8>j-wxVxwCFp5M8kE}MO%89rYl`C!LB6W()y`J=(e+P$OA7U68! zD%*a|$q%rT!_Kn0Sqi;tgR5h%Ehi9u+rGrXeC6oV*x`KhCOuRw0Q0vc7H-DQ943( z-r|r~&QrCOmTghGxCYvB6oP7+;_KDAE$W6)m)XXNh#v9H#^C^?M>K~ES_>1i{+ms^ zh7p}Tw!)Tt?$5&RzJF;@GT+5fk$AAZM9EgXPoVsOPzHLdT?93BEl_qWU-^db&Y-dx zkK^A_t&i60_A?wY zV-}@|ac&5hnE}b=Rw6Sj@Nq@xpz@YeKSmaVJ#og^{HX??I#cOO;$Ca4l)^5FkH592 z+C7dtCjL}u9et2K-sJBsdbCz${r1U4-6|W6!R6DsIhct{JqAJ|>pO1do$8)&;@st` z71iK%Vj8esGmdg!>az(`EV)}YKkeQx$RR_B7)+(yYjHg+&FjyrXU~DA@>Tl$u*A$X z)Ga#%)AdIUVg$Lu{sdv~a9cH@%|E|JFRCNERAaFxoa<(46YjOZnoPZCJhxg&w2(M& ztNO$^9`Y97NIwkIqJ@ABet{M@RzDJenXR@*K(i!_;=t~y)U@2AEcxbju#nOX>^3}+Ge`A%ukakQV4uUV z+@mSGl+2+%>g}eh-bK%nRe`G+ECe4!v!-GnD2+H72Sz!dI?>(7$AD--(hQd9I;i~sxlvSTRgxEp^zYB@Iu7r zuB9i~rBmF@f-U7r(Nh*Z*qqOXD`jNP7MIoQ@wnf}(D*IW7i;IrMH+K{*#+18=c#j- z+%_v8-9>7az%LW!X5ykt8Sc=h)cw~kejy#Ozk5g%_+`;c`gE(CXQ;-}(08S{s3+Qe zY1{syXISB%NkZ_z`68swj<+E^X8l=`8hs!2lZy(rUv08{JchZ_4tlKI2vkyd@mBwn z(hC#C34O;8l)Wb}(>?UdjB8j$6^e%~f=+6DF>Z|qFC@@`}JajlDl67vXY&cbApxxguh4uqujNX;81W4xo4>xmOr%^CDE_o z3bp6`mEe3KipWHcG{)6a31nJ_VIqK$mW!73zlJ9&Lx{@>!d}8MZ>qZXeIvM?XxdY2VJPpRxOjBZr9@!#fy(dQSc=n3%m=YF0ego1Y4><4-+6fMxN`6p;#YIt zPPIhbQ>KZ@eN}4QlZw={*cp~vAmvO31}qOdS{KI5wX{S!jHO7_KNLqSR-; z+l#3gVeFdE2&mc3>OCH$+W&mP&&@mWOc-`x$zPsvtZKA3` zGgIu`_lq8X|1iv*j#s56{5hEYa%|4qL|l`gA)+#ut=qh*d_#?9IoUOb z44=P*)81nEz9n=$n0>4zbbYFhtd~pFvK1F`_;flac!0D=6`b--=(p%m-*q`L*V!G>mf;uT?iH4R zqGF2D7lR7(nSkcIFZJ2p8e}A>V*yVjz-I+~JfGbF9U26T-bE3rL53&Dm@yxF$9&|& z1hQL$>9*Ck0m6}yx;hO^!lsQK2YZNKTflNCK&lXy|_Zk%nW+ zwIwj}Js|>9)!UYo?6Xr+V$lM#@x7xAySi*U!P9bVxwXAfzgk{E5sK{D{K-@@(>&6w zSEP9k2T)dD2vS_ThkWn;;7TN^RHKWsvpi=3Cr0)w0J*e|IU{b2Tn=YB7)J zI5a+Qo#yXL-|I4?yRNW9K2}j z?pq{Af{#ASROPng3r}k^6rTZN$v*k^3ZF|X#h^Q%Sy!1g!R+>lm96>T#1g7iTvW%`6FY;*Rxp`g573;@in?OII6}Yc?CV z<1&CfxXr_r)2I^ajY3Zb@Y~Y_9c`p6W}1D-?z%?h3)a6I0YJny+1Ui6zBlPu@pU;M z#vknK>}OzJb>|Q>Qi?Jmb2yTw4otf&TA-d4%&v};>fu5RbLyuDXpE{O(%EC4K$ z$Y~?>8^Y|OI z8pWOOMN=Q3M0>om-#4RD79J=)-!;6IfN!<{qES zb|sZ=&20`)kMA0x0O*GmZ5>Gv{siu?CmJhI^|ROVO4^qX;oDgBHy+9-{f11RO97hj zaP5s7C4i@@>uJrYr$4{NYoMk}jjEtGVA4kaZ({jAp#W3wDXKA(!!h z9nrvnGfR8X^DB!;-oz$)7}2@oq7ggq_cf9Q>H?v@l++Kr`puJsu^ib;RYo|WC5S0Qh;Gqs8I znim5E&p*J9`k#hl6#;}|2xWqb5H2ry=Y#ygzs}_s;YAk&toGm`ZBZH#;xUEBA=W<) z=OzPu#-$EL?aP*xxK~oS|B2rWz5@v34=AHXYkEku_Zmj@pQfY|4d_)aC)0U4Kme=# ziS7Q6F;NO&Fk)`az4K=r{_mer`d2pgJ$UJikzg*&rWtFp7kE2Ie(lHq zc_hD{iTPK$`YCvu{EA{1-M_NR&xygQtGyAK2nEb@@jo6X-LGfJ|8=&w;BCI^QHiqu zO1slBgX2zo^tciSghjne|HwW3dWP>`XG?em%=Y$8w$Ohiv}DwP#jt((YIOrELbdS9 zKOOUvKcD&c*oQZHYUFW?jU9*)=3F5OteZu^)Yzw6i&9K_K<>{siC{deVip>b*C)EdqXo z#n4KdrwKWy=~{^Vvn`xED-)~e64O?cb0a?~g5z%K^RY4$^;il)6j<3%t~?GoujSL_ zp+|M!KrBsJ>`kYPEZ%xN7r4*$c(U4l7-dvtGgPd{Le6IuvDUcV2hYlkm3HK;8VCGT zcuUezdQXXz7W<~Q@2c;3kY|&`tCfp$&6`c%W-FH?6y26J!;{6vjoR~Zq}ZwV);=2- zS_Ce1C#KkkYa*(=#i!~t!hGKII4VGdhz{l`XUoKQZ^8L-m|dHyG9H>lXPmw0h-*k} zcG=a1v-A@kJP7N6c`6w9-<+`SPgrUik)I!JQ1p`4o=*shUh~w)xFz!tlKcC0X8UKl zRt&pRO*V15X)|1smx#9*kBSkOw_5OLKJvC>gbVQ`9;cp6Z}~@8TQKQjwBerF(J{p= zl@AI!;uaLSvmkCSzR~!6@q-JW)*JTw>!S+0CHD@f;6>cT2Z8dPe(RoX?lG)h&(MhvF60{UFQEk5A^M$r@ zr$O=Sapvi1jkTWjKy+_i^5C~pHn*;Ky|t(N`;^Ve8^c=gQRyHyWrH%7K*}?98oz@4 z#;pUrO7)4Tp-tMV0>31&g04ZV3~Nk(hO?KW9tCTjXJ^o9)%q1Q1_Dp!s;fC0w@~!k zA$)zeZlr{T&+d7I^C&T`1`Wu^{kKhQcS+A3~!3=sukW>Ht8ATe{J(QoPx6~LK zwq#_;QexPDu%idp%v6B=q<fBYwYscyf!FB%CE~$FI*9Y7lwxGSk2bP} zwW|K)hK+jlKFNJkM(T6{`>(0CLlw;h>M3c~(|}>Dn+8Z)_qAnPgl3gO74YSf{cNYl z3b~it)S=}wjd%Ng?p*iX9Cy|&9CV4D5BoqZw^$JpGB#eLW=LLtHqa5PO2}KBxkVgt zH#{@pPO7$tnw;>DR4DX{eN`2-b>4z;ff=hT*yGweI!oP(nIl&Q=cUNRsXb!Zgh*8$ z(Ur!~6%SH-s-`1$Lt5+!Ld2w3gNMZ8ZFsIc$!V+Dh`ni0QwI($6U;KQ-*i{}+U_Uo zd_(_r-S1gwu2_|k4{Ugud9QXOy;Zu?>YTa8xVg_@%WZD%A380QmRKN}*7mu3waY6 zZK&EQZi3J#IUZh7+Y>7E@^-Y<2ihryYTd|kXgjabymju6x=9j+Eu$q!JD1G;Us{0Z zkZOgzrfiLm5gCsZF=#Y2R#XIbQt)0!XO5+A_y=-Q z3^OFO_5+1wg`N5t8{rXuB{PIH3k#0YcsT;&RKF2nLSLms`&s3~s9Fj4T>uJPuN1}dItn5L7!yusbd!;HZc z7xjL;K&Lg!Aq@#JM*5j#QSt5pgXVgHX?3f5RXN+I`6)=#Eo8^e-qn|yxtPS{JytFM zOxff@vcoq8qf-9WD1N@7Q}LsrHT_l;zr&C^l$(Z&kMXf<`uTRntawDXL-AyexhwJB z)9FOZCcBv=uIa#!))@JmkR9)ESnfVC9!ziZ2jWXv}P^G>(c3{=4towlU`zXXDyv5)yu2Q zm)F%_m&v}4mh!jC)4O0i{&H<3QL>&&VuEk|PAkeCBdW`{o1Vt;TcD&P1fYrznlUeb zf!F?0VkGPFX3!Z2mr1R_0rMXzdq`xW({N#|ZB{3ACHia69tpw=V;gVRqX3=k){hi9 z%o!Y-Z_%(?*yK>}&=S{bIb5?=;+;cfBlT~2iDDqTYb}P4i!Fx|!d)1KIs67;<>|=k zXyuB6uVbR5`#h;+B)n`4USF1K75wBL!u!v zY~BesemX^|mW^@o@fk5$-#oizo!{$qupFZ@ayXrA-mnm<|9Dwq96dc%!VPw)QfDE5 zv8Fm&kK?d%>~yJPD5-+94(ZW7ZkH19kvat_wb{aB8ShuEtmvnx`;uxT=x(zzj}fvM zDRJs^7J!_1bCs3kHy{?30D?Vhxa5xJ$Ggx&xZm!mVL_IZ{xc@X`T?{5X;RC_$?3(? zsy?@w#&$MH4ci#^%$}E^!$^lp9{@NXDoie)_)GJq#zv?f@wqtqzOfKLZbiuvxM}7R zC=v2vyyNs394yLuou?HF&4@Ql#9s$RxjcOs|H^{|k=oG)E$13}t&TR^!*|Re9xQo9 zXIU9Q3fG_{ru_7Yk$0vQWfn(#HFb+njHja(>EZG;zxaDr0N-n00?Jt?S}Ff5C1Fua z<0SX(bt3p(QFdZi(QR_{QNb-61SQAIA&w!w2&BY=7A3x=Z_0Ja)-?~>CT}P(ih2%b z<;4Lfrld|anNPp_Y(QQZ{aRVluTx>^nV3ep3*uSd!q+kEPJL+e@m6iDR{|G#|IgtF ztUtgPLxif0>}>#!=_5OXFX5!cIta9&qEsZuN{tW#{Z_A|I_XHpn_oi*s1PpcgKw@X zG+e;>N~S!09RP2Ueh+$6U@D$kvSs%~|cg5w5is!&u@^~KUE!L;8!U;2|)l;Now zPn@hf6w;laTETm*#=L>Enry8G&kIC{kjL3+44YC}tb<)T7#7IHC&;&4{Dg-?&8^}| z1=DxGt&QK4uHsqmdqcv@_15`n?WjRr=Br)rK2!L|P5-g6nR){SuhXL!WoOQvecmmw z$E$HOd($Aju{uI*A|BvPb_XZL^NRbPZH5=vi25E>lC~Y1=|rp6nZh@l(?69>5yR(# zTAcS?V&kfnS;egL)2()<6vat+F98{bZSX=6XBQDjSf|izg2~-=J{6JE$7dzvgGDcggiExawbYn?g&_) zeOg-0GqLxw+m!&bNrVtm+hd+``M%a&5*pRHtsD(?O27@OanpzG@xX;?R7UP6+4u8c zQcQ*%(j}LypTFbIb9bYMkQN0V)Se1c&SIxq?OA_vG5qANy0W>xRAN<%w#YB@W#Piu zb*gi`bo+5;litxz=gYFbQ1Yp9uUdIwFGw&MKOL3`J413g3LW>WXdZ0}h*jCSLnl+5 zO%fi@cPL=z?aqlk8Y7sYFz_8UU_P6g+?{lk&#*dRtyz23W_3|X!=-M<>zxa0U&sY) zEE2o%@=S@-pB6kZmn_;M2|LaOQ|`|a=|Ygzy;#yZ%YqL$gMWf5r*B^|5u;K>m+sLQ zLyOmus&&hX3rXcj50iH1A6m5;l)R}DmP3w+G%NL@8JI0uD!WL_*-hTmU1_yG4ZAhc zLSRb92~8f8wHnR>4sQL7>d~r4x-Lf>bH;Vimo*OP4^fOSKs9!`akVoAWjZ zF;XWttDG9`08F?(>stgWzzp3fEL-v~!H1|P!PcjuJyw%HF{`Ec)j6f!c39$bSzU73 zs&ZR!-e%L|Eymgn#!`CXK?M;;G(KB8z-xtT{2H8HF5D%+!s>JQ36ZiJNYS7}h zy?aEbj$U8#S@*~+J?V>em~KTi5lC7X-U>Rg=>+c1vzQwV`Dpco+$J7Xje0N;(OJ7q zO!^ySx8Sj6r)H?!h;HrY8no|s$Mo<8SYCtm8S#^ETU%_fHtyY)z z&r&^F6xegmNS`k~IN)Hsk?G3`z@u67$uW+6?D0si3+y29WUTj5+zVYY-eN{uvZz>! z$i^Q^_82>^k7Elno+}YOr;a4NjuX}HhHF-O9c=gjVeJ*n@4=X+E=z1I|YivGeTuS?!B! zO3=w?Q(8Ccd#`h}%&%6oaO)L9;osuK%UkW!g`5*;B>g&;2lE%^&Q84}GvAh(H3){! zw?>j!x18)v`ITMM>V^BBSCcUlb*>f@fLdpi6h&}l*D4DavR|9Y5wR|!6=}G>OM=*| zJuRD_vohcH)%C@h;^S=T+B)`ciBPq5QR1*bnGs*Xgh;+0R41-a!o<{8cWWXN7sS#`H9 z`8tZUHu@jC1bmxbYv;zzMANTRe!j=$t)^V(p5ggZ5n8{#QnqU}n7ZIq`pPpuGta!s zxgXyiKf+y)vd(=iWU%>N?3{;(68|$cNM=Z4?4x6)&^dWJH?VVX%F0iIw|U7M=zG<} z2@&K`s*dOywYDGMKB^a}C8^=hcfc7JR!S;v0ptY=#0D;JzFZlct8*AtJKW#o!J!R! zV}Bua7A(R$hXF7SAl z0+E#a;su3zrViwN?$fOgw0SW-LH1YGmnyg3X;>hD)uoF?h?qWz7Z^Exqev;%|2o-f zD&;YYiJWsv%HG0spIeiU@i_L(f=M^q+t^26@0cxL!roE^1gzHKNEz6^p3pnM?3{0w zMW{-@Iyv0s*NO3y05$lbYI{A#+c@|XOxB=S;)zc7?-N}@GSBp7zBh2Hb)7Tcp<2?( zmAi~yEpLb!nSKyXeVk_Sy+sQGsrlihW7jXA`V#4+o%?RgtS)mf#Y@GD+(DYhE>NeN z%YIk#1+sc6dBia@eKg}y*ioXpct4NdAjb-Cl90Hy{eT&|Chk*|>bhwqzANY3J=}JW zR#fuCc%P9ouP9Z2bf;9=bRHYt=`fc!z5;YH&hw=p^VIit_HGT35xPgIHwkr!g4`(C zHs!@#4~XTE(AT~QJ z(!TdcF9mOi#Kw($>moHwJM(mL`o`I6p3O{g z(rU#wLH+{nE5#OptX8IRa1WjLtFE^u3rU`yeq}u0>8=2~_l5i7`uH2J@!GDvZdH5b zXk_)^_k<7^^}=CNMBg&B2w9!>jkGQD`SqPnz=l6%t6)KMHH=*mO|dnJ^;mpfy_8bz z-O5ce)2FHkot(1cx~dGFw8NPYY3Dv(gTu|?&-;up({vvbvcZ;=jn6`sDt8)Zx%3Gx z;##Qz8)1_z?@t8bUoXV80^5=WLVoveB%aJP*tKs`@5AP#Tdlst>)bSsK*qdh9aQ?; zlTTtnxWqhnJr9@hG7>Aw(DsK^n7`FgZW4i1iU{8;*o&0cDCZK%Ya4n9qtJZ;vcIvp z=MwYzbTGX+M#A_*BE*l|%6@-i-xWcz!AK$0EXPa{dTaTuLa9+iX9WK3-v20seicp5 z_0tCskR9*iw&ue?9j6^`{@=w386qN3c^te?W@ku*xGZ*u$nlmXpXDVb_rHti0bwok z7mFf~e~cpgHPo+<)m8vEP*LF1@n zI$n;Zd)0REd_5GPlDmT|i+EsVv>t%n14LkUTm;UqKUjN48KS9RiefQHt5i z*#9Z>$cSLS)GuZrGxLB0iu;NxIf1TPu*@VdRr~yJ@1KKkA&+G=-$n{^(U7 zYT)55M0wvS3J)>XFfrrtl)`=b3y`Fc>R@-e0Z{NJ;jM5VU}J4+MKLoaWtne-D%d4r5X%-p zL<7Mn>A{C*skG)^6V`6~Gv4Z>FAd&d|2Z}Qo^P?6k2b{73&|$)kt|tv#yv1YiZni- zgWrz3Ghov_&v>FnPa0F7G4{s@g1Q><(r3pcJ%lRhPt;U1!^a+wC2I28lO>EDD5w|4 zHrsJCSytLT^D|L4sc~RNuxJTM-xhUaa;=SiL@;3eYteLskc(!K?xO~VsSGByPHYH> z#S31ZI1?Sj9+s!n2AFOhn-uq(&se@2 z=q0sLq3Zpe+`&*6a60F`KA9Veh2>y(Vl=t+c( z%ipKGSah=zdtp$SmP>dppbEViC%Sl>kvWj7+dG|Oh`J(cZEz_ls*7!*#D;ij~9w8Yd zG{gUtzY?mXKH1eZ^QyH2Npc-Pd3 z&YyAXV_Ein@M689w3)h(v6P0`l7-QKiCYJdfm&yiDiiN2n_j4kJJ@DAek|F7=VNl! zRyL*R$xIn-S@f=JHtom~1j%=j zc?EU8P+ex=Ka%b}?Xv(*H^XnGIIrQ+Dy3uZj}L#v62YcK15``(mdf53*g0_t zX?{Q+js??=u;Q!9EOZ__MDYO8}W-b$M|1;{Vd=!`~~fGxsJ3BMDAi7tk~j#p%$?XJ+e zJ-f}O{bV3u?Mz@+p9gn7{;?K@;x8YXOY8&g`@&Na&FAa}FFODkhF6nXjfVxN|I8c~ zksQ-Q*q)cG369B%^O+z|CTMB9?7zoRll++0b3|tgTnXzIIfuXMC7$2}QwTbA3>Byw z_4Qs4mQlf;&VxiIU%$%ThRyK#CYaup_wB0OAVTnF-m3RFN;YvJGV415=Jv5V#RKm@ z$c^qAHjw&QC7)MNXY$k=Kuiek!4)YW985_4F~72dd++>=cYZ!L0Ne^+A%8AdC7 zl`nANiqcFXe{LMu!{6|L#V*4EbM>VZCO!AD_l#%y(CwGPUow&+E8u zBr9~2*Xa3&1mApz(U;88WIV~jvp(_;fa>xMPW%h3xDYIGwGnh?>K18I7Xuj>sOgH^ zC%?BQeDWmo$@%74na?AhH2W~zX3u6MJgFx_4ARPv)7+z+3jkGWUBFx*_Yz$GqWe(@ zehY#l3kXg(C_gJacxCqxg=;r5e|)gbIBG+2UIKgz8vDqH4_*yxig$v5JP!o%h)V13 z_P_1i4q883Yxn%O|Af*fKnd6GLE{7nyh7V~ib%|bVXi+tA0aQ6M7EOCTRZOGje`yc zoRH{~jCgjR@7*|_D}QOf{Lb)po6Y^t2+0C4ICKg728@^b(`}E{af_g&a~Y~r&(4^M zYiATG$9&WNECNW=UDjuUacItC<{Nz=F=gr;@6B)+c_C{Yayv%atb^-fY}&ZLx^S8g z*qvUtwSJdNsOivjc6U_{;JEl-R0kInmhR-$o%c`M!Crz5b{M6bAHHgF~3!ZrjTe;KlxN z!RC{I303^8GW2~d@e@O~0hGT6G_apvWbW+ZO@js&W@W0!3OU=NY*bi4%$#g!5on+k zOTm2JM3N0VWLpT?#q$B(BMU%IF3{k|0M%8x-F11|J@#Z~R1s>8udW*FhFv2?fynFz zB4DITM2_f*h?|y-#d~~mKEN~5Q2lhxI?XHv%H$2o^bZu#3kL$>D#h1+ze9w+z^iuL z$o0pG`tok`TfB5~xmiP3hNwGMJcA|QotN60BRms;L_+}ol&VtpDh{luldEo;VRv<0 zS^L>#K^f6$_ltB32Z=y6ha|gjaPL=1C~+>bJ^*aHE(PHK)!y)l9h6iw^F7=Fl1D3j&B|z3&;YW%;0i?SUB=Wm zIp0ef{;ZN|8w0oG+_mR6W53!rO~EVq?lhQpIf0{;W0QWD%Ojijm0Gzsh9zVVW3AMFP%)DvICro1A zf;4mQ6@++O)!s1M69TFd(Zl8ZDl-F}Xy-ZQ?HB%|qeO4A;~=L7w;%~d{enIg>~%us){% zY1|xuo_OaC6i&ev;{{>${-xX>#?H=Z&F;;XGj0l1RQFp8*ug>~(-J^pcFCRycfRk0 ziDGbn?m#bev)ehL3`+Zj)d42fBgI8o?4W%3960<`NQFsV-?aN7mdfUwesX9Da-^Wd zZ_^E%F{jb?GkDXyHvJ*0uqWB8 zI>DDv3#W36C)WSg?eq327KqpQ9x_p-HAw?J*Eu-u|$cI}#^$MS$oy0_g# znxU3^liN=cZE}96Pj?urLZ}Wa&-+oH1H&}(`t$&&U)>}0<+*QfL=M_@(7748o2)EZ zqumxl1j5{%um$$ZUG92(r1r+PEKAt{D(6bzxljizkw~kwUr|mw=6s3NyDy?U^;49J z*M??NfnbGUeX?fTbSoCw)AuwR=q})~FpFneVi+byi5+z>_H>@*l#L*e+PVR%`cSEG zS$6|S5V{|Ol5%EWd$s-sdii?kwWH?1qqGb!uqFPZu?{cqmaTX@M9!7S3{EGVW2Vi( z!1KODkTh9?0H|IZXDM-TuG329GKu0|(DbsyMsGZU4Jwi`2l{^Fly6%Coq7*ji!65P zPiM~agp9zwi8hg&_WPol(+z2RIiP0|U>q_MYm6ryWSHg__pb;^_Z}>fh^Em>BmU)Y zjsq5~H!%wOLk@t^EPxWC5_IvAdCA*>j&z_bgp}=`_o~6;DIO$k5P4ML&fqFA8YL*+ zE|_}u#_XdcSrgG{K?9d@_4gzb5bYa$A0S*5GMWjIB9HT4=&SAxU3^FCM1UD`JTa{Y z_yb{1*luHf-rUsLUD|zupjKJ9|IjwG26VkKlAWL`Jeyqz3PR4#dqF@G=HM}prJHzY zc)@gWuVmkEs_~1st*Pg5DxXr3w^%*jgY6YJ*LHMc)iaG0^bF7onpmeS`T{THrP~6a zkK4P;WI(0`TQz!&q#VYc5Rl7<2nMAumd}5O0B6)Rk!!KI%deFmj-YXJ1sUfF7Y_Dt+jQ`| zWL9ed`T+I5g9f*Fnz{tM=@0-~CHn4G8vN4giU*rHmHJm~ocIF)GYAk3*7@C{SR`{UV|u|#F6mcY?K&sb*w&zoy`|r;g~vj(j1ReKAvTshpfy& z75Z3Cb#HPV?{up6A4kfPTCVCmQ{!ldrVWD z6K4rQLVPu7xLhpwoaMjKIe;eo?qB}OB9B2=c+GL9zGkg@Sd&>z9?Aegzx%brkH9x^ z#9(?N&OPGP;Xp-$YXddRg6`8XWcq4FrJQin0bo^3@n!-3nny2XAtq}a!%bdCfUMQf zL(1oBnx3X;+x*9FrXuU*SneFG&?wanG!}&b5o4`~QO$VnH$j`8+r|3Dx-al=B+%-# zP5mK4%^jl-f8TttNXh67{JC}i1~gM_)X9rv?@J0oU%JS)2T2d0^tFbSdx=Z?rVl)I zQ(PRI9T%2w{fI&;K-<4Q%ON3*xEc%&^G9RChu0&G3x{>QrKI$tPGSZN5x~}!bKK1| zKpj=-;!MDH?+_^XqeOd-n`MB4Ju|Xj`mAxeQl~;bC1d58uo&zCEo?B&xM<^+Ip}|U zRT8J@3$sk{FaQ3`h&IoEXZZm`a1(*qwbH@&6C%fXf}Wuqv5j~pQ8xKJXl_04E-BFa zBH{i6sA(~I>P?_s=9b@Zh=L<%lbM*eU1ZgGyNQ;o7$}&kpBORsUtfqM1Qpu(Qve0F z)IXnNeb5%1z6qfafOC=>z)UDwCU?no^wh)^7)%ad55=-RSDk<48&W zy%_S{NA-v`v>X_8b-aH%rLSPBZ;}WBhP1KrQ1=C>KDKq-Ljov~6F~mLRiBx=0B8LE z<0EZ4T}mpyZCdT>c^kC%2fMS`$3vq6asW1eBScf-v#L*c(8~e$NQ$OR)8Rw z2Sy8LjF;de#68ziIc`-F%HK%r0)1W#fcYYwx!1KW0%Xw(AbB7-_BDHh`rw*6*DgE}<1sq>hc0?^ zf_LUv>FjmuO96(8rE4da1?qKLpy^#^`gp^l>|oT;g4B$dW{J_Ezi5I6PeXYa?QUCD zsjyuH4!o~Wt;u$G^YKd#>C*l*C$*G{=EE+94bWFu*4l0i^uv7cx${mp4xuCd{6*Sv zAtk@zGU2(K=sjcjj2FpZ@0XW`WD`IDYsf<_15XoF+-T4O42fd%PdSC*SEXhgd;xDd zI$2Vz1iZ^TxaypaCeTY!%iFtqQw>`0w4_J1o#C`F!omI+*-(Y9r0wkTL%yJukyc-q z_1nVSKinnz#I;b~u5fCv?>u#H`|s6z6q^Fvv;_b@@<{D$cC^%p-~MekNaUc8+N%1c z9Q~AO)}2F3DeW94=>iu`fGT`qS;KI^%y%K_JQX%9ulFtH8?`eCGj>$yPk? z{+1Na?8VuhhWBY|0K5E>)~kC?ajStkqhiYC2I{m;gMtTbQKVHvF?2dzZFF~sf=l2t zhli@P3mQemVmcTw-#du*U$U*%b#DobVUU)oR@x#BM1>!^>zHE@Fm{b zXW1#{t)94AJjk<{rVZQ~Ow1ps;(~y7Py3;;W!vQK?<9!VpsLm_tG;z|ToqByWZZaf zJ||Q`DVDg{)TmX=d${mvtHdHQ;pdKDQpi{?dWY6mp;dm%g^LHui+0KE@Enf}IDQ?m z7)2uloo^)>&X@>uPgN7htYW{tyZP!=y*B3F<;h0h?H=z85OiD}mBHk0o^#Kgp5+PS zzRTWTv2vsRmDCbXYZuc-Brgc~`2oDkpACSJx9Jz?ZQ}%Ckn%O=_Pey{_ zi?N*}^@_EEqXn++wo2a?iO2}m&4ag+DGmP2rD?}fb8hr0$9X6s#72Imt4r7&@AvgL z+|1%K&DhoJGS?NLkO+nK1A(dS-Y)49o#C&jR9+M%*$R{F@8NBlIec~j}(%-JbPftif_}+)BDK&+Qd9B&q)yAilGW8n9 zHH?>c*LFw?o~2-8w`AZjEHh>XY#9WoHGo#jmT8l}U*chFo|<`YY}q^Z`e2J}sX!}$ zFO{%_ojwg9K*F2etLu`41g*uq0VhMb3O*D=JHN{+6xXX?Nd7cRP{^M>W5BkiQl8a8j)576nG9cqWJD*=OWrHiXlIBB&n z2^k;;)h|b;fZbgBGLk~&_cV#`!NxS&2D6)Ln`NKuHYF@xt^S$Lw<_g#XvQaMYv4fx zu0-%*tLhIxg2rGzDXqWLIwQ2>vkcr$=o)ff`hF1jSQ+|E_zMx@%j+Ix)oJ&GoGhbE zShg$pev6+r+d$YOgt4h}YT6X&Qeu?VHL72CBDEyu#R%yM_J%IP^}iIsmHq5!YQZU{ zpll#^A6`he)cq=c*&qxx2=Od_Ps9sFmPbofnVs70%*d=B<+Wo7!e+w7(hkYSw$5_ z>RzN$(`>K^BE<~KJKwcD@LC;+h!4w^D)7-+_tRX{+nE>-a`&YB^6Po zL4jXe4)-)n_Xm|3I=7(DxF9w76g9=_y;@>ygJZYX(wr2T#sQ83(8<0*Iefi8yxS4-2_vjo(rY<@_idgG4TyAmT!UZ6yM>HB)4xA?Bi3pt!hFW}6IW92GknT(4u$V* znqX!c>RtrtZb@Cyc_%7lZO4V;MM_1e)>!` zU$ze8JDB^aqKx?AS(2VOB~MXn(?(XuK5znRVt67@p-;VN@8T&&v(g4=gQg`#n_gnk z9c{pkE3g}|OPW3adJpAnDTeJu<~-2gBKZ1;#`UII{;I~Sq6QXUnWu2O9b#%C z*^2Ar$g?`gLXa`Xg!SGz_h^rgo8N$HX!>{X9R>H4&;V#p$7azwwpwkpGmNGYB8rKl z=MI3cY_GnTt+mcCM#5{)r7^lJYlbyjW+FV;d&N@}wb(vv=4PPsCUCG06{4i#pzsM4 z((F)2poLdMQ$`Ve33l zOW_+tr7cxvI14)*)tHNZug(}qjx%mBH5rVhSQqj0klVn-P1|Orc5vBe+Fpg?y^>t1 zREm9y%n;>&>|7~SL9|F*0z{NG z1D7ZH8_yR&{$H#<>*-q(NVZcg{kT0wbuG(TQSRlvk${BIE6nq#4WUwaB0D5I@Gi=E z>gkJW0)JR19?wn8CsqFe*l@r~Hbg31W+B9L!c;FmW<7p(Vdea1LI$!f|*3XgoRusUK zu}AG>NwfUdYYZbH_DqEv)hFOvIJ7(tN(?pYp$b}JM2O)ct+{#=^yvLn^TUmXO|_cQ zNkLO@y|JJ^(}Y{@v2Q(;ObU04AM{iE_De>pe6;R97rJ(+ND8>lQ+qSH>4>$>IaV-l zsZTPa0_$8WfSCbtV7RB|3oDI;27WFj-$qu%frFqp5W{q*@CftVEM=Zbdw5qGFHT~s zLwEZV8`Caq6j!w=9I-Bzh0z9I($UuLH#WXSghsLtuUsmuJ3=- zCM+bpS#lHhgOw5?(3H{oj&jgKHBQ(PBZLUiXH-V4lcK-6<(PEC?_P*@icv$PpfoRr z+49(}#i-wdedC%cw0^-%0|GfwNNkf8mcI&QPu^3_XQ!<$V^gj?eD|M3M5!euQb-p2 zN?HV&SuJbB^|WS$NJ}HsXMD}_xg5uC0uHlPNx-k!FssukLe)7*$ydmkBK^kwmIFdm zKAIR|+z+ag4;f&BTBYgFt0x_Mze%6|lrKjwQdH^Ot(<-(dq_S{1!4idmw>KrN~+_= zB*;mKdC9SvmfrkUtg)nnL?V0kMwFm7>5l}u_7T>N*Ku8`PVSvApV~_`qVrXxQiVh- zljV?M?X?5u8zM4RBdl=Aedw`f!J?j) z?^5b@d8h-o>I`qdp~sA$n2u|V*ZkOq6`w_!Xrel=sK>H4$*#}I?l{Yg=l@05TSry7 zwf(|^0SM9vNY|o4N*V;IMM^g)jg)kQAl=;|Dcv0+-5}i{ozk7(Tzl{5efImEbN+G+ z7(>>Y_nh~UaC1o7oPQdaD~6E>M7t`P6ME5>zq z9XRh=+H-wIjwZ;U(Cm_l0VMdn0)v(<+JJJ2GWMZ`OchI2U95(SvfJ2BzmCL`3mM-m zRMpR-gy=f2u=Jb!9+0Lb1~jjdX|ZT8q?k%{7)LX{_Dq+Pr}6|=nI}$bYvvei4w0{R z2k+Hr_U83)F3s2U%2agKuP34?N`G2d?V@s6om>rJ!yHMcqowc=flAZu3?_5-gW!aL zD9grgfbIl~`R&A%eCAj2i+ayReaJhNq5 zsg>4A2KsFJ`#t5b1WG+t*GhVM8$3M)+pH##4#NsyoJz%Pi1E~uq0Kbc5&$ognR?(@ zd|k4Pp^i0BPl#}0{mS|3^01}pxF91>qG!L^4U9Y# zre9AOr`xg;=b~8Gb9wD|Fy$5)9f4Fr%yP@J8IWqZ0KC)L8P8YzR4eO>)}FvyPxZ28 z79Ff$t!o8{Ab|*`*rO0~y$41AW`j`ZU48fN$)eQ>L1>3U{qGC)1A7D`au;B#C?2%3 zIlukhsP4E&Q{h%GQE3EoXFf@1imW-7+c^Ni5F!sh!tls4`+uC39ZT&zlg$uepqye@+5GS zHc=kVhAK1nDV06_V>Un3?~^PET?okpfoTx(Hs?H(y0b}5nT}SFef2wtX{;Wr_NYhP z6SSW@o!4$VDYnSCOzh0Qd)(N?n{{1}D_Ma_-{1L0$&p&o5_?%0vEe;TgC-+f7K3dHmimeItB4 zeX1~i8u7apcVsAmsLL6qdfj`2iv=mBqsepgSxTEZ3v%XWO5lFgt2H-6s=F632RS!V zdS8hLIrIJdY_u1f7aS6Q_1;uZx=jP}Jv5@!D82V!;;Fc-)yG>Z$~m6G4Q%NeG-KCS}d0xxpXKT8y6zV(aYgq<=lEc%Ff5<#$q zSyv+J5aO1rr|^Ji>TS$PYg(;9;SEqV@&?|VIj;m1E50$tKvyPhn|$5PZl1)1apt0i z#5R!A6{RwtDT+M8Ijy5B$%bK`f59c7YS8xQPwmnhU19dj`Q7*2`SN8l{0@qP2Kybx z*vE5N9R}W>peW!mPWKoR0K6nj55c`x);>@QIAV+J-}uHU%lQ1+jSjoU%|AXgZ09D6 zP%tUW!ib=?lrf?oO8_2M&{OEI&CX;>-2<^+FomGlfIG;S%1pN0LR|)3b7bpRgnp1} zxaQK1-H=cvm`q2qAR=NI)3*pjh!U`Fdnkn)Cai;nYq37OFGCh#EVfw}QCcJO4**X4 zo(a|9+gn><_StxYxf7`dQISvT=K+$&Y0$=md1vEDI^`y+Ov|RMM)%zef+G{9@5Cww z-$j@I)QUFPL93Jv3!YCFD6<*IbYt4Z2JFA$2WzP5C4_tFJ{$0iC!b>El)q-i5<^hQee8!XCg6jYkoqME~Rl5~W1gSHgx z!&ZQ@H)Q(~clT@hQam%L$FKx|mCUiYIrh4%#cJtCiB&adazl+9z#BYAis@|kRt>hB6pn!R4Jfkrh}o{n@O3{d|` z!xO)34rdJ0EtN7G%?iI&F`rEOZ7Eop)fZGJ*D9*b65Q?-l27TTU-tUqLdY445ycu4 zP9K}&M)ZPsxogG#rtMsjl7Rpc6;crZTCM@$Ha;tir>|1nV~KtbH2twCLEu)V`CM|^dTjrzo27A$GXfH<$F9GsA+T7T)TS^VwZtmx1cAN*3#Zszw>+yj(zv)%u zhS(Bcu;eo)2n!Sk-ENp(uKbl`*8ngJ(@yJ@Hs_=> z?$IS5`iXMdifFYh8_ah=V9F95Nz@tBjIrf^79CV-37}FlJvCxr^n2@um?tr|P++fK zDao$wSJa=uaX~3=2`F;>g%nBO?A&BT%#76JIC-fISoCS1gwK4~KXpHNS7sWLL%zBR zRcaK-Kh=T${{J6Ce;gKW%lSIY#*SIdq>>L(&9z4j6H$WNg*C99f1`YfBc!mL1t7&3g}va!!Y=q)jY` zV0(gknKe|w0|bFZy^&Ca+yVgmjg>V-C-Og9fQp4MyQi8?*qQ1Ikoi+v1Yt9w<)#6TAPj)!OdyudxwO~;0a<)^l zv}-el`H5BuAi=^!i70c*MQ9!#y7Q5g__7Rh>xltSMzQFq-BAUHbyO?qV|mOAt^K^4 za#=_``^N@L^7ZO%uL)#_^`RjrBXS5wycPi34S`%EEmU81e=kHcA%`3^S09I{`~K0V zbijg>WV1|nk@cefQ>p}EE*QY#5=(3puwr*}IUCq=G^?`D!@=*vD?G0}DnjDn?oqy` zEqBi{?+m8t_ZAP4UU{%$m=gJc`C^m@6@Hj3js|Y!?4%qE?SWDY1P=h{) zb;>sE`X5G89;O}YlgOEth5e$FHu`uw5t!9~&8jP4k+qzTN^MA8V2BfbbQs*7F3-Ap z=tb=S{>GQrPd(Zmv)~ik2u=d`jbLRD)bV$Gq1 zNNM)#I!4_e^OT`5`TCYtnL}&SaUVTQwGNFJ^<{C)6mKrm2mxH<%gK;zj=%MyzC(AE2|b?NUMVDEb=EE3Jv;_o2V)g?y91 zUmd=P^?aK-8|Y;4H{3EA{+7bLO#x#1RraKsAEe+3fDH&%6Dv&Y>aXvz$aP%~oTlA8 zdr|1oAF)DpoMC_U)QAyw-jKG$Qh@S5)CvK)$QULwQ=eImO)LDFBxQRH%ko0ls?Wm& zMB~6Y-@E_mGXc=mH4+Z=CVZ10<9$FMV{+ODql2?J%|OoSis;+1nE~($Tq~Qxrm0B&c``J9AYzd^2SydKuDol-gth6A>8Ll=icO4d2MKW&to*LGi{W0}R7jiP4FD;+OJoBP_ zB5;4HUk?NbGHDk4AoI;XVPH9={QDBmc6PJ@P`i%;!8`x`9A1DH;0P55t4Z=drHB5-W1&LYg8P0$H*`oB$whSDG z+)!BRRkFWTwBU3P~!Bf#LNKew|&7l%Vu-=&I{915O%SeOETy= zRj46%KXIvBp*gcK;E8tgA;HeQcz2SOS>RMJasIOnnLgTl4G5I!TaVXevT8c=t1rDi z|3lAVHVI21bc)Ncy@3gZ0P{bY!UoG#1!<%3Q}`EHitAYfX*(RRig|!iE+6zQF#Cti zvM(+<^{Rk6{5cv6KDyGlENo|0@*9JF4IvCYzB9nrV{NiN)elWT3Adl7B7?L;UNs-1 zM+dUdPi`uf;@<#?G~SFg@BKl)5D?#?{BlP<5}loBV{>wdLyF!C1zL+*LPp&_S1s+A7;;c zn?m#3yYQu)nczW#t{{9p+@N#Y?r{f|huoRRcEVWbQ(5dEdH!5qlM@7mIV}?%)(8%qAX>XhnmFX7-UWSZLK% z2#C{Nh4<{T)^qy{FsSLg{=Iq8N%VgL1{4rm&X@U4?4-jq1>T+t5uU4-2n}B>y53ow<@jyA;2e_e6nULm8ipQK>&!`I` zn)F(6G;`L{cn@gT9cZXqEbo;k&9(Gh>hu$d)&rl(N%X(d?3-Ph>`Sa1ilH)#>nY~2 ziuIsApQ9rXykFM8GCW~s{n6@#1vL$~smi4HyuUN9H@`PLK2NHZnK^e+qT4UGCD&8# zT=jW|wdTVw_xiyi_U!vDZET-PROuTxDme}}$t03dH#38c>!qpw65c&JdJi28WR`qP znS%_FfSc6h*Y1xN52RZn0S!b+UlqnsPWKn)ZZ#D(>_XGTWSy*gVupR-_YXlgu|b2t1M z1(&P2N#v9!&2LtK5jd$}PER)y6ryCBCslpGdnJHHWZEmzy!eA*Zpd_}B7gL@b7Moi zHy0i^mwCyQ=bfgR+`ixOgKJX z2jqoFzX9^SZS2ZpQex{43|4^1jnMptg^z+ba}{(w1<^vuW+KOVmS4r0%-pAl^oGI- zZvSYo0MVE3ynzpsv_3uyj9!s~^|9rQfAz8Zus)U#TnKUUOrT$N%-ZaJ#gf=qE>R8X zFevC)aTNHA%_~GeB{VsfC^!U4+azw$ld@{dg;^1&?ahXh_uS<`B}~Dn>$Lndy093; z#u{yJ&)3^VZzNPXP)+8nxRel|?M$$dE7=}gi86vxBYN-(yjds4cO9nFna`SlLjjLF zTMz0h4Oox?n|Yu=?m77?yqm^u8WjmmQU&gRv>3quD#CQP6km!Dpot!%Mc4MRMKK zQXt4J+B8$dw#B{FrciO$MW}JIB2F|=mh^k9Wr=5B?@!32^=6QuaA2Nov@Dp<=JXG& zmc`5kNlfw;!!kvIwd^VgI(X&+2*5rve?q;X>U)n(TiV*i6T0J50j}Mm%8*}D4qNUe z$+vt!g8~W93YvV4iWB|usGPk0jO~5AEvU#lKe9)%l1qb!vD_*(Y1cvdzX||YIrV?L zMx{g40TwW8T;%RJOUgDwEAo;-jTB5LU@SihiOWisNC8x}(dNfmB7eY)lLG5m{MDv| z-Je<>C6oomzO`Z6UlhDL%)RVJE19IISF-|*xf#PM>pO*!XvObl`=dHax2 zD<5;*tLi(uPwY~?DLx{YD%7c$6k{Z+R#x$-+kaID@B6_d^P z{RTH-jsbKzTxthu&qE5)4CQgL$JUn~+*e#~|AyS^m8&YYqUx5`aYqPWgA0 zX&eE*vTw#X{f|1K=T;l}A8phNt#f=$4mEjppgvDB%KO zediyoyOh1j;$-7mI|?NF7Ogke_n^NF9zwfo+jm$K{$!k`D^G{Tl89HV=Ppn^JR#kY zUCpkXgq$H@>A4^|b-F(giq}ZWF;}YYc1e|>U zG|iDq7syR1iwoNs-IdzVCXc@7?XAk_g_Btu86%D@XjGE9J{q^O7R1WPyCTu$xuB|y z(TLaIt=Pek5)atOPw_antKYnH9dI5Zs`}&modRO-Z>23zVq^C?we|RyKN@sBmA;?i zy8t=vQ2j3vr!F!*R-DLvjt^Jp(U!srx_n!14s$Z|w3HmeYFS_Bs?Flh_{tIw)j^## zUaGrf?voXnKfSR!h42vGOb^$XKf6?#NJ*w|kj5tE zD`lju7^M!S#FtWFjbVzE^ec&BF_6GM;xs^9&}7xN6wMEoFp?)CRegM)>T2&g_$ailiwbshcEN6nI>i~tU zQ1{qRvjT8AkE`;Q{R`E>gahwu8d&s3U1QkI`Du4#sn_cx-^6~Sx@RS54?kx0zj)pw z`9GDfGjP!4RoRVSm3g8kC_nt&=tN!j&C%#jUJA}(&H*hc?^d-cGrHCCa#Sc(TS69v zm=6!A-6Tb&M@I|5!=jrcX3PU{cXZ|g(2zYx<2(FfQ~CxnAIQN1B{u@;6)^ZMs>x3O zdnZM7f|KUgZK(uc52BNjYVg_>uJ9LuXfJLre(KOF#W2v8bwIFS`G_GCmK89&CbkB`U=e8Sag5$si}PP z#jXCP;IF(76rxJ3`C*PoaS05LX53Y}OFHT`ChS3jZ@EYFFS+<3EuvZv= zIU9;eM5Sy}iGXaHzcX7`bM^r* zV@!YfNKTBEhI`MAP3Sl!P4UxuIS}E_+i83w z^5?!1%_P3{p$y#jnM8Q2+kA{Ly7z$ymDbtB_y*;xV0>!(ptDTllBjiO`_{s79I zt8sI`NRe!*>XA_`EFZhdH&{nsD{JO>?mfJM2VA|jonj&VZ) zDGpE!eH@+P6P-YrU>8b!lFmZMv{o({mh_mp$FU5sSqUihN$fzxPiGA=UYNP^Yo z*0Y;F>Uhj3U2nWZ{_@b1q(FL!S=DpKF6+5p0_6yI;eJte$O=#WP@>>4`2M~&G##3x zEev~`ziwJZ%#EPOktjFvlP_gcpK=lAFG~m}3qghD!(Qh6VQo9mN8Mx-}F^z!L{h}`^ zxa7EqVW|$XXOM=X^htweEHw<_y>6%F=c~6j4)5IQ%@o5TRTR-c0PVCttc%GD0Y;8} z4vR*E-l#s|uZf>>L{QeZ6p-xhxZoAE0Zq*%o!TU*?-`IcVgz6vwTF|2D*m*3UuY<>b~#>uQp z^Jt0fL0P>{-O94LKH+xIKv~?lCl{HM5f3VTzdPM>C>g5yI{O%X?Bi1@Y1aCo8Np#X z`r(jm)`Ge?O7YHEUaEl%bSssUUzaI&(tr@b*XBDLSM;bH+O6a)rZAj23@w#d3bpHU;^mJvPMpQoWZXG~+|~YpH@ARc{WJ$=$b5 z>`^S8btkp#IPw>MxnUgJ-B9$dG1Dr&#ynX~Ok{MA)HEOCwKaczS9eAP(fOcNNvoK9 zNl4B}43SGCRN*WtR4t_|q}NqKf(hyAtyT%(Lg?ij%P%@e@ijrPLECKAaCX z5J>~(j1`IdrR4|3z|ULv{1yl7u}8_1aTY-}EJUg_9oddwXQLGLq#+bo&yS3_F<#(+ zUd$W3oAiMwgU;u1rSi%A`)r9wrNKj#9s|`|3qjir6ui}B%cZ82H;}K-vmZX}`gw;> zc)ToP)P*lsaa9xhbY+x8eWFA z2>?gdH$Ba3a^vZ6N2A`)r;HZaV&LwwGxk+Rd@MOupiKX(0+zn;5o5p27nv@@TTmf1 z@L5~zIy-|fZy8466RunI40?gb3;y&-gP>0w?|!k`e?>Rn0@cZtiXZaIs~4vP+p|G> z{3JiESEVI!kxc+d=b2S48|fK!z}v7QYK};s^o&WT8L>gI@|QNRcrIbS&OzCauR&P7 znMh(k#y%Uq+vBN5Ztg$p5=RgePQA5%OW&pJubMHDq~g>xu&Q=6_S{gp{`!8Rj`N^7 zHxr3vTT?${Ky~30>?GR;+B+xqELk+z5grR3`=nR!PUKo(lF z)@O;H3-H`KWUrbd6d>f25Ipfo2zjxOalj#u=AnWh01ySiGdqa5Zu!{sDkvC3f$`jH zO*GHt37uncElC562o79zw`NUFBb>7-+k?es7636vpyfI+!-H6; z(rehDBs;jktVL8pu5S|Jp027~%r;>pf+ei(Y#!OAn7y9~th1By0_Zxj5jI5l(_Q3P z@8-C{m<=2f*?1QHt`A_^L@v@NweG&Q9=fX+%x?$uq-V9CWT5kpd|sa{AI=h${)Bnd zcSdg_U-vYQUBes2l#R00`7!4&OKn~p>L^jH=uPJI?j_X+?RrzTeM&Z0v?4Baih?kS zAi=8-BM9a9n`f7Q`mFk%HqBa0NKa6Lyu29#)D?Q{mBIan;}TrCCx$eaTZbZ5w+39K zw1J^t(4(0qJpaBl?tOAOltF$4i|e_0ODZSGy`XAa_IE5>2cAg)neyLyOjlZzKYIRh z`R7tJ2QHUU#*dFUZ0~CyMx~f(rMf>XxZo+J&S*kyt}A6X{P)F4+ZJ(APEW3f$2;x{ zXyQzSLb-N{uZxG+?PzD7nns8Tb#q0ha@sx9&ayQgDz30p?NJxvAB&4owkj;pla;-j zQ{q#(W?5gp&VKY*NS|=>b6@lC6W=eF}AK-x67{^baVj0cNs;TP z^AtrioGbIo$wZGP#>0X=i9i!tc8ghdV39zll8kvDE|6t7|#Ybsnn?E|Uck z^lrZn9~(#~%irAuGRpm4Xg(-t`7RUvQi_04+1}%76<1W6_{V3pW=&dEsv@%*RBpC) zC40}7V_xE!OT?P=*^+x1$798K+5DEVR6bQBxvn#F{ECk{&CYo?nmA`xyhjv&#*zB{ z@N&dLy0BWiT2bSikT=mopHM}wg7o51k z{^vPmL@R%WW7Dm*z9Kod)wjOqxOKO839LOar92$RuXk24=NN%;VLk!2<$nM%i) zsxHS7U)bp%KSOzM#-hb?iTAi-x2r_W!=!$AyX`W>i4cU>fNZ@Cf{W#Cq*ddvN?!{1#dUX zp3~>NqneJSR?8fdo%^wK=oql8c7U&9k;>~Rn@ZHiG1cyi*8Q{c1+#G-$;hbYik7D7 z*xj&if?a;t>Yv}ZJz}`@u^d3sl3mAF9>uG1_e?m(B+=eBI^M!VidG;;hF z{TAR0w-Ad%VgkXHtB+~Cj{7Drcr9-tIdE$Wq%gHeYW_sLzou$H1;dCmiGEc}VKIKL z+ql0w@TAXVi#W$qjfzLH`Bo*E9`aJoVTl~h4Mbzm9tSc7ftdpDU%stU%f*2dPZk&T zhPsbvr>I~z6-BR*z|j|erv8m9cT~Ch$L$r;T@=FywIpHR=lR(<_-rl=TX<;Uy#=uO zoh=!JPOU&f=lBUi$4Zy!2EDkL{Udi59UL zuPzl(9rcxHk3or#SV@hCQg)i4%-(>9^t}__m<=@xN+7&Qx1P2&Lc6cKMi|Y3`YX&x zEpG?OW!VM}^(Bp{fgTB+Xv$IPLHV_r&~4#F%jfPv$Dh1RhBqsJlobfI0rh0A9JK{G z>MWx|q3`T(1tZoH-(dF4aJ}p>_&|Z?`RDWRc7FdZ1`r{H>RQot7_O!f0)ZEn7Q^~O zbB<$$(DL?815H~(COz0>k+soqlMS)IKl!k=%6`V|n9{7+Sdr2-8a>`fQR%A+3lv3C z^-fjmA>I}ELwOVw6S6E_hDD2?It~u+@`PAZs$4s-i>VAc`V&2`N9~lqq`u(V+`d@5 z^4h!Bq*n{)57a1S&otz9BPRRRm))KEaq*VZXnAvW+l272|%SlAlCFuzGt}_Z) ztvFM-Z~e;1dqGFoOP&cSddCyRv579~L-VXy7Y`X0AB0$*^HT>9c3=V^TJihrC;nd+ z40KwnE$?3n_AGkbSb&$WQk(Yl6O{mH^4poBmsXpK$?Z{}yuXnC{`_Q1V1TPAq|{|& z06$%&6O}}4KFIiXAMwq-^E|4~lUiSJ$=7@cYLPs0fHgSx8wrAeEtf0Ef3-wJyraHC z^V>s8K&B+&xL$B>I9M;9T9uN*V_!f{{n)x4^(CB!NkyqsfHCeKUe;NfGDFqpJ|Rcl zuH9k~gc1=2_lUm3;L(SfyjS2e5xk3{1D^?995IE{Jhvxc=0GD6D5@YCN@SxZCy&O?pnta76)>Ul z8@)dXnUIaTC8IbN`f3)cfi<9phY;7>?v!^LA3&8*gLOruVfk8x8Y^8SNX-L`h>D3t z)SrbSp@8=4aeIG(19+OnT@=Gl;e_6T2l@m~h|~^Li6}(x#B0#45CqAfgxsORFM}*| zLE@KU;%GZGj@@cetGbtAJIbAxi=#IQ8I|*UOXrsdkOHD)IZ4^nCVxuxXq64Bm;aeG zso{mugwb&ZEGfiL6ipQteW}#d5AH?^aI%&^y~&ux036p&7@%V|O@a9D9ms96IjlsAQNn_4#J~Ow?4N+=@HPUW&j&^W!G1^} z{b`T_=Hzw=K3vJ+$hlq~E_*A+pnn)01VY$nz{uJO46)u|SejVA@is&UhG6Kh<9ti8 zIYdT(ozL{we)?xyk)q3k@9;|AiD-cftL$ulfnakuy&LGXf&tymrJ;i{q>Z=-0Ec0L z8wQmkwTx%y0Qdp5rzlQz0!ZSk*@^7E?g}Fc2JiX6r-s<}zfVhi66_lMykq20J%r$? zOaHZn!Jia)0+u+}=M3=q?*KpT;jS!z4ZQ>BiV(ypbi%~)nz$gnLjZ7h znDV3RAgsX&NDs^HwiO6@>}a4h5SgSecbk2&{Ys0Tx2q(0VBn6+c^fh_4gOe;l(DP1 zY%!NJ>*1p7W@nFS?x%-j*s@J1hkef_u- zkgwy0&!IX8ZOAVhx^0=IhLJug;F;On-(K~(G<<0F{uExQR-U=Lk%~g|8TJY#tgLf- zhw5RS0l`rC_hIl60*8TCc`*F;C8Nd%fMW-x7}PubNxH6EYVj1zl}ir;72{kQ3HVO& z%(`JJ#Tv_CV4#Xh^p7G63*4BXZ&W_w1} zj)FqOqjZPHNH3Sd^t7=N}BkULPlDw;m#>#GD(ZwcB1B$92goR7%Y(`x-P>BXVv_avVvt6 z3#TNMNB0qeNRwxxL`|NTxdSGLTswcC13IT0x@#7Bc65K2J?E&K%OKNepx6+Q+z z2Awq)bK}>D?6SpzcMpKL{6NCFV24!!@ackr#W~nKZ_ST1Km(O^&e|KXpR0^}s|Jod zF|T+FErOtUp}5b#uQ1YO^oSEvla6c$nVhq4EL{W(WcUQ(>NZe`1otg7g~+&|D#St% zMBA6vXuBzkqZlqiym~ZprX2rPLaA_#b1^Q$fdOKQ4<>Z-8wyFX!jf&@PsV_O#7ZwU zLu^ecB|_X^*FP(6GzoOs9;E{L+D`zMrufHa%%1&a2jy9%Q#my~Co;6}X8$p`BQMW2 zAMhKoOvjLXBrbfV7y_Vd!cn+rDZ@rH9nDBk4a6~?OQ0kQ{Y0o1$~l#n`WhR!6vY4_ zs7y|%Q4ob47gYzNR1_BaTZeOkVn6=-mP7xJ*mK3MZar(5JSn<}UvCQS7^tSi3lVM1 zWhExqeSPG^L`e-I+d@FTB@i~4ns!Pzgj5^HC9HrzoHj6}{o8zDD3YU|jC520KDUiQ z5K7B`X}mu(l?WY`U?5-LXq4sehKN0~NNBucL+vXTG(+wg8IP00_P6bRw64z~UD=k) zJs9D0=W>E@_Pg*vz^hfOE*5e~*#$ktwCc#lCxhCg#iPg4tE%84b**3vN3kA_`oup) zVg5*+M!ht06FfupE^~N6gs=q$0yb!(dN`no{Lq`wYVjblbB2X@C^MvjiZ?GApID=A zMCwiJ7ULu0pU#MD;W$#?$~8RhuZ&}#9)q-|^uAjM5G^S#=d?|W1lQmVCLE!F`%)R< zxyRmTnIj6Xqp}L4K{}I8IQXiNWdVs`{GDTm>n~7i2KejMuRdN5rj%Yk`6Kad3>Uan z?DL;wiQ+Q8OQ8I6W1Q(8QNQl?Dh&Su$k7T!Fss(|=egp5t8f*lo4NsoC#_$l{$KhI z>ID26yq)M0be{#m7{CA?eIUueeLjK}(n&c?z@u6JQmwm$57-Fk)a@rf8!2v(SUFn! z!{U9N$dA-Io$|w1$9vA=yed|)`{ruf?FwA-Uu@RDa4tS-QX2QWXabB?w#fcdl8&M+&K zEV(azg{6-lb$opQN>qa&YQY^mL~boOuXid*QUt%lC&2YQ{sPo&jnQKGh%BbJt*dZe zg5vx=tX!b zgMK{P6QWiLqxL%7!1LXKX90ye-J7h7&L+qU=sb5|0y`Vup}4dLhWsl8$h$yCy{MDU zggvp+?8Rm;%Y`rOrkIWv+mV`s2)u}*V5FuXOiR(gZj_?NCaln3xXJS3bDG<6Z^El* zhXkRn&loE}WgiH>3vI9=Z|5h$$}zujYcyD2Bpy#Iw(?SMG~NZ=HwCEJ^Bq7aTFQFi z>=`rCoCUk=3tu5gPG%wTebqw)fr;w-RI>;|Ro{87PVr6x%7fLMdLXpI?oWiJcSt@w zW5nGpF)sq=hX}iHMBP$S z*M|pHr`m2log&gk-A?PZ@2>8=RJg^P`QhGZbFk8y*2|zq4IDE=MAGn5UG^7X&X=Zp z-H~?~F+o!g5LHXHrM{c@5UA!Iv=`H8AU@H``Y+G738`eLRv|f7>Bv6vo|c{jLZW&w zRcG`a*YHDz8o%E$Q@7I<>*4k8Paw|5*cIWj5!`E~SPbYz!h+Bgifa&G_w$st1e*{+ zzj^`pTQY#wG!T}ZN}{dHi-8M3&RKqjQROCa!67@17qkkaL@v@C&pAnMoqm3=7AnQDudOLWtNy6pIk zsL(y}dF1&SPb#=XvP#PkX`ISiMaa&Kw4Py78?KdPvd=|k!C}rK*Yd-?R$&`m0Q*aJ z`1uQopeEqM>-*&V`=^)QM_l%#5oh`Cclrv??-!3a2h~m+^!K#u4T8gDy|;Z`Rt)Lb zvSDE&eWQHxf<5ytU?VYu`{UYXy@uYCMnvv43#9!|pM_(J*En+L4oi$Sgh;bRBLLO=fo|BB5wI`HjRJ8#PRqhY5fMi%6#1lUw>!R zu>a;)X&_XC!SlG6IuD2sD-mM8jULtRfkICvQV7g)AVA_F;A@|JLd6`AuqF(n-ty|^ zjbO~%r$sfYmJ!_ZR){Bx?^fV5mi*`?C(R@=n+jiHCconnVvrN`qZ-DUMI6L^9%TED z6|+oA6^Qe${Ae^RE*+&3LRJ132ypF4!P47~r#)*Y)(@H-no*X7Hgo@wWg*p9R|&|^ zT7NGgts&@O(N?i8%a9>SK2yo{rSHWF)W>Tg_I6fmH2-BW&d{}ntLx?kmg%dRVo)V| zgb(M?sCZrW$l5bT3Q8a0y7!^7yedx=?Xm+rm@WCzpM51CW((;wszMy^AX=4^P2s{A z`1VKJVQ)IaLmymnvK&uZSb+tz!iQ&>4pv3QHXi-{ zj`mK&u<6Y3r*7Byp@UVW0(~(hRJz7=Ost+mY<7M@GEKzAGCsk;NV4nEaV%Vtwe;4k z#YSJcgp-(UQI*C9S-7=90-vNNmF*pe$*;FhcOf4M^XSFdyCVYJ@v#Ss;u;@UeuL#TcmdG z$i0QXd8=nSF3g}Jg^4}XY7*Y}h^{t@20c=*ObS-Y$NW{x9KoW$v#AHz?a-rmHd4Dr}S^Um~QTRfEICJmW4ZqXjx91@; z-kl6AVN&0H^!*Gk5Okuu`QEcmKF8WL=!p;-gd=9SqL{3)&|H5;YS}&_&s@v`#wadd5{^QeQb5|_=`VPxj|@{z~1=^^Rf&LNut9|yi26eTaq19WvUD&@~_sEnmBr_ z)`8H}NY{t^JGvsj^ZW9?p5o1{bDiJy(`ulJ@dblvRkf#+>sh0-Gkmcg5@Nv*uU)O{<^71Z5I58(TVuB##6J);snBLMG5`PO6Ii3V(FCIGDU;k zFf$1suSy=<_}ySIHm~b(#3U|qJih9wn)^N;%m?2Tv%A>b*zf`Q&6e9*P7Lua84!M~ zU`A6SyPR%$!T6e`fe_EcRu*Dnwj&K+ywOEuyNeC{0AJ#_RVlf_T+B=EooZ`V@T=7) z3XWhnQ{Raf)4JUY!{g_L)6rhHM$=R*G@e|6(3TQA4#1Z%1|*Qu{QGQKCs;=)HAz zBi39@a!t=rg4K^JG4(uFID`dZyxlQ1JX^ngssYr2H7?MigcZFVZD4$Ix!hZZ@B?%4 z$#JA<;k$fn>nCm7k~r2Ma~`LIKc86FkZj@A!v`&SogRMNgVK%& zeZggwmK7C_T88YYnTU(CZg!e!sJM-*o%rwP^YH7%(SBDzhED1wEnl>R}yVyyn*B+_5`hWjSYCpMw?kl2hjlr14JzN;def@ zAc3R#ISan4yD5^%$6Jsed&S=~qaHqlFRv$|H}$70eoj~K8#YN6cHzV2uV`&r-vsPn zXrry@4(M3lUZQhZulOAAEj#9FW%{G37RG_A!V84w(;gIpSYT+TH2qJ^!+OyEDK`)V z^h(7u(N?-P=&*gU2g!{Jru{*P7z(4#So5eXy?D?NXOUeMdR0r$wVV?%k`~Mvvfxfo zpj`ufr85tb7&#f$SE0d~14I_uj_gX~JPGRmz|bOSfQQNQw^wqtdCUU+$vz_FSRF|r zUNE57@cIjqqZGireE04PXDW!x{Rtcn%bZ=5Y)?zs)rsONX9dzW}_u-GOLw6YIZpj1`Pdcvq^>+M$O6cYe~x1J@n{t5~NMg z?MZIOx>$~8Be5Fvd;u@#57T8IC0oMzjsu=&4serERUqP3zPj%3W8?`eB5qq~0DPku zd()r52~VdZI|UGI15Ri56-~wee9CeW0H3L4lC=I<5SEVmM!r1_V$*T*rW;>ZzG8$X z*iR;qt^@ZI-P|llv}KTwoBkAs{#3gaZ)>_B5+K*KsoTO+of+@^VfvZe(kMbKdNq2b z_M4PIPQX$512`~Pwhh^0Km$vU)#%sU&Lx1c-+@fIa@PyX{_928yme#+vQLOlY#<*8 z*j$1EIz;v9ShSL&HbpKgF!7Y?KaaVN2s~!(f{&a;w-T}-ol9K33jp7!b|*PF+Q7qs z4OM_C;WSXzD8Se0Vf20<0F@MVyal#eVEA9^0-ptkdvH4X_WgImG=r?rlzq2q>Hc0Y zVC@5dpuTx{-u&TQms~2>7muyhw8L~y^%>0q#ML+4EAR#n;p-aNB8y-PM2{Z%6>v%h zK2u=W&-MOz8LUDG4^!kT!IteFIlLEv|MS3>c0-fM4yS(t=rMob zr&DphD+}n>vYRkI&1?iD;%k6Yj2EiPG0HE~Yn~!uu5M({kv|8Y^hf&t@AB}sU z(wvY+KxF#J_EJ#Yj_c0Kf;izCieyVR?{wD1y;Lfr($nuS66BHVJ`)~#s7_rw(;v=A z{Ql1PbA8E+-PCK(@exkrBMyYei52SoIN}`V`wPLA3k@Fu{rX9}`En&VPotV{G*@QV z7CU7Q^c?IU;DSO~e1+?s@8<$QO66>TnJ~8FK;kIM?`K5uFS=!n4gf~=W06u$ z23feT9iGWd0>Wl%RQ`XX^?(nAgG-Zg7Fe&3*;J(c2~b$&l@`FF(qW3=deni;))ycP zMI;cD%KROUsa_QH5D&o~tZlwQ1vy09jK%p3vn-q9aKYwx*V%Xj`L?66__uXCH1&Kb zUrXc;EaCZIGW0KA`Oy~;SVHD`f7=sHjVAFK3J1FZ{x>HRlDtCwhc?lF(|0iKy-G5kyEVG{%c{I6akK5M7XL$be`PCC z7sUk2`VPjU4(^`2R~>2Jd)!uH;63Le`;STv{e^-V$3Av3`L_fYo={wZdsU%ypOWuQ zXnm!|#(cbd3PogF@$B2qa2raLMb+UN2kox(zVj*ZJ3YZSHq!e?)dqZ+pTObI67Pbu zpUCjn*7fIB+m0WAXe~gtTI2W(MSlgG?gKwGRPcsTP}G(NVSqHSAfXOLzx$mgWJwdo zNuh?;&FPW-d#B47&XLT|+;wQPd)&_xEADUHJ`VWi;PvEoEws2Q4zAp}j>4XOb)IVW zta&$nr7`|RhkNIO)$5G2|Kb8LGk>BTLgOz%mvgiCYhSn`8jvw8^6l%ZFAs?aQ@eg_ zZi=HPxuTzloHy^saW=rYSU~Q^!in#_x325FIYW)`7RchkLwQS>=3Ajby|WDvw$Upw zXn1Wef^GR{T(dYCR>dYliW7!n_R2Qpb4dzMRI*hF$k-&{MtCnaPHzEDs%!`qmapqj z=f4FG)3up)4BpGgRw?u(>Rtdr#>)?|jlX>nEw-vaA$#?orE6eR1hh+-AhnAD{or%d zAA^f7n*2-M=&Hh{;9}VAdf$d$&z}jBX$6Opi#BzhySAjSiXq+V-9@Gi;bjlD(?Icv zJ@rmE!iH7ZzvEj9+U z*^!Q2>>4>CgV)-d1-q7gl^G*}_WT0+5-g9s&SLO)DH@JhnmcT3?QcO}I)~1`h(j|O zH-w!kGw*fQKRhp>G10$-(w|LG(~XjlQ&G7`WHG?l6$56&xE)o@wZw~lvR@D^b6>Dc z+Im%rV9+BnKsrtIblB{&dX;=PQAauY{n&niV%TUTqNoIag-M&ml_BQ*E*Dv~RYpe2 zZrz1=+Mlx7x58;B8q7psE+2*%`2*|gfnN7a9rA4bh`X#W*pFQyU zz|5>@$^BO;Du~8xCg}PW)W2>AzILMzRo)InDctE+B#Eln#8mS>YuSQ0lk~=e}YmkG&p70jdi^N5``CDA*r17^_NR-Wn z6cmOEQ+vvP#k!})EYLLEpX93&!-&+h(@9J~tfJkanU7YH0!d2%Nw(A1{##y8%@u0G z>l@a9F0OIBDt!|+W>6*Y;2^w07U$ujbRENb*qqC|H`ftTGcDgAB4wuIz<-;-i7XHr- zQ0k7TjT^|@1PQcIY_+jO6T1C6Yb|=FcBF+|(%N|XZI_!RJ!6%CNsDcf+tpsM%MDlz!f!I=2$Uu#)(xB{dBi2YDL&~s7EoL3bZ z?uqZbmoDIP9F7ZlYS%Q)Q1ve=wf7`0z_l(2QPhLhM#J(Q6ECnyr>{o_eHW*7pF>|9 zy{}Sx!4CGCey});74!LtdU$9k9WKwz`Mnxvvcl?o$d$9));5a#4-6IdV!Ctsgs1f* zb>Bg7U{f2uJ%$I>|p7r+2 z$Ju-Dk)qdQC(Bp`5_Y7BOE$#09Be<;zb&79uHIFd_-~XPBCO|;Xm}OiBBRQrkS$zu zaSob_$v{9RGSSX=mKijA>-vmm3ArfMQBfKy9Zs!E&m`OBFiYC7E4<})+nBnhC84Zh zIU(k_fV+IM+Q-Cw@%fcY;XUBb!DPWYhOsuD*uTBO{%YXzz`fpI^WRE}IrFez)>K(2 zI5|#UH2KEeI-*>VX1dI1$lWqSIxHjaZcFhE$##j|4OHBQAyQEX+jX0cc znojjWd37$Fqgnl^7Y@C=w^w7_Zs>6xt&Z7>6XZ1xCH)2P>Paj}uSKMxcN2dVkz#ISC(`e>3e9X}r1GF1E`gWj zz2*Z%8+P@#HY_nktM`a_Tma+1w5m(!!yRkR9&>I|p{JV!&xqn(xcnTt)WRnO$SAjdc!D3TBq?Qbz_JFlYyx3Z+a%&@Zf; zOXSf3#@`;8_=Fn4_@lIx4+3r9XQP9LKD+$n`>1T#-}3-EB6h44(bS$Rt8joM;0fvZ z2v^Zq$=L2XmDm#h)Gi6CBI9o{^B8g{$%4zem6Gfk5mD1e(Bu{mvW_d^<@j0DiV zD{v3YM7Gu>qXlXbv1yL`=f8e4l%i)&Q$y1hPh20EwoU4KG*rU6AE(xee)EazVpK`7 zm|;w!@LwgKE~JF$FzTVIG9(n26bDk|8jEMvRoA6_PQb3@>MM8V@h_PUw~O|;U+pi} zH6S$}!=Ea=mvMr>TDkzK>ap&syXNZN^J%_IdD6&Bg78e&F1Afuj|>9djWOox(G^iw zC8)j4`khikM{5Z<=%0*5y~NK9gZztlbqX|b7~w*9ONQ>&-c4VFVT(FA z@>pE;o+sbA5Z`Q2_idF){mYwi`+w9*s@Duprlrx!%^NAYQ~7saxpp_Jvol9-Cf~KXxA`F5$K!j?7i?F1 z9W}zvpsT8b7D=7r-16J^%7kysld_+<6tP7V#m&a3-w5Zl(cuUnIp68}LQ-WFAz8e1 z?IM5BbUJWGY-3eXq>XLLa1>*On~7g~v)Dt`|I}yoP~2EMI(Jzstk8O?xwGcQvcEv9tBryUhMC5urUPi4P6lN_xx2r+icwj?Hd#UWqH8 zgEmU|z-&)TDD4vv#h9kWa5;{eFSz=AQbHm`k&>?NS(q4=BO4TPbsqXo>5+Uc-PE4$ zsr^C#uM5(NSZ&x~(jWUz?%#~Fi*Oo$s zKrEGj+l6|ww}(Y&s<_`t4hyJ))|Ws|t?|hRa^1|Gh>|RypF3}WQiU`j0dVW`wbYl3 zBS0`pkR{{R=6?867cas6Mm6zSs6PqYu**G;py0O5xqQZO8T@=A0V^xGHw$H40xg$o zYqYbN{WiG29u7(4@cEw2|3C|5LQRK35ffRCxn69#AH@<&rm+hw(^}MK3|Az4M$FbUn^FZu-vpPsuKMb^_Pm3kg$KQVd?fj))#TxgG@QHVz~+9e-koi$OhDB2&pTo@?xj zkBo}$aJJx8IyX$#IOt%pwkdCE1eUC7kWd0*c0uJ7B;{JcbReACotNuVg4Nhx&jkAlV4hYV{EO=DyHanA);CgX+PN=ez@hM-ET*xt8SbJ9aNtTWw$h`5OW5+YxFj}v)-&tXz&MZGyQr3#Q z&Zcr*X6$}_2sdjLC}N!Ve=A~6xhpRiHm+!>aXpH_ZI57>8yp`QkgfIG$d-$D|a`!{D}aD`-+M z!=}bwsXcoVK#oGLTvzFb^QN0M1KyOJw&2HmLph9D`P;*+$}yU(bpdveJ0 z=m37xL6^gq)vxZ(jF2L&FhqOx0Ik>OMe7CF!_u zYfVoV4rA@ToWqZyTi?iGENw=FFthCMyXF;oiG5SwBd%ta>6jNub<>J;?doJNcv;w! z4;wy{y~w}xcD1ks;Qd4)Oj^SE(i^ROk0mN@?4hQWFL^gWch~^_Wq>#h@? zL)2RZ>(hjnyrF+j{v~#`n*4~Rwr0w&aS`+niDIgf1nQGw@u6blP8aan z|ICKp;{qA_3>2udmCD}=m}>khZyCm)o>^LQaB(v(XCVvr;Ll(P(FGgX7ASuUQxg96 z%S2dH;b@}f_D#Fm7uoKp*Udop6)XFe(sgZvfh!FH+>aZFpYlM7>99daeu7|M%~ zLt-=7e?99%o1Q1hKNB@8Mu@eFUB)5o0Dr2z$7rfX#8{6cBu4d!vU^y6&mEc~h2m2R z?Z4gbLnC0CLW_KoqYS%Al3BE$EDB(m7YnK}F~q?AxE&9p+^;kAxr_?D&jTim{->=1 z^%~C~w?dI>Bq;slTe#ZmA!QMydL&|_Y+e-v-+ccKDiJFn211&QD{u&@FQKl&r!eP# zu^5NPAmYY4`Ss)Gy{TGaB;5uK=qw?vn22RLO0P>L|EQmP5NR{%4&tR4;7H3nmguw# zfJfw#H3)_eH_X$Zh>=E?i+V@M9r(C8cP#T$=f*IZ)*FnaK1Z(LkM^&^j=;JzHfls$ zk*&ZT-U1;aDCtNGhai1rYd61mg)p=S^g*v^HtW}}M^FosfjsmALGRVo))hm5RGiO- zdZRPa1t0s<$CG0PWJ7q8UA(s)_d7WvxvTNjUkYhZ_wVwKpQp(64C+mH8eG{o>Xv9G zt($;U46vTEjAAlWPUgV_qaFVB5R`DJPpLdM7<*Z)I@dKlPQOR{nSf9F>L&t@#%yyH zD71Ym6D<3ZDDJ-)jd_}prB|Q!13gzCgZB)&pz@89qD^A&7Lt@%k;B93V}IuPfXWrk z7N-XnZX7i)oH_`h*IG$zx10(r+N^bJXYV;lw3QW19vlmlI$hp+XEt|0Lw6r%Zf{j$ zq$^a>uk=3nG`npYIfLmVke_a^t#*(b%Yb?{mhZk^)}sgi zQxo!mROFmzgXeDH+aHNKMz_{H|FGuSZMP7yFjKM{ahvft1J(ETgYWYn>Rs&Uugpsf zejvIP(qo;?<|9LjPOtnNzs5PK70xSVlf}OG$X1Agxh2FC8*B9b?{W~Y#{VP-kqcM! zYtO;C>SLMx>0-8{4qfDVntOe$tv{dj#E{jKFP9Q_rwUiCHihVQ5Hw7w)*-nW7Ef#28dnt{XQ~ zK_Ah#h$60t*+*A?f=pn5^)gVxsJ~vv%o*G!mvko)@M`_BAMwfGH9UYsRpb1@Hnxd} z+uWLL&tUmis8-=@>nIw|rlstZtVO5%I=)m|EBe5?BF|9I#j*vn))!l#j=a{h=f~+t z7Fwzr){xatJ2o8F{(fkb-r*BpR7u1>J4zA8)YHxT5m;`dV-H}cY8R9Az45y)B@lAo zaLx~AddV~wdg00q`ze946duWMAbAPfF>G|_1d{Tr>$>ZxnrDejhIMs=yPLDdpVO`l z8^^z+(3H;!L5GV?Cz|sLS2=FCsd)K;(%K_`@b*aU$Ns&)K9ZK$8=QOKG^vmJi8w5r z7yosm$95ScbC6}9!6#+O5u3s6p`x-e;~M(bmF64SzEB(#F!0KM%0l!-tuN{L9$#r; z%hD{V5ITDvIt4T_R*Fmhk>(NdCd|;E(HPCj7t6a&2Ep;H>j}{;Zqz#gDWv6?=wOax zXlr0kBHS%N#qYcGm1cA@QQY(snr>~h<#PP)qh$KDGF9XG2hTSY(p~;mm0*1t^%%Mh z{kqgb8J3ngnLEqB|SWVVhoEU zHjuv{88z8i{s7kavS}&lqF&WuRf_!)K{5mu1)vxzd=_(K1)9qh%iYSRk zM3?-Sjv+?u2+Lt)4O0$vxT4+@fSzvZ#>_x}K`2PlCh&r(8dworn>VoR+162)N9zvMa%Rh1bmOPJo6uubqLejmRR zoRjl!ikT6F;bIp}riCor4;vt@4mv~QE>U;)@`a6dkOmTSJ1%rz9KG|u(9Kk2pLw+) z5hA~NDPev1l5w2k-OG`f=S~Sy3}@qGUhYz554By(9=w4#s zRE&G5_96kbaF`|9{-x|RrRymVNxVvo=9bai@e!03D#*jwfOvVufr00eO533taL4tr zfE$Po?{A8BD;0sA0%hPZ3)J!olZ*#TIo|2liejbKk7DdcE!$I(S7!JMd?ZcnCs1C{ zETeFOpqC<3Wr?YEBH^@2LUqw{+Q`b-P^A!d;I%I#UkDhviB3_09_@{Pv5~UY8~x4< z^?_%sN4lbe+4jJ>*6l8MH&$0NGmV?}uMSPD$iv7udwik)GOxw=K7lgJz?>wV!Fhls z=b_B162`Vo4M31|TC5+I3@c$9EmO63VwaU&rhnNM*_q$MEeH46y4pCLh? zZzhA3ARmapbq1gbVp4UhoZPkVa5Tr4|J~T_iPGkjM#R?+5Vxk^ys15x+MtcKE3incG6+F6zhyTyNRjZ=$tS}b{wXD!Gs$QeaC zTINmT(7q6ecOhY9Uh}5tBL7+=oFmjw%?4daUP#qty#6{X&LRvvt%^W?V3A<#w%cmL zE;i&Q6`>8g*fUFt989?He??;o!9|jmWZdo(iey^?U2D~=cZdV)88=aUQYsjr)GNNY zh-EgkT>kCm4BW3A&ohnPU}V0zq3XJ1In^_0bP-wvbXq;T)wWY?|o(glX^t2yM2EkN_w+85maJM49SGD)V@Vr9sTW2CR`q@v@_0hy=e6lTu}cs zDU&Ko`L*(60mXmvv$26zg0;JHMYO6vMDYdHt~~mcmfc#{GpWCxeA_y&{3I=|n1P9P zA2%>{xnrQQ-gB3Q@BT!N0iu?;z)K2hiQ7erB|)H;Fk2rlQ^aEGQK^3%JXtkad%d{R zjO@{y^$bKM(eY{VK;Q|W$a=i&gN8`9d0pH7`8m~dN1=rt6mFHsS#iHTR~!iz0_5&1 z8~+Bu6oH1J_5HImpwEO*moiEH2b}+&q>rsLXZlv4S%9UifGq{Qo}%ykMYHXwiSmq`C=TC}GQyCVFI%!j8F z84X*r{>~Hur^Wj>Rb2JZ6Ks<-eoO?VpW1oTylyua2zhPYk-}s9HWbSO71DzwGQfM( zNXmj5ep$m=MbYHnBrDRi?zXr#Uj{qlP8wCnp=B@JUqO5krUD^Xw;!^cy9+*n+^eI- z1TQRNPqwVsYT!!zh@!Ho55(s0q3clshcOL`9-x;jt)Qo#Xa3Ml7OXcz%6QXLZfp?B z$R;4nJODp#$eJTBs>ZMDmzo5Wcbj#tQVBYyoa* zc#UXPZvsGzT_Vy(dBVp0+8DdK>1@&JrpKF0X|e6|S8k#KyRC){N9gr7QF6UO1K}@Y zW0NkPxg;rx!^u5+VRTEy-?WOfWDw`pKSx^0P*$~ zIhcD)zc!|z^70+p!u5H2Y|^K0f23THBAuf}mtFNdxgWu?a-X;$h)YlF^1RAV2Ik1} zWxhtkIzMq7Hv98b6YB*Joy4MZzwWZ4g{qRgWcxGKI^{hZ(T?hhs}P7`E*A8Lw14rG zL0lR~pdIJBL9IVv8fHK?l58;Ric9&}#!r%<5`{EjZ|Syv6nBIbZ!6#_`$85UU?K$HS%CEzHkRo9dW z1Y4{9&Dm(+9Wi?Ctryb1ikQ;7)R}$PEJ8Z?TyD&3;KtQL74kL-A-9fY9FOzU1=dO!?^Y&EHx@?yl^E1E)nxfQvE12SSk>l-)`9BGTTP4Jl<6TcY(}+(?kJ6N&SHQ?d>0LDZ{@-tdelD^Rn% ziCX^a#9 zEg{g_4;K^(P6%L7m{=->1Q?PGu=Og;E%3s|rGS7?DpS`a%CqI8X|8JJtA_=ij|i53 z`#t`qm}Hghh&P7weCOHsvWXirD8oC5w%?#;g<%GcQcZZL<&CC?^K$RaoPhn69nNpq zYg6|T=)DWz`SIH9%fCbG)=;UZ@ml8uM(kjotaWz95G|*oUHcHbXpY$c35~`r@_K8( zq2V7K^_n_fA})iK)#yYlJwWfItJ%;};bq$cFsuvmVau9i0)YfrNnC_N7|tI^ zdm4YzbLH7{l5iskzADv@ON(6fXp@HG=;jb;olE@B0xtR|@yBhdGr!SGI(4i|%uozp z88xVVU<&x1ew{S;UQWU?T`R#;$ah))gN`AD$`rY7m_F9HOoH_bWOpOfKI{;5xLA+Trh_Sh6TjacOc$IVE)+)P^c>+;U^rglu^qW3sSrqiD&rp;I4fue;Zoi!W?*k>~uuR>uSFA5F>JTY|h zgWnJNn{ycx2nQn<#s2~0lz>=+tKx5)oIlvF)+@}O2sGk(NBJh0SQb^akG4dB4-VEN zc?23Mi{}R%?ax1IHH1aKa^0ub+CL|SG=iD|fyNnv{k`wVpVPO|MUJXSc(RSr*AZ%e zeGL)TIuiRnMLCw~bO414+)4~k|`K)pt*=H^W<>P|N_m6?-=Rors=~ndipTo-@pg+QyDRHiaiD zMlkA9012p<_9*|JSp|`MPciWWW_^#&LeX6kEOECwDIMs5y0?lLdPcxq^e*@t*Fwk8 zdoOmucj5&IPl%Ze!QnQ7f7bf~{0osQ#F^WHh+^Ci`n#ws9(ReK1Q0XI@;$B$#U-99#xhY>L+k6LOi2@;{Ru7cnd7E+51nbcy5bD^qslRW745tkg6f zI3^6FtBeLdPWkoaE&0LGNz440T??}dKiwdj%2ghEIx`I&=BE>1M#)n2&FxtjM)pw7 zcRFD2D-=|I6dNdTdf>#!{1- zfzl;b)XR0UEsBQ|a%9I!+Yx*KKugP0cPyxF^ydU#Tcem2S1oQPQ&)K3;@iQIPoQk?G8R8DV3d~1xjWc~y?pQMn(Wx5Pg`gP6)CV&~ZyU4$oqs+_ z-~PKGb7!`BN&p0Kp-^R!$ipvKkkVfvi&tP~{;}A%G$u4*JM=eCA%4x5AAgJ#QhRJ% zN6^h=F$*65TKOI}D0c-Sn-re)3R3%mJ#sy(MAJqcli|O!(iOhWDO`w;wHLoiboU@G zHigHjF4N7D#*=zAh+vF^PI-duAbb3bb!L+Xi`h_C;)|BgRY%6cY+?V}r2GIu;m z_lJxY`eM$fDc#p7`E(M}V-uA3tn0q0Rw89>z=xKI&TeD5FRPKSd?!Qbr_kMe{s;ej z@=4TV1^xxFCh*s8MO0+;xalUGiq8{sjGhqEY)=+$#XV*+pubSrVV)00K0*)X(1cvq z^UVgX1CIoOc`rwaxCz2hQg84kR6s;<{mS!Ei~ceMb7WIb7K3fQ^(<_?D>&>=#GW9s zZh<(|FZ_#FvoD)dRl}Zkjew&*+mk%*LWAo!jhsc$1>7#G2A><2v0>Pkk0Ln>DoBQJ zr@QDPM2Hae&Y6mGJ^a8F5ucxxj+(|5%q}WzgW{(KyLQ^}K>1S>*BI9pd*bC|rBO)= z-Ia)1d7kW=MtdH{pY}xm4)m_=k{99>13{L7@1&WN@3dLhWmoUb*o~{3bh~aZI?QhX zoBdVZ!`c1)&uihv^8;*d&rPeJq&zTtG%FAfDS3<#o1_MfKMPsKWkH5o zC=fOCo#ydvB@lz&rx*~8*_etjy!Kna&Q%62pg;7P&L-L>N(vIep>$3wECdDT^uquM zw1>}LhTz)ttJ&pYI!KuVA!r${{bB9g_ktBswxdM_T<6m)sG1*q#xR0b*}GjugqLoh zy^xRIqx9pLXkUOr$L%6jGfOs<-c@C|2Wp)CSN3?{0wqfFt)!YBas2wM0?uW;ZuL;b zyWWa=redy>cb5-ZqUb1;w&PLxZr|lqJo{Ev4JMwxQhU{gVgprXD|BhQ_{Q2ou-iRB zMWVx8tG*rBX(Vx#g_h-PeyB`llrga1?@d;#7Dr3WfBZRY3h%xLE;dwE$%;>$^NQ2Q zyBXWf?>$I1VnlAWjJPE{?6{YZEok`fThNyF{{p#X8T!9OZsV8~jqcK_lt}g|={<+q zJswz~yeTzp(-H;leZzW;`$KMBN5_k?DbzgkIvdr-7)TQP&gP?Jpq(U26F3TOJV*m;O1|6 zJIgLHsSp*Ei@FX=khx^TP}os$y+ON*>qam=o!vWAeBy`5?Z+P3rtP&zIVG$5_N32? zCa^H_vxlbCC1E`-vmVpxynB~AF0MW%{gR0L4KVUc2usPyy$ybVT1BFI>LUg5T(Q0X zz;tye|B2};ASsDW`u`HvH3y;0Cp#<7>?maat`UX6K%CdP3r7-q?mYGy5^f>W{rMtYWks2&d^ zDPYPAl71#xE;Yk@bvy4jE_Llc z<5HN^AO0QJ<;wIs@c@I>|4JNh&;3vBN0Qm~lM;#z2#W6N(EQniM4;l@kLa3)>dths zl$p__fYs<-kg>PyKP_wU%RIScZ0)V_(vFdHWz+4gRW97*})8~YR=&+0*ec;uZI zt%-pYLZd~F4`x=JmUZNyEMXoI*<(i48QIYH@UC;LxzD|**?&?!{_?^WCgyP^uFRFJqpE0p$DBylluSG+GtcLzya z!qXcO5pyV#xP*#gIwQ_KgBim7*YvjlgLq#8mi#|HuqhV$RhepEl6UG0&g(t=LU4Ljc67%{}yp!6Xi20bvTw(XP# zQI-PBv)^2A>kN1BCoD@?PS30JLL?OJKPdSXmVjBBFd83}KU#E0r$CGj? z{xkHuwSDhvv@NTWS?h_h@8d?hXEYJMV>5JD?lXluYK-xk9)41ah}$;lgj4E`oQzf;FGd&A-fuUer z&P<$u;$AsNgEzJTnbjA#Wh;?wwi_gft3SV`f5*|AN*X#$KOTy0TsVikRWOakMV#Lk zd0^oGhcxhVcLVMPj0RFL_q zm+TDpI~*EZv9c1x?IyK7r?amBE4T9tv=&eZ#bU>pzB|OJp(^v(^2~-Km<-#TI-|9X<+FxRE zTYDt~*)YrXHf!%R8ajI1H!s$$A&DvGbojT8O0t1jar@nv*0=Ck_)qbQ?W~Z zkAI342d7k}eJ2J-%?M~l9zd3ix&lM{+H8QcZ69vG8bH%Ejt^5&o~1(qczbO*+1zLZ)H$j>A=U0{Zb{Ps`V(ytSLlh?5qhUtByK8E`MhblK@dpyw1^RY+u@Blz`0G}v@-Lv8Y!)l#}g)>6*}6U%|aW20HY z`E@J54!-G9>bKBMR!$UPBk-`I*gl&RfmQI-6Grbg{t;X@V|cz7gt-r z3hO}!K3w9^XfpJ+`MHH`YW2fZr;N8aL8%kAt0ythvvx@IUk+_0hCm63a}G1Z{SCp&d+vVAGZvc`JhGvn}H!TJT{ zo(L6}kL{rsGW<8n`>wxw5YNJ$62UVn{Ah@;OYvj0f`m=hh3YzO0J~VHHmx}jKdg+{ zxIKa>>n!m-f>>Z6O&xld8)vo)LkBt0D<)NoOzX)Ee4^=$E!eosKN?P+t&1A(N$YA0 zB|gTOvJ<>>F*OhkBYj&pAuoEm1j%cH2zaILvx?XD$jv3=y0IgEnU5A{c@aZ=5EK@h|R+*>{HF}@r3iL zGGG2!&0I2gOQ|B)@G>ZFdd+Q&n?37VjqXh@m;R2WacdERA5mgItyQ6S6m%?&{?y-n zIkaboaU`4jsZ*C{6n26ut-KgFNyZw`O?4zCCFN$;V(mUzZ$d!#B)z!m#dB|59bxi7 zg56gfyy8=``(`w;(s*EeDK>IP&27h#fq-Vv2mMjc)N5k)qHHwdJyzV#VPb__{$A{| z0!B~JFg!R~m#j{jvDw&a_a^LI+KJ^8Cbr&;T2-_@1UebgLfQ=D(-TEL*^!rC`pahW zrl!xhT_&Y4CliH6FNgC@dqKPKa^f`5|GD~Vq|Rw6g;9$2XNk&175h(3vWCgdBMp-?E@}|?Z|YA=k21vbNK~#* zlquwK2u(kwv6syIRzF>BdHCT0*%P&Cfswi>H!X`IlOX_WZ6@7l9P{wk$b~5P0vAiO zCm+2AlY&=3OdQZS1N67Bi6(>d%ucz?AlZ8G(y;}~scI57l%L0O7XYcxNX`g^7X8akH71&B>v zexo2X3|uX()+EK!>B9SZ6+zbEuGR#VywS{sE%{bo`nz^odUQ5@swi%$$*iP@i3Y@U zDgB8`@1r8{wk*W&CZyvA)I!8JN)kz+1$@Lh_@(kLQit9j4Wj^ee8*Hjcw|&(y3|y< z|5isqdfFI@Y%5BxDz>jW{ZTPTPk@Asze(J_)H2pVIcxO-#njrAbn(JXDR|{xysg8YGz@escvSe$16a8pR|3`iIgXyOUZd{4 zg}zZm#ZLH63N0X=90q4eSq78%_iswHUO|7Pn3Y`@;fLYz}_%X8;fJx$sI;nQ80oLV(M zANLm*KzZ|zN0OlPfIwd;cDIy3h9pMnLw_s5gV)&2fzI&6EQ*B-fdi_6pUDF?wGnlvs%&q4~n{PSMV-ev# zMa#;fXT3TtiHtTxM*4xc zjp!$IOwpUyby6b8>0;vGx0UWS;=-p9Wo0$u{W)f6=sFNZZvV$9`u*$PBy=e|c&U8{ zS6Y*OPK)X^d|`YS-Hum8F>rIP!^Et*Hj?~)T$m^(i5nCpoh#e>6n>XDBJ?`kQcB2pOfkg7_F5>3v^Piud4kQ1SDfGw4{qNalVFbJ&zT zM&=AAuI{?Tji+m*&wX;Sz>EL$uO^Vpa9YG2mOCtkx}6&*?skJf^!7XR-VcjN;WkXU z)}lN0AAgFw@B;0PxtO--oR8RcH{%HSbWi*2Pv2_maDS6?T#BgA-(?8vASQveSnuTN z8enC9+Fe}7r6V$e@om%B_k{iO_ftG2g>_tX#p;J-t5gRN(u8$ZLAO-r&!u;R0uKeM zyX8iE*ca7mdjilf%CKw4+})6eFMv0Hno9W^2{2?%e_eo&X-N%!-o-~k&vm=-p2W&o z=02RbJ%hBj@2q>&8_zBWo`@z4~WSpZ8oojj? znH>=kwsZ37h)PcRrzT?w$vGH{2OndN==}XpVV(VS7$E&?ow-AVym>{zK66Fg6(uDp z84wm8KL7KEUR=$23{vtrqgS;QuaV`e;y-wE=FFdQMqfHZ`cWz{KabuEGwtRgq zUGNvY+~?PvqB3X!>$osB)H(xUe-80yBDxepdFmh4wPRfV z-PedD=s2(se)ad258M0|M;Z`EidQp}8ZdeyWK1f}H%6nAu;pRv5U6^d3oBk9#^9^A zsP);u;vov+VdLYYq@1fU{R&ue$}dCu`iQo0VV8IP_gx;DzR%?FNPdw&o(F%IV*nL6 z#|(z^&=vFzUfA3SF>qls92|U~m~al+z+uEBaIkQhx#3w^jOk{OkJt9~v6gg)7kI0w z?D+@{;{^7YmDl__(tn172`-Te&I`3lF1!G1M&e8CPqCW7y3nmYJx)@Q2sP#{dmJp3K z5RIQpIGX-?`Y=2q7480Tt1}X?WTtXp?tK>g<) z;V2I?=4LCY%!M*xBwk;JF3e8`x@}-?Q_=P>ZxX=7((%G8YdX!}{xbxL#9)u#8cCq} zbCCaxmOp<0mFCJ)Ui0BredCJS{ zbqgfmsI4CfT@>8yGvT3_FyL-K4BD6?__>^`pZ%xuj=DV0z4Zdt*NqxLKn);3W|Zzp zEBJKn0)chq%^6x}F>ybr%B~?zE8r$}qtD;}cz-2~wdBFQ@UXC*Jn>^iaN`N__!=$t zQvu|$L!b}OSW5TWs2i~6X{NQzzSNU$)^*Ni%VedvCg-ixN|f-F&hhN2BIX$-uRVp+ zqZW;^l8u(=OZ1}q>E^SCwC)ltUb7Lj9HQT4dJ<2U{BrC{LZ{=ze@UkDz4Q4M?Ux|r ztT46O5uUsDI+^c&*i6*OtLd(mUm8NobSq_DId`K~y=U-6+Qx|P&1={U7!Hx2##B4R z6lx`|@+3|e(78}wAFiSi<*70>XMVmp;SEhFiU68rRuVxkEQavC=S6v zar>kh4=t9XiEeJ+JFLe}wUt}Ca8VtaIc@Z_L?eRoh0 z7shT*o!*(1^WlBA7??juU1OhKqVHkYU%hAZQU38cnjD-FGe5B__t(2`0XoCY6YbXvDmRkc@rpqP;lrS; zd3jYc?D&~ZK6dNEYsD|~`y`oodt`3ZxeRJ&R2{H2ReZ}hP8Mz+{qFhV9i{D^_oeAN zkaQfiC!MMMSUEcEZ1(K}>-sx_w^!hz)13NMHhP^PH}VETdKv-x&JzC@=y1zAvX9u- z0ewdk_#o;2Lzy~Nwzt_Kn{}Id7;NOZ!X(GC(9sa2W+`Q|zcGE8?_P@2V20CxU_CTe zcYcd^MPUCU$O1BGH;^jQ@m@{K2nau41M|WBOL;mbtUBCA#5{Z#a&Eg;fApU~0nDJF z+zY4DXN)r8;$E!U3_=>CZ#4c;TMFEpEkxRFVq;@3UM~f^yQSn&z>nPPy5OABjKB`(;|rpqNve0ww!lMb_;Q#-~?~h#v_up1a~2H|n#&S77T> zVCl0zD9oqmo9aBjwIgWvW1Ya{tI}R->mg3iY;rN7Pl4Be*HB~siOT_!*KW2hz{xP zhpN3)$7wrbrP9HPNBgqEWGg$ed3N`|PaH?{vRE$|bYb+C2lJ;C=~lg5)pl7ksxIyt z71FMl=#RrLq&j4WBVcy-y!qxgg62rRW$5D5uRip0Yy3Q#-_hjk4!8yiNQUj-skDye z-ra%T9S>;4H)`iGY$RV0Zz;F>#x(2QI*Vb|`2b7FC|6iFlNA z>jfe6Eg_)?J!C2bgM#8~rd`v15Tt`*wNH9tGKs4~ z8T#~d+wXZ5uQ{kFx$ph$#HfE($T+AEKVxNrugVK>D;MPo{q(M;H|CAEqP{CIJERne zvHr|=cPLX6-r{L$+P%NDa#ufM#3i!t=BGWJ_@z-%ol}9roDGY~%WG5=*NOA`9>OJq zii7AKEBoA8ra^&u!bl2kW?QsvkU9#`_eh?hUQk&S1P>_XjP92nvtYY7prEX;vkWrQ zClgiy-RErqUm683$*u&?tYcQsx^B@CFm%XYbGS7a7H0YNu-2+Gwt_B36}{o+x8wpa z4I6>Iax;P_n(emqji=4OfDe)3KbAyMw&_F0wYU6%@oOj}`de9Y!-f84!L3%z4D}z- zz@0HgrG<)AyzLS8&{=+kcWDi8%%|(^iRw%rYctlqAr`7r9GDcIpg?GlvSP!Xhd)cpDWWwr&5vvhxp8g`fNojc5mDVg={%T zsDFh{R!tz>5>dPa5|-aIu~mLv~c>)NlG^pxQsj* zu+v#?qIXCkJ02T|ddDuCvWIJcJWZeIcEBPOZWmt$l19ux^07^RSIO^RT5ld~Dg!{o z-s=RoE!Li@qB+a$2VpZDxfLc*3oE{|Dm~wTL1-DWH~Uq(`Jr(4?-B?-FDm77dmt?N zt1VxqpPCEHoUova&%v?l*j_YBeOgbpA*{Zq2(PcFfP$ua#(A`BIbZnBfSXo%LY0mn zSWR>;CqA1amU|zY+8{zso*NI7JdqGbk4dB5W|7;_2NqL=7-2oIn=M6b(Q@tFT_lS0 z*9YlR6_ zR4U;%R@#crbZd~p0vmOra(trZ*FSFq@FM$%?B6*7PXy|+r+WqKC>2y5^<-#7beVNY zaq$h{3Gu3V;r8v!w-q`=$7)g>47VTQiUc!MDj zp0nhhTi>_2MagJ3~|H%Ozs2;Acc5}UgIYyG5EFUu9ap7-n!Bh`1R7=Zh*Jh_9 zlge%|Ht&Z9N39ONtz~y|nubCBsMQh`s?7<*yYc%f+LB7vt|yY;rp9NBA&@A!i)0lk ziz3SG;J~}iZgN>bJ7X9Q1crvHPiDyFEd#>6bMRM(Jjk)u=o5V1m1cS2=KfPoq zrbpkYyvnMqwAE0nv+cBYYfKX-xV8mVa@gE5EJvX$5809^>UX7jf6DqP+IPdAO0>%N zrsl7XQ|P;Hmq~o01HNU>y!BfVR!R)Zb~oRa1$vA#hbZlhSoR)K6K>~E28GuvD>|~- z8#o3i9^jUv*+NR4f&|#_L3+04ojBm_yr6jx`R)+TCgtGaG4mdNbGN)>Fco`XQ6wyU zIJy!FT8VW3bxdy0F`t>YMrSc*mAynw8Tzw}VO(j*vy@$YL%aVJMyv};%Phj}xl)!U zCd5+b3VFx~y0B5t1d41-vMxEFH%`qikeWnmG6G>@A{ZuBOvSAyz3d%BkXwo;r8Hqq zicNT5YYN^!u(UCMZN?MI6o6)QpdSR&l<>j_?gqlJwX>~S-*-+X<6G7mys9ou)nHV!&HURO`rQxXKyvKVbT)U6T7VDDLOB9~Z ztebT|2aTORo~8U-WQtI4wNJT{DMQbsS7FUA#|?~V=%gN?7L}mR&t=T4yLkcD?|1^j zm;h1*=&eUlK2<;srDr< zy*WG#pI_Xu4{Q#_4$4%WcmA5rn%nMPE6^6`TZyu(>aWIvaYI(BEANH%@9!%Q;6QgC z*~%|{kOiiYwu%r<%bn5p8<`oA8hM>|C$�peU_<$HqZZjZsY^u8ogg`p7NcvEu~L z8xTd$2dx_}9mQFuHz_9l3}u$C@VW*gu$0+GVJ3@m$JNE&GY=>%IceY8U?fGPvc;;FvA{ zJ^>lr=%_j*%giNgvm16gp}!QBHIU8o|&qO(n}k|^?z66 z9C!TS(R>d8)C?5)1g`5JUz8lvfy`9B%;bgeUWQ7T9_EhJn_zY#t`sP*$0#_N4R1r~ zjh*lO`SSrEL0!7IF<-yl=Hj0LYziN}?tEB5x6u<6}kE%>xjESnu^%YLp`u<;rOigX;8n&W)egE=;k+_mv&%*fT-HiCf- z$Ucl9P&KX?vjoDcy~CQ&Hn`myIn3y z3(A|hABK!&fDoj*)wx(oezX_ILtjV2`wv^OA@2j6!U0OSSGrmzQlMq+bl(kE?w-k9 z1x8Yo6v~E??WX1+?>9dlJ=uTSN~&5b+S=6A*1}orTptdm);4&a{Z`U<-g+RQmzM=6 z|C?Qz_=aqpj!<=ZeeX&PQum>no+=f#tVeEhftIBdZ(;s*q@S*ohzk9S%M&n+0x{vk z`Ft3&B9Lm83vLI{tcDKlKJg@)%Jn*aqj`X(gS8yJLjyVXc3a_;B~=KNS0uAW+#0hI zdW-LG;vh+j;EySc$xk-n<2iZA^NeXM9zT~;L91>Zx=M_DAPgH#Wx_=>29J@I8{ zKk3O5dc69pER(d@sg8c#mUGCM!N-D$zd+?%OUY8{{wy3SN@C7@QCbPXC_r@wHA|Ko z7^h1W5cKnIU8}Tx+Bx@%(Y84v$yf?z6iQ|~?IBSL?QAvHgleDH5NN(GH~`a_Z$NEv7=VB@&b|(WN4`*-;J<=&Y!5Q2??hze?|e zPk2|2y-yoXQ*BI?bmV7f^)#IIy2)%h1u6Tf-@FR8pCa$-wNpEbE|b({A19bkc)^_2 zsk5=YChp^G5_IzZ(Fc(m!hj;;tdIM0AXgdzZKUGVTWl)UwGEi;M?qwmu;5E6c94L za0TT5;Hw*k>$B9|GeL(OduCw1=-S@3t72*ZEYToxvt-pNhSy@`G0-gh(GtLeI}Y}X z2V*i6A^OlDm}U<8{<|HR7GZn=0vk1ZGHn<#U6)D56SVPVuf+Fmbqa6=H9C3R$Oy(# zd_^*|_kjn|{8z|r1N{5U-8IC?{w~4iP6IHp>d65x?)DeVR8i*0tZ76gL#n-!FH0O% zLxiTD@hktt<0j(asUh|iCpYuCB4-jd3cqQ3B0FK}oNrdb$0J?N-LX)ubPJF)OZ`~w zJMNZBnNapCofZ?f;#pVsjTw@2`|P(K)~+v{x&Kp2tahO}DG<7TpB<2gYopM=ECe=x zM~%O6wS1`*$W)yXVgH_Ai1kG`VE_C%Xj|mVCwxU?A!5$HAaJu1sOp^{&g1@)0BWlt zuwnZ?3b+Yavch3eJhk~}i!q^`{u81meX+3hVDFna|Rr3LNDAK0H=`|JGqu{r((8wyj z7X-Moi6@D`gNmnn0=SE9dVV6$vb0sXdqzcDyM3c>uk#}ZApCcf=6Fok2suOauAAjl zLJkxt2w#_Uf5yGYS�}(~0}r6w_Ch`zto=@t3H0XPRNjTHVNpxtLkQ$jk1~6K_HszD*4q;r;K7k0<$cI*FUN4aoe( zY7O+EX)}A&g+ezC*Rj1X>r-k8J@ImyCm9lony(l%dggzqtQvivvX|aLOIuzk=G;?l z7ai>xW-UrL73m}&&<9d24kJf}iXU}cZ3NLI7w-PnA_1u0PawC_qeJ&-Y!VVl#7Kv! z(qA6uKmK{&wy_Ze$pvMz4)B`@?w1ouY^4D?>Y%jz4I<}MA~NV)I`+AA0>aDBKq*t= zQZ=dSUOIXaUrQpaxG72`j^P3d?+yt-*)w8f6`K%ckD-Zj2kdng7HaIJ*7gAy`Z<>`9dO|tJNR{AI#GC|3$+8iM5ft_D1;fR0N|C z*MV}mXE%P&w2=+ZHuCwY!P`%P_Sg`7h-NCAZn;Wcbx}R(W`M^qpH5iFYet_BS}8XB zZbI^|8$Hd|?ywARXRt=dc{j;%N-FDtgrgU#m-mpuD*eou$;)8M>;+@7^|l)V+-?Dx zmckPv>h13o_d2$+&e8AgRTg>C(Wb8%0LZ4dg?)>U;*z=vNk;i-d$T;9h|z@`00)MY znrX@i zU2|Xss^ksmp;?!?hAc)3Ei)lrBA^&C!dwOImaG8kQOW)>K)$6|LquSQ4{wDPzmU#aCWtQ_Gn4d;Wg+)e~T^ ze0rV%l>8q);qSlx^S?i?>_2Pu<7)g<8$YhbKeh4WYW!0hKd#3AuQukl_@aNZ4_;P* Rz1jg@FkK^^!mHMS{{t)_A}as@ literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index e3533b9ca27..73aa8d48235 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -91,5 +91,7 @@ nav: - 'References': - 'Glossary': './references/glossary.md' - 'Autodoc Guide': './references/autodoc.md' + - 'Bitflags': './references/bitflags.md' + - 'Advanced Bitflags': './references/adv_bitflags.md' - 'Using Feedback Data': './references/feedback_data.md' - 'Tick Order': './references/tick_order.md'