Installation des certificats Freephone sous Windows Mobile 6.0

Pour une version automatisée des étapes 1, 2 et 3 de ce wiki voir le wiki suivant : script_de_generation_clefs_cer_et_pfx_acces_freephonie

Introduction

L’objet de ce tutoriel sera de détailler les manipulations et l’installation des certificats Freephone sur un SmartPhone sous WM6, et pouvoir ainsi se passer d’utiliser le White-Freephone pour passer vos communications via SIP.

Pourquoi sous WM6 ? Parce que la dernière version de l’OS mobile intègre par défaut un logiciel de communication SIP interfacé avec le gestionnaire d’appels classique GSM. L’outil SIP Config Tool (v2.0.1) permettra par la suite de paramétrer votre compte SIP une fois la connexion avec le réseau Freephonie réalisée. Cependant, une fois la connexion établie, vous pourrez utiliser les logiciels de votre choix à condition de les configurer convenablement (voir section 8 - Paramétrage du compte SIP).

Il ne sera en aucun cas publié la méthode de récupération des certificats. De nombreux tutoriels existent sur les utilisations avancées que l’on peut faire avec le White-Freephone. A vous de faire la synthèse.. :o)

Les manipulations suivantes s’effectuent sur votre PC.

1) Etat des fichiers récupérés

On prendra l’hypothèse que vous avez récupéré sur votre PC les 3 fichiers de certificats ainsi que le fichier de config SIP. (Voir ici → certifextrac)

Dans l’ordre vous disposez des fichiers nommés : net6_ca / net6_key / net6_user / sipcfg.cfg

2) Le certificat racine

Il s’agira dans un premier temps de renommer le certificat racine pour que WM6 le reconnaisse comme tel et réussisse son importation sans problèmes. Renommez le en un « .cer » et le tour est joué. Vous avez à présent un fichier nommé net6_ca.cer

3) Rendre les certificats exploitables

Les autres fichiers net6_user et net6_key ne sont pas exploitables ni intégrables en l’état sous votre SmartPhone. Il faut à présent les concaténer sous un seul certificat présentant la méthode (PKCS #12) pour réussir à les intégrer correctement sous Windows (mobile ou non).

A noter : Un outil sous forme de page php pour convertir les certificats de manière automatisée est disponible sur le forum (et une version fonctionnelle en ligne. Les données transmises vers et depuis cette page sont cryptées grâce à SSL.

OpenSSL permet de réaliser cette tâche : le portage sous windows d’OpenSSL est disponible à l’adresse suivante : http://www.slproweb.com/download/Win32OpenSSL_Light-0_9_8g.exe et plus globalement les autres versions sont disponibles sur http://www.openssl.org
Une fois installé, on copie les fichiers net6_user et net6_key dans [Chemin d’installation Openssl]\bin. On supposera pour la suite qu’OpenSSL a été installé à la racine du lecteur C.

[Menu démarrer] –> [Exécuter] –> cmd

On passe les commandes suivantes :

cd \OpenSSL\bin
openssl pkcs12 -export -in net6_user -inkey net6_key -out free.pfx
A la ligne « Enter Export Password : » on ne rentre rien (juste Enter)
A la ligne « Verifying – Enter Export Password : » idem

openssl.jpg
On dispose à présent d’un fichier free.pfx permettant l’importation des certificats sous WM6.

Les manipulations suivantes s’effectuent sur votre SmartPhone

4) Transfert et installation

4.1) Le certificat racine


On transfère net6_ca.cer + free.pfx sur son Smartphone. On installe le net6_ca.cer sur le SmartPhone en cliquant une fois dessus. Le message indiquant que « Un ou plusieurs certificats ont été installés correctement » doit apparaître.

certif_install.jpg

4.2) Le certificat user+key


On fait de même avec le fichier free.pfx. Un mot de passe vous est demandé, ne rentrez rien ici et cliquez sur terminer. Le même message qu’en 4.1) apparaît alors.

certif_mdp.jpg

5) Vérifications


On vérifie dans [Menu Démarrer] – [Paramètres] – [Onglet « Système »] – [Certificats] : dans l’onglet « Personnel », le certificat du 4.2) est installé. On clique dessus et on note le n° en dessous de « Octroyé à ». On s’en servira plus tard. On peut également vérifier dans l’onglet « Racine », l’installation du certificat racine installé en 4.1).

6) Paramétrages Wi-Fi


