From 1b074b94982015bd9a08b0e23cab5dbadcc32365 Mon Sep 17 00:00:00 2001 From: Andrew Stein Date: Sun, 22 Mar 2026 14:23:39 -0400 Subject: [PATCH 1/3] Improved `REACME.md` --- README.md | 132 +++++++++++--- examples/PREVIEW.png | Bin 0 -> 139621 bytes examples/index.html | 18 +- examples/index.ts | 6 + src/regular-layout-frame.ts | 2 +- themes/borland.css | 103 +++++++++++ themes/chicago.css | 104 +++++------ themes/fluxbox.css | 124 ++++++------- themes/gibson.css | 338 +++++++++++++++++++----------------- themes/hotdog.css | 100 ++++++----- themes/lorax.css | 147 ++++++++-------- 11 files changed, 652 insertions(+), 422 deletions(-) create mode 100644 examples/PREVIEW.png create mode 100644 themes/borland.css diff --git a/README.md b/README.md index d9db939..af5b111 100644 --- a/README.md +++ b/README.md @@ -17,58 +17,146 @@ -A library for resizable & repositionable panel layouts, using -[CSS `grid`](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Grid_layout). +A library for resizable & repositionable panel layouts. - Zero depedencies, pure TypeScript, tiny. - Implemented as a [Web Component](https://developer.mozilla.org/en-US/docs/Web/API/Web_components), - interoperable with any framework and fully customizable. + interoperable with any framework. +- Zero DOM mutation at runtime, implemented entirely by generating using +[CSS `grid`](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Grid_layout) rules. +- Supports arbitrary theming via CSS [variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Cascading_variables/Using_custom_properties) and [`::part`](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/::part). +- Supports async-aware container rendering for smooth animations even when rendering ovvurs over an event loop boundary. - Covered in bees. +## Demo + + + ## Installation ```bash npm install regular-layout ``` -## Usage +## Quick Start -Add the `` custom element to your HTML: +Import the library and add `` to your HTML. Children are +matched to layout slots by their `name` attribute. ```html + +
Main content
Sidebar content
``` -Create and manipulate layouts programmatically: +For draggable, tabbed panels, use ``: + +```html + + + Main content + + + Sidebar content + + +``` + +Panels must be added and remove programmatically (e.g they are not +auto-registered): ```javascript -import "regular-layout/dist/index.js"; +const layout = document.querySelector("regular-layout"); -const layout = document.querySelector('regular-layout'); +// This adds the panel definition to the layout (and makes it visible via CSS), +// but does not mutat the DOM. +layout.insertPanel("main"); +layout.insertPanel("sidebar"); -// Add panels -layout.insertPanel('main'); -layout.insertPanel('sidebar'); +// This removes the panel from the layout (and hides it via CSS) but does not +// mutate the DOM. +layout.removePanel("sidebar"); +``` -// Save layout state +## Save/Restore + +Layout state serializes to a JSON tree of splits and tabs, which can be +persisted and restored: + +```javascript const state = layout.save(); +localStorage.setItem("layout", JSON.stringify(state)); + +// Later... +layout.restore(JSON.parse(localStorage.getItem("layout"))); +``` -// Remove panels (this does not change the DOM, the element is unslotted). -layout.removePanel('sidebar'); +`restore()` dispatches a cancelable `regular-layout-resize-before` event before +applying the new state. Call `preventDefault()` to suspend the update, then +`layout.resumeResize()` when ready: -// Restore saved state -layout.restore(state); +```javascript +layout.addEventListener("regular-layout-resize-before", (event) => { + event.preventDefault(); + // ... prepare for resize ... + layout.resumeResize(); +}); ``` -Create repositionable panels using ``: +The `restore()` API can also be used as an alternative to +`insertPanel`/`removePanel` for initializing a ``. + +## Theming + +Themes are plain CSS files that style the layout and its `::part()` selectors, +scoped by a class on ``. Apply a theme by adding its stylesheet +and setting the class: ```html - - - Main content - + + + + ... -``` \ No newline at end of file +``` + +`` exposes these CSS parts: + +| Part | Description | +|------|-------------| +| `titlebar` | Tab bar container | +| `tab` | Individual tab | +| `active-tab` | Currently selected tab | +| `close` | Close button | +| `active-close` | Close button on the active tab | +| `container` | Content area | + +```css +regular-layout.mytheme regular-layout-frame::part(titlebar) { + background: #333; +} + +regular-layout.mytheme regular-layout-frame::part(active-tab) { + background: #fff; + color: #000; +} +``` + +See [the example `themes/`](./themes) directory for examples of how to write a +complete theme for `` and `regular-layout-frame>`. + +## Events + +| Event | Detail | Cancelable | Description | +|-------|--------|------------|-------------| +| `regular-layout-resize-before` | `{ calculatePresizePaths() }` | Yes | Fired before any layout change. Cancel to suspend until `resumeResize()`. | +| `regular-layout-update` | `Layout` | No | Fired after layout state is updated. | + +```javascript +layout.addEventListener("regular-layout-update", (event) => { + console.log("New layout:", event.detail); +}); +``` diff --git a/examples/PREVIEW.png b/examples/PREVIEW.png new file mode 100644 index 0000000000000000000000000000000000000000..46af34069604a3611d3e81446c6bf98f02865a47 GIT binary patch literal 139621 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

@8}?*h8vzB$>zAQ$j4 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

