Ë
    š„jG  ã                   ó   — d dl Z d dlZd dlZddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZ  G d„ de«      Z G d„ d	e«      Z G d
„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)é    Né   )ÚInfoExtractoré   )Úint_or_noneÚjoin_nonemptyÚ
js_to_jsonÚparse_durationÚstrftime_or_noneÚtraverse_objÚunified_strdateÚurljoinc                   ó2   — e Zd ZdZdZddddddd	d
œdœZd„ Zy)ÚRadioFranceIEz<https?://maison\.radiofrance\.fr/radiovisions/(?P<id>[^?#]+)Úradiofrancez1http://maison.radiofrance.fr/radiovisions/one-oneÚ bdbb28ace95ed0e04faab32ba3160dafzone-oneÚoggz
One to oneuý   PlutÃ´t que d'imaginer la radio de demain comme technologie ou comme crÃ©ation de contenu, je veux montrer que quelles que soient ses Ã©volutions, j'ai l'intime conviction que la radio continuera d'Ãªtre un grand mÃ©dia de proximitÃ© pour les auditeurs.u   Thomas HercouÃ«t)ÚidÚextÚtitleÚdescriptionÚuploader)ÚurlÚmd5Ú	info_dictc           	      óž  — | j                  |«      }|j                  d«      }| j                  ||«      }| j                  d|d«      }| j                  d|dd¬«      }| j                  d|d	d¬«      }| j                  d
|d«      }t	        t        j                  d|«      «      D �	�
cg c]  \  }	}
|
d   |
d   d|	dœ‘Œ }}	}
|||||dœS c c}
}	w )Nr   z<h1>(.*?)</h1>r   z<<div class="bloc_page_wrapper"><div class="text">(.*?)</div>r   F©Úfatalz7<div class="credit">&nbsp;&nbsp;&copy;&nbsp;(.*?)</div>r   z.class="jp-jplayer[^"]*" data-source="([^"]+)">z
audio URLsz([a-z0-9]+)\s*:\s*'([^']+)'r   r   Únone)Ú	format_idr   ÚvcodecÚquality)r   r   Úformatsr   r   )Ú_match_valid_urlÚgroupÚ_download_webpageÚ_html_search_regexÚ	enumerateÚreÚfindall)Úselfr   ÚmÚvideo_idÚwebpager   r   r   Úformats_strÚiÚfmr"   s               úS/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/radiofrance.pyÚ_real_extractzRadioFranceIE._real_extract"   s  € Ø×!Ñ! #Ó&ˆØ—7‘7˜4“=ˆà×(Ñ(¨¨hÓ7ˆØ×'Ñ'Ð(9¸7ÀGÓLˆØ×-Ñ-ØKØ�]¨%ð .ó 1ˆð ×*Ñ*ØFØ�Z uð +ó .ˆð ×-Ñ-Ø=Ø�\ó#ˆô ”b—j‘jÐ!?ÀÓMÓN÷	
ñ ��2ð   ™UØ˜!‘uØ Øó	ð	
ˆñ 	
ð ØØØ&Ø ñ
ð 	
ùó	
s   Â'C	N)Ú__name__Ú
__module__Ú__qualname__Ú
_VALID_URLÚIE_NAMEÚ_TESTr2   © ó    r1   r   r      s8   „ ØP€JØ€Gð CØ1àØØ!ð [Ø*ñ
ñ
€Eó!
r:   r   c                   óZ   — e Zd ZdZdj	                   eej                  d«      «      Zd„ Z	y)ÚRadioFranceBaseIEz"https?://(?:www\.)?radiofrance\.frú|)ÚfrancecultureÚ
franceinfoÚfranceinterÚfrancemusiqueÚfipÚmouvc           
      ój   — t        | j                  d|||dt        ¬«      dd|t        hfd¬«      xs i S )Nz\bconst\s+data\s*=z\[\{(?s:.+)\}\])Úcontains_patternÚtransform_source.ÚdataF©Úget_all)r   Ú_search_jsonr   Údict)r*   r-   Ú