On active son Wi-Fi et on se rend dans [Paramètres] – [Connexions] – [Wi-Fi]. Un click sur le réseau « Freephonie » disponible.
Premier écran, on fait « suivant ».
Deuxième écran, on sélectionne pour Authentification : WPA et Cryptage : TKIP

config_reseau.jpg
Troisième écran, on sélectionne Carte à puce ou certificat et on clique sur « propriétés ». On sélectionne le certificat Free et on fait OK.

proprietes_eap.jpg
Enfin on clique sur « Terminer ».

7) Connexion avec le réseau Freephonie

On se connecte sur le réseau freephonie disponible. On obtient l’écran demandant un nom d’utilisateur et un domaine.
Dans le champ « Nom » on rentre le n° indiqué dans le certificat (noté au point 5).
Dans le champ « Domaine » on laisse vide.

connexion_freephonie_user_domaine.jpg
On valide.

connecte_freephonie.jpg
On est identifié et connecté !

8) Paramétrage du compte SIP

Sur certains telephone le module sip integré n’est pas active.Pour l activer regarder ici →http://www.mobinaute.com/logiciel-246324.html

8.1) Avec SIP Config Tool

Le paramétrage du compte SIP décrit ci-dessous est effectué via l’outil intégré dans WM6. Libre à vous d’utiliser votre soft préféré à conditions de remplir convenablement la partie “SIP Server” (voir plus bas).

[Menu Démarrer] – [Programmes] – [Com] – [SipConfig]

sip_config_tool.jpg
Description : on met le nom de la connexion (ex : Freephonie)

Sip Server : Il faut mettre ici l’adresse ip trouvée dans le fichier sipcfg.cfg à la ligne « Proxy » (je suis certain que depuis le début vous vous demandez à quoi pouvait bien servir ce fichier). Si on inscrit « freephonie.net » ici, ça ne fonctionnera pas.
EDIT : Cette adresse ip est également disponible dans votre White dans les paramètre de compte SIP (soit en passant par “info” quand vous êtes connectés sur le réseau freephonie - Serveur SIP = 172.17.20.241, soit en passant par [Menu] - [Profil] - [Compte SIP] - [freephonie] “Voir” - 4[] Proxy)


Username = n° de téléphone commençant par 09

Password = le password de votre compte SIP.

On sauvegarde la configuration et on revient sur l’écran d’accueil. L’outil de WM6 permet de paramétrer et de choisir comment on souhaite utiliser la connexion SIP.

freephonie_ecran_accueil.jpg
Un click dessus et on sélectionne le compte SIP pour passer ses appels.

freephonie_selectionne.jpg
Le paramétrage de l’activation du SIP (”uniquement si le cellulaire n’est pas disponible” etc…) peut se faire également sous [Paramètres] – [Téléphone] – [Internet].

appels_internet.jpg

8.2) Manuellement avec un profil backup

8.2.1) Description

Windows Mobile 6 nous offre la possibilité de configurer un deuxième profil SIP via le paramètre “BackupSIPsettings” (voir http://msdn2.microsoft.com/en-us/library/bb416401.aspx). Nous pouvons utiliser ce paramètre pour configurer deux profils SIP distincts l’un de l’autre.

Par exemple nous pouvons définir :

  1. un profil utilisant les hotspots de SSID “freephonie” ⇒ utilisation du serveur SIP d’adresse IP privé 172.17.20.241
  2. un autre profil utilisant les hotspots ouverts ou privés dont vous connaissez la clef réseau ⇒ utilisation du serveur SIP de nom DNS freephonie.net et d’adresse IP publique 212.27.52.5

Cet exemple nous permet d’éviter la re-configuration fastidieuse lorsque l’on change de type de réseaux wifi (SSID “freephonie” vs. autres réseaux wifi).Fonctionnellement, Windows Mobile 6 tentera de se connecter en utilisant le premier profil, s’il n’y arrive pas il tentera avec le profil de Backup.

8.2.2) Mise en oeuvre

Attention : Les manipulations suivantes s’effectuent sur votre PC

  • Créer un dossier de travail.
c:\>mkdir work_dir
  • Nous avons besoin de l’outil makecab.exe disponible à chez microsoft : http://support.microsoft.com/kb/310618.
  • Décompresser l’archive et copier makecab.exe dans le dossier de travail
  • Créer dans le dossier de travail un fichier _setup.xml ayant comme contenu :
