Ë
    [^(h�:  ã                   ó|  — d Z 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 ddlmZmZ  ej                   ej"                  d¬«      ZdZeD ]#  Z  ed	e› �«       e
j*                  e«      «       Œ%  ed
 e
j,                  ddd«      g¬«       ed e
j,                  ddd«      g¬«       ed e
j,                  ddd«      g¬«       ed e
j,                  ddd«      g¬«       ed e
j,                  ddd«      g¬«       ed e
j,                  ddd«      g¬«      d„ «       «       «       «       «       «       Z ed«      dej0                  fd„«       Zdej0                  fd „Zdej0                  fd!„Zdej0                  fd"„Z ed#«      dej0                  fd$„«       Z ed%«      dej0                  fd&„«       Z ed'«      dej0                  fd(„«       Z ed)«      dej0                  fd*„«       Z  ed+«      dej0                  fd,„«       Z! ed-«      dej0                  fd.„«       Z" ed/«       e
jF                  d0d0d0d1d1«      dej0                  fd2„«       «       Z$ ed3«      dej0                  fd4„«       Z%dej0                  d5e&fd6„Z' ed7«       e
jF                  d0d8d0d0d0d0«      	 	 dKdej0                  fd9„«       «       Z( ed:«       e
jF                  d0d8d0d0d0d0«      	 	 dKdej0                  fd;„«       «       Z) ed<«       e
jF                  d0d8d0d0d0«      dLdej0                  fd=„«       «       Z* ed>«       e
jF                  d0d8d0d0d0d0«      	 	 dKdej0                  fd?„«       «       Z+ ed@«       e
jF                  d0d8d0d0d0«      dLdej0                  fdA„«       «       Z, edB«       e
jF                  d0d8d0d0d0d0«      	 	 dKdej0                  fdC„«       «       Z- edD«      	 dLdej0                  fdE„«       Z. edF«       e
jF                  d0dGd8d0d0d0d0«      	 	 dKdej0                  fdH„«       «       Z/ edI«      dej0                  fdJ„«       Z0y)Ma›  
Note [ONNX operators that are added/updated from opset 8 to opset 9]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
New operators:
    Compress
    ConstantOfShape
    EyeLike
    MaxUnpool
    OneHot
    Sinh
    Cosh
    Asinh
    Acosh
    Atanh
    Shrink
    IsNaN
    Sign
    Erf
    Scatter
    Where
    NonZero
    TfIdfVectorizer
    MeanVarianceNormalization

Updated operators:
    BatchNormalization: removed spatial attribute.
    Greater, Less, Constant, MatMul, PRelu, Gemm, Flatten: more data types{integers} supported.
    Cast: more data types{string} supported.
    Upsample: moved scales from attribute to input.
    Scan
é    N)Ú_onnx)Ú_type_utilsÚerrorsÚsymbolic_helperÚsymbolic_opset9)Ú	jit_utilsÚregistrationé   )Úopset)ÚnonzeroÚwhereÚscatterÚscatter_addÚerfÚsignÚisnanÚgatherÚarangeÚmasked_fillÚ
index_fillÚ
index_copyÚrepeat_interleaveÚanyÚallzaten::zaten::upsample_nearest1dÚupsample_nearest1dé   Únearest)Údecoratezaten::upsample_nearest2dÚupsample_nearest2dé   zaten::upsample_nearest3dÚupsample_nearest3dé   zaten::upsample_linear1dÚupsample_linear1dÚlinearzaten::upsample_bilinear2dÚupsample_bilinear2dzaten::upsample_trilinear3dÚupsample_trilinear3dc                 ó   ‡ ‡‡— ˆˆˆ fd„}|S )Nc           	      ó6  •— t        j                  | ‰|«      \  }}t        j                  ‰«       t        j                  |«      }|rt        j                  ‰	d|«      S t        j
                  |d«      }t        j                  |«      rt        j                  ‰	d«      S |€_t        d‰«      D �cg c]J  }|dk  rdn@t        |‰|z
      «      t        |j                  «       j                  «       ‰|z
      «      z  ‘ŒL }}| j                  d|‰|¬«      S c c}w )	Núalign_corners == TrueÚisz%torch._C.Value (output_size) indexingr   é   ç      ð?ÚUpsample©Úmode_sÚscales_f)r   Ú_get_interpolate_attributesÚ_interpolate_warningÚ_maybe_get_scalarÚ_unimplementedÚ_maybe_get_constÚ	_is_valueÚrangeÚfloatÚtypeÚsizesÚop)
