§
    ¤ö¤jà%  ã                   ór  — d Z ddlZddlZddlmZ ej                             ej                             ej                             e¦  «        ¦  «        ¦  «        Z	ej         
                    e	d¦  «        Zej         
                    ed¦  «        ZdZi Zd„ Zd„ Zdd	„Zd
„ Zdd„Zdd„Zedk    r‡ddlZ eej        ¦  «        dk    rej        d         ndZ e ej         ee¦  «        dd¬¦  «        dd…         ¦  «          ed ee¦  «        ¦  «          e ee¦  «        dd…         ¦  «         dS dS )uã  è¡Œä¸šé”šç‚¹æ¨¡å�—ï¼ˆKalorama å…¨ç�ƒIVDç¬¬19ç‰ˆ â†’ å®¢æˆ·æ‹œè®¿å�¡ï¼‰

æŒ‰å®¢æˆ·ã€Œç»ˆç«¯èµ›é�“ã€�è‡ªåŠ¨å¸¦å‡ºæŠ¥å‘Šé‡Œå¯¹åº”çš„å¸‚åœºè§„æ¨¡ä¸Ž CAGRï¼Œä½œä¸ºæ‹œè®¿æ²Ÿé€šçš„è¡Œä¸šé”šç‚¹ã€‚
æ•°æ�®æº�ï¼šæ•°æ�®/ivd_industry_anchors.jsonï¼ˆKalorama ç¬¬19ç‰ˆï¼Œ2026-05ï¼Œ1171é¡µï¼‰
ç”¨æ³•ï¼š
    import ivd_anchor
    html = ivd_anchor.anchor_html('è¿ˆå…‹ç”Ÿç‰©è‚¡ä»½æœ‰é™�å…¬å�¸', ['Superstart Taq plus'])
    print(ivd_anchor.detect_track('å¹¿å·žä¸‡å­šç”Ÿç‰©æŠ€æœ¯è‚¡ä»½æœ‰é™�å…¬å�¸'))
