Ë
    éÓ^jE5  ã            
       ó2  — d Z ddlmZmZmZmZmZmZmZm	Z	 ddl
Z
ddlmZ ddlmc mZ ddlmZmZ ddlmZmZmZmZmZmZ ddlmZ ddlmZ dd	lmZ dd
l m!Z!m"Z" dgZ# G d„ dejH                  «      Z% G d„ dejL                  «      Z' G d„ dejL                  «      Z(dee)e
jT                  f   dejL                  dee)e
jT                  f   fd„Z+d%de)dedee)ef   fd„Z, e" e,d¬«       e,d¬«       e,d¬«       e,d¬«       e,«        e,«        e,«       dœ«      Z-d&de)de.dede(fd„Z/e!d&de.dede(fd„«       Z0e!d&de.dede(fd„«       Z1e!d&de.dede(fd „«       Z2e!d&de.dede(fd!„«       Z3e!d&de.dede(fd"„«       Z4e!d&de.dede(fd#„«       Z5e!d&de.dede(fd$„«       Z6y)'al  
Implementation of Prof-of-Concept Network: StarNet.

We make StarNet as simple as possible [to show the key contribution of element-wise multiplication]:
    - like NO layer-scale in network design,
    - and NO EMA during training,
    - which would improve the performance further.

Created by: Xu Ma (Email: ma.xu1@northeastern.edu)
Modified Date: Mar/29/2024
é    )ÚAnyÚDictÚListÚOptionalÚSetÚTupleÚUnionÚTypeN©ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STD)ÚDropPathÚSelectAdaptivePool2dÚLinearÚ	LayerTypeÚtrunc_normal_Úcalculate_drop_path_ratesé   )Úbuild_model_with_cfg)Úfeature_take_indices)Úcheckpoint_seq)Úregister_modelÚgenerate_default_cfgsÚStarNetc                   óF   ‡ — e Zd Z	 	 	 	 	 	 ddedededededefˆ fd„Zˆ xZS )	ÚConvBNÚin_channelsÚout_channelsÚkernel_sizeÚstrideÚpaddingÚwith_bnc	           	      ó¨  •— ||dœ}
t         ‰| �  «        | j                  dt        j                  |||f||dœ|
¤|	¤Ž«       |r�| j                  dt        j
                  |fi |
