+
     °³jz  ã                   ó¼  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht ^ RIHt ^ RIHt ^ RIHtHt ^ RI	Ht ^ RIt^ RIt^RIHtHt ^RIHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtCHDtDHEtEHFtF R	 tG]G! 4       w  tHtItJR
 R ltK]K! ]IRR7      tLRfR ltM]M! RRR7      tNR tOR tPR tQR tRR tSR tTR tUR tVR tWR tXR tYR tZR t[R t\R  t]R! t^R" t_R# t`R$ taR% tbR& tcR' tdR( teR) tfR* tgR+ thR, tiR- tjR. tkR/ tlR0 tmR1 tnR2 toR3 tpR4 tqR5 trR6 tsR7 ttR8 tuRgR9 ltvR: twR; txR< tyR= tzR> t{R? t|R@ t}RA t~RB tRC t€RD t�RE t‚RF tƒRG t„RH t…RI t†]‡! ]D! 4       ]8! 4       ]?! 4       ]7! 4       .4      ;'       d    ] ! 4       '       * tˆRJ t‰RK tŠRL t‹ ! RM RN]	EP                  4      t� ! RO RP]	EP                  4      tŽ ! RQ RR]	EP                  4      t�RS t� ! RT RU4      t‘RV t’RhRW RX llt“RiRY RZ llt”R[ t•R\ t– ! R] R^]—4      t˜RjR_ R` llt™Ra Rb ltš]RkRc Rd ll4       t›Re tœR# )lé    N)Úcontextmanager)Úpartial)ÚPath)ÚOptionalÚUnion)Úmock)ÚAcceleratorStateÚGradientState)-Úcheck_cuda_fp8_capabilityÚcompare_versionsÚgatherÚis_aim_availableÚis_bnb_availableÚis_clearml_availableÚis_comet_ml_availableÚis_cuda_availableÚis_datasets_availableÚis_deepspeed_availableÚis_dvclive_availableÚis_fp8_availableÚis_fp16_availableÚis_habana_gaudi1Úis_hpu_availableÚis_import_timer_availableÚis_matplotlib_availableÚis_mlflow_availableÚis_mlu_availableÚis_mps_availableÚis_musa_availableÚis_neuron_availableÚis_npu_availableÚis_pandas_availableÚis_peft_availableÚis_pippy_availableÚis_pytest_availableÚis_schedulefree_availableÚis_sdaa_availableÚis_swanlab_availableÚis_tensorboard_availableÚis_timm_availableÚis_torch_versionÚis_torch_xla_availableÚis_torchao_availableÚ*is_torchdata_stateful_dataloader_availableÚis_torchvision_availableÚis_trackio_availableÚis_transformer_engine_availableÚ%is_transformer_engine_mxfp8_availableÚis_transformers_availableÚis_triton_availableÚis_wandb_availableÚis_xpu_availableÚstr_to_boolc                  óº  € \        4       '       d:   R \        P                  P                  4       \        P                  P                  3# \        4       '       d:   R\        P                  P                  4       \        P                  P                  3# \        RR7      '       d   R^\        P                  P                  3# \        4       '       d   R^R 3# \        4       '       d:   R\        P                  P                  4       \        P                  P                  3# \        4       '       d:   R\        P                  P                  4       \        P                  P                  3# \        4       '       d:   R\        P                  P                  4       \        P                  P                  3# \        4       '       d:   R	\        P                   P                  4       \        P                   P                  3# \#        4       '       d:   R
\        P$                  P                  4       \        P$                  P                  3# \'        4       '       d:   R\        P(                  P                  4       \        P(                  P                  3# \+        4       '       d:   R\        P,                  P                  4       \        P,                  P                  3# R^R 3# )ÚxlaÚcudaz2.0)Úmin_versionÚmpsc                  ó   € ^ # ©r   © r?   ó    Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/accelerate/test_utils/testing.pyÚ<lambda>Úget_backend.<locals>.<lambda>]   ó   € ¡r@   ÚmluÚsdaaÚmusaÚnpuÚxpuÚhpuÚneuronÚcpuc                  ó   € ^ # r>   r?   r?   r@   rA   rB   rC   m   rD   r@   )r,   Útorchr:   Údevice_countÚmemory_allocatedr   r   r<   Úcurrent_allocated_memoryr   rE   r'   rF   r   rG   r!   rH   r6   rI   r   rJ   r    rK   r?   r@   rA   Úget_backendrR   U   sÜ  € Ü×ÒØ”e—j‘j×-Ñ-Ó/´·±×1LÑ1LÐLÐLÜ	×	Ò	Ø”u—z‘z×.Ñ.Ó0´%·*±*×2MÑ2MÐMÐMÜ	 e×	,Ó	,Ø�aœŸ™×;Ñ;Ð;Ð;Ü	×	Ò	Ø�a™Ð"Ð"Ü	×	Ò	Ø”e—i‘i×,Ñ,Ó.´·	±	×0JÑ0JÐJÐJÜ	×	Ò	Ø”u—z‘z×.Ñ.Ó0´%·*±*×2MÑ2MÐMÐMÜ	×	Ò	Ø”u—z‘z×.Ñ.Ó0´%·*±*×2MÑ2MÐMÐMÜ	×	Ò	Ø”e—i‘i×,Ñ,Ó.´·	±	×0JÑ0JÐJÐJÜ	×	Ò	Ø”e—i‘i×,Ñ,Ó.´·	±	×0JÑ0JÐJÐJÜ	×	Ò	Ø”e—i‘i×,Ñ,Ó.´·	±	×0JÑ0JÐJÐJÜ	×	Ò	ØœŸ™×2Ñ2Ó4´e·l±l×6SÑ6SÐSÐSà�a™Ð"Ð"r@   c                ó$   € V ^8„  d   QhR\         /# ©é   Úreturn)Úlist)Úformats   "rA   Ú__annotate__rY   s   s   € ÷ ñ ¤Dñ r@   c                 óâ   € RR.pV P                  4        FV  w  r#\        V\        4      '       d   V'       d   VP                  RV 24       K9  Vf   K?  VP                  RV RV 24       KX  	  V# )zÝ
Wraps around `kwargs` to help simplify launching from `subprocess`.