display_idÚkeys       r1   Ú_extract_data_from_webpagez,RadioFranceBaseIE._extract_data_from_webpageR   sL   € Ü˜D×-Ñ-Ø! 7¨C°Ø/Ä*ð .ó Nð �&˜#¤˜vÐ&°ô7ò =ð ;=ð	=r:   N)
r3   r4   r5   Ú_VALID_URL_BASEÚjoinÚmapr(   ÚescapeÚ_STATIONS_RErN   r9   r:   r1   r<   r<   F   s,   „ Ø;€Oà—8‘8™C §	¡	ð ,ó ó €Ló=r:   r<   c                   ó”   — e Zd Zdej                  › dej
                  › d�Zdddddd	d
dddœdœdddddd
ddddœdœdddœdddœgZd„ Zy)ÚFranceCultureIEú(?x)
        ú
        /(?:zT)
        /podcasts/(?:[^?#]+/)?(?P<display_id>[^?#]+)-(?P<id>\d{6,})(?:$|[?#])
    z‹https://www.radiofrance.fr/franceculture/podcasts/science-en-questions/la-physique-d-einstein-aiderait-elle-a-comprendre-le-cerveau-8440487Ú8440487z<la-physique-d-einstein-aiderait-elle-a-comprendre-le-cerveauÚmp3uA   La physique dâ€™Einstein aiderait-elle Ã  comprendre le cerveau ?u]   Existerait-il un pont conceptuel entre la physique de lâ€™espace-temps et les neurosciences ?úre:^https?://.*\.(?:jpg|png)Ú20220514i¾
  )r   rL   r   r   r   Ú	thumbnailÚupload_dateÚduration)r   r   zdhttps://www.radiofrance.fr/franceinter/podcasts/le-7-9-30/le-7-9-30-du-vendredi-10-mars-2023-2107675Ú2107675z"le-7-9-30-du-vendredi-10-mars-2023u]   Inflation alimentaire : comment en sortir ? - RÃ©gis Debray et Claude Grange - CybÃ¨le Idelotz$md5:36ee74351ede77a314fdebb94026b916Ú20230310i#  )r   rL   r   r   r\   r]   r^   r   zhttps://www.radiofrance.fr/franceinter/podcasts/la-rafle-du-vel-d-hiv-une-affaire-d-etat/les-racines-du-crime-episode-1-3715507T©r   Úonly_matchingz|https://www.radiofrance.fr/franceinfo/podcasts/le-billet-sciences/sante-bientot-un-vaccin-contre-l-asthme-allergique-3057200c                 óü  — | j                  |«      j                  dd«      \  }}| j                  ||«      }| j                  d|d|d¬«      }|||d   |j	                  d«      d	k(  rd