¤Ž«       t        j                  j                  | j                  j                  d«       t        j                  j                  | j                  j                  d«       y y )N©ÚdeviceÚdtypeÚconv©r    r!   Úbnr   r   )ÚsuperÚ__init__Ú
add_moduleÚnnÚConv2dÚBatchNorm2dÚinitÚ	constant_r)   ÚweightÚbias)Úselfr   r   r   r    r!   r"   r%   r&   ÚkwargsÚddÚ	__class__s              €ú^/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/starnet.pyr+   zConvBN.__init__   sµ   ø€ ð ¨Ñ/ˆÜ‰ÑÔØ�‰˜¤§	¡	Ø˜ {ð!dØ;AÈ7ñ!dØVXð!dØ\bñ!dô 	eáØ�O‰O˜D¤"§.¡.°Ñ"DÀÑ"DÔEÜ�G‰G×Ñ˜dŸg™gŸn™n¨aÔ0Ü�G‰G×Ñ˜dŸg™gŸl™l¨AÕ.ð ó    )r   r   r   TNN)Ú__name__Ú
__module__Ú__qualname__ÚintÚboolr+   Ú__classcell__©r7   s   @r8   r   r      s[   ø„ ð
  !ØØØ ØØñ/àð/ð ð/ð ð	/ð
 ð/ð ð/ð ÷/ñ /r9   r   c            
       ó¢   ‡ — e Zd Zddej                  ddfdedededeej                     fˆ fd„Z	d	e
j                  d
e
j                  fd„Zˆ xZS )ÚBlocké   ç        NÚdimÚ	mlp_ratioÚ	drop_pathÚ	act_layerc                 ó’  •— ||dœ}t         ‰| �  «        t        ||dddf|ddœ|¤Ž| _        t        |||z  dfddi|¤Ž| _        t        |||z  dfddi|¤Ž| _        t        ||z  |dfddi|¤Ž| _        t        ||dddf|ddœ|¤Ž| _         |«       | _        |d	kD  rt        |«      | _        y t        j                  «       | _        y )
Nr$   é   r   rC   T)Úgroupsr"   r"   FrD   )r*   r+   r   ÚdwconvÚf1Úf2ÚgÚdwconv2Úactr   r-   ÚIdentityrG   )	r4   rE   rF   rG   rH   r%   r&   r6   r7   s	           €r8   r+   zBlock.__init__4   sÛ   ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ˜S # q¨!¨QÐO°sÀDÑOÈBÑOˆŒÜ˜˜i¨#™o¨qÑF¸%ÐFÀ2ÑFˆŒÜ˜˜i¨#™o¨qÑF¸%ÐFÀ2ÑFˆŒÜ˜	 C™¨¨aÑD¸ÐDÀÑDˆŒÜ˜c 3¨¨1¨aÐQ¸ÀUÑQÈbÑQˆŒÙ“;ˆŒØ09¸B²œ )Ó,ˆ�ÄBÇKÁKÃMˆ�r9   ÚxÚreturnc                 ó   — |}| j                  |«      }| j                  |«      | j                  |«      }}| j                  |«      |z  }| j	                  | j                  |«      «      }|| j                  |«      z   }|S ©N)rL   rM   rN   rQ   rP   rO   rG   )r4   rS   ÚresidualÚx1Úx2s        r8   ÚforwardzBlock.forwardG   sm   € ØˆØ�K‰K˜‹NˆØ—‘˜“˜TŸW™W Q›ZˆBˆØ�H‰H�R‹L˜2ÑˆØ�L‰L˜Ÿ™ ›Ó#ˆØ�t—~‘~ aÓ(Ñ(ˆØˆr9   )r:   r;   r<   r-   ÚReLU6r=   Úfloatr
   ÚModuler+   ÚtorchÚTensorrZ   r?   r@   s   @r8   rB   rB   3   sk   ø„ ð Ø!Ø)+¯©ØØñRàðRð ðRð ð	Rð
 ˜BŸI™I‘õRð&˜Ÿ™ð ¨%¯,©,÷ r9   rB   c                   óf  ‡ — e Zd Zdg d¢dddej                  ddddddfd	ed
ee   dedededeej                     dedede
defˆ fd„Zd„ Zej                  j                  defd„«       Zej                  j                  d+dedee
ef   fd„«       Zej                  j                  d,defd„«       Zej                  j                  dej                  fd„«       Zd-dedee
   fd„Z	 	 	 	 	 d.dej4                  deeeee   f      ded ed!e
d"edeeej4                     eej4                  eej4                     f   f   fd#„Z	 	 	 d/deeee   f   d$ed%efd&„Zdej4                  dej4                  fd'„Zd+dej4                  d(edej4                  fd)„Z dej4                  dej4                  fd*„Z!ˆ xZ"S )0r   é    ©rC   rC   é   é   é   rD   éè  rC   ÚavgNÚbase_dimÚdepthsrF   Ú	drop_rateÚdrop_path_raterH   Únum_classesÚin_chansÚglobal_poolÚoutput_stridec                 óV  •— ||dœ}t         ‰| �  «        |
dk(  sJ ‚|| _        || _        || _        d| _        g | _        d}t        j                  t        ||fddddœ|¤Ž |«       «      | _
        |}t        |t        |«      «      }g }d}t        t        |«      «      D ]¨  }|d|z  z  }t        ||dfddd	œ|¤Ž}t        ||   «      D �cg c]  }t        |||||z      |fi |¤Ž‘Œ }}|||   z  }|}|j!                  t        j                  |g|¢­Ž «       | j                  j!                  t#        |d|dz   z  d