Example:
```python
# returns ['accelerate', 'launch', '--num_processes=2', '--device_count=2']
get_launch_command(num_processes=2, device_count=2)
```
Ú
accelerateÚlaunchz--Ú=)ÚitemsÚ
isinstanceÚboolÚappend)ÚkwargsÚcommandÚkÚvs   ,   rA   Úget_launch_commandrf   s   se   € ð ˜XÐ&€GØ—‘–‰ˆÜ�aœ×Ò§1Ø�N‰N˜R ˜s˜8Ö$ØŒ]Ø�N‰N˜R ˜s ! A 3˜<Ö(ñ	 ð
 €Nr@   gš™™™™™¹?)Únum_processesÚmonitor_intervalFc                 ó²   €  \         P                  V ,          p \        V4      pV#   \         d    \        R T  R24      hi ; i  \         d    Tp T# i ; i)zIf set, z must be yes or no.)ÚosÚenvironr7   Ú
ValueErrorÚKeyError)ÚkeyÚdefaultÚvalueÚ_values   &&  rA   Úparse_flag_from_envrr   ‰   sp   € ðBÜ—
‘
˜3•ˆð	BÜ  Ó'ˆFð €Møô ô 	Bä˜x¨ uÐ,?Ð@ÓAÐAð	Bûô ô à‰ð €Mðús   ‚A š' §AÁAÁAÚRUN_SLOW)ro   c                ó:   € \         P                  ! R4      ! V 4      # )z+Decorator that skips a test unconditionallyzTest was skipped)ÚunittestÚskip©Ú	test_cases   &rA   rv   rv   œ   s   € ä�=Š=Ð+Ô,¨YÓ7Ð7r@   c                óD   € \         P                  ! \        R4      ! V 4      # )z‹
Decorator marking a test as slow. Slow tests are skipped by default. Set the RUN_SLOW environment variable to a
truthy value to run them.
ztest is slow)ru   Ú
skipUnlessÚ_run_slow_testsrw   s   &rA   Úslowr|   ¡   s   € ô
 ×Òœ°Ô?À	ÓJÐJr@   c                óJ   € \         P                  ! \        R8H  R4      ! V 4      # )zm
Decorator marking a test that must be only ran on the CPU. These tests are skipped when a GPU is available.
rL   ztest requires only a CPU©ru   rz   Útorch_devicerw   s   &rA   Úrequire_cpur€   ©   s#   € ô ×Òœ|¨uÑ4Ð6PÔQÐR[Ó\Ð\r@   c                óJ   € \         P                  ! \        R8g  R4      ! V 4      # )z’
Decorator marking a test that requires a hardware accelerator backend. These tests are skipped when there are no
hardware accelerator available.
rL   útest requires a GPUr~   rw   s   &rA   Úrequire_non_cpurƒ   °   s"   € ô
 ×Òœ|¨uÑ4Ð6KÔLÈYÓWÐWr@   c                óz   € \         P                  ! \        4       ;'       d    \        4       '       * R4      ! V 4      # )z…
Decorator marking a test that requires CUDA. These tests are skipped when there are no GPU available or when
TorchXLA is available.
r‚   )ru   rz   r   r,   rw   s   &rA   Úrequire_cudar…   ¸   s1   € ô
 ×ÒÔ0Ó2×SÐSÔ;QÓ;SÔ7SÐUjÔkÐluÓvÐvr@   c                óž   € \         P                  ! \        4       ;'       d    \        4       '       * ;'       g    \	        4       R4      ! V 4      # )zŒ
Decorator marking a test that requires CUDA or HPU. These tests are skipped when there are no GPU available or when
TorchXLA is available.
ztest requires a GPU or HPU)ru   rz   r   r,   r   rw   s   &rA   Úrequire_cuda_or_hpur‡   À   sC   € ô
 ×ÒÜ	Ó	×	=Ð	=Ô%;Ó%=Ô!=×TÐTÔBRÓBTÐVrôàóð r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zf
Decorator marking a test that requires XPU. These tests are skipped when there are no XPU available.
útest requires a XPU)ru   rz   r6   rw   s   &rA   Úrequire_xpurŠ   Ê   s!   € ô ×ÒÔ/Ó1Ð3HÔIÈ)ÓTÐTr@   c                ó¦   € \        4       ;'       d    \        4       '       * p\        4       p\        P                  ! T;'       g    TR4      ! V 4      # )zŒ
Decorator marking a test that requires CUDA or XPU. These tests are skipped when there are no GPU available or when
TorchXLA is available.
ztest requires a CUDA GPU or XPU)r   r,   r6   ru   rz   )rx   Úcuda_conditionÚxpu_conditions   &  rA   Úrequire_cuda_or_xpurŽ   Ñ   sE   € ô
 'Ó(×IÐIÔ1GÓ1IÔ-I€NÜ$Ó&€MÜ×Ò˜~×>Ð>°Ð@aÔbÐclÓmÐmr@   c                óJ   € \         P                  ! \        R8g  R4      ! V 4      # )z:
Decorator marking a test that should be skipped for XPU.
rI   ztest requires a non-XPUr~   rw   s   &rA   Úrequire_non_xpur�   Û   ó#   € ô ×Òœ|¨uÑ4Ð6OÔPÐQZÓ[Ð[r@   c                óJ   € \         P                  ! \        R8g  R4      ! V 4      # )z:
Decorator marking a test that should be skipped for HPU.
rJ   ztest requires a non-HPUr~   rw   s   &rA   Úrequire_non_hpur“   â   r‘   r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zb
Decorator marking a test that requires FP16. These tests are skipped when FP16 is not supported.
ztest requires FP16 support)ru   rz   r   rw   s   &rA   Úrequire_fp16r•   é   s"   € ô
 ×ÒÔ0Ó2Ð4PÔQÐR[Ó\Ð\r@   c                ó   € \        4       p\        P                  P                  4       '       d   \	        4       '       g   Rp\        4       '       d   \        4       '       d   Rp\        P                  ! VR4      ! V 4      # )z`
Decorator marking a test that requires FP8. These tests are skipped when FP8 is not supported.
Fztest requires FP8 support)	r   rN   r:   Úis_availabler   r   r   ru   rz   )rx   Úfp8_is_availables   & rA   Úrequire_fp8r™   ñ   sa   € ô (Ó)Ðä‡z�z×Ñ× Ò Ô)B×)DÒ)DØ Ðä×ÒÔ.×0Ò0Ø Ðä×ÒÐ/Ð1LÔMÈiÓXÐXr@   c                 óP   € \         P                  ! \        R R4      R4      ! V 4      # )ú>=z2.5.0z$test requires FSDP2 (torch >= 2.5.0))ru   rz   r+   rw   s   &rA   Úrequire_fsdp2rœ     s$   € Ü×ÒÔ/°°gÓ>Ð@fÔgÐhqÓrÐrr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )za
Decorator marking a test that requires PEFT. These tests are skipped when PEFT isn't installed.
ztest requires PEFT)ru   rz   r#   rw   s   &rA   Úrequire_peftrž     s!   € ô ×ÒÔ0Ó2Ð4HÔIÈ)ÓTÐTr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zf
Decorator marking a test that requires MLU. These tests are skipped when there are no MLU available.
ztest require a MLU)ru   rz   r   rw   s   &rA   Úrequire_mlur      ó!   € ô ×ÒÔ/Ó1Ð3GÔHÈÓSÐSr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zh
Decorator marking a test that requires SDAA. These tests are skipped when there are no SDAA available.
ztest require a SDAA)ru   rz   r'   rw   s   &rA   Úrequire_sdaar£     ó!   € ô ×ÒÔ0Ó2Ð4IÔJÈ9ÓUÐUr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zh
Decorator marking a test that requires MUSA. These tests are skipped when there are no MUSA available.
ztest require a MUSA)ru   rz   r   rw   s   &rA   Úrequire_musar¦     r¤   r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zf
Decorator marking a test that requires NPU. These tests are skipped when there are no NPU available.
ztest require a NPU)ru   rz   r!   rw   s   &rA   Úrequire_npur¨   #  r¡   r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zr
Decorator marking a test that requires Neuron. These tests are skipped when there are no Neuron Cores available.
ztest require Neuron Cores)ru   rz   r    rw   s   &rA   Úrequire_neuronrª   *  s"   € ô ×ÒÔ2Ó4Ð6QÔRÐS\Ó]Ð]r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zw
Decorator marking a test that requires MPS backend. These tests are skipped when torch doesn't support `mps`
backend.
z0test requires a `mps` backend support in `torch`)ru   rz   r   rw   s   &rA   Úrequire_mpsr¬   1  s"   € ô
 ×ÒÔ/Ó1Ð3eÔfÐgpÓqÐqr@   c                óp   € \         P                  ! \        4       ;'       d    \        4       R4      ! V 4      # )zn
Decorator marking a test that requires transformers and datasets. These tests are skipped when they are not.
z$test requires the Hugging Face suite)ru   rz   r3   r   rw   s   &rA   Úrequire_huggingface_suiter®   9  s6   € ô ×ÒÜ!Ó#×?Ð?Ô(=Ó(?Ø.ôð óð r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )z]
Decorator marking a test that requires datasets. These tests are skipped when they are not.
z"test requires the datasets library)ru   rz   r   rw   s   &rA   Úrequire_datasetsr°   C  s"   € ô ×ÒÔ4Ó6Ð8\Ô]Ð^gÓhÐhr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )za
Decorator marking a test that requires transformers. These tests are skipped when they are not.
z&test requires the transformers library)ru   rz   r3   rw   s   &rA   Úrequire_transformersr²   J  ó"   € ô ×ÒÔ8Ó:Ð<dÔeÐfoÓpÐpr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zY
Decorator marking a test that requires timm. These tests are skipped when they are not.
ztest requires the timm library)ru   rz   r*   rw   s   &rA   Úrequire_timmrµ   Q  s"   € ô ×ÒÔ0Ó2Ð4TÔUÐV_Ó`Ð`r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )z`
Decorator marking a test that requires torchvision. These tests are skipped when they are not.
z%test requires the torchvision library)ru   rz   r/   rw   s   &rA   Úrequire_torchvisionr·   X  s"   € ô ×ÒÔ7Ó9Ð;bÔcÐdmÓnÐnr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )z[
Decorator marking a test that requires triton. These tests are skipped when they are not.
z test requires the triton library)ru   rz   r4   rw   s   &rA   Úrequire_tritonr¹   _  s"   € ô ×ÒÔ2Ó4Ð6XÔYÐZcÓdÐdr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )za
Decorator marking a test that requires schedulefree. These tests are skipped when they are not.
z&test requires the schedulefree library)ru   rz   r&   rw   s   &rA   Úrequire_schedulefreer»   f  r³   r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )za
Decorator marking a test that requires bitsandbytes. These tests are skipped when they are not.
z&test requires the bitsandbytes library)ru   rz   r   rw   s   &rA   Úrequire_bnbr½   m  s"   € ô ×ÒÔ/Ó1Ð3[Ô\Ð]fÓgÐgr@   c                óP   € \         P                  ! \        RR7      R4      ! V 4      # )zh
Decorator marking a test that requires TPUs. These tests are skipped when there are no TPUs available.
T)Úcheck_is_tpuztest requires TPU©ru   rz   r,   rw   s   &rA   Úrequire_tpurÁ   t  s$   € ô ×ÒÔ5À4ÔHÐJ]Ô^Ð_hÓiÐir@   c                óV   € \         P                  ! \        4       '       * R4      ! V 4      # )z|
Decorator marking a test as requiring an environment without TorchXLA. These tests are skipped when TorchXLA is
available.
z%test requires an env without TorchXLArÀ   rw   s   &rA   Úrequire_non_torch_xlarÃ   {  s%   € ô
 ×ÒÔ#9Ó#;Ô;Ð=dÔeÐfoÓpÐpr@   c                ól   € \         P                  ! \        R8g  ;'       d
    \        ^8H  R4      ! V 4      # )z¨
Decorator marking a test that requires a single device. These tests are skipped when there is no hardware
accelerator available or number of devices is more than one.
rL   z)test requires a single device accelerator)ru   rz   r   rO   rw   s   &rA   Úrequire_single_devicerÅ   ƒ  s7   € ô
 ×ÒÜ˜Ñ×3Ð3¤,°!Ñ"3Ð5`ôàóð r@   c                óz   € \         P                  ! \        P                  P	                  4       ^8H  R4      ! V 4      # )zš