ÚgÚinputÚoutput_sizeÚargsÚscalesÚalign_cornersÚiÚdimÚinterpolate_modeÚnames
          €€€úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/onnx/symbolic_opset8.pyÚsymbolic_fnz!_interpolate.<locals>.symbolic_fn^   s)  ø€ Ü /× KÑ KØÐ ó!
Ñˆ�ô 	×,Ñ,Ð-=Ô>Ü'×9Ñ9¸-ÓHˆÙÜ"×1Ñ1°$Ð8OÐQVÓWÐWÜ%×6Ñ6°{ÀDÓIˆÜ×$Ñ$ [Ô1Ü"×1Ñ1ØÐ=óð ð ˆ>ô ˜q #›öð
 ð �q’5ñ ä˜;¨¨q© zÑ2Ó3Ü˜Ÿ
™
›×*Ñ*Ó,¨s°Q©w¨ZÑ8Ó9ñ:ñ:ðˆFð ð �t‰t�J Ð.>ÈˆtÓPÐPùòs   Â0AD© )rE   rC   rD   rG   s   ``` rF   Ú_interpolaterI   E   s   ú€ ö2Qð. Ðó    zaten::__interpolater<   c                 óì  — t        j                  |d«      }t        j                  |«      s|rt        j                  dd«      S t        j                  |«      s+t        j                  |«      rt        j                  dd«      S t        j                  |«      s+t        j                  |«      rt        j                  dd«      S t        j
                  | |||||«      \  }}| j                  d|||¬«      S )NÚbÚinterpolater)   zdynamic scales in opset 8zdynamic size in opset 8r-   r.   )r   r5   Ú_is_noner4   r6   Ú _interpolate_get_scales_and_moder;   )	r<   r=   ÚsizeÚscale_factorÚmoderA   Úrecompute_scale_factorÚ	antialiasr@   s	            rF   Ú__interpolaterU   x   sÞ   € ô $×4Ñ4°]ÀCÓH€MÜ×#Ñ# MÔ2±}Ü×-Ñ-¨mÐ=TÓUÐUä×#Ñ# LÔ1´o×6OÑ6OØô7ô ×-Ñ-ØÐ6ó
ð 	
ô ×#Ñ# DÔ)¬o×.GÑ.GÈÔ.MÜ×-Ñ-¨mÐ=VÓWÐWä"×CÑCØ	ˆ5�$˜ d¨Mó�L€FˆDð �4‰4�
˜E¨$¸ˆ4Ó@Ð@rJ   c                 óè  ‡ — t         j                  j                  t         j                  j                  t         j                  j                  h}d }t         j                  j                  |d   t         j                  j                  «      }|t         j                  j                  k7  r0|}||vr%|j                  «       }t        ˆ fd„|D «       «      }nd|z   S t        j                  d«       |f|z   S )Nr   c              3   óv   •K  — | ]0  }‰j                  d |t        j                  j                  ¬«      –— Œ2 y­w)ÚCast©Úto_iN)r;   Ú_C_onnxÚTensorProtoDataTypeÚFLOAT)Ú.0Úargr<   s     €rF   ú	<genexpr>z-_try_cast_integer_to_float.<locals>.<genexpr>ª   s4   øè ø€ ò àð —‘�V˜S¤w×'BÑ'B×'HÑ'H�×Iñùs   ƒ69©NzºOnly floating datatype is supported for these operators: {Greater, Less, MatMul, PRelu, Gemm, Flatten}. This might cause the onnx model to be incorrect, if inputs have integer datatypes.)r   ÚJitScalarTypeÚHALFr]   ÚDOUBLEÚ
from_valueÚ	UNDEFINEDÚscalar_nameÚtupleÚwarningsÚwarn)r<   r?   Úfloating_scalar_typesÚold_typeÚ	arg0_types   `    rF   Ú_try_cast_integer_to_floatrn   š   sâ   ø€ ä×!Ñ!×&Ñ&Ü×!Ñ!×'Ñ'Ü×!Ñ!×(Ñ(ðÐð
 €Hô ×)Ñ)×4Ñ4ØˆQ‰”×*Ñ*×4Ñ4ó€Ið ”K×-Ñ-×7Ñ7Ò7ØˆØÐ0Ñ0Ø×+Ñ+Ó-ˆHÜó àôó ‰Dð
 ˜T‘>Ð!ä�‰ðPô	