|› �¬«      «       Œª t        j                  |Ž | _        |x| _        | _        t        j*                  | j&                  fi |¤Ž| _        t/        |	¬«      | _        |	rt        j2                  d«      nt        j4                  «       | _        |dkD  rt9        | j&                  |fi |¤Žnt        j4                  «       | _        | j=                  | j>                  «       y c c}w )Nr$   ra   FrC   é   r   )r   r    r!   r   r(   zstages.)Únum_chsÚ	reductionÚmodule©Ú	pool_type) r*   r+   rl   rm   rj   Úgrad_checkpointingÚfeature_infor-   Ú
Sequentialr   Ústemr   ÚsumÚrangeÚlenrB   ÚappendÚdictÚstagesÚnum_featuresÚhead_hidden_sizer/   Únormr   rn   ÚFlattenrR   Úflattenr   ÚheadÚapplyÚ_init_weights)r4   rh   ri   rF   rj   rk   rH   rl   rm   rn   ro   r%   r&   r5   r6   Ústem_chsÚprev_chsÚdprr€   ÚcurÚi_layerÚ	embed_dimÚdown_samplerÚiÚblocksr7   s                            €r8   r+   zStarNet.__init__R   s)  ø€ ð  ¨Ñ/ˆÜ‰ÑÔØ Ò"Ð"Ð"Ø&ˆÔØ ˆŒØ"ˆŒØ"'ˆÔØˆÔØˆô —M‘MÜ�8˜XÐP°1¸QÈÑPÈRÑPÙ‹Kó
ˆŒ	ð ˆô (¨¼¸F»ÓDˆØˆØˆÜœS ›[Ó)ò 	]ˆGØ  1¨¡<Ñ/ˆIÜ! (¨I°qÐTÀÈAÑTÐQSÑTˆLÜZ_Ð`fÐgnÑ`oÓZpÖqÐUV”e˜I y°#°c¸A±g±,À	ÑPÈRÓPÐqˆFÐqØ�6˜'‘?Ñ"ˆCØ ˆHØ�M‰Mœ"Ÿ-™-¨Ð>°vÒ>Ô?Ø×Ñ×$Ñ$¤TØ$°°G¸A±I±ÈÐQXÐPYÐGZô&\õ ]ð	]ô —m‘m VÐ,ˆŒà4<Ð<ˆÔ˜DÔ1Ü—N‘N 4×#4Ñ#4Ñ;¸Ñ;ˆŒ	Ü/¸+ÔFˆÔÙ(3”r—z‘z !”}¼¿¹»ˆŒØDOÐRSÂO”F˜4×,Ñ,¨kÑ@¸RÒ@ÔY[×YdÑYdÓYfˆŒ	Ø�
‰
�4×%Ñ%Õ&ùò rs   ÃH&c                 ó
  — t        |t        j                  t        j                  f«      rjt	        |j
                  d¬«       t        |t        j                  «      r8|j                  �+t        j                  j                  |j                  d«       y y y t        |t        j                  «      rUt        j                  j                  |j                  d«       t        j                  j                  |j
                  d«       y y )Ng{®Gáz”?)Ústdr   g      ð?)
Ú
isinstancer-   r   r.   r   r2   r3   r0   r1   r/   )r4   Úms     r8   rˆ   zStarNet._init_weights‰   s¡   € Ü�aœ"Ÿ)™)¤R§Y¡YÐ/Ô0Ü˜!Ÿ(™(¨Õ,Ü˜!œRŸY™YÔ'¨A¯F©FÐ,>Ü—‘×!Ñ! !§&¡&¨!Õ,ð -?Ð'ä˜œ2Ÿ>™>Ô*Ü�G‰G×Ñ˜aŸf™f aÔ(Ü�G‰G×Ñ˜aŸh™h¨Õ,ð +r9   rT   c                 ó   — t        «       S rV   )Úset©r4   s    r8   Úno_weight_decayzStarNet.no_weight_decay’   s	   € ä‹uˆr9   Úcoarsec                 ó0   — t        d|rdndd fdg¬«      }|S )Nz
^stem\.\d+z^stages\.(\d+)z^stages\.(\d+)\.(\d+))rƒ   )iŸ† )rz   r‘   )r   )r4   rš   Úmatchers      r8   Úgroup_matcherzStarNet.group_matcher–   s,   € äØá&,Ñ"Ð2JÈDÐQØ#ðô
ˆð ˆr9   Úenablec                 ó   — || _         y rV   )rw   )r4   rž   s     r8   Úset_grad_checkpointingzStarNet.set_grad_checkpointing¡   s
   € à"(ˆÕr9   c                 ó   — | j                   S rV   )r†   r˜   s    r8   Úget_classifierzStarNet.get_classifier¥   s   € à�y‰yÐr9   c           	      ó"  — || _         |�At        |¬«      | _        |rt        j                  d«      nt        j
                  «       | _        |dkD  r§t        | j                  |t        | j                  t        j                  «      r | j                  j                  j                  nd t        | j                  t        j                  «      r | j                  j                  j                  nd ¬«      | _
        y t        j
                  «       | _
        y )Nru   r   r   r$   )rl   r   rn   r-   r„   rR   r…   r   r‚   r”   r†   r2   r%   r&   )r4   rl   rn   s      r8   Úreset_classifierzStarNet.reset_classifier©   s¸   € Ø&ˆÔØÐ"ä3¸kÔJˆDÔÙ,7œ2Ÿ:™: aœ=¼R¿[¹[»]ˆDŒLð
 ˜1Š_ô	 Ø×!Ñ! ;Ü.8¸¿¹ÄBÇIÁIÔ.N�4—9‘9×#Ñ#×*Ò*ÐTXÜ,6°t·y±yÄ"Ç)Á)Ô,L�$—)‘)×"Ñ"×(Ò(ÐRVô
