From 453c11bdb2e592de8036c1c9ae14917ae1479414 Mon Sep 17 00:00:00 2001 From: Ivan Tcholakov Date: Sun, 5 Jul 2009 03:21:46 +0200 Subject: [PATCH] [svn r21785] FS#2867 - Placing the hybrid javascript SWFObject 1.5 and SWFObject 2.2, so it could be used by anyone at any place of the system. This javascript will be used (as an optional choice instead of the embed tag) by all the online editor's plugins which embed flash-based content. --- main/inc/lib/swfobject/swfobject.js | 13 + .../swfobject_source/swfobject_1_5.zip | Bin 0 -> 64252 bytes .../swfobject_source/swfobject_2_2.zip | Bin 0 -> 28046 bytes .../swfobject_source/swfobject_source.js | 1062 +++++++++++++++++ 4 files changed, 1075 insertions(+) create mode 100644 main/inc/lib/swfobject/swfobject.js create mode 100644 main/inc/lib/swfobject/swfobject_source/swfobject_1_5.zip create mode 100644 main/inc/lib/swfobject/swfobject_source/swfobject_2_2.zip create mode 100644 main/inc/lib/swfobject/swfobject_source/swfobject_source.js diff --git a/main/inc/lib/swfobject/swfobject.js b/main/inc/lib/swfobject/swfobject.js new file mode 100644 index 0000000000..17af9229b5 --- /dev/null +++ b/main/inc/lib/swfobject/swfobject.js @@ -0,0 +1,13 @@ +/** + * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/ + * + * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + */ +if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="";_19+="";var _1d=this.getParams();for(var key in _1d){_19+="";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="";}_19+="";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.majorfv.major){return true;}if(this.minorfv.minor){return true;}if(this.rev=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject; + +/* SWFObject v2.2 + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab1=ZQHhO+jeIC_f^$+@7`)u#Mpa8XRY3xjrq+` zkOl^U0{GV>7(^}n_${K1%Qd*1rRd*ppo%KaEsPrqMPW&5xVC=3;!3`gO16?hSkHHP z-8{D|KO9{-^1Qpdz!j%Mw|!hsceWZq3~>C|^TZxDj$?lP93GvzF@%5E+n~(K;N<=y z2`FGG!ymTUY?krH7G(@4>Kzt~VyZXaFfPfFPsrjGbstG$1e!umqZg;N-j)1EOX@smh1}ssdW$(SR}L^qHP#sKX%q znZFyRz>sEAO}B5TVDz8L6$|Juj-WlEG$vKXnl57$eIxQuQ-EOyTD*iuPhG^Gg4y$y zikJCw2Ru=b_e7wa915(x0@VzrYcUwi5&Y*b@%mUDo8*(E*Dz{-Ivx7>3 zdfq-J_d?Y|zSuCd(r4%D=H{s?VRk^uX$j7NL$4k^Z3#)V(3mSk6{91qE=0*>P4EtV zxg&{P6ADk5V0ZAhZ?E46Y#-8l6$>{%0#{*U-@w{oRyk&ED8pNhK+hwSapHn;qp(I~ zCs-q=30ZXf~bz5tll(1eudGwS_{`dTveR z&}oQ6o8*YlhdzP3iB2 zLo}ee9Cn&Dli?G{%0AlJKZ#gu*A6h_iSmbytBI?*XA-~AC1u6>BF9#(Q@jvOUxo_G zJ;X%H_8?C|{F`PMRoS)3pY?tY_g|dZ@HSx3m@pJ1B~YH;DTJpJv8d7~-F~ zYPe77$Eh!H^Z?BS;8$B??CVJbOR<$V+coS_zxv9b~V_LPax7~>?Nm<)a zS)rIR2AZHt7m`YSvqM}vVYj)U7d~%jFs@}xi!^)9Oh`>z>9L2!NyM0S6|;1~zAN*k z({PDj^KIW`8mB+8y7_{!?c=cQ5Jp#5dwwlDmA{!}x1!WHKEV~F!68zi$IM_s0RRgB zvFHD`+C$fWcWM0pkJbL;;Q!ZYGhF_+Zv(C(QCtiEQ3gZD003~$npXGFMqYjCW!8{b zi@btZ_V=er5Q#5aA`LGH=A{V)BKr#oY0M0nDSu6oEE;8k9GnLV3U!lr5D0ysBzSLD z4xOh~Rp8=*mfG>u{Jbrx{kgIG`Tc%4Xh!zB<uqE7<^G{0J_ zhY$P%001K4AHplJ$L}u$0=T@qTILUvlQ439q@bBFvaB` ztXm7(DB~pwkmnz$0KBA>4}$@$r4OIcSDS~?9tTp0uBexg)|71wNHe8>rizwOMuu!{wChdl0%#0n?(|#Xfave<1CEFj-P!K}esx=i$v?I)- zr;GQAkClKkR5tTnNwKw}9isWoQfwI&y|bo)OlqUmoqVYa>gih%{ked~9p6H~Ul(~< zbs#j=9s|dmXik`$T{HgZ)p?XX zY#XkM`z&3t15*~C>669%_DC)To5^n!;MQ~K2WHsr)RYCs#k?|atd>oemn4t+?k8Q+ zqqhTJ{B8S^WLsu`XwfWtC~nf-C3lM4=JEcB-N^&BY!O+n+$1hL($^o5QnEwJ5nUlH zH_{79wq-+2trU6-yTAUWHuV;G+)a>ay1pYAbJj%<0?3^`?gqa(VE=f~y5B|)93Fhz zTT;I7lvXC4kl|*8SNF<_CjmziJxEygp$93Fvc8b8RIBoud_!I-yr%f5rRM%1_O`DS zhV1J8+!+@>Vb+->X+r$)Mnm6L#KvFA0gP@lhtWaeh^F5^i(*#R$yu^qDPMm5|w% zcy|Yy+D3pyOKmQCHPjkaK}kEZfJek!JNq~p_Bg^kwXf~fv*thwG{e7<$C=Yb0;0(9 zBqLX?U2cCM!uAPu)k>8JjnS?vb08@mLr?Z<0VTJCyp}e1>iKf zQvQ?m7mGhMPRjzU8k~%0eVg*uU6XC!LF-{)xAxMvMznVpYd52F)X8l=CnAx ze%v3hK#&Fj2(eE9O97B|E>NRI50I$%`F$#_Iw?XxrUnWbTA5Mo4>Yk@Amcz1R598F zMu1eaR5_Yuu@tB%%BMW%&_7>I6k zhq}*|(usg>ufG0!%%@YBJ;n14i_|#sDdb}v&jEvn(|%op2&?evwej*3ft|^hz}MVL zdHqM0C-?cmB~+CJFSmxEQ`H(|3%WS`-dU2j;-Z$h*6rl?=aq8yC2D zH_HhqdtTrH^YZm4>Yt)8Q>uGPyzilTEb+;>ZpG$;1LkM>!Kni!i?5Gj^R2%zmOgKZ zLAE)1N;eLPc1tAPmWmfW7mL;@IrO^ofv~x1E430)mR7L3UGu%XA2dH2 zpcb3_+p#b6;I8O0ecSAT#I2UPRnv9Jc6wg~ih5#g5`NovbfZd*87@w0EzNjM7_keb zAx9#Xa4p2UTP>0T-@=#nV}^g?J{f1J6o>`&%uK#~`Hc4npxe5JQiPMS0FUb@1?uFZ zIn;R2YHh(j&FB>!PJCaDUVodqjOaH zU2_!dpd2@I8YGF4t1qQ#O`E|Qv($KS2DB{YO{l!sJwE(4d=o|wpTRyul|lu_rwi&} z&&_dcee8VPHPF~v{^Cdl<9m|3bwhFQJdxZV8E1>?0aKZz@lbfq2Poe_M_<&13_#l zH?glBMDZqPZ#$lonV5 zPj7l%^nin;R(?qiAMfUn-TUa+aqMxE*jQW0scWn4nA_L0z)p%c1usgn$Y-YKxBPV1 zRAWCD84+iZ06X5L0-hU~E^j5o#+Kw4=Ys@4a6&Lli(}e2EtBCOI4TF&T$P2_=!Myl zH$&z)$ga(zBk)^#rTg(N#De!~OWIQEFX2O zD)>8XwOD>{3cZ%pc{mQP+8r*Ry`9lG>Dr!hngkeHA(%TuX+qw}!)X|cYetwkX$Qd6 z^AUEid}>5iLp0Z~^~8%Clo*RL<(|PmX(_4V_gs|Ji`#PK6fHrRW0&{xZoF|L#nyKavFUyyPy1wL;@ z8=dn5mBO@GrI?mpBFW!nvy=HTFK*=8kEazH#bsQ5_x1)yhp-&_`Zi^e8WMXYIK4b+ zhgTo3IvX4|UQj!%q)(`_$#4oHsmf1mTRfYtuBT4@_Ged??SUfVw_*OaByk|*qpM1w z7L6DCk%!bL*z6NF9MDnI4Inr7F}x>;vJ2jRhaS!|pc>hsP`i>sOF$jGjf5GkppjLN z)^ns;g3U4fs>ZOY^i~#qqukt*#8&L@9^%pi*B?w<%+;t=meRr+%j%H#fHF-Vvzg9J z-&TW0qi+`aN*#apKy9yvd!7%N+{+iAm4zbf<9L}?Ufi|HDeQ2Lg;+A0=GEqVcr8;n zTkkzyJm+~n-SXW&rQWxP4I;f*CJlXW z@rQ3or3YFPY1_*-n^K7iFJ0S$2W=8g5=11LZJcq%xQ|T-a8-L!ov|P_j@y9A6o?%Y$s;@Hu7L z*%WxtwjBP>P^{b1F^jg77l}!`P{3RZ$B`e)%9db!+qMkeeuSB6{Rbb0g^D7js-~Xo zlY11LD7Q_{A#?kYVs>O?-|5Q;&$lqglnLg1a$8OEeyIb)1i#hiHvQ@SAA zDgm@FIWsT;?Bd1f9LgPJfD9$daD|9aAoebtnBW`J%4dejPkK%#qk0#IQd$P!xnL!uxz5|wYCQwsUL_rZLu9S*zf>8eXU*uS+>ZJ>(3*wK3 zR(?Jh!73!mM%3V7O7xP7WJehiRHPz7XF6>^&N=<^bjxx!bOC*n7o1{k3RVAMEE%#; z@*)5G*cHPoV!X%wOuQ^PRU-wP8tvj~SY=bmdVzEm&>e;_uZrm(>n$;7z!ylV#>J?KcDe7cP z5-LmvbS0*kL32AI`=oV7FiO@h}fA^skI&vq8l(m}_Oz*TjB$wzU5crsim3L=fZ+;Aa@C zesm@P*qzSz}WP7U*`wFi`W5H%2Iw8LzJROrM45?!jC)gHL5m#mr7;vh1dg2AVRpwK=EhgMoC>Fk@&pvA zkp!*}2OQAA#|Kp@)PKQ_kJ2Rp@`xbNNh4hgA+P%6=nCMd9HAbO6N!MTNmh(q5I;g-9t zhd#pnl#as)of#+7@4Em^_cG@h-Upo%;>L|N=YYEJqwB~E5dZe{NBXL z3mqJ7K#brZuVKD=io5j#zWd8y`mf+DKSRc73kd*V^`G)anJip{zno5eWG>UD-TzvQa+=Z{xKh5+U^KZfQu0Vcesl35?gInVf&u8c}z@9+($x+ zL`x`VA}xc!Q3C|VeC2250s|x-v8!GyF|Phrofyv42?BZ8rzC}|#f43iC#+4YKU-Kq zy+;OGD&*KFsp0eWeJAW3*aBQh&n4OHr(P1>KNd7i3aPJl29Gi3W~mc33Q=b&ncUG7`5o3YN!guE1Mcr&LNcCs+ zkb3DgKhCk=JAYs3-VWHFIHYM`3*4imBxzjUiDVFX5^e2crMS*}@BsNk*aaiH z)7pXp72FUj8Q~4J(I?jm##G2XyYQNS&26*Evcci*g@7{BgVgm~edHf$qRY2mGM87b zZuFbxF1M8Ufbz4M))%j&j;B*4pKF(+_hwLFJ_+X$`1B_$K{$|)lQ0o!+atHTH*Dda z1Ohz*Xhi$e<~j(^a)u=IIBFXk?)7$ePxo(zj)gFt0cfM7ogm7$^yb@JOVwzi2t`PV zpH`7T;6Qg1d&7$#_`{z4qJ!V!Jt+^tc(zTxZ>x>{rrnPt8R54+A%kG$^BOX)7cE(64eBCrXJ-s+mzZ`U71{LZWL>o6FSVf?&77P>y z@jx$kxAgD=k}7h+bB`$CyLmCup3UFrca#TB&N#wrAxvIG0!Y#`eFm@3n~&)eut$Kl zZ3WUy-mmZ$8c95rntOXS*AanADxNSi1%mw3wNR1R`$DMSD5d)6D>|+j$=V<&Y@^Dz zN^DN56Q|NmfPhG@CC5Tn%P*?FP9D@A`s+UIUH5oW$F8HbI(Bz{me(VOY#H(g#HEhD zdK0XEwmMbLuXhPKa^bk2bU8BCiwZdCv{}<#9@5R5x#W=-=vdmie7juCt0tC-Rq%fN z$S)oQL*?iq5vFWw>w3SxCY9R7nV?f^=BkQkC0y#*$$k}C*BL|;)%CW3rN_h81Zhg^ z+O(>)@W2Bwn2e+$I{|b`4*aqy20}obn=0#Gn}R`0_4@f%)TI>T-PbtUP9Rm$8-+%J z{h2_k%`XCRgDYj;)-GlDdwzN00X%=a`2#5jGxLD(aP!2%@+4Ab3Lob#6&5G9ge_&o zHT_)%aSy+}SG^%{uT=qg^t(&WpCr0Vh78qxL+r{-a+LQTU=}KX8cEt|8LY0tQ^xv@ zBlD;R+}Dpvh;dOcw!IJLf>)*uB)Jyo?x==%D0k5@%%8w)7L_pLh&HdZj=vQ~-79Sp zC6WW^!gxHdFVnDy%b5o`eqNIr50r!)9}GO6y}!SJ)1R)Afb9s2XP$p+cGB-&YW;JH zVlC*0S_SaMGG}>=Uw7r-PM)0(7F2SpDbJl>xzaO1`%jdJ4Nhyn8XPN_E? zddizGjbh4&{iogH>AO9xQ|0GA~|0z^Q69Z!#6FO&i=l>)|$(rYm z#GH=4fu7)P#5gFUJS5MI%(y*kNUYO3I%MmMi~DJ70F?qr)fGZEfTWR+lePP+kBM)S zAQuG1%NvogDPurL9;c}hn%>GMiDA)?`Y`-x9r(*yvpLhcrv2RMbcfZKU!WlBJNc?S^8ar4!3V zq#cr_I#D@B%C};M94kfEa3-}$CJbq>Bs)uYL+aIPl~|FO>GdsR+*OWs z)k!Dasa1OB+mSAnDtRPdfpHorN#&50@vjYFJ=CItLJuY`%QN9V_WEL;t zifdS-v(u>-yWPj8>B!?f;&)GN;wNPyaC3&V((US0YqF^fE|tEUmC#u9B^V{Aq(lQX zB$vfX3~6vIh!XYdf`w#l`&U4JoT=U^X5_-mZbMH?OK%ITAgS~shxj>o@pFDf;C-VD zh1s1x6X(1eSZf0={cyKzq9-CM^(O(?q26|Kzaqmb$3>CuAPt>1m2TZ z*jG!oY$hKZP)-CqQjEO&CGgG@y6(mZb=Fq+=zFNu_; zsb;Mw>&HGEoLZA}0G20f?A8dzwfpdvD9F=kL*%W*kH~hlhX9w=`g4(H4pT=VN9}s| z;ZVVhE0=do!{-I-?bPQDhX59#yJ$CTh`LO*>=$`fr2K-6maZp@Z4kwB<>z&mLomV*@64i~02|8pS8d#66l z{`UB^TzyN2wpZ>%nNchJ^L@Lvaq_&_ompe=F*D$eOUt+CvjIh&F?WluH=>i8vHhFu z=O5036Mk;@`gm?gcynUt>g30pdC<9jJ^Y+HxqeN5fc&z(Lp%I@W!eHVf1I5M3|zkM zEI4Fa@)$My#_`V5nM2zPJG5-=A7?3t)2CX!<`~`O;nZ4#PDpGgrdQtwjVmLswE|||xLq{_en33}Lx+&ejmtrcA)upTIhM2P0S>*aB_&bAaw_QWjjE}P z>PUqsrQf}tz@rX#-2&W|zKNQEw{KshfWz@tpdKM-Pf-VjlKfQ3Og#2Nll1$qSQF{k zL0EFK zd7b+PYq&+#e-mWj^3;+G={vmg2 z#T?1r!Mby&ubBH0h}nvTDtzu>J<(vB4fG2WSU^y2p2DVq22rB?TmUWh<-bhfR%#bk zdW)G7g>3o#G4EINoG9gMXWoSn@E0?xj6S$TQf;qBDg-W2nfLbi1t`OG3LI|(Esv9$ z1;3Xce!~_^Ux<|-g|pg5(x`o7mg&ncHH5wN)g*w2Ra9(F(({kN-z|H<#E3sl(MBBRaur){9T*2a za^m{Q@v<{2+;Bw5P;VO##=z!hBUR?g1$Y6k)w4k08>i@C`&yiUt%1 zT2|!jNpgrgB)m42oo?4YNpRxMQzx*-8`rKV^c_bMu|ypFTfe|wzn$})Y%68G`?ouR zMx&TXT#hd)E63vZ$tW0w++KI%pkL5Sr(i>f#|c<%kPe1bR> zB=CR%&Gtp?tHHKAes2^v9fFT!5W`MLl(e8Bf>!DK?uU6pQT1H$>*R5%N!ugEjfX%r^6|A519!(0 z$jk!rF>Gb;_tj}EDo6%7r&KWx2y*-l32`y|amIe;#3T}QrJM_7S_$p#aFypp!K zqH~|Te6<0~B7Z&TbewoD^Mf8HQnlm1rrN04*yC6eW2W$;+%lo#(A#OtuEQHrRyb1A z4g#8s1S`iog}w3S_^@JDiVyhWCYUZr;)HERWit-NJCS_A{n0gsz>$-=+t^TgQp$__ zL`z40WM>*gdB93R;y>hqDuLo1ldNR46)x3zlRWBd+?SOn>}a$3D1-6d|beBiLwLcO`aE5=6i@`Ju1yl#4z? z8PY@#*D6u*6xvLtnYGBZl;5y3`1TXU8&J%SIzj;s>vBE2205o{?Muqy^tqW@^U>kd z*NsY-h5!eUT>ZnmkDZ0k3GKp8@k2}TGrT3%jcqD;%2kEEaA%Du*ab5qZu1^`6=C*D zoYy3@gS|37gbbFHgv#6O6YR^bP3fzV{GoOUUh(OKm&yP~RCHeu ztb&Slfkc|nrVUp#dOmtMf|`lqY+4!uOAO>zwI1f=dYjBdpD zXr%^1(i-Hgzpz;0Ag~bM0gXn!kybBmb`J96C0B}O%~0gFv&@vQ4=2YSoZyi+;I%Gm z1emCHt|f&pAM?ij1%&LU8vn*mQR(tl-+7N^ zbgbW>lmw0MhzG|}@sHr{@qvSrkDp3|q$~?ep^(IkXbcYLC5vj(GXyKaio!;oJBgnS zRg{Qq=ULBiT-;X=*mnZ2sbu!MDuGC9nzQMs@NEsms|K>cG1SUKDH(K+L-%42+NMc!BhNywv}IiB{t2Apz)Gb#A<&T-iNuk&+%!W1GlNam{fn{yvu&mPaI`bSM6 zJDV5FS+^~#I!SkkPduwQtHdG8z{MLA32jVjzn+!vC?tDwKRUGdWnlH`yY-t?&4(o$ zN~r!pg6TNqm#;)vp6YP&%&>b9P8H(Q_*i0=suJ}j>0UZ{?>aSD$d1!cnw)Je#@Tn) z8ll0;mUba`4{1CqGSgC0x7SI&;a^VtSVH-v&7EI?sVm}W&^8rxRcA0>xUN3zk(&-#G`?^9;8Glfx4kN}-q0VbP&0ka zRdoD~(ra;}K2H_?0m+WGsb#-4^qu~8!YO3pdxHbKYF;HqXX75TnO@DO52F$pWZvak z2eqc^&i-LP@G{tMg7h95VU`E;EFNWmU}I1CIl?*m^Mz${7JKQnd7GA7PnryppD!h< z7q`(lJ8|;6vAa1jidXSlVL0i7C#q8hZbYK2Zt6))C9O?Y9Fafh|4Nr&G@s@n|3NF2 zRR1#uK5$C|uajFh!iPfOLT0*2cS)oMb zi;CsWyoD+WQrS19IliBd4i7x19y71+-MYKGdi+?8d|tQBFB?|1-7j9(vvhb#82~eT zd0_!jSb6wnP<=^G`e70VPYepvn+KDZ;JIY83^3k!6cy^ZzQ1PB=;is`;h$x zN?wx);9k-N*iWdp0K2Ho@k}f%Z!u6%7$1Sw|Ma#OGPhYt2$o2}CBZlR;1c9u7GNAG z1g26IpX}1H?}^!*F#>jPvM06Qu`4~w8 z%+3+0bqHnmiY1Vdhz|`t9Hc!Y5f}J5f2bk04cK?o-t+R}MXeS)-%UTS5FTDxZY)R_c0oQAhK8 z3niQ?VKcQL>GHXJEER?Bq^KL_Iqk*#k_qdaHEw1!mtMYCRr^jxh6?BM_Q&5n!`UW_ zVjDQ|G^=>3c-HOLFl1uC<>)^)3JCM8$AUB}vMWZx`t|N~7y%)b2)&?1R5(LB@SZhu z(r}`f0QVOPBo)|!eYgr=V+Q*`%nHz^@4O79 z2EsJ}D#s%RAmY^)^3Yf=0R_gyQqXVnqHw%@=i&_)3<538s0Bl+6T9lZ^JBHKS39e5 zm9EHIto7}3ICe6qG za(?ABax;~d?&t6EOUv($46}~?`Rf3Ui8e~6T{EnGYrIImszi=sM12isOi6oep~(_M z+eTCe5efci&12t-gI3;8>4wRIr4K3YK(i6@aKuI%Y;2SqZ*3I1UV?1><3h42206~= znkFmKu>Ao}5pu^evxKNh{?kXv8w~TjUlS8%@&@Pj9pyoY=ibq3F;Bvg?A=qs2qNuX zzc2d)y2QE&;G$y!kA)6$@`EJw#RN8Yxh~b=G9;Wt_P(bhQAX%1$ikdSOx&?iAo`>Q zjKa1+)yFJgJXpc>^A~i505ObWzP+ z{zPdD134eSKc)$u&~;B}IVL z%WF&W#Z@uv$|jS0J@eh(j_4a)YQ*Zk=xp zpW7p&ci^6}!WCXaSn?R1z3ptn9Z@km!VoS{Czhh1!2q~~M&@rQNtl>KqWhz_KIB*) zsxt%o6%3k8x{!~wY7yt6+Tw?K;n|Key6(NV?Xbif9F5#d5`~>TacG-S8D%OUMQ)EBQ0tbKJ#E zVQLH={l z9Y&2KJ=j*|i)Djz*`?T}TKS&>ZdEyny0tsp-8zT5(ME;WorAm}m;9y1^mcVXsLhy2 z-#JXlo4uca-kunCPu{r4FAtz{@49(P^z^t3z-3H;D}*h0R_{U{tO_qTVUkc?gI5TB zLu7r)Fd=nl6n8^FRIrl1o+jQy6?X1ugQSMX_(`o)=$<5R>wC|P6^$exw5v_eD`PXJ zE1Tx`3XABKZy^=|r`Wm|zOJ_l>lEHOWsdJZ6RF*iRO@e>_qTfIXx{JNx|JO@SSzP5 z2R*ocw(lz3+qAN7a7L>oXL3|G>-NpF_QENR*29CN+ssRRyR(L?&!rV#4*ax}>so=i zTvM&t^|XX|k{;WfT7L~WQWS0zsy!zs8?n14ckFv?7Q55%N2#*p7NfzH**Q0A;oTw3 zfn$iCiD9>ASM|fR~+2DenBv^jGIA{U?w7z-ew z9|PvEKuxh0pUK~zO+MZAIu0ht{f%X3`63@l0 zR{~(S19A~sYbGzyu}$XVKzoZ70Eb2DTK6{?LsIyR;X-mOY*gvaE5XPo{79wJ$6~$D zyCAyo%VIWoJ)JmRQzVsp^W!&+X0lH1FAd+aEKBaspXMO-aF*yT zSM=h~1goOsRFJDM!Fy-%334~BQ3JIHCPnxbn-`x*5%%U&NK(v_NYBu?;V%68IssM{ z4SH-SNMoLgyj`&yVZ46km8Oo_a2o-TCIN8BdxS*2LF%Fa0LM4UN>MHyZdA{-Q1mjh zj?}V>@eT#yDKJ*J!2(NClFtimE>S0>HRW4o94>fE(80xqII^5n{>8A4{1XW?tARIAD(riX6(Q#3N-A+ z#5$=|TnU}6)X>ok{EN029E!H+uFqQ?pa{!r_bB7FgN73Ufh|h2?VA%}p}ESsdUR2+ z7LXBR)Ny;It-?H>g{ba%b&)QOw5{T&(+N(BI^KEWjXTyU+dIz7`4YZM#r_-SrpxQ= zep9$MaY!3N=}R;`^>K3$B~%ZyaunhGkh(Goal;-r~ilp_rs>)_adZzC~M zpB?7g)h z${#7pbH+_gGz;jn3%Q=s$EB4#RLvG3^UzBfob(%gMuNPjY$MOB&fXp(@Co*Sh0Ldk zlTF#WJ1B#EGk$!eD!g#{p&ODB$-xn5rIAb|AT6S-(`A6s&91A=^7l`>LRdkICxUn= zE;V4*r(hegC9lnBlMw+gmx76&QOCw{$T(J4eoaa4eleO7UP@JlrtjG&g8{ z)1Ml`$6E;ff(U$!Uq}8D=_Th)9*EJD9Kx5p1T7iI27m?GAUzOkixtHmSNVyKWJS&$ zpK<)*rt|=&g%GeC;3_tB66b3M#k;d-TZAM3IaPnziw$_~S~>`q6VlTLN9q-goBbRG z`ef(M8L$;r9E$S_J8Ax@g#HIP%wWBC)29PVwb4Tr$Ll{?e5d3ZQHhO+dOT*ZQHhO+cu{E_s&-} z_trO4GgC?4R3%llS}&anA>Nkc5Go zycBOLeKVn~n^${F(rOtBmg#9MLc^cCf>q^q+#u0XXNln*MNC2O_3>v6rO*8wjxclA zHUcsFMCWG5D%nm@TAN~_w;vRo>~!w0 z*anEs(sfT~-T|smH4R65;n|JJD)oa;nP&#PJ6HH%y2^D@9oif<{!=F?rm<-pQrT={ za0~S5UQ=Y2uPE{vkiEN0mOUQb3I<%4#Fbx>EY5a&t?mi7`4mlP!XDMwMfhI1n=Ed~ zLyU4L`SdVqFE-4T{BsDqLz3G+$1J?u_o}d)D8*8UbG_>D35#vw4xMBg2@6+wpNry? zwJW(y7Mu?Cndh$0*-_()7^r3kcpqd;c%QLc>%lfLd5-hRh))2Fl~JP{5J5rg1qthh7-LBSQHpCI)&0;D4Ihs4_Xz%)SQF_8V zSrv_btaFOlVyiGMb1)?`h=oQa-2Ry`hkjvE=j*<2C>a{{h1V0*wX5(UxYFdO$ET#X z*-KKbs>opHl^Q66+QY>~HHCFI$mN#Ej=c9=^s?1f73I|(_>7>|Yq)%xw7pL_dv@+c zMyRE~{Oiw=iy#>!Lq%f1%Ru^#1R^LVLUD7<}G^x8S4vf59PCiIcBYUnLO zz;_41zugnvd(QE0(cdvTw6azz+vV+7O>y*|kA(zZ)hXo%J zmnU@z|5$In()hmQcIZ5J&)?qy3~Ajvm0UGkkv)>Fy`%fFO2cQ*IEo{eEmM4^%90{% z{fb=)>OH&C)U;tnIGBZw7iL@euxMWibh2{ zs(7s(3Fqa?WTzW`ND9Z2UHvIJf~#d9FVJip#?zED{21Q`mw$qEWyY8fi7p0+J)b;n zz3~auTJCD5ca3R|0k20^ZO8pQH4UCV&yuMGGg3$XnDy4=eO1%n%`1!4I3&0cvU6Y+X*ILJWD3QY+953W$E02TbU{KY_7=pz5Xs*i>(Lz#NmdH2o6E1%SQ=WqL=m9&A%VQxc`HtX*Ut3XGwmGNtBSko^r^LFY7Sag*vFe)Pf|_!bKDO zgiV+MAl4Q$H_XQKVsf<(!psV0Kyz-#VLR_`w!llEl$obAa@e{~cmBP_XGBwuJj55=&ILFdVN>j|h51k<1%n*#QrZ2DemXfg%O@%YwXpmROs5@|j?i$hCQ;f|*(X?nfrJ;a@ zt!%gS^K67_Xq!qdYRaJrfcE^*>w8;V?A%*ie6Dowp)D6U@73}b5D26r1@YhsuI-hW zuAmY2A}A$HFr^;~1u3}*wt$uuWvS{Kbe&$1f`bE(*(L&ntGtBU6TAAdCQtlzJ>voF&MS27yKnL@#*{ADpI~ zhMeNr9N@KUI1?o-jkcDxLZir@UGQC7r%U@sj~2ILs7K>Jd@$k@xTU_Bq+gJzcC`5t zwy5cV5^yc1WU9g0$m3}EAkD6aSF<IL@JQVz?{H^O;aID8q|<776KQnpf!n!eWwqo zb5;skR9VlO&>cz=jQwY1DtWk3)ZBc4Q0e09| zpmix~3LqkS#RzSDz5nRa^aMGNC!Ddb4D^HcCE3xrD;qR>Rz%bgP1i~K7ICZ2ldt}g zdhFZu{x_2FtR*)#JjKiAj}JT{lQhV~)CH3C$*K2o!E!p8gMsV&NT<$jj&3Kvfc?vd zGKmfb)Fy*a&FExIFOSyFP2ta*C0O!&XZK{J3W~TuAz8o4Mi!A5CgZwhL+_MJ2LKM1 zX}Goz6Td5%-Um1$2MRD?wXx2lf4XG?8dQgAzFYJAK9A$J>;Rb*XP3Gd9%^-JDg<+jD{%_q}=1H1$g(Nn8}=QkvO7n~G*W-3tm1U@-8 zUD;K}0iv9oP!&8{`+PKhPN`GftE;P*+1Fzq?&wMgPUqVjwJ|o>6^AzVbNvOQjJYHk z!h@*uUfOxmw1jf^6E+(cTjyl{+Vjot$4ApIpFQSds6sm6wqy0&Zu9A7Ek=Zs**`NI zt=94aq2s9Zd230T538r7TB#zVb+d`M;FuD*O(|_t!*#gG^RzB8#pn~Snvvz+ zb%S?*4W|=PxTG~qp5AC_VuOTVd!tdg`m#%K6H+nIzakDsVH5LuX5#KKM>?j>>q*@8 z)uuGZ+nj#cb=zL3Kvh{l*ZkG}&hnS=cNVX5**s6Nc#c#{OV9=fL}i>xpwJX{?39ss z!R0RpJ_1Ycaj4RoZByqh*X6lz@IVr#I{2VGG5w`@JNHnh5mNd^nth$jGRdr|_*=x~ z`RCK`|A&siFD_o5X&rHhJRZ^mGXC$7xUr9GO!sdw%oc7c?A8RuF*HGePZzEb;g z2#Efynj29M$RD7MOsT&KSEYcodF2tp_qtopstH3l# zOY#_ko7Prqw-QLw9ISvhw@vSgBJ~q>&aTt05|$!rPIto> ziQI9xAhEs!wH=I|8awZ*+m%hq7@mV8_XbD9n4UwhMz;Mi20+M**&M6piOv5GR;WFY zk7+wyRLY*;?)t#bWdUAZV07xOAMAHztdH^G{%Nxyz~05+kl3z;qEuJoZohkGR;8aO1AZnIZ!a2 zO$=Z$RBy+!Gfu9@9j;R?zm&BX^0>M7w{Vi917KploLnZ?6#)B^8Gemf@OV(aI`al3 zI@&e*saE@2^pptf9{2sT~MEuk|fAi*2KId|%D%__?>X*$^5Ie7nZ?Eh<+!Jo3> z`CQ~)lGv2-xvzD^6SxNhHpzQoBJ<6ExO$*N%0}vuNQK_Ko}5;q&nj%CoFKPQ+*Ir_ zxe?qY1eiA|e_qW0$*d~^ZQ@ju`loW80#;vNu^5pd5F4ntX=&G{kC?Vh_uTRxb&9aZ zN8oUTu9eH>2DyDtYuy^^Vt$ncHB;AK)vL5-k*t{jis;&*O#fN6y#+=-%jDK(bpL^x zBTz{S=~$ZB#Z^&bgxVJr3^F!sPhd~`?I#~;W~3w1HnmShLLl7lTjiv)1>FSZ^~dhb z1XW*F{BYG8wK>y6Zs*a*@)HzyGlHG3GL(y+>H>U87CDzKT+>=^T39Bp3|VOH?p7%< zZ=@AyxsmtiG&R6L3;|8*ik8oGxxo-ot}y_$-e{@B^6A6{Bul-^=`qVZ+p8uj{&njkI>4gmQ9WL_Mu+Pw;pCI zBN*3YH}w!8#rJE1^`#RO-u2bNk3y1*XuiiT%ab5$0+RZRUySQRztH+1ib%G{iklv! zF2U0|{O>-PBF|+$AAa{|VE=Un^7u=nM;+1Ycwl-Io$99B%y$I8VJ^flbxYW{7$uwg zaXIVFc&|&ovKtPB8tW}bA7N<=djgU}ntP1x{G2qPWQDjrCxX>IRD0h1t}66S)0Oeu z1p#t9!?Vf51+xj(qiC@%WOGUjGJA|OBgU$kE+5U;O4+lm2U_%JU$UP#TDB(uM-K1e zN?SjI@92*n{1&8fHx$66I}B>M>pWWzj}0pW28@pnJh4jasF%H@#{&<^vFEEcqH8C$njG)E*vo z5Ypw8CyL+b-vif){Z;inotTJgu{KFXj~fCl5Ww>Dy@QNWw|iJ+`lxo&`}$t? zGJ9x@jU3IKBN$`@EFwWgE-2qi^pF|yeY#Le=a;UQRV$!DBBMKH=a;+BK$i~8cPqRz zEZm=u1n5(=%%a?xe4HQyB1d~3v|tWi?7j#jfCAGT34-ZYm?)7G%Pum@Ii=usv zomR3}pu9ZqU`RrsVi^H4y&YR%fMF%3uT@A-wQ?s@61K12`9Z>oIEr0#Uv0};#8ugR zXh(fy?iuZxbUNshKD!(0TbNRbRu@Hir;agf2hXrwpCW-4AHMav*K>!2rl^FxNxus( zY7{7_Nm;3p$!yTO(_5&2Zh_r%8o_bgq*VZq2Xme@ho$&P=9@z z#h4DS8fhOL_7omo*$@(5M$f;!71jDuq+T&5|CI<0xY}@xr_WABEJ&vzv`6D}Z-WRs zFe8WPhO@0VEv%VUm#>6xO0UD0gcrhU(~$kZeW8DCtCrz?0%Lvmsb3@P>Z>W9Ps*CJ zFweL+%o2@>&dpFh+jDJKxv44i?ksEq4^K=K97D@0-L&cNf0d41wSg$v@WTZ_6-TNA z#kZya%GxP1l^RXf z4e#D6DDj!DzSi=pw{xcX7r;zHqsnlaQb5L=K#Ipeq^dAQbE6I+BttH%2sA!L-J?r? z?bF2^-q@E7&>cuD-qSwiMyUe%woV?17R6R!Ee1$nB)U0sk)ohJSC4fFz|+s=>;&1y z`HxHIDriv(_7S5QB)NF>o+Ktfvj^U6f~18$4OKcSw}d#$4jab6I-l}&^`vosDC}Wk zE6^)CZ(Ai-R82cZLS4T)oAEtq4S3KR-U(>7Lrv5|@qdNv$@%R=)jG2nL8xf2Ho0=i zNd^IgC=aCtYCQ-W86=tVZak{K5i)I5f!X++kJcLN_EAns`>56*OR)Gg&Dkh@D*eon zby5fh15B`a^zwKyz{9aqXxST_l^5bvl1><}kF~CO-|UqoIF5xmW+9g-!A!QbRBVm)cqS}$-FVm zoU@%egMRfDWIQ)4|90XaAbU6{%^%6$wcD@G7OI&1PQwrKO%G_l7m3^tSqjXM0hli> z06Q%ZTrB`yDqxfWyf}b$rH7>^_*4&)xre|c0CWNbm?Hp{BM`Qw&&m$eH4T)20h33c zU?LQJ2OPE+*GmA31SydI#h)LnhXg8!NDWR>0HhZQBo7HfK@DaX2{;}Je4Gf!fCyuc zh#*A>g!B&zsSr$spOPB1c^pEy9%}{geyiys5L_c^8;W*o@Wx)iB=x$0^PYLP|3<(| z$_dO6GVAx(d!Ud_FSah%{mTK&c(n?$VpBT1`bfpOl@<&2OM-Zl$-C)*Cal%AI?L*l zCOo!pV_jn_!|BU~yvl_*uZc>B8$QieO%#kz%wXItHEjBzkGA2y*|?8%xJ|QpUh%}> z;M{n}LjGvq647X`d1ho0`gcWO<*IrYY&U|rm{;1(_dR`&#-pOr9!~hq^m)s`V!y}U z9x;zyzJg7z*GKuL_up6KXF7e5d<)Z`ygVCVhQ-rfu}j_39FY=O7yc6CUuc8=g?J@s z`{urfok3%3Um{x)h2!jy0dAtK-zJ}pn|sI-4Cj#O;bSI=mnks|OVLrZPu($wr(%Sm^4*`L z=v)fxeq(PVb;7>=>ue=GMZzS|cGreCI+X15zM9&ImuaPyL^edMm?)L}Wt7{k^$ z4BX{HZ2#z=<6N)lC{YTV!z6u29W|J4a# zkx!2!fv@*#jNm8kwW!%cTv~5*9>S-msNLnutqkgzf;i~(zLVj#cg#q|LQciQAA%*W zS{xRI43$9cyvxBn8SI7bzuXH%MU~e!y3j4d4EifBl;}2>hP1$JJEgFf%|p+^k&;T8 zd>6*uYSJ;#f<={Y(Ci8AOmn!sXi5W8^2_ac z8P>sY#>OnrrT9`WJgYB?Di}@M;y3F*m-wN)>SDq?*ZEE~7<4r_%pv$8up@^fx+7z9 z%DT~sJOjfmBFbi#qwdGTKAT?$goT@w$?Bq!aDPug`LMszFiIwFn$XKVACJrrt1%y#N?r zTjYz?n#R)myEH|8sFUMG|6(gBGD*8S*cVQw7CW&ggYOeK#H=as1AlKE#FW4e!C>+QG591I5VGy?q83W5nZZ_b*OV+~PT(t;+l8=**av6o*{ccENK+ zy{*9}1gungzbf5Je@hie2nBwW4y9$j92X)Z;~kkZT7rJ{6pdTGn6buj)50xNoX&PX z%>?)dpmF#)AW6K1%1^)h;=0ESTV+aPWJC^ajw7~7XA1+ZAk%BEv5e02$|oNTD4Drt zh%~SnZW-WnJ!;D7#fl}D`GHz=uS^5QX7K%HoxDrBfPPrPaOUO0twXh1>VIWC&n)L+ zo(I~yj(ta+F&*#eucorO@0sA0^{e@E6!^JpFoH#NoaGL?tex9G>FT|}OA}U`tpEop z-(*Df7NB!wOiE4By7Wqtf0X_ez*mrwfbz0g3VJv-U=XqOozC|PF*1$-pyX+Kph9dp z*aYG8O@kIc=tjAO^IsCn?YrPdB>W7RFQSB~1gf@gVTOG3z~zfD+f9#t)NBkVQU%{@ z$n)?*J4YRZG%>Q^WNlb#s>5k( z4wEu!sHWHJ_B&Xq2iIlmkVJ8JHP}=|s6SoTI>?B~1TLKOd21f$`CS_WDOg~p*Z97S ziQna>*3o(|XV7C9b2_*U?|*YF06+kt0NQDqdiQg^@eYctmJ{?5lKVW}KV#V}|=b$rtnXH%n+RR35(8&J~& z{#i}hV7?)txdq<6*z8;+_s?THMPfS}&Q3&wSBTeJKeZEKD{X*DaDQyd9D8QOh@EccI;fp+z6R}u&1(boKxm`bU(c(=YyrTs!xuNo7#H%UG{o! zZZsFJZWgc1pHp9EzqRpiYjc>X8FZP8;Gv^3h-TALVDVtKQKV0sfIABFZy|_xUX2Dy=L=~?YvUs{`oTm6-PTf zT8?I7D>2^QsM~6~O5e4WQ(4wH3?`!L9O^NE#!(?k>`9Zh)SQwt%XlpWA0Zd$2iq25 zy$N|oS+wU6tlZN!1$vP_)V2|ITVyEzUxr2`3PMLO^tHn)H zhD{;Up9`*e)jNp}x}U7hW+x4nyZV&DaPmYgr+EU|!3*m~1k+a=xGK2U_;#zeEYmVm zPp5dU0aKpjShPdwHrWp*p`>_D z*YT&~mX2L>A(eo5m!O@wdjh4k(On(N-Fv>D4k>&Blto<3DzxnmVHb89m8)xR%KwWt zq-3E{lSufaw#S=S<5@L%30A{*H~U3xqYv0d#K^7&oVvr2nd(Hy-AgzSA)4rD3(#%> z%^DmoCY+Ydw_AJ4?~A70c-?ZpXK6oUx4OdHyO(`lx%~~n+WQRe=QcppkjB79EN@HD zi9~D$fXUPIjWOsaMBue~P0x#f=`@NX; zFqFeL#nBUC-b$DR{?J?4nv??0-zy0PVBh{cUJ`Zim=RyiCL&9kBVXV#T5b7jVhUkW&fHd7Uv1tdm@fg#1QUF*su)8HP$@=Ws8sx1AI@% ziDGWd285&t#-#yh<@z znCP2R{x!_DG;c$==uc`9=(z1!uh{lPMKP#zZ3JD7x}bmXP+`AXGwQbtF?l*D%A2~T zvI+tNS~IGvF*5mbUsCE-*yoA6nf>~kko#^%B>PoK7-*hgsSHPVQe0lpN`o?bRpPhz z?KjZfF!SYqs!Et>a2dZCfq-6rmjA$o{(DanwEvx1;%MvaU}*f`T9f?u3RwR)3Wm1U z{~uIH{vT9~j16sV42|ua{y*q3{=d@uUtLuGTlxRqkLAz*A9>;b>DeOwe|om)JN_3H z=D!?UE>(WmO>9V?R^JhU-2GOs_;~It zFwzuXGvL<~jQo3Wd$qaQE?OK*AbpB_E4{zsY3(JaoJ=X3QGbv`posmaUTj|3cv*bv zA1gLH@u*eSTUAZDY-X?$-pF@(H{I4C`ds$WDq~hwHeb>93I@0~xXP590(q+TFgndN zXCt|(Xr7UVj?O%8R_$#ElC97|)j7(#-eMEo{y>|v#-j>frL!B47pe5>P7LEj`~ot>{5hzu@bStK*68XCAXe}pOw8~Z7z{8XBW|Wqz!6F;r!p!dx91M8S-@h z^m|wq&%G}-BKlIia70WL{6!-0v2*yJo+voSE3)4+ogG~L)l$$P_z0R+tN}H$C*DO( zH%}~_(%D}do{|9UCLZDksFBX5E$Q$sDT;aV{Ra_nBUGgsZ0n=~GX%)U_NQsYA%jIW z&M&9PBBf{Lq72XXqRKn&jCt|d^xtNdSBow_Qo1(3Qe1*vu5vFbm+|Nze+umf`$@^$ za$gZxI^B@PmCgEJ?KiUVp5$h(1fBFUh`t8w&9YVjv4@OhyqRNVA3`}iJ0IrG1O-~w z-aA~knT;}`)*#DGp4OH{lU^z;t(Q@mQWnXanvPY;H%1r*`#DJ$1;=GTBS0o_lBk5#ODEC`0KHPrfA>FvRII~7vY7H> zfy*90gnWA0_8e(I!AQW_1QEvl6|5NqOd>HFu`C#e4lvgAGhqN0A+^c|~w+AHr>PEysH6sS?(hFvHN&I9-)Toq7RmW`+gd*f6VdGoKskPQpi3k63*2uB2DqGipUVv?PPxxR3a>fXGBISS1 zY>ht2b%f0jcLgf=zU)tCH;x~gIp>T!tb(?Sw2Bso4#peXAag1iwr|dDSuB*jvgd8@ zA9OsO%R|h0SBL>jt6hz~jn9ksdg}8IbN6?I9v8zfg;~UFKtl}tn6)hUWR}NPrwWR) zMCjXfJo6KFLIAylT@smn=m=XbI1+G=Bh)mhTvtl=%u!f)`WTkR8eUee8Bw7?AwAFq zHsLh?LaU2W0IhpoN#l?+K`Uz$OasA?8129>mm!(&9*|3m%_wE zH=sKV%hYd(7&g!MiucA<_3fGiLmDDuCJPYmY+p9M2l2h?tPt7DaUset{ln;`%m3KL z+om*cXc^{(VVXA0SrB=hI3@p$)`of{dP`L|?=k${pvR{bfO!)^9A^yn6dxmRa%yZd zdvoha%E@(QTYuen|L64jp)RaF;arCJ3Yp5*P#>)gJKt<9eChU^)_X;v^_|PP<>QGp znIg!@<(P3*(z?!b1EQI%acDi5dUgU8dpG*2r7nquuk3NHIE;Vk95O4h{|ngltw(yX zs*$rsx8%H?D|-1jEZXr$FY*u_^O6gV^kRpj!dZD*Q;l!zlwC%J2F>AIzvAq~};eaBMnB8!gc{ES%_e=V^^SXy?)=|rvK_!r}us&k>}A)yriCtIgNg4cymA*iOgdnbOTF@tU{(EzWfqxkuDUgwMC;mX zlF)9k|FuUwi~PC1;7Td<+JMVLM^RsQz!f9jB-7xNV>G#vMtD~=`%QlN*W(}k(sc?-jci#YxO)zcV{?CB}h@%gb5Z51rHd!v) zi_8mLY4#Qzd0j1NXVx~#S}tG@@_!6?Ed;14d4e`eu{dSkUEmsVAnbi`PyOOm-)Md9 za!Vy--eQFLa{LMrZ^uknB5l${Ea9??pYkgc({HWQ37IlG^^-5>1DqFqEv>nKUEOW_ z98&T+lah66uyY>o>sc=1(@A$Vq;PLK?T6>#@2V`4`${a*gNc12hcbXWG7guL$_7p7 zxX)Y4HJ0I0ck7XVrw&zsB6uZ!L|N=Oo7+<#URI zuI(MtS#5n(r+=`T&*X1gjXPK-PbK+z1l-Dlpb*-$y&TgoXK6k=Xe$~*_QakqP10Fh zsIhz6Y|brDRi3*YlJ?9ke_3K&cQCcvJUuQmPT#Gjp6hsb?jN?Pn)tSzB(KIOs{wN8 zG?X#b7Wj{de1xS|qj~uHc#4tL((0Q1sGuyPmhRR? z9i|u>It5HHWsIpfx(c9If7dN*n>q_^z?U`%2H2n=Z@C06D^1Hx+QY z3Q5gAFwP5D)pbdQ-@O~nE)y28g=o-!W?ovgmFv7Q5u(>uvQ=2J59}=?A}PhsadDfk zU(Ud9=RCHzF1dYr%_kjGg=I7-#^kwlo4tp#qFE&}x;rT=EwX1)zGu%Dt|c>0zlk-R zzRe6M1%21VPq%~2M{oCskza$AngRYeF~M2FO=my;$dd=x^JNBmxPmi-J*>m07>sg2U`L&nR z0rHEt=T4Yh8aHOz%1K8{Y*4fI`h9nXN$|rBbL(=iHv5dlSaEl*$`L2~Ot;0#zXL)lh*L+=DkuM4V}jJn|BK&3@a zXSlwG(xm9AbC?O1X9*NAb#V(jJx@5YySGGs$p-$Xn@nf@zhAV6xSgnp{i{x(b52WE zSy`7Auc0@#@5tdXO>-zaq{)X?JYPTF5?PM^k&y6XJ66th@^;~?kG%-$U731sC5Ffr zI8qx|M?M>&`xY8bu+ccneIh~RwYGrUYEpXMIaC~1#GOy%DfyQmk-CRWXPsR$$?;f= zUAw5kc$S&4Q?t1Q$-YzQG3FS19*P4x(QKgNjbj$u-9zU#**O@SE;^vUS++ne1 zf{TN1R`3&g>rW0RfN7TGdQ|5N-KpfP08BsGuE?YO5eGb)_QwYlB5t6S^(%i=kF`^8~!_CjeFEdaU0%w=zt-P*qr$EaGT8%1;_ju#1AKLt= z!{Ybn2XEBl=EuXySLC-jwloAEuOG*8wxyZwwx0UcSFEfpN2^g4Z@BD<`TWKs#d@OK zv%J@v#a>9_Wl~Nyfvs7(C56<(Lu-gC>c@e+6u%^%Ev1E16gTeDzbB#{XYfP+-+g|~ z>CAXg%Mk|9<94OD5tse)q{}8kPW}mRBS8EjsU_s1Zo==J>wy$1PHBT|QpZC+Mpwl9 z>!cNV@$BbS+z6Qp)R*Um2@3W|Hrac{vDN7WF5T;TsE34$p_J!E0*Qa z?u8i)DkXBQ_39eQyEc$=UYwT^JP<-=W!NQbQQWgkdQ9l~ZoP9I_szPYo9ESJg&Eu) zGO1_+RDX|Axj$((!iqNh>DJ3V<=IfVcp&V@nM(xtLSlF1_ds7Z$K4eF&NKdk#O~-0 zSd$5fatsrvKqce>r`$pJmZ-A4X@~lpS|5j{9n~@M97SU+RA!O6VUD*YaJP#z7&xvZ zF-{b`H#}s&t0ls>7B=QA57#L~cotBZ|5k~PE&PJH0!`c)GdJWWZ)N@EmFh8|Uo4!y z&OkSuUTr5QZyLo%o*iJ~w6y&-c zPF+KPXbW)J8)9r~oww>FSE6W=VwXXiWW(fSOy2dCx}Rnxl6<{-rTFyrcULm`Qa9D9 zJg?(`i#fAh)aGu=3EY{}4`SNE~)PgC#Y;9@76!lWxI`XT&*CSCro{b?CKW z%)A!l)L{hOf%!e0kkZCphd|Qx70kSU=y8g{@#EWR^==f>lrdb}pyxp7ygt%t2X>x! zq}Q(nsLEF{(|lTct*_(r9DxFI({8-a>E1Zz7pl;4ibQx^)mJC9!55nBTZr$}$(+9E zBQQN8i+`S0FeA32t@XtyR=H|)s9OFPd|#1Op*hbJnNfRR3EPa|jC*vozoDK4)z|lq zGPzr`VRKay7@GBQMC4$mG=#0#9a%6TD2^DCBP)A?zXruE6oda))+S}ERNi^=ZS;Jo zBVA6`s7)>NuYEM6FeeFlKoZf!h(F_77q?S)Wpy<8NAl z;ab=Dp+ky~*b{!QlhbeDa@84vFCoW=>c@YCpiVq2qBlq?pafD*GX(sfmYvY1LiiTb zgpMFm6O2tnZ|7B)Pi9xn;9JfmcI6|s-xLV%vJo%9(+d$7-OI8XOOZTBskPrYlQd1A z&(F)NMkM1Cl`Ad+Pfq;4UKW+5w$AH~RVA#+Hd;8AZF~0x_g3)qc;A834cG)TZNgZd#V3Bt_Z;EA#zUNT(&}*xI&TNTN8&}$(KuSi2z~1t z#pVcV_0{Wp&0jQ~DFrh5KjTT00Kk+*V5J?I0hWo)D!13u>*bzD3fS`+X?mdAyu554VamFEBqi?4N60UhpWextY_?>4<`bLb!v97f8 zV`J`8H$hdUuX5ejWA*cj(Vf=!n{l%*&l5|8%dfMw#qjR@Oy0U*6<2SSbE&%HF4@Sd z{j8Zy!`srkHJbyCzqa8TsdY>!3Tej(BAd9{{@t60^2$;ua?P@x?staraeA6k*5}6s zy#M<~%_qj^WEbZ2Rx9Z*$nu%+xZnk+$~i)L&cjz8atQNN_k;?r7Z1o;d6+LNYIKah zo=<16g}fJr>7sFl{c`@>Q82I&LGzc3SJcKx^m|KdmknmB>?%(`&DA=@P>&8%w`N!UydT z;HAxhyQE5A2}>{k1Z~gX`kR(apHmY@^M@~0pbQjcIi5ApJ!_9aa>{{i!cakPWr%dG z_}sB+dqD>XwT>pRUS7Y}`o!mn2qLsRF<;wP61+)7H+Isr^wI$}mY|N?P+<1-R(KI{ z#8{yv+nu&b%Hp?$T1H&>6olMH;68WpVfa4h^HDulIo%b$zCtIwBvr6dI648ANvRo|g-91$923O#SMclUas)&K&qgo?}-B!KY<-|H_uSl?Ok3!SM5;>Eos1Lfk zzCWBxw^LY$9c$iL*t4SNTs-!@xc^J;J1b?)pE?ikl)uSnVgpCP8(fc$xV61Vvh~I? z)LcVOoE6vGP31C7e1*-T(4aS+rl)n*k$&~diO(WEhjMbBq#)%EVrI!)(qB~oc4h-0 z+!t<|20Oo#DchX3)QC0`L!%%(;;1H}3&)`SNZyfWGtyd=!(PVyx2>AO;`f{E>{?)T zx#Z(%Vbab3nsqUNQ@+?$ltZ$_6yU?l-BQek6~RNKtduCT6^nh$_E4WB!&PJ;ZTES` zovnpp;sD#~4_pNRb(mc<6$gYe#hCsy5{$d~xPL0)-{vr{5y#5keaE?q&}=hLV_u@=u{B`{|*` z9pwvrN-vFQ^}guD5-{e^S4_hY7PpB1bKc-RNc!<2`-pY{@1!fo_!fXV#{J$Ib%Zbd z+0P@3Eu2sSe$aiiEPj0cjvl&Yoj7;SWlW0TbDCP=9^E1L{?%U^5hnkiZ#j!?-xBZd zUCi*M#%un+02V*~BG|6)o2aNh*?Q2$Ki^;dfD@UAYP5-ESMV`XpKVpyo9XPY|1%vk0 zL+oT_kDrk*-ShIV%|d0!ldT%@fMc2jmzT8dS%b*b2uIyIYqI@JRenC-!)>InUrlRX z13~3FLG5lNH{j9Fn6^p1BQ9$45B-m`=gMe_jCF(!p;Iw-DvS-GZ*O)ea!mO;3ne~_ z;fz?OXai&3M`g#;s=R~)uTNEQSCAeSpNi$@mblfrc5=1{J71IbgGyoaV?rIZ6x6Z7 zjP#7$Bm)?nk9@`U?!zGqD`X$e`%k1X{q3zx-)C+gJo|TCmBpr3A3hyj*+XQHMq$an zjw1{x)?+;?XKfb?(Ad25y%L6Nk?GF|=PmO(a;%}NgK6@sNRzo6uSNYCFr;6c_o#H< zvBIsB|76uy7Se)d&zUS49^i!6KHQo}6CeYS-ZzWP}7h}xy!}J^w_Q!DyD%e zhcL3^#xc5@{b+9#F`8oC%S5;Oar~1K>1pQ`Peq=i+ADhb%yiu%#LZv5HQ2XhM5 zu}+TfFN@nMQ5wKf306;>^~YE&Ri6NR&NxW)Pg@j&uoyrEgV4?=gpm^S&%xu>i;M2W{rpi5i#J0N%-n$f z1R|Ck1Mb{mnrMg<=WcvlOb>kq-$+^xn?tfZxVZ+jiBMbSjhI+!qR)YFn-?Gbj=k*M zVX#x#E8gv`D_q)WBoZ})=nf>@NSdkD95RRgPrFb|xFsuqn_Dm($>PK@ZrcjsyX$!|LnhJ&+WYs=PHQpND`akG2Wf7ZPG9iSW>ZsOPe2)^slH~V|jM``E?d_ z5B!&Ngnh37YSN&gL}aLA+S5TN<{#CnY)EGoKbV&BbAGB=ag5b$M20drGjrhX$bcRb zN)r6iG~Z@%KtpmAF6WX;Ib53Jm}Fo@Wz%VPLVXe)>eVs!z3<9T7?3$;Gtx8v=oTgdwMrW{VcjEI%@qYDoKYF-SoCN~xD^TvbxirGNQfO*LTzZ*#W@ukbeaFO=YIle zO=4&T&$8SEw65uFW?v+xQ8^Xki-%Gv#0mQ-o>*JNt?*j?s2LjdtiG zLAovKKbHU6jSMnEe_N) zc}vUV$4|R_wc=&Ug~4%tLJW$>=09Pu6crTpI$rF0?9_U;*+F*_M3Ob+)mI>_A`$q9 z3m)c_g|cuyH?FGi)!wQbs{jAs?H!{lYubL_*yz~m*tXrV?WAMd=p-H6wz1ODip`E~ z+ctOZ`+4`??>Xb_an7gnWzM+@SIw$*%`s}!?_XEx2e7(8@h}|vGOT$@>yZHQcPTV! zD_=`+Gf3NE)%Q4iDuEy9+CMkP#*L?1U+qXej6RS9yE#G z@IZ~>-A+MG9=*XPf>s^^n`c=?e+{e(0IWW^%OfMiK9<{@DV&V>h?0UfwPp8e{vgfaT#}XCr*Rmz!psh&G4!~U zZ;{8Yk22ZzisfGC+qW8ohYOTWft@M;l{`D{)1#Ipt5{{y`yJj}qEgd>i{=ZzEth83 zF9y)PlWRZyr7jK1!+Z{sfdaxSs?x%H{WvaU-5^ARYd7cuU$UO|0P>7i>BIlzjaT9; z)N^!PhzSDCv>tPelt-=@z)Nl)XAN?zeC74>W0rWz7_-FyOcCMMn>jkT8{_U~N3dLl z^0Qo)@niPAUP!8%=#yFj{Ub5aZtd+d?j>nQ@NZb+XPeKHg46b%;P(Blzu*r+q#pm? z!y*5du~Dw62tB5D;U@(Tyx>h2|Jtj-3-9~Sda_NPZT@J;L+>m9;yoSGx8kl$F{JjB zdZnkX3b2n&ba1^pjF3;4ajA^xN-(v~2scDIvegmN8vx^4CgKk4HWpFyj>W*Wq+$&3 zpmRG)StX91tKZJRAlfMhV7M)L;Io?S#-W`#ZZ~=o-~H~$f|-Lh_8dntc=}{OP|u@Q zU%|F&HO{-dsw(oGBjFR&l3I2!`N{M1BY+Jqhvm;S-bk^&wR8c9v#3= zSIK8LoVp!khai=ERWmwl+EJ_y2~7<+0|QhdJq(GR#$$W2Z)XnOjSbiJ?4RY@0pxsv zjAY4%XiTZ5nWqlN0hE|CPfhgYW?aYA-7shZg`X$G(;PC=n?C)B(X1DiNzIklVm{HF zaJH`B_thEe?6a;zcf-SUJHp1rts^k{laYQ`{!Gd^k=O_DS$Vv5;=&J>l3{+Pop^ur zAD5~k3RZCOcN|qbU(daHSo!g>3lfUAW)LA8unXp75GjnumL3eL-0qhD&wQlHyn`W= z`G3nEeAV*k)N(G-9G*bm&$0v-8|GhkwU$O&r*>|H%=z(7eFyE`S`?oT%a3?8rYacKPDi;eX5PJ+S zv;fsjWb%TRr^VK-lGYh^JQ;uh5g<5pN8a;_@bN)j(gjvW4)TFJy9ttx1L6<=(-(w~ z(z7d~%b@ShJuPSG&NXav(Tqf2{u9|Zelq3ZldC>hH$iZc$Foz!uj5S+;J8I>Ky>~o z+{wN7=}bcPnOjMg`|w#-q_^@(No_m(A-Mn6mGvRmBv}?zQaJm0Se-U-=N<3?y5h-9 zK6aC=d%|GgVqixYa|)7awam~6hS$&L zGXRh-?-X9sMf{o-P>Hvva{Z|@0Le@f2XtH5_v@e*bb!3wOKrK?<|p8pgbd4itR`!Hs%f8~fhLv)*El>(v$4qbr-)-!&QL zg_Bn&?=OQn1|=v{9Ku7@$7MC$`oDr+z@ziEprfSs^)*;A!ZxnC&c zHeb5IUp#*hX+Qc+7I2fhS9#2jB;&--Dm!xvL9yjH<1Dw%lhEPi8Uw%die zwnO{wSShB>J&DjCkeDk$ox3C8S>Ul4L$(~d{v$g%*tB-E^no=!h00*p;H8qOf*VEk zW5#I&*|w|c?HT*t$3*e@xNd~ftKe^;#dEAK>+frZcP;G3dWNz$^8FbqGAAIKqu}YWqU@9s1{l#4;$v#i1 zf+V|}x3W)9k9=qXAN-SIv7dR8(f+Y-2B*oN)*Uzg)x)W1fI-^x%2I#?G5j7OCU%gZ*r7{W;i&4`}_paftbOOHFa-O*W;qvL4N=4g6f-Tou6tT4ks< z&ht(D&A28L1C>DYNQs&Xvr^x0I!trTCA<8e!5h&}lkuZ=lm;TIXx!u!--vms9?>m#dq=^;j1o$vE<{u6ahlr`iqy~?_R4SzC` z4~^}sdXrFlTrbeG$y?1&3C*e0C!*=c$qcc|9iM;7Nmm~~?pY8N(>nJT#i za4E)y!0*&X_M+~fto3b5<8Xs)JY|%e*o*I-Q*S(6DxySb@lpF6o+=Vnk)M_dgmv*rK{{Vcz63^JJyn3 z`S2~YyO8zA_~95Ce4ngAVq?hjEjMK(DGUt&2i(E;dq?-MY3Z*X7ZM&Q&Kur`Xsk7O ztM;>%3LS2=9WR{2eSJ?f8j0rADSN97EiK(Uja5;OFE%KAgf7U3p7h{tv*%rfpg`~4wzEeDNC$S1&ur)9LD$fgQDDoe~(hJd9czTe{1 zIt>bSk=$)T$p2zA&Z_Q!L^(d81i#tQ#pSFptY!3^9+TAFa(rlrA*ciU9F8+1J>@i~Mfn6IBkwHGK!lKX*r2;c8B@KsNA6>fqGg#s`nZTT<}Kd-HTFzXaHF9T{fTksfADV& zxZ!(ih=;sB_dR8$Erok7ijy3(w_vHtg6>Tu14KD%eD=GUY%E?_QC}#=PTcjdn;vH* zL8Fu6g6`ZC<|HZ(?*9~4aPQO&dBJayFsMHdLLBsmd^gAU6X{@5;xZ^327&|M`z!|^ zXUzXeAr6jboP*Eb2Y8XJ#rao6)hNM2z&B@_SE{(;pNVcv%~`w=z`Wf4XK<3*F_j^& z4zG_s>0eZ)yO4a*&yBF(ag#v|F+W<%=_+2o{e z_mf$h-D^eqw3`~%iJNn+j-={aqE9N%L_%Go+m!zfboJA%)!Vbuo%eJX%6oN;E;|kA zL9!H`xt~3?eiWswc93;6U6!;F%=_o>55vN8x#*q)QI>GX5(>nV#)uo^;n5*fD20%q zUsxs)X-T z5^TXJ<@VA}Z3)d1->dHG)TM>=`r&L3d&R9rUAUl0PKfd^zP%4kyCq8hgq`Q;hR4)I z&VGKya_nKDbX`nrf8&3WJ;|0zXNg!iDzQ`P$)h}>sk94dvaGg+qzI7Fk2URbQ=vAkRAM}dx! zt6Fh~*$M;q#~w)YEu@Slc)GSTLEd3OPQfH_`(mp}Ln8k^LFS3!VWaH^G{A2w;4tG`hg8B0JAFl>6 z^Yb4AvQqJH27MS5__MyG=5NM+@J@euEQsBZK`O^L<2jimSmd2a!ng7_y(9nHjVIXq zUa?U@H|3*4z0u~RIvK3U_XT3LZ@_Cfg&2=j-1EKYry)X26~gUzy?pT7|L zbh^{{%aI%L(N?ZH3xK~`Y-?7%M}4zZsY%LZqIcPoj$L^$JKG_9$v#pL?t*?lbXcFU zu5L$@940u@uYH(%DQk$}#Z>6j=`61ZndH@U*jIvgZ7I{GaHE|_Q_fari}N!$*FmgY zSlU?Ns%M{r8Y@s+>B>KJZwK97?c(+r1`?TVVAuJpl-8%cXCl`yTL`;D{PofCbPw8V zWe@xHYsWjBlL*N>`~uUnc*E%d)1Zle;LL4SOISg51+dv$*9)_#jrv1C4~DQb#E+MS zS8{FFt+mNkg?Z`sUGt;bs(>_ygIfnkW*qw(>}*a@>--XVhfgrNX7Co}^qFOR&>hd7 zK(4jhTxEEauHGAajZ43D0UE*mNTU-N*39f50W98OYnoa=2T}54OWqmiY9fpK#_-7w zw;M~1jM3Mkv*f)FtJ-?WB>(Wpg@aS}@KmVrh$@eA41lJtMU;r{qYV=|B)?L4WlC^X z_L2itFAIi|-1t02R=RKhohBl+&B$(UJT(yd^CBt#b{};4mcC~feLz0cvYwu3fF(;A zT_=l$=1hmgt8(5#Ah&5=2DO7)wx9{J-uz)JQXy)(YwqGuDd)K#`?oipZpMblkgPY| zOKK~~bX~;EgJv44;VQOhqzK37yZmfe-r>E#g!2>-`di|rfOHDi_%wD7+Pj_(DO%Fe zN~D9xNkF3mM>{SINH0jU^V6X|bNjJZLwcu=H}elpB|8_fK+~UEsZJ zSNTP$nOQyOa@xSWB6TTUMADn`;V6jL0s9?aLzCI$&Ys>?Xxrj-%AKAk;oGTLucLvF zne@^@=gR6~^}7Y{YkMt`vq5gty{ASl=e?(bf$j0o^7J91@1dW7{b8v+|I!ui`RXl@ z|NQ(Czhk1H!*^pv@TH-4Q?ns-Qs>DST5tr)Z%N&Esl;dL!Fx%A-V|!*eOb zV`;&CiNbx!&24GWbqUjT$;@R5=)45wyoBkrWahYJ=CA~`Ujo`K0d1F{Y?st+mej46 zO01SBESKCY(so#72XIQp5LDDd%E|lYVvOJhnIMg&)JR@vnSD@RXs0&AK3MJ;?bx2@ zy!XA2-+7`o*DZYPU%Z+0h+c9fx`^J}5&RL}t?}=dA_eXr!CCb8Z(}Hv6`nUf+Q8m5 zaHB2kzE7E$u>nH<-A2-SqqmR1h`mdJ_v6q@Lau7ybyXB%4@x_)CtfDn719 zOIn7PX-H{JWJGld--o%TLrwk~JIApE#!Mm`bT*SD95 zZ}MiUw&vDhADol3g|~*;$RaS$HT8n85CZA69f7ny5#x_ei_vOvT~TD}{LY^+rHhD( z2}~tiXxH~YRcYKJg{|X4ICL|%()+8Ek&g`7I&*=*WA_y03ki{X^U}yELdS&Y`(%05 z`p!DC3evLXm2H+HWlmQHqjA~aD>5&r#ZYHeXAZT&lNEgsH2K^bqSkHTO(M{~ z(>ICfR~9jywttt)C!@69l1CRU1{inDdPV#qkDYv{giD?L?0s|9GOCtk*Nv}hbR5)R z*bTg@Y(H~YxpqcXln(_*x;Q$<)WUkzbB|awVZ4lG4?3zO>h^pRDt`#?REQ?IArMrb zwk38t6l5pnWk-S@@UMUE^kC+(WB)OBl@asV@5%a-A!Wf(x{HUKF}}4gOpxI}VM?Ee zy?`T2IpN6NMMyi?g~{D~#SH*GWe`2aEbY6Cc&W~^-N8YbTX@M&ER*&c0`wc`Jd;%< zG?3^XDU?A_!1bnr#poWWx*ma%{4<}0G2oc{N)9hJ5P7OA7&H_mukG&6!U3NBNSoa$ znbXI>0a7_;WhyCYc19rR)RB!zeG6(M)RQQF{jT=n=ZQomS9$r?6aJz${2UZKVLU;E zZ;@;{c;@2i4KqOiarrTXIHT}j!4i;1dBaxm zG8gfO14V3eW447}GHfJNqZrZBsUxVdy^+ zp=bY_L{#A`m4=&fLwbL6_dxUD)T~co$0#{F3PNiZYz7r&MS%)d($VAv6IPUqLgjF3 zzDAWkH;J$Qk{&maIX9`QAczJ!FD>XCddQa^$Zq$7(|T>Dbv?pMtDkkKR*;Jlfn|so ztvCd7Y7v|e!bqlgT~(@dETsZ2uNFNu4?=4l41~%$!OgD$RbS#_ zg(HHLAu`0;rTvPjIoL+)sCC>Ldkuv$^dD@iH`7aNz4^0~ku@M}@6)nVN z74zJG<}}X)MEp6=xc+qA|2c&UfLY&?{A3wn>l?k!%H^K>?K-qt)7;kRS#lPmj2$rz zsnGHM%qfROS1c=;^089FQH8c(M9EerAD4XRataj;#Gs5eiaM@vi8}jOgAX-;_S_IZ z&to%97;>=g<=Gi|n_P^dIZ%beVvc+7e(7^yOA0?D=X-9w9}8zHs;SngJ?KHJjJzAi z)2Q;SC(b6%@uHlmW=g_BrCrd~=L~mxZzCHKN24Pzv*VpOe$*Uh{Fp$^MZuxO?5tR^ z^q$P&2R0km9rzI=7?#%`%_dY=u`WSkjj)UIR$8_ewL++9QNOGm*2nLnl851J7Gv@2yrbj1); zCXLg-1pDXVGR+HEjxW~S54b89;n%hP>_gmC=JI@5`c#4`1#e?o@=k|X&vkY7k-|7k z)pi!U7><j#LtJ! z2l7Huo#=AlwK#8sX*uR}ow-RjbLJ|jL(1T3jm+J>m>pluL06I&NWWT}6(7%wgyB|j zGdYq&4MHX%H#;GO>%KDdZT6@K0`d15zslSBoZPh|X4Jx9y~--}mSS3~8kEQLYJxuYkZQ8f3gI0-|gv z#=gzosT-#xSoa?d5 z&-k3>H#k^l;OIl0M5l=vIg9YOiEufby*G=SjEP>^*F)DuJmxzN{N)4GM6)0R%)Xkm z_5#Ap^C|+W3M9&U;^X}^=_48;YS!Tf^vR;G7$nIRrh~#ts`)1sxF_`TllP)3}0pW}cZlHQFz~mPC zzXan;sipPA>B@J$((R~Yj%Dmo2I9QNCAtN9gr~)L_wz$>x@F`9J_=0_*!F-aoUMi@ z{DB5yLqG;0n+77Ot=X|HPDFk6+Myj>>#z*vZvGxGH`00IFRotgpMF_*u@XlCYaD=C z80CAYJvFQhU<&ZL{_>!s-WaW~qA%-~glEv{w^8{1h?eF{P|^4 zQMpP}#&K4)GEQ9|Z*_KsbZWYY)eNH06IC}E_BVF!SAwU0NE^V>=6y|`%wZwpV-ue} z6pf41ihZfYElF8`YxAafT(*KXhBV7|S6#$}4e-rwWD1c=D7~L4Nqt)Lwqs(k75Cpm zI;*wDG1a_V_;)^(qSMp$5oWHh{FWb3%ts*SvHKj!QsM(VDWuEE7WE@pG+?@@!0WU} z2X@7#i>r)H%J0(ds+AA>{}R~FWBW3AL4T}}FV?P0Ohi-v!to&BJ0Ty3x~k;jDNR;> zv4Yj)6gw{N8dOw;!^{onPyQydx1_RjSEb{uLEQlJl9R?};#DGd^Y{lG(de7h3OQG* z^k1{7mexx9cxwr%ZOVbnnurNu%7IeS`aoKV=;CrRyUCOg%r5gj2Mo|1SR>l~#+Z5e z8ApTPAxw*_gH$WRP3M75uB>Jc0I}Ztnt*UDWU&LL2EwtVmWoZxJgl2>lk$`56H)1# zDQoIwJ$BIxt-V@UKS^q2X#_ zQ8iAbtr2BqCpAZKjVILC6~*dRfVz68{nOI|G6vCfex;LWt8$ZyQsN5WKObJh2)ft2 z60@qzHgk@2`blM6MfF|<01l8b(i5%&h)wO?zE>?!1%Oplh*TKgYu>B5&8yR>YwUY^ zk@MBP4Cy4P5+x&1zb~*H{TcRgHrA!)07tToGTFGPxqm6%o9SU&9GGifAu-@BqBpqM z0?*q)6=uJLavo%Q!MN5Dw(RXEIWkuM=^}tfC9bZccRYI<4&GmcnBUCdC*u&3)iR=4 zZKbEOY!Fn*Zc0w8Uu=>Ywk$Me4qA9+@ku2s-8}Jjy_h=?qX!(pD9}W~lPS$bi`AJHK6*^T9xW~&DOh`{c5K$YV|Vw&B|$uI@KD9(kq2v* zN4KQE8)j``-RW5$Rz<^kL10v~4T&Oz#WgUkDI2F`r>|vavKn888!4(K@Sv(?LnlE) zaLDer5sw2aYSeTkMXH^Br4~W-6=|Ro;-Qth&rBaeys>%X__jInFye)TMKD=x_Eb>l zsD4!?pUZ&AOo>CSt*>euJ#jhvH&U5J)?aEpHMq8^XT`b+=cMT<^GF-xIHb~F;N1d2KH3m0_~QPf=;l9-@_RA zJgaHdoTpH=#urLAlr4!nQ48~L(|TQ1$)cTt)lSsIja@3Uy{|+c_xi_5cnDgHESOaZ zL~e{>44+}?G0JJK@$MWhAJ{-&MqsWIfZ+l~d!;Zx98jt>>US(o z3Z@u8Uoja$nxTqQE1;fQ;aTG3noIdR!yf&T@Q1qP4>8`wDujRFGX7YFVMLH8MteXI zBu0Bg5D@O7$WU7(C2t0yMGG3|h6a**JWdB=k4;p+l(-b<1`^ImUG$(`D`c%GNJ}ja zhGowb&Iy<|Vmho9;?o&;)+51_ozkO9d~$SN$_C)NmJi~AbHkfcx`O+9=p4<93A|)0 zE8G%=as^lw;oMNXQ92}J^<<-JK%%sZ2iDEjso0@>!MOew5r%q%C;$*EQD#gIDt}5r z*F#DLe@`pjy8r6vKfQ3s6efVYoPMLBhf`iM9Bw)x7X8RWk{-r&h5W}lq|_vs2Ey}K z^JegMv0^(u!VmE<|K@VX1S(RFwa(t^5}(+F^Yl>8qQ35R^zd7--1R=Y!4e;42Qkv2J z<-Fn3VLvw1m(`~kuAgUNSH1zJjsCpE!oK-rE<=km-2oHL0R$m<#voye3DXS6rBV%Z zh<;=X>uDP+x0?=29vKSIzy5&0xsl?rC?!7$qy&46yDNw(Nz47mM;wEAn02HGGY^+5 zw7zlRO&GsGEgO}&*&zM$n@^Uq zQRgoQ-2cY`VTVywf01yW5{v2=6R#q8)(GqA|6^J|hBUmjy}xL9G%nL+YC>iYVj|z} z;#`zKj(Kz8EyBFg{)9OV!#Ta6vOTRG9k6FptR&fE7t|Vfh91s?GFL`BERax!CLGO^ zs;X!>JV)&fc|!H{M_BL6Ma1-k|1lo;^?B$C8!HDG50BFvWm4EI2OG{!udbiies$ng zjs0ureU;Qmb2Uu-V}-K6{y@dY_%Ek;Jkkmx@z-${33-#_Z@sP1jc>|>TcK4fCB8(o zh|g9R4(Gv0DpUE-jh5PPZJs3Dh_qWZIlu>VrW+V!ALu*xbbwyf5|w3` znvE7{rGqbePr<@#Wgu?ri~RmKUdRb~d>eS2plE>z05TGPctJMqgF_q;R;(5Rn+f@y zAhQXS{s@NpuYuEQPi$snP4|gzJY!3&X<;D@IraCepodqV zgLZal+N8o4FEi;NXTVltxmRs$tn)7A;NTn+Eb-9E)c+lBV@PiJv4iV@GH*h?p75w- z851Y3SXPfC&AQ*wvjIO1Bnak!T&EeEhC0vYWm*4A-2Ho^C;q-+k)H?x>=PR%V zv;>Rq-+IjA1RdbxgDd4M{b(X-$9p=U=Nz2$uX6%D{b(w^y`>bR7HFu!XDqT6r<_3O zkji*r;XMBe?!A!hTVd-yAspb2$;lPzyZY{rJrDf(stw^8D+1f~Y zqgRC(hdUj9+=ai|HErcwe&)MgKGJ1WISoZMM)J>!)3*K;e{Z>SxHz!3hJ!5+F_b^ox4g3*S-WJqz^9!mz-j_&bMpng4M6Q@!F% z!IyGiU&bFpf_;>Fq5!rSMVs^9&Guw1qkI?E3@()MY%LkbNumnx)wWn1B!L2+*?(Q(D6Vi79uA!z7X{~$iTs2T@3Wn?*L{g%EE!CuYT9F2UECL%Mo_bmk`(nlGtx?^7j z(eICb|{tWLjys`(-aXz!QTyhBfH-%QF|}bq2dV z0Ol!G3I6L;cQBsW5$!ku{@PhUQ;Oje9Q@%%q2S|=zZQ4z_}H5K6WvGk&|hB)X>~l} z_x{SRTB|Bjo2d1)QKp*`fsVT=4FikXtu86!Hw@I(QX{ijTWChy-x^NPX2y61kQD=qeo0RcChvw<>3kPGdvKrjO;L&!zuJO_Z;cs7n1|O+Ej&$cJj) zzi{J8pXwjQz_v5E{O1rG?k99Jg{GeUzgiuzksA@mB-5L|aV|DNj`1gjJbyr+LKzkX zTrRZ3RW9H7Q>X69Z`wt{0#25JC*)nPBY?#2e{?MxD9K$JR&O5*;sOW%S4`Qi3tWud)WmY;gjz9fZx!s>B7e z_f}5Whp|r)n#*LVhW>OskvgiFOS*Vu4fOrf^Ympu>OXIE2#>Ms)(!OM8h_G%k^Sc# z`;G75?~SLuG&(fb68_&*KDwTaMQ~e_yVIXKcclgX1TR!8eM~Q3YMgGmH&+$X(?5GM zx;TeSHv(_V(I4j1T_Ep#FEl#Q(gC#i|G&$8F1yq6Sv@dKvrSH-KXZ>Z&;ONCeT}Mp zzJG3?LRte2oN37AZUsY7;UVGOC+d6VbQi+A-`!@oU$iuc1Mf#`!>_9%{qJ)4{ki;K za-_DYPveg3f5cm0i7#4ruhXB9FTO{Wy;iaS^Q%P;hWR;&&QQcBocYKcCzppo{`a57=z`S{X+)E)11 zZlE9X%OuI>cjJH5D`vYj)w1Cywe@k9%dzWJJ}o1sKu^aYrYY zl`1RAy5M3_KD`Ia!%C>l;l#9DF2F^hWf^OUh2{wAigP}lz&Ti=N zL(G{rhR78NWx>G;{hFq8|LGRfti-Y&nLvT?fKM&*FLJ*nZXQ>@AMI%vGSY^wBt15E z$mbwcTZ3Bh-&U~&v#Kw3MVi+Sor9v#GHFh%kF4A`5z2Fn~J9DPRTvR3ENJ>Op7(+Ik~-=nYos| zn8w5=Jk=`Wp0gY9S<;_7ubuZdl{~W$_Q5ZWZ!Z-+5Uo1bOv>FXHg*4t1Pz4SF+>X3ccS zmGsaAF>2cDcLqEO&(RkHxLn|FTo6OVP<6=37^pT97|w;9Cwtebm);xp z-_YJ(En=E-9V6s?&Bjo5rVUJf7e(a4!i(cd=brYp56f3?>THJEnsi5@zt7R9Jo&;~ z?^<=X$AXEJ*TVF}6dRKQqwC9po`6KuIi^~J~YS+{b zvm2O``==$)JF}x|;7;Cz=QAHh*StBoT-^HopIu4_9e(l)qt+55B zK2TfZmoD}{(FOTj*rlS@tA>jYA7kAxw#Z-f^&(Y;bbVEx0b)L=>-!@hz3D*GJlr8j zx=QN@*xQ?!@YXw)-}FPGp0!#+ZS6+WHEgikl=g!oX2r>Bh%fW(jo6g*l9$#E)l#shdSK0+W4`bK(PS4#4c6-dC`hJy5u~v+b8xiAyjL}mH zC4hgbSc^qqF~q#>5cfMF{PV!37C+`Yn>?M5TI1|P4!^gJV}JAiI*n$#-y5L zHNg6el2Pwu#YCRO%?WEvZBE{rm;w`X0-r0m*#+R%jsv+gwCWor^#OekF#7j4&x|J3 zu@*r)t~xf&E(@$_1NDh3HWH~0Gou?bRvK3gM=fpVi*#l|xw->2cA&8RCe{rm}c?ZjhsQRhII?WGVebuR8Q@{vCt8Bf*tLJpfb#R=IA?1S?RNZPA-|P2~W^9D__te zy$4s_h{Oiot(qal%-e(-Pe%rc2$%W&>uJkBUSps<`qt@Rj|g(S0ZHfgw+Z z`rb4pdVC2mtF@(o!OW`T6=P$beVSL$RX5JX^E0%Y8Dl-lMAd6bg2*J}s7-Y!ERtQr zd7>JonrI9oLYUPKdoPmNm9mtu$L~9p2=#WcfYtW5N$`eM6&sFdXX?C66{zu&X>Ly7*F@>fXy}5 zy5DNPklzQHaJUj`Z@39Sa+PbHgF4yH&|(#ljYtyHLDkze)92U+U!YcbtcB2%@eFQ( z!>2xH@u!RtWW%4BExP=MNYlWkV6D44Zd=~b`VKon^i!)Fq4eG+FM3GfABti@tLRBu zG7joIXe3j3hs*Gb4=9$CmD|d|i&*Ir1PGif zJ$cUJN}J#J-&M8#AhI|9U3ppPFYWK~fjF0^^ROG&3+P9Y@q&#ft#r!n)U*u!fnZwI z)dXpgItqk_BN=u~uh6Qve%_(jy# z*^G#d<7yWM{u@zi6Sk7m`WvBfyhLHl@$FWtn~HBm5H1lF!0P{YZ(jS3_J}AX{wQy3 zWz}!9h}iHdoCRE!BDvk|xdC*8|9Q9=aPp5os2bqIn#NBZ*lgHr|81FB=EJOf$>E?s zS^!Y8JVa}>y3nTc4zv16c0CY-44u#{uQ`^cP3M?qs^3VEwHQjbP_1*;(`GHW^na#l z3=`hcQTsE>rb>1Mqf8S2PcY5pGGPtpdMgA6^jau)yO@TByF?;zP-B_a%6Tx490(;* z&8;J>XHIs?Cy10}cq;=sqg~bdJI#Tc9cf;Y?S_N$1;N0DZ2~T5{x^4lep3iQInjGR z<0aBwm8qho_XJle3oBIr`?-yV-9$C6#6HCYg#P})%Lpr)X1Qap6^<00H_@~?(2*}n zTD@<{)OE}*CRV97oHasSPQ`9NEuk_7rR@ZF0gq_cf7iU~PX+}>rOBS-Ta@BULkLFN zNEBq{Uir*5JDYY3$=pe1k#}F(L}mBW<`W)kRmt(dH4~zi+-~wstG>6*%nuS-Tx#^P zOg3dM%OZ!FA4bF{6w&DNxYSu}%2W~~Me)5-q`wm-;J}qQ|IObniWm9S`jvL=-21;W zlhsFHd;VR@lmNo2YyEty?r@eY;cYS1aB_XzN|ANaGdOfma1u4waC-0lQNrlCP@w8G z`moV?@w3&`)2XOQaF)H<*O1IpzOLBxxo)4H{`gLs>+EII`>*oaVHwrKB;Ui(fyvx$ zwD5lEC{6AYoB^g*)te+By?0+GmjQo63rqDQ!D*yPWc89d_oR&yMb*y-&qY%&_2$ngm8{GSxse*S+I5>}Xu~n5LhI z)xBze>Ec(ys>>4AH8@^zf8HlYchY3mn5O%fM%LI|C7*ZHwP*kzMh5jwR=iAAYUE{V zY>w1cJxy6_Rz_&?JWcUxY=}+4z;oQ$23j3A(>{RBV)A$^ zO(noFs2KGrK31YXE=iZ%E$nx6Fcj5G?uNOvSM3wpP0u=tdDj?O4AX$mSe&hIcVZMCCT&4w zqi~r1^ya{jU_9-jLx=fA#vQ4;V&x9s^jH7?(b`);#kHhu+eokgK|*kMcZcBa?hcIw zcXtm2x8Uv)+}$A%TpM?n0D&N1bIzQZ z^JT{l@kj-cAtMo>CCC_;-3P4BFN2bbGlgmcb^g0z&iXf4hw#4o?CBdhL&5Zp#*4k< zR1?3$x5nQY>VLZXsb*p3*+utHKT&gkm3UUdAkn|{6ldrZIb_!?<2YV_hNnXbTw)E`+=uG-PJ3@!T%Vs2 zn$tS^zVyoH(eCGqOe)^waP(3tqdjvg{?t|8Nt05KE|srJ9(e6%v@gyzW!k$ z?yBk zDS0QgP0uPuL|#42bAKSr?AOh;@_QZ^B#QvotVsAv35J^gHkQ@yTsI&*W3qJJ2lGOQG$k%ylPOBt$Px@rg(=JvQQWZ>bIx^q^B09Ogk|>V zqu~sy=PL=pHC?pA?7Nnmw;MZ1x0KjY_}(2B!bl9jV^iB>QS;CwMpeM*_A0hxjSwuH z8+?@`Nj5d&q!h~Uw0oxCm&5(?;8^)7-#;E48zFphPrOk$f)>E^C2sDI8-%=OZ1D1! z_Mpg*d8!(?=OE&XMuEMq@Rgsb5}NCT%jhrn&0?dJfyv5o=2g7kMk*_vroi`RM>DLd z^eJ%`P`=bpJm=y444JM(k8#ko`{i)G&xvnA&+h1}`-`%F&_9G99$_hrAznEW( zM;_Se+}$Lta@#+dUo;T&>uE3m*WXlXy|h|u7ERZIRMkvSyrHo`JEdl|9iJ|lfFmJ4R zESfDI#VQsT%%gDk#Ma3J&Z?VPPMT$~F4R!N#Ox0ZTPc3ub!xp68Y%h!OBnVZhR9zH zEz1xbbw>~~bo;&uV9NE%#EP*v>@x;Vud|~Wz+i^KvZE$%G~7smz*)8dSw56VRPsDw z7K|1c%%*Vg!Q*nME=?`GE#p`jv_t^qHY(=2o;_wQCn%LH@IN%@aKwt<0H^9W)Vf1h zDF-+gyim2*?x>z$5D8#cxMb_g=Rz!wi3h-P9phYJys~nZ-0dsXqD?k;f9$hr^dX3< zR`y{)uR8IJGUC%jdIqInQuW$}bB$pRdc9A>x=4kF%i!_eb!-zu{WXgm;K79swH)3S zvFjA$s3yAccm1-dixX{OHQn>G|Fg|w7yDii3G ze28giI-K(M6vlXl#C!lT@R()U8ZJ06`F`$818*HT!(DAc1V zRA%*bkNT}9t?1hF%GqIibC$k+7c7ubW+AFD=kkgh+B&Ohv)t*JIq&`MWR!y~0M?^` zdL+f(e(d0CbO+NK*KEuy(e_CvayZuLydC(9vsXi7s#)Ju~4|PdO&i0Zh}zx@`QnwtyKIEy&OmGvJGfz0`Nz$n|<<^6p^+igppy@JX-#4Bjjf(9D@^Sh8|orLe40& zlZI4jv{b12)qtlLH!bs8I;MIAozcjx+p|`cz7%~=OfhHs9_!F?OoLZ*;PvIE5%j-E z%kC6-prTMjb~BAv^`K&kLRLb@WYiPkzwR7=iDjrqy$wx3}YDdwj}gY^G&r$P*vrq7xUT zp$E6>Hkxy=@^;TJEBg6dADAXYSqA|Z948#MhD+qs`jIoOi0QYbrPH@3UVJKFbw2`- z!rzWbq3R!V4Y#E*)oW}rj<#9yaCXXRm1{RH1iH@qRNIoRbf=gbKXC0{f{Y%Lr^2vK zlH~X)@Edb=)Bnj@awk~;_dlFovI=1@SzHt|I;Fp|%b=Xn+FvDmK`jwkJdXYOdZks< zi1Nh$M|KDlr~NZK+}ivjJM3qH(EWVK5qKX*7+BILIH;$feu#nd3s-3-6Os}iiAKjz z+90-fd$27^g;m&@Z<`f!S&`i-`vmfWHLj~gZy_asaX!+f0*-*;ql)!scS#iHDcNHX@M?^yovVE z0i24k*NI;~(!0#%R%TuE>5So_bIewl9XKd_RqA+)ZBvOoR3aB9UL|^86Y$=NgzLlc zAfGjmibSs$E0< z{Gc|8ue?U{spfkA7tE1E?LNpi2F}ivu_Cf$V%IDkuz%uc;FLmd4#pY)rkDFE!1cgD>z&g_fs7X*@M=V=9RxdqA`ngj1(1AQ-W_u` zXvbMBz?Roz4a6#yeGKzciF|rI`10HCPULZ3I$aL@Yu)?6V@fdjSv0@y0$5OGAM`#6mHtRdmPH<3|YLC;k`uRYu3)ADCfx z0Hp*J)+H*`qUlg4OR==HOhhBX9W35h5r80^P?%2==A=$U_grKhKTdCE675PERJVLK zf54Q+S0I@3OwfXORjpp z0^x@G(9Z6sBvCDG$0Xt0pr%dDxNVAOGE|0Ul16mKRy;cTA`PNSK|E{L)RM7D?24(#3%P8rdO~YQZ864sK;awD^djfgM=k6 zR@{qw{Td;a8&D;H2SvdCC;vz@1QJ(|2}>-dk&t<<0HT*wA5Wjw>LS0dinI)ETu(i9~u~T_{C~a z6lGkzfJ=y5FlXG9({|E9=v=7I8YV|pu<^BHouKF5CmC0V(aP<^({8%d?Us)5jm+(k z@yhLc|5zFQ%W~0@?WB`-Z{V=g=;gMAt#9E6yPsVWm+2R?S zO-PFbRaY(__b!$Qd@%;vCtgcwt{U@XcD-tL^u6!%Zq#0?x^(1Bo^W0B%jPE5JRD^L z4fUUGj0;i3Ad~203YVpZBM`CZNZ~D609x2%CRX7#{-k+2gSmOy`lflF@Z2qdS@fK| z;CMiFk=s@fIyemTPjoQIuy2}Fr{zn+m@vbiyE~1)GCX!-I!}!A>VJbZQ!v?z=2szx z@~#R@>lPxWJ+*f75vrwrf1limxzr6m1|7qIt%XgX?A<1D?uzq%C!&Ne0x2I@YM>8H z3;d)tSc|P{KFKr!2p&Y}+O6dNrWnuD}7;AgP4Fp1^_p5ElAid~fnk!G|DqD`HvigvWQ*Y`yBzNWz0U8;kU(-no+*N z!r0HO=oSx33p`KJNf))>p7~()1h(dRp29gq@SauJb>*bDvfL!U{U~BJ+{zlT2Az~i z_YUx1z_LAAj8%rNU&wnA9sVe~JEcC4_Qjqs-0H*t&VKSKF?o24;NVn0hhzQV3#~hI z@l58_Kkz({d$JPMsV{hYCUB(c_bhNrmt8>Hn?3~6) zKHC#j!XD}z#{j44oRu5xX}wVZo0i#Fo?FmwE$=5}i`nFf@U6JhGi1I182e-s0q{yd ztrbj9{QD?Fwh_MjaF&>o8S;D6Y`{^@Hvnx?}JdheevivP5S zqN}N`ktM*`N&ioOSbEEUnwMtc?}}c7UxW8+X}c~rq4+fTLiJ47<`Rb|;Oeux9M4I% zwVsmWaJa-ZXl3C>1d;ZkNxq$_`1IsyW=A9#9$91Kd5H0`%fOV8!wYiC``#&;mux=E z$AjaC&|~D7$9Ol>9o6?ADLTQcafPJWSYy?k#CmAR+*sfIoQ60@Zo1;`ZSQz-xO-KF@eJnepte0RaArIe zgCva5IS{Tje5P@!75Oo-&`|Nz(}TZ&xAjuV7DA<@oxHN-j#Q$XgO;44`)mv+sLp0} zv?c+uP*ct>vv5^uERdzUyveMD{_8l~7ocCNSlW6UBh|4&jNfH(lyy<@>hN9ZYAHS;F0-c<2b)^Hfsp*it0(wll)-% z?nQk#gZosFP#vbD=T{za!X@aHIJF&^;4W3;BxPtj1?6)J_DwFR0*D#;z!|B`*uiiT z=Dd%uRyr2MJK0GnJ+MB<`~Ed~1VqZpp1t*9bJj zly5pv^>iJ~XLkzE#uoCw70MoCqb}7T*s~R663o$vI@E;2uPKa|Qi}-wG+_OC$VjIs z*q|E`A7^vtUT9xjwX<>f>ycN+KDHRn>vENNzRt_5j)U~W z3^(x27o%U7Ide+2 z;lM-UzCrogbS5Y#t*0>Y$Rr%bBuj-224z|HuGzd|UYPSHXq?BLYL2|2qS5xPeR;N1 znQS>tj1!h-&t+mbeU4DGgM=l>B*HL$03NRA3uT6u9)wwSdD&@h@8B0-j$6|@5`hF! zx5F&0DD=gZDC7mwiV)FP`NbshZo;TiB8uWA=OLs!i_H1;x%Nt^>~dqkdIL|efWtX( zvA7kcg9cQ|IZOqvo9XSEo*~`^q7*o4Uq&2K=PQ3qt?(h}N}=LXJxf@qSXCma!aa|v z@N<}Eh1y9g$eFL^bcV&AdhATS6VLwEvH)X$ zsj@8tMLsPF3AYzr;wxU0VkgDao}(K^nRJACk7-UA7T_mhC}1t1wFzroah%yP8+DDe z47}Osu4pKcI#)8wZ}}|!gwhh&RT($c$8t41SMV<6o2+rI4r_x83U=3=N-Az@r!OQR zBqFax%BvaBg|AXQw%i{HAVN>R^y|HF7&>hj=BxWiXA~>fjH2QZ!7^JqkJ|LwC)-F< zKyh773>NDaQ@>LU@FOJSGuOrzF!usCyjoegQO-Sb>-}3a>f>FUg{E1ZeN0L4uToEh z4OspTD6%M{Sc_HPGD?N9??>3(%z}%i1F0e39i~}p#q$cH75CDpE8NDt`MyZxw5xrW zkde!Z3M}6rQ*UiORi5(a-|A7ufTE|!Y*EEC+R+VhKM3IyKq`Oh#ZucEvk26lUG!nN znI%-;+J}OE-z#B$`S5Jkm3x328@MhC_)&AY0rx z>MG>K4$xe)wNGEC>_@3Qg zg>0496da2@v`^mfN+Ak%%S)6)DbOrB$Ehjc4P1iFHCV@bhC@V?w?7r{qJ$NFjSx zYRGt_(zW*4w7@)qb@rlUMbl*1^R}}?ZH?3cGW2$9S`Pp^RYoG#v9)n^5!Q@NTT`xX zpje@3NNu6p2LR51n_vjbU9IFCm|*I;RlI^>YPwvC7;|6NH3HPeBKZckFl&MV3_p8H zVp6%oI>e5AgZL}P)yD)O8wo3l*2dS!d8=}KVK~j#92Ny>)|fP>d#AE886-?{7ubkQ zN4qPS4zg?8k^s4@x~bOIWDINrf6qiKQ+@Zd^8*2!!PA|)yq}WgT)DG=BH-JeE+5slXHNM5wAgCcRc}u4Ew@kWCvUPLmK2i5<4z#J1-^)2seiAo zk)+za|EN7#ydT9@M=>WMGt^GKfmT=fajrmT0afJ64MJS?QYXv)q19j@w)NKdB3QVn z@wq&&Q?m;RA*}txI{V_XZAgg8QI@5-ikpFAm!`j7`zm813o7M~*8Oo)RFJakFhr7- zD3pZpM|G4|d-GMz*wr8g3oOR+6oc}YGa!DCP zR+j%GEX|K)q4wQmxZ}b(R#dsjda;gXQ z4MP|uy%hKW`kbS=>56~oH!?(IEm_p!@@(#ox6lPl1p-fN)rTKnKPlqATD$7+3)i4s zS9t1|2qt(XAQC0Sefdz}BTJ8-Mv$gL2Ylps*)m;oiF6_Y9t_Na^w%xZ)pA1F{yEnN zo#6bB>Hc5ye0p;yYpcKPuH#$X{+Qw?s#)7Evm-y@K1Y;Yl7SOX>b2zBn_QDIXouP$ zqF3oEqCwGR&=%Ge$0Yz37a)!6XUMMU=?VZaP%C{r zpDz2cM3{_iKTTlrWM%fA@yq%8z~!01&Z~V~VRpHYex(SoW-%>4YRTu3OUSG}sIuBo z5F4-PjEuUKe620ANa&3`Xz&9Sp0Zv`ploN`fD`vU?>5Wq(wAboLu|S}CM-{}vf%Qs z+nMHh@$vDZ6K|ph<>$Em1Xf zGJbgy)(+56!rTM@9$a4 z9vX3R#uE5j0a0enxeg_=cZ9DGdNtc?P-61H#V4XPU%4wde}GAOOs zLbf)lHMwL&F$+|Hm~J0t2ig)=R2~PQ^rSE(tRmxb{S<2h9yjdVJdg~6jr0~XaDv7y z=)Tn1G_QNmA2LODP{f=CAoi1{rgP_`9*vGz#G$0tAxk6olP;0%m@JbB)|c)rYR?Kq z)y=C3E|0M>AkUS~+8yw&OI@;AVsvT8Z`Gkf@0WdvqTL0Rd>Pi};=aS2?t=Mrf?hS5!F+cZw!ev>tSmJ1 zgQbr=RL!iIfLiC?sEhERBB5ETEv&Gqw+BHbs7qL4+FOmFNqrC1IA%W5YDNZs8lR`Q z^gVrZp=AKviH_@X9Zaku0WEeMH&Ny!%D1R$mw6Qx9$$)6v**jpNfIrBmQ7~r4bh9G z>t2~nK}swwx$roahR1={?-HI%X$9+swL>EUlG?#E9p=UIs&w-~uSI~Zv7h$6RJXRX zeF9V0tXk^rbGTtk={%u3xL+FqLikn6KCtUyf?K?Ki;*e-Tix&CT?LUheskM1=|bWUh~5I5dT#K(!{e z28IrBg{}#d#QiY$eOn)ehWb->36jA;T2aOK<^m;?383UR3bzf5AM`&<<(0(-aEjQ)uOk{ibXoL)X|>Lv%6ODJfk}#3pgIjc4cG zE8AY#b;dxjJo1brc3So6lRE29TjSmQc)qBY7yWtH$F>uDc?IN(sf zvZj0OWl(i+h~<8G1qSB&`qx4A@Apu!{_~*vZ|<6CesElpK!4=x6gpkX%_n@-!~Th= zX7p1k)&x0@?XihVvO=ktr67e+Pn=uDSKqZ|q;>(!iE%Y+zP@kXr)57^mK)P{(>VC4 zY!iO2`987U%cYBGrVLo9-z^Sah%{ead=`n2Moq~v%wF$O9dZ)UDaetDGnuny7x&?0 z*Vzp67d8#w2%0u+`z};j4p%z5WKmxHsjyDFf@KE-)g#j(3mF%RNgc5k^=jF) zw)p4om93SFDm!KeDbNm(S$ z9ql{&aL~Yj>~qfZQ}@${=d7eC2J02kfOq&LuMh2I9s>V}yQ^ES0Ytq~ZJKnM1>6lsz9(0{5+yJyAPix2Z)-U@;?{ zQnqk}fKmv~D75K*v@|HvhvaYb89+mPcq%e?CaFXgY>c;7xK<2hNV^cXBfmaRtgn7Q z=@7Q08xnK3#%!e9?zD&~^c1V?DGK7|tDk)Kf;~&UxDD?B^v zTC}Xio0nd}Qc|-aPm*Ql zEd5ENZZoydzCn_-YN^_H7JG}nBo2u84aydb)JDjtE4)?PLU6BBR!yhNw01So$cbpk z=ceV3fxJJJ9jYk9RyRzH@D@+Wh#?qUXAR&c>w)U@w96{z(hLyr-vzIwk8F4V{w%6HCfmwvBq+^ZE2M{B%GL4m&UX;;29D4i3Ode)QRG}1hhyY-%lFtygput3;J~r4pI5>ECczH|(_&%GJ>gMZs4#HbY6RQFLicxS%l5u-OZ>e1w6eI-40byXG-9rPGpZ%PVV{(Tb;EkN3I>< zOXjG@w;fCdhSUhgI|==AJ@mUY4*KeDr-I5y-3pgiC*Ui1N~0E@)?M}8gK|4^N!yDa zQoU`qYtzK)tFGlIrUl*)4lZ?sJX*wDdh_EZ8Su)TH7-HW`+U~eue!g*Q0dQF()2>n zi#rWG1V%V?)uZxiw-s`CMfvKpJ+XN`p?|n0Z?!=q@9e*ZB|pp)EVJh;|GT8wT5&C=pPa>XDZ_MNhefj=K8!EQUAv2-Qd_-^bup~(BVJcEPt6T#Pa|G`cJ+- z8VJ*l{L?2x`Edos+bpG7!K$#Z{%Lk1LPkTKJD;YuJ(VU0++uw6o+s2QW0mvp42=_G zd)LNtIhRF0K@EuA3*RkkDl5HRfl(CwgGZ@@vmr!9Ub=J;pkhdVrF(sQB%R$k!GiXI!*zIb! z*~Pf4sLA|!Mt3QkC4N4x9fq_>KEkabq4@ru3T=`& z$LZ;RMso~OaHdQcFs{B|KEsl!HbuF|2@N8m(7-j)Ryq zjDMSceG?*W>~i--0U7!gpoeDF&oO)b!;)QfY_}z>wfG^i6kE+kz#0zvkC2nqoMh2E zw~VXs=+$_WvpgBisyef#x$QtF=xLPnGxr^%0;cRFG5uXy60Akei% z4GGbN<=x!i4cBfdu~0Ms4ic*PIdf$i*mu~i?i-7p4>#K8QzO;9HlH7rveC$3X7Gd< zAB3QCeY4`tzbZe_bVB1jdHXfOKLo|{o2&GVG2O}ItA;&;7LZ_I=@6J#8eqY|*0EnE zL*NkaAVISt&`Zb_@Y|9SA{fFS?}NSxoCv<0I{uYpGSRUysA|B1$+#Sgz8rtb{JApq zlBy=d51AoCfq~_LlnH;4$@k~^y9~h1&H>=)Xkp{%WN2mekL(o|OcA8|lD+<_yyXI5 z&-pB4yn+e_HV--oep4<4mG@hKe^Uni?Iq+F;m^*$hdgU6%ziDmnDhVv2Brg&!T(Ko z4fAipAU85ca~FVvqlK-_ZvpoV^!*laNl-1Tg_og$A|z<_4y23yn=S|L-*ug>tn3WU z0KaMa(AtRny%G?#zE8q|Dxi!S3=HEp&2@smX*vK5O{@X*PHs;B>Ebs*ZfwjnI80AW zU|@HknExjDFH^Q(D%2HZ%J%=&l+b<&@X4HNS>wYmSG zW^8NyUn>&-ricsp_wl_bngEP#ZHxhSPXDzw({I{V|CRRdP50jv^{=iLFyAjD3u;@j zpw24vYf=8A|0hL>{@EQR|Ir-{L9508xikK1???Vy*(o3XeHH$GVf26a`u&GK32K(V zE`1aIrmr9V@Ad!HI)9OVu?+mR3%%rhzusn}_)R)*=|4#SHTeCylKyAxFDvQ47Vt6z z{+e>){8B)^f86fh3;0Xyy8;wGM9~u@pdO>2)!1VYXj`Uuf?Z}i;F5v z3i#WjlxLX03wc{|BCjT^VIWPN%yzidNTlu?=y8ugKq?u}tyc8}IAYrG}R z05Ui!2gij@040&nsj948fuUko4WU%tm%doFE6+ASvM%N306~1l`h@ z1=9fQB-M>vc@6=tgU5a$;^ISa-0bI~{_Y6!T*uX?!1ZvnErR@4+v#5ldjg>y6&Hb%bP8ebBW@9Sn<^-@ZUV6eQI1z({ zVim`zjV-zSLg?&wIK;fCE6Qep6umZLq`kc@nWws@N5t?!IUK%eT}F_Fwc5NHKY4<% zg>h75pyZ~f7E+6og%B?I9+92xUL`EyXy(T*INklJ6~lR&WPj|l)>Ak*DMjltO>?Ps zg%GK?ImtEB?2=OImcK(TLOnr))^lHpD~-_WuS4C+=R;`@6e0%jE5E6{ihlZ z>%UV3AZVk38E%O&jMt++!qCVL)gI*D&feG(H8>_GqkQ2rxJ%&ZNKTxm@mtt|hQ9k&mJV(Pu+^7H%{ zTcF@Qos*)!zUDD6QYP$f>uS~D2_5Vwz?i6%%H6C?WKN@2K;TMFk@!8Pz%L$gyQ--M zrVWJV!)lL}S4LY&POW_{>4$G7i&(F35|-i!B|c0^WJw$~JTh_s35OUPJV~5HO``^W zg#d3kv0efpl_WH}Xt7lag9{T*VW!g^^^7yKDp5GECf@|zBlzasHwXSZK^FnWlfc=C zBvKt^8nOr|MCeBLEB3@M(GhGu>G(qgFlD3lBplc3#P?8s0ya#4_|+hP^UBcq)sB;k zFa4n5Z4M?xuYNe8;K6|VSJd#qo-4C0y1#~fhOp`Bh14jsgGg{lfH5Xpp&{x-o^IO) z+sdD_&uzvgvu3tt#H*;FYx_{%VHbPYuc1%XNITI5Gb=9xqcX$&?rz#qxC|+>9*bsF z*Q-Yp2=<0ck}oW%E$;OmWYClg9odIYN$Dd(jA4^;uaJJ&&G3;%c9VgTXvSh%og}p% zWXItr36QX9@p5rW%YtepOFBw)sI(F*HErS1P2p990|j#Sy>{9}<4^CVIu-QchAlS7 z7aE;di54pI!~{dqx;ln#)_PWE2LB%+EU#s=K@a0;?G0K|0-IXZD(qLB z1nVf?fqJ^EKQ((r5lb_yg6}h_zkj$R8{gmr40Xw$OMVwEn(f-)no8%xz5QFb$#294 z@A~GrmvA~~<~Wls8T$3x?ClLV-W5uA@xq_I=dIsYS!j#oWPpBfKz;L>M92HcVp)MX4Z>h1Tzusi@{8Yl+^jO0Iy}F(gnt0$fcZ@!Ma7pKVJWiBlWFwRxs)r?LDD z#uP-G$S>*Dxuu3SaSB!&r~CV!Xe2PM_zl7}TtN1-MEXQ7_MS$%AB0BEYAyW6opsd6 zo}Zt5>#Ci)b<^@~VLR=dl64=tH-1YY1+F=n(j~maB?OcEX4tf?H|~wk)pf*CkfScD z-5(K1eK8fNZWVC+>GNE(lwTDAKF+wrYfS`~SmN#>JuOEN@pnBFfg9E_7e1cJo_ z>**;pbaBff>*Y-MzFmL9sweD}YX}{$U>Y|$;pOa>;G)cmG>-n{H`irbp`NM`>1dv_ z0Gnk7;Kl8(KlE17`5FkCWbMvp(MpYPmFj^XToSrwOMCw-O8%`OYX66Zfcp=EbFeq~ zw~om8f6x*CW=M&@IwG0jZjJIUI}Snu0O0)}0RKZv=sEn0EGNRrBtHKeSq`ae$Y66I zc;OO%=Pk4uU|6J?k|I;JQpT25dB2zBr0deS1wfzi0v_tR%Hc zYsn~QwWr>1o$l3KbgZ!*;wFy_F??!!*vO2>UqD3!EklQau1K3ntV}sEQ_t|T*OJF^ zROTw9YTUB)KOQ4mgNh#6MlCpL<-vwIT5zDP(@LaCX|6&1Gp=AYN z9dRch(Ke~8*Ol@ddcuq(jM?Cwj)=CFKEmwj9dWbvrCV4u8fD+>l>_bJ5F1))0ip*w z;>lre76^6>ma}uas^a2e;}S>q6WCPUR`}m| zm-M-fmDDVRA6aF#76Nkou3>NJ*UVpBqS9FjDhLMU7(ATC$EH%i6g3--P?yLTj z^p4Jm8`WHHzEoTtb75_|D*mWeaq3hLy60`!p4b?O{Vk`3XwowDq?=&;X zw|4PvemwtMX;)*~tnZkaf~xh^6V(YdUYQ8x%xj9f3f{Ijciyh5Zbv+>AN(?Qi{8oX z@;$fUiTYZcH<@R>fVd^E?+xG;**wIQCoQfs(5noKsH{{Q8HKK3ARr|Rah-rq-}i$Sn3l8~2Im*)tWepL_=p%3 zml#n~_1z3=Rx*c05uW|o&k{y51gpb-K7HRcPZQ+Z70Z`+*oxF;jSX%R!R2lD*X%|4 zP_B_u-c6%dG;Y<l|~X`NtAx2s0ab#183~m_GplT;Jh&U<6K1AVxY`Bo4A5lGLR@kPzw!uLYLp z0X7$VC$oUS6>t(EfwEQ;e50&9F)`&)9um?$QIZN}xdsJ1x37k>m&J$n>UT@p+69Nn zGNifWa=O7!2h+}^=Y!61J#WsJ-UfQl_f<8W^8S0bxx7wD#$xbj7gC{<#%j4z%H{_r zj9}*y5JjiMm#o&gr~TnpwNv?0q+6N%v1AAD`|i|E3fw@BD)ED_hTMa>xbkVkvF49+ zQ*|Jx+55tv6UclG*y{}*CLO`qx|1bYX?81fEU;-ZaGtj;BpR4wy=bmc*Z7Qy3ke0shtS29y!ktad z4?4ZB)hy$Sk&B+8Zzql`aE(3O;ZIgEECMV4M$CDw*lu96h<;uwreQhx%lTSR!t6+Wx=H({q7|%rWIm@}hrj;t>XNj2Hb; z^4nPrhC2LxX%>5&JBYA3fSVn#>2QlRdtFtEN-kg2$pW$aaN7nlW3qQ*r-)>K9kt@2 zk$t$tAwjNezQmqb*_R+bp>2YF#oc&@n#y{Zw{(h2_y`ms`&%a9(H8rRYS zwlaC2TX#JhI{{CwVn+VE<@6e>c^iCdWY4J`eJ&4{q=pcPIKBX7ze%&s)HQiU!Wbci{ zoe?6(q1h*Es^CemT6mPHT03y(6{JLhu^x`y1YnPGYpR#ym{q%!Z&E$;#QS}4^I?#G zNX^*LGSzRZnq_*Sbn!A2+g7lb8#?#O;LuN-04qBLu{>;Bp~9KC=@7*gaic(eK2Ck0 zu-0XE={Sw+@Tl{45gsCenY7qvx^z7uQsg#-|5sosr=*v-Tc=IQGrwPe#F@cfy*SteXU&-Z_46Ez;!FG z8O({yP}v7=i0NY0xoE|&(<;%ng!eW2^6eaIKLd93vI?gCA}P9;wzKT3y#~V~jS9Em zS?GdHmgy+D6R`{v01Mx2o!}Fu*%`CvQ>>0$oshh*$en~e<@1qA`BK1x=u@JX&fkv_ zlO&8*l^k9o5mU1GebH zVfb#u&k3HJBoOrh-A&CmE{cgJr-8PjK4vS~H#*^IDtMhLr!6Oov71-kpqQlQqCM(9CSAi&(p&*;lt<93JhDUmSD^_Dk}f z-Lff=pc7+AVYuDu>mF2r;h*z1H6Zi(O={7nv0ylB|H+?w~abo(r-4l<;ne1#D zH->Bsr)3qW4%{KQu>^567s)r=395O(AYKcREB*d#Vyc@IZ>ZbI@DZa8WW2aBjT&Em zNXKr{xJMh;oFTfbxt%45<)AjD$6y!?7O6Q5bJw~RqVLvB)H5-eo!sNlwx>2MuOIo( znd%H%Jtc(9kB&QZ1rha>@`pauPhz0uUnIhc8llc9LTs2X?s*eEkJ%%ld5ms7{6Sz%IR3xuxJZraCV~Eq}AjJzf3-6?r0I!9V!7v zO@{Hqw@=$qQP$rq*rTYNU{B0j^mC-GM8-W!$7(-|8t=rlsg*lEhxM{EvfRLseN)O@zeOEv!;SQd2a(aA zdXW{h+mFIhwJFT(-iU754~N-RV%4JKYk_=S7cbmI6dozZe*l`rooC~7KO?thG)l>` zXFE-(=|x;}cl}Y}W6|J$n&bWE_GApfb*nN`j@ot3*mfdwjmZ)(QJFLt9K^pv54(9W zexvUSF@714`i5ic2_h4>S*bgJcbL}f`HGF`vGBIiwuB$c#c^Ed4|a~<^GQ$ZW8vl- zdJM(7jwoc2F4)OhEPp81r|!E|cI~p-abQ31R4h;}1kT@(Y@Z6zlyh~am$lk&4HCm- zVlQdV3sDo#j%(iaz!_mOwtQ;(=6-7h4WF2iw;(&C=)p}hnR(Lps%EjCh`xEvmQ3Ov zQ?T}$x;{_6FVpg@E)sZON#o2Iv?sf5;PImM5nnxxZ0cW3ywAP!QlESg3Whf;96C6T zq-a?FqJ5uVJaac+GV+*4tcE}4Dj3|!5AT-OJ&}K6w?R5ct~_;vo7L4mYVF5JdYEv3 zSSqbPG*>(S$~`UDW44D&TrQ||I1q_rS@{K>qlT;MI*-dy$Gw{$G4v_zg_qp$?ywF# zb5z#rfpHr4%T&iN!Gkx#K}RuziF<@8t@Rsrf!l$9q+;=d!0spgtiid%%zC=CdT(=k zI&X@dz2{@_#`(@oRJn5n-)&)ZLrY88%EDJ;{L1K(X%~;sqa(Vjg$hDjSoR`~yqJg9 zc|-PQXiB_-km)PHA_sm*CQu`KotmC#l1{>?jFgHbMFtvtxeDmN~1U|4D}?f5;zs^ z_e;W?PGB-s)F5Lx(K((uSy(ojhuCA2Yx>~t2y`)+rdEG_^;pnysZlKv;=_brZBnDa z{}{o4ObJW9No-lA=;)QmqoXi2(!E{OC1|_0z%#@fW>ltbfhKLlYJxZp?^my_aGEN$ z6S<7Wxt!;eLdbqaGAD|UX_?@iqNG+OrjY=yAKvk}iJfpOlv*dHoSr(^5v5|t{z)>Y z2pV}zY)7QnC>cw==wH`sM27@XnfN0Q+=z6B3MY_GQZkrBFOgzK|G; z|An`~=%REGPN(8$U1Uhin=W8rTy$d;5y&D7AY807Esc0uAv#1H9oGcSjzkm;%7z(l zg0c79L1&0iEAq^XUL!Af?MCE5*^0BZ^ zyisv^(1#}3f%`e7qKDK=HP^9|P zg4bw7NVlQCYmr|BH*_(qlhj5y1xC|FA~w@ z85olY4RlQoJru`CUi61ZbcK(p3_6JOIl&0UM^6ZTs6ymX{<91b7^Mayj#8s;G0$}> z)JSVixtKPQK|d~bhl!A&$3Q56dNJ=cF6>vJ=N9*qqwq>6T*?jvL z5t&DF;=`!FaZ>enWc?j7M8WO()b>aY!6;4``rrCx2c{(61AjrRg>nK?&?q!;R+9Ha zuqO;3fd#%ZilXC49Da}f`McXVA~3ClG)VR}B5;szH_7ew^kcG+e?5NHMd|DzL_T@bEksC)|H_DS<&h z8?tRH)Q`+ykdOdxWt4!x=WoFLU1m<%)WgZZ&Y{r2O})X{zoOYoizn-mLc`0v%wSG# zBtMT9t_zurs8W{%Ti8j)x@r2V(rwUUE=0qW* zaq@!+|ChVizX7Gjyf|bG3P^B}yJ`40x+WFSNB^Sw{Y6EGs1wk_mtsUAa4};*B^5Xm zV0C(Zba^k6ojVV<4*qKew_tWwntR3<&uT~WF^T?WgfcP<#2fMfB;=cc!B%&5$^=+@ zeuh+*NO#&?L2adQo=k*57FrM|4U|*c0{l|(%`Tf9agVVt-G>%&9)1v_Xj%VNOAGPG zJ`jnrT5I9BxfQQqoXzunHx!+&&dzWQ6+3WSG(T6P!7M@*&GHM;shrM0_a}y4wZXv~x zy@t9*dRk7oxYg`xd=+Yo;_C(4>$0P`O}(L3s!0PeZks9FBbxL*7EyfYI~J#i^@Y>O z{f*i;&cqL^2CvRL7ml5nZSLKN$+hRse9H-C9*w0EFcA~-D~asI7%OX>r}3wK(XTEB zC7hg!N)w!}{xXsos>b0Hay7GFsTtZ(oNCPZl=rh&jldx}Ozc)O&=NO<&|pZZHsaysG6_Z~6PjzmzU?sqB|Y8^4T5isG(gO044g^* z@d=$TtC;?7pzrwD-(<3SIC|9;7d%L6Una$CZF60oS6kqr<>y~27bgR)64zt-1QYH2d+fiw&4)EPg{sPr`hSl@zbP;%;~X0 z$1L;Q%g)>G`RuD_J9`g5yV#aGIs@19`ovhu#}Yj2>+N}K&Gz-|^Xc~Mu0l0uTGoug z0n;RB;gWlL>3gU1`|@o6tYzj!CXupWv;jMwKVNcQkJv*#0PfDS=byos`u{+2d^f5_H zC|!RNDMdqvOd|(_+t{q$Y9`#V9$n~Qoi+BcRdUH>j?fXc+rR9G2GvUC3H9)_cJmr4 zt4lu-AvK(E&jE}mxqq5GB|n_3h}gichaXRHAWu-Ax?q;8nts@ZE$na1J(KoI?e7K{ zAduFlNe^mGEDp_afG8;prenelr`tOKXz4SJB_P7s?1|EQb--_<7#A7m^%+J!P3R}} z`1#Cj_(xO&$>%k%OZEHnnJ1_7n5nMZ27p@=Vr$D;z}{vOHRS!b-z7%aA^KQ_Aw@m% zELRrolekk3^FC;HMNtG&05)gwB|58b4R8;F+njjEW$zcS>X!*Oz1N;Wk$M4xGe+q2ZqH{(`NatTi9zea+v&i}HJ#SaUI2fL8~k%8 zEp3r&A}m<0iJzT*s|qBg%9(oCIgk)E2dH&QI}-;OF2$q4X10*?&iWlM?K5|JWnZwR z5GOV-_6UI{=!f$CTBJ#zlJyC-Y(B>`r>;mwggohR+^>t6e8cz>aeh*LAD5SszU%GX zId30FXr)th@gGu|WG{~E9sm0q3;ENDPP!mI8e>E)-9a1S=MY{f)37bv&lsg4uy6bV{28%9A@I=`x+V0;1x`z`CB!6dR27C}4Vgvy)!h|~bX5F0a>UJRXEq^f0S5$~bnMPq$@q*csk==7jh zD9BmSaC=?&Elduo#I|>sf?&@{rZL1k(xmUOEa7~wtXywI|w#)X2^ecW?urNi&`KiOBM>=UWE8mtI zpxK^e-8g!sg+8+#^ytMKtaO^R&NyyZuVmi={n4bjfTB&TWsz^7S66|JjP<&Q_>Jgz znmak<$~#92*<*F#c9Y>7IW8FJMZirfu65VA>Ybp%4Sm5Q>p_RA>k#t-;9VUId_f~e zq^M{2?HBKD?O&scj~=H$ft~kFg?2-c1uzixsDkLu2aP9)JNDFpes?yKlqg6cJ*xl| znz0bAc=jb}JRKa7ze#}|eo77SfgXW1ZgVlDiDJ+AW$4-#f|Ap$UaA@V24UEZU3Fls zgSlT`&it4V9qkK$47rryJ7ZT1+(L8lp+wo~Yb-?Cua8%jL zk7kqT|FbJ2r$vwIJP=$h|BNQx&$BxP_=$zyk5D+$EB%lJKZu&R3J>anHbF$6#73fUSeLo$zW-zB)bk!RRg}_;0G|8LRRc>c4Dc6 z8@v9t^fbcxmQjN-kjUH-)_0B&zoAfLUehHW0hhzsxzonUFO@WhqEkw+0RraR)+K)xmy$iVY^{htD9oI@Trx@^*yWUYMN1 z_qaGmn(V=JCaS7TZ7W|xkCvyXrtn0oYN1VYL`zypL)=1JP%qW%f#e^g)}k=q|KZCz zQQU<>)(5blCK57+xSyHHewB63>}u8x9|Z_M8Q%W^dr59+upMil-?7&4#E7sK>9tY% z&5(j`o+c;X=b3A%$}6V`e+{Uj8HfZv$31uoX-k=pu8uDRAg;U}8E>15;=x`T-<@?0 zSNNS?XK?{6fm{sw!5Xb)u^ha9V<5XRb=H-Vi<692&&!3>Ck3VDfuY>!P?M!Z#Mqb~ zTsUl=uNis3CSU3w+kTNpkczp+Ji$C#Dl~A3<)WNyBZG{mvi9T;jF&McsV%|8fQEVd zRuvYPblW--%9p~34rbvTIsr3%NjU4+3J#ptYEzsh;x;h6288;)4Eo?yr))Vqfe1Am@JyxbQvfiXG+C?8w z7OM-0RG8`yGVS1k7KsAliy&27kH7@*E>n95kZiL1Qg`xOErA+99E?s6E*ukkWDUZZ zpVZh;lhd9N1MBV5HEuMPrXf&2-+4JR%35!WI->+6jJ`Uep-{a(mi+Mcm0e22{}^(4 zhABfd2&6!VgkHqH=r_U@w#u1wU?oa)P+zX2E|wTe0ooC@biF_V4)?Atpa{YfGK3U^ zaC*3YdZ3sVzNw!v1B&UE9Q1;Q2E630yv-7MeZ}sJ9}O~<8N5f<6up=hglgIfMspCE zRjG?3pM@oi0nk>(u-eFCt>AvZJ`b&LC{b)}bOcAGv++JCNT+XZsx^h!U`tr?*T&L66&x2h-8G zZD@t-w#uM|Di{%!&jdjkK5zTY$Wpd1%$ z(_prY072gs()fqw3*HxcNjo;RZ?QSO$4&r$7k&ON0W);PALy93BOV?g7jQ$PsbcO- zZ#x^EJ+eRD2ieKh8-FOTF12LRiFWc(749EHW!ip&mAjnV?uOKD)Tl8LJth=B>V{vP zFw90r`9iV`$JD5%b(*+i{)uf<(m9Cmf=)c7b9siC-3{s7b>gkGZlCv}5Uf2B9aT1^#TJ&8 zRr)=-@kAL=EFe=Xd_n$H$|2QYROJFNndl)zm&rClOw-gfUFDJD7lYbxFDA2Zukyam znRk6E1<@h`mD%O#b2nZJXu8K#00V$Fq$~0PjXTxn?I1onxefVPwGGLVT+y;>klx+M zZVp1(x+rh?I78WBQ8Zc2&#WkCys|9Wq$EyPQ)6B-WaY7CE`nNB2974sPQdsI?$NHv z0ZO8j4j)E1%~465geOO6-VekkB!bL>4^S^p#9oAR(0*>FhL)C~uSd*G9abBD6fj;1 zgla_1ER`|n8>H;G*=2a*4yf+;t76mL+gBX{=2Uh5$q&j8$q{we06@);CvD*z(TD(q z;<(t@pomeQg=VoAMu$}jrcMG5m6Y^T%8i$Mo4sifkR(W66g;g!AX=y{9L^VS?50~r zq_V(asc?o}9w%(GP;jL`iG{MOdKMPQiqZnBi&0$qlOGeNb+?%(0bZHina=KhG>p$u zG;UIJRAXR&J*g1!wo*MoW4siRv^-lmYo8k%Ee+TXJN7tsl;!=J9oYMHFbt0@FP9Pa z@dP!U4d@!+B8fQf%H+AwF%}7Y-dn7o*@F3s#}r<$%2e=^xe8jrLcH;^HZbvK&}YV| zxFDhQQv;U5%@pNTLO-t%A1?4tsEraCXbgNuZCXhkR%}?&XT|3oMBNw)EuuaWLp2l} zom!=g5ifC)|#1OEq9 zjxo1d$Qrf=+zqe@t8%n8j6N7K^@LEeWX=J7_!H;>hqZ<85`L}~DbPb8FlNYp174&_ z&*<$b#g5Ot>El7dFX`oSpDa#MXToF^ND|N-Cwd!Y&{V`l_b|-&rX%#+RK!w|Ep;yZ z8k@6eC<838nipE5`F^_qRh3XOzu|Trp?C$lvH|Q*ayrJ{Yn6w2>OKcAUeRnj@hp|j zk@VW$^tTHTTO@pdfl)VeGzr{g$9P}~>26fT`ac0a+_P=i8v*P)?;FkP%4)d)ml`mp zy4B!O+0FG$!my=U4dv(ankr2hPA|A$rYlWiYXK?^^ufkZ>Ouk`W~U7~24|KgEhD%; zt43Ut24CetD^ju~{7|aMa)V z9!`gS?il`2NXm8~7maqO`=QNqDj`hJ0~WEQ}9aKT7Vc@V19NX({~pO zz!KvsNMwNU#rYG-*vvm_M3iJ*l?QGtAPU5~4!^~ro-ueM8O|jTF*HRLcqpwQ+I4s1 zwn!ZUCg-Weg~3>qFISQTGTC0=cSjU z86~FHnJSkmrCt_;D?1H35IT!WFB=p>Qf$e{VoEbB2V*^#Y64Pv{(@|fG4;HC&(hZ^ zWLVyh|C$rS0w!}7J?wZN7WXX}_7!5yQboDOp=K_Evd-4f zBHf(()u0LgvDV0Z-(4qum{nz$YTlZ=C0`HOX`?^$lk)O(A3aZ%?-bu5(=GI9Gp<6# zgb%LTmIX%PtmEh4ZX0gjV^LVc(oie&d`;qBE!q7BYhR+7y?pC#u=Rn^cL_lfZ`FQw z`;55UQ&|40%&mKFmslJ3nFitj0D~A2xoLyCRKJrUs!$9xKryaS3FE({DRPf7#lCV4 zqI6o0_X;=<7M7F}Z7c_w3_f_a#IEs20>5<8{j{u^6Hr7Jv65(A35a=Y<(ma3ML z>Q=%U$aBFCqazR^PZ8ZZ6I`=>#kKo-J@)OXl@n>GB@sm4GU-ci*x#zaN;6DL8H9Ql zy0Nl@GU5yUmjtKi@b07}>PmiHbD>$#`I;?juOsgWjYP!~#r|}<_YDt|>|i9g2Y=i0D%Em)Wn^2_U&296 zp7gB3{)fTF2~Y8eNm){Z56j&Z8uQ}FxHaLpzEF5ScK0Dsg|2(-SvfLGEWSr*SoT^*Y)W(m%> zEX|f2bLa|@2wQi8gTz+7)mhgH+eK)Ld+1XRKZt~oUfQTb$WxHzz*9`Z&U*p2(d!a$+L0G~xo6%>J-B zVqiH1+#YOOijL)Ztu|Ky#3eEE%*k6B@>fCJLQy%!UR^727VHTLX-9HZ53CXa zK=5IyzB5<~m=X~{!H>-EBHQi7NOXKqpiYYN8PT7l^WiX*bNQpEN^?5mwhuN!+ATV` z`F2aK!*K!=i@cDsrqUFo<ny2V6 zPQaloU&E6qR>&TgT23oYdBHpj09dZUupg>go+X&Th{rc*o-D(*jM$tEU@tuJCu63L z(A9vU2pWy1v>V%`eV_Lb9s;7LDF$p3EDx2j{KWTu+K_1dJ=BUPx+LkhwFw1w@PJIu z7)f$3^osmG9|b&_Qg09E&_bhR3r(PlimiNqeoOo1n;9XM{}ESGQegsleIZCUqdW(m zk6j3G@@{wK7I?{F%3K4KgUZGO#2sp2Z=yc$@E=VrdAJ={Isj}0357L zWVht~p(APMzKSlHv9NnleKi2+GA)${+YKPIV$?=PSF*~F1>l$}G!`mq6p1xf_6-8| z#ga!VQNZE&$!X&f&?(?a3kIl+(CkEX&)=iol7&=z+6c6@_~-9Y17(_uzp;&AI*v_S z$T`~#^$hK^*(#s)+dB)#j!x+efT)jU?pdd zOZMhC&h&FA`gmDtMIn_6VjNIgXDf(h<7V#~v5R@f+PeB$)6M~C6UFGHN6s0GHDu>{ zG9sdiyha_K%)#8YX+HVmBy`;oX`PA-PVp1^DNf;25i>Y?w1bWxh$H>>)W^Id`Iyum z-xID!pI&*Fnwoa^m|8A&U68gnK0ll?b6^mY4w=jOQV+@g)@R3Ctjd}P`v%P;yh>g} zAqKbV`o^MTuLM4m$D8OYNX15B#Cz2aJVp+Yy_Em8gduqgWFc18soOGK`W{sVww`pA zSRU$vErKs4wc*n6IgejTrmHRB2u*W-YG+Dze3&6k3e2Z7jhl}X3+Jt?<9d7L_8SB0 zw{i{<9}Flr3|1PKoYNJ(-7oX6iIW5adX+ui{7~oIw?~R`T-B|(;A#fJaZGJ>L8-Zz z;t1sx8~WssZ_>z3#GkqzQ&l2EfvVlqUM_f@_CBFN9>j&(K6TElfpR=AQ~JpUOaCia z)pCjyrGZ7gt4^g-=ja6Hr~000lRu+2fSIlRs{sK^_2}(-QecIfqK-7E9kqrz?Oxt~ z$6mvsQrvq;!|FnM*ap$fCZoTXH-BCk(jDy9ByS2=-{oDk&MaZ3mfRfd2qxpEJ>Xt^ z0+c#0Xu>ttK}F{q!I|vPp?N!_Zuj=e>9%Jl_7T=r99{~EybCAiac-pB=|?UkbtF5y zzO1s_^z7T~<;Z_x;xc2|plQI%LVzI6{0j zlX&l%vs#F9Z2SK7CJr3-B8R_v^TA090J`KT`*{iK_%xTaG|*)TqXAOvHLFhF?GNp$ z5{ZFJr$OhNLTdIR(vb{u!_4Q#BU+UUd#0|m{}k^t$BZvJ+0qUdRx|C@+e&*R{}Miz zBHGW*i?yvB3Xo%*?Bz{btm0hOQVDzfTC7el0h#Pg-RpI zB=XWf-0NbJ(sdyHzBuR$J3g&^m916ha)Nd>VvA~XcqIXh<4?mQ(kuERkAUu#NmVj1 zU&bb0!;0r-ntxV=nwJNnson4n;duwEqd$!+!opOA-}3n7@6K_p0?|rNHHg|NBXz8g zkveZtRej?*DDiCOh(Q1ZS!li+3rX`UL@@9KYY$woco zxP>Pyb#ZyED`u+QaUKU?Dx4${CeU2&kLCtNMbqw|rO~*zq*Eol5|ED;XX$kI$%oB0 zWq}w{vQqJ@kYbxdi8ICN=|``(m~BY!1{Tbja~#nB#Px$Px6T@w8n&jdmxsyw2ZgD# zr|_|em{+s|*$uW~g9u^JKf%Xlw`iRTTc5PdIG+7#^BrbRrBq7Kg-$Nd5q2cxzN8_n zPM2>HlByegRjSUVWDPckKrbT_uL$Z z%WH0>`ZHSW*>4SJ-X52S?|MnKBuDBRzgHi`?Z0u$ue9)o9|pesN)mVT`AjOX&y*D; zB8Orc2r}P80@>!>yGjl)=LRZuYss{+ao4-}0++RrJ(+GDAkwbsmyB@M3)kFEm=M>+lagK?Of0Fthpt=)2ReW<-vThTVF}8zw^qKe= zbf?mQT-m;RP`vHoCX9Fy2)|jcx9T|T4(j##sbNppE^JR~FmAp5TQDD0aCq=Tmi|Z6 zHxCNGPv!4t#vE@!tKEU}}6UZF?j_}uS{40=uLU$dh5O%#YQ9z|`x zDIa8=+~OZ|6fKz>1v>x)MU3tlV@R)e3x#bk(XA;1JMd-!?~z^Qq)?k5X3X6Y+9J`x zFndKI(^2$Y4Quym=?f)_G3#q8*mJ;UZJ_?SAEwF~Qq=!c_lJyC$3Z%vlUVhH6V+`M z{kX8sB)E(w879k(t2@2C;O2zaU%jHT#1_hIbFu43x|UL>-y3YrrJ}PPNU{^$npK~4 zjm3b3U7gRUC60`w;xzW2jGA$z$N5Eo0~7V~Y8Q>yeK*I>Boo;J6;^iB>uNP=ibT^o zSJ4o_kiI$P#%{ftikzMKhW*0b#^vI2I$`WEq3LPwGDLc_7OBdB-74LWiX??;DS_;O z_;Bh9gun#36GVlZRjX%x-C&3<(y)$lu*ho;jJIywe<0NGBx5#M?7N3Q9LYfv zsZUHl+}O2W@Q04VSJVM*2)`wEZ#I(s^2WC63-2LJsLR@7#agn1bx)CReu^w+9n7s! z*0GBS(`+satxfwHIY9bUcgEL8Fd)jb_V%lqZ5f5`);J;zeb5N(sJHJZc3ww3oY&YWm_Bh% z@-48{@DY~r+%M@_KLFSTX3(E~siyAk;FD0Y2y(TWY-bFn;|aJ7jEW67EG*m`HLz5P z5If+@yn#$+(13OtES^mF5|irea|>}&P~T*%x?8c7)40IwB)~+Z+XIIjvdq($myKmP z%>pYIv|pG(*EqLEHm*KC2K&Fkr?4$Jvvp6Zw2{`L#x!3nAuo2^?D~OmA6OX6V(jDfCYpWPWFS3|4#P9y|!DDv}vm@B2-?<(tMO-x*3Q?l$`_B_+URYE~d|FLgEpp?RdUot1Mbc%FKYB&IdS)VMg>B5QFvwQ-)(?Q5 z3R>v^ONq)40iU`;*qtn0xxo2OT7USfzO0cX4JE1P{w!1(SXCA@J2gaM9ay=DR$MIL zm4`y|CxKs|Ek0;nDG}Xe`i-4!bweHlMr<26Bi^aE9wL?G+(p)T_O#41+DS%uvwGo5 z#halMMhD|(TsvI}R#>!XyuUy6;u8Mc5B&H|rj)ek3cM!H1VoO;YLIMV0LcyQSuSl$ z(~Dsp{)XXNSWQ292RFX;5h}c^qS>hbJ?%$e*h0*xQ)|k)G8HFL4%T_T zJ}SmfKT@msIf2QVlx|m4(_`4_rMUNvPP1_pl0L7jK3Rt5mtsU}dSw?cv~3y(@M{}9 zp1F(aX}bIrwG?XIQs+A8U9RERP?R?Z2*h(3k7(mh!Rl>5?kv;E#19p+8*Gi7mJbQfelru9Ln8t>KeI z0x`ke58+U*0Z`DkoRIIvK*Q0F z1W;ge3^){A2GRosR9~OW*z7d-gf| z-deS)*7##R^^UP-)v7t>JARKGH2DL&g_{1f0=_~aBIYX5`#5W1`a9SAWqJxT?v3x} z{oE{0>xmblo%D_B&(a18(p!D!dh>KZVBvix*Yk*kX47KTg0q3MC`7gGlmY7f-1BpT zh`^L2?^*vn<7d-8ifAyD9Di%W5a#r1rknM3#_UgtZcyep?~ScTDKYWp6(fGomMP!s zVB>Bbsk(#6hs(=>B-ti5FiDC`TQHRsY+r=0FUyh&WZ;6J9-Mnks{yEyi*-Ak6e|#e z!I@Xy5gT=Ip6lWm4}_)pz9L1d_e@Xq4m>#G8@6V3|13c69qnwEOJ-!AMIbY~zqJ)C0Nb6K4bkQjL}|KIP1Hr)P4rTztU)_o7&zghhFbc_y^vdfbNDaACdO)eDRAuVUg0Gco7svs5dfdS*U!g?}ufN zFt_cVa;}P)J6kTrO<9e2mUBI~+kkr&_c;QknlW)+;Bj6h8ZQ()7XS}AyhxKWXeb+C z+Ee_apI&Sqj_ZWIUyt5>QmP8#Q6Z6rz{Gb_nc%mL_!MNaYW+>d4?fIO?|?5>S$5-%wx@Ct@eUHby+U1!re0QdT^DbANNMD-B}tO89A zRYuT!secyf_tMb|U+@t}ajmV@<%tyw<;~>9U^284#Aw<(ozlC#;eiY*0CTt^v|@$( zqwG}rbhyXoA(Cf z^oQ}KColB&Bx~P=cGBQt@pRI`d2@cb*?(TSxL&zUX@7m4bbZ{KlJ(y5dN^CD?&5jB zU%`39KQWK!@QsMl+^?Y~|An{l81U%!Ocl7^Naxo>`YR(ORHEur4nKvluM}cyWfV#j zV(Yn+>~u}M1^)!)z%EltIExu$d?dw?Bn8_;DPhO#v{qEGW_KoloM!3ecvZ+f(twIfYG1wmr5pDc(K0d!S&froAkm2~oN1o6{%9z9jd zvm;GP$NF*c#L3VWwq$Tw{Y(b491Aa9XDJqjXk^H)>5O-xoIm!5- z_e_NV1qsAmD;<*XWKF6Yvpih-WcZc6++>wHmvWL*zl!fH_wjKh z5I&gAIgcM$=uBeQ8TG#!np6|~JHHp z_T4czvh?ysMocE%@5Z-o(W!mue$gc4T$NZueI zpP@YL5;%>0UaBCFPS+4MIvK#3UzX#L=3Y|n^;oma13CTirt~3&=dOq8;znE*=M$&0 zg*TuCCL{L%bjcvPT72Gff6vVBX=mm9_0-(!B>jz26tBbpz2 z3ouc)T@0@U0O#-K5D`zMchx4otEWUki6BZ5Vt>Zdov$eR|14z?tJIhFU!0U(? zZ+hw3@S-k47d153^Ey{&OxV-k>RAl*US<+-X34j$qT02^JsclLK<|)diCjrC_D3ze zinJSMf(BiMGkgyVpbC?$c^4*3?>gz)2J(f92P(kpL*oR@cg&q@MIfydE_#u;-FX%7 zRW3_U#MD+H93%)I7SLud8+J*Cz)UUG2KB&*NGnnyI28tD1JDk(T=sMZR84^yVEhf7}--dJ{9>m#Ce^<%axq|`JG_X)pCWHObz z2$^7F!&eKFvBd%2Dp4yA<|difep1po8D|3q*ML5akl=b=bdTAa=z zWJ;nSxiKheUuOhWyyBBazQq0tmD8Tjs4Icu*ZxV^P?6z&)IA@nic`Rbx_5m|0I}st z6Bui|KyKbE^)ZXjj8ZWtxPh`kyYi;stSq8h#A(Q?KQCX65t)i=M0myddq~3G6Ci`J zh-y>dJ_)~1Y=GfK4_1@PJeOpjm{ITHl&FJL>$Jk)#W+n*pFntQLbT>hkRAxhh(n!S z>KV^vHu)eF!E57`@RmK7bCQlwhz722^FX97EB;qKT_+nWqW1=tb(jlFG{W` zYoI1QF96K}gJ0 z@o)nP>uOX(XehA|j5@IcIto=)GfYU0*S2AT z{qF+ZK`KHXWp8f9izHN|MY8HE`=|E;g-X}Y!DoR!LJ99`9a$xTR$V#@QNBmbLd#pJ zojh|gH5E!KiQ!KVx_^4I|B9plHRERm;h+X3#{~fR^G5i$+jB=_2gm=(qvD(c5bXv3 z*E#M#c~or#fAXj{+)ULJrI#+wGJTQc%N(Jx3j&lN<>5}0-QzGc5ZujvBf>)}yF*ea z2m=~T(b$$p~fCG_Q;-}STWvO$te7q zMIC`P949s|97 zV?`XxjPf1koYJJ}Ol8QESQQc008xwr#QCi0M7Q zP_#tsWFlD>MOUiGeM^AzYMwL9&U+(0+2~fqFkQm>bBMT$Ell3=@eT*JW{9Uv#j}9f z>dsH`bQMPZN7I8WGDqjOMjgF~G>#fqP{qxD&97i7{odX3ZDjcq39B-`6!fIhf-N)p zc-s=tCWouvYhx7Qtn7zjN{gP#-c`O4UPIyn*-(00F|W13%((4B#Qf{mS?kcz&dXqU zRWJou#~g2HR z8~BAHHIfYAW?93TKCo7J=pCruseD=Wg5NLeLkA}#BhUkl^5*GU2uq0x4`W!`U`H0{ zLjYdg3?_OIXRIqinz0BvDD;Qipz#&BQ8*5Q*Hv)nkQ)50rpGs12TN^n<43u4&O}S3 zA;H++%GMcPb55j7&5rjeOH4NB8Br9HOvqs{l!7w4WS3>Qc;^R6H=pVm1X;?4r9hMU z+p)x_y)dzjclI8~=de;oRh)?5>2Yg676Zx+OG$J3WcMW&L+l;aDbbVLv1G@pm&$EK zfJM30YS>Duvi8swbFYt;86{MxL*S`fhl_Z0lC^lBlN?D7)VK=g6;XVaQJe1BgD9DFUG4 zNNFk~B|oo9$1`8_ZSspvrOapy4mT756c%A6qlJ+`6~pNQSUR*&)Gb0WMhK_aG##QA zx52EbG%@9^T5Om%r_fCgF#9wu$f`)RAt%?;CN#IPGSSB`FWZww{PB-miUkbXf&=$t zCowmkdvv2&2Yf~zIvllXy{l+AEN@1#4v-!uWZPj)#&pGzaYt{H%yfK_=OSy6cFzrW z%)&g^N=tuAT?DXa>GnrhXcXWLm>rQ9Hez@-PVM`*wU{XUBtmQ)YA|wF;T`s$HyW%F z%%?k!O1tmYw0Md|2r)N!CKD31&0HRFl`4f)-dq%(&6LIk(&9yn<3I}F$gIioB;t`G zKI3iMVjeYYJVB~@hy9_nW|HEF-ZC~5U(TDI@6~DTO#Rqr1+=^dZCBkJv}HCem=eIr z6ODMqBa;1TmddZhb>?1C_{2mMvg<;xivo&OCiLJTOKx0`9ec*L*9+MLl9$I#9sYFg zD58c`W60v--bVk#Bzv^Mo6p`WLFNJ9hwLR( znM>bOMY2NT(C=T2r0{tT*W!rnEF@lJ`ilL_PRhK=V(#)>tCzK2sN0Q3>5WC+3T@ru zUDWG+iE$+LwqE)dsT$4P`~j-jbK$z8d)zQ5c+!2ORm(CSrpQ!SNqzz$y3Z91=o|c? z&E)t%5ii$6=Qg|pw9>t4H-pG?t6fx_0o*CtwYjd^MMd;OFU|94_IJ|W&G(QGg=`yP z-rdCN+DjJ@Q+Y1Hl~&A?`muHzjz+^+SFQ7?xV^`#^c3z30-%+}j{+&4Ea&xV8{JuC>kZjq#vEmV_h zpO!Rh@1zvO*%?<(4+vP=P#(VfNDmq9#IttIcBVk4IkKI-gR^Jv0WxO?Y4ph&zhmxpS^FOrq%CT$lg3dFffhokDTi7aCA=*GQ>KjTViv&Clq|Zu zel9R?VFVWGcu6qSla;5Kx!Tr9P{eqgyl*8MBq8YwKga6{kF3T`&_qY2Tfx8=d$jr3 z(SW+DWVQV$p95zi!_Ic!e6nR-v|J#M^&7|Y6v>Hx-*}I~nTzRU4oTu+<;OsXvG<9O zhrl6b_>2f9)ODq%pnuAZapLLrB6ydqRfJeok@-y{$as)v6muJ_c16)O#;!$QEn-sn zvD_8AY>@_a9iV3oF*7%6>Fosw>>!GQjKliiW-zcSMvla<7Smmr)Lt_|wMVi++eD1$ zREYj=jec<92ob3()fY2)%uIGu@65w4(R{G%%*`n$iy&tzyqGFy{c= zsi~+(rb3}w27GwlwiMhI7ji78+=xM^+vLmynkS|N+L)3{URs(;?nk}F&Sk}UNWeT1 zk2MDe^GFQT0qHRER5WEe?vzl7`QM|8JC!O>$v)G?>LsdI8^JvkicaoEdts0*_3|{@ z$%UU%FghG-uD9}MsVO5~73?`{L3=!Z+yV94H(qFbtjDhZlu;*Nvh^xX-}k|1Gdd=< zqS~HgwTK)Sfopn&OqyKMZT+xnF2C-i@@>yy^|VgpgHK>0N_o zgfU%J;&nAf?~n=&r@Dl-qZu+Wg%zS^=3vDpW+vL=P4(`$i0Da4A7l^+3J;+3qc-|r zX03xz3mY!SlDKg)yG=d8Jl|j_&i(ht21XkU&3wmnQF3>x!#l^e<&M$Q9 zr+N%0aom6oyNtHko0nP_X8-spv!tnF=S?F%ZX;UaGY~JDS~SyUAfhs4-D*;W=aZP$ zY{sAor_6*^%|Y>N=|fG@pjM(hX`Ct^5H<!tm1nuSqwj+d;|n%{5Tqe@ zXum22-F(@Q!-rExGjK&PBN=SM2Z!~{em^{?Ate<(*hCzr=f2>n7ISy)`za%%dqMY@ z%*!WGH)Un?xp-4Yql(PRaCbAhp?BC-fTvW#+I3uJ3MkB82=qHsp+eF#dLJUzz>kcN z)-{yH#>xaO&HR2ho`m?B0od1Y1QBK|itIb1IILgVcMZl)ShO2;yAJzFnvHBS;VH{f z^1<`C#-_8a9GP<5F|Ifq=OrJsd^21AewsdEQMwi-+G%>edQd0@VtReCjuIocB4%|y znwwf;9xLX}*ddQ3=XL$Aqx}=b+PD;AeJlv_3i1NBdK8+dwCIQaB=wqa>Z>L6I);oP zW5P;(^beK=UD;rA5F(RpmGY5eb1i$;o@cE=i~&$8R=i3=c!gr*m&;!$yB~EaXU+4UH7who)U>qWD1K0H~!M6;no>p)OO8m_sC1_JZKK+A|_ z8o`xB+EH@>aYyhB$_7sl zRK&d~jb`Hum%ERmArcvmow$7=vSSGLQ{R01+tFTVX49m>pd+S;{^--{Z>=2fPuTCC ztZb{$xycTy)TnAHK&S6>*L`z4LAI_mt~;u9XOR1)wY2Ono~^rn1}ErD7HHw>R4PU@ zt1O*kx12`S?2&PAt{kCObgOR63aRr8(6uf2^4SkiNXmJYg;WZ4%PHT9q40FjBV^0& zT(R*$-2!sa4#5YiPNP30*@^6iOaepHp4=hR4zo2A`T<{!5Mk5p_kL?Nn}GWnT?ym8 z#9>qu^K@Ov+;R#Go_NZyTPPr|H@syvR+m_fVDY4t>JE#BG= z>VJrhr9ez>;hY;?j-r%J>EIIVRt~Ae@P4J-3el?r#d)y@6z4Mx-Zbp>UTnqsM(3q! zL|PXhFXtOU$8^-wtz;)XS7XapniNYM5!o*hd|DBxCn&>AM^bRBf(^3Pp{`(4^R0aBA-9bG71n z6wvEDN=#b-=(EGa~eTQA!+NjbjAVr z8(N>9gvQmwvqXnTNosyPt6DvtAsJE@unf||A0el>pjClfE=HbJTQ{q_AX2DFpA z4(&*JX7I1((qsh$F_lV6Ri=ssA}de?eI=Q>Fob0{|J>?NL+Vkj!E6^9fy&%_fSN>e zrg}T4zm3x2-9s!1nDnUpk$AS<>OmWw0H(38D!S;78nYjq7u2Q=I6$5FPC~$17U4an z*BPl6s`wVi@~WJ6ABfSA~#Kd@ZoD}z|?0%mkq4xC`y_oncjJ#l^!rKyh<1Zg>a%*DkHWzoB zq;bKz?a{bKO)@s=ALjV9^Gwb`(LD8Qz@t%b=S6@l3WX5``@lV*=T~%ot9PpqodXeT zke`m^b0o2FGEufhXPP~^k;l5d(J@|g>iax#n?zV1Fe&xP=8pXg^QzCK#!_gzC(%RG z{gfJmPV@yv(aZjcP#u`)o~)B#0HBF6(;h-UPa@K`e4bJ--3)D(lve42`?SzN_@iIi zkcfltnDTkyop_NUBAIsxwhit!9r!J5X{<$vl)E;R_Q;;-enx@1Wx7b3No{Ng!jiNW z34TPDL{j1!5pWOmr_sPXt21f=!Et2_B;VLlB zOgv$1*ljT$UYp3GBTDk$Y@A+_a+j|;5~TwOXCd98%{m*(;W)JDn*q*a@Px+U6itr} zVqacC@{^#~kkJ;0)$?-`rH`WUu$e#Kazb_%+!cigi$;kZ1H-i_J!7kaSO4g}v?S48 zmP-CsMZk0uxgL-FU7){rpf)IxZg0zE5}#6uvNQgmgvj(hQ>H%G9BZ#`_(x$a?A!s?3Qft>tfC8Eyp1CEq6&@*Pvc z^zA>hF;Y1WtCUy`j8j`rC@uU+EI$VjP1KiAY!&vQnyRI$sGFUwMp9|97Sm6+f`4#% zQ~spt*h`oYI@+z4Hx`|1$szTr6nm8}Q=(1pv`Iyss{GMlT^i+C;(Q8@`JyJM-G8Fv z@O~;O>hra$$n7ZLz~VQ$118>jQTIW@DI!>QriAY%-dCkYcT-_Erh({lGE%ibJfhtf zJ+f_)Ex9x7d*=Hoc`#9TpUAD%?BZC~h!5e5{3@k306~>J>6{8!TbQ=N7k)q8+(}WkdS666>cR0%NYlk&n%SLM6dIqB&qt7Q zC`?Iy)syrqqK^~RFQUZ8!U4azN?`@Nuy)PBp{Ht}4r4W9LA8 zHGJxjpOnN)O%ptPnL83O)2UR*E>Gj>eBvnTbiw=;`{3xoO9Fbs#{iY!_%ovjK^>IyPKLW6FzKqn=X2KSf7vyh$$ z0ZybTdk>HCedl|SuI`_?K>$l}@Vx85$WXPOMM_XeiDHD`+ODcEojQ75-Ig{W_8%eg zC~C&osWD~19woq-E7|i*)k!*o?s?}DwmVD#CuV3rR8os+WiEzd{q)i0lqoUYpl>#v z%P33Q%N;EAKoF&M8EKF_E(7Nq9;E3K;SMHCu*6d67-|F{BHzXOhJ56TL}5NZpVBJj zw1YDvJ49_$N_iYPMX_!C&I}XsI0jaXKpM(^5a>kgqeM0dp|JE>fmfJtl@mMw<5F z+!dDCWfKO$rU-0Ip4~qom>`9H#=(iG6=1fqkDR`w%T<I;OTU^swvE=X@g8`V8Wy?52z~IpaBpi0 z5((HIIn*#(^=7Lnr4crYiB_JJq>pX3!wdaGPsf~AJYB=OMpT#lx66v?3_!Vgia!!z zv(UI?p?^>=W_jiVT;42bN}CaGCwyExXq@%AjbVX6HDkBjxaki9jMP}fz>%;s zf7j446|2Wl!8ZFmB&>bBlo&gpHMj)3&O>9(sf=%*ht|I5`8^nmQ=Zh#2ZCcRY$2C>Lb~l=++A)uCpg*o5LhhKcgfNm1p4s+4?`S2NvU&Uwg^I`O?T z7UM3&&wu8+xJrnK4pyJK=)zfNm0nDNB?!4coQxQU&YTwBlF3sHqVJ6B0L*O3 z1@?-T+0|aYj$VLs=bHM+^m6+X=jyZlatJM+66Lg;d}@u5Tz+@DR!qd{y41!ROKUsw zs@L{uf?X^LoLl?%+L7}#4)KxGl`YNsQt~+iHDq1-$_o)Ih@TscV=qy^#3wTS*f-~H zTN*!%v>?v zXV(5Zf2DxCcE4@~&Gw z2X+z=NDn;Hm!1x=s2l1h5TqVNg)cK3tfen?4bVe3Alo<6Z73~Y$`*iiU(PFltZqnG zAgC+A&TiPJ003VQHeWD5JaFIuIJob%4v{UDG^I31;VpK0N4h7#}j2kpa;2S2qc&kys6>h5`M@1 z_A5jn$8>({)08r2GE8V1Q%VG!;DIn%pHhf31NIaT3qHIC#S=UZ3KpLWo+lKx238=j z&7Cq*1dFd99~RGf8|OF9REh3tm7*;%7Zj&_*W(U`8CsT~cJA6V;qO~udr)tIbKGDb ze(NhXCP8f#_AcbUCr4}NN(Ywqufxg-F*&V%0w9;m_SDZ2uE$)x@T`KM0mzaans=YHJ(2Kf&m#DB@9zOaAfQvbsK zWtaG;f9EeO;1}@R&k*SEwf)`3^M(6ke@Qg{d-8u) zPze0**uRt-U!cG8=l^>Z|C;VUWg364FX$hj|5(XCYK<@QAGOAR&itQI`Tt$wpM?bc z8vN@={!`+AkpC+<{|o&mIR8J<|IE<)d(nbl$$I~e{-4o*9kBR<{z=sP-=P0~M&n=5 z0zWp+e}n$piH&~%|F5o+zc0X&#NUDc>M{9({pm6Jt2&Uc>jMDb``3%{>%tSZ_%r%{ DLgQb5 literal 0 HcmV?d00001 diff --git a/main/inc/lib/swfobject/swfobject_source/swfobject_source.js b/main/inc/lib/swfobject/swfobject_source/swfobject_source.js new file mode 100644 index 0000000000..15137ff992 --- /dev/null +++ b/main/inc/lib/swfobject/swfobject_source/swfobject_source.js @@ -0,0 +1,1062 @@ +/* + * + * SWFObject 1.5 & 2.2 hybrid solution for the Dokeos LMS 1.8.x + * + * The problem to solve: + * + * The SWFObject 2.x javascript for embedding flash-based multimedia is the + * successor of SWFObject 1.5, but it does not provide backward compatibility. + * The Dokeos LMS in its 1.8.x line uses the version 1.5 of the script, a lot + * of pages have been created using it. On the other hand, the version 1.5 + * gets old, there must be a way found for using the modern version of the + * script for the newly created pages without breaking the old ones. + * Note that both vesrsions of the script share a common file name swfobject.js + * + * The solution: + * + * ... is simly merging sources of 1.5 and 2.2 scripts into one. Javsscript is + * a case-sensitive language, and fortunately there is no name-conflicts between + * both versions of the script. So, version 2.2 part of this combined script + * is to be used for creation of new pages, while the version 1.5 part is to + * provide the desired compatibility for old pages. Also, the "compressed" + * production scripts are merged. + * + * Links: + * http://blog.deconcept.com/swfobject/ + * http://code.google.com/p/swfobject/ + * + * License: + * The MIT License - http://www.opensource.org/licenses/mit-license.php + * + * Authors: + * (c) 2007 Geoff Stearns (SWFObject 1.5) + * For SWFObject 2.2, a list of the authors may be seen at: + * http://code.google.com/p/swfobject/people/list + * + * This hybrid solution has been prepared by Ivan Tcholakov, July 2009. + * + */ + + +/******************************************************************************/ + + +/** + * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/ + * + * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + */ +if(typeof deconcept == "undefined") var deconcept = new Object(); +if(typeof deconcept.util == "undefined") deconcept.util = new Object(); +if(typeof deconcept.SWFObjectUtil == "undefined") deconcept.SWFObjectUtil = new Object(); +deconcept.SWFObject = function(swf, id, w, h, ver, c, quality, xiRedirectUrl, redirectUrl, detectKey) { + if (!document.getElementById) { return; } + this.DETECT_KEY = detectKey ? detectKey : 'detectflash'; + this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY); + this.params = new Object(); + this.variables = new Object(); + this.attributes = new Array(); + if(swf) { this.setAttribute('swf', swf); } + if(id) { this.setAttribute('id', id); } + if(w) { this.setAttribute('width', w); } + if(h) { this.setAttribute('height', h); } + if(ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); } + this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion(); + if (!window.opera && document.all && this.installedVer.major > 7) { + // only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE + deconcept.SWFObject.doPrepUnload = true; + } + if(c) { this.addParam('bgcolor', c); } + var q = quality ? quality : 'high'; + this.addParam('quality', q); + this.setAttribute('useExpressInstall', false); + this.setAttribute('doExpressInstall', false); + var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location; + this.setAttribute('xiRedirectUrl', xir); + this.setAttribute('redirectUrl', ''); + if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); } +} +deconcept.SWFObject.prototype = { + useExpressInstall: function(path) { + this.xiSWFPath = !path ? "expressinstall.swf" : path; + this.setAttribute('useExpressInstall', true); + }, + setAttribute: function(name, value){ + this.attributes[name] = value; + }, + getAttribute: function(name){ + return this.attributes[name]; + }, + addParam: function(name, value){ + this.params[name] = value; + }, + getParams: function(){ + return this.params; + }, + addVariable: function(name, value){ + this.variables[name] = value; + }, + getVariable: function(name){ + return this.variables[name]; + }, + getVariables: function(){ + return this.variables; + }, + getVariablePairs: function(){ + var variablePairs = new Array(); + var key; + var variables = this.getVariables(); + for(key in variables){ + variablePairs[variablePairs.length] = key +"="+ variables[key]; + } + return variablePairs; + }, + getSWFHTML: function() { + var swfNode = ""; + if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture + if (this.getAttribute("doExpressInstall")) { + this.addVariable("MMplayerType", "PlugIn"); + this.setAttribute('swf', this.xiSWFPath); + } + swfNode = ' 0){ swfNode += 'flashvars="'+ pairs +'"'; } + swfNode += '/>'; + } else { // PC IE + if (this.getAttribute("doExpressInstall")) { + this.addVariable("MMplayerType", "ActiveX"); + this.setAttribute('swf', this.xiSWFPath); + } + swfNode = ''; + swfNode += ''; + var params = this.getParams(); + for(var key in params) { + swfNode += ''; + } + var pairs = this.getVariablePairs().join("&"); + if(pairs.length > 0) {swfNode += '';} + swfNode += ""; + } + return swfNode; + }, + write: function(elementId){ + if(this.getAttribute('useExpressInstall')) { + // check to see if we need to do an express install + var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]); + if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) { + this.setAttribute('doExpressInstall', true); + this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl'))); + document.title = document.title.slice(0, 47) + " - Flash Player Installation"; + this.addVariable("MMdoctitle", document.title); + } + } + if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){ + var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId; + n.innerHTML = this.getSWFHTML(); + return true; + }else{ + if(this.getAttribute('redirectUrl') != "") { + document.location.replace(this.getAttribute('redirectUrl')); + } + } + return false; + } +} + +/* ---- detection functions ---- */ +deconcept.SWFObjectUtil.getPlayerVersion = function(){ + var PlayerVersion = new deconcept.PlayerVersion([0,0,0]); + if(navigator.plugins && navigator.mimeTypes.length){ + var x = navigator.plugins["Shockwave Flash"]; + if(x && x.description) { + PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".")); + } + }else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ // if Windows CE + var axo = 1; + var counter = 3; + while(axo) { + try { + counter++; + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter); +// document.write("player v: "+ counter); + PlayerVersion = new deconcept.PlayerVersion([counter,0,0]); + } catch (e) { + axo = null; + } + } + } else { // Win IE (non mobile) + // do minor version lookup in IE, but avoid fp6 crashing issues + // see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/ + try{ + var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + }catch(e){ + try { + var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + PlayerVersion = new deconcept.PlayerVersion([6,0,21]); + axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code) + } catch(e) { + if (PlayerVersion.major == 6) { + return PlayerVersion; + } + } + try { + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + } catch(e) {} + } + if (axo != null) { + PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(",")); + } + } + return PlayerVersion; +} +deconcept.PlayerVersion = function(arrVersion){ + this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0; + this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0; + this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0; +} +deconcept.PlayerVersion.prototype.versionIsValid = function(fv){ + if(this.major < fv.major) return false; + if(this.major > fv.major) return true; + if(this.minor < fv.minor) return false; + if(this.minor > fv.minor) return true; + if(this.rev < fv.rev) return false; + return true; +} +/* ---- get value of query string param ---- */ +deconcept.util = { + getRequestParameter: function(param) { + var q = document.location.search || document.location.hash; + if (param == null) { return q; } + if(q) { + var pairs = q.substring(1).split("&"); + for (var i=0; i < pairs.length; i++) { + if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) { + return pairs[i].substring((pairs[i].indexOf("=")+1)); + } + } + } + return ""; + } +} +/* fix for video streaming bug */ +deconcept.SWFObjectUtil.cleanupSWFs = function() { + var objects = document.getElementsByTagName("OBJECT"); + for (var i = objects.length - 1; i >= 0; i--) { + objects[i].style.display = 'none'; + for (var x in objects[i]) { + if (typeof objects[i][x] == 'function') { + objects[i][x] = function(){}; + } + } + } +} +// fixes bug in some fp9 versions see http://blog.deconcept.com/2006/07/28/swfobject-143-released/ +if (deconcept.SWFObject.doPrepUnload) { + if (!deconcept.unloadSet) { + deconcept.SWFObjectUtil.prepUnload = function() { + __flash_unloadHandler = function(){}; + __flash_savedUnloadHandler = function(){}; + window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs); + } + window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload); + deconcept.unloadSet = true; + } +} +/* add document.getElementById if needed (mobile IE < 5) */ +if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }} + +/* add some aliases for ease of use/backwards compatibility */ +var getQueryParamValue = deconcept.util.getRequestParameter; +var FlashObject = deconcept.SWFObject; // for legacy support +var SWFObject = deconcept.SWFObject; + + +/******************************************************************************/ + + +/*! SWFObject v2.2 + is released under the MIT License +*/ + +var swfobject = function() { + + var UNDEF = "undefined", + OBJECT = "object", + SHOCKWAVE_FLASH = "Shockwave Flash", + SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash", + FLASH_MIME_TYPE = "application/x-shockwave-flash", + EXPRESS_INSTALL_ID = "SWFObjectExprInst", + ON_READY_STATE_CHANGE = "onreadystatechange", + + win = window, + doc = document, + nav = navigator, + + plugin = false, + domLoadFnArr = [main], + regObjArr = [], + objIdArr = [], + listenersArr = [], + storedAltContent, + storedAltContentId, + storedCallbackFn, + storedCallbackObj, + isDomLoaded = false, + isExpressInstallActive = false, + dynamicStylesheet, + dynamicStylesheetMedia, + autoHideShow = true, + + /* Centralized function for browser feature detection + - User agent string detection is only used when no good alternative is possible + - Is executed directly for optimal performance + */ + ua = function() { + var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF, + u = nav.userAgent.toLowerCase(), + p = nav.platform.toLowerCase(), + windows = p ? /win/.test(p) : /win/.test(u), + mac = p ? /mac/.test(p) : /mac/.test(u), + webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit + ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html + playerVersion = [0,0,0], + d = null; + if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) { + d = nav.plugins[SHOCKWAVE_FLASH].description; + if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+ + plugin = true; + ie = false; // cascaded feature detection for Internet Explorer + d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); + playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10); + playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10); + playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0; + } + } + else if (typeof win.ActiveXObject != UNDEF) { + try { + var a = new ActiveXObject(SHOCKWAVE_FLASH_AX); + if (a) { // a will return null when ActiveX is disabled + d = a.GetVariable("$version"); + if (d) { + ie = true; // cascaded feature detection for Internet Explorer + d = d.split(" ")[1].split(","); + playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + } + } + catch(e) {} + } + return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac }; + }(), + + /* Cross-browser onDomLoad + - Will fire an event as soon as the DOM of a web page is loaded + - Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/ + - Regular onload serves as fallback + */ + onDomLoad = function() { + if (!ua.w3) { return; } + if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically + callDomLoadFunctions(); + } + if (!isDomLoaded) { + if (typeof doc.addEventListener != UNDEF) { + doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false); + } + if (ua.ie && ua.win) { + doc.attachEvent(ON_READY_STATE_CHANGE, function() { + if (doc.readyState == "complete") { + doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee); + callDomLoadFunctions(); + } + }); + if (win == top) { // if not inside an iframe + (function(){ + if (isDomLoaded) { return; } + try { + doc.documentElement.doScroll("left"); + } + catch(e) { + setTimeout(arguments.callee, 0); + return; + } + callDomLoadFunctions(); + })(); + } + } + if (ua.wk) { + (function(){ + if (isDomLoaded) { return; } + if (!/loaded|complete/.test(doc.readyState)) { + setTimeout(arguments.callee, 0); + return; + } + callDomLoadFunctions(); + })(); + } + addLoadEvent(callDomLoadFunctions); + } + }(); + + function callDomLoadFunctions() { + if (isDomLoaded) { return; } + try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early + var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span")); + t.parentNode.removeChild(t); + } + catch (e) { return; } + isDomLoaded = true; + var dl = domLoadFnArr.length; + for (var i = 0; i < dl; i++) { + domLoadFnArr[i](); + } + } + + function addDomLoadEvent(fn) { + if (isDomLoaded) { + fn(); + } + else { + domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+ + } + } + + /* Cross-browser onload + - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/ + - Will fire an event as soon as a web page including all of its assets are loaded + */ + function addLoadEvent(fn) { + if (typeof win.addEventListener != UNDEF) { + win.addEventListener("load", fn, false); + } + else if (typeof doc.addEventListener != UNDEF) { + doc.addEventListener("load", fn, false); + } + else if (typeof win.attachEvent != UNDEF) { + addListener(win, "onload", fn); + } + else if (typeof win.onload == "function") { + var fnOld = win.onload; + win.onload = function() { + fnOld(); + fn(); + }; + } + else { + win.onload = fn; + } + } + + /* Main function + - Will preferably execute onDomLoad, otherwise onload (as a fallback) + */ + function main() { + if (plugin) { + testPlayerVersion(); + } + else { + matchVersions(); + } + } + + /* Detect the Flash Player version for non-Internet Explorer browsers + - Detecting the plug-in version via the object element is more precise than using the plugins collection item's description: + a. Both release and build numbers can be detected + b. Avoid wrong descriptions by corrupt installers provided by Adobe + c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports + - Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available + */ + function testPlayerVersion() { + var b = doc.getElementsByTagName("body")[0]; + var o = createElement(OBJECT); + o.setAttribute("type", FLASH_MIME_TYPE); + var t = b.appendChild(o); + if (t) { + var counter = 0; + (function(){ + if (typeof t.GetVariable != UNDEF) { + var d = t.GetVariable("$version"); + if (d) { + d = d.split(" ")[1].split(","); + ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + } + else if (counter < 10) { + counter++; + setTimeout(arguments.callee, 10); + return; + } + b.removeChild(o); + t = null; + matchVersions(); + })(); + } + else { + matchVersions(); + } + } + + /* Perform Flash Player and SWF version matching; static publishing only + */ + function matchVersions() { + var rl = regObjArr.length; + if (rl > 0) { + for (var i = 0; i < rl; i++) { // for each registered object element + var id = regObjArr[i].id; + var cb = regObjArr[i].callbackFn; + var cbObj = {success:false, id:id}; + if (ua.pv[0] > 0) { + var obj = getElementById(id); + if (obj) { + if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match! + setVisibility(id, true); + if (cb) { + cbObj.success = true; + cbObj.ref = getObjectById(id); + cb(cbObj); + } + } + else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported + var att = {}; + att.data = regObjArr[i].expressInstall; + att.width = obj.getAttribute("width") || "0"; + att.height = obj.getAttribute("height") || "0"; + if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); } + if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); } + // parse HTML object param element's name-value pairs + var par = {}; + var p = obj.getElementsByTagName("param"); + var pl = p.length; + for (var j = 0; j < pl; j++) { + if (p[j].getAttribute("name").toLowerCase() != "movie") { + par[p[j].getAttribute("name")] = p[j].getAttribute("value"); + } + } + showExpressInstall(att, par, id, cb); + } + else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF + displayAltContent(obj); + if (cb) { cb(cbObj); } + } + } + } + else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content) + setVisibility(id, true); + if (cb) { + var o = getObjectById(id); // test whether there is an HTML object element or not + if (o && typeof o.SetVariable != UNDEF) { + cbObj.success = true; + cbObj.ref = o; + } + cb(cbObj); + } + } + } + } + } + + function getObjectById(objectIdStr) { + var r = null; + var o = getElementById(objectIdStr); + if (o && o.nodeName == "OBJECT") { + if (typeof o.SetVariable != UNDEF) { + r = o; + } + else { + var n = o.getElementsByTagName(OBJECT)[0]; + if (n) { + r = n; + } + } + } + return r; + } + + /* Requirements for Adobe Express Install + - only one instance can be active at a time + - fp 6.0.65 or higher + - Win/Mac OS only + - no Webkit engines older than version 312 + */ + function canExpressInstall() { + return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312); + } + + /* Show the Adobe Express Install dialog + - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75 + */ + function showExpressInstall(att, par, replaceElemIdStr, callbackFn) { + isExpressInstallActive = true; + storedCallbackFn = callbackFn || null; + storedCallbackObj = {success:false, id:replaceElemIdStr}; + var obj = getElementById(replaceElemIdStr); + if (obj) { + if (obj.nodeName == "OBJECT") { // static publishing + storedAltContent = abstractAltContent(obj); + storedAltContentId = null; + } + else { // dynamic publishing + storedAltContent = obj; + storedAltContentId = replaceElemIdStr; + } + att.id = EXPRESS_INSTALL_ID; + if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; } + if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; } + doc.title = doc.title.slice(0, 47) + " - Flash Player Installation"; + var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn", + fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title; + if (typeof par.flashvars != UNDEF) { + par.flashvars += "&" + fv; + } + else { + par.flashvars = fv; + } + // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, + // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work + if (ua.ie && ua.win && obj.readyState != 4) { + var newObj = createElement("div"); + replaceElemIdStr += "SWFObjectNew"; + newObj.setAttribute("id", replaceElemIdStr); + obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + obj.parentNode.removeChild(obj); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + createSWF(att, par, replaceElemIdStr); + } + } + + /* Functions to abstract and display alternative content + */ + function displayAltContent(obj) { + if (ua.ie && ua.win && obj.readyState != 4) { + // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, + // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work + var el = createElement("div"); + obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content + el.parentNode.replaceChild(abstractAltContent(obj), el); + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + obj.parentNode.removeChild(obj); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.replaceChild(abstractAltContent(obj), obj); + } + } + + function abstractAltContent(obj) { + var ac = createElement("div"); + if (ua.win && ua.ie) { + ac.innerHTML = obj.innerHTML; + } + else { + var nestedObj = obj.getElementsByTagName(OBJECT)[0]; + if (nestedObj) { + var c = nestedObj.childNodes; + if (c) { + var cl = c.length; + for (var i = 0; i < cl; i++) { + if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) { + ac.appendChild(c[i].cloneNode(true)); + } + } + } + } + } + return ac; + } + + /* Cross-browser dynamic SWF creation + */ + function createSWF(attObj, parObj, id) { + var r, el = getElementById(id); + if (ua.wk && ua.wk < 312) { return r; } + if (el) { + if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content + attObj.id = id; + } + if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML + var att = ""; + for (var i in attObj) { + if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries + if (i.toLowerCase() == "data") { + parObj.movie = attObj[i]; + } + else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword + att += ' class="' + attObj[i] + '"'; + } + else if (i.toLowerCase() != "classid") { + att += ' ' + i + '="' + attObj[i] + '"'; + } + } + } + var par = ""; + for (var j in parObj) { + if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries + par += ''; + } + } + el.outerHTML = '' + par + ''; + objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only) + r = getElementById(attObj.id); + } + else { // well-behaving browsers + var o = createElement(OBJECT); + o.setAttribute("type", FLASH_MIME_TYPE); + for (var m in attObj) { + if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries + if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword + o.setAttribute("class", attObj[m]); + } + else if (m.toLowerCase() != "classid") { // filter out IE specific attribute + o.setAttribute(m, attObj[m]); + } + } + } + for (var n in parObj) { + if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element + createObjParam(o, n, parObj[n]); + } + } + el.parentNode.replaceChild(o, el); + r = o; + } + } + return r; + } + + function createObjParam(el, pName, pValue) { + var p = createElement("param"); + p.setAttribute("name", pName); + p.setAttribute("value", pValue); + el.appendChild(p); + } + + /* Cross-browser SWF removal + - Especially needed to safely and completely remove a SWF in Internet Explorer + */ + function removeSWF(id) { + var obj = getElementById(id); + if (obj && obj.nodeName == "OBJECT") { + if (ua.ie && ua.win) { + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + removeObjectInIE(id); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.removeChild(obj); + } + } + } + + function removeObjectInIE(id) { + var obj = getElementById(id); + if (obj) { + for (var i in obj) { + if (typeof obj[i] == "function") { + obj[i] = null; + } + } + obj.parentNode.removeChild(obj); + } + } + + /* Functions to optimize JavaScript compression + */ + function getElementById(id) { + var el = null; + try { + el = doc.getElementById(id); + } + catch (e) {} + return el; + } + + function createElement(el) { + return doc.createElement(el); + } + + /* Updated attachEvent function for Internet Explorer + - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks + */ + function addListener(target, eventType, fn) { + target.attachEvent(eventType, fn); + listenersArr[listenersArr.length] = [target, eventType, fn]; + } + + /* Flash Player and SWF content version matching + */ + function hasPlayerVersion(rv) { + var pv = ua.pv, v = rv.split("."); + v[0] = parseInt(v[0], 10); + v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0" + v[2] = parseInt(v[2], 10) || 0; + return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; + } + + /* Cross-browser dynamic CSS creation + - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php + */ + function createCSS(sel, decl, media, newStyle) { + if (ua.ie && ua.mac) { return; } + var h = doc.getElementsByTagName("head")[0]; + if (!h) { return; } // to also support badly authored HTML pages that lack a head element + var m = (media && typeof media == "string") ? media : "screen"; + if (newStyle) { + dynamicStylesheet = null; + dynamicStylesheetMedia = null; + } + if (!dynamicStylesheet || dynamicStylesheetMedia != m) { + // create dynamic stylesheet + get a global reference to it + var s = createElement("style"); + s.setAttribute("type", "text/css"); + s.setAttribute("media", m); + dynamicStylesheet = h.appendChild(s); + if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) { + dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1]; + } + dynamicStylesheetMedia = m; + } + // add style rule + if (ua.ie && ua.win) { + if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) { + dynamicStylesheet.addRule(sel, decl); + } + } + else { + if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) { + dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}")); + } + } + } + + function setVisibility(id, isVisible) { + if (!autoHideShow) { return; } + var v = isVisible ? "visible" : "hidden"; + if (isDomLoaded && getElementById(id)) { + getElementById(id).style.visibility = v; + } + else { + createCSS("#" + id, "visibility:" + v); + } + } + + /* Filter to avoid XSS attacks + */ + function urlEncodeIfNecessary(s) { + var regex = /[\\\"<>\.;]/; + var hasBadChars = regex.exec(s) != null; + return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s; + } + + /* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only) + */ + var cleanup = function() { + if (ua.ie && ua.win) { + window.attachEvent("onunload", function() { + // remove listeners to avoid memory leaks + var ll = listenersArr.length; + for (var i = 0; i < ll; i++) { + listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]); + } + // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect + var il = objIdArr.length; + for (var j = 0; j < il; j++) { + removeSWF(objIdArr[j]); + } + // cleanup library's main closures to avoid memory leaks + for (var k in ua) { + ua[k] = null; + } + ua = null; + for (var l in swfobject) { + swfobject[l] = null; + } + swfobject = null; + }); + } + }(); + + return { + /* Public API + - Reference: http://code.google.com/p/swfobject/wiki/documentation + */ + registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) { + if (ua.w3 && objectIdStr && swfVersionStr) { + var regObj = {}; + regObj.id = objectIdStr; + regObj.swfVersion = swfVersionStr; + regObj.expressInstall = xiSwfUrlStr; + regObj.callbackFn = callbackFn; + regObjArr[regObjArr.length] = regObj; + setVisibility(objectIdStr, false); + } + else if (callbackFn) { + callbackFn({success:false, id:objectIdStr}); + } + }, + + getObjectById: function(objectIdStr) { + if (ua.w3) { + return getObjectById(objectIdStr); + } + }, + + embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) { + var callbackObj = {success:false, id:replaceElemIdStr}; + if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) { + setVisibility(replaceElemIdStr, false); + addDomLoadEvent(function() { + widthStr += ""; // auto-convert to string + heightStr += ""; + var att = {}; + if (attObj && typeof attObj === OBJECT) { + for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs + att[i] = attObj[i]; + } + } + att.data = swfUrlStr; + att.width = widthStr; + att.height = heightStr; + var par = {}; + if (parObj && typeof parObj === OBJECT) { + for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs + par[j] = parObj[j]; + } + } + if (flashvarsObj && typeof flashvarsObj === OBJECT) { + for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs + if (typeof par.flashvars != UNDEF) { + par.flashvars += "&" + k + "=" + flashvarsObj[k]; + } + else { + par.flashvars = k + "=" + flashvarsObj[k]; + } + } + } + if (hasPlayerVersion(swfVersionStr)) { // create SWF + var obj = createSWF(att, par, replaceElemIdStr); + if (att.id == replaceElemIdStr) { + setVisibility(replaceElemIdStr, true); + } + callbackObj.success = true; + callbackObj.ref = obj; + } + else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install + att.data = xiSwfUrlStr; + showExpressInstall(att, par, replaceElemIdStr, callbackFn); + return; + } + else { // show alternative content + setVisibility(replaceElemIdStr, true); + } + if (callbackFn) { callbackFn(callbackObj); } + }); + } + else if (callbackFn) { callbackFn(callbackObj); } + }, + + switchOffAutoHideShow: function() { + autoHideShow = false; + }, + + ua: ua, + + getFlashPlayerVersion: function() { + return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] }; + }, + + hasFlashPlayerVersion: hasPlayerVersion, + + createSWF: function(attObj, parObj, replaceElemIdStr) { + if (ua.w3) { + return createSWF(attObj, parObj, replaceElemIdStr); + } + else { + return undefined; + } + }, + + showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) { + if (ua.w3 && canExpressInstall()) { + showExpressInstall(att, par, replaceElemIdStr, callbackFn); + } + }, + + removeSWF: function(objElemIdStr) { + if (ua.w3) { + removeSWF(objElemIdStr); + } + }, + + createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) { + if (ua.w3) { + createCSS(selStr, declStr, mediaStr, newStyleBoolean); + } + }, + + addDomLoadEvent: addDomLoadEvent, + + addLoadEvent: addLoadEvent, + + getQueryParamValue: function(param) { + var q = doc.location.search || doc.location.hash; + if (q) { + if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark + if (param == null) { + return urlEncodeIfNecessary(q); + } + var pairs = q.split("&"); + for (var i = 0; i < pairs.length; i++) { + if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) { + return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1))); + } + } + } + return ""; + }, + + // For internal usage only + expressInstallCallback: function() { + if (isExpressInstallActive) { + var obj = getElementById(EXPRESS_INSTALL_ID); + if (obj && storedAltContent) { + obj.parentNode.replaceChild(storedAltContent, obj); + if (storedAltContentId) { + setVisibility(storedAltContentId, true); + if (ua.ie && ua.win) { storedAltContent.style.display = "block"; } + } + if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); } + } + isExpressInstallActive = false; + } + } + }; +}(); +alert(SWFObject()); + + +/******************************************************************************/