ð
 ˆ;˜ÑÐrJ   c                 ó@   — |€|S  t        t        d|› �«      | |d«      S )NÚ_cast_F)ÚgetattrÚopset9)r<   r=   Úto_types      rF   Ú_cast_to_typert   ¹   s+   € Ø€ØˆØ.Œ7”6˜V G 9Ð-Ó.¨q°%¸Ó?Ð?rJ   c                 ó    — t        j                  |«      }t        j                  ||«      }t        | ||«      \  }}}| j	                  |||«      S ra   )r   r3   Ú_if_scalar_type_asrn   r;   )r<   r=   ÚotherÚop_nameÚ_s        rF   Ú_comparison_operatorrz   ¿   sK   € Ü×-Ñ-¨eÓ4€EÜ×.Ñ.¨u°eÓ<€EÜ0°°E¸5ÓA�O€A€uˆeØ�4‰4�˜ Ó&Ð&rJ   zaten::gtc                 ó   — t        | ||d«      S )NÚGreater©rz   ©r<   r=   rw   s      rF   Úgtr   È   s   € ä  5¨%°Ó;Ð;rJ   zaten::ltc                 ó   — t        | ||d«      S )NÚLessr}   r~   s      rF   Últr‚   Í   s   € ä  5¨%°Ó8Ð8rJ   z	aten::bmmc                 ó°   — t        j                  |«      r/t        | ||«      \  }}}t        | | j	                  d||«      |«      S | j	                  d||«      S )NÚMatMul)r   Ú_try_get_scalar_typern   rt   r;   )r<   Úselfrw   rl   s       rF   Úbmmr‡   Ò   sT   € ä×+Ñ+¨DÔ1Ü :¸1¸dÀEÓ JÑˆ�$˜Ü˜Q §¡ X¨t°UÓ ;¸XÓFÐFà�t‰t�H˜d EÓ*Ð*rJ   zaten::matmulc                 ó   — t        | ||«      S ra   )r‡   )r<   r†   rw   s      rF   Úmatmulr‰   Û   s   € äˆq�$˜ÓÐrJ   zaten::preluc                 ó®  — t        j                  |«      }t        j                  |«      }|�0|dkD  r+| j                  d|t	        t        d|dz
  «      «      ¬«      }n#|dk(  r|dgk(  rt        j                  | |dg«      }t        j                  |«      r/t        | ||«      \  }}}t        | | j                  d||«      |«      S | j                  d||«      S )Nr+   Ú	Unsqueezeé   )Úaxes_ir   ÚPRelu)