<wap-provisioningdoc>
    <characteristic type="VoIP">
        <parm name="SIPSettings"
            value="&lt;provision key='1232ab03' name='Freephonie03' &gt; 
            &lt;user account='095XXXXXXX' password='_freephonie_password_'
                     uri='sip:095XXXXXXX@freephonie.net' allowedauth='digest'/&gt; 
            &lt;provider name='Freephonie ' /&gt; 
            &lt;sipsrv addr='freephonie.net' protocol='UDP' role='proxy'&gt; 
            &lt;session party='First' type='pc2pc' /&gt; 
            &lt;session party='First' type='pc2ph' /&gt; 
            &lt;/sipsrv&gt; &lt;sipsrv addr='freephonie.net' protocol='UDP' role='registrar'/&gt;  
            &lt;/provision&gt;"/>
        <parm name="BackupSIPsettings" 
            value="&lt;provision key='1232ab04' name='Freephonie04' &gt; 
            &lt;user account='095XXXXXXX' password='_freephonie_password_'
                     uri='sip:095XXXXXXX@freephonie.net' allowedauth='digest'/&gt; 
            &lt;provider name='Freephonie ' /&gt; 
            &lt;sipsrv addr='172.17.20.241' protocol='UDP' role='proxy' &gt; 
            &lt;session party='First' type='pc2pc' /&gt; 
            &lt;session party='First' type='pc2ph' /&gt; 
            &lt;/sipsrv&gt; &lt;sipsrv addr='172.17.20.241' protocol='UDP' role='registrar' /&gt; 
            &lt;/provision&gt;"/>
    </characteristic>
</wap-provisioningdoc>
  • Modifier le fichier _setup.xml pour y configurer les attributs suivants :
account='095XXXXXXX' : votre numéro de téléphone freebox
password='_freephonie_password_' : votre mot de passe de compte freephonie
uri='sip:095XXXXXXX@freephonie.net' : votre adresse SIP freephonie

Note de sécurité : Le mot de passe du compte freephonie est en clair dans ce fichier !

Notes : Vous pouvez observer dans ce fichier configuration les différentes adresses du serveur SIP : freephonie.net ⇒ “SIPsettings” et 172.17.20.241 ⇒ “BackupSIPsettings”

Notes : Le schéma XML de l’attribut value des paramètres “SIPsettings” et “BackupSIPsettings” est disponible ici : http://msdn2.microsoft.com/en-us/library/aa924798.aspx

  • Sauvegarder le fichier _setup.xml ainsi configuré pour votre compte SIP.
  • Lancer une invite de commande dans le dossier de travail pour éxécuter la commande suivante pour générer un fichier config_freephonie.cpf (CAB Provisionning File) :
c:\work_dir\>makecab.exe _setup.xml config_freephonie.cpf

Note de sécurité: Le fichier config_freephonie.cpf est juste une archive contenant le fichier _setup.xml donc le mot de passe du compte freephonie est également en clair dans ce fichier !

  • Transférer le fichier config_freephonie.cpf sur votre PDA Phone (ActiveSync ou SD Card).




Attention : Les manipulations suivantes s’effectuent sur PDA Phone.

  • Exécuter le fichier config_freephonie.cpf.

  • Un message est déposé dans votre boîte de réception SMS pour vous indiquer du succès (icone verte) ou de l’echec (icone rouge) de l’opération.

  • Attention, si le message vous dis que l’installation n’est pas possible car le cab n’est pas signé, il faut utiliser soit Sign code
       http://www.codeproject.com/useritems/signcode.asp
                How to pour sign code:
       http://www.geotrust.com/codesigning/java_ms_authenticode/how_to.htm
       http://support.microsoft.com/kb/841060/fr
       http://msdn.microsoft.com/smartclient/default.aspx?pull=/library/en-us/dnppcgen/html/wmsecurity.asp

soit installer http://slb22.free.fr/Cert_SPCS.cab puis soft reset, ce qui enlevera la vérification de signature des cabs (!!!attention a ce que vous installez ensuite!!!).

9) Passez vos appels !

J’ai eu quelques problèmes sur l’aboutissement des appels au départ, avant de me rendre compte qu’il s’agissait d’un problème de format des numéros de téléphone, l’idéal étant d’avoir dans ses contacts des numéros classiques, sans le +33, ni l’indicatif entre parenthèses. On commencera bien sûr par s’appeler soi-même :-)

Par la suite, la seule activation du Wi-Fi sur votre mobile permettra se connecter automatiquement à un réseau Freephonie s’il y en a un de disponible.

Voilà, cela fonctionne chez vous bien entendu mais également sur tous les points d’accès « freephonie » disponibles.