nd t        |j	                  d«      «      | j                  d|d| j                  |«      ¬«      | j                  d|dd ¬«      | j                  |«      | j                  d|dd ¬«      t        | j                  d|dd¬«      «      dœ
S )Nr   rL   Ú z
audio dataz"{\s*"@type"\s*:\s*"AudioObject".+})rE   Ú
contentUrlÚencodingFormatrY   r   r^   z5(?s)<h1[^>]*itemprop="[^"]*name[^"]*"[^>]*>(.+?)</h1>r   )Údefaultz/(?s)<meta name="description"\s*content="([^"]+)r   z%(?s)<span class="author">(.*?)</span>r   z"datePublished"\s*:\s*"([^"]+)Ú	timestampFr   )
r   rL   r   r    r^   r   r   r\   r   r]   )r#   r$   r%   rJ   Úgetr	   r&   Ú_og_search_titleÚ_og_search_thumbnailr   Ú_search_regex)r*   r   r,   rL   r-   Ú
video_datas         r1   r2   zFranceCultureIE._real_extract„   s5  € Ø#×4Ñ4°SÓ9×?Ñ?ÀÀlÓSÑˆ�*Ø×(Ñ(¨¨jÓ9ˆð ×&Ñ& r¨7°LÀ*ð  `EÐ&ó  Fˆ
ð Ø$Ø˜lÑ+Ø *§¡Ð/?Ó @ÀEÒ I‘fÈtÜ& z§~¡~°jÓ'AÓBØ×,Ñ,Ð-eØ-4°gÀt×G\ÑG\Ð]dÓGeð -ó gà×2Ñ2ØBÀGÈ]Ðdhð 3ó jà×2Ñ2°7Ó;Ø×/Ñ/Ø8¸'À:ÐW[ð 0ó ]ä*¨4×+=Ñ+=Ø1°7¸KÈuð ,>ó ,Vó Wñ
ð 	
r:   N)	r3   r4   r5   r<   rO   rS   r6   Ú_TESTSr2   r9   r:   r1   rU   rU   Y   s©   „ ð	Ø	×	*Ñ	*Ð+ð ,Ø×+Ñ+Ð,ð -ð€Jð aàØ\ØØ\Ø~Ø<Ø)Ø ñ	ñ	
ð zàØBØxØEØ<Ø)Ø Øñ	ñ	
ð UØ!ñ	
ð RØ!ñ
ð="€FóH
r:   rU   c                   óÎ   — e Zd Zdej                  › d�Zddedddœdd	id
œddedddœdd	id
œddedddœdd	id
œddedddœdd	id
œddedddœdd	id
œddedddœdd	id
œdddœgZd„ Zy)ÚRadioFranceLiveIEz@(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?P<id>z;)
        /?(?P<substation_id>radio-[\w-]+)?(?:[#?]|$)
    z'https://www.radiofrance.fr/franceinter/r@   Úis_liveÚaac)r   r   Úlive_statusr   Úskip_downloadÚ
Livestream)r   r   Úparamsz(https://www.radiofrance.fr/franceculturer>   z9https://www.radiofrance.fr/mouv/radio-musique-kids-familyzmouv-radio-musique-kids-familyz.https://www.radiofrance.fr/mouv/radio-rnb-soulzmouv-radio-rnb-soulz1https://www.radiofrance.fr/mouv/radio-musique-mixzmouv-radio-musique-mixz)https://www.radiofrance.fr/fip/radio-rockzfip-radio-rockzhttps://www.radiofrance.fr/mouvTra   c                 óF  — | j                  |«      j                  dd«      \  }}|r&| j                  ||«      }| j                  ||d«      }n| j	                  d|› d�|«      }g i }}t        |dddd	„ f«      D ]{  }|j                  d
«      dk(  r?| j                  |d   |d¬«      \  }	}
|j                  |	«       | j                  |
|¬«       ŒV|j                  |d   |j                  d«      dœ«       Œ} t        ||«      t        |d«      xs t        dd|d¬«      ||ddœS )Nr   Úsubstation_idÚwebRadioDataúhttps://www.radiofrance.fr/z	/api/live)ÚnowNÚmediaÚsourcesc                 ó   — |d   S )Nr   r9   ©Ú_Úvs     r1   ú<lambda>z1RadioFranceLiveIE._real_extract.<locals>.<lambda>ö   s   € ÐhiÐjoÑhp€ r:   ÚformatÚhlsr   Fr   )ÚtargetÚbitrate)r   Úabr)ÚvisualÚlegend)r{   Ú	firstLiner   )r{   Ú
secondLiner   z - )Ú	from_dictÚdelimT)r   r   r"   Ú	subtitlesrq   )r#   r$   r%   rN   Ú_download_jsonr   ri   Ú#_extract_m3u8_formats_and_subtitlesÚextendÚ_merge_subtitlesÚappendr   )r*   r   Ú
station_idrx   r-   Úapi_responser"   rŽ   Úmedia_sourceÚfmtsÚsubss              r1   r2   zRadioFranceLiveIE._real_extractë   sZ  € Ø$(×$9Ñ$9¸#Ó$>×$DÑ$DÀTÈ?Ó$[Ñ!ˆ
�MáØ×,Ñ,¨S°*Ó=ˆGØ×:Ñ:¸7ÀJÐP^Ó_‰Là×.Ñ.Ø-¨j¨\¸ÐCÀZóQˆLð   �ˆÜ(¨¸ÀwÐPYÑ[pÐ7qÓrò 		ˆLØ×Ñ Ó)¨UÒ2Ø!×EÑEÀlÐSXÑFYÐ[eÐmrÐEÓs‘
��dØ—‘˜tÔ$Ø×%Ñ% d°9Ð%Õ=à—‘Ø'¨Ñ.Ø'×+Ñ+¨IÓ6ñ õ ð		ô   
¨MÓ:Ü! ,Ð0DÓEò tÌØ-Ð/MÐYeÐmrôJtàØ"Øñ
ð 	
r:   N)	r3   r4   r5   r<   rS   r6   Ústrrn   r2   r9   r:   r1   rp   rp   �   s(  „ ðà"×/Ñ/Ð0ð 1ð€Jð 9àØØ$Øñ	
ð ˜\ð
ñð :à!ØØ$Øñ	
ð ˜\ð
ñð Kà2ØØ$Øñ	
ð ˜\ð
ñð @à'ØØ$Øñ	
ð ˜\ð
ñð Cà*ØØ$Øñ	
ð ˜\ð
ñð ;à"ØØ$Øñ	
ð ˜\ð
ñð 1ØñðEE€FóN
r:   rp   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚRadioFrancePlaylistBaseIEz!Subclasses must set _METADATA_KEYc                 ó   — t        d«      ‚)Nz-This method must be implemented by subclasses)ÚNotImplementedError)r*   Ú
content_idÚcursorÚpage_nums       r1   Ú	_call_apiz#RadioFrancePlaylistBaseIE._call_api  s   € Ü!Ð"QÓRÐRr:   c              #   ó  K  — t        j                  d«      D ]d  }|d   D ]5  } | j                  d|d   › �fddit        |ddd	t        hfd
dœ«      ¤Ž–— Œ7 t        |dd¬«      }|s y | j                  |||«      }Œf y ­w)Nr   Úitemsrz   ÚpathÚurl_transparentTr   Ú
standFirstÚpublishedDate©rˆ   Úsrc)r   r   rh   r\   ))Ú
paginationNÚnextFrH   )Ú	itertoolsÚcountÚ
url_resultr   r   r¡   )r*   rž   Úcontent_responser    ÚentryÚnext_cursors         r1   Ú_generate_playlist_entriesz4RadioFrancePlaylistBaseIE._generate_playlist_entries  s³   è ø€ Ü!Ÿ™¨Ó*ò 	QˆHØ)¨'Ñ2ò �Ø%�d—o‘oØ1°%¸±-°ÐAñØSWðÜ[gÐhmØ!(Ø'3Ø&5¼°}Ð%EØ%6ñ	pó \ñó ðô 'Ð'7Ð9WÐafÔgˆKÙÙà#Ÿ~™~¨j¸+ÀxÓPÑñ	Qùs   ‚A>B c                 óR  — | j                  |«      }| j                  d|dt        j                  j	                  |«      j
                  i¬«      d   }|d   } | j                  | j                  ||| j                     «      |fd|ii t        |ddd	d