r   Ú_get_tensor_rankÚ_get_tensor_sizesr;   Úlistr7   Ú_squeeze_helperr…   rn   rt   )r<   r†   ÚweightÚ	self_rankÚweight_sizesrl   s         rF   Úprelur–   à   sÊ   € ä×0Ñ0°Ó6€IÜ"×4Ñ4°VÓ<€LØÐ ¨Q¢Ø—‘�k 6´$´u¸QÀ	ÈAÁÓ7NÓ2O�ÓP‰Ø	�aŠ˜L¨Q¨CÒ/ä ×0Ñ0°°F¸Q¸CÓ@ˆÜ×+Ñ+¨DÔ1Ü!;¸A¸tÀVÓ!LÑˆ�$˜Ü˜Q §¡ W¨d°FÓ ;¸XÓFÐFà�t‰t�G˜T 6Ó*Ð*rJ   zaten::mmc                 óŽ  — t        j                  ||«      }|€t        j                  d|«      ‚| j	                  dt        j                  dg|j                  «       ¬«      ¬«      }t        j                  |«      r5t        | |||«      \  }}}}t        | | j	                  d|||dd¬	«      |«      S | j	                  d|||dd¬	«      S )
Nz/mm can only operate on tensors with known typesÚConstantr   )Údtype©Úvalue_tÚGemmg        r,   ©Úbeta_fÚalpha_f)
r   r…   r   ÚSymbolicValueErrorr;   ÚtorchÚtensorr™   rn   rt   )r<   r†   rw   Úscalar_typeÚzero_constantrl   s         rF   Úmmr¥   ð   sÛ   € ô "×6Ñ6°t¸UÓC€KØÐÜ×'Ñ'Ø=¸tó
ð 	
ð —D‘DØÜ—‘˜a˜S¨×(9Ñ(9Ó(;Ô<ð ó €Mô
 ×+Ñ+¨DÔ1Ü/IØˆt�U˜Mó0
Ñ,ˆ�$˜˜}ô ØØ�D‰D�˜˜u m¸CÈˆDÓMØó
ð 	
ð
 �4‰4�˜˜e ]¸3Èˆ4ÓLÐLrJ   zaten::addmmÚvÚtc                 ó\  — t        j                  |«      r[t        | |||«      \  }}}}t        | | j	                  d|||t        j
                  |«      t        j
                  |«      ¬«      |«      S | j	                  d|||t        j
                  |«      t        j
                  |«      ¬«      S )Nrœ   r�   )r   r…   rn   rt   r;   Ú_scalar)r<   r†   Úmat1Úmat2ÚbetaÚalpharl   s          rF   Úaddmmr®   
  s¹   € ô ×+Ñ+¨DÔ1Ü%?ÀÀ4ÈÈtÓ%TÑ"ˆ�$˜˜dÜØØ�D‰DØØØØÜ&×.Ñ.¨tÓ4Ü'×/Ñ/°Ó6ð ó ð ó
ð 	
ð �t‰tØØØØÜ"×*Ñ*¨4Ó0Ü#×+Ñ+¨EÓ2ð ó 
ð 	
rJ   zaten::flattenc           	      óz  — t        j                  |dd«      }t        j                  |dd«      }|j                  «       j                  «       }|dk  r||z   }|dk(  r_||dz
  k(  rWt        j                  |«      r.t        | |«      \  }}t        | | j                  d||¬«      |«      S | j                  d||¬«      S |dk(  re||dz
  k(  r]t        j                  |«      r1t        | |«      \  }}t        | | j                  d||dz   ¬«      |«      S | j                  d||dz   ¬«      S t        j                  | |||«      S )	NrB   Ú	start_dimÚend_dimr   rŒ   ÚFlatten)Úaxis_ir+   )
