From 9939495f486dfb46f0c5985557e63dffd877c3c1 Mon Sep 17 00:00:00 2001 From: Pritom Roy <64958842+proy-bw@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:23:58 +0100 Subject: [PATCH 1/2] Adding supported browsers, updating access creds --- site/global-guides/voice/inAppGuide.mdx | 27 ++++++++++++++++-- .../voice/in-app-credentials.png | Bin 0 -> 90731 bytes 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 site/static/img/docs-diagrams/voice/in-app-credentials.png diff --git a/site/global-guides/voice/inAppGuide.mdx b/site/global-guides/voice/inAppGuide.mdx index a188d8af0..36913b117 100644 --- a/site/global-guides/voice/inAppGuide.mdx +++ b/site/global-guides/voice/inAppGuide.mdx @@ -79,9 +79,19 @@ In order to place calls into the Bandwidth Network (and of course be subject to ### Generating credentials for an access token -To generate an access token please contact your account manager and this will be provided to you. +To generate an access token you must first generate credentials that will allow you to call Bandwidth’s identity services endpoint. -Once you have received your credentials you can call our identity services endpoint. Please refer to here for more information. +The following steps can be followed to generate your credentials: + +1. Login to the Global Portal +2. Navigate to Settings > WebRTC Credentials + + If you do not see this option then your account has not been configured for In-App Calling. Please contact your account manager as referenced here. +3. Click Generate Credentials +4. The Client ID and Client Token will be displayed in a pop-up window. Please store these details securely. + +![Generating WebRTC Credentials](@site/static/img/docs-diagrams/voice/in-app-credentials.png) + +Once you have generated your credentials you can call our identity services endpoint. Please refer to here for more information. :::note The scope must be **voice.webrtc** to generate an access token to use for in-app calling. @@ -107,6 +117,19 @@ SDKs exposing all key capabilities are available in raw and packaged form. | Android / Kotlin | Coming soon... | | iOS / Swift | Coming soon... | +### Supported Browsers + +The following table indicates the browsers and versions supported by the Bandwidth In-App Calling SDK. + +| | Chrome | Firefox | Safari | Edge | +|:-----------|:----------------------|:----------------------|:----------------------|:----------------------| +| Version | 74+ (Chromium-based) | 78+ | 12+ (12.1 for iOS) | 79+ | +| Android | ✓ | ✓ | | | +| iOS | ✓ | ✓ | ✓ | | +| Windows | ✓ | ✓ | | ✓ | +| macOS | ✓ | ✓ | ✓ | | +| Linux | ✓ | ✓ | | | + ### Sample Applications Getting started with Bandwidth’s In-App Calling SDKs is simple with sample applications to assist in the learning process. diff --git a/site/static/img/docs-diagrams/voice/in-app-credentials.png b/site/static/img/docs-diagrams/voice/in-app-credentials.png new file mode 100644 index 0000000000000000000000000000000000000000..053012aae33c190cea9021df207b07a96d74021b GIT binary patch literal 90731 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 ?6f}zsr}uPmmz!Xa!g=&0`Thz>Ys(JR3P5sjuZR z2Zxb%`7jE5zKLIj*2mea$u4qpu7S9t*t_d8 z@X&c2QpuqEd79Hgi)?L_1ukkeV^x@JOci;E)T#&-0a2&TW{Kc4g zTnDZIW#vkz>d95+ed^G1S(3%p9XF+8ULC`9e*^#{bq#e%&Wef$9M0RCw{+g?j$L0I z?T$)YT>NTq0-bJqklbJ%=}&|m?;_1|gpU2V<)l_r$H_*i@6_cVslaV_x~FHQLhr9u zv`OPv!a>V*;u;JmQU2145B^vrr6$vN)vV$mYygiqFKy6Ibhy@ zrIh#9B?hNYcSeIvg`Qu)ai#ac;!Pk~ZD{#PIVV;#YXb zA-MCyc7#~qvT8o~?Q}fO@{1>)M0CL$^R*!t3W%fkrJr;J<1<{Obu=EYWc`N>5VW=q za?E&^N(~-!+nM$+XhSN4{t?waBE4_4M1nr8{!U5HxJ{9E)J%0b=l&4-Bx-o2GXd2{ z?5NX1@~%pdzVF*D3Vxb>Kqw4Zo*jEw*z7*gJCWBOToG?6dX~2knL1sla5aYRBInQE zVFT2`uNnUL>Pz(HF0Nn!N=Ka|zHsGUk_v!dJk-mtFd;D93ibjTfbcE27&!NRTh@Vd ziqnd_6uikF4mSgUMk&)vhdqq5KNbn1%(sJ&jjj2#|20F%)+GT8*N@IRogH%nMQ5-hVK-<3{`V^Zi~UUcB7$s@P*tJwkk}CPmRE*b zsuyY}jg@+fi_bRXGmpflJOTNyI<$8c*&6SqS%)Z)@g?kv7RkbMapFB(G8#8RFEQSE zsfZwbfHVo{=5=G08gL}f_(B@SZi$oLV&QQw(az}Uviy(x+AIG@3D`yMDfS}o#;vJh z-K)1Y4nrFG`FmBH*pIaO4y}T2l)lZYtq1$K*d-YGm&9iufN);Y%0`mw`wAW_hp&s* zgia*Mn;kdkCBN7g1JkdG!pa1y`(KvgpR4k0FeG7ve4ji3_njDoV*ZHQFI|?uIMCPm zVl*#wa^17}&VP;qmc2xkPhnR60_P+ZAo$xT|NfVjDj20GE#LajQQm`5;u;h-em?Lo z7Ubt^YAJ$ILUi&?{v73ElEyMFt+~{Ki`K3r-2aL?|GnGx;+_$$50^^-M+kvMD6{;z zU#UPKeEa`KHGhd}{%;@*!1Dhu1j4>L0TcFa?>p)85?;WQGI7aU+*_|ozr@0kE4UB~xTd85z9}d9RcNTq} zsEz9pfM771iA)VR=TfqTBK69r4M{Nlz5}#A$e)xt;Nr`*Zvi@@;V&VTX;Th<(fLV#aJlQ+MV2J8ADrg{7tAI|G=4&MS+QO zLIlm*Ty-JsjWc=5$LNd;3<*L1HyN)2KKMe!a+;E9^V#!s3W{o;pnjbk#U3sJ^IOg+ z!T%^-zntM=#WZV`dF!1Uo_VMp&{`I+9{Tmy8{(`&cWfZ22C}izcP|x8Ac}vUCAY zdp(RWDmYKPp`@R8)=sR>SKKvRQ#px&=Yys9Ujm zB~s@2^7a+Ba*DaF3r`!AZ}0mwXoov!1=ze!YA}*n>IIYp#ga_pb(0OFJh$=Aw| zkceuTNmh{(ykrxcAIj1!3b#@kB#tVL!$5_VEUs3~Jckv(=Tel&I#B#>2)N7VU0>u7 z9WE&Fm~z@HIjY1PB=T@5$=(!CktDd2;h+xf85t1;b&X^H#?J1=@+5LA6b0o!8Z==} z8K40fHQ-E^T2jJw%mAWZagfp2B6`qag)vsc%G-kdt53bMe*kjhvYZ#9$0mBCy=-ul>Jl~+!$vhSuLi%vr! ze_13K1p5W==nQ#E^(56atRXUe4346UV@YYzeRL4kkD;S}CjZS+WIdJBrvR}>xP*FO ze{Ci5SyL~09hnQ|&~yeW6JVHpGci~j0EUP7C`A<#G5pJ9F{ks9 zN#7=3ff}sG?09FM)8J?+NEhz3({r{2onV{oK&0SIGx}8f2Ho`+eHw=v!>gv+54XDk z)9(?ScFLK8D@M|e^%7^2ASi2GORur$EmzC`1oQZ58hre z8_PtMc5UEAX=H*;1y7^q2G9S)-g`$i*=_5iO0j?nihzI=ML|G7ML>`uC?F*uC3J{_ z^d`L*MFpj)H0c6Tl0YCr=uJg>hlE~~9(tG1?#kZZx6i&`IQ#57&ba3{?zrba99h2a zdRLj{na`XP%dhi5q0PASXMs-PMh6p73)rjD97ESBmxTLoJSUo=VkR&8TGK~0W&zY{ zy)VdI=2Gd$N+{!HY(MB=B9f1e4VUCz%nOSON=UH3&V=xO8{<$QQ-rP_tuW};*}o*H zM#J=cBkmK+fbY~>{@}1UzGIvKY9B74L&@-4&kUOjyH4AGzEyb9M3nEC6F5OR&O>qZ zhkQ!ry)-}`m-+FYNURDL1lqx=1JM52Mw*mkP)7W z!s$M-=%uwd{V0EV*oK1zn@~Q{18z?lu0VOjM!0TlCV2$*wPBQOOd{^RdO6a$>92}( zo0Yw#+6iI3Ggf`hu{x57S`Qt`B!zn^5;@*k%H*gk-(z;*$M?!dzn$#Pu(?FFtjxmw zG7K(ilaLBveEZndad79J9}o(Il3OF8&i?zF4!%`GL+{IMoYW>8e>t?VFgW&}Qj0~6 z!U5(p@U8O?CU?&t^6K<&rwl1QG_;^h^d@Yde#erGvqxBp2rqa*f?9B8fmto1kfnh~ z3owt7Q{G|i#0bmOL1u!h18XnzD)q#p7Q?!&3@0<(YHA*zY1!?mjkE97Z?&aQT9TDZ zaH+Ds@RH7{3 zCgNpv*Xstm@ALCY+9cB$N@72=rSy}@nI0&)8YX~6wLP*>C2tQ%#uXmOTh+a7eH;9?tGv}ZzPEm>JTOZDG2BPVydy7(6)^h! zX58s0*-fy764az0404S?cA2@g@B`8BO9Sgl(``AebR(S&p3*jb#Vo(F?JsU*etEhK zO)ZuRU)u@CD&q@`TMwL%r!5X^CT&Ugve&oQGue3czQ!+`Y;%YEOU;z6x-(~0o#vZM z56}BZoX)~Qq6X%`H??%>w&q%VM)Dm2M&Ow?3z6a=CvypAy7xn2m}gTme;RF&q>M+<72P~ z`qdnxJtN{iQ%;Ga8ESLs+1{OHP79g02pQ_Y#D6vN=8>hx%Pzv_E_le-)h!4=AR&xP z=+(6im`+6;%YFvVe@c;gl6#8s4 z4mCc0BlmZHCCGRbZ(DLx@i6Fhcm>A=#Krelq6ct1S&kw8*iUkES{yZM3VDX2c}s@K zLa7B@?I}++<5L=eGO&TF5T+X*E3|+D{wPb0!MYPiUgR0GX_xCoAF|THbsw-dpY~}f z9U@qhIUdJyh&azhxbWdRDa@QKaCK^IX;P7zmrS_`cLfFAAWl^&JViqlp1o25CF9?7aT4{saQ|^I-Js{5Zm3d`Yo@p(@ zv*7vE!EUUVKSo~gd^560SQ-AUz!T#&w|}SF8$BdMm|njs6r9wViyo+4J_zhPCq~|~ zGqp=7K9fk(75_C4?$!8$d4EG~N`e(3#hntxV><`R7qAAYCX{=GjWZz_+L4n6TQ-k& z%DlMT8Q8|20a*j?~00WH=^lo_K&2~3CC^~xp zC&0&9Vt414O~#fge2x0p4{tVGAB$T1VgJh`9Bvz*bf5)Vmwc-|i}n3?!%W&T`S+*p zWT;MNNONu6Di!zt@^H;>l#es`G);sS?#%aSAz$VVJAI>E>u7c6r6^QGQ~W$Q|2D@T zy#5PvO#J7Ej{!z*wSK_4PD@L(%h<_O%_wV^PM552o9&owc6?|Z#S56z8kWEhbM#9Q za`u8=i?3hwsVhb1g&Tc>Z6D_P<_lmlTcR6z}9d28Ew-*B3lfdEpxnQq$-6xA_!m>ZF9@rq8eyj}+ z2OdoV4&2->TRzz#R$nKPyC{TVPD?p0)M9JR!lDRZ?wq*RzA6cH~WP zRBTqc$dV*V+mvCZ|Kd@CnQiZZ?AJ;GK=++X3wxqRdMfT+Ch|G?4>lHxX6?igPKsfvNh7AE1>V6u&9w}@Jr6CQ$K4lx%vint-949aw~t>6S?m{; ze6wV(0&1^ph$~N3$zQ`BpCl`I~-S^$?F?b06cjM&+DQ9VkGuL%=>B^7u5?!43oAt*o z97uuo%%y=_Uq_QlXwN&)mOEGrPPQ|AGEx8uI-@&xO~N>EcPutRM)=0g`+_OG{JQBD zi~%ug*#7lvWP2fdA#l{!wt#r*{3vStljts;Mv0#I7i9y0RKw{`6tesEmOK0P47ta{ zJzF)3Tw$et%I$93y4aM)Tsd;%XuvAm9tPoN5DareF2)UMQaV5V;+>o7etBYQ(LDJp z^Jx7YX^~f1K^paICOKp89)bMbrXu6<{oj6Dg&|d5<1yd9EyXJcT_|_i@>{90J2CF@ z;_grP$ynTuRnR2i3Mhn@@G|~~#vw8AyF>`qsMIwjKEfz_^tHRj4~w-rJ!917cY58_ zY%Uj?(6yZ>pxMvF7YLQ{9o-SQMj!l2FDuuT+bX#VE!_^sRpUbvv6XKIdU)o_sLjpZ zfWTzJwVYFL|3O*(hk`9B1O`vwV8OEmSeeH{roNV7#{5ygGs#J_hQyk0^kp^7{{hGR z1?U^tq`e&u7@DoJw#J(Y)lZEq06>mZ_L-WWPut;lVfqS`LV1TAt6v1s$4ohV!d7^|E;6l2+c0ELkz99m;9z~&{_bP~H%LUTw z3d|PZ1NJ)ex)CE>kt{Xqhm4^EW0C^eqHuuGj&VDHlX53=0Kwa)wMr91N5mF_+j|aq zN+j_q6zzpL5YEHcFTp_`$v>9p?|a z_BAX2oc1A4`4a*uCYH?D@KXIjI_7_l#9ti6$|YZ3BMyl2F=tQ2b^f@8(YQtmDFpnl zTlU}L(S0zY-Ej<2;??0mA|iHibvyUly{O7u74q8kSp+>h)&;DEo@Drmdu+lmwWHh_ zo8b$eDkLp?UYKmLUna%Jr1P*-LBU?kkQOoUVoI4Iyy656{dA9 zp_(gi-(c2P1987~I_g`qkzSc^Y8y1AlRFRlVTnca06R1kwGQrIq;b3MP12*a45I|A zV-sMQ&(7uHwN=mJmAeh^re5{+eQV9ol-Vv`%>hd}A75^tLJ;gnWY1VGFkw}V zs(q6%>`@>)U6JcXr)@ch zRu-2kEx^s+LG-{YqWDb3>1XfiAiYGj8Y|+2pG>+{_Re^+N_azs75uieK!z{pW`XeC zi3HwP1HIQ#AoM}A5Iiha5$2=efnQ5;V@ogx-JEjqAU=#irISC55b7@ zBkz4VWnx3$g20l;^XU`|y4bF=;Ds!baEsFEzT9!1Vs%l`o6qyIzypxrtZW#Kfw5x2K)j+@+*pTM=91y-R|XWj#Dxqo{7SpOr$D z31?EOQ}-vJi2#H2pFQM&NgT~OWx}7ZnSz7tv>QW9ee}Y1bdb}{IrMw+ zO~~&L#$V|d4CrXKrU~*Gv@_k5u?_rCsx=;+Sm%DQtDF3>l8yHI!GV#&V^2g8zTrUn z>|AmSbYEx$+88l~Z@?T$M^4UaE2oH?YF}`#m8yuZS)G>kn~g557nLvfA3Zy`gfYQm zKSgO|JVgESoxbpdA5`uH_$bQj3(H@X5bZq<5i(VlS^>Y}aOS8sq;FOp;#>ZY*K!>> z?!pJLoXq9s)kSA~mFG57uy=(-K!m7w>9ytfm?+k=N5gE@Nhb)Om)&Kd>|(3M@=EGN zFEWL{b8vDML`MCYpDapC$9P+9rIaEVV0r4>hO-;@mwJWGf7qWkMsL065Gjtx+W-9} zX(RzHBUH4v{g8Gr)0T}g=#|a(*XmHl(9?P)5Lk}%g#_^~uCrjZxzbF~T8DhVbBaWf zVE%`>e~=-oLn`CeANv(sAi35H?u?#{!LBRsJ>ocd68{r0H3 zEpCBf?e|C5!ld(d+UJxK2nT|51LB|JoIY=T7~K(KJ84p1si$rW$ zb8K<i53XLW9Pr#kvIY7a!&D^0&oRg!D~Z!2A++T|bAXD=oi@PTlRzixkTqnBjIJPes zYNkHc=+TQVP3CUw|7$uVys#C#of=ZWH~Quxz>)# z*jpDrExTEnV2oc0Ls1OJnxXQv7du-&?eL}u7T{wV(yN?BY`(>CmPw>WGA!Le8IL-I zbPu^Wse=8T&fzOR3{$&0Rw!eOrm>j&9ai(PlCk-Nwon-^CdI*;a@hYz+md=e)ZXpr5W*s8x#|Kp<{`lQK$Sa0J^J6C)YE0(2v^*u+C1xA+e>50`< zS66IH*l}TxAI7Sge_qZol5fvscs9VXIo5AOb%wfkbvP?DOOtOxC9l&#r}NuF{f2$g zFDg&kR1=ht@}V{g_;2ljQFj=qn`D$mT5{-hSOpbe^r=(Q)#Zb4{m2%JYqR^!CS zM>SS~ef}^={(5B@FN_0e?jWAit2Ch@lF}njo4_UKWR%#W*l1`3tyoI$Wzuc?{<gr>l)GTDK*27*(!6j_1HRxzD|6-nYJCA3fy?hnM|uW|5hX ziAc!4SL8xf!ica`q$ITYPTVQ>7a#yu4=f_bZgFx zB-smWy~(pZKfSJSBSX7KJyn)t?RGAYK{I;O-eNGR|ng3Mv#`Ub6Jat zj#M=~vjum$9z}z6CaO>F>%0bsU2agRulcM@O&u_oMGnt>Ituh0>!%afzZ!xuQwY)W zLju*;!B2_g6t*BU-Ny9L%=C-*fHFJ!w&q+5v6ukLtH9up?*f=lGf2ex-^q~d`2X3J zIa%^WX;m(xH8dhc2G+1j$Ql5GFIb9mkKVA=2A zuzpSAcGB+mC6V-9$4@Ks!I4OFdx`9?e47Z_w)Oad(wHvqQkxyLvbB_Bu5sghE|ZZ> zbGs=Sh>z1qW$aFxvo3Yt_4)aTpM@L?8+bt=xCT_`kZ(m5A1kSB8XB}RN% zPq~y^4Z$-s=!E8(ZBGc z*iyHf!b}(yBtf)0u{EeC+g6G*cz8t-C7m< zM8GdJSsP!f-VFo{z`eM-rI<$;oj?tx=*y*Vx02G^M-iV_DZf~6W`6g|eIQ`Arf5fj zx>PW#+0GfWbzmzIcee}z%~-rK3-_hlIcmBW0aT9@FX_!Wx_0u8 z9j(Fq_kQNS&pGii&3X9yeviJND+S~~D?1o;ZIx21>_CFPEnb^Dk8);aqntphzY(xn zwXaWp>iaDVj^kfkqArGOwq6!@?1!DM%k8QV5QY|e*mDL;iX$+W)6+Ka9Y6G!?OCJS zBDdeD)k^UIB??<(Rh%9LB-gdxkF1BBuuFZuFM9XBRD z9A1m-fEH@I&8u&M-)ebyM4c@W;fcR5R9>AKW#4%IBH^BZ)6J?BY-$;Abt0q`G)Rs# z9k2$>2kW(JZW9Fz9C4eKOA;fffZHZQ?|GT?hXk@bk^?l4p$~>!fcZ{!irPQz{`-~@ zard1O&g$u9)r|b$heoH%*t@yylteSu9-<}cB3KlDEjq>(lX|)AAZF< zS~;<_;D0B-eEqi~+1@9Km3#gg|9I>S!tfMa#S&P8*ZXyHnz*2FasWk?v@c?PMlrYaqVjIn0dbWtSi#~XUkp0Fv ze^XK>$EYW+XB`+ZnbKrO{`#c>0b!KdOH!FJri_CgxC6C%I<#B5g~`8qe7^bC%}P01 z8yc^v2Q_}+xtj$Rq?t%JK%I&lvAH%Bg!pNzC*(;GzQ_BSmVO%W{6D-6T6n ztlNAeJQUQg`s+h#wK-5SIR`ZNZ~N?fVe&M!{g^5+CWGwOTN@En5pUlv^vK_Rp^GfB z488Y_NXQK3Oea~#BV=g$U>n-ObXA_P#oe;-#A<{%xkZ!omD@#{QeEL3BC577vK++a zT3JgcJsBL2a|19k^D8{;4b9(&Kh|{*Lli%h%q&(`-|xFTT#v7-q(#PnMWSa6JNxhg zIGryYpMu6Df3>AJipX%s(0Nl^ktun-bV0C^wd`+~FPq-Qbb_k2yaLRe?{0t@oE&es z_SZE4wPi{KHbJHf?{5u<=Ol!lmv%XFfJ;3=& z)u_caNdvE6vre1jsmy=AqG)*j90SUf(E+)W11Y1W-EA4D&=kn4!yr-P zvG&N_4mn(pIxF9l&eE}r^;LyYxNDpQezY)=YCUPE?*fMUDYhXdI*QL(->8cI^V|Cj zO$UB`n$uo5U2Xn%b!UiKvX3SY$&!6cMqFjrkO}QrFSE(_mpwr;?)$YcBvsBf&|xg% zSy^@02d^?R&bBHEHj9RpuWrR>@X2hY;0tUTSd`+f!(R*Zqu6N@i|f?s^r0H#U$&z+ zDjnA4LRPK!tS_0(OYNa=3P5H)Bi&!zw)-yQ+wrLoAonQItQ>#5VLNj(g0ibG6TD=hMf6+mF;#^P-7!WJRsF1h^D zqdin*2lrUH^SY-rbufg$*ZS^bIb614X~oLZ+SBoJP|x2VK5`VTMY+b0BCCczaAP+D z9%EV2wYuNGs{xoDv(X^;H^4?#57$@ichWUS{Q&^AtfkG8x<0#j+vd>wvdnFCHizEK zDn!|ab}p3XiUY09_ELe@MqDkal;M+CdhDEAuq(U*${kd<0*-VTBYP5wh&yr=Nj%f~ z#<-2%p`+HqJ}9nD+sum#(!Cqom0fB*fRN*(AEms`0JdioScs-E_S==tr|H|H6**((JJw+lv-UHAAJcpYUOXFi zhN@fNzX`kU`JL7;sz2dhuFaEu(+)WsGFiT%zY-e-?7^l@*m9q4Z6M6xh5Ic)j6;eqPAjcsflam4L zSaPh@JPpC`F$=4duU_6nTbhf5pY?_$I`gDS@48iX?4A$N{wq5)bTn6E!SC9Ckc^Ko zf~zF+2+t-Vc%z1O&c5$#nwfk;foi8VNpTl`p5YNEscG%BV~v2$Uu7+Qc0WT}FPk-` z@X=HuywJ8+5fDvNMfvEpQfaE7vG`Z)rBgLdli#{u^odp(qM-hUJvnEv(1M4mW^-bJ z{$^*0yrfUB4&fz@6_PogHtEiC>J9V0#G51(IpUzD9_c>-U&s>BTX-7Ju{ki&ChplU zJvFP|j5)f0P%emDJ#UMBugreZB(_RNXA+2mc}UQP{u{%lsYr3IV55Si!m^faxtJ`2 zQKZ4@du|g`x>~6mjdtr-x6AB=&1OX)ccpyqSHUG+7Ul1$oHbC>O?S(y+6BOl_sr!z zuc`QzC@VlA?J+Y8 zPM){dilylpm^L2LdON8YB$dqP9UIrSGLDT$7)TVKwPj=ORO0ziiqJjS9+3Kd+H4E5 zrb~Mlp(o~w(9`ntYVX=xKJn_M0`setwbc$Zdf~R&u%B#BZ0xN$YoKf{5-;q4RE=2rB;7U|e9~mvZu>rY?0i@F z69@bd<_Pv;ssWE;0TiSQ1r607siq;!`n0% z*i<>+T=5*Z%V$~n#~XXAKsTlR5uszM|4AT=b`a_HB+S+bYsr3=9=^PMjq{lulsA^k z4V4R^QeI#Urv5y;I(rLB^zkFVY=_Prxjvr9)HgI^P_Z;Bc*^^CTnFNVIPN+Z5a%)v zK35rIbjV|uZlYv$*VIkv8)Dil#VyvJjKc^0Be3b(>KLT@14To_P|T8~ryNv%*K+8r z&9-h;wWsI<{%ZY<(Kh2^{Ed!2H*f@s3e33<(cqV90m~G+`n0TQj4s1!|IJD=w+-@OF@!2QLA%|lWHmQ3aGsU<`+R>Z=Y`BN(Z;jUtnPCUK%wmE#*=d5u{0~Vm;qo zcdoWd*zHv~tTa8cc>iE;?c(oYDKOzpM+vwa2EF$ zQH|VTt4}weQ`+CpFTWgG(ksh6ZIZOmFr0wBzwuh|Cdznh{5SC;z&N!@<5O){AKTI1 ztuS+?Uv6H0@Y21GU;S|(IWhqFxWAl+>SA^*1Su%)E|Tf>bAo4FJgm>f-z>3{mEyou zV=$ATFacmD3-y)wLk!20*TBoXP4_v*t;raho0CJ`)#d7U#dONgmYGc6e-G?6U6t3e zz_bH&!00qq67!V<78SU)TL1%K>_;$7 z015uDO-Z8Gt1}kP53`PH$a>dtTDZu$$GHSty_O~yaVaZ{Xo2eK zk0xLzW2JI$VYXEuN|W7PmE0y`a|a145B^O7+cwX_Pq6tc4YKe1>*P+O)I2K{=G zX}!D6G=69BiB0C!;IK%BB-)1@M5p(~(+ebb>>fu9aW6debgnB;y0_8B+cN$)bXLDr}Hrb*|RwDc#4= zi;aeuGIhE(+#MyP}LZkPPdHyi>!OjlG<&!oxiktjbk9jf)lh z*s(b|`cR(hG{v7m>HZ@9P*^VY(XZNJGN$#!%)4D?v@FRIJrj6dLV;%E89vWS&#%*a z`GtpaBt(L0v4SJxo9?J@I@2t7R5bbCeDxH8qX%|yQ^+}8j&gF!~Y zVD@)D#|nM!1RAq++)FjE9#2twOQC)wAg&R}DLwRWJ zC25c>jL7)~ek1IOrTUG zPIeRR%HjtC#6a`NsC}23f`Gp7yP3yH;MTYr7aqdv`^5+J1k335{_rRW7mNr~+0+g~ zqY=X|xvN@jd&d~`3l4JLPAo%-6ergpMFPqhBFvuxgXIk%sVKi79xSS?+KP709DLq1 zkg`vc?f2bieI1C`LS{=578#8;X>h9%@z*Br!fYNy-Xe@`++r>S@CjS#C;6++aErr>y!vu(x90+Z?@_3d-iXV;#HVxuq~RdayMr%0i#slSvi$ygVE`Zj#3+bWCJj zri4gva@w1Q>z;vyEj_xQyui&gPEec66x3PlT*mI4zqKQoRO+RG^q0TwluuFJcp!*na9Q`?!w_dub;7|!RU2u`1N0LLb!he7gr){epoi2*gA zUo%9DDk)9ORhUE9Y|ZRFY-^VA1$uS7-ILHFLZE2Jr*4_==jaWp%_uIY`CyIHV-|a+ zZD?v+o|JNKKB3)NLY};?Ry;z;EFWPmm*wYUc+~HsNAyN+`hrMj=wr;!26oKP_GUtr zjUATfee>_(^6sac*HAi_-CL3h0$F0Zb~cpicK5nos_K_76}lytt%4R;VS=$XSa!y+ ztj9JCjqtR+s_s{Bl3avtJh;#3AiCK+{R7~7RUW41hd>hhJhUksMUTzdg?Tj}amMU1 zSZHPWT*j@YOy}*E!0|M&v@q^Gi5J~vK)fty7-;sgKSG5XBQzyqoi=~Vr;j3j1Cx9@ zVUfAqDWYw(WT$r1g3Co~%W5uc?g*P-GJUQ7fGvBEA;@#~x@vI@qF1iA7rW^9)GlV( z{b!MBo$?Q=Otthy%-ihyVQF=AMKK(kDKabHIfMb5uI>W2d~xSWb1}xJod+_nr3~L^ zlr=!zy-@J$03h3dm$%jFhJv=7aN>7{*uo%_s}@4vhPdc(wcGbPZxW4Bv~wCgi8|qU z_lT%>ME!B~~BB zj82%P(y(}OSQN#aPk}0aAsZ(0oxv^wxGp0x(zl;A3M^dM%xp8F?wA8^(}Myhf@S9! zkX(tt$2R4z8)fPJS2E&H11?_rkre;y8Nyb|wFQ>@=S!Yu_MHz$mp9Ua$8fX;1ehm$Wqk0rPKQnkRKFm&oMH}$tl?Mqv))K zT?1FhP~4cjMA68qMcw;WLz>sF+%|kAotPdgb`WrvG_Vik6+I4r8{jf1UfJhZHVZupzj#>4(kt-4h!K?Eo&k zHh(?fq6ATiRcJO!Ur~Afx|@bRCmkMx>;@T0+%rAqM4;=bK8F@E{mb5tF8V!gpuq;ia`rNEuve5 z8%^zmyfd``H^x5bCFqe03_bTAwrVE@ZU@P-smpPd8`B%*^6XNAfK9jggGGp(^qwrM z5dpy@1buI|>glL&{Biapm03J|MYC&@IO&F&bs1aRhy;)`H8G6@T%y{d5bVNhQ30aB zWfmO$Qa?SC!-f#`dE+PP+{)H1G%Zbp+Ru<0Fn>VpjZ;VcSU`%YyI zP5=Cb;59pu!GaiaNBqr?f|~@Y(Xy~y9pHFZ1LW4pQ%%oE7pjJu%7i@j6n3HfE8)qS zRG2;?fow78M`QfI6$VhN&0Kq!YVb9+>1U+=w8L@zyThgn!0UlD966y&jFeO|Nge`Q z{3aSy#>qnW_@xrkPp6kPO~UA=tqw{Bjt>=Bi~T#^3NSAct}C8PFw4C7t+D8wwD2VD#xQG^3h$gi?iBdNkwl1E11v4z~t)H;pbR+hmG> zSp9zu+2@M{Z@}(6aESPrB^;!R)WrPa)vQsgtkTP!lRl;WUcl6aU>+dcO;@X*A!qup z9Y~^kfbk^9I)97MFWm8HIc2YCkhhPo36TtJrnD0(wt_J%i(^hjXlYz?)JHmUP z#6mwp)=n%Q?ZNR6iZUtp%ZM`Pq=|PAPlj!kF?Am@ z3Co$GqzKCi31yBVnH=vgpUWy|x^+$M55{w>eQvFlf|H)2{D7R|91wRRKM$?x^Kgb^ zb7b#^X@eHe@Oq)N!;rh|X{m%AL!TFY)8{&mJbwwkAL4On1*3D~!A3<3@5lo0V~gCF ze9PTpyD}Yn=O$sDeLoVQxAIbW85{Xu=(e$vogsE2srm85isX8aMUgp{#)H{0D14QS zLu#+ve>zusi|4k4EMV-b@8~5!uPf{4vUaF2m8(VkxOTGlN{~D6!p^SUwo6?6v%p&# zX&^uhDaf8q#=oq(Tau7fyBj+pa$!eEqAVp zPjM*{wpP_H1L8Ru8ijiUnQOP=Oo@)UxsfiZC3Pq7h|D~7wq0tdF~L`h1;bXY6ta~f zWd6(ECBw$h2iHC(IuUgKJ#rE+e<-al#*q zZosEgO3uyJ())vG0#D{%cU5tysV9Cjq?ixcr_6+TTAzZK+R}+`n4+TtxgBxFns<9O zyae6tq}>!-xlz!kF6-3q9zRq7Yv9_`lrKOcRi0@BdBgaq|DPP3dNNgI&~-sN471Qj zNraTo2!|jVv(5CK=hOUVv<*P|h|6M~(P__u54@*7=CzD0s@X2#5n18RW+vQ5C7wD+ zKk4*+Nb_vB+~9gMTKT5T{PTAGCP_~Xh@SsFNYj+&xFgc#?!=O4{>sfDV&EFzB0v(% zsc|G;m3#bzUOv=ONON=gUTwX+|AktDOJdI0@`-KW)$q)1TGf1!#Or5#D#P(20Jots zu~jEMW})lrT5nj*#^{23QWc?gse0JUP@%4<8{qve2Qr^WvUO`tn0fn^i*W@fk3z~}!{htNM(?wLH%l0iH6l`Oqv_7T}Cg@FDBml=yi#*^^XA$if#A=-XJ zS{p%vopq5qY%=*kYgcgMR@d=c)vVpi(baQZQEmD~b1!AtAIyZkr4;t+7ht{PzxQUr zU(D_2n^A{5yRq8qHfiIG4m^1O-qZ7vu5tx_VuS`(^qw(artxVd9_ZT%-Vyh3)e$N$ zd$i@41kj6Zn#yjZk@h$D!JW5l`ixqIN!-RI=$CDL(hoD(9okf7s?~S%b+%?4rmDyT zfl%Ib3##1NQ5DYE#U8VRPu$0{6ZT6!vG0gzZ@OnS^O@Zm5AVO(>~6qXyQx=Vv}L~0 zQJiqbYPn0&TH|t-x$TbTfsdX}!WYl;7a35K#}72dTHJ-70!l1;f6O^Vj(nP!7m}?1 zg^uL#J-kSU2B>4X;#{&Un|-4R2Hkvg%Y?1LNBj8y-Dti}lbKwF&-*~mm~H<2y8e2K zypzAhi=R%OFDBpgr4!oISjD%X-e#++W`z;jg;EEO({zD-lm-#_-f>2DY8U=dgSuJG zHF{ryw%JuzNZJm~<*2;g>t<`49h*OMqX4#2r~I`H$7A2Zex5n=;!-Q;)N||$- znDY=W{)L)!>Jnr)3bde!4l%E#wh1t9_b)vGgqw(H7?E(}E7VXTEh3e2o96>xLTq`s zA+^V^8&;ZSJV^>ps4KxVPL~&zX%m7&>bpn|K8HFGEL=@r(3TXxK)x@Fw6qtADmX%h z1B3MW~piFDYLZyOj$bUlYUF{KFMgw~}vCl3VZlZ#B0B-k8na4s;_Y%?r_0_ebS zarK-1R3t{*6)GSk9;kzk@b|tECzr#Wen@t5J1D#RH!U~z5}Zj@U9F=3XxsazIeCUZ z|L4}Y_5P2`<+*61=*v!yHbPPZ_I!^`C{&1j#J;5!n31e?KC%WBjO#J&a$+rW=@ys+ zj0Wnvk?}_0!{@mJ_DEJIK$5~dX9OA7fNTJkzpc-2J$ofcIQhg-W0}h2+w7UVJis3u7j`82iK!Z6F>ln9SEtW`h&to8W zbqlnUeFs6uW}N-H3TVRo*Fk-M{ABy*Skfsu za}sRM<<1P>%UFF%G;H1WJoUor^F;P{bJ|nS=H52jI||v`_}Do=U*d)rb58dYcUpOs z62m3uZ0VAq6TK7IFX$t{l@IiAj_+O^DQ$~3KZr<^3wmAr0rWIy2F%M3B_%WITxPE8 zc?rCtE}cSQOCY6VuX;x=(of8~kUDNJdE~cKsrKH=ufV>e8%o(~-@B9s&E8739d#af z1a|Osp9*P&_r#sxfNo0kt6N^PTk3W_o=y6#!>&z_7xi-A$rtBlRxGt^?E@R30%}Ij zzFxU9=s=!eHSjvnE6e&4^!iLz`K8nWkC_T$h@S$zqY8s2w^(5aTiy8WVQr8#mu;H)x@m0k(!r-kX6vg!*uC?=An3#dB%4MonnW~#T4d*+m2nighkavS zaf5mmrF;s`uFkvsFrf>glj)}33!jU+@+PFtJ^NDoW@PB-ZkB6zEZ^45{KgUA?mgk$ zVRwD!Vm9Gq(3%cCjXG|LP1eL~7r*oyTFDw{ANtHkcb5lHE~MGTv)r&DmIDNGe8IDF z+39tyf963{uP$E|-r2wu3q`uXoX|vVna=<^ul6RwLE@&tr==l_V`yUXrQz~P6S|l0Wk>`zXn1vX%msAp7zlu}i$WJt zL)PcwY~*i_@Wv^RR_UnGA8XP1X)6`q2anO%6U-*&_}1n0rB73$P4%O62CZLV@yL|I zG?=ER>&I+hXtr9zAi^P4pKT>AF38M(_jLE`A~x{=NZTKT-5eB@%GxCXp)~yD!wZXz z4sRiUT+RYF;6!7k6Mpl@aESQ%tsjDopGzk$TFhm`l&<~~XUstU4<}_j0v1&9q@u9- zTuclgjpu&XXBPZfMt>dwxj)jAFE?oVqOVigeYSkTA1`|^-%(WmEpS6j!$A@30sO?5{DbF72(%^pCOFzhJkesQmC>^ zjME7cz*Q__pdtg+LL!$F~nFg?W!i`!~_+vR()Hs&z%-*n+e(WHLzL76^>hpZhfe3?|&Te^*Sm zj&R8np1mw}tE%oK1K4mJdFHCW{fS?BlGS1fdQ<Bkw=MtL5 z%HO<)0odA)vdZo7?6m~|G;Uirg&%SPr%&E-rQNA$UAs%R35*|1kht?9zUn4X_2o$y zBoIa4OF4_?zp5^d$6i3|bc5D2w#4!sHjYz=+`WGgQ6q^Nr8#4^jHKqty9cz*H~%-0 zhr}kj_dl2~1NQj;TlrSRG}Ept0^*WINmYhu1-hb(Z{VA4YWmkK14jF0X#2o&$FMH0#22!R8B<9{H^_c-`)Y{#G zT$oMuO$4^sc&$7)>G9xDr@muGn=rs1hXS6mXuUvh=whDLh@b*?C&&(XJNXA)EmyKWTH}z%rc!|XL)MX!!m?g|o+Z^t%qJUu z=(Tr{{?QaBx>_&K&yQRR&(qUqgcOrOEhaRQs+}V^L{e4h$0alYtV~YorGl70Q80tt zRrQ!cI6X64>SvSyv8I6udmCy$onJ_C&S39s(akCs0!VNzR6_+}iMQsA;r#TGt)J<8< zJs+)A?KI`WnkO}1+joOBUiUgyd+_ozI_DTjy_yph&xrpWR&s%kgH{dfvIkk$Ax7sz zqF?kT-}1VcBfw|5772$n$l?$HgB;b%Y(e6W8`v zE-T+58t)ev#G)fcxJ0V}rgZ09=V?;$`mmNbr4o4IdA z#3_+88y%uJ9)Qe)ga+z{RXSq7gI~x)i{<xdqr8r+cJ}4$`QA;>??x?`s2}>Lzfc zo5VvrLgq$PADx|6NC;Ak@PpZo*HpXD= z8ZJ4BZ655|6=Tau1+%_vri(6q(r_ z-iaScds#6Q3I8!~q;^H{!&l8YZ|tMGh*-(Z9nAYMld5t?hE&Cb{hpFhRU4DYG;3|% zdd`KsDfd;BKAjDFV5M0)n`a>7br3YV zF}FSFD9*svXz1$b!8yrRp|QX9J(rnN6EPu9P$bV-*a4Y_KIv(QkD`G}p~eS2j^U?0 zAf`CL0~!_76^@N#0SV)WW&^eG0`qF|3y39=OX?m~TU0x~0F~x0E_QdZVt?Q&43RwhA4-+~4EAV$532kbO(c zM{6lMrzxdT8HSQhyL*Y|w&%1MD_+OIPYS-?uND+N(hZSBFg}VEyDPjjmho}LW^x7l z)*Wdz-r210Ig{pvy>_j50@Wlrk##3YF(sp7MW;y&$-g*;Vy?BkI@Q zEBR_(F`tR?_lC+5#=iJFGNuW0dz9rM%<+yZ7(*74Npf%k0wPb`F`_lNR+;6;{zxZo zhaa1^Nv|bPoTq9`t%X*fqhEzmyCzqDKOq}prjjcd&!BTtnw`JjU3Hj|{n4<`EGByn zIp8|=+R0+MrzAC_HZg#=%mCerHH>WX0B-ZJ%au51tF6+e1!k);D)N&JhOE=`9a9Cx8|@r!xP+@=0pizg8&)zdV%7YO-9Pwqoh&~MVtpG=ZyzFZ zZxR>QMy6V{sMM=v6f9kA&#sY0=-3xrN!Y+{ioVjI#T(hnmtD;sa2l1ksv*x9X&n&q zX1eKvTy_VH_!l=3IJPoNkW#1JZ|LRQWo~!Jwflrg{eh24@zN`}mMS||@K@Hp^r8@o z+e3qPuw27F%u-(#?j?9j7MtaZ@*mMPP&3qAb8wf!P4tWrntm;y9Q^OX$r%@~!I2?# zh1W6!ajcy-uL^i$^Rj%v#s}q1Vc+$JSmJP+USc7!P1B74v}g@^>SwaEq#v!l)+Huv z)$JJFI*Byt_YKVoQ0Vd1WA738EYp0(ay+HCr@&eY+7_!``Z`C0vbvCYxbP#xqGX;s za!RKm@C4_O--TMXQs(SjUmKg6u07t!ZiVB5Bb~tz?sMO(k0#{3=fF)(s2mdb>N6r* z7X>LI9Y3k}5zsp!65fK^HLe@U0-YZ>2l{1R9 zYU=-L@2$h4-rl}ZMKBNqL_k175mXRRVdzv!kYn0?>W!>JL|gF`mVU^b4P?ChAUrU6SeZiZc@!a zh1wf`c!JZz4c`14bGx5KB6p%LDWpWgO)UA4XKl7-J4U`%GACR2(l+jeM-w7w0K~N9 zNca`qZVVsmjT~&b*RplQ=@9W7RrEuJTkvt@bO|;&f8{iM2Ning1^b+XiA)^ua~!>! zqkHRJA%*_On~C;f>joS(5|7hYNf)HCT-#fDS|C?->TuvbuX2utt^-IOzG2SfG08Xh zTz27QYQO8FdR!&r#f*>WbI$P30y%2bNc_>b`Eer8wiT)(aggo83Fm#S8NGk+y~BXb z;z52Cxy5Q#@@Q?8n0R}o#J2xF-`pPY3hnOlh;QO!G?T;q^kIIJz9ySOWZ^{e5W zwh7w%sVR17eQ)#dQCY^47@Ky!|EYqgDpS3!tc+b#hpt9}vP8rHZSedJF)_rBwBfow zGXR%x8y*bf^UfvP_z{Ut&|G*c? zRcoL%7jw=wkFvzgKqvMrlr^Zi#E_lG2_a)lvdpx(Ka~`>+TIxIDAlHp)$w|MV zC<~YDp=fFJzRKLj6m$A3^ce-g>l^i3QRp*?7wVrWDj<)NQ7G$A&hk764yFq)yg(G2 z>&gqXNAE>V624mNvkLmk!T1deX-29~AP{$@s3Lc zblzDuKQ1()_1!*Iuu!+@)_V5p(Lz8>aG&fZ8$lM$gLw7y;qlX@3w* zwpB1an#28iu;rqE+m`lxp;eu;S7y)h0gl^ZEv=G`HT(T{qp;}6ii%2!f&(Lf#q%SnBBZM?^y(uk=)i zpO!X8(5`H9{?L4rqa@{-nq9OMr%- z*APQRsQu>u*+2;SiTnZ76R|L;$e3_7GUsJ)HvPXY0e08|3M(pVV(c!}X|ext{w@{l zqY|C<75K}n*|e8kp~(ScI`6rzn}LATkHK0O=rq&r)6KyVGVCD7(t6plFluP12&5*yleK!EzoA0EhIN?Wpf*P39UnJoifO>|T ztY;7_RRh#>sAu^9D3z5nR+3`J$w{dl6FxP(NH8j66eohwoz@42Q{Q>>e~ZdQq^#}s zhiF<=4}3vUj-+eg@U>cBC6zGa3izbo*whx{`X^s-9Gq;qjF;67ETF!fef#_Ha{yqfE>YUm3_`HgreCpD_`?7?&kd& zUDIO2b``Y6q%!6?&(3~{L?TKKLJ;A5ZN>tYrozCpQR#KeHiD3Ol*@iX1`pUh|3XK{ zk}A){1ZAycr&eXiT>BQpcplS&%jU4)tgszgy^HY+Qam@2e%> zY{E1ZdMK`F)2HOu{EDZ+X58w#M6|Baa;tHsQA{_|Ec#lp&-(FJ{q@YKL#H2)aK?lFY*rLtDEaCcR8F$g4-HZ+fXE0))t`b&GdTNB=i<- z#<9C}FRvq;3NrSG)!{wpFxIZL<EzhfD1|4v(-7_Y9ax(L0 zJncX*ed?JlzYc`AT6}kRY8?!gn&GP5|6)8_ZB7Hu7o~^ajCtZGRdSC-(y-(Yuf?#s zGvf{*XP(Li|H8#);|R|@Zb3=Wv0A{7{JC56L}|}x^X=}#pD0SiZWU8h8}=uEkM3uq z&nSy|?sd--K?6PBuO+Q5g7np6=}U+}1#L9>s-UypS=h$@*L0o9Mg9%jsl5%G)aK@% zB>`3MxlTD*+tx3a5uz&wl9IN8YH~)pKjUQ))sy_bhj%GqXp_6}@%U6fO17TO0TJJ- zsr+fYU2X@4_QItP3UyQtd2d36tUhO)u+b_AVf@B)eC2yc3-mA<>;3W{);z(Crq*3a zjTeyBT@?Xdi3ny!G6IoxjN}GASfe4kNO0|3zrOtXV_4^O?vD22wWDN4e(8*6`Sq+> zbT`WfQ`a1{LS*RoCdDD|{rKi;QNyQ2Pr3>Z!{}mp^jFWEL3#afZXNQJc`j{_9Wl7W zeOXpnBj{PHX=d1Pg~LeqYxp?=h>ClkBN!g^ut5pqUqt`0F02Cfs! zDlcEYaPwiEm_h%lxP#pL9wOII-+(h>-B)IZ`dCkHHlw zdmI zG%C?1LKo?NcM4(3vCJn?K&Z{>F&*h!=-3`}^AR!Js-cU7RJhNP2wkKb?^1|0;e*b< zt>`f)>09X7u5$4a*`sRZPdvc`E4TTtF?B7U`qDd*%4q@bV0mPjJp1J4cA zf`yVfNkP;cm%N;@fbqG+@SYLg=gYkzd(@6lKL>450}4Vtc;)nQEXWP15mK#cH+mrW z2ia(n&TfDpcOrk>7Y;t;ROwgLTtVT>FqICKNnNX{rO7oQ>X|9Iv%aQUxbliAEH+_) zU2FMxg!wIJD*4R0zPFTnyv^is?PAGR@Bv|h}D zREdN~XIqyQVOWfWfxv9VZ63*AA5*>^fl$e*Gen-`!nFwy)?IqH8I8nS{o=1` z{l0XRpXW?w*)cF>2om$0$sgdb*3!0mi(Ma^Kk&(TRjKP_#&W_6TRE5ttb!A-n<_oM z7ZjP=?YTZyJ$T1@K4)dwwLj zU+0rDS!Cr!-yP+$@eG}ZR0%25QiI6QY0Zi+mzBr2w5QrGWZg@uO`|hBcl}>Hqyf56LY2<1begBqv7T&67O6O#M^J|qH=A{#bA>I1jPhC7BSY>8twVj49#9v z-LfPoI>o)g~GM-RZdB`EBPB$liwYYIdF?SW9 zbU~<(uW#?qbqAPt_vapOa{a+{z-suWo(K@~#ZTu+OqlD(a+w(zuoR2Z-L-G*iv7m# zmmD4mo1yoQm~({dXpr%PmAR(ok>8R=jm&l<#Cx1}=jHHBNzX05XTeV-YS!AyzI;`g zF+nk>liWg@@S-wPZV({N>>$D3pSpoIx8=t2so)|crFp7*7I$E-pPWt zi!zXwu{|zr3fOGdRQZw)iB2*E4YYEPuSq}a(pdR}EZrqB49{(+8%8%)7h}59 z;U8@oOE&AhGBGV?OCaFU?T8}l?{Z52!Byi3IWW)-gY8@3EK7k$gHRAMgOv_B&K55~ zpcsC)NSrYGa^f8L%Ok5OGY>4sPSP)y5U7oVsJN~aFG@jF28#rUP~n59d@sVHTq&xnknsb8aJpD+Uh7=nw46w!Ei9Q<{bBJlhIRKyqS)lCd61eVy^ zrT^bi0le(M*VlC-)qU4-Rl#?+yKPv@e`xIy-MQ~6*QAZ!&hBwpeBF@6A-KD|W62cc z&Wu4ym>q388zHlqSb~_%R*p8}E26*eP4^p+InZdw*;l>u3bd*Iynf#I=*a>3{Cdy5 z<{_trQL+jW!23ZQ0PU+5B8SRPy#h+2?oC7~PcCN$RRqxuxdpWWeW%HydQmLLn1%D| z)$4h6N$28U-U=SL0>rgnQs#Rek>EDd%8b_&6hK}i@4X}c{#Ns;%PHjdX9x3wz9nN; z8nP^`ys5~}+cwhfPy1M+ zpF)XB@wrTQ?u>4@+GNS*!Azu7UR@(*B!??9GFsWuTzs0;%&_#hO7%lXb*$kGF|Nb^fl%EZa~%;+ zDRCyX==dq{=3KvS5??n)fT8E;h4XxGe#)H;74({KCUSgGrOcn%xBL|mz11r?ak$LgI8FYGy~u1dQTWde>zR$ z6E0|=AkSuYaGoJ=?3oCQqS%>7va@-9TBK}_w+LcPsK7f*W+>(+) zBcKkeW?UIN>kJw=J_WkPi5b38x0pL#g|jOaEtMBpCd>Qug}t8@Pro4*KD5WjtQu=A z*C8((O*ny*VimqaPAEWtZT+x?U8uq4W`GPiux_;jnuv6y4tNf@3~F}b`mhVMogVHw zggp{YkDx&sT}`tS8wnoRtKJcgBhLt(ik=|TIQJA)M3*FpFY6PSQRpR9(PfmOg`_mq zoE`}VBqfub&Jq!hKcR1ul4-_EfbDCKW27Tu>fHcZsA@Jlp5yfcV6Q(8auOv%hzt-i zxh02Kxd{=9W#}d56$4&>w`W(7?5`;xLJysYgeFaJLWJ%p4Xs>)2*uDv5+el6eYdEq zIQG|afY8;uPK-oWBo7f1e1KR5lj*mApd~C2bBv@7a09mtF68Ccq!1x?r!zzdSwMt@ zG=>Ul!LDyw$~`6A?0_P0q6xgssM8}*3lc?ALWMmaM2O`cJW*@1htllUj|~thM&t-i zDwnxquxkuVxs@nAN^lzg>Ww4nQR$uv4P6~1Y#m7L_zwIPH!;{(3sFgsBoejc3zoYm z?k(o=*H9u|Z5&e}CVfrX`+jY$6c;Y$tX_}*bUVo6`>?ZY{M8Wo`z>W`p}Rxj09BYx zChI%BxwwR*T=RYCMYVo4(I^d{6x`i;4zH1uf?r%|u!N%^{XF1$^P*nx!r%d(?n+z*6@&F0+tFDw zHtyHP$T4q|xgnpF*r)g2^JYD6cYD$jfuR4C2q_JJ z;R{*uj9qis+x)l!kGd}Y=W60X1N_3Q9s7xtIv5Q;mo*N0O#k!o<=1uC2>MN%EM<8Y zoQ~Z4*jGlmfSJrGP#f0hOGzTQ9#B#3BJeY9zfPO&_3@x>8rJ6LI>&RGIPhq^Hr4m> zcJ+69cHP6F!gB-H76j*?{~Zg!@}9#5mGH7WS5rmEX8orC6Mk*7nK9l3>A|8`)E>pd zclmRo`p4EvAYcbSSrdyN|NWN}B2-=DJBg_4QWqWFoMh{z?N*0+jQ^ei@36BH@WRd( z6h4K32UMQDLCw06o9cnnb5?#s4Q6~&&)La3;oyPgQr51?DRR-VS2a6f1KBL|Sqk4t zxJSHm_|%qiA`Q>Ycg!i#eNT{Al{Us)R^`sdcSl0Llf0pw=nPj(=7#kF%za81mTmMP zOp&*@f~QmBy$}?c_uthE`cD?rElOpe`zLj-Ue&KCve0S`G_}ILSbq_uKWWsDvN$`h z^Y}eCLkpV3n9J%rQXMz6so%?VN17&*rha#K`(yU{OBeo><%Jf?*fTt3 zHWObcUxtVF*F|uB7@c#1VT>M(+YVv%o?tp(gz9;U*Z~(B@||oq7a;?1d=~(gB^=Im z3q{GcUKr&dn&tk^&ylp?cEKuBe*va3ZzSi-<)yZ=WsJ|W}5T$fl| zNX?E_5T02wjj?V?SAUD0*Q+Lb&6NrJ`oUbWg&Z^8ypU$&{rrf?=FF_wi@ZbbJrd0m z30S}0kjP-nhz2FzWI&`chb*lWTK{y zvgZ)RUn9GfFrd&^Znw#_`WBq$S^j7`w zhxp%o6i?RBJ$jMG+xs!isFb@jk}JD6n=By+e?_-Mr?_3Pq4AoC)DbXUhuju&0S_|| zbkYjC23|1g%lj-MrlunX(qe{BmFWatl12HCIW#j~$g&4kXE*>C`WjDE3e`NvG&SDv z$Xo^RVK1;;T03CHGmoF=()69QRLVRVJY(Hk`)+zhlC{E=t=LNr7^0bhp+Yf9ku7m> z+_UQBUjIw*nm3^d;*7fM2%ueHS$M;U*&r7n8|3iy!vm@65=59uPKDvQxUf^(JKSP? zWBbbr)XcODnK1E)>_bHr`!i-d&!;=)WqDl}7UWq(=ssRMlzv!4Q=eGp3iqm173}}h zr5O#7p_Zdh{}yS2Y%@Jp-n`2IzixC-;^zD5uXuXoLljN@xerAO!H6D>ub0<19!%|> zuc4{Rvh*Egi@ir%JDgD#3)k)lO^PdHl3m#2MK+JO>+ve`c1C!s&-IjtS9)?HhR-ET zhv{RtlY)`4K%os2s3KAeM)y4Q)nU6+n@_rPnmZ1QhQ*j=Z7cdSthJgd$y*q6)8n={ z$;|+Z?)+d;hwOMePItQkEf#M4F@||7PIjS+*T$;lvvzaT4GkPVQRC}NdAB>i-nJQ6 zD^nxWGlzba0M_Uu^Zq%ZiIf%;&`(wn!O)K8#0smr*5X?2g@XoMH2d9VyU)FR^%62i zy%cOG?|j@%!FNwH7CNn-fp8fRsR4-%7FpX-d~IKQaAN;vxk#8%v8+1$=3VMIa;gkr z{`=Ip*6ws+BA%x$5)+1cCc8sPOlq4+by;DMwutCVU3f$Ww)mR0i*pscJ%sxrCFQA}kIw?!>Y+*JB)u@z0j zsUPvO24b%|cRi9gLZ5$6-mTU$$e<+cOqb{rf<^7o}K_JpKwp^F~8cM|DJMq^9C4aU(1*RRLf597aPi|HoPA$#H-rjz;1E%tx_94VjAW+_g{oJbPgvEwRGG>{p^g-3tp zw5Z0J5IZZNnR=b4c7&RqhJGGAN2uQ92Y|oGp2?i~vl~Z$^&Al+6Y99)b?(2Y{8R1w z-?uL^Ib;PTFBvqt=hNZbH_Md&cy@i>rr4c@vY+j_y3NQMr5L@_AjzUO2?+*5jcP>2 ziTGod=p9ki%(KgxAM;rCo}YwI&EUL;53leW!|PtC2u?<`EG;D+&^T6r3(@j@kecwW zI93H{2M;6%6eA?7Q+G}-gw?6&VXO~h?V6({^-Ee9R4=rtnUt!Ha`{cVlakAPiUg`K zrsoMiAq)P*M50D%cFolbk;m%&t#dFE*$@AfP9x^B^K!?a#RiY;Li3(?8*~0f!8=ea z3>Vy$f~&G5<>XNMvv#hhPG>Z;wwV+U`R)j2%KArcgzVT?RSk0z+ zw~5}?4@SDA*U3h$5)I4=2+% zmp(Vg-qv8IO1dN6l6X0ReCkJv`3(Pj&(rHqEzWASB~ysGa@}=nq3=wbv@F@ND)-9! zx$ZTSsoEruEJF_HNn7s~)FsS+`S;Lc0BDIJIk|gXP_NH$ep&oc0T*^CWdUHJxvG*d zjOJDpGUKLUCPqz)$GsEBpS5(4vlwSpuKeuT?C%OCx}{rR3d(3u_S@ypok=YPrB#%a zI~)O6F|QX`0DV?6s^JAv)a0C{WbG1X3zv1bvA-@*`TMP4>Rim+<>; z2-&&r(XB9p)c2cJ;aOX8N8(@D(@)qOtejvP-xF;z%wOLv)i~hBBY(!)g+E+hh!1S0 zzL?y2;u^An?RihJnN!}d|AT8BsT-!_2ZGz2a6ZP2L9|fz*O|}_&$+t@iCKB$YG-%_ zqBiL_`&Q9YXPfxjCmopNgSks%;Z0MOUqY!r0v4 zb3tCNl0s?>e5P;^ne=29H8tdBfn3E@ET?+~{}9%6!22H@VVB+g##ElJ|LzFosO^X! zcaKFH8?4ltO-|Bn{P=YBRKX(XSk2$RsFm~#zTvlba@QIsB`IoE3H-zdA%+f;LHfAX zKZy0$?19*cc-{Cqs&GwOy06!A;cnQ@5?;J-2{)PA;82~c$ad4-q~m<60WKG9`>cKnonm>s(Cgc~Qh5h#Ev4 zzz#OW{mK>=OLI{Emz!d+jd8_AV^*A#+fPUG#`=dIvA}Efk5eWb)SPTJ%!3CHp%HUm z%HnCfIYJgklV6^!^8~%C7959el;8Yy0cakXw+c@aQA#vP)XtjWqHm;BIF!Lobl@#9 zJriWerPFV2u!l`=IanutMTz}NVO@|ySf*k`$?ONtMr2!dBZgcyikmlg>kFm_!YO-8 zO)Tt2Ty$WjNy*qfA-%8M>8(X3>WMYU)uKVI!dCYTsrvp{3R~Vbt|@#9D{)Y98C_Xt zh~!b>Dw<)IZtTr7kq?_4_$J}dciMe@hC*%QAdC%HsZH%Y`CxGNgFXwTGq3(}9W8}oJ#r0WDQ2_q#1h@R|;ZKpevid8n7Y*?P#1>`IE?oxGc?weQRDwcY2 zx5*#GDXi-{z|o!St{fpXt6cWj-AGvRy?X%glXoUX4i8AJt*^s^fBtAaDc1VzX)ef3 zK!%BG5Yd?@l#gegENG0wNK@jnv>sKovc4)a?za`sVk=wLD^1=&r7ig8XcZ=tbf?4W zlFD84P!9~IoBbRHc`O?@n&V*aN)O${48|D)k?D86ir2Tt#r&uG%Dlc7l6@cV*E@9> z{=nVe+Q%2pCm1cnDiyilUGaGr>~mid4IL3q(?;)TLyf#(N&5aCLMkI%9S&N}E!*KF z{a0V^s_EwrB9C?ocn+!aA@Cw0LlsMCCVY}6QKK?*_|$hj)>IW8t(%=sO~+52l7;Lq z!F{{2DB`00F5`M5C9rz?*q@Ge4CVU~Bg2@R3~2**ow$wUf+#Z=NH=Yan-GN?_%l(dDAPswuc5@K{58QMh`L6$S9BAaH3Lw}{MdS?_utDVMg@w70SONd zf7@C_#sujn9w#+|Y%nv&QX)Rfn~=9S@Uliw4KM;0VGfo5Of>@GNf30Gc;dgP{F52| z*S`EOy)S_}RAw!7-_nym6^ps7zI0C#doD&&3Y7^w;5bI;YZ}mC?+qR(`6`y2u zkY#*{D8oqu>OsyTEvi74E`4=f+x0;%N!K>cwO)R6*XJX>-B`3uSMO3wCgTC(D&pwZ zlvUnXsVVk>pX~F{9Z)=1$KTbZ2%4KV7$K`S?zZ*{!u;?4tlpj$vuY)+K3l ztKwJM&FIE{J<8_s%x_u9A@BLzHH$M{7+OoW9n^yyk^C$-AUN{GnYoEDKrIz^_*jT< z;RBjh|4e{$8+UpO=-EuS4;#~q0OuQ?MLhM6zE5sAxBC-s1UI1coyM(UC~jYd#v2Or#fk4I-X5%B?f`2 znKDO|9;(Awq!e)qu0s8xp`p=9Nm#Fg?=Ek+N4?%NjxjZ{+U_jSS+r5l>bDGd%q}d$ ztj6YhVtH{09Uv1@f3FqeA%ues_R`#t2zd4_lGG`F6 zc{(7Q$IZL2kg=X`d?hoMV$YNsX;ft~ej5%%{Gp#8lcayiZu_nYTWNMCUl^;<3DZf{ zQAm@KeBQQW5@ml19GLc{_Ed%!6ApO*(^A$ze@~x+O%2AAT-{Zde zpf|o&NZSBYIRjznA;!@+FzhMrG5f{zlI%h;9j@1FU#p0Il5!vp)LU>l$$jr(025Vw zE}j1+t?ri%CH6rCNN}bhl>r>sbbP4&G)VgUPasBcZ_gU2|Zs9d94^8 zF#H`00LNvOUq)^8q z@`mX^WGtk{b1J9S7@t|uR8YqO!}m)Uuh$!_j|+#N_jIafh+Q9U8$MYOJxzIM+=kM2 zf11~AOeA(ItsJt*R&U5nauAZJ^&!rMmjLSWIXmqPA9f{5P*l-p)Z{|GP*P zn)-}p+J^`7plpgX2R9M4I-VDB4%@0&3wYH78sA&~B^>*L>WUXE!&{rKEza0NEUf2q9luBw15lMs@phPJaOJqB8}Sm}vR*Ev zIDo0&HKfvw*oD8PtLO7Ym$2q(JOF^Vn8)Sj)e{fnY2vse0;U*1Y5e_=>%?4Ol`=V` z1qzW#wfd%ZiCK>i^`logbQ}GdWT*c~uZx|@%IGt721mJCiq>qY8xNr*S3;XAxaxN9 zi?(W|nw$0df6)pv+}vYn52-0I`EQnhs6a-4rKWM@HShe2KFWwd?YiC&&boAZvj6N+ z^M=4|YWXemYkjf7YcoGm>`sNFcRB{eP={vRrIY*VVbm~(z6V3Q{c{)iO|B~DccpLk z$3|4%xMjx#^K?n^8*sbYfGZ5J1iC1yuR4o}_t){6OwP#yg+SzUH=P|bvSQE0b1=4@ zNCBIz0oYcAzp9tZ;{5OTm3xA@DO;P|$Pr=W=G}T`V)l)LOL?aWLlCTs@8!c z5dme;+K1)lK#i<_%A;}+gugHvR!(v}6KK?8k?$J*IRbd+B0#LmX2@;LG)N&wbqmfB zDMhUm3krU9#g~&G&jf?S!rne5Mu-Lw`k<+qRR%$wEm!AG5Uxn65+amWe*SnS7$o-e zjXW_z05RIka?;F&lzY_I3v&ob4*D+y-{^ae^?jfeP>+(aT!u$Eth#S!~95TUm@ zyQ*1z4IC}%S5Fork#CCu-`2ce&K&p{teY$D6*DnHV7AR|nyvuoXi-D;Swv#Blz>;< zwwco4c;I6&hzm$%!et-FLKo@f?XEwrL4>-Bv*-v{RP@MKLeW5+ej% zq*%?a5a^Den$xmqi4X$kpSyn3;7s6EXhknxgcA8QEOe1_oVs59TksuPk)#1-U=`TN zvB;3K#0Wtbsq#(NYbXRJPwMhK5ltx`^!UK}XzR*NNJDlwv7&JQJMD0wfE%JckHhjz z5b0l>(Q;NHDHsK0f2ZSt({@@T?|8B~P4sBbo#87JCg4i`cT;3CPZb0n`Y{d7JGohD z!2N1#%NB2}b-_2|%H;(727iVp4$>YkgUt2Fq*fwFS$0|k_NNr+{VE>o@M&y&xEjxY zQ0!X=qMSOkdzE=SN`HhebMYHy+SArKsZ83w45$Kkew4GlmXPZO?2*PZ)vL{}0R(32 zb!yxTmHwRmo~f7WO1Gq2Vx(NEM0%uro~buW*3qaF;!r*_2Dy3h$yy+&9#Ya_Dd=X%-y|SUjAQ@GWuARP$dg<;aKG&u;FJ zgqfBM-mt4%x3$|uu4btvhUt87W6L%QG>ScP7q^r4Gy?h(A4eANJL$|X{6>AIGyE~$ zV@bkQB>M*tOtSCeqjUMD90OJX2MQxVW<`|kP->B8{|{tX87lO5bIK$Q1N@dE{S~_;KA>0gQw7JI$yCl)QkKf@R*L*0$#CZ|7w{6w*nYNk!J*0by zW2C)*7Os`C#10i%`uY)NeaEp$-oi5k)in2NJpOUOt~z z?pb>_s;Gktd!hE|)|l0(_#s>|-RbgK)z{re-9FV-`e#&3&j z&2?pHmi}NYo|(0d#BILd2!Yj(y9pY}uT5(p{H4Q8*U(<9OJyezxHoGJk2k9Kl**ME zn$0UOI-F47bwUH@t@C1Kc%l?GZ!ZEjJ9m217NI@Yo!&bnea_}!i35cTWlQ+=`AQ#P zl_g^jvQ887Y$dzn(WC`QH}&)U1nT;_&3w`cc-1NTgNPvlhi23;lzn~lG+vLs8jCA%BKO;}6DZzX--PdSImC>Y_-!8#TRw>2`qRi(h?BLg zEItfhcIZ)|#^orE9qa+N>wi**SUnWPCu`Y-gfVv*6Ji_Z{`Bz~tw=30hhfw9_G#o7 zD#Q4$y);Z%PqjOls$s=vnx&=f;>@L%XzfY*qn!5I16A>B8<9?eGNts(+`xA(Cbq7+ zerX`CJw(#uvhvQ*x!eBLxGy8J)1pPdU*QT2$FET}HY;Nky*$QBXHV74id0VgWe~Mf zC4PKbx7-^)*4nfEvvAj<>A2+KR!`N*0yh)p)bVrijxWhV^&!V{tjkC4|G?z_62j~- zvUvLXK7MUEmvMXVCKt2ip8C0vP*nb&RYF+h^n0l!KL4cJOC5biEvL1^0${+U(9qC; z))@W>f$3_ko+_VXNZh#A-a=8e4=anyNDCSd6!dYExYSR@*2QkXG+z|v>trnOS2Pi7 zkJ#K??Ofs4olC&_cQIh4&?gky*z&f;*OKVd9nbX!v|lJA3JW2`t; zQqQ~K4Dp6w`CKTbr6xv$h7e+UJ@h9ibN4S$rZRoHLpQiL&G~-V{LpsPGNM}AI8_$KW{H(@G77G2!Z*p^e7CBW|>4<@M)-Z0PW??(DOgWuvJ!Z>on} zXWyIsnq(Pg#xErHv{N{QdR)rhTc7TjPW>6aJdRuqnS3>1LL0?>Z%7b0x_2{naihbhm%)~-a4KcUjl$;mgRgmEZW<&-Fx5^ceJV{z0!A3YF-~e3r zMPU~)_aZQ4ZUYNT?ASW08!p~z_@)-fqPTj}kdaP*UJ#`|dBc>TJf;4B^l;i@0j-m zSy)pE!ecMqvhO$3R_qKB|WNhS=pZ&UhoUv5G(xTx6_ zKh_8r6+i|pif{I)Ix$OUzLd9C+9h52>9p1)lZC^cFSeb*YCoq{?PvDC0@N_tGkjSZ z&#B%PPiHea+z`=DHv9E!V=5wUbL~UJ{Yriqf2G8-WCM?^Y&(Tu*$vjWaKpxpzU*}d zo${|CJtMIt+W$5p>%YaBdD}QO7rM>QrxlqUvDEMGY-ioo58*Qj)0JV8hF_1@6X;*i zc;HiQfQ;D}-Dt^LTElPlnjbXIb;O)bsHC>=(<{>V6OcJ{YP!65MtXU6@vwT3Zekfb zJD@KKzC^TcQKxTXPUos#)Dd#IEf~$cd@EeK^$UXfqmq*5U43qq$81~lK|xnENWLND z&&1seph(e(y7K6TiugCKLcO>P?>QARe!NdVeL;&NH0=GcD_76o{c`@TOca-(Yg;HD zarO1-YeruV5|7$yW~!HWe8<-N1uXrr=dn++;0a7mFyB7BTiaUEz)!omEjd5i@=x%5 zu6|;id%mj}bMBIQ2ZJU5hod~EEj|iOKTy%7uEuCJy337Iz%Y>Vz*T4}N6l2(C0x4> zMdwDIm2SRz1HfDH>mGI7belR2YZ-|c)%jVuUluHCO10R{pIqL6<1G@c>z#b{^uYOg zU2a3feVT4^Ta|~GtM8a648bx90>eKf7=<3ElarGm3(qE7@ukHsb`_$ zjhk+b%a|T;XhZJ(q>b&suG_7r8Mo*T-WlUwT(nqHY5$>{@NwN$Qdqr?az6RY0SO%Q z;Ks})|1hbH+Vy@OmzJ9|MF@ZUh!@>i7H`DXGrt!iM7JpukV}JGRhQ>`iWAol(^{-; zMD1T_6**t1nNWpgYv0q&OH5>)j!omSCiistSh!|CVAjfx2U@GQzx@c27HRJv2R=Vv zKZaJ!eTr|NT%8w8_YBrYCJNk-p8B~;yR)OC>29CMjrZ4UQQYc48XFpTznCjJVQSq{ zt4}%Cr4`uf_Xt5(-*AoR(|A8A#yrZlYrc-n?PP(0Xoa%U{oYP2ZRGn{`yhRu_=EmA zIat;dTFa!2#Dpg+&v5bv?O5BHaZF4c-b!Ow0U?ILhR5&gGIV3I_4XR4hsb?1tW}j> z@4DGMY0I-5a=)b}ZdM0MaJ$*H3Qybgtn(H-y1tHCMho1}S)MT`vEV5_*o=3yq(=5S z{_YWlVe!S)5|SlW>oc(zYE!S)6>%O8o-tF|Kd(iIo3pQ^lGy^t$Uyz3zY5Hk++I~f zpStRaVe#FU*|5OL(1D}hqZ;Xc-IT9;{d;$ni)}kDxFpuzeqfTw$_)xVh}K=atxDG% zsfoXVF2;FQ_dO%EemFxf=D6@mOxAXzLp}uc8fR&+{@3sdAu- z-)%jCqxt-ylfzhJpXtxv6@(Zsz^DUBcR08T!z63?SiOjPJwiFE>NPpwKv86a%!k1Qd z($#*6!p46i?h9op@T3kYe3v0)j5051@`2|?!s&Ho37=;X=1b6klZr5M3d2#FJemiS zb+&nCL)I?fk|y^6-r#Jp%v5hOe1S`yiYjuC?}KmNR~N+X+B&s_s;owHh8XtJ2RHa< zj`}`?v-j-=l^g|8GVS=d)CgCWr5yR{25Rf!8jktPKO@7*-F+GRjIS@8@m}v?#gIqO zK6+I}6*~YXH*dKMA1=!YV#pPiw8`T@w%i>3)-KHKBZ{D{zAb&1IVA#@$7&~twDMS# zLMe}akt%M8m0bdO%GTjXIgvtD*T0jLk`?d^V^YJqP5JZH7ixkA-lG|9Za;a$XE{Ca zOaDE)kf={i;&p#Kdml~Dx!8j@R{#uZ+E|y8d``8Pf2+9ifvKemHS%djU+0y_AK!N0 z*=+DO-&oIy)ahY&@Bi_z#O^ni*SoG~;wf`)=2Q`R(tb`C#uB}Y9`~ogf%5+z4yl8m zK{cc5$5bMxWfxA6I1?#Zq(MSvd)6#(Ncv*0_Pxr|%HYoh*>G8@6PCVN>QqUEVQt}{ zD%c->^SzjYxjGxW@Tq}fQ6qX z)~Y3{bhh2Qw%L^BKhhWbP$upq0^jz~C1SG#3ybP)>ZAE_xDu)lY6_VYoMH`O-wHg# zNTe>)btjV2lLd6j-bnn&8=G0Z8YOCU=~Dkd$?!{8J57FPP%KifOUHYFL=;tTQvR0j z=+U|ZS@csMn!RqVu^|Ef_e?z-xBCqPZMWMlhIvXi$B(07vOS0Tl-pmMm{fidP;wp04K=Yk{DjzQ{Zb#RC6k8F8 zAEB>D)L|LzHZgWf`{aW|#pua2y5{DppSG$Krz7r}+UJc^;bf6PDYZ%so*=2}_OCmF z|5VjZv#*4Z4}g01u&AxIp7_uFR*&1=Gumxr6>Suv#tazKLk`MNaZ)*oQ_dDWSqgCZ zBq?n5{=S*lkBoL5fjAdB*B2D(hoXM51q_VvJ~o7^}Z*f#tj6HHX_`N$#Tu#n~5+ z-zP1oK1uk11NP2bFr>!$z1Mjq(+Mn)(CKYqFWs-(~JRNN0pw(KM-1A)Q(W`yt5rKT@aN~?}Kc@ zF(Z(>NwPm7#~3QMdDka{Fqetc2&#H{#WTar6lmUfV{dN4tSLN5XLcJe$#iA_pI3Q0 z(V9Rx2bm8LGD4k{J^J^Q1Y`dET4 Date: Fri, 21 Jul 2023 10:35:06 +0100 Subject: [PATCH 2/2] Adding SDK methods --- site/global-guides/voice/inAppGuide.mdx | 125 +++++++++++++++++++++++- 1 file changed, 124 insertions(+), 1 deletion(-) diff --git a/site/global-guides/voice/inAppGuide.mdx b/site/global-guides/voice/inAppGuide.mdx index 36913b117..7d1a8024c 100644 --- a/site/global-guides/voice/inAppGuide.mdx +++ b/site/global-guides/voice/inAppGuide.mdx @@ -134,4 +134,127 @@ The following table indicates the browsers and versions supported by the Bandwid Getting started with Bandwidth’s In-App Calling SDKs is simple with sample applications to assist in the learning process. -We will be publishing sample applications soon, please contact your Account Manager for help if required. \ No newline at end of file +We will be publishing sample applications soon, please contact your Account Manager for help if required. + +## In-App Calling SDK + +The key SDK functions are described in terms of the Javascript webrtc-browser SDK. Similar usage patterns show up in the Android and IOS client SDKs. + +There are two important classes in the WebRTC Client SDK - The User Agent (UA) and the Session. The UA is used to encapsulate the data and behaviors associated with the client itself, and the Session encapsulates actual in progress calls. A real world model would be the phone (UA) and calls made by the phone (Session). + +Initialization and management of the client, and the initiation of calls is managed by the UA, and once a call is in progress it can be altered by changes to the Session. + +### Client Initialization + +There are a number of key initialization steps that are required in the web client before the client is capable of placing calls. This ensures that: + ++ The Client is appropriately configured, and capable of connecting to the WebRTC Gateway. ++ The account security token has been made available to the SDK to ensure that all calls will be associated with the correct account. ++ The events that will happen on active calls, and with the websocket connection can be appropriately intercepted by the client and handled. ++ The connection with the WebRTC Gateway can be established and removed. + +This is done by making changes to an instance of the UA with some of the methods described below. + +Once all of the above initialization steps have been completed, the client is in a position to place calls to the Bandwidth Network via the WebRTC Gateway, and respond to events from the network that result. + +The below methods on phone instances of the UA take care of readying the phone to make calls. + +#### phone.setServerConfig(serverAddresses, serverDomain, iceServers); + +The setServerConfig method takes 3 parameters that establish the relationship between the client and the network for making calls. This method should be called prior to any attempts to perform any other client or calling functions. + +There are three parameters for the setServerConfig method call: + +1. serverAddresses: List of the Bandwidth WebRTC gateway FQDN +2. serverDomain: String containing the domain name to use in interactions with the WebRTC Gateway. This domain is a necessary portion of the endpoint addresses. +3. iceServers: List of the STUN and TURN servers, containing STUN:// or TURN:// IP addresses. This optional parameter is by default set as an empty list []. If it is used as an empty list, an external STUN server is not used during the creation of the call. This mode is useful when the client has direct visibility of the public network IP addresses of the Bandwidth WebRTC Gateway. + +#### phone.setOAuthToken(token) + +All calls from web and mobile clients require a security token generated by Bandwidth to be present with any request to establish a call to the Bandwidth Network. The setOAuthToken method invoked on an instance of the UA will cause this token to be registered with the client, and used in subsequent calls to ensure that the calls are authentic and contain the correct account information. + +There is a single parameter that is required for the setOAuthToken method - a string containing the Token that was previously fetched from Bandwidth. + +1. Token: a string containing the Token minted by Bandwidth to secure the traffic from the client. + +The token is cryptographically protected from tampering, and establishes the account ownership of the customer application, ensuring that our customers will only be presented and billed for traffic that they have authorized. + +#### phone.setListeners() + +There is little value in sending a call towards the Bandwidth network if there is no feedback on events that happen in the network while completing the call. The setListeners UA method allows the registration of callback functions that (if registered) will be invoked on various network and connection events, allowing the client to respond to normal and error conditions that are encountered in the network. + +The setListeners configuration method is invoked on an instance of the UA, and has a single listeners object as the parameter. This listener object contains six or more elements, each of which is a function that will be invoked on the detection of the event in the network. These functions will be described in greater detail elsewhere. + +The individual functions that can be provided in the listeners object are... + +1. loginStateChanged: function(isLogin, cause) + + The provided function is invoked when the connection state between the Bandwidth WebRTC server and the Client changes. This can occur when a requested connection is established in a bi-directional manner, or when that connection fails. There are other causes of this event that will be documented elsewhere. +2. outgoingCallProgress: function(call, response) + + The provided function is invoked when there is a change in the state of the call from the client. A classic example of this is when a ringing state is detected. +3. callTerminated: function(call, message, cause) + + the provided function is invoked when the call ends. A cause for the end of the call is provided. +4. callConfirmed: function(call, message, cause) + + The provided function is invoked when the system has determined that the call has been accepted by the Bandwidth WebRTC gateway, and further progress of the call is anticipated. +5. callShowStreams: function(call, localStream, remoteStream) + + The provided function is invoked when media streams have been established. This often corresponds with the answering of the call. +6. callHoldStateChanged(call, isHold, isRemote) + + If the system is configured to support hold state conditions, this function will be invoked on changes in the hold state of the call. + +#### phone.init() + +The init method is used to establish the connection to the Bandwidth WebRTC gateway. This method is only valid once the UA has been configured. + +#### phone.deinit() + +The deinit method reverses the action of the init method, removing the connection between the client and the Bandwidth WebRTC gateway. + +#### phone.isInitialized() + +Checks if the init() method was called. + +#### phone.checkAvailableDevices() + +This method has two functions: + ++ Checks if the WebRTC API is supported in the used browser. + + If this is not supported, the Promise object will be rejected with the following string: “WebRTC is not supported in the browser”. ++ Checks available devices (speaker, microphone and camera). + + If the speaker is not connected, the speaker Promise object is rejected with the following string: “Missing a speaker! Please connect one and reload” + + If the microphone is not connected, the microphone is rejected with the following string: “Missing a microphone! Please connect one and reload” + +### Managing Calls from the Client + +Once the UA has been configured and the connection to the Bandwidth WebRTC Gateway has been established, it is time to make and manage calls. Once the setup is done, the rest is relatively straightforward. + +#### activeCall = phone.call(phone.AUDIO, tn) + +The call method invoked on the UA instance will cause the configured and connected UA to launch a call towards the Bandwidth network. Yes - it is that simple. + +The call method takes two parameters: + +1. The first parameter reflects the desired media, and as a result of the nature of the Bandwidth Voice network, this parameter must be supplied with the argument "phone.AUDIO" where the 'phone' represents the instance of the UA that has been created and configured. This parameter may be used in the future to extend the capabilities to other media. +2. The second parameter represents the destination telephone number for the outbound call. This TN should be a valid NANP telephone number. + +The call method returns an instance of a Session object, providing a handle that can be used for subsequent modification of the call while it is in progress. The methods applicable to the Session object instance will be discussed below. + +In the sections below, the string activeCall will represent the Session instance used for subsequent call modifications. + +#### activeCall.terminate(); + +Once a call has been established, one of the possible call modification actions is to end (or terminate) the call. The terminate method on the Session object will be used to cause the call to end. + +#### activeCall.sendDTMF(digit) + +If a session represents a call that has established an end-to-end connection, the sendDTMF method will cause a specified DTMF tone to the far end of the call connection. The digit parameter is single character string containing a character from the set [0-9,#,*]. This action is undefined if there is no audio connection to the destination of the call. + +#### activeCall.hold(placeCallOnHold) + +If a session represents a call that has established an end-to-end connection, the hold method places the call on a (local) hold, or removes it from a hold state if it is currently held. The single boolean parameter indicates that the call is to be held (true) or removed from hold (false). This action is undefined if there is no audio connection to the destination of the call. + +#### activeCall.muteAudio(muted) + +Once a call has been established, this method could be used to mute the audio. + +#### activeCall.isLocalHold() + +Returns a boolean value indicating whether the call is currently held as the result of an activeCall.hold(true) action. \ No newline at end of file