From 0827a4cffefebf4f44be1db618e9ffe544fadeb2 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 27 Feb 2025 14:20:59 -0500 Subject: [PATCH 01/23] feat(radio-group): add helperText and errorText properties --- core/src/components.d.ts | 16 +++++ .../radio-group/radio-group.ios.scss | 12 ++++ .../radio-group/radio-group.md.scss | 12 ++++ .../components/radio-group/radio-group.scss | 40 +++++++++++ .../components/radio-group/radio-group.tsx | 67 ++++++++++++++++++- packages/angular/src/directives/proxies.ts | 4 +- packages/vue/src/proxies.ts | 2 + 7 files changed, 150 insertions(+), 3 deletions(-) create mode 100644 core/src/components/radio-group/radio-group.ios.scss create mode 100644 core/src/components/radio-group/radio-group.md.scss create mode 100644 core/src/components/radio-group/radio-group.scss diff --git a/core/src/components.d.ts b/core/src/components.d.ts index b7675233d18..02a43642d65 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -2307,6 +2307,14 @@ export namespace Components { * This property allows developers to specify a custom function or property name for comparing objects when determining the selected option in the ion-radio-group. When not specified, the default behavior will use strict equality (===) for comparison. */ "compareWith"?: string | RadioGroupCompareFn | null; + /** + * The error text to display at the top of the radio group. + */ + "errorText"?: string; + /** + * The helper text to display at the top of the radio group. + */ + "helperText"?: string; /** * The name of the control, which is submitted with the form data. */ @@ -7079,6 +7087,14 @@ declare namespace LocalJSX { * This property allows developers to specify a custom function or property name for comparing objects when determining the selected option in the ion-radio-group. When not specified, the default behavior will use strict equality (===) for comparison. */ "compareWith"?: string | RadioGroupCompareFn | null; + /** + * The error text to display at the top of the radio group. + */ + "errorText"?: string; + /** + * The helper text to display at the top of the radio group. + */ + "helperText"?: string; /** * The name of the control, which is submitted with the form data. */ diff --git a/core/src/components/radio-group/radio-group.ios.scss b/core/src/components/radio-group/radio-group.ios.scss new file mode 100644 index 00000000000..2e26159a36f --- /dev/null +++ b/core/src/components/radio-group/radio-group.ios.scss @@ -0,0 +1,12 @@ +@import "../../themes/ionic.globals.ios"; +@import "./radio-group"; +@import "../item/item.ios.vars"; + +// iOS Radio Group in List +// -------------------------------------------------- + +// Add padding to the error and helper text when used in a +// list to align them with the list header and item text. +ion-list .supporting-text { + @include padding-horizontal($item-ios-padding-start, $item-ios-padding-end); +} diff --git a/core/src/components/radio-group/radio-group.md.scss b/core/src/components/radio-group/radio-group.md.scss new file mode 100644 index 00000000000..73ec9b386fb --- /dev/null +++ b/core/src/components/radio-group/radio-group.md.scss @@ -0,0 +1,12 @@ +@import "../../themes/ionic.globals.md"; +@import "./radio-group"; +@import "../item/item.md.vars"; + +// Material Design Radio Group in List +// -------------------------------------------------- + +// Add padding to the error and helper text when used in a +// list to align them with the list header and item text. +ion-list .supporting-text { + @include padding-horizontal($item-md-padding-start, $item-md-padding-end); +} diff --git a/core/src/components/radio-group/radio-group.scss b/core/src/components/radio-group/radio-group.scss new file mode 100644 index 00000000000..a148f12232b --- /dev/null +++ b/core/src/components/radio-group/radio-group.scss @@ -0,0 +1,40 @@ +@import "../../themes/ionic.globals"; + +// Radio Group +// -------------------------------------------------- + +ion-radio-group { + display: block; +} + +// Radio Group: Supporting Text +// -------------------------------------------------- + +.supporting-text { + line-height: 1.5; +} + +/** + * Error text should only be shown when .ion-invalid is + * present on the radio group. Otherwise the helper text should + * be shown. + */ +.error-text { + display: none; + + color: var(--ion-color-danger, #eb445a); +} + +.helper-text { + display: block; + + color: var(--ion-color-step-550, #737373); +} + +.ion-touched.ion-invalid .error-text { + display: block; +} + +.ion-touched.ion-invalid .helper-text { + display: none; +} diff --git a/core/src/components/radio-group/radio-group.tsx b/core/src/components/radio-group/radio-group.tsx index a8762b5f8a3..70b68314484 100644 --- a/core/src/components/radio-group/radio-group.tsx +++ b/core/src/components/radio-group/radio-group.tsx @@ -8,9 +8,15 @@ import type { RadioGroupChangeEventDetail, RadioGroupCompareFn } from './radio-g @Component({ tag: 'ion-radio-group', + styleUrls: { + ios: 'radio-group.ios.scss', + md: 'radio-group.md.scss', + }, }) export class RadioGroup implements ComponentInterface { private inputId = `ion-rg-${radioGroupIds++}`; + private helperTextId = `${this.inputId}-helper-text`; + private errorTextId = `${this.inputId}-error-text`; private labelId = `${this.inputId}-lbl`; private label?: HTMLIonLabelElement | null; @@ -39,6 +45,16 @@ export class RadioGroup implements ComponentInterface { */ @Prop({ mutable: true }) value?: any | null; + /** + * The helper text to display at the top of the radio group. + */ + @Prop() helperText?: string; + + /** + * The error text to display at the top of the radio group. + */ + @Prop() errorText?: string; + @Watch('value') valueChanged(value: any | undefined) { this.setRadioTabindex(value); @@ -224,13 +240,62 @@ export class RadioGroup implements ComponentInterface { radioToFocus?.setFocus(); } + /** + * Renders the helper text or error text values + */ + private renderHintText() { + const { helperText, errorText, helperTextId, errorTextId } = this; + + const hasHintText = !!helperText || !!errorText; + if (!hasHintText) { + return; + } + + return ( +
Zl(jyV?>y7J&DOti~LjLKhZWnl1!h?!lbRl&Y*1rko}Q}-r#E+ zKbHun9{`)&q5FxJsyb(tFtE8^Y3C-%?BYSEMcsFAGS_^i#hab!=V)WVDI=x2qhVZx zp?iXG)2+G|VHA6A%mpN}H*)=})M@^K7OAMm{p*@bLc8*Ot1ANEQ$ffbe?dcVAGA1T z&?4lUeHhjO#Cm(2;Q6LtuPKdjpuLNX#||Xa>-3Z=GDwVJ^i=31Q#Qv?NaJY#VekFC zr1|-cd(BsVD_7;bYXOz4A=Yw^S6IHc(d5KNU%qr&?P!i>v6s0|6`9so?#~`)Tu!#z zTFI;bF9N1GqDR=isd>$LKcWgNU?{L-a;vOfw!|{;IKb >R!(;p;ONVn+`rV{M-V2j zKcHNCHy-fyi7}(2*kj~>d4ClXgvaW!-rq1KA%0;&qvF;nU+(Aw`2j}}JdiFLI5D9= zQuccO1Cga(6rB*ETlJs t{g+wJWbe<3`sU!y0Q2ja*nkf0=P3 zRh4Cb+gg9xQ# hVeww)>T@MBQ}Q%WY8E9$7W4 zn*?CJ9|YxN%Z8c%%6^GYOx#(dRap7#ClU#r`7Kf8a)KWHKhOAHsFV~=1Ql<@o4%wR ztwPllVaboDwhtZ&KNv4H?yDyL)AlbtIC6fTX;A#=f#rbLzDs3_UA|(X=Fj^i^vMR~ z1zVN>zbi8cfo{dMZ}R_Q(}Ry*I{qd17-V)~O@;V}?1y{Uk+7wiyrm` Z1k0Nz@RK;VF9KSvJP6${K(f|t(GYszB66RDj-0H!BZLvg+@pK6;`?uLGWHX z+y{{zmnT~XhkZ}lQ7FJ_Z({rIY-1vn9^y&S8A+{olnZb1JmE^NvYHAPeS7-xa MIk2@$`4QL{^I!L$?@=6_}Qm)}!m1Um69?s$Hh?98g?wqcZDC3m)2=CozZs zzqgrB9?z8_VoM-?B& m>Mc+U6MyXk1)g?^P~w0Y|c1kYt_?3<$a zWOWpCgUeP32Gm@GD$B6gSX65uKmgwL;21sHXTja5sVD1hFog<}r!jy#Z_lX5#fF9g zN^Ry@+D?vl8~4o7BY=6=?yhPoEzOcD#|%v#G3O1xU?S?&OH7MgQslP?0WkyL+4gj* zw#WOhhdn|IqiA{)I0F%^a$o5y_<%o$t7w!^C@Lzd0#`>S-)jMh>wRf9<{9jxSP?K7 zcEy (L5@U z|J8#zSlZXVe}oR#2g}gpQO`G!-)$#z^?3}d fJ7 zSwtg YmHgAkdE1uAK6!^7lGYd-} 96fZa6LLlJgfw{H}wyAb&^(Q_c^%Ij0Ej7rShM?SE zH8y&Qj~DssFm1_UPzlCRfEBu3J1IUseoA1NOo9M}Nq?v!9uVBx p$OHmbEJkeao9k~N!4DdH$FuQUQTOF9Cu;Y$cfrv04-kVARZ%i?VJNW6f% z)0o-(Z6F|JUXi-ZLG?2-EfUt^^Cy8{aP+fCb6~3!k6W8KvwE>EZ(^>}4$Wki3j>6! zr%#9=&n5~q)aYifHKk=W_E~|vhA-tiD|-Rj-4Eolj2+OM$Q>!KkLLW`G797e1KCy6 z)n6FiELPC;bvXkVCXNOrv!uZ8siB;#VlqDtj>D^}s>J$XC=>-{WWtl?^V}jeW#y=^ zD%wSwGJkj)Wdejz- $u=kllpUv8?{l#l zNF+17I9#O^k)=IaAC#MK_HKQa=|dVYQ^!YZm%wYJ3v1gj|IbHP4Rdc17j2g;9f|II zDaN(d;qlC=Er_7E)dxdnTwEIy6>vht0$=hFo>RN{Y)882u!?wd5tG(utn&TtS=VSf zp%F3-S+*xXjx`C5VwatV)9pkK2DZVxhS*f6Ze2FfJmmO?Lo!Qwu@X3LQ!oMTl_U`*D^q4CjiKc}Ljghkb9Ph`rfmKvsac@aE4| zv9X|*69pO74JV`cYCQFC73Tr*;DiPQ%hnUwF&dcw#ACH71YkIArPq^MgqcD)lV_O@ zOwAayFj&WF<~zpfuI{HoIIg>Qi|dDt5o+1eN@WKdTzPnzhUnqK*xur&qa74Lr^f3R zkA`seZ1)I@jxaJ)XJpg9RhD;wYr7|W$3Mnl^LIYisJWF@p^q90wKd5o2hN$7e0xHC zGH Xm+WAF6$*RN^q)Gg|_ zMjyojo}zz6RyYTUb9SDwO&kWumv?
@kfB^1iCSv;pzbJ-#v zmbwC$eyR|&8kH(IA%KYPk;DHYOQQT_nD$W=!>fJ&>5!y1*2@WH?pQShH%cGj)LaPh zELGwUNKizuS5)XLQqA;Rj_8M3wv0SsOnr?yQ=j-b%t1TZuhdd&5k33kqaH)H{9dQD z_dwLM3AtG4A&`i+n6#T1mj@U=!*5C(cqfIR_$&0-WZ~&>UN_+1l_*AFdF{Qlj9 z<)ARox_)2AUy0@s;}-_Y{AeL)`d66_kexr-+Me2cU?jYag?SWYRAHr3rUCy0mL==d literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-ios-ltr-Mobile-Safari-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f7cebdb608bf80f9d11554f407df27d36b66ab29 GIT binary patch literal 2341 zcmai0c{J3I7XOkovW%rikr-Qcl4T@ILo_B!)+~du)Q~JQ$W)dzDQS$Qh*69hWEoqN zWGO@=$vVg~DqDWmvG3mW{(A4Pckem(e$G92Ip=fkx#uR>T3hfR6+a3906+YanH>Od z#Ivy`h?8xzxGjU&j@uhyVFn!h)!h1mGynh%!Obo>L}t&AM%kuqNCHd2!ppE&x!6k+ z@}g(2n!H&Zq5Zjyd30{JHNkn*uR0*q+j-bA&b1rub}cwc1WkMS?bI4&p^tQq;?QP& zyjr3bWbMZNDED|X0@Nst7N(n~j_rf|t|Vu0t@7M8&M;0LYuD@4i@A$?>Djd6BM1W^ z_&@iyO2BNt4@L;X9+{WRLGWm<|G>LIZZ%7n(X)Q_;iAneeIZom?_@z(Zw46n!`l#a zkoU79N&m=3!WeV)SW;}yjGOVU>hF5VY)w|x<5 V6q z7$fi6u{}OnX*{~=dY=&TV#eUvIOs1FvPIqqhN9oz>JkN{k1^J6CQzoh4YbYPs%DC* zMfHRY`~))`H$Ltd03!ytco7AGDA^Z{*T7~fAAG4bjRZchC9+ZUp)1L)RwLsG_3Bri zoXPAP=dq2aeYw-xPv~;O=n@2v)FE(m%kns>h>C5xo)Dd)70An=mc{rHXpUm#OBahM zYYY9OSb@oo-O(G(0uhYi!PQ(CKLA$lQ@!Uk)fHTl=vAnjgvOrArc6a0ytO`?B zvibHPj%$w$8_(noEy4m_jwJ!R^ZC=o`zR_^QXG|MERXN%g@I~b4Z6rDb&ExhZ ;+cW|0}1@p&~{_` zu*AXA-b!MiAs7S^Ak9w|&qiO0%!Hnt`fyuEqc7z5+j;VgaZ0FK%-1M8E_`x^I22KN zqISq=YlP--m`%#^2G&TdzVe#}gh|^-5rr-6t?ka)U wm zI3qhi|89SsayX}oiv#%NRnb(*EW+U)I1V=v(>nGy4-vebtBan9oDzLm8d40B#s9gH zE5~|$MWfHzFf{oR6vj*GHMqTV*YC`Iwacf7JK3)n*I%5rlHy>8RqL}#khiLgkE1Jp z0J&xG<|u0|m6eV=*Avg#yoe$jREL4(E;;^KbnL=BT1r} zRrckZ)71I8!XH3aOy}T0B&qG!s=N9IVJl(h2thE9!n3)iixB+u%q%Qp4_i)Ibh6KR z_drTYZ(Uj-u|+3~R>KJ1KR?~9=lXStg<5_ObgkaGX!5)B^@Ae|3z0EPs&f?}5M)s& zBz;1YbjLm5=#!O!VWB(B`jz#FvE%->LuG~O{RWG3KfkncQT8yZ*dJsF&=tC=h)`T2 zq;uXEB9G*^jm)Sd@>n8KjCUiWMRSYV3Vq0#^PwN6F*q1f-dVVNt7FEkEI8@FnMX6z zRQAdEArnw{n+d$~-CKqla&qVl)ie0vwUS$_>+g11_EuBY@kAoprE;}+&&Pch)d@ C+Z(96qqp zgKSm>^YuB)5F%ENMu4rYZLZy$e`aUD=v0x( zuMmw9wV{4gct z6|xhuva;xOdS9PIMI`3dmj+wEz3^z8kCGmbuN8d8n&&Jj2E%(zd*!Sq>do~L%IfM# zNl8YxSJ75h9qaSMK0ZGD+|6EPZN9EGn8}8y9c2}j-rn8}RTpnvaQ5r4urO8k_aW`+ zYT@DGTU%Q!7R#CHo>`}@?olw|dHzpz^E-zIi8Z=g&uW)8Tm(nEVwvh%%B;F>!_E&4 ztuTLeMx0=gbn?WUnwr|P_Q?R6E5**y$;qQOV*b;;L*J>RwYP=?-^ItrW2e6}`ui2+ z_UaH&CJw^--a0)mLNoIu3nG 3j3(lL;W0V79Zd=vj5m%G^92`!7rNjDms! zDWkhkIXNyME-o%f(m?mU`D6%md3iY-%ONc<-%=xPserzq?HBBv*8`<0F`ws4{Ow*O z9wnt$JIZ7-Pl<}Q`U-p$wFY(1u6b8HKQr=uptQ79CWSsW_UcA)0ni(kCGIb?_`nSz xgGc*X?hz$m^kEbn2I>Z-%i#qHUVkC|06-u1TO;lcXtDnu0DjThj0*FL`!^HEb0`1+ literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Chrome-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5818434c54659fd4a4a4c31b5cc50053b5ab88f1 GIT binary patch literal 3426 zcmZWsX*kqf-2N+xLLOwv3}Z=TX&KK@w#YU}_8}%j_8GF9u@q&A>`D>QAjV!y60&D3 zgCSd!jD26SWNh#Mc|W{g-rt9F&WCfZbME`P@B4S1SYsnyjx!g|006*&)YCEr0H#=Q zEz5cW97P1FC&7uy*Hl*%DC>nRfSVvlEe-RatQA_YEe}c b&!HFK4{RwP}f{qBDB#==A6JZfHK% zgRzL}v35>p96Gv^FFXbAac?#p>;1y3&mJc2U4sY19gKNTu|~k0S(cXAV5|{-z>p-f zM)yC(cUU7b#LY9gn6K$70V)ky<;5jod6E3W?n00e-H)1Ftz(mbF& JSaCxX09E?}I}f+TO 4MSBAoO$NQvIvm}+1 zM@`MUcQ%?=R+QPDHiIxLb`Upmk4JrAPUqAjuN>ki40wl08;0Jzye~ +WVZ=+7oN0u*c{zq^gDqwv8n;ismnz;Zc<+33;!z}3Hx*>5fjD!gPfTiRD^N; z3V+DiJ~?tHCJ9XrPpXpnZCF4fyox``hT>-k)$pDt$`FBDkCqUtSGj e2Hnnzuz=kE?=yn$w?Yh@b6sP!Z1WKj2O^X0%tWKhF`AefbF1 zv$n3bkUaH#iFA;->cR YlK^v(e{eB$AP zrhocp>vigPBENuV%_F4<*rBNnW}sRsQ=VVoUahD`)Y$aZQ2l+zgP@|a5_dk^UG*@o zsSV(<2G@O?)VL09b$PClMu;0^M08W5XDXzrFTQ- gD*wj`F)bT!0HNGVI>_u}H|D-sPzlCk^0p<#u=Qbend{f>ths%pwYHr|-D zJ;PX(qyOW}0_01^MueYrEU-eAHX4#+Bz8@hg6Z+;Tx}d@|0AM=siGGOS=gxgWGlXc zXH4u#vbkIWl8%#Hb_bLmBz^QSrANNSTW7BtRet<_v&ef7ACNp1YFcAaVw?D=_P&kc z!o4)b=)@w!Ux>fo=GrGI^ytU1m{B+49e0zVx38Q(t$EuuzB%4Y=#2zVMHrzPwxIg? z&Rl=bo;{wgTcgS=-tcx$!}P_Zd?sblA4I)9c+ +GuEA+w)4I)9kcel4s3#eL) zH=VvAw5r@sG$#-eyaSxZMz>)Qjij(y!9g%Hl3X}d#ZPH)`95{$iGa 1 zKAuULJAL{zoH2Ykn5fUUkTp{(`XOnNdq)Ay@2 5STOU>tN9-hOVj@^PAUP`ZCp1DskW-wP7jY^7NAMeC)|@w9{kw z2P+$0rNiWETg0-B6Dg>w?Mhd7S65eWuOxDSLb)O));u&cM593g32r0?Q+f-=6|3cm z!2kLhJk^o7w$!=v(&A!VMstcgm4D6#1$C3mSl -$N8avY zk XDK+&yb%9UT>guDsQ|g6H#VOi` zPno{WbiMNR`Leq%33&Va(<&TplQhM|#OPB~b#DoI0rA99{0KyI+lNRL94$PYnL9FrKY2=4&XL zT$W40iolsCE>J8|)@LV#g+zGYgjexu=NA;DNZi2hc#7oo3ZG&ELe#>4lvqn3g_Q%k z|8k9h$QXiMpPg;3ia|ASh{StkcjZqM;?>a``p*vv^kh(`J{SGX2%#6Xk2G}RjLre; zb4u8lb79q5zNLoLVc#`GuCbMc#mv+c+_9aVC#t3UHN5`oS8`XEwpjn492(pi#6la` zz7Vm$yXNxnVW-pe@bF{OMA-Q1aSl&XW+r~NTM(3MPbR;xFxJ(})6>wvfalD!u&}T= zKDi4cbrk5|O7oKdv5@qZJVT>~Y`)!$y~cZsOp;4xYE4U)Wsgj!dcG9F@};?pMR6B+ zeTSsv?|%94L5gSMy3198 f ztH%fG>BZQ}D{eVEJIh;FX V|Vvr&D@c?KrbsRD>E}Q zFK6U%!KAPuW2QHp 9S=IS9a Q!G*4DPgg+ifjzl$xo zY~9N3Z<4vQGEREX_S|=_7Ye=!tS?_~!r|1urRC+2-BsGw))t*kkBNzyo_6{Yx-gL6 z(9oc*t?lOK29EmqKEq|``qvjj-T9_z0cj}n(G7aR4%$zYC(Z9Y;x)2rEB9%1bTpge z_?CTOHHg+=u ;kTH16WH}Ci^rmMJ)MRsuL(8;Fc_3rm!g*jbT+t2CZ$CCm%q| z$PfVOOxDx7GLV0+P ug6uNsoULdK);0;jNA94UPu5N!TX=5; zREW0k&@rZ7pJW`^^%5}q%*B~v96&q{cOLF6*@?s9e%1Qw%JQ9NVR<7k5J?*XeIaY& zQdeduDI+fr1`PagiP-Nt= _nfPt`hc*fN@%}On)E=;O? z K~v_zd3o$1_WAOgiqL$Fj({7+uJiM zFl^c=^C0THmzI(O052~u9>xC>ldpJ%q)}u(a6H2zDk=&lhLMp`G$-^7D=Q4?(~$u6 zskO~F6>KNu=f4nE#WA)PPCT)vWUGSK$-81Iaq;5H&sr*#3P&Jn%F3{Nn=_ytq@|@* zvuCodE$3pp2ky~o4BIZ94Fc8|guap_N0-%Tn}--~pdj9 A|fM8Rjdhixl)(q<$FJ) zVO++%{u^{{#$B0&DbPqvOica#{k+;HyfbuqmFH+xU!O59#Lv&q(NUbHoiaUE?QsLb z3D^tp2?_15Pu_l>*PZ|s;^)`h)=SoF(NB6%jx0}iyD1_qC0aR5SY}>8SN`}sES7RU zu1yA2W~i^v9jo;=k@w6q@GhcdX^NhNWwz`9#V@qH{C;_PQBfs{M8cB`;X{Lizm>3G zwY2k1krLc4E^~#a0)~GbOAQxDk0>2noGjX99Q~_Xt7?$@qxq x~P?{+_ zC`qx5+EO1t(X0IEuzc^k&Gpd;5zSjNQc~Z0do7F1w;XT(1dB%7#)X2tZL(4nbkN4e z2I!#q|Lbhc?mR%u()OQS1Ui(QM@BwrRa_gXQ@+<88i98A^i=Vg)(Z{}j;?Qs;xI5Y zT%JLT&$fUM`r;H^9UFiusq;zfuG5{RQMr`jMRW|=?eDPL3(80DUgC}=l$4Zw`t+%! xB)-#$Q}BB0#Q#=LPicAK&a$;dmENVJ)7~k$w7lrGN8qOkKx!Llm1){X{13k^nq2?@ literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Firefox-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b7036b8df4b5efb3ffb6ac3d7d25699f47fcb4 GIT binary patch literal 5119 zcmZXYcRXCr_x}-*)q>Sa)T{RrB8$~oy{sBU2@<_T4`Nxp#Ogsr4Pu38D _s_leF>_|-o-?m`p7WR(JsmYtA_gKH92`=Zy0QTd4sOiNw*ZLX z=J_f}8IFTP*$q=xfcsl*Ti*7E_e_T*lZSyKelmj*l!*S@(~BV+DzQ|&Znrf&dG2=A zrD|5o$2}T3Huzcp06(LE4L>0{0^@;&^qWbt5jORo9YFhrPGo{LhK90a4~Di*LL|LE zHtXXX0C-^Bn3u}(?62_f%m7%g4;#fRkUBnqSH{K)Q>-NY*T+hsPK^r#dwKrt_-hXk zHWK`AWb1SMB5s?94!`gIGqn~4fl#Lx2h5=9M&T|6+C16Y$ezS1I{9UJ&i|JBc@HlT z1%mG0nxsCM@93^~p`XH}Uxu~`oX_1l#TX%bcC>rHRi-&$_iP6VW_KY>_my5G5B9-o zLhRN4{VQt?+gt9K-Wk820e|8>mkb+>pY)+>gB9^!31)i+)75JfLt)?&CEnft95H9N zmVo65|BRd+WaKyx6K>bZRarUcArD!_V z5a-C@TxkK4K7_c{ozl)qRw6V{h8DfAvkn%d0=W3{Ad!sPGaPa}%Ga_1O;^M_*;i=J zl8?gw#s3+(zZzJ|onPZHspytrGoqrtevu(9aJC X*ZEZb@&6NOEwZf@^KK1zMm%Ev~9xkRV_VsAm;OigN-0eDV!X|U$qRB|Z zlbUFMpKMefiqq=H_E2G5rI>ZI5@O$lg!_!N_v#mUlw|2ilmGMJEhpYHuF881V=Bm{ zJBJ!S_P-H$%r~oE|G}D|sR4Z>{ccIO%EiFtqil>t^<9fli}=ewft%BO3q{UH*=(X> zL}|fS*-oK-chU_o8(o`67^nw+xrOZQrr-8mg1FiBi*89*dx8Gc6J2p^JKw!e{o!hD zHh(CVenk!2g|;6|NI$7*pxw6DQS9dgE>Jfj78Acwn*X-9O2ktV&Zfd!TYTx0{5~0O zxq7x&@h9p9#+Vk+k=`4@GhDJ3=BU>;Nk gQ1rZcfwUS`gI05 zV;-R&vLAmZPSwb_m@I)4nyz?Lcz1Q4r37f+HcK^cl<$Kb4rB9yn1N3@E117W7fmso z1F#EOwxyMmqTsaq`5U-E1d_WC_CjQ~2yP%6zg*qV7%<&HV;3ssC(6t}uA!yzh`RSf zPq-1>`0OC2C959;ua=C(<^Z6T6?1q0xi2{U8O@8{SHT~!dZqcoXoa*tu)n+r8$h%+ z<#Zx7JuK_iKYN;G2ndzO8hpGQmkGDgLEM|&m?dtz6H2S`dR!YfyCLQpWg- SYklurXLRn5>p7*t31cs(>RPEzGv0`26svk_L{fVbyAz)7h54Da!(s!i*2GE_(O z*|xyM_eX<>7nQ8o9E*SRNV+1vT&8h|aLso5>aGcQEzut&7wX~q&&hBTu>87K28xyL zvUFu*9xRuy5;C*cK7LnHIa(GJnkrjG+W1HUwkVx?9ZbdqbuI-2!25m~b0Ga=vsb02 zF`O#wtp5l*rzX$5$8CbVLGRy&qS(Jseegf1%A+DIZv79;)(`PUQ$+5G2Soidt)jyR zV5S4`{xFSyF#bmI3iyBUYsv)c?8Jp&m6!HbOfB{kqTJ;X52_0zG$rA@$@d0j(fiof z6IEZ`M4ekp!@Bu d>FK?~2)oZU^B5F?_~4~Dy1Ke6KI{(7x}Bxm zy_f{Rm)>t@Ifb8_VgIN&9j`NAvzqR3R|H81{>J3Bf%m(7m}Ek99$5T^=&OLG_gBj{ r`7p_1(L(v!5ayV#&RG^dX(HMNEb2a!1E2koPZW6GCZTwI2m{M_N? za9Eq*cYf!2gksd;VprT$mCY^Nw0kGH4}IFX^Iq6Kd$rNSUtKd*hJAjE7EtKlJ>H&q z>+Dkbd}o&aWakGZO>rX_oipY1zM0Vd`$u~^u_w`uKY+%hIfd-T{3;`MwY9Yeg)j7% zY**KIx(at9tO33@4CObk!Z%SyvDl7GnVv5%&b(^!8sx+9)+f-6tJpkuUzR8`7S)5* zLC@{!`^hY)rulwVwp~Qay~($hx)YT06_N3qqmz@g-fKffbK*w?^DhoaH8O;97lS*U z*N5{#AP{)~srQrdawED29<1#h9m&78FSG_W-Wj9K+r_7=?V_X`TKurr_kCZ>6m2Q9 zTLXAmuK_EymavOqR+*qQ&~E HHs!6BLYYD>q{QUOtQnQ+p$RyFolWiZ>7WF8VL%0w@fj|=CDj=|B-wn`>5o20~4*10al zxgDPO@yf*|n3TUEARt10mz}2Ac53DzKUy772XpJ>v|^#x0?l{$&c+nA%FwdL2k|UW zt5+m~fB1~bn pns%<~N}6BE;Lg_*d31x61L z=XJuA1z#MqYwc@Dk6zSZ 1MSuOr}CbY0zuU8k9xhOS!2Ark3{KBJv*FP3)*2{u!fre`kFz*_DTd zoiNfeUBHap!~b+IzqLR&PcBo$24QtJy684jkEXlc`O#!!Z;!lr#qAj$Z|ypHKFhr^ zy63k$hiqzU0{s%{R2~tV?et(#O0xX)T%jY9RNGw7X-PKd_~&rGQmM&@H*}g_qLBcd zD!UHEZ%5g~ql)gpZ$9`=rD!aJ8+*Q|tDOIye8lvW-}ZFf(c`}I3JMO@b;`Ya51+T* z=>Ld~Pq0IKBP`d9lHDBz%8Yrb4=5n5-s#+XaWrm%AUQ2$g!l@S8>3^lXBy%@tomFv zDTEWW2fp~dOjx3o#qPA0!~zwXo^ABLV`XKf=t;sXV@f_WR%TfJe8Yf*K| CD0 rV5 zk>i~o{GgWs!ii>_geE2?$x>|jA=iISY_~ g zY~?!qnc)8E5#xgsqL(RNg3H_YZ}OdTuM A%1D`tSL39D30k1mLZ*TT{WRysvs4248blTxSSBCgP+mZazx5 zu2vQ+-YijH8T69&UhUL{{sF*mXI;89_#(^TH&7)GJlf=JrmP?T_^Izp5Kd A?g=6fe+Le PLWD_eKoy=PGf>q3BA3a<_;6d#vX5 zF1+d)%dp#OqnvG}io0=d@cCcYl1Pm_TJRIo>TbNRh7tO5b?)p5y%3E8)ZzRlmH3k& z*;{gkrlxdX{v1D2z$-J78ZXsXa#^3jcyc`S-HOhZa_1`h6m)*byB_>1f s zCplP2Rf4_TIhc`*~$%{Y)R!{M%00pwedHu?0DS>vu-M={SqgQ1MRfxPlCLlTTgom z1Lp__^3;CJ;t*B4%k+R%hKJ8OFt%?+2~e w15->zWyIxL1gH-0E z|M6B9Pl>t^iRMVtI0_iO1@T^0n&Y4lp~Wp!M=;Kqq7{GX4Z=iT)ZQ!#yutSd!=0R> z5jJ=z#Osu|NHwI|FVpQP8Ww(&QkS|Rn15chYSN00hvAUzr_Y^cXFB(^y3<>`xp69$ z@D^w@qtP5pBh`r;oK+R|3p)0JR8)LWzChz>dKA7lamAv(ed|kHb~S~#H*_o5JeJyu zXGZVaiNsKR2M}` 4Gw*?W!F?;HZDunnr6?z~ t1Cv2GED~U+u>zkM?+6ck!k%7>;R3lZ{GY<&fVq 4M2i6?HDR+KI145d$(BNwRm-h3%@L9;=^NM0Too|ugMQ8 z)MV6bp*bW*!(fTppQb-Ly;S%#%-aBx^l-6bbRBn_=cO+vjkY5XO+!qNSB^>IO6kF| z>D}~>3E}MXYNpNV?~xdN8&4T6gKq`)s8nX$m~^(pn`)U*7cs8X88snB&1koGQ+y7= zVDv?e<#{2Vci24qd;NODl+h&jO zMKXvk{G|%ho|Iu9zZU#Ak$~$Di2(|9vjG$@=gy_8kq% E zk{TBGq>_0rW4fTg1m>O^fD<|PRH7)|Masd(;ZPFX6fYP4`^*Sm00BIhdiGUx!7z2H zotN`qBaz5mf1DvLwXi+lvfHP{e@m7{Q0HYZ0}4blAfyknEk%MOKFN>aOI(-S*X7R% zpy65yxFk@5m{eL&aJP;IJpm i0Ns6;sivn#h$Xlkqkx-w^DP(T?Ua^uh z!NZr355@9Z9oFh}T+) =a*wgsz}Tgu(2_|YkETjL6G5%axJOWb4JtZHCH2FyhL;F ztG_yE7XZ4y6^TP4F59u|rt&%p_ril&PD5)FYTTw=e 8ro$9Jko@uL&(%c4+(hRUNn6Km6Eht&lN?H?%o| zAQK9X 4QIsqVRl<2a6CwLX5=l2_@ cP+{88Sb 6+R_?TL1y1D^?=IyCJLiJ<=fcnl|)1O2w>jr?vlyt*``sZZ7{%Y%cIW%`y z*QBLm>KlR}7K$?dmaZ=FATbftowosi>gH 05D}=p~LK8{Xr6qMr?Exd;%nr zTGlQ7?@@O8%5irUK@dwZ{*+`t%b)7z+I^yg6&p<)>HhAN4TUo5Xv>B~0? Tb=>b>%PP=IywivEG(D$tzQc4Jf*bzPq`8+w`I@hBkkg z;1L8dH@cLhY`G PtdWNX`=|DVpiU)pkfCl~DWdi%{$Psv>L zoLh2YTi$METZdzKnAh8Hk{ucC1)p^8`GU%JcTZhDY5TifN58v&zS95faT_X?Or>%^ zc)uxqtw&l4GdgNe^KnOxAcz^V!O=S)1VPLOS_uF_5Ho^O5`rLR1f?VdLCgqBNeF_N z5tNb;1TiBhB_Rl6M#evT`zcas@KZI)(pptrv%2jL1^~XUq-Up46T)m0=F(`C3AJ3D zMxzmn#bU9zwYBx$y?X$_VzD?J4v)v<@pu%9Mg9hdV^zT-Mp@pxB++H%=A-gvsn%%e zR5m$(B_nB`?Gx_RV^UXFClZOeySt5+y1Tpc`TW_lXFuUyJtkHaEHWHRN=aG_-aRTW z{JtLmf;g1)7wn>gXp=q20B}>LJ^zd9zy-zCRt*4bTxP#3l|i!P(GrGX#l^)H6%_#B z xDQV*odExi{ zwp5$ls~CS@OdpzYv>1F|KCu3 ^!~GBOeX2n2#zvu2I8rKhLo#*G`t)FeDSTp$pP zUe6fOWhIf1%C<5yVvOV?03eg#typ^5HYSZ?^U>-4k{adEIu;RZU0ogV63xoWij0gj zIw&BKNKsKynVFds3Z=ZfTr3t3tz%WeA`^pU+;LNB@Xbf%0PycsjOS U)uc~Fc z?r;01k0{NEp$AT)G~L#g)~cRfug6I&7I$}d`}p`QT)5Db`jL^5-rn9anXJCP{&Dy1 zk+Z5`5mStkl6rf4v$C>$e0=D1dPqpfsZ*y0m8PYoIXOAGy1K4gx6be%*YV@WgMxzW z?CgSrgUiaw9 {JTd`tAbaZraadB{PaD06HL;eBPHLC$2I+#lA?mlBA z9}zx2GeB%C4yFOXPuJC^pT$gqZEbA@0Dpgf)0+eY1OULzn>S5wVpYK+mITLfKA#^L z7-;khOwOM_-`Low-(|5_d3kxnHk-{B2n6~fp-|}J;-XTiFbwnY@kvfjCXQ>h+8Hxu ztX{nu$MJdd=JEObaeR*oBUJ_hY3~4LxNG#`xKc*c`J*2Lfs~Od8}wA>A8cl3rcfwU zC={kQ85kH43Wb@OnS+j7Rj|m!Fv=)t;lhPy&z=nr5BK!+WU*NH@89p~>Cu;Rxm^8r ze0==fyLWHhy4BFo(B9sjn3$+gC=?2XN~Ma3h^VcteH7Vq^g8;{KT&r~Q 7} y9?SmjVExQ>m4|8ozEGI#u`PuC+@G0A9{xxPEUY!LnE^sZ`q2)8pmk zWnz=NckcoKlgTvwELIgPVnIeqNlK;i(4j+n_wG$gOCyeu$>iZGcXf3EfQN?%@y~YO zzI}#s|7j1t2WfofOr 19HgEdU(2pwMCf082w{w eu z!3zoihz~RM!*1piERV+nfU2r048u&Rk6~C DXc13#Ioo{NpiXT+_`gx1@q_6 zcXM+K4GrDCeLIfh3WXv+KVPj@%jI%?oztgJ3x&eCxVY-->izro=j7y2sZ;>S$;sKU zVFQL?adB~7U0vDP*?c}fFE4N0y-b)(o606%ZPk2UKJZp79RPAu9OloUe0*l0wn+^D zbEi?)FSRG~5deI8Za~tendV70nv%>sSRRk(?(W{v(Q)zO#i*#LQR`P$R(5uFdU$w* zgoIdmu*gJ! e+XP+e}ClhyAa2#i|+1c6Isi~=s zj*iaG&hNbQj#{nOUp7B@@SwlHKb1=L_4VDdWy`?80R9m7WpEr9T~>fVN?Rd2e?>WR z&5C*@b-5G-(vlh@_i-#D*t)tpp-{MH&6 tTh zDv}qR?x#^~3ey-FF?8~fH=SAxK0P SNQ>Y1ZZR5jisl(pRwn$p7 zRxB3R*VnhSv=H~joSmJyTrQ8t3keAs;pV+1vZ`Paqy7&EgpB71;AO-B0000 Px@H%UZ6RCt{2-FsA1*O~zEFK?bAukwCqL~4+tUUMC{S%e5JVTD+Jqp8E<&{lK@eSp zY7>GWx(L-K1VMBW6#zQ>JIk8OgfE2ZtGi@fWzA)cl17r@5{eQi-%zerU!CfCA_!tw zr~r^#pS$eBvNQM2sIR`$cxTy#Wyed7PsiLeAm|o|dPKS(6G0G?X2>xe`xHCma)|E7 zL=c3e8B&`N1esyzTJ$Lwl_x()u76%{Yii5oaKjgbkJU1*GVNZ=y~C>xr&gris=Fmq z$ow4rVwc6*n%I&INJNPHQylLBuS8f9y(D_Xa9 $tUi6F>ppz(fFVrim3&p)FoL#B}B zHRN$KxI43Vj@3A)KIhc$rvg&~<8$LhJ)(!=hY3XqzCZgmzi1{Ikcbd+IppA-gLw^k zwVkyihA0#i<~8KufJ-rHUPIo!mV0C(FR)o~ujSrffBS2(u$Wkq{2=+;!f)H8Z4PD* z Bf9}5}_KF|3)Xim_zh-(%si(Yx}<|~`e-#;I|AUv2I zJk}VN#+J>o&9jYWD^!Y4fBQ7)f0E*I;?lY4 Hit>-j7dtFg4}N>=Z2+Jjq zRzz2joGO( ^I*`yhvJ84%g@H=#&`C2o(VZ)V`8JpzaD}h zugc5)rZscdgnEXKSp7)+i1&au^s%6^z~0PWAQ1>80%8dcIGsv={Os{~V^Cj?V!|+4 zJ$H5b ZMLgNd~ksw$d~)GLd7K#a^wx`bGX1y;v`o!{u_gnvQ}X$Sd-)YWO<% z#w?8)vHJRx>qE8adH-{nLe?g23%VFIqM1Y{AwQ&(xf2m>ssgGb8JR|*onCj^KiQu~ zq5Zh-$H|O{Ajs6x;5r?RN&^6nE$8PAKaW^tL^mQIho}xLI%}!|PG+iq|Kslfpv0BG zJp3hodHiGsMG#~PX;7OiSQfS>wxS- &pl`BkviBG4f70<}{rvSxl`^Fw<)8e2nzPJzzrA~`UQsuqs@kgpoCEk>{KIz- z1HhqwIW(Do>O8GIABrCyEk5c#+daZ7f=uMNoH#+Z;PkrF4rUGxW)6D-_8coYcD&^H z(2<>bOawt*8_jByt%+?(R7uQ#$D}__zg&440Gwwz^EUE!`0f~|*LSPFJ5zopp(uek z+Dh7xwCT-FlL@Hq$f_gnWxn^fyuW!`dlGeI{K&-7oS%c=uD5p)5x#!s>x`<5;YW7r zF%blLZ7AA(&r0_|cT;zhIn&(L!j(!H^T2TH^{p2lUab72a^V{b>$~b@3fVlXc`O=B z>wx3vmG=rH0v8JxbEf%JMII|Af*`M&HqX-$yFcD XTP9Y%(Vz6FqZ9)(P(GJ?3K@db2 zq1uEXh%VCd9)jtmR6+Lrf$}=VAAI@!1_b~tVbd4SVJw|TU+>GJ&a8T?QmHB{D;pad zg+ie~AOHY2H#b*TS9f=JZ*Ol3g)-d}oJt0jEHXa*JKxkGRz{xaF0WUNy7o`=8EKzc zxY^E-`qa_U!Q=578%O_sKsK8l6%}P|ZT;Hk^-362vdDz=tTrX(^v7Q8>BnH%e8yh_ zjTSi5y`1R)P}Quc7Ah{@?*F|`VakG2+h#?rn$%lXbU|TZVP<9~hGA?rJ0Kvy-rnBP z(GdVdB2jB=YiVgIpU-EpSP>Bs%a<>o?#WJ;K_!cjp-;8x?5+OY$vq4j9NuE~9~({7 zkKI%%ICi6Nf4Wqzgrtwncdjv>o{3I{J9qA+rKQnmw6L(SHEY(WAI{)7o|BW4m6fGb zDnIz(gOw{+PSZ@MfI%gTkVFN5+qZ9LWo2pF)85`bE-p@^E&%}nT&|Yyy{&Ik#{JSm zqe97HtIz*DN?`&3Diz|xOo|U#(Wnrc+QWaQRBxjf$+ow*U%h&jN~Olf#|H-ok9wYk zLZQ6-?z?;U?xj+xnVFd#9Ubaz3@TY Fl z+_=%r&29X~?(XgzHf+E!EF~pHeHYlEl0{}1{Wxb_QX{|LpzxbZ-?zz>xK8&)nsogU z$pgMZ(uYg>@CSUw`XiG4>Agx70Kk8SoBFuXi=WDWua!^t+%;BTUoQ{{+}zyOty@Q? zeMm@%i;GKLT^*m#fAzDQVg{8gqLGR3A$aoSNk&FSdwaWwhsV~fTW8IhHGFM;etvd# zHiN;4h=}m>^BY>;)zy`nnp$69&t|i?ZQC|`_Uy^bvaCi905NL^59JE0<=_2R--tFi zz>#acfgHx_x0qBa?0VOD=lPz}8hOBc2Kj+>Az5Op3knJ%dC8nYp#%m7Ub=Ltp`l^! z+_~fjGN@z`y)(gnQ+j&3x3_mmNr^(C_~C~ie0+Q)l9%68a^=dE9Xoc2#p0~2EPsFh zn>TL~%bz}dx^Uq_9*-xLN>83V>Fev;-Q7KzSrWDBO{c*xr#pJRchqJo9FE@@tXXe5 z(E*^eMuYt(9Z9yKp#cEw?Ci*QvA4G$>PV77C5z~z32M`+Q>Q-p Z=O4MuB4=- zsj2D8l`BJQZES3+s;bh`(kd$}0|El#;|Jen`_V@q&6zW&qM{--HMOFmqOY$nF)?v6 zvm_497P=1Z AC-Pmi*jx=NSwtUAa7 -vbhyE_0hH8l~x2_qvTDgQ4eC53qYKx>QK=>Sl{ zR}B9+PD=oI(4YW-#d9=xC`U(K3`vZ&qLxjf%C4nE((MYLfd1 zQ>krAR0_n0nG%10z?TES;<2lkIvq*Y+1dH= ngvdi1EXvvXKjSX*1$&Ye30 z0|Sp7IimF}|NJ& T85scpl}Zf@3w!qL8II%r{{G?N;kZ^R_;O~XnEIah_geY*ElZzb z)c3@!NO6@=p}tlxk`)StyLRo0j*jN@`Qx{&udk1ej^4d{w@4&1@MMu0X5wdkRVr0W zON)ht#fW?JhP1S_(CKvbTU2B+nMfqEv9TGeqoz*&qi;{DltqVcBgcH!_xr5AuQQ|r z3OK#pJZ7E7&-&_4vibS>85tQ21|u{ybgai;Z{50;ot-V0%OfKrgMxxI9m1fJMf8q7 zy@vn*lJomxQ>8sJoOnkH$C E-Nj?vRQZk< z gq~PPOht~8+EOxr|0(V+b8+di0&|`WRVH!Uu_~(36*!MvBGMs zuv*Tb!*Wl?N)B@+hdFdQd?pczM76cGH8nN0wY4-FZQi_j9v&VZ9v%)34%0ogsb^5h bBIEc!pbZ7TDN0ef00000NkvXXu0mjfHZ(a6 literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..83665d55e58e9d31976efe3e7361577d336b5b9c GIT binary patch literal 5782 zcmX|Fby$>7v=&4KBv)FRr52>Sq+#i$8zclly1T&zsfDE$Ndak)E@_YsC4PW(cgiBL z+|_%Z`_K2xH#5)7IcMJUzGnuirJ;n6ONIOB(Ib4Yvb^@AM;K6an-BXb`deDU+WF`a znHgAKM%UN;$n2S+uF|3;nLMXqjgJD(Z>|A=>ftX64u?Y;L8`*qJ~GF{yj hBfR|LNcbv68-HOjJ9wg vU5}-(ZXS 7N!+i~JYtT$-TGh$<7 zhKJJAWA}wg<1*kFk^lR_#yn%72QoOy5fNcwVaU*%V?_dO-2QJSHuyW$ziw$F9y*LO z;OL;5|Gyzier#;;{HX4T^b-u3e}f8u1MVs%rIQ2-qaa}M9D;VotkG;adiJHUwdGdW zsl&SM?-Z)acaa@)*F7$gbYF``-g<}Z(f_YaNl5f^yF3 y{6sH@DI5SiZoX#{$bM zDlvKu|2)&Mw*npa1*WN2SW L+B=a4q{N}lVqw0A+^7T3^Bd}meyYIB1AE_`%Rayg zb2I8t>}$zH!h~vI0jOb&^ zG7|R`EA>_K^%4?Luh6%kAPA3+%$4z3a$iK(GuIjqt=M#2 ~w^-)v 7l%m2*2Gs>l z!v(87lhZr@djr!Te^PVS4%e+c($R|7F9=G#PP9w8549J%U-!`orp;+N8Mijd2M^v^ z(lyec&Ri92QYAx9WHxeNa=0)4@Jnn}bl 7DCO z5qkGM#CKI#*YO;uxMk?t!CJrF9lBrM6|w#?*iVd7CkJultk*8evEOXHN-qp(IrfL; zvAULBvv=6K;0+;VrOleW`}Z%(;joggC6Nlz`P;Esr$MW6juF+}qH%St%R_B1X3b1v zoM;-?Qo?h)`hPruOhJ$*c@K
_;G{6cVf4$!!*aUkuti5jJLHuQk}4R?} s%8)(l!xyDG%?XSRwy)Cim2PNj|KNf%1em9l(P4&RW7aAcXy>SW z$?5dZuJ*pa@j7g7Wtx?OF1()6U(3nYi`nnMuH?TquOWoDrbMI|0lNc4xLpT6rTd&Z zEOE$pB!u7F1d#UZ8 fxeX{XwU*GCz%so{_p6 z_{Kc~t8t)A!({ZHcGuOGpeWmCds(AN9LUS!A6roS9^A+RSk$2c04%I9V7PR6k2*6s zypOq4RWZiharYHGoo6s*QX(ehT9eU64SUyV6DbulwZp^e?(to{Jh`t}6*1|oBVIUh zs9*I`zuq+8r599YTIas@ZdYfke-h!R6A6TUA5Ne9%X2A2%0ysYR4t#zYmxZ$Lh}J! zjQ%Sd4{$+-9dFU;9=Il)t@kJ1aM|_IhGTXrs?=HK3v2Dgf`)*}B3`c)ZS;TmZxL85 zl39?>c-dhRb_hs`{i@0(Z5bV3tfK$-Ksg+0GqCLAxe!*|pG8Fj69t~J?IsWNr;eIy z!{OQ#!B!bN%QXR@K+;_M8Fd_HXd8wP#L^i VTf#%r0G%#fpK58#QlVJ}co zU_VR7x*(9E37T9gYM~_?xT0LyK|MRp&r=hXcw&8>sIUlds@<*=ba?$V3ViIm*jn1I z+`)Loi7VV-yn-ub5UAT6`-Ve(zq%@M#rZC}1%IdP)^YuIlDzObet>W+c(UoibEZVZ z^&%A1Z(F3_(!Zsvv2EJv0m7&T2TrKSI?9?W{8JrCw5d4DQNys8d-lJCz23!E5E#{- z3`m*!x?{X>(Ck7QZ^Xm;?z?V5Ksn9G&+f?aH`JXz)CzTE{h8nFl6ch>XI?XcF!A+; zwV>`GGXSQln%^nCaQl(x3iOY{zKJ}53Ijf&XAZxBkz@cnZ`O+$W&C*raer!=_xI+- zoVFYm4)_&Z<7|#)kdKUW$yHnU=c{IN8P52_{Z}405#${Yw|>#9AtUe<&*T0t{>11j z%Rkvuj>QIM07cl2fjJ?8Qsa_RCF^Il?rD&s{38_<0x3x5Y(+YajM&f%j)?5WclDqe zhv3d@^%VB--p;>o@Ckc%o-F;Peb0% ygqx*8;b7l8WM)nby|yhR>G(z?P8N|huXCRK?a*g87PL`WX4KY-s~ zKs268GBPo_ZI4pkUCmiE`<&3`NClNC!e5yPZH}Z97OB8xZ_c-pL3(92JjMqEGBtHv zIqpq;3SGs@R@eVw;~{yamGGt%AzWD;q-57aA2d}5vk7ev+|Sk(DomOPP^j7v>V0)n z_s#DZK0ZFptpj)CP1yAFLm=cNaSbIbqlTB_h47Q|8&J|K<^==QxMI>HNTcP)k<*g# z^7&vf>X(U8Ys+;MfXo@e$I-%?*ZC7};maYnzmMi?tz%l1W-E*!rP|D?TxQ08ge3l? zI}^Esdp}Cf?)*lpiGoo#J6|k1gTr$W)MC%Qhu)Cc;t9zBsAO!^5SWfn#S8qH14yl6 zRSUfCYW5OcJuNN)`NUm!$CSLy& Q5 zq4ha+TY7qW{|SP_fXnlEiL&nP*jFTN!0$tuje&T#wVo$%I^{2u;)czx4AY;%5iZ|u zp8B0{^6sTIIsfYUNXaifjodG<)~dIk61gSjCL|<8-rSV7M>Bu*J+rzzS)mIHLzhGh z5zI|mL1p@tWfFyB2=&{RMIXuCAnWU@ospgJP(fnlSs*dVZz?WY&9hSl0sR1xf(zDn zSMz>!go7c$`2F9Wi}}c~j=sKhSq&A^JGye(KEmrxfBmFeP!p7$dqiT#CoT$;_w^MS zh<_QA&TRoA>=_#ys}O8*S&@3b)JzQQbm_bo8n^LwXNLB5jaLjM4TMW${@u0K-i7Tc z7rs0+u+-HpAw{ZBz(JkpEi$qX=U2wW^hR64-i#e_a%))$3KeV9nD9MPUk}AhRO#Uk zgv!Mbyg6EE7!JsTC35$XtSndyPV7z 5g2&4d+dpJKl= J= zUu{(dQI#f5J>%m9X04u(wUVEu50(8zUQ&MNHl}Uf_*`6Epo(6i7yVglEYY_V{)h9m zOb&BZPP5_DR4$8+_-#HXit$u}KMj{jbd oSe|yM-)IcI#wZje}t;ClF(++=9 zQVxCHSnJiUuvi`zjqDFko|9R2g<|NlLIZ>D-7E}BJ%5ehD7X)7GCCxNB*>+EBA7oa zR|336M0n#I+&0fSeo|jkZ+Qi cfkOv GvtqF zi|SNLZY%QHjpId!d=SUU*uWtm82FydM0!K~I#v+O$XmnT>boT;(>08pArC+!UmxlO zDoJJ6DKp4pR^&*WrL9f|CQyrpqdBH`S&D_Tcj1r5C$Um)!J)7a9Sj&}y$~?x{`Q)K zV{#!!UhJB+OqTs}hg$h|A}war0=Z`Uf$OD{JYSJ&7&%8>IoU+Gd2eYO9p6Ef
SFVPAyaz)jc(9^VZ8T>kfZXsRBS_ ziTQ#d2n$2?FP3~gf`^JVK9yBGuxjS8F_TkKm7#2*Hl{P`3=9m)xl)p8uS|*oc}ws6 zRY1|D0!E#|lC3@`RqZbt8{T^93~&Woo{L%PdE0n?VE-kM4#f0~gn^YfIdkz1Y2>K4 zldu+1XgHTy#ch5Uk#x%^_r62Ad6hSpA-s 5_eSHDb*XRE zm^&Y`4s3+LJe>07@Hd4l>RDf?6ZHSQ`v|01FFY6XKFna;6!Y5egTCAeUn6ydVf98{ zT8g;fT^KU@94|rEXtpiulQP$W)Nq8a_I@ZuWl+dkegB{+zcmck(-@=x^JvOx#`y_E z!!y(pRCjH8`s~zU%6NyInS^^x*oLv8U|_eqa ?F?;lkYNe#&+9FdKu(c;GPmEh7TQ$=WKT88t3Wu`&CsFs>@l8(#JC zx4NH!2AZH|S5tHa^XC*s<|)9g=^hu`V>8Pywx4~Wey7JjXw9}XC|%u`1?;{lh>_($ zhyqk?cEqM-*TdmmrJV P9j(?TU)&j-lhVT+3@<&_@)|lln6v>k?ORw z OJXceg)Sg$bwEhJd{XSEI{=Ta(y*2>jkP-)3!X(*V3`s6Id2PS zzXn;G5}Q4ii%W!a=r+!dgDa#+qN~g?*owvD_Ra%YfAL#e@-<)y@!`7CZYGMOrshv= zS?bH*2IFv+J2mTM(mshAPK?bVwTcFIFJYGZ3hd2Q=MF ny$`nqN=P%#2I&vtk=0hm+ult zfx87^Afe)mdQPqnw-|+ qtX=cNKR=X!N_<}*In1UV&TnFdX?~tSv6^GjT{La<5~QdLb|gI za6%3QMajcP;_C_xfSPd|0Tgo1@l>S1gyur%hu<+l|LRtl>kv&{=D1V>HP=u)+89C# zTscRz%ewY-sENO|8f^My9^AY@9_OCG2gIFIrV@vcR{?yI3~1DzJXCsPnhP}?xcM)- z`GVj0RyP9;AA@T1Qmq$oiAwKYcWoUq%ICxxmL-7gAiNRZ22>Vnw>MBt?q;_zF}0xN zTE1w)l@uQv0PMiD8bd|TsN>neIKjB40ct9C!>M4nRZ8lQBGr-)afUxu8F2Vk Kp(<~y(XX)8cTcE>tu1 d>ZaC*gDE(l*&Z$~ Gu>n#wGAZh=n^p%t9r|STFQY52w$g90F^kdf zdC%_Dr?yB3_Rn!Soy_<}US#Qge86_4J#CWl0lYuy$G|3dCJ|uMmp9Pp*G0!sp==EF zI124Vl96_(_!o{o=J~8x$nedkjs5wBoD0)@&@MmQNi~Dz3t)G*#x%_fDRUoFks{ZG zjKUs-ZjBP jZcqMPm&qr{WBW_F)J)tafL(~Ect=m;KfpLSm6omQN#1aj8mnUwBJ5h zKIU=KN4=KHO1B*!kUVcF;@1Rda~S{;p_Z&1YjR5Hn@o5LX|d{C7g6G9Gjwfs(Zu9- zo14q+HA}Mysr^7hm8xDyaIWgK09~j1bBDM?ecbY3V)hZ{ADH+o6a}?l+06W4M_H%e p@b*03DKFpB?r}=?#~9>;*U=ZYHQV6>m$~ywyOjK#bN=w7V%gRnrIEJi_oH#hO Z%ek2$`1=X)Q>%Qt6e1VI3TAc%ROKkW`62!i|$l_Uf~%m^w;2!faqRFV(` zF(arXAqZkdP)R}%#Ej4Z;InT(qovbQOHzBTmV76nrPGqWNTL`{R3@UO({kiF1KCFe zL9E6Q86|E1di$Xphs-}Ff*{7BlJtkhL=eO{3oA(&fj#XmAP6#uOfE?{fxrKs_k9og z+U~F&``*}fU#@$kdDL6u1W5udop$a1wMCyU;)=L-8FsTio^|!!Rq6rB2)Wg{{G)uE z9X7kJ?CQ1)*WIqPbQ(rrGKGwmP76L9OeL~RA!Gf6_3Zv NN#BESE z7>S7>$e=Q pntx#d5Vn-p+`ctyLWeTCl&A19w~!FNXN+#j`{PNVaN@%BgU-^|}kC31jEz=r7? zYFcaFz4k8Ieq+(bc5Qp+yi7L-x87nR2r}phg81~-r;rA37QadKaIX3sq`{i=YslH` zs%%Ju#DYYez{w>^UnD^q9R21fIlJ@nPDq2Zx6hKZ@#o?p4fb5!qYqecrvTDm=FyoH z1CkL|=dJG9x2_oJjDQaVx-RK6az|%}*ZW@f8TR)d-7o#I6w+YE(HZ*224f-!GT43} zC1qa8q@~lk{Ve&{lCJgZqsot1be1SWL<1VR Ca5?QPOt5Cj=;zn7%Bf0`?b5OrHE`A(uQNv*0@jKEq{ zEg6?Hx;0a3mDG1R+HN!ev}@Z3Dqv64Bd3I>oRFPh&=^TmsooBXAjsfh_TA(+b}Typ znBq32QdrraUAC%P0bm$=*gysBiF)KM7q`%9bd12>`S&{qpFcRT-9Qk;R3;n{*|Y4& zJC2t($y-z{{n_Q!dsk^dn>2dTKn3iHV&qS5eNtFcm^3wM(ZofEZXCLD@5;b-13?f| znRbrm<)D|GQuj+48G8hv 9s{`c+uHCyfeeCqQwz}NvTn>}7J92k_0`?Tb3n{5BS$KM( zkCRW UT-eMvMGT2NTC9xUoFJJmH zV@?L0Mn6(@BuAbTIwth`E7#|ZpJ!yNGk-b58_vtF%0BgN;TE<~Nii zND_|Aj^9eWHQ9Oc;OzxLkRiju9=k;lWN1Sr2|*Auf=UvCAZBE6&m|!Uf|vx2k`M$j zBd8=H2x3N1NkS0BjF@)!wwciCh;!wdyb5hqZRh zd7{l(h=O z-wWX7!pM5bVd*rRKe$(eq^hb)EEYF6Hyd2* i}TmBD>5u2f8JXmT(-;&CM+? zE(QP|kH_cpy}i9hjT!|2EiEn8)zxKXWe*-a0D#EI$fZk{(r6Z(tyLw97-vZ(Y2yjy zp3ggMShV*N9R4 WEE??6O{RcpBXt7&$pP#l^);CNnlRcGj#} zJwJpvj+d5}o;`b3r_)77M#jX%Je7V92&+mKF^&!Z0)b%iWRsskb9HsyxN)ONn}mjj z3IqaEcSI6j*O2w7@a++akp}7!05IsVW&x*g%Lq1;wky9wQm*OQ#v+ofs;VMCqHEW# z4GRl1I4Gdg>EYqw$;rt~CbOuhNGg@~Y-3f)B13~^TyfLth|Q;z0I)Z~VfJJ;xiGIn z6TYp@A+E_Gu4#7KFQ4D|wE)eT%-$34005g#Dz!R`83XF+bULwE3;-{__~OKg6OA{X zG-(o93&divPG{_^tIU&CC5upD871jlxu#Zu`FSvf^El*^)K8R)vmSme?|iHw9&3n8 zx3!BhA8z^dF}XG|lH)s;S@ScNSD}4+y?#PcskFJdnaAVJoH>(9`>?PucX#*3#zvXU z@?N51Rmmb$^ih)9+uPT!UCZO~I2=wuK)|_k=en(pkB=WdeE6tQqf$~*y8h!jbLNbn zpP#L*t-rs2VPRoEdnqZ`0>CSCe?4BytI%XhI(jzyXYS*IN(}%o=&*W@E!mR#Ud$v} z@~C9Sj2RS9;?n7KKA#T&CVfh+Dp|yW^ih(QFJCT^NV2lB3JVM8%$XA#8{73y;mDCA z91iE$v117d3H$c#+p%K@x%~9$)614Ei-?HG&CT`q_m7T_?&lv+Rc$8#MEJAF+4l+z z)FaZn1uAl4o!+B9??8h?tld zUteE?-#l4TQgY|c9sMkq%N2=4 rMk!d{ax7r1c9qy_KZ(FW8Y2MK`qo5b_L*;x5c5Sq~2n zg+d{h%c*}#<#IUyj2kzOVtcDf7O^bG1`+M;?K+)KKSHjlsp&el2Y|Y|I{kD(LBYt8 zBRxDk{QUezj2KZ@R~P!5Ns}h|`ug^#my1Je0N}_)HHHHKybx^j_EP(v&Hf%^|NIm- z0AM&|UsMA?bO_al-OMN1z`#HNC@U+&ahytf9LLMb%JdsjVO7Z@mgUz`l2WO>aN$DN z71O6rA3b_>aB%RpZQBTfP^;BhSy`Q(ol2!r-zGmlUnmqtMMYh`diC((!|CbiEEWp@ z($mv7Y}kO~cvMtWQ&ZE{ty^PaVnia*6ZdlQRJNB3 G|P@AI8SUl2=#=f^czh z*}8RWTwL6+VZ$699oMZ}*V);rKW(0!o$c-I&0?{}j2V-fnyON%h<;p`AqYZzT@3;S zds$=2O^xxE#WD@+MFj{Hl5zvraV#R)s;VlXQ26@muUA)B8*eF>%M%k5g+ifJDz)-t zk)gqo9=qLiQn@?7gUzJviFZhh h*HAMZz#lDwWD)vLAo^k-RSE=;-L_=@}Rp7!VL(BR?0nVPh1i1t O0000 KQ`u_E0jIjVmDT2d#QzRz%#E@>7K#)^JK%@ z-d~*D-6uy!xjOf7G^a|3OWJMwAA*|x$g!vzR*!=MZ)|J5Yj}_YDK2Wda*$rQ0I(vp z-THYrSa)k{>r|eVOop_qtSk%`{H21yAlp<#>X9fEN_TfR;pn+{ot-;7JNjZMh_6;* zN=k~3{OJ=Xx(%vP6ge0SExfV5t|13WHZ`SUWiy_!1AMiPkO%y=3YlS*4)TW&&nz!9 zJfQ#}LdOyP{QO>2RW;!j=UBwJxHw`_(dz1IX=!P2OLSCJ?RYR1Ye~gcI(#FZ3oR`x zTU%W{e)s`LNkKt@kB^VT;aDTI5r}t)Y8)-UcUD-L?gp2WdmXoRLx?R0G57cP4-E}X zOf*IXgoUkq=X41Q3Q9>yZ6X0+X1z_9)!%QWB1zPRyj6P%=GB0lQdb9yl}j^ #DM`uuC++O**~7!CP+`)6BS((tN6tag-`0_@VX=eHFvOnTUU3D3 z!x9oxF;)&IH^%CG&V_znSX#=;&X&cac|0EMQ2N`cF(E$S;fJjaM4QJK?=CDc47SYU zSz20B*a5=IqN%wglA)$1=qwyFH#3t+6;Wn#zI*%l;02>AklXRU?xqGJv&v{!8OFzs zl~E{26-mv)zM-KZ#qaKXKw`-<7vtsSWoBlk8zOtgL&YPYX##{PEiDc7pk(N^>p?*e zSbiTf>-AOf_wPTnqSgppX}w9CU%M$Evi!LX6eA-eFq|o^3U~^J2ezHi(10pGE-7ih z)+;kVuy{}k^-q8fj!{e`9 b;BRklkH_Pq zqoXx7HNiIig{ge@Tc-^Uhl`7AMgPI(MJXD`|BEgLL)b& pXJrNNRWo6}COP>mf#Dj+p^|M%$wO%Q$$OSfUy|J;e zxw*Nfrsn!+ji7*lnoLM+Y)gCludf{`V2m*3ZMt|tULKf+`s~?+P&l`hANXmQxKv_n zZEO1>K*yWj<>BZkO=R_VcXx!x`}w7Hc*a1Pe6TK-pLTf1YZo2JTMbCVl8-J?0+oOM zv@C=lP?CO?M9wGD6u?=zR%_7Vz8$rjXFCz{si-=A*#`Q4TnE??cBjLH{r 8l z+KO7=_${g>Gc&WkUJH-TB@$bc_7mGYY;_WT{k%O;V&p$iq5v{PIL91?`upRn&;oUW z3H9C8{qK$@=`}O&jgDKNQpKF11AdhGB_J@9(p{1ypRHk58GKI=QH*<<@cuwTVhK z16inZdT!1Sj~<+y1aDnPDQ}Q^3GpZ}CdNfYa${?&qP(1BoDhpI=~}HAda^U{vL$po z4;IU_ZxNDkLKl5@RSo1 u)&=aJJoQ``#2m!Y(ZK PSN-S~o#INW8V zP6N`KxM!f5KbBJ9Vz6glRS`%nYQz#;FF1J@!GBMQ8&8&Q7_W9XsSoS-KDsikXRNP( zL_(tO>(Z2>NuqC^3lfRU%C28f!rTol7l{WJ_yoZ 91@4DjEoME?3FDJ&LIbfki9-uB_lg~?{kh($n2maD cHWb=E|_xI0vocnR#=YC)Jb=|M)^?aXLJ(T7ZDpo2I5|S%O1RPC5LK+Kv7ln`m zp9@c-YDh?+*O2hLhQ5|-*_TswcA0x*TvY881Y->a2XL1B1DFUyL%!gG)W{d~0u?!G z4un29tz=@sA5Bk^KtHs-Dh(zZ8U2$z*5`1Or3t>2tg;BJ~>i6QcHn&2Ya zi>`R)-rV3*fwk{-dy3sOlK=MOH-+#c`*M}7s;aAhCdscuWE=C 0AyBBKmrsY0a^)s(ZAlGgY9Br?wQ8{pI$D#For}1Nw`}tF7}eLT@43_P zIbBF_Wvna($E*GMU@@07?}mtou2H$Uz(&(vPSEsg{TqsVgyNj#>zb@ V_=f$yjqE$i>pc^?E z83OV?>!}7PS@odP1INjxfV!RKuf1gt!6}`1WC~t2l1l3quU6_{%afK9qeO}MIA)RZ zS?ikOdl?1Y`}_0B<90Y44zHW5q$Lh%5M5=HaW%YQ`Nl}ddA!_$ k^IlyVgE@T3 8(1Vca{cuKEk#m>dJ7nqps8#1iT5v-Fx5IqEL!#M`34BO-s_E z;i