Decorator marking a test that requires CUDA on a single GPU. These tests are skipped when there are no GPU
available or number of GPUs is more than one.
r‚   ©ru   rz   rN   r:   rO   rw   s   &rA   Úrequire_single_gpurÈ   �  s0   € ô
 ×ÒœuŸz™z×6Ñ6Ó8¸AÑ=Ð?TÔUÐV_Ó`Ð`r@   c                óz   € \         P                  ! \        P                  P	                  4       ^8H  R4      ! V 4      # )zš
Decorator marking a test that requires CUDA on a single XPU. These tests are skipped when there are no XPU
available or number of xPUs is more than one.
r‰   ©ru   rz   rN   rI   rO   rw   s   &rA   Úrequire_single_xpurË   •  s0   € ô
 ×ÒœuŸy™y×5Ñ5Ó7¸1Ñ<Ð>SÔTÐU^Ó_Ð_r@   c                óJ   € \         P                  ! \        ^8„  R4      ! V 4      # )z}
Decorator marking a test that requires a multi-device setup. These tests are skipped on a machine without multiple
devices.
z,test requires multiple hardware accelerators)ru   rz   rO   rw   s   &rA   Úrequire_multi_devicerÍ   �  s#   € ô
 ×Òœ|¨aÑ/Ð1_Ô`ÐajÓkÐkr@   c                óz   € \         P                  ! \        P                  P	                  4       ^8„  R4      ! V 4      # )zw
Decorator marking a test that requires a multi-GPU setup. These tests are skipped on a machine without multiple
GPUs.
ztest requires multiple GPUsrÇ   rw   s   &rA   Úrequire_multi_gpurÏ   ¥  s0   € ô
 ×ÒœuŸz™z×6Ñ6Ó8¸1Ñ<Ð>[Ô\Ð]fÓgÐgr@   c                óz   € \         P                  ! \        P                  P	                  4       ^8„  R4      ! V 4      # )zw
Decorator marking a test that requires a multi-XPU setup. These tests are skipped on a machine without multiple
XPUs.
ztest requires multiple XPUsrÊ   rw   s   &rA   Úrequire_multi_xpurÑ   ­  s0   € ô
 ×ÒœuŸy™y×5Ñ5Ó7¸!Ñ;Ð=ZÔ[Ð\eÓfÐfr@   c                ó’   € \         P                  ! \        4       ;'       g    \        4       ;'       d
    \        ^8„  R4      ! V 4      # )z
Decorator marking a test that requires a multi-GPU setup. These tests are skipped on a machine without multiple
GPUs or XPUs.
z#test requires multiple GPUs or XPUs)ru   rz   r   r6   rO   rw   s   &rA   Úrequire_multi_gpu_or_xpurÓ   µ  sA   € ô
 ×ÒÜ	Ó	×	2Ð	2Ô 0Ó 2×HÐH¼ÀqÑ8HÐJoôàóð r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zt
Decorator marking a test that requires DeepSpeed installed. These tests are skipped when DeepSpeed isn't installed
ztest requires DeepSpeed)ru   rz   r   rw   s   &rA   Úrequire_deepspeedrÕ   ¿  s"   € ô ×ÒÔ5Ó7Ð9RÔSÐT]Ó^Ð^r@   c                óz   € \         P                  ! \        RR4      ;'       d    \        RRR4      R4      ! V 4      # )zf
Decorator marking a test that requires TP installed. These tests are skipped when TP isn't installed
r›   z2.3.0Útransformersz4.52.0zGtest requires torch version >= 2.3.0 and transformers version >= 4.52.0)ru   rz   r+   r   rw   s   &rA   Ú
require_tprØ   Æ  sA   € ô ×ÒÜ˜˜wÓ'×\Ð\Ô,<¸^ÈTÐS[Ó,\ØQôð óð r@   c                ó€   € V f   \        \        VR7      # \        P                  ! \	        RV4      RV 24      ! V 4      # )z¨
Decorator marking that a test requires a particular torch version to be tested. These tests are skipped when an
installed torch version is less than the required one.
)Úversionr›   ztest requires torch version >= )r   Úrequire_torch_min_versionru   rz   r+   )rx   rÚ   s   &&rA   rÛ   rÛ   Ð  sC   € ð
 ÒÜÔ0¸'ÔBÐBÜ×ÒÔ/°°gÓ>ÐBaÐbiÐajÐ@kÔlÐmvÓwÐwr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zx
Decorator marking a test that requires tensorboard installed. These tests are skipped when tensorboard isn't
installed
ztest requires Tensorboard)ru   rz   r)   rw   s   &rA   Úrequire_tensorboardrÝ   Ú  s"   € ô
 ×ÒÔ7Ó9Ð;VÔWÐXaÓbÐbr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zl
Decorator marking a test that requires wandb installed. These tests are skipped when wandb isn't installed
ztest requires wandb)ru   rz   r5   rw   s   &rA   Úrequire_wandbrß   â  s!   € ô ×ÒÔ1Ó3Ð5JÔKÈIÓVÐVr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zp
Decorator marking a test that requires trackio installed. These tests are skipped when trackio isn't installed
ztest requires trackio)ru   rz   r0   rw   s   &rA   Úrequire_trackiorá   é  ó"   € ô ×ÒÔ3Ó5Ð7NÔOÐPYÓZÐZr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zr
Decorator marking a test that requires comet_ml installed. These tests are skipped when comet_ml isn't installed
ztest requires comet_ml)ru   rz   r   rw   s   &rA   Úrequire_comet_mlrä   ð  s"   € ô ×ÒÔ4Ó6Ð8PÔQÐR[Ó\Ð\r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zh
Decorator marking a test that requires aim installed. These tests are skipped when aim isn't installed
ztest requires aim)ru   rz   r   rw   s   &rA   Úrequire_aimræ   ÷  s!   € ô ×ÒÔ/Ó1Ð3FÔGÈ	ÓRÐRr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zp
Decorator marking a test that requires clearml installed. These tests are skipped when clearml isn't installed
ztest requires clearml)ru   rz   r   rw   s   &rA   Úrequire_clearmlrè   þ  râ   r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zp
Decorator marking a test that requires dvclive installed. These tests are skipped when dvclive isn't installed
ztest requires dvclive)ru   rz   r   rw   s   &rA   Úrequire_dvcliverê     râ   r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zp
Decorator marking a test that requires swanlab installed. These tests are skipped when swanlab isn't installed
ztest requires swanlab)ru   rz   r(   rw   s   &rA   Úrequire_swanlabrì     râ   r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zn
Decorator marking a test that requires pandas installed. These tests are skipped when pandas isn't installed
ztest requires pandas)ru   rz   r"   rw   s   &rA   Úrequire_pandasrî     ó!   € ô ×ÒÔ2Ó4Ð6LÔMÈiÓXÐXr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zn
Decorator marking a test that requires mlflow installed. These tests are skipped when mlflow isn't installed
ztest requires mlflow)ru   rz   r   rw   s   &rA   Úrequire_mlflowrñ     rï   r@   c                óz   € \         P                  ! \        4       ;'       d    \        4       '       * R4      ! V 4      # )zÆ
Decorator marking a test that requires pippy installed. These tests are skipped when pippy isn't installed It is
also checked if the test is running on a Gaudi1 device which doesn't support pippy.
ztest requires pippy)ru   rz   r$   r   rw   s   &rA   Úrequire_pippyró   !  s1   € ô
 ×ÒÔ1Ó3×NÐNÔ<LÓ<NÔ8NÐPeÔfÐgpÓqÐqr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zv
Decorator marking a test that requires tuna interpreter installed. These tests are skipped when tuna isn't
installed
ztest requires tuna interpreter)ru   rz   r   rw   s   &rA   Úrequire_import_timerrõ   )  s"   € ô
 ×ÒÔ8Ó:Ð<\Ô]Ð^gÓhÐhr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zˆ
Decorator marking a test that requires transformers engine installed. These tests are skipped when transformers
engine isn't installed
z!test requires transformers engine)ru   rz   r1   rw   s   &rA   Úrequire_transformer_enginer÷   1  s"   € ô
 ×ÒÔ>Ó@ÐBeÔfÐgpÓqÐqr@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )z°
Decorator marking a test that requires transformers engine MXFP8 block scaling available. These tests are skipped
when transformers engine MXFP8 block scaling isn't available
z5test requires transformers engine MXFP8 block scaling)ru   rz   r2   rw   s   &rA   Ú require_transformer_engine_mxfp8rù   9  s(   € ô
 ×ÒÜ-Ó/Ð1hôàóð r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zp
Decorator marking a test that requires torchao installed. These tests are skipped when torchao isn't installed
ztest requires torchao)ru   rz   r-   rw   s   &rA   Úrequire_torchaorû   C  râ   r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )zv
Decorator marking a test that requires matplotlib installed. These tests are skipped when matplotlib isn't
installed
ztest requires matplotlib)ru   rz   r   rw   s   &rA   Úrequire_matplotlibrý   J  s"   € ô
 ×ÒÔ6Ó8Ð:TÔUÐV_Ó`Ð`r@   c                óD   € \         P                  ! \        R4      ! V 4      # )z�
Decorator marking that a test requires at least one tracking library installed. These tests are skipped when none
are installed
zYtest requires at least one tracker to be available and for `comet_ml` to not be installed)ru   rz   Ú_atleast_one_tracker_availablerw   s   &rA   Úrequire_trackersr   X  s'   € ô
 ×ÒÜ&Øcôð óð r@   c                óL   € \         P                  ! \        4       R4      ! V 4      # )z¡
Decorator marking a test that requires torchdata.stateful_dataloader.

These tests are skipped when torchdata with stateful_dataloader module isn't installed.

z+test requires torchdata.stateful_dataloader)ru   rz   r.   rw   s   &rA   Ú%require_torchdata_stateful_dataloaderr  c  s(   € ô ×ÒÜ2Ó4Ð6côàóð r@   c                óp   € \        4       '       d&   ^ RIpVP                  P                  ^4      ! V 4      # V # )aÄ  
Decorator marking a test with order(1). When pytest-order plugin is installed, tests marked with this decorator are
guaranteed to run first.

This is especially useful in some test settings like on a Gaudi instance where a Gaudi device can only be used by a
single process at a time. So we make sure all tests that run in a subprocess are launched first, to avoid device
allocation conflicts.

If pytest is not installed, test will be returned as is.
N)r%   ÚpytestÚmarkÚorder)rx   r  s   & rA   Ú	run_firstr  o  s0   € ô ×ÒÛà�{‰{× Ñ  Ô# IÓ.Ð.ØÐr@   c                   óN   a € ] tR tRt o RtRt]R 4       t]R 4       tR t	Rt
V tR# )	ÚTempDirTestCasei‚  at  
A TestCase class that keeps a single `tempfile.TemporaryDirectory` open for the duration of the class, wipes its
data at the start of a test, and then destroys it at the end of the TestCase.

Useful for when a class or API requires a single constant folder throughout it's use, such as Weights and Biases

The temporary directory location will be stored in `self.tmpdir`
Tc                óL   € \        \        P                  ! 4       4      V n        R# )zECreates a `tempfile.TemporaryDirectory` and stores it in `cls.tmpdir`N)r   ÚtempfileÚmkdtempÚtmpdir©Úclss   &rA   Ú
setUpClassÚTempDirTestCase.setUpClassŽ  s   € ô œ(×*Ò*Ó,Ó-ˆŽ
r@   c                ó¨   € \         P                  P                  V P                  4      '       d#   \        P
                  ! V P                  4       R# R# )z1Remove `cls.tmpdir` after test suite has finishedN)rj   ÚpathÚexistsr  ÚshutilÚrmtreer  s   &rA   ÚtearDownClassÚTempDirTestCase.tearDownClass“  s0   € ô �7‰7�>‰>˜#Ÿ*™*×%Ò%Ü�MŠM˜#Ÿ*™*Ö%ñ &r@   c                ó  € V P                   '       d{   V P                  P                  R4       FY  pVP                  4       '       d   VP	                  4        K+  VP                  4       '       g   KC  \        P                  ! V4       K[  	  R# R# )z<Destroy all contents in `self.tmpdir`, but not `self.tmpdir`z**/*N)Úclear_on_setupr  ÚglobÚis_fileÚunlinkÚis_dirr  r  )Úselfr  s   & rA   ÚsetUpÚTempDirTestCase.setUp™  sW   € à××ÐØŸ™×(Ñ(¨Ö0�Ø—<‘<—>’>Ø—K‘K–MØ—[‘[—]”]Ü—M’M $Ö'ó	 1ñ r@   r?   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r  Úclassmethodr  r  r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @rA   r	  r	  ‚  sA   ø‡ € ñð €Nàñ.ó ð.ð ñ&ó ð&÷
(ð (r@   r	  c                   ó6   a a€ ] tR tRt oRtV 3R ltRtVtV ;t# )ÚAccelerateTestCasei£  zí
A TestCase class that will reset the accelerator state at the end of every test. Every test that checks or utilizes
the `AcceleratorState` class should inherit from this to avoid silent failures due to state being shared between
tests.
c                óz   <€ \         SV `  4        \        P                  ! R 4       \        P                  ! 4        R# ©TN)ÚsuperÚtearDownr	   Ú_reset_stater
   )r  Ú	__class__s   &€rA   r1  ÚAccelerateTestCase.tearDownª  s*   ø€ Ü‰ÑÔä×%Ò% dÔ+ô 	×"Ò"Ö$r@   r?   )	r"  r#  r$  r%  r&  r1  r(  r)  Ú__classcell__)r3  r+  s   @@rA   r-  r-  £  s   ù‡ € ñ÷%õ %r@   r-  c                   ó6   a € ] tR tRt o RtV 3R lR ltRtV tR# )ÚMockingTestCasei³  au  