ˆ�	ô #%§+¡+£-ð	 	�	r9   rS   Úindicesrƒ   Ú
stop_earlyÚ
output_fmtÚintermediates_onlyc                 ór  — |dv sJ d«       ‚g }t        t        | j                  «      |«      \  }}	t        | j                  «      dz
  }
| j                  |«      }t        j
                  j                  «       s|s| j                  }n| j                  d|	dz    }t        |«      D ]u  \  }}| j                  r+t        j
                  j                  «       st        ||«      }n ||«      }||v sŒJ|r||
k(  r| j                  |«      }n|}|j                  |«       Œw |r|S |
k(  r| j                  |«      }||fS )aï   Forward features that returns intermediates.

        Args:
            x: Input image tensor
            indices: Take last n blocks if int, all if None, select matching indices if sequence
            norm: Apply norm layer to compatible intermediates
            stop_early: Stop iterating over blocks when last desired intermediate hit
            output_fmt: Shape of intermediate feature outputs
            intermediates_only: Only return intermediate features
        Returns:

        )ÚNCHWzOutput shape must be NCHW.r   N)r   r}   r€   rz   r^   ÚjitÚis_scriptingÚ	enumeraterw   r   rƒ   r~   )r4   rS   r¥   rƒ   r¦   r§   r¨   ÚintermediatesÚtake_indicesÚ	max_indexÚlast_idxr€   Úfeat_idxÚstageÚx_inters                  r8   Úforward_intermediateszStarNet.forward_intermediatesµ   s*  € ð* ˜YÑ&ÐDÐ(DÓDÐ&ØˆÜ"6´s¸4¿;¹;Ó7GÈÓ"QÑˆ�iÜ�t—{‘{Ó# aÑ'ˆð �I‰I�a‹LˆÜ�9‰9×!Ñ!Ô#©:Ø—[‘[‰Fà—[‘[  )¨a¡-Ð0ˆFä(¨Ó0ò 
	.‰OˆH�eØ×&Ò&¬u¯y©y×/EÑ/EÔ/GÜ" 5¨!Ó,‘á˜!“H�Ø˜<Ò'Ù˜H¨Ò0Ø"Ÿi™i¨›l‘Gà�GØ×$Ñ$ WÕ-ð
	.ñ Ø Ð à�xÒØ—	‘	˜!“ˆAà�-ÐÐr9   Ú
prune_normÚ
prune_headc                 óÖ   — t        t        | j                  «      |«      \  }}| j                  d|dz    | _        |rt        j                  «       | _        |r| j                  dd«       |S )z@ Prune layers not required for specified intermediates.
        Nr   r   Ú )r   r}   r€   r-   rR   rƒ   r¤   )r4   r¥   r¶   r·   r¯   r°   s         r8   Úprune_intermediate_layersz!StarNet.prune_intermediate_layersê   s]   € ô #7´s¸4¿;¹;Ó7GÈÓ"QÑˆ�iØ—k‘k . 9¨q¡=Ð1ˆŒÙÜŸ™›ˆDŒIÙØ×!Ñ! ! RÔ(ØÐr9   c                 óî   — | j                  |«      }| j                  r5t        j                  j	                  «       st        | j                  |«      }n| j                  |«      }| j                  |«      }|S rV   )rz   rw   r^   r«   r¬   r   r€   rƒ   ©r4   rS   s     r8   Úforward_featureszStarNet.forward_featuresú   sV   € Ø�I‰I�a‹LˆØ×"Ò"¬5¯9©9×+AÑ+AÔ+CÜ˜tŸ{™{¨AÓ.‰Aà—‘˜A“ˆAØ�I‰I�a‹LˆØˆr9   Ú
