Ë
    ¡Š£ji7  ã                   óè   — d Z ddlZddlZddlZddlZddlZddlZddlmZ  ej                  dd«      Z
ddiZdZd	Zd
ZdZdZeez   dz
  ez  ZdZh d£Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zedk(  r e«        yy)um  
æ²³åŒ—å”�å±±å�—å ¡ç»�æµŽå¼€å�‘åŒº - è®¡åˆ’è§„åˆ’
https://www.nanpu.gov.cn/news/37/
portal-saas (fastbuilder/å‡¡ç§‘) CMSï¼ŒAPIé©±åŠ¨
æ �ç›® detailId: 1628181417801822208 (news/37 è®¡åˆ’è§„åˆ’)
Usage:
  python3 crawl_nanpu.py               # é»˜è®¤5é¡µ
  python3 crawl_nanpu.py --pages 10
  python3 crawl_nanpu.py --full         # å…¨é‡�(18æ�¡/é¡µ, 1557æ�¡çº¦87é¡µ)
é    N)ÚBeautifulSoupÚ	SEARCH_DBz/mnt/data/search.dbz
User-Agentz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36zhttps://www.nanpu.gov.cnÚ
nanpu_jhghÚ1628181417801822208é   i  é   é   >)   ÚpÚddÚdlÚdtÚh1Úh2Úh3Úh4Úh5Úh6ÚhrÚliÚolÚtdÚthÚtrÚulÚdivÚnavÚpreÚformÚmainÚasideÚtableÚtbodyÚtfootÚtheadÚcenterÚdialogÚfigureÚfooterÚheaderÚhgroupÚaddressÚarticleÚcaptionÚdetailsÚsectionÚfieldsetÚ
blockquoteÚ
figcaptionc                 óÒ   ‡‡‡— | €yddl }ddlmŠ g Šˆˆˆfd„Š ‰| «       dj                  ‰«      }|j	                  dd|«      }|j	                  dd	|«      }|j                  «       S )
ul   å�—çº§è¾¹ç•Œå‡ºæ�¢è¡Œã€�è¡Œå†…èŠ‚ç‚¹ç›´æŽ¥æ‹¼æŽ¥ã€�<br> å‡ºæ�¢è¡Œï¼ˆâ‰ˆ æµ�è§ˆå™¨çœ‹åˆ°çš„æ�¢è¡Œç»“æž„ï¼‰ã€‚NÚ r   )ÚNavigableStringc                 óF  •— | j                   D ]‘  }t        |‰«      r‰j                  t        |«      «       Œ*t	        |dd «      dk(  r‰j                  d«       ŒLt	        |dd «      t
        v r+‰j                  d«        ‰|«       ‰j                  d«       ŒŠ ‰|«       Œ“ y )NÚnameÚbrú
)ÚchildrenÚ
isinstanceÚappendÚstrÚgetattrÚ_BLOCK_TAGS)ÚnodeÚchr5   ÚoutÚwalks     €€€ú%/root/gov_crawler/crawl_nanpu_jhgh.pyrC   zbody_text.<locals>.walk.   s„   ø€ Ø—-‘-ò 
	ˆBÜ˜"˜oÔ.Ø—