r   Ú
_get_constr9   rC   r…   rn   rt   r;   rr   Úflatten)r<   r=   r°   r±   Ústart_dim_iÚ	end_dim_irC   rl   s           rF   rµ   rµ   &  sA  € ä!×,Ñ,¨Y¸¸[ÓI€KÜ×*Ñ*¨7°C¸ÓC€Ià
�*‰*‹,×
Ñ
Ó
€CØ�1‚}Ø˜)‘Oˆ	à�aÒ˜I¨¨q©Ò0Ü×/Ñ/°Ô6Ü8¸¸EÓB‰OˆH�eÜ Ø�1—4‘4˜	 5°�4Ó=¸xóð ð —4‘4˜	 5°�4Ó=Ð=Ø�aÒ˜I¨¨q©Ò0Ü×/Ñ/°Ô6Ü8¸¸EÓB‰OˆH�eÜ Ø�1—4‘4˜	 5°¸Q±�4Ó?Àóð ð —4‘4˜	 5°¸Q±�4Ó?Ð?ä�>‰>˜!˜U I¨wÓ7Ð7rJ   r™   c                 óž  — |€t         j                  j                  }nt        j                  |«      }|j                  «       j                  s^| j                  d|t         j                  j                  j                  «       d|¬«      }| j                  d||j                  «       ¬«      S | j                  d||j                  «       d|¬«      S )NÚConstantFillrŒ   )Údtype_iÚinput_as_shape_iÚvalue_frX   rY   )r   rb   r]   r™   Úis_floating_pointr;   Ú	onnx_type)r<   r:   r™   Úconst_valuer£   Úresults         rF   Ú_constant_fillrÁ   C  s¿   € Ø€}Ü!×/Ñ/×5Ñ5‰ä!×/Ñ/°Ó6ˆØ×ÑÓ×0Ò0Ø—‘ØØÜ×-Ñ-×3Ñ3×=Ñ=Ó?ØØð ó 
ˆð �t‰t�F˜F¨×)>Ñ)>Ó)@ˆtÓAÐAà�t‰tØØØ×)Ñ)Ó+ØØð ó 
ð 	
rJ   zaten::emptyrB   c                 ó"   — t        | |||||«      S ra   )Úzeros)r<   r:   r™   ÚlayoutÚdeviceÚ
pin_memoryÚmemory_formats          rF   ÚemptyrÈ   [  s   € ô ��E˜5 &¨&°*Ó=Ð=rJ   zaten::empty_likec                 ó"   — t        | |||||«      S ra   )Ú
zeros_like)r<   r=   r™   rÄ   rÅ   rÆ   rÇ   s          rF   Ú
empty_likerË   i  s   € ô �a˜  v¨v°zÓBÐBrJ   zaten::zerosc                 ó   — t        | ||d«      S )Nr   ©rÁ   ©r<   r:   r™   rÄ   rÅ   rÆ   s         rF   rÃ   rÃ   w  s   € ô ˜!˜U E¨1Ó-Ð-rJ   zaten::zeros_likec                 óB   — | j                  d|«      }t        | ||d«      S )NÚShaper   ©r;   rÁ   ©r<   r=   r™   rÄ   rÅ   rÆ   rÇ   Úshapes           rF   rÊ   rÊ   ~  ó%   € ð �D‰D�˜%Ó €EÜ˜!˜U E¨1Ó-Ð-rJ   z
aten::onesc                 ó   — t        | ||d«      S )NrŒ   rÍ   rÎ   s         rF   ÚonesrÖ   �  s   € ô ˜!˜U E¨1Ó-Ð-rJ   zaten::ones_likec                 óB   — | j                  d|«      }t        | ||d«      S )NrÐ   rŒ   rÑ   rÒ   s           rF   Ú	ones_likerØ   “  rÔ   rJ   z
aten::fullc                 ó8  — t        j                  |d«      }t        j                  |«      rKt        | ||||«      }t	        j
                  | ||| j                  dt        j                  d«      ¬«      «      S t        j                  |dd«      }t        | |||«      S )Nr§   r˜   rŒ   rš   rB   r™   )r   r5   r6   rÃ   rr   Úaddr;   r¡   r¢   r´   rÁ   )	r<   r:   Úvaluer™   rÄ   rÅ   rÆ   r¿   Útmps	            rF   ÚfullrÝ   ¢  s…   € ô "×2Ñ2°5¸#Ó>€KÜ× Ñ  Ô-Ü�A�u˜e V¨VÓ4ˆÜ�z‰z˜!˜S %¨¯©¨jÄ%Ç,Á,ÈqÃ/¨Ó)RÓSÐSä×*Ñ*¨5°#°wÓ?ˆÜ˜a ¨¨{Ó;Ð;rJ   zaten::full_likeÚfc                 óB   — | j                  d|«      }t        | |||«      S )NrÐ   rÑ   )	r<   r=   Ú
fill_valuer™   rÄ   rÅ   rÆ   rÇ   rÓ   s	            rF   Ú	full_likerá   ¯  s%   € ð �D‰D�˜%Ó €EÜ˜!˜U E¨:Ó6Ð6rJ   zaten::repeatc                 óN  — t        j                  |«      s&| j                  dt        j                  |«      ¬«      }t        j
                  |«      rt        t        j                  |«      «      }n!t        j                  |d«      }t        |«      }|j                  «       rs|j                  «       j                  «       }|t        |«      z
  }|dkD  rBt        j                  | || j                  dt        j                  dg|z  |z   «      ¬«      «      }| j                  d||«      S )Nr˜   rš   r*   r   rŒ   ÚTile)r   r6   r;   r¡   Ú