J;Z`jV(!PZ>{*ooOErx-IdO%Bh3m@( zx^sQFulkmxMh=&IoKH|4{gRYGesAjP;Q=kHLs?P+fbsa+3mdM7Fr%}5f?u|Ce?n+$ z5vd~t2RwX0)zwgqV@WTyYiUhPFzJ|QW^$aH)=V&kho4j)Us!o^-)>Iaf%5W}<{Sz# z%Q~w%2^ts}Ge@n=lL<{RbSHiz2UI84GOsl-(W3@auKVrgL;}QSeRv$koq?I6!9maK zL5u4?O5&0e41JU?ezjNfK`zG>ucJ`Sw&HcnJX-WZsXlMm-5Gg+&#f51EV-|5E zN+b$U{54HvOfZlX5O>ji)i)O|=6|fnnsHM^5qIPxhjDv!%K2X_L7YQ^&<&ZOJEsz@ z^4?7teqQMZQt~*JI|}EOPxmA9+tlS-8F@uR^(%}0tBH7b>(}gLB)sAqWZv?Bvh{JF zalrp1I2sl`6&yAnJb$YU3v|Tis?a8+z?S;YDCLjcaX~y4)1nIq3KqKg&8lS@$i8At z5&-p!S$^3f8$^Cu7pjovs0Ad*3lsV3)!3STQ6!Rf_V(u8)`8VMPlY^YYpiKzgqxp; z07z301ubXLa&AZ`OPI)$NIkFLzeL6zskwMh~p$tp`svm7Ox)V7R$F^Y@({%EH!&KerDe zpz9Zsqd^|;%s7Oq6Pxb(dQ^&}%kF?ckqarIQ`h7H5)oID*N42pgn+v!tJi*Xv>kj_ zyV6{}zbGXqU~0eT-bc|sT2j*9_;cF2=Q%91HDgN0d`tpR+C>RANJ-Y{VyaazT1K=H zi58(Z56)Mg_0AYic-8A|Szc39)9G&&+DRk|N}E^y@lMwkPSZneLqm9oxP_X&e$>gy zIN;jYb%z}rW0?4}xO;bhpS{wxy6O$sU`gEE?tw!w2>48a!q*g;V^)J2YI2nDX^SL` zjtO@qrPwHWcR>LG<<}Fw=GIop^OmNj295n4FFV$1p~vZ5LA^rBjc~h zU4yaHlM}9l@-f+neycY@w-Y8mq94e|rnIx$ju|}V$4dl#Ekgx@nVRL+KT?hfe0dC- z^Dg_*MS)r!-IahBb^zu2)%US;a}eGC3K}iCb;sf3z@Y#i^mcCm=HBq!Mg1)3jsg%^ zku(owMPD%eKW_7P1vj73HoOjrQ)t!8UN&Dh9t-e?KyNqWpG#_k_4$hL11Vh7S@b$i zn)D4d05Ivts%)Zgs+X5)YOpPktjm1t?gFgit;-Refk#J{8;aAP)*31WtR-2qffNz? zWmkF}@nEsv{;vz5a!zrhzshV8k0{6|KJY!=`E%lF(#+kRXS{lZi>4563_iZ`#XsAr zc{hUO#pUIogEBNJnXnu4g;BJm<1{B2!6eGl=f7aYdGMQ!wXG~5>W!L+nmW8g4}Lx- zIb)NS3C;5DB5vxa!ptJSb2e`X=z+$ZEf7o3T(BWKo*TDmXiQo5inb`Hhj@`MTBmuz zAjTe2V@9W-m}d_mggxD5G6pKy@3fC&2?>YFcXouZBl71@z*P3jY@}hFv%ujB|J{S= zO7ozMVG)@lZHHGeWe7I)&h_ieH0F^@DgMT@!D+shMzw_Tfkd!3UXZ5 zbGqUHv|97SV>92YUh}tGQ7{DfhE;S(HQ+}2py*@Y ziW<^hLYrK6J&F_=Y?jy778e#q4b1kw7RFT0O+aba8G`?zK@t_Ok#p6LmzQ~@nHdem z5}rw#kqZj0*~&^w*Bf9%jyKeqj$$2QDpx;d16c5ehK5*6F}VcC6E!tqv`+*CBmU}H zULcJS4WK!Z>oL69W~t#a6$XmDb>{7FJmQdw6&S^WIhkAx(5H#euh zj1b;$^Sjps`CPx2S69bAzNgp!YS}lDkqIXc1yTYbM&5VaEG$zf8KaMpkqDW<-Py_m z0_=y(DnW3P5>VI6yNcIO*yD9h8udCh<;}rFyv#j2)L~CAygVGtJ;UG} zt0Kka-Y*8Bzz0z}0Vhp9_~?SMzh@Nr@O{82*6|dl9zaUQ&@5R)4Dy z`qyTI00MN;1_XoGmyn^w*do^n@=U+CsL~8>!Ia`x77ei1%g6F=jM|sPa0l?~;gwg5 z4bmAa5hPKNd`KWHvSGxi_>5SZ`NcfDT0~iUd)Q-^$emNm^muRC*_l!!8m)jpR-+5C zIbMB72b`T9@%%BRm&@GGLC7-5+h`BBU~g}4{?6t8-nwsS{>^jx-R(=28b5P#M$pue zfcYg7hyglXG2ySQ5SINrMiKM%Wx8Z-Pt^DEp#_=%EZ5>nN~GqjG-#RV=n$f!5YII4 zGtyUqTzvKmU<>~6j5DaNCjR`jmYXy4(-9Ptdr#3s)*v7wj)a>b!lT^wzZp4~dn{@W z>^-m_Lq(ShdMRj$5G1`GqF554uE{=%zh6D#4QyP;4vv+ULlrxfQ$6N>RlAUD30R%u= z6IEA!qEqYTI3HOtwJ{ZwG@cm^%(R^3w9HNyt4&CqMBpbR zyz+lceHdhrhc^f^)Ti3QT#!NWkbj2HAW2x7SU%tI8*??B&zvnzi_5v5JJXYvh8EQ9 zGPlbknPFme5Hm9iX|F_aH}$o&IyQx`iXqN|+;9c`^%kzC{u$?TSf$+!@BP-;9nj-h zF+*3qZ?hL`sH#e8*IG}x2w!b7&t&Z7C9KJ!Cj3qm%V|+n@Zy()IbU3UQ(aj}Y~Kq1 ziJvpP*0-|psJmBhl!I4hyup4p?A?UYu^Y3^4}5{~p&K8ert0hgkUyLY%< zNlQAon_wTj2o1c(Ba64x&O$?hH%J_Dg-!Df~hu#qOg$ znxvu=gr=&KNp%+F5$xR2$|ZbI66V)fCi)h26_pHKH3` zk!X}E=J5uyJ_fx>a|PM+NW(GoCGxz-Ha2$hMcjFD_Fqu0psHAj(_uU|pXb)uS2_WKj_a9-2yK6?7ttVY zZspHL4z%reSLS$OtK-ZV{Qp|+3F3iHuakE9org32xMFJjLNI$pvmZQKPXDz@`WJbq zD((n7??Tka&4A0mO7QA0LDYI7=O-a5fQohy#_K(xnJa9v{Lz4!;fkQ`Q39Uoo=jo6 zx#qLgNqgqy*)}p7nI7Md^h5(N8JM`ZR&Wu)At7=ZPz6&_0{j5pHYe#6YKt@B8!paX z*31(CKyx?8nuygiHU^O=0Y#=wspfL&0^-ll?Z4sYGBM?`)#hyr`;GJ_vH5{c2)y?Z z8uGXUOK&6#8p)M!b(zvX{WUd1uUV5CLpmNSDe>^}$6rl8uPGk}YGWgsw_Pi8#-SvI zav?}dhsmj^aJWau9IEr4pY)_T*|xDNX1*j_uBC~?*b2cp)pcL;LQ&|Xrl$T~?baw) z5eG+nF;(`W2>A|A=iFj4jP~Fq5ZCEVAG`RTE98|7{e)lW7T~=-4vZp&Zhya9cC#QAkg>gns;xk@jO^%e%wyeJSMKEOQMG+bXV+q zqg7a#)!*)93@1UCvRRBeq$wEd@S5r_WVie3qvH!+&Vbnk%7TwF*IPn@E64D<6yBCk znws;Cb69~F7b2X+OQKsmW+w>4>%gja!W;7AArNc>5>6%2O|ca)rrNyMC_Z>+URcDlAOWkgUE7;_W{j6og3 z_CIQ>`#1dH3)8#L)_pK!6Y_crC8a2f1tSS3Z#X_zN>Pzn`zpTkR`UQQ^sAEWg3>(@-5c=HRc0;-e__^8k*(_BH1sd;QnjXb&4 zKYp)d4Rm@@i?{N%fGmw6bNqB}g{S&V5lE3lQGm6guJ`PCy(1k7qi`2Yw6J8G@5@9P z#6(ZOEnNNcaZ%*qnPH-(`_D&y(MBvoFr#{9`f4P>SPL@`)FTq)aF?|uL-VeyKmnLK zBRf0THo0b?#4=v4oGhM-iEhL!Qd?7#K=v1B9UvP;VuVM8{RkstVj_462pvzG?3pM+ zp`w;CnaZ)1l8xwXVA?yNa-kB!@~$7RT4+=jj_41XpVtnR4V5^>NoUD5`gk-#bCZ+^ zNzBZI=)#bp`f`fZEbQPPUn%IJkA}xIBCBH0Avz$mV})(E9F;nD5(wdb2&ryV>7) z=^qNf!?t%5TDNFLpJCtmC*rk{5f9C7DYEn5_RK)HQ?gJ01$%)qZI_{f@qf2m7#_k5 zAwDU02f(d=L#s-F@zLhRH+mm+uP*802z~8uW91K)B5%Q(R7wkakSC0 z4iel3cNri+AP^)lxI2LW!QI{6-QC^YU4y&3li(1X;10LHbM9I53s}e+rhE2VyXq-s z@*X{j!qc!&Mh$J)PLxlKjF{j&aExf9qGqOrMCn?rPJN5>nI?l~VoYHnerV*_#i~QS zA#gSW#!QdE9$u@V_Bq0^T8bGMG)SHt6QUqmnwuB<`~lQyUt{W98#}^W#%fVk}{~q3Oqysmw57Q#(7m(|+nJ(%C+!BIAd%GLj~Wxlb%KMD<^| z$FR(>;>O3vcRT5^o@QloEhBu#Xh1)j%A7^O5#iyvo~twJf^njc6go;e0eawqqobqP z!>TfH$L9v%#G*~H)vAK}{nl9o;~O_kpA(1v;^g{37xMyiOV$e*#MEd~DbLI9@{owvG0oz8YGzFZXJgR389Y zRkNw1aOUJxGyXcZZy#5A3&>q#7@fB#DuPUjh=_>AQ6dEuuRso2v#t{sNEMx%)z!@! zXKj`%jib^<7DojJy0Wg*LbsVOviygke!+nHE;UDap>6snmQ*q6P@eIOezA*`cX3yL zO}UFJ1U!g;Ck}ZuQVqH^maTK|GyNRs_zZ!}vf)5yDKH<#+4Gi{H8}wEAq#3ndmP?73ia)7V-(K2)8~NVov)1XS8E#$LHxdf&dK*j??J{ZuyZl&z_=JOAzW zV5$=n_2kKS;FJzbhD{+bFxI>NTzmkrV#0=v)njf^y=QF9JbI!GdE{i{m%Trj?Eqyl8RKw_M9Kte@;-s~4>#>Zp$~}(+ zbvHVUUsL7H0h-|jLm(@^BSg+cegjWlq1@SLx%+zH<}Jh&0jis8vQZ0IZq!CnR981g zC>$x2NIwUa7Z7m&sS!a_(%JjLE-F++uRya?meOMym7{H3Aovv|5huSom(D+4AL%o; z9AWcQ&ijb3&?A;V>Az9p6BsxZWrm6m-i?a&h;3C<^mMNm)bg&x;Ro%&DiIh4KHbHa z-rn8k`HP&-e_5|H8b|ARd*TMfqWj#G7R${pWOvXweNBhn(uNlRKmd0B9bqn;uQP|{ zym~;R1F*UZ2WSr@-7otV52JG4VKIDb{^a^wZ@5Y(6$c9yV0J4@zpb>_K#^l?n@L@kI{} z71zrPo})bx(9tkrnS% z;L=|~h$MoFxHip{zJA);N6F4$4Xm;{qcUA=war5jmx@mCBpIlv=@Om0<#N8@`_L(K z@Nc`|_lAx3f&Ja78)mJ;!E8x%wCvPZZT4qiz@viVu{6F0<|y4OV8D|X%1D32DpT}U zRAimX>6X}e>~d?1L?|*Qk;{a9JhI5zoGqZ4kT$$ong`y1i8c#eb_NKZTzm^&Y0_K} z0qL_iTES`Ug{0H2pY=GL9kHFXyv%p_XXy4*0n6e&n{a89Q~b`3ex-WTSmow?dM6;z z@LY{h&JcD1r*?fHoO>YeRCPTslUF;-#aA_+!R^A>*d=FFU*wf^@{t*UgRcPHZ#VXM z`(|PaCr>YDymu=GGlW9Gy)y`hURmJegG#k#7)`co-^)7b>eSen|H}^|bCtj!76`Av zV7i_>8r0)>x%4S;eqUnU?!OzU3@fZBRS@E5rBmf;Skh9;%=;=EoAV3`B zUg0maHiuo!Ni?(n&5FRZ_@9K9yUG!UkZb(mHXa`&JUL;uBnvBBC~Y)1f0}88s@*>~ zi=rnXfgm!|ST)RNByCqVHN)bQJ(4v>RbRz!2<%J@#H~iM$3!rjn7G$eh~{w8l)S7o zmU8*)ZT@><3HLD161VfetyKNba{&)q{AbhPj^8ssh;I_tecR3hg&E+Pa-3*2HUoE$ z7~$KyJHbL}@J`V%P@9u1LM8JIPHKsNdxJ9YFm1bX_wbnA+_bU0*ETaKjc#5%_z~B2 zwOA~|7wM%O+iOr7=@=}1p}hb3dc4Z<)RPE`ADT<$W!>4m1p}iOQ?Q}(S3rv~p6CI? z$@xmRM(c{R73@%i?{|dZh)gY;E3mEyUl|DhZu&Zwe{GMiP#}kTKu_a=0q#QT&+GtQ z77-C%-CShe`fhOO(htz3Vw;Y2Wrdedn!*`6&OR#6YCC!1@!{y!hx zBRs5RsOV_&a)br6u!c2^MT9|k=;!f{Ib+S{GO*}fYW|1L1Ib=TE)Wdei^@HOL6H_via4sTsU(aTGK*22ip+Zlci8zIi(+zJp$)PLC76 zymM}i{uaOZo}7IzwD*}%QP43(@MHv4-h;u}J`A+`It~^xo$+SEraBmD%Gim}ARB9F{jmhJ@y#1sj)oJkIsjD-wseC;$cju7EoDFo}86&hNFx&Hky#ut-^l!^E_H>S`q zWfj2_4weln5NgV|4r@CCA%uexXJf+AwZS?O<-n*XB}-4iX32D(=nUl#Syj}p(h^r| z?7`$XI2&u+nR(=jwvRIm6na7}A9Vs#AZ^=|g@*F=)G+^yH>G|vWSs8kpduG$V!hE2EIK;X2x?_Tz!$$tBoqbHt*y{c8o72qpuSt(q>_->9I}C!~ zWV#y?_Fh?ew--asXs<+)_G*0o6C*(-w)mqZHJnHP+*iyXI!KMpQ0anaFqNN>`D);^ zGre7rXoI{O?NSWk&Z228eTGa8KV%auN2EN9g~M%;#FTpH5p`+m4|ID*OH&1W`AyC| zK=NF7o=Uwwvml=952GQ@OPZ-$IZ*`KTky5or2ylzcVWtvN!V8gL2gCe)q?wgiVA#h0sUo({0voWl261#T zqWHwMp=;!`itw8R*0c5rQsvNwyV422^2-HQ?~%0oht0G^J^G3R^6L1D{HXU+J=xNR z{21S{7R|G+-H`4NYle07;qT7qJ&jF1{KU^_JzNgSlpd(HBB`C)s_K->TfR-hh!*_w zUcy0c&(_r5ofi9O$6R;ZcHf~}y#h{m-<)>xb%c#luU-MBdTGlh6C)%f`NH9kE^F*_ zKjQ5j>n0O?>sbmb)IeBW+}D1Kgw|gUS!>Ex|9_zTgba<=BV;Rq0X@GGHXRz0Of0RGGlhZYhvQ;XmVo$z%_YEWQn0K>%e(+-v~_?y%D zYf>Vogyg8O?~-coTOFu10>O4jx^URsVi!e~wK7-?DJ)j9$xD34H* zLY{L7eRn#CsqozkOC>L`A##SdLak!T5Wa_R$x~*qKRyy52on*_) zC0g#;;Fz)Jc#5r%fq#x|Nvt ztpDDO|MwxI0ZSa-QGLe3Q|Dzn;4#e5bqJMN!xeJ8B=wUmIj_78`aE=_Zas`pz(xR% zXWQ!#{kT^^m1C{*3;w@5hoP{nINxU)fQA<?#~Ojyo6rN~ z@bV*lXVeK?EeR;ckyPbARXlSke)16)q{229d+F*?vF6zrfvt0+zUb_pW_a zt+tWV_|h)1tGb@_nV%1#DE_H@h|REWXKRg$>9T+U zTib=k)MdoJZ~wLkEi@>a{6>|OP2Ee3a3*4iVovwAFEro?ql~Qnk8MfI;(;xDlFe-a zdN0Dg5qKy?d{o@u<`Z0{t_bs{e~<+~F2gvKMJ6=Ll9L(*LSx^y-ufS9*7mATj=SY3 z)*4ZV?YnaV87=XkwO!C@UJT<6xF0W^M~8|UNwiBfuqS{#uvg#mziaXw3)(CTbm*}h z#ri%2siL;^Sg#c)FK0rKhxaf3#?HmTL)P4PeAV;c9VP<-avo?GGVixHK?MujP78$) zgF@7xHeTO@E`l`5yuBqepBg3e52-p=cLytQ>mLGyb8Xj_YxtrL{ol=P+}G!=+U3(I zGVxyrjbc6eH)yI``+?r$5m2t63sk{mCTP~qI*Ctlw0A@O`wp?nts!_3j|Q0N?o}G2 zsLegE83V%nUI-%iW~eh^q>cqC^04t6u*|rkgFWXDCNtIQ_qk-fRH~p2wgFcl=`Ibn zW(`#w`M%M9wEj>Ob0-$BoxG{ual?u&3)>?e*?uU=p*cVuYRZ{9{N3B}hWhu5Ob)l+ zE-R-kI{o_hKOoq4-|=B?J7<;o#<-EU51war#4pb_*aU8_@@(z&T)`m?WTwAnIIL=C z-DXsHeNC1P@ht;q8!Rv}RyN>mx?Nl&Pc@1BxC4E68`kXLAa$m%&~f_Z*a-vtetnP=%mK2hh{PIB!rYD8CljEH6Tm}=E@hJ&a4 z%0+mdZ4E0Hs~H>^Jsu6bqhmk9mZf>?Q%34!WI%n zp9h|kWar@J;mN1uD+bj#K)d|9b9FPzdMK*p9e5XKIj`Vlc{*KAt1W*wpQT7w}`#- zW^)y^SX;v8N;{`lsLw9` z4q8fQU(hlYu$ng_F58G9DayF0IQ{%5Joo@kFz7AWxKW3JB*igVN91Dv^UY5ch0ilu zO3aMhBu02MiYftq>^n+YLDABG?TYgdFOpPtlje)=txk5>JOYOY;8KCqENRv zkNVr40BTo<>&>jEa6G&9L?;K@?_K4_j-vd0Xh2JgR1pSDa~QY>{u0+6ZlfcUQN8s> zW>oRpwG0+};R%gD$BO|A|IEq?Ld&|>bU`gqW;QUR9wH%%*bD9i#wPYrQQ>J{8p-m2 z!~H>;TOBo+svk0~xs0b`ds0 z08D;Q%%#EGQ_yvt^+%T~qPeH`Afi9GmY_kN0}_mUCe` zEL2lAU zjs;=o^|JNJRgor2k|rC4C99g6fHC)9?K29BK~QVSyy&~O_vlX>vn#s#v47Sj1tbvM z+ke@V7^kcwc#6SFK$D<}s0&Ke^~G663(r+UPA;zz>Pm{9880V2hnU^R84}=Q_CI#Zt_e(TV!o=f?f1;X=W*AUk4HaY8 zr@~bXYo?psdPBvGvJ}}(A3&LnX-m%uGDVR>QIxDKYOcrVUtj`EpFaGU1c!}6wsYp< zX^Rok%KXmUj0LDrw&AS`#J0M7WMmN`SjKYWF}10uew&l{h8p%Bk(si{d3mz)F%XYt zC@U*oh+RG|FE5a2E+yp4!Q0-3Qj|g?wH#>a_9E1I97Ck^c}#JNoF~L(2dlhHm{%xi{?IOC4%rv@LR+6XJ7PCLE?&lp)F$HqqaXV>T-5sq@fD0g99}6KT3cnxFiXL1 zBzwDYPJ5d$Rm{4Ws+?1eWMy5^tLEBd5^wk^T{VM9Z)nUBYJ8YPAq75SEe0~WKJ8^~ zECSxs_NQ%RG4jk>1{#0K)B?#Zg-Xsy8$=cuTnb)Y3YJV2DqRqZW_-{Hie{jUwFw-f zA?bb5-yP>3=mGe>9vlqcE#I#LkU5Y+Tx8e>sm!!cG&vE74{t%y0?YyDlf{p zaiPo`H94m!NE%*`yB}vI)Ak)smh16gM*D<;8!Ej*$O^<_0Nl|8pMS0jZ7b0eN{ z5qVE|2p)4Ht!fuOtliLzaHhZKtOy+fuJy|$b3fDXMt&6xj87`;XM3!aKrjg9?fe3F zE6YV$&f;;1qdsJig_jrheZPAm^FL+lp`V{YL`G(-7XQDi#szQ+C<)`fQ(b9qF8%hy z#cZB4z_V-K)@9?W>@MRB8h@I`Vo}B~%j3sq$;$5Lpr?hnp@InRoAPoFavG|H7X}li}$FTVciWs;=Fra3!`0kNFk%esT zh}u+qQ-1a@B%>c$4^xnhLeTQko!AudCSPJlXwx|E+BMW?<~OERd&CTLqDYYFxidrN;uZPaqf z!}inD3;jMVKxT5yNV*b2zJ?MVDKdGK(CT>jfib~WtfVkNI7K3Z6FyE-lEq@2Nei6@jb|n-lNv;OL$15E8$+caRgxd&JW__c7#+=LzcqF*rIM~Qo+ z)*{wgvr1z&qr|M2hc9;CoD;=;LJQD_4&%) z*v-GgRLA<@V_>nBqbI$UvoqiG9{okoC%8)R9VSGJpPaxElMe3#^4+wfU=PPO^x47Y zc5^fPp`BEYjq7{j1>VuotkC;g6cpWNPKj06@=52Yw~h{(;cyMNW_f#j+}KaXIGy-y zM}FySOJ_$%fwyv!?k`r)qL)riPHAAP`v#`MTNkPC2eC{(BtFS^O;wJirCMR9qsaX1+lA$l(03?c8W;ISYFh+p!!6X;C7Zf+bpgnRXFyXFCIcGc_)W6O4_{z(BcybhM z{6!c{2}(;1OiW{qOVs&*XY%EBJ9wBnSDa(^obhmWu~E$dBPYqq^TI^iLFwbQ2Sq%c zJ|Q7a(7zQ(;QX*-GhRv>V9G!cDJd2LcI;d2P~L1#fUBojPv3oRb&U)(%hW4`1n?eNvX2G#5kf3?Sv zTyJ+-xVifIxTK7rz(f()kdP}r{P4XSL&JR&3SN4Wapf<5%}V0V;ds;ik!nE*F=1@& zh;)b}Q{zHhXCpBvYZDXWfiE-Oy_L{=GbMeiA4iHOEuYHkU((!0n8y11jF7)NY{-ZV ziuLw-W{G#Dx{kl6xcyt`KOjRB6&(! zS(b2)H6bn`BiNrnjh1$7sFL%eYMVQ=a*alKhri53x`r?H_<_Njf7++Xd~0K6Bq~m~ zBZ=?QfV4^rF6a-{AiP3uh>c5%>`UWpObbYBxcchgOuC*Cu@ltr)k2of3a9SuC(^Bn zA#2SCPB(%`PU1NEydPOc^tj|TU$LZfU{Bvv;^3>6&jONLoqtPXHId;3fsQJ^bWRk8ctx(Qsqcn#cOj?=3&SKbanC8K z0d&;F8ob<}%E~)0kJta!6DGMS!s~#b<^ayIo zD!Z{Y;c|7)UJG5P6*6^njN6pY;flbz;UOvDFHAUf zVax%+k0c-x>r=yoA5+>~Sm<4~q}Qh0X${_GRC&M;60;WrfAia_)tyk|LylO&D{#H# z*%fz||8!898pL*N?P^^`r_pNNMJFvKH&8yDOtiVg*NGH#ef{Gr6M9=i{WiFcMNIqw z(`;e4p0f1!&ppSsSY{i(db}@UOa4Kr?}u0;8tufhbaYfkLA2gGbl8=eQPepeAW;hr z@*-O}W$(w68JX=$R3gbOO!>xb!M!gUek(U9tP#tr3!xj)&V^H%L1`ysA_${ucmARn zf|?Ht4I?Gi7$&y|d^e>OPJ=PLVFVS+dfW5Uc@LK*u`P}t?Qy^8iL>|d%$3iUb7qhR z_a6;(h?8;@vY1?AQXT9I8`>pU?~bqBj07Y`xo+j%x}JuG zTy6=YZ;hIe_N#Q=edM{lDR6zep5ECWX5X&Ze8432c1)o2*hZcvZN1b4Z^Bz^J z|AL=E*K3(|H+-aP>c;Z0yvV=i+&s z*i97V=U@(g*n@>Y!)!HpV$j{NY^)ci45T-W|2xEre5`{9!jtG*5jyT@fcGCE+viP^r`7I@asq_E)(-VmCy2@Wk@K9X zcXz?(<`Vwj$}T#<(rF8o3l&p$X91c8hI-a5 zBzx$AIg>C9Z7d9?2uK}9!r$S$8*TF3=ZQ|!;mzPsAqaew=oVne#{wdIXgS_bWfUra zPi(ka>lgXl!xZ<0z<`9vejm{P)#<_UlTn{Sh)yBj9c*6zMZxan!43dvkHmuGP(g(; zd`}2cqUMDaZ~iw%7Sq|hKe|p6<6Os@9RcrJ6wvLk6@bq7)qZaT6#5~Ir|b-X%dcR3 zeWdoM@^Fz7$<^1_$H2xm^i0SxSKL!nrOR$GnHJ(Jm)Vo{4qFH-ESGs2Q{?IEC2Kf7 z|MLrPY`xhkqxY@zeuEVPG24baYk@-szJwlpj{^LcGVKkxeyVBmrryHvg~7@E^zC?bC!o`eF)WhFV+jvDkHJ z>C($l5fjee@|lg_vi{pWZ<8T2t4m?w4oSwmTiaFQvwZ|z#cRe3wcd+Cgql1`!EasO z25;%s4Q`c+7SKgBB$MZol1zSd+*(jg^xXCGipmk;bDx_RgOF($?UXCYj7;b!+=te# zxDM^)tHghPes7Gft?>F62eo<=;i>3xRZ!8nUg^={SWaB7sIsWLM0Wh~oA>K_k^51& zG5iUW_SYCE^DM2CeL^;~&$s;WM$xw0X$g1~)Aer=|AG zoG=)0Tj1N@FhN+5P*WK5e>HtXHA<0bd%1M$9BN*AZCYN=tG>xpTV7VxhU4X0D*y=` zoQSgAz6eufjbRPvimMSFnn-_dny__VGFZYHyH}3pVn2ja_8^F|lrC%xDu|d<@+i;6 zTV>O1w_QZvUj>4uJ|O(lA$V0Z2r+g^z;bFzgVMHYyC?H%+4kuFX#uzl3`09b$nrl@ zfslNP{%Sb2s??lnhb|)!cBqdQ#Y~X$uTL!m#t}sm;64&N!62?KM##o(GHWcMN{h>+ zrfd1hZs{v8D`2B=PZ>0C9{hLI| zWKaa2?rl1bYJ)X3;v~ycQ=}ChWj8rsB%T_MFNy%+kOci`F7pEfA86WSox>PU`>#np zVy#wcxHpuThm^ep*eH3NxRa1=N3L!Aj{-4rK-qfzEA@aOXgxb*WyMrKN%}n*fOFwU zj)tk$7p9u|uc9N^f>~HHx!kDqh-!oF42>d8+qQOcHH7qumts+BHfsri%n0r0&jLb1 z#7os$qXga1^Uj7psdjb^;?k0ORq=Kx;_s3Myr5!6G4+Y@@V;w69WE+jgY-h9!-Uk; zk;08}b!YSS4_5#aH4!Ig+7MF_kQ${77#6V_Ex9F97Ib6fv>+OZF4#dqLo|Fw!xuuh zPzr>z1Dn6}yqF5>JD=8MV5ELt`OO#Y@g44?lcpwdd_n>UAK!EiaB)*nQ&Rxpvt<*Y zjL=hC5iyj4PD)x@*x9*x6=;PM*VfKnb#BwNg%AUgNGKK-mfV~VXunHrbJf>Bqaz{; zs;c4}Pi2mt&_^vRqUA##fUM2WiRROB^r9$w_X4zs`dP}?v5D0#FMQdy7y*C*Ur9^S=6H@)GJXmHm2qGjj zA1OQ!xZ+&*^bziH(h&+LCkd_b(AKmMe-OfJmgB;@c>2BwlDf9SODt zf}k-GrwCY0beTy^DEkq%N?mKp8J`onq9gQUZNkFBinRvG*ZWC|wM52`!V)bt&=8(}qd*lsAawIJ-dWQAwEp*#mxNebFN+a?BOxr2PA!yoUU6 zbIi_GazCW)J&~dfoZ}v;)LsAznKv`Oh0{5RjXTF#M1lGAe%c%A}>ea;81>dNrqt!65idJAl+GceyHKm zc~&W(Tc5=0wy<4dtZc2v9C> zcIF0Ih>Y!+8P=vBBl3kd7Zl^AEzclsI( z%j#Ziz_i+KW43#^OK5%ICD}qk5y9Z*7d&+=+r^kb(~^+*DwO(JCvalh(ccRvo@CNZ zi<_r!c&>U{i2vdOu#1+KR|~4RaD1k(m@xI09Azfv{XD_A^MRR1@*Vpx^NwrUgH~<~ z-r+pZXEr-C69`l}N9*bsW?>BluQ|0rqwxKm*4d-=Km}4kMq@43e?~z!yr0-7AppE6 z)gb?-FNh`jAcq<^B+42+reOJmd05uUOl%7rV*&K70xc$Tn`jNE&|cLgWKqQ=k92?L zOQ!S6%h$HLTrLDjbG(L}5o3au4j(+VcMM|53Bj!yyxT7={$iMz%1V4B0mf1ufRJg{{dux z0}9$gwxy}@Tn!ToT|QW!)#Y4M7}iLG3oKRMqCbc<@n5{a2h0f;2jUIG$BPwtUUBl{ zS2{M{<2he&?BX}WDOg#t%;j1`b;AY#-z+j%Q97A{*-!;m*4^7jBva`V(b)3qPgYxP zv_@nmJu2d+FPgZFnyyJNYKZcZ}CN@&Uwc51Bi(&?h7tBp>P->v5A&xQmCuYLDgD)>`#P`jdJIC4zx~u#xH&OE zG&w6wbuX7TDdTL9F;X+G+7Pg*A!w>+K$cBGhN>25g=pm7I-kGsS;GtSlc1uSR+le) z0^S8HnHhl70YzNgznlAljE1n;GBbQ#@gF<3a009j!Zz^0lMtKLvr#PzfgGod%vRtp z{jdHh>CX+q#ggV<;j}Q*BSh%*{FGVX(XLmf#Yygk$DP9H%o4y^o|35J+d5&{Y6{qN zA11obRiqR5(7_?fQn#Q3%aMNK68MoAFC_ztUeS>a5PToLX4aiDo93Yep@FFLNF z*ljj~<@i>EbzYBAcO0=bnor5oe#u~ZOE<}AT9`{g7+=H)L#eZBv=f%ma*qKjMKf=P+7NiU4uTHW@7bJB7c#1!V-2ndJ z#)v-V!kRROk|%jMbY7YAVrChj%HVg#@Na~3YUls*mvHvmU3gz!mHuqQ1+i)LDC`}BA*-Ct$bm4#^%?Wz3(U-zrex4 z*^^hqz^ItWeC7s{gKY_3kX1#Z`ZH<*q+QFrk!(0!syRhBrf2qYqCRiG8;0>6nO_OZ zCU|TkV3Pe`D;IHEyb6eKs>y>MKj#)LqSRdW3cR!6_OV+$e^#1nTvjl|HJD!szkSA0 z9#izZYO1V^gpn#bs8dU#_vSTUo9g9?YZXKD9FJbZs4i!!Oe*;hm|+Pt5!wEDuBX>& z)K;`W4+^OT;eMX4ELI>t81HMQrLFG{ZOq8nSN}aC?)#sQ76*Flqq(74fCveg zUV?TO9loa>LnQHy_&HfeV>>$9+JL-nki}nvsrodD{La=w{4#PL7HoCyRQcHG#^2Zj zB?A;5V!>)mrFhd5>MStoH4p?0_W&YlrBjRF^f};Bf9#iFihBn^(yndJgw5uPgsWCv<%h1?Zpg~SeEp28u z4H4km<-r^URzNrBUdAZ0%Q_rlLlh>Mf$)Q_&jOKnC%x>|iB zjy9gw{WVzpodbSxZH)^B`4A=9OQYuF?hI2 z(J_1#dLo4W)9tF!?rw@OzGxMFo;q9(tp#;jNlhpd81<6L*$~<_^=(h#Y;bT;|L!!6 z$}KK9anS)_cQ>IPf1rDFI#JdejTc>@6A~0;^wQC_ET=4*eU6M|)31v!IGHsyGow7$ zeuBXCX+D8tMR{Z!Oz@ZwG^c0>Fy|Qnj9B2xB*mwOe_H`3p^rQ}-!?IJ&aF{99%B;{ z2HCGmb0q()4sZ+-?@FLm0wj`j@wElP(;ad_b8{A;nk^8Bz9-nI;XV-fkH&t_5*Kzp zn>>o>G2z7-($KNkK0Z0&#Q$lcja|@WsP5wY@J}!FpBZY-(o+_f(-=mE!Em&l*b4*O zb+wb3I!#Ga2-peC1;*wIFZcMjC5SeY8NAeDrj@ZYV>X#75$i~0F7B@W{AvA4)XMBN zPa@i~ylZVXoui5}F$xe0?7x;me_k#~tasv|A}8;`m|a>@#_C==DD%>~xB?p9`4CvQ znHS(WOfCWwmT=AgWNUAM{b^ZfcZkFkDx3V%g23`aH95zYx!vciL7MC$DJ}zg7zZzF6CR_ZcCN|gr zECDu%qAI2#&!m!OXTySj3k>{7`IQy})L5{}uPpY{6WgEDfEF6~yjb9zGS!WQiGfwa zqY4((X^#Z3AIY4Q788+ats}t%`J2Y`J>n0!r;A4BT1AmMHMvk`!7{TmuQ~cV`iahT zCstC8DBnfO415|&y;B+%U9Y1m;??S$L7~-ZI~%TNX!ZBU$cPK8U4fW7*T%5ARBvGj zm*0Gni|c8fU^uMG%A1{?dE4gD5m&K5ZhT{6;DQ4oBF+>PzG`We@;PDhX3{M%=u(Xu z(2nmmIA910eF|Y1?@jBF!LHJ>vHTb$j&Bb+6s~;oR4CxDlNgy~Z3uePNMQOuEg+04 zJ)Ku(&)ZR|oUVl-;wU$Cp`15_)wl5LDgXeju_+VQ+0} z6i=%_E>!%pP?S|3Z0~*)I+7Eb6Ph{_E>Qqyy?~AhO59A}#=MNnK9!aWlwfz_kBt_A z6*n3~-)=g$Z$nxA>5+b^(AK1)QPZZHpSM<{jMLhB_jMC>&fH!vZ33Z zV10AV=*?z}hRKGR$uI7Y165?r+kD2#-4Nq7IHlm1Z0^m<$Dhe)e0+5EOF!2G@4c_$ z>S~$-)c?9%4p1NeBzjJfO=_4DEuDNSha=u}z68buIV(uPe9b+Lk^Jc+r;p z!TlQ26YipqeDODNJ!c+|e^=fsbhds+TS0z#MNl|4nN0s@%z@lI(Ua^Z=GKVTOFxczQ4KH?Nu$;-TrzHjCa{!`_w_a z-(Ks2j%Y+bb+Hi!;PWtt`Q6EA_}^^*k&RxgB7z#F;nDHe)iYeT7E@;DSM`pcyKgS2 z0sl{LTb72rw*AT>yJmYR;4})p_HfZ#zwZj@WO_wW_fT!Opt9BLh{Bd<|`w9j}aF~jtSvs4vmWP8%c_|XLO47m#7_p7r9wm z=Y|+y>mo$HK~7@2BC^P6-~|B8a^9@ED6{EuzgoR=V^fnuVhdnjTujO4BAr7%kjY;| zMnencVo*{_ndIV#69r<>dBiuEmkX2`bIW9IM^4Vpc5qce4N$13hHUYUY8a#Hznnjs zOzM+&FCt#K^JZ2dbL=S^HkFi2A98$anrU$sCf)b=a4{?kZ}S%=k?fo3r92!z>DtlZ zp@_H#&Dk*F^PEE)v?;%TLu7Ao>R2+@r?@yh3<7$F3DzvUK@ByvsQP-O=umWg27iA| zj9@*0p<`zD%`IHx3)~D@5!kf1*Uz|E4j&LS#3MbTCY7gn%qJBc93n2oA!SyJvvzh| zByf0oxn6iN38zTEuCAn}iWf521Kdyo8zc(8A|qhXp)gxP0uifcdn`gnxWo9x%S7Co zeFGTTk?zs_fHS@QC$CR{3iv})a{{WuY38X1p48QMS(X8wgOu$#gWalcD2j+P_sVxx zqtO%uU@5nK^2M4kqF37Y)KzEm?!SOu5&K$`rn*j`w^sW?Qh^z0VIF** zR!2iK5;}p!f~bDU0+yh{7P$Mvzy!z{+JF+ndxsA{!ft14jstIPY#UqBv+`X^isc># zB=tLptg3FFunU+0GaiD31qJJyxm#TRWP_?G?P^P=#h>zwzFUNMM7qj!C2 zsl;ah)RYzW+6zy%x3#E{P~wpwQJ}D0=@dHW^RONAePS*PfTcDz|8VOQKS2sw2kz}? zNuxi$zO!TF;bpKVjzxRU+kvL~R8Cl&YT^%xe|VAjEVlfAuE83{yRrI9|LP{khbnk% z`Pp>7q!ZN4KbdaGNX`TbPRBiJs>#5AD=W`<=`+*M-G$x;Q!7hxaR5F%A7Pw+tUj~0 zU_7$Ff2H0Etp$AL7uWd0>eBz?>Mx_J`o1@ASVBUOmJTTqq?<#-p-Tj%ySuwYy1Tm@ zq`RfNySoJrUH9he|2LlJzQ=y$7`k0&@3rQdd#-ChWXUZ=%ps z;`UD00t`inVF*kPFwijL6U*M@OOnU~$0w&O7FRbYxMYiy^Mm0@OT!fYBL16Q=OLU* zwyVSMKr<2>Ywk~4!mS&S;f>3E@~p7E(t=H-Jz72OubGt`lL-Mtt@#(W)%3qx+fcl- zbgVhkaQF3$%8tn-Y#AW733?v^H5PN$n7UUF741-OtnP@@yQ08j?IgN0`y6=L z57!#wi!5bfZg)F#K$m>R`i#;VtBY0Z6(3+3Ndz2!!Kzx-IULD8Zd0|dUyB(&rD}$g zMN?ngu%8sCAGQOH_|7j+5hG1aBR~_%yuE_!M~~VZ2gkfT9BatFP2CMso#l$o?DlJw z!tkYbZk7F7%k|(x%hhbN^G+N`CR>E+m=j>1a48-u`lM0*2BTE~V*=%I6Q=@?prY*_ z8!N!Pcy!6C-Rf|5c9t}8&h>MJ){I@?8+b+w~kosBi}W)+A5>!D3vx4P;15Apm@ z)bI%PXP?+t&=$A>I~sb;mOqZyI%DZiktZZi`;_`!~Lu^B4`EPFl{4qO%3@OC~}|!<;syr7yg|$yQeE|GK7H2 zKoBrLx)i(r8_^}+GgWR*vuX2?$k}Eu77lSf4zv&a6WAX_YbRK6Zmm-yf2YMD_D8ofLiw1L#Z*uhw53I)u&JlGv}^e)xebM)eaH*&LN&| z3KKagRR(n<)EyTZ8k!T~!)Rx=xG?jMn7KLabok*=`rrlz@>Y;d5}#QP(cV^Jvlx)3Ombv zXjBIdM6lWy6$uvOi59*NOMY--J)g0O34}-})#Z_|`K8(Gi)HH-vFB1Tmw5}_eOaPW zD8Bzc`6q@aWI zT`vSv4P8S|d}gGnsPD0eWt7J!2V!7*+?pRuKf#lN7g+e%y0dwu&dzv0c$z}_-r}XW zLX8BA#cMyYl*lsza&koZK&jxKmhX0d`xDs7_$aY;UeW!b z1BY$#SroK%1~k!Mi{8JZNJ_rx-%6}LKsQd)mNo@#GFOWqLPs_0bA5Xk5~PP#;4ZqcZmq+7}E?W(&A~@vA0Y)_>;L-bi-HZ$i-d zbcMtBR9dM~^9(iYvCWi=J;HpY%fdX2toO~6G*Ja5%(i0L`w1`L3k5Jo2Pnzys0d#{u>@nu?niuZOOhVZ7 z%uGydYzn&hQ)MkJyen5=t_sV@o8a61u=r%Cqtnw3TGdo^hfk~zKm}nmT%N+zl%4>3 za(;ezp`DQhX=bD|UU^iqn59a$2P1sH?<3%33C@kEc9CgtZ;U^YweWgc9zZR)~yINX+sO9~&DO8fx#@-}Uj=JYYuODmog-CPYzNQj*eklk$)W3ReA6 z(5DH2D>m#o0saNsSGC7{&INg7WMo|;-0Y%-rocdJ$6K=D(4ylX-)98=NHMf=c|DUs zL?{0KW#qY8o*KU&yuDQ(HLc5zxaq&W<#Ys-S88{<_u{|ZSX)}^OLUu9T$F6*-q_Xt z_QeQFWRxGUzq(xdm`ykA=fG|BWd_fdlXYrd_jg%^RVL~VTIcjRx5qt?g@a9`)f;-H zk6>qRZi6M6(q-Bs*4qPgdItz3@nkYDL|og=xFWux{`Uyf;qB)?y2}{{-zGRTpj+u> zS0&4rUTC?GXG0rZ_4LT$MJ1in<}UHA0*JMy@!86_r?vtBk1qDH1A3sMc-ck*)KgkW zrfnE^KUc(6e;TWzwM#P&Qv*a&6>INusC0At|D)vKAd{8H00ekdBw%X3Pd;! zjyj8gB^@rG z;9+&~w1&^ZoJI_3CbKNNVVMrs|8?UV4Is8VdbLc-yPJbX}e33QKz*V z5({+;%c!FS_%Lnj%}$a58Zh!umLN$5yJ!h)asx~7L~`e}N_7;-4ttZCS>kw?;3Br! zo@+prlsN=P!0dF=a8y)4JF{|TZpIHB-B!4*ufX88p<6vGS8ZN-aDebGg7FWn#kKl& zg}PtvFFb$!-WcP-pMZW+KY+numT)m#Y!whp4Sx|ZmPUsD^((UXF|_eAipeS6rBhl_ z7sIf0>5Y;#YloF8jqAh2dxTNf#Uw)Ur_0ORJ zwljn7LKUTdXdonz)&sC&-|B>)(;bNRQ?54rK!`Hb61r`d;RdaBKY0nXy2;!QD)B`C z@B%^dI)F5D8@6_v9L3;yZg;!92XLS2(`VoL`}_Y)AVXAxJ8B8U(R79btdV>Vhf_ER zR09%|lYeb)x=^?z(RyJ=@KgnY^6{^gp(_{GHiV2D9? zr+6nYG+5sp1s9&~Z{KGATX-Ur4G%}Yr-#}4wr~db4X(O7MsO-ngcUl1zN$)IyA7+r zNZ^5e+bEvhGA`%pitj*@&GQSW(lEz|jW5ZFd?F|7;!Hsc-rlC*dA=3C1#G^V+lJ>o z_ng{-0!Tc^(Nxh5$`Y`M<@oMCw?Xp8nBv9$-i`4i?F_;5#@_=buS_pCi(Zj7Z9k1s zjDvWJS@K4W0ci%Yt1%4LOHPC(h3J^I7q92ZTpPIS9@g{5$!iG6rXoRbs_;b#r~3_@ zX;AO{vRV9tp77wHbjb1YjVF!5$jisjs!wI~%IGi1s5sRuCuxBOqaG`;Vh`Nz$JChJz_aWhNDn!q>NcScI@k^OV z?0a+_bi+84Iyt5g#ldndF}}fk`$sa~JDO5OEr#NWN;Jedy%JTgLcJ_Oww)od6D02T z_uRGU4LE>%3gdhzF?v~vIb(#;A^LdJpsRhI)5d(dLLo@Y=P3nM_=V+nStHS&oH|&+ zg2nSTpjuC^*X3es4JT_-)DCI|O#+|wzWr(Q4P}Taocm4(%A%K1*QMqW(8bqowWZO|id-;uU#*Q-; zSDNTkZE5FyyhB;}Ay=xb0_t@{Sciu|N9X18kQ;E=D?TRf(|y25L3unFq63_TjL0vT zf<;Aj*%6age^GPj>1IbICW@~xI)2*4?Sx6W`(a_xSA8N+YT03yk7M&PgTK*Mg4Mey)1PFz}|xi}~-bmWoTnHa^o>WoY?VF&w& z$>G@kaC^F;&8w4dQH=pX^MSZU9_SRkyRG zB%#_I_F5FVL}M+!0sr4W2u(~(TC_+ws*@(eNP~WuqobpL+iRtoT)xSxxb~9}7Y}qX z|3M*F?Gn6DMZ533Z{aHf7Au65xEi;w) zBoRdqz#OgG06lj@C!IgCwI% ze|Eh2dBdF$LjALC)st|^W3uI=;Y%NU<;jRfA*Yy-Fh;}K7Rdx7YsexdFOdMY?ybXpaX@(6KJ8IH0LJD%%@Ix`m*D!Mv6cm29&W z>EVuq&UZNbpQw52^}Ylxqq{?#y!?pxZ*d4+j@b4MzNEYykXY-CSsvfr$%PurY-Dk0 ziWn(i4y`fCu*W5A0PT*M_uEXY@mfL$gc?txz0a+eYA38c(Ga!NW7>_hB@r313v#s!#i27!Sf`1kL_3@w&6y8AL; z`U-f^E6U4d?XAZpA{-9S2h!6m3t=)EM`^D{EBB&JGC>O2L%j0V%Nep^~+L_{*GJTRNBB=sw^tobGud0%)An z8?2*jPWmeKsBG>bDvp8pnSG44aMo*WKEvDrj+Ybxed_`Okd3D#4r5}4kRTADtNZoe zER4$+>>VFQ^rYj1117!!RNi80-NJ_^1C>vsfMx;uX{-Z~_U4q9LgO&R<3*Q=@yn%w zkoXN%?Ha7spn!3wc#=>(d;H19Q>!!YOXr2hy~NwJiC%h;p)EURWoKu%VV^WQrrsS& zI1(=%oAM$t!sD>5W1hG7zX~kxuloxqv~tU){=DGoarHN`)ogS=KfwcH9rqtb%F6Kx zO5+ipJ|U-hzFYaI8%)YF{G)~alpKQ0BFvT~DdCOVp75!0aeiVX9zZkGpJ>)TXAd)#=2p{b!(r4$WaJGtz zFchMzI7IoHhNV5aZAXdyHXOmf)w(6Cx_Z1E6K2qx7_wCS#Enr)tyRmbI$^#I5UmW3 z0pojOQ>%e!%JC3gKsNQ79D4i6xHz9S?jftht@!%F<}i?84JEWc8lbQn2r_t~ODHyO zt^($Siuv|ehckqwUzl$&7rvHuY2RJ!z{&NL=zZwublRZxXw~2QqIDNcntLI`5c4Vn zW3{6pz}PtuVKFo^09m~NBRPF-`%F0O1PdQB&BDlrnbWVg&OY3xK z4U!0HDDayKTT$r=ro?y1>$Is~7=Kc94<*%E?ym_=$IfKmPa0fa%fTl}Xj^Ae$D9By z|Mm{{No?K|=kopiaxA$eLB8Wh*GXOkSzcT^l|%#}2)GKk6A3=?e2@f%>-WIzVc%;%zkmi4Zt8Zl^MyuS?LFF94kW6jei}_po(AkQO|~!wj40u>Y^#uf zqFz?m2!(`O7EY1*LKTc!{V5}?w1o>-iPLt!yg8{!G|7bxk^=+-4?QzM)Ac=x*CX{4 zzhz*!X70tx+4J}<>+QE>B15;O>ojB1&PnN?W6Km34*s<>Ya9Y=gMaS{&L&rXgcn+I zc(&Z_Hs3CcY4)aAwZXS`!V6j&F8BveilAFg&LQ!n0MX z>*{^Cl!epje&)vSr+HsxFeID06>9P;Ny0vQT|?VF*o_Kn?fS$GImpb?GH0cghp#!) z`THm4I{;)8HJ$MX)$7(SkoEeKxXAu!HZAmu?(x-J6)?VNA5XYZaYD5??&g2qYF|%i zcTd}~+RS)9c=+^`;B|){bbwgRu8{UMowok=)-sAeuDZZ=xIQ96BM{N<=flH;%SbBA zUbEp9Yk#&kejbfNIzM1f!sbJ`m=Jz#W@eVvhyMhY0{#M4b5oP^`(y1?`!iM{#?jAIE*PI*>9ITD$o$+VeCkVU47^S&Q7@2=WHC< zUdx+3HqVcDB@M;WO_FRWg-N1AlWSBi&Sn!Hb(xv#v+o>( z!a8`t+J6s?d^#!g3DPxu;Q8uNUdq!`l(paN%!RvgDHzbU~ zvcrFGHahk#fkzqt34*) z&%IVU-BwTRKRkEL0L$00m%Ft@Hjg3x7fPTPOlJ`}B&ZW8PV24e$z>a_z$sXbRCr;I zJ)UQfv9llnOZ~mlS2W`LCo6KV9aH1h4bbAuVtdzjvnWMQ7}TfE_P*iwsJeJ3`9Sg0 z@q__b_MyPCr||iS@Lky%_g%rg~ z9iV;mE-_*kG(^No|5y`$+UP$^-qqf(VDAMh1k`5sACtKj6LX278`unXv& zEPkKX@C6Rzw4d(TQoW_YAK^`Mn_aKo4W|Llrp3M(g^=swhBG3XN}F4 z>;A;|8Q>f(3}VI$02bf2{?LeyiW-$a6bhd-niK^Yj?iRleUWx^g@`jG6_r^C&;?n0 zc)%PU;g2s)2J<;$$xuo0YD|&T4VwVcRbjlJ+qqy`b;hyvYG<2D7yH`gW*m!DjnMFL z_6T)s?A=!f_S7_Gf4~RFDkEN$?bOiERm^(p{8bClFj!3MoP+s z_3~P8t(W_R%ooI>+Jr7f28Ox$@fTF}R#!Z+vpu^{+k#tSo}TneV@AUZk>#N8adF?r zk?g1M4i664tZ2*1%E*&S{rl?;dDwECgIUVeB(NFOKkIpZ7%Bmn5AS((7iVWJK^BL9 z5wT(V>DrNv>uJ+KZxwh)2XHbp$*PRTh)3JBw%-gHq68A|h2D4?Yp6*`Ai~Ex+G_8V zN<@(GTMpJ*$~XYpRWk_W7ly_ckenJ9C!{*#Dbz>*%uduZf*Pl&lJ@8jIXMu}0Zn_H zba=yjCZ}e-LB;>NP>|s{2$gUG912B9dn}Yvo=>Z`YCT^hw6vKPa^0d=Vv$Zt8A775 z+KHk{Q28Ixsw!TVsK{tuYBlBWeQK><=l}y?#@gAjmv1=ef-|MX#lIN8(oRl<=xkpC zrptqZIUMH$R2kL+mH`qw&5UuaWoq@weQE}PzanoZsm5I~uD-(dkCUSGZv%jq4Ecv? zL0en8kAoPexZ`xBcn?GN=gs{-foni(k%)}I>2Eh#Ma!9rGDX_;*^74Qmru?SM(740 zRw|@JzME(hl}(j}C#*41@gYhfrBULb8~O#I3!!$%tMJHcxX@Fb&3n}xAKl$GmTO6pxJBT2Sw=H(P=Z`l?YKnJ| z!I}EohvEVv)9&0{|Edhe1-gy`D?FZ%UKxk4RWG0^iEXY)JbBgz79L*E_bZr*k8c(Y zEsEYDoe-sf)XH^Y&~A*^&nVsHm#<+tsXp-e3}k;)!$W#t3c4X7;A2Xqo5ShUJi2oR z?Enc8k@;w!*xi~4s7v8w;-v6g4sZF-8;@vMTE@HR%M&q&4LUj9L_U6aMLlvfx$2Az z#tn&g5VM~EWn|x6ySG70=D>%?#Q^|Z>_KAS5l*o?@QM$TBcfS2-a7s@3tjB9edS^k zc6-a+%Ln`RZFJ}eV`X5??(Xi#AlL~(F;-G$KiPu0l)X zR~vT5!?J?1fGv%CRn?>f4+q-Kg1HxE+x^T~%={P?(-@1V4}Y*spA->YSeH~&bF)NE zGuPx=(Cn;Z49f16^>%v#3%Q3sa%|;hxw6~{YGKec?wu681Cvm{>8Ogfw1=MAO9!HQ0|A3;AQN0V{kHWCaq7Bl&TR#aZd^{71z;Kwo(@;Kd&s_Z{Gy&!C}=h^O&+gx7r;L5`d4Gttmc zQOTp8qg4_X#x(j}EQ2f~Gh(P_b_bkXrGQlX3ZhQaxNn5aFx=c8_T>PhB<@bUU*8-> ze{sgd4~-_m9I8u97cqe&6LGtR+ueUAWTVI+amyNw#@ae=ALj8UTVOlQnz*`6=*Jf89av+ZTm z?F=3>G01-U_ZFA1xTnjBo&xG&w~LtrGo{=uq{CuX-(bN<*EQk8a-(2%!{Nlv&IA#( zM$D+m`&yt!PF%~X42x@UXlRRGwxSJ^b|P(*?*um>uk{ zuQV564!OR*;N#k_KP*X~-7|SgSwvsJ7{IuTwwU>@hOsjgZvUO$Hs8HAhs`}$#Nvzp z@UXNnoCA@R5i4Mv-;Wib>tu_jIah!9j%B4A{5O}wXp|7MdQqdzoeO^LoxGx={zZ-F zSN*SiG=_Iy2r!}q<3`eXQ+$l7IX`}Xb4RmTz*9@-fo|3F#S1)dAOZKaz z=Xg1g)9M9?oGciLEEEYug(YT;J0zYBc&ciJZ2o{sLL79I>2+Q1wOD?C@!D@OzN)tS z_A@>&4%COBNhHFivJTIio@9eqj%ooCa;3Lp{eqhvLyF(@l z#zCFH*5_MkWoT}dSnGOmzLTI8;100&?sA@9`!akAe!Bw?Kpbtzq~vV?DoNf65f924 z<8?i$$KCVb7psX=s#jE#qSz6M)5)S)_z3C!)vVeXf$eRHR;vWEW@nv6^KZRAVtadg zAtL@B8x40Q$5^i%b?PciVQ3dJX#xsSoRad8W~71rN8Cf7{&%e2h@H5;yX~l^jelBgzPifCo;0Ck|r7)K@9J2Nf+QjR<}TQQ@?V6aTv zpxhlfH(5>b(am=oMD8A1qS^w-yf4s&_rZc~#p(~i!tAs|LPA2&kZgQ@_C+P$jn5uY zd>dtYSzGIKF&=khp}rA^h0@MLb-;;M%v-1wG}(A^g9j6GZF1`mP*HDMzblc~;Lyk7 zMN?$wCb32FwN8U`D@scVT}_4n$in+hw7YThIiN~3qNkL+GF6(65O|ni?f;d*ZlTqU z1aVRmz)VN{xyVe~m{emsIy{uXx=CUlc|I^;NyeKt&sZHVx<<7zl=hV~TNJqjXPuHHxY2#mQi!-by2T-f!dfb0i2XqOt_>;AD`#TjdpYaJdD5QsXj?POA;D)a8 z&e*6CYqVfqeLYg8|MF$4cD}Q-V5;SL>~e8w;3&&?&XB8Orn<1O@aJreMvL>rwh2-C zY`2MpCXhrlL{)$38ZHl34u-s%XD8+ZzWdh6#LnF208%sLjhlmy?>JH`ufld=ZS6{A z%I+?1%rY8L-9IqcCG0NOhgAUB3?Qc* zUs-`UIFgq?ssAQ-UsbdK+9~1Pc@S|OJTf#YYi}oUjg@By9mLp!$q4Y1Gy7Pty6{f4 zF59PSN}lrbu~|Y2Kve~G`ci5A=n@!#) zf%$NJkV))TXOS1}wzwN&bb%8NcJ@ucBw>7OyD8wc!6CBywJl+NKiZ`;WVU>u*W;az z`p6={%LLdkD6ec7&c3eeKY(+sb}RyJb~kZ4(35GV3n$)i|8PH&?TJo^{;B6mbY zBJh%@yhrZ+!2Cj7}&3XjFZ)czTMuGs7A^(md{6W4 z;&hN&1o7d7IB$BPgV`%HjN>p$gg3jekK{@`m)I^goH&e@o}T?^g|#`)Z1+@)!RbU` z(Z7HX+R+!2@HG(ph0$*|0s;Xeu*1LyA2VLvwTw%B=b;F24V^Z+P_fQSzOF5rW>~xl zH13f6Uo9YnUoKZ7+au3s(8{e zE>YZUww3OUUfo|?S)vkm8oSk~p>3yhstiK3aD`M}LQ=+~`Wt~f(bytww(x-R6PcT< zVDLq4o1EDc7`9gPD_9;x7EUvl%vM%$S+Nqs3!HbnUcJ9M(kOlPOcrMUaV2m$ppTI+ zwkl3p7{>pet(@5h>fJ2G5iGWIq!)c?UtaIC(0rl!Id~ z1jMN_EFP{Yd79$c3qq|8A`GYNEl1d3{(k@!cIcc}a!!uO z;A}G@6nD3%cGJg9**ty7d3akl$TcNKUV-!0K=+>E>{GsxXT^4w)}zZ58xaADUbA7r zmwdM9%MUfYRUr>=SmRo)LS((p^O=PA+Si-NEC9%%quDa82}wU{V6tYcbq{n@bw zj@wOvKxf^uuRw1ii7+ z7IGj}Iq-y=KVJfF3qTJYI4N^V3d2kF?H8S7k34I*h|hNRPV{*k#fn*Kcn|JwYCSmq zSiSr>STVLkW~ZttCaGTHE;9RO>n5Yt{og%-yMBJ<+6Mc#S^%>Xn4fU4y|Z_UeU8Yz z7Bi#>2+e8(XtfV*TzKv+XCK2Rq4?u-6iAk8IYB8~bJ1s86(03wi`V}^2bN&q(Q}aL zp1qC^7$1~(r2}|IJ~lK9O6`gr0by)uz(P7y*`0eycu0&@A153iN(Tfo(C~_$Fj=#p zyQ6DdI++LVB^vg#%$S^!=Jl!3B$`tKG&+Dsr$)|rjZy>(i&k5DG^f0|+2PI@xoMVH zQ$~#=wLo_J``9E5IUaHQ*)eZTay`BR!*KHH-(39k33}^h5CC!Zjh4S|#s6)_4ziR= zETXkpD1QsF`iku9Pa>wu5S31TaIVmJb-iVLONdV}tJgl8{|4-c@NZ5yAp*;Il~VgG zUuCK86%O-9M1bh~z&-2Ta8 z^1qu*eRz!pbL3WiyeeqFp9p_-=pQ14k0?0=QVRci8cuOqTs3m+X9r#bEL2)XG^tAc z!ZaIYW7wka=X6?6S%lx_RIfkklpAu3W6tnf-gkS7^TxH>SDs9l`9-3b@{tP84SxxLZg4G_nIv z*Pe&&(?0217)hhr; z7y;Sw3w--o9kky> z!2YfHx_^HoqF+*ZogIR(y{nysrA{yHeQN{XhodL{tj{UX;K`&N6zgr-Ifb`a$AykG zm7@;Ko5~QL3>-iF5u540vjEYD@pO00BiM@HDxD@-570NVWR_Cz&y{uK~)o zWB4@$P5vDpQ1rIE-bYtjAPNA3mvB4O<>TY=4f?-ucLVb}D^aIU*k9LRZ&1g|p>fz$ z8n?O((RLOy=&}pU46*>?$9gqsrkzD$=*Z&y*jeR52Ipdz@ust$o9@3Ef$SZUgUUaI_fF$kDguU7}`E8Z4!Uwgj%zvT`G zs~yjOyvYyBkNa6-Pm z_1JTIIl?|+WGKI9nwckFd)$ELWwj3HLQeftJ$l0p!aUt7_3Iohh^#qz{cX#bu*dXs zY>6`Psm*Woe>Ji-V%Zc1-QG8oUea$LWXLl0`(gs6lO+R+x5y8zNaW+zanor z7x=8(zO2k%=MhB=y!3^|f3pg(2|<62AAfR~TRp0B>d|q@p%2%?D}&4UBw>Bav_w@5 zCX4R26hH^5B!1n&Lku}z+rxszGq>4I9V`F$)_`O4Prfnx+6(222-3W;z4%d}I=wO$ zjjJbR4T%bhEiqv@%h+?ZYO~e%u$DZ0i!a9~fp6}2s?|~?v3)DFEJLO4ICd8v{*4F| z^L0GKTe@xruW?lh*8j+uTF!PzQlU-zcE4gLna)Gv6c?YFUC~l+p1!Rc0l5d@#*DUP zyrF5e`%zGpmvxJ}l0L|^RQcaV`QbI>e-FHWm`;pQ9Nhy%=9?@@*;ddUk@I8v`zT8JTD=7XQ`~c* zUDrct)u1@KyNDifrf^ZC-20fOVMhS1BdU$@x)Dpb|23bpc!en+c7*d9I!yLznt^7~ z+B_SZ&yNz3shsL(f=r%PH?6J0&;Ed2A2knf!^-NciPhc%OJAFrRQmxm^BRa1xw9R4 zfGI)*bv4qvy!0)v2xZv%JdEE`kVnzK+H>!6`>bqxwBGTCZj~lJ>&|H`B&%<%-Qz|z zr8wT9G~d+RQT^Y`@IeR_M}Yr+Z1r!$Ec*Eqk zRl=O-*=Vzt!M~_@b(S7#Ppjy7qndsgA3(fTL|j6Y@!w>5qm3!_K>L?my8sCCZ=f8e z;gtH{TZYXU%*2P*KkFAdoo!(v;>mu(R_)%{9J?&=jIdh1*;`w(=ai0fvT98{EIUws zFnFxgOXF>|ds;m0{utO54Pw2PrSy?@b*=QVl}<8aTtzMC$x z^)vIkDejFzbBR;mvIi^SKbs(iPwV0Cgkj6y=Un>lm}L5Ks%>!E^dB5;agu9gRmr%0z$5ER}hyn5vr%`L7RWOx2r~O@igf4E_ zvZ9T+{~_u^YtQbycl63cKOKIH*+SjM5^1I$U1Qp6*&x5viWxg_&^fWP!h0gZsV=;; z7~i**bUnZSxPNryBgc_!Hl9egQ?!izfRBGbxPNfq4Z!91hQ+o1e=%A6+ehurrrm;P zYtK(vMPrH?X+3V=Gs-m|kUKl{CsAWGAMlH9D%4ZOPt)kQa0U;h1N$g<@LCDO=)zxj^ zq3NTU-d0U~##(l@>f%CBJN1{8{|vRMZH!x8Z8f;N7bP%WF1q|oA|e>8c4luPN$To! z8Q@XN)3~~=7JRLp)d5rskToDi{2Xifv;Y-S)MJI1D9do(=f!rVg8MT-u@7FJI3o#r zD_>ATwQE4P7lLtQ`iNrreskR~W#9Q@>a77^{EiRkrcV3adZyk%0yjZKH@=j9*J32-@eQ}(W}ahp$GiT$@J83}dtp|rr}@*MAX>h5`dODOT@=>`QwOx|Npi? z2NTzF>ZImk=WD18g@PiX&NA${_aN4PAY&RL2;malOk72hce}|>tE^>OA_x#k2ivQ{ z7+1N9Bl7-@yl^hn1m7`7uG29`@23TU&q_@`2fO8Weq3N7vD6{~phTnS*PSCOM7*`} zNe7+B3oxR)!+1aGVm`p!Xz)AQ?V)I&s@HDy{(1|8CTMO7Es=%F=N4>@>}0Pt^SXw~ zUh~T!YbPXK>6 zj;?O1`2K<*Dvdvfno?9tEosPmQzwU^Z9EjYn1X_76u;8;_xHQ39psw0tj4#pzbIw@t z6H($sPdS*qAY|N5sz#v9ubB$86CoNlvD zI3m}5^hTr363Ts=XU7X0ht9ZbPYEnWJh;sbeez-_q3UN46VzTZ&-Sr&hs%Zrd5sfM zr36&svAC4jw13M(nhX}1bXay!_^eVueRaXF*n+4IxiiyH3`h0aEfR-!h;Wwj+$NBQ zTCk%H#`<){Xb27Y7b@|eV}B4uZ|_G^Qeu&b_ttDgu!q-BwRQ8jp-+U?tb_tx9n@Hc zJ%9?h{>y$J3`z3^jPb4$ZhtLB< zC=UV&+IThd7f0wrQfWz8Y1A*Y ztjKm%yE>k`WNQB1AKjof^)@r>11WpKIx?Ervj#@GWpu)f{auTxw8KNvBG!PwtNhI{ zopev~TNPyuX_d&Jnb)U!PN*#WWN=x9_5uA}N7pzBiBk&&UpD_-2)w0ui?kRy`Tl*& zUvcqD9;F`PBaC>Bk!H`Ok;jxCVXw!{ooi*^D|b&F-uvx*^~-@FY!9$c<}w8R8*zMN zkzI~+B8Q?SEy>yQ*OdB2;xvnhu@OCMw{wh%DEsfHIVjGMjzU4OrLQFF&q4*SoQ9Q- zGH_EpO*7wGb{IEh{q^2G`;%*q+1ys;FmgfwkBffP>d2;}ny@aUo_BWIN^je>`(ZEV z#S^N&0_Wy;--K8Or8Y?Qe4q|JjpaJJlc0jaZS6JaQ~~_;ubLsj$#6A}_Ie#hJ_)6L z*he%dma7NcO%GqcFZqUiaQJj`d}@%;g+%gDP`CaLg%5IBVWB4lPycfNaR7;X-Mn(>2BCEfq{hJ^=fak}qFps`F;vrewX%1=&4pLb`J8!8ir*3&wS~fD z3zOq0TnSFu=_}7Flso%@(Ni<2M~$0R&k0^5Z(M{D&#Kx|{7BT`ne4&}r=e%c7JorY zn|H}xeggQpdce7yL9?t|v&83)PjiSP#A@0p$SnEMt#@_x&VQaCyMMXTanyniu6Z)bVmutE%hG*6seFWSEKxh^Mmz5-Q#F?Qk6gh1ZU->P?t?MVh`*5xR*Yjlb` zJIH+ty@%u3KRgh2I@`v&TV0sqrhb~Mot@*i-l4@e(p7p*_ka|}7(st3i$7@<zcCy$Roly` zuje0Zt(L>)O@tIT=?YSg*eI7mq`{@;Df?z>bl%g__4{Ec9F|^LZY2p98P4sme(c^ z^+GAPdFXaYIQ3y-a@AmSqE&n^3aCHS3wO}hzZPQlGq8Us!5EEpJXZgyHu4S+m-x`- zoEBz6FRa+}1)=S+Rj}xp7yy7e^r)}J#Rf5goKQF&kvZLQKT|{D6F^<_D}(a*qfQdg z70$7LnFY$ziQvYyK$Wxy*r0X>J}IX1qsGRgZ025y@6Et=el9IRs+6%J-JZNbAIAMP z=7lPF!tdwsYrF0(g6Rb*OGiMGJfA*1O1=a!31RKALhz038wmzaq|P25xFPD0wt$Wn zCGD9wC}i}1k_mr64pAK_MVwZpWIRl1WoC+otMe8&Nv7& zA@BE}YCfls7^B!1J4{kVZ-dT95-wmvzF)*wFE0`j_MoFzQUaQG(4l1EpzB$(m zdRgJ%o0b5_LMU@_${#MTILJuUp=2R9SL=_BQ=A?bxRPV(y?FTvqZvK{+H&7RQ&B=} zoN|iV;L=V;tU)@XekqKbG6OrdU3*uV*~id>^zoa^NihvyUEyTjJ4B`h{fz2k`MG+E zqNt?4ZF9s@3EKoc>_SiS;N~{od)Zc7Hj`8mURE3)1#7)Vcf6nfu6V5h8e_u0(CK`Tn;P=SxtQPfAi7DL`Tt8_x`ATZ zrK%b{_uq#b7`N*;+)iDQX{2(bGS43aB04bFMXL+&98N*gT+|*8``c$Si)m>B5(6Lk zmg=CE>S4Yg_g87z#GGOc{RQzFU)7=L>Z9j)gY0h?N7}_2=@rq1qB@&E>sS&$MBa`s zBTIh_UChRVkFe1|+S)G`78c@NJ|_7R9*G8|j@m0A?Ewt!Cs&M8JZ%!`JWOFwH@Ezp z@R}QSI*7G7c|p#eV2_O4+YiZmXUJP5iTDHr*7wsAfPL|D{{UtmXQsouRu7NyPamN^xP==yCXy=7+9Q~aJp=AhQ|?h4s40p92+B63}NmcAEq|py0q+{oQUWN z0}!ibQbOM-r^J-Vggtpw2Q$-Rpj+6#c<`M4Lo0laxH#uT7zHi&r_4Cm^ zQB&XYR2v@?#+a2@;h}Hk!2bs0K>-J^z&GZn@!oY<#$RjgPH629ZVN|qFlKYmf1X5Z ziyF>OZMqc%L+Kftq_AY){Nh0!-dwGXI90OSeS=XMeRt`7Z2r@yY%cb6E&kpMW=|rW z6CEWy%O@u3qt%t$^pu`pOfo(WdIqoc8?*wT-=o5IZR+{LQ((`SQe)!$F5q3=?nv&r{;mcI5w)kcr+@QWHCC88ANqf2I_tkC z|F;c`NJ)$okZuGdrAN0kNJ-ZRmG0c=5~NdLG>AcW$7pG!yF12UFa|vP{_yYzz>9m^ zd-r`_*LfV@ywiehA;FgRMlTYcL7^O1OP;Ug8M``8O4ec^ncghDEH!RZdOYSeukk7Q zY+GMmeWhe#WlhUl78nR91vNNS7eA2bcRfzReY{b-3dgri5B9~XpbWC)8oUTDTue+C zPkO)TLug>Esg)J+OMfDYznp>#e{-cM)!tM@%)F*k1_z_SM4HhVcTKM8L`K@JJ%N{7hbvzK(*Hd|)jrVGSsk)@JoKW&rgCw0GLdgFibde8hAOlr~~CCiYD(S!RkR#qE;W7T|K>ei06jl?6w z3da=F5pa&!=bRP5efgXdbn;=&ZIY<(;r6&8~Lc{PS)l$b=| za)RM**x0Kb6dHQ4+tCy`SRW9k&T^h@4mX|dvDF*2<(~p&1ZygwT*}uC;BCtL|Gw={ zoZc*oZp%tdlHf(WdNx%T>gTgX_BFKfQ^COVpP%hss+$JW2iSJLP<#*}mX9sA1LC|B zbO8ZTKg;VQo?A!Co|rMl&hW>wMq|cy+xwW7^Gi!S=B*wcBm_YAacW4E1vG>#HvAPd zP{FiH)ko$b;oNOR)6z{&^gjYI*aynbZ0Vz=;DI#u+`Ehu=B~W5dj0-{xsnc>P`o(k zT<_)ftC7*SdOu<}yV^Ji##BU7DyGj9-Ar)Kb(NTZB4=;+tQ^x(6*%uGEFn;(o`h@ZqYSD=dyPQ z1Las;d?g!sAeuFl{5>}!X`{zD+zg}nQYEoTNjZWgQHWINCBFDZW@2xcJZ`z0kA@0# zKg#DD@3Lq`*NIPsW$>qfHi<`Ap*L#zv39wnut!ccK2gE&KlW)ow9|{!X*`@Up}CGP zfKH>AGYvT$s}>XcRi4YiZEJgrxQ9fK?AKDKW}wl8@ZlQgW9taQb)73c!7}Oqs;JDE zJ@|1@*PXh{ObfEl`{K$h@#|MbE){ltef?wzB!PS&sb`^&T0y4(A7L66>+0o1+bb4A zMo;R5niA$(XQ4Kwz0^`wl?@64rVaG>v%tTuJ)m9NLy`Oz9M&WxF$oFE{8hqt#X;qL zz0F{;tJsWJ1r>O>g>W`Al!_jA#-jF&xdU_*Qo|zbSKmVZBLd}E1bE)Z;MAFIS zxGW?Wbn-lA{0n@_^=@`~DgyjY4ovhyuyh?$PNVO@mwQ(l$@63el`IPd13oadhlA(m zi}U?O>6_)4|33@JlW7{=coUIX0iT#LLRx5rIUIXz=#L|v%T5ZMOrPCmlE7vMe$7xa zT&z&t`qN@dn-e%OiS&MwoN*lEF zHbJ80VynXNuET3UOtNmo}yt2?H4#-jMq&e^vE=`!OiGL_I-asOTv#eM~b#2c8+1QZn4>nAl8@GoOOqocrD; z{zksr)#gmpeI&Ez0{i6^CU!*d!HDu#;xG`;f|}xlvR`&7kthd`z?ajWlw%7u`X`>1 z)6J3P`v*J^xsAE~M$Un=c*#len8ci$R=MfJXwMwZ2&-~qx^3O}ADm@s1H`Qa z(8l1Yxb~Gq=3lGzlx{t7>F$I>2(K(q*Z805$@ikQ_Yx$!Xx}H2?!$nsPygAUBeD0O z7}p~uzw7QFOZ+}ul?8|YeI$x7Xc3TU#>$p5kEuKswSl`#`RHWR2+`5vwkfrAo$)x( zkf#P)R(Ov`*N?kw*WIvv6*kwGZK~l|Efid{Wu=i2QTro>?Qpuz3f(>WOLY0N!fpGo zi0ij{<)CIO%k3XOeaY73Y4DZ!k1UF|>JL1{HQYc0mB;&Q(UQ6BEB5j(OhDPZ#d$t` zhts}0Bqaat%9NOVr=`@v+8R^!>v`yZxUL^Y{+`Ioh9Cw`+)w$8CxMj##Xo1Y|5(d= z@!yvvD({D*T{qMR(G%Ny8fqKP{kvWTRps}M0Zh5>m+D3;ZBs_8p`8|={u{6qd6#ZJ zy066VU>mi!-u%a;-E^^8*Z1#zZU@!NwD4fYh-6esaPP=yLRL`oRHMu|&DF#GPn@bj ztIdg-P8dbqk{beHZge)^CXf!n>|D0lt=g{_^VI0_CP4Z3mBMVr=z;?uC5V=;wiRQD zcV1dy(&vhMlcw+5@3BdNSCgk{1XA-y$i`Xz;TK?X&HGO-u8Hh<>Upyj0@p~anWC~* zhG+MwWr-aaqL&D!G)z<{|26hD|7kCjC|)$An~+^MkZk%j^KWXv5jBVGl_jNr9i*Pa zb$)vG&L_-&qB=+-(OmR!v?=+7;95BT6pMh`_#$81_PytiRe2Mo!y-2wQlc{Jw2E7I zfggHbQ;Wp1<8Lo(>ch9na2et%ZVd8s^w0X1iQxmSF3Rk`vsP~OwZ3V;!FhA8SASEQ zd8l~zVkVjNJ?rkspy;y;Z8q9Xsx+PMVP_5;RUT_MrSnd9*!Bx4s`qd|>DI+^Z_#HD z-*0ysmMt;-Bq|04!Rt?nN|g1lzWR9_3xTGm1Nc4vldP?6Me`?&tTuc91KvAPSOnEP zPn0qY55968-)`CGx;#aDvoHa(*^RSPX<%z>oQ$`Q(5ip!LjM~!}dtw{d)lTN|bNwu>9AzF=5Bo#59s2lR5yyDwl52PWR;dj@#39-u_l^ z@3Ob$GjYO>N8cVwN-TIRR>Dvyt)RQn-7Mj_lF?70*T-3!78A`X?E0rtC`(BA)4~hh%ShVlJ>pY z+4bIXv}}X6UvYAM5&c$H;gL1;2ph6TT{7f{@V_dPlXLlPJY`i)qTF?Dx__u5wM-7a&Jrl56Bjqf zR;N=>f0|;*Q)C|wbN@7yiMsQBI-?bERX8T93k9%0Cwe!4f|BqS(Tz@Z7 zEBjo2j~4u`5-#H6bOTXOqq{KT=vP6PaTIvG*PF|LlmnVdRMX`|f#T zx-K!{SVi;RsH#$wos=w4GqBYsKj7yG^tY$Zetg1{QK#O2PP@C_7mt&nCns9lIY-o( zzITq$%04uv(d}|eDJ?zS8f|7m@6A3-pcM~8AKV%V4^|n-e*-U{VVL zj79sj$k9#o-nEWE&5uS#(P)V7cAoE=Kr0S_{@pPw?QwPefezguw;!=H^*3#DiJV67 z(PxX;wV}zgPZxlv5VXh=O`&=9KZp~$!XAp=#x}aW=mTi3p~VxIkN4-c(T3h@_LEWH ztN#4ye|)&Fab1^2T|~>glg^h0Em<+s?i`~##{@1gqx-zPydPCnqQ-9;jVwVFg9&sB zXh;s4h#(dI%S}80&WQ&75r*fZ$^W}(6!a%oS5c}TkR_5eu2iW-k~Ik*3FR;PgUaAz zd*11X|COl%r_;NZ(EWL3PtUqbIe&(ri_l9`WUtAfVR~=APNlA3yl_Q-kK+^?#$)1iW0_+?&?{WA3O!?cgutO@Dw4Wqf8_#ZCqc_UyfgY^` zJ2=QXZcV3KOw0djF5=Zukzg~~QY>PpGGE`4|1Y1L`1JfS0ix^+WnxBGu<5&v&0f1$)8rOJHIR3KR4otuyG@bSWu|iI6%qN;|XFQ)y3phoNGDIsO5|Jb#KZ zb2M(licd`z2YLUN)$>2gh|TU$(Gk}jDdOEkwMt57gEE#KWI~4>@`hzJVPxL>=nbhLk!wAlWg4ZGZqxb zA8znr_StY{&WlEcpH6L=cGV<_GGJ`w{%Y&{sqEt0cHwECYEu-&YmsE}Q&2EQ!oXd{; zm#0iE=MIumtR;llWQ!kiB^chR@=3yup|PBv<2;sY8mj?{sqKf&hkpLRSKD4x1Yf^O zBqdLcQAue2W*#mqbeW?A?$ypO9t!R&o0)aRn(yy+hlGpW4-w`98G!I#6U41sTZW!Q zl;%t)8!w_xWKeEz@d60BxOx{7iA47$Z&`Zp=S)9Ci|20zg2CL(%qu&Tm(by{8;NhL zk@%(>V2t6L=Kw{1Nok=~p7}7uc~haV=#a2^w-DpG&#daS{7pNW z$Xzi3o0%E=Q`KOu{#OM|c5Wk)OFwUcuFQQCzD5_#k_Udz&YG7K-&|Y}pROw7Y)f9v z4rlzhsz9Hx;4-Pgc>y~si<7BN)FPTn*8YG{~$@~eXBI0ln~LxuMgJK zBjpRbD$@*|URwI18m^kXM46oI%52Z<)2n0r>xvKdLqw6hgn^XQCcz!&N$h7r!XNw3 z3m-CE-@?>ezi1B{`VDE5Y)($+A7RQ4-RMk`^v(L=vt5}j_V zaQ=~v^Jb3Hsw8XO{RH+?($kOAT(gB|!#-HU72h9R(#pDk&G! zD&3}AnC>NB)w1O)CJE~>2ODS)>hFJz$x;jly!UoKME^31(1zRABseDLyASuqo~SHz)yi{^luz*(oAU zFBWFPP@Fbgu#ak_nF?NTtybIfPag4PR81s~7I>tQ>G|uI1!Lfx?LQYt|8&2+0%2^9 zK)Fz+P^$=n)E~S2Rt}BG*<$_iy6~Y_#;@;0SN1M7H)^zOG}Qi=1|TH!R0|mJ;F7U^ zW%r;>|IDHGh;?jIaI}2zLxoN2I(U%mybxS|0Vd6zxU$Y=@J0#=wl26{T$=SU#{Pd6 z;M$cLZr`)eA{2_*FGsth^`FB+&x7BibNv4LvFglww`!atx9FNW$v_|Odubw4DUMk= zDUd{%kUrfBLxg9DRC@T&H$1+zn2v?563|(r^7@}#5#g1u?#(Yx(r!}Qn-`+-?HLA! zLr=vNBH{(R-YMuCQ7T&UC=f6&;GMJ9#M2Aj>*3-Q5+DkI;ohc>g|gzj&;wiNR^vr2`exj8R=ap_fCm`*W^9( z)Ik3&A>&)sw8-6M*K+wwuu)nwq#c^dH6Xhjer0Jj)0PsfM1ue$_!bB{M3K#_^`e047Fp!_7&CcZXATjZV!f z5;8IvX(h-Na`lYMXL3g|FkWQ5WB_M5{Z}?R+NaTWf78Etv1#lH4(uR0FpdopA#>fd zFrst{axl1BY~Y53V+aFPw#T0RO$^ROTbADMiIa}@-1)UX21qD|sH?M}r4-^(`9Udm zFrCUwl2&iOXRdI ziL9ezLCg5fd7^zjUrIaMTrLAO5V5q3d0y@-3(XZ>0tA z3FzbH1vfPkUW*kZR6Kfz4kb!t|1zrDizS2N7ZagTeglSXZq>u;8XE7A8TOam{(e1n zm%RxBr$PSd^?W??dwVKi0ExVRP>{jdF+^WnJ)9W!ICnCn{muhWVI zivZ?)MW7OMy(PMRdO_;1m%XH?Vp*bBqB!^-$-D{UKo_rTxtR+Ez2W}~=WF!Pw83jd zaKoPu0xRzoQ8I{@iA!u)NRQeJ7PNRF7r;zV>uQn_s~e%cucM{@_9Yw%TgKPkw( z{!_BJ3~E0C_ZK$SY$tAVkZ$%kL$YUofwAJp*|L!m?l7+VUiA`n)(@9)s5k#vqeHc> zlLLF6Z)m%q*r?2()DIBUY)d7z(jpfpXGrz<@UXz3;=(Z%o@)bl4ovBii=vR!f7+d* zk=d}&gHJMO3>f3f%8JzpL6)G6s-i=WB zE$6FYV^CTrs(lI&{Ald-Gr~^83MDRcgaJG}HRur z!$_8Wq}XaZ*|}8(JyMhyIqYSM4LY=xPtcC*niQIr0e%<8;{&o zc3a;>rz^eW-=_Q}KH5{bem7I3^-JQk&4+E{v}vY*$U{giWXWidD!1m+k9Ja{Upx4_ z^H8rgIK^3_idp>#^5TyCk3g9v?)=~1#q zkznVH<)mIttDCUzjcZYk29lq}3a` z8-q`b$rUT@Y>($yEmSJ@ z%yiLr%+|bWIW9ZlgGb>2JwGSUG4U(Drxb_r^d_}E-xJjx{~Rb@8LKBDUYGBhTAvI` z0Rzv0z{>)i3kZ&JY!V8%kF2-05-+JTC#wq%w$#5%fy#^!06#S%XS7rQw){LcRrE!; zJWTzYx|*tzg*f72mm66O^9uyS)C9rsV%nK9FYovS+F0S!Gv@4n*KcIHw?#N>*)A{D zdv}OH5w~wO|3^7nN6s}3jd#Vng0FI(f^XI^wGxg-9%ZD&wG+2E6Iod!NEL{fV{+wK zZNr_7qX`>*^E%pY0{UF%pROhLo#F+kss&!@hT!$?07-GN$d$#%H8jVCo~}Sj_@QhX zNjg98{vIC%Y<31}8yIz6owZd-je3SI-W!8GJ|0C&xnIWv_Dj&s+i8&}NaKo*`Bm!YWcNxqv&Q9SBQbDwMn>qo;u z`oQ0eHCFQLLyxoN(iD{s21e#=s%*_REYAMg=4UiR%!-78lUKG3_r~3!_i3%OeMHER zW^=b5tX^y+215)#LPE^la+(1l)Eq|WJ(b6Dqp;AOd{2T(R=3X=c;}#={JK&Ozck@1t3r^CSf#ynF_@65p95T+Wq$6D$jG z6Gt8t_w5jhqzX#dNJ`j}fx?XTI*Z;44lBHh1s=huw`nyF@{d8t!}7Sm?}G4+Ru5O0 z368^%#C1!QnJvG1sh{dhzSb zW~WH@omZ$3ZPp4aIJ>h7D#)#c>7oLoz`zyuuRA?TPAuN*@4tLXatOAitI3uY1lc%x z)}bPQhZvQ)8b%fKdDmn={)jWr^$faH^03Y8W-9iyEk>2TK2D4;WA`t3Jz7p=Y=y!82utZBwQAlk;e8;&Tq@LPQN({&GyayOJaHXytcSS&eQn1^Gv~kT= zgG5o_z+QjcZcjL{r6NSYeu$CDVOf!3sMwO!+X8GNkKHVFyYb7IC0dcrOOEJtiljr# zMxl&AvN~08DVeie3Umnpl6wD8r`ch~TtxqBk<;c^?Hml$tgz%BhmuO(&b@j$Eq12F zz=->l)}aFJB^W)y(J=*o-;wh9PN9Rl{tT` zc7C?;mW%HkRs0<9Z;28tLCj*ZEor2L?;yb^zBuxgM92&urKHDk_&{dA`_>u2wWx;W^ zH68u(J8alSnCL?yh-Y16+0@W*&K}enPS}5wM7lmmDx2X(M8C4>uAtrh`}gnVEbp&u z$z&WN(Vg8`G~H!?Jtiq~rYQNyPcJ)3qX(x=U;vr+wS~qQX=7eh5YirRbE7AZez4*7 zC_7^DbohpMd)78k@{g_dfe=SIpIKLLFMVRNsGnevZL?3NW#<=1niKh|xjCn8x^)1& zzoE#S7;a?2$a(1Hd(ic_F>_J6k`OZPv2MiEmn&8?JnvI1aMUnUVy+PFV;oJNh$Z>Q zwW-Qir5P~9Al3Tz;M<=K9h1e)z@mwd@MuN)hwEka_q1EOD*q~4TbcZbwSn$+FJA_j zoi{vfj0tx)#_?IuosoQT3#Rw8N*zRTV?x3~bQN)HyPd&@_&n8EtIbc`ToR`rKF@zH zcP3~p=7?>y8kP!oIwE>KyBXLp+USEr(^J2a8=XNtn~{riAMu;Hy4?2hWh@vpF= zPjJ`s&Qx|`EYsxF8>v`LxKfA5ah#b=P|fFqNuR{Ac`Q;jx=J!{Y{Db>!!)(@vEMyT zmyJ+OZSMVNEpN+T5Vxw#yYJ(0%Mu_f>OP<634h2nI z{J!3>OYaJ@gfUvD;uxAL=CD;k`SmhAkpsnHgP5QLz&U!mFJm+m=fT2rOc>(sCo)vP z=LKbve>zb9{VG5=swu|Dl|zo7DRW3AUt=p5+#R_+U8*jXa}i=b zTNp@Da+7CotP28|)i8i6>IRAhk%fd=lazkdiZzXmbK#ZO-z9xr4!CDzRNBkxOX(Wr zIeVO@ij-`q`2~9tI*U2=Oignfcp&)n;zwPpP|%BUXlCJYBVOP^CNN<^ZA}3nMP5nA z3Smnmeh=%3ilAeKm(wk{(V0l7Ni8Lv7V|p(e-71yFM5>^9v-vXs?65vxDtx zgRw{QP5cK0r1#Zv54C09PLL0JxONyoLNm`=xupkr;dUG9t4%3XxiT=--^brX-(T(Z z?@&;WW{wJtr7&=`-t8^$#vFxVxj!vzS7H1_-Z8F%nsx?b987mjwv$e?;R|!?PtpT) z@kw!=6F`>0cQ#=$AUK8=!O>?;dQb;k&*`{sf@`D0tuR6>M|8Aq3g#5Ff^Y@1*ux7S z##L7&sWnjEuW%Q(69;b;IB^a3#R7eP)ju;~1cVD#Ic?rX}f*G&-)u|kYHhsWV`$$H2Yn6Y=g2Q7z%MQMf3nr1dv3$BN>b&jGj5s-*VF7H=^f97bAODN&gr!qHzq77O z4@w<*y33~oX15yF{r9Ja%<9jAMpPD;>Rj*>BF=}Dr!L$on}gpd%gn14;J?*rxQ;aZ z787gw>D-}4jRwBlFIi6{K&OsZL1wNtO~Yh2V;GJZR}bhp^GvyPgP0TQ zlJBW@$nOuHpX~1h8L<8*Olzwy!;)e$}B<0)tL?H>d-ZiKV(5J7b@tD!42`PrPF{Y)%32 zEl5-H1!Of5-ELRo=sH=>Tc5SikHT zPgw#4`$amNxFqfhArZmBYAc@Tf!Wn2q{LOkOZ)*&80sd+zxeE6dA$-ZAIC;688po1 z*n2l9-N>^-DTCVdoU^XGr6tkF{m&u4!y^9)Ra9L_gy24{b{t7l4yHG{LyATm-{n8G zF!G3FQO0l@!|v>+Lqz(b8t#Q^W)b5V{3HTjKICw0)12m-Q1X`(L2pv?&1`5Kp&(c( zUk9tS!}{aR)#ms7fFo?}$@=fIdZvYM#o`&(nUTMKez_Jl-I`eZs)J4P1m(zBT5O!o z?@5>hypVKxxUuwA#SLr?M6q3$n2&cM3J#SY2G(1hye`p(ycOP6nT2%JXwp+^J_?GN zv3`etPqd0=9MXSUeLb>}6rq^A;2L~y8eGGJYj+Su<8q;S=g1Vd@D6+Ce?x&V0vn>k zXk-#o3_Xp7P9_j(v!R7rLQ6p$0l4(j@-nN`1q$rOor8Kn)i@9j=nh^~Cdp=alhRH1cnvbbl5rdeOC&m*kc6Kj*e0j^9-q~*h}Hq{h01Zi7niZP}pl4 ziuUA|7CrJ|p=_9yBIIA10}sU`qYM~|)f=hV&`|T1c;s?>ck#k6DUQbr_uCp&JtH4A zB)g7BR zE57sF#Q;O}F5(MuU_Gx0dhqFb&`))kkfDu7W!zgHQ+Dn40l}nb=QMX2&(oh)F;JrhvnM7-KR_|`e3fHT6O z`L$ziVaOp78HDz1Cc4WGTKDaoH!sYnQakt1m>k3q!A(qm$?hD+c`bde^<{qitDER3 zCy5MhBD*wfXy}LNyx}+D(^XJ_44*SpLu@jY59`Kl|7U}+O7?v` zf(P*D*XY#_xUfUaxzJo)J;9mlGD5k9%ByY@hdx6z+!q9b4ElxtanwEVyxI%0oT$BU zV!b&<@2LFNZyd}^AF%#Z%_Q2iULvzT9x3SUWf$$zy>nR3EpGt=fxEx@b;~?_{=wOH zJ(oOyUh^Wq|47dL)gzK_*4p36(sIN$D>nonU=5x8^DZID)aLewLXPA)ZCM$+%->aR zkGQV^Qg4LtlXBc?uV0BGb=3$&qdJ5h3rbI zlMmG4Wl)875dA(US}k0ygA=HBFg(5T?^hfgN{0EoQG+&~c2W5{sk!NrG@L`7u|?)h z2yGoSB}+DgQs(itJ48m^bm}l!1-qh*-C6P_a8qJsP(IN?g=zw*n^3uspE`4X|BEMx zNbq+4ey!!{kx9;|5>w#&FGC7!9tp`h6g8Ish9l*CagD&l1PuJ)<*nzbhzk$@rRyaK zLMfdY)JPxbl(b9{eIIZKv$4&hSh{H0f;VL z?fm&`bRFs6n?U1AyQ{WU6cT$Q8z-WJB2y0 zW1DXNp3EryLd+?`-oq{Ez6I5ZmR9BIpgnVq7#Vp#;Y1N|^Tp}Ypoh2}8Ngs;3L8{p zDv>85ME^R2n-pIuo+dolrhPKAlQ9Zfr8_RDnnBLY;QzVF!JoDDh3(n^egGrcL-d{L z*DQgZEf9^Q&u{j-Wx|J=Z!C@B2Bpr54AlxoaNA){4`b%nO37WsBl7KRtZ2p4gq~E! z4oQ=eBvMvHutq5TJr=4b#8EC78bOjjAgJP1A`Q((^3*8;;AQJYMMZ8MoPCl};|Fk& zg2km5K|SI2$?%?s7mqwr_To&)Nd|9Y8$2Q&aYdtcr&*b+ze16f(7WUb55)|-SAlk+ z8VM_sRuOOg4u`gvWQVFLBV(dV`0T zUimBYjTiGSU0>I{Q+!Oh*q&bpC`6A46~H{-TW{=yt7IoAR8DJagVW_LaB z1|V*-!}7KV_AG%NlMoIv+5e#MWjOU+qFf6DrW_#VIVLxZG4Y_Mo<=0W zDJ}oyLG|W$L0UeafK_zbWP*q*`xM|NJyU(iCPcgF^m0%=?f!Cizaz|_3elIy5j}zih~|6GqAYc6Sj$wSDyEj+)BW z#QbgPOif2UH+O28*0*Ci?+-yzm&yaAYj@m=)Gh!1!7{6#tKk5gWGz)GMgFTKl-k=J zUN?owY8UY$pcpt%1lcLdkI?cqiL+Yzgx_DM(ydDeki+=K51OPBc2PLG(eo0q+JiHS z=@@xm)Mg5PrS{m0iy&F>c-!ogeLt8uG?{RpLhzG)e@>R^7ozDPy84cb z*hqD`17V01N^+L}PUmFW)j9bBEX(+XU`t5xn~!T+5howi_hA#jf{9@jqM6H55`iJC z`1=>Py;L-ofap3)a9@%;k=AZ+rce%m_DnZfFQ;A2y0wcU4!&*i&hT)KMSBa0CPRx{NgxTGZ^$kO)0jjkDr7xy0QzkYplIt^ik_GW2xwx zm;^j7w=3i0M-S(7)zngyY&?_uhBhsupPS4^cF;j#PiVIp=-OD)X&~}GE=yHJFI%Ww zZ{d1ceYZ2pzEfr-3^M!B&o_Vs^W1<6CLhn*xWD<9R=FBBi>w4EwXZ*c(>QjbX;PWB zElSN~8Vs%j&!}JVhu}V3CbBe2?^kq74S9pMVnYY4jGGZLV>^(}N2I{OXTNU9JM5D;%06^#Jd7b470^C;)46%VN*-cv3e*nWi!(9QE}f_f>Ge zB}}~ep9n>061y_SU!Cx#%FH8b{CIl)VJf~{B~jJrwb>QKj~V-sm=+uH@87@g;+|y(jsx-3J`)f!+-Cy%#EdXT zj-e2g9gI;Ny&432b}j~ZH4V`ny`tR41we=z1Mh-JwqG2Egt$e}769(*l^mRcq(TUe zgbuImmmvy_jEztm>-niik@kyTe1+dM&9XL(uQx*eI5mgTvmSY}V&j{44^gxZlvXs=F*x609I+@c5 z$LiVo?lvY~E@kZGh%g0Bq-eWwWSnZGN+P3U!sr@38S(TRX1>2q8O(+YN8MNcAkSg@)>ddqK5-=66iS$ z5cl;?s7vXmII|e0YyZS=^>UPU9R}?w$a7i@>;jJb-?A3t66!Y9BhRwrn4mB9`WdGZ z=?o0|A2utB=)5Py6u?oc1_miIb7+_tIVAI zDn73cRks2$6?7&FgAdcd%Z4%Vq~>KfY&${!VoqSPbS;+S{kgxkMhex*bo4&Q^UxwG zXC~eu<>00E>=*7ADgsF)L(f?wZwOkcq1&20M5_1?g55X8a}y+3DF^=Dljs=>p6SDn zmsGmX#_J2;di?0~menT33_vpGOVpPWI@gR^Vul8#PKeh|lH`6;Z=2ChtinVV58_D6 z9_OWwj8Y7}n#X(S{(8R=K}L=%h%B8UMF4gZEvCADz6V>VuLPR;p0O;s=b^vE;#c?c ztN0h)4ogW9%wo2bWY5|iQVL3yAX5pkfSt&|P{9~FWBIUVBPMBhv>7fL;zK@%=*6VF z>-hIlx31iPpS=Q}uIOtR5Vp#eIW%DzsYbMOMJ;FP)pon(rx$TgRGVHyvC@O#k=YZC zJm|f~5Irfk9G_y4tfuSuJb1k;gwYcPXC|ZRsrdPRix$M#vXe+#;RevkDRTo&M!vW# zl{o`=wH`2InYLKK@!1!?JwE=#Lr6)uxlTW>YVGc>J`x?i3?B{%6#59Pb{M9_)B`tt z`^JTo%2@fN-G8x32PqlBvyfBmM_wzTEvDaJkVk~tC?otBzaPulWlZ0|YjRT-M0d7& zK7ASjVEUiw@9>&`{PJ9f9+wyr|JD?y35O}jI609taT7xrRp~Hi$Hz}(;TKLd)Y#CN z$K_?u5BmC>ot`J&qq@${vBR3N!`cR4DE13!e4-d$LC=j1Fq z>bNP;SLH-rPI-%Emx{i*O zHJcw_#oWh8iwg>bm~Tw3R{$_z#yL1(6D<; zKS~JF$(LTV!xCR{xMnwkH~Bcb|ERN3syJUPvXYs{SX{xMWqE6A`1(v?M^>aJ8+{VA zOeqR@Y75Fe-`skXbwK)WMtXIV(f&yMOTqmfwK!JB&EWZb9Iht)BIWq`o)c1mt^Icp z`y^IQQjN7j;c_~*{E)-zj%K3@?XK0;#X^EyA?F^4vF|q81Qh;)e`e{&iga*H4^kV? zS?xP?ZDXE6NZXy;_hTp{jNh~iKs7ge!ai+ATDLH*QLmA8DQ!tP#~^IgSa(7e6k~Ai z>LX7!$A*U{Xe(4SXxu--0m+ORacm*PuWim$p*x#XMSR#B#DnP&WCSoJ5r{0L8^vH! z=aDLt}+K zVpq)=yx7?jflD2$5l+A_Nqp@^8x}in>`BiTOH+b?A=xjmiLJ&f21y8B0$=uuz_)Sb zppr2hX~%?xWd!ok8fRo@G%++}r0_`kp{k!hYopm@SkL5;1#e?JFBqA_!Gf`m&B2p2 z0G?RE_MW6*uQKgQp#XQfbzT>>wx+~q7B6hz#yM7XRYx#)mK$# zhj|Q6j#7-nn%#?mj(owxBbHzoWhsh3Vf3S^?Zd@0z0BPp+RFu|{9O5cXNJ0y3b#=VAHBdCMx4Zd;AxbNSaJ$H1K(FSZ- zyk9)W{IdxPWC)ITHvqsrpCBC*x2>9Q)h~W-f{eDHt-<@-GJZgXK;BqPQP4O#ZXYK| zFBs~R9h>R1Oq7fYJqcJGBxp4>TsHI(Ww;kndQ7Gt$2$)(-4OLg`E=Y&{+op&$c@9X zL`Yc%A5>8^i1(HZ4VIeqt^%JGMYj-Q<@M{^DklytT%d5i1-IXS(j6w)+LL%R*%I%+ zft!6Dzib`LgWzmWQ!3l{lr1aAX0A)_d{+1fz=JM>fUh;N6 zQ)Cv4TRM2f0j^1dRNzI1;@QI^|14U+qr zbL8(xRAwcOLj5j;o}mgJLUBX_p94wN1ysI$xl%Of7?*Gim#WuI(sX*|Zq1QbKfIq4 z_PdYBu{!hapR}06F!iM|I{noeV!Jtkl8MHNy+N{pj}~m3{A~X8kWtgIgH1wFFCu-W z)GLP>)Cm`Vgg6w( z0pz4ryW>)k3i%IEgE#c1Dw>-)ti)W*;u3(h(nG^M{oJClGN<+5n7V%cL_3V=xOh$| z#0VMI%BY1J4`%g6kFso!6j#{hqXMGo46D!+j)Jc*+u*Az{{ES~T|uSYNPbIvx5yy% zhb;~c>D!(qE1LOu52Rb&&Xc)p!B|8_er?il)lFa5Z@NW-7MoN;o4;Sad{N9LkN66W z;$#I=CX8w9jpsQ=b*`N)v;jGdx8!EHCIo+z2$Koc{;4yz;HwK$58A0nW4BID>l^~B8@tcWD064gF^a{$WF*ZzD))r}BIj6oOvk(K1y7kftfkqHcwJ zUK_8cMYD7geGbx-`x-W0qsQ|Kg)$?m2ZP>Lee?-Q!|@$~GXm-F@dQU|4cLP3DV`J1 zQ{&FfjZ75zJ^Ra;B`1lgx28YHKy&B5y`KT>PR_T5Ih8^gvswulsojLK?1(2efI>-s z2_~ukkEgeQit7Eohb5#W2Wc1>Qd&UCp}RvVk&qA(5J?$gkRC*xp?m03=~7x4Nu?zv z#GxC8uK(rpd%y3xEEa2EvF>FaAR7_{)nwa^a`N z=y>PEC1+E;FplyCqAnBz^hwVG$*akp_6+e&O%O0IhQMzh_KvUZ8IPD<*Yx6m81V_%=MZl@49K-q5?&?)BvAiINLV+u9(Qd0xE6Y}~HM_bx z8Ipbjn;q#IbN{8ur%WBD-yA+f2i}#`u(E$##sY-Hl34xK2%l~9fm2pH z34nC-kJ-!GC7g|wf5lr#&PPMUUj^!dbbqS5?uf{3dxvk6Cb^1n4n4;oAu1ZfVT$me&oRA4 zN;a_30J`QRgsd+>HB0TvRi@h7p}Rgpwi|54SDEu(c1&1gyN);@cCt2H-*EC4pIj4?vkI?InfPJa*9qAB zWDn5X;*tE{vs@M|#RwUHfxI{*ceS^RgIbx;Gr}!QN)yhAhTqGl2++?4yVrfIt&PrO zD=y$xw&R1K>bPVs(Pi!DM5T*}286XLM2VWE`IS04x%|r)96^u+hot|fU6HCkcSY|I zc=nKk`J4It%{ln|vp77)x?`g#{hfCo|AiIEJJl9uHu_)PS?esLz6y%*rYWUPMXW9X}I>KQb%wbHbbW(fEOVS_}GC zAm3f6Ju0=TA7gVkvF{~aDC6K{{~XorOn!nkpC@2c zU$`Bty|5CK;`)OF9bxlenfW!P#zNPKs-w5Q)@0ZmMzWea=|lp^o75C1l>^f7J5_^3;0#il|il#aUdX;GAfngYaPAa)Is!NW~t6FT1Bb3!zO<7sv6{17oRFpJ( zHUR1*j=`^b{DJZF_;}{f?5H6XNk*2@3IH!fSa6axHdbSHdT9Ouc#acXaftTe(v$ix z7+M)s9{>VTCuj9^#FWg!&v&V7)Gp>TWjdj!kN)l%{2|`cJXkJN4FY+-EwH@~a6|l< zspVJf;WgVE3;_#aQcFqFZ5ruH$*)lP-z3w}CT>g(I|n2lMOb0Hh0>KENm z#7-D>xwRFR^zu8tlznA8>8!;&{~33#S|67fK1U*0GqZysxwEEb{nbf#99XWX6tDLD9poQ8t!&dnQmA%L)APlvRQ5ydk zp(=!^T0H)R$mZ;NcOvi+W9yj-U^A1=5tID(lh1#p^DHhSLLFkjRc@H4S+M0a^itY# zT3S^eMgJ*EJBVJ)x;FHWUY6|d?Gr9}7GM7o%`cq3pFV$<|L5C06uA_FGjwB$u@GLQ z(H5F@NMmo?iGmAlWh{C;TBkMdifbK8V66WsBlZCo*Q?66IKg2n*Aad3Sb!%PlE+Xz zMBG#vKB=@n*s>)$%M4+>pWi(w9+@gZR5e;Gi1|Ttt)@p8?oIT!#~!5vULoIRN(2QauQ@og zLzox7FMwxY$l29fF&toumQ@CFL<7F458r9rrgI%3e}@POwX`@&gI+p;iU{Mx8QqBS zf<$|Pq#tFwcEklNWEtr86xiYx8{bkKevb~qMR2^O4OTjWAz4F`IM&_y&NM<0JQI|G zad#97$X`8`>Z{5M442lyb-!Bo^iVQEg&X`)1#;!rO5e$!FOV7M&VTxJ0?z~2a}|Hm z2}>P`!d$8{Npi7Nt1H9=vg`F~ir&W%Z3}M0?9UO$1e&k^H5xIzA7;qt=^s-U4Vj$^ z=NV2G_u*2YmT!+bCz)A|<_b{W9U?a5U0U;D4cE20pBLg7&KDd;)i@G$^>us!?^{0k z<@fYKE?<=4JVrQAupT&_Nxg<0te$c-;ncyJKAN^?w{**yCPFRLwuOC)va_-fG+~d& z#tI&K*hKc~xNtZf&nrGgCDL$BKen>67d_ypf)QZ=_X1AC4jjy+(41OFlG?JSsK=Mc z^>2rl=fE=S9fssJbf7?|3`+(|GvH!R*?yGPK2HNk;_Eg^&?0B^)jWo%oZEN$2p}p* zxot+sbPnGZ8ut9HS%t{74!XUdva<rb;ux8wAXWRp||Ec5P;tDo-12NIWU~kt7%! zPPwT>I?Sa&;q}gjN?mF#Ks1y>D&^Iw(?;!}dBMB|vUKlHk8=8|W8YvF%k*Exm+^Nb1 z+o&QK)QCJFzAoX>@3WC_S(Ph+2v*Bc^XZdLb2PazLm08;KP^u1my!9PRrO~2mBdl0 z6;-G;&;jqKsg7zL%dOCp5eKHGuhO#2kwes+5sX`vq~EAj&%%dB7_fJ&A*Pd2;7OG{ z`QTB?z+%H}5rlBSGb!$*vq^P@RA7XeNxe(*@~5JGT0NTJU{7IbP3OKB{bKo2 zjK&&J@Y$%;@pq9{2HHJRd^rj{Epi(cB9xG=!>v>UL800F_xeJNtY>>5N$))_-7%-N z$!aH%6Fl>_2Yt9f@-1Kh~3FQ zmoZVbLtNI|k(6EcY!{@=!G!UqB<-fe-oLL&iAKNwfDNT}Z%=E)g$}IMLRS-4ksIL( zJx*^8vTO527>%=o%4rCKupDw(Mc6Gq9LB7i?wF`sFB=y*km-$#^EV6zIjw5oJNIcl z4cyG7ByAd^ep+&e9&1e8F%Z|fMkVw6H`y_d#n8u%&KC6*!?=yq?45RT>MPOqDSi2u3Qb)e@d| znw3A&5IKS*xRUYq{H@VpS@-$~Jp*2Sc8)|%YJx3dO1uS7^lhx zY-7pS*sDI)(*C+JkrRiSl-`7l&Um9_Mo>*xyz1i6$z@9?<>%wN?U6`^^51L49=M2r ze7>|N(C?3TV)lHW#jF)*>!aU#49To~sc~*Gz9@g@>l*>iqe!}&wZ>ADt&RtC2(&A+o)7%NO0s;Jh#DgPx+mwe>Nldz0`S_(NKyfguO$rD zg4pveki$vAyb5Ry|6oa*x?U5$ffMX3#+nD(f9~`eF8qG>fKadNz02_GaM^a#KteFf z!{C5$g|p!$*^`BP)CU|v8@d8+MKv!?_XOt@%9Wq?EJJ?%LVY(sKs?$A`60+S(brt0 z0wlHjhbH?e9J?ZrN>!DfqI;OESzv(Uq7)uLKg|x{T^9o;L|QesZ8vTtp3XJ|?zBuu zuw)#Tc?9d)p7xom0mgq6%F|v~A3TCoFErRaU2D4)7Por1>OWY>zy-I{UCU{F5yAPw zZFJr7dh0vFF%;SyAxy!L^t9u^eVUe-Z!-zLe^z{S$)|Zps0WYRu0L0X>bicu;1L{r z+b_{fR`t|-8H0U2GXROf&?paFq#o4h!Mn6CGV#O=#?^ZTxgn; z)Js3xPFasd%mp(!%&>y-rQy=D#+8-EZ8z#3J;!tp80Z{r5o$+{ZGJF&PO?5%a$Y`^ zb|T#~`Yih4B<&ne&-63iP!`F%ljo01svKr~u1+_?-cYO1O*N^x+4}lowafk}QBL_p zP?&M3fBP0}@AB{LF!GuB?JP(NKn(m006Cjpz2)gx)d$tpX9T1y&kVV-6iCR@4s7s~ z5(uK3uh|frCHeW&G=6C&^jpkw=zTU%wP5Le7LUzIt@*nk-HC}5uWWZf7NpPn*d5Kf zL4T$^4S-EGOH!`83zRdnWey*w@)8WDH)9$U(%X1xXr-U2==Kn>JF23-$4qMV%mU0z zA%9&_u{0hqQc^;nIWWK^RBbf%tKuTwFdcHqv)i4LkfvJpx!&gu^{}VeAy?Ct{N!Il zyZ=T@5$@zMVdn`f`2=NA!n8+Z<%HBI(lVypMYKyao zSqE<>NsZjh#>D*oxjWu@urQ^t_NJIy*mqNKD3?Dog07?gR%v^J5Lx6v3$wx)G=q*{1bJy#(a-PB*z5T72l#UH8TWpofZQpyU z-3rKXNjC)PXZBnKY4tFj2Qf=}Wg^ue8=3;E7N^F7pb;}f2_%bfDw6oqiZ0;&Re5u! zPJiT0*^5aaB+Y;SRr0kednJDOy?1h<1xmcbp+H(7dbp=o6-Q~4JpBY_$4^y$x4E)b z(;Ol0X{E)9+_)`PAbc{E?EQL)**2jomoIvJbt4&@ zi;Dgz=~)`|6$w#ml2tkNC3fX_SIEaXIn8!RDl`D##FGX%Qt%OPqk6#U5=h+`y|fhA zv2D7;&?69W2E4lL%HH zHkoRDf8F8Sd@kKd%%Erv*B*-6Cpjd(yN2qifIwqdL)=D(xW)Zv+G}s|vKmjcw155h z9~Q9qFcib32&~aL+06qcL<3ATul{`Dc%unJ|B&f@btWP2>f1^ww|ReWCXhA8or{P< zlo8n86xC|`%?ASqZvCZKuO;tzaCv$FQ@)E%TD~EJuv~r>4Y7V>OFbTAG*+5zLNVM? zAN*zQuPw}aiTKaSR%6&m@k#NU=iODmrfOQTtPDB6<7M>sDp=XKX=FaErDXjn~I@`Q8W$vSaYP&8Z8 ztaJY2a=8qWrq=9@m#NG#OrFl=+OOPd*-0vIHc@U!lc0lAO=`ZU>%S70r}4NQh4Bo= z<&T`t6<2b{&1a}8!Zm5!EatjLpq06b_ATvXG7Ik%o=Wxb^%FocP|qs=Ju!}Mq<*=N zm{2uD$ejk-={(kIoqv)sjpgmBM=o_*|^167eFIMT^0J1q4jm;t5#So{G^i*i76Wq{bU@EcnFr|#St^9y2ILEc3Y(%)>{m7eE3FC>U5|Va=X13?k z+`*^)qi+58W=!cwxbSV^-yXO@CEjcgy*)jgK#E0~HvWwQ7=P2bgVz^>*qr`~5bMGl z^2p?S;---O1OnU-Q3LPUeIo<%WeTbHlDWd_K{tge6QQ3L$s?VZ6EUs%ME*z6T^Wo7 zCvgNugA3DEB^3Wl2e6k?Z)V$bySQQ&bH-%T2>SmvH7CW_%4FN0R9dn?a=g3TGO(UA zH#d(>t?NzT3*7az;dobD%#MI~diKma8yS*oQ)^LA7LqJHl*Lk$Rxs~C7>U`1s>IZJ z;RtEo9#fABsB4*0$;CYotbj>^+a4u-M#F%METCp5rum+)9(V ztsEg;Y-mrajp9*!La@i(Dv+h2levn7zn~fp+Z|>oQrQzj->ac6I>`_KXj*7vMja$GW;HIzpi7T0G*a z%1m_1wL^Tg)0wZup1P=y0@R zvtEj=&FACRH-(gn%?8<*o1BJ=Qi0X|RCK4RF*)2@tb`zb-~eI7Z_1?JcJSv}<|g4L z*}P5S|4JJO+Efv{%Na{}snGlJ&M+QHw`UG?_GcWLLj1w&rKuz;ua*aru6BuIKG>oN zAm8Ou_ta>bGy^3+KGN(DPqE3$5AOzFIjmcRnmAxQ=k+jBP^SxAJF)6bh^oQ zM%~YRg#V0SCi@y%e_TJq4RYd!KcX`EsqygP!;ueCT`Vg@3>iNzaK&WO%FO)XR>7b2vj+LdBfxhym2t}Ns?(g?H z$N<0Vb%^2HDkYYQQ1Ud`WLt5&P+^L3`iNp`wiL?eenpu^t)7e=;gdDi-~@m4o*rS) zHH-;%oZ=1`VQ`WYe5M$Xn4-JpvpI_iCmyzk@dew{G8##}2^>!5|x6``MQ-`+n?zmX{8r2Ptnp7!+_- z$`gWAzS1RO^=}f}*05WI|M~>pj1;EyN$ijC7i+C#aw$JIk~J_gPx#EMSNKyZ%T6iUJ0Wck zyo+$(27l}T5*!QqswmX&f5;RRAi9IF#QU8tk!5r_ZuU?M_r1};PYAitB&`noDJCZ3 zW^!P7eRrdyOKKrvAml*Gv*mO7J7gja9|CN5s|!OA#$F$fY)F({ARfp*OY|95PsGGf zIKAjzmSI0pdhbodFn!UfsFm`RvkF47vid^dd1UBlYvB9&}ClE=UBQ)YZt zIs?xBujs&6Z)2Xyx~1-86T)j9wJj%Wu|*kOFTUdsPEV@&T?TDdedmo!T3q3Ip*q{N z&HSnYrat*1lEPxU(bZz|{t~bdhuw-F$uPTn-NdD3!rdnE*My-r*A^Fwx?}5KJa&77 z1duz7lGN5}2}N^LQVcSz2zhf4P#7}6FyE`7cSYIvya49BTb%R?AJ?w97bZhph!w2Z zC+_tkmbD$z)Z=A1O)VGQK(WJoSsf8Cj#FlU+8P&7|I>nUMo@twSw}VoduP&0i#1gg zp`nx1>SSW5$w+yuVH&4#)ByKphgI~OkKUDbrNW*ecE|I`EgH)-*jlc=lS2M% zh(5Ddx_N#!XgK_K;xw^SzA=+hl78C7OL!@`pAuwZ5pFgrfcUi3I~G1}jWY0B5XtBv^@#}R~?RR+b~IR*5fF#tVIL!g!~nbM1l zKS(}TWw~4jWrgEZi06`}ZPT=OV6?}V835FxTw+116v<;NmsxKFF!G=oV&#Yj$A?=2 zA85bb-0T0YCbG~7>TLnX|9iEG0uTDsKYrIwxo_8}>Mku6qm44u5ojTAan@7pFuokarFy3+^fuk!0&2AdpW z0hpaCPjZ$4CA*tjb$d>b@-uFJzmp#KET0ix5y!=d(v%U4U;SxfvMYU{7sIGI0BOJA zfCvd}W-r0@ZybU{~>a9Eim+yf;y7){@K{j93*HbwR zvY0*SRb^Nbm9{zDF`u6OEHMW8^6Hy#z%mCj`Lp1SgmHNynvOM1yzY})%k2a_2%a5C z2rC2?PTZY=QL26M$eOJ`lv@Q1vGt!p9lR2u*Hf!jir z1R0+`^JsBIq{~kBM@cW3+FZSQk&TPH33v0HC`Rx}}1iA7p!P6%5C3P(I z+-r2?>&(o*XC~U%pI%}xmo#`#N9v{qS2;&o{6oK)o%eq38;!LW&caV{9s#;8Yau$W z*M?7yY(2_mt+rNXKiOUrmsU7AbENlZ0eSDuHEBx1?KOWBV^1Wj2Kolf4BsHr)2$M4 zWJE3UEq#(A9<(C`mN#2RM1#Y_I-1CKBIlXn5In1BPL!^G%f9jkjRsCQw$Lv&F72`| zKi_e;fWz^+xRW;j9FBW@D)^BBG?h6bJT!jER~Y!2CGYR=CnjVi6qw(?g%tW%y<%Oa zmJb9VJnEjcwMQOy@x4>sn}rvp(Ry$2-)G?OOfsolf*;%S@YKZvC0Q1qE~%YiuFDpe zIPYPC^;+M|=bvp=S;|s0H@gaXr7u5tZFFhRC-l$$AOVQpSs#>CNalI-E-!=E#rWO! z-o^F*4-4?{m`MNqxz5X}?4@gp>*2cTlX|z(^o)$(4jxmjsp(c$b@0xBGOO5G!LdIh zAh)fWm9g#b4KXi9gl=|73YU>Z$!_QSi#ZHDQ#Ojy)OJ5VW@pz=H=U1UQ-v^3>q%w1 z+UuGJ9%yJ!Jh53*Wv9HRkF8&}%UZ@!qwyDeJs zU9vb4B#BGoXtS11@Vj~9cJT4l)j^8Ple5BGqNOW!pXn`TtG?u`ZuK6lTYvocLI9ZF369(tv%pz}Cc-v8}P4gV`M2k)09vhnI#XR+}{@J0r=PyIX}I3-wH0-JQ>z~R zSip))18M34Q{Sb`(^Ld^WKno=ir%c@3S?*opz&$@qJ2{yeSDPrs4vDL9GP)kHTFm7 zF#Ybbug>kPmuqg1Quwwm?B-x!d4akYMCeC}fAL8rT)pl-?4dTZC*nc#6XxKriEXCHs6ud5II%ReGv(4X1(akqxW{>99E}Pl-;YOi2Z4qDy7_00wPMISFh^5ytFJsmb9|;&Rl(MZP6~>dxuUTTbYt+ zxQX@FC+O_#&(-^06wKmdM=64$Qhbvsu7L>@8c7#G0(eT|zi7>8`RiCZYs)8Qbj<)A zalFxbyrV6vUy{%@F(o!#pn%wGb#}5h1`-*hQj>n_Kitfvl&`{l9qSEI6mxm}dKPCf z#fml+oep|NT>QUXqsGzGM^@3>Z>7P(C#Or$ulvA9X$qdALC%!3mmlq-@|#4TRZ53T zkeG;EfH+xDPVigd-2Sh`2U^tr4K(-sqGt_Y23DCmnd8!NE1e3b*&d(IvNpL7UH7wZ zA}SweyTl84Tc6G5NG{tUb9Jq1z|VKGbiZ*W{x%KO=w0Hem9&eKlj-J;mB0tDJy*u- zJ+mwf*7x8PPevdgJ+JEBVQud3W{gD7dlf#|jDE^2-t6+Zrn}Shpipf375f;UaYK;u z#JD83W$VFwBlnrmyhGTNoUQ?1xBTONc6`3`Q3TCvEe-6GBG+uzs}LrRxHsxnCKmp5AQEy@U7SXW_g+C z;pmZ(4KrlNCCRJ=dzd#3CHb*RIPFzwE$mA|^wW8Og00z#MCr=L&)GXmQg(I&gTBqr zeq43kiU!vm`;<=AODb|5!lHuNA9%Ajy^N7Lm%|SyezTqzJHCz^m3py=;iX_1FXuvj znTR0$m98K^@+|r{zi7o9LA@LDWX-^n3YSq%Q?vSwlKgd*8U9DizFkZk;qNy$Ta7|6 zhq8&)T_j)q zDJez==#1qL=!&-7?d!FwvR5D41q{cAXMx5{AKHJBRQ~vn_mfIHWmMDazbX$OJa{qN z=&RzVum7R3u`vvaQyBo9;92`t6OJC1AK*p}V~@wuq&#d;$JhkJcdb258|6(AZUa@f zGhQ4l#)^JwZM7Lxybc;-VF`=x?FWY| zvd_hy)#Ims@(%{Aif_oU1e7l%VQ$02niEZKHALjAWG6~O#fBc_E2yzMqEG*cndg#` zojq*>kc`Xk#F_#E>&Co6QLP&9Ur4m14`aN5+Lgiie?D=@K{Gj zXKZ8yM8c?c2Xvb>JV^N`hb3T(I~pU8P}(?^ZNOi`*_bkSiDW7WH>^nz7wM(| zc$ejEq64>S9OERZ4M=tX2mRk;V|RNveQ8xrC_VBDU}5cYstdmwz?+}Ur7s7s5~{DQ z1iS*$C^}5m)OmXNhYI}KE1y1Ax5F$h6h2Msw=)7T@B29s${mvXq z!1okgCP0Dy_U;{-GU(2oJMy}T`{X8}Uf$kGSy{sHhSvbw6Rj+;?`HbZx#*oLvm(6N z8BKKZY~ruwXR<*PHtO}n6p6x$N?1RFhO2{SYD`o>fb8-ko17$TZ??22KqFzMJIhlD zR=!ty$AwMOEtOX+-tw+{;?&%hqsL*doQ!i=))!`r=@~w)oH8 z5G%&Vr-@Q_WQSqn`UVFX!~yb2IiSu~2b2P5+}Jp(v@hl5{TyxZt=@2USUVS$*`m+&rHLT+ zr>w7EpTyk09lwZGy(TB^nSCYQ0GzSQ_EXrA;Qcu1CGHGG$+oDh4@Cv?iIeGNjozff*n|D(aDf?~nX!2W-t@LZV6uy7wPm3)bx@uw7&H8ITDbRv_ZhxdjeBX%CdbZ!RhM~{#$+rYH z=zAePwg)Anm$2n%fv14ePl6FYlm;n|^FFnfvcHL` zo(Uw4OxL-}@22lW8xWYi$Gmm1MfIV(yn`hwvUcLJ#bBpsnH9j2qE? z>E?zDudwRjg{1g*KNg_FsWpf>bP-xbO?^fP`4lNOC*Qt(8=hLI+Hqcr{V#{DP|j&E zhtFwIcmDoNN0Pl#PI$V$gB*nTF%nh7J zGhW5fML)ROO91>tT2oCIte|5L5+-hHxE7XBV1<1F1_6}cros^J6?65MJ$Ze<-+YaL zz2q?BoXD`*V^8f!Hu&lw_HY;}LYvVOw5lqIi!l`X4Y(BjOxShx{cT!jAPA*t8$R5~ zYuO;r$%bIEiyT~?PAX8l|{Od9#yYIiRFt8k$=pyfnMI}*&>6jxF_xl zO9u~6G-2p$sd4Oa(e;4$P>#vll)|YSN_dOTIaLmD0vd(^2zzcVRcLKxgK*w)3 z${M01F(ja9fS=nC>9=}VlYJ?)x(o1S`X#mn!^&~tuc*=-LD46a3p(k%H@yG|$z3{a z0wS#hUVhX!pC?Zm4A5Hfd=Xf@_s~*0!Hf*S4~&oxEPR9T?t*QUD%R4+<-)(T(g-b_ z0!`t*GAlFT$k5jx87noB6;4VKOboQqC1&N&&%8$!wg^4-z-pD|DyKs&(Z7)AOwvYq z3I)En7qChmPgZd?u->=0Yx#M41efFZfw?lfGvEIuMl$$NLqJt2ANP1M=5vtY+1+!? zk-}%4vQYl9rQS^wL%XHe6P4uXa$DO4?bAfQtm-;{&r(UZd%HD|{=q7+qMR(jsq2fL z(T+&8vAE>HvS}*j@GNaO4hh;+t$F2l+Q;t9;sv9$W~Xqp-^ObG#>JoY2J`Cq!KtSo zSf`#_dqb~u&eJm3?ikt}OA#L33#>W1=YAyav^(;biCYqRBIh?3fhn`B>5}+82zy&M zKvhTqXM9W|Zu;~o>mo%ASHac7_i*`kfqm7|cB%|GReGN)&`EHEMq}7OEIlJ8^ymIB z|Az%k|MM(x>x{AxnQN3ZY^o8{cXf3|scv$jRU~sE1AscPk17|cD0HrJZG87MbnI?( zNRM*@qZ^|_&{uXe51g737he98;OpZdDk=y!L(@^UZX$4e1636pA%_#7L{|D~Ag7O3 zPWcEmY1|ZtQF9N%`v=Ru=CWJK9zKSRTcKx@oww)^Gsc?QKq$%zEPoK(n3zC2!7gWp z?oGLn9f!NzKZwt2a!>P7!Fh!)r>GgX!M@E3q^j$vev#nl9hNye=PPIt0V^Qn@H@a{m~Bn_#Orc_m^Mt0V`EDn79Wh@8|7Q?V$s~#u+6?pa?i=6j}}Kv z$kw{|K^v`>y}D-;2|u41ZrrM;IU7kSTH{k>s_15Czv-m!t6f>h-O*_Lbz;=jCBBLq zdqi-!Bx?BkrU~w;Pm&woHv3U&{MCe=sQFvQmXNdJkbR|faYY}6iW?i@A;s$h#d8Sm zA=S%)kz$2Iet-{g-2(XFT^o;`Z#pY}4mnK;8E(5iZ;NGAK+MsZKLw2b&PLDvtSA%@ z1}#hEDtKA&0z8$J4chFJ2!QooXb9g=u-X9TrP)#jv-vNC=4K;J3;jN6BVae;hjp9LSilfSSi{P~m)Y=r|Hwdf5hW)qH@C z{MM4Wps^wVhuk8xK$C`YB}X~%{-xliLb4oMfR|3W@OLtzLP2uQlu8pT>#i!3)hRrLh!-|^EXc5pG_yvMSN~U zUjn|v%ddglc0!$@Y+Req{cgs0BgL$39N|SjP(d5>WjFKp%zdpg0xWJH3BgrgZ%!t2 zgkLG{$2kG%_u;cse!A5Sz=1HYld57O$-I1M_pdwpYu|53^aKBnkZ^zv%ZMv}55K+Hw5jd2`J6E8#wqi7*kinyU*{h*)nn;}K~<5>A?;k~jfyrK*0wcc zs(#hpLGDGo(!g%EH~vO-ST+mPgPXADPfW5|r=Pa-47Q|9{6kj_ur~sbPjEzUg2o=m zWbxGEiL65u)Cw$0`{TSDG_d|M=0qtuz$AJp3v-m^rSs=1FSg*5fXlAk?FtTEMgGBC z$p*TYVA?8va$Pe>c;+JmH?F;CfAY8w#WcZI@*g|6w3xhNtTV;c!OhzJDY`=J?rw?1 zc6-%h@gUM!K><`cAhrQ=Hsa7k9o;}Z5~+*_?z_&71KB(EN<&`W=V1-6+uw@p1x5@i zSmmbJicl0KCE`|_55^na%{kt0F39-5j?PwPgWEiG>4->H8sEhZF95jIdYUtlze?#O z?X%NdbhaLvvH0;{fUsF(0QG!?xFaO8J&cL@W&g(HbmynUL^Pw)dTp&EPz0@ac)M>- zjvEy>H(LRAm&3u22}iW`AhM3m=YLm@fIR4>sc9Y26fxTv*4eVg`vz8@4gW7$+xGtj zu#A!niZAV+2>apm3QahRkk-)rdt_iqcmtIvM^n(EFgGRYtGxZ?F4?Q;+TI!+;}@Dg z0cJdrdHK_|=*h=b;rGPgJT$1A{)tkI{8z zh#f97lrt$w6LB2(AbtaIlXM5^&Fh6x21!j;HCr;>bps z*wYVFWC6W$**!Iw5@R={I*r1S?%NKO2lOAIMwl=?!yDsqH5+nmMB~w5uO5RW(3_SG z*Q~4%r6XCKu8ZW2MGIHkZ*5Hl?0(M$Bk690CuLUVCFA3)$lU!pK;$*)R#a5f;ZWu_ zkqr2`gQx4OOYBl3?Ry;l(Zg#{g$2<85gLJuwAvSQ>|Q6A?WJHmQ&ZE^TxknpuzwEw zlP&nII{yC}Il$JdA)(HXCjNMqlq9yd|4+c56!QF{nE)*3#}ye=_0L&5=7Ke$>wOH; z|Co%-evoykCp1&}UN7IN7z2VgSox>qt3+bweFP;Ubm}tSnSCl`I9%gHmOJ@6PE_gp~=+Z;%qRZ zWD+nG@@wx5M?#gCJZ^|u{`%t9tk38@+7f$!DbEN<=|1JktyBbxF@xd0!p zcDvBqjQ|{z~V(+;sj|_rmyFd0VT_@gE7OKl_@;+K35& zblFuI|7>Ur&Y4^w3Oic}S5?d8Tma@hCfyJjqXOK54gjhGp=ZllkyztWvT@@^`Cn!B zL5PY=Zg}CWcnt!FqiPFsO}FeBo-n&#yT9XbYt^m%X(1x@UouFLS~2I3JqB zB)AUQcrP(PO&AZCE~WtM_z9W*mmL6D1~1Km6j98c)i)EMjbB=%5%wjnds!5Nr!w?> zFnRJWQ56cqql;Beg3^i%y6L)|>~GfWlYhnSc6u`TLK1}bG8Gj?^1;DXc;qqj3fxG2 z=My$nxbto(F;16)m-78L zph)`txPwUtGL~T|&PZ?n1qFZb-^kR0YL>Oj<8CZ%@KBt>%0SY~m-eUB3XZw#TT|V! zS;mmBfW64iHbO|D5YR3Lz-I;gy(p0~-r!j@YsDRw2BlSzR)1fP7hD=XspR$VKG<_O z0Sa*R`EvYAo$SV!!(0!NXQrl~dmWGiiXmBmVZ;;VtLHx_L0VWq`>?uMGjSVV zw*`-&@o9rxkG{>3G$AOm{^n3=Akc|V0CUWUnV zuY!wqf~B+*3!*K{dL1hSd%wOVeV+&UKq`dl2&1)9^(~)@(5+ z?T`9;Hz()gXm~*2BlP{x)O*3detm=6_#$|U{coKLV+wV3J3u314%1^Z8Fb0H)x#7v zzy5a0h5fk+2Odfst{z7F?rW(JZuZH4#03$2A^W#?tF2aQUH0_?HzAJR^gTD#rJDf2 z!eHM6sgTF~3b#`RLp-P@{MaJDQn1h`)az$(HwWPG;=)Nrh{UzC-KYuneqxoUR~hVy zmDT?0*+#R15}-ZSrb(Mjs1nue9yHVvyxA*pD8?W0Vg#M4smn9LB3itS;}a{lzxC?g zWck3;b{zFNarMNUrcnM}^Z&2_ErAy3lG2Hb*{=6u&%153K?n8 zI)9{7E^D?w=f|y1Z!IXh?t_@W4%+v`VlcNkV<~J9v#u`27UDWg=~d6j{~vK@;S_b- z_iYKKgr%femQF$7l3Zc|2|*B0X;2znP^4QzLXb}BP(W#<8xa-|X;?rSq%Y)YRz9~nQUIhyzb*Hw<7NlaDRd^@<-ad1 zFg{uJ;FEZ1dr+~ecKnLX(>4Ci&zn`fgCHH$W>NFzg$K-k1jJ$p89k6k3TI$~qSye2 zGzk1X0X8oXAsolu(j`>>fLng37d2FLfxlqkpvYJ}ib@ z8^gLY<8>!7z)>?GqWQc6z8eSo>f=L+og;eupXI6<>_#_;n#^J=Nu{T36TKDW-Kzg6 znf}jrGWkCz4k`**Nz`(x0ErbIed8PCk&Y4ngBbkmA7>#+ko}(`I*o3PDx`_P8LcB# zJa^NQiZ(Gu;RbIPd&oG2PMGn&#KKyxUSXzlG*OB#@hJ-xDIic9}U^9 z_3+;|AEAig_y*ikSJF^bl#N2!(=` z+vgNf&K@}oYgnzqdU@Edx|N3=w{m(_WOH^?L%v%%(PLoNK)0JrUNP~A%anXVZ8C&h zRpXl8zkaxnU%z(^WFA8={-tzUw;$YqKxf1$XIlL6EZPaQe~5;Rli?DqG2D}%Utt5D zy+p?zKX*b&8*#14#Dt$N1smouDqf8q@i8j&OHu4Z6C(%$OtzqiUHFQKxZcBj&h^K% zk|Xbb4P_jES9JXs(m2w@r!2nyq#WJ8zDn8{hbV>r2Q`}haKq6%y3OQ4#jc>jU)O~5 zX=2l%>s;3Lqt#3i#ycDM?`O^1k#h9EMYxL2p)C6S0S{pvLLTAlZIvwuI41VjZn=IA6+TSw!n(^24zT9}7 znZ=K$!AjJLv*drq%>RA5NkP`ltu0;kR}DFxi5yJ<2qUAeR}M+d&AwG!bWMLRZS7y_ z?JEwJ);)@ibEEeklXRIpnXxXGQ#*5cc;$W8>UI}7`nP53oU44oO<3SWjbh&P^I;#tK$>od-4L|8*AE@)!}Yw z)kLhPsi_$-$d9%JF13`jG$g0re_xyHKT8#}x-9dX)cID?TXs>y*=@6jSf0o8`7B#|s)yvg1)r)1 zb3%kK{QO$#y*x)IX9}w$ORnE9UG)Ym7T#c^+E$QXqj#4`xwKC1li}3pE92I#d;jly zO^+Xp?OQ%`kj-5>`|07i>0HjE0ICniXO4WeWsd?ir@r4|DdW4ZT-fWG z2e()<;<-L`3gf;mT@oT>Z3w^|9TjRB^mO-5?db4H8=1&7z1&$R#CAekJJiWeW+0IXXJt%Qw@yEf-E4Mg48X3Huz3*n963v-p!O`FwL~#%ActFu^mWXKG1bDP&y9v&KNBCa8-6CbpahH* zU$OD$5tPx0zsh&(WwF82Z=@Szwue2- z4-3sa>LkxBW9`)o_38|odNfay-jLnzaRK6fT#n~rv|Qg*IVAyup>345l{ zVDf%=J3ckx;Y4$W{kLc}|oc(q2YYJ*xKC4#WRac#q^vuO@urUx3$bG6b*}rEn zK9cua@0s^zOu83H&B+xRRv9spj*(pPhf6DCR;{RSkJY<+r{Z!>=<(G8&ypSy?7#|5A3 z)cR#E^45`Fug#D)X0xxt$ojWrryw*NW5uJ&ajku+Vs=}T_g{vt9~*er&d4;$_zKpn z{ye>JSYv(o%;@X}rxPA$S9+K{+eR_0HH-B_9#3qJ>IXL7|BqiRI3;b^9d05$xU>$B zhQx*E{!mz(nCMWeX>&Y?p?>iH^NSHXEj*5sJKmqp|2QCD9V|VajRe(ERQRrUaozKK zdpO`niovQyNK}7PGIG>+*QSIvF*p(ZY^KH4eOcq`K*J&+%EGP?U)DgHsiMA3_UN@u z);==skzPm?5$!*O-B%?_&l@rY;V+t+e0q9%jt+Q%3iZLfkE3JZg$>kcX({FQQ7R#3 z%c-!-)n=+0k4y8JFQVMj)12|lRE4mPCz}0UPjBzBguoPUZ`_UtG)t}HMZkP>aw|_l zLawj{FYhd;dENV+iyZpVjp~>pv{1>2-c(^aMZ)`6^FW zlFv0hj0{fGWDLLNv8q*mr;>%G^hTevv%palXQ)y0+w&q zpR7eI=H*7llF1o=E%Np$_StVNY|yy-QRQK81SwtdUOD<$b*%a1-3+(Tys6!jv7_(S z?REW?1#38X_w9PVM{{YVmf&$~jmFy%@OO!dMQ8g6TUptt8%RD}zQdQ0&PZiuvFEv? z*Aim<{E5DCP8h+X!T7b&PxtITe1Uq0c0%uIOV&mIm93dQ*5OOgNi5ga^v~|0GEVWD zKcu_fYC@Y3-hR_{p~)>JTe#>onJU_m9@GV_IC7 zk$F+V{+Z8KrqDn1al)NnhIp5cy<$Ix37$c4Q<3XJY0cY?oi%We^K{&`sZ&ao{mXuq z*3x=!7ER_B=KKsBq3FLRf};{mtC$nJq1X1}R~b`7_hXy?5{S|HLx>`pW7xL{=v*#6 zgX%NjDn`PdZFDjoUog_MLergG*O!EwgeO$TNjfC^PXCyzzVD1;%E416_2GQ#AQQWkjK-($ONcK#0{2EU!W(Y$Q_ zFc>tLAmu)UE~fLRuZ}#ph>dHSHhO8a8hZ>rKu~|$KR;zOGu=LIVbt|Hgim*(&Wn=_o5e$>{cTthUU_*=I4vT(1w&uEip zv%K*79NZ8opPHBSXTzyM_H)LL-h__a?V0z@m}l5z87k=AU7asphj+0ihP>8;^gc#gxovh$T!`t+ceV$!R^twx;PVRza-GzE{+q zXR7+{PGPFr$W--ow5r{SUsS(@2+R{=j7smrjtVYdXq~ zPo2$1NERFIrC3gVAhG8@4u$;t(tm6%%y$@o`0f^g5laEkn2l#2{Jm zRE4GKfnrGYS*^j-r+2X{ex?PAWQF6&!goK36(jE4NoSC$f6A`>-EMtE6(}Tlr5l8j z9b0h#!`g%ZL4B#Ka~D3|wJ{16RMMTtJE(VVG8N%>%mzh zTiuM()ek~gO!NKmq@S9Yu=ET#o}c`EBm45nx68FmnvJ|TF+TB{@gdjkD;$FFt1XwW z{C`VWD7NM_HtMcEv6q2J6%2}vu3c{%RrHS8w!YH@NNZfA)Ysp3;b2Ugq`wpSZV(k? z|LLDX;l}>HEs}?tDMNH`1b9}74!b_SB0JH{U|Iw6lviU#_Z^0pWY_V=z#d+3a}>Pd z_jsWP|5%#eUbv9mK$d2@%NX_zzSlkcOaO7xcrw3L&C|}E1ZlHZ0l&dZ5%Nm%Cz{1o z-=|g#ggtWx?xjZy{&z1x@A18Bq?VNM9(?jejnm5SQBct9Us{5(>OJ}EY z3|x>l!G@ z732W;2Da!DMKZg`c6K$g2Pr=hr4~`s3&-l1y{Hx@%;}~LZR)xG5J1~WnK9iAv%J7_{(cwC)3uPTy`i;Qar{M z6|D&zLQN&#i-Edj9Y)fwZ~TW*sjAvK)tDb6j?@nUBGIv@dZSpw64I?}sCYb>ecWji zEw(srbw0L%$D&_&T~GI0(k6Z9eG#m*M*L1>ckj%H)|p~AZ`$qFTd0T6o;`!Tk-IwW zKm2BP@lbr)Sr;aMO+hKmfRhQ{b@3U1Fs3lmJHF$Urg8&YHM7v6>q0X59*H3`%6-68 z8C}m~T~^ZFh)-KCwq6JRnLYn2eoa<6_uU^~1ubkuBD`mySB(Wbe*#!6R?Nkp)xoqxfpW|ul4Ur$jBlS68*&n|F0b}g-H=n| zJ~8LFLZ1z1UOq`V?oGUVfLAH=o%2dX4y(O-2K+@nwbjp6ya;8K6>hMO_k()ufv{JE z^h&Qo?^Vka7hcboWNza0n|QRVK#O>g?R7Fu*t5lo=H^;cEiG@&%Z-iKsa;+=uV4R( zJWj!8Z0tF)J5^t>AF569bNWqn1ZQPbPMVIo#fKR8FM9+CR7xXjEXe!8%**Q0NWq;t+8=N-kb*zVTTfY zLYRc~X%@>816|u4!=#}#L7CH~8+Q$Kz#%=KK@A05_~zVN&Q;Z`@atY0FmfRZQk6c9 z>i6^TsFATN=JIMf%5b^K_!rRKHd0+YJ*0GkM$agngFEhv{iW;Q9QcCnAf;@4j!5C| zSFffNIxWp+?Vp7hw3PrqpGz0>4@|@C$J_cecMfZP%vxdgOvEH!o8G8Bx>9)jakIi7 zuw#03AZs-=PKBYnm!-b?^KkuMdC;z+ehAqXdHs;Xk6>>v|EUC#V?4R_Ty;P+mpYc- zSHHfyfZ!Uu9@)Bv$f!g|MMc=p+f>i2?|wf!gUQ|a@Ki^KGBP@wf?e6&+A`-F9tTr! zoV7c0k7ZrfpY*rhKIoGZSz2CM*+5%Ff#GO^$)3syUW|^NU18@(#ubQevyB&5K}Cg* zVhGt`h_DuU$>t_9AtB+Wq(xWcAwkn!j3_YZJSLEF*P1;%Jk0Q+XR;g^UmeWd`pdEr zB45LzKam4fB4`M{O}{{(@&49rI&x=v0Gr#)1)t4}Du=N6)&jPC_3H2h=|yHB$iqXJ zAwtLig{y8O2$-oi`Gkay@v2)ZU50<0;t(*Am$h1`OkmcAFJQcsVsT$U$tSXl%QDNx zf7xPucm9XV-xQnmASzA5>UV<$+PS#fDXw#(Z|3A#UoCWm&3oEUC5pud^18nuaeYe~ z9v+UTi3(bBm}yK|$m$2B_w#LsG=5>0r`hNQgG$!pyh8in6W&+!ee=0O@=av8ODn&x&VYRE?t2({ZY7zi-?Om(3wTXNg{bL`xB5 zf8|$LDWmISf>X?jhdAUiIt`pFrlVSQwMa1?7(_j&!K=rvJ92R*VAr&|HnjY{V)9PV zZ@f>Jb-)~YRlf7uXv6KIa+)Hh0|xu3C9B%YMY%7Yls*xe6jseOmDLP~V5W=#RNUdg z7bQTQ=^kQ+@k~k|x=r8zV^81};8ELU<9H!=>6mxfaiIpg$cx z$*>g&{N9LWNEmi63i2i$uXyFLg?AQcwuMxPTBeoRU0~aHeHT01TkzSs)yUnG$U`%U zrB`p~+(Mvwdxw{k%u0?MS7iL<|IHO_*Dit}P#3}58`_dv--p3Hf!;dMKn<&Lr&EW5 z{%j~6YAR1H&iQEK+EBqT6vmxF7uo^tuu6bXX9Hjxq)UH6?1_wnno?ncGs)Qe`0R8c z&6C!|Ii{p`fw(VOm_51}zzDZu-y?gtHIm6yHwcPAJmN3F;xeM0Ep#ti&N54=euyOx#76|FE_7E0 z6d`x8h-6;H5cWt3HgfIB$F%fw__yXXd$q( zt2SmKytjgScQ3>5^7PaFSBbwRSD3OPTLX7QZktByAXlV5-lw=aUy&1<3G91MYf6V% zF$@%5O07S8{!n95o#GvjyJi<2%LJYff?+fIIH}3GUxreNVCW>=OqHBHw5QQypVrfu zth{!a=4OQrfiEmZ9tYtKIxE6W{i&@`oi5|ufrZKcAl5~KqMNsC*?;F>-6UD^4}ez+ zLS&b4GQj=D{@g>)IsfDv2yb9h@hD?Qd>Y_qhcLS;w@a@|3TvsVh12{LyV{G=dGryp zSvgcS{ty&k%N)kT-^CMX5HC>-RavSTEBiR#KCZE(u+h z_E08OcC_4S9-Jo*-12)2&>Dp_kt>8Ubwr7+;%2P6Y!sIpuV=|w%@G(hZdL1(Nx`uN zaJqPcK4K;D#EeER!c9~B{R1zV?&)o!aaX@vUhuXV`+lQ_Ep$82GM zHqjom`sE3~wMpvve6c#`!&X(A*xh|gKc800sqR$aTtPI>9s`{2qCU_RC<>ub)*d-V z)ursljFS-zqt;VXAGJdcq`?nLiv-}G)hp)2vqK#{B5dKQ@fHP+{f7@96j-9! z&1Y8eViD)8*u4x3z69bKrFDuOa!Sq7AbOND+W^PqxpWb z1}7Y84AD%lwX|kP!rx)el!+R^#PH!C<`okYc+tZE)A#S+Uq-J?v6uhBLt)=>@-;_@wOW|E~oupegq z#HBATCgKUS_irdkZQcXrRxh%0(oa^pB48#0`J1bcSBDQ|_st+)cx|{NChb{tLINj*VcEd- zW}}P>-8w6$v=I&jBOl3<3*}LtyRFQw+~IjD%v|EXBCuR15Ba*}pL6a*X{PJESnuT^ zf_}Got>1CLN3SjcXV;13$efK<+|HSDx-a%ty63vG-?p^k3}!8c`xPT@q2$@7i`4NS z7qG!Fky$8}B)%R%GUjRS^$4*5*gUZ?CLDyqC_f?H8AYy#U9B#kO*RZ?o zvDj7Pem=lrX>AG19QA?rVhFUYtYpUADnqN_2fs)`D6RfERj)X! z%cDn9*2(^~?Dcb02O5Fo`YrYp{6Q1|FiREtx!ReQF(6-wYu7d@~M%>L(^HE;a4MsyAHb z{QFpiuJ=fo2~YSv&ZZUe&}B;$S|L=aDgh{&wKd~~;W76QNgvhSuRwUtJ@JB7+wJoF zG=L6qE6hJt+O1@)*k~o?Z+8pR7Sp3 z_yfZaLrYr1ckHeVwX%oF_A5Gc$A!GUvUo&uFZ>yxZSSxaL`DYO#?H_a;Xa69_JJMK zYnfC!l44`ZGG*I{BL-6F;Gryst>NAn(?<950)m)a=4EpIg_~^|PMbLqzO^(01j|w{ zL?r?_g#$WHw4<6qbJkp!*PCqSAbOA0M+yYHY-E(DBcHu(=Hh`Q1jOp!B_o<)+^)7> zk6F__zThI@^Fhf-dFn`6!;Gy+HF~A8dcy#^i8YpW#k8;A%toP&f%s=ZT;gh#|bfAYI|4&=?Hi3q$kEl4&~A5C5A3=7L`1M z&CcnYFjGy%X+`eg@MG`t1Kcu(Kv$S7x(zh!otf9!y18j=0yz!p9>?YGk2|U??oc;l z0onzh)oe#;)cv=u=kdDcb=`Dk?*03wOSqd?PX3R~S+S_{o&adaB%qEx&J&51h+fkOe?WG&3ud@CCf}H>;54hM z`iY1lqB0c79qlNC49=^{jbvKx6Vq>QJtC5s;IRJrVPSlgfnjUz=CmCNjXOR+|CEf{ z2n|n zgG_05e+pB{dkS(`Wyo$oMEMBK{sUQ;K?qYTbry0=!XL7u42XX~si zuVLsnOKI*uB4{a$SMf@D#z{wF|MnmV$UD>EGc#rMj^35$RVz4D-9Jc zJ%nb46Vn-J+2ym#wP&RfATQ6LR}?Mxir5UpDBfc>xvxs zp5W<8ZGPN}KjDich~hcYz2&G#i(Djpw)8?sjNEDMw3b|)h-`YAQvFdFXPT@DG*k^8 z=5zav9b}Lb!dNSd%6>h$h?6JuJ8T@YD1?THJx7={ew_;{8DWnSLoIxI94tWT6B|XF zbc|7F#%c~-hP7r`-sjkUPdjATSgQfz?Sf*g2G`Xg8;bZi9AvxmAq3%Qk%fV65TLG^ zl{JnQ7L)ha2O&iTEjbza@41gUo4vLRsl(7!pm-2oE~|7rtylQzlXJn)M2eM2(gqP0 z2keW%_d4YL5)WkdWI4z+#A37iL5geu)R6o+ChVpA3Yt9l#M%%xsG(2_d;eAZHs7@! zt+nbYW!vu9ipN)=50-#&LgJ=0$YZ+}iy!wpWcMZ|;hzEM?s4la4Nxb(TWS3c#r}IA zxKs%i#wJqib7&xTjEqi!(=AsQJpNR|F+jSz0rCXsBlw~r`4St8ai&i-8_!K`W2=C^ zV@2y9NuZ$6dH7K-t|_If@+pFC^gE`dK+)c}ZGoI+s4ur=qSZj(IGNS=d4>RrUir2V&-md;cWq4n z2p<2se5>27XJHZGXQuN1#4xcah!8**ER}arFN{FFAN%i8q$(H9QfaC7%WzX@5oR0I zK88AX<9(7iB3HoOTf0A@=;!*q@z^xX6$NwsNLSymtph`huu}9Z%V7OZUU-n-=_1G> z5Lr8TPrKk7>e29*!D9{van5@XZk{f}LG2+ejfflw>@z9b(enFn7D6ry7C9Tt8vt+= z_MSR|oZ@jWoR-Cr8pA?6b`V*;y~}Nhn|GqOTjZ)!k5IQP%-PzkyD2?(>AURNqI_3= ze=LPajgFw86aW!dklR(z1WcSfzQ{R+-6^Xw1 zyU8FB0Ymj2^g{+3J=WwKVO$&IwD0@OfCOUC$vPT#clwCB#MER}?ZDd$)03{p&;w+D z`v*C{GOOT>32$Rfed~T%=Kbn#Vbj7ceLAO>EPb*`{O~3=7&CYG+qYg4b@qmaN`+|` zE~yO~CJ^=rd{ z*W$VEqel-U6iUiJ&K~j$Y*OGmp6(B2k(kONJHGXtjg1-09TVWEXZU(%W%dhe|76Fm z$U(&RiZKU`1HYqirwofiSfC3#?{V|tT2Sko-kDww@~wD7B+ro4_=unJk&#S`rnXJQ zc)oY<)^&=Q9jxe~gU<(!K{~{%J$gCkZZ>4es)RyBWUcRcLSZTs75)sMbU1>dnF)!@ zEy(H2f5L(`Rn=}YSw-I`yj5<=5ef<70+h|PsihlMzhM$W9uyHI02HL1yYP8ti#Tc& z(+u2l7$UM7PO1ruiC;X-)k?gtkcA!y0wr5;Mv)jC1RED*g8crvg6qJYQr5Nf8`bvL zE2&Tcj@vSA?|fTvA^^~ZQhdD`Qj{Z_A^v-i)TlhgX}2x>Lvxx1iG3l#TCR-Pmtng> zhzn~TIlM6v#6vzjSGoG0D`UT>lS6Vb-?tok8=Flg(n{|wp+dGb;AWH>2d3KBl5?>N z&#IBhukuGQasav0*5XqHFqO5b*%zPx6oN1;3B9~oN}cz5&-}F42>P9eTy?*!VcdeQ z(a*Kf9JPbm-U@!)s#*%qi_-!t-w{DEdq) zprIc4VbbFB;3c^CZXlZzmpaOI8R9IeR*;j zew@2Xq83{wTG<>D<|J@;Ys@OCxB`!L3@2S5sQ49}qR(cIOGXA&UK0s>5J1sO{q`(u zHL15q*9VFWULkj`mtnyJk-q4x_luyI)e=X7EdqKl;?k~e$ zgU5NsG?P}C)9=@i8K4}g-)TPUh?#9~xWsNe_{E|wYSW)_cOT@1X2WJ{7F8Qr9ABbf z)gP^5&oxAuS9RPFH%(F#B`z zpYE&IFU3lHq*weX@hGDxTFZMTf_}dv8crBXK;zhg(eeXZpb%AROzj-5$8)x)dg>T| zI3cY%yG5b&aROR;;bz#h*X$Yfn}U)=>)-JNij-LYsX-O>js*&;&|BoPlRn!{j*JVZ zp>o%^dyP7ZM)oS(DK?!R9TovH>T+#K5=slyrHvwynM;!c0F4+TkmI2k4|SM3n}>8s zu@b?pe?Mt;`U`}a>dvY6)y*sE7bL=ZEvsJ2H2rrkz<@XG?PM;?e-Ba9{)3-f0ex%^ zq!kKC7SD9=eXhIuk7*VbVW4;c6x}RLf^I3j7cZhTC9QH{w{tb#*#7vPm7Z?k>#B6Q zId&5l!GbJNkPMRrV_sp_b(hShHvXTnLl44xz_46V0{!kiXRc#rdcZqy_&z`?1u_w8 zI5=pu54h|veUZ;X%ir2z+ER%`>VbVjnZTRA!LGy#s7`*Sy~&!Y+s z5=;r2W)3n&K`OX=mVo(E(DpW)ZLjq`@&Oi&*fE zaJB{}ATKVrpgVVg-gx&n2!h9imTZ^oruubcBeHgXm3wjHf9!kw%o9r^#4;lw#`j{F zW?dn67fI0&Y*SuQF(kUX0VkQUJwBa;QN6ws)*NOPxMVe1sT4zpfP1?`ViY6h%(bo- za2C@c@Fzt#HQ_saVlH_yF4ZcT|K3u$|e-sn4ly8 z4GOD9DUrESly-TkvIqyEJ0tTY}^*U-`mhQ9pHw=Pib5 zH}kc`stUix4z1Nfkk;M2u7N@ss$zTo@EoDH1%XHui*ObSxJ~j0PjR2{4p&eZ!UalF<}owWDEeaIkR`Mkl4| z@&WXfW%zQOz?LOFSAF?rysyFEdS4$zG>#gHLd^kKmDvv&7HBlGsmroPgFs;L=QJ6a zLV1aaMy_EdHrIZcgioURI?ol-6BC&bzgz7mDq`QU1Gz0&8PXv2>%Vh^+S+vkT{gtI z`TT52IKed0eyeupVU$7~bP@TY?cd zaTE+)R({*l(Zpc;q0Hnsb~1paNASaCj2q zmY6^Z_VDsU*1}m{+(u+~stKUw)$G-ylI<~Q}qsv7-Pj2fGuNUmrF z>lDggzOsX=?mHOMI~JF1G-bG|key->veMb<78W(4lJzk8ka0Y8erUKfm|qLrdCc zupm1SqUd_2%RWe}E_B$#qE3DKQDy-rtc{&QoKP+Mp_Wz=mGJwH`;_4*9hC(lR+EwU z?&WH|({7--Smq#t`T?a+Hp$x=ha55>roT8VrMY=;c>H?!7*+LkfL2(?jp6Q9Fc*v^U^ z3$6Js>>YX0r%%MwZ+lh2)K>|_|3*CTtY(MYBA6D1N-s5wea2n;k=U>U<)SS21oPbv z%h$E&cgt=qjLb*{*DrVJbdn_G-_##X@&UXBuq$_}>ja|J%@0BEOT6!HAQAQ;Gvq{4 zM505AEl|Jj8XUR0NMPLwX6!t{qy3^(*#u;qfIbC3(YP0k zc=<5N;zG>GPJWVSepublq2rD7!GmM3-whDuXn2_uy>4<*swG2a;3Y+VH-MyaHj&LKLek`!-a4QN~3zx(Qcn zi;e0O#m<^3(FmS)d6x$C5f?t;BiBJuiJ;GeP9#)mOyxo;87rf|e*Fr%(U^VMld!9? zVr?A0QBsY5(y-hq)(|GPO*|GcE1Xn38K20z(eiK?_nX};8- zLUHgF*8`{+S7Dj1TLP3#+K0-P2rwMq_evAeKbK zZwBB^JjbJ6QjD;T3rm<1WAPE$DhT9`uAZJ2#yR+7ppOkr3U3bm94ImE?R4%$@4f`y zH7Zb(1CAeD0*uuU#zc9)HgmG$$6d;|8LW%+lGnm~H`dm_{O-m2Qeom@2mL+{F}uDLPRC$PLkv|kzj^8n z1(+V27ar|hz5^SPu8e%77J4aIO2-e)nqn2~o(?2iBY)DUdSI6B^PQ3Q6prEN-*NWC z!@bVyG~bU*F|rsLMyG-_pZI%O5WvJEVvuWo0J;u}>l-Rb^;)?1*};5=ax%v+yy>O; z!D?lT+;X$ikGBKc+fN2aBmw5NvC+HFVH~+EeEw%o1l8Oef7b6hT?B(DbchU(J=?Dc zyugGY`K=*_QLP_6G2JmDGj0UMo9**3bf~@cV9T=@yPWqemrO*`}(|oA9v5XhFjce#IQ;{qg`q*|**7YxdXiujkS} zvBV@Kf#Y$!!Dhf+Hg=plHHSI%rvB9uF#A`)M8c&)Ix0&xZE4?mkD zyFr~rSan*yPPysBOOQhp#@BBT9S>a&bkEVZCY&%oWycc;eMbaF$25 z6f|VVMMq9cc(Vg{p{?snjUMzy2lW0rTO7N+K9=Z3P;|w23LQ0iQ$@K8n!C{qZLCS>>kH*8*6k4FRyj(%60Oja3ZQ#+_%~7~#P`~C;1G^!hFJ}0RYfvuv zO$KWqk`ixTnHFfO2TXkgbrb%Di>XO1Veoab2g85VbTHp-Ll$|KMfm1mfFNGYMZSZQO$v;2(uZhZdB z-?DohkFZBInd1O=PHS@0djI+JHHzz3;<*{-H89gq2f9p%tiKFTv(7~8*YtZ^mq$uF zgm+n7WN&6(+J!l^Tu_uFdTW{w8)4xrrzm1j6ODaLMr7ykn^avHB9UcacCqda=vY1z z=RpRaCH7t)SuL>0b&^_+Ck5P2Ch4i3vGzA1A3Oi11jy8@6KDM#`kpAot92|$EbrDqEVKPQz8a?6%0jbz@- z=EbPOVfE==+nyUWW6SD?Yg$5Mul>$~z+qZ_42mmPWWEJ7n_XeyfY>#>X2#3Z`o){I zbH9}smHxOil`+GJlA@qCweH!A zbcLdM+GZF;b1CIW0=k!MvD6j=uZ=@L{|ttRJZy1&PomvsJci`1D&gM*Axh>G@rurx zaP1r@W5rxm&<$3q03dJ#gTj4zO>;bk#uu5F-#fmDBV9#b(daDT^D2y=Z1y!NU@tFs zIK|vN`n~eLmBjv*P*f1}0Oc$2ROrTSQ`Psi+OF$`j+ZUx;rPFim$;6>#-@(%;kB_m zih_*GWsVxRXp!lXx>9GzwS&wk@ehbw)mK}y4=b&Ckrf9&g&w+F3pM>yB5DyFkVGS+ zilkG5rp}yCwWxJaf_4^-FQtt-FLW8iXv{_F#aa&+wV9WW( z&$mv*ujvR@QU9Vn$XZTRdTT;`Z8=F@!?ZH3BE15a9^3c2GkJ+jr28c)7LfY#6eJ-@ z2Y;N#tvgPtUW1GPBvMTY@uca!MT>q<{adS;?zaxAM%7D1LaPV;`8R#RQYUowF_TE1 zE-9%8>$ZqcsoaP^;V?b6)bOcgluc*?0>oxVl4_o;$rR0;y!WKs-mMFH+mz(xE z-koU=Utxhxl@(_wF(y66-=V6?(NCahbNh>RTB2Y=4v*lEA7Q@nSp@aDco(@&_Qe4; zk+KB`)|5W11oZBIb5x=Y zN&oM)KO)$@{#$7YaggAX-QHl*n*q*(W~Sy*OG;iGU7y~3+0thG@~VX1VrRmA>M^S? z%IDy30J+@BaAu^NL4r)sQ%~%g|JTC8vb>t3{xA1B;3dWe0t;IXEk3nP{siyc;R}b& z7h7S#B$xd4QR@CyI+GCLnwGDK>9~n_XHZFp6e%Hd059V*_`wF`p)m)GEK%crmn%<- zO^jgJ=angD7cYw>1da6_+Ks+WPMTAQ6O~*Y`^DjQdxN6z7iviIv}>Q51tCY!8A*i@2 z1E^+Em-T^>7>TT`YA`KSZ}EEN2HmzaC&r`DE5(0I9P8O_5|E5D=dFXAQN$nZ}5HXR?_A!<)Wx4jGE zvl=w~Za(@T@j}%bUu;uv`9nx+?Nm7Azv^qtYGE zU2V2Y_q+epm9Cs`?>R&JW!x$XK(>J5LC)}!`j{N%g}|2}&Aw3C>NCo)|{{apRs z4Szk7r7tqPrKZCS`1N0_c`7fJ!zz>Hl!b~Mw;n|fYnA5E!%TB}np4h+F;wsK z5MIkRB)krhisckdMnw*#9O4zV61^zOm}7bGVNbpP?f1R!`+I$_?{)3k=l93%;m_5U z6r`-ZjL&-pPtdTQh}2Y&Wl6An%ah|P65VXRw9v}&P2H+X?nbY@uAfcHn&h|5Rc}{w z(^A%Yr!_PiXr6vMGj$$mpNsD367gL+Q7HA{O;|_21|DMXvh;YwxvQEmzF;R8- zpOJBfq^hec*;ehP7{+GcIa@;#SdPwCNg^ouD2omHPy+;rV^+Bz>sF7wC6yq)>R zlZj1|O*#TQR)s;csxqcQt3fr}NA;;kR!`5#7+bz|pEb@(+DhG8Tjqq!UfGmDbLQT* z?}2$~+tuEA=*Ua9>?KI-SbxVSo6sC6du<>$NT;Zkvmb*|Ru8ESDba-Kju*PqVo%1} z`#nzOu|Udxk&JKd58@ju)N(avT8zrCL6x7>W^9Y_E;8QbzGE5uOah$3()R-66sA31 zNGd5IrqgBzZ#9s+g%v7`$IyxR*onS99px@#X7b%%j^`sU8CpDlL_Tp){&WGp*d|fN zs2ndm&lDDH+5m(1YVi9YL^~q}cZlF+*QBpOAza zYp|CTaWTAn@SlHTO}ySvM_^FuK+$f>P@o;dq$3QXO<58BuIp{OioD{)j0vChBR+hD zS!54Xe-sr02b%Gy%pn`JbABjQ3I>BI_3i{*2=hsAqUS^xD?7C)(gxqy&!5YyfDMb7Zv-z6_gQwsE?G)W;h2L2*tiZ)k zqF+Gjyuw=+hZc93*u+s)_jHP-G&O8omv^2v#JMQY&J~KqFhEKS-@VE&cF-k#{%9&4 zF4U=Ecoqh!qz&9xHQ3w29dOzoR@zP(`PlV1Qjg8?A4=r}NFB?w5)+ui=wDJAAs8I0 zRnAEhqa5Hq^UJXq34m`S;1X68^NQi{cf}^#WJETAg^{B;Q{ZhtD4_V{S+$0OtpRoL zq~rWp2x^pytw6!oNWlq&^JSjLgdLh|>$13Km1Kn(mjKdum9>5AuAe|&4+0VIF!V_s zDwJY_DIhuzD!^9+d#R7Zyn$lXoJz6cDkLJ_*H~rDT(mI(owIRefs6qnY7XHwtya%h zIN+WE5}kUG$~GC6vgl$R4q)JS3-I!AG6 zlOwu^#m``Y?gums8ofPZylu_8)#Q-zMljGS`*P@iJJAJl7{!c;oa9ArC_1>BTfjQt zn@k1;w zhX~h3#NU}Zq43jYM6d-8{i(g!&&r$_C$<-)@e25U$8f9WZ{)8~#XrRhIfHPx+k=ke ze!xp6LEVhi1vY4)fK7x9O<7Sm`uNs>U{MIiEdW0GJU>)y8OEGvhLm>n25>H+wCRU9 zwhJ#~P*xi8AnbW1TO3T}s)+b0U+Mn@6M*1W!`|aRgSJ4fEc%9wBLwsPk+Mz#XyJrZ za03+j1qpUgWvy`Bsuu5@sq4)`)pe5Pjh54c*1z&|J9t z72x(cC{$lK7CkE*e~B&W@)$1}ebW&tq<$_RJpMZ0--qT@S$%OpUGSbJ0Dqe)qn;SaqjS#M8AjZbz(H@AZZ;U&WFoWY}gdPYSx zeXbH9c$++aGkV}|_HwR~3vE7m^e=z2$TQe^LBvhpP6OK4>RTuRxY0T+bi6tGLf@Li zfdy($$Ar=(b_CRkOp+{I*El#>*WXV&gUWo}N^cN8Z=2jH6bile8}&VuV(OlA+!QS* zoGqzRtj1Khp!Q8v?kY9y$n4E|l;j>OE*`%VN|J0Ol{z4espF`SriO*JN|eeiFs(o}+Ov4p zc0)=BhApk}ijk$dErd6oQT6F;=ZOnM=O+Jq@1Nu+&8X}t)o-DmASGnDmdiy?mCU{u zyqgY;u3@s6=c?!LTmDDM==SttC6{Y5-GWV@FzA?1jC?PhJlv#VrZH-%g?DY$8-Dud zlhJK9&y-{qzR_kPhL!~d29@`Uwtyz^lH@e5{ScH0Y$^E*BqEb2wg36~JmdhlppYZqW%R#}<7#`)LBqSu3m%BKF hnc%}Z(VO`%67_k|5z`drHh@T29X)>J?r-GS{{cHEC}{uy literal 0 HcmV?d00001 diff --git a/examples/index.html b/examples/index.html index d4211bc..4152813 100644 --- a/examples/index.html +++ b/examples/index.html @@ -11,6 +11,7 @@ + @@ -25,17 +26,18 @@ + - - - - - - - - + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra. + Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. + Maecenas faucibus mollis interdum. Donec sed odio dui. Cras justo odio, dapibus ut facilisis in, egestas eget quam. + Vestibulum id ligula porta felis euismod semper. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis. diff --git a/examples/index.ts b/examples/index.ts index 768f503..bdef613 100644 --- a/examples/index.ts +++ b/examples/index.ts @@ -38,6 +38,12 @@ add.addEventListener("click", () => { layout.insertPanel(name, []); }); +const urlTheme = new URLSearchParams(window.location.search).get("theme"); +if (urlTheme) { + themes.value = urlTheme; + layout.className = urlTheme; +} + themes.addEventListener("change", (_event) => { layout.className = themes.value; }); diff --git a/src/regular-layout-frame.ts b/src/regular-layout-frame.ts index e99a9b6..b3e8f5c 100644 --- a/src/regular-layout-frame.ts +++ b/src/regular-layout-frame.ts @@ -26,7 +26,7 @@ const CSS = ` const HTML_TEMPLATE = `

- +
`; type DragState = { moved?: boolean; path: LayoutPath }; diff --git a/themes/borland.css b/themes/borland.css new file mode 100644 index 0000000..a122a50 --- /dev/null +++ b/themes/borland.css @@ -0,0 +1,103 @@ +/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ + * ░░░░░░░░▄▀░█▀▄░█▀▀░█▀▀░█░█░█░░░█▀█░█▀▄░░░░░█░░░█▀█░█░█░█▀█░█░█░▀█▀░▀▄░░░░░░░░ + * ░░░░░░░▀▄░░█▀▄░█▀▀░█░█░█░█░█░░░█▀█░█▀▄░▀▀▀░█░░░█▀█░░█░░█░█░█░█░░█░░░▄▀░░░░░░░ + * ░░░░░░░░░▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀░▀░░░░░▀▀▀░▀░▀░░▀░░▀▀▀░▀▀▀░░▀░░▀░░░░░░░░░ + * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ + * ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + * ┃ * Copyright (c) 2026, the Regular Layout Authors. This file is part * ┃ + * ┃ * of the Regular Layout library, distributed under the terms of the * ┃ + * ┃ * [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). * ┃ + * ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + */ + +regular-layout.borland { + background-color: #0000aa; + font-family: + "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", + "Liberation Mono", monospace; + padding: 16px; +} + +/* Frame */ +regular-layout.borland regular-layout-frame { + position: relative; + box-sizing: border-box; + margin: 4px; + background: #0000aa; + border: 1px solid #00aaaa; + box-shadow: 1px 1px 0 #000000; +} + +regular-layout.borland regular-layout-frame::part(container) { + padding: 4px 6px; + color: #ffff55; +} + +regular-layout.borland regular-layout-frame::part(close) { + background: #00aa00; + height: 16px; + align-self: center; + display: flex; + align-items: center; + justify-content: center; + padding: 0 3px; +} + +regular-layout.borland regular-layout-frame::part(close):hover { + background: #00ff00; +} + +regular-layout.borland regular-layout-frame::part(close):before { + content: "[×]"; + font-size: 10px; + font-weight: bold; + color: #000000; +} + +regular-layout.borland regular-layout-frame::part(titlebar) { + display: flex; + align-items: stretch; + padding-right: 0; + height: 22px; + background: #0000aa; +} + +regular-layout.borland regular-layout-frame::part(tab) { + display: flex; + flex: 1 1 150px; + align-items: center; + padding: 0 3px 0 8px; + cursor: pointer; + text-overflow: ellipsis; + background: #0000aa; + color: #aaaaaa; + font-size: 11px; + font-weight: bold; + border-right: 1px solid #00aaaa; +} + +regular-layout.borland regular-layout-frame::part(active-tab) { + background: #00aaaa; + color: #000000; +} + +regular-layout.borland:has(.overlay) > * { + opacity: 0.6; +} + +regular-layout.borland:has(.overlay) > .overlay { + opacity: 1; +} + +/* Frame in Overlay Mode */ +regular-layout.borland regular-layout-frame.overlay { + background: rgba(0, 170, 170, 0.9); + border: 1px solid #ffff55; + box-shadow: none; + margin: 0; + transition: + top 0.05s linear, + height 0.05s linear, + width 0.05s linear, + left 0.05s linear; +} diff --git a/themes/chicago.css b/themes/chicago.css index e3234d5..84a66a2 100644 --- a/themes/chicago.css +++ b/themes/chicago.css @@ -11,79 +11,85 @@ */ regular-layout.chicago { - background-color: #008080; - font-family: "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", "Liberation Mono", monospace; - padding: 24px; + background-color: #008080; + font-family: + "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", + "Liberation Mono", monospace; + padding: 24px; } /* Frame */ regular-layout.chicago regular-layout-frame { - position: relative; - box-sizing: border-box; - margin: 12px; - background: #C0C0C0; - border-width: 2px; - border-color: #FFFFFF #808080 #808080 #FFFFFF; - border-style: solid; + position: relative; + box-sizing: border-box; + margin: 12px; + background: #c0c0c0; + border-width: 2px; + border-color: #ffffff #808080 #808080 #ffffff; + border-style: solid; +} + +regular-layout.chicago regular-layout-frame::part(container) { + padding: 6px; } regular-layout.chicago regular-layout-frame::part(close) { - border-width: 1px; - border-color: #FFFFFF #808080 #808080 #FFFFFF; - border-style: solid; - height: 16px; - background: #C0C0C0; - align-self: center; - display: flex; - align-items: center; - padding: 0px 4px; + border-width: 1px; + border-color: #ffffff #808080 #808080 #ffffff; + border-style: solid; + height: 16px; + background: #c0c0c0; + align-self: center; + display: flex; + align-items: center; + padding: 0px 4px; } regular-layout.chicago regular-layout-frame::part(close):before { - content: "X"; - font-size: 10px; - font-weight: bold; + content: "X"; + font-size: 10px; + font-weight: bold; } regular-layout.chicago regular-layout-frame::part(titlebar) { - display: flex; - align-items: stretch; - padding-right: 0px; + display: flex; + align-items: stretch; + padding-right: 0px; } regular-layout.chicago regular-layout-frame::part(tab) { - display: flex; - flex: 1 1 150px; - align-items: center; - padding: 0 3px 0 8px; - cursor: pointer; - text-overflow: ellipsis; - background: #808080; - color: #FFF; - font-family: "Tahoma", "Arial", sans-serif; - font-weight: bold; - font-size: 11px; + display: flex; + flex: 1 1 150px; + align-items: center; + padding: 0 3px 0 8px; + cursor: pointer; + text-overflow: ellipsis; + background: #808080; + color: #fff; + font-family: "Tahoma", "Arial", sans-serif; + font-weight: bold; + font-size: 11px; } regular-layout.chicago regular-layout-frame::part(active-tab) { - background: #000080; - opacity: 1; + background: #000080; + opacity: 1; } -regular-layout.chicago:has(.overlay)>* { - opacity: 0.8; +regular-layout.chicago:has(.overlay) > * { + opacity: 0.8; } -regular-layout.chicago:has(.overlay)>.overlay { - opacity: 1; +regular-layout.chicago:has(.overlay) > .overlay { + opacity: 1; } /* Frame in Overlay Mode */ regular-layout.chicago regular-layout-frame.overlay { - margin: 0; - transition: - top 0.1s ease-in-out, - height 0.1s ease-in-out, - width 0.1s ease-in-out, - left 0.1s ease-in-out; -} \ No newline at end of file + margin: 0; + transition: + top 0.1s ease-in-out, + height 0.1s ease-in-out, + width 0.1s ease-in-out, + left 0.1s ease-in-out; +} diff --git a/themes/fluxbox.css b/themes/fluxbox.css index ab039fc..e82b675 100644 --- a/themes/fluxbox.css +++ b/themes/fluxbox.css @@ -11,100 +11,104 @@ */ regular-layout.fluxbox { - background-color: #DBDFE6; - font-family: "ui-sans-serif", "Helvetica", "Arial", sans-serif; - padding: 16px; + background-color: #dbdfe6; + font-family: "ui-sans-serif", "Helvetica", "Arial", sans-serif; + padding: 16px; } /* Frame */ regular-layout.fluxbox regular-layout-frame { - position: relative; - box-sizing: border-box; - margin: 8px; - background: #FFFFFF; - border: 1px solid #9DACBE; - box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15); + position: relative; + box-sizing: border-box; + margin: 8px; + background: #ffffff; + border: 1px solid #9dacbe; + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15); +} + +regular-layout.fluxbox regular-layout-frame::part(container) { + padding: 6px; } regular-layout.fluxbox regular-layout-frame::part(close) { - border: 1px solid #8A96A3; - height: 14px; - background: linear-gradient(to bottom, #E8ECEF 0%, #CDD5DD 100%); - align-self: center; - display: flex; - align-items: center; - justify-content: center; - padding: 0px; - width: 14px; - margin-right: 2px; + border: 1px solid #8a96a3; + height: 14px; + background: linear-gradient(to bottom, #e8ecef 0%, #cdd5dd 100%); + align-self: center; + display: flex; + align-items: center; + justify-content: center; + padding: 0px; + width: 14px; + margin-right: 2px; } regular-layout.fluxbox regular-layout-frame::part(close):hover { - background: linear-gradient(to bottom, #F0F3F5 0%, #D8DFE6 100%); + background: linear-gradient(to bottom, #f0f3f5 0%, #d8dfe6 100%); } regular-layout.fluxbox regular-layout-frame::part(close):active { - background: linear-gradient(to bottom, #C5CFD9 0%, #B3BEC9 100%); + background: linear-gradient(to bottom, #c5cfd9 0%, #b3bec9 100%); } regular-layout.fluxbox regular-layout-frame::part(close):before { - content: "×"; - font-size: 14px; - font-weight: normal; - color: #444444; - line-height: 1; + content: "×"; + font-size: 14px; + font-weight: normal; + color: #444444; + line-height: 1; } regular-layout.fluxbox regular-layout-frame::part(titlebar) { - display: flex; - align-items: stretch; - padding-right: 0px; - height: 22px; + display: flex; + align-items: stretch; + padding-right: 0px; + height: 22px; } regular-layout.fluxbox regular-layout-frame::part(tab) { - display: flex; - flex: 1 1 150px; - align-items: center; - padding: 0 8px; - cursor: pointer; - text-overflow: ellipsis; - background: linear-gradient(to bottom, #C7D1DB 0%, #B3BEC9 100%); - color: #4A4A4A; - font-size: 11px; - font-weight: normal; - border-right: 1px solid #9DACBE; - opacity: 0.85; + display: flex; + flex: 1 1 150px; + align-items: center; + padding: 0 8px; + cursor: pointer; + text-overflow: ellipsis; + background: linear-gradient(to bottom, #c7d1db 0%, #b3bec9 100%); + color: #4a4a4a; + font-size: 11px; + font-weight: normal; + border-right: 1px solid #9dacbe; + opacity: 0.85; } regular-layout.fluxbox regular-layout-frame::part(tab):hover { - background: linear-gradient(to bottom, #D2DBE4 0%, #BEC9D4 100%); + background: linear-gradient(to bottom, #d2dbe4 0%, #bec9d4 100%); } regular-layout.fluxbox regular-layout-frame::part(active-tab) { - background: linear-gradient(to bottom, #E0E7EF 0%, #D1DAE3 100%); - color: #1A1A1A; - opacity: 1; - font-weight: 500; + background: linear-gradient(to bottom, #e0e7ef 0%, #d1dae3 100%); + color: #1a1a1a; + opacity: 1; + font-weight: 500; } -regular-layout.fluxbox:has(.overlay)>* { - opacity: 0.7; +regular-layout.fluxbox:has(.overlay) > * { + opacity: 0.7; } -regular-layout.fluxbox:has(.overlay)>.overlay { - opacity: 1; +regular-layout.fluxbox:has(.overlay) > .overlay { + opacity: 1; } /* Frame in Overlay Mode */ regular-layout.fluxbox regular-layout-frame.overlay { - margin: 0; - background-color: rgba(155, 172, 190, 0.25); - border: 1px solid #6B7C8F; - box-shadow: none; - transition: - top 0.1s ease-in-out, - height 0.1s ease-in-out, - width 0.1s ease-in-out, - left 0.1s ease-in-out; + margin: 0; + background-color: rgba(155, 172, 190, 0.25); + border: 1px solid #6b7c8f; + box-shadow: none; + transition: + top 0.1s ease-in-out, + height 0.1s ease-in-out, + width 0.1s ease-in-out, + left 0.1s ease-in-out; } diff --git a/themes/gibson.css b/themes/gibson.css index 8e0fc6d..cfaa744 100644 --- a/themes/gibson.css +++ b/themes/gibson.css @@ -11,254 +11,264 @@ */ regular-layout.gibson { - background: radial-gradient(ellipse at center, #0a0a1a 0%, #000000 100%); - font-family: "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", "Liberation Mono", monospace; - padding: 8px; + background: radial-gradient(ellipse at center, #0a0a1a 0%, #000000 100%); + font-family: + "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", + "Liberation Mono", monospace; + padding: 8px; } /* Frame */ regular-layout.gibson regular-layout-frame { - --titlebar-height: 28px; - position: relative; - box-sizing: border-box; - margin: 8px; - background: rgba(10, 10, 26, 0.85); - backdrop-filter: blur(4px); + --titlebar-height: 28px; + position: relative; + box-sizing: border-box; + margin: 8px; + background: rgba(10, 10, 26, 0.85); + backdrop-filter: blur(4px); + color: white; + text-shadow: + 0 0 5px #fff, + 0 0 10px #fff, + 0 0 20px #fff; +} + +regular-layout.gibson regular-layout-frame::part(container) { + padding: 6px; } regular-layout.gibson regular-layout-frame::part(active-close) { - border: 1px solid #ff00ff; - height: 18px; - width: 18px; - background: rgba(255, 0, 255, 0.1); - align-self: center; - /* biome-ignore lint/complexity/noImportantStyles: reasons */ - display: flex !important; - align-items: center; - justify-content: center; - margin-right: 1px; - box-shadow: 0 0 8px rgba(255, 0, 255, 0.4); - transition: all 0.1s ease; + border: 1px solid #ff00ff; + height: 18px; + width: 18px; + background: rgba(255, 0, 255, 0.1); + align-self: center; + /* biome-ignore lint/complexity/noImportantStyles: reasons */ + display: flex !important; + align-items: center; + justify-content: center; + margin-right: 1px; + box-shadow: 0 0 8px rgba(255, 0, 255, 0.4); + transition: all 0.1s ease; } regular-layout.gibson regular-layout-frame::part(active-close):hover { - background: rgba(255, 0, 255, 0.3); - box-shadow: 0 0 12px rgba(255, 0, 255, 0.8); + background: rgba(255, 0, 255, 0.3); + box-shadow: 0 0 12px rgba(255, 0, 255, 0.8); } regular-layout.gibson regular-layout-frame::part(active-close):before { - content: "×"; - font-size: 14px; - font-weight: bold; - color: #ff00ff; - text-shadow: 0 0 4px rgba(255, 0, 255, 0.8); + content: "×"; + font-size: 14px; + font-weight: bold; + color: #ff00ff; + text-shadow: 0 0 4px rgba(255, 0, 255, 0.8); } regular-layout.gibson regular-layout-frame::part(close) { - display: none; + display: none; } - regular-layout.gibson regular-layout-frame::part(titlebar) { - display: flex; - justify-content: flex-end; - align-items: stretch; - padding-left: 12px; - height: 32px; + display: flex; + justify-content: flex-end; + align-items: stretch; + padding-left: 12px; + height: 32px; - /* border-bottom: 1px solid rgba(0, 255, 255, 0.3); */ + /* border-bottom: 1px solid rgba(0, 255, 255, 0.3); */ } regular-layout.gibson regular-layout-frame::part(tab) { - display: flex; - flex: 1 1 150px; - max-width: 200px; - align-items: center; - padding: 0 5px 0 12px; - cursor: pointer; - text-overflow: ellipsis; - background: rgba(255, 0, 255, 0.1); - color: #00ffff; - font-size: 11px; - font-weight: 500; - letter-spacing: 0.5px; - text-transform: uppercase; - /* border-right: 1px solid rgba(0, 255, 255, 0.2); */ - opacity: 0.6; - transition: all 0.2s ease; - text-shadow: 0 0 4px rgba(0, 255, 255, 0.5); + display: flex; + flex: 1 1 150px; + max-width: 200px; + align-items: center; + padding: 0 5px 0 12px; + cursor: pointer; + text-overflow: ellipsis; + background: rgba(255, 0, 255, 0.1); + color: #00ffff; + font-size: 11px; + font-weight: 500; + letter-spacing: 0.5px; + text-transform: uppercase; + /* border-right: 1px solid rgba(0, 255, 255, 0.2); */ + opacity: 0.6; + transition: all 0.2s ease; + text-shadow: 0 0 4px rgba(0, 255, 255, 0.5); } regular-layout.gibson regular-layout-frame::part(tab):hover { - box-shadow: inset 0 0 12px rgba(0, 255, 255, 0.9); + box-shadow: inset 0 0 12px rgba(0, 255, 255, 0.9); } regular-layout.gibson regular-layout-frame::part(active-tab) { - background: rgba(0, 255, 255, 0.15); - opacity: 1; - border: 2px solid #00ffff; - border-bottom-width: 1px; - box-shadow: - inset 0 0 12px rgba(0, 255, 255, 0.3), - 0 0 8px rgba(0, 255, 255, 0.4); + background: rgba(0, 255, 255, 0.15); + opacity: 1; + border: 2px solid #00ffff; + border-bottom-width: 1px; + box-shadow: + inset 0 0 12px rgba(0, 255, 255, 0.3), + 0 0 8px rgba(0, 255, 255, 0.4); } regular-layout.gibson:has(.overlay) > * { - opacity: 0.5; + opacity: 0.5; } regular-layout.gibson:has(.overlay) > .overlay { - opacity: 1; + opacity: 1; } /* Frame in Overlay Mode */ regular-layout.gibson regular-layout-frame.overlay { - background: rgba(255, 0, 255, 0.1); - border: 1px dashed #ff00ff; - border-radius: 12px; - box-shadow: - 0 0 15px rgba(255, 0, 255, 0.6), - inset 0 0 20px rgba(255, 0, 255, 0.2); - margin: 0; - transition: - top 0.075s ease-out, - height 0.075s ease-out, - width 0.075s ease-out, - left 0.075s ease-out; + background: rgba(255, 0, 255, 0.1); + border: 1px dashed #ff00ff; + border-radius: 12px; + box-shadow: + 0 0 15px rgba(255, 0, 255, 0.6), + inset 0 0 20px rgba(255, 0, 255, 0.2); + margin: 0; + transition: + top 0.075s ease-out, + height 0.075s ease-out, + width 0.075s ease-out, + left 0.075s ease-out; } regular-layout.gibson regular-layout-frame::part(container) { - display: none; - border: 1px solid #00ffff; - border-radius: 12px 0 12px 0; + display: none; + border: 1px solid #00ffff; + border-radius: 12px 0 12px 0; } regular-layout.gibson regular-layout-frame::part(titlebar) { - display: none; + display: none; } regular-layout.gibson regular-layout-frame:not(.overlay)::part(container), regular-layout.gibson regular-layout-frame:not(.overlay)::part(titlebar) { - display: flex; + display: flex; } /* Cyberpunk color variations */ -regular-layout.gibson :nth-child(6n+1)::part(container) { - border-color: #00ffff; - box-shadow: - 0 0 10px rgba(0, 255, 255, 0.75), - inset 0 0 20px rgba(0, 255, 255, 0.1); +regular-layout.gibson :nth-child(6n + 1)::part(container) { + border-color: #00ffff; + box-shadow: + 0 0 10px rgba(0, 255, 255, 0.75), + inset 0 0 20px rgba(0, 255, 255, 0.1); } -regular-layout.gibson :nth-child(6n+1)::part(tab) { - color: #00ffff; - text-shadow: 0 0 4px rgba(0, 255, 255, 0.6); +regular-layout.gibson :nth-child(6n + 1)::part(tab) { + color: #00ffff; + text-shadow: 0 0 4px rgba(0, 255, 255, 0.6); } -regular-layout.gibson :nth-child(6n+1)::part(active-tab) { - background: #00ffff44; - border-color: #00ffff; - box-shadow: - inset 0 0 12px rgba(0, 255, 255, 0.3), - 0 0 8px rgba(0, 255, 255, 0.4); +regular-layout.gibson :nth-child(6n + 1)::part(active-tab) { + background: #00ffff44; + border-color: #00ffff; + box-shadow: + inset 0 0 12px rgba(0, 255, 255, 0.3), + 0 0 8px rgba(0, 255, 255, 0.4); } -regular-layout.gibson :nth-child(6n+2)::part(container) { - border-color: #ff00ff; - box-shadow: - 0 0 10px rgba(255, 0, 255, 0.75), - inset 0 0 20px rgba(255, 0, 255, 0.1); +regular-layout.gibson :nth-child(6n + 2)::part(container) { + border-color: #ff00ff; + box-shadow: + 0 0 10px rgba(255, 0, 255, 0.75), + inset 0 0 20px rgba(255, 0, 255, 0.1); } -regular-layout.gibson :nth-child(6n+2)::part(tab) { - color: #ff00ff; - text-shadow: 0 0 4px rgba(255, 0, 255, 0.6); +regular-layout.gibson :nth-child(6n + 2)::part(tab) { + color: #ff00ff; + text-shadow: 0 0 4px rgba(255, 0, 255, 0.6); } -regular-layout.gibson :nth-child(6n+2)::part(active-tab) { - background: #ff00ff44; - border-color: #ff00ff; - box-shadow: - inset 0 0 12px rgba(255, 0, 255, 0.3), - 0 0 8px rgba(255, 0, 255, 0.4); +regular-layout.gibson :nth-child(6n + 2)::part(active-tab) { + background: #ff00ff44; + border-color: #ff00ff; + box-shadow: + inset 0 0 12px rgba(255, 0, 255, 0.3), + 0 0 8px rgba(255, 0, 255, 0.4); } -regular-layout.gibson :nth-child(6n+3)::part(container) { - border-color: #00ff00; - box-shadow: - 0 0 10px rgba(0, 255, 0, 0.75), - inset 0 0 20px rgba(0, 255, 0, 0.1); +regular-layout.gibson :nth-child(6n + 3)::part(container) { + border-color: #00ff00; + box-shadow: + 0 0 10px rgba(0, 255, 0, 0.75), + inset 0 0 20px rgba(0, 255, 0, 0.1); } -regular-layout.gibson :nth-child(6n+3)::part(tab) { - color: #00ff00; - text-shadow: 0 0 4px rgba(0, 255, 0, 0.6); +regular-layout.gibson :nth-child(6n + 3)::part(tab) { + color: #00ff00; + text-shadow: 0 0 4px rgba(0, 255, 0, 0.6); } -regular-layout.gibson :nth-child(6n+3)::part(active-tab) { - background: #00ff0044; - border-color: #00ff00; - box-shadow: - inset 0 0 12px rgba(0, 255, 0, 0.3), - 0 0 8px rgba(0, 255, 0, 0.4); +regular-layout.gibson :nth-child(6n + 3)::part(active-tab) { + background: #00ff0044; + border-color: #00ff00; + box-shadow: + inset 0 0 12px rgba(0, 255, 0, 0.3), + 0 0 8px rgba(0, 255, 0, 0.4); } -regular-layout.gibson :nth-child(6n+4)::part(container) { - border-color: #ff0080; - box-shadow: - 0 0 10px rgba(255, 0, 128, 0.75), - inset 0 0 20px rgba(255, 0, 128, 0.1); +regular-layout.gibson :nth-child(6n + 4)::part(container) { + border-color: #ff0080; + box-shadow: + 0 0 10px rgba(255, 0, 128, 0.75), + inset 0 0 20px rgba(255, 0, 128, 0.1); } -regular-layout.gibson :nth-child(6n+4)::part(tab) { - color: #ff0080; - text-shadow: 0 0 4px rgba(255, 0, 128, 0.6); +regular-layout.gibson :nth-child(6n + 4)::part(tab) { + color: #ff0080; + text-shadow: 0 0 4px rgba(255, 0, 128, 0.6); } -regular-layout.gibson :nth-child(6n+4)::part(active-tab) { - background: #ff008044; - border-color: #ff0080; - box-shadow: - inset 0 0 12px rgba(255, 0, 128, 0.3), - 0 0 8px rgba(255, 0, 128, 0.4); +regular-layout.gibson :nth-child(6n + 4)::part(active-tab) { + background: #ff008044; + border-color: #ff0080; + box-shadow: + inset 0 0 12px rgba(255, 0, 128, 0.3), + 0 0 8px rgba(255, 0, 128, 0.4); } -regular-layout.gibson :nth-child(6n+5)::part(container) { - border-color: #8000ff; - box-shadow: - 0 0 10px rgba(128, 0, 255, 0.75), - inset 0 0 20px rgba(128, 0, 255, 0.1); +regular-layout.gibson :nth-child(6n + 5)::part(container) { + border-color: #8000ff; + box-shadow: + 0 0 10px rgba(128, 0, 255, 0.75), + inset 0 0 20px rgba(128, 0, 255, 0.1); } -regular-layout.gibson :nth-child(6n+5)::part(tab) { - color: #8000ff; - text-shadow: 0 0 4px rgba(128, 0, 255, 0.6); +regular-layout.gibson :nth-child(6n + 5)::part(tab) { + color: #8000ff; + text-shadow: 0 0 4px rgba(128, 0, 255, 0.6); } -regular-layout.gibson :nth-child(6n+5)::part(active-tab) { - background: #8000ff44; - border-color: #8000ff; - box-shadow: - inset 0 0 12px rgba(128, 0, 255, 0.3), - 0 0 8px rgba(128, 0, 255, 0.4); +regular-layout.gibson :nth-child(6n + 5)::part(active-tab) { + background: #8000ff44; + border-color: #8000ff; + box-shadow: + inset 0 0 12px rgba(128, 0, 255, 0.3), + 0 0 8px rgba(128, 0, 255, 0.4); } -regular-layout.gibson :nth-child(6n+6)::part(container) { - border-color: #ffff00; - box-shadow: - 0 0 10px rgba(255, 255, 0, 0.75), - inset 0 0 20px rgba(255, 255, 0, 0.1); +regular-layout.gibson :nth-child(6n + 6)::part(container) { + border-color: #ffff00; + box-shadow: + 0 0 10px rgba(255, 255, 0, 0.75), + inset 0 0 20px rgba(255, 255, 0, 0.1); } -regular-layout.gibson :nth-child(6n+6)::part(tab) { - color: #ffff00; - text-shadow: 0 0 4px rgba(255, 255, 0, 0.6); +regular-layout.gibson :nth-child(6n + 6)::part(tab) { + color: #ffff00; + text-shadow: 0 0 4px rgba(255, 255, 0, 0.6); } -regular-layout.gibson :nth-child(6n+6)::part(active-tab) { - background: #ffff0044; - border-color: #ffff00; - box-shadow: - inset 0 0 12px rgba(255, 255, 0, 0.3), - 0 0 8px rgba(255, 255, 0, 0.4); +regular-layout.gibson :nth-child(6n + 6)::part(active-tab) { + background: #ffff0044; + border-color: #ffff00; + box-shadow: + inset 0 0 12px rgba(255, 255, 0, 0.3), + 0 0 8px rgba(255, 255, 0, 0.4); } diff --git a/themes/hotdog.css b/themes/hotdog.css index b4fefd6..596efea 100644 --- a/themes/hotdog.css +++ b/themes/hotdog.css @@ -11,78 +11,84 @@ */ regular-layout.hotdog { - background-color: #FF0000; - font-family: "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", "Liberation Mono", monospace; - padding: 24px; + background-color: #ff0000; + font-family: + "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", + "Liberation Mono", monospace; + padding: 24px; } /* Frame */ regular-layout.hotdog regular-layout-frame { - margin: 12px; - background: #FFFF00; - border-width: 2px; - border-color: #FF6B6B #8B0000 #8B0000 #FF6B6B; - border-style: solid; + margin: 12px; + background: #ffff00; + border-width: 2px; + border-color: #ff6b6b #8b0000 #8b0000 #ff6b6b; + border-style: solid; +} + +regular-layout.hotdog regular-layout-frame::part(container) { + padding: 6px; } regular-layout.hotdog regular-layout-frame::part(close) { - border-width: 1px; - border-color: #FF6B6B #8B0000 #8B0000 #FF6B6B; - border-style: solid; - height: 16px; - background: #FF0000; - align-self: center; - display: flex; - align-items: center; - padding: 0px 4px; - color: #FFFF00; + border-width: 1px; + border-color: #ff6b6b #8b0000 #8b0000 #ff6b6b; + border-style: solid; + height: 16px; + background: #ff0000; + align-self: center; + display: flex; + align-items: center; + padding: 0px 4px; + color: #ffff00; } regular-layout.hotdog regular-layout-frame::part(close):before { - content: "X"; - font-size: 10px; - font-weight: bold; + content: "X"; + font-size: 10px; + font-weight: bold; } regular-layout.hotdog regular-layout-frame::part(titlebar) { - display: flex; - align-items: stretch; - padding-right: 0px; + display: flex; + align-items: stretch; + padding-right: 0px; } regular-layout.hotdog regular-layout-frame::part(tab) { - display: flex; - flex: 1 1 150px; - align-items: center; - padding: 0 3px 0 8px; - cursor: pointer; - text-overflow: ellipsis; - background: #CC0000; - color: #FFFF00; - font-family: "Tahoma", "Arial", sans-serif; - font-weight: bold; - font-size: 11px; + display: flex; + flex: 1 1 150px; + align-items: center; + padding: 0 3px 0 8px; + cursor: pointer; + text-overflow: ellipsis; + background: #cc0000; + color: #ffff00; + font-family: "Tahoma", "Arial", sans-serif; + font-weight: bold; + font-size: 11px; } regular-layout.hotdog regular-layout-frame::part(active-tab) { - background: #FF0000; - opacity: 1; + background: #ff0000; + opacity: 1; } -regular-layout.hotdog:has(.overlay)>* { - opacity: 0.8; +regular-layout.hotdog:has(.overlay) > * { + opacity: 0.8; } -regular-layout.hotdog:has(.overlay)>.overlay { - opacity: 1; +regular-layout.hotdog:has(.overlay) > .overlay { + opacity: 1; } /* Frame in Overlay Mode */ regular-layout.hotdog regular-layout-frame.overlay { - margin: 0; - transition: - top 0.1s ease-in-out, - height 0.1s ease-in-out, - width 0.1s ease-in-out, - left 0.1s ease-in-out; + margin: 0; + transition: + top 0.1s ease-in-out, + height 0.1s ease-in-out, + width 0.1s ease-in-out, + left 0.1s ease-in-out; } diff --git a/themes/lorax.css b/themes/lorax.css index 89017d8..be0318f 100644 --- a/themes/lorax.css +++ b/themes/lorax.css @@ -11,122 +11,127 @@ */ regular-layout.lorax { - font-family: "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", "Liberation Mono", monospace; + font-family: + "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas", + "Liberation Mono", monospace; } /* Frame */ regular-layout.lorax regular-layout-frame { - margin: 3px; - margin-top: 27px; - border-radius: 0 6px 6px 6px; - border: 1px solid #666; - box-shadow: 0px 6px 6px -4px rgba(150, 150, 180); + margin: 3px; + margin-top: 27px; + border-radius: 0 6px 6px 6px; + border: 1px solid #666; + box-shadow: 0px 6px 6px -4px rgba(150, 150, 180); +} + +regular-layout.lorax regular-layout-frame::part(container) { + padding: 6px; } regular-layout.lorax regular-layout-frame::part(titlebar) { - display: flex; - align-items: stretch; - margin-left: -1px; - margin-right: -1px; - margin-bottom: 0px; - margin-top: -24px; - padding-right: 6px; + display: flex; + align-items: stretch; + margin-left: -1px; + margin-right: -1px; + margin-bottom: 0px; + margin-top: -24px; + padding-right: 6px; } regular-layout.lorax regular-layout-frame::part(tab) { - display: flex; - flex: 1 1 150px; - align-items: center; - text-align: center; - font-size: 10px; - padding: 0 6px; - cursor: pointer; - max-width: 150px; - text-overflow: ellipsis; - border: 1px solid #666; - border-radius: 6px 6px 0 0; - opacity: 0.5; + display: flex; + flex: 1 1 150px; + align-items: center; + text-align: center; + font-size: 10px; + padding: 0 6px; + cursor: pointer; + max-width: 150px; + text-overflow: ellipsis; + border: 1px solid #666; + border-radius: 6px 6px 0 0; + opacity: 0.5; } regular-layout.lorax regular-layout-frame::part(active-tab) { - opacity: 1; + opacity: 1; } regular-layout.lorax regular-layout-frame::part(close) { - border-radius: 7px; - border: 1px solid #666; - background: transparent; - height: 14px; - align-self: center + border-radius: 7px; + border: 1px solid #666; + background: transparent; + height: 14px; + align-self: center; } - regular-layout.lorax regular-layout-frame::part(close):hover { - transition: background-color 0.2s; - background-color: rgba(255, 0, 0, 0.2); + transition: background-color 0.2s; + background-color: rgba(255, 0, 0, 0.2); } /* Frame in Overlay Mode */ regular-layout.lorax regular-layout-frame.overlay { - background-color: rgba(0, 0, 0, 0.2); - border: 1px dashed rgb(0, 0, 0); - border-radius: 6px; - margin: 3px; - box-shadow: none; - transition: - top 0.1s ease-in-out, - height 0.1s ease-in-out, - width 0.1s ease-in-out, - left 0.1s ease-in-out; + background-color: rgba(0, 0, 0, 0.2); + border: 1px dashed rgb(0, 0, 0); + border-radius: 6px; + margin: 3px; + box-shadow: none; + transition: + top 0.1s ease-in-out, + height 0.1s ease-in-out, + width 0.1s ease-in-out, + left 0.1s ease-in-out; } regular-layout.lorax regular-layout-frame::part(container), regular-layout.lorax regular-layout-frame::part(titlebar) { - display: none; + display: none; } regular-layout.lorax regular-layout-frame:not(.overlay)::part(container), regular-layout.lorax regular-layout-frame:not(.overlay)::part(titlebar) { - display: flex; + display: flex; } /* Colors */ -regular-layout.lorax :nth-child(8n+1), -regular-layout.lorax :nth-child(8n+1)::part(tab) { - background-color: #ffadadff; +regular-layout.lorax :nth-child(8n + 1), +regular-layout.lorax :nth-child(8n + 1)::part(tab) { + background-color: #ffadadff; } -regular-layout.lorax :nth-child(8n+2), -regular-layout.lorax :nth-child(8n+2)::part(tab) { - background-color: #ffd6a5ff; +regular-layout.lorax :nth-child(8n + 2), +regular-layout.lorax :nth-child(8n + 2)::part(tab) { + background-color: #ffd6a5ff; } -regular-layout.lorax :nth-child(8n+3), -regular-layout.lorax :nth-child(8n+3)::part(tab) { - background-color: #fdffb6ff; +regular-layout.lorax :nth-child(8n + 3), +regular-layout.lorax :nth-child(8n + 3)::part(tab) { + background-color: #fdffb6ff; } -regular-layout.lorax :nth-child(8n+4), -regular-layout.lorax :nth-child(8n+4)::part(tab) { - background-color: #caffbfff; +regular-layout.lorax :nth-child(8n + 4), +regular-layout.lorax :nth-child(8n + 4)::part(tab) { + background-color: #caffbfff; } -regular-layout.lorax :nth-child(8n+5), -regular-layout.lorax :nth-child(8n+5)::part(tab) { - background-color: #9bf6ffff; +regular-layout.lorax :nth-child(8n + 5), +regular-layout.lorax :nth-child(8n + 5)::part(tab) { + background-color: #9bf6ffff; } -regular-layout.lorax :nth-child(8n+6), -regular-layout.lorax :nth-child(8n+6)::part(tab) { - background-color: #a0c4ffff; +regular-layout.lorax :nth-child(8n + 6), +regular-layout.lorax :nth-child(8n + 6)::part(tab) { + background-color: #a0c4ffff; } -regular-layout.lorax :nth-child(8n+7), -regular-layout.lorax :nth-child(8n+7)::part(tab) { - background-color: #bdb2ffff; +regular-layout.lorax :nth-child(8n + 7), +regular-layout.lorax :nth-child(8n + 7)::part(tab) { + background-color: #bdb2ffff; } -regular-layout.lorax :nth-child(8n+8), -regular-layout.lorax :nth-child(8n+8)::part(tab) { - background-color: #ffc6ffff; -} \ No newline at end of file +regular-layout.lorax :nth-child(8n + 8), +regular-layout.lorax :nth-child(8n + 8)::part(tab) { + background-color: #ffc6ffff; +} From 0bda0c0b7748a0ae8ac3e2c5ffb963a5a518aca9 Mon Sep 17 00:00:00 2001 From: Andrew Stein Date: Sun, 22 Mar 2026 14:28:46 -0400 Subject: [PATCH 2/3] Rename `regular-layout-resize-before` to `regular-layout-before-resize` for consistency --- README.md | 6 +++--- src/core/types.ts | 2 +- src/extensions.ts | 4 ++-- src/regular-layout.ts | 8 ++++---- tests/integration/resize-before.spec.ts | 22 +++++++++++----------- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index af5b111..2033438 100644 --- a/README.md +++ b/README.md @@ -94,12 +94,12 @@ localStorage.setItem("layout", JSON.stringify(state)); layout.restore(JSON.parse(localStorage.getItem("layout"))); ``` -`restore()` dispatches a cancelable `regular-layout-resize-before` event before +`restore()` dispatches a cancelable `regular-layout-before-resize` event before applying the new state. Call `preventDefault()` to suspend the update, then `layout.resumeResize()` when ready: ```javascript -layout.addEventListener("regular-layout-resize-before", (event) => { +layout.addEventListener("regular-layout-before-resize", (event) => { event.preventDefault(); // ... prepare for resize ... layout.resumeResize(); @@ -152,7 +152,7 @@ complete theme for `` and `regular-layout-frame>`. | Event | Detail | Cancelable | Description | |-------|--------|------------|-------------| -| `regular-layout-resize-before` | `{ calculatePresizePaths() }` | Yes | Fired before any layout change. Cancel to suspend until `resumeResize()`. | +| `regular-layout-before-resize` | `{ calculatePresizePaths() }` | Yes | Fired before any layout change. Cancel to suspend until `resumeResize()`. | | `regular-layout-update` | `Layout` | No | Fired after layout state is updated. | ```javascript diff --git a/src/core/types.ts b/src/core/types.ts index b053445..2043e6a 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -96,7 +96,7 @@ export interface LayoutPath { } /** - * The detail payload of the `regular-layout-resize-before` event. + * The detail payload of the `regular-layout-before-resize` event. */ export interface PresizeDetail { calculatePresizePaths(): Record; diff --git a/src/extensions.ts b/src/extensions.ts index ba7532b..cdc1729 100644 --- a/src/extensions.ts +++ b/src/extensions.ts @@ -60,7 +60,7 @@ declare global { ): void; addEventListener( - name: "regular-layout-resize-before", + name: "regular-layout-before-resize", cb: (e: RegularLayoutPresizeEvent) => void, options?: { signal: AbortSignal }, ): void; @@ -76,7 +76,7 @@ declare global { ): void; removeEventListener( - name: "regular-layout-resize-before", + name: "regular-layout-before-resize", cb: (e: RegularLayoutPresizeEvent) => void, ): void; } diff --git a/src/regular-layout.ts b/src/regular-layout.ts index fe95a87..9edc94b 100644 --- a/src/regular-layout.ts +++ b/src/regular-layout.ts @@ -128,7 +128,7 @@ export class RegularLayout extends HTMLElement { this._stylesheet = new CSSStyleSheet(); this._cursor_stylesheet = new CSSStyleSheet(); this._cursor_override = false; - const event_name = `${this._physics.CUSTOM_EVENT_NAME_PREFIX}-resize-before`; + const event_name = `${this._physics.CUSTOM_EVENT_NAME_PREFIX}-before-resize`; this._presizeQueue = new PresizeQueue(this, event_name); this._overlayController = new OverlayController(this.create_overlay_host()); this._shadowRoot.adoptedStyleSheets = [ @@ -288,7 +288,7 @@ export class RegularLayout extends HTMLElement { /** * Restores the layout from a saved state synchronously, without - * dispatching the `regular-layout-resize-before` event. + * dispatching the `regular-layout-before-resize` event. * * @param layout - The layout tree to restore */ @@ -304,7 +304,7 @@ export class RegularLayout extends HTMLElement { /** * Restores the layout from a saved state. * - * Before applying, dispatches a cancelable `regular-layout-resize-before` + * Before applying, dispatches a cancelable `regular-layout-before-resize` * event. If the event is cancelled via `preventDefault()`, the layout * update is suspended until {@link resumeResize} is called. * @@ -333,7 +333,7 @@ export class RegularLayout extends HTMLElement { /** * Resumes a layout update that was suspended by cancelling the - * `regular-layout-resize-before` event. + * `regular-layout-before-resize` event. */ resumeResize = () => { this._presizeQueue.resume(); diff --git a/tests/integration/resize-before.spec.ts b/tests/integration/resize-before.spec.ts index c0f2f25..e9d5691 100644 --- a/tests/integration/resize-before.spec.ts +++ b/tests/integration/resize-before.spec.ts @@ -13,14 +13,14 @@ import { expect, test } from "../helpers/coverage.ts"; import { setupLayout, saveLayout, dragMouse } from "../helpers/integration.ts"; import { LAYOUTS } from "../helpers/fixtures.ts"; -test("should fire regular-layout-resize-before on restore", async ({ +test("should fire regular-layout-before-resize on restore", async ({ page, }) => { await setupLayout(page, LAYOUTS.SINGLE_AAA); const fired = await page.evaluate(async () => { const layout = document.querySelector("regular-layout"); let eventFired = false; - layout?.addEventListener("regular-layout-resize-before", () => { + layout?.addEventListener("regular-layout-before-resize", () => { eventFired = true; }); await layout?.restore({ @@ -42,7 +42,7 @@ test("should provide calculatePresizePaths in event detail", async ({ value: null, }; - layout?.addEventListener("regular-layout-resize-before", (e) => { + layout?.addEventListener("regular-layout-before-resize", (e) => { presizePaths.value = ( e as CustomEvent ).detail.calculatePresizePaths() as Record; @@ -80,7 +80,7 @@ test("should suspend resize when preventDefault is called", async ({ await setupLayout(page, LAYOUTS.SINGLE_AAA); const result = await page.evaluate(async () => { const layout = document.querySelector("regular-layout"); - layout?.addEventListener("regular-layout-resize-before", (e) => { + layout?.addEventListener("regular-layout-before-resize", (e) => { e.preventDefault(); }); @@ -113,7 +113,7 @@ test("should resume suspended resize when resumeResize is called", async ({ await setupLayout(page, LAYOUTS.SINGLE_AAA); const result = await page.evaluate(async () => { const layout = document.querySelector("regular-layout"); - layout?.addEventListener("regular-layout-resize-before", (e) => { + layout?.addEventListener("regular-layout-before-resize", (e) => { e.preventDefault(); }); @@ -144,7 +144,7 @@ test("should proceed immediately when event is not cancelled", async ({ const tabs = await page.evaluate(async () => { const layout = document.querySelector("regular-layout"); let eventCount = 0; - layout?.addEventListener("regular-layout-resize-before", () => { + layout?.addEventListener("regular-layout-before-resize", () => { eventCount++; }); await layout?.restore({ @@ -167,7 +167,7 @@ test("should fire resize-before on drag resize", async ({ page }) => { await page.evaluate(() => { const layout = document.querySelector("regular-layout"); (window as unknown as Record).__resizeBeforeCount = 0; - layout?.addEventListener("regular-layout-resize-before", () => { + layout?.addEventListener("regular-layout-before-resize", () => { (window as unknown as Record).__resizeBeforeCount++; }); }); @@ -196,7 +196,7 @@ test("should queue concurrent resizes and process sequentially", async ({ let callCount = 0; let cancelFirst = true; - layout?.addEventListener("regular-layout-resize-before", (e) => { + layout?.addEventListener("regular-layout-before-resize", (e) => { callCount++; events.push(`before-${callCount}`); if (cancelFirst) { @@ -243,7 +243,7 @@ test("should provide pre-resize panel paths for nested layout", async ({ const paths = await page.evaluate(async () => { const layout = document.querySelector("regular-layout"); let presizePaths: Record> | null = null; - layout?.addEventListener("regular-layout-resize-before", (e) => { + layout?.addEventListener("regular-layout-before-resize", (e) => { presizePaths = (e as CustomEvent).detail.calculatePresizePaths(); }); @@ -299,7 +299,7 @@ test("should fire resize-before on double-click equalize", async ({ page }) => { await page.evaluate(() => { const layout = document.querySelector("regular-layout"); (window as unknown as Record).__resizeBeforeFired = false; - layout?.addEventListener("regular-layout-resize-before", () => { + layout?.addEventListener("regular-layout-before-resize", () => { (window as unknown as Record).__resizeBeforeFired = true; }); }); @@ -326,7 +326,7 @@ test("should not fire resize-before on restoreSync", async ({ page }) => { const fired = await page.evaluate(() => { const layout = document.querySelector("regular-layout"); let eventFired = false; - layout?.addEventListener("regular-layout-resize-before", () => { + layout?.addEventListener("regular-layout-before-resize", () => { eventFired = true; }); layout?.restoreSync({ From 1d10e5af2c4acb65d91a18efeefc238b112009d4 Mon Sep 17 00:00:00 2001 From: Andrew Stein Date: Sun, 22 Mar 2026 14:47:01 -0400 Subject: [PATCH 3/3] Update drop edge tolerance to feel smoother --- src/core/constants.ts | 4 +- tests/unit/calculate_edge.spec.ts | 64 +++++++++++++++---------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/core/constants.ts b/src/core/constants.ts index 92f7634..70777c3 100644 --- a/src/core/constants.ts +++ b/src/core/constants.ts @@ -110,8 +110,8 @@ export const DEFAULT_PHYSICS: Physics = Object.freeze({ SHOULD_ROUND: false, OVERLAY_CLASSNAME: "overlay", MINIMUM_REDISTRIBUTION_SIZE_THRESHOLD: 0.15, - SPLIT_EDGE_TOLERANCE: 0.25, - SPLIT_ROOT_EDGE_TOLERANCE: 0.01, + SPLIT_EDGE_TOLERANCE: 0.33, + SPLIT_ROOT_EDGE_TOLERANCE: 0.03, GRID_TRACK_COLLAPSE_TOLERANCE: 0.001, OVERLAY_DEFAULT: "absolute", GRID_DIVIDER_SIZE: 6, diff --git a/tests/unit/calculate_edge.spec.ts b/tests/unit/calculate_edge.spec.ts index 7ec3564..b7e8223 100644 --- a/tests/unit/calculate_edge.spec.ts +++ b/tests/unit/calculate_edge.spec.ts @@ -13,14 +13,14 @@ import { expect, test } from "@playwright/test"; import { LAYOUTS } from "../helpers/fixtures.ts"; import { calculate_edge } from "../../src/layout/calculate_edge.ts"; import { calculate_intersection } from "../../src/layout/calculate_intersect.ts"; -import type { Layout, LayoutPath } from "../../src/layout/types.ts"; +import type { Layout, LayoutPath } from "../../src/core/types.ts"; test("cursor in center of panel - no split", () => { - const drop_target = calculate_intersection(0.3, 0.5, LAYOUTS.NESTED_BASIC); + const drop_target = calculate_intersection(0.3, 0.65, LAYOUTS.NESTED_BASIC); expect(drop_target).not.toBeNull(); const result = calculate_edge( 0.3, - 0.5, + 0.65, LAYOUTS.NESTED_BASIC, "DDD", // biome-ignore lint/style/noNonNullAssertion: playwright assertion @@ -68,10 +68,10 @@ test("cursor near right edge of vertical split panel", () => { }); test("cursor near top edge of horizontal split panel", () => { - const drop_target = calculate_intersection(0.7, 0.05, LAYOUTS.NESTED_BASIC); + const drop_target = calculate_intersection(0.75, 0.12, LAYOUTS.NESTED_BASIC); const result = calculate_edge( - 0.7, - 0.05, + 0.75, + 0.12, LAYOUTS.NESTED_BASIC, "DDD", // biome-ignore lint/style/noNonNullAssertion: playwright assertion @@ -85,10 +85,10 @@ test("cursor near top edge of horizontal split panel", () => { }); test("cursor near bottom edge of horizontal split panel", () => { - const drop_target = calculate_intersection(0.7, 0.95, LAYOUTS.NESTED_BASIC); + const drop_target = calculate_intersection(0.75, 0.88, LAYOUTS.NESTED_BASIC); const result = calculate_edge( - 0.7, - 0.95, + 0.75, + 0.88, LAYOUTS.NESTED_BASIC, "DDD", // biome-ignore lint/style/noNonNullAssertion: playwright assertion @@ -313,24 +313,24 @@ test("cursor in bottom-right corner prioritizes row offset", () => { layout: undefined as unknown as Layout, path: [], view_window: { row_start: 0, row_end: 1, col_start: 0, col_end: 1 }, - column: 0.9, - row: 0.95, - column_offset: 0.9, - row_offset: 0.95, + column: 0.85, + row: 0.89, + column_offset: 0.85, + row_offset: 0.89, orientation: "horizontal", is_edge: false, }; - const result = calculate_edge(0.9, 0.95, singlePanel, "BBB", drop_target); + const result = calculate_edge(0.85, 0.89, singlePanel, "BBB", drop_target); expect(result).toStrictEqual({ - column: 0.9, - column_offset: 0.9, + column: 0.85, + column_offset: 0.85, is_edge: true, layout: undefined, orientation: "vertical", path: [1], - row: 0.95, - row_offset: 0.95, + row: 0.89, + row_offset: 0.89, slot: "AAA", type: "layout-path", view_window: { @@ -350,24 +350,24 @@ test("cursor in bottom-right corner prioritizes column offset", () => { layout: undefined as unknown as Layout, path: [], view_window: { row_start: 0, row_end: 1, col_start: 0, col_end: 1 }, - column: 0.95, - row: 0.9, - column_offset: 0.95, - row_offset: 0.9, + column: 0.89, + row: 0.85, + column_offset: 0.89, + row_offset: 0.85, orientation: "horizontal", is_edge: false, }; - const result = calculate_edge(0.95, 0.9, singlePanel, "BBB", drop_target); + const result = calculate_edge(0.89, 0.85, singlePanel, "BBB", drop_target); expect(result).toStrictEqual({ - column: 0.95, - column_offset: 0.95, + column: 0.89, + column_offset: 0.89, is_edge: true, layout: undefined, orientation: "horizontal", path: [1], - row: 0.9, - row_offset: 0.9, + row: 0.85, + row_offset: 0.85, slot: "AAA", type: "layout-path", view_window: { @@ -387,15 +387,15 @@ test("cursor near edge with offset exactly at tolerance threshold", () => { path: [], layout: undefined as unknown as Layout, view_window: { row_start: 0, row_end: 1, col_start: 0, col_end: 1 }, - column: 0.3, + column: 0.35, row: 0.5, - column_offset: 0.3, + column_offset: 0.35, row_offset: 0.5, orientation: "horizontal", is_edge: false, }; - const result = calculate_edge(0.3, 0.5, singlePanel, "BBB", drop_target); + const result = calculate_edge(0.35, 0.65, singlePanel, "BBB", drop_target); expect(result.is_edge).toBe(false); expect(result.path).toStrictEqual([0]); }); @@ -421,9 +421,9 @@ test("cursor near edge with offset just below tolerance threshold", () => { }); test("nested panel with vertical orientation at left edge", () => { - const drop_target = calculate_intersection(0.02, 0.5, LAYOUTS.NESTED_BASIC); + const drop_target = calculate_intersection(0.12, 0.5, LAYOUTS.NESTED_BASIC); const result = calculate_edge( - 0.02, + 0.12, 0.5, LAYOUTS.NESTED_BASIC, "DDD",