‘
œ3˜r›7Õ#Ü˜˜V TÓ*¨dÒ2Ø—
‘
˜4Õ Ü˜˜V TÓ*¬kÑ9Ø—
‘
˜4Ô Ù�R”Ø—
‘
˜4Õ á�R•ñ
	ó    z[ \t\r\f\v]*\n[ \t\r\f\v]*r9   ú\n{3,}ú

)ÚreÚbs4r5   ÚjoinÚsubÚstrip)ÚelÚ_reÚtr5   rB   rC   s      @@@rD   Ú	body_textrP   &   sb   ú€ à	€zØÛÝ#Ø
€Cöñ 	ˆ„HØ
�‰�‹€AØ�‰Ð-¨t°QÓ7€AØ�‰�	˜6 1Ó%€AØ�7‰7‹9ÐrE   c                 óÒ  — t         › d�}t        dddddddt        dd	œ	g| d
z
  t        z  g t        dœ}	 t        j                  ||i t
        ¥t         › d�ddœ¥d¬«      }|j                  «       }|j                  d«      dk(  r*|d   j                  dg «      |d   j                  di «      fS g i fS # t        $ r,}t        d|z  t        j                  ¬«       g i fcY d}~S d}~ww xY w)u   é€šè¿‡APIèŽ·å�–åˆ—è¡¨æ•°æ�®z,/fwebapi/cms/lowcode/60003/18505/list?cate=0z$DETAIL_ES.es_multi_category_6d5k7017Ú1Úcategory_6d5k7017Úpagezarray[category]ÚandÚin)	ÚesFieldÚgroupEndÚfieldÚ
sourceTypeÚdataTypeÚlogicÚ
groupBeginÚvalueÚoperatorr   )ÚsizeÚqueryÚfromÚsortÚ	_detailIdz	/news/37/z!application/json, text/plain, */*)ÚRefererÚAccepté   )ÚjsonÚheadersÚtimeoutÚstatusÚ200ÚdataÚlistz  API ERROR: %s©ÚfileN)ÚDOMAINÚ	PAGE_SIZEÚCATEGORY_IDÚrequestsÚpostÚHEADERSrh   ÚgetÚ	ExceptionÚprintÚsysÚstderr)rT   ÚurlÚpayloadÚrrm   Úes         rD   Ú
fetch_listr€   A   s  € äˆHÐ@Ð
A€Cäà=ØØ(Ø Ø)ØØÜ Øñ

ð 
ð ˜‘œYÑ&ØÜ ñ€Gð"Ü�M‰M˜# Gð 6
Üð6
ä ˜ Ð+Ø9ò6
ð ô	ˆð
 �v‰v‹xˆØ�8‰8�HÓ Ò&Ø˜‘<×#Ñ# F¨BÓ/°°f±×1AÑ1AÀ&È"Ó1MÐMÐMØ�2ˆvˆøÜò ÜÐ !Ñ#¬#¯*©*Õ5Ø�2ˆv�ûðús$   ´A8B1 Â-B1 Â1	C&Â:!C!ÃC&Ã!C&c                 ó<  ‡— 	 t        j                  | t        d¬«      }|j                  }t        |d«      }d}|j                  d«      }|r9|j                  d¬«      }t        j                  dd|«      }|j                  «       }d}|j                  d	«      }|rr|j                  d¬«      }	t        j                  d
|	«      }
|
r§d|
j                  d«      t        |
j                  d«      «      t        |
j                  d«      «      fz  }n_t        j                  d
|«      }|rGd|j                  d«      t        |j                  d«      «      t        |j                  d«      «      fz  }d}g }|j                  d«      }|�rÀg }|j                  D �]  }|j                  }|€1t!        |«      j                  «       }|sŒ.|j#                  d|z  «       ŒC|dk(  r|j#                  t!        |«      «       Œc|dv r_t%        |«      }|sŒut'        |«      dkD  sŒ„dj)                  d„ |j                  D «       «      }|j#                  |j                  «       «       ŒÆ|dk(  ra|j                  dd«      }|j                  dd«      }|sŒò|j+                  d«      r|nt,        |z   }|j#                  d|›d|xs d›d�«       �Œ,|dv rC|j/                  dd¬ «      D ]+  }|j                  d¬«      }|sŒ|j#                  d!|z   «       Œ- �Œs|d"k(  s�Œz|j1                  d«      }|r^|j                  dd«      }|j                  dd«      }|r8|j+                  d«      r|nt,        |z   }|j#                  d|›d|xs d›d�«       |j1                  d«      }|s�Œ |j#                  t!        |«      «       �Œ t3        d#„ |D «       «      su|j/                  d«      D ]a  }|j                  dd«      }|j                  dd«      }|sŒ*|j+                  d«      r|nt,        |z   }|j#                  d|›d|xs d›d�«       Œc t3        d$„ |D «       «      s0|j/                  d«      D ]  }|j#                  t!        |«      «       Œ d%j)                  |«      }|j/                  d&d¬'«      D ]¥  }|d(   }t        j                  d)|t        j4                  «      sŒ.|j+                  d«      r|nt,        |z   Š|j                  d¬«      xs t6        j8                  j;                  |«      }t3        ˆfd*„|D «       «      rŒ’|j#                  ‰|d+œ«       Œ§ t        j                  d,d%|«      j                  «       }|rt'        |«      d-k  rd| ›d|xs d.›d�}|||fS # t        $ r ddg fcY S w xY w)/uA   èŽ·å�–è¯¦æƒ…é¡µå†…å®¹ï¼šä»ŽHTMLä¸­çš„e_richText-11æ��å�–å¯Œæ–‡æœ¬rg   )ri   rj   r4   úhtml.parserÚtitleT©rL   u>   [_\-â€”]\s*æ²³åŒ—å”�å±±å�—å ¡ç»�æµŽå¼€å�‘åŒºç®¡ç�†å§”å‘˜ä¼š.*$z.e_timeFormat-28.s_linkz(\d{4})-(\d{1,2})-(\d{1,2})z%s-%02d-%02dr   é   é   z.e_richText-11z	<p>%s</p>r!   ©r
   r   r	   c              3   ó~   K  — | ]5  }|j                   st        |«      j                  «       sŒ)t        |«      –— Œ7 y ­w©N©r7   r=   rL   ©Ú.0Úcs     rD   ú	<genexpr>z%get_detail_content.<locals>.<genexpr>–   s'   è ø€ Ò#\¨qÀ1Ç6Â6ÌSÐQRËVÏ\É\Í^¤C¨§FÑ#\ùó   ‚*=­=ÚimgÚsrcÚaltÚhttpú<p><a href="ú">õ   æŸ¥çœ‹å›¾ç‰‡ú</a></p>©r   r   r   F©Ú	recursivez- r'   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)z![N©Ú
startswith©rŒ   r
   s     rD   rŽ   z%get_detail_content.<locals>.<genexpr>°   s   è ø€ Ò5¨!�1—<‘< ×%Ñ5ùó   ‚c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)z<tableNrœ   rž   s     rD   rŽ   z%get_detail_content.<locals>.<genexpr>·   s   è ø€ Ò9¨a�1—<‘< ×)Ñ9ùrŸ   rG   Úa©Úhrefr£   z"\.(doc|docx|pdf|xls|xlsx|zip|rar)$c              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­w©r|   N© )rŒ   ÚattÚf_urls     €rD   rŽ   z%get_detail_content.<locals>.<genexpr>Ã   s   øè ø€ ÒF°3˜3˜u™:¨Õ.ÑFùó   ƒ©r|   rƒ   rF   é   u   è¯¦æƒ…)rt   rw   rv   Útextrx   r   Ú
select_oneÚget_textrH   rK   rL   ÚsearchÚgroupÚintr:   r7   r=   r<   rP   ÚlenrJ   r�   rq   Úfind_allÚfindÚanyÚIÚosÚpathÚbasename)Úpage_urlr~   ÚhtmlÚsouprƒ   Út_elrO   Úpub_dateÚdate_elr   ÚmÚdmÚcontentÚattachmentsÚrtÚpartsrM   Útagr¬   ÚtxtÚinnerr‘   r’   Úimg_urlr   r�   Útblr¡   r£   Úf_titler¨   s                                 @rD   Úget_detail_contentrÌ   d   sò  ø€ ðÜ�L‰L˜¬7¸BÔ?ˆØ�v‰vˆô ˜˜}Ó-€Dð €EØ�?‰?˜7Ó#€DÙØ�M‰M ˆMÓ%ˆÜ�F‰FÐTÐVXÐZ[Ó\ˆØ—‘“	ˆð €HØ�o‰oÐ7Ó8€GÙØ×Ñ DÐÓ)ˆÜ�I‰IÐ4°bÓ9ˆÙØ%¨¯©°«´S¸¿¹À»³_ÄcÈ!Ï'É'ÐRSË*ÃoÐ(VÑV‰Hô �Y‰YÐ5°tÓ<ˆÙØ%¨¯©°!«´c¸"¿(¹(À1»+Ó6FÌÈBÏHÉHÐUVËKÓHXÐ(YÑYˆHð €GØ€KØ	�‰Ð)Ó	*€BÚ	àˆØ—+‘+ó "	+ˆBØ—'‘'ˆCØˆ{Ü˜2“w—}‘}“�ÚØ—L‘L ¨tÑ!3Õ4Ø˜’Ø—‘œS ›WÕ%Ø˜Ñ$Ü “m�Úœ3˜s›8 a›<ØŸG™GÑ#\°B·K±KÔ#\Ó\�EØ—L‘L §¡£Õ/Ø˜’Ø—f‘f˜U BÓ'�Ø—f‘f˜U BÓ'�ÚØ%(§^¡^°FÔ%;™cÄÈ#Á�GØ—L’LÂÈ#ÒJ_ÐQ_ÑJ_Ð!`ÖaØ˜Ñ$ØŸ+™+ d°e˜+Ó<ò 1�BØŸ+™+¨D˜+Ó1�CÚØŸ™ T¨C¡ZÕ0ò1ð ˜”Ø—g‘g˜e“n�ÙØŸ'™' %¨Ó,�CØŸ'™' %¨Ó,�CÙØ),¯©¸Ô)?¡#ÄVÈcÁ\˜ØŸšÂWÈcÒNcÐUcÑNcÐ%dÔeØ—g‘g˜gÓ&�ÛØ—L‘L¤ S£Ö*ðE"	+ôJ Ñ5¨uÔ5Ô5Ø—{‘{ 5Ó)ò b�Ø—g‘g˜e RÓ(�Ø—g‘g˜e RÓ(�ÚØ%(§^¡^°FÔ%;™cÄÈ#Á�GØ—L’LÂÈ#ÒJ_ÐQ_ÑJ_Ð!`Õaðbô Ñ9°5Ô9Ô9Ø—{‘{ 7Ó+ò '�Ø—‘œS ›XÕ&ð'ð —+‘+˜eÓ$ˆð —‘˜S t�Ó,ò 	IˆAØ�V‘9ˆDÜ�y‰yÐ>ÀÄbÇdÁdÕKØ $§¡°Ô 7™¼VÀd¹]�ØŸ*™*¨4˜*Ó0ÒJ´B·G±G×4DÑ4DÀTÓ4J�ÜÓF¸+ÔFÕFØ×&Ñ&¨u¸wÑ'GÕHð	Iô �f‰f�Y ¨Ó0×6Ñ6Ó8€GÙ”c˜'“l RÒ'øÚ2:¸EÒ<MÀXÑ<MÐNˆà�H˜kÐ)Ð)øôE ò Ø�2�rˆzÒðús   ƒ(V
 Ö
VÖVc                 óš  — | syt        | d«      } |ddg«      D ]  }|j                  «        Œ g }|j                  D �]Ò  }|j                  }|€.t	        |«      j                  «       }|sŒ.|j                  |«       Œ@|dk(  r|j                  t	        |«      «       Œ`|dv rU|j                  d¬«      sŒwdj                  d	„ |j                  D «       «      }|j                  |j                  «       «       Œ¹|d
k(  rŒ¿|dk(  ra|j                  dd«      }|j                  dd«      }|sŒë|j                  d«      r|nt        |z   }	|j                  d|	›d|xs d›d�«       �Œ%|dv rC|j                  dd¬«      D ]+  }
|
j                  d¬«      }|sŒ|j                  d|z  «       Œ- �Œl|dk(  s�Œs|j                  dd«      }|j                  d¬«      }|s�Œ›|s�ŒŸ|j                  d«      r|nt        |z   }|j                  d|›d|›d�«       �ŒÕ dj                  |«      }t        j                  dd|«      }|j                  «       }|S )u(   ä»Žrichtext HTMLä¸­æ��å�–çº¯æ–‡æœ¬å†…å®¹r4   r‚   ÚscriptÚstyler!   r‡   Tr„   c              3   ó~   K  — | ]5  }|j                   st        |«      j                  «       sŒ)t        |«      –— Œ7 y ­wr‰   rŠ   r‹   s     rD   rŽ   z,extract_content_from_html.<locals>.<genexpr>ä   s&   è ø€ ÒX¨1¸q¿vºvÌÈQËÏÉÍ¤ A§ÑXùr�   r8   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r   Fr™   z- %sr¡   r£   ú[z](ú)rG   z\s*\n{3,}\s*)r   Ú	decomposer:   r7   r=   rL   r<   r®   rJ   rw   r�   rq   r³   rH   rK   )Úrichtext_htmlr¼   rÆ   Úcontent_partsrM   r¬   rÈ   r‘   r’   rÉ   r   rÇ   r£   r¨   rÂ   s                  rD   Úextract_content_from_htmlrÖ   Î   s  € áØä˜¨Ó6€Dñ �X˜wÐ'Ó(ò ˆØ�‰�ðð €MØ�m‰mó @ˆØ�g‰gˆØˆ;Ü�r“7—=‘=“?ˆDÚØ×$Ñ$ TÕ*Ø�GŠ^Ø× Ñ ¤ R£Õ)Ø�LÑ Ø�{‰{ ˆ{Õ&ØŸ™ÑX°·±ÔXÓX�Ø×$Ñ$ U§[¡[£]Õ3Ø�DŠ[ØØ�EŠ\Ø—&‘&˜ Ó#ˆCØ—&‘&˜ Ó#ˆCÚØ!$§¡°Ô!7™#¼VÀc¹\�Ø×$Ò$ÂWÈcÒNcÐUcÑNcÐ%dÖeØ�LÑ Ø—k‘k $°%�kÓ8ò 7�Ø—k‘k¨�kÓ-�ÚØ!×(Ñ(¨°#©Õ6ò7ð �CŒZØ—6‘6˜& "Ó%ˆDØ—+‘+ D�+Ó)ˆCÛ›Ø $§¡°Ô 7™¼VÀd¹]�Ø×$Ò$²3ºÐ%>Ö?ð=@ð@ �k‰k˜-Ó(€Gô �f‰f�_ f¨gÓ6€GØ�m‰m‹o€Gà€NrE   c                 ó^  ‡
— g }| s|S t        | d«      }|j                  dd¬«      D ]�  }|d   }t        j                  d|t        j                  «      sŒ.|j                  d«      r|nt        |z   Š
|j                  d¬«      xs t        j                  j                  |«      }|j                  ‰
|d	œ«       Œ’ |r|j                  d
g «      ng }t        |t        «      rÍ|D ]È  }t        |t        «      sŒ|j                  dd«      xs |j                  dd«      }	|	sŒ=|	j                  d«      r|	nt        |	z   Š
|j                  dd«      xs3 |j                  dd«      xs t        j                  j                  |	«      }t!        ˆ
fd„|D «       «      rŒµ|j                  ‰
|d	œ«       ŒÊ |S )u    ä»Žrichtextä¸­æ��å�–é™„ä»¶é“¾æŽ¥r‚   r¡   Tr¢   r£   z&\.(doc|docx|pdf|xls|xlsx|zip|rar|txt)$r“   r„   rª   Úattachment_j6q40145r|   r4   r‘   rƒ   r7   c              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­wr¥   r¦   )rŒ   r¡   r¨   s     €rD   rŽ   z&extract_attachments.<locals>.<genexpr>  s   øè ø€ ÒF°Q˜q ™x¨5Õ0ÑFùr©   )r   r³   rH   r¯   r¶   r�   rq   r®   r·   r¸   r¹   r<   rw   r;   rn   Údictrµ   )rÔ   Ú	item_datarÃ   r¼   r¡   r£   rË   Úattachment_datar§   r|   r¨   s             @rD   Úextract_attachmentsrÝ     s~  ø€ à€KÙØÐô ˜¨Ó6€DØ�]‰]˜3 Tˆ]Ó*ò AˆØ�‰yˆÜ�9‰9Ð>ÀÄbÇdÁdÕKØ ŸO™O¨FÔ3‘D¼À$¹ˆEØ—j‘j t�jÓ,ÒF´·±×0@Ñ0@ÀÓ0FˆGØ×Ñ u°wÑ?Õ@ðAñ CL�i—m‘mÐ$9¸2Ô>ÐQS€OÜ�/¤4Ô(Ø"ò 	MˆCÜ˜#œtÕ$Ø—g‘g˜e RÓ(Ò>¨C¯G©G°E¸2Ó,>�ÚØ#&§>¡>°&Ô#9™C¼vÈ¹|�EØ!Ÿg™g g¨rÓ2Òb°c·g±g¸fÀbÓ6IÒbÌRÏWÉW×M]ÑM]Ð^aÓMb�GÜÓF¸+ÔFÕFØ#×*Ñ*°5À7Ñ+KÕLð	Mð ÐrE   c                  óÄ  — t         } dt        j                  v rt        } nht	        t        j                  «      D ]L  \  }}|dk(  sŒ|dz   t        t        j                  «      k  sŒ,	 t        t        j                  |dz      «      }  n t        | t        «      } dd l	}|j                  t        «      }|j                  d«       |j                  «       }d}t        d| dz   «      D �]  }t        d||dz
  t         z  fz  t        j"                  ¬«       t%        |«      \  }}	|s't        d|z  t        j"                  ¬«       |dk(  r �nµŒet        d	|t        |«      |	j'                  d
d«      fz  t        j"                  ¬«       |	j'                  d
d«      }
|D �]O  }|j'                  dd«      xs |j'                  dd«      }|sŒ-|j)                  d«      r|nt*        |z   }|j                  d|t,        f«       |j/                  «       rŒr|j'                  dd«      j1                  «       }|sŒ•|j'                  dd«      }|r|d d nd}t3        |«      \  }}}|r|s|}	 |j                  dt,        ||d d ||d d |dt5        j6                  |d¬«      f«       |dz  }t        d|d d |t        |«      t        |«      fz  t        j"                  ¬«       t;        j<                  d«       �ŒR |j?                  «        �Œ t        dt,        |fz  t        j"                  ¬«       |dkD  rg|j                  dt,        f«       |j                  d «      j/                  «       d   }|j?                  «        t        d!|z  t        j"                  ¬«       |jA                  «        y # t        $ r Y �Œ$w xY w# t8        $ r)}t        d|z  t        j"                  ¬«       Y d }~�Œ	d }~ww xY w)"Nz--fullz--pagesr   r   zPRAGMA journal_mode=WALu   ç¬¬%dé¡µ (from=%d)ro   u     ç¬¬%dé¡µ æ— æ•°æ�®u     ç¬¬%dé¡µ: %d æ�¡ (å…±%sæ�¡)Ú
totalCountú?Ú_hrefr4   Úlink_6W72508rr“   z7SELECT id FROM gov_raw WHERE page_url=? AND site_name=?Útext_2PVENH84ÚprePublishTimeé
   z˜INSERT INTO gov_raw (site_name, page_url, title, content, publish_date, source_url, status, attachments)
                       VALUES (?,?,?,?,?,?,?,?)iô  r«   ÚsyncedF)Úensure_asciiz     + %s (%s) body:%dB attach:%dé2   u       ! å…¥åº“å¤±è´¥: %sg333333Ó?u   
[%s] å®Œæˆ�! æ–°å¢ž %d æ�¡zóINSERT OR IGNORE INTO gov_search(rowid, title, site_name, summary)
                      SELECT rowid, title, site_name, substr(content,1,500) FROM gov_raw
                      WHERE site_name=? AND rowid NOT IN (SELECT rowid FROM gov_search)zSELECT changes()u!     gov_search å¢žé‡�æ›´æ–°: %d æ�¡)!ÚDEFAULT_PAGESrz   ÚargvÚ	MAX_PAGESÚ	enumerater²   r±   Ú
ValueErrorÚminÚsqlite3Úconnectr   ÚexecuteÚcursorÚrangery   rr   r{   r€   rw   r�   rq   Ú	SITE_NAMEÚfetchonerL   rÌ   rh   Údumpsrx   ÚtimeÚsleepÚcommitÚclose)ÚpagesÚir¡   rï   Úconnr�   Úall_newÚpgÚitemsÚ	page_infoÚtotal_countÚitr£   rº   rƒ   Úraw_dater¾   rÂ   Údetail_daterÃ   r   Ú	fts_addeds                         rD   r   r   !  s’  € Ü€EØ”3—8‘8ÑÜ‰äœcŸh™hÓ'ò 	‰DˆAˆqØ�I‹~ ! a¡%¬#¬c¯h©h«-Ó"7ðÜ¤§¡¨¨Q©¡Ó0�Eñ ð	ô �”yÓ!€EãØ�?‰?œ9Ó%€DØ‡L�LÐ*Ô+Ø�‰‹€Aà€GÜ�A�u˜q‘yÓ!ó 4ˆÜÐ" b¨2¨a©4´Ñ*:Ð%;Ñ;Ä#Ç*Á*ÕMÜ% b›>ÑˆˆyÙÜÐ(¨2Ñ-´C·J±JÕ?Ø�QŠwÚØäÐ-°´S¸³ZÀÇÁÈ|Ð]`ÓAaÐ0bÑbÔil×isÑisÕtØ—m‘m L°!Ó4ˆàó &	ˆBà—6‘6˜' 2Ó&ÒE¨"¯&©&°À"Ó*EˆDÙØØ#Ÿ™¨vÔ6‘t¼FÀT¹MˆHð �I‰IÐOÐRZÔ\eÐQfÔgØ�z‰zŒ|Øð —F‘F˜?¨BÓ/×5Ñ5Ó7ˆEÙØð —v‘vÐ.°Ó3ˆHÙ(0�x  ‘}°bˆHô 1CÀ8Ó0LÑ-ˆG�[ +Ù¡8Ø&�ð
EØ—	‘	ð3ä ¨%°°¨+°wÀÈÈ"ÀØ˜x¬¯©°KÈeÔ)TðVôð ˜1‘�ÜÐ8¸EÀ#À2¸JÈÔRUÐV]ÓR^Ô`cÐdoÓ`pÐ;qÑqÔx{÷  yCñ  yCõ  Dô �J‰J�sŽOðM&	ðP 	�‰Žði4ôl 
Ð
(¬I°wÐ+?Ñ
?ÄcÇjÁjÕQà�‚{Ø	�	‰	ð [ä]fÐ\hô	jð —I‘IÐ0Ó1×:Ñ:Ó<¸QÑ?ˆ	Ø�‰ŒÜÐ1°IÑ=ÄCÇJÁJÕOà‡J�J…LøôW "ò Úðûôt ò EÜÐ.°Ñ2¼¿¹×DÓDûðEús+   Á&NÉA5N-Î	N*Î)N*Î-	OÎ6OÏOÚ__main__)r   )Ú__doc__rz   r·   rH   r÷   rh   rt   rI   r   Úgetenvr   rv   rq   rô   rs   rr   ÚTOTAL_ITEMSrë   ré   r?   rP   r€   rÌ   rÖ   rÝ   r   Ú__name__r¦   rE   rD   ú<module>r     s§   ðñ	÷ )× (× (Ý àˆB�I‰I�kÐ#8Ó9€	ØÐWÐ
X€Ø	#€Ø€	Ø#€Ø€	Ø€Ø˜9Ñ$ qÑ(¨YÑ6€	Ø€ò*€òó6 òFg*òT2òjò<Tðn ˆzÒÙ…Fð rE   