pre_logitsc                 óæ   — | j                  |«      }| j                  |«      }| j                  dkD  r,t        j                  || j                  | j
                  ¬«      }|r|S | j                  |«      S )NrD   )ÚpÚtraining)rn   r…   rj   ÚFÚdropoutrÁ   r†   )r4   rS   r¾   s      r8   Úforward_headzStarNet.forward_head  sZ   € Ø×Ñ˜QÓˆØ�L‰L˜‹OˆØ�>‰>˜BÒÜ—	‘	˜!˜tŸ~™~¸¿¹ÔFˆAÙˆqÐ0 D§I¡I¨a£LÐ0r9   c                 óJ   — | j                  |«      }| j                  |«      }|S rV   )r½   rÄ   r¼   s     r8   rZ   zStarNet.forward
  s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆr9   ©F)TrV   )NFFrª   F)r   FT)#r:   r;   r<   r-   r[   r=   r   r\   r
   r]   Ústrr+   rˆ   r^   r«   Úignorer   r™   r>   r   r   r�   r    r¢   r   r¤   r_   r	   r   rµ   rº   r½   rÄ   rZ   r?   r@   s   @r8   r   r   Q   s�  ø„ ð Ú -ØØ!Ø$&Ø)+¯©Ø#ØØ$Ø!#ØØñ5'àð5'ð ˜‘Ið5'ð ð	5'ð
 ð5'ð "ð5'ð ˜BŸI™I‘ð5'ð ð5'ð ð5'ð ð5'ð õ5'òn-ð ‡Y�Y×Ñð ò ó ðð ‡Y�Y×Ññ Dð °T¸#¸s¸(±^ò ó ðð ‡Y�Y×Ññ)¨Tò )ó ð)ð ‡Y�Y×Ñð §	¡	ò ó ðñ
0¨Cð 
0¸hÀs¹mó 
0ð 8<ØØ$Ø$Ø',ñ3 à�|‰|ð3 ð ˜e C¨¨c© NÑ3Ñ4ð3 ð ð	3 ð
 ð3 ð ð3 ð !%ð3 ð 