LongTensorÚ_is_packed_listÚlenÚ_unpack_listr5   ÚisCompleteTensorr9   r:   rr   Úviewr¢   )r<   r†   ÚrepeatsÚrepeat_size_lenÚconst_repeatsr:   Ú	diff_dimss          rF   Úrepeatrî   ¿  sí   € ä×$Ñ$ WÔ-Ø—$‘$�z¬5×+;Ñ+;¸GÓ+D�$ÓEˆÜ×&Ñ& wÔ/Üœo×:Ñ:¸7ÓCÓD‰ä'×8Ñ8¸À$ÓGˆÜ˜mÓ,ˆØ×ÑÔØ—	‘	“×!Ñ!Ó#ˆØ#¤c¨%£jÑ0ˆ	Ø�qŠ=Ü—;‘;Ø�4˜Ÿ™˜j´%·,±,À¸sÀY¹ÐQVÑ?VÓ2W˜ÓXóˆDð �4‰4�˜˜gÓ&Ð&rJ   )FN)F)1Ú__doc__Ú	functoolsri   r¡   Útorch._Cr   r[   Ú
torch.onnxr   r   r   r   rr   Útorch.onnx._internalr   r	   ÚpartialÚonnx_symbolicÚ_onnx_symbolicÚblock_listed_operatorsÚblock_listed_opÚ_block_list_in_opsetÚ_apply_paramsrI   ÚGraphContextrU   rn   rt   rz   r   r‚   r‡   r‰   r–   r¥   Ú
parse_argsr®   rµ   ÚintrÁ   rÈ   rË   rÃ   rÊ   rÖ   rØ   rÝ   rá   rî   rH   rJ   rF   ú<module>rþ      s¶  ðñó@ Û ã Ý %ß VÓ Vß 8ð #�×"Ñ" <×#=Ñ#=ÀQÔG€ðÐ ð$ .ò €OØ.�N�V˜OÐ,Ð-Ó.Ø,ˆ×,Ñ,¨_Ó=õðñ ØØ+ˆo×+Ñ+Ð,@À!ÀYÓOÐPôñ ØØ+ˆo×+Ñ+Ð,@À!ÀYÓOÐPôñ ØØ+ˆo×+Ñ+Ð,@À!ÀYÓOÐPôñ ØØ+ˆo×+Ñ+Ð,?ÀÀHÓMÐNôñ ØØ+ˆo×+Ñ+Ð,AÀ1ÀhÓOÐPôñ Ø Ø+ˆo×+Ñ+Ð,BÀAÀxÓPÐQôñó	ó	ó	ó	ó	ó	ð0ñ6 Ð%Ó&ðAØ×ÑòAó 'ðAðB )×"8Ñ"8ó ð>@�Y×+Ñ+ó @ð'˜I×2Ñ2ó 'ñ �
Óð<ˆ)×
 Ñ
 ò <ó ð<ñ �
Óð9ˆ)×
 Ñ
 ò 9ó ð9ñ �Óð+ˆ9×!Ñ!ò +ó ð+ñ �Óðˆi×$Ñ$ò ó  ðñ �Óð+ˆY×#Ñ#ò +ó ð+ñ �
ÓðMˆ)×
 Ñ
 ò Mó ðMñ2 �ÓØ€×Ñ˜C  c¨3°Ó4ð
ˆY×#Ñ#ò 
ó 5ó ð
ñ4 �Ó ð8ˆy×%Ñ%ò 8ó !ð8ð8
�i×,Ñ,ð 
¸Có 
ñ0 �ÓØ€×Ñ˜C  c¨3°°SÓ9ð Øñ	>Ø×Ñò	>ó :ó ð	>ñ Ð"Ó#Ø€×Ñ˜C  c¨3°°SÓ9ð Øñ	CØ×Ñò	Có :ó $ð	Cñ �ÓØ€×Ñ˜C  c¨3°Ó4ñ.ˆY×#Ñ#ò .ó 5ó ð.ñ
 Ð"Ó#Ø€×Ñ˜C  c¨3°°SÓ9ð Øñ
.Ø×Ñò
.ó :ó $ð
.ñ �ÓØ€×Ñ˜C  c¨3°Ó4ñ.ˆI×"Ñ"ò .ó 5ó ð.ñ Ð!Ó"Ø€×Ñ˜C  c¨3°°SÓ9ð Øñ
.Ø×Ñò
.ó :ó #ð
.ñ �ÓàOTñ	<Ø×Ñò	<ó ð	<ñ Ð!Ó"Ø€×Ñ˜C  c¨3°°S¸#Ó>ð Øñ7Ø×Ñò7ó ?ó #ð7ñ �Óð'ˆi×$Ñ$ò 'ó  ñ'rJ   