A TestCase class designed to dynamically add various mockers that should be used in every test, mimicking the
behavior of a class-wide mock when defining one normally will not do.

Useful when a mock requires specific information available only initialized after `TestCase.setUpClass`, such as
setting an environment variable with that information.

The `add_mocks` function should be ran at the end of a `TestCase`'s `setUp` function, after a call to
`super().setUp()` such as:
```python
def setUp(self):
    super().setUp()
    mocks = mock.patch.dict(os.environ, {"SOME_ENV_VAR", "SOME_VALUE"})
    self.add_mocks(mocks)
```
c                ón   <€ V ^8„  d   QhRS[ S[P                  S[S[P                  ,          3,          /# )rU   Úmocks)r   r   ÚMockrW   )rX   r+  s   "€rA   rY   ÚMockingTestCase.__annotate__Å  s*   ø€ ÷ $ñ $™u¡T§Y¡Y±±T·Y±YµÐ%?Õ@ñ $r@   c                óÎ   € \        V\        \        34      '       d   TMV.V n        V P                   F.  pVP	                  4        V P                  VP                  4       K0  	  R# )a!  
Add custom mocks for tests that should be repeated on each test. Should be called during
`MockingTestCase.setUp`, after `super().setUp()`.

Args:
    mocks (`mock.Mock` or list of `mock.Mock`):
        Mocks that should be added to the `TestCase` after `TestCase.setUpClass` has been run
N)r_   ÚtuplerW   r9  ÚstartÚ
addCleanupÚstop)r  r9  Úms   && rA   Ú	add_mocksÚMockingTestCase.add_mocksÅ  sF   € ô )¨´¼°×>Ò>‘UÀUÀGˆŒ
Ø—”ˆAØ�G‰GŒIØ�O‰O˜AŸF™FÖ#ó r@   )r9  N)r"  r#  r$  r%  r&  rB  r(  r)  r*  s   @rA   r7  r7  ³  s   ø‡ € ñ÷"$ö $r@   r7  c                 ól  € \        4       pV R ,          P                  4       P                  VP                  4      p \	        V 4      P                  4       pV ^ ,          P                  4       p \        VP                  ^ ,          4       F)  p\        P                  ! W#,          V 4      '       d   K(   R# 	  R# )NFT)
r	   ÚcloneÚtoÚdevicer   rL   ÚrangeÚshaperN   Úequal)ÚtensorÚstateÚtensorsÚis   &   rA   Úare_the_same_tensorsrO  Ô  s   € ÜÓ€EØ�D�\×ÑÓ!×$Ñ$ U§\¡\Ó2€FÜ�V‹n× Ñ Ó"€GØ�A�Y�]‰]‹_€FÜ�7—=‘= Õ#Ö$ˆÜ�{Š{˜7�: v×.Ô.Úñ %ñ r@   c                   ó&   a € ] tR tRt o R tRtV tR# )Ú
_RunOutputiß  c                ó*   € Wn         W n        W0n        R # ©N)Ú
returncodeÚstdoutÚstderr)r  rT  rU  rV  s   &&&&rA   Ú__init__Ú_RunOutput.__init__à  s   € Ø$ŒØŒØŽr@   )rT  rV  rU  N)r"  r#  r$  r%  rW  r(  r)  r*  s   @rA   rQ  rQ  ß  s   ø‡ € ÷ð r@   rQ  c              ƒ   óh   "  €  V P                  4       G Rj  x€L
 pV'       d   V! V4       K+  R#  L5ir/  )Úreadline)ÚstreamÚcallbackÚlines   && rA   Ú_read_streamr^  æ  s)   é € Ø