Ce tutoriel décrit l’utilisation avec le logiciel SIP de WM6, mais tout autre logiciel peut être utilisé à conditions qu’il soit configuré comme au point 8) (@IP pour le serveur à la place de freephonie.net).

L’ensemble de ce tutoriel sera à réitérer à la date d’expiration du certificat (03/10/2007), après avoir récupéré les nouveaux certificats en ayant branché son White-Freephone sur la Freebox à l’aide du câble USB fourni et en ayant lancé “FreeNetSync”.

A vérifier maintenant si ça fonctionne avec les téléphones capables d’accepter les certificats (nokia n95 je crois).

A vérifier également, le bon fonctionnement de la méthode d’importation sur un SmartPhone sous WM5 (cela nécessitera l’utilisation d’un logiciel tiers pour la gestion du SIP).

[Message de Neptune59] Bonjour, moi je suis proprietaire d’un N95, je viens donc de réaliser l’installation des certificats une fois remaniés pour le symbian S60. Cela fonctionne nikel après quelques modifs dans le parametrages du SIP par rapport a ce que j’ai lu dans le wiki, par contre je n’arrive à appeler que les numéros en france. dès que j’essaie la belgique une charmante voix me dit que l’indicatif n’est pas utilisé. @ Suivre. Je vais préparer un explicatif complet s^écial pour le nokia que je vais publier sur le wiki, reste à savoir ou .

10) Autre Méthode (expérimental)

J’avais tenté une première fois d’importer les certificats via Crtimprt-v.0.3, en modifiant le format de la clé via l’outil « pvk.exe ».

Le changement du format de la clé se fait via la commande :
« pvk -in net6_key -out net6_key.pvk -topvk –nocrypt », et il faut jouer également avec le fichier de config de crtimprt en indiquant DW_KEY_SPEC=2.

Au plus simple, renommez net6_user en usercrt.pb7 et net6_key.pvk en userkey.pvk et placez ces deux fichiers dans le répertoire « mes documents » de WM6. Lancez ensuite l’exécutable et regardez si tout se passe bien.

De mon côté j’ai obtenu un « CertOpenStore Failed », sans possibilité d’avancer plus loin…

 
certificats.txt · Dernière modification: 2009/02/13 17:59 par freemao
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki


© Freephonie.org 2006
Déclaration CNIL n°1107070
Powered by PhpBB - Traduction par : phpBB-fr.com
Portail : GF-Portail
x}YsH3i!*Z'EID)RҴȪjm̄P8xTY}k֬>[5I#W"/R]UI <<<< ӯ ٛ_Fa>>;V7:]qY~&n[^m`8xq|AZ}LdbqMS^7?~<eC~#WI@{lEL_k>~6:M=Y ΎIߚH2 *4=sWb)zfgٱ}֟z."7ĊGrh;h{2Jܡk[I ]ߑW GxMDFИ]CQs5KGcJC)V8QE-Q1-[wl8rs5 n:;,gvKAyQҿR.MY?Zv#M GvGI;GNi[~i"\"4I9R/iH{h]mQx%AV'FO3K|8|Wh$^pR2 pVd ԅ@Zco ʘC +MƐo39k #cDh)> qoOj)_~VK}./!p#ym`K xK>}w\mg3W<ީd_mC'% Ӑ~NpI_^~JNAG N>ɉM,oUvKТ!u:3%]H/C9A@: lsKqac?N6 FR]QH.ظh<MqJnO&Om+IӤ28 !eab`ϨIDS&bF?]'|E(#0|36n, wΤ)%D8Hc=C`<k k~Iķ+B "#=mX<z8vA?34!i48BdiM}ۊ0Fk4 f1#Ⲙ@c|%r$ qkj6 89{gGߝWG6ķ_$@F^}yy.I[+ Mv2@aO%Nfie0T`.بpWF13:l+&O_^E!%%gGϞ M0;MWͦ#M䄬-Z8-[ml`U:\oݺgcv\Z" 炮D9$5xܑO Zpt{L>)=2t}v{HЊɏ n2&{5!&0\C20 pZR8H 1=!a-gBp$y#?IѱEr1GH*2pz܌.,!yE LDUpG=L\Dϓȋ%O"Fp:ɸwu<5NƣœBWz5.kq.i^tNkA> ,|DwȻQ7f'>Mb!dwH ɐfIfD{kǖ]C&VD':=ƭ~Ф?=WК^F[#"{[I%L~$!;;VD!$[f -W?&EAYd^RxlY3̶E9 Q+}xR .w$ `"#/k`+o%V(~]aڃ(ڲHaV^6Ln>~0MGځZ{{d8}$zh ;xr3c :=Zjo5;"%AJqO̫WP?ВL=^xD[̻kww+ 5 dpxv x!>{]Nu>BCقuf_]"A"}!ƴ7ȐsFcѐh'i#$sG8-Z]b2$6TzʹLȚmπ5C;۳O[:fg` xCxhQ 5eςеcqqBkEʸ "YnqL>:fuNl&ʤȱmoKIW J85+ ,1p86BH<icz64Bɓc^k'|!I,Z imfZ{B}6 ~+i2 &VicȢ*Uup&;<^m-@&"fy`)dσ$ An3 *M}>ftKBm.rT,S*P/|]٤,▶R䥏]b4*jKfsF".(ZĪ5N,.ޏ)-[2Ɋqˣvjrg#Uܠu,_P&>+H_I/jMO5 "½.x\ yjBx˲;%}|x͌%]`OWAyNLqd32̇)),B|]Ovj00Wdv+cLحiycnT+4P#V U'En? i2Jdb؊"Kk|[`^/oErc7e)`[Øk:z2eW< :1"D:ջn'9@©$ x#D}ʮDHZc:Q!l!C?Şle|$t\qdb^ Oz;04GfW@[ZfކSī*ͮ1@]W_XDzuОUfLT\?LɋHb@Qz0_֟S|̈́1i$RkkZM.7_/o?Y8* )QnQᝑ˩9sc\ۭceHQhmjIHi=v}_G`ܬ~j٤Ewv5{D1!dtI$}GCQ_ S{ޅ߀g~L$8ם7U, J4Ԗ[/~yD9GdjekEe{(kMsr:Į1rI]czS= r-ZS|>жSz 6= b`yЬq!"I׈bwH* Ҙxx\^_}Ɓ9A~:_5o|VwMJXZH=k֐НOdyX/Ǯ਑>紎E|od"g"O x]$`/MwT&R$/A!054\'CvYVHYM2O"/ %,b/-ɴN73"klՏ2^M遦P6 ʾ'Vq_^^2rۛ=? ψ3_c_&&W^''+\ӣxC }j io֣ghxL;OC>MLٲaUD@!V& ` hQH3Ʀ2qiVH-уk"a@q/Y}]B!E7U:a u37n;JfAQ6at0L&C[0*]@vP *@ S1&#L/N'CU"Hyr-81Կe zHGyj3-al qZ6橌^PB$ h%69PzL=pЪp.nx]hsD۸\#ߝZ4]7Q(W"$wt&e|ʌ 8 jb9}Rlߥ/z4YL"a#BcVf^|Y33IډҘ%6|0) ĺ4]͗'RHES3HV+l&\*K((u4۽c !TL-B]T`hvȭLL=V+i4]ӂǫ:Yx s;RlX[lBpQmsUڏK8K2\{:LQtdMk(Nb,^[ؤ9=}]8#;njWKU 4!H;G{Q-2,X EeVqbGR8#rڴ^{k>ZJ.Y\߻cFjD ,mE{TIIQ,SeߖD9#,S;J*}g|^|B ;Ƥ}vJn;\%%,2f; >) %?T>w5_bGʕAqhdp$)7dr8`yVY&_̇]9;"0s |/;M.G%O$WES|AjxLh3x!Z|RbD)$ i #;z?Zl:Zr% 9 j"\EKKA5`+DPru3S4RUAMJ&(3ei-j_m˖_'yl*Z`I(l J(C YDGhI353 dؕ4L嘱7۱ ?i`K,f+Wvq>ks%+U4+9bυzVj؂毾y$N2Q>UpW ٞzC[Y47:l {*[e#Nt ڰ gͶ_> Zh|r&cz5C n=۞86Q;CU-!ΦPXYMu5}}3l([a(B3L.}lĘf^EeifpGvEMdw94SXĪsXӭĺY|AOę m:[* le-mFVsU,x/$\UڞR&> yG88J9fbMma&}KOժ jN=dIb>U;֛߱G} YUf.{͈?\Rq To!.@.˴ R\X-g皋iKR[ѻNє-NG0#WKK9ٰr{9Yޞ(96GuIrCaq{xkqEfiq|.ƍm26+ރ۽+l/-gND| :g>SsW{gQ|7u!{s VnGdn8Bc3GfQ;z+hSvf*UArT1jv;IzzTZ1%#=#\)n݋NxbGn`ś Snh&e |A[qCcU[ױwʂNTZe,ݗW&76wiJSk8l1IMf"M+$Ϩͨl*T=qE] XTDn*E-QlSDq=KҘG;5'BWgD#.  (25"D8CXK$:~T;pgDf٣lYx;79yS}}kuzVAwKԡ̲uy1t=ztW0|< ef(~2ˋ/"O{`xm 7 F<-? s"guJ/m'* cA,ɳ_ay2|cG%Ŵ`>F<"2o`D-p{[HmEeߌzc d.bj(2IYdQ<&Ԅ,Ro?ê%#yx٭"u15S :e,nvI]Js~KqZdl-[5\(+AÊ?#@\Auh:u+Sfy2,UV;9,& 3VNkY=Txg:\莋FR'HvM۔ER[8ϙ`8VoN.\50ךH$=|7/=<>|鶬8ZoXÊp`@K'.>LFLNu$:JdRAX:F6+/qiT링ºѡqe9: pɽ6 G̛ 8X;rɅ<ВPHҧa< 0PB; ƃӓۙ-WO3'HUjAA獃㷧+-ZlC^=jZ;3h1tO((;?a~Тu5f'L%ط5_^.g؋eKm^ w¥Ghma*S,N("OVOe"Š"øq BH=)ݚұU=|mJ>;0*tv I-%͟VPP٪d*0Cк,Uu#Syr$gO_F$W@:ad%)u.mkJ?d?LmդsfwTT<>^aQ<4V7 rUrRmtpzW^l#eO%'%kuUN7ʤ8fR_ە+iyɓK+$ TeDϜ'LUlɮPςEbqdqa't}aXU$l2;H9ؑ/U`\1pDvʄvt7lCtDs.X~7j.FF{9_xCJqḨ1ў& QB&.~hJmO6 "⺱ESҍhFhB{1^ Bhen?bUY<3=pl{)W*B|PB,eɗ' qpaa.u5,݌e@/m? ]e{q0SI4x)<%=?|> Z_$ 28#nn2@3^:2] ע6PybЌ8̸LJFJdhW9ʥ]l&BEM0U@PT+ E輻^53:XP6%AQybVT(D#ej8/ȇcXAh{'5{-WΪ#caa=x+o.Q{Ff;K1UTǰ?-KlmF-;b7[{B{qpO8X/AF`FVZǨ(a{Hl;h%lB>#]g26? 8оĒͅafjYL_ޠ_O'G-%6=bX6g@eucfloPm0hOP46˷ƪ'`cSXIlQkm Yqڭ?\^J|qo'9}nby)R&) hro'Vq+tnEH1/&%&><ܸ!h' p560 J G"戓W8Z[<Už[ W%(⥒u2ت<ĿaSx Z ͎>̗@r0&u*%,Zrz>-uҧ/IwDUWnw;^hdEaԪ-ڟ!Tפ|T!J9X{Bʄʛ;}NF>Ȁ{\LpR^r_ᄣ6F<ETGjf&YN.6.2(\ARulfq랖TW'\$T{mF_-Q+c{KdL}A<3V繋owwFb(ˬy%ڲ\B|E^OE}Ay$s"^*`k!΢V,wL_Š,6#sscVf`?`>A#?|0ZgFBKkk%+[$qಎ0i.s@z#NKY-Xd vb ܤw-]u(m_Խ߿'@<**prT qkyٔH,)ڐ Jۚg{ }闭,a`9kשr\JH>0JN(+uMXs*N[9/?YP40ud"Q@ ZSS kfu4ͯN|\}/HITy9.Ьr15d+8$PIe9 nϱayRqS/ugwפMpκjxWAt.␱E{O A&K-gZ~\WmlG(A*7[`ݼVqz-#ɌE()u` i4h|crW\ Abyr󇙎01ẏ{.5haI/BΌR贄WƧ?{f[YEfm-CvAxHm T~F*RÒC~ˉ lD/u]x Zkgc;-v] bq(Q+IaMa.! ݉>;D4t[ )5Z^a0.X-DS*]8!M` *^ ydQ8kߜC2,D @*' _uND[48pN f0$uEدQEn)$蒀H:GńLw!َF4:21Rw(HCz͑{+Z<Ԝr|OZH{BNXz!<&?,<7߾z-ljA6Pd-;êVLT1(WsIyDiLׄ(Ɍ΍PA52f?Fq&Ŋ!DPϛk4lP˦nΐ֞>#bñPA\*u