ˆt�E—L‘LÑ! 5¨¯©°t¸E¿L¹LÑ7IÐ)IÑ#JÐJÑ	Kó3 ðn ./Ø$Ø#ñ	à˜3  S¡	˜>Ñ*ðð ðð ó	ð  %§,¡,ð °5·<±<ó ñ1˜eŸl™lð 1¸ð 1ÈÏÉó 1ð˜Ÿ™ð ¨%¯,©,÷ r9   Ú
state_dictÚmodelrT   c                 ó&   — | j                  d| «      S )NrÉ   )Úget)rÉ   rÊ   s     r8   Úcheckpoint_filter_fnrÍ     s   € Ø�>‰>˜,¨
Ó3Ð3r9   Úurlr5   c                 ó8   — | dddddt         t        dddd	d
ddœ|¥S )Nrf   )rC   éà   rÐ   )rJ   rJ   g      ì?Úbicubiczstem.0.convr†   zarXiv:2403.19967zRewrite the Starsz*https://github.com/ma-xu/Rewrite-the-Starsz
apache-2.0)rÎ   rl   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanr“   Ú
first_convÚ
classifierÚ	paper_idsÚ
paper_nameÚ
origin_urlÚlicenser   )rÎ   r5   s     r8   Ú_cfgrÝ     s;   € à 4°}ÐSYØ¨IÜ%Ô.BØ#°6Ø'Ø)ØBÈ|ñ	ð ð	ð 	r9   ztimm/)Ú	hf_hub_id)zstarnet_s1.in1kzstarnet_s2.in1kzstarnet_s3.in1kzstarnet_s4.in1kzstarnet_s050.untrainedzstarnet_s100.untrainedzstarnet_s150.untrainedÚvariantÚ
pretrainedc                 óN   — t        t        | |ft        t        dd¬«      dœ|¤Ž}|S )N)r   r   rq   rC   T)Úout_indicesÚflatten_sequential)Úpretrained_filter_fnÚfeature_cfg)r   r   rÍ   r   )rß   rà   r5   rÊ   s       r8   Ú_create_starnetræ   8  s6   € Ü Ü�˜*ðä1Ü \ÀdÔKñð ñ	€Eð €Lr9   c           	      óN   — t        dg d¢¬«      }t        dd| it        |fi |¤Ž¤ŽS )Né   )rq   rq   é   rC   ©rh   ri   rà   )Ú
starnet_s1©r   ræ   ©rà   r5   Ú
model_argss      r8   rë   rë   B  ó,   € ä˜rª,Ô7€JÜÑ]°JÐ]Ä$ÀzÑB\ÐU[ÑB\Ñ]Ð]r9   c           	      óN   — t        dg d¢¬«      }t        dd| it        |fi |¤Ž¤ŽS )Nra   )r   rq   é   rq   rê   rà   )Ú
starnet_s2rì   rí   s      r8   rò   rò   H  rï   r9   c           	      óN   — t        dg d¢¬«      }t        dd| it        |fi |¤Ž¤ŽS )Nra   )rq   rq   ré   re   rê   rà   )Ú
starnet_s3rì   rí   s      r8   rô   rô   N  rï   r9   c           	      óN   — t        dg d¢¬«      }t        dd| it        |fi |¤Ž¤ŽS )Nra   rb   rê   rà   )Ú
starnet_s4rì   rí   s      r8   rö   rö   T  s,   € ä˜rª-Ô8€JÜÑ]°JÐ]Ä$ÀzÑB\ÐU[ÑB\Ñ]Ð]r9   c           	      óP   — t        dg d¢d¬«      }t        dd| it        |fi |¤Ž¤ŽS )Né   )r   r   rC   r   rC   ©rh   ri   rF   rà   )Ústarnet_s050rì   rí   s      r8   rú   rú   [  ó.   € ä˜rª,À!ÔD€JÜÑ_°jÐ_ÄDÈÑD^ÐW]ÑD^Ñ_Ð_r9   c           	      óP   — t        dg d¢d¬«      }t        dd| it        |fi |¤Ž¤ŽS )Né   )r   rq   re   r   re   rù   rà   )Ústarnet_s100rì   rí   s      r8   rþ   rþ   a  rû   r9   c           	      óP   — t        dg d¢d¬«      }t        dd| it        |fi |¤Ž¤ŽS )Nrè   )r   rq   re   rq   rC   rù   rà   )Ústarnet_s150rì   rí   s      r8   r   r   g  rû   r9   )r¹   rÆ   )7Ú__doc__Útypingr   r   r   r   r   r   r	   r
   r^   Útorch.nnr-   Útorch.nn.functionalÚ
functionalrÂ   Ú	timm.datar   r   Útimm.layersr   r   r   r   r   r   Ú_builderr   Ú	_featuresr   Ú_manipulater   Ú	_registryr   r   Ú__all__ry   r   r]   rB   r   rÇ   r_   rÍ   rÝ   Údefault_cfgsr>   ræ   rë   rò   rô   rö   rú   rþ   r   © r9   r8   ú<module>r     s‰  ðñ
÷ F× EÓ Eã Ý ß Ð ç Aß s× sÝ *Ý +Ý 'ß <àˆ+€ô/ˆR�]‰]ô /ô.ˆB�I‰Iô ô<|ˆb�i‰iô |ð~4 T¨#¨u¯|©|Ð*;Ñ%<ð 4ÀRÇYÁYð 4ÐSWÐX[Ð]b×]iÑ]iÐXiÑSjó 4ñ
ˆcð 
 #ð 
¨$¨s°C¨x©.ó 
ñ %ÙØôñ Øôñ Øôñ Øôñ #›fÙ"›fÙ"›fñ'&ó €ñ.˜Sð ¨dð Àcð Ègó ð ñ^˜4ð ^°3ð ^¸7ò ^ó ð^ð
 ñ^˜4ð ^°3ð ^¸7ò ^ó ð^ð
 ñ^˜4ð ^°3ð ^¸7ò ^ó ð^ð
 ñ^˜4ð ^°3ð ^¸7ò ^ó ð^ð ñ`˜Tð `°Sð `¸Wò `ó ð`ð
 ñ`˜Tð `°Sð `¸Wò `ó ð`ð
 ñ`˜Tð `°Sð `¸Wò `ó ñ`r9   