œ«      ¥t        |dddœ«      ¥¤ŽS )Nz(https://www.radiofrance.fr/api/v2.1/pathÚvalue)ÚqueryÚcontentr   rL   r   r¦   r¨   )r   r   r\   ÚnameÚrole)r   r   )
Ú	_match_idr�   ÚurllibÚparseÚurlparser¤   Úplaylist_resultr²   Ú_METADATA_KEYr   )r*   r   rL   Úmetadatarž   s        r1   r2   z'RadioFrancePlaylistBaseIE._real_extract"  sÙ   € Ø—^‘^ CÓ(ˆ
à×&Ñ&Ø6¸
ØœFŸL™L×1Ñ1°#Ó6×;Ñ;Ð<ð 'ó >à>GñIˆð ˜d‘^ˆ
à#ˆt×#Ñ#Ø×+Ñ+¨J¸À×ASÑASÑ8TÓUÐWañ	à!ð	ð&¬°XØ Ø+Ø.ñ@ó )ð &ô ˜xØØ%ñ*ó ð	&ñ	ð 		r:   N)r3   r4   r5   Ú__doc__r¡   r²   r2   r9   r:   r1   r›   r›     s   „ Ù+òSòQó"r:   r›   c            
       ó¸   — e Zd Zdej                  › dej
                  › d�Zdddddd	d