Ø—_‘_Ó&×&ˆßÙ�TŽNáñ	 'ùs   ‚2—0˜2¤2c                ó$   € V ^8„  d   QhR\         /# rT   )rQ  )rX   s   "rA   rY   rY   ï  s   € ÷ &0ñ &0Ôblñ &0r@   c              ƒ   ó†  aaaa	"  € V'       d   \        R RP                  V 4      4       \        P                  ! V ^ ,          .V R,          O5RVR\        P                  P
                  R\        P                  P
                  RV/ G Rj  x€L
 p. o. oRV3R llo	\        P                  ! \        P                  ! \        VP                  VV	3R	 l4      4      \        P                  ! \        VP                  VV	3R
 l4      4      .VR7      G Rj  x€L
  \        VP                  4       G Rj  x€L
 SS4      #  L¯ L) L5i)z

Running: Ú :é   NNÚstdinrU  rV  ÚenvNc                 ó–   <€ V P                  R 4      P                  4       p VP                  V 4       S'       g   \        W0VR7       R# R# )úutf-8)ÚfileN)ÚdecodeÚrstripra   Úprint)r]  ÚsinkÚpipeÚlabelÚquiets   &&&&€rA   ÚteeÚ_stream_subprocess.<locals>.tee  s8   ø€ Ø�{‰{˜7Ó#×*Ñ*Ó,ˆØ�‰�DÔßÜ�% D×)ñ r@   c                 ó8   <€ S! V S\         P                  R R7      # )zstdout:©rm  )ÚsysrU  )ÚlÚoutro  s   &€€rA   rB   Ú$_stream_subprocess.<locals>.<lambda>  ó   ø€ ÁÀQÈÌSÏZÉZÐ_hÕAir@   c                 ó8   <€ S! V S\         P                  R R7      # )zstderr:rr  )rs  rV  )rt  Úerrro  s   &€€rA   rB   rv    rw  r@   )Útimeout)Ú )rj  ÚjoinÚasyncioÚcreate_subprocess_execÚ
subprocessÚPIPEÚwaitÚcreate_taskr^  rU  rV  rQ  )
Úcmdrd  rc  rz  rn  ÚechoÚpry  ru  ro  s
   &&&&f& @@@rA   Ú_stream_subprocessr†  ï  s  ûé € ßÜˆm˜SŸX™X c›]Ô+ä×,Ò,ØˆA�ðà	ˆR�òð ðô ×!Ñ!×&Ñ&ð	ô
 ×!Ñ!×&Ñ&ðð ñ÷ 	€Að" €CØ