é    N)Úquoteu   æ•°æ�®zivd_industry_anchors.jsonzAhttps://bier-sales-d0gatbvlx288724e9-1458438710.tcloudbaseapp.comc                  óÂ   — dt           vrJt          t          d¬¦  «        5 } t          j        | ¦  «        t           d<   d d d ¦  «         n# 1 swxY w Y   t           d         S )NÚdzutf-8)Úencoding)Ú_cacheÚopenÚANCHOR_FILEÚjsonÚload)Úfs    õE   /Users/liuxinyuan/Desktop/Hermesè¾“å‡º-å·¥ä½œç±»/è„šæœ¬/ivd_anchor.pyr   r      s�   € Ø
•&ÐÐÝ•+¨Ð0Ñ0Ô0ð 	'°AÝœ) A™,œ,�F�3‰Kð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'å�#Œ;Ðs    A	Á	AÁAc                 ó^   — d| dz  z                        d¦  «                              d¦  «        S )u#   ç™¾ä¸‡ç¾Žå…ƒ â†’ äº¿ç¾Žå…ƒå­—ç¬¦ä¸²z%.1fg      Y@Ú0ú.)Úrstrip)Úvs    r   Ú_yir      s-   € à�a˜%‘iÑ ×(Ò(¨Ñ-Ô-×4Ò4°SÑ9Ô9Ð9ó    c                 ó  ‡— t          ¦   «         }| pd}|                     dg ¦  «        D ]C}|                     dg ¦  «        D ]*Š‰r&‰|v r"|d         |                     dd¦  «        fc c S Œ+ŒDd„ |pg D ¦   «         }|rl|                     dg ¦  «        D ]U}|                     d	g ¦  «        D ]<Št          ˆfd
„|D ¦   «         ¦  «        r|d         d|d         dd…         z  fc c S Œ=ŒV|                     dd¦  «        dfS )un   è¿”å›ž (èµ›é�“key, åˆ¤å®šä¾�æ�®æ–‡æ¡ˆ)ã€‚ä¾�æ�®ä¼˜å…ˆçº§ï¼šäººå·¥æ ¸å¯¹è¡¨ > åœ¨é‡‡äº§å“�å…³é”®è¯� > é»˜è®¤ã€‚Ú Ú	overridesÚmatchÚtrackÚbasisu   äººå·¥æ ¸å¯¹c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Ústr)Ú.0Úps     r   ú
<listcomp>z detect_track.<locals>.<listcomp>+   s   € Ð.Ð.Ð.˜�S�‰VŒVÐ.Ð.Ð.r   Úproduct_rulesÚkwc              3   óh   •K  — | ],}‰                      ¦   «         |                      ¦   «         v V — Œ-d S ©N)Úlower)r   r   r"   s     €r   ú	<genexpr>zdetect_track.<locals>.<genexpr>/   s8   øè è € Ð>Ð>°1�r—x’x‘z”z Q§W¢W¡Y¤YÐ.Ð>Ð>Ð>Ð>Ð>Ð>r   u    åœ¨é‡‡äº§å“�çº¿åˆ¤å®šï¼ˆ%sâ€¦ï¼‰r   Né   Údefault_trackõ	   å¾…ç¡®è®¤u9   æš‚æ— ç¡®è¯�ä¿¡æ�¯ï¼ŒæŒ‰å®�é”�ä¸»ä¾›åˆ†å­�åŽŸæ–™çº¿é»˜è®¤)r   ÚgetÚany)Ú	cust_nameÚproductsr   ÚnameÚovÚprodsÚruler"   s          @r   Údetect_trackr2   #   ss  ø€ å‰Œ€AØˆ?˜€DØ�eŠe�K Ñ$Ô$ð Dð DˆØ—&’&˜ "Ñ%Ô%ð 	Dð 	DˆBØð D�b˜D�j�jØ˜'”{ B§F¢F¨7°NÑ$CÔ$CÐCÐCÐCÐCÐCÐCøð	Dð /Ð.˜h˜n¨"Ð.Ñ.Ô.€EØð ]Ø—E’E˜/¨2Ñ.Ô.ð 	]ð 	]ˆDØ—h’h˜t RÑ(Ô(ð ]ð ]�ÝÐ>Ð>Ð>Ð>¸Ð>Ñ>Ô>Ñ>Ô>ð ]Ø œ=Ð*LÈuÐUVÌxÐX[ÐY[ÐX[Ì}Ñ*\Ð\Ð\Ð\Ð\Ð\Ð\ð]ð]ð �5Š5� +Ñ.Ô.Ð0kÐkÐkr   c                 óü   — t          | d                              |i ¦  «        ¦  «        }||d<   |                     d¦  «        r3t          |                     dd¦  «        | d         d         z  d¦  «        nd|d<   |S )NÚsegmentsÚkeyÚcagrr   Úglobalé   Ú	vs_global)Údictr*   Úround)r   r5   Úss      r   Ú_seg_rowr=   4   su   € ÝˆQˆzŒ]×Ò˜s BÑ'Ô'Ñ(Ô(€AØ€A€e�HØIJÏÊÈvÉÌÐ]•U˜1Ÿ5š5 ¨Ñ+Ô+¨a°¬k¸&Ô.AÑAÀ1ÑEÔEÐEÐ\]€A€k�NØ€Hr   c                 ó&  ‡‡‡— t          ¦   «         Št          | |¦  «        \  Š}‰d                              ‰¦  «        p‰d         d         }ˆfd„|                     dg ¦  «        D ¦   «         }|                     d¦  «        Š|                     ˆfd„¬¦  «         ˆfd„‰d         D ¦   «         }| ‰|d	         ||                     d
d¦  «        |                     dd¦  «        |‰d         ‰d         |‰d         d         ‰d         d         dœS )u,   ç»“æž„åŒ–é”šç‚¹æ•°æ�®ï¼ˆä¾› HTML/JSON ç”¨ï¼‰Útracksr)   c                 óD   •— g | ]}|‰d          v ¯t          ‰|¦  «        ‘ŒS )r4   )r=   )r   Úkr   s     €r   r    zanchor_data.<locals>.<listcomp>@   s/   ø€ ÐMÐMÐM˜q¸!¸qÀ¼}Ð:LÐ:L�H�Q˜‰NŒNÐ:LÐ:LÐ:Lr   ÚsegsÚanchorc                 óR   •— | d         ‰k    rdnd|                       dd¦  «         fS )Nr5   r   r8   r6   ©r*   )r<   Úheads    €r   ú<lambda>zanchor_data.<locals>.<lambda>C   s/   ø€  ! E¤(¨dÒ"2Ð"2˜Q˜Q¸¸A¿EºEÀ&È!Ñ<LÔ<LÐ;LÐM€ r   )r5   c                 ó    •— g | ]
}|‰k    ¯|‘ŒS r   r   )r   rA   Ú	track_keys     €r   r    zanchor_data.<locals>.<listcomp>E   s   ø€ Ð7Ð7Ð7�A¨¨Yª¨ˆa¨¨¨r   ÚlabelÚentryr   Úoppr7   ÚchinaÚmetaÚsourceÚreadpage)Úcustomerr   Útrack_labelr   rK   rL   rB   r7   rM   ÚothersrO   rP   )r   r2   r*   Úsort)	r,   r-   r   ÚtrrB   rS   r   rF   rI   s	         @@@r   Úanchor_datarV   ;   s%  øøø€ å‰Œ€AÝ# I¨xÑ8Ô8Ñ€IˆuØ	
ˆ8Œ�Š˜Ñ	#Ô	#Ð	? q¨¤{°;Ô'?€BØMÐMÐMÐM B§F¢F¨6°2Ñ$6Ô$6ÐMÑMÔM€Dà�6Š6�(ÑÔ€DØ‡I‚IÐMÐMÐMÐM€IÑNÔNÐNà7Ð7Ð7Ð7˜˜8œÐ7Ñ7Ô7€FàØØ˜'”{ØØ—’˜ Ñ$Ô$Ø�vŠv�e˜RÑ Ô ØØ�H”+Ø�7”ØØ�F”)˜HÔ%Ø�f”I˜jÔ)ðð ð r   c                 óB  — t          | |¦  «        }|d         }|d         }|r|d         nd}t          dz   t          |d         ¦  «        z   }d}d|d	         z  g}|dd
…         D ]W}	|	d         dk    rdnd}
|                     d|
›d|	d         ›d|	                     d¦  «        rd|	d         z  nd›d�¦  «         ŒX|                     d|d         z  ¦  «         g }t          |dd…         ¦  «        D ]ü\  }}	|	                     d¦  «        rD|	                     d¦  «        r/t          |	d         ¦  «        ›dt          |	d         ¦  «        ›d�}nd}|	d         dk     rdnd}|	                     d¦  «        rd |	d         z  nd}d}|	                     d¦  «        r|	d         rd!|d         |	d         fz  nd}|                     d"|dk    rd#nd›d$|	d         ›d%|›d&|›d'|›d(|›d)�¦  «         Œýg }t          d*„ |D ¦   «         |d         gz   ¦  «        pd}|dd+…         D ]\}	|	                     dd¦  «        }|                     d,|	d         ||d         k    rdndt          ||z  d-z  d
¦  «        |fz  ¦  «         Œ]|                     d.|d         |z  d-z  |d         fz  ¦  «         |                     d/|d         z  ¦  «         d0}|r£|                     d¦  «        rŽ|                     d¦  «        ry|d1|d         t          |d         ¦  «        t          |d         ¦  «        |d         |d         fz  z  }|                     d¦  «        r|d         dk    r|d2|d         z  z  }|d3z  }|d4         r||d4         d3z   z  }|d5         r|d6|d5         z  z  }|d7         }|d8d                     |¦  «        d                     |¦  «        d                     |¦  «        |t          |d         ¦  «        |d9         |d         |d:         |d;         |d<         |fz  z   S )=uS   ç”Ÿæˆ�æ‹œè®¿å�¡ã€ŒðŸŒ� è¡Œä¸šé”šç‚¹ã€�åŒºå�—ï¼ˆè‡ªåŒ…å�«æ ·å¼�ï¼Œæ— å¤–éƒ¨ä¾�èµ–ï¼‰r7   rB   r   NÚ/rP   a±  
<style>
.ia-wrap{margin:0}
.ia-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.ia-chip{background:var(--pri-light,#e8f0fe);color:var(--pri,#1a73e8);border-radius:14px;padding:3px 12px;font-size:13px;font-weight:600}
.ia-chip.sub{background:#f1f3f4;color:var(--sub,#5f6368);font-weight:500}
.ia-basis{margin-left:auto;font-size:12px;color:var(--muted,#9e9e9e)}
.ia-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:14px}
.ia-card{border:1px solid var(--border,#e0e0e0);border-radius:10px;padding:12px 14px;background:#fff}
.ia-card.lead{border-color:#1a73e8;box-shadow:0 2px 8px rgba(26,115,232,.12)}
.ia-lab{font-size:12px;color:var(--sub,#5f6368);margin-bottom:6px}
.ia-val{font-size:17px;font-weight:700;color:#202124;line-height:1.35}
.ia-val em{font-style:normal;color:var(--pri,#1a73e8)}
.ia-gr{font-size:12px;color:var(--sub,#5f6368);margin-top:6px}
.ia-cagr{display:inline-block;background:#0d904f15;color:#0d904f;border-radius:10px;padding:1px 8px;font-weight:700;font-size:12px;margin-right:6px}
.ia-cagr.low{background:#e3740015;color:#e37400}
.ia-multi{color:#d93025;font-weight:700}
.ia-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:7px;font-size:12px}
.ia-bar-name{width:132px;color:var(--sub,#5f6368);text-align:right;flex:none}
.ia-bar-track{flex:1;background:#f1f3f4;border-radius:6px;height:14px;position:relative;overflow:hidden}
.ia-bar-fill{height:100%;border-radius:6px;background:linear-gradient(90deg,#1a73e8,#4285f4)}
.ia-bar-fill.low{background:linear-gradient(90deg,#9e9e9e,#bdbdbd)}
.ia-bar-num{width:96px;flex:none;color:#202124;font-weight:600}
.ia-base{font-size:12px;color:var(--muted,#9e9e9e);margin:2px 0 12px 142px}
.ia-talk{background:#e8f0fe;border-left:3px solid #1a73e8;border-radius:6px;padding:12px 14px;font-size:13.5px;line-height:1.75;color:#202124}
.ia-talk b{color:#0d47a1}
.ia-cn{background:#f8f9fa;border-radius:6px;padding:10px 14px;font-size:12.5px;color:var(--sub,#5f6368);line-height:1.7;margin-top:10px}
.ia-foot{margin-top:12px;font-size:11.5px;color:var(--muted,#9e9e9e);line-height:1.6}
.ia-foot a{color:var(--pri,#1a73e8);text-decoration:none;font-weight:600}
</style>u1   <span class="ia-chip">ðŸŽ¯ ä¸»èµ›é�“ Â· %s</span>rR   é   r9   r8   r   z subz<span class="ia-chipz">r.   Ú r6   z%gu   â€”z%</span>u/   <span class="ia-basis">åˆ¤å®šä¾�æ�®ï¼š%s</span>r   é   Úy2025Úy2030u    äº¿ <em>â†’</em> u    äº¿u   æŠ¥å‘Šä»…ç»™å¢žé€Ÿz lowz%g%%u8    Â· å¤§ç›˜ %g%% çš„ <span class="ia-multi">%g å€�</span>z<div class="ia-cardz leadz"><div class="ia-lab">z</div><div class="ia-val">z-</div><div class="ia-gr"><span class="ia-cagrz">CAGR z</span>z</div></div>c                 ó:   — g | ]}|                      d d¦  «        ‘ŒS )r6   r   rE   )r   r<   s     r   r    zanchor_html.<locals>.<listcomp>˜   s&   € Ð-Ð-Ð- 1ˆa�eŠe�F˜AÑÔÐ-Ð-Ð-r   é   z·<div class="ia-bar-row"><div class="ia-bar-name">%s</div><div class="ia-bar-track"><div class="ia-bar-fill%s" style="width:%.1f%%"></div></div><div class="ia-bar-num">%g%%</div></div>éd   uÞ   <div class="ia-bar-row"><div class="ia-bar-name" style="font-weight:700">å…¨ç�ƒIVDå¤§ç›˜</div><div class="ia-bar-track"><div class="ia-bar-fill low" style="width:%.1f%%"></div></div><div class="ia-bar-num">%g%%</div></div>uh   <div class="ia-base">æ¨ªè½´=2030å¹´é¢„æµ‹ CAGRï¼ˆKalorama ç¬¬19ç‰ˆï¼›ç�°è‰²=ä½ŽäºŽå¤§ç›˜ %.1f%%ï¼‰</div>u   <b>è¡Œä¸šé”šç‚¹è¯�æœ¯ï¼š</b>ue   ã€Œ%sã€�å…¨ç�ƒ %s äº¿ç¾Žå…ƒ â†’ 2030 å¹´ %s äº¿ç¾Žå…ƒï¼ŒCAGR <b>%g%%</b>ï¼ˆIVD å¤§ç›˜å�ªæœ‰ %.1f%%ï¼‰u   ï¼Œæ˜¯å¤§ç›˜çš„ <b>%g å€�</b>u   ã€‚rL   rK   u   å¯¹å®�é”�çš„åˆ‡å…¥ç‚¹ï¼š%sã€‚rM   u  
<div class="section" id="industryAnchor">
  <h2>ðŸŒ� è¡Œä¸šé”šç‚¹ <span style="font-size:12px;color:var(--muted);font-weight:400;">ï¼ˆKalorama å…¨ç�ƒIVDç¬¬19ç‰ˆ Â· æŒ‰å®¢æˆ·èµ›é�“è‡ªåŠ¨å¸¦å‡ºï¼‰</span></h2>
  <div class="ia-wrap">
    <div class="ia-chips">%s</div>
    <div class="ia-cards">%s</div>
    <div class="ia-bars">%s</div>
    <div class="ia-talk">%s</div>
    <div class="ia-cn">ðŸ‡¨ðŸ‡³ <b>ä¸­å›½å�£å¾„</b>ï¼šå¸‚åœº %s äº¿ç¾Žå…ƒï¼ˆå� å…¨ç�ƒ %sï¼ŒCAGR %g%%ï¼‰ï¼›äººå�‡å¹´ IVD æ”¯å‡ºä»… <b>%s ç¾Žå…ƒ</b>ï¼›ç»“æž„ %s</div>
    <div class="ia-foot">ðŸ“š æ•°æ�®æº�ï¼š%sï¼ˆå†…éƒ¨èµ„æ–™ï¼Œå‹¿å¤–ä¼ ï¼‰Â· <a href="%s" target="_blank">ðŸ“– æ‰“å¼€å®Œæ•´ç²¾è¯»é¡µï¼ˆ9 å¤§ç«  Â· å�«ä¸­å›½ç»“æž„/ä¸­å›½å¸‚åœºæ·±åº¦è§£è¯»/TOP20åŽ‚å•†/æŠ€æœ¯è¶‹åŠ¿/å¯¹å®�é”�çš„å�¯ç¤ºï¼‰</a></div>
  </div>
</div>Úglobal_shareÚper_capita_usdÚ	structurerO   )	rV   ÚCDN_BASEr   Úappendr*   Ú	enumerater   ÚmaxÚjoin)r,   r-   ÚaÚgrB   ÚtopÚread_urlÚcssÚchipsr<   ÚclsÚcardsÚiÚvalÚlowÚcgÚextraÚbarsÚmxÚcÚtalkÚcns                         r   Úanchor_htmlr{   V   s/  € å�I˜xÑ(Ô(€AØ	ˆ(Œ€AØˆVŒ9€DØÐ
#ˆ$ˆqŒ'ˆ'˜t€CÝ˜#‰~¥ a¨
¤mÑ 4Ô 4Ñ4€Hð€Cð@ AÀ1À]ÔCSÑSÐT€EØ�"�1�"ŒXð Mð MˆØ�k”N aÒ'Ð'ˆbˆb¨VˆØ�ŠˆØˆCˆC��6”��°!·%²%¸±-´-ÐJ˜T A f¤IÑ-Ð-ÀUÐJÐJðLñ 	Mô 	Mð 	Mð 	Mà	‡L‚LÐBÀQÀwÄZÑOÑPÔPÐPð €EÝ˜$˜r ˜rœ(Ñ#Ô#ð Lð L‰ˆˆ1Ø�5Š5�‰>Œ>ð 	'˜aŸeše G™nœnð 	'Ý25°a¸´j±/´/°/°/Å3ÀqÈÄzÁ?Ä?À?À?ÐSˆCˆCà&ˆCØ˜+œ¨Ò*Ð*ˆfˆf°ˆØ%&§U¢U¨6¡]¤]Ð=ˆf�q˜”yÑ Ð ¸ˆØˆØ�5Š5�‰=Œ=ð 	GØpqÐr}Ôp~ð  GÐNÐRSÐTZÔR[Ð]^Ð_jÔ]kÐQlÑlÐlð  EGˆEØ�Šˆð  š6˜6�� rÐ)Ð)¨1¨V¬9¨9¨9°c°c°c¸3¸3¸3ÀÀÀÀEÀEÀEðKñ	Lô 	Lð 	Lð 	Lð €DÝ	Ð-Ð-¨Ð-Ñ-Ô-°°6´°Ñ;Ñ	<Ô	<Ð	AÀ€BØ�"�1�"ŒXð Wð WˆØ�EŠE�&˜!ÑÔˆØ�Šð7ð �&”	  a¨¤i¢ ˜2˜2°V½SÀÀRÁÈ#ÁÈqÑ=QÔ=QÐSTð:VñVñ	Wô 	Wð 	Wð 	Wð
 	‡K‚Kð	3à67¸´iÀ"±nÀsÑ6JÈAÈfÌIÐ5Vñ	WñXô Xð Xð 	‡K‚KÐzÐ}~ð  @Fô  ~Gñ  Gñ  Hô  Hð  Hà)€DØ
ð ˆs�wŠw�wÑÔð  C§G¢G¨GÑ$4Ô$4ð ØÐwØ�ŒK�˜S œ\Ñ*Ô*­C°°G´Ñ,=Ô,=¸sÀ6¼{ÈAÈfÌIð{Wñ Wñ 	Wˆà�7Š7�;ÑÔð 	G C¨Ô$4¸Ò$9Ð$9ØÐ3°c¸+Ô6FÑFÑFˆDØ�‰ˆØˆ„xð !Ø��%”˜5Ñ Ñ ˆØˆ„zð =ØÐ/°!°G´*Ñ<Ñ<ˆà	
ˆ7Œ€BØð 
ð 	�Š�‰Œ˜Ÿš ™œ¨¯ª°©¬°tÝˆBˆwŒKÑÔ˜"˜^Ô,¨b°¬j¸"Ð=MÔ:NÐPRÐS^ÔP_Ø	ˆ(Œ�Xðññ ð r   Ú__main__r8   u   è¿ˆå…‹ç”Ÿç‰©è‚¡ä»½æœ‰é™�å…¬å�¸F)Úensure_asciiÚindenti°  z
--- track:iX  r$   )Ú__doc__r
   ÚosÚurllib.parser   ÚpathÚdirnameÚabspathÚ__file__ÚROOTrh   ÚDATAr	   rd   r   r   r   r2   r=   rV   r{   Ú__name__ÚsysÚlenÚargvr.   ÚprintÚdumpsr   r   r   ú<module>rŽ      sÈ  ððð ð €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð à	„w‡‚�r”w—’ r¤w§¢°xÑ'@Ô'@ÑAÔAÑBÔB€Ø	„w‡|‚|�D˜(Ñ#Ô#€ØŒg�lŠl˜4Ð!<Ñ=Ô=€ØN€Ø	€ðð ð ð:ð :ð :ð
lð lð lð lð"ð ð ðð ð ð ð6kð kð kð kð\ ˆzÒÐØ€J€J€JØ˜#˜cœh™-œ-¨!Ò+Ð+ˆ3Œ8�AŒ;ˆ;Ð1Q€DØ	€Eˆ*ˆ$Œ*�[�[ Ñ&Ô&°UÀ1Ð
EÑ
EÔ
EÀeÀtÀeÔ
LÑMÔMÐMØ	€Eˆ.˜,˜, tÑ,Ô,Ñ-Ô-Ð-Ø	€Eˆ+ˆ+�dÑ
Ô
˜D˜S˜DÔ
!Ñ"Ô"Ð"Ð"Ð"ð Ðr   