œddœdddddd	d
œddœdddddœddœdddddd	d
œddœd d!d"œd#d!d"œgZd$Zd%„ Z	y&)'ÚRadioFrancePodcastIErV   rW   z3)
        /podcasts/(?P<id>[\w-]+)/?(?:[?#]|$)
    z=https://www.radiofrance.fr/franceinfo/podcasts/le-billet-vertz$eaf6ef81-a980-4f1c-a7d1-8a75ecd54b17zle-billet-vertzLe billet sciencesz$md5:eb1007b34b0c0a680daaa71525bbd4c1rZ   ©r   rL   r   r   r\   é   ©r   r   Úplaylist_mincountzWhttps://www.radiofrance.fr/franceinter/podcasts/jean-marie-le-pen-l-obsession-nationalez$566fd524-3074-4fbc-ac69-8696f2152a54z'jean-marie-le-pen-l-obsession-nationalez(Jean-Marie Le Pen, l'obsession nationalez$md5:a07c0cfb894f6d07a62d0ad12c4b7d73é   ©r   r   Úplaylist_countzGhttps://www.radiofrance.fr/franceculture/podcasts/serie-thomas-grjebinez$63c1ddc9-9f15-457a-98b2-411bac63f48dzserie-thomas-grjebinezThomas Grjebine)r   rL   r   r   z=https://www.radiofrance.fr/fip/podcasts/certains-l-aiment-fipz$143dff38-e956-4a5d-8576-1c0b7242b99ezcertains-l-aiment-fipu   Certains lâ€™aiment Fipz$md5:ff974672ba00d4fd5be80fb001c5b27eiA  z6https://www.radiofrance.fr/franceinter/podcasts/le-7-9Tra   z2https://www.radiofrance.fr/mouv/podcasts/dirty-mixÚexpressionsc                 ó>   — | j                  d|› d�|d|› �d|i¬«      S )Nz-https://www.radiofrance.fr/api/v2.1/concepts/z/expressionsúDownloading page Ú
pageCursor©Únoterµ   )r�   )r*   Ú
podcast_idrŸ   r    s       r1   r¡   zRadioFrancePodcastIE._call_apin  s<   € Ø×"Ñ"Ø;¸J¸<À|ÐTÐV`Ø$ X JÐ/¸ÀfÐ7Mð #ó Oð 	Or:   N)
r3   r4   r5   r<   rO   rS   r6   rn   r¾   r¡   r9   r:   r1   rÂ   rÂ   7  sì   „ ð	Ø	×	*Ñ	*Ð+ð ,Ø×+Ñ+Ð,ð -ð€Jð Oà8Ø*Ø)ØAØ8ñ
ð  ñ
ð ià8ØCØ@ØAØ8ñ
ð ñ
ð Yà8Ø1Ø&ñ
ð
 ñð Oà8Ø1Ø.ØAØ8ñ
ð !ñ
ð HØñð DØñðS,€Fð\ "€MóOr:   rÂ   c                   ój   — e Zd Zej                  › d�Zddddddœdd	œd
ddddddœdd	œdddœgZdZd„ Zy)ÚRadioFranceProfileIEz/personnes/(?P<id>[\w-]+)z7https://www.radiofrance.fr/personnes/thomas-pesquet?p=3z$86c62790-e481-11e2-9f7b-782bcb6744ebzthomas-pesquetzThomas Pesquetu+   Astronaute Ã  l'agence spatiale europÃ©enne)r   rL   r   r   éÔ   rÅ   z3https://www.radiofrance.fr/personnes/eugenie-bastiez$9593050b-0183-4972-a0b5-d8f699079e02zeugenie-bastieu   EugÃ©nie BastiÃ©zJournaliste et essayisterZ   rÃ   é'   z/https://www.radiofrance.fr/personnes/lea-salameTra   Ú	documentsc                 ób   — | j                  d|› d�|d|› �d|dœ¬«      }t        |d«      |d<   |S )	Nz-https://www.radiofrance.fr/api/v2.1/taxonomy/z
/documentsrÌ   Úpersonality)ÚrelationrŸ   rÎ   )rª   r«   r«   )r�   r   )r*   Ú
profile_idrŸ   r    Úresps        r1   r¡   zRadioFranceProfileIE._call_api‘  sS   € Ø×"Ñ"Ø;¸J¸<ÀzÐRÐT^Ø$ X JÐ/Ø)Ø ñ8ð #ó ˆô $ DÐ*@ÓAˆˆV‰Øˆr:   N)	r3   r4   r5   r<   rO   r6   rn   r¾   r¡   r9   r:   r1   rÒ   rÒ   t  s|   „ Ø&×6Ñ6Ð7Ð7PÐQ€Jð Ià8Ø*Ø%ØIñ	
ð !ñ	ð Eà8Ø*Ø'Ø5Ø8ñ
ð  ñ
ð AØñð'€Fð0  €Mó	r:   rÒ   c                   óž   — e Zd Zdej                  › dej
                  › d�Zddddœdd	œd
dddœdd	œddddœdd	œddddœdd	œdddœgZd„ Zd„ Z	y)ÚRadioFranceProgramScheduleIErV   z
        /(?P<station>z!)
        /grille-programmes
    zHhttps://www.radiofrance.fr/franceinter/grille-programmes?date=17-02-2023zfranceinter-program-20230217Ú20230217)r   r]   é   rÈ   zJhttps://www.radiofrance.fr/franceculture/grille-programmes?date=01-02-2023zfranceculture-program-20230201Ú20230201zAhttps://www.radiofrance.fr/mouv/grille-programmes?date=19-03-2023zmouv-program-20230319Ú20230319é   zJhttps://www.radiofrance.fr/francemusique/grille-programmes?date=18-03-2023zfrancemusique-program-20230318Ú20230318é   z:https://www.radiofrance.fr/franceculture/grille-programmesTra   c              #   óÀ   K  — t        |dd„ f«      D ]H  } | j                  t        |d|d   d   › �«      ft        ddœt        |dd	d
t        hfdddœ«      ¤Ž–— ŒJ y ­w)NÚstepsc                 ó   — |d   d   S )NÚ
expressionr¤   r9   r   s     r1   r‚   zIRadioFranceProgramScheduleIE._generate_playlist_entries.<locals>.<lambda>Æ  s   € ÀqÈÁÐW]ÑG^€ r:   ú/rç   r¤   T)Úier¥   )rç   r   )rç   rˆ   r©   Ú	startTime)Úconceptr   )rë   r   )r   r\   rh   Ú	series_idÚseries)r   r®   r   rU   r   )r*   Úwebpage_urlr•   r°   s       r1   r²   z7RadioFranceProgramScheduleIE._generate_playlist_entriesÅ  s†   è ø€ Ü! ,°Ñ:^Ð0_Ó`ò 		ˆEØ!�$—/‘/Ü˜ q¨¨|Ñ)<¸VÑ)DÐ(EÐ%FÓGðÜL[Ø $ñä(4°UØ4Ø!@Ø"-´¨}Ð!=Ø!2Ø2ñ=ó )ñó ñ		ùs   ‚AAc                 ó   — | j                  |«      j                  d«      }| j                  ||«      }| j                  ||d«      }t	        |j                  d«      d«      }| j                  | j                  ||«      t        |d|«      |¬«      S )NÚstationÚgridÚdatez%Y%m%dÚprogram)r]   )	r#   r$   r%   rN   r
   ri   r½   r²   r   )r*   r   rð   r-   Ú	grid_datar]   s         r1   r2   z*RadioFranceProgramScheduleIE._real_extractÑ  s�   € Ø×'Ñ'¨Ó,×2Ñ2°9Ó=ˆØ×(Ñ(¨¨gÓ6ˆØ×3Ñ3°G¸WÀfÓMˆ	Ü& y§}¡}°VÓ'<¸hÓGˆà×#Ñ#Ø×+Ñ+¨C°Ó;Ü˜' 9¨kÓ:Èð $ó Uð 	Ur:   N)
r3   r4   r5   r<   rO   rS   r6   rn   r²   r2   r9   r:   r1   rÜ   rÜ   �  s½   „ ð	Ø	×	*Ñ	*Ð+ð ,Ø'×4Ñ4Ð5ð 6ð€Jð Zà0Ø%ñ
ð ñð \à2Ø%ñ
ð ñð Sà)Ø%ñ
ð ñð \à2Ø%ñ
ð ñð LØñð9€FòB
óUr:   rÜ   )r¬   r(   Úurllib.parserº   Úcommonr   Úutilsr   r   r   r	   r
   r   r   r   r   r<   rU   rp   r›   rÂ   rÒ   rÜ   r9   r:   r1   ú<module>rø      s”   ðÛ Û 	Û å !÷	÷ 	ó 	ô1
�Mô 1
ôh=˜ô =ô&A
Ð'ô A
ôHk
Ð)ô k
ô\)Ð 1ô )ôX:OÐ4ô :Oôz&Ð4ô &ôR<UÐ#4õ <Ur:   