€C÷*ô �,Š,ä×Ò¤¨Q¯X©XÕ7iÓ jÓkÜ×Ò¤¨Q¯X©XÕ7iÓ jÓkð	
ð ô÷ ð ô ˜AŸF™F›H—n c¨3Ó/Ð/ñE	ñ6ñ %ùs7   †BEÂD;ÂBEÄD=ÄEÄ0D?Ä1EÄ=EÄ?Ec                ó0   € V ^8„  d   QhR\         R\        /# )rU   rƒ  rV   )rW   rQ  )rX   s   "rA   rY   rY     s   € ÷ ñ ¤$ð Ôfpñ r@   c                 ór  € \        V 4       F*  w  rg\        V\        4      '       g   K  \        V4      W&   K,  	  \        P
                  ! \        WW#WER 7      4      pRP                  V 4      p	VP                  ^ 8”  d:   RP                  VP                  4      p
\        RV	 RVP                   RV
 24      hV# ))rd  rc  rz  rn  r„  ra  Ú
Ú'z' failed with returncode z,

The combined stderr from workers follows:
)Ú	enumerater_   r   Ústrr}  Úrunr†  r|  rT  rV  ÚRuntimeError)rƒ  rd  rc  rz  rn  r„  rN  ÚcÚresultÚcmd_strrV  s   &&&&&&     rA   Úexecute_subprocess_asyncr’    s¬   € ä˜#–‰ˆÜ�aœ×ÔÜ˜“VˆC‹Fñ ô �[Š[Ô+¨CÀÐ^cÔoÓp€Fà�h‰h�s‹m€GØ×Ñ˜1ÔØ—‘˜6Ÿ=™=Ó)ˆÜØ�ˆyÐ1°&×2CÑ2CÐ1Dð E:Ø:@¸ðCó
ð 	
ð
 €Mr@   c                 ó¨   € \         P                  P                  RR4      p \        P                  ! RRV ^ \        P
                  4      p \        V 4      # )z¢
Returns an int value of worker's numerical id under `pytest-xdist`'s concurrent workers `pytest -n N` regime, or 0
if `-n 1` or `pytest-xdist` isn't being used.
ÚPYTEST_XDIST_WORKERÚgw0z^gwr{  )rj   rk   ÚgetÚreÚsubÚMÚint)Úworkers    rA   Úpytest_xdist_worker_idrœ  +  s=   € ô
 �Z‰Z�^‰^Ð1°5Ó9€FÜ�VŠV�F˜B ¨¬2¯4©4Ó0€FÜˆv‹;Ðr@   c                 ó*   € Rp \        4       pW,           # )zä
Returns a port number that can be fed to `torch.distributed.launch`'s `--master_port` argument.

Under `pytest-xdist` it adds a delta number based on a worker id so that concurrent tests don't try to use the same
port at once.
i<s  )rœ  )ÚportÚ
uniq_deltas     rA   Úget_torch_dist_unique_portr   5  s   € ð €DÜ'Ó)€JØÕÐr@   c                   ó   € ] tR tRtRtR# )ÚSubprocessCallExceptioniA  r?   N)r"  r#  r$  r%  r(  r?   r@   rA   r¢  r¢  A  s   † Ûr@   r¢  c                ó:   € V ^8„  d   QhR\         \        ,          /# )rU   rc   )rW   rŒ  )rX   s   "rA   rY   rY   E  s   € ÷ ñ œœc�ñ r@   c                ó  € \        V 4       F*  w  r4\        V\        4      '       g   K  \        V4      W&   K,  	  Vf   \        P
                  P                  4       p \        P                  ! V \        P                  VR7      pV'       d&   \        VR4      '       d   VP                  R4      pV# R#   \        P                   d?   p\        RRP                  T 4       RTP                  P                  4        24      ThRp?ii ; i)z¡
Runs `command` with `subprocess.check_output` and will potentially return the `stdout`. Will also properly capture
if an error occurred while running `command`
N)rV  rd  rh  rf  z	Command `ra  z$` failed with the following error:

)r‹  r_   r   rŒ  rj   rk   Úcopyr  Úcheck_outputÚSTDOUTÚhasattrrh  ÚCalledProcessErrorr¢  r|  Úoutput)rc   Úreturn_stdoutrd  rN  r�  rª  Úes   &&&    rA   Úrun_commandr­  E  sà   € ô ˜'Ö"‰ˆÜ�aœ×ÔÜ˜Q›ˆG‹Jñ #ð ‚{Ü�j‰j�o‰oÓˆð	Ü×(Ò(¨¼×9JÑ9JÐPSÔTˆßÜ�v˜x×(Ò(ØŸ™ wÓ/�ØˆMñ øô ×(Ñ(ô Ü%Ø˜Ÿ™ Ó)Ð*Ð*PÐQR×QYÑQY×Q`ÑQ`ÓQbÐPcÐdó
àð	ûðús   Á.B3 Â$B3 Â3DÃ9DÄDc                ó0   € V ^8„  d   QhR\         R\        /# )rU   Ú
componentsrV   )rŒ  r   )rX   s   "rA   rY   rY   \  s   € ÷ 8ñ 8¬Cð 8´Dñ 8r@   c                 ó|   € \        \        P                  ! \        4      4      P                  pVP
                  ! V !  # )zÐ
Get a path within the `accelerate` package's directory.

Args:
    *components: Components of the path to join after the package directory.

Returns:
    `Path`: The path to the requested file or directory.
)r   ÚinspectÚgetfiler[   ÚparentÚjoinpath)r¯  Úaccelerate_package_dirs   * rA   Úpath_in_accelerate_packager¶  \  s/   € ô "¤'§/¢/´*Ó"=Ó>×EÑEÐØ!×*Ò*¨JÑ7Ð7r@   c                óR   € V ^8„  d   QhR\         R\        \        ,          R\        /# )rU   Úexception_classÚmsgrV   )Ú	Exceptionr   rŒ  r`   )rX   s   "rA   rY   rY   l  s*   € ÷ eñ e¤ið e´h¼sµmð eÌtñ er@   c              #  ó"  "  € Rp Rx € RpV'       d   \	        RV  R	24      hR#   \          d]   p\        Y04      '       g   Q RT  R\        T4       24       hTe(   T\        T4      9   g   Q RT R\        T4       R24       h Rp?L{Rp?ii ; i5i)
z¡
Context manager to assert that the right `Exception` class was raised.

If `msg` is provided, will check that the message is contained in the raised exception.
FNTzExpected exception of type z	 but got zExpected message 'z' to be in exception but got 'rŠ  z but ran without issue.)rº  r_   ÚtyperŒ  ÚAssertionError)r¸  r¹  Úwas_ranr¬  s   &&  rA   Úassert_exceptionr¿  k  s±   é € ð €GðdÛØˆ÷
 ÜÐ:¸?Ð:KÐKbÐcÓdÐdñ øô	 ô dÜ˜!×-Ò-ÐpÐ1LÈ_ÐL]Ð]fÔgkÐlmÓgnÐfoÐ/pÓpÐ-ØŠ?Øœ#˜a›&”=ÐcÐ$6°s°eÐ;YÔZ]Ð^_ÓZ`ÐYaÐabÐ"cÓc�=ÿøðdüs0   ‚B†% ŒB”B¥B°ABÂBÂBÂBc                óö   € \         P                  ! 4       p\        P                  p V\        n        V ! V/ VB   T\        n        TP                  4       #   \         d   pThRp?ii ; i  T\        n        i ; i)zX
Takes in a `func` with `args` and `kwargs` and returns the captured stdout as a string
N)ÚioÚStringIOrs  rU  rº  Úgetvalue)ÚfuncÚargsrb   Úcaptured_outputÚoriginal_stdoutr¬  s   &*,   rA   Úcapture_call_outputrÈ  ~  sj   € ô —k’k“m€OÜ—j‘j€Oð%Ø$ŒŒ
ÙˆdÐ�fÓð %ŒŒ
Ø×#Ñ#Ó%Ð%øô	 ô Øˆûðûð %Œ�
ús#   §A ÁA(Á!A#Á#A(Á(A+ Á+A8)F)NN)NNNFF)NNé´   FT)FNrS  )�r}  r±  rÁ  rj   r—  r  r  rs  r  ru   Ú
contextlibr   Ú	functoolsr   Úpathlibr   Útypingr   r   r   rN   r[   rL  r	   r
   Úutilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   rR   r   rO   Úmemory_allocated_funcrf   ÚDEFAULT_LAUNCH_COMMANDrr   r{   rv   r|   r€   rƒ   r…   r‡   rŠ   rŽ   r�   r“   r•   r™   rœ   rž   r    r£   r¦   r¨   rª   r¬   r®   r°   r²   rµ   r·   r¹   r»   r½   rÁ   rÃ   rÅ   rÈ   rË   rÍ   rÏ   rÑ   rÓ   rÕ   rØ   rÛ   rÝ   rß   rá   rä   ræ   rè   rê   rì   rî   rñ   ró   rõ   r÷   rù   rû   rý   Úanyrÿ   r   r  r  ÚTestCaser	  r-  r7  rO  rQ  r^  r†  r’  rœ  r   rº  r¢  r­  r¶  r¿  rÈ  r?   r@   rA   Ú<module>rÓ     sÞ  ðó Û Û 	Û 	Û 	Û Û Û 
Û Û Ý %Ý Ý ß "Ý ã ã ç 3÷.÷ .÷ .÷ .÷ .÷ .÷ .÷ .÷ .÷ .÷ .õ .òb#ñ6 5@³MÑ 1€ˆlÐ1õñ& ,¸,ÐY\Ô]Ð ôñ  & j¸%Ô@€ò8ò
Kò]òXòwòòUònò\ò\ò]òYò$sòUòTòVòVòTò^òròòiòqòaòoòeòqòhòjòqòòaò`òlòhògòò_òôxòcòWò[ò]òSò[ò[ò[òYòYòròiòròò[òañ Ñ	Ó	Ñ7Ó9Ñ;OÓ;QÑSgÓSiÐjÓk÷ $ð $Ù!Ó#Ô#ð òò	òô&(�h×'Ò'ô (ôB%˜×*Ò*ô %ô $�h×'Ò'ô $òB÷ñ ò÷&0÷Rò&ò	ô	˜iô 	÷õ.8ð öeó